diff --git a/src/vs/base/common/platform.ts b/src/vs/base/common/platform.ts index 78aecad6eba..fce28f439a2 100644 --- a/src/vs/base/common/platform.ts +++ b/src/vs/base/common/platform.ts @@ -24,7 +24,7 @@ interface NLSConfig { } export interface IProcessEnvironment { - [key: string]: string; + [key: string]: string | undefined; } /** diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 1f71bd27129..1ee2c887531 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -291,7 +291,7 @@ export class CodeApplication extends Disposable { let replied = false; - function acceptShellEnv(env: NodeJS.ProcessEnv): void { + function acceptShellEnv(env: IProcessEnvironment): void { clearTimeout(shellEnvSlowWarningHandle); clearTimeout(shellEnvTimeoutErrorHandle); @@ -332,7 +332,7 @@ export class CodeApplication extends Disposable { // Window can be undefined for e.g. the shared process // that is not part of our windows registry! let args: NativeParsedArgs; - let env: NodeJS.ProcessEnv; + let env: IProcessEnvironment; if (window?.config) { args = window.config; env = { ...process.env, ...window.config.userEnv }; diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 7045d47e3b6..0ce6c5ee5be 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -14,7 +14,7 @@ import product from 'vs/platform/product/common/product'; import { isAbsolute, join } from 'vs/base/common/path'; import { whenDeleted, writeFileSync } from 'vs/base/node/pfs'; import { findFreePort, randomPort } from 'vs/base/node/ports'; -import { isWindows, isLinux } from 'vs/base/common/platform'; +import { isWindows, isLinux, IProcessEnvironment } from 'vs/base/common/platform'; import type { ProfilingSession, Target } from 'v8-inspect-profiler'; import { isString } from 'vs/base/common/types'; import { hasStdinWithoutTty, stdinDataListener, getStdinFilePath, readFromStdin } from 'vs/platform/environment/node/stdin'; @@ -116,7 +116,7 @@ export async function main(argv: string[]): Promise { // Just Code else { - const env: NodeJS.ProcessEnv = { + const env: IProcessEnvironment = { ...process.env, 'ELECTRON_NO_ATTACH_CONSOLE': '1' }; diff --git a/src/vs/platform/environment/node/argvHelper.ts b/src/vs/platform/environment/node/argvHelper.ts index 3ace20cfc45..4fb88eb7f2e 100644 --- a/src/vs/platform/environment/node/argvHelper.ts +++ b/src/vs/platform/environment/node/argvHelper.ts @@ -8,6 +8,7 @@ import { localize } from 'vs/nls'; import { MIN_MAX_MEMORY_SIZE_MB } from 'vs/platform/files/common/files'; import { parseArgs, ErrorReporter, OPTIONS } from 'vs/platform/environment/node/argv'; import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +import { IProcessEnvironment } from 'vs/base/common/platform'; function parseAndValidate(cmdLineArgs: string[], reportWarnings: boolean): NativeParsedArgs { const errorReporter: ErrorReporter = { @@ -79,6 +80,6 @@ export function addArg(argv: string[], ...args: string[]): string[] { return argv; } -export function isLaunchedFromCli(env: NodeJS.ProcessEnv): boolean { +export function isLaunchedFromCli(env: IProcessEnvironment): boolean { return env['VSCODE_CLI'] === '1'; } diff --git a/src/vs/platform/environment/node/shellEnv.ts b/src/vs/platform/environment/node/shellEnv.ts index df5ad7ebb35..4e8bc4e100b 100644 --- a/src/vs/platform/environment/node/shellEnv.ts +++ b/src/vs/platform/environment/node/shellEnv.ts @@ -5,7 +5,7 @@ import { spawn } from 'child_process'; import { generateUuid } from 'vs/base/common/uuid'; -import { isWindows, platform } from 'vs/base/common/platform'; +import { IProcessEnvironment, isWindows, platform } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; import { isLaunchedFromCli } from 'vs/platform/environment/node/argvHelper'; @@ -17,7 +17,7 @@ import { getSystemShell } from 'vs/base/node/shell'; * This should only be done when Code itself is not launched * from within a shell. */ -export async function resolveShellEnv(logService: ILogService, args: NativeParsedArgs, env: NodeJS.ProcessEnv): Promise { +export async function resolveShellEnv(logService: ILogService, args: NativeParsedArgs, env: IProcessEnvironment): Promise { // Skip if --force-disable-user-env if (args['force-disable-user-env']) { diff --git a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts index 93463e25629..47a2c82aa85 100644 --- a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts +++ b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts @@ -10,7 +10,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService'; import { IThemeMainService } from 'vs/platform/theme/electron-main/themeMainService'; import { FileAccess } from 'vs/base/common/network'; -import { browserCodeLoadingCacheStrategy } from 'vs/base/common/platform'; +import { browserCodeLoadingCacheStrategy, IProcessEnvironment } from 'vs/base/common/platform'; import { ISharedProcess, ISharedProcessConfiguration } from 'vs/platform/sharedProcess/node/sharedProcess'; import { Disposable } from 'vs/base/common/lifecycle'; import { connect as connectMessagePort } from 'vs/base/parts/ipc/electron-main/ipc.mp'; @@ -31,7 +31,7 @@ export class SharedProcess extends Disposable implements ISharedProcess { constructor( private readonly machineId: string, - private userEnv: NodeJS.ProcessEnv, + private userEnv: IProcessEnvironment, @IEnvironmentMainService private readonly environmentMainService: IEnvironmentMainService, @ILifecycleMainService private readonly lifecycleMainService: ILifecycleMainService, @ILogService private readonly logService: ILogService, diff --git a/src/vs/platform/sharedProcess/node/sharedProcess.ts b/src/vs/platform/sharedProcess/node/sharedProcess.ts index ebd1f517629..c54a8124326 100644 --- a/src/vs/platform/sharedProcess/node/sharedProcess.ts +++ b/src/vs/platform/sharedProcess/node/sharedProcess.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { IProcessEnvironment } from 'vs/base/common/platform'; import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; import { LogLevel } from 'vs/platform/log/common/log'; @@ -21,7 +22,7 @@ export interface ISharedProcessConfiguration { readonly appRoot: string; - readonly userEnv: NodeJS.ProcessEnv; + readonly userEnv: IProcessEnvironment; readonly args: NativeParsedArgs;