diff --git a/packages/commonjs/README.md b/packages/commonjs/README.md index 715f7e778..9f8724204 100644 --- a/packages/commonjs/README.md +++ b/packages/commonjs/README.md @@ -42,6 +42,8 @@ export default { Then call `rollup` either via the [CLI](https://www.rollupjs.org/guide/en/#command-line-reference) or the [API](https://www.rollupjs.org/guide/en/#javascript-api). +When used together with the node-resolve plugin + ## Options ### `strictRequires` @@ -378,7 +380,7 @@ export default { format: 'iife', name: 'MyModule' }, - plugins: [resolve(), commonjs()] + plugins: [commonjs(), resolve()] }; ``` diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index 865e1f98f..04afd15db 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -60,7 +60,7 @@ }, "devDependencies": { "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^8.4.0", + "@rollup/plugin-node-resolve": "^13.0.6", "locate-character": "^2.0.5", "require-relative": "^0.8.7", "rollup": "^2.67.3", diff --git a/packages/commonjs/src/dynamic-modules.js b/packages/commonjs/src/dynamic-modules.js index 02b9845f3..272fb1374 100644 --- a/packages/commonjs/src/dynamic-modules.js +++ b/packages/commonjs/src/dynamic-modules.js @@ -1,10 +1,63 @@ +import { existsSync, readFileSync, statSync } from 'fs'; +import { join, resolve } from 'path'; + +import glob from 'glob'; + import { getVirtualPathForDynamicRequirePath, normalizePathSlashes } from './utils'; +function getPackageEntryPoint(dirPath) { + let entryPoint = 'index.js'; + + try { + if (existsSync(join(dirPath, 'package.json'))) { + entryPoint = + JSON.parse(readFileSync(join(dirPath, 'package.json'), { encoding: 'utf8' })).main || + entryPoint; + } + } catch (ignored) { + // ignored + } + + return entryPoint; +} + +function isDirectory(path) { + try { + if (statSync(path).isDirectory()) return true; + } catch (ignored) { + // Nothing to do here + } + return false; +} + +export function getDynamicRequireModules(patterns) { + const dynamicRequireModules = new Map(); + for (const pattern of !patterns || Array.isArray(patterns) ? patterns || [] : [patterns]) { + const isNegated = pattern.startsWith('!'); + const modifyMap = (targetPath, resolvedPath) => + isNegated + ? dynamicRequireModules.delete(targetPath) + : dynamicRequireModules.set(targetPath, resolvedPath); + for (const path of glob.sync(isNegated ? pattern.substr(1) : pattern)) { + const resolvedPath = resolve(path); + const requirePath = normalizePathSlashes(resolvedPath); + if (isDirectory(resolvedPath)) { + const modulePath = resolve(join(resolvedPath, getPackageEntryPoint(path))); + modifyMap(requirePath, modulePath); + modifyMap(normalizePathSlashes(modulePath), modulePath); + } else { + modifyMap(requirePath, resolvedPath); + } + } + } + return dynamicRequireModules; +} + 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.');`; -export function getDynamicRequireModules( +export function getDynamicModuleRegistry( isDynamicRequireModulesEnabled, - dynamicRequireModuleSet, + dynamicRequireModules, commonDir, ignoreDynamicRequires ) { @@ -13,8 +66,7 @@ export function getDynamicRequireModules( ${FAILED_REQUIRE_ERROR} }`; } - const dynamicModuleIds = [...dynamicRequireModuleSet]; - const dynamicModuleImports = dynamicModuleIds + const dynamicModuleImports = [...dynamicRequireModules.values()] .map( (id, index) => `import ${ @@ -22,7 +74,7 @@ export function getDynamicRequireModules( } from ${JSON.stringify(id)};` ) .join('\n'); - const dynamicModuleProps = dynamicModuleIds + const dynamicModuleProps = [...dynamicRequireModules.keys()] .map( (id, index) => `\t\t${JSON.stringify( diff --git a/packages/commonjs/src/dynamic-require-paths.js b/packages/commonjs/src/dynamic-require-paths.js deleted file mode 100644 index 849ab1a9e..000000000 --- a/packages/commonjs/src/dynamic-require-paths.js +++ /dev/null @@ -1,46 +0,0 @@ -import { existsSync, readFileSync, statSync } from 'fs'; -import { join, resolve } from 'path'; - -import glob from 'glob'; - -import { normalizePathSlashes } from './utils'; - -function getPackageEntryPoint(dirPath) { - let entryPoint = 'index.js'; - - try { - if (existsSync(join(dirPath, 'package.json'))) { - entryPoint = - JSON.parse(readFileSync(join(dirPath, 'package.json'), { encoding: 'utf8' })).main || - entryPoint; - } - } catch (ignored) { - // ignored - } - - return entryPoint; -} - -function isDirectory(path) { - try { - if (statSync(path).isDirectory()) return true; - } catch (ignored) { - // Nothing to do here - } - return false; -} - -export default function getDynamicRequireModuleSet(patterns) { - const dynamicRequireModuleSet = new Set(); - for (const pattern of !patterns || Array.isArray(patterns) ? patterns || [] : [patterns]) { - const isNegated = pattern.startsWith('!'); - const modifySet = Set.prototype[isNegated ? 'delete' : 'add'].bind(dynamicRequireModuleSet); - for (const path of glob.sync(isNegated ? pattern.substr(1) : pattern)) { - modifySet(normalizePathSlashes(resolve(path))); - if (isDirectory(path)) { - modifySet(normalizePathSlashes(resolve(join(path, getPackageEntryPoint(path))))); - } - } - } - return dynamicRequireModuleSet; -} diff --git a/packages/commonjs/src/generate-imports.js b/packages/commonjs/src/generate-imports.js index e90152d36..34f66e518 100644 --- a/packages/commonjs/src/generate-imports.js +++ b/packages/commonjs/src/generate-imports.js @@ -68,11 +68,11 @@ export function getRequireStringArg(node) { : node.arguments[0].quasis[0].value.cooked; } -export function hasDynamicModuleForPath(source, id, dynamicRequireModuleSet) { +export function hasDynamicModuleForPath(source, id, dynamicRequireModules) { if (!/^(?:\.{0,2}[/\\]|[A-Za-z]:[/\\])/.test(source)) { try { const resolvedPath = normalizePathSlashes(nodeResolveSync(source, { basedir: dirname(id) })); - if (dynamicRequireModuleSet.has(resolvedPath)) { + if (dynamicRequireModules.has(resolvedPath)) { return true; } } catch (ex) { @@ -85,7 +85,7 @@ export function hasDynamicModuleForPath(source, id, dynamicRequireModuleSet) { for (const attemptExt of ['', '.js', '.json']) { const resolvedPath = normalizePathSlashes(resolve(dirname(id), source + attemptExt)); - if (dynamicRequireModuleSet.has(resolvedPath)) { + if (dynamicRequireModules.has(resolvedPath)) { return true; } } @@ -119,6 +119,7 @@ export function getRequireHandlers() { const imports = []; imports.push(`import * as ${helpersName} from "${HELPERS_ID}";`); if (usesRequire) { + // TODO Lukas check where to import it from or change to usesDynamicRequire imports.push( `import { commonjsRequire as ${dynamicRequireName} } from "${DYNAMIC_MODULES_ID}";` ); diff --git a/packages/commonjs/src/helpers.js b/packages/commonjs/src/helpers.js index fe080ee0e..d2906ecf5 100644 --- a/packages/commonjs/src/helpers.js +++ b/packages/commonjs/src/helpers.js @@ -3,6 +3,7 @@ export const wrapId = (id, suffix) => `\0${id}${suffix}`; export const unwrapId = (wrappedId, suffix) => wrappedId.slice(1, -suffix.length); export const PROXY_SUFFIX = '?commonjs-proxy'; +export const WRAPPED_SUFFIX = '?commonjs-wrapped'; export const EXTERNAL_SUFFIX = '?commonjs-external'; export const EXPORTS_SUFFIX = '?commonjs-exports'; export const MODULE_SUFFIX = '?commonjs-module'; @@ -33,8 +34,14 @@ export function getDefaultExportFromNamespaceIfNotNamed (n) { } export function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); + var f = n.default; + if (typeof f == "function") { + var a = function () { + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); Object.keys(n).forEach(function (k) { var d = Object.getOwnPropertyDescriptor(n, k); Object.defineProperty(a, k, d.get ? d : { diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index 53be16678..fe73d0f8d 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -6,9 +6,8 @@ import getCommonDir from 'commondir'; import { peerDependencies } from '../package.json'; import analyzeTopLevelStatements from './analyze-top-level-statements'; -import { getDynamicRequireModules } from './dynamic-modules'; +import { getDynamicModuleRegistry, getDynamicRequireModules } from './dynamic-modules'; -import getDynamicRequireModuleSet from './dynamic-require-paths'; import { DYNAMIC_MODULES_ID, ES_IMPORT_SUFFIX, @@ -65,10 +64,11 @@ export default function commonjs(options = {}) { getWrappedIds, isRequiredId } = getResolveRequireSourcesAndGetMeta(extensions, detectCycles); - const dynamicRequireModuleSet = getDynamicRequireModuleSet(options.dynamicRequireTargets); - const isDynamicRequireModulesEnabled = dynamicRequireModuleSet.size > 0; + const dynamicRequireModules = getDynamicRequireModules(options.dynamicRequireTargets); + const isDynamicRequireModulesEnabled = dynamicRequireModules.size > 0; + // TODO Lukas do we need the CWD? const commonDir = isDynamicRequireModulesEnabled - ? getCommonDir(null, Array.from(dynamicRequireModuleSet).concat(process.cwd())) + ? getCommonDir(null, Array.from(dynamicRequireModules.keys()).concat(process.cwd())) : null; const esModulesWithDefaultExport = new Set(); @@ -115,7 +115,7 @@ export default function commonjs(options = {}) { } if ( - !dynamicRequireModuleSet.has(normalizePathSlashes(id)) && + !dynamicRequireModules.has(normalizePathSlashes(id)) && (!(hasCjsKeywords(code, ignoreGlobal) || isRequiredId(id)) || (isEsModule && !options.transformMixedEsModules)) ) { @@ -124,7 +124,7 @@ export default function commonjs(options = {}) { const needsRequireWrapper = !isEsModule && - (dynamicRequireModuleSet.has(normalizePathSlashes(id)) || strictRequiresFilter(id)); + (dynamicRequireModules.has(normalizePathSlashes(id)) || strictRequiresFilter(id)); return transformCommonjs( this.parse, @@ -137,7 +137,7 @@ export default function commonjs(options = {}) { getIgnoreTryCatchRequireStatementMode, sourceMap, isDynamicRequireModulesEnabled, - dynamicRequireModuleSet, + dynamicRequireModules, commonDir, ast, getDefaultIsModuleExports(id), @@ -150,18 +150,19 @@ export default function commonjs(options = {}) { return { name: 'commonjs', - options(options) { - // Always sort the node-resolve plugin after the commonjs plugin as otherwise CommonJS entries - // will not work with strictRequires: true - const { plugins } = options; - if (Array.isArray(plugins)) { - const cjsIndex = plugins.findIndex((plugin) => plugin.name === 'commonjs'); - const nodeResolveIndex = plugins.findIndex((plugin) => plugin.name === 'node-resolve'); - if (nodeResolveIndex >= 0 && nodeResolveIndex < cjsIndex) { - plugins.splice(cjsIndex + 1, 0, plugins[nodeResolveIndex]); - plugins.splice(nodeResolveIndex, 1); - } - } + options(rawOptions) { + // We inject the resolver in the beginning so that "catch-all-resolver" like node-resolver + // do not prevent our plugin from resolving entry points ot proxies. + const plugins = Array.isArray(rawOptions.plugins) + ? rawOptions.plugins + : rawOptions.plugins + ? [rawOptions.plugins] + : []; + plugins.unshift({ + name: 'commonjs--resolver', + resolveId + }); + return { ...rawOptions, plugins }; }, buildStart() { @@ -185,7 +186,6 @@ export default function commonjs(options = {}) { .join(',\n')}\n]` }); } else { - // TODO Lukas test this.warn({ code: 'WRAPPED_IDS', ids: wrappedIds, @@ -195,8 +195,6 @@ export default function commonjs(options = {}) { } }, - resolveId, - load(id) { if (id === HELPERS_ID) { return getHelpersModule(); @@ -232,9 +230,9 @@ export default function commonjs(options = {}) { } if (id === DYNAMIC_MODULES_ID) { - return getDynamicRequireModules( + return getDynamicModuleRegistry( isDynamicRequireModulesEnabled, - dynamicRequireModuleSet, + dynamicRequireModules, commonDir, ignoreDynamicRequires ); diff --git a/packages/commonjs/src/resolve-id.js b/packages/commonjs/src/resolve-id.js index d87309bc7..c7d3844a9 100644 --- a/packages/commonjs/src/resolve-id.js +++ b/packages/commonjs/src/resolve-id.js @@ -13,7 +13,9 @@ import { isWrappedId, MODULE_SUFFIX, PROXY_SUFFIX, - wrapId + unwrapId, + wrapId, + WRAPPED_SUFFIX } from './helpers'; function getCandidatesForExtension(resolved, extension) { @@ -48,58 +50,65 @@ export function resolveExtensions(importee, importer, extensions) { export default function getResolveId(extensions) { return async function resolveId(importee, importer, resolveOptions) { + if (isWrappedId(importee, WRAPPED_SUFFIX)) { + return unwrapId(importee, WRAPPED_SUFFIX); + } + if ( isWrappedId(importee, MODULE_SUFFIX) || isWrappedId(importee, EXPORTS_SUFFIX) || isWrappedId(importee, PROXY_SUFFIX) || isWrappedId(importee, ES_IMPORT_SUFFIX) || - isWrappedId(importee, EXTERNAL_SUFFIX) + isWrappedId(importee, EXTERNAL_SUFFIX) || + importee.startsWith(HELPERS_ID) || + importee === DYNAMIC_MODULES_ID ) { return importee; } - // Except for exports, proxies are only importing resolved ids, - // no need to resolve again - if ( - importer && - (importer === DYNAMIC_MODULES_ID || + if (importer) { + if ( + importer === DYNAMIC_MODULES_ID || + // Except for exports, proxies are only importing resolved ids, no need to resolve again isWrappedId(importer, PROXY_SUFFIX) || - isWrappedId(importer, ES_IMPORT_SUFFIX)) - ) { - return importee; + isWrappedId(importer, ES_IMPORT_SUFFIX) + ) { + return importee; + } + if (isWrappedId(importer, EXTERNAL_SUFFIX)) { + // We need to return null for unresolved imports so that the proper warning is shown + if (!(await this.resolve(importee, importer, { skipSelf: true }))) { + return null; + } + // For other external imports, we need to make sure they are handled as external + return { id: importee, external: true }; + } } - if (importee.startsWith(HELPERS_ID) || importee === DYNAMIC_MODULES_ID) { - return importee; + if (importee.startsWith('\0')) { + return null; } - if (importee.startsWith('\0')) { + // If this is an entry point or ESM import, we need to figure out if the importee is wrapped and + // if that is the case, we need to add a proxy. + const customOptions = resolveOptions.custom; + + // If this is a require, we do not need a proxy + if (customOptions && customOptions['node-resolve'] && customOptions['node-resolve'].isRequire) { return null; } const resolved = (await this.resolve(importee, importer, Object.assign({ skipSelf: true }, resolveOptions))) || resolveExtensions(importee, importer, extensions); - let isCommonJsImporter = false; - if (importer) { - const moduleInfo = this.getModuleInfo(importer); - if (moduleInfo) { - const importerCommonJsMeta = moduleInfo.meta.commonjs; - if ( - importerCommonJsMeta && - (importerCommonJsMeta.isCommonJS || importerCommonJsMeta.isMixedModule) - ) { - isCommonJsImporter = true; - } - } + if (!resolved || resolved.external) { + return resolved; } - if (resolved && !isCommonJsImporter) { - const { - meta: { commonjs: commonjsMeta } - } = await this.load(resolved); - if (commonjsMeta && commonjsMeta.isCommonJS === IS_WRAPPED_COMMONJS) { - return wrapId(resolved.id, ES_IMPORT_SUFFIX); - } + const { + meta: { commonjs: commonjsMeta } + } = await this.load(resolved); + if (commonjsMeta && commonjsMeta.isCommonJS === IS_WRAPPED_COMMONJS) { + return wrapId(resolved.id, ES_IMPORT_SUFFIX); } return resolved; }; diff --git a/packages/commonjs/src/resolve-require-sources.js b/packages/commonjs/src/resolve-require-sources.js index 08b0de297..78f0af4d0 100644 --- a/packages/commonjs/src/resolve-require-sources.js +++ b/packages/commonjs/src/resolve-require-sources.js @@ -1,4 +1,10 @@ -import { EXTERNAL_SUFFIX, IS_WRAPPED_COMMONJS, PROXY_SUFFIX, wrapId } from './helpers'; +import { + EXTERNAL_SUFFIX, + IS_WRAPPED_COMMONJS, + PROXY_SUFFIX, + wrapId, + WRAPPED_SUFFIX +} from './helpers'; import { resolveExtensions } from './resolve-id'; export function getResolveRequireSourcesAndGetMeta(extensions, detectCycles) { @@ -24,7 +30,6 @@ export function getResolveRequireSourcesAndGetMeta(extensions, detectCycles) { } const resolved = (await rollupContext.resolve(source, id, { - skipSelf: true, custom: { 'node-resolve': { isRequire: true } } @@ -69,10 +74,11 @@ export function getResolveRequireSourcesAndGetMeta(extensions, detectCycles) { const isCommonJS = knownCjsModuleTypes[dependencyId]; return { source: sources[index], - id: - allowProxy && isCommonJS !== IS_WRAPPED_COMMONJS - ? wrapId(dependencyId, PROXY_SUFFIX) - : dependencyId, + id: allowProxy + ? isCommonJS === IS_WRAPPED_COMMONJS + ? wrapId(dependencyId, WRAPPED_SUFFIX) + : wrapId(dependencyId, PROXY_SUFFIX) + : dependencyId, isCommonJS }; }), diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index c6cfbdc1a..f0c43c362 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -46,7 +46,7 @@ export default async function transformCommonjs( getIgnoreTryCatchRequireStatementMode, sourceMap, isDynamicRequireModulesEnabled, - dynamicRequireModuleSet, + dynamicRequireModules, commonDir, astCache, defaultIsModuleExports, @@ -195,7 +195,7 @@ export default async function transformCommonjs( node.callee.object && node.callee.object.name === 'require' && node.callee.property.name === 'resolve' && - hasDynamicModuleForPath(id, '/', dynamicRequireModuleSet) + hasDynamicModuleForPath(id, '/', dynamicRequireModules) ) { // TODO Lukas reimplement? uses.require = true; @@ -288,7 +288,7 @@ export default async function transformCommonjs( uses.require = true; if (isNodeRequirePropertyAccess(parent)) { // TODO Lukas reimplement? - if (hasDynamicModuleForPath(id, '/', dynamicRequireModuleSet)) { + if (hasDynamicModuleForPath(id, '/', dynamicRequireModules)) { if (parent.property.name === 'cache') { magicString.overwrite(node.start, node.end, dynamicRequireName, { storeName: true diff --git a/packages/commonjs/src/utils.js b/packages/commonjs/src/utils.js index d66765c93..baee15948 100644 --- a/packages/commonjs/src/utils.js +++ b/packages/commonjs/src/utils.js @@ -34,14 +34,8 @@ export function normalizePathSlashes(path) { return path.replace(/\\/g, '/'); } -// TODO Lukas get rid of this? -const VIRTUAL_PATH_BASE = '/$$rollup_base$$'; -export const getVirtualPathForDynamicRequirePath = (path, commonDir) => { - const normalizedPath = normalizePathSlashes(path); - return normalizedPath.startsWith(commonDir) - ? VIRTUAL_PATH_BASE + normalizedPath.slice(commonDir.length) - : normalizedPath; -}; +export const getVirtualPathForDynamicRequirePath = (path, commonDir) => + normalizePathSlashes(path).slice(commonDir.length); export function capitalize(name) { return name[0].toUpperCase() + name.slice(1); diff --git a/packages/commonjs/test/fixtures/function/custom-options/_config.js b/packages/commonjs/test/fixtures/function/custom-options/_config.js index 522f2c94a..ebbb4a496 100644 --- a/packages/commonjs/test/fixtures/function/custom-options/_config.js +++ b/packages/commonjs/test/fixtures/function/custom-options/_config.js @@ -18,13 +18,6 @@ module.exports = { buildEnd() { assert.deepStrictEqual(resolveIdArgs, [ ['other.js', 'main.js', { custom: { test: 42 }, isEntry: true }], - [ - 'other.js', - 'main.js', - // This is the important one - { custom: { test: 42 }, isEntry: true } - ], - ['main.js', void 0, { custom: {}, isEntry: true }], ['main.js', void 0, { custom: {}, isEntry: true }] ]); }, diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-resolve-reference/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-resolve-reference/main.js index 5dcdc0b90..a30e03d98 100755 --- a/packages/commonjs/test/fixtures/function/dynamic-require-resolve-reference/main.js +++ b/packages/commonjs/test/fixtures/function/dynamic-require-resolve-reference/main.js @@ -1,4 +1,4 @@ t.is( require('custom-module2')(), - '/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module' + '/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module' ); diff --git a/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/_config.js b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/_config.js new file mode 100644 index 000000000..7891cab61 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: + 'allows accessing function default exports as require return value even when there are named exports' +}; diff --git a/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-constructor.js b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-constructor.js new file mode 100644 index 000000000..da6746c02 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-constructor.js @@ -0,0 +1,9 @@ +export default function Foo(...args) { + this.foo = args; +} + +Foo.prototype.update = function () { + this.foo = 'updated'; +}; + +export const bar = 'bar'; diff --git a/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-function.js b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-function.js new file mode 100644 index 000000000..b9b50f89f --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/esm-function.js @@ -0,0 +1,5 @@ +export default function foo(...args) { + return args; +} + +export const bar = 'bar'; diff --git a/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/main.js b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/main.js new file mode 100644 index 000000000..fc760a469 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-mixed-exports-function-default/main.js @@ -0,0 +1,19 @@ +const foo = require('./esm-function.js'); +const Foo = require('./esm-constructor.js'); + +t.is(foo.bar, 'bar'); +t.deepEqual(foo.default('first'), ['first']); +t.deepEqual(foo('second'), ['second']); + +t.is(Foo.bar, 'bar'); + +// eslint-disable-next-line new-cap +const newDefault = new Foo.default('third'); +t.deepEqual(newDefault.foo, ['third']); +newDefault.update(); +t.is(newDefault.foo, 'updated'); + +const newFoo = new Foo('fourth'); +t.deepEqual(newFoo.foo, ['fourth']); +newFoo.update(); +t.is(newFoo.foo, 'updated'); diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/main.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/main.js index 658db2cdd..67b995725 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/main.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/main.js @@ -14,3 +14,11 @@ t.deepEqual(noExports, {}, 'no exports'); t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); t.deepEqual(externalMixed, { foo: 'foo', default: 'bar' }, 'external mixed'); t.deepEqual(externalDefault, { default: 'bar' }, 'external default'); + +/* eslint-disable no-prototype-builtins */ +t.is(namedExports.hasOwnProperty('foo'), true); +t.is(mixedExports.hasOwnProperty('foo'), true); +t.is(defaultExport.hasOwnProperty('foo'), false); +t.is(externalNamed.hasOwnProperty('foo'), true); +t.is(externalMixed.hasOwnProperty('foo'), true); +t.is(externalDefault.hasOwnProperty('foo'), false); diff --git a/packages/commonjs/test/fixtures/function/relative-external/_config.js b/packages/commonjs/test/fixtures/function/relative-external/_config.js new file mode 100755 index 000000000..620b6e4d4 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/relative-external/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'allows treating relative requires as external', + options: { + // This import needs to be relative to /test/helpers/util.js + external: ['../fixtures/function/relative-external/external.js'] + } +}; diff --git a/packages/commonjs/test/fixtures/function/relative-external/external.js b/packages/commonjs/test/fixtures/function/relative-external/external.js new file mode 100755 index 000000000..94ecacb72 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/relative-external/external.js @@ -0,0 +1 @@ +exports.foo = 'foo'; diff --git a/packages/commonjs/test/fixtures/function/relative-external/main.js b/packages/commonjs/test/fixtures/function/relative-external/main.js new file mode 100755 index 000000000..e495f65f1 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/relative-external/main.js @@ -0,0 +1,3 @@ +const { foo } = require('../fixtures/function/relative-external/external.js'); + +t.is(foo, 'foo'); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-entry-node-resolve/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-entry-node-resolve/_config.js index d5ae8bbb1..327d47b1a 100644 --- a/packages/commonjs/test/fixtures/function/strict-requires-entry-node-resolve/_config.js +++ b/packages/commonjs/test/fixtures/function/strict-requires-entry-node-resolve/_config.js @@ -15,7 +15,7 @@ module.exports = { buildStart({ plugins }) { assert.deepStrictEqual( plugins.map((plugin) => plugin.name), - ['before-node', 'after-node', 'commonjs', 'node-resolve'] + ['commonjs--resolver', 'before-node', 'node-resolve', 'after-node', 'commonjs'] ); } }, diff --git a/packages/commonjs/test/fixtures/function/strict-requires-external/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-external/_config.js new file mode 100644 index 000000000..d16da2049 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-external/_config.js @@ -0,0 +1,18 @@ +module.exports = { + description: 'still does not wrap external dependencies with strict require semantic', + pluginOptions: { + strictRequires: true + }, + options: { + plugins: [ + { + resolveId(source) { + if (source === 'external') { + return { id: 'external', external: true }; + } + return null; + } + } + ] + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-external/main.js b/packages/commonjs/test/fixtures/function/strict-requires-external/main.js new file mode 100644 index 000000000..a657096b0 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-external/main.js @@ -0,0 +1 @@ +t.is(require('external').message, 'it works'); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-external/other.js b/packages/commonjs/test/fixtures/function/strict-requires-external/other.js new file mode 100644 index 000000000..fbe0d2a97 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-external/other.js @@ -0,0 +1 @@ +exports.foo = require('./main.js').foo; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/_config.js new file mode 100644 index 000000000..033c7379f --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/_config.js @@ -0,0 +1,12 @@ +const { nodeResolve } = require('@rollup/plugin-node-resolve'); + +module.exports = { + description: 'supports strictRequires with mixed ESM', + pluginOptions: { + strictRequires: true, + transformMixedEsModules: true + }, + options: { + plugins: [nodeResolve()] + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/import.js b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/import.js new file mode 100644 index 000000000..94ecacb72 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/import.js @@ -0,0 +1 @@ +exports.foo = 'foo'; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/main.js b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/main.js new file mode 100644 index 000000000..89c777a42 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/main.js @@ -0,0 +1,6 @@ +import esm from './import.js'; + +const cjs = require('./require.js'); + +t.is(esm.foo, 'foo'); +t.is(cjs.foo, 'foo'); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/require.js b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/require.js new file mode 100644 index 000000000..94ecacb72 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-mixed-esm/require.js @@ -0,0 +1 @@ +exports.foo = 'foo'; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 260d58e48..e09892341 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -370,7 +370,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require/submodule.js": requireSubmodule␊ + "/fixtures/function/dynamic-require/submodule.js": requireSubmodule␊ });␊ }␊ ␊ @@ -483,7 +483,7 @@ Generated by [AVA](https://avajs.dev). let message;␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/$$rollup_base$$/fixtures/function/dynamic-require");␊ + return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require");␊ }␊ ␊ try {␊ @@ -540,9 +540,9 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-absolute-import/sub/node_modules/module/direct.js": requireDirect,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-absolute-import/sub/node_modules/module/nested/nested.js": requireNested,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-absolute-import/node_modules/parent-module/parent.js": requireParent␊ + "/fixtures/function/dynamic-require-absolute-import/sub/node_modules/module/direct.js": requireDirect,␊ + "/fixtures/function/dynamic-require-absolute-import/sub/node_modules/module/nested/nested.js": requireNested,␊ + "/fixtures/function/dynamic-require-absolute-import/node_modules/parent-module/parent.js": requireParent␊ });␊ }␊ ␊ @@ -655,7 +655,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-absolute-import/sub");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-absolute-import/sub");␊ }␊ ␊ submodule.moduleDirect = takeModule('module/direct');␊ @@ -705,8 +705,8 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-code-splitting/target1.js": requireTarget1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-code-splitting/target2.js": requireTarget2␊ + "/fixtures/function/dynamic-require-code-splitting/target1.js": requireTarget1,␊ + "/fixtures/function/dynamic-require-code-splitting/target2.js": requireTarget2␊ });␊ }␊ ␊ @@ -818,7 +818,7 @@ Generated by [AVA](https://avajs.dev). ␊ for (const index of [1, 2]) {␊ try {␊ - message = commonjsRequire(`./target${index}.js`, "/$$rollup_base$$/fixtures/function/dynamic-require-code-splitting");␊ + message = commonjsRequire(`./target${index}.js`, "/fixtures/function/dynamic-require-code-splitting");␊ } catch (err) {␊ ({ message } = err);␊ }␊ @@ -837,7 +837,7 @@ Generated by [AVA](https://avajs.dev). ␊ for (const index of [1, 2]) {␊ try {␊ - message = lib2.commonjsRequire(`./target${index}.js`, "/$$rollup_base$$/fixtures/function/dynamic-require-code-splitting");␊ + message = lib2.commonjsRequire(`./target${index}.js`, "/fixtures/function/dynamic-require-code-splitting");␊ } catch (err) {␊ ({ message } = err);␊ }␊ @@ -899,7 +899,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-es-entry/submodule.js": requireSubmodule␊ + "/fixtures/function/dynamic-require-es-entry/submodule.js": requireSubmodule␊ });␊ }␊ ␊ @@ -1008,7 +1008,7 @@ 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-es-entry");␊ + return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-es-entry");␊ }␊ ␊ var importer = takeModule('submodule.js');␊ @@ -1072,7 +1072,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-extensions/submodule.js": requireSubmodule␊ + "/fixtures/function/dynamic-require-extensions/submodule.js": requireSubmodule␊ });␊ }␊ ␊ @@ -1183,7 +1183,7 @@ 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-extensions");␊ + return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-extensions");␊ }␊ ␊ const withExtension = takeModule('submodule.js');␊ @@ -1286,9 +1286,9 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-globs/submodule1.js": requireSubmodule1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-globs/submodule2.js": requireSubmodule2,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-globs/extramodule1.js": requireExtramodule1␊ + "/fixtures/function/dynamic-require-globs/submodule1.js": requireSubmodule1,␊ + "/fixtures/function/dynamic-require-globs/submodule2.js": requireSubmodule2,␊ + "/fixtures/function/dynamic-require-globs/extramodule1.js": requireExtramodule1␊ });␊ }␊ ␊ @@ -1399,7 +1399,7 @@ 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-globs");␊ + return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-globs");␊ }␊ ␊ t.is(takeModule('submodule1.js'), 'submodule1');␊ @@ -1445,10 +1445,10 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-instances/direct": requireDirect,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-instances/direct/index.js": requireDirect,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-instances/package": requireMain,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-instances/package/main.js": requireMain␊ + "/fixtures/function/dynamic-require-instances/direct": requireDirect,␊ + "/fixtures/function/dynamic-require-instances/direct/index.js": requireDirect,␊ + "/fixtures/function/dynamic-require-instances/package": requireMain,␊ + "/fixtures/function/dynamic-require-instances/package/main.js": requireMain␊ });␊ }␊ ␊ @@ -1559,7 +1559,7 @@ 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-instances");␊ + return commonjsRequire(withName, "/fixtures/function/dynamic-require-instances");␊ }␊ ␊ takeModule('./direct').value = 'direct-instance';␊ @@ -1590,7 +1590,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-json/dynamic.json": function () { return json0; }␊ + "/fixtures/function/dynamic-require-json/dynamic.json": function () { return json0; }␊ });␊ }␊ ␊ @@ -1701,7 +1701,7 @@ 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");␊ + return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-json");␊ }␊ ␊ t.deepEqual(takeModule('dynamic.json'), { value: 'present' });␊ @@ -1780,12 +1780,12 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package": requireEntry$2,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package/entry.js": requireEntry$2,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package/sub": requireEntry$1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package/sub/entry.js": requireEntry$1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module": requireEntry,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js": requireEntry␊ + "/fixtures/function/dynamic-require-package": requireEntry$2,␊ + "/fixtures/function/dynamic-require-package/entry.js": requireEntry$2,␊ + "/fixtures/function/dynamic-require-package/sub": requireEntry$1,␊ + "/fixtures/function/dynamic-require-package/sub/entry.js": requireEntry$1,␊ + "/fixtures/function/dynamic-require-package/node_modules/custom-module": requireEntry,␊ + "/fixtures/function/dynamic-require-package/node_modules/custom-module/entry.js": requireEntry␊ });␊ }␊ ␊ @@ -1896,7 +1896,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-package/sub");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-package/sub");␊ }␊ ␊ var sub = {␊ @@ -1907,7 +1907,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-package");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-package");␊ }␊ ␊ t.is(takeModule('.'), 'same-directory');␊ @@ -1979,8 +1979,8 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/submodule.js": requireSubmodule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-relative-paths/sub/subsub/subsubmodule.js": requireSubsubmodule␊ + "/fixtures/function/dynamic-require-relative-paths/sub/submodule.js": requireSubmodule,␊ + "/fixtures/function/dynamic-require-relative-paths/sub/subsub/subsubmodule.js": requireSubsubmodule␊ });␊ }␊ ␊ @@ -2091,7 +2091,7 @@ Generated by [AVA](https://avajs.dev). /* 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");␊ + return commonjsRequire(`.${delimiter}${name.replace(/=/g, delimiter)}`, "/fixtures/function/dynamic-require-relative-paths");␊ }␊ ␊ t.is(takeModuleWithDelimiter('sub=submodule.js', '/'), 'submodule');␊ @@ -2144,12 +2144,12 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index": requireDynamicRequireResolveIndex,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/index.js": requireDynamicRequireResolveIndex,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub": requireSub,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub/index.js": requireSub,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module": requireCustomModule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js": requireCustomModule␊ + "/fixtures/function/dynamic-require-resolve-index": requireDynamicRequireResolveIndex,␊ + "/fixtures/function/dynamic-require-resolve-index/index.js": requireDynamicRequireResolveIndex,␊ + "/fixtures/function/dynamic-require-resolve-index/sub": requireSub,␊ + "/fixtures/function/dynamic-require-resolve-index/sub/index.js": requireSub,␊ + "/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module": requireCustomModule,␊ + "/fixtures/function/dynamic-require-resolve-index/node_modules/custom-module/index.js": requireCustomModule␊ });␊ }␊ ␊ @@ -2260,7 +2260,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index/sub");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-resolve-index/sub");␊ }␊ ␊ var sub = {␊ @@ -2271,7 +2271,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-index");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-resolve-index");␊ }␊ ␊ t.is(takeModule('.'), 'same-directory');␊ @@ -2313,7 +2313,7 @@ Generated by [AVA](https://avajs.dev). if (hasRequiredCustomModule2) return customModule2;␊ hasRequiredCustomModule2 = 1;␊ customModule2 = () => {␊ - return commonjsRequire.resolve('custom-module',"/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2");␊ + return commonjsRequire.resolve('custom-module',"/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2");␊ };␊ return customModule2;␊ }␊ @@ -2322,10 +2322,10 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module": requireCustomModule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js": requireCustomModule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2": requireCustomModule2,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js": requireCustomModule2␊ + "/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module": requireCustomModule,␊ + "/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module/index.js": requireCustomModule,␊ + "/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2": requireCustomModule2,␊ + "/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2/index.js": requireCustomModule2␊ });␊ }␊ ␊ @@ -2435,7 +2435,7 @@ Generated by [AVA](https://avajs.dev). ␊ t.is(␊ requireCustomModule2()(),␊ - '/$$rollup_base$$/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module'␊ + '/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module'␊ );␊ ␊ module.exports = main;␊ @@ -2556,13 +2556,13 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access": requireDynamicRequireSlashAccess,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/index.js": requireDynamicRequireSlashAccess,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/sub": requireSub$1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/sub/index.js": requireSub$1,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/node_modules/custom-module": requireCustomModule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/node_modules/custom-module/index.js": requireCustomModule,␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/node_modules/custom-module2/sub.js": requireSub␊ + "/fixtures/function/dynamic-require-slash-access": requireDynamicRequireSlashAccess,␊ + "/fixtures/function/dynamic-require-slash-access/index.js": requireDynamicRequireSlashAccess,␊ + "/fixtures/function/dynamic-require-slash-access/sub": requireSub$1,␊ + "/fixtures/function/dynamic-require-slash-access/sub/index.js": requireSub$1,␊ + "/fixtures/function/dynamic-require-slash-access/node_modules/custom-module": requireCustomModule,␊ + "/fixtures/function/dynamic-require-slash-access/node_modules/custom-module/index.js": requireCustomModule,␊ + "/fixtures/function/dynamic-require-slash-access/node_modules/custom-module2/sub.js": requireSub␊ });␊ }␊ ␊ @@ -2673,7 +2673,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access/sub");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-slash-access/sub");␊ }␊ ␊ var sub = {␊ @@ -2684,7 +2684,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/$$rollup_base$$/fixtures/function/dynamic-require-slash-access");␊ + return commonjsRequire(name, "/fixtures/function/dynamic-require-slash-access");␊ }␊ ␊ t.is(takeModule('.'), 'same-directory', '.');␊ @@ -2724,7 +2724,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-targets-fallback/dep1.js": requireDep1␊ + "/fixtures/function/dynamic-require-targets-fallback/dep1.js": requireDep1␊ });␊ }␊ ␊ @@ -2835,7 +2835,7 @@ 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-targets-fallback");␊ + return commonjsRequire(withName, "/fixtures/function/dynamic-require-targets-fallback");␊ }␊ ␊ t.is(takeModule('./dep1.js'), 'dep');␊ @@ -2867,7 +2867,7 @@ Generated by [AVA](https://avajs.dev). ␊ function getDynamicModules() {␊ return dynamicModules || (dynamicModules = {␊ - "/$$rollup_base$$/fixtures/function/dynamic-require-targets-no-fallback/dep1.js": requireDep1␊ + "/fixtures/function/dynamic-require-targets-no-fallback/dep1.js": requireDep1␊ });␊ }␊ ␊ @@ -2978,7 +2978,7 @@ 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-targets-no-fallback");␊ + return commonjsRequire(withName, "/fixtures/function/dynamic-require-targets-no-fallback");␊ }␊ ␊ t.is(takeModule('./dep1.js'), 'dep');␊ @@ -3099,8 +3099,14 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespace(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3173,8 +3179,14 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespace(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3241,8 +3253,14 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespace(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3314,6 +3332,92 @@ Generated by [AVA](https://avajs.dev). `, } +## esm-mixed-exports-function-default + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function getAugmentedNamespace(n) {␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ + Object.keys(n).forEach(function (k) {␊ + var d = Object.getOwnPropertyDescriptor(n, k);␊ + Object.defineProperty(a, k, d.get ? d : {␊ + enumerable: true,␊ + get: function () {␊ + return n[k];␊ + }␊ + });␊ + });␊ + return a;␊ + }␊ + ␊ + var main = {};␊ + ␊ + function foo$1(...args) {␊ + return args;␊ + }␊ + ␊ + const bar$1 = 'bar';␊ + ␊ + var esmFunction = /*#__PURE__*/Object.freeze({␊ + __proto__: null,␊ + 'default': foo$1,␊ + bar: bar$1␊ + });␊ + ␊ + var require$$0 = /*@__PURE__*/getAugmentedNamespace(esmFunction);␊ + ␊ + function Foo$1(...args) {␊ + this.foo = args;␊ + }␊ + ␊ + Foo$1.prototype.update = function () {␊ + this.foo = 'updated';␊ + };␊ + ␊ + const bar = 'bar';␊ + ␊ + var esmConstructor = /*#__PURE__*/Object.freeze({␊ + __proto__: null,␊ + 'default': Foo$1,␊ + bar: bar␊ + });␊ + ␊ + var require$$1 = /*@__PURE__*/getAugmentedNamespace(esmConstructor);␊ + ␊ + const foo = require$$0;␊ + const Foo = require$$1;␊ + ␊ + t.is(foo.bar, 'bar');␊ + t.deepEqual(foo.default('first'), ['first']);␊ + t.deepEqual(foo('second'), ['second']);␊ + ␊ + t.is(Foo.bar, 'bar');␊ + ␊ + // eslint-disable-next-line new-cap␊ + const newDefault = new Foo.default('third');␊ + t.deepEqual(newDefault.foo, ['third']);␊ + newDefault.update();␊ + t.is(newDefault.foo, 'updated');␊ + ␊ + const newFoo = new Foo('fourth');␊ + t.deepEqual(newFoo.foo, ['fourth']);␊ + newFoo.update();␊ + t.is(newFoo.foo, 'updated');␊ + ␊ + module.exports = main;␊ + `, + } + ## export-default-from > Snapshot 1 @@ -3425,8 +3529,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3645,8 +3755,14 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespace(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3715,6 +3831,14 @@ Generated by [AVA](https://avajs.dev). t.deepEqual(externalMixed, { foo: 'foo', default: 'bar' }, 'external mixed');␊ t.deepEqual(externalDefault, { default: 'bar' }, 'external default');␊ ␊ + /* eslint-disable no-prototype-builtins */␊ + t.is(namedExports.hasOwnProperty('foo'), true);␊ + t.is(mixedExports.hasOwnProperty('foo'), true);␊ + t.is(defaultExport.hasOwnProperty('foo'), false);␊ + t.is(externalNamed.hasOwnProperty('foo'), true);␊ + t.is(externalMixed.hasOwnProperty('foo'), true);␊ + t.is(externalDefault.hasOwnProperty('foo'), false);␊ + ␊ module.exports = main;␊ `, } @@ -3727,8 +3851,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -3908,8 +4038,14 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -4174,8 +4310,14 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespace(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -4256,8 +4398,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -5120,6 +5268,29 @@ Generated by [AVA](https://avajs.dev). `, } +## relative-external + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var require$$0 = require('../fixtures/function/relative-external/external.js');␊ + ␊ + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }␊ + ␊ + var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);␊ + ␊ + var main = {};␊ + ␊ + const { foo } = require$$0__default["default"];␊ + ␊ + t.is(foo, 'foo');␊ + ␊ + module.exports = main;␊ + `, + } + ## require-esm-with-named-namespace > Snapshot 1 @@ -5266,8 +5437,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -5305,8 +5482,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -5624,7 +5807,7 @@ Generated by [AVA](https://avajs.dev). `, } -## strict-requires-entry +## strict-requires-entry-node-resolve > Snapshot 1 @@ -5832,6 +6015,36 @@ Generated by [AVA](https://avajs.dev). `, } +## strict-requires-external + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var require$$0 = require('external');␊ + ␊ + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }␊ + ␊ + var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);␊ + ␊ + var main = {};␊ + ␊ + var hasRequiredMain;␊ + ␊ + function requireMain () {␊ + if (hasRequiredMain) return main;␊ + hasRequiredMain = 1;␊ + t.is(require$$0__default["default"].message, 'it works');␊ + return main;␊ + }␊ + ␊ + var mainExports = requireMain();␊ + ␊ + module.exports = mainExports;␊ + `, + } + ## strict-requires-file-without-module-type > Snapshot 1 @@ -5883,37 +6096,41 @@ Generated by [AVA](https://avajs.dev). `, } -## strict-requires-magic-string +## strict-requires-mixed-esm > Snapshot 1 { 'main.js': `'use strict';␊ ␊ - Object.defineProperty(exports, '__esModule', { value: true });␊ + var require$1 = {};␊ ␊ - var main = {};␊ + var hasRequiredRequire;␊ ␊ - var hasRequiredMain;␊ + function requireRequire () {␊ + if (hasRequiredRequire) return require$1;␊ + hasRequiredRequire = 1;␊ + require$1.foo = 'foo';␊ + return require$1;␊ + }␊ ␊ - function requireMain () {␊ - if (hasRequiredMain) return main;␊ - hasRequiredMain = 1;␊ - console.log('hey');␊ - // magic-string@0.25.7␊ - const m = new MagicString('0123456789');␊ - console.log(␊ - m.prependRight(0, 'W').prependLeft(3, 'AB').appendRight(9, 'XY').remove(6, 8).toString()␊ - );␊ - const bundle = new MagicString.Bundle();␊ - bundle.addSource({ filename: 'foo.txt', content: m });␊ - const map = bundle.generateMap({ file: 'bundle.txt', includeContent: true, hires: true });␊ - console.log(JSON.stringify(map));␊ - main.foo = 'foo';␊ - return main;␊ + var _import = {};␊ + ␊ + var hasRequired_import;␊ + ␊ + function require_import () {␊ + if (hasRequired_import) return _import;␊ + hasRequired_import = 1;␊ + _import.foo = 'foo';␊ + return _import;␊ }␊ ␊ - exports.__require = requireMain;␊ + var _importExports = require_import();␊ + ␊ + const cjs = requireRequire();␊ + ␊ + t.is(_importExports.foo, 'foo');␊ + t.is(cjs.foo, 'foo');␊ `, } @@ -6096,8 +6313,14 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ @@ -6807,27 +7030,3 @@ Generated by [AVA](https://avajs.dev). module.exports = main;␊ `, } - -## strict-requires-entry-node-resolve - -> Snapshot 1 - - { - 'main.js': `'use strict';␊ - ␊ - var main = {};␊ - ␊ - var hasRequiredMain;␊ - ␊ - function requireMain () {␊ - if (hasRequiredMain) return main;␊ - hasRequiredMain = 1;␊ - main.foo = 'foo';␊ - return main;␊ - }␊ - ␊ - var mainExports = requireMain();␊ - ␊ - module.exports = mainExports;␊ - `, - } diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 4ec48d232..732515802 100644 Binary files a/packages/commonjs/test/snapshots/function.js.snap and b/packages/commonjs/test/snapshots/function.js.snap differ diff --git a/packages/commonjs/test/snapshots/test.js.md b/packages/commonjs/test/snapshots/test.js.md index a86b22dab..86e1a2048 100644 --- a/packages/commonjs/test/snapshots/test.js.md +++ b/packages/commonjs/test/snapshots/test.js.md @@ -24,8 +24,14 @@ Generated by [AVA](https://avajs.dev). `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ - if (n.__esModule) return n;␊ - var a = Object.defineProperty({}, '__esModule', {value: true});␊ + var f = n.default;␊ + if (typeof f == "function") {␊ + var a = function () {␊ + return f.apply(this, arguments);␊ + };␊ + a.prototype = f.prototype;␊ + } else a = {};␊ + Object.defineProperty(a, '__esModule', {value: true});␊ Object.keys(n).forEach(function (k) {␊ var d = Object.getOwnPropertyDescriptor(n, k);␊ Object.defineProperty(a, k, d.get ? d : {␊ diff --git a/packages/commonjs/test/snapshots/test.js.snap b/packages/commonjs/test/snapshots/test.js.snap index 4ae913ba5..d685942af 100644 Binary files a/packages/commonjs/test/snapshots/test.js.snap and b/packages/commonjs/test/snapshots/test.js.snap differ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7da67e89e..03de06bd0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -174,7 +174,7 @@ importers: packages/commonjs: specifiers: '@rollup/plugin-json': ^4.1.0 - '@rollup/plugin-node-resolve': ^8.4.0 + '@rollup/plugin-node-resolve': ^13.0.6 '@rollup/pluginutils': ^3.1.0 commondir: ^1.0.1 estree-walker: ^2.0.1 @@ -199,7 +199,7 @@ importers: resolve: 1.18.1 devDependencies: '@rollup/plugin-json': 4.1.0_rollup@2.67.3 - '@rollup/plugin-node-resolve': 8.4.0_rollup@2.67.3 + '@rollup/plugin-node-resolve': 13.0.6_rollup@2.67.3 locate-character: 2.0.5 require-relative: 0.8.7 rollup: 2.67.3 @@ -2484,6 +2484,10 @@ packages: /@types/node/14.14.3: resolution: {integrity: sha512-33/L34xS7HVUx23e0wOT2V1qPF1IrHgQccdJVm9uXGTB9vFBrrzBtkQymT8VskeKOxjz55MSqMv0xuLq+u98WQ==} + dev: true + + /@types/node/16.11.7: + resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} /@types/node/16.3.2: resolution: {integrity: sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw==} @@ -2512,7 +2516,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 14.14.3 + '@types/node': 16.11.7 /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} @@ -3211,6 +3215,11 @@ packages: resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} engines: {node: '>=6'} + /builtin-modules/3.2.0: + resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} + engines: {node: '>=6'} + dev: true + /cacheable-lookup/5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'}