node/test/es-module/test-esm-virtual-json.mjs

32 lines
961 B
JavaScript
Raw Normal View History

import { skipIfWorker } from '../common/index.mjs';
import * as fixtures from '../common/fixtures.mjs';
import { register } from 'node:module';
import assert from 'node:assert';
skipIfWorker();
async function resolve(referrer, context, next) {
const result = await next(referrer, context);
const url = new URL(result.url);
url.searchParams.set('randomSeed', Math.random());
result.url = url.href;
return result;
}
function load(url, context, next) {
if (context.importAttributes.type === 'json') {
return {
shortCircuit: true,
format: 'json',
source: JSON.stringify({ data: Math.random() }),
};
}
return next(url, context);
}
register(`data:text/javascript,export ${encodeURIComponent(resolve)};export ${encodeURIComponent(load)}`);
assert.notDeepStrictEqual(
await import(fixtures.fileURL('empty.json'), { with: { type: 'json' } }),
await import(fixtures.fileURL('empty.json'), { with: { type: 'json' } }),
);