Skip to content

Commit 32f8ed1

Browse files
esm: remove erroneous context.parentURL property passed to load hook
1 parent ceaa299 commit 32f8ed1

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

lib/internal/modules/esm/loader.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,6 @@ class ESMLoader {
282282
} = await this.load(url, {
283283
format,
284284
importAssertions,
285-
parentURL,
286285
});
287286

288287
const translator = translators.get(finalFormat);
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Flags: --expose-internals
2+
import '../common/index.mjs';
3+
import ESMLoader from '../../lib/internal/modules/esm/loader.js';
4+
import assert from 'assert';
5+
6+
(function testHookArgs() {
7+
const esmLoader = new ESMLoader();
8+
9+
const originalSpecifier = 'foo/bar';
10+
const importAssertions = { type: 'json' };
11+
const parentURL = 'entrypoint.js';
12+
const resolvedURL = 'foo/bar.js';
13+
const suggestedFormat = 'test';
14+
15+
const customLoader1 = {
16+
resolve(specifier, context, defaultResolve) {
17+
assert.strictEqual(specifier, originalSpecifier);
18+
assert.strictEqual(Object.keys(context), [
19+
'conditions',
20+
'importAssertions',
21+
'parentURL',
22+
]);
23+
assert.strictEqual(typeof context.conditions, 'array');
24+
assert.strictEqual(typeof context.importAssertions, 'array');
25+
assert.strictEqual(context.parentURL, parentURL);
26+
assert.strictEqual(typeof defaultResolve, 'function');
27+
28+
// This doesn't matter. just to avoid errors
29+
return {
30+
format: suggestedFormat,
31+
url: resolvedURL,
32+
};
33+
},
34+
load(resolvedURL, context, defaultLoad) {
35+
assert.strictEqual(resolvedURL, resolvedURL);
36+
assert(new URL(resolvedURL));
37+
assert.strictEqual(Object.keys(context), [
38+
'format',
39+
'importAssertions',
40+
]);
41+
assert.strictEqual(context.format, suggestedFormat);
42+
assert.strictEqual(typeof context.importAssertions, importAssertions);
43+
assert.strictEqual(typeof defaultLoad, 'function');
44+
45+
// This doesn't matter. just to avoid errors
46+
return {
47+
format: 'module',
48+
source: '',
49+
};
50+
},
51+
};
52+
53+
esmLoader.addCustomLoaders(customLoader1);
54+
55+
esmLoader.resolve(
56+
originalSpecifier,
57+
{
58+
conditions: [],
59+
importAssertions,
60+
parentURL,
61+
},
62+
function mockDefaultResolve() {},
63+
);
64+
esmLoader.load(
65+
resolvedURL,
66+
{
67+
format: suggestedFormat,
68+
importAssertions,
69+
},
70+
function mockDefaultLoad() {},
71+
);
72+
})();

0 commit comments

Comments
 (0)