From f8432f8d9c1b1edd48e2b97d554e343f008e215c Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 6 Apr 2020 08:58:37 +0200 Subject: [PATCH] debt - more usage of ES6 object assign --- src/vs/code/electron-main/main.ts | 3 +-- src/vs/code/electron-main/sharedProcess.ts | 5 ++--- src/vs/code/electron-main/window.ts | 6 +++--- src/vs/code/node/shellEnv.ts | 6 +++--- src/vs/platform/files/common/fileService.ts | 6 +++--- src/vs/platform/product/common/product.ts | 11 +++++----- .../electron-main/windowsMainService.ts | 4 ++-- .../workbench/browser/parts/editor/editor.ts | 5 ++--- .../browser/parts/editor/editorPart.ts | 3 +-- .../browser/parts/editor/textEditor.ts | 4 ++-- .../browser/parts/titlebar/menubarControl.ts | 3 +-- src/vs/workbench/common/editor.ts | 3 +-- .../electron-browser/nativeTextFileService.ts | 20 +++++++++---------- 13 files changed, 35 insertions(+), 44 deletions(-) diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 527d3e29f1c..feffa020b72 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -5,7 +5,6 @@ import 'vs/platform/update/common/update.config.contribution'; import { app, dialog } from 'electron'; -import { assign } from 'vs/base/common/objects'; import { isWindows, IProcessEnvironment, isMacintosh } from 'vs/base/common/platform'; import product from 'vs/platform/product/common/product'; import { parseMainProcessArgv, addArg } from 'vs/platform/environment/node/argvHelper'; @@ -201,7 +200,7 @@ class CodeMain { } }); - assign(process.env, instanceEnvironment); + Object.assign(process.env, instanceEnvironment); return instanceEnvironment; } diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index 2ad547190cd..cb038df94bd 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { assign } from 'vs/base/common/objects'; import { memoize } from 'vs/base/common/decorators'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { BrowserWindow, ipcMain, WebContents, Event as ElectronEvent } from 'electron'; @@ -47,13 +46,13 @@ export class SharedProcess implements ISharedProcess { disableBlinkFeatures: 'Auxclick' // do NOT change, allows us to identify this window as shared-process in the process explorer } }); - const config = assign({ + const config = { appRoot: this.environmentService.appRoot, machineId: this.machineId, nodeCachedDataDir: this.environmentService.nodeCachedDataDir, userEnv: this.userEnv, windowId: this.window.id - }); + }; const url = `${require.toUrl('vs/code/electron-browser/sharedProcess/sharedProcess.html')}?config=${encodeURIComponent(JSON.stringify(config))}`; this.window.loadURL(url); diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 91cb9023a43..03f072954d6 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -471,7 +471,7 @@ export class CodeWindow extends Disposable implements ICodeWindow { // Inject headers when requests are incoming const urls = ['https://marketplace.visualstudio.com/*', 'https://*.vsassets.io/*']; this._win.webContents.session.webRequest.onBeforeSendHeaders({ urls }, (details, cb) => - this.marketplaceHeadersPromise.then(headers => cb({ cancel: false, requestHeaders: objects.assign(details.requestHeaders, headers) as Record }))); + this.marketplaceHeadersPromise.then(headers => cb({ cancel: false, requestHeaders: Object.assign(details.requestHeaders, headers) }))); } private onWindowError(error: WindowError): void { @@ -597,7 +597,7 @@ export class CodeWindow extends Disposable implements ICodeWindow { // Add disable-extensions to the config, but do not preserve it on currentConfig or // pendingLoadConfig so that it is applied only on this load - const configuration = objects.assign({}, config); + const configuration = { ...config }; if (disableExtensions !== undefined) { configuration['disable-extensions'] = disableExtensions; } @@ -701,7 +701,7 @@ export class CodeWindow extends Disposable implements ICodeWindow { // Config (combination of process.argv and window configuration) const environment = parseArgs(process.argv, OPTIONS); - const config = objects.assign(environment, windowConfiguration); + const config = Object.assign(environment, windowConfiguration); for (const key in config) { const configValue = (config as any)[key]; if (configValue === undefined || configValue === null || configValue === '' || configValue === false) { diff --git a/src/vs/code/node/shellEnv.ts b/src/vs/code/node/shellEnv.ts index b431b6d0514..d5d2899b267 100644 --- a/src/vs/code/node/shellEnv.ts +++ b/src/vs/code/node/shellEnv.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as cp from 'child_process'; -import { assign } from 'vs/base/common/objects'; import { generateUuid } from 'vs/base/common/uuid'; import { isWindows } from 'vs/base/common/platform'; import { ILogService } from 'vs/platform/log/common/log'; @@ -21,10 +20,11 @@ function getUnixShellEnvironment(logService: ILogService): Promise { const provider = await this.withReadProvider(resource); - const stream = await this.doReadAsFileStream(provider, resource, assign({ + const stream = await this.doReadAsFileStream(provider, resource, { + ...options, // optimization: since we know that the caller does not // care about buffering, we indicate this to the reader. // this reduces all the overhead the buffered reading // has (open, read, close) if the provider supports // unbuffered reading. preferUnbuffered: true - }, options || Object.create(null))); + }); return { ...stream, diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts index 29927fec2a9..87a3b99c703 100644 --- a/src/vs/platform/product/common/product.ts +++ b/src/vs/platform/product/common/product.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { IProductConfiguration } from 'vs/platform/product/common/productService'; -import { assign } from 'vs/base/common/objects'; import { isWeb } from 'vs/base/common/platform'; import * as path from 'vs/base/common/path'; import { getPathFromAmdModule } from 'vs/base/common/amd'; @@ -20,8 +19,8 @@ if (isWeb) { // Running out of sources if (Object.keys(product).length === 0) { - assign(product, { - version: '1.44.0-dev', + Object.assign(product, { + version: '1.45.0-dev', nameLong: 'Visual Studio Code Web Dev', nameShort: 'VSCode Web Dev', urlProtocol: 'code-oss' @@ -35,19 +34,19 @@ else if (typeof require !== 'undefined' && typeof require.__$__nodeRequire === ' // Obtain values from product.json and package.json const rootPath = path.dirname(getPathFromAmdModule(require, '')); - product = assign({}, require.__$__nodeRequire(path.join(rootPath, 'product.json')) as IProductConfiguration); + product = require.__$__nodeRequire(path.join(rootPath, 'product.json')); const pkg = require.__$__nodeRequire(path.join(rootPath, 'package.json')) as { version: string; }; // Running out of sources if (env['VSCODE_DEV']) { - assign(product, { + Object.assign(product, { nameShort: `${product.nameShort} Dev`, nameLong: `${product.nameLong} Dev`, dataFolderName: `${product.dataFolderName}-dev` }); } - assign(product, { + Object.assign(product, { version: pkg.version }); } diff --git a/src/vs/platform/windows/electron-main/windowsMainService.ts b/src/vs/platform/windows/electron-main/windowsMainService.ts index 8a77432d355..ca5af80ac5b 100644 --- a/src/vs/platform/windows/electron-main/windowsMainService.ts +++ b/src/vs/platform/windows/electron-main/windowsMainService.ts @@ -7,7 +7,7 @@ import * as fs from 'fs'; import { basename, normalize, join, posix } from 'vs/base/common/path'; import { localize } from 'vs/nls'; import * as arrays from 'vs/base/common/arrays'; -import { assign, mixin } from 'vs/base/common/objects'; +import { mixin } from 'vs/base/common/objects'; import { IBackupMainService } from 'vs/platform/backup/electron-main/backup'; import { IEmptyWindowBackupInfo } from 'vs/platform/backup/node/backup'; import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment'; @@ -1358,7 +1358,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic configuration.nodeCachedDataDir = this.environmentService.nodeCachedDataDir; configuration.mainPid = process.pid; configuration.execPath = process.execPath; - configuration.userEnv = assign({}, this.initialUserEnv, options.userEnv || {}); + configuration.userEnv = { ...this.initialUserEnv, ...options.userEnv }; configuration.isInitialStartup = options.initialStartup; configuration.workspace = options.workspace; configuration.folderUri = options.folderUri; diff --git a/src/vs/workbench/browser/parts/editor/editor.ts b/src/vs/workbench/browser/parts/editor/editor.ts index 4841eb5c4ca..255a3b71784 100644 --- a/src/vs/workbench/browser/parts/editor/editor.ts +++ b/src/vs/workbench/browser/parts/editor/editor.ts @@ -9,7 +9,6 @@ import { IEditorGroup, GroupDirection, IAddGroupOptions, IMergeGroupOptions, Gro import { IDisposable } from 'vs/base/common/lifecycle'; import { Dimension } from 'vs/base/browser/dom'; import { Event } from 'vs/base/common/event'; -import { assign } from 'vs/base/common/objects'; import { IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { ISerializableView } from 'vs/base/browser/ui/grid/grid'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser'; @@ -47,7 +46,7 @@ export function impactsEditorPartOptions(event: IConfigurationChangeEvent): bool } export function getEditorPartOptions(config: IWorkbenchEditorConfiguration): IEditorPartOptions { - const options: IEditorPartOptions = assign(Object.create(null), DEFAULT_EDITOR_PART_OPTIONS); + const options = { ...DEFAULT_EDITOR_PART_OPTIONS }; if (!config || !config.workbench) { return options; @@ -58,7 +57,7 @@ export function getEditorPartOptions(config: IWorkbenchEditorConfiguration): IEd } if (config.workbench.editor) { - assign(options, config.workbench.editor); + Object.assign(options, config.workbench.editor); } return options; diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index e3b3dc65fe1..ec4666e1120 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -19,7 +19,6 @@ import { IEditorGroupsAccessor, IEditorGroupView, getEditorPartOptions, impactsE import { EditorGroupView } from 'vs/workbench/browser/parts/editor/editorGroupView'; import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { IDisposable, dispose, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { assign } from 'vs/base/common/objects'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ISerializedEditorGroup, isSerializedEditorGroup } from 'vs/workbench/common/editor/editorGroup'; import { EditorDropTarget, EditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; @@ -175,7 +174,7 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro const newPartOptions = getEditorPartOptions(this.configurationService.getValue()); this.enforcedPartOptions.forEach(enforcedPartOptions => { - assign(newPartOptions, enforcedPartOptions); // check for overrides + Object.assign(newPartOptions, enforcedPartOptions); // check for overrides }); this._partOptions = newPartOptions; diff --git a/src/vs/workbench/browser/parts/editor/textEditor.ts b/src/vs/workbench/browser/parts/editor/textEditor.ts index 5d9e4a14899..e41206a40d9 100644 --- a/src/vs/workbench/browser/parts/editor/textEditor.ts +++ b/src/vs/workbench/browser/parts/editor/textEditor.ts @@ -5,7 +5,7 @@ import { localize } from 'vs/nls'; import { URI } from 'vs/base/common/uri'; -import { distinct, deepClone, assign } from 'vs/base/common/objects'; +import { distinct, deepClone } from 'vs/base/common/objects'; import { Event } from 'vs/base/common/event'; import { isObject, assertIsDefined, withNullAsUndefined, isFunction } from 'vs/base/common/types'; import { Dimension } from 'vs/base/browser/dom'; @@ -93,7 +93,7 @@ export abstract class BaseTextEditor extends BaseEditor implements ITextEditorPa // Specific editor options always overwrite user configuration const editorConfiguration: IEditorOptions = isObject(configuration.editor) ? deepClone(configuration.editor) : Object.create(null); - assign(editorConfiguration, this.getConfigurationOverrides()); + Object.assign(editorConfiguration, this.getConfigurationOverrides()); // ARIA label editorConfiguration.ariaLabel = this.computeAriaLabel(); diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 03a26e08124..e7fdf3898d5 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -29,7 +29,6 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { MenuBar, IMenuBarOptions } from 'vs/base/browser/ui/menu/menubar'; import { SubmenuAction, Direction } from 'vs/base/browser/ui/menu/menu'; import { attachMenuStyler } from 'vs/platform/theme/common/styler'; -import { assign } from 'vs/base/common/objects'; import { mnemonicMenuLabel, unmnemonicLabel } from 'vs/base/common/labels'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; @@ -231,7 +230,7 @@ export abstract class MenubarControl extends Disposable { }); }); - return assign(ret, { uri: uri }); + return Object.assign(ret, { uri }); } private notifyUserOfCustomMenubarAccessibility(): void { diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index 3e92b29acbb..98011bdf51d 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -5,7 +5,6 @@ import { localize } from 'vs/nls'; import { Event, Emitter } from 'vs/base/common/event'; -import { assign } from 'vs/base/common/objects'; import { withNullAsUndefined, assertIsDefined } from 'vs/base/common/types'; import { URI } from 'vs/base/common/uri'; import { IDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -890,7 +889,7 @@ export class SideBySideEditorInput extends EditorInput { getTelemetryDescriptor(): { [key: string]: unknown } { const descriptor = this.master.getTelemetryDescriptor(); - return assign(descriptor, super.getTelemetryDescriptor()); + return Object.assign(descriptor, super.getTelemetryDescriptor()); } private registerListeners(): void { diff --git a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts index a605e6f64d7..999055c5fb9 100644 --- a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts @@ -33,7 +33,6 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IModelService } from 'vs/editor/common/services/modelService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IDialogService, IFileDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { assign } from 'vs/base/common/objects'; import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; @@ -75,16 +74,15 @@ export class NativeTextFileService extends AbstractTextFileService { } async read(resource: URI, options?: IReadTextFileOptions): Promise { - const [bufferStream, decoder] = await this.doRead(resource, - assign({ - // optimization: since we know that the caller does not - // care about buffering, we indicate this to the reader. - // this reduces all the overhead the buffered reading - // has (open, read, close) if the provider supports - // unbuffered reading. - preferUnbuffered: true - }, options || Object.create(null)) - ); + const [bufferStream, decoder] = await this.doRead(resource, { + ...options, + // optimization: since we know that the caller does not + // care about buffering, we indicate this to the reader. + // this reduces all the overhead the buffered reading + // has (open, read, close) if the provider supports + // unbuffered reading. + preferUnbuffered: true + }); return { ...bufferStream,