From 3374589430b70d76224232fbf7c0e4b8c031a117 Mon Sep 17 00:00:00 2001 From: Stefan Probst Date: Fri, 21 Jan 2022 07:57:32 +0100 Subject: [PATCH] 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 3e9341423a7..bf561717064 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 41f1c334e9c..e2d4723a6f5 100644 --- a/types.d.ts +++ b/types.d.ts @@ -6297,6 +6297,7 @@ declare interface LoaderRunnerLoaderContext { data?: object; pitchExecuted: boolean; normalExecuted: boolean; + type?: "module" | "commonjs"; }[]; /**