From 54b2cc77b9a6f5a9fc128e2082160ad98c6d7a08 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 17 Oct 2020 09:20:59 +0200 Subject: [PATCH 1/2] refactor(commonjs): Refine logic for id wrapping, import transformation --- package.json | 4 +- packages/commonjs/README.md | 2 +- .../commonjs/src/dynamic-packages-manager.js | 4 +- packages/commonjs/src/helpers.js | 9 +- packages/commonjs/src/index.js | 20 +- packages/commonjs/src/resolve-id.js | 21 +- packages/commonjs/src/transform.js | 47 ++- .../submodule1.js | 1 + .../commonjs/test/snapshots/function.js.snap | Bin 12714 -> 12709 bytes packages/commonjs/test/test.js | 5 +- pnpm-lock.yaml | 300 +++++++++++++----- 11 files changed, 276 insertions(+), 137 deletions(-) diff --git a/package.json b/package.json index 3b818222b..cc38be6cf 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@ava/babel": "^1.0.1", "@typescript-eslint/eslint-plugin": "^3.7.1", "@typescript-eslint/parser": "^3.7.1", - "ava": "^3.11.0", + "ava": "^3.13.0", "chalk": "^4.1.0", "codecov-lite": "^1.0.3", "del-cli": "^3.0.1", @@ -36,7 +36,7 @@ "husky": "^4.2.5", "lint-staged": "^10.2.11", "nyc": "^15.1.0", - "pnpm": "^5.4.6", + "pnpm": "^5.9.3", "prettier": "^2.0.5", "prettier-plugin-package": "^1.0.0", "ts-node": "^8.10.2", diff --git a/packages/commonjs/README.md b/packages/commonjs/README.md index ce6c9ed58..c00bf7f3d 100644 --- a/packages/commonjs/README.md +++ b/packages/commonjs/README.md @@ -143,7 +143,7 @@ You can also supply an array of ids to be treated as ES modules, or a function t ### `requireReturnsDefault` -Type: `boolean | "auto" | "preferred" | ((id: string) => boolean | "auto" | "preferred")`
+Type: `boolean | "namespace" | "auto" | "preferred" | ((id: string) => boolean | "auto" | "preferred")`
Default: `false` Controls what is returned when requiring an ES module from a CommonJS file. When using the `esmExternals` option, this will also apply to external modules. By default, this plugin will render those imports as namespace imports, i.e. diff --git a/packages/commonjs/src/dynamic-packages-manager.js b/packages/commonjs/src/dynamic-packages-manager.js index 62ff5306f..916c66c0e 100644 --- a/packages/commonjs/src/dynamic-packages-manager.js +++ b/packages/commonjs/src/dynamic-packages-manager.js @@ -43,9 +43,7 @@ export function getDynamicPackagesEntryIntro( ).join('\n'); if (dynamicRequireModuleDirPaths.length) { - dynamicImports += `require(${JSON.stringify( - DYNAMIC_REGISTER_PREFIX + DYNAMIC_PACKAGES_ID - )});`; + dynamicImports += `require(${JSON.stringify(DYNAMIC_REGISTER_PREFIX + DYNAMIC_PACKAGES_ID)});`; } return dynamicImports; diff --git a/packages/commonjs/src/helpers.js b/packages/commonjs/src/helpers.js index 461e21f90..d6659eab0 100644 --- a/packages/commonjs/src/helpers.js +++ b/packages/commonjs/src/helpers.js @@ -1,10 +1,9 @@ -export const PROXY_SUFFIX = '?commonjs-proxy'; -export const getProxyId = (id) => `\0${id}${PROXY_SUFFIX}`; -export const getIdFromProxyId = (proxyId) => proxyId.slice(1, -PROXY_SUFFIX.length); +export const isWrappedId = (id, suffix) => id.endsWith(suffix); +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 EXTERNAL_SUFFIX = '?commonjs-external'; -export const getExternalProxyId = (id) => `\0${id}${EXTERNAL_SUFFIX}`; -export const getIdFromExternalProxyId = (proxyId) => proxyId.slice(1, -EXTERNAL_SUFFIX.length); export const VIRTUAL_PATH_BASE = '/$$rollup_base$$'; export const getVirtualPathForDynamicRequirePath = (path, commonDir) => { diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index c3f75a391..cdd5160c2 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -16,10 +16,10 @@ import { DYNAMIC_PACKAGES_ID, EXTERNAL_SUFFIX, getHelpersModule, - getIdFromExternalProxyId, - getIdFromProxyId, HELPERS_ID, - PROXY_SUFFIX + isWrappedId, + PROXY_SUFFIX, + unwrapId } from './helpers'; import { setIsCjsPromise } from './is-cjs'; import { @@ -81,10 +81,8 @@ export default function commonjs(options = {}) { function transformAndCheckExports(code, id) { if (isDynamicRequireModulesEnabled && this.getModuleInfo(id).isEntry) { - code = getDynamicPackagesEntryIntro( - dynamicRequireModuleDirPaths, - dynamicRequireModuleSet - ) + code; + code = + getDynamicPackagesEntryIntro(dynamicRequireModuleDirPaths, dynamicRequireModuleSet) + code; } const { isEsModule, hasDefaultExport, hasNamedExports, ast } = checkEsModule( @@ -156,8 +154,8 @@ export default function commonjs(options = {}) { return getSpecificHelperProxy(id); } - if (id.endsWith(EXTERNAL_SUFFIX)) { - const actualId = getIdFromExternalProxyId(id); + if (isWrappedId(id, EXTERNAL_SUFFIX)) { + const actualId = unwrapId(id, EXTERNAL_SUFFIX); return getUnknownRequireProxy( actualId, isEsmExternal(actualId) ? getRequireReturnsDefault(actualId) : true @@ -176,8 +174,8 @@ export default function commonjs(options = {}) { return getDynamicRequireProxy(normalizePathSlashes(id), commonDir); } - if (id.endsWith(PROXY_SUFFIX)) { - const actualId = getIdFromProxyId(id); + if (isWrappedId(id, PROXY_SUFFIX)) { + const actualId = unwrapId(id, PROXY_SUFFIX); return getStaticRequireProxy( actualId, getRequireReturnsDefault(actualId), diff --git a/packages/commonjs/src/resolve-id.js b/packages/commonjs/src/resolve-id.js index 02d61e149..07a58d4d6 100644 --- a/packages/commonjs/src/resolve-id.js +++ b/packages/commonjs/src/resolve-id.js @@ -6,11 +6,12 @@ import { dirname, resolve, sep } from 'path'; import { DYNAMIC_JSON_PREFIX, DYNAMIC_PACKAGES_ID, - getExternalProxyId, - getIdFromProxyId, - getProxyId, + EXTERNAL_SUFFIX, HELPERS_ID, - PROXY_SUFFIX + isWrappedId, + PROXY_SUFFIX, + unwrapId, + wrapId } from './helpers'; function getCandidatesForExtension(resolved, extension) { @@ -45,9 +46,9 @@ export default function getResolveId(extensions) { } function resolveId(importee, importer) { - const isProxyModule = importee.endsWith(PROXY_SUFFIX); + const isProxyModule = isWrappedId(importee, PROXY_SUFFIX); if (isProxyModule) { - importee = getIdFromProxyId(importee); + importee = unwrapId(importee, PROXY_SUFFIX); } if (importee.startsWith('\0')) { if ( @@ -62,8 +63,8 @@ export default function getResolveId(extensions) { } } - if (importer && importer.endsWith(PROXY_SUFFIX)) { - importer = getIdFromProxyId(importer); + if (importer && isWrappedId(importer, PROXY_SUFFIX)) { + importer = unwrapId(importer, PROXY_SUFFIX); } return this.resolve(importee, importer, { skipSelf: true }).then((resolved) => { @@ -72,9 +73,9 @@ export default function getResolveId(extensions) { } if (isProxyModule) { if (!resolved) { - return { id: getExternalProxyId(importee), external: false }; + return { id: wrapId(importee, EXTERNAL_SUFFIX), external: false }; } - resolved.id = (resolved.external ? getExternalProxyId : getProxyId)(resolved.id); + resolved.id = wrapId(resolved.id, resolved.external ? EXTERNAL_SUFFIX : PROXY_SUFFIX); resolved.external = false; return resolved; } diff --git a/packages/commonjs/src/transform.js b/packages/commonjs/src/transform.js index 299db1fd3..7cf7ec316 100644 --- a/packages/commonjs/src/transform.js +++ b/packages/commonjs/src/transform.js @@ -11,9 +11,10 @@ import { flatten, isFalsy, isReference, isTruthy } from './ast-utils'; import { DYNAMIC_JSON_PREFIX, DYNAMIC_REGISTER_PREFIX, - getProxyId, getVirtualPathForDynamicRequirePath, - HELPERS_ID + HELPERS_ID, + PROXY_SUFFIX, + wrapId } from './helpers'; import { getName } from './utils'; @@ -138,7 +139,8 @@ export function transformCommonjs( const required = {}; // Because objects have no guaranteed ordering, yet we need it, // we need to keep track of the order in a array - const sources = []; + const requiredSources = []; + const dynamicRegisterSources = []; let uid = 0; @@ -229,8 +231,7 @@ export function transformCommonjs( } const existing = required[sourceId]; - // eslint-disable-next-line no-undefined - if (existing === undefined) { + if (!existing) { const isDynamic = hasDynamicModuleForPath(sourceId); if (!name) { @@ -240,12 +241,15 @@ export function transformCommonjs( } while (scope.contains(name)); } - if (isDynamicRegister && sourceId.endsWith('.json')) { - sourceId = DYNAMIC_JSON_PREFIX + sourceId; + if (isDynamicRegister) { + if (sourceId.endsWith('.json')) { + sourceId = DYNAMIC_JSON_PREFIX + sourceId; + } + dynamicRegisterSources.push(sourceId); } - if (isDynamicRegister || !isDynamic || sourceId.endsWith('.json')) { - sources.push([sourceId, isDynamicRegister]); + if (!isDynamic || sourceId.endsWith('.json')) { + requiredSources.push(sourceId); } required[sourceId] = { source: sourceId, name, importsDefault: false, isDynamic }; @@ -553,7 +557,8 @@ export function transformCommonjs( usesCommonjsHelpers = usesCommonjsHelpers || shouldWrap; if ( - !sources.length && + !requiredSources.length && + !dynamicRegisterSources.length && !uses.module && !uses.exports && !uses.require && @@ -569,24 +574,18 @@ export function transformCommonjs( ) .concat( // dynamic registers first (`commonjsRegister(,,,)`), as the may be required in the other modules - sources - .filter(([, isDynamicRegister]) => isDynamicRegister) - .map(([source]) => `import '${source}';`), + dynamicRegisterSources.map((source) => `import '${source}';`), // now the solid modules, non-commonjsRegister - sources - .filter(([, isDynamicRegister]) => !isDynamicRegister) - .map(([source]) => `import '${source}';`), + requiredSources.map((source) => `import '${source}';`), // now the proxies for solid modules (non-commonjsRegister) - sources - .filter(([, isDynamicRegister]) => !isDynamicRegister) - .map(([source]) => { - const { name, importsDefault } = required[source]; - return `import ${importsDefault ? `${name} from ` : ``}'${ - source.startsWith('\0') ? source : getProxyId(source) - }';`; - }) + requiredSources.map((source) => { + const { name, importsDefault } = required[source]; + return `import ${importsDefault ? `${name} from ` : ``}'${ + source.startsWith('\0') ? source : wrapId(source, PROXY_SUFFIX) + }';`; + }) ) .join('\n')}\n\n`; diff --git a/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule1.js b/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule1.js index 3156afbff..c72445277 100755 --- a/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule1.js +++ b/packages/commonjs/test/fixtures/samples/dynamic-require-different-loader/submodule1.js @@ -1,2 +1,3 @@ const fn = require('./submodule2'); + export default fn; diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index d4f280d77e4be4d9e17815e12fa4046ed03babdd..7cde825cc951f24310b4b71b2d4d536a3e363e88 100644 GIT binary patch literal 12709 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 literal 12714 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 W?eANhDuhw^_G@T|xsWFS1Nkpv+rK{m diff --git a/packages/commonjs/test/test.js b/packages/commonjs/test/test.js index 17a8b6129..31efc302c 100644 --- a/packages/commonjs/test/test.js +++ b/packages/commonjs/test/test.js @@ -702,10 +702,7 @@ test('transforms the es file with a `commonjsRequire` and no `require`s', async const code = await getCodeFromBundle(bundle); - t.is( - /commonjsRequire\(["']\.\/submodule\.js/.test(code), - true - ); + t.is(/commonjsRequire\(["']\.\/submodule\.js/.test(code), true); }); test('does not wrap commonjsRegister calls in createCommonjsModule', async (t) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 901d68cc0..2a07aa0c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ importers: '@ava/babel': 1.0.1 '@typescript-eslint/eslint-plugin': 3.7.1_fdf7ae5f472a827bd9d9601df74d9b89 '@typescript-eslint/parser': 3.7.1_typescript@3.9.7 - ava: 3.11.0 + ava: 3.13.0 chalk: 4.1.0 codecov-lite: 1.0.3 del-cli: 3.0.1 @@ -18,7 +18,7 @@ importers: husky: 4.2.5 lint-staged: 10.2.11 nyc: 15.1.0 - pnpm: 5.4.6 + pnpm: 5.9.3 prettier: 2.0.5 prettier-plugin-package: 1.0.0_prettier@2.0.5 ts-node: 8.10.2_typescript@3.9.7 @@ -30,7 +30,7 @@ importers: '@ava/babel': ^1.0.1 '@typescript-eslint/eslint-plugin': ^3.7.1 '@typescript-eslint/parser': ^3.7.1 - ava: ^3.11.0 + ava: ^3.13.0 chalk: ^4.1.0 codecov-lite: ^1.0.3 conventional-commits-parser: ^3.1.0 @@ -41,7 +41,7 @@ importers: husky: ^4.2.5 lint-staged: ^10.2.11 nyc: ^15.1.0 - pnpm: ^5.4.6 + pnpm: ^5.9.3 prettier: ^2.0.5 prettier-plugin-package: ^1.0.0 semver: ^7.3.2 @@ -2000,12 +2000,12 @@ packages: acorn: ^6.0.0 || ^7.0.0 resolution: integrity: sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - /acorn-walk/7.2.0: + /acorn-walk/8.0.0: dev: true engines: node: '>=0.4.0' resolution: - integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + integrity: sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA== /acorn/6.4.1: engines: node: '>=0.4.0' @@ -2019,6 +2019,13 @@ packages: hasBin: true resolution: integrity: sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + /acorn/8.0.4: + dev: true + engines: + node: '>=0.4.0' + hasBin: true + resolution: + integrity: sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== /aggregate-error/3.0.1: dependencies: clean-stack: 2.2.0 @@ -2028,6 +2035,15 @@ packages: node: '>=8' resolution: integrity: sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + /aggregate-error/3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== /ajv/6.12.3: dependencies: fast-deep-equal: 3.1.3 @@ -2107,6 +2123,14 @@ packages: node: '>=8' resolution: integrity: sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + /ansi-styles/4.3.0: + dependencies: + color-convert: 2.0.1 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== /any-promise/1.3.0: dev: false resolution: @@ -2199,17 +2223,17 @@ packages: node: '>=8' resolution: integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - /ava/3.11.0: + /ava/3.13.0: dependencies: '@concordance/react': 2.0.0 - acorn: 7.3.1 - acorn-walk: 7.2.0 - ansi-styles: 4.2.1 + acorn: 8.0.4 + acorn-walk: 8.0.0 + ansi-styles: 4.3.0 arrgv: 1.0.2 arrify: 2.0.1 callsites: 3.1.0 chalk: 4.1.0 - chokidar: 3.4.1 + chokidar: 3.4.3 chunkd: 2.0.1 ci-info: 2.0.0 ci-parallel-vars: 1.0.1 @@ -2218,12 +2242,12 @@ packages: cli-truncate: 2.1.0 code-excerpt: 3.0.0 common-path-prefix: 3.0.0 - concordance: 5.0.0 + concordance: 5.0.1 convert-source-map: 1.7.0 currently-unhandled: 0.4.1 - debug: 4.1.1 - del: 5.1.0 - emittery: 0.7.1 + debug: 4.2.0 + del: 6.0.0 + emittery: 0.7.2 equal-length: 1.0.1 figures: 3.2.0 globby: 11.0.1 @@ -2231,19 +2255,20 @@ packages: import-local: 3.0.2 indent-string: 4.0.0 is-error: 2.2.2 - is-plain-object: 4.1.1 + is-plain-object: 5.0.0 is-promise: 4.0.0 - lodash: 4.17.19 + lodash: 4.17.20 matcher: 3.0.0 md5-hex: 3.0.1 - mem: 6.1.0 + mem: 6.1.1 ms: 2.1.2 - ora: 4.0.5 + ora: 5.1.0 + p-event: 4.2.0 p-map: 4.0.0 picomatch: 2.2.2 pkg-conf: 3.1.0 plur: 4.0.0 - pretty-ms: 7.0.0 + pretty-ms: 7.0.1 read-pkg: 5.2.0 resolve-cwd: 3.0.0 slash: 3.0.0 @@ -2253,15 +2278,15 @@ packages: supertap: 1.0.0 temp-dir: 2.0.0 trim-off-newlines: 1.0.1 - update-notifier: 4.1.0 + update-notifier: 4.1.3 write-file-atomic: 3.0.3 - yargs: 15.4.1 + yargs: 16.1.0 dev: true engines: node: '>=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0' hasBin: true resolution: - integrity: sha512-y5U8BGeSRjs/OypsC4CJxr+L1KtLKU5kUyHr5hcghXn7HNr2f4LE/4gvl0Q5lNkLX1obdRW1oODphNdU/glwmA== + integrity: sha512-yzky+gark5PdsFFlZ4CnBVxm/OgBUWtn9vAsSSnuooVJNOk5ER17HJXVeUzy63LIt06Zy34oThcn+2ZqgMs7SA== /babel-plugin-dynamic-import-node/2.3.3: dependencies: object.assign: 4.1.0 @@ -2293,10 +2318,10 @@ packages: node: '>=8' resolution: integrity: sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - /blueimp-md5/2.17.0: + /blueimp-md5/2.18.0: dev: true resolution: - integrity: sha512-x5PKJHY5rHQYaADj6NwPUR2QRCUVSggPzrUKkeENpj871o9l9IefJbO2jkT5UvYykeOK9dx0VmkIo6dZ+vThYw== + integrity: sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== /boolbase/1.0.0: dev: true resolution: @@ -2306,7 +2331,7 @@ packages: ansi-align: 3.0.0 camelcase: 5.3.1 chalk: 3.0.0 - cli-boxes: 2.2.0 + cli-boxes: 2.2.1 string-width: 4.2.0 term-size: 2.2.0 type-fest: 0.8.1 @@ -2374,7 +2399,7 @@ packages: /cacheable-request/6.1.0: dependencies: clone-response: 1.0.2 - get-stream: 5.1.0 + get-stream: 5.2.0 http-cache-semantics: 4.1.0 keyv: 3.1.0 lowercase-keys: 2.0.0 @@ -2509,8 +2534,8 @@ packages: integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== /chalk/3.0.0: dependencies: - ansi-styles: 4.2.1 - supports-color: 7.1.0 + ansi-styles: 4.3.0 + supports-color: 7.2.0 dev: true engines: node: '>=8' @@ -2529,7 +2554,7 @@ packages: dev: true resolution: integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - /chokidar/3.4.1: + /chokidar/3.4.3: dependencies: anymatch: 3.1.1 braces: 3.0.2 @@ -2537,14 +2562,14 @@ packages: is-binary-path: 2.1.0 is-glob: 4.0.1 normalize-path: 3.0.0 - readdirp: 3.4.0 + readdirp: 3.5.0 dev: true engines: node: '>= 8.10.0' optionalDependencies: fsevents: 2.1.3 resolution: - integrity: sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== + integrity: sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== /chunkd/2.0.1: dev: true resolution: @@ -2569,12 +2594,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= - /cli-boxes/2.2.0: + /cli-boxes/2.2.1: dev: true engines: node: '>=6' resolution: - integrity: sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== /cli-cursor/3.1.0: dependencies: restore-cursor: 3.1.0 @@ -2583,12 +2608,12 @@ packages: node: '>=8' resolution: integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - /cli-spinners/2.4.0: + /cli-spinners/2.5.0: dev: true engines: node: '>=6' resolution: - integrity: sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== + integrity: sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== /cli-truncate/2.1.0: dependencies: slice-ansi: 3.0.0 @@ -2612,6 +2637,14 @@ packages: dev: true resolution: integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + /cliui/7.0.3: + dependencies: + string-width: 4.2.0 + strip-ansi: 6.0.0 + wrap-ansi: 7.0.0 + dev: true + resolution: + integrity: sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw== /clone-response/1.0.2: dependencies: mimic-response: 1.0.1 @@ -2739,24 +2772,24 @@ packages: node: '>=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0' resolution: integrity: sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ== - /concordance/5.0.0: + /concordance/5.0.1: dependencies: date-time: 3.1.0 esutils: 2.0.3 fast-diff: 1.2.0 js-string-escape: 1.0.1 - lodash: 4.17.19 + lodash: 4.17.20 md5-hex: 3.0.1 semver: 7.3.2 well-known-symbols: 2.0.0 dev: true engines: - node: '>=10.18.0 <11 || >=12.14.0 <13 || >=13.5.0' + node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14' resolution: - integrity: sha512-stOCz9ffg0+rytwTaL2njUOIyMfANwfwmqc9Dr4vTUS/x/KkVFlWx9Zlzu6tHYtjKxxaCF/cEAZgPDac+n35sg== + integrity: sha512-TbNtInKVElgEBnJ1v2Xg+MFX2lvFLbmlv3EuSC5wTfCwpB8kC3w3mffF6cKuUhkn475Ym1f1I4qmuXzx2+uXpw== /configstore/5.0.1: dependencies: - dot-prop: 5.2.0 + dot-prop: 5.3.0 graceful-fs: 4.2.4 make-dir: 3.1.0 unique-string: 2.0.0 @@ -3077,6 +3110,19 @@ packages: dev: true resolution: integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + /debug/4.2.0: + dependencies: + ms: 2.1.2 + dev: true + engines: + node: '>=6.0' + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + resolution: + integrity: sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== /decamelize-keys/1.1.0: dependencies: decamelize: 1.2.0 @@ -3197,6 +3243,21 @@ packages: node: '>=8' resolution: integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + /del/6.0.0: + dependencies: + globby: 11.0.1 + graceful-fs: 4.2.4 + is-glob: 4.0.1 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.2 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== /detect-indent/5.0.0: dev: false engines: @@ -3263,6 +3324,14 @@ packages: node: '>=8' resolution: integrity: sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + /dot-prop/5.3.0: + dependencies: + is-obj: 2.0.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== /duplexer3/0.1.4: dev: true resolution: @@ -3271,12 +3340,12 @@ packages: dev: true resolution: integrity: sha512-cN4lkjNRuTG8rtAqTOVgwpecEC2kbKA04PG6YijcKGHK/kD0xLjiqExcAOmLUwtXZRF8cBeam2I0VZcih919Ug== - /emittery/0.7.1: + /emittery/0.7.2: dev: true engines: node: '>=10' resolution: - integrity: sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== /emoji-regex/7.0.3: dev: true resolution: @@ -3392,6 +3461,12 @@ packages: node: '>=6' resolution: integrity: sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== + /escalade/3.1.1: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== /escape-goat/2.1.1: dev: true engines: @@ -3859,6 +3934,14 @@ packages: node: '>=8' resolution: integrity: sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + /get-stream/5.2.0: + dependencies: + pump: 3.0.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== /glob-parent/5.1.1: dependencies: is-glob: 4.0.1 @@ -4399,12 +4482,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== - /is-plain-object/4.1.1: + /is-plain-object/5.0.0: dev: true engines: node: '>=0.10.0' resolution: - integrity: sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA== + integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== /is-promise/4.0.0: dev: true resolution: @@ -4605,8 +4688,12 @@ packages: resolution: integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== /json-parse-better-errors/1.0.2: + dev: true resolution: integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + /json-parse-even-better-errors/2.3.1: + resolution: + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== /json-schema-traverse/0.4.1: dev: true resolution: @@ -4828,14 +4915,10 @@ packages: /lodash/4.17.19: resolution: integrity: sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - /log-symbols/3.0.0: - dependencies: - chalk: 2.4.2 + /lodash/4.17.20: dev: true - engines: - node: '>=8' resolution: - integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== /log-symbols/4.0.0: dependencies: chalk: 4.1.0 @@ -4944,7 +5027,7 @@ packages: integrity: sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM= /md5-hex/3.0.1: dependencies: - blueimp-md5: 2.17.0 + blueimp-md5: 2.18.0 dev: true engines: node: '>=8' @@ -4962,7 +5045,7 @@ packages: dev: true resolution: integrity: sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - /mem/6.1.0: + /mem/6.1.1: dependencies: map-age-cleaner: 0.1.3 mimic-fn: 3.1.0 @@ -4970,7 +5053,7 @@ packages: engines: node: '>=8' resolution: - integrity: sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg== + integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q== /meow/6.1.1: dependencies: '@types/minimist': 1.2.0 @@ -5298,6 +5381,14 @@ packages: node: '>=6' resolution: integrity: sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + /onetime/5.1.2: + dependencies: + mimic-fn: 2.1.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== /opencollective-postinstall/2.0.3: dev: true hasBin: true @@ -5316,21 +5407,21 @@ packages: node: '>= 0.8.0' resolution: integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - /ora/4.0.5: + /ora/5.1.0: dependencies: - chalk: 3.0.0 + chalk: 4.1.0 cli-cursor: 3.1.0 - cli-spinners: 2.4.0 + cli-spinners: 2.5.0 is-interactive: 1.0.0 - log-symbols: 3.0.0 + log-symbols: 4.0.0 mute-stream: 0.0.8 strip-ansi: 6.0.0 wcwidth: 1.0.1 dev: true engines: - node: '>=8' + node: '>=10' resolution: - integrity: sha512-jCDgm9DqvRcNIAEv2wZPrh7E5PcQiDUnbnWbAfu4NGAE2ZNqPFbDixmWldy1YG2QfLeQhuiu6/h5VRrk6cG50w== + integrity: sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== /os-tmpdir/1.0.2: dev: true engines: @@ -5417,7 +5508,7 @@ packages: integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== /p-map/4.0.0: dependencies: - aggregate-error: 3.0.1 + aggregate-error: 3.1.0 dev: true engines: node: '>=10' @@ -5504,10 +5595,21 @@ packages: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 lines-and-columns: 1.1.6 + dev: true engines: node: '>=8' resolution: integrity: sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== + /parse-json/5.1.0: + dependencies: + '@babel/code-frame': 7.10.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.1.6 + engines: + node: '>=8' + resolution: + integrity: sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== /parse-ms/2.1.0: dev: true engines: @@ -5633,13 +5735,13 @@ packages: node: '>=10' resolution: integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== - /pnpm/5.4.6: + /pnpm/5.9.3: dev: true engines: - node: '>=10.13' + node: '>=10.16' hasBin: true resolution: - integrity: sha512-UZXIBwIlYkT+YbW8QjobVoppYT/hVphu1eu+ed60mGf+Ulz+suAR21zunWUGoETbibvetIkj8HLebsmz5tow8A== + integrity: sha512-MyN/jR/WfM7SPnnrkaEoQ2+cOhoSAnhzJ2sDOF7yZKyjh0sYuvGcijeZYbyWJ0r5C0vtBPV5SRtiLaHvwYWZBg== /postcss-calc/7.0.2: dependencies: postcss: 7.0.32 @@ -6050,14 +6152,14 @@ packages: hasBin: true resolution: integrity: sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== - /pretty-ms/7.0.0: + /pretty-ms/7.0.1: dependencies: parse-ms: 2.1.0 dev: true engines: node: '>=10' resolution: - integrity: sha512-J3aPWiC5e9ZeZFuSeBraGxSkGMOvulSWsxDByOcbD1Pr75YL3LSNIKIb52WXbCLE1sS5s4inBBbryjF4Y05Ceg== + integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== /process-nextick-args/2.0.1: dev: false resolution: @@ -6157,7 +6259,7 @@ packages: dependencies: '@types/normalize-package-data': 2.4.0 normalize-package-data: 2.5.0 - parse-json: 5.0.1 + parse-json: 5.1.0 type-fest: 0.6.0 engines: node: '>=8' @@ -6185,14 +6287,14 @@ packages: node: '>= 6' resolution: integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - /readdirp/3.4.0: + /readdirp/3.5.0: dependencies: picomatch: 2.2.2 dev: true engines: node: '>=8.10.0' resolution: - integrity: sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== /rechoir/0.6.2: dependencies: resolve: 1.17.0 @@ -6367,7 +6469,7 @@ packages: integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== /restore-cursor/3.1.0: dependencies: - onetime: 5.1.0 + onetime: 5.1.2 signal-exit: 3.0.3 dev: true engines: @@ -6621,7 +6723,7 @@ packages: integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== /slice-ansi/3.0.0: dependencies: - ansi-styles: 4.2.1 + ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 dev: true @@ -6691,7 +6793,7 @@ packages: /spdx-correct/3.1.1: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.5 + spdx-license-ids: 3.0.6 resolution: integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== /spdx-exceptions/2.3.0: @@ -6700,12 +6802,12 @@ packages: /spdx-expression-parse/3.0.1: dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.5 + spdx-license-ids: 3.0.6 resolution: integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - /spdx-license-ids/3.0.5: + /spdx-license-ids/3.0.6: resolution: - integrity: sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + integrity: sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== /split2/2.2.0: dependencies: through2: 2.0.5 @@ -6951,6 +7053,14 @@ packages: node: '>=8' resolution: integrity: sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + /supports-color/7.2.0: + dependencies: + has-flag: 4.0.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== /svgo/1.3.2: dependencies: chalk: 2.4.2 @@ -7269,7 +7379,7 @@ packages: dev: true resolution: integrity: sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - /update-notifier/4.1.0: + /update-notifier/4.1.3: dependencies: boxen: 4.2.0 chalk: 3.0.0 @@ -7288,7 +7398,7 @@ packages: engines: node: '>=8' resolution: - integrity: sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== + integrity: sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== /uri-js/4.2.2: dependencies: punycode: 2.1.1 @@ -7395,6 +7505,16 @@ packages: node: '>=8' resolution: integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + /wrap-ansi/7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.0 + strip-ansi: 6.0.0 + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== /wrappy/1.0.2: resolution: integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= @@ -7461,6 +7581,12 @@ packages: dev: true resolution: integrity: sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + /y18n/5.0.4: + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-deLOfD+RvFgrpAmSZgfGdWYE+OKyHcVHaRQ7NphG/63scpRvTHHeQMAxGGvaLVGJ+HYVcCXlzcTK0ZehFf+eHQ== /yaml/1.10.0: dev: true engines: @@ -7475,6 +7601,12 @@ packages: node: '>=6' resolution: integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + /yargs-parser/20.2.3: + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww== /yargs/15.4.1: dependencies: cliui: 6.0.0 @@ -7493,6 +7625,20 @@ packages: node: '>=8' resolution: integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + /yargs/16.1.0: + dependencies: + cliui: 7.0.3 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.0 + y18n: 5.0.4 + yargs-parser: 20.2.3 + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g== /yn/3.1.1: dev: true engines: From 7f5c3ae110b6298ab050e1aebbee5edc486ecca8 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 17 Oct 2020 12:38:43 +0200 Subject: [PATCH 2/2] feat(commonjs): Pass type of import to node-resolve --- packages/commonjs/README.md | 24 ++++---- packages/commonjs/src/helpers.js | 1 + packages/commonjs/src/resolve-id.js | 36 ++++++----- packages/commonjs/src/transform.js | 12 ++-- .../form/constant-template-literal/output.js | 2 +- .../form/ignore-ids-function/output.js | 2 +- .../test/fixtures/form/ignore-ids/output.js | 2 +- .../multi-entry-module-exports/output1.js | 2 +- .../multiple-var-declarations-b/output.js | 2 +- .../multiple-var-declarations-c/output.js | 2 +- .../form/multiple-var-declarations/output.js | 4 +- .../fixtures/form/no-exports-entry/output.js | 2 +- .../fixtures/form/require-collision/output.js | 2 +- .../unambiguous-with-default-export/output.js | 2 +- .../form/unambiguous-with-import/output.js | 2 +- .../unambiguous-with-named-export/output.js | 2 +- .../dynamic-require-absolute-paths/_config.js | 3 + .../function/late-entry-dependency/_config.js | 3 +- .../pass-require-to-node-resolve/_config.js | 25 ++++++++ .../bar-imported.js | 1 + .../bar-required.js | 1 + .../foo-imported.js | 1 + .../foo-required.js | 1 + .../pass-require-to-node-resolve/main.js | 7 +++ .../pass-require-to-node-resolve/requiring.js | 3 + .../unresolved-dependencies/_config.js | 21 +++++++ .../function/unresolved-dependencies/main.js | 3 + .../commonjs/test/snapshots/function.js.md | 58 ++++++++++++++++++ .../commonjs/test/snapshots/function.js.snap | Bin 12709 -> 12879 bytes packages/commonjs/test/test.js | 4 +- 30 files changed, 181 insertions(+), 49 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/_config.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-imported.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-required.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-imported.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-required.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/main.js create mode 100644 packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/requiring.js create mode 100644 packages/commonjs/test/fixtures/function/unresolved-dependencies/_config.js create mode 100644 packages/commonjs/test/fixtures/function/unresolved-dependencies/main.js diff --git a/packages/commonjs/README.md b/packages/commonjs/README.md index c00bf7f3d..d57cb9d66 100644 --- a/packages/commonjs/README.md +++ b/packages/commonjs/README.md @@ -34,9 +34,9 @@ export default { input: 'src/index.js', output: { dir: 'output', - format: 'cjs', + format: 'cjs' }, - plugins: [commonjs()], + plugins: [commonjs()] }; ``` @@ -66,8 +66,8 @@ commonjs({ '!node_modules/logform/index.js', '!node_modules/logform/format.js', '!node_modules/logform/levels.js', - '!node_modules/logform/browser.js', - ], + '!node_modules/logform/browser.js' + ] }); ``` @@ -174,7 +174,7 @@ This is in line with how other bundlers handle this situation and is also the mo var dep$1 = /*#__PURE__*/ Object.freeze({ __proto__: null, - default: dep, + default: dep }); console.log(dep$1.default); @@ -205,7 +205,7 @@ For these situations, you can change Rollup's behaviour either globally or per m enumerable: true, get: function () { return n[k]; - }, + } } ); }); @@ -287,9 +287,9 @@ export default { output: { file: 'bundle.js', format: 'iife', - name: 'MyModule', + name: 'MyModule' }, - plugins: [resolve(), commonjs()], + plugins: [resolve(), commonjs()] }; ``` @@ -299,7 +299,7 @@ Symlinks are common in monorepos and are also created by the `npm link` command. ```js commonjs({ - include: /node_modules/, + include: /node_modules/ }); ``` @@ -322,11 +322,11 @@ function cjsDetectionPlugin() { moduleParsed({ id, meta: { - commonjs: { isCommonJS }, - }, + commonjs: { isCommonJS } + } }) { console.log(`File ${id} is CommonJS: ${isCommonJS}`); - }, + } }; } ``` diff --git a/packages/commonjs/src/helpers.js b/packages/commonjs/src/helpers.js index d6659eab0..15d459d56 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 REQUIRE_SUFFIX = '?commonjs-require'; export const EXTERNAL_SUFFIX = '?commonjs-external'; export const VIRTUAL_PATH_BASE = '/$$rollup_base$$'; diff --git a/packages/commonjs/src/resolve-id.js b/packages/commonjs/src/resolve-id.js index 07a58d4d6..8873602dd 100644 --- a/packages/commonjs/src/resolve-id.js +++ b/packages/commonjs/src/resolve-id.js @@ -10,6 +10,7 @@ import { HELPERS_ID, isWrappedId, PROXY_SUFFIX, + REQUIRE_SUFFIX, unwrapId, wrapId } from './helpers'; @@ -45,10 +46,18 @@ export default function getResolveId(extensions) { return undefined; } - function resolveId(importee, importer) { + return function resolveId(importee, importer) { + // Proxies are only importing resolved ids, no need to resolve again + if (importer && isWrappedId(importer, PROXY_SUFFIX)) { + return importee; + } + const isProxyModule = isWrappedId(importee, PROXY_SUFFIX); + const isRequiredModule = isWrappedId(importee, REQUIRE_SUFFIX); if (isProxyModule) { importee = unwrapId(importee, PROXY_SUFFIX); + } else if (isRequiredModule) { + importee = unwrapId(importee, REQUIRE_SUFFIX); } if (importee.startsWith('\0')) { if ( @@ -58,30 +67,23 @@ export default function getResolveId(extensions) { ) { return importee; } - if (!isProxyModule) { - return null; - } + return null; } - if (importer && isWrappedId(importer, PROXY_SUFFIX)) { - importer = unwrapId(importer, PROXY_SUFFIX); - } - - return this.resolve(importee, importer, { skipSelf: true }).then((resolved) => { + return this.resolve(importee, importer, { + skipSelf: true, + custom: { 'node-resolve': { isRequire: isProxyModule || isRequiredModule } } + }).then((resolved) => { if (!resolved) { resolved = resolveExtensions(importee, importer); } - if (isProxyModule) { - if (!resolved) { - return { id: wrapId(importee, EXTERNAL_SUFFIX), external: false }; - } + if (resolved && isProxyModule) { resolved.id = wrapId(resolved.id, resolved.external ? EXTERNAL_SUFFIX : PROXY_SUFFIX); resolved.external = false; - return resolved; + } else if (!resolved && (isProxyModule || isRequiredModule)) { + return { id: wrapId(importee, EXTERNAL_SUFFIX), external: false }; } return resolved; }); - } - - return resolveId; + }; } diff --git a/packages/commonjs/src/transform.js b/packages/commonjs/src/transform.js index 7cf7ec316..a9d8330be 100644 --- a/packages/commonjs/src/transform.js +++ b/packages/commonjs/src/transform.js @@ -14,6 +14,7 @@ import { getVirtualPathForDynamicRequirePath, HELPERS_ID, PROXY_SUFFIX, + REQUIRE_SUFFIX, wrapId } from './helpers'; import { getName } from './utils'; @@ -573,13 +574,16 @@ export function transformCommonjs( : [] ) .concat( - // dynamic registers first (`commonjsRegister(,,,)`), as the may be required in the other modules + // dynamic registers first, as the may be required in the other modules dynamicRegisterSources.map((source) => `import '${source}';`), - // now the solid modules, non-commonjsRegister - requiredSources.map((source) => `import '${source}';`), + // now the actual modules so that they are analyzed before creating the proxies; + // no need to do this for virtual modules as we never proxy them + requiredSources + .filter((source) => !source.startsWith('\0')) + .map((source) => `import '${wrapId(source, REQUIRE_SUFFIX)}';`), - // now the proxies for solid modules (non-commonjsRegister) + // now the proxy modules requiredSources.map((source) => { const { name, importsDefault } = required[source]; return `import ${importsDefault ? `${name} from ` : ``}'${ diff --git a/packages/commonjs/test/fixtures/form/constant-template-literal/output.js b/packages/commonjs/test/fixtures/form/constant-template-literal/output.js index f86e76363..56b546b25 100644 --- a/packages/commonjs/test/fixtures/form/constant-template-literal/output.js +++ b/packages/commonjs/test/fixtures/form/constant-template-literal/output.js @@ -1,4 +1,4 @@ -import 'tape'; +import '_tape?commonjs-require'; import foo from '_tape?commonjs-proxy'; console.log(foo); diff --git a/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js b/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js index 8857e268f..b3a0e90a3 100644 --- a/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js +++ b/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js @@ -1,4 +1,4 @@ -import 'bar'; +import '_bar?commonjs-require'; import bar from '_bar?commonjs-proxy'; var foo = require( 'foo' ); diff --git a/packages/commonjs/test/fixtures/form/ignore-ids/output.js b/packages/commonjs/test/fixtures/form/ignore-ids/output.js index 8857e268f..b3a0e90a3 100644 --- a/packages/commonjs/test/fixtures/form/ignore-ids/output.js +++ b/packages/commonjs/test/fixtures/form/ignore-ids/output.js @@ -1,4 +1,4 @@ -import 'bar'; +import '_bar?commonjs-require'; import bar from '_bar?commonjs-proxy'; var foo = require( 'foo' ); diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js index fd1e0719e..7b712dea7 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js @@ -1,4 +1,4 @@ -import './input2.js'; +import '_./input2.js?commonjs-require'; import t2 from '_./input2.js?commonjs-proxy'; console.log(t2); diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js index 5d80fea29..6be20f53c 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js @@ -1,4 +1,4 @@ -import './a'; +import '_./a?commonjs-require'; import a from '_./a?commonjs-proxy'; var b = 42; diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js index e1dca645c..fbf095bcc 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js @@ -1,4 +1,4 @@ -import './b'; +import '_./b?commonjs-require'; import b from '_./b?commonjs-proxy'; var a = 'a' diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js index beb25c63f..5e300e809 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js @@ -1,5 +1,5 @@ -import './a'; -import './b'; +import '_./a?commonjs-require'; +import '_./b?commonjs-require'; import require$$0 from '_./a?commonjs-proxy'; import b from '_./b?commonjs-proxy'; diff --git a/packages/commonjs/test/fixtures/form/no-exports-entry/output.js b/packages/commonjs/test/fixtures/form/no-exports-entry/output.js index af6d479f6..731b75d5a 100644 --- a/packages/commonjs/test/fixtures/form/no-exports-entry/output.js +++ b/packages/commonjs/test/fixtures/form/no-exports-entry/output.js @@ -1,4 +1,4 @@ -import './dummy'; +import '_./dummy?commonjs-require'; import dummy from '_./dummy?commonjs-proxy'; var foo = function () { diff --git a/packages/commonjs/test/fixtures/form/require-collision/output.js b/packages/commonjs/test/fixtures/form/require-collision/output.js index e689a4d8b..a7386cb8e 100644 --- a/packages/commonjs/test/fixtures/form/require-collision/output.js +++ b/packages/commonjs/test/fixtures/form/require-collision/output.js @@ -1,4 +1,4 @@ -import 'foo'; +import '_foo?commonjs-require'; import require$$1 from '_foo?commonjs-proxy'; (function() { diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js index af86babb3..babc5ed99 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js @@ -1,4 +1,4 @@ -import './foo.js'; +import '_./foo.js?commonjs-require'; import '_./foo.js?commonjs-proxy'; export default {}; diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js index ab5213af4..508ea8ff1 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js @@ -1,4 +1,4 @@ -import './foo.js'; +import '_./foo.js?commonjs-require'; import '_./foo.js?commonjs-proxy'; import './bar.js'; diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js index 21d5dd24c..df6f380b1 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js @@ -1,4 +1,4 @@ -import './foo.js'; +import '_./foo.js?commonjs-require'; import '_./foo.js?commonjs-proxy'; export {}; 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 index 8a62ba220..c0a5a9fc2 100755 --- a/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js +++ b/packages/commonjs/test/fixtures/function/dynamic-require-absolute-paths/_config.js @@ -2,5 +2,8 @@ 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/late-entry-dependency/_config.js b/packages/commonjs/test/fixtures/function/late-entry-dependency/_config.js index f37302ec0..263f81520 100644 --- a/packages/commonjs/test/fixtures/function/late-entry-dependency/_config.js +++ b/packages/commonjs/test/fixtures/function/late-entry-dependency/_config.js @@ -1,6 +1,7 @@ -const path = require('path'); const fs = require('fs'); +const path = require('path'); + const ID_MAIN = path.join(__dirname, 'main.js'); const ID_OTHER = path.join(__dirname, 'other.js'); diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/_config.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/_config.js new file mode 100644 index 000000000..3e1ac41b8 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/_config.js @@ -0,0 +1,25 @@ +const assert = require('assert'); + +module.exports = { + description: 'notifies the node-resolve plugin if an id is imported via "require"', + options: { + plugins: [ + { + name: 'node-resolve-mock', + resolveId(source, importer, { custom }) { + const { isRequire } = (custom && custom['node-resolve']) || {}; + if (source === './foo') { + return this.resolve(isRequire ? './foo-required' : './foo-imported', importer); + } + if (source === './bar') { + return this.resolve(isRequire ? './bar-required' : './bar-imported', importer); + } + return null; + } + } + ] + }, + async exports(exports) { + assert.deepStrictEqual(await exports, [{ default: 'imported' }, { default: 'imported' }]); + } +}; diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-imported.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-imported.js new file mode 100644 index 000000000..ef0b41a1c --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-imported.js @@ -0,0 +1 @@ +export default 'imported'; diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-required.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-required.js new file mode 100644 index 000000000..38dd80e26 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/bar-required.js @@ -0,0 +1 @@ +throw new Error('Should not be imported'); diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-imported.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-imported.js new file mode 100644 index 000000000..ef0b41a1c --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-imported.js @@ -0,0 +1 @@ +export default 'imported'; diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-required.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-required.js new file mode 100644 index 000000000..3d7c93df0 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/foo-required.js @@ -0,0 +1 @@ +module.exports = 'required'; diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/main.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/main.js new file mode 100644 index 000000000..237f561c9 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/main.js @@ -0,0 +1,7 @@ +import foo from './foo'; +import required from './requiring'; + +t.is(foo, 'imported'); +t.is(required.foo, 'required'); + +export default Promise.all([import('./bar'), required.barPromise]); diff --git a/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/requiring.js b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/requiring.js new file mode 100644 index 000000000..fe5760a85 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/pass-require-to-node-resolve/requiring.js @@ -0,0 +1,3 @@ +exports.foo = require('./foo'); + +exports.barPromise = import('./bar'); diff --git a/packages/commonjs/test/fixtures/function/unresolved-dependencies/_config.js b/packages/commonjs/test/fixtures/function/unresolved-dependencies/_config.js new file mode 100644 index 000000000..a7daf279e --- /dev/null +++ b/packages/commonjs/test/fixtures/function/unresolved-dependencies/_config.js @@ -0,0 +1,21 @@ +const assert = require('assert'); + +const warnings = []; + +module.exports = { + description: 'handles unresolved dependencies with the proper warning', + options: { + onwarn(warning) { + warnings.push(warning); + }, + plugins: [ + { + buildEnd() { + assert.strictEqual(warnings.length, 1); + assert.strictEqual(warnings[0].code, 'UNRESOLVED_IMPORT'); + assert.strictEqual(warnings[0].source, 'path'); + } + } + ] + } +}; diff --git a/packages/commonjs/test/fixtures/function/unresolved-dependencies/main.js b/packages/commonjs/test/fixtures/function/unresolved-dependencies/main.js new file mode 100644 index 000000000..a3a4f0074 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/unresolved-dependencies/main.js @@ -0,0 +1,3 @@ +const path = require('path'); + +t.is(typeof path.resolve, 'function'); diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 5ea110f93..390a01e4f 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -4532,6 +4532,41 @@ Generated by [AVA](https://avajs.dev). `, } +## pass-require-to-node-resolve + +> Snapshot 1 + + { + 'bar-imported-49e0dbcf.js': `'use strict';␊ + ␊ + var barImported = 'imported';␊ + ␊ + exports.default = barImported;␊ + `, + 'main.js': `'use strict';␊ + ␊ + var foo = 'imported';␊ + ␊ + var fooRequired = 'required';␊ + ␊ + var foo$1 = fooRequired;␊ + ␊ + var barPromise = Promise.resolve().then(function () { return require('./bar-imported-49e0dbcf.js'); });␊ + ␊ + var requiring = {␊ + foo: foo$1,␊ + barPromise: barPromise␊ + };␊ + ␊ + t.is(foo, 'imported');␊ + t.is(requiring.foo, 'required');␊ + ␊ + var main = Promise.all([Promise.resolve().then(function () { return require('./bar-imported-49e0dbcf.js'); }), requiring.barPromise]);␊ + ␊ + module.exports = main;␊ + `, + } + ## react-apollo > Snapshot 1 @@ -5550,3 +5585,26 @@ Generated by [AVA](https://avajs.dev). t.is(foo, 1);␊ `, } + +## unresolved-dependencies + +> 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);␊ + ␊ + t.is(typeof path__default['default'].resolve, 'function');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 7cde825cc951f24310b4b71b2d4d536a3e363e88..379dd92080bbbb04bd93dbe5e8d0fd4872971c56 100644 GIT binary patch literal 12879 zcmajELzFJS(q>(!Y}>YN+qP}nHs5lcvTfUS%C>FWegE!n(s$5*P9oMGn$gu<%bAW_YBb=PNKe8AIX9;i6`;OZ%KTNP z;E)7YbM*%Bn_|@ zi0*OqJv(W=qcP~PT;%GLoXF_>EdV^dq21T7ZBPbih;{`Pmh?zjY)e>X6f&hSbBWPbqx_-}7# zUVVKITW{xOU(RW<6%x7hQs*x6aINv)tlm1at#lOcbtE^EIZ8frRu&Gnn~%4X zwZD7IXl?}K8QeFzQrb^#(Va3oxlKRubdw5OJnnLmqf1h!QVUKrm-aa5`_2tQ)g(xXeS3~9yx8s8cuVzGWd0$Q(``tEm3 zdjIntMCmdMXLDE$X`@jV4(q-j&p!O0$C=Ef`YveAL+K8jcjHhv?seJ$8<_#$j|VNx zrTD&dj=cM|=Lml8V-M-4{HZT~o!1G>r9ao;Qq~E>`q`diW_3Bd7lCx+({&8VOwYwQ zWal1iyT1>?I-UM&*1S9Sdnf^%qN7VUe@Ur6-+3&4FYYjwHVf&>XuB`BmYGY{x9Fr& zPd#$y(0Bbz-Z6K>Vs^DYieoDhhIT;^^p{(^ zoi}dbai0f79Io$uTVgBPwqTHb161fSI9)zs6XG|}xg9Sxu~aT^lZ(&J9q`=@9|r2S zRiCv!wk`7f^hTGMUS$A3E29$fde4hdpWEMOdb4AE1{6n@G7?CsP`%KP+dZI!0<$8|y8y6lJ#bLjh>Dw>|G{Um%xe4;A!XV*?E{jxirsMB3`8{)|2`N*g&`|VO2 zU4k+Il=S(xS?68hMcDuB_RM})eyyQ!pj@OuW1>KK~D!+{1~lF7m4UVJV4lWfh6$6DdGq|;&Al&y!hSrA#WLXdry3R>N;Z;@C#_Axo_CLti4a1 zG}YyF5Vtv=+Q

0X_N5GJV?ld~Oiv;=Q-KY)*j%a3?4VaLJ~{*LArJDjap-B`mM_ zyq<7+%Hw_+IA5b&$+javtx0GHjYnCx>!-wbHuPW;B0QlqCQ1I9$>1a-Cd| zc_3Yo+_mkxyw3P}49u?dexL4kbGwVpvJ3l}&^K>3UHX4V)CstpRVs{iH@qJ7h@)JL zdNnpbtRyIW+~3yvJYVd27BlN2e3jCEo9*I^;j#L>dvVzD_Xpf{DfCK|chQ3O zbUjDpBM^mb!vyNjKEEHCcz_}r-AynY|?1hnTU&T0|MwE1Jp z{EWW6QjESHK0}nid!{QI@Mx#`dw+~A>Tf?+j4eA={r0}q^1Tu+xui`f-xODwi!1n^ z2gfK}Mt^E#Kk5nB1S!4C9~mHY^8~Da8>~N^pU(2#t*3^1FFR{>egz-WXS*GGc?h^2 zg7n2*H~vC|dJjlr8tpG`XzYHJVZ7ewyv)&f2n4_t%xIFyApAZRR$2I7KJ?uN46qdW z&dR4lK1YeqB_gbdmP*X}zTwpMHE-l)e(?y`ggZSAJn4+$x{RGfOW}R$eN1xD3*;(V zSU0-9n7!(G%>Qwy)^8Ei+jV`4<$!#?yfkW-&1Bm@rs?~9DFybP$l{(4%goJhm+@V)Md(5G0!$p7AXo7Y#_&AhAA zVej?Qzp2Qh7(=vvd~bZ}YE#Hf^S#(kPTrK)N%ro0<`q`!rI494*lK$2yObC3nOuwr zc*%<>G=X{^iRlN{Uv1sg8oT*eDDBY54zPMvk_55N;2#_vU(502RprGJ?+dO~mLEQ4YomBX>9MFJz zUXd|9Ki!ad{Pp=(3*y?W<*`wA&GQ!4YY|KPGT&73x&9qarPyWkxfpN5dlv}p{5@`T z^^9@;XD0Kq?Kb&s&|y80aXU@4w7SpW`^#c8%YB~u-TM(#yxr$^=qddDB+>Zv^tM?i zoAYbBys}Nwm+^BF2VF1|)bTc=VD8WD_mqYp;djcRAq!jQo2NJn)^nNrx)8JJ|9q`- z<9Cqonw$83?G?J=%l0&wuAakbzi&biK$GqF6mlxjCsnSM*s$X<3xzY*dgZQIZ8cHi-ltGd-FD{rh;@maCtl zBKQvex2x|6T?E77b+U{$LoOC@e{DPlZ{-Wafg_$)P zz}Q65;GGssK-Z+n=%ficN6jj7DXosdSR4+;c$f5^_;{C4mXgoEBC>ax!{eMyRX#j@ zhq>J%dxG0ZtSsXUEk2_U2v6oVb7_sCZX+&x%~#WDx2 z-by5LZCG@2al=IJ#DplhU50cJY+_2Y4`)-TONA<-I^klrmP@?t8JWz`mKF^< zZ307POS94Z!`tAE=>OuM`Pgf)1`*B4aeX(khn#=)eVq*h#Crky{nWLBs_y>1MW;A?) zjqx2*PBF9yNpnVxU?ww|j7k9q$vPrP4m0Fu3W~g9HY7&yZ4sQsMoKUx}#@WK7{W5@DSiC?W~09hR8CLa3^b|G9_};VFk!Gc^xw=yPAm9UyXS^Eay{4|8ZNvht8vPD`g7UWd`=R*_^&F35T ztyKTPD+)6K5#HoiIy6-QX(dH+TPTce8Tm`u7(jd^ZnnfJUELr93-o7WHZ`H7zFpL* zw>(59Z0}4fFPga`kb?{1 z1yA7a*R)yUL~M-~jx`Q8lWeYB=bF23lI_Ef+(#{*c8Y3=*t6chjSvGVpWwz{s~wCq zj9vgmSpuH`TZb>MY-SdP>;)b+Jk9Daxzm6^Q{^>qBF&T%139;Ig60GJ^SD-I$_aKd z-KLvx`W4_SKWlCKF>Csa&R0|VFTZ>>ibBvLbw!pwRX6wgKpd{wYG7WplifU1$!4?( zKi_}Kx`J$&d!bgO)A(;GD>vRc<*tJHhlB2$MCbsg4--?IDqd*lrfO zzaduX7HlNR8|7pbp|UGf_^>!Ru`37bs5ty=e-=rtu=n=QZ`mHelB(Ap9JS~chf#)> zT4L6TQRjaNVFPYCdy!u8?Q~hc}4wn#%v4o6cF>NJPFc{ ziQ=ovIAj+&`Lu*x+MC?(!C!e~Vu6oLPJ*){$d~6dan@OCC)4Jd{ZrPsN00oQ;b!@W19o{4>|-)p^ew9EIgdzGlR<<_1{KDwtAy5O`Tp81HS?ZAUMD zqKm<^s-Cqpglbo4Y1bK1CNO_5DKlNcwVBMLFl?sNz|=Y;7^#gR&!2{x1>lMh*YkF2 zP#!8WY3z=(_Kl=Fm>;;N4ar991H>lA&jJ{8zk>~_LQE3?pn*MUo&J$bWXd&moFDM(h(+G_XPyP?t z)5Q|j6{_M)IxW@VC#s085OOU^up)NzZ)SxR_W3#2w{z1gVul2`2km1!osPwoe@m{kFlY<5$&=_wMB=;@)OCoz zTg)D`TnXGuEa3=~p8FHloQ7f}Z*N-{UIeX0DN4fKh7|HZbK>ywAz_8B>N`f_@>cE6 zoT?jP9p^5f@EsG`SO6!lM5$u{Z9YthoVmu#7w;Oa>5?fh?U<~y;Iu$@!<=#=hU8$* zVa^X`P1Y-?PXK9|!o1SL&^|)xpTD{gp}CmOJeh*`oPOW{G4cQse1k^dQFUMEVHNaW zWM)~gZn8bPKMqiyGW|NhJIHrwfo-7wg;wfA+Jvo9Tvcb5gf;shqTQV&XAFh3ZTDlX zMdhwKD{o$G$qTT=Ip>p}AiO{HX5E;ekvk$vK;A5y=aO2CD(Czu|4Jm~yWjYNgRQE9eZ-tahHA%n}E%uOhgHgd^baZE7_Rc^2C%rk9{Dwvq^8&}Xgmge=! zB8D(?HG3(*Sh7KqaN5D?mF<9Tg$no9_4k6lkkvB;`9WRD7#aY7BCn#yc$JniBGFU?ONJDIw_} zA}B~HK}ld?WJJLKjYx2XjrV!d#IPODRNI8Z=^@fUQ{$|uC01i6^6ijuC+vcBL*$?x zFTICbg7~OI@e5LGTZARJn7Nu(WjQ0ELB!*k2g_Tw2h`P>a~musq$yao6fE_Y(^%A0 zWIo=Q@unOn@^c)^MY=ECj}RID2tol#11SOrA_JuW<%0r|0a5*Im~h%`rRh z5EPeUkMqwM6sLT@6L37rf1@G%c#%sJdemz3d_>*pJ!41u`$7;j25tEJe2=D!{*43+ zC3#NA&ynf<(tGizcEdJoTw)AYN=1I@QM1Ssvq*1q$7iUS154ATe#;9xwYcMdj6_ed z-bc0xmVf+}uvgL@FomKn!=C-FZWpfTf0{o;A zm>f9M2jL(YYIpQb_O5M|oA`6dS`2#}-QCp*N?ODV%c|pVF2uyy`Fk)sJ}WqB{FmTM z?DTkEVr+GAVq5p^^&clh=}el7(vh>k1P%wA9eHc9YTdZC5Aw0gV0xyA-p8|I$k+1S zumqtwEE?hJh45H0;Xji}f^P%;|3=8UA#%RIjVmVMSH%*qb-{ zJ5qAY9TUh&r|gd4t)V zPub*5clI2W*342;Gm!FvEn&qSud36c_Ytjc^Kq4Jc-?ibPgY#4IrMg)O3&Q;!5zL} z3+p9Q?43Y3d#_^nRKL;GV1keq$j83aJ)k&i)sN(^;nn6lzk?n>`QogbNSGplx4(yK z-tI}u5l3~>fN4kO37=>KnGL~|gfJVGU8z{162Ch954Bn~*VuV0h+M)v|AT|A(~Wtr z(RV8FIiX62W?OesAnDK>&K7wpuOk?&<64rXpkFNFaZryI9*mwk4TA&?V_WB?zGg18 zyF-YMJ7ooI;+%$9qH$tVTD4%mM=)WOoAlYGYMT?B1NM> zU})}-chk&BrKZE86fpgXKn_!l`{0zxi;eDO=15`y_x$>dFZS5mW^a+h&`e10D24+B zXnDO!5Htz6U76{@>(sRQM)lO=Uko!@<_xOQ{*@(3Gpnjr3l?+mxKzg~YsU-WV0a-U zPP!%+CfpzxlRBaMf4&4OL`Q`Z`2<6MzRzL+PY?)L+(*Xw_Rm0s(fbE{yYw9=4iT3k zWy#pF}jcxIT)bD56iUB1KRfN5xORb(eH^B?vivizwGsZ6Zm*&s|3 zqIgdGggK?%Cw<6OTpqcQ+4DP(HF<#RrF;+jq@_kvEJWIRZ6Y=wr*;nK6Jl*pF0NjA zPq z{RGvaIh}>v1kW;dNomN!+yg#qV&YB3pwKQx`Fv}Xh|t%WTu5%}6V zI(kD|^KGGMXzH#JO@&uRS>6*%1*j)(h|@F{vfyLgxtxg$pJw_Yplx*~-b!;@_^_of zqk!pa)t1(iL@R9;3;O_usT#&MlJza<7;XNTiS-zvhVml&S8tl7(*u~lOVVOdqAADP zg={q>hrp~TJ&eRWK4^RuM8qquH7XpkuDBrFG5I1Y$fjdColHd{!YWcHtb@~2ll~^V(oh>4UsY*w$8j+l90v<7m+5h1-FlI?1Iask%PMcw-2t zHt-iSf4zh6)}*Rj1|oBQ(T_P$o_XJ^qzMR zJQrigkm(wdq_Xkpgop;D`j09r)-zLUE*Tnm1*ko2#NZ4MW+#pC;xx`zTWrxM9EVGT z#BlO7@+~?Id{t~V>(yzrTPf@!rr;cqaJ_L=+%v}yeyE}{f@?Ihk`gj|Jwb^rc3YaKhF zZ$+ZijBidB%BmM`x+Qre@hl|00gDQD+XP=PRS+Q~??I~9KywG>{j7yrqf`x#4<2EC z*`Tl+4U(@st8+Vd_Jy=Y;T9T%$8%2EoabY|K}y&pME5j>@=+%+-Z+vkT;=!{c^r`6 zlG;txI0gYHw6DRu#IiBGvPQP2l!14)>5oah4q0On;rJ#T{**oyjI#G$huKYyNGqgr z_a-fw99Nh0cGC+o?4J^I*jAa>=rWpMenF*C2Eg1zb| znK!S6BeD40tv$uHCne2!5u(Zfn)&dwA!@c>!)3M2PNrs!^Z|T^7Pt9uxxc7Nj6SGIoNITy%Vb|{aXmP&A?j_*!RPST zBlM|h`0MyFEWVh}EtvHEPu6qKBV z5i4jMQda!G5v+$S`5!p6!ATNL&Sp{BJ2JMWQc>MfbH^bPKC_rKN*&j^dScW1P1Yer zow-pr-f_f{g?m|ml{&VKVNG+Iq_8-Nv!EruDe9vTsd7i9{ZtXeg(h~&k!_>Yn%m(R zgUjpJb{Z!iA)>eN7BeEIko1#L;u4jud0M8H;TZy=npv4h7hiFA<+HbL(`mdTC_7cW z3+>ijvV*59De~ktBuOpDHiS<;ezdbtGLi^DCsaf(;O9nt?XePjEBLJ+?h|XgU*NDvQ>vAUblja!-e^O< z)*Ndu=#>Z6lSbGu!VI!HOkO#CD&izDk5wYBq8ax^2iREHm~Lj1vD^t}e-f0!3{(RH=+>rVtqW z3Eyjxv6upFn#$WjR7xXCq?V|CP)N6ok+)8Ta%g%-c0l@A>xBmTjVlQcDzasoTeUeL zoFI<|;rDI~h{Z?r-2`V4zOh82NUIqTPhlRWzRWpGJ&OBYRNeuTuNzi2j=NR|c(iCX z3J~~E+}hPUE8hG`JH(f~afZ&D-P{Fu_n{E$U5(xeW3VWKd6>g^ZwCs7OZ;JnXKQuP zchuK7o=F*fYP=$l7Y$8d!J?@#WBsl#*2E8gU31AC!IzP8!uU`ctpGHg!Gm$SxaYsckeg+vc_dzo zo`N@?ccRUxa9auvj~6dUkIrz%GME39)}=^1i4k{PD8x=$!l${LGwN2bHaZJp>B!8; zais3Um3>)4;O#Lf3XdxOju+Aw;}&?|946lx_49a*!C+n?96cxqz+jfTinj_BJoE*t z`J57rcEq=!lr(}|;KU(8q0H*N2(b%Z>bASHU|O#|AgGu=gs0wzm=_&$$^0XS0_TK| zNzjX}xclWIK_7IW67|#&Lg5yG7FtD+-{t!jo6QG@oVus1Hs5vOcXi?{T;#n^vYlW~ zyKvvT1Cy`SJyGw)Nnde)#a72PmY@s)Jso3d;D}{D`q|Se))r*x%>!#Lt(7zU$!9xD;G!a0UsC_lQ1(3U6g zcy~rDCfS5M^H#O_4pi?zl6rpanUOU*4kF$Dv`N(@ru zNf+~BZ5^p7AFxr?A$@e(veUXkLFRO{vO!iG9$~C>xXl4?!js4*`{z+_qO&xiI(%GP zBKO<~Th%ygUgKz96UmLb&8;=cHj^%-(oh=Qrd&jr+D?I6Ms^~qda~5y_M^jGXYkQ*X&|#n zX@rwqDC$`Wx_n5wExPCk&Xdn}m?q+t%DUHE?0e zKKQ5P5t$#?%|9YyAHUA;!0RyF|kzz}b7i1aaGG`8Jjc-*-@0{D-C6b#HD*qs}? zWxb5QI+U;d0;s^EK(Y@*jrIJtGDe@e?^6>}(#FDmoE!8Ih+Ul_pmS)c5S1|PjoSOp z!v7w}peLB#dlzGe?*LwWhjF-?b@K5F^1u8MXsIP{;G2gF5&tdiAoVvMJKWx3{@hGi zx({GYGWKnqj7rLEA`*u8V7`b&@QF}Sc}@(~5@v$sIM?-X)y13}Vb-BczK!lx1JDCk zXxtmVQ1n9?DMXCr!!7mJx~{2vja^CUy1W)gVCIq7ryv!zrSqkCYE&$PjlBMq)Xt!S z0c%)COH_*H6i{h~*i01lG|2=DN6XFtLm~-AIvVxXw?4-l4#tv(f`+9w>`5#zlbMhU zA@2zlQBH>C(CE=E?{Pn{*ssRFp-99dYT+0)sd*{3(?WVEsTv#@W* z2`2<60|&N2#p`6O7Hq>1XsReVxK*drnl5nC=xs!y=20a93th`fOIks&VOub_vTq;H`i-np zIW5Km4{rc1860%F1O{E*K4T$}Ol{X<*+suIZ?D2G7QeKLp{AIHTJw9he07wdf>jl4 zW%^E;993A%{m6rSfaS7^)IZfS)>^UmX>|}kF(h+Qd_>O~CAjDN@a4(>-1@iA6RFa< z2w}vlNapXj1o^ejq=z7PvYm>`2YFmGue}p5!gRk_Xp^=N^gBorn+-8tKXEXu9~c$l zMIaGsHll&ywFfVUa^-xq9h3aJW=~omXZ{e{8@@d%QjJL@IDcuf>eCEUzHFxOiRRG+ z5;(UR;!A6e|pNeP2$b2qSX1X5D>Y05;RA4ohXIAJ2aw%7{Qsp>a+$?n{ zDmM2IUkoK7@|Cf<(IJWdh3kkJw!E>DUR2xL6ow9VL=OWF zhU)?M8d&(hJ>ed4Kedq(c?Ht!sAe#Bp0|X|TA=8&ylPRuQVjgJEE*6WAznN<*k_A* z+^n|IJRMZ1TwJmo+!{c1Nh*eU1>K?W-%nH`PO8!&Wy2^v6A-ASfChis-~sZ;dm%i% zQoKy=QG0HR4BoynsZYsqTGQ9mv!M=2H9yc8!T&fy@IDGy4>~1@oOOXL?$A4Pv2!4k z8l}U2_Y|a}3_~pB8f$lW*Du<|ItXJV&8S>+Yd=5TMS^|}YXZ(x3ujb__Hh757P&&7>xMdQDioAjzZ7fe9= zoarZm;d6x);tIBW_6jlsqYOmyW7S&z$NbSyc7|jsj=mX4j2E+1#|7j5XeyTYKo${) zC&~-Rel9XXCw-r9a}(udbu6gYV&Rvj(2(RU!m1Phk+Sk@%q9js1D-D+Hqt#5UJ0yi zW|{&0&-BSEG!#iWmMLCpYHV08sPTgY@jXhmR+o9G6_vzQ1Dwj$m6eiBJ5a&FTISIB zQpl|FIYX$zFzn*PRc%s2C6tjT_u-pqDaJ-4@h&b zI)d;U3g;TxRj&t*3*8HM_dp}u#QM1`U|~o|;-;q9N$5zx+=Dw1>G;6XRmpUie=cMh zw?G7sxo!?ci6?lMXjRK6!XPJ${4Dw-(<=mp!SdC*pT35N+;6+aO>zH?S zy>hL%ieD~->$D4+Jk<-ipk{yBmhG9DBv)p+`9s{Y>%@kH;8yDDpX1mN(h*g=I(d6u z&ny5;#}6K6sdLCoVs!PPIM*tUh`B^%cSm2R3$tsA~u3O(A( znZgy1BT@k%d+YzqpEEXJy-J6@pQL0rvfU4v2j1yI%1yXBhT4thj5v=Q@5Kq=^5x4A`2Ij1 zHk?Ip*XP1VYSAeM0mxYNM^xmCwoWhV%3I;@^K z`TL<}5G&XjVIl!wpql=W^@`1154!K?2Dj?UjIev}`6O0e-IppwwhIqN=rb)~N<`NDqn`m`0%EnD#AefKC7s%qv66gq~C zFLcEuK>jPW;@@Fg~qkHmO3a*c)f|Jh1n zy~e^$^d`8oH3-?w3p4I>$2k#OWMsA?zGE3p{vf-Dz2Rmjx*UYBlZV;;?D*&_4svJv z-nn-_HJq@n=U+#y$2X=E)^5t$5u_IW3&U#xP=t5sgQUXzkb?!=Z<~5YiP1cS!wN7= z#zc0#B06RTE`ny0@3HUTS5P}3>LVTKLa8_(vf2){BMZKTVR!i^)-MHZ<3XRZx3&vXHK&Bi9V3l444-#%N&=UZ7J3rv;|j-;-@`P4~L z)!G)~lD`=eYpvsN^aF%5)EavnHQZ;V@Fx%kNEc`i7zhKX9jG4+h#tuCzY+h|q0~H^ zjWzclDab+8`6M%HI_DJK^zitv{_1}G#U`{wY#KgVfNSEhIU+R}IXE$gSxXKmMGdQ{ zP~ON#4$LjBf&rXY&ZAp6f)!q)$(>dq0LZ1v9hUjj0BcVF1#IwY1(;j1#9~gdT0*Iyb#fa`_R>uD^XyL>IphR153Bv&6ta{|nK1EcgHb literal 12709 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 diff --git a/packages/commonjs/test/test.js b/packages/commonjs/test/test.js index 31efc302c..6e9971bae 100644 --- a/packages/commonjs/test/test.js +++ b/packages/commonjs/test/test.js @@ -278,7 +278,7 @@ test('typeof transforms: correct-scoping', async (t) => { test('typeof transforms: protobuf', async (t) => { const bundle = await rollup({ input: 'fixtures/samples/umd/protobuf.js', - external: ['bytebuffer'], + external: ['bytebuffer', 'foo'], plugins: [commonjs()] }); @@ -316,7 +316,7 @@ test('deconflicts reserved keywords', async (t) => { plugins: [commonjs()] }); - const reservedProp = (await executeBundle(bundle, t)).exports.delete; + const reservedProp = (await executeBundle(bundle, t, { exports: 'named' })).exports.delete; t.is(reservedProp, 'foo'); });