From 642a671b58404cdae8980358b714d85510b4237c Mon Sep 17 00:00:00 2001 From: Chris Breiding Date: Tue, 11 Feb 2020 11:35:52 -0500 Subject: [PATCH] fix: Fix non-top-level requires (#37) revert @babel/plugin-transform-modules-commonjs to babel-plugin-add-module-exports --- .node-version | 2 +- index.js | 2 +- package-lock.json | 167 ++++++++++++++++++++-------------- package.json | 4 +- test/e2e/e2e_spec.js | 7 ++ test/fixtures/dom_spec.js | 2 +- test/fixtures/require_spec.js | 14 +++ 7 files changed, 126 insertions(+), 72 deletions(-) create mode 100644 test/fixtures/require_spec.js diff --git a/.node-version b/.node-version index 2b0aa21..e56b200 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -8.2.1 +12.8.1 diff --git a/index.js b/index.js index cef618d..969ab41 100644 --- a/index.js +++ b/index.js @@ -29,7 +29,7 @@ const defaultOptions = { babelrc: false, plugins: [ ...[ - '@babel/plugin-transform-modules-commonjs', + 'babel-plugin-add-module-exports', '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-object-rest-spread', ].map(require.resolve), diff --git a/package-lock.json b/package-lock.json index 58679e7..0d1939a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1501,6 +1501,12 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -1697,6 +1703,12 @@ "normalize-path": "^2.1.1" } }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1859,6 +1871,14 @@ "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", "dev": true }, + "babel-plugin-add-module-exports": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", + "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", + "requires": { + "chokidar": "^2.0.4" + } + }, "babel-plugin-dynamic-import-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", @@ -3884,25 +3904,44 @@ } }, "disparity": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/disparity/-/disparity-2.0.0.tgz", - "integrity": "sha1-V92stHMkrl9Y0swNqIbbTOnutxg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/disparity/-/disparity-3.0.0.tgz", + "integrity": "sha512-n94Rzbv2ambRaFzrnBf34IEiyOdIci7maRpMkoQWB6xFYGA7Nbs0Z5YQzMfTeyQeelv23nayqOcssBoc6rKrgw==", "dev": true, "requires": { - "ansi-styles": "^2.0.1", - "diff": "^1.3.2" + "ansi-styles": "^4.1.0", + "diff": "^4.0.1" }, "dependencies": { "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true } } @@ -4836,9 +4875,9 @@ } }, "folktale": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/folktale/-/folktale-2.0.1.tgz", - "integrity": "sha512-3kDSWVkSlErHIt/dC73vu+5zRqbW1mlnL46s2QfYN7Ps0JcS9MVtuLCrDQOBa7sanA+d9Fd8F+bn0VcyNe68Jw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/folktale/-/folktale-2.3.2.tgz", + "integrity": "sha512-+8GbtQBwEqutP0v3uajDDoN64K2ehmHd0cjlghhxh0WpcfPzAIjPA03e1VvHlxL02FVGR0A6lwXsNQKn3H1RNQ==", "dev": true }, "for-in": { @@ -6001,6 +6040,12 @@ "lodash.uniqby": "^4.7.0" } }, + "its-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/its-name/-/its-name-1.0.0.tgz", + "integrity": "sha1-IGXxiD7LVoxl9xEt2/EjQB+uSvA=", + "dev": true + }, "java-properties": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.1.tgz", @@ -12151,85 +12196,64 @@ "dev": true }, "snap-shot-compare": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/snap-shot-compare/-/snap-shot-compare-2.7.1.tgz", - "integrity": "sha512-qJPyYskLyuOOON1rFjO5xHmeVduaNJGd6AgeWqq8F6rVE+n79Jr7wdML2qrODoAeb63zztd5JB9Cc8WSWV/rig==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/snap-shot-compare/-/snap-shot-compare-3.0.0.tgz", + "integrity": "sha512-bdwNOAGuKwPU+qsn0ASxTv+QfkXU+3VmkcDOkt965tes+JQQc8d6SfoLiEiRVhCey4v+ip2IjNUSbZm5nnkI9g==", "dev": true, "requires": { "check-more-types": "2.24.0", - "disparity": "2.0.0", - "folktale": "2.0.1", + "debug": "4.1.1", + "disparity": "3.0.0", + "folktale": "2.3.2", "lazy-ass": "1.6.0", - "strip-ansi": "4.0.0", + "strip-ansi": "5.2.0", "variable-diff": "1.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, "snap-shot-core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/snap-shot-core/-/snap-shot-core-7.1.12.tgz", - "integrity": "sha512-bRZfGP2MgPCpzRi/Zou9om7VoAMp3cwFj5Xp19NSRuRzOiLJpuoa62msyY7jcy/zr69Shg1OgHCDSoaH7B59wA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/snap-shot-core/-/snap-shot-core-10.2.0.tgz", + "integrity": "sha512-FsP+Wd4SCA4bLSm3vi6OVgfmGQcAQkUhwy45zDjZDm/6dZ5SDIgP40ORHg7z6MgMAK2+fj2DmhW7SXyvMU55Vw==", "dev": true, "requires": { + "arg": "4.1.0", "check-more-types": "2.24.0", "common-tags": "1.8.0", - "debug": "3.2.6", + "debug": "4.1.1", "escape-quotes": "1.0.2", "folktale": "2.3.2", - "is-ci": "1.2.1", + "is-ci": "2.0.0", "jsesc": "2.5.2", "lazy-ass": "1.6.0", "mkdirp": "0.5.1", - "pluralize": "7.0.0", + "pluralize": "8.0.0", + "quote": "0.4.0", "ramda": "0.26.1" }, "dependencies": { - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "folktale": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/folktale/-/folktale-2.3.2.tgz", - "integrity": "sha512-+8GbtQBwEqutP0v3uajDDoN64K2ehmHd0cjlghhxh0WpcfPzAIjPA03e1VvHlxL02FVGR0A6lwXsNQKn3H1RNQ==", + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, "ramda": { "version": "0.26.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", @@ -12239,21 +12263,30 @@ } }, "snap-shot-it": { - "version": "6.2.9", - "resolved": "https://registry.npmjs.org/snap-shot-it/-/snap-shot-it-6.2.9.tgz", - "integrity": "sha512-bN51yrg6a14bqwjCzCUD2czyOu47J2ndYxc4fiSlYz3jT0HBCJL8rP5M6nDbaftH7DQYIkew3Vx7lShpzpJZjg==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/snap-shot-it/-/snap-shot-it-7.9.2.tgz", + "integrity": "sha512-MYrlKx9zLDizbOkqyW1dIagwBwDqecu+jlcxpTKXZA+t2Q+D7m5BU45+Z3zhb2JPtWo+t7sieZks5nW0dw0rQw==", "dev": true, "requires": { "@bahmutov/data-driven": "1.0.0", "check-more-types": "2.24.0", + "common-tags": "1.8.0", "debug": "4.1.1", "has-only": "1.1.1", - "pluralize": "7.0.0", + "its-name": "1.0.0", + "lazy-ass": "1.6.0", + "pluralize": "8.0.0", "ramda": "0.26.1", - "snap-shot-compare": "2.7.1", - "snap-shot-core": "7.1.12" + "snap-shot-compare": "3.0.0", + "snap-shot-core": "10.2.0" }, "dependencies": { + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, "ramda": { "version": "0.26.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", diff --git a/package.json b/package.json index 5c1270b..0d52f51 100644 --- a/package.json +++ b/package.json @@ -55,17 +55,17 @@ "semantic-release": "15.13.15", "sinon": "7.2.3", "sinon-chai": "3.3.0", - "snap-shot-it": "6.2.9" + "snap-shot-it": "7.9.2" }, "dependencies": { "@babel/core": "7.4.5", "@babel/plugin-proposal-class-properties": "7.3.0", "@babel/plugin-proposal-object-rest-spread": "7.3.2", - "@babel/plugin-transform-modules-commonjs": "7.8.3", "@babel/plugin-transform-runtime": "7.2.0", "@babel/preset-env": "7.4.5", "@babel/preset-react": "7.0.0", "@babel/runtime": "7.3.1", + "babel-plugin-add-module-exports": "1.0.2", "babelify": "10.0.0", "bluebird": "3.5.3", "browserify": "16.2.3", diff --git a/test/e2e/e2e_spec.js b/test/e2e/e2e_spec.js index 00d9a0d..972687b 100644 --- a/test/e2e/e2e_spec.js +++ b/test/e2e/e2e_spec.js @@ -74,4 +74,11 @@ describe('imports and exports', () => { eval(output) }) }) + + it('handles non-top-level require', () => { + return bundle('require_spec.js').then((output) => { + // check that bundled tests work + eval(output) + }) + }) }) diff --git a/test/fixtures/dom_spec.js b/test/fixtures/dom_spec.js index f7bb120..9f7429a 100644 --- a/test/fixtures/dom_spec.js +++ b/test/fixtures/dom_spec.js @@ -1,4 +1,4 @@ -const dom = require('./dom').default +const dom = require('./dom') context('imports default string', function () { it('works', () => { diff --git a/test/fixtures/require_spec.js b/test/fixtures/require_spec.js new file mode 100644 index 0000000..5d6f7dc --- /dev/null +++ b/test/fixtures/require_spec.js @@ -0,0 +1,14 @@ +context('non-top-level requires', function () { + const math = require('./math') + const dom = require('./dom') + + it('imports proper types of values', () => { + expect(math.add, 'add').to.be.a('function') + expect(dom, 'dom').to.be.a('string') + }) + + it('values are correct', function () { + expect(math.add(1, 2)).to.eq(3) + expect(dom, 'dom').to.equal('dom') + }) +})