From e4dc686dea18342084341865ddd5d42fa188ded6 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sun, 26 Jul 2020 07:51:30 +0200 Subject: [PATCH] feat(commonjs): add esmExternals option --- packages/commonjs/src/index.js | 20 ++- .../function/esm-externals-false/_config.js | 15 ++ .../function/esm-externals-false/main.js | 11 ++ .../esm-externals-function/_config.js | 36 +++++ .../function/esm-externals-function/main.js | 11 ++ .../function/esm-externals-list/_config.js | 15 ++ .../function/esm-externals-list/main.js | 11 ++ .../function/esm-externals-true/_config.js | 15 ++ .../function/esm-externals-true/main.js | 11 ++ .../esm-externals-undefined/_config.js | 12 ++ .../function/esm-externals-undefined/main.js | 11 ++ .../_config.js | 3 +- .../_config.js | 3 +- .../_config.js | 8 +- .../_config.js | 3 +- .../_config.js | 3 +- .../_config.js | 3 +- .../_config.js | 3 + .../commonjs/test/snapshots/function.js.md | 153 +++++++++++++++++- .../commonjs/test/snapshots/function.js.snap | Bin 10834 -> 10177 bytes 20 files changed, 330 insertions(+), 17 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-false/_config.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-false/main.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-function/_config.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-function/main.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-list/_config.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-list/main.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-true/_config.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-true/main.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-undefined/_config.js create mode 100644 packages/commonjs/test/fixtures/function/esm-externals-undefined/main.js diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index 07ed83dfc..6c624ca9e 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -36,12 +36,23 @@ import { export default function commonjs(options = {}) { const extensions = options.extensions || ['.js']; const filter = createFilter(options.include, options.exclude); - // TODO Lukas document values: true, 'preferred', 'auto', false - const { ignoreGlobal, requireReturnsDefault: requireReturnsDefaultOption } = options; + // TODO Lukas document esmExternals + const { + ignoreGlobal, + requireReturnsDefault: requireReturnsDefaultOption, + esmExternals + } = options; const getRequireReturnsDefault = typeof requireReturnsDefaultOption === 'function' ? requireReturnsDefaultOption : () => requireReturnsDefaultOption; + let esmExternalIds; + const isEsmExternal = + typeof esmExternals === 'function' + ? esmExternals + : Array.isArray(esmExternals) + ? ((esmExternalIds = new Set(esmExternals)), (id) => esmExternalIds.has(id)) + : () => esmExternals; const { dynamicRequireModuleSet, dynamicRequireModuleDirPaths } = getDynamicRequirePaths( options.dynamicRequireTargets @@ -137,7 +148,10 @@ export default function commonjs(options = {}) { if (id.endsWith(EXTERNAL_SUFFIX)) { const actualId = getIdFromExternalProxyId(id); - return getUnknownRequireProxy(actualId, getRequireReturnsDefault(actualId)); + return getUnknownRequireProxy( + actualId, + isEsmExternal(actualId) ? getRequireReturnsDefault(actualId) : true + ); } if (id === DYNAMIC_PACKAGES_ID) { diff --git a/packages/commonjs/test/fixtures/function/esm-externals-false/_config.js b/packages/commonjs/test/fixtures/function/esm-externals-false/_config.js new file mode 100644 index 000000000..fece1fe53 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-false/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'always uses the default export when esmExternals is not used', + options: { + external: [ + 'external-cjs-exports', + 'external-cjs-module-exports', + 'external-esm-named', + 'external-esm-mixed', + 'external-esm-default' + ] + }, + pluginOptions: { + esmExternals: false + } +}; diff --git a/packages/commonjs/test/fixtures/function/esm-externals-false/main.js b/packages/commonjs/test/fixtures/function/esm-externals-false/main.js new file mode 100644 index 000000000..d1a5156cf --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-false/main.js @@ -0,0 +1,11 @@ +const externalExports = require('external-cjs-exports'); +const externalModuleExports = require('external-cjs-module-exports'); +const externalNamed = require('external-esm-named'); +const externalMixed = require('external-esm-mixed'); +const externalDefault = require('external-esm-default'); + +t.deepEqual(externalExports, { foo: 'foo' }, 'external exports'); +t.deepEqual(externalModuleExports, 'bar', 'external module exports'); +t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); +t.deepEqual(externalMixed, 'bar', 'external mixed'); +t.deepEqual(externalDefault, 'bar', 'external default'); diff --git a/packages/commonjs/test/fixtures/function/esm-externals-function/_config.js b/packages/commonjs/test/fixtures/function/esm-externals-function/_config.js new file mode 100644 index 000000000..990ca06e7 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-function/_config.js @@ -0,0 +1,36 @@ +const assert = require('assert'); + +const called = {}; + +module.exports = { + description: 'always uses the default export when esmExternals is not used', + options: { + external: [ + 'external-cjs-exports', + 'external-cjs-module-exports', + 'external-esm-named', + 'external-esm-mixed', + 'external-esm-default' + ], + plugins: [ + { + name: 'test-plugin', + buildEnd() { + assert.deepStrictEqual(called, { + 'external-cjs-exports': 1, + 'external-cjs-module-exports': 1, + 'external-esm-named': 1, + 'external-esm-mixed': 1, + 'external-esm-default': 1 + }); + } + } + ] + }, + pluginOptions: { + esmExternals: (id) => { + called[id] = (called[id] || 0) + 1; + return id === 'external-esm-default'; + } + } +}; diff --git a/packages/commonjs/test/fixtures/function/esm-externals-function/main.js b/packages/commonjs/test/fixtures/function/esm-externals-function/main.js new file mode 100644 index 000000000..88aa332ec --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-function/main.js @@ -0,0 +1,11 @@ +const externalExports = require('external-cjs-exports'); +const externalModuleExports = require('external-cjs-module-exports'); +const externalNamed = require('external-esm-named'); +const externalMixed = require('external-esm-mixed'); +const externalDefault = require('external-esm-default'); + +t.deepEqual(externalExports, { foo: 'foo' }, 'external exports'); +t.deepEqual(externalModuleExports, 'bar', 'external module exports'); +t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); +t.deepEqual(externalMixed, 'bar', 'external mixed'); +t.deepEqual(externalDefault, { default: 'bar' }, 'external default'); diff --git a/packages/commonjs/test/fixtures/function/esm-externals-list/_config.js b/packages/commonjs/test/fixtures/function/esm-externals-list/_config.js new file mode 100644 index 000000000..dac64cda6 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-list/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'always uses the default export when esmExternals is not used', + options: { + external: [ + 'external-cjs-exports', + 'external-cjs-module-exports', + 'external-esm-named', + 'external-esm-mixed', + 'external-esm-default' + ] + }, + pluginOptions: { + esmExternals: ['external-esm-default'] + } +}; diff --git a/packages/commonjs/test/fixtures/function/esm-externals-list/main.js b/packages/commonjs/test/fixtures/function/esm-externals-list/main.js new file mode 100644 index 000000000..88aa332ec --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-list/main.js @@ -0,0 +1,11 @@ +const externalExports = require('external-cjs-exports'); +const externalModuleExports = require('external-cjs-module-exports'); +const externalNamed = require('external-esm-named'); +const externalMixed = require('external-esm-mixed'); +const externalDefault = require('external-esm-default'); + +t.deepEqual(externalExports, { foo: 'foo' }, 'external exports'); +t.deepEqual(externalModuleExports, 'bar', 'external module exports'); +t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); +t.deepEqual(externalMixed, 'bar', 'external mixed'); +t.deepEqual(externalDefault, { default: 'bar' }, 'external default'); diff --git a/packages/commonjs/test/fixtures/function/esm-externals-true/_config.js b/packages/commonjs/test/fixtures/function/esm-externals-true/_config.js new file mode 100644 index 000000000..608ac5468 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-true/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'always uses the default export when esmExternals is not used', + options: { + external: [ + 'external-cjs-exports', + 'external-cjs-module-exports', + 'external-esm-named', + 'external-esm-mixed', + 'external-esm-default' + ] + }, + pluginOptions: { + esmExternals: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/esm-externals-true/main.js b/packages/commonjs/test/fixtures/function/esm-externals-true/main.js new file mode 100644 index 000000000..ca7736577 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-true/main.js @@ -0,0 +1,11 @@ +const externalExports = require('external-cjs-exports'); +const externalModuleExports = require('external-cjs-module-exports'); +const externalNamed = require('external-esm-named'); +const externalMixed = require('external-esm-mixed'); +const externalDefault = require('external-esm-default'); + +t.deepEqual(externalExports, { foo: 'foo' }, 'external exports'); +t.deepEqual(externalModuleExports, 'bar', 'external module exports'); +t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); +t.deepEqual(externalMixed, { default: 'bar', foo: 'foo' }, 'external mixed'); +t.deepEqual(externalDefault, { default: 'bar' }, 'external default'); diff --git a/packages/commonjs/test/fixtures/function/esm-externals-undefined/_config.js b/packages/commonjs/test/fixtures/function/esm-externals-undefined/_config.js new file mode 100644 index 000000000..8415861e7 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-undefined/_config.js @@ -0,0 +1,12 @@ +module.exports = { + description: 'always uses the default export when esmExternals is not used', + options: { + external: [ + 'external-cjs-exports', + 'external-cjs-module-exports', + 'external-esm-named', + 'external-esm-mixed', + 'external-esm-default' + ] + } +}; diff --git a/packages/commonjs/test/fixtures/function/esm-externals-undefined/main.js b/packages/commonjs/test/fixtures/function/esm-externals-undefined/main.js new file mode 100644 index 000000000..d1a5156cf --- /dev/null +++ b/packages/commonjs/test/fixtures/function/esm-externals-undefined/main.js @@ -0,0 +1,11 @@ +const externalExports = require('external-cjs-exports'); +const externalModuleExports = require('external-cjs-module-exports'); +const externalNamed = require('external-esm-named'); +const externalMixed = require('external-esm-mixed'); +const externalDefault = require('external-esm-default'); + +t.deepEqual(externalExports, { foo: 'foo' }, 'external exports'); +t.deepEqual(externalModuleExports, 'bar', 'external module exports'); +t.deepEqual(externalNamed, { foo: 'foo' }, 'external named'); +t.deepEqual(externalMixed, 'bar', 'external mixed'); +t.deepEqual(externalDefault, 'bar', 'external default'); diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-auto/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-auto/_config.js index 29635f5c6..49dbcbf2c 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-auto/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-auto/_config.js @@ -5,6 +5,7 @@ module.exports = { external: ['external-esm-named', 'external-esm-mixed', 'external-esm-default'] }, pluginOptions: { - requireReturnsDefault: 'auto' + requireReturnsDefault: 'auto', + esmExternals: true } }; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/_config.js index 601675af8..ee92ea3f7 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-false/_config.js @@ -5,6 +5,7 @@ module.exports = { external: ['external-esm-named', 'external-esm-mixed', 'external-esm-default'] }, pluginOptions: { - requireReturnsDefault: false + requireReturnsDefault: false, + esmExternals: true } }; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-called-once/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-called-once/_config.js index 7c2aaee85..69cd937f2 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-called-once/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-called-once/_config.js @@ -1,10 +1,6 @@ const assert = require('assert'); -const called = { - 'main.js': 0, - 'both.js': 0, - 'other.js': 0 -}; +const called = {}; module.exports = { description: 'only calls a requireReturnsDefault function once per id', @@ -37,7 +33,7 @@ module.exports = { requireReturnsDefault: (id) => { const [prefix, name] = id.split('_'); if (prefix === 'dep') { - called[name] += 1; + called[name] = (called[name] || 0) + 1; return 'preferred'; } return false; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-external/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-external/_config.js index 5c408d55b..7433b2b61 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-external/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-function-external/_config.js @@ -8,6 +8,7 @@ module.exports = { if (id === 'external-esm-mixed') return true; if (id === 'external-esm-default') return false; return 'auto'; - } + }, + esmExternals: true } }; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-preferred/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-preferred/_config.js index b3f986fd0..6cec5f85f 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-preferred/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-preferred/_config.js @@ -5,6 +5,7 @@ module.exports = { external: ['external-esm-named', 'external-esm-mixed', 'external-esm-default'] }, pluginOptions: { - requireReturnsDefault: 'preferred' + requireReturnsDefault: 'preferred', + esmExternals: true } }; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-true/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-true/_config.js index 157a33919..a65484de0 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-true/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-true/_config.js @@ -5,6 +5,7 @@ module.exports = { external: ['external-esm-named', 'external-esm-mixed', 'external-esm-default'] }, pluginOptions: { - requireReturnsDefault: true + requireReturnsDefault: true, + esmExternals: true } }; diff --git a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-undefined/_config.js b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-undefined/_config.js index 2a9b1188d..66dd8481d 100644 --- a/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-undefined/_config.js +++ b/packages/commonjs/test/fixtures/function/import-esm-require-returns-default-undefined/_config.js @@ -3,5 +3,8 @@ module.exports = { 'returns the namespace when requiring an ES module and requireReturnsDefault is missing', options: { external: ['external-esm-named', 'external-esm-mixed', 'external-esm-default'] + }, + pluginOptions: { + esmExternals: true } }; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index af858ea6a..b4aa0def7 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -778,7 +778,9 @@ Generated by [AVA](https://ava.li). { 'main.js': `'use strict';␊ ␊ - var path = require('path');␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var Path = _interopDefault(require('path'));␊ ␊ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ ␊ @@ -929,7 +931,7 @@ Generated by [AVA](https://ava.li). ␊ const basePath = `${process.cwd()}/fixtures/function/dynamic-require-absolute-paths`;␊ ␊ - t.is(commonjsRequire(path.resolve(`${basePath}/submodule.js`),"/$$rollup_base$$/fixtures/function/dynamic-require-absolute-paths"), 'submodule');␊ + t.is(commonjsRequire(Path.resolve(`${basePath}/submodule.js`),"/$$rollup_base$$/fixtures/function/dynamic-require-absolute-paths"), 'submodule');␊ ␊ var main = {␊ ␊ @@ -2777,6 +2779,149 @@ Generated by [AVA](https://ava.li). `, } +## esm-externals-false + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var externalExports = _interopDefault(require('external-cjs-exports'));␊ + var externalModuleExports = _interopDefault(require('external-cjs-module-exports'));␊ + var externalNamed = _interopDefault(require('external-esm-named'));␊ + var externalMixed = _interopDefault(require('external-esm-mixed'));␊ + var externalDefault = _interopDefault(require('external-esm-default'));␊ + ␊ + t.deepEqual(externalExports, { foo: 'foo' }, 'external exports');␊ + t.deepEqual(externalModuleExports, 'bar', 'external module exports');␊ + t.deepEqual(externalNamed, { foo: 'foo' }, 'external named');␊ + t.deepEqual(externalMixed, 'bar', 'external mixed');␊ + t.deepEqual(externalDefault, 'bar', 'external default');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## esm-externals-function + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var externalExports = _interopDefault(require('external-cjs-exports'));␊ + var externalModuleExports = _interopDefault(require('external-cjs-module-exports'));␊ + var externalNamed = _interopDefault(require('external-esm-named'));␊ + var externalMixed = _interopDefault(require('external-esm-mixed'));␊ + var externalEsmDefault = require('external-esm-default');␊ + ␊ + t.deepEqual(externalExports, { foo: 'foo' }, 'external exports');␊ + t.deepEqual(externalModuleExports, 'bar', 'external module exports');␊ + t.deepEqual(externalNamed, { foo: 'foo' }, 'external named');␊ + t.deepEqual(externalMixed, 'bar', 'external mixed');␊ + t.deepEqual(externalEsmDefault, { default: 'bar' }, 'external default');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## esm-externals-list + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var externalExports = _interopDefault(require('external-cjs-exports'));␊ + var externalModuleExports = _interopDefault(require('external-cjs-module-exports'));␊ + var externalNamed = _interopDefault(require('external-esm-named'));␊ + var externalMixed = _interopDefault(require('external-esm-mixed'));␊ + var externalEsmDefault = require('external-esm-default');␊ + ␊ + t.deepEqual(externalExports, { foo: 'foo' }, 'external exports');␊ + t.deepEqual(externalModuleExports, 'bar', 'external module exports');␊ + t.deepEqual(externalNamed, { foo: 'foo' }, 'external named');␊ + t.deepEqual(externalMixed, 'bar', 'external mixed');␊ + t.deepEqual(externalEsmDefault, { default: 'bar' }, 'external default');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## esm-externals-true + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var externalCjsExports = require('external-cjs-exports');␊ + var externalCjsModuleExports = require('external-cjs-module-exports');␊ + var externalEsmNamed = require('external-esm-named');␊ + var externalEsmMixed = require('external-esm-mixed');␊ + var externalEsmDefault = require('external-esm-default');␊ + ␊ + t.deepEqual(externalCjsExports, { foo: 'foo' }, 'external exports');␊ + t.deepEqual(externalCjsModuleExports, 'bar', 'external module exports');␊ + t.deepEqual(externalEsmNamed, { foo: 'foo' }, 'external named');␊ + t.deepEqual(externalEsmMixed, { default: 'bar', foo: 'foo' }, 'external mixed');␊ + t.deepEqual(externalEsmDefault, { default: 'bar' }, 'external default');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + +## esm-externals-undefined + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var externalExports = _interopDefault(require('external-cjs-exports'));␊ + var externalModuleExports = _interopDefault(require('external-cjs-module-exports'));␊ + var externalNamed = _interopDefault(require('external-esm-named'));␊ + var externalMixed = _interopDefault(require('external-esm-mixed'));␊ + var externalDefault = _interopDefault(require('external-esm-default'));␊ + ␊ + t.deepEqual(externalExports, { foo: 'foo' }, 'external exports');␊ + t.deepEqual(externalModuleExports, 'bar', 'external module exports');␊ + t.deepEqual(externalNamed, { foo: 'foo' }, 'external named');␊ + t.deepEqual(externalMixed, 'bar', 'external mixed');␊ + t.deepEqual(externalDefault, 'bar', 'external default');␊ + ␊ + var main = {␊ + ␊ + };␊ + ␊ + module.exports = main;␊ + `, + } + ## export-default-from > Snapshot 1 @@ -2827,7 +2972,9 @@ Generated by [AVA](https://ava.li). { 'main.js': `'use strict';␊ ␊ - var foo = require('foo');␊ + function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }␊ + ␊ + var foo = _interopDefault(require('foo'));␊ ␊ var main = foo;␊ ␊ diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 768fb0d09c66f7b41b9d7ee7767cb9542e8cde75..db8a75baadbbfbc0591d4f1605f512c726cf1c45 100644 GIT binary patch literal 10177 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