Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit 8e8c354

Browse files
committed
Add more entry and package cache guards to env modules.
1 parent b77cf1a commit 8e8c354

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

src/env/has-loader-value.js

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { extname, sep } from "../safe/path.js"
22

33
import CHAR_CODE from "../constant/char-code.js"
44

5+
import Loader from "../loader.js"
56
import Module from "../module.js"
67

78
import esmResolveFilename from "../module/esm/resolve-filename.js"
@@ -48,15 +49,38 @@ function init() {
4849
}
4950

5051
function tryResolveFilename(request, parent, isMain) {
51-
try {
52-
return esmResolveFilename(request, parent, isMain)
53-
} catch {}
52+
const entryState = shared.entry
53+
const entryCache = entryState.cache
54+
55+
const pkgState = Loader.state.package
56+
const pkgCache = pkgState.cache
57+
58+
entryState.cache = new WeakMap
59+
pkgState.cache = new Map
60+
61+
let result
62+
let threw = true
5463

5564
try {
56-
return Module._resolveFilename(request, parent, isMain)
65+
result = esmResolveFilename(request, parent, isMain)
66+
threw = false
5767
} catch {}
5868

59-
return ""
69+
if (threw) {
70+
try {
71+
result = Module._resolveFilename(request, parent, isMain)
72+
threw = false
73+
} catch {}
74+
}
75+
76+
entryState.cache = entryCache
77+
pkgState.cache = pkgCache
78+
79+
if (threw) {
80+
return ""
81+
}
82+
83+
return result
6084
}
6185

6286
return hasLoaderValue

src/env/is-sideloaded.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@ function init() {
1717

1818
const args = argv.slice(2)
1919

20-
let filename
21-
let nodeModulesIndex = -1
20+
if (args.length === 0) {
21+
return false
22+
}
23+
24+
const filename = realpath(argv[1])
25+
const nodeModulesIndex = normalize(filename).lastIndexOf("/node_modules/")
2226

23-
if (args.length) {
24-
filename = realpath(argv[1])
25-
nodeModulesIndex = normalize(filename).lastIndexOf("/node_modules/")
27+
if (nodeModulesIndex === -1 ||
28+
! hasLoaderArg(args)) {
29+
return false
2630
}
2731

2832
const entryState = shared.entry
@@ -36,11 +40,8 @@ function init() {
3640

3741
let result = false
3842

39-
// From a package like Mocha.
40-
if (nodeModulesIndex !== -1 &&
41-
hasLoaderArg(args) &&
42-
(Package.get(cwd()) !== null ||
43-
Package.get(filename.slice(0, nodeModulesIndex + 1)) !== null)) {
43+
if (Package.get(cwd()) !== null ||
44+
Package.get(filename.slice(0, nodeModulesIndex + 1)) !== null) {
4445
result = true
4546
}
4647

0 commit comments

Comments
 (0)