diff --git a/.eslint-allowed-bracket-notation-files b/.eslint-allowed-bracket-notation-files index 8231ea35a7f52..3a7d75ca7fed5 100644 --- a/.eslint-allowed-bracket-notation-files +++ b/.eslint-allowed-bracket-notation-files @@ -296,49 +296,6 @@ scripts/code-web.js scripts/sync-agent-host-protocol.ts scripts/test-agent-host-e2e.ts -# Application bootstrap, server, and environment (41 files) -src/bootstrap-cli.ts -src/bootstrap-esm.ts -src/bootstrap-fork.ts -src/bootstrap-meta.ts -src/bootstrap-node.ts -src/bootstrap-server.ts -src/cli.ts -src/main.ts -src/server-cli.ts -src/server-main.ts -src/vs/code/electron-browser/workbench/workbench.ts -src/vs/code/electron-main/app.ts -src/vs/code/electron-main/main.ts -src/vs/code/node/cli.ts -src/vs/code/node/cliProcessMain.ts -src/vs/code/test/node/bootstrapESM.test.ts -src/vs/platform/diagnostics/node/diagnosticsService.ts -src/vs/platform/dialogs/electron-browser/dialog.ts -src/vs/platform/environment/common/environmentService.ts -src/vs/platform/environment/electron-main/environmentMainService.ts -src/vs/platform/environment/node/argvHelper.ts -src/vs/platform/environment/node/userDataPath.ts -src/vs/platform/environment/test/electron-main/environmentMainService.test.ts -src/vs/platform/environment/test/node/userDataPath.test.ts -src/vs/platform/launch/electron-main/launchMainService.ts -src/vs/platform/native/electron-main/auth.ts -src/vs/platform/product/common/product.ts -src/vs/platform/shell/node/shellEnv.ts -src/vs/platform/utilityProcess/electron-main/utilityProcess.ts -src/vs/platform/windows/electron-main/windowImpl.ts -src/vs/platform/windows/electron-main/windowsMainService.ts -src/vs/server/node/remoteAgentEnvironmentImpl.ts -src/vs/server/node/remoteExtensionHostAgentCli.ts -src/vs/server/node/remoteExtensionHostAgentServer.ts -src/vs/server/node/remoteExtensionsScanner.ts -src/vs/server/node/remoteTerminalChannel.ts -src/vs/server/node/server.cli.ts -src/vs/server/node/server.cliAgent.ts -src/vs/server/node/server.main.ts -src/vs/server/node/serverEnvironmentService.ts -src/vs/server/node/webClientServer.ts - # Base and editor (27 files) src/vs/base/browser/dom.ts src/vs/base/browser/markdownRenderer.ts diff --git a/src/bootstrap-cli.ts b/src/bootstrap-cli.ts index f454b830ea64c..0701e83f00621 100644 --- a/src/bootstrap-cli.ts +++ b/src/bootstrap-cli.ts @@ -8,4 +8,4 @@ // current working directory due to our variable // somehow escaping to the parent shell // (https://github.com/microsoft/vscode/issues/126399) -delete process.env['VSCODE_CWD']; +delete process.env.VSCODE_CWD; diff --git a/src/bootstrap-esm.ts b/src/bootstrap-esm.ts index 3d52934576372..759ebc3c5c621 100644 --- a/src/bootstrap-esm.ts +++ b/src/bootstrap-esm.ts @@ -39,12 +39,12 @@ globalThis._VSCODE_FILE_ROOT = import.meta.dirname; // `node_modules` — exactly as it would without the archive. Only when the // default resolution finds nothing do we consult the archive. function enableASARSupport(): void { - if (!process.env['ELECTRON_RUN_AS_NODE'] && !process.versions['electron']) { + if (!process.env.ELECTRON_RUN_AS_NODE && !process.versions.electron) { return; // only on Electron / Electron-as-node } let trace: ((message: string) => void) | undefined; - const traceSink = process.env['VSCODE_ASAR_TRACE'] || undefined; + const traceSink = process.env.VSCODE_ASAR_TRACE || undefined; if (traceSink) { // Known truthy values trace to stderr; any other value is a file path. const prefix = '[asar-resolve] '; @@ -86,7 +86,7 @@ function enableASARSupport(): void { }; const appRoot = dirname(import.meta.dirname); - const resourcesPath = process.env['VSCODE_DEV'] ? undefined : normalizeDriveLetter(appRoot); + const resourcesPath = process.env.VSCODE_DEV ? undefined : normalizeDriveLetter(appRoot); // Root require.resolve() inside the archive; the leading './' below avoids a node_modules walk. const asarRequire = resourcesPath ? createRequire(join(appRoot, 'node_modules.asar', 'x.js')) : undefined; trace?.(`tracing enabled (node ${process.versions.node}); resourcesPath=${resourcesPath}`); @@ -214,9 +214,9 @@ async function doSetupNLS(): Promise { let nlsConfig: INLSConfiguration | undefined = undefined; let messagesFile: string | undefined; - if (process.env['VSCODE_NLS_CONFIG']) { + if (process.env.VSCODE_NLS_CONFIG) { try { - nlsConfig = JSON.parse(process.env['VSCODE_NLS_CONFIG']); + nlsConfig = JSON.parse(process.env.VSCODE_NLS_CONFIG); if (nlsConfig?.languagePack?.messagesFile) { messagesFile = nlsConfig.languagePack.messagesFile; } else if (nlsConfig?.defaultMessagesFile) { @@ -230,7 +230,7 @@ async function doSetupNLS(): Promise { } if ( - process.env['VSCODE_DEV'] || // no NLS support in dev mode + process.env.VSCODE_DEV || // no NLS support in dev mode !messagesFile // no NLS messages file ) { return undefined; diff --git a/src/bootstrap-fork.ts b/src/bootstrap-fork.ts index b87e855ba85fe..af4cf058b2030 100644 --- a/src/bootstrap-fork.ts +++ b/src/bootstrap-fork.ts @@ -137,7 +137,7 @@ function pipeLoggingToParent(): void { } // Pass console logging to the outside so that we have it in the main side if told so - if (process.env['VSCODE_VERBOSE_LOGGING'] === 'true') { + if (process.env.VSCODE_VERBOSE_LOGGING === 'true') { wrapConsoleMethod('info', 'log'); wrapConsoleMethod('log', 'log'); wrapConsoleMethod('warn', 'warn'); @@ -167,7 +167,7 @@ function handleExceptions(): void { } function terminateWhenParentTerminates(): void { - const parentPid = Number(process.env['VSCODE_PARENT_PID']); + const parentPid = Number(process.env.VSCODE_PARENT_PID); if (typeof parentPid === 'number' && !isNaN(parentPid)) { setInterval(function () { @@ -181,13 +181,13 @@ function terminateWhenParentTerminates(): void { } function configureCrashReporter(): void { - const crashReporterProcessType = process.env['VSCODE_CRASH_REPORTER_PROCESS_TYPE']; + const crashReporterProcessType = process.env.VSCODE_CRASH_REPORTER_PROCESS_TYPE; if (crashReporterProcessType) { try { //@ts-expect-error - if (process['crashReporter'] && typeof process['crashReporter'].addExtraParameter === 'function' /* Electron only */) { + if (process.crashReporter && typeof process.crashReporter.addExtraParameter === 'function' /* Electron only */) { //@ts-expect-error - process['crashReporter'].addExtraParameter('processType', crashReporterProcessType); + process.crashReporter.addExtraParameter('processType', crashReporterProcessType); } } catch (error) { console.error(error); @@ -203,22 +203,22 @@ configureCrashReporter(); // Remove global paths from the node module lookup (node.js only) removeGlobalNodeJsModuleLookupPaths(); -if (process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']) { - devInjectNodeModuleLookupPath(process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']); +if (process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH) { + devInjectNodeModuleLookupPath(process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH); } // Configure: pipe logging to parent process -if (!!process.send && process.env['VSCODE_PIPE_LOGGING'] === 'true') { +if (!!process.send && process.env.VSCODE_PIPE_LOGGING === 'true') { pipeLoggingToParent(); } // Handle Exceptions -if (!process.env['VSCODE_HANDLES_UNCAUGHT_ERRORS']) { +if (!process.env.VSCODE_HANDLES_UNCAUGHT_ERRORS) { handleExceptions(); } // Terminate when parent terminates -if (process.env['VSCODE_PARENT_PID']) { +if (process.env.VSCODE_PARENT_PID) { terminateWhenParentTerminates(); } @@ -226,4 +226,4 @@ if (process.env['VSCODE_PARENT_PID']) { await bootstrapESM(); // Load ESM entry point -await import([`./${process.env['VSCODE_ESM_ENTRYPOINT']}.js`].join('/') /* workaround: esbuild prints some strange warnings when trying to inline? */); +await import([`./${process.env.VSCODE_ESM_ENTRYPOINT}.js`].join('/') /* workaround: esbuild prints some strange warnings when trying to inline? */); diff --git a/src/bootstrap-meta.ts b/src/bootstrap-meta.ts index 1e5affb0a9754..e2570d97d1bb7 100644 --- a/src/bootstrap-meta.ts +++ b/src/bootstrap-meta.ts @@ -9,17 +9,17 @@ import type { IProductConfiguration } from './vs/base/common/product.js'; const require = createRequire(import.meta.url); let productObj: Partial & { BUILD_INSERT_PRODUCT_CONFIGURATION?: string } = { BUILD_INSERT_PRODUCT_CONFIGURATION: 'BUILD_INSERT_PRODUCT_CONFIGURATION' }; // DO NOT MODIFY, PATCHED DURING BUILD -if (productObj['BUILD_INSERT_PRODUCT_CONFIGURATION']) { +if (productObj.BUILD_INSERT_PRODUCT_CONFIGURATION) { productObj = require('../product.json'); // Running out of sources } let pkgObj = { BUILD_INSERT_PACKAGE_CONFIGURATION: 'BUILD_INSERT_PACKAGE_CONFIGURATION' }; // DO NOT MODIFY, PATCHED DURING BUILD -if (pkgObj['BUILD_INSERT_PACKAGE_CONFIGURATION']) { +if (pkgObj.BUILD_INSERT_PACKAGE_CONFIGURATION) { pkgObj = require('../package.json'); // Running out of sources } let productOverridesObj = {}; -if (process.env['VSCODE_DEV']) { +if (process.env.VSCODE_DEV) { try { productOverridesObj = require('../product.overrides.json'); productObj = Object.assign(productObj, productOverridesObj); diff --git a/src/bootstrap-node.ts b/src/bootstrap-node.ts index d50e6df44ebcd..a5feb498e2d0d 100644 --- a/src/bootstrap-node.ts +++ b/src/bootstrap-node.ts @@ -20,7 +20,7 @@ if (process.platform === 'linux') { // increase number of stack frames(from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) Error.stackTraceLimit = 100; -if (!process.env['VSCODE_HANDLES_SIGPIPE']) { +if (!process.env.VSCODE_HANDLES_SIGPIPE) { // Workaround for Electron not installing a handler to ignore SIGPIPE // (https://github.com/electron/electron/issues/13254) let didLogAboutSIGPIPE = false; @@ -45,8 +45,8 @@ function setupCurrentWorkingDirectory(): void { // for consistent lookups, but make sure to only // do this once unless defined already from e.g. // a parent process. - if (typeof process.env['VSCODE_CWD'] !== 'string') { - process.env['VSCODE_CWD'] = process.cwd(); + if (typeof process.env.VSCODE_CWD !== 'string') { + process.env.VSCODE_CWD = process.cwd(); } // Windows: always set application folder as current working dir @@ -77,11 +77,11 @@ setupCurrentWorkingDirectory(); * `ELECTRON_RUN_AS_NODE` forks), never when running out of sources. */ function enableASARSupport(): void { - if (!process.env['ELECTRON_RUN_AS_NODE'] && !process.versions['electron']) { + if (!process.env.ELECTRON_RUN_AS_NODE && !process.versions.electron) { return; // only on Electron / Electron-as-node } - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { return; // no ASAR when running out of sources } @@ -132,7 +132,7 @@ enableASARSupport(); * Note: only applies when running out of sources. */ export function devInjectNodeModuleLookupPath(injectPath: string): void { - if (!process.env['VSCODE_DEV']) { + if (!process.env.VSCODE_DEV) { return; // only applies running out of sources } @@ -206,7 +206,7 @@ export function configurePortable(product: Partial): { po const appRoot = path.dirname(import.meta.dirname); function getApplicationPath(): string { - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { return appRoot; } @@ -223,8 +223,8 @@ export function configurePortable(product: Partial): { po } function getPortableDataPath(): string { - if (process.env['VSCODE_PORTABLE']) { - return process.env['VSCODE_PORTABLE']; + if (process.env.VSCODE_PORTABLE) { + return process.env.VSCODE_PORTABLE; } if (process.platform === 'win32' || process.platform === 'linux') { @@ -241,17 +241,17 @@ export function configurePortable(product: Partial): { po const isTempPortable = isPortable && fs.existsSync(portableTempPath); if (isPortable) { - process.env['VSCODE_PORTABLE'] = portableDataPath; + process.env.VSCODE_PORTABLE = portableDataPath; } else { - delete process.env['VSCODE_PORTABLE']; + delete process.env.VSCODE_PORTABLE; } if (isTempPortable) { if (process.platform === 'win32') { - process.env['TMP'] = portableTempPath; - process.env['TEMP'] = portableTempPath; + process.env.TMP = portableTempPath; + process.env.TEMP = portableTempPath; } else { - process.env['TMPDIR'] = portableTempPath; + process.env.TMPDIR = portableTempPath; } } diff --git a/src/bootstrap-server.ts b/src/bootstrap-server.ts index d440e4195bd3e..44a6a7abfe35b 100644 --- a/src/bootstrap-server.ts +++ b/src/bootstrap-server.ts @@ -4,4 +4,4 @@ *--------------------------------------------------------------------------------------------*/ // Keep bootstrap-esm.js from redefining 'fs'. -delete process.env['ELECTRON_RUN_AS_NODE']; +delete process.env.ELECTRON_RUN_AS_NODE; diff --git a/src/cli.ts b/src/cli.ts index b643e346b08e9..bbb7085518eaf 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -11,13 +11,13 @@ import { product } from './bootstrap-meta.js'; // NLS const nlsConfiguration = await resolveNLSConfiguration({ userLocale: 'en', osLocale: 'en', commit: product.commit, userDataPath: '', nlsMetadataPath: import.meta.dirname }); -process.env['VSCODE_NLS_CONFIG'] = JSON.stringify(nlsConfiguration); // required for `bootstrap-esm` to pick up NLS messages +process.env.VSCODE_NLS_CONFIG = JSON.stringify(nlsConfiguration); // required for `bootstrap-esm` to pick up NLS messages // Enable portable support configurePortable(product); // Signal processes that we got launched as CLI -process.env['VSCODE_CLI'] = '1'; +process.env.VSCODE_CLI = '1'; // Bootstrap ESM await bootstrapESM(); diff --git a/src/main.ts b/src/main.ts index 085290ba0d7e9..cc7c6510731ec 100644 --- a/src/main.ts +++ b/src/main.ts @@ -40,7 +40,7 @@ const argvConfig = configureCommandlineSwitchesSync(args); // 1) disabled via command line using either // `--no-sandbox` or `--disable-chromium-sandbox` argument. // 2) argv.json contains `disable-chromium-sandbox: true`. -if (args['sandbox'] && +if (args.sandbox && !args['disable-chromium-sandbox'] && !argvConfig['disable-chromium-sandbox']) { app.enableSandbox(); @@ -153,7 +153,7 @@ if (process.platform === 'win32' || process.platform === 'linux') { // Load our code once ready app.once('ready', function () { - if (args['trace']) { + if (args.trace) { let traceOptions: Electron.TraceConfig | Electron.TraceCategoriesAndOptions; if (args['trace-memory-infra']) { const customCategories = args['trace-category-filter']?.split(',') || []; @@ -209,8 +209,8 @@ async function onReady() { * Main startup routine */ async function startup(codeCachePath: string | undefined, nlsConfig: INLSConfiguration): Promise { - process.env['VSCODE_NLS_CONFIG'] = JSON.stringify(nlsConfig); - process.env['VSCODE_CODE_CACHE_PATH'] = codeCachePath || ''; + process.env.VSCODE_NLS_CONFIG = JSON.stringify(nlsConfig); + process.env.VSCODE_CODE_CACHE_PATH = codeCachePath || ''; // Bootstrap ESM await bootstrapESM(); @@ -442,13 +442,13 @@ function createDefaultArgvConfigSync(argvConfigPath: string): void { } function getArgvConfigPath(): string { - const vscodePortable = process.env['VSCODE_PORTABLE']; + const vscodePortable = process.env.VSCODE_PORTABLE; if (vscodePortable) { return path.join(vscodePortable, 'argv.json'); } let dataFolderName = product.dataFolderName; - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { dataFolderName = `${dataFolderName}-dev`; } @@ -506,7 +506,7 @@ function configureCrashReporter(): void { } else { switch (process.arch) { case 'x64': - submitURL = appCenter['darwin']; + submitURL = appCenter.darwin; break; case 'arm64': submitURL = appCenter['darwin-arm64']; @@ -536,10 +536,10 @@ function configureCrashReporter(): void { // Start crash reporter for all processes const productName = (product.crashReporter ? product.crashReporter.productName : undefined) || product.nameShort; const companyName = (product.crashReporter ? product.crashReporter.companyName : undefined) || 'Microsoft'; - const uploadToServer = Boolean(!process.env['VSCODE_DEV'] && submitURL && !crashReporterDirectory); + const uploadToServer = Boolean(!process.env.VSCODE_DEV && submitURL && !crashReporterDirectory); crashReporter.start({ companyName, - productName: process.env['VSCODE_DEV'] ? `${productName} Dev` : productName, + productName: process.env.VSCODE_DEV ? `${productName} Dev` : productName, submitURL, uploadToServer, compress: true, @@ -625,7 +625,7 @@ function getCodeCachePath(): string | undefined { } // running out of sources - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { return undefined; } @@ -727,7 +727,7 @@ async function resolveNlsConfiguration(): Promise { * the locale we receive from the user or OS. */ function getUserDefinedLocale(argvConfig: IArgvConfig): string | undefined { - const locale = args['locale']; + const locale = args.locale; if (locale) { return locale.toLowerCase(); // a directly provided --locale always wins } diff --git a/src/server-cli.ts b/src/server-cli.ts index e263205cb792f..abd11e6931f53 100644 --- a/src/server-cli.ts +++ b/src/server-cli.ts @@ -12,15 +12,15 @@ import { product } from './bootstrap-meta.js'; // NLS const nlsConfiguration = await resolveNLSConfiguration({ userLocale: 'en', osLocale: 'en', commit: product.commit, userDataPath: '', nlsMetadataPath: import.meta.dirname }); -process.env['VSCODE_NLS_CONFIG'] = JSON.stringify(nlsConfiguration); // required for `bootstrap-esm` to pick up NLS messages +process.env.VSCODE_NLS_CONFIG = JSON.stringify(nlsConfiguration); // required for `bootstrap-esm` to pick up NLS messages -if (process.env['VSCODE_DEV']) { +if (process.env.VSCODE_DEV) { // When running out of sources, we need to load node modules from remote/node_modules, // which are compiled against nodejs, not electron - process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH'] = process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH'] || join(import.meta.dirname, '..', 'remote', 'node_modules'); - devInjectNodeModuleLookupPath(process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']); + process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH = process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH || join(import.meta.dirname, '..', 'remote', 'node_modules'); + devInjectNodeModuleLookupPath(process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH); } else { - delete process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']; + delete process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH; } // Bootstrap ESM diff --git a/src/server-main.ts b/src/server-main.ts index 08593e4618284..67eba566e355c 100644 --- a/src/server-main.ts +++ b/src/server-main.ts @@ -110,11 +110,11 @@ if (shouldSpawnCli) { return remoteExtensionHostAgentServer.handleServerError(err); }); - const host = sanitizeStringArg(parsedArgs['host']) || (parsedArgs['compatibility'] !== '1.63' ? 'localhost' : undefined); + const host = sanitizeStringArg(parsedArgs.host) || (parsedArgs.compatibility !== '1.63' ? 'localhost' : undefined); const nodeListenOptions = ( parsedArgs['socket-path'] ? { path: sanitizeStringArg(parsedArgs['socket-path']) } - : { host, port: await parsePort(host, sanitizeStringArg(parsedArgs['port'])) } + : { host, port: await parsePort(host, sanitizeStringArg(parsedArgs.port)) } ); server.listen(nodeListenOptions, async () => { let output = Array.isArray(product.serverGreeting) && product.serverGreeting.length ? `\n\n${product.serverGreeting.join('\n')}\n\n` : ``; @@ -174,7 +174,7 @@ function sanitizeStringArg(val: unknown): string | undefined { * `exit` handler does not). */ function installServerProcessExitDiagnostics(): void { - if (!process.env['VSCODE_SERVER_EXIT_DIAGNOSTICS']) { + if (!process.env.VSCODE_SERVER_EXIT_DIAGNOSTICS) { return; } @@ -187,7 +187,7 @@ function installServerProcessExitDiagnostics(): void { // so the exit-time lines we care about most were being dropped. A synchronous // `fs.appendFileSync` survives teardown. We target the server's `--logsPath` // directory because it is captured as a smoke test artifact. - const logsPath = sanitizeStringArg(parsedArgs['logsPath']) || os.tmpdir(); + const logsPath = sanitizeStringArg(parsedArgs.logsPath) || os.tmpdir(); const diagnosticsFile = path.join(logsPath, 'server-exit-diagnostics.log'); try { fs.mkdirSync(logsPath, { recursive: true }); @@ -350,21 +350,21 @@ async function findFreePort(host: string | undefined, start: number, end: number async function loadCode(nlsConfiguration: INLSConfiguration) { // required for `bootstrap-esm` to pick up NLS messages - process.env['VSCODE_NLS_CONFIG'] = JSON.stringify(nlsConfiguration); + process.env.VSCODE_NLS_CONFIG = JSON.stringify(nlsConfiguration); // See https://github.com/microsoft/vscode-remote-release/issues/6543 // We would normally install a SIGPIPE listener in bootstrap-node.js // But in certain situations, the console itself can be in a broken pipe state // so logging SIGPIPE to the console will cause an infinite async loop - process.env['VSCODE_HANDLES_SIGPIPE'] = 'true'; + process.env.VSCODE_HANDLES_SIGPIPE = 'true'; - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { // When running out of sources, we need to load node modules from remote/node_modules, // which are compiled against nodejs, not electron - process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH'] = process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH'] || path.join(import.meta.dirname, '..', 'remote', 'node_modules'); - devInjectNodeModuleLookupPath(process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']); + process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH = process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH || path.join(import.meta.dirname, '..', 'remote', 'node_modules'); + devInjectNodeModuleLookupPath(process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH); } else { - delete process.env['VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH']; + delete process.env.VSCODE_DEV_INJECT_NODE_MODULE_LOOKUP_PATH; } // Remove global paths from the node module lookup (node.js only) diff --git a/src/vs/code/electron-browser/workbench/workbench.ts b/src/vs/code/electron-browser/workbench/workbench.ts index 2c5f04d87958a..5af2590edefcc 100644 --- a/src/vs/code/electron-browser/workbench/workbench.ts +++ b/src/vs/code/electron-browser/workbench/workbench.ts @@ -514,7 +514,7 @@ // ESM Import try { let workbenchUrl: string; - if (!!safeProcess.env['VSCODE_DEV'] && globalThis._VSCODE_USE_RELATIVE_IMPORTS) { + if (!!safeProcess.env.VSCODE_DEV && globalThis._VSCODE_USE_RELATIVE_IMPORTS) { workbenchUrl = '../../../workbench/workbench.desktop.main.js'; // for dev purposes only } else { workbenchUrl = new URL(`vs/workbench/workbench.desktop.main.js`, baseUrl).href; @@ -558,7 +558,7 @@ forceDisableShowDevtoolsOnError: false }; - const isDev = !!safeProcess.env['VSCODE_DEV']; + const isDev = !!safeProcess.env.VSCODE_DEV; const enableDeveloperKeybindings = Boolean(isDev || forceEnableDeveloperKeybindings); let developerDeveloperKeybindingsDisposable: Function | undefined = undefined; if (enableDeveloperKeybindings) { diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index c9736ff355fa2..46fb0a4231e35 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -1187,7 +1187,7 @@ export class CodeApplication extends Disposable { case 'linux': if (isLinuxSnap) { - services.set(IUpdateService, new SyncDescriptor(SnapUpdateService, [process.env['SNAP'], process.env['SNAP_REVISION']])); + services.set(IUpdateService, new SyncDescriptor(SnapUpdateService, [process.env.SNAP, process.env.SNAP_REVISION])); } else { services.set(IUpdateService, new SyncDescriptor(LinuxUpdateService)); } @@ -1487,7 +1487,7 @@ export class CodeApplication extends Disposable { const args = this.environmentMainService.args; // Handle agents window first based on context - if (args['agents']) { + if (args.agents) { return windowsMainService.openAgentsWindow({ context, cli: args, @@ -1684,7 +1684,7 @@ export class CodeApplication extends Disposable { skia_graphite: string; }; const initialGpuFeatureStatus = app.getGPUFeatureStatus() as GPUFeatureStatusWithSkiaGraphite; - const skiaGraphiteEnabled: string = initialGpuFeatureStatus['skia_graphite']; + const skiaGraphiteEnabled: string = initialGpuFeatureStatus.skia_graphite; if (skiaGraphiteEnabled === 'enabled') { const gpuInfoUpdate = Event.fromNodeEventEmitter(app, 'gpu-info-update'); const pendingGpuInfoListener = this._register(new MutableDisposable()); @@ -1696,7 +1696,7 @@ export class CodeApplication extends Disposable { // returns the pre-crash status. pendingGpuInfoListener.value = Event.once(gpuInfoUpdate)(() => { const currentGpuFeatureStatus = app.getGPUFeatureStatus(); - const currentRasterizationStatus: string = currentGpuFeatureStatus['rasterization']; + const currentRasterizationStatus: string = currentGpuFeatureStatus.rasterization; if (currentRasterizationStatus !== 'enabled') { // Get last 10 GPU log messages (only the message field) let gpuLogMessages: string[] = []; diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index df40f72071631..0b3570d6662bf 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -246,7 +246,7 @@ class CodeMain { // File-based managed settings let fileManagedSettingsPath: string | undefined; if (isWindows) { - const programFiles = process.env['ProgramFiles']; + const programFiles = process.env.ProgramFiles; if (programFiles) { fileManagedSettingsPath = join(programFiles, MANAGED_SETTINGS_WINDOWS_DIR, MANAGED_SETTINGS_FILE_NAME); } @@ -474,7 +474,7 @@ class CodeMain { // Set the VSCODE_PID variable here when we are sure we are the first // instance to startup. Otherwise we would wrongly overwrite the PID - process.env['VSCODE_PID'] = String(process.pid); + process.env.VSCODE_PID = String(process.pid); return mainProcessNodeIpcServer; } @@ -608,9 +608,9 @@ class CodeMain { } else if (args.chat['reuse-window']) { // Apply `--reuse-window` flag to the main arguments args['reuse-window'] = true; - } else if (args.chat['profile']) { + } else if (args.chat.profile) { // Apply `--profile` flag to the main arguments - args['profile'] = args.chat['profile']; + args.profile = args.chat.profile; } else { // Unless we are started with specific instructions about // new windows or reusing existing ones, always take the @@ -635,7 +635,7 @@ class CodeMain { } // Normalize paths and watch out for goto line mode - if (!args['remote']) { + if (!args.remote) { const paths = this.doValidatePaths(args._, args.goto); args._ = paths; } diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 994f6c38d99bb..5b2319828a369 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -38,7 +38,7 @@ function shouldSpawnCliProcess(argv: NativeParsedArgs): boolean { || !!argv['update-extensions'] || !!argv['locate-extension'] || !!argv['add-mcp'] - || !!argv['telemetry']; + || !!argv.telemetry; } export async function main(argv: string[]): Promise { @@ -64,13 +64,13 @@ export async function main(argv: string[]): Promise { // on the following variable. For the server we need to unset // it to prevent importing any electron specific modules. // Refs https://github.com/microsoft/vscode/issues/221883 - delete env['ELECTRON_RUN_AS_NODE']; + delete env.ELECTRON_RUN_AS_NODE; const tunnelArgs = argv.slice(argv.indexOf(subcommand) + 1); // all arguments behind `tunnel` return new Promise((resolve, reject) => { let tunnelProcess: ChildProcess; const stdio: StdioOptions = ['ignore', 'pipe', 'pipe']; - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { tunnelProcess = spawn('cargo', ['run', '--', subcommand, ...tunnelArgs], { cwd: join(getAppRoot(), 'cli'), stdio, env }); } else { const appPath = process.platform === 'darwin' @@ -132,7 +132,7 @@ export async function main(argv: string[]): Promise { // built, because our location on disk is different if built. let cliProcessMain: string; - if (process.env['VSCODE_DEV']) { + if (process.env.VSCODE_DEV) { cliProcessMain = './cliProcessMain.js'; } else { cliProcessMain = './vs/code/node/cliProcessMain.js'; @@ -226,12 +226,12 @@ export async function main(argv: string[]): Promise { 'ELECTRON_NO_ATTACH_CONSOLE': '1' }; - delete env['ELECTRON_RUN_AS_NODE']; + delete env.ELECTRON_RUN_AS_NODE; const processCallbacks: ((child: ChildProcess) => Promise)[] = []; if (args.verbose) { - env['ELECTRON_ENABLE_LOGGING'] = '1'; + env.ELECTRON_ENABLE_LOGGING = '1'; } if (args.verbose || args.status) { @@ -244,7 +244,7 @@ export async function main(argv: string[]): Promise { } // Handle --transient option - if (args['transient']) { + if (args.transient) { const tempParentDir = randomPath(tmpdir(), 'vscode'); const tempUserDataDir = join(tempParentDir, 'data'); const tempExtensionsDir = join(tempParentDir, 'extensions'); @@ -421,7 +421,7 @@ export async function main(argv: string[]): Promise { } let suffix = ''; const result = await session.stop(); - if (!process.env['VSCODE_DEV']) { + if (!process.env.VSCODE_DEV) { // when running from a not-development-build we remove // absolute filenames because we don't want to reveal anything // about users. We also append the `.txt` suffix to make it @@ -484,13 +484,13 @@ export async function main(argv: string[]): Promise { }; if (!args.verbose) { - options['stdio'] = 'ignore'; + options.stdio = 'ignore'; } let child: ChildProcess; if (!isMacintosh) { if (!args.verbose && args.status) { - options['stdio'] = ['ignore', 'pipe', 'ignore']; // restore ability to see output when --status is used + options.stdio = ['ignore', 'pipe', 'ignore']; // restore ability to see output when --status is used } // On Windows, Chromium filters standalone URL-like argv tokens (containing "://") @@ -560,7 +560,7 @@ export async function main(argv: string[]): Promise { spawnArgs.push('--args', ...argv.slice(2)); // pass on our arguments - if (env['VSCODE_DEV']) { + if (env.VSCODE_DEV) { // If we're in development mode, replace the . arg with the // vscode source arg. Because the OSS app isn't bundled, // it needs the full vscode source arg to launch properly. diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 41d94cc492faa..4a690b54e404e 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -314,18 +314,18 @@ class CliMain extends Disposable { // List Extensions if (this.argv['list-extensions']) { - return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).listExtensions(!!this.argv['show-versions'], this.argv['category'], profileLocation); + return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).listExtensions(!!this.argv['show-versions'], this.argv.category, profileLocation); } // Install Extension else if (this.argv['install-extension'] || this.argv['install-builtin-extension']) { const installOptions: InstallOptions = { isMachineScoped: !!this.argv['do-not-sync'], installPreReleaseVersion: !!this.argv['pre-release'], donotIncludePackAndDependencies: !!this.argv['do-not-include-pack-dependencies'], profileLocation }; - return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).installExtensions(this.asExtensionIdOrVSIX(this.argv['install-extension'] || []), this.asExtensionIdOrVSIX(this.argv['install-builtin-extension'] || []), installOptions, !!this.argv['force']); + return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).installExtensions(this.asExtensionIdOrVSIX(this.argv['install-extension'] || []), this.asExtensionIdOrVSIX(this.argv['install-builtin-extension'] || []), installOptions, !!this.argv.force); } // Uninstall Extension else if (this.argv['uninstall-extension']) { - return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).uninstallExtensions(this.asExtensionIdOrVSIX(this.argv['uninstall-extension']), !!this.argv['force'], profileLocation); + return instantiationService.createInstance(ExtensionManagementCLI, [], new ConsoleLogger(LogLevel.Info, false)).uninstallExtensions(this.asExtensionIdOrVSIX(this.argv['uninstall-extension']), !!this.argv.force, profileLocation); } else if (this.argv['update-extensions']) { @@ -343,7 +343,7 @@ class CliMain extends Disposable { } // Telemetry - else if (this.argv['telemetry']) { + else if (this.argv.telemetry) { console.log(await buildTelemetryMessage(environmentService.appRoot, environmentService.extensionsPath)); } } diff --git a/src/vs/code/test/node/bootstrapESM.test.ts b/src/vs/code/test/node/bootstrapESM.test.ts index 8e0b4a32d39b1..5305d524a0c26 100644 --- a/src/vs/code/test/node/bootstrapESM.test.ts +++ b/src/vs/code/test/node/bootstrapESM.test.ts @@ -14,7 +14,7 @@ import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../base/test/comm const execFileAsync = promisify(execFile); -(process.versions['electron'] ? suite : suite.skip)('bootstrap ESM', () => { +(process.versions.electron ? suite : suite.skip)('bootstrap ESM', () => { ensureNoDisposablesAreLeakedInTestSuite(); let fixtureDirectory: string; @@ -83,9 +83,9 @@ const execFileAsync = promisify(execFile); ELECTRON_RUN_AS_NODE: '1', VSCODE_DEV: '1' }; - delete env['NODE_OPTIONS']; + delete env.NODE_OPTIONS; if (condition) { - env['NODE_OPTIONS'] = `--conditions=${condition}`; + env.NODE_OPTIONS = `--conditions=${condition}`; } const { stdout } = await execFileAsync(process.execPath, args, { env diff --git a/src/vs/platform/diagnostics/node/diagnosticsService.ts b/src/vs/platform/diagnostics/node/diagnosticsService.ts index f26f23cc66735..f52d0ca621d37 100644 --- a/src/vs/platform/diagnostics/node/diagnosticsService.ts +++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts @@ -228,9 +228,9 @@ export async function collectLaunchConfigs(folder: string): Promise { test('can unset and restore snap env variables', () => { const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product }); - process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original'; - process.env['TEST_ARG1'] = 'modified'; - process.env['TEST_ARG2_SNAP'] = 'test_arg2'; - process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = ''; - process.env['TEST_ARG3'] = 'test_arg3_non_empty'; + process.env.TEST_ARG1_VSCODE_SNAP_ORIG = 'original'; + process.env.TEST_ARG1 = 'modified'; + process.env.TEST_ARG2_SNAP = 'test_arg2'; + process.env.TEST_ARG3_VSCODE_SNAP_ORIG = ''; + process.env.TEST_ARG3 = 'test_arg3_non_empty'; // Unset snap env variables service.unsetSnapExportedVariables(); if (isLinux) { - assert.strictEqual(process.env['TEST_ARG1'], 'original'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], undefined); + assert.strictEqual(process.env.TEST_ARG1, 'original'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, undefined); } else { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } // Restore snap env variables service.restoreSnapExportedVariables(); if (isLinux) { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } else { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } }); test('can invoke unsetSnapExportedVariables and restoreSnapExportedVariables multiple times', () => { const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product }); // Mock snap environment - process.env['SNAP'] = '1'; - process.env['SNAP_REVISION'] = 'test_revision'; + process.env.SNAP = '1'; + process.env.SNAP_REVISION = 'test_revision'; - process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original'; - process.env['TEST_ARG1'] = 'modified'; - process.env['TEST_ARG2_SNAP'] = 'test_arg2'; - process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = ''; - process.env['TEST_ARG3'] = 'test_arg3_non_empty'; + process.env.TEST_ARG1_VSCODE_SNAP_ORIG = 'original'; + process.env.TEST_ARG1 = 'modified'; + process.env.TEST_ARG2_SNAP = 'test_arg2'; + process.env.TEST_ARG3_VSCODE_SNAP_ORIG = ''; + process.env.TEST_ARG3 = 'test_arg3_non_empty'; // Unset snap env variables service.unsetSnapExportedVariables(); service.unsetSnapExportedVariables(); service.unsetSnapExportedVariables(); if (isLinux) { - assert.strictEqual(process.env['TEST_ARG1'], 'original'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], undefined); + assert.strictEqual(process.env.TEST_ARG1, 'original'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, undefined); } else { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } // Restore snap env variables service.restoreSnapExportedVariables(); service.restoreSnapExportedVariables(); if (isLinux) { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } else { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } // Unset snap env variables service.unsetSnapExportedVariables(); if (isLinux) { - assert.strictEqual(process.env['TEST_ARG1'], 'original'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], undefined); + assert.strictEqual(process.env.TEST_ARG1, 'original'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, undefined); } else { - assert.strictEqual(process.env['TEST_ARG1'], 'modified'); - assert.strictEqual(process.env['TEST_ARG2'], undefined); - assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original'); - assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2'); - assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], ''); - assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty'); + assert.strictEqual(process.env.TEST_ARG1, 'modified'); + assert.strictEqual(process.env.TEST_ARG2, undefined); + assert.strictEqual(process.env.TEST_ARG1_VSCODE_SNAP_ORIG, 'original'); + assert.strictEqual(process.env.TEST_ARG2_SNAP, 'test_arg2'); + assert.strictEqual(process.env.TEST_ARG3_VSCODE_SNAP_ORIG, ''); + assert.strictEqual(process.env.TEST_ARG3, 'test_arg3_non_empty'); } }); diff --git a/src/vs/platform/environment/test/node/userDataPath.test.ts b/src/vs/platform/environment/test/node/userDataPath.test.ts index 6430ac8f19e8e..455f418436572 100644 --- a/src/vs/platform/environment/test/node/userDataPath.test.ts +++ b/src/vs/platform/environment/test/node/userDataPath.test.ts @@ -17,18 +17,18 @@ suite('User data path', () => { }); test('getUserDataPath - portable mode', () => { - const origPortable = process.env['VSCODE_PORTABLE']; + const origPortable = process.env.VSCODE_PORTABLE; try { const portableDir = 'portable-dir'; - process.env['VSCODE_PORTABLE'] = portableDir; + process.env.VSCODE_PORTABLE = portableDir; const path = getUserDataPath(parseArgs(process.argv, OPTIONS), product.nameShort); assert.ok(path.includes(portableDir)); } finally { if (typeof origPortable === 'string') { - process.env['VSCODE_PORTABLE'] = origPortable; + process.env.VSCODE_PORTABLE = origPortable; } else { - delete process.env['VSCODE_PORTABLE']; + delete process.env.VSCODE_PORTABLE; } } }); @@ -43,18 +43,18 @@ suite('User data path', () => { }); test('getUserDataPath - VSCODE_APPDATA', () => { - const origAppData = process.env['VSCODE_APPDATA']; + const origAppData = process.env.VSCODE_APPDATA; try { const appDataDir = 'appdata-dir'; - process.env['VSCODE_APPDATA'] = appDataDir; + process.env.VSCODE_APPDATA = appDataDir; const path = getUserDataPath(parseArgs(process.argv, OPTIONS), product.nameShort); assert.ok(path.includes(appDataDir)); } finally { if (typeof origAppData === 'string') { - process.env['VSCODE_APPDATA'] = origAppData; + process.env.VSCODE_APPDATA = origAppData; } else { - delete process.env['VSCODE_APPDATA']; + delete process.env.VSCODE_APPDATA; } } }); diff --git a/src/vs/platform/launch/electron-main/launchMainService.ts b/src/vs/platform/launch/electron-main/launchMainService.ts index 1984c46f0f93f..f6aa98e0d640e 100644 --- a/src/vs/platform/launch/electron-main/launchMainService.ts +++ b/src/vs/platform/launch/electron-main/launchMainService.ts @@ -144,7 +144,7 @@ export class LaunchMainService implements ILaunchMainService { } // Agents window - else if (args['agents']) { + else if (args.agents) { usedWindows = await this.windowsMainService.openAgentsWindow(baseConfig); } diff --git a/src/vs/platform/native/electron-main/auth.ts b/src/vs/platform/native/electron-main/auth.ts index fa2e9b47ff45a..408177e4b2a30 100644 --- a/src/vs/platform/native/electron-main/auth.ts +++ b/src/vs/platform/native/electron-main/auth.ts @@ -157,7 +157,7 @@ export class ProxyAuthService extends Disposable implements IProxyAuthService { // Reply with manually supplied credentials. Fail if they are wrong. const newHttpProxy = (this.configurationService.getValue('http.proxy') || '').trim() - || (process.env['https_proxy'] || process.env['HTTPS_PROXY'] || process.env['http_proxy'] || process.env['HTTP_PROXY'] || '').trim() + || (process.env.https_proxy || process.env.HTTPS_PROXY || process.env.http_proxy || process.env.HTTP_PROXY || '').trim() || undefined; if (newHttpProxy?.indexOf('@') !== -1) { diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts index 36d8d370f6936..f188c065929f3 100644 --- a/src/vs/platform/product/common/product.ts +++ b/src/vs/platform/product/common/product.ts @@ -40,7 +40,7 @@ else if (globalThis._VSCODE_PRODUCT_JSON && globalThis._VSCODE_PACKAGE_JSON) { const packageConfiguration = globalThis._VSCODE_PACKAGE_JSON as unknown as IPackageConfiguration; // Running out of sources - if (env['VSCODE_DEV']) { + if (env.VSCODE_DEV) { Object.assign(product, { nameShort: `${product.nameShort} Dev`, nameLong: `${product.nameLong} Dev`, diff --git a/src/vs/platform/shell/node/shellEnv.ts b/src/vs/platform/shell/node/shellEnv.ts index 8f4fbf6c49502..e2701d307fd90 100644 --- a/src/vs/platform/shell/node/shellEnv.ts +++ b/src/vs/platform/shell/node/shellEnv.ts @@ -100,10 +100,10 @@ export async function getResolvedShellEnv(configurationService: IConfigurationSe } async function doResolveUnixShellEnv(logService: ILogService, token: CancellationToken): Promise { - const runAsNode = process.env['ELECTRON_RUN_AS_NODE']; + const runAsNode = process.env.ELECTRON_RUN_AS_NODE; logService.trace('getUnixShellEnvironment#runAsNode', runAsNode); - const noAttach = process.env['ELECTRON_NO_ATTACH_CONSOLE']; + const noAttach = process.env.ELECTRON_NO_ATTACH_CONSOLE; logService.trace('getUnixShellEnvironment#noAttach', noAttach); const mark = generateUuid().replace(/-/g, '').substr(0, 12); @@ -195,21 +195,21 @@ async function doResolveUnixShellEnv(logService: ILogService, token: Cancellatio const env = JSON.parse(rawStripped); if (runAsNode) { - env['ELECTRON_RUN_AS_NODE'] = runAsNode; + env.ELECTRON_RUN_AS_NODE = runAsNode; } else { - delete env['ELECTRON_RUN_AS_NODE']; + delete env.ELECTRON_RUN_AS_NODE; } if (noAttach) { - env['ELECTRON_NO_ATTACH_CONSOLE'] = noAttach; + env.ELECTRON_NO_ATTACH_CONSOLE = noAttach; } else { - delete env['ELECTRON_NO_ATTACH_CONSOLE']; + delete env.ELECTRON_NO_ATTACH_CONSOLE; } - delete env['VSCODE_RESOLVING_ENVIRONMENT']; + delete env.VSCODE_RESOLVING_ENVIRONMENT; // https://github.com/microsoft/vscode/issues/22593#issuecomment-336050758 - delete env['XDG_RUNTIME_DIR']; + delete env.XDG_RUNTIME_DIR; logService.trace('getUnixShellEnvironment#result', env); resolve(env); diff --git a/src/vs/platform/utilityProcess/electron-main/utilityProcess.ts b/src/vs/platform/utilityProcess/electron-main/utilityProcess.ts index c1dd46b4c1771..585658fbc546b 100644 --- a/src/vs/platform/utilityProcess/electron-main/utilityProcess.ts +++ b/src/vs/platform/utilityProcess/electron-main/utilityProcess.ts @@ -277,16 +277,16 @@ export class UtilityProcess extends Disposable { const env: NodeJS.ProcessEnv = configuration.env ? { ...configuration.env } : { ...deepClone(process.env) }; // Apply supported environment variables from config - env['VSCODE_ESM_ENTRYPOINT'] = configuration.entryPoint; + env.VSCODE_ESM_ENTRYPOINT = configuration.entryPoint; if (typeof configuration.parentLifecycleBound === 'number') { - env['VSCODE_PARENT_PID'] = String(configuration.parentLifecycleBound); + env.VSCODE_PARENT_PID = String(configuration.parentLifecycleBound); } - env['VSCODE_CRASH_REPORTER_PROCESS_TYPE'] = configuration.type; + env.VSCODE_CRASH_REPORTER_PROCESS_TYPE = configuration.type; if (isWindows) { if (isUNCAccessRestrictionsDisabled()) { - env['NODE_DISABLE_UNC_ACCESS_CHECKS'] = '1'; + env.NODE_DISABLE_UNC_ACCESS_CHECKS = '1'; } else { - env['NODE_UNC_HOST_ALLOWLIST'] = getUNCHostAllowlist().join('\\'); + env.NODE_UNC_HOST_ALLOWLIST = getUNCHostAllowlist().join('\\'); } } diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 5904f68759d69..70c3a8479b52e 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -1178,7 +1178,7 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { if (!e || e.affectsConfiguration('http.proxy') || e.affectsConfiguration('http.noProxy')) { const inspect = this.configurationService.inspect('http.proxy'); let newHttpProxy = (inspect.userLocalValue || '').trim() - || (process.env['https_proxy'] || process.env['HTTPS_PROXY'] || process.env['http_proxy'] || process.env['HTTP_PROXY'] || '').trim() // Not standardized. + || (process.env.https_proxy || process.env.HTTPS_PROXY || process.env.http_proxy || process.env.HTTP_PROXY || '').trim() // Not standardized. || undefined; if (newHttpProxy?.indexOf('@') !== -1) { @@ -1194,7 +1194,7 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { } const newNoProxy = (this.configurationService.getValue('http.noProxy') || []).map((item) => item.trim()).join(',') - || (process.env['no_proxy'] || process.env['NO_PROXY'] || '').trim() || undefined; // Not standardized. + || (process.env.no_proxy || process.env.NO_PROXY || '').trim() || undefined; // Not standardized. if ((newHttpProxy || '').indexOf('@') === -1 && (newHttpProxy !== this.currentHttpProxy || newNoProxy !== this.currentNoProxy)) { this.currentHttpProxy = newHttpProxy; this.currentNoProxy = newNoProxy; @@ -1323,9 +1323,9 @@ export class CodeWindow extends BaseWindow implements ICodeWindow { // If named pipe was instantiated for the crashpad_handler process, reuse the same // pipe for new app instances connecting to the original app instance. // Ref: https://github.com/microsoft/vscode/issues/115874 - if (process.env['CHROME_CRASHPAD_PIPE_NAME']) { + if (process.env.CHROME_CRASHPAD_PIPE_NAME) { Object.assign(configuration.userEnv, { - CHROME_CRASHPAD_PIPE_NAME: process.env['CHROME_CRASHPAD_PIPE_NAME'] + CHROME_CRASHPAD_PIPE_NAME: process.env.CHROME_CRASHPAD_PIPE_NAME }); } diff --git a/src/vs/platform/windows/electron-main/windowsMainService.ts b/src/vs/platform/windows/electron-main/windowsMainService.ts index d8428b529b26f..6e674927b9e5d 100644 --- a/src/vs/platform/windows/electron-main/windowsMainService.ts +++ b/src/vs/platform/windows/electron-main/windowsMainService.ts @@ -737,7 +737,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic filesToDiff: filesToOpen?.filesToDiff, filesToMerge: filesToOpen?.filesToMerge, filesToWait: filesToOpen?.filesToWait, - termProgram: configuration?.userEnv?.['TERM_PROGRAM'] + termProgram: configuration?.userEnv?.TERM_PROGRAM }; window.sendWhenReady('vscode:openFiles', CancellationToken.None, params); @@ -1389,7 +1389,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic // Linux/Windows: by default we open files in the new window unless triggered via DIALOG / MENU context // or from the integrated terminal where we assume the user prefers to open in the current window else { - if (openConfig.context !== OpenContext.DIALOG && openConfig.context !== OpenContext.MENU && !(openConfig.userEnv && openConfig.userEnv['TERM_PROGRAM'] === 'vscode')) { + if (openConfig.context !== OpenContext.DIALOG && openConfig.context !== OpenContext.MENU && !(openConfig.userEnv && openConfig.userEnv.TERM_PROGRAM === 'vscode')) { openFilesInNewWindow = true; } } diff --git a/src/vs/server/node/remoteAgentEnvironmentImpl.ts b/src/vs/server/node/remoteAgentEnvironmentImpl.ts index 640c74695a52f..f684b814709e0 100644 --- a/src/vs/server/node/remoteAgentEnvironmentImpl.ts +++ b/src/vs/server/node/remoteAgentEnvironmentImpl.ts @@ -105,7 +105,7 @@ export class RemoteAgentEnvironmentChannel implements IServerChannel { if (process.platform === 'linux') { const glibcVersion = (process as ProcessWithGlibc).glibcVersion; const minorVersion = glibcVersion ? parseInt(glibcVersion.split('.')[1]) : 28; - isUnsupportedGlibc = (minorVersion <= 27) || !!process.env['VSCODE_SERVER_CUSTOM_GLIBC_LINKER']; + isUnsupportedGlibc = (minorVersion <= 27) || !!process.env.VSCODE_SERVER_CUSTOM_GLIBC_LINKER; } this._logService.trace(`[reconnection-grace-time] Server sending grace time to client: ${this._environmentService.reconnectionGraceTime}ms (${Math.floor(this._environmentService.reconnectionGraceTime / 1000)}s)`); return { diff --git a/src/vs/server/node/remoteExtensionHostAgentCli.ts b/src/vs/server/node/remoteExtensionHostAgentCli.ts index f7d10061ad875..60d19fcac75f7 100644 --- a/src/vs/server/node/remoteExtensionHostAgentCli.ts +++ b/src/vs/server/node/remoteExtensionHostAgentCli.ts @@ -150,18 +150,18 @@ class CliMain extends Disposable { // List Extensions if (this.args['list-extensions']) { - return extensionManagementCLI.listExtensions(!!this.args['show-versions'], this.args['category']); + return extensionManagementCLI.listExtensions(!!this.args['show-versions'], this.args.category); } // Install Extension else if (this.args['install-extension'] || this.args['install-builtin-extension']) { const installOptions: InstallOptions = { isMachineScoped: !!this.args['do-not-sync'], installPreReleaseVersion: !!this.args['pre-release'], donotIncludePackAndDependencies: !!this.args['do-not-include-pack-dependencies'] }; - return extensionManagementCLI.installExtensions(this.asExtensionIdOrVSIX(this.args['install-extension'] || []), this.asExtensionIdOrVSIX(this.args['install-builtin-extension'] || []), installOptions, !!this.args['force']); + return extensionManagementCLI.installExtensions(this.asExtensionIdOrVSIX(this.args['install-extension'] || []), this.asExtensionIdOrVSIX(this.args['install-builtin-extension'] || []), installOptions, !!this.args.force); } // Uninstall Extension else if (this.args['uninstall-extension']) { - return extensionManagementCLI.uninstallExtensions(this.asExtensionIdOrVSIX(this.args['uninstall-extension']), !!this.args['force']); + return extensionManagementCLI.uninstallExtensions(this.asExtensionIdOrVSIX(this.args['uninstall-extension']), !!this.args.force); } // Update the installed extensions diff --git a/src/vs/server/node/remoteExtensionHostAgentServer.ts b/src/vs/server/node/remoteExtensionHostAgentServer.ts index fcecdac09780f..4da647889ffcb 100644 --- a/src/vs/server/node/remoteExtensionHostAgentServer.ts +++ b/src/vs/server/node/remoteExtensionHostAgentServer.ts @@ -191,8 +191,8 @@ class RemoteExtensionHostAgentServer extends Disposable implements IServerAPI { } // Allow cross origin requests from the web worker extension host - responseHeaders['Vary'] = 'Origin'; - const requestOrigin = req.headers['origin']; + responseHeaders.Vary = 'Origin'; + const requestOrigin = req.headers.origin; if (requestOrigin && this._webEndpointOriginChecker.matches(requestOrigin)) { responseHeaders['Access-Control-Allow-Origin'] = requestOrigin; } diff --git a/src/vs/server/node/remoteExtensionsScanner.ts b/src/vs/server/node/remoteExtensionsScanner.ts index bbc82fd06bce2..a9f0c61cc2720 100644 --- a/src/vs/server/node/remoteExtensionsScanner.ts +++ b/src/vs/server/node/remoteExtensionsScanner.ts @@ -47,7 +47,7 @@ export class RemoteExtensionsScannerService implements IRemoteExtensionsScannerS _logService.trace('Installing builtin extensions passed via args...'); const installOptions: InstallOptions = { isMachineScoped: !!environmentService.args['do-not-sync'], installPreReleaseVersion: !!environmentService.args['pre-release'] }; performance.mark('code/server/willInstallBuiltinExtensions'); - this._whenExtensionsReady = this._whenBuiltinExtensionsReady = _extensionManagementCLI.installExtensions([], this._asExtensionIdOrVSIX(builtinExtensionsToInstall), installOptions, !!environmentService.args['force']) + this._whenExtensionsReady = this._whenBuiltinExtensionsReady = _extensionManagementCLI.installExtensions([], this._asExtensionIdOrVSIX(builtinExtensionsToInstall), installOptions, !!environmentService.args.force) .then(() => { performance.mark('code/server/didInstallBuiltinExtensions'); _logService.trace('Finished installing builtin extensions'); @@ -67,7 +67,7 @@ export class RemoteExtensionsScannerService implements IRemoteExtensionsScannerS isApplicationScoped: true // extensions installed during server startup are available to all profiles }; this._whenExtensionsReady = this._whenBuiltinExtensionsReady - .then(() => _extensionManagementCLI.installExtensions(this._asExtensionIdOrVSIX(extensionsToInstall), [], installOptions, !!environmentService.args['force'])) + .then(() => _extensionManagementCLI.installExtensions(this._asExtensionIdOrVSIX(extensionsToInstall), [], installOptions, !!environmentService.args.force)) .then(async () => { _logService.trace('Finished installing extensions'); return { failed: [] }; diff --git a/src/vs/server/node/remoteTerminalChannel.ts b/src/vs/server/node/remoteTerminalChannel.ts index f2bbe6a4f05e6..c2350fecf16ef 100644 --- a/src/vs/server/node/remoteTerminalChannel.ts +++ b/src/vs/server/node/remoteTerminalChannel.ts @@ -58,10 +58,10 @@ class CustomVariableResolver extends AbstractVariableResolverService { return resolvedVariables[`config:${section}`]; }, getExecPath: (): string | undefined => { - return env['VSCODE_EXEC_PATH']; + return env.VSCODE_EXEC_PATH; }, getAppRoot: (): string | undefined => { - return env['VSCODE_CWD']; + return env.VSCODE_CWD; }, getFilePath: (): string | undefined => { if (activeFileResource) { @@ -70,13 +70,13 @@ class CustomVariableResolver extends AbstractVariableResolverService { return undefined; }, getSelectedText: (): string | undefined => { - return resolvedVariables['selectedText']; + return resolvedVariables.selectedText; }, getLineNumber: (): string | undefined => { - return resolvedVariables['lineNumber']; + return resolvedVariables.lineNumber; }, getColumnNumber: (): string | undefined => { - return resolvedVariables['columnNumber']; + return resolvedVariables.columnNumber; }, getExtension: async id => { const installed = await extensionService.getInstalled(); diff --git a/src/vs/server/node/server.cli.ts b/src/vs/server/node/server.cli.ts index 040656c01ecce..4e139505f7fac 100644 --- a/src/vs/server/node/server.cli.ts +++ b/src/vs/server/node/server.cli.ts @@ -84,11 +84,11 @@ const isSupportedForPipe = (optionId: keyof RemoteParsedArgs) => { } }; -const cliPipe = process.env['VSCODE_IPC_HOOK_CLI'] as string; -const cliCommand = process.env['VSCODE_CLIENT_COMMAND'] as string; -const cliCommandCwd = process.env['VSCODE_CLIENT_COMMAND_CWD'] as string; -const cliRemoteAuthority = process.env['VSCODE_CLI_AUTHORITY'] as string; -const cliStdInFilePath = process.env['VSCODE_STDIN_FILE_PATH'] as string; +const cliPipe = process.env.VSCODE_IPC_HOOK_CLI as string; +const cliCommand = process.env.VSCODE_CLIENT_COMMAND as string; +const cliCommandCwd = process.env.VSCODE_CLIENT_COMMAND_CWD as string; +const cliRemoteAuthority = process.env.VSCODE_CLI_AUTHORITY as string; +const cliStdInFilePath = process.env.VSCODE_STDIN_FILE_PATH as string; export async function main(desc: ProductDescription, args: string[]): Promise { if (!cliPipe && !cliCommand) { @@ -113,7 +113,7 @@ export async function main(desc: ProductDescription, args: string[]): Promise uri; - const verbose = !!parsedArgs['verbose']; + const verbose = !!parsedArgs.verbose; if (parsedArgs.help) { console.log(buildHelpMessage(desc.productName, desc.executableName, desc.version, options)); @@ -161,8 +161,8 @@ export async function main(desc: ProductDescription, args: string[]): Promise | undefined; let stdinFilePath: string | undefined; @@ -225,7 +225,7 @@ export async function main(desc: ProductDescription, args: string[]): Promise { console.log(res); }).catch(e => { @@ -334,7 +334,7 @@ export async function main(desc: ProductDescription, args: string[]): Promise | Option<'string'> | Option<' return option; } } - for (const [optionId, option] of Object.entries(OPTIONS['agent'].options)) { + for (const [optionId, option] of Object.entries(OPTIONS.agent.options)) { if (id === option.alias || id === optionId) { return option; } diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts index fde803a0435ea..6ea22c351e263 100644 --- a/src/vs/server/node/server.main.ts +++ b/src/vs/server/node/server.main.ts @@ -38,7 +38,7 @@ const args = parseArgs(process.argv.slice(2), serverOptions, errorReporter); const agentHostBridgeConnectionToken = process.env[agentHostBridgeConnectionTokenEnvironmentVariable]; delete process.env[agentHostBridgeConnectionTokenEnvironmentVariable]; -const REMOTE_DATA_FOLDER = args['server-data-dir'] || process.env['VSCODE_AGENT_FOLDER'] || join(os.homedir(), product.serverDataFolderName || '.vscode-remote'); +const REMOTE_DATA_FOLDER = args['server-data-dir'] || process.env.VSCODE_AGENT_FOLDER || join(os.homedir(), product.serverDataFolderName || '.vscode-remote'); const USER_DATA_PATH = join(REMOTE_DATA_FOLDER, 'data'); const APP_SETTINGS_HOME = join(USER_DATA_PATH, 'User'); const GLOBAL_STORAGE_HOME = join(APP_SETTINGS_HOME, 'globalStorage'); diff --git a/src/vs/server/node/serverEnvironmentService.ts b/src/vs/server/node/serverEnvironmentService.ts index 935468360027d..7eb36816b4239 100644 --- a/src/vs/server/node/serverEnvironmentService.ts +++ b/src/vs/server/node/serverEnvironmentService.ts @@ -57,8 +57,8 @@ export const serverOptions: OptionDescriptions> = { 'disable-experiments': OPTIONS['disable-experiments'], 'disable-workspace-trust': OPTIONS['disable-workspace-trust'], 'file-watcher-polling': { type: 'string', deprecates: ['fileWatcherPolling'] }, - 'log': OPTIONS['log'], - 'logsPath': OPTIONS['logsPath'], + 'log': OPTIONS.log, + 'logsPath': OPTIONS.logsPath, 'force-disable-user-env': OPTIONS['force-disable-user-env'], 'enable-proposed-api': OPTIONS['enable-proposed-api'], @@ -87,8 +87,8 @@ export const serverOptions: OptionDescriptions> = { 'locate-extension': OPTIONS['locate-extension'], 'show-versions': OPTIONS['show-versions'], - 'category': OPTIONS['category'], - 'force': OPTIONS['force'], + 'category': OPTIONS.category, + 'force': OPTIONS.force, 'do-not-sync': OPTIONS['do-not-sync'], 'do-not-include-pack-dependencies': OPTIONS['do-not-include-pack-dependencies'], 'pre-release': OPTIONS['pre-release'], @@ -114,13 +114,13 @@ export const serverOptions: OptionDescriptions> = { /* ----- server cli ----- */ - 'help': OPTIONS['help'], - 'version': OPTIONS['version'], + 'help': OPTIONS.help, + 'version': OPTIONS.version, 'locate-shell-integration-path': OPTIONS['locate-shell-integration-path'], 'compatibility': { type: 'string' }, - _: OPTIONS['_'] + _: OPTIONS._ }; export interface ServerParsedArgs { diff --git a/src/vs/server/node/webClientServer.ts b/src/vs/server/node/webClientServer.ts index ebbfe1c594769..ae5f001465d94 100644 --- a/src/vs/server/node/webClientServer.ts +++ b/src/vs/server/node/webClientServer.ts @@ -59,7 +59,7 @@ export async function serveFile(filePath: string, cacheControl: CacheControl, lo // Check if file modified since const etag = `W/"${[stat.ino, stat.size, stat.mtime.getTime()].join('-')}"`; // weak validator (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) - responseHeaders['Etag'] = etag; + responseHeaders.Etag = etag; if (req.headers['if-none-match'] === etag) { res.writeHead(304, responseHeaders); return void res.end(); @@ -329,7 +329,7 @@ export class WebClientServer { newQuery.delete(connectionTokenQueryName); const queryString = newQuery.toString(); const newLocation = queryString ? `${basePath}?${queryString}` : basePath; - responseHeaders['Location'] = newLocation; + responseHeaders.Location = newLocation; res.writeHead(302, responseHeaders); return void res.end(); @@ -455,7 +455,7 @@ export class WebClientServer { // DEV --------------------------------------------------------------------------------------- if (this._cssDevService.isEnabled) { const cssModules = await this._cssDevService.getCssModules(); - values['WORKBENCH_DEV_CSS_MODULES'] = JSON.stringify(cssModules); + values.WORKBENCH_DEV_CSS_MODULES = JSON.stringify(cssModules); } if (useTestResolver) { @@ -464,7 +464,7 @@ export class WebClientServer { const packageJSON = JSON.parse((await promises.readFile(FileAccess.asFileUri(`${builtinExtensionsPath}/${extensionPath}/package.json`).fsPath)).toString()); bundledExtensions.push({ extensionPath, packageJSON }); } - values['WORKBENCH_BUILTIN_EXTENSIONS'] = asJSON(bundledExtensions); + values.WORKBENCH_BUILTIN_EXTENSIONS = asJSON(bundledExtensions); } let data;