Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions lib/internal/bootstrap_node.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -510,11 +510,9 @@
returnNativeModule._source.hasOwnProperty(id);
};

constEXPOSE_INTERNALS=process.execArgv.some(function(arg){
returnarg.match(/^--expose[-_]internals$/);
});
constconfig=process.binding('config');

if(EXPOSE_INTERNALS){
if(config.exposeInternals){
NativeModule.nonInternalExists=NativeModule.exists;

NativeModule.isInternal=function(id){
Expand Down
11 changes: 10 additions & 1 deletion src/node.cc
Original file line numberDiff line numberDiff line change
Expand Up@@ -214,6 +214,12 @@ bool config_preserve_symlinks = false;
// Set in node.cc by ParseArgs when --redirect-warnings= is used.
std::string config_warning_file; // NOLINT(runtime/string)

// Set in node.cc by ParseArgs when --expose-internals or --expose_internals is
// used.
// Used in node_config.cc to set a constant on process.binding('config')
// that is used by lib/internal/bootstrap_node.js
bool config_expose_internals = false;

bool v8_initialized = false;

// process-relative uptime base, initialized at start-up
Expand DownExpand Up@@ -3277,6 +3283,7 @@ void SetupProcessObject(Environment* env,
READONLY_PROPERTY(process, "_forceRepl", True(env->isolate()));
}

// -r, --require
if (!preload_modules.empty()){
Local<Array> array = Array::New(env->isolate());
for (unsigned int i = 0; i < preload_modules.size(); ++i){
Expand All@@ -3296,10 +3303,12 @@ void SetupProcessObject(Environment* env,
READONLY_PROPERTY(process, "noDeprecation", True(env->isolate()));
}

// --no-warnings
if (no_process_warnings){
READONLY_PROPERTY(process, "noProcessWarnings", True(env->isolate()));
}

// --trace-warnings
if (trace_warnings){
READONLY_PROPERTY(process, "traceProcessWarnings", True(env->isolate()));
}
Expand DownExpand Up@@ -3784,7 +3793,7 @@ static void ParseArgs(int* argc,
#endif
} else if (strcmp(arg, "--expose-internals") == 0 ||
strcmp(arg, "--expose_internals") == 0){
// consumed in js
config_expose_internals = true;
} else if (strcmp(arg, "--") == 0){
index += 1;
break;
Expand Down
3 changes: 3 additions & 0 deletions src/node_config.cc
Original file line numberDiff line numberDiff line change
Expand Up@@ -58,6 +58,9 @@ void InitConfig(Local<Object> target,
.ToLocalChecked();
target->DefineOwnProperty(env->context(), name, value).FromJust();
}

if (config_expose_internals)
READONLY_BOOLEAN_PROPERTY("exposeInternals");
} // InitConfig

} // namespace node
Expand Down
6 changes: 6 additions & 0 deletions src/node_internals.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -65,6 +65,12 @@ extern std::string openssl_config;
// that is used by lib/module.js
extern bool config_preserve_symlinks;

// Set in node.cc by ParseArgs when --expose-internals or --expose_internals is
// used.
// Used in node_config.cc to set a constant on process.binding('config')
// that is used by lib/internal/bootstrap_node.js
extern bool config_expose_internals;

// Set in node.cc by ParseArgs when --redirect-warnings= is used.
// Used to redirect warning output to a file rather than sending
// it to stderr.
Expand Down
4 changes: 4 additions & 0 deletions test/parallel/test-internal-modules-expose.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,9 @@

require('../common');
constassert=require('assert');
constconfig=process.binding('config');

console.log(config,process.argv);

assert.strictEqual(typeofrequire('internal/freelist').FreeList,'function');
assert.strictEqual(config.exposeInternals,true);