mirror of
https://github.com/nodejs/node.git
synced 2024-11-28 14:33:11 +01:00
d1ef6aa2db
The old import assertions proposal has been
renamed to "import attributes" with the follwing major changes:
1. The keyword is now `with` instead of `assert`.
2. Unknown assertions cause an error rather than being ignored,
This commit updates the documentation to encourage folks to use the new
syntax, and add aliases for module customization hooks.
PR-URL: https://github.com/nodejs/node/pull/50140
Fixes: https://github.com/nodejs/node/issues/50134
Refs: 159c82c5e6
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
25 lines
921 B
JavaScript
25 lines
921 B
JavaScript
const DATA_URL_PATTERN = /^data:application\/json(?:[^,]*?)(;base64)?,([\s\S]*)$/;
|
|
const JSON_URL_PATTERN = /^[^?]+\.json(\?[^#]*)?(#.*)?$/;
|
|
|
|
export async function resolve(specifier, context, next) {
|
|
const noAttributesSpecified = context.importAttributes.type == null;
|
|
|
|
// Mutation from resolve hook should be discarded.
|
|
context.importAttributes.type = 'whatever';
|
|
|
|
// This fixture assumes that no other resolve hooks in the chain will error on invalid import attributes
|
|
// (as defaultResolve doesn't).
|
|
const result = await next(specifier, context);
|
|
|
|
if (noAttributesSpecified &&
|
|
(DATA_URL_PATTERN.test(result.url) || JSON_URL_PATTERN.test(result.url))) {
|
|
// Clean new import attributes object to ensure that this test isn't passing due to mutation.
|
|
result.importAttributes = {
|
|
...(result.importAttributes ?? context.importAttributes),
|
|
type: 'json',
|
|
};
|
|
}
|
|
|
|
return result;
|
|
}
|