Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/internal/modules/esm/hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ class Hooks {

const nextResolve = nextHookFactory(chain[chain.length - 1], meta, { validateArgs, validateOutput });

const resolution = await nextResolve(originalSpecifier, context);
const resolution = await nextResolve(originalSpecifier, defineImportAssertionAlias(context));
const { hookErrIdentifier } = meta; // Retrieve the value after all settled

validateOutput(hookErrIdentifier, resolution);
Expand Down
9 changes: 7 additions & 2 deletions test/es-module/test-esm-import-assertion-warning.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ await Promise.all([
`data:text/javascript,export ${encodeURIComponent(function resolve() {
return { shortCircuit: true, url: 'data:application/json,1', importAssertions: { type: 'json' } };
})}`,
// Using importAssertions on the context object of the resolve hook should warn but still work.
`data:text/javascript,export ${encodeURIComponent(function resolve(s, c, n) {
const type = c.importAssertions.type;
return { shortCircuit: true, url: 'data:application/json,1', importAttributes: { type: type ?? 'json' } };
})}`,
// Setting importAssertions on the context object of the load hook should warn but still work.
`data:text/javascript,export ${encodeURIComponent(function load(u, c, n) {
c.importAssertions = { type: 'json' };
Expand All @@ -22,9 +27,9 @@ await Promise.all([
'--eval', `
import assert from 'node:assert';
import { register } from 'node:module';

register(${JSON.stringify(loaderURL)});

assert.deepStrictEqual(
{ ...await import('data:') },
{ default: 1 }
Expand Down
4 changes: 3 additions & 1 deletion test/fixtures/es-module-loaders/hooks-input.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export async function resolve(specifier, context, next) {
'conditions',
'importAttributes',
'parentURL',
'importAssertions',
]);
assert.ok(Array.isArray(context.conditions));
assert.strictEqual(typeof next, 'function');
Expand Down Expand Up @@ -71,9 +72,10 @@ export async function load(url, context, next) {

assert.ok(new URL(url));
// Ensure `context` has all and only the properties it's supposed to
assert.deepStrictEqual(Object.keys(context), [
assert.deepStrictEqual(Reflect.ownKeys(context), [
'format',
'importAttributes',
'importAssertions',
]);
assert.strictEqual(context.format, 'test');
assert.strictEqual(typeof next, 'function');
Expand Down
Loading