mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
lib: make internal/options lazy
This way, internal modules can still require the module and cache the function getOptionValue() early (therefore these code can be included in the snapshots), but the options map won't be serialized from C++ land until the option values are actually queried. PR-URL: https://github.com/nodejs/node/pull/38993 Refs: https://github.com/nodejs/node/issues/35711 Refs: https://github.com/nodejs/node/pull/38905 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Zijian Liu <lxxyxzj@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
f8898eae67
commit
97eaa2aac9
@ -1,12 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
const { getOptions, shouldNotRegisterESMLoader } = internalBinding('options');
|
||||
const { options, aliases } = getOptions();
|
||||
|
||||
let warnOnAllowUnauthorized = true;
|
||||
|
||||
let optionsMap;
|
||||
let aliasesMap;
|
||||
|
||||
// getOptions() would serialize the option values from C++ land.
|
||||
// It would error if the values are queried before bootstrap is
|
||||
// complete so that we don't accidentally include runtime-dependent
|
||||
// states into a runtime-independent snapshot.
|
||||
function getOptionsFromBinding() {
|
||||
if (!optionsMap) {
|
||||
({ options: optionsMap } = getOptions());
|
||||
}
|
||||
return optionsMap;
|
||||
}
|
||||
|
||||
function getAliasesFromBinding() {
|
||||
if (!aliasesMap) {
|
||||
({ aliases: aliasesMap } = getOptions());
|
||||
}
|
||||
return aliasesMap;
|
||||
}
|
||||
|
||||
function getOptionValue(option) {
|
||||
return options.get(option)?.value;
|
||||
return getOptionsFromBinding().get(option)?.value;
|
||||
}
|
||||
|
||||
function getAllowUnauthorized() {
|
||||
@ -24,8 +44,12 @@ function getAllowUnauthorized() {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
options,
|
||||
aliases,
|
||||
get options() {
|
||||
return getOptionsFromBinding();
|
||||
},
|
||||
get aliases() {
|
||||
return getAliasesFromBinding();
|
||||
},
|
||||
getOptionValue,
|
||||
getAllowUnauthorized,
|
||||
shouldNotRegisterESMLoader
|
||||
|
Loading…
Reference in New Issue
Block a user