Skip to content

Commit c19385c

Browse files
RaisinTentargos
authored andcommitted
module: refactor to use normalizeRequirableId in the CJS module loader
`BuiltinModule.normalizeRequirableId()` was introduced in #47779 to fix a bug in the require function of SEAs and Snapshots, so that built-in modules with the `node:` scheme could be required correctly. This change makes more use of this API instead of `BuiltinModule.canBeRequiredByUsers()` and `BuiltinModule.canBeRequiredWithoutScheme()` to reduce chances of such bugs. Signed-off-by: Darshan Sen <raisinten@gmail.com> PR-URL: #47896 Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
1 parent 00668fc commit c19385c

File tree

2 files changed

+9
-22
lines changed

2 files changed

+9
-22
lines changed

lib/internal/bootstrap/realm.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -287,17 +287,16 @@ class BuiltinModule {
287287
}
288288

289289
static normalizeRequirableId(id) {
290-
let normalizedId = id;
291290
if (StringPrototypeStartsWith(id, 'node:')) {
292-
normalizedId = StringPrototypeSlice(id, 5);
293-
}
294-
295-
if (!BuiltinModule.canBeRequiredByUsers(normalizedId) ||
296-
(id === normalizedId && !BuiltinModule.canBeRequiredWithoutScheme(normalizedId))) {
297-
return undefined;
291+
const normalizedId = StringPrototypeSlice(id, 5);
292+
if (BuiltinModule.canBeRequiredByUsers(normalizedId)) {
293+
return normalizedId;
294+
}
295+
} else if (BuiltinModule.canBeRequiredWithoutScheme(id)) {
296+
return id;
298297
}
299298

300-
return normalizedId;
299+
return undefined;
301300
}
302301

303302
static isBuiltin(id) {

lib/internal/modules/cjs/loader.js

+2-14
Original file line numberDiff line numberDiff line change
@@ -792,12 +792,7 @@ if (isWindows) {
792792
}
793793

794794
Module._resolveLookupPaths = function(request, parent) {
795-
if ((
796-
StringPrototypeStartsWith(request, 'node:') &&
797-
BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
798-
) || (
799-
BuiltinModule.canBeRequiredWithoutScheme(request)
800-
)) {
795+
if (BuiltinModule.normalizeRequirableId(request)) {
801796
debug('looking for %j in []', request);
802797
return null;
803798
}
@@ -989,14 +984,7 @@ Module._load = function(request, parent, isMain) {
989984
};
990985

991986
Module._resolveFilename = function(request, parent, isMain, options) {
992-
if (
993-
(
994-
StringPrototypeStartsWith(request, 'node:') &&
995-
BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
996-
) || (
997-
BuiltinModule.canBeRequiredWithoutScheme(request)
998-
)
999-
) {
987+
if (BuiltinModule.normalizeRequirableId(request)) {
1000988
return request;
1001989
}
1002990

0 commit comments

Comments
 (0)