mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
module: bootstrap module loaders in shadow realm
This bootstraps ESM loaders in the ShadowRealm with `ShadowRealm.prototype.importValue` as its entry point and enables loading ESM and CJS modules in the ShadowRealm. The module is imported without a parent URL and resolved with the current process's working directory. PR-URL: https://github.com/nodejs/node/pull/48655 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
committed by
legendecas
parent
6b7197cb2b
commit
fc2862b7f5
@@ -50,6 +50,8 @@
|
||||
|
||||
const {
|
||||
ArrayFrom,
|
||||
ArrayPrototypeFilter,
|
||||
ArrayPrototypeIncludes,
|
||||
ArrayPrototypeMap,
|
||||
ArrayPrototypePush,
|
||||
ArrayPrototypeSlice,
|
||||
@@ -215,8 +217,8 @@ const internalBuiltinIds = builtinIds
|
||||
.filter((id) => StringPrototypeStartsWith(id, 'internal/') && id !== selfId);
|
||||
|
||||
// When --expose-internals is on we'll add the internal builtin ids to these.
|
||||
const canBeRequiredByUsersList = new SafeSet(publicBuiltinIds);
|
||||
const canBeRequiredByUsersWithoutSchemeList =
|
||||
let canBeRequiredByUsersList = new SafeSet(publicBuiltinIds);
|
||||
let canBeRequiredByUsersWithoutSchemeList =
|
||||
new SafeSet(publicBuiltinIds.filter((id) => !schemelessBlockList.has(id)));
|
||||
|
||||
/**
|
||||
@@ -269,6 +271,13 @@ class BuiltinModule {
|
||||
}
|
||||
}
|
||||
|
||||
static setRealmAllowRequireByUsers(ids) {
|
||||
canBeRequiredByUsersList =
|
||||
new SafeSet(ArrayPrototypeFilter(ids, (id) => ArrayPrototypeIncludes(publicBuiltinIds, id)));
|
||||
canBeRequiredByUsersWithoutSchemeList =
|
||||
new SafeSet(ArrayPrototypeFilter(ids, (id) => !schemelessBlockList.has(id)));
|
||||
}
|
||||
|
||||
// To be called during pre-execution when --expose-internals is on.
|
||||
// Enables the user-land module loader to access internal modules.
|
||||
static exposeInternals() {
|
||||
|
||||
Reference in New Issue
Block a user