mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
a480e52b6e
In this patch we split the serialization routine into two different routines: `getCLIOptionsValues()` for only serializing the key-value pairs and `getCLIOptionsInfo()` for getting additional information such as help text etc. The former is used a lot more frequently than the latter, which is only used for generating `--help` and building `process.allowedNodeEnvironmentFlags`. `getCLIOptionsValues()` also adds `--no-` entries for boolean options so there is no need to special case in the JS land. This patch also refactors the option serialization routines to use v8::Object constructor that takes key-value pairs in one go to avoid calling Map::Set or Object::Set repeatedly which can go up to a patched prototype. PR-URL: https://github.com/nodejs/node/pull/52451 Reviewed-By: Yagiz Nizipli <yagiz.nizipli@sentry.io> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
17 lines
552 B
JavaScript
17 lines
552 B
JavaScript
// Flags: --expose-internals
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const { getOptionValue } = require('internal/options');
|
|
|
|
Map.prototype.get =
|
|
common.mustNotCall('`getOptionValue` must not call user-mutable method');
|
|
assert.strictEqual(getOptionValue('--expose-internals'), true);
|
|
|
|
Object.prototype['--nonexistent-option'] = 'foo';
|
|
assert.strictEqual(getOptionValue('--nonexistent-option'), undefined);
|
|
|
|
// Make the test common global leak test happy.
|
|
delete Object.prototype['--nonexistent-option'];
|