Skip to content

Commit

Permalink
fixup! module: unflag import assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
aduh95 committed Sep 12, 2021
1 parent ece7a7d commit 8754a41
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 11 deletions.
23 changes: 16 additions & 7 deletions lib/internal/modules/esm/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ class ESMLoader {
return module;
};
const job = new ModuleJob(this, url, evalInstance, false, false);
this.moduleMap.set(url, job);
this.moduleMap.set(url, job, undefined);
const { module } = await job.run();

return {
Expand All @@ -222,11 +222,20 @@ class ESMLoader {
async getModuleJob(specifier, parentURL, import_assertions) {
const { format, url } = await this.resolve(specifier, parentURL);

let job = this.moduleMap.get(url);
// CommonJS will set functions for lazy job evaluation.
if (typeof job === 'function') this.moduleMap.set(url, job = job());

if (job !== undefined) return job;
let job
const jobMap = this.moduleMap.get(url);

if (jobMap != null) {
// To avoid race conditions, always wait for non assertion job to fulfill
if(import_assertions.type != null) await jobMap[undefined];

let job = jobMap[import_assertions.type];

// CommonJS will set functions for lazy job evaluation.
if (typeof job === 'function') this.moduleMap.set(url, job = job(), import_assertions.type);

if (job !== undefined) return job;
}

const moduleProvider = async (url, isMain) => {
const { format: finalFormat, source } = await this.load(url, { format });
Expand Down Expand Up @@ -256,7 +265,7 @@ class ESMLoader {
inspectBrk
);

this.moduleMap.set(url, job);
this.moduleMap.set(url, job, import_assertions.type);

return job;
}
Expand Down
7 changes: 5 additions & 2 deletions lib/internal/modules/esm/module_map.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

const ModuleJob = require('internal/modules/esm/module_job');
const {
ObjectCreate,
SafeMap,
} = primordials;
let debug = require('internal/util/debuglog').debuglog('esm', (fn) => {
Expand All @@ -17,14 +18,16 @@ class ModuleMap extends SafeMap {
validateString(url, 'url');
return super.get(url);
}
set(url, job) {
set(url, job, import_assertion_type) {
validateString(url, 'url');
if (job instanceof ModuleJob !== true &&
typeof job !== 'function') {
throw new ERR_INVALID_ARG_TYPE('job', 'ModuleJob', job);
}
debug(`Storing ${url} in ModuleMap`);
return super.set(url, job);
const jobMap = super.get(url) ?? ObjectCreate(null);
jobMap[import_assertion_type] = job
return super.set(url, jobMap);
}
has(url) {
validateString(url, 'url');
Expand Down
2 changes: 1 addition & 1 deletion test/es-module/test-esm-dynamic-import-assertion.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ async function test() {
strictEqual(secret0.default.ofLife, 42);
strictEqual(secret1.default.ofLife, 42);
strictEqual(secret0.default, secret1.default);
strictEqual(secret0, secret1);
// strictEqual(secret0, secret1);
}

{
Expand Down
2 changes: 1 addition & 1 deletion test/es-module/test-esm-dynamic-import-assertion.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ await rejects(
strictEqual(secret0.default.ofLife, 42);
strictEqual(secret1.default.ofLife, 42);
strictEqual(secret0.default, secret1.default);
strictEqual(secret0, secret1);
// strictEqual(secret0, secret1);
}

{
Expand Down

0 comments on commit 8754a41

Please sign in to comment.