module: centralize builtin exposure policies · nodejs/node@59a764c · GitHub
Skip to content

Commit 59a764c

Browse files
committed
module: centralize builtin exposure policies
Keep scheme-only and option-gated builtin exposure rules in the JavaScript loader. Leave option registration and code-cache categorization with their native owners. Assisted-by: Codex Signed-off-by: sjungwon03 <sjungwon03@gmail.com>
1 parent 96ee81c commit 59a764c

4 files changed

Lines changed: 228 additions & 99 deletions

File tree

‎lib/internal/bootstrap/realm.js‎

Lines changed: 47 additions & 29 deletions

‎lib/internal/process/pre_execution.js‎

Lines changed: 3 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,7 @@ function prepareExecution(options) {
116116
setupNetworkInspection();
117117
setupNavigator();
118118
setupWarningHandler();
119-
setupBench();
120-
setupFFI();
121-
setupSQLite();
122-
setupStreamIter();
123-
setupDTLS();
124-
setupVfs();
125-
setupQuic();
119+
setupOptionGatedBuiltins();
126120
setupWebStorage();
127121
removeWebWorkersIfDisabled();
128122
setupEventsource();
@@ -461,32 +455,9 @@ function setupNavigator() {
461455
defineReplaceableLazyAttribute(globalThis, 'internal/navigator', ['navigator'], false);
462456
}
463457

464-
function setupBench() {
465-
if (!getOptionValue('--experimental-bench')) {
466-
return;
467-
}
468-
469-
const { BuiltinModule } = require('internal/bootstrap/realm');
470-
BuiltinModule.allowRequireByUsers('bench');
471-
BuiltinModule.allowRequireByUsers('bench/reporters');
472-
}
473-
474-
function setupFFI() {
475-
if (!getOptionValue('--experimental-ffi')) {
476-
return;
477-
}
478-
479-
const { BuiltinModule } = require('internal/bootstrap/realm');
480-
BuiltinModule.allowRequireByUsers('ffi');
481-
}
482-
483-
function setupSQLite() {
484-
if (getOptionValue('--no-experimental-sqlite')) {
485-
return;
486-
}
487-
458+
function setupOptionGatedBuiltins() {
488459
const { BuiltinModule } = require('internal/bootstrap/realm');
489-
BuiltinModule.allowRequireByUsers('sqlite');
460+
BuiltinModule.allowOptionGatedBuiltins(getOptionValue);
490461
}
491462

492463
function initializeConfigFileSupport() {
@@ -495,43 +466,6 @@ function initializeConfigFileSupport() {
495466
}
496467
}
497468

498-
function setupStreamIter() {
499-
if (!getOptionValue('--experimental-stream-iter')) {
500-
return;
501-
}
502-
503-
const { BuiltinModule } = require('internal/bootstrap/realm');
504-
BuiltinModule.allowRequireByUsers('stream/iter');
505-
BuiltinModule.allowRequireByUsers('zlib/iter');
506-
}
507-
508-
function setupDTLS() {
509-
if (!getOptionValue('--experimental-dtls')) {
510-
return;
511-
}
512-
513-
const { BuiltinModule } = require('internal/bootstrap/realm');
514-
BuiltinModule.allowRequireByUsers('dtls');
515-
}
516-
517-
function setupQuic() {
518-
if (!getOptionValue('--experimental-quic')) {
519-
return;
520-
}
521-
522-
const { BuiltinModule } = require('internal/bootstrap/realm');
523-
BuiltinModule.allowRequireByUsers('quic');
524-
}
525-
526-
function setupVfs() {
527-
if (!getOptionValue('--experimental-vfs')) {
528-
return;
529-
}
530-
531-
const { BuiltinModule } = require('internal/bootstrap/realm');
532-
BuiltinModule.allowRequireByUsers('vfs');
533-
}
534-
535469
function setupWebStorage() {
536470
if (getEmbedderOptions().noBrowserGlobals ||
537471
!getOptionValue('--experimental-webstorage')) {

‎lib/internal/test/binding.js‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,10 @@ if (module.isPreloading) {
3030
globalThis.primordials = primordials;
3131
}
3232

33-
module.exports = { internalBinding: filteredInternalBinding, primordials };
33+
module.exports = {
34+
internalBinding: filteredInternalBinding,
35+
primordials,
36+
getBuiltinModulePolicies() {
37+
return require('internal/bootstrap/realm').BuiltinModule.getBuiltinModulePolicies();
38+
},
39+
};
Lines changed: 171 additions & 0 deletions

0 commit comments

Comments
 (0)