node/test/fixtures/es-module-loaders/assertionless-json-import.mjs

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;
}