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..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' + ] }); ``` @@ -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. @@ -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/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..15d459d56 100644 --- a/packages/commonjs/src/helpers.js +++ b/packages/commonjs/src/helpers.js @@ -1,10 +1,10 @@ -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 REQUIRE_SUFFIX = '?commonjs-require'; 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..8873602dd 100644 --- a/packages/commonjs/src/resolve-id.js +++ b/packages/commonjs/src/resolve-id.js @@ -6,11 +6,13 @@ 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, + REQUIRE_SUFFIX, + unwrapId, + wrapId } from './helpers'; function getCandidatesForExtension(resolved, extension) { @@ -44,10 +46,18 @@ export default function getResolveId(extensions) { return undefined; } - function resolveId(importee, importer) { - const isProxyModule = importee.endsWith(PROXY_SUFFIX); + 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 = getIdFromProxyId(importee); + importee = unwrapId(importee, PROXY_SUFFIX); + } else if (isRequiredModule) { + importee = unwrapId(importee, REQUIRE_SUFFIX); } if (importee.startsWith('\0')) { if ( @@ -57,30 +67,23 @@ export default function getResolveId(extensions) { ) { return importee; } - if (!isProxyModule) { - return null; - } + return null; } - if (importer && importer.endsWith(PROXY_SUFFIX)) { - importer = getIdFromProxyId(importer); - } - - 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: getExternalProxyId(importee), external: false }; - } - resolved.id = (resolved.external ? getExternalProxyId : getProxyId)(resolved.id); + 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 299db1fd3..a9d8330be 100644 --- a/packages/commonjs/src/transform.js +++ b/packages/commonjs/src/transform.js @@ -11,9 +11,11 @@ import { flatten, isFalsy, isReference, isTruthy } from './ast-utils'; import { DYNAMIC_JSON_PREFIX, DYNAMIC_REGISTER_PREFIX, - getProxyId, getVirtualPathForDynamicRequirePath, - HELPERS_ID + HELPERS_ID, + PROXY_SUFFIX, + REQUIRE_SUFFIX, + wrapId } from './helpers'; import { getName } from './utils'; @@ -138,7 +140,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 +232,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 +242,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 +558,8 @@ export function transformCommonjs( usesCommonjsHelpers = usesCommonjsHelpers || shouldWrap; if ( - !sources.length && + !requiredSources.length && + !dynamicRegisterSources.length && !uses.module && !uses.exports && !uses.require && @@ -568,25 +574,22 @@ 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}';`), - - // now the solid modules, non-commonjsRegister - sources - .filter(([, isDynamicRegister]) => !isDynamicRegister) - .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) - }';`; - }) + // dynamic registers first, as the may be required in the other modules + dynamicRegisterSources.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 proxy modules + 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/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/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.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 d4f280d77..379dd9208 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/test.js b/packages/commonjs/test/test.js index 17a8b6129..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'); }); @@ -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: