process: handle --expose-internals during pre-execution
Instead of relying on the value of the CLI option when executing bootstrap/loaders.js. PR-URL: https://github.com/nodejs/node/pull/26759 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
8209caec39
commit
83972ff6ac
@ -41,8 +41,7 @@
|
||||
|
||||
// This file is compiled as if it's wrapped in a function with arguments
|
||||
// passed by node::RunBootstrapping()
|
||||
/* global process, getLinkedBinding, getInternalBinding */
|
||||
/* global exposeInternals, primordials */
|
||||
/* global process, getLinkedBinding, getInternalBinding, primordials */
|
||||
|
||||
const {
|
||||
Reflect,
|
||||
@ -157,16 +156,20 @@ function NativeModule(id) {
|
||||
this.exportKeys = undefined;
|
||||
this.loaded = false;
|
||||
this.loading = false;
|
||||
if (id === loaderId) {
|
||||
// Do not expose this to user land even with --expose-internals.
|
||||
this.canBeRequiredByUsers = false;
|
||||
} else if (id.startsWith('internal/')) {
|
||||
this.canBeRequiredByUsers = exposeInternals;
|
||||
} else {
|
||||
this.canBeRequiredByUsers = true;
|
||||
}
|
||||
this.canBeRequiredByUsers = !id.startsWith('internal/');
|
||||
}
|
||||
|
||||
// To be called during pre-execution when --expose-internals is on.
|
||||
// Enables the user-land module loader to access internal modules.
|
||||
NativeModule.exposeInternals = function() {
|
||||
for (const [id, mod] of NativeModule.map) {
|
||||
// Do not expose this to user land even with --expose-internals.
|
||||
if (id !== loaderId) {
|
||||
mod.canBeRequiredByUsers = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const {
|
||||
moduleIds,
|
||||
compileFunction
|
||||
|
@ -133,6 +133,9 @@ function initializeReport() {
|
||||
|
||||
function setupDebugEnv() {
|
||||
require('internal/util/debuglog').initializeDebugEnv(process.env.NODE_DEBUG);
|
||||
if (getOptionValue('--expose-internals')) {
|
||||
require('internal/bootstrap/loaders').NativeModule.exposeInternals();
|
||||
}
|
||||
}
|
||||
|
||||
function setupSignalHandlers() {
|
||||
|
@ -296,8 +296,6 @@ MaybeLocal<Value> RunBootstrapping(Environment* env) {
|
||||
env->process_string(),
|
||||
FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"),
|
||||
FIXED_ONE_BYTE_STRING(isolate, "getInternalBinding"),
|
||||
// --expose-internals
|
||||
FIXED_ONE_BYTE_STRING(isolate, "exposeInternals"),
|
||||
env->primordials_string()};
|
||||
std::vector<Local<Value>> loaders_args = {
|
||||
process,
|
||||
@ -307,7 +305,6 @@ MaybeLocal<Value> RunBootstrapping(Environment* env) {
|
||||
env->NewFunctionTemplate(binding::GetInternalBinding)
|
||||
->GetFunction(context)
|
||||
.ToLocalChecked(),
|
||||
Boolean::New(isolate, env->options()->expose_internals),
|
||||
env->primordials()};
|
||||
|
||||
// Bootstrap internal loaders
|
||||
|
Loading…
x
Reference in New Issue
Block a user