From 29bd40e979232036347c84ad3a8289abf00552fd Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Wed, 1 Dec 2021 18:42:59 +0100 Subject: [PATCH 01/10] fix: pass package type to loader runner --- lib/NormalModuleFactory.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index f02e5712849..36891492aad 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -994,7 +994,7 @@ If changing the source code is not an option there is also a resolve options cal context, item.loader, resolveContext, - (err, result) => { + (err, result, resolveRequest) => { if ( err && /^[^/]*$/.test(item.loader) && @@ -1022,7 +1022,8 @@ If changing the source code is not an option there is also a resolve options cal const parsedResult = this._parseResourceWithoutFragment(result); const resolved = { - loader: parsedResult.path, + loader: parsedResult.loader, + type: resolveRequest.descriptionFileData.type, options: item.options === undefined ? parsedResult.query From 0145c43df83c4fef3472f69171778c4eadcf6151 Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Wed, 19 Jan 2022 09:32:23 +0100 Subject: [PATCH 02/10] fix: handle missing `descriptionFileData` --- lib/NormalModuleFactory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index 36891492aad..ca64fd68b05 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -1023,7 +1023,7 @@ If changing the source code is not an option there is also a resolve options cal const parsedResult = this._parseResourceWithoutFragment(result); const resolved = { loader: parsedResult.loader, - type: resolveRequest.descriptionFileData.type, + type: resolveRequest.descriptionFileData?.type, options: item.options === undefined ? parsedResult.query From 6c03c5a0eb4d2404fd659de30ce28a15692121b6 Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Wed, 19 Jan 2022 09:57:41 +0100 Subject: [PATCH 03/10] fix: don't use optional chaining --- lib/NormalModuleFactory.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index ca64fd68b05..d8a23a47338 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -1023,7 +1023,10 @@ If changing the source code is not an option there is also a resolve options cal const parsedResult = this._parseResourceWithoutFragment(result); const resolved = { loader: parsedResult.loader, - type: resolveRequest.descriptionFileData?.type, + type: + resolveRequest.descriptionFileData === undefined + ? undefined + : resolveRequest.descriptionFileData.type, options: item.options === undefined ? parsedResult.query From a8d7412104c4e4568ec80d60fb6637e020565d8f Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Fri, 21 Jan 2022 07:56:16 +0100 Subject: [PATCH 04/10] fix: pass type to loader for .mjs / .cjs --- lib/NormalModuleFactory.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index d8a23a47338..06da3d81935 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -1021,12 +1021,18 @@ If changing the source code is not an option there is also a resolve options cal if (err) return callback(err); const parsedResult = this._parseResourceWithoutFragment(result); + + const type = /\.mjs$/i.test(parsedResult.loader) + ? "module" + : /\.cjs$/i.test(parsedResult.loader) + ? "commonjs" + : resolveRequest.descriptionFileData === undefined + ? undefined + : resolveRequest.descriptionFileData.type; + const resolved = { loader: parsedResult.loader, - type: - resolveRequest.descriptionFileData === undefined - ? undefined - : resolveRequest.descriptionFileData.type, + type, options: item.options === undefined ? parsedResult.query From 8d20f388cb5a4129ed7dbe02e7a62ea55ef66aa7 Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Fri, 21 Jan 2022 07:57:32 +0100 Subject: [PATCH 05/10] test: add test case --- declarations/LoaderContext.d.ts | 1 + test/cases/loaders/package-type/index.js | 17 +++++++++++++++++ test/cases/loaders/package-type/loader.cjs | 4 ++++ test/cases/loaders/package-type/loader.js | 4 ++++ test/cases/loaders/package-type/loader.mjs | 4 ++++ .../package-type/node_modules/cjs/loader.cjs | 4 ++++ .../package-type/node_modules/cjs/loader.js | 4 ++++ .../package-type/node_modules/cjs/loader.mjs | 4 ++++ .../package-type/node_modules/cjs/package.json | 4 ++++ .../package-type/node_modules/esm/loader.cjs | 4 ++++ .../package-type/node_modules/esm/loader.js | 4 ++++ .../package-type/node_modules/esm/loader.mjs | 4 ++++ .../package-type/node_modules/esm/package.json | 4 ++++ types.d.ts | 1 + 14 files changed, 63 insertions(+) create mode 100644 test/cases/loaders/package-type/index.js create mode 100644 test/cases/loaders/package-type/loader.cjs create mode 100644 test/cases/loaders/package-type/loader.js create mode 100644 test/cases/loaders/package-type/loader.mjs create mode 100644 test/cases/loaders/package-type/node_modules/cjs/loader.cjs create mode 100644 test/cases/loaders/package-type/node_modules/cjs/loader.js create mode 100644 test/cases/loaders/package-type/node_modules/cjs/loader.mjs create mode 100644 test/cases/loaders/package-type/node_modules/cjs/package.json create mode 100644 test/cases/loaders/package-type/node_modules/esm/loader.cjs create mode 100644 test/cases/loaders/package-type/node_modules/esm/loader.js create mode 100644 test/cases/loaders/package-type/node_modules/esm/loader.mjs create mode 100644 test/cases/loaders/package-type/node_modules/esm/package.json diff --git a/declarations/LoaderContext.d.ts b/declarations/LoaderContext.d.ts index f93a0890d2d..23baff0f885 100644 --- a/declarations/LoaderContext.d.ts +++ b/declarations/LoaderContext.d.ts @@ -187,6 +187,7 @@ export interface LoaderRunnerLoaderContext { data: object | undefined; pitchExecuted: boolean; normalExecuted: boolean; + type?: "commonjs" | "module" | undefined; }[]; /** diff --git a/test/cases/loaders/package-type/index.js b/test/cases/loaders/package-type/index.js new file mode 100644 index 00000000000..ccdd3dcaa9b --- /dev/null +++ b/test/cases/loaders/package-type/index.js @@ -0,0 +1,17 @@ +it("should pass package.json type to loader", function (done) { + expect(require("cjs/loader.js!")).toBe("commonjs"); + expect(require("esm/loader.js!")).toBe("module"); + expect(require("./loader.js!")).toBe("undefined"); +}); + +it("should pass 'commonjs' type to loader for .cjs", function () { + expect(require("cjs/loader.cjs!")).toBe("commonjs"); + expect(require("esm/loader.cjs!")).toBe("commonjs"); + expect(require("./loader.cjs!")).toBe("commonjs"); +}); + +it("should pass 'module' type to loader for .mjs", function () { + expect(require("cjs/loader.mjs!")).toBe("module"); + expect(require("esm/loader.mjs!")).toBe("module"); + expect(require("./loader.mjs!")).toBe("module"); +}); diff --git a/test/cases/loaders/package-type/loader.cjs b/test/cases/loaders/package-type/loader.cjs new file mode 100644 index 00000000000..94974dcfad5 --- /dev/null +++ b/test/cases/loaders/package-type/loader.cjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../").LoaderDefinition} */ +module.exports = function loader() { + return `module.exports = "${this.loaders[this.loaderIndex].type}";`; +}; diff --git a/test/cases/loaders/package-type/loader.js b/test/cases/loaders/package-type/loader.js new file mode 100644 index 00000000000..94974dcfad5 --- /dev/null +++ b/test/cases/loaders/package-type/loader.js @@ -0,0 +1,4 @@ +/** @type {import("../../../../").LoaderDefinition} */ +module.exports = function loader() { + return `module.exports = "${this.loaders[this.loaderIndex].type}";`; +}; diff --git a/test/cases/loaders/package-type/loader.mjs b/test/cases/loaders/package-type/loader.mjs new file mode 100644 index 00000000000..58914cd70e5 --- /dev/null +++ b/test/cases/loaders/package-type/loader.mjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../").LoaderDefinition} */ +export default function loader() { + return `export default "${this.loaders[this.loaderIndex].type}";`; +} diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.cjs b/test/cases/loaders/package-type/node_modules/cjs/loader.cjs new file mode 100644 index 00000000000..b47e68eb16c --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/cjs/loader.cjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +module.exports = function loader() { + return `module.exports = "${this.loaders[this.loaderIndex].type}";`; +}; diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.js b/test/cases/loaders/package-type/node_modules/cjs/loader.js new file mode 100644 index 00000000000..b47e68eb16c --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/cjs/loader.js @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +module.exports = function loader() { + return `module.exports = "${this.loaders[this.loaderIndex].type}";`; +}; diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.mjs b/test/cases/loaders/package-type/node_modules/cjs/loader.mjs new file mode 100644 index 00000000000..35c1f17332d --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/cjs/loader.mjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +export default function loader() { + return `export default "${this.loaders[this.loaderIndex].type}";`; +} diff --git a/test/cases/loaders/package-type/node_modules/cjs/package.json b/test/cases/loaders/package-type/node_modules/cjs/package.json new file mode 100644 index 00000000000..5b56c70baa3 --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/cjs/package.json @@ -0,0 +1,4 @@ +{ + "name": "cjs-package", + "type": "commonjs" +} diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.cjs b/test/cases/loaders/package-type/node_modules/esm/loader.cjs new file mode 100644 index 00000000000..b47e68eb16c --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/esm/loader.cjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +module.exports = function loader() { + return `module.exports = "${this.loaders[this.loaderIndex].type}";`; +}; diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.js b/test/cases/loaders/package-type/node_modules/esm/loader.js new file mode 100644 index 00000000000..35c1f17332d --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/esm/loader.js @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +export default function loader() { + return `export default "${this.loaders[this.loaderIndex].type}";`; +} diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.mjs b/test/cases/loaders/package-type/node_modules/esm/loader.mjs new file mode 100644 index 00000000000..35c1f17332d --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/esm/loader.mjs @@ -0,0 +1,4 @@ +/** @type {import("../../../../../../").LoaderDefinition} */ +export default function loader() { + return `export default "${this.loaders[this.loaderIndex].type}";`; +} diff --git a/test/cases/loaders/package-type/node_modules/esm/package.json b/test/cases/loaders/package-type/node_modules/esm/package.json new file mode 100644 index 00000000000..64069d2b941 --- /dev/null +++ b/test/cases/loaders/package-type/node_modules/esm/package.json @@ -0,0 +1,4 @@ +{ + "name": "esm-package", + "type": "module" +} diff --git a/types.d.ts b/types.d.ts index 44cd3b9f841..d26c5659ac5 100644 --- a/types.d.ts +++ b/types.d.ts @@ -6570,6 +6570,7 @@ declare interface LoaderRunnerLoaderContext { data?: object; pitchExecuted: boolean; normalExecuted: boolean; + type?: "module" | "commonjs"; }[]; /** From 97887aba04c313dbdcf9d3a8d2e0d06d0bf655b2 Mon Sep 17 00:00:00 2001 From: Ivan Kopeykin Date: Tue, 1 Feb 2022 15:08:02 +0300 Subject: [PATCH 06/10] separate test cases - add cjs test cases - add esm test cases, filter them for now --- .../{package-type => cjs-loader-type}/index.js | 11 ++--------- .../{package-type => cjs-loader-type}/loader.cjs | 0 .../{package-type => cjs-loader-type}/loader.js | 0 .../node_modules/cjs/loader.cjs | 0 .../node_modules/cjs/loader.js | 0 .../node_modules/cjs/package.json | 0 .../node_modules/esm/loader.cjs | 0 .../node_modules/esm/package.json | 0 test/cases/loaders/esm-loader-type/index.js | 9 +++++++++ .../{package-type => esm-loader-type}/loader.mjs | 0 .../node_modules/cjs/loader.mjs | 0 .../esm-loader-type/node_modules/cjs/package.json | 4 ++++ .../node_modules/esm/loader.js | 2 +- .../node_modules/esm/loader.mjs | 0 .../esm-loader-type/node_modules/esm/package.json | 4 ++++ test/cases/loaders/esm-loader-type/test.filter.js | 5 +++++ 16 files changed, 25 insertions(+), 10 deletions(-) rename test/cases/loaders/{package-type => cjs-loader-type}/index.js (50%) rename test/cases/loaders/{package-type => cjs-loader-type}/loader.cjs (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/loader.js (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/node_modules/cjs/loader.cjs (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/node_modules/cjs/loader.js (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/node_modules/cjs/package.json (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/node_modules/esm/loader.cjs (100%) rename test/cases/loaders/{package-type => cjs-loader-type}/node_modules/esm/package.json (100%) create mode 100644 test/cases/loaders/esm-loader-type/index.js rename test/cases/loaders/{package-type => esm-loader-type}/loader.mjs (100%) rename test/cases/loaders/{package-type => esm-loader-type}/node_modules/cjs/loader.mjs (100%) create mode 100644 test/cases/loaders/esm-loader-type/node_modules/cjs/package.json rename test/cases/loaders/{package-type => esm-loader-type}/node_modules/esm/loader.js (63%) rename test/cases/loaders/{package-type => esm-loader-type}/node_modules/esm/loader.mjs (100%) create mode 100644 test/cases/loaders/esm-loader-type/node_modules/esm/package.json create mode 100644 test/cases/loaders/esm-loader-type/test.filter.js diff --git a/test/cases/loaders/package-type/index.js b/test/cases/loaders/cjs-loader-type/index.js similarity index 50% rename from test/cases/loaders/package-type/index.js rename to test/cases/loaders/cjs-loader-type/index.js index ccdd3dcaa9b..63ed968f412 100644 --- a/test/cases/loaders/package-type/index.js +++ b/test/cases/loaders/cjs-loader-type/index.js @@ -1,17 +1,10 @@ -it("should pass package.json type to loader", function (done) { +it("should pass package.json type to loader", function () { expect(require("cjs/loader.js!")).toBe("commonjs"); - expect(require("esm/loader.js!")).toBe("module"); expect(require("./loader.js!")).toBe("undefined"); }); it("should pass 'commonjs' type to loader for .cjs", function () { expect(require("cjs/loader.cjs!")).toBe("commonjs"); - expect(require("esm/loader.cjs!")).toBe("commonjs"); expect(require("./loader.cjs!")).toBe("commonjs"); -}); - -it("should pass 'module' type to loader for .mjs", function () { - expect(require("cjs/loader.mjs!")).toBe("module"); - expect(require("esm/loader.mjs!")).toBe("module"); - expect(require("./loader.mjs!")).toBe("module"); + expect(require("esm/loader.cjs!")).toBe("commonjs"); }); diff --git a/test/cases/loaders/package-type/loader.cjs b/test/cases/loaders/cjs-loader-type/loader.cjs similarity index 100% rename from test/cases/loaders/package-type/loader.cjs rename to test/cases/loaders/cjs-loader-type/loader.cjs diff --git a/test/cases/loaders/package-type/loader.js b/test/cases/loaders/cjs-loader-type/loader.js similarity index 100% rename from test/cases/loaders/package-type/loader.js rename to test/cases/loaders/cjs-loader-type/loader.js diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.cjs b/test/cases/loaders/cjs-loader-type/node_modules/cjs/loader.cjs similarity index 100% rename from test/cases/loaders/package-type/node_modules/cjs/loader.cjs rename to test/cases/loaders/cjs-loader-type/node_modules/cjs/loader.cjs diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.js b/test/cases/loaders/cjs-loader-type/node_modules/cjs/loader.js similarity index 100% rename from test/cases/loaders/package-type/node_modules/cjs/loader.js rename to test/cases/loaders/cjs-loader-type/node_modules/cjs/loader.js diff --git a/test/cases/loaders/package-type/node_modules/cjs/package.json b/test/cases/loaders/cjs-loader-type/node_modules/cjs/package.json similarity index 100% rename from test/cases/loaders/package-type/node_modules/cjs/package.json rename to test/cases/loaders/cjs-loader-type/node_modules/cjs/package.json diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.cjs b/test/cases/loaders/cjs-loader-type/node_modules/esm/loader.cjs similarity index 100% rename from test/cases/loaders/package-type/node_modules/esm/loader.cjs rename to test/cases/loaders/cjs-loader-type/node_modules/esm/loader.cjs diff --git a/test/cases/loaders/package-type/node_modules/esm/package.json b/test/cases/loaders/cjs-loader-type/node_modules/esm/package.json similarity index 100% rename from test/cases/loaders/package-type/node_modules/esm/package.json rename to test/cases/loaders/cjs-loader-type/node_modules/esm/package.json diff --git a/test/cases/loaders/esm-loader-type/index.js b/test/cases/loaders/esm-loader-type/index.js new file mode 100644 index 00000000000..5545f1b4ff5 --- /dev/null +++ b/test/cases/loaders/esm-loader-type/index.js @@ -0,0 +1,9 @@ +it("should pass package.json type to loader", function () { + expect(require("esm/loader.js!")).toBe("module"); +}); + +it("should pass 'module' type to loader for .mjs", function () { + expect(require("cjs/loader.mjs!")).toBe("module"); + expect(require("esm/loader.mjs!")).toBe("module"); + expect(require("./loader.mjs!")).toBe("module"); +}); diff --git a/test/cases/loaders/package-type/loader.mjs b/test/cases/loaders/esm-loader-type/loader.mjs similarity index 100% rename from test/cases/loaders/package-type/loader.mjs rename to test/cases/loaders/esm-loader-type/loader.mjs diff --git a/test/cases/loaders/package-type/node_modules/cjs/loader.mjs b/test/cases/loaders/esm-loader-type/node_modules/cjs/loader.mjs similarity index 100% rename from test/cases/loaders/package-type/node_modules/cjs/loader.mjs rename to test/cases/loaders/esm-loader-type/node_modules/cjs/loader.mjs diff --git a/test/cases/loaders/esm-loader-type/node_modules/cjs/package.json b/test/cases/loaders/esm-loader-type/node_modules/cjs/package.json new file mode 100644 index 00000000000..5b56c70baa3 --- /dev/null +++ b/test/cases/loaders/esm-loader-type/node_modules/cjs/package.json @@ -0,0 +1,4 @@ +{ + "name": "cjs-package", + "type": "commonjs" +} diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.js b/test/cases/loaders/esm-loader-type/node_modules/esm/loader.js similarity index 63% rename from test/cases/loaders/package-type/node_modules/esm/loader.js rename to test/cases/loaders/esm-loader-type/node_modules/esm/loader.js index 35c1f17332d..58914cd70e5 100644 --- a/test/cases/loaders/package-type/node_modules/esm/loader.js +++ b/test/cases/loaders/esm-loader-type/node_modules/esm/loader.js @@ -1,4 +1,4 @@ -/** @type {import("../../../../../../").LoaderDefinition} */ +/** @type {import("../../../../").LoaderDefinition} */ export default function loader() { return `export default "${this.loaders[this.loaderIndex].type}";`; } diff --git a/test/cases/loaders/package-type/node_modules/esm/loader.mjs b/test/cases/loaders/esm-loader-type/node_modules/esm/loader.mjs similarity index 100% rename from test/cases/loaders/package-type/node_modules/esm/loader.mjs rename to test/cases/loaders/esm-loader-type/node_modules/esm/loader.mjs diff --git a/test/cases/loaders/esm-loader-type/node_modules/esm/package.json b/test/cases/loaders/esm-loader-type/node_modules/esm/package.json new file mode 100644 index 00000000000..64069d2b941 --- /dev/null +++ b/test/cases/loaders/esm-loader-type/node_modules/esm/package.json @@ -0,0 +1,4 @@ +{ + "name": "esm-package", + "type": "module" +} diff --git a/test/cases/loaders/esm-loader-type/test.filter.js b/test/cases/loaders/esm-loader-type/test.filter.js new file mode 100644 index 00000000000..aee6320228d --- /dev/null +++ b/test/cases/loaders/esm-loader-type/test.filter.js @@ -0,0 +1,5 @@ +module.exports = function(config) { + // TODO need fix in v8 https://github.com/nodejs/node/issues/35889 + // TODO otherwise this test case cause segment fault + return false; +}; From e00d817c02d2d936df78a249f17f9f8f65ea6920 Mon Sep 17 00:00:00 2001 From: stefanprobst Date: Mon, 20 Mar 2023 11:35:07 +0100 Subject: [PATCH 07/10] Update lib/NormalModuleFactory.js --- lib/NormalModuleFactory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index 06da3d81935..82c8d62b75d 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -1031,7 +1031,7 @@ If changing the source code is not an option there is also a resolve options cal : resolveRequest.descriptionFileData.type; const resolved = { - loader: parsedResult.loader, + loader: parsedResult.path, type, options: item.options === undefined From 398dd91d5158d1fd5c2fe079c34fdcfa5c03005e Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Tue, 18 Apr 2023 14:55:20 +0300 Subject: [PATCH 08/10] test: refactor --- .../loaders/{esm-loader-type => _esm-loader-type}/index.js | 0 .../{esm-loader-type => _esm-loader-type}/loader.mjs | 0 .../node_modules/cjs/loader.mjs | 0 .../node_modules/cjs/package.json | 0 .../node_modules/esm/loader.js | 0 .../node_modules/esm/loader.mjs | 0 .../node_modules/esm/package.json | 0 .../{esm-loader-type => _esm-loader-type}/test.filter.js | 0 test/cases/loaders/cjs-loader-type/index.js | 6 ++++-- 9 files changed, 4 insertions(+), 2 deletions(-) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/index.js (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/loader.mjs (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/node_modules/cjs/loader.mjs (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/node_modules/cjs/package.json (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/node_modules/esm/loader.js (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/node_modules/esm/loader.mjs (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/node_modules/esm/package.json (100%) rename test/cases/loaders/{esm-loader-type => _esm-loader-type}/test.filter.js (100%) diff --git a/test/cases/loaders/esm-loader-type/index.js b/test/cases/loaders/_esm-loader-type/index.js similarity index 100% rename from test/cases/loaders/esm-loader-type/index.js rename to test/cases/loaders/_esm-loader-type/index.js diff --git a/test/cases/loaders/esm-loader-type/loader.mjs b/test/cases/loaders/_esm-loader-type/loader.mjs similarity index 100% rename from test/cases/loaders/esm-loader-type/loader.mjs rename to test/cases/loaders/_esm-loader-type/loader.mjs diff --git a/test/cases/loaders/esm-loader-type/node_modules/cjs/loader.mjs b/test/cases/loaders/_esm-loader-type/node_modules/cjs/loader.mjs similarity index 100% rename from test/cases/loaders/esm-loader-type/node_modules/cjs/loader.mjs rename to test/cases/loaders/_esm-loader-type/node_modules/cjs/loader.mjs diff --git a/test/cases/loaders/esm-loader-type/node_modules/cjs/package.json b/test/cases/loaders/_esm-loader-type/node_modules/cjs/package.json similarity index 100% rename from test/cases/loaders/esm-loader-type/node_modules/cjs/package.json rename to test/cases/loaders/_esm-loader-type/node_modules/cjs/package.json diff --git a/test/cases/loaders/esm-loader-type/node_modules/esm/loader.js b/test/cases/loaders/_esm-loader-type/node_modules/esm/loader.js similarity index 100% rename from test/cases/loaders/esm-loader-type/node_modules/esm/loader.js rename to test/cases/loaders/_esm-loader-type/node_modules/esm/loader.js diff --git a/test/cases/loaders/esm-loader-type/node_modules/esm/loader.mjs b/test/cases/loaders/_esm-loader-type/node_modules/esm/loader.mjs similarity index 100% rename from test/cases/loaders/esm-loader-type/node_modules/esm/loader.mjs rename to test/cases/loaders/_esm-loader-type/node_modules/esm/loader.mjs diff --git a/test/cases/loaders/esm-loader-type/node_modules/esm/package.json b/test/cases/loaders/_esm-loader-type/node_modules/esm/package.json similarity index 100% rename from test/cases/loaders/esm-loader-type/node_modules/esm/package.json rename to test/cases/loaders/_esm-loader-type/node_modules/esm/package.json diff --git a/test/cases/loaders/esm-loader-type/test.filter.js b/test/cases/loaders/_esm-loader-type/test.filter.js similarity index 100% rename from test/cases/loaders/esm-loader-type/test.filter.js rename to test/cases/loaders/_esm-loader-type/test.filter.js diff --git a/test/cases/loaders/cjs-loader-type/index.js b/test/cases/loaders/cjs-loader-type/index.js index 63ed968f412..c077cb731fb 100644 --- a/test/cases/loaders/cjs-loader-type/index.js +++ b/test/cases/loaders/cjs-loader-type/index.js @@ -5,6 +5,8 @@ it("should pass package.json type to loader", function () { it("should pass 'commonjs' type to loader for .cjs", function () { expect(require("cjs/loader.cjs!")).toBe("commonjs"); - expect(require("./loader.cjs!")).toBe("commonjs"); - expect(require("esm/loader.cjs!")).toBe("commonjs"); + expect(require("./loader.cjs!")).toBe("undefined"); + // TODO need fix in v8 https://github.com/nodejs/node/issues/35889 + // TODO otherwise this test case cause segment fault + // expect(require("esm/loader.cjs!")).toBe("commonjs"); }); From 98b976e8bfdce04de75c4c2a2690d3e9cb4486a1 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Tue, 18 Apr 2023 14:58:18 +0300 Subject: [PATCH 09/10] chore: fix lint --- test/cases/loaders/_esm-loader-type/test.filter.js | 2 +- test/cases/loaders/cjs-loader-type/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/cases/loaders/_esm-loader-type/test.filter.js b/test/cases/loaders/_esm-loader-type/test.filter.js index aee6320228d..7cc1b5dd3d5 100644 --- a/test/cases/loaders/_esm-loader-type/test.filter.js +++ b/test/cases/loaders/_esm-loader-type/test.filter.js @@ -1,4 +1,4 @@ -module.exports = function(config) { +module.exports = function (config) { // TODO need fix in v8 https://github.com/nodejs/node/issues/35889 // TODO otherwise this test case cause segment fault return false; diff --git a/test/cases/loaders/cjs-loader-type/index.js b/test/cases/loaders/cjs-loader-type/index.js index c077cb731fb..0e8d4855e13 100644 --- a/test/cases/loaders/cjs-loader-type/index.js +++ b/test/cases/loaders/cjs-loader-type/index.js @@ -1,10 +1,10 @@ it("should pass package.json type to loader", function () { - expect(require("cjs/loader.js!")).toBe("commonjs"); - expect(require("./loader.js!")).toBe("undefined"); + // expect(require("cjs/loader.js!")).toBe("commonjs"); + // expect(require("./loader.js!")).toBe("undefined"); }); it("should pass 'commonjs' type to loader for .cjs", function () { - expect(require("cjs/loader.cjs!")).toBe("commonjs"); + // expect(require("cjs/loader.cjs!")).toBe("commonjs"); expect(require("./loader.cjs!")).toBe("undefined"); // TODO need fix in v8 https://github.com/nodejs/node/issues/35889 // TODO otherwise this test case cause segment fault From 65d17428daf2d6921e0344d2ea70a578143fd4c4 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Tue, 18 Apr 2023 15:02:05 +0300 Subject: [PATCH 10/10] fix: bug --- lib/NormalModuleFactory.js | 4 ++-- test/cases/loaders/cjs-loader-type/index.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/NormalModuleFactory.js b/lib/NormalModuleFactory.js index 82c8d62b75d..9eb4437fbd5 100644 --- a/lib/NormalModuleFactory.js +++ b/lib/NormalModuleFactory.js @@ -1022,9 +1022,9 @@ If changing the source code is not an option there is also a resolve options cal const parsedResult = this._parseResourceWithoutFragment(result); - const type = /\.mjs$/i.test(parsedResult.loader) + const type = /\.mjs$/i.test(parsedResult.path) ? "module" - : /\.cjs$/i.test(parsedResult.loader) + : /\.cjs$/i.test(parsedResult.path) ? "commonjs" : resolveRequest.descriptionFileData === undefined ? undefined diff --git a/test/cases/loaders/cjs-loader-type/index.js b/test/cases/loaders/cjs-loader-type/index.js index 0e8d4855e13..9bda36284e3 100644 --- a/test/cases/loaders/cjs-loader-type/index.js +++ b/test/cases/loaders/cjs-loader-type/index.js @@ -1,11 +1,11 @@ it("should pass package.json type to loader", function () { - // expect(require("cjs/loader.js!")).toBe("commonjs"); - // expect(require("./loader.js!")).toBe("undefined"); + expect(require("cjs/loader.js!")).toBe("commonjs"); + expect(require("./loader.js!")).toBe("undefined"); }); it("should pass 'commonjs' type to loader for .cjs", function () { - // expect(require("cjs/loader.cjs!")).toBe("commonjs"); - expect(require("./loader.cjs!")).toBe("undefined"); + expect(require("cjs/loader.cjs!")).toBe("commonjs"); + expect(require("./loader.cjs!")).toBe("commonjs"); // TODO need fix in v8 https://github.com/nodejs/node/issues/35889 // TODO otherwise this test case cause segment fault // expect(require("esm/loader.cjs!")).toBe("commonjs");