Permalink
Browse files

lib: switch to object spread where possible

Use the object spread notation instead of using Object.assign.
It is not only easier to read it is also faster as of V8 6.8.

PR-URL: #25104
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Yuta Hiroto <hello@hiroppy.me>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information...
BridgeAR authored and MylesBorins committed Dec 18, 2018
1 parent 54e42f0 commit 2fc43fbe43a40069ecdf0071edfb057a510890c4
@@ -1,4 +1,5 @@
rules:
prefer-object-spread: error
no-restricted-syntax:
# Config copied from .eslintrc.js
- error
@@ -289,7 +289,7 @@ function initRead(tls, wrapped) {
*/

function TLSSocket(socket, opts) {
const tlsOptions = Object.assign({}, opts);
const tlsOptions = { ...opts };

if (tlsOptions.ALPNProtocols)
tls.convertALPNProtocols(tlsOptions.ALPNProtocols, tlsOptions);
@@ -136,7 +136,7 @@ function normalizeExecArgs(command, options, callback) {
}

// Make a shallow copy so we don't clobber the user's options object.
options = Object.assign({}, options);
options = { ...options };
options.shell = typeof options.shell === 'string' ? options.shell : true;

return {
@@ -470,7 +470,7 @@ function normalizeSpawnArguments(file, args, options) {
}

// Make a shallow copy so we don't clobber the user's options object.
options = Object.assign({}, options);
options = { ...options };

if (options.shell) {
const command = [file].concat(args).join(' ');
@@ -225,9 +225,11 @@ Console.prototype.warn = function warn(...args) {
Console.prototype.error = Console.prototype.warn;

Console.prototype.dir = function dir(object, options) {
options = Object.assign({
customInspect: false
}, this[kGetInspectOptions](this._stdout), options);
options = {
customInspect: false,
...this[kGetInspectOptions](this._stdout),
...options
};
write(this._ignoreErrors,
this._stdout,
util.inspect(object, options),
@@ -636,7 +636,7 @@ function setupChannel(target, channel) {
throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);
}

options = Object.assign({ swallowErrors: false }, options);
options = { swallowErrors: false, ...options };

if (this.connected) {
return this._send(message, handle, options, callback);
@@ -271,10 +271,11 @@ Console.prototype.warn = function warn(...args) {
Console.prototype.error = Console.prototype.warn;

Console.prototype.dir = function dir(object, options) {
options = Object.assign({
customInspect: false
}, this[kGetInspectOptions](this._stdout), options);
this[kWriteToConsole](kUseStdout, util.inspect(object, options));
this[kWriteToConsole](kUseStdout, util.inspect(object, {
customInspect: false,
...this[kGetInspectOptions](this._stdout),
...options
}));
};

Console.prototype.time = function time(label = 'default') {
@@ -512,7 +512,7 @@ class Http2ServerResponse extends Stream {
}

getHeaders() {
return Object.assign({}, this[kHeaders]);
return { ...this[kHeaders] };
}

hasHeader(name) {
@@ -790,7 +790,7 @@ function pingCallback(cb) {
// 6. enablePush must be a boolean
// All settings are optional and may be left undefined
function validateSettings(settings) {
settings = Object.assign({}, settings);
settings = { ...settings };
assertWithinRange('headerTableSize',
settings.headerTableSize,
0, kMaxInt);
@@ -1443,7 +1443,7 @@ class ClientHttp2Session extends Http2Session {
assertIsObject(options, 'options');

headers = Object.assign(Object.create(null), headers);
options = Object.assign({}, options);
options = { ...options };

if (headers[HTTP2_HEADER_METHOD] === undefined)
headers[HTTP2_HEADER_METHOD] = HTTP2_METHOD_GET;
@@ -1848,7 +1848,7 @@ class Http2Stream extends Duplex {
throw new ERR_HTTP2_INVALID_STREAM();

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };
validatePriorityOptions(options);

const priorityFn = submitPriority.bind(this, options);
@@ -2257,7 +2257,7 @@ class ServerHttp2Stream extends Http2Stream {
throw new ERR_INVALID_CALLBACK();

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };
options.endStream = !!options.endStream;

assertIsObject(headers, 'headers');
@@ -2322,7 +2322,7 @@ class ServerHttp2Stream extends Http2Stream {
const state = this[kState];

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };

const session = this[kSession];
debug(`Http2Stream ${this[kID]} [Http2Session ` +
@@ -2378,7 +2378,7 @@ class ServerHttp2Stream extends Http2Stream {
const session = this[kSession];

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };

if (options.offset !== undefined && typeof options.offset !== 'number')
throw new ERR_INVALID_OPT_VALUE('offset', options.offset);
@@ -2441,7 +2441,7 @@ class ServerHttp2Stream extends Http2Stream {
throw new ERR_HTTP2_HEADERS_SENT();

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };

if (options.offset !== undefined && typeof options.offset !== 'number')
throw new ERR_INVALID_OPT_VALUE('offset', options.offset);
@@ -2667,10 +2667,10 @@ function connectionListener(socket) {

function initializeOptions(options) {
assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };
options.allowHalfOpen = true;
assertIsObject(options.settings, 'options.settings');
options.settings = Object.assign({}, options.settings);
options.settings = { ...options.settings };

// Used only with allowHTTP1
options.Http1IncomingMessage = options.Http1IncomingMessage ||
@@ -2775,7 +2775,7 @@ function connect(authority, options, listener) {
}

assertIsObject(options, 'options');
options = Object.assign({}, options);
options = { ...options };

if (typeof authority === 'string')
authority = new URL(authority);
@@ -130,8 +130,7 @@ function hasOwnProperty(obj, prop) {
// and it can be overridden by custom print functions, such as `probe` or
// `eyes.js`.
const writer = exports.writer = (obj) => util.inspect(obj, writer.options);
writer.options =
Object.assign({}, util.inspect.defaultOptions, { showProxy: true });
writer.options = { ...util.inspect.defaultOptions, showProxy: true };

exports._builtinLibs = builtinLibs;

@@ -510,7 +509,7 @@ function REPLServer(prompt,
if (self.useColors && self.writer === writer) {
// Turn on ANSI coloring.
self.writer = (obj) => util.inspect(obj, self.writer.options);
self.writer.options = Object.assign({}, writer.options, { colors: true });
self.writer.options = { ...writer.options, colors: true };
}

function filterInternalStackFrames(structuredStack) {
@@ -264,9 +264,13 @@ class SecurePair extends EventEmitter {
this.credentials = secureContext;

this.encrypted = socket1;
this.cleartext = new exports.TLSSocket(socket2, Object.assign({
secureContext, isServer, requestCert, rejectUnauthorized
}, options));
this.cleartext = new exports.TLSSocket(socket2, {
secureContext,
isServer,
requestCert,
rejectUnauthorized,
...options
});
this.cleartext.once('secure', () => this.emit('secure'));
}

@@ -123,11 +123,12 @@ function formatWithOptions(inspectOptions, f) {
break;
case 111: // 'o'
{
const opts = Object.assign({}, inspectOptions, {
const opts = {
showHidden: true,
showProxy: true,
depth: 4
});
depth: 4,
...inspectOptions
};
tempStr = inspect(arguments[a++], opts);
break;
}
@@ -290,9 +290,7 @@ function runInContext(code, contextifiedSandbox, options) {
[kParsingContext]: contextifiedSandbox
};
} else {
options = Object.assign({}, options, {
[kParsingContext]: contextifiedSandbox
});
options = { ...options, [kParsingContext]: contextifiedSandbox };
}
return createScript(code, options)
.runInContext(contextifiedSandbox, options);
@@ -303,9 +301,7 @@ function runInNewContext(code, sandbox, options) {
options = { filename: options };
}
sandbox = createContext(sandbox, getContextOptions(options));
options = Object.assign({}, options, {
[kParsingContext]: sandbox
});
options = { ...options, [kParsingContext]: sandbox };
return createScript(code, options).runInNewContext(sandbox, options);
}

0 comments on commit 2fc43fb

Please sign in to comment.