Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6a471de

Browse files
Improve @babel/runtime esm stability (#12883)
1 parent c9da965 commit 6a471de

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2713
-337
lines changed

.eslintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ packages/babel-parser/test/expressions
2626
eslint/*/lib
2727
eslint/*/node_modules
2828
eslint/*/test/fixtures
29+
30+
test/runtime-integration/*/output.js
31+
test/runtime-integration/*/output-absolute.js

.flowconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<PROJECT_ROOT>/codemods/.*/lib
66
<PROJECT_ROOT>/codemods/.*/test
77
<PROJECT_ROOT>/node_modules/module-deps/
8+
<PROJECT_ROOT>/node_modules/webpack-cli/
9+
<PROJECT_ROOT>/test/runtime-integration/
810

911
[include]
1012
packages/*/src

.github/workflows/ci.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,84 @@ jobs:
269269
run: make test-flow
270270
- name: Run TypeScript Tests
271271
run: make test-typescript
272+
273+
runtime-interop:
274+
name: Test @babel/runtime integrations
275+
needs: build
276+
runs-on: ubuntu-latest
277+
steps:
278+
- name: Checkout code
279+
uses: actions/checkout@v2
280+
- name: Use Node.js latest
281+
uses: actions/setup-node@v2-beta
282+
with:
283+
node-version: "*"
284+
- name: Get yarn cache directory path
285+
id: yarn-cache-dir-path
286+
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
287+
- uses: actions/cache@v2
288+
with:
289+
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
290+
key: yarn-${{ hashFiles('yarn.lock') }}
291+
- name: Install
292+
run: yarn install
293+
- uses: actions/download-artifact@v2
294+
with:
295+
name: babel-artifact
296+
- name: Generate runtime helpers
297+
run: |
298+
make build-plugin-transform-runtime-dist
299+
- name: Generate absoluteRuntime tests
300+
run: yarn test:runtime:generate-absolute-runtime
301+
- name: Test bundlers
302+
run: yarn test:runtime:bundlers
303+
- name: Test Node.js
304+
run: yarn test:runtime:node
305+
- name: Use Node.js 10
306+
uses: actions/setup-node@v2-beta
307+
with:
308+
node-version: 10
309+
- name: Test Node.js 10
310+
run: yarn test:runtime:node
311+
- name: Use Node.js 12.0
312+
uses: actions/setup-node@v2-beta
313+
with:
314+
node-version: "12.0" # quoted, otherwise it's just 13
315+
- name: Test Node.js 12.0
316+
run: yarn test:runtime:node
317+
- name: Use Node.js 12.17
318+
uses: actions/setup-node@v2-beta
319+
with:
320+
node-version: 12.17
321+
- name: Test Node.js 12.17
322+
run: yarn test:runtime:node
323+
- name: Use Node.js 13.0
324+
uses: actions/setup-node@v2-beta
325+
with:
326+
node-version: "13.0" # quoted, otherwise it's just 13
327+
- name: Test Node.js 13.0
328+
run: yarn test:runtime:node
329+
# - name: Use Node.js 13.2
330+
# uses: actions/setup-node@v2-beta
331+
# with:
332+
# node-version: 13.2
333+
# - name: Test Node.js 13.2
334+
# run: yarn test:runtime:node
335+
# - name: Use Node.js 13.6
336+
# uses: actions/setup-node@v2-beta
337+
# with:
338+
# node-version: 13.6
339+
# - name: Test Node.js 13.6
340+
# run: yarn test:runtime:node
341+
- name: Use Node.js 13.7
342+
uses: actions/setup-node@v2-beta
343+
with:
344+
node-version: 13.7
345+
- name: Test Node.js 13.7
346+
run: yarn test:runtime:node
347+
- name: Use Node.js 14.2
348+
uses: actions/setup-node@v2-beta
349+
with:
350+
node-version: 14.2
351+
- name: Test Node.js 14.2
352+
run: yarn test:runtime:node

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,6 @@ packages/babel-standalone/babel.min.js
7979

8080
tsconfig.json
8181
tsconfig.tsbuildinfo
82+
83+
/test/runtime-integration/*/output.js
84+
/test/runtime-integration/*/absolute-output.js

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
"lint": "make lint",
1313
"test": "make test",
1414
"version": "yarn --immutable-cache && git add yarn.lock",
15-
"test:esm": "node test/esm/index.js"
15+
"test:esm": "node test/esm/index.js",
16+
"test:runtime:generate-absolute-runtime": "node test/runtime-integration/generate-absolute-runtime.cjs",
17+
"test:runtime:bundlers": "node test/runtime-integration/bundlers.cjs",
18+
"test:runtime:node": "node test/runtime-integration/node.cjs"
1619
},
1720
"devDependencies": {
1821
"@babel/cli": "^7.12.0",
@@ -73,7 +76,8 @@
7376
"codemods/*",
7477
"eslint/*",
7578
"packages/*",
76-
"test/esm"
79+
"test/esm",
80+
"test/runtime-integration/*"
7781
],
7882
"resolutions": {
7983
"browserslist": "npm:4.14.5",

packages/babel-plugin-transform-runtime/scripts/build-dist.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ function buildHelper(
248248
[transformRuntime, { corejs, version: runtimeVersion }],
249249
buildRuntimeRewritePlugin(runtimeName, helperName),
250250
esm ? null : addDefaultCJSExport,
251+
esm ? useRelativeImports : null,
251252
].filter(Boolean),
252253
overrides: [
253254
{
@@ -318,3 +319,18 @@ function addDefaultCJSExport({ template }) {
318319
},
319320
};
320321
}
322+
323+
function useRelativeImports() {
324+
const RE = /^@babel\/runtime(?:-corejs[23])?\/helpers\/(?<name>.+)$/;
325+
326+
return {
327+
visitor: {
328+
ImportDeclaration(path) {
329+
path.node.source.value = path.node.source.value.replace(
330+
RE,
331+
"../$<name>/_index.mjs"
332+
);
333+
},
334+
},
335+
};
336+
}

packages/babel-plugin-transform-runtime/src/index.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,6 @@ export default declare((api, options, dirname) => {
8888
// TODO(Babel 8): Remove this check, it's always true
8989
const DUAL_MODE_RUNTIME = "7.13.0";
9090
const supportsCJSDefault = hasMinVersion(DUAL_MODE_RUNTIME, runtimeVersion);
91-
if (supportsCJSDefault && useESModules && !absoluteRuntime) {
92-
console.warn(
93-
`[@babel/plugin-transform-runtime] The 'useESModules' option is not necessary when using` +
94-
` a @babel/runtime version >= ${DUAL_MODE_RUNTIME} and not using the 'absoluteRuntime'` +
95-
` option, because it automatically detects the necessary module format.`,
96-
);
97-
}
9891

9992
function has(obj, key) {
10093
return Object.prototype.hasOwnProperty.call(obj, key);

packages/babel-plugin-transform-runtime/test/fixtures/dual-babel-runtime/useESModules-modern-runtime/stderr.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import undef from "@babel/runtime-corejs2/helpers/temporalUndefined";
2-
import err from "@babel/runtime-corejs2/helpers/tdz";
1+
import undef from "../temporalUndefined/_index.mjs";
2+
import err from "../tdz/_index.mjs";
33
export default function _temporalRef(val, name) {
44
return val === undef ? err(name) : val;
55
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import arrayWithHoles from "@babel/runtime-corejs2/helpers/arrayWithHoles";
2-
import iterableToArray from "@babel/runtime-corejs2/helpers/iterableToArray";
3-
import unsupportedIterableToArray from "@babel/runtime-corejs2/helpers/unsupportedIterableToArray";
4-
import nonIterableRest from "@babel/runtime-corejs2/helpers/nonIterableRest";
1+
import arrayWithHoles from "../arrayWithHoles/_index.mjs";
2+
import iterableToArray from "../iterableToArray/_index.mjs";
3+
import unsupportedIterableToArray from "../unsupportedIterableToArray/_index.mjs";
4+
import nonIterableRest from "../nonIterableRest/_index.mjs";
55
export default function _toArray(arr) {
66
return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();
77
}

0 commit comments

Comments
 (0)