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

Commit dc6ef03

Browse files
sjungwon03aduh95
authored andcommitted
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> PR-URL: #66292 Refs: #65418 Refs: #65964 Refs: #65920 Refs: #65840 Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com>
1 parent 430262e commit dc6ef03

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
setupWebsocket();
@@ -470,32 +464,9 @@ function setupNavigator() {
470464
defineReplaceableLazyAttribute(globalThis, 'internal/navigator', ['navigator'], false);
471465
}
472466

473-
function setupBench() {
474-
if (!getOptionValue('--experimental-bench')) {
475-
return;
476-
}
477-
478-
const { BuiltinModule } = require('internal/bootstrap/realm');
479-
BuiltinModule.allowRequireByUsers('bench');
480-
BuiltinModule.allowRequireByUsers('bench/reporters');
481-
}
482-
483-
function setupFFI() {
484-
if (!getOptionValue('--experimental-ffi')) {
485-
return;
486-
}
487-
488-
const { BuiltinModule } = require('internal/bootstrap/realm');
489-
BuiltinModule.allowRequireByUsers('ffi');
490-
}
491-
492-
function setupSQLite() {
493-
if (getOptionValue('--no-experimental-sqlite')) {
494-
return;
495-
}
496-
467+
function setupOptionGatedBuiltins() {
497468
const { BuiltinModule } = require('internal/bootstrap/realm');
498-
BuiltinModule.allowRequireByUsers('sqlite');
469+
BuiltinModule.allowOptionGatedBuiltins(getOptionValue);
499470
}
500471

501472
function initializeConfigFileSupport() {
@@ -504,43 +475,6 @@ function initializeConfigFileSupport() {
504475
}
505476
}
506477

507-
function setupStreamIter() {
508-
if (!getOptionValue('--experimental-stream-iter')) {
509-
return;
510-
}
511-
512-
const { BuiltinModule } = require('internal/bootstrap/realm');
513-
BuiltinModule.allowRequireByUsers('stream/iter');
514-
BuiltinModule.allowRequireByUsers('zlib/iter');
515-
}
516-
517-
function setupDTLS() {
518-
if (!getOptionValue('--experimental-dtls')) {
519-
return;
520-
}
521-
522-
const { BuiltinModule } = require('internal/bootstrap/realm');
523-
BuiltinModule.allowRequireByUsers('dtls');
524-
}
525-
526-
function setupQuic() {
527-
if (!getOptionValue('--experimental-quic')) {
528-
return;
529-
}
530-
531-
const { BuiltinModule } = require('internal/bootstrap/realm');
532-
BuiltinModule.allowRequireByUsers('quic');
533-
}
534-
535-
function setupVfs() {
536-
if (!getOptionValue('--experimental-vfs')) {
537-
return;
538-
}
539-
540-
const { BuiltinModule } = require('internal/bootstrap/realm');
541-
BuiltinModule.allowRequireByUsers('vfs');
542-
}
543-
544478
function setupWebStorage() {
545479
if (getEmbedderOptions().noBrowserGlobals ||
546480
!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)