From a69e85d8d5c3ae4b627927752c105cd5ae6dad6c Mon Sep 17 00:00:00 2001 From: Daniel Cohen Gindi Date: Mon, 22 Feb 2021 20:09:55 +0200 Subject: [PATCH 1/9] fix(commonjs): `isRestorableCompiledEsm` should also trigger code transform (#816) --- packages/commonjs/src/transform-commonjs.js | 3 ++- .../form/compiled-esm-define-exports-empty/input.js | 1 + .../form/compiled-esm-define-exports-empty/output.js | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/input.js create mode 100644 packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/output.js diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index d019cff90..0f6b54060 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -437,7 +437,8 @@ export default function transformCommonjs( uses.exports || uses.require || uses.commonjsHelpers || - hasRemovedRequire + hasRemovedRequire || + isRestorableCompiledEsm ) && (ignoreGlobal || !uses.global) ) { diff --git a/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/input.js b/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/input.js new file mode 100644 index 000000000..a6a850fe2 --- /dev/null +++ b/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/input.js @@ -0,0 +1 @@ +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/output.js b/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/output.js new file mode 100644 index 000000000..43b03ffa5 --- /dev/null +++ b/packages/commonjs/test/fixtures/form/compiled-esm-define-exports-empty/output.js @@ -0,0 +1,6 @@ +var input = /*#__PURE__*/Object.defineProperty({ + +}, '__esModule', {value: true}); + +export default input; +export { input as __moduleExports }; From f1ad31f230afef15c14ba4c4d0de58d3f96904e4 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Wed, 10 Mar 2021 23:04:56 +0800 Subject: [PATCH 2/9] fix(typescript): update readme and peerDeps version (#830) * update plugin typescript readme * Update package.json --- packages/typescript/README.md | 2 +- packages/typescript/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/typescript/README.md b/packages/typescript/README.md index 70b47bfc9..2a32944ce 100644 --- a/packages/typescript/README.md +++ b/packages/typescript/README.md @@ -13,7 +13,7 @@ ## Requirements -This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v8.0.0+) and Rollup v1.20.0+. This plugin also requires at least [TypeScript 3.4](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html). +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v8.0.0+) and Rollup v1.20.0+. This plugin also requires at least [TypeScript 3.7](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html). ## Install diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 8d9a3b676..28b12d3a7 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -48,7 +48,7 @@ "peerDependencies": { "rollup": "^2.14.0", "tslib": "*", - "typescript": ">=3.4.0" + "typescript": ">=3.7.0" }, "dependencies": { "@rollup/pluginutils": "^3.1.0", From 4f4c25d4d3a9977c06357b2a017eff2fd38a3fe9 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 10 Mar 2021 07:14:53 -0800 Subject: [PATCH 3/9] fix(typescript): bump TypeScript version (#818) * chore(typescript): bump TypeScript version * Revert "feat(typescript): error when no tsconfig and no rootDir (#794)" This reverts commit cbfd779dd3b78dc1ece7b41e1488bf69ac8de6fa. --- packages/typescript/package.json | 2 +- packages/typescript/src/preflight.ts | 7 --- .../typescript/test/snapshots/tsconfig.ts.md | 25 --------- .../test/snapshots/tsconfig.ts.snap | Bin 409 -> 0 bytes packages/typescript/test/test.js | 6 +-- packages/typescript/test/tsconfig.ts | 50 ------------------ pnpm-lock.yaml | 28 ++++++++-- 7 files changed, 27 insertions(+), 91 deletions(-) delete mode 100644 packages/typescript/test/snapshots/tsconfig.ts.md delete mode 100644 packages/typescript/test/snapshots/tsconfig.ts.snap delete mode 100644 packages/typescript/test/tsconfig.ts diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 28b12d3a7..5a60bb633 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -61,7 +61,7 @@ "@types/node": "^10.0.0", "buble": "^0.20.0", "rollup": "^2.14.0", - "typescript": "^4.1.2" + "typescript": "^4.2.2" }, "types": "types/index.d.ts" } diff --git a/packages/typescript/src/preflight.ts b/packages/typescript/src/preflight.ts index 39cc1731c..3b7e70e2d 100644 --- a/packages/typescript/src/preflight.ts +++ b/packages/typescript/src/preflight.ts @@ -17,8 +17,6 @@ ${pluginName}: Rollup requires that TypeScript produces ES Modules. Unfortunatel "module" other than "esnext". Unless you know what you're doing, please change "module" to "esnext" in the target tsconfig.json file or plugin options.`.replace(/\n/g, ''); -const rootDirErrorMessage = `${pluginName}: The "rootDir" or "rootDirs" option is required when the "tsconfig" option is not specified and "declaration" is "true".`; - const tsLibErrorMessage = `${pluginName}: Could not find module 'tslib', which is required by this plugin. Is it installed?`; let undef; @@ -30,11 +28,6 @@ export const preflight = ({ config, context, rollupOptions, tslib }: PreflightOp context.warn(moduleErrorMessage); } - const { options } = config; - if (options.declaration && !options.configFilePath && !options.rootDir && !options.rootDirs) { - context.error(rootDirErrorMessage); - } - if (!rollupOptions.preserveModules && tslib === null) { context.error(tsLibErrorMessage); } diff --git a/packages/typescript/test/snapshots/tsconfig.ts.md b/packages/typescript/test/snapshots/tsconfig.ts.md deleted file mode 100644 index cd5733ae1..000000000 --- a/packages/typescript/test/snapshots/tsconfig.ts.md +++ /dev/null @@ -1,25 +0,0 @@ -# Snapshot report for `test/tsconfig.ts` - -The actual snapshot is saved in `tsconfig.ts.snap`. - -Generated by [AVA](https://avajs.dev). - -## inline config without tsconfig + rootDir - -> Snapshot 1 - - [ - 'main.js', - 'types/main.d.ts', - ] - -## inline config without tsconfig without rootDir fails - -> Snapshot 1 - - Error { - code: 'PLUGIN_ERROR', - hook: 'buildStart', - plugin: 'typescript', - message: '@rollup/plugin-typescript: The "rootDir" or "rootDirs" option is required when the "tsconfig" option is not specified and "declaration" is "true".', - } diff --git a/packages/typescript/test/snapshots/tsconfig.ts.snap b/packages/typescript/test/snapshots/tsconfig.ts.snap deleted file mode 100644 index ecf6b0f74f435539fbb9f3bb652a5458bd699c59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQR|RzVqf00000000AB zkiSX;K@i4wF8?G%E+Hu_m$T8r#L6O-VuA!DhNxg8vbozNtLN>xyN3j^vG4%|3tKCn zzy}blY%G0%fSrw4*|>XpiDcnp=9~S^E;Dt6kcB>8KO5J}7mxQ3--lPvl`$Z5A|1Xi zUk-X5r}Q>jdLNV9MTn~gNTFOz!2)D9b!=$~tvjtJtuk08$TWrEq72z21xT`Dv4~(E zK^lQ=;0mM=WJ-{BxknRI=xpzAwc1C`Zg;0U3l2FyNld;MG2h!&M5q}o8~V|J1rtz> zLMmOs!dWnPN~I)&CPr!(D#ioMBo_26 zVuE`3d`JVVOplT-5BhBI9}Bp`GNdl+GtH8~!;VK?p9o?I#~_Xp5p}AQrO!cXRmU~0 zcD!t};SC|kDBf_K*|v=!kHA7uFoUA$q=W_4WBFGHNG|Mn#9DmqRh9e!Cr80{9s&RW DgmJNa diff --git a/packages/typescript/test/test.js b/packages/typescript/test/test.js index 55bfb158e..47cf62734 100644 --- a/packages/typescript/test/test.js +++ b/packages/typescript/test/test.js @@ -1020,11 +1020,7 @@ test.serial('picks up on newly included typescript files in watch mode', async ( t.true(usage, 'should contain usage'); }); -// TODO: upgrade TypeScript when there is a release containing the fix for this issue -// https://github.com/microsoft/TypeScript/pull/41811. Then enable this test -// More details at https://github.com/rollup/plugins/issues/287. This fails with the message: -// Unexpected token (Note that you need plugins to import files that are not JavaScript) -test.serial.skip('works when code is in src directory', async (t) => { +test.serial('works when code is in src directory', async (t) => { const bundle = await rollup({ input: 'fixtures/src-dir/src/index.ts', output: [ diff --git a/packages/typescript/test/tsconfig.ts b/packages/typescript/test/tsconfig.ts deleted file mode 100644 index 567e9d9b6..000000000 --- a/packages/typescript/test/tsconfig.ts +++ /dev/null @@ -1,50 +0,0 @@ -import test from 'ava'; -import { rollup } from 'rollup'; - -import typescript from '..'; - -import { getCode, onwarn } from '../../../util/test'; - -test.beforeEach(() => process.chdir(__dirname)); - -test.serial('inline config without tsconfig + rootDir', async (t) => { - const bundle = await rollup({ - input: 'fixtures/basic/main.ts', - plugins: [ - typescript({ - declaration: true, - declarationDir: 'fixtures/basic/dist/types', - exclude: 'fixtures/basic/dist/types', - include: 'fixtures/basic/*.ts', - tsconfig: false, - rootDir: 'fixtures/basic' - }) - ], - onwarn - }); - const files = await getCode(bundle, { format: 'esm', dir: 'fixtures/basic/dist' }, true); - const [, { source }] = files; - - t.snapshot(files.map(({ fileName }) => fileName)); - t.true((source as string)?.includes('declare const answer = 42;')); -}); - -test.serial('inline config without tsconfig without rootDir fails', async (t) => { - const fail = () => - rollup({ - input: 'fixtures/basic/main.ts', - plugins: [ - typescript({ - declaration: true, - declarationDir: 'fixtures/basic/dist/types', - exclude: 'fixtures/basic/dist/types', - include: 'fixtures/basic/*.ts', - tsconfig: false - }) - ], - onwarn - }); - - const error = await t.throwsAsync(fail); - t.snapshot(error); -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fee7f3d3f..3c62f4cf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -460,11 +460,11 @@ importers: devDependencies: '@rollup/plugin-buble': 0.21.3_rollup@2.32.1 '@rollup/plugin-commonjs': 11.1.0_rollup@2.32.1 - '@rollup/plugin-typescript': 5.0.2_rollup@2.32.1+typescript@4.1.2 + '@rollup/plugin-typescript': 5.0.2_rollup@2.32.1+typescript@4.2.2 '@types/node': 10.17.48 buble: 0.20.0 rollup: 2.32.1 - typescript: 4.1.2 + typescript: 4.2.2 specifiers: '@rollup/plugin-buble': ^0.21.3 '@rollup/plugin-commonjs': ^11.1.0 @@ -474,7 +474,7 @@ importers: buble: ^0.20.0 resolve: ^1.17.0 rollup: ^2.14.0 - typescript: ^4.1.2 + typescript: ^4.2.2 packages/url: dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.32.1 @@ -1790,6 +1790,21 @@ packages: typescript: '>=3.4.0' resolution: integrity: sha512-CkS028Itwjqm1uLbFVfpJgtVtnNvZ+og/m6UlNRR5wOOnNTWPcVQzOu5xGdEX+WWJxdvWIqUq2uR/RBt2ZipWg== + /@rollup/plugin-typescript/5.0.2_rollup@2.32.1+typescript@4.2.2: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.32.1 + resolve: 1.18.1 + rollup: 2.32.1 + typescript: 4.2.2 + dev: true + engines: + node: '>=8.0.0' + peerDependencies: + rollup: ^2.14.0 + tslib: '*' + typescript: '>=3.4.0' + resolution: + integrity: sha512-CkS028Itwjqm1uLbFVfpJgtVtnNvZ+og/m6UlNRR5wOOnNTWPcVQzOu5xGdEX+WWJxdvWIqUq2uR/RBt2ZipWg== /@rollup/plugin-typescript/6.0.0_rollup@2.32.1+typescript@4.1.2: dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.32.1 @@ -7441,6 +7456,13 @@ packages: hasBin: true resolution: integrity: sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== + /typescript/4.2.2: + dev: true + engines: + node: '>=4.2.0' + hasBin: true + resolution: + integrity: sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ== /unicode-canonical-property-names-ecmascript/1.0.4: engines: node: '>=4' From 8752c2f9099cdbf3a8580936b2599b57cd8da344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 10 Mar 2021 16:19:26 +0100 Subject: [PATCH 4/9] docs(replace): document the `values` option (#814) * [plugin-replace] Document the `values` option * Fix example * Update README.md * Update README.md * Update README.md --- packages/replace/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/replace/README.md b/packages/replace/README.md index abb42e5f7..4b415d911 100644 --- a/packages/replace/README.md +++ b/packages/replace/README.md @@ -114,6 +114,31 @@ Default: `null` A [minimatch pattern](https://github.com/isaacs/minimatch), or array of patterns, which specifies the files in the build the plugin should operate on. By default all files are targeted. +### `values` + +Type: `{ [key: String]: Replacement }`, where `Replacement` is either a string or a `function` that returns a string. +Default: `{}` + +To avoid mixing replacement strings with the other options, you can specify replacements in the `values` option. For example, the following signature: + +```js +replace({ + include: ["src/**/*.js"], + changed: "replaced" +}); +``` + +Can be replaced with: + +```js +replace({ + include: ["src/**/*.js"], + values: { + changed: "replaced" + } +}); +``` + ## Word Boundaries By default, values will only match if they are surrounded by _word boundaries_. From 2d06c44874c17effe5c2724742c69d6a4cd11e95 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Wed, 10 Mar 2021 16:23:36 +0100 Subject: [PATCH 5/9] feat(commonjs)!: Add ignore-dynamic-requires option (#819) BREAKING CHANGES: When dynamicRequireTargets is specified, "require" will be default no longer be used as fallback --- packages/commonjs/README.md | 19 + packages/commonjs/src/helpers.js | 16 +- packages/commonjs/src/index.js | 7 +- packages/commonjs/src/transform-commonjs.js | 15 +- .../dynamic-require-absolute-paths/_config.js | 9 - .../dynamic-require-absolute-paths/main.js | 7 - .../submodule.js | 1 - .../dynamic-require-fallback/_config.js | 6 + .../function/dynamic-require-fallback/dep.js | 1 + .../function/dynamic-require-fallback/main.js | 8 + .../function/dynamic-require-globs/main.js | 13 +- .../dynamic-require-no-fallback/_config.js | 3 + .../dynamic-require-no-fallback/main.js | 10 + .../_config.js | 7 + .../dynamic-require-targets-fallback/dep1.js | 1 + .../dynamic-require-targets-fallback/dep2.js | 1 + .../dynamic-require-targets-fallback/main.js | 9 + .../_config.js | 7 + .../dep1.js | 1 + .../main.js | 11 + .../function/global-not-overwritten/encode.js | 2 +- .../test/fixtures/function/inline/main.js | 2 +- .../test/fixtures/function/inline/multiply.js | 2 +- .../function/toplevel-return-complex/bar.js | 2 +- .../unsupported-dynamic-require/_config.js | 3 - .../unsupported-dynamic-require/main.js | 10 - .../submodule2.js | 2 +- .../fixtures/samples/umd/correct-scoping.js | 2 +- packages/commonjs/test/form.js | 11 +- .../commonjs/test/snapshots/function.js.md | 1023 ++++++++++------- .../commonjs/test/snapshots/function.js.snap | Bin 15006 -> 15704 bytes packages/commonjs/test/types.ts | 1 + packages/commonjs/types/index.d.ts | 15 +- 33 files changed, 761 insertions(+), 466 deletions(-) delete mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js delete mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/main.js delete mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/submodule.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-fallback/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-fallback/dep.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-fallback/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep1.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep2.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/dep1.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/main.js delete mode 100755 packages/commonjs/test/fixtures/function/unsupported-dynamic-require/_config.js delete mode 100755 packages/commonjs/test/fixtures/function/unsupported-dynamic-require/main.js diff --git a/packages/commonjs/README.md b/packages/commonjs/README.md index dd3bddd7e..6aff1ee2e 100644 --- a/packages/commonjs/README.md +++ b/packages/commonjs/README.md @@ -134,6 +134,25 @@ Due to the conversion of `require` to a static `import` - the call is hoisted to - `string[]`: Pass an array containing the IDs to left unconverted. - `((id: string) => boolean|'remove')`: Pass a function that control individual IDs. +### `ignoreDynamicRequires` + +Type: `boolean` +Default: false + +Some `require` calls cannot be resolved statically to be translated to imports, e.g. + +```js +function wrappedRequire(target) { + return require(target); +} +wrappedRequire('foo'); +wrappedRequire('bar'); +``` + +When this option is set to `false`, the generated code will either directly throw an error when such a call is encountered or, when `dynamicRequireTargets` is used, when such a call cannot be resolved with a configured dynamic require target. + +Setting this option to `true` will instead leave the `require` call in the code or use it as a fallback for `dynamicRequireTargets`. + ### `esmExternals` Type: `boolean | string[] | ((id: string) => boolean)` diff --git a/packages/commonjs/src/helpers.js b/packages/commonjs/src/helpers.js index c57f142ee..b4c17ccd2 100644 --- a/packages/commonjs/src/helpers.js +++ b/packages/commonjs/src/helpers.js @@ -48,18 +48,20 @@ export function getAugmentedNamespace(n) { } `; +const FAILED_REQUIRE_ERROR = `throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');`; + const HELPER_NON_DYNAMIC = ` export function createCommonjsModule(fn) { var module = { exports: {} } return fn(module, module.exports), module.exports; } -export function commonjsRequire (target) { - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'); +export function commonjsRequire (path) { + ${FAILED_REQUIRE_ERROR} } `; -const HELPERS_DYNAMIC = ` +const getDynamicHelpers = (ignoreDynamicRequires) => ` export function createCommonjsModule(fn, basedir, module) { return module = { path: basedir, @@ -231,13 +233,15 @@ export function commonjsRequire (path, originalModuleDir) { return cachedModule.exports; }; } - return require(path); + ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} } commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE; commonjsRequire.resolve = commonjsResolve; `; -export function getHelpersModule(isDynamicRequireModulesEnabled) { - return `${HELPERS}${isDynamicRequireModulesEnabled ? HELPERS_DYNAMIC : HELPER_NON_DYNAMIC}`; +export function getHelpersModule(isDynamicRequireModulesEnabled, ignoreDynamicRequires) { + return `${HELPERS}${ + isDynamicRequireModulesEnabled ? getDynamicHelpers(ignoreDynamicRequires) : HELPER_NON_DYNAMIC + }`; } diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index ed307c90f..79015294b 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -44,6 +44,7 @@ export default function commonjs(options = {}) { const filter = createFilter(options.include, options.exclude); const { ignoreGlobal, + ignoreDynamicRequires, requireReturnsDefault: requireReturnsDefaultOption, esmExternals } = options; @@ -97,6 +98,7 @@ export default function commonjs(options = {}) { function transformAndCheckExports(code, id) { if (isDynamicRequireModulesEnabled && this.getModuleInfo(id).isEntry) { + // eslint-disable-next-line no-param-reassign code = getDynamicPackagesEntryIntro(dynamicRequireModuleDirPaths, dynamicRequireModuleSet) + code; } @@ -125,6 +127,7 @@ export default function commonjs(options = {}) { // avoid wrapping in createCommonjsModule, as this is a commonjsRegister call if (isModuleRegisterProxy(id)) { disableWrap = true; + // eslint-disable-next-line no-param-reassign id = unwrapModuleRegisterProxy(id); } @@ -135,6 +138,7 @@ export default function commonjs(options = {}) { isEsModule, ignoreGlobal || isEsModule, ignoreRequire, + ignoreDynamicRequires && !isDynamicRequireModulesEnabled, getIgnoreTryCatchRequireStatementMode, sourceMap, isDynamicRequireModulesEnabled, @@ -161,7 +165,7 @@ export default function commonjs(options = {}) { load(id) { if (id === HELPERS_ID) { - return getHelpersModule(isDynamicRequireModulesEnabled); + return getHelpersModule(isDynamicRequireModulesEnabled, ignoreDynamicRequires); } if (id.startsWith(HELPERS_ID)) { @@ -232,6 +236,7 @@ export default function commonjs(options = {}) { } }, + // eslint-disable-next-line no-shadow moduleParsed({ id, meta: { commonjs } }) { if (commonjs) { const isCjs = commonjs.isCommonJS; diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 0f6b54060..ccb32a565 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -46,6 +46,7 @@ export default function transformCommonjs( isEsModule, ignoreGlobal, ignoreRequire, + ignoreDynamicRequires, getIgnoreTryCatchRequireStatementMode, sourceMap, isDynamicRequireModulesEnabled, @@ -320,12 +321,14 @@ export default function transformCommonjs( )}` ); } - if (isShorthandProperty(parent)) { - magicString.appendRight(node.end, `: ${HELPERS_NAME}.commonjsRequire`); - } else { - magicString.overwrite(node.start, node.end, `${HELPERS_NAME}.commonjsRequire`, { - storeName: true - }); + if (!ignoreDynamicRequires) { + if (isShorthandProperty(parent)) { + magicString.appendRight(node.end, `: ${HELPERS_NAME}.commonjsRequire`); + } else { + magicString.overwrite(node.start, node.end, `${HELPERS_NAME}.commonjsRequire`, { + storeName: true + }); + } } uses.commonjsHelpers = true; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js deleted file mode 100755 index c0a5a9fc2..000000000 --- a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - description: 'resolves both windows and posix absolute paths', - pluginOptions: { - dynamicRequireTargets: ['fixtures/function/dynamic-require-absolute-paths/submodule.js'] - }, - options: { - external: ['path'] - } -}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/main.js deleted file mode 100755 index b5653b870..000000000 --- a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/main.js +++ /dev/null @@ -1,7 +0,0 @@ -/* eslint-disable import/no-dynamic-require, global-require */ - -const Path = require('path'); - -const basePath = `${process.cwd()}/fixtures/function/dynamic-require-absolute-paths`; - -t.is(require(Path.resolve(`${basePath}/submodule.js`)), 'submodule'); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/submodule.js b/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/submodule.js deleted file mode 100755 index c285d34bc..000000000 --- a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/submodule.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'submodule'; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-fallback/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/_config.js new file mode 100755 index 000000000..2e93c732b --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/_config.js @@ -0,0 +1,6 @@ +module.exports = { + description: 'keeps a require call as fallback when configured', + pluginOptions: { + ignoreDynamicRequires: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-fallback/dep.js b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/dep.js new file mode 100755 index 000000000..d0afb22c4 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/dep.js @@ -0,0 +1 @@ +module.exports = 'dep'; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-fallback/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/main.js new file mode 100755 index 000000000..add49eec6 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-fallback/main.js @@ -0,0 +1,8 @@ +/* eslint-disable import/no-dynamic-require, global-require */ + +function takeModule(withName) { + return require(withName); +} + +// The bundled code will run from test/helpers/util.js +t.is(takeModule('../fixtures/function/dynamic-require-fallback/dep.js'), 'dep'); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-globs/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-globs/main.js index 64e2c1e87..e1d9514d9 100755 --- a/packages/commonjs/test/fixtures/function/dynamic-require-globs/main.js +++ b/packages/commonjs/test/fixtures/function/dynamic-require-globs/main.js @@ -7,12 +7,7 @@ function takeModule(withName) { t.is(takeModule('submodule1.js'), 'submodule1'); t.is(takeModule('submodule2.js'), 'submodule2'); t.is(takeModule('extramodule1.js'), 'extramodule1'); - -let hasThrown = false; -try { - takeModule('extramodule2.js'); -} catch (error) { - t.truthy(/Cannot find module '\.\/extramodule2\.js'/.test(error.message)); - hasThrown = true; -} -t.truthy(hasThrown); +t.throws(() => takeModule('extramodule2.js'), { + message: + 'Could not dynamically require "./extramodule2.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.' +}); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/_config.js new file mode 100755 index 000000000..47ec76dd6 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'throws when there is no fallback for a dynamic require call' +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/main.js new file mode 100755 index 000000000..31ec4917c --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-no-fallback/main.js @@ -0,0 +1,10 @@ +/* eslint-disable import/no-dynamic-require, global-require */ + +function takeModule(withName) { + return require(withName); +} + +t.throws(() => takeModule('./dep.js'), { + message: + 'Could not dynamically require "./dep.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.' +}); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/_config.js new file mode 100755 index 000000000..6123cc654 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'keeps a require call as fallback when configured for dynamicRequireTargets', + pluginOptions: { + ignoreDynamicRequires: true, + dynamicRequireTargets: ['fixtures/function/dynamic-require-targets-fallback/dep1.js'] + } +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep1.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep1.js new file mode 100755 index 000000000..d0afb22c4 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep1.js @@ -0,0 +1 @@ +module.exports = 'dep'; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep2.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep2.js new file mode 100755 index 000000000..d0afb22c4 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/dep2.js @@ -0,0 +1 @@ +module.exports = 'dep'; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/main.js new file mode 100755 index 000000000..3652fbc73 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-fallback/main.js @@ -0,0 +1,9 @@ +/* eslint-disable import/no-dynamic-require, global-require */ + +function takeModule(withName) { + return require(withName); +} + +t.is(takeModule('./dep1.js'), 'dep'); +// The bundled code will run from test/helpers/util.js +t.is(takeModule('../fixtures/function/dynamic-require-targets-fallback/dep2.js'), 'dep'); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/_config.js new file mode 100755 index 000000000..ff229d8f0 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: + 'throws when there is no require call configured as fallback for dynamicRequireTargets', + pluginOptions: { + dynamicRequireTargets: ['fixtures/function/dynamic-require-targets-no-fallback/dep1.js'] + } +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/dep1.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/dep1.js new file mode 100755 index 000000000..d0afb22c4 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/dep1.js @@ -0,0 +1 @@ +module.exports = 'dep'; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/main.js new file mode 100755 index 000000000..097c93f68 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-targets-no-fallback/main.js @@ -0,0 +1,11 @@ +/* eslint-disable import/no-dynamic-require, global-require */ + +function takeModule(withName) { + return require(withName); +} + +t.is(takeModule('./dep1.js'), 'dep'); +t.throws(() => takeModule('./dep2.js'), { + message: + 'Could not dynamically require "./dep2.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.' +}); diff --git a/packages/commonjs/test/fixtures/function/global-not-overwritten/encode.js b/packages/commonjs/test/fixtures/function/global-not-overwritten/encode.js index 47df37ebe..11ef1a2aa 100644 --- a/packages/commonjs/test/fixtures/function/global-not-overwritten/encode.js +++ b/packages/commonjs/test/fixtures/function/global-not-overwritten/encode.js @@ -1,4 +1,4 @@ -exports.encodeURIComponent = function() { +exports.encodeURIComponent = function () { return encodeURIComponent(this.str); }; diff --git a/packages/commonjs/test/fixtures/function/inline/main.js b/packages/commonjs/test/fixtures/function/inline/main.js index 9c89da3ac..06c18b41a 100644 --- a/packages/commonjs/test/fixtures/function/inline/main.js +++ b/packages/commonjs/test/fixtures/function/inline/main.js @@ -1,4 +1,4 @@ /* eslint-disable global-require */ -module.exports = function() { +module.exports = function () { return require('./multiply')(2, require('./foo')); }; diff --git a/packages/commonjs/test/fixtures/function/inline/multiply.js b/packages/commonjs/test/fixtures/function/inline/multiply.js index 1d31f4c02..b5a6c5bea 100644 --- a/packages/commonjs/test/fixtures/function/inline/multiply.js +++ b/packages/commonjs/test/fixtures/function/inline/multiply.js @@ -1,3 +1,3 @@ -module.exports = function(a, b) { +module.exports = function (a, b) { return a * b; }; diff --git a/packages/commonjs/test/fixtures/function/toplevel-return-complex/bar.js b/packages/commonjs/test/fixtures/function/toplevel-return-complex/bar.js index 6c780a1b8..9d12d7de1 100644 --- a/packages/commonjs/test/fixtures/function/toplevel-return-complex/bar.js +++ b/packages/commonjs/test/fixtures/function/toplevel-return-complex/bar.js @@ -1,3 +1,3 @@ -module.exports = function() { +module.exports = function () { return true; }; diff --git a/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/_config.js b/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/_config.js deleted file mode 100755 index b77e73bbf..000000000 --- a/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - description: 'throws for unsupported dynamic require calls' -}; diff --git a/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/main.js b/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/main.js deleted file mode 100755 index 802f83fc6..000000000 --- a/packages/commonjs/test/fixtures/function/unsupported-dynamic-require/main.js +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable import/no-dynamic-require, global-require */ - -t.throws(() => require(getRequireTarget()), { - message: - 'Could not dynamically require "foo-bar". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.' -}); - -function getRequireTarget() { - return 'foo-bar'; -} diff --git a/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule2.js b/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule2.js index f470282a9..28a021e39 100755 --- a/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule2.js +++ b/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule2.js @@ -1,3 +1,3 @@ -module.exports = function() { +module.exports = function () { return 'Hello there'; }; diff --git a/packages/commonjs/test/fixtures/samples/umd/correct-scoping.js b/packages/commonjs/test/fixtures/samples/umd/correct-scoping.js index a4816cf64..c1008ba9d 100644 --- a/packages/commonjs/test/fixtures/samples/umd/correct-scoping.js +++ b/packages/commonjs/test/fixtures/samples/umd/correct-scoping.js @@ -1,5 +1,5 @@ if (typeof require === 'function') { - module.exports = (function(require) { + module.exports = (function (require) { return typeof require; })({}); } diff --git a/packages/commonjs/test/form.js b/packages/commonjs/test/form.js index 656e92fa2..ae245863a 100644 --- a/packages/commonjs/test/form.js +++ b/packages/commonjs/test/form.js @@ -74,8 +74,15 @@ readdirSync('./fixtures/form').forEach((dir) => { // this will benefit issues like `form/try-catch-remove` where whitespace is left in the line, // and testing on windows (\r\n) t.is( - actual.split('\n').map(x => x.trimEnd()).join('\n'), - expected.split('\n').map(x => x.trimEnd()).join('\n')); + actual + .split('\n') + .map((x) => x.trimEnd()) + .join('\n'), + expected + .split('\n') + .map((x) => x.trimEnd()) + .join('\n') + ); } }); }); diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 1717deded..dd86c2686 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -423,7 +423,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -626,7 +626,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -831,7 +831,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -884,206 +884,6 @@ Generated by [AVA](https://avajs.dev). `, } -## dynamic-require-absolute-paths - -> Snapshot 1 - - { - 'main.js': `'use strict';␊ - ␊ - var Path = require('path');␊ - ␊ - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }␊ - ␊ - var Path__default = /*#__PURE__*/_interopDefaultLegacy(Path);␊ - ␊ - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ - ␊ - function commonjsRegister (path, loader) {␊ - DYNAMIC_REQUIRE_LOADERS[path] = loader;␊ - }␊ - ␊ - const DYNAMIC_REQUIRE_LOADERS = Object.create(null);␊ - const DYNAMIC_REQUIRE_CACHE = Object.create(null);␊ - const DEFAULT_PARENT_MODULE = {␊ - id: '<' + 'rollup>', exports: {}, parent: undefined, filename: null, loaded: false, children: [], paths: []␊ - };␊ - const CHECKED_EXTENSIONS = ['', '.js', '.json'];␊ - ␊ - function normalize (path) {␊ - path = path.replace(/\\\\/g, '/');␊ - const parts = path.split('/');␊ - const slashed = parts[0] === '';␊ - for (let i = 1; i < parts.length; i++) {␊ - if (parts[i] === '.' || parts[i] === '') {␊ - parts.splice(i--, 1);␊ - }␊ - }␊ - for (let i = 1; i < parts.length; i++) {␊ - if (parts[i] !== '..') continue;␊ - if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {␊ - parts.splice(--i, 2);␊ - i--;␊ - }␊ - }␊ - path = parts.join('/');␊ - if (slashed && path[0] !== '/')␊ - path = '/' + path;␊ - else if (path.length === 0)␊ - path = '.';␊ - return path;␊ - }␊ - ␊ - function join () {␊ - if (arguments.length === 0)␊ - return '.';␊ - let joined;␊ - for (let i = 0; i < arguments.length; ++i) {␊ - let arg = arguments[i];␊ - if (arg.length > 0) {␊ - if (joined === undefined)␊ - joined = arg;␊ - else␊ - joined += '/' + arg;␊ - }␊ - }␊ - if (joined === undefined)␊ - return '.';␊ - ␊ - return joined;␊ - }␊ - ␊ - function isPossibleNodeModulesPath (modulePath) {␊ - let c0 = modulePath[0];␊ - if (c0 === '/' || c0 === '\\\\') return false;␊ - let c1 = modulePath[1], c2 = modulePath[2];␊ - if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) ||␊ - (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false;␊ - if (c1 === ':' && (c2 === '/' || c2 === '\\\\'))␊ - return false;␊ - return true;␊ - }␊ - ␊ - function dirname (path) {␊ - if (path.length === 0)␊ - return '.';␊ - ␊ - let i = path.length - 1;␊ - while (i > 0) {␊ - const c = path.charCodeAt(i);␊ - if ((c === 47 || c === 92) && i !== path.length - 1)␊ - break;␊ - i--;␊ - }␊ - ␊ - if (i > 0)␊ - return path.substr(0, i);␊ - ␊ - if (path.chartCodeAt(0) === 47 || path.chartCodeAt(0) === 92)␊ - return path.charAt(0);␊ - ␊ - return '.';␊ - }␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir, testCache) {␊ - const shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ - path = normalize(path);␊ - let relPath;␊ - if (path[0] === '/') {␊ - originalModuleDir = '/';␊ - }␊ - while (true) {␊ - if (!shouldTryNodeModules) {␊ - relPath = originalModuleDir ? normalize(originalModuleDir + '/' + path) : path;␊ - } else if (originalModuleDir) {␊ - relPath = normalize(originalModuleDir + '/node_modules/' + path);␊ - } else {␊ - relPath = normalize(join('node_modules', path));␊ - }␊ - ␊ - if (relPath.endsWith('/..')) {␊ - break; // Travelled too far up, avoid infinite loop␊ - }␊ - ␊ - for (let extensionIndex = 0; extensionIndex < CHECKED_EXTENSIONS.length; extensionIndex++) {␊ - const resolvedPath = relPath + CHECKED_EXTENSIONS[extensionIndex];␊ - if (DYNAMIC_REQUIRE_CACHE[resolvedPath]) {␊ - return resolvedPath;␊ - } if (DYNAMIC_REQUIRE_LOADERS[resolvedPath]) {␊ - return resolvedPath;␊ - } }␊ - if (!shouldTryNodeModules) break;␊ - const nextDir = normalize(originalModuleDir + '/..');␊ - if (nextDir === originalModuleDir) break;␊ - originalModuleDir = nextDir;␊ - }␊ - return null;␊ - }␊ - ␊ - function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - function commonjsRequire (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - let cachedModule = DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ - if (cachedModule) return cachedModule.exports;␊ - const loader = DYNAMIC_REQUIRE_LOADERS[resolvedPath];␊ - if (loader) {␊ - DYNAMIC_REQUIRE_CACHE[resolvedPath] = cachedModule = {␊ - id: resolvedPath,␊ - filename: resolvedPath,␊ - path: dirname(resolvedPath),␊ - exports: {},␊ - parent: DEFAULT_PARENT_MODULE,␊ - loaded: false,␊ - children: [],␊ - paths: [],␊ - require: function (path, base) {␊ - return commonjsRequire(path, (base === undefined || base === null) ? cachedModule.path : base);␊ - }␊ - };␊ - try {␊ - loader.call(commonjsGlobal, cachedModule, cachedModule.exports);␊ - } catch (error) {␊ - delete DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ - throw error;␊ - }␊ - cachedModule.loaded = true;␊ - return cachedModule.exports;␊ - } }␊ - return require(path);␊ - }␊ - ␊ - commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-absolute-paths/submodule.js", function (module, exports) {␊ - module.exports = 'submodule';␊ - ␊ - });␊ - ␊ - /* eslint-disable import/no-dynamic-require, global-require */␊ - ␊ - ␊ - ␊ - const basePath = `${process.cwd()}/fixtures/function/dynamic-require-absolute-paths`;␊ - ␊ - t.is(commonjsRequire(Path__default['default'].resolve(`${basePath}/submodule.js`),"/$$rollup_base$$/fixtures/function/dynamic-require-absolute-paths"), 'submodule');␊ - ␊ - var main = {␊ - ␊ - };␊ - ␊ - module.exports = main;␊ - `, - } - ## dynamic-require-cache-reference > Snapshot 1 @@ -1251,7 +1051,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -1327,7 +1127,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - 'lib2-4ae05749.js': `'use strict';␊ + 'lib2-8f3d0aad.js': `'use strict';␊ ␊ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ ␊ @@ -1489,7 +1289,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -1522,7 +1322,7 @@ Generated by [AVA](https://avajs.dev). `, 'main.js': `'use strict';␊ ␊ - var lib2 = require('./lib2-4ae05749.js');␊ + var lib2 = require('./lib2-8f3d0aad.js');␊ ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ @@ -1539,7 +1339,7 @@ Generated by [AVA](https://avajs.dev). `, 'main2.js': `'use strict';␊ ␊ - require('./lib2-4ae05749.js');␊ + require('./lib2-8f3d0aad.js');␊ ␊ `, } @@ -1711,7 +1511,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -1901,7 +1701,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -1936,6 +1736,30 @@ Generated by [AVA](https://avajs.dev). `, } +## dynamic-require-fallback + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule(withName) {␊ + return require(withName);␊ + }␊ + ␊ + // The bundled code will run from test/helpers/util.js␊ + t.is(takeModule('../fixtures/function/dynamic-require-fallback/dep.js'), 'dep');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + ## dynamic-require-from-es-import > Snapshot 1 @@ -2103,7 +1927,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -2287,7 +2111,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -2317,15 +2141,10 @@ Generated by [AVA](https://avajs.dev). t.is(takeModule('submodule1.js'), 'submodule1');␊ t.is(takeModule('submodule2.js'), 'submodule2');␊ t.is(takeModule('extramodule1.js'), 'extramodule1');␊ - ␊ - let hasThrown = false;␊ - try {␊ - takeModule('extramodule2.js');␊ - } catch (error) {␊ - t.truthy(/Cannot find module '\\.\\/extramodule2\\.js'/.test(error.message));␊ - hasThrown = true;␊ - }␊ - t.truthy(hasThrown);␊ + t.throws(() => takeModule('extramodule2.js'), {␊ + message:␊ + 'Could not dynamically require "./extramodule2.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'␊ + });␊ ␊ var main = {␊ ␊ @@ -2502,7 +2321,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -2714,7 +2533,7 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ @@ -2731,22 +2550,485 @@ Generated by [AVA](https://avajs.dev). ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ - function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`,"/$$rollup_base$$/fixtures/function/dynamic-require-json");␊ - }␊ + function takeModule(withName) {␊ + return commonjsRequire(`./${withName}`,"/$$rollup_base$$/fixtures/function/dynamic-require-json");␊ + }␊ + ␊ + t.deepEqual(takeModule('dynamic.json'), { value: 'present' });␊ + t.deepEqual(takeModule('dynamic'), { value: 'present' });␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## dynamic-require-no-fallback + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function commonjsRequire (path) {␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + }␊ + ␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule(withName) {␊ + return commonjsRequire(withName);␊ + }␊ + ␊ + t.throws(() => takeModule('./dep.js'), {␊ + message:␊ + 'Could not dynamically require "./dep.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'␊ + });␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## dynamic-require-package + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ + ␊ + function commonjsRegister (path, loader) {␊ + DYNAMIC_REQUIRE_LOADERS[path] = loader;␊ + }␊ + ␊ + const DYNAMIC_REQUIRE_LOADERS = Object.create(null);␊ + const DYNAMIC_REQUIRE_CACHE = Object.create(null);␊ + const DEFAULT_PARENT_MODULE = {␊ + id: '<' + 'rollup>', exports: {}, parent: undefined, filename: null, loaded: false, children: [], paths: []␊ + };␊ + const CHECKED_EXTENSIONS = ['', '.js', '.json'];␊ + ␊ + function normalize (path) {␊ + path = path.replace(/\\\\/g, '/');␊ + const parts = path.split('/');␊ + const slashed = parts[0] === '';␊ + for (let i = 1; i < parts.length; i++) {␊ + if (parts[i] === '.' || parts[i] === '') {␊ + parts.splice(i--, 1);␊ + }␊ + }␊ + for (let i = 1; i < parts.length; i++) {␊ + if (parts[i] !== '..') continue;␊ + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {␊ + parts.splice(--i, 2);␊ + i--;␊ + }␊ + }␊ + path = parts.join('/');␊ + if (slashed && path[0] !== '/')␊ + path = '/' + path;␊ + else if (path.length === 0)␊ + path = '.';␊ + return path;␊ + }␊ + ␊ + function join () {␊ + if (arguments.length === 0)␊ + return '.';␊ + let joined;␊ + for (let i = 0; i < arguments.length; ++i) {␊ + let arg = arguments[i];␊ + if (arg.length > 0) {␊ + if (joined === undefined)␊ + joined = arg;␊ + else␊ + joined += '/' + arg;␊ + }␊ + }␊ + if (joined === undefined)␊ + return '.';␊ + ␊ + return joined;␊ + }␊ + ␊ + function isPossibleNodeModulesPath (modulePath) {␊ + let c0 = modulePath[0];␊ + if (c0 === '/' || c0 === '\\\\') return false;␊ + let c1 = modulePath[1], c2 = modulePath[2];␊ + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) ||␊ + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false;␊ + if (c1 === ':' && (c2 === '/' || c2 === '\\\\'))␊ + return false;␊ + return true;␊ + }␊ + ␊ + function dirname (path) {␊ + if (path.length === 0)␊ + return '.';␊ + ␊ + let i = path.length - 1;␊ + while (i > 0) {␊ + const c = path.charCodeAt(i);␊ + if ((c === 47 || c === 92) && i !== path.length - 1)␊ + break;␊ + i--;␊ + }␊ + ␊ + if (i > 0)␊ + return path.substr(0, i);␊ + ␊ + if (path.chartCodeAt(0) === 47 || path.chartCodeAt(0) === 92)␊ + return path.charAt(0);␊ + ␊ + return '.';␊ + }␊ + ␊ + function commonjsResolveImpl (path, originalModuleDir, testCache) {␊ + const shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ + path = normalize(path);␊ + let relPath;␊ + if (path[0] === '/') {␊ + originalModuleDir = '/';␊ + }␊ + while (true) {␊ + if (!shouldTryNodeModules) {␊ + relPath = originalModuleDir ? normalize(originalModuleDir + '/' + path) : path;␊ + } else if (originalModuleDir) {␊ + relPath = normalize(originalModuleDir + '/node_modules/' + path);␊ + } else {␊ + relPath = normalize(join('node_modules', path));␊ + }␊ + ␊ + if (relPath.endsWith('/..')) {␊ + break; // Travelled too far up, avoid infinite loop␊ + }␊ + ␊ + for (let extensionIndex = 0; extensionIndex < CHECKED_EXTENSIONS.length; extensionIndex++) {␊ + const resolvedPath = relPath + CHECKED_EXTENSIONS[extensionIndex];␊ + if (DYNAMIC_REQUIRE_CACHE[resolvedPath]) {␊ + return resolvedPath;␊ + } if (DYNAMIC_REQUIRE_LOADERS[resolvedPath]) {␊ + return resolvedPath;␊ + } }␊ + if (!shouldTryNodeModules) break;␊ + const nextDir = normalize(originalModuleDir + '/..');␊ + if (nextDir === originalModuleDir) break;␊ + originalModuleDir = nextDir;␊ + }␊ + return null;␊ + }␊ + ␊ + function commonjsResolve (path, originalModuleDir) {␊ + const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + }␊ + ␊ + function commonjsRequire (path, originalModuleDir) {␊ + const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + let cachedModule = DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ + if (cachedModule) return cachedModule.exports;␊ + const loader = DYNAMIC_REQUIRE_LOADERS[resolvedPath];␊ + if (loader) {␊ + DYNAMIC_REQUIRE_CACHE[resolvedPath] = cachedModule = {␊ + id: resolvedPath,␊ + filename: resolvedPath,␊ + path: dirname(resolvedPath),␊ + exports: {},␊ + parent: DEFAULT_PARENT_MODULE,␊ + loaded: false,␊ + children: [],␊ + paths: [],␊ + require: function (path, base) {␊ + return commonjsRequire(path, (base === undefined || base === null) ? cachedModule.path : base);␊ + }␊ + };␊ + try {␊ + loader.call(commonjsGlobal, cachedModule, cachedModule.exports);␊ + } catch (error) {␊ + delete DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ + throw error;␊ + }␊ + cachedModule.loaded = true;␊ + return cachedModule.exports;␊ + } }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + }␊ + ␊ + commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ + commonjsRequire.resolve = commonjsResolve;␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/entry.js", function (module, exports) {␊ + module.exports = 'same-directory';␊ + ␊ + });␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub/entry.js", function (module, exports) {␊ + module.exports = 'sub';␊ + ␊ + });␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js", function (module, exports) {␊ + module.exports = 'custom-module';␊ + ␊ + });␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/entry.js", null);␊ + });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub/entry.js", null);␊ + });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js", null);␊ + });␊ + ␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule(name) {␊ + return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-package/sub");␊ + }␊ + ␊ + var sub = {␊ + parent: takeModule('..'),␊ + customModule: takeModule('custom-module')␊ + };␊ + ␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule$1(name) {␊ + return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-package");␊ + }␊ + ␊ + t.is(takeModule$1('.'), 'same-directory');␊ + t.is(takeModule$1('./'), 'same-directory');␊ + t.is(takeModule$1('.//'), 'same-directory');␊ + ␊ + t.is(takeModule$1('./sub'), 'sub');␊ + ␊ + t.is(takeModule$1('custom-module'), 'custom-module');␊ + t.deepEqual(sub, { parent: 'same-directory', customModule: 'custom-module' });␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## dynamic-require-package-sub + +> Snapshot 1 + + { + 'entry.js': `'use strict';␊ + ␊ + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ + ␊ + function commonjsRegister (path, loader) {␊ + DYNAMIC_REQUIRE_LOADERS[path] = loader;␊ + }␊ + ␊ + const DYNAMIC_REQUIRE_LOADERS = Object.create(null);␊ + const DYNAMIC_REQUIRE_CACHE = Object.create(null);␊ + const DEFAULT_PARENT_MODULE = {␊ + id: '<' + 'rollup>', exports: {}, parent: undefined, filename: null, loaded: false, children: [], paths: []␊ + };␊ + const CHECKED_EXTENSIONS = ['', '.js', '.json'];␊ + ␊ + function normalize (path) {␊ + path = path.replace(/\\\\/g, '/');␊ + const parts = path.split('/');␊ + const slashed = parts[0] === '';␊ + for (let i = 1; i < parts.length; i++) {␊ + if (parts[i] === '.' || parts[i] === '') {␊ + parts.splice(i--, 1);␊ + }␊ + }␊ + for (let i = 1; i < parts.length; i++) {␊ + if (parts[i] !== '..') continue;␊ + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {␊ + parts.splice(--i, 2);␊ + i--;␊ + }␊ + }␊ + path = parts.join('/');␊ + if (slashed && path[0] !== '/')␊ + path = '/' + path;␊ + else if (path.length === 0)␊ + path = '.';␊ + return path;␊ + }␊ + ␊ + function join () {␊ + if (arguments.length === 0)␊ + return '.';␊ + let joined;␊ + for (let i = 0; i < arguments.length; ++i) {␊ + let arg = arguments[i];␊ + if (arg.length > 0) {␊ + if (joined === undefined)␊ + joined = arg;␊ + else␊ + joined += '/' + arg;␊ + }␊ + }␊ + if (joined === undefined)␊ + return '.';␊ + ␊ + return joined;␊ + }␊ + ␊ + function isPossibleNodeModulesPath (modulePath) {␊ + let c0 = modulePath[0];␊ + if (c0 === '/' || c0 === '\\\\') return false;␊ + let c1 = modulePath[1], c2 = modulePath[2];␊ + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) ||␊ + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false;␊ + if (c1 === ':' && (c2 === '/' || c2 === '\\\\'))␊ + return false;␊ + return true;␊ + }␊ + ␊ + function dirname (path) {␊ + if (path.length === 0)␊ + return '.';␊ + ␊ + let i = path.length - 1;␊ + while (i > 0) {␊ + const c = path.charCodeAt(i);␊ + if ((c === 47 || c === 92) && i !== path.length - 1)␊ + break;␊ + i--;␊ + }␊ + ␊ + if (i > 0)␊ + return path.substr(0, i);␊ + ␊ + if (path.chartCodeAt(0) === 47 || path.chartCodeAt(0) === 92)␊ + return path.charAt(0);␊ + ␊ + return '.';␊ + }␊ + ␊ + function commonjsResolveImpl (path, originalModuleDir, testCache) {␊ + const shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ + path = normalize(path);␊ + let relPath;␊ + if (path[0] === '/') {␊ + originalModuleDir = '/';␊ + }␊ + while (true) {␊ + if (!shouldTryNodeModules) {␊ + relPath = originalModuleDir ? normalize(originalModuleDir + '/' + path) : path;␊ + } else if (originalModuleDir) {␊ + relPath = normalize(originalModuleDir + '/node_modules/' + path);␊ + } else {␊ + relPath = normalize(join('node_modules', path));␊ + }␊ + ␊ + if (relPath.endsWith('/..')) {␊ + break; // Travelled too far up, avoid infinite loop␊ + }␊ + ␊ + for (let extensionIndex = 0; extensionIndex < CHECKED_EXTENSIONS.length; extensionIndex++) {␊ + const resolvedPath = relPath + CHECKED_EXTENSIONS[extensionIndex];␊ + if (DYNAMIC_REQUIRE_CACHE[resolvedPath]) {␊ + return resolvedPath;␊ + } if (DYNAMIC_REQUIRE_LOADERS[resolvedPath]) {␊ + return resolvedPath;␊ + } }␊ + if (!shouldTryNodeModules) break;␊ + const nextDir = normalize(originalModuleDir + '/..');␊ + if (nextDir === originalModuleDir) break;␊ + originalModuleDir = nextDir;␊ + }␊ + return null;␊ + }␊ + ␊ + function commonjsResolve (path, originalModuleDir) {␊ + const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + }␊ + ␊ + function commonjsRequire (path, originalModuleDir) {␊ + const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + let cachedModule = DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ + if (cachedModule) return cachedModule.exports;␊ + const loader = DYNAMIC_REQUIRE_LOADERS[resolvedPath];␊ + if (loader) {␊ + DYNAMIC_REQUIRE_CACHE[resolvedPath] = cachedModule = {␊ + id: resolvedPath,␊ + filename: resolvedPath,␊ + path: dirname(resolvedPath),␊ + exports: {},␊ + parent: DEFAULT_PARENT_MODULE,␊ + loaded: false,␊ + children: [],␊ + paths: [],␊ + require: function (path, base) {␊ + return commonjsRequire(path, (base === undefined || base === null) ? cachedModule.path : base);␊ + }␊ + };␊ + try {␊ + loader.call(commonjsGlobal, cachedModule, cachedModule.exports);␊ + } catch (error) {␊ + delete DYNAMIC_REQUIRE_CACHE[resolvedPath];␊ + throw error;␊ + }␊ + cachedModule.loaded = true;␊ + return cachedModule.exports;␊ + } }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + }␊ + ␊ + commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ + commonjsRequire.resolve = commonjsResolve;␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/entry.js", function (module, exports) {␊ + module.exports = 'custom-module';␊ + ␊ + });␊ + ␊ + var main = "./entry.js";␊ + var require$$0 = {␊ + main: main␊ + };␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/package.json", function (module, exports) {␊ + module.exports = require$$0;␊ + });␊ + ␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/entry.js", null);␊ + });␊ ␊ - t.deepEqual(takeModule('dynamic.json'), { value: 'present' });␊ - t.deepEqual(takeModule('dynamic'), { value: 'present' });␊ + t.is(commonjsRequire("custom-module", "/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/sub"), 'custom-module');␊ ␊ - var main = {␊ + var entry = {␊ ␊ };␊ ␊ - module.exports = main;␊ + module.exports = entry;␊ `, } -## dynamic-require-package +## dynamic-require-relative-paths > Snapshot 1 @@ -2913,62 +3195,32 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ commonjsRequire.resolve = commonjsResolve;␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/entry.js", function (module, exports) {␊ - module.exports = 'same-directory';␊ - ␊ - });␊ - ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub/entry.js", function (module, exports) {␊ - module.exports = 'sub';␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/submodule.js", function (module, exports) {␊ + module.exports = 'submodule';␊ ␊ });␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js", function (module, exports) {␊ - module.exports = 'custom-module';␊ - ␊ - });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/subsub/subsubmodule.js", function (module, exports) {␊ + module.exports = 'subsubmodule';␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/entry.js", null);␊ - });␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/sub/entry.js", null);␊ - });␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js", null);␊ });␊ ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ - function takeModule(name) {␊ - return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-package/sub");␊ - }␊ - ␊ - var sub = {␊ - parent: takeModule('..'),␊ - customModule: takeModule('custom-module')␊ - };␊ - ␊ - /* eslint-disable import/no-dynamic-require, global-require */␊ - ␊ - function takeModule$1(name) {␊ - return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-package");␊ + function takeModuleWithDelimiter(name, delimiter) {␊ + return commonjsRequire(`.${delimiter}${name.replace(/=/g, delimiter)}`,"/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths");␊ }␊ ␊ - t.is(takeModule$1('.'), 'same-directory');␊ - t.is(takeModule$1('./'), 'same-directory');␊ - t.is(takeModule$1('.//'), 'same-directory');␊ - ␊ - t.is(takeModule$1('./sub'), 'sub');␊ - ␊ - t.is(takeModule$1('custom-module'), 'custom-module');␊ - t.deepEqual(sub, { parent: 'same-directory', customModule: 'custom-module' });␊ + t.is(takeModuleWithDelimiter('sub=submodule.js', '/'), 'submodule');␊ + t.is(takeModuleWithDelimiter('sub=subsub=subsubmodule.js', '/'), 'subsubmodule');␊ + t.is(takeModuleWithDelimiter('sub=submodule.js', '\\\\'), 'submodule');␊ + t.is(takeModuleWithDelimiter('sub=subsub=subsubmodule.js', '\\\\'), 'subsubmodule');␊ ␊ var main = {␊ ␊ @@ -2978,12 +3230,12 @@ Generated by [AVA](https://avajs.dev). `, } -## dynamic-require-package-sub +## dynamic-require-resolve-index > Snapshot 1 { - 'entry.js': `'use strict';␊ + 'main.js': `'use strict';␊ ␊ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ ␊ @@ -3145,41 +3397,72 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ commonjsRequire.resolve = commonjsResolve;␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/entry.js", function (module, exports) {␊ - module.exports = 'custom-module';␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/index.js", function (module, exports) {␊ + module.exports = 'same-directory';␊ ␊ });␊ ␊ - var main = "./entry.js";␊ - var require$$0 = {␊ - main: main␊ - };␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub/index.js", function (module, exports) {␊ + module.exports = 'sub';␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/package.json", function (module, exports) {␊ - module.exports = require$$0;␊ });␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/node_modules/custom-module/entry.js", null);␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js", function (module, exports) {␊ + module.exports = 'custom-module';␊ + ␊ });␊ ␊ - t.is(commonjsRequire("custom-module", "/$$rollup_base$$/fixtures/function/dynamic-require-package-sub/sub"), 'custom-module');␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/index.js", null);␊ + });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub/index.js", null);␊ + });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js", null);␊ + });␊ ␊ - var entry = {␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule(name) {␊ + return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub");␊ + }␊ ␊ + var sub = {␊ + parent: takeModule('..'),␊ + customModule: takeModule('custom-module')␊ };␊ ␊ - module.exports = entry;␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule$1(name) {␊ + return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index");␊ + }␊ + ␊ + t.is(takeModule$1('.'), 'same-directory');␊ + t.is(takeModule$1('./'), 'same-directory');␊ + t.is(takeModule$1('.//'), 'same-directory');␊ + ␊ + t.is(takeModule$1('./sub'), 'sub');␊ + ␊ + t.is(takeModule$1('custom-module'), 'custom-module');␊ + t.deepEqual(sub, { parent: 'same-directory', customModule: 'custom-module' });␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ `, } -## dynamic-require-relative-paths +## dynamic-require-resolve-reference > Snapshot 1 @@ -3346,32 +3629,37 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ commonjsRequire.resolve = commonjsResolve;␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/submodule.js", function (module, exports) {␊ - module.exports = 'submodule';␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js", function (module, exports) {␊ + module.exports = {␊ + foo: 'bar',␊ + };␊ ␊ });␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/subsub/subsubmodule.js", function (module, exports) {␊ - module.exports = 'subsubmodule';␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js", function (module, exports) {␊ + module.exports = () => {␊ + return commonjsRequire.resolve('custom-module',"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2");␊ + };␊ ␊ });␊ ␊ - /* eslint-disable import/no-dynamic-require, global-require */␊ - ␊ - function takeModuleWithDelimiter(name, delimiter) {␊ - return commonjsRequire(`.${delimiter}${name.replace(/=/g, delimiter)}`,"/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths");␊ - }␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js", null);␊ + });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2", function (module, exports) {␊ + module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js", null);␊ + });␊ ␊ - t.is(takeModuleWithDelimiter('sub=submodule.js', '/'), 'submodule');␊ - t.is(takeModuleWithDelimiter('sub=subsub=subsubmodule.js', '/'), 'subsubmodule');␊ - t.is(takeModuleWithDelimiter('sub=submodule.js', '\\\\'), 'submodule');␊ - t.is(takeModuleWithDelimiter('sub=subsub=subsubmodule.js', '\\\\'), 'subsubmodule');␊ + t.is(␊ + commonjsRequire("custom-module2", "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference")(),␊ + '/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module'␊ + );␊ ␊ var main = {␊ ␊ @@ -3381,7 +3669,7 @@ Generated by [AVA](https://avajs.dev). `, } -## dynamic-require-resolve-index +## dynamic-require-targets-fallback > Snapshot 1 @@ -3554,56 +3842,20 @@ Generated by [AVA](https://avajs.dev). commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ commonjsRequire.resolve = commonjsResolve;␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/index.js", function (module, exports) {␊ - module.exports = 'same-directory';␊ - ␊ - });␊ - ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub/index.js", function (module, exports) {␊ - module.exports = 'sub';␊ - ␊ - });␊ - ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js", function (module, exports) {␊ - module.exports = 'custom-module';␊ - ␊ - });␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-targets-fallback/dep1.js", function (module, exports) {␊ + module.exports = 'dep';␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/index.js", null);␊ - });␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub/index.js", null);␊ - });␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js", null);␊ });␊ ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ - function takeModule(name) {␊ - return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub");␊ - }␊ - ␊ - var sub = {␊ - parent: takeModule('..'),␊ - customModule: takeModule('custom-module')␊ - };␊ - ␊ - /* eslint-disable import/no-dynamic-require, global-require */␊ - ␊ - function takeModule$1(name) {␊ - return commonjsRequire(name,"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index");␊ + function takeModule(withName) {␊ + return commonjsRequire(withName,"/$$rollup_base$$/fixtures/function/dynamic-require-targets-fallback");␊ }␊ ␊ - t.is(takeModule$1('.'), 'same-directory');␊ - t.is(takeModule$1('./'), 'same-directory');␊ - t.is(takeModule$1('.//'), 'same-directory');␊ - ␊ - t.is(takeModule$1('./sub'), 'sub');␊ - ␊ - t.is(takeModule$1('custom-module'), 'custom-module');␊ - t.deepEqual(sub, { parent: 'same-directory', customModule: 'custom-module' });␊ + t.is(takeModule('./dep1.js'), 'dep');␊ + // The bundled code will run from test/helpers/util.js␊ + t.is(takeModule('../fixtures/function/dynamic-require-targets-fallback/dep2.js'), 'dep');␊ ␊ var main = {␊ ␊ @@ -3613,7 +3865,7 @@ Generated by [AVA](https://avajs.dev). `, } -## dynamic-require-resolve-reference +## dynamic-require-targets-no-fallback > Snapshot 1 @@ -3780,38 +4032,29 @@ Generated by [AVA](https://avajs.dev). cachedModule.loaded = true;␊ return cachedModule.exports;␊ } }␊ - return require(path);␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ commonjsRequire.cache = DYNAMIC_REQUIRE_CACHE;␊ commonjsRequire.resolve = commonjsResolve;␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js", function (module, exports) {␊ - module.exports = {␊ - foo: 'bar',␊ - };␊ + commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-targets-no-fallback/dep1.js", function (module, exports) {␊ + module.exports = 'dep';␊ ␊ });␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js", function (module, exports) {␊ - module.exports = () => {␊ - return commonjsRequire.resolve('custom-module',"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2");␊ - };␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ - });␊ + function takeModule(withName) {␊ + return commonjsRequire(withName,"/$$rollup_base$$/fixtures/function/dynamic-require-targets-no-fallback");␊ + }␊ ␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js", null);␊ - });␊ - commonjsRegister("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2", function (module, exports) {␊ - module.exports = commonjsRequire("/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js", null);␊ + t.is(takeModule('./dep1.js'), 'dep');␊ + t.throws(() => takeModule('./dep2.js'), {␊ + message:␊ + 'Could not dynamically require "./dep2.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'␊ });␊ ␊ - t.is(␊ - commonjsRequire("custom-module2", "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference")(),␊ - '/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module'␊ - );␊ - ␊ var main = {␊ ␊ };␊ @@ -4275,7 +4518,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ var encode = createCommonjsModule(function (module, exports) {␊ - exports.encodeURIComponent = function() {␊ + exports.encodeURIComponent = function () {␊ return encodeURIComponent(this.str);␊ };␊ ␊ @@ -5101,7 +5344,7 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ - var multiply = function(a, b) {␊ + var multiply = function (a, b) {␊ return a * b;␊ };␊ ␊ @@ -5109,7 +5352,7 @@ Generated by [AVA](https://avajs.dev). ␊ /* eslint-disable global-require */␊ ␊ - var main = function() {␊ + var main = function () {␊ return multiply(2, foo);␊ };␊ ␊ @@ -6567,8 +6810,8 @@ Generated by [AVA](https://avajs.dev). return fn(module, module.exports), module.exports;␊ }␊ ␊ - function commonjsRequire (target) {␊ - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');␊ + function commonjsRequire (path) {␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ var foo = createCommonjsModule(function (module) {␊ @@ -6595,8 +6838,8 @@ Generated by [AVA](https://avajs.dev). return fn(module, module.exports), module.exports;␊ }␊ ␊ - function commonjsRequire (target) {␊ - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');␊ + function commonjsRequire (path) {␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ ␊ var foo = createCommonjsModule(function (module) {␊ @@ -6633,33 +6876,3 @@ Generated by [AVA](https://avajs.dev). module.exports = main;␊ `, } - -## unsupported-dynamic-require - -> Snapshot 1 - - { - 'main.js': `'use strict';␊ - ␊ - function commonjsRequire (target) {␊ - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');␊ - }␊ - ␊ - /* eslint-disable import/no-dynamic-require, global-require */␊ - ␊ - t.throws(() => commonjsRequire(getRequireTarget()), {␊ - message:␊ - 'Could not dynamically require "foo-bar". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'␊ - });␊ - ␊ - function getRequireTarget() {␊ - return 'foo-bar';␊ - }␊ - ␊ - var main = {␊ - ␊ - };␊ - ␊ - module.exports = main;␊ - `, - } diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 2522d27a68b0de360041b9dc7a42ff59ad3ca268..a557beb7ccfab4810bd44020717754a39ce5a0ce 100644 GIT binary patch literal 15704 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 LMPR3`00Q`5)Ad{% literal 15006 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 aK8m|9otsYeuk6`3I0BKR?07I3$bSQEU11jh diff --git a/packages/commonjs/test/types.ts b/packages/commonjs/test/types.ts index 49fc2decf..d119c561f 100644 --- a/packages/commonjs/test/types.ts +++ b/packages/commonjs/test/types.ts @@ -15,6 +15,7 @@ const config: RollupOptions = { exclude: ['node_modules/foo/**', 'node_modules/bar/**', /node_modules/], extensions: ['.js', '.coffee'], ignoreGlobal: false, + ignoreDynamicRequires: true, requireReturnsDefault: 'auto', sourceMap: false, transformMixedEsModules: false, diff --git a/packages/commonjs/types/index.d.ts b/packages/commonjs/types/index.d.ts index 87b0b3f61..2b0b06797 100644 --- a/packages/commonjs/types/index.d.ts +++ b/packages/commonjs/types/index.d.ts @@ -35,10 +35,23 @@ interface RollupCommonJSOptions { */ ignoreGlobal?: boolean; /** - * If false, skips source map generation for CommonJS modules. This will improve performance. + * If false, skips source map generation for CommonJS modules. This will + * improve performance. * @default true */ sourceMap?: boolean; + /** + * Some `require` calls cannot be resolved statically to be translated to + * imports. + * When this option is set to `false`, the generated code will either + * directly throw an error when such a call is encountered or, when + * `dynamicRequireTargets` is used, when such a call cannot be resolved with a + * configured dynamic require target. + * Setting this option to `true` will instead leave the `require` call in the + * code or use it as a fallback for `dynamicRequireTargets`. + * @default false + */ + ignoreDynamicRequires?: boolean; /** * Instructs the plugin whether to enable mixed module transformations. This * is useful in scenarios with modules that contain a mix of ES `import` From 312fbc2d0fc1e6c58dc9a73edbd255f567127120 Mon Sep 17 00:00:00 2001 From: Liam McLoughlin Date: Tue, 16 Mar 2021 13:30:28 +0000 Subject: [PATCH 6/9] fix(node-resolve): fs.exists is incorrectly promisified (#835) Co-authored-by: Liam McLoughlin --- packages/node-resolve/src/fs.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/node-resolve/src/fs.js b/packages/node-resolve/src/fs.js index 11fa93067..a0b9346a5 100644 --- a/packages/node-resolve/src/fs.js +++ b/packages/node-resolve/src/fs.js @@ -2,8 +2,16 @@ import fs from 'fs'; import { promisify } from 'util'; -export const exists = promisify(fs.exists); +export const access = promisify(fs.access); export const readFile = promisify(fs.readFile); export const realpath = promisify(fs.realpath); export { realpathSync } from 'fs'; export const stat = promisify(fs.stat); +export async function exists(filePath) { + try { + await access(filePath); + return true; + } catch { + return false; + } +} From 7426b1e49c4a6766369707878e6abb5f31050a2b Mon Sep 17 00:00:00 2001 From: shellscape Date: Fri, 26 Mar 2021 14:44:00 -0400 Subject: [PATCH 7/9] chore(release): node-resolve v11.2.1 --- packages/node-resolve/CHANGELOG.md | 8 ++++++++ packages/node-resolve/package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/node-resolve/CHANGELOG.md b/packages/node-resolve/CHANGELOG.md index 3c5b72103..727a4d954 100755 --- a/packages/node-resolve/CHANGELOG.md +++ b/packages/node-resolve/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-node-resolve ChangeLog +## v11.2.1 + +_2021-03-26_ + +### Bugfixes + +- fix: fs.exists is incorrectly promisified (#835) + ## v11.2.0 _2021-02-14_ diff --git a/packages/node-resolve/package.json b/packages/node-resolve/package.json index 3e33fde3f..d4c316e19 100644 --- a/packages/node-resolve/package.json +++ b/packages/node-resolve/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-node-resolve", - "version": "11.2.0", + "version": "11.2.1", "publishConfig": { "access": "public" }, From 6704d49cec6df1c9c3899e726ef2679eade1f0de Mon Sep 17 00:00:00 2001 From: shellscape Date: Fri, 26 Mar 2021 14:44:41 -0400 Subject: [PATCH 8/9] chore(release): typescript v8.2.1 --- packages/typescript/CHANGELOG.md | 9 +++++++++ packages/typescript/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/typescript/CHANGELOG.md b/packages/typescript/CHANGELOG.md index 3b26c14cc..3f847c8e1 100644 --- a/packages/typescript/CHANGELOG.md +++ b/packages/typescript/CHANGELOG.md @@ -1,5 +1,14 @@ # @rollup/plugin-typescript ChangeLog +## v8.2.1 + +_2021-03-26_ + +### Bugfixes + +- fix: bump TypeScript version (#818) +- fix: update readme and peerDeps version (#830) + ## v8.2.0 _2021-02-14_ diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 5a60bb633..ed03e77cb 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-typescript", - "version": "8.2.0", + "version": "8.2.1", "publishConfig": { "access": "public" }, From bed12cf8cdfa018455659cc18964717845b0ebe7 Mon Sep 17 00:00:00 2001 From: shellscape Date: Fri, 26 Mar 2021 14:45:26 -0400 Subject: [PATCH 9/9] chore(release): replace v2.4.2 --- packages/replace/CHANGELOG.md | 8 ++++++++ packages/replace/package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/replace/CHANGELOG.md b/packages/replace/CHANGELOG.md index 9994d28fa..d50a3780e 100755 --- a/packages/replace/CHANGELOG.md +++ b/packages/replace/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-replace ChangeLog +## v2.4.2 + +_2021-03-26_ + +### Updates + +- docs: document the `values` option (#814) + ## v2.4.1 _2021-02-22_ diff --git a/packages/replace/package.json b/packages/replace/package.json index fa9c415f1..ae1b15af4 100644 --- a/packages/replace/package.json +++ b/packages/replace/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-replace", - "version": "2.4.1", + "version": "2.4.2", "publishConfig": { "access": "public" },