diff --git a/lib/internal/options.js b/lib/internal/options.js index 10c6aa2d9a0978..6d4fb68e52854d 100644 --- a/lib/internal/options.js +++ b/lib/internal/options.js @@ -1,16 +1,16 @@ 'use strict'; +const { + MapPrototypeGet, +} = primordials; + const { getOptions, shouldNotRegisterESMLoader } = internalBinding('options'); const { options, aliases } = getOptions(); let warnOnAllowUnauthorized = true; function getOptionValue(option) { - const result = options.get(option); - if (!result) { - return undefined; - } - return result.value; + return MapPrototypeGet(options, option)?.value; } function getAllowUnauthorized() { diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index b16705f9fb95b0..c7449bead6de57 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -6,11 +6,14 @@ const { ArrayIsArray, + ArrayPrototypeEvery, ArrayPrototypeMap, ArrayPrototypePush, ArrayPrototypeSplice, BigUint64Array, Float64Array, + MapPrototypeForEach, + MapPrototypeGet, NumberMAX_SAFE_INTEGER, ObjectDefineProperty, ObjectFreeze, @@ -257,27 +260,25 @@ function buildAllowedFlags() { const { options, aliases } = require('internal/options'); const allowedNodeEnvironmentFlags = []; - for (const [name, info] of options) { + MapPrototypeForEach(options, (info, name) => { if (info.envVarSettings === kAllowedInEnvironment) { ArrayPrototypePush(allowedNodeEnvironmentFlags, name); } - } - - for (const [ from, expansion ] of aliases) { - let isAccepted = true; - for (const to of expansion) { - if (!StringPrototypeStartsWith(to, '-') || to === '--') continue; - const recursiveExpansion = aliases.get(to); - if (recursiveExpansion) { - if (recursiveExpansion[0] === to) - ArrayPrototypeSplice(recursiveExpansion, 0, 1); - ArrayPrototypePush(expansion, ...recursiveExpansion); - continue; - } - isAccepted = options.get(to).envVarSettings === kAllowedInEnvironment; - if (!isAccepted) break; + }); + + function isAccepted(to) { + if (!StringPrototypeStartsWith(to, '-') || to === '--') return true; + const recursiveExpansion = MapPrototypeGet(aliases, to); + if (recursiveExpansion) { + if (recursiveExpansion[0] === to) + ArrayPrototypeSplice(recursiveExpansion, 0, 1); + return ArrayPrototypeEvery(recursiveExpansion, isAccepted); } - if (isAccepted) { + return MapPrototypeGet(options, to).envVarSettings === + kAllowedInEnvironment; + } + MapPrototypeForEach(aliases, (expansion, from) => { + if (ArrayPrototypeEvery(expansion, isAccepted)) { let canonical = from; if (StringPrototypeEndsWith(canonical, '=')) canonical = StringPrototypeSlice(canonical, 0, canonical.length - 1); @@ -285,7 +286,7 @@ function buildAllowedFlags() { canonical = StringPrototypeSlice(canonical, 0, canonical.length - 4); ArrayPrototypePush(allowedNodeEnvironmentFlags, canonical); } - } + }); const trimLeadingDashes = (flag) => StringPrototypeReplace(flag, leadingDashesRegex, '');