diff --git a/packages/babel-plugin-polyfill-corejs3/src/index.js b/packages/babel-plugin-polyfill-corejs3/src/index.js index 5df26ac7..b21f3bf6 100644 --- a/packages/babel-plugin-polyfill-corejs3/src/index.js +++ b/packages/babel-plugin-polyfill-corejs3/src/index.js @@ -20,6 +20,7 @@ import { coreJSModule, isCoreJSSource, coreJSPureHelper, + sameImportPath, } from "./utils"; import defineProvider from "@babel/helper-define-polyfill-provider"; @@ -117,7 +118,7 @@ export default defineProvider(function( if ( modules.length === 1 && - meta.source === coreJSModule(modules[0]) && + sameImportPath(meta.source, coreJSModule(modules[0])) && shouldInjectPolyfill(modules[0]) ) { // Avoid infinite loop: do not replace imports with a new copy of diff --git a/packages/babel-plugin-polyfill-corejs3/src/utils.js b/packages/babel-plugin-polyfill-corejs3/src/utils.js index 614d6475..c477b240 100644 --- a/packages/babel-plugin-polyfill-corejs3/src/utils.js +++ b/packages/babel-plugin-polyfill-corejs3/src/utils.js @@ -40,3 +40,7 @@ export function coreJSModule(name: string) { export function coreJSPureHelper(name: string) { return `core-js-pure/features/${name}.js`; } + +export function sameImportPath(left: string, right: string) { + return left === right || `${left}.js` === right; +} diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/input.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/input.mjs index e761a4ac..48ce95b3 100644 --- a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/input.mjs +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/input.mjs @@ -1,3 +1,3 @@ -import 'core-js/modules/es.symbol'; -import 'core-js/modules/es.object.from-entries'; -import 'core-js/modules/esnext.string.replace-all'; +import 'core-js/modules/es.symbol.js'; +import 'core-js/modules/es.object.from-entries.js'; +import 'core-js/modules/esnext.string.replace-all.js'; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/output.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/output.mjs index 397c25c0..4992f7a6 100644 --- a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/output.mjs +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules-chrome-71/output.mjs @@ -1,2 +1,2 @@ -import "core-js/modules/es.object.from-entries.js"; -import "core-js/modules/esnext.string.replace-all.js"; +import 'core-js/modules/es.object.from-entries.js'; +import 'core-js/modules/esnext.string.replace-all.js'; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/input.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/input.mjs index e761a4ac..48ce95b3 100644 --- a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/input.mjs +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/input.mjs @@ -1,3 +1,3 @@ -import 'core-js/modules/es.symbol'; -import 'core-js/modules/es.object.from-entries'; -import 'core-js/modules/esnext.string.replace-all'; +import 'core-js/modules/es.symbol.js'; +import 'core-js/modules/es.object.from-entries.js'; +import 'core-js/modules/esnext.string.replace-all.js'; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/output.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/output.mjs index 332d8469..48ce95b3 100644 --- a/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/output.mjs +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/entry-global/entries-modules/output.mjs @@ -1,3 +1,3 @@ -import "core-js/modules/es.symbol.js"; -import "core-js/modules/es.object.from-entries.js"; -import "core-js/modules/esnext.string.replace-all.js"; +import 'core-js/modules/es.symbol.js'; +import 'core-js/modules/es.object.from-entries.js'; +import 'core-js/modules/esnext.string.replace-all.js'; diff --git a/packages/babel-plugin-polyfill-corejs3/test/fixtures/regression/preset-env-compatibility/output.mjs b/packages/babel-plugin-polyfill-corejs3/test/fixtures/regression/preset-env-compatibility/output.mjs index 092bc2b0..cf4267dc 100644 --- a/packages/babel-plugin-polyfill-corejs3/test/fixtures/regression/preset-env-compatibility/output.mjs +++ b/packages/babel-plugin-polyfill-corejs3/test/fixtures/regression/preset-env-compatibility/output.mjs @@ -1 +1,291 @@ +import "core-js/modules/es.symbol"; +import "core-js/modules/es.symbol.description"; +import "core-js/modules/es.symbol.async-iterator"; +import "core-js/modules/es.symbol.has-instance"; +import "core-js/modules/es.symbol.is-concat-spreadable"; +import "core-js/modules/es.symbol.iterator"; +import "core-js/modules/es.symbol.match"; +import "core-js/modules/es.symbol.replace"; +import "core-js/modules/es.symbol.search"; +import "core-js/modules/es.symbol.species"; +import "core-js/modules/es.symbol.split"; +import "core-js/modules/es.symbol.to-primitive"; +import "core-js/modules/es.symbol.to-string-tag"; +import "core-js/modules/es.symbol.unscopables"; +import "core-js/modules/es.array.concat"; +import "core-js/modules/es.array.copy-within"; +import "core-js/modules/es.array.every"; +import "core-js/modules/es.array.fill"; +import "core-js/modules/es.array.filter"; +import "core-js/modules/es.array.find"; +import "core-js/modules/es.array.find-index"; +import "core-js/modules/es.array.flat"; +import "core-js/modules/es.array.flat-map"; +import "core-js/modules/es.array.for-each"; +import "core-js/modules/es.array.from"; +import "core-js/modules/es.array.includes"; +import "core-js/modules/es.array.index-of"; +import "core-js/modules/es.array.is-array"; +import "core-js/modules/es.array.iterator"; +import "core-js/modules/es.array.join"; +import "core-js/modules/es.array.last-index-of"; +import "core-js/modules/es.array.map"; +import "core-js/modules/es.array.of"; +import "core-js/modules/es.array.reduce"; +import "core-js/modules/es.array.reduce-right"; +import "core-js/modules/es.array.reverse"; +import "core-js/modules/es.array.slice"; +import "core-js/modules/es.array.some"; +import "core-js/modules/es.array.sort"; +import "core-js/modules/es.array.species"; +import "core-js/modules/es.array.splice"; +import "core-js/modules/es.array.unscopables.flat"; +import "core-js/modules/es.array.unscopables.flat-map"; +import "core-js/modules/es.array-buffer.constructor"; +import "core-js/modules/es.array-buffer.is-view"; +import "core-js/modules/es.array-buffer.slice"; +import "core-js/modules/es.data-view"; +import "core-js/modules/es.date.now"; +import "core-js/modules/es.date.to-iso-string"; +import "core-js/modules/es.date.to-json"; +import "core-js/modules/es.date.to-primitive"; +import "core-js/modules/es.date.to-string"; +import "core-js/modules/es.function.bind"; +import "core-js/modules/es.function.has-instance"; +import "core-js/modules/es.function.name"; +import "core-js/modules/es.json.to-string-tag"; +import "core-js/modules/es.map"; +import "core-js/modules/es.math.acosh"; +import "core-js/modules/es.math.asinh"; +import "core-js/modules/es.math.atanh"; +import "core-js/modules/es.math.cbrt"; +import "core-js/modules/es.math.clz32"; +import "core-js/modules/es.math.cosh"; +import "core-js/modules/es.math.expm1"; +import "core-js/modules/es.math.fround"; +import "core-js/modules/es.math.hypot"; +import "core-js/modules/es.math.imul"; +import "core-js/modules/es.math.log10"; +import "core-js/modules/es.math.log1p"; +import "core-js/modules/es.math.log2"; +import "core-js/modules/es.math.sign"; +import "core-js/modules/es.math.sinh"; +import "core-js/modules/es.math.tanh"; +import "core-js/modules/es.math.to-string-tag"; +import "core-js/modules/es.math.trunc"; +import "core-js/modules/es.number.constructor"; +import "core-js/modules/es.number.epsilon"; +import "core-js/modules/es.number.is-finite"; +import "core-js/modules/es.number.is-integer"; +import "core-js/modules/es.number.is-nan"; +import "core-js/modules/es.number.is-safe-integer"; +import "core-js/modules/es.number.max-safe-integer"; +import "core-js/modules/es.number.min-safe-integer"; +import "core-js/modules/es.number.parse-float"; +import "core-js/modules/es.number.parse-int"; +import "core-js/modules/es.number.to-fixed"; +import "core-js/modules/es.number.to-precision"; +import "core-js/modules/es.object.assign"; +import "core-js/modules/es.object.create"; +import "core-js/modules/es.object.define-getter"; +import "core-js/modules/es.object.define-properties"; +import "core-js/modules/es.object.define-property"; +import "core-js/modules/es.object.define-setter"; +import "core-js/modules/es.object.entries"; +import "core-js/modules/es.object.freeze"; +import "core-js/modules/es.object.from-entries"; +import "core-js/modules/es.object.get-own-property-descriptor"; +import "core-js/modules/es.object.get-own-property-descriptors"; +import "core-js/modules/es.object.get-own-property-names"; +import "core-js/modules/es.object.get-prototype-of"; +import "core-js/modules/es.object.is"; +import "core-js/modules/es.object.is-extensible"; +import "core-js/modules/es.object.is-frozen"; +import "core-js/modules/es.object.is-sealed"; +import "core-js/modules/es.object.keys"; +import "core-js/modules/es.object.lookup-getter"; +import "core-js/modules/es.object.lookup-setter"; +import "core-js/modules/es.object.prevent-extensions"; +import "core-js/modules/es.object.seal"; +import "core-js/modules/es.object.set-prototype-of"; +import "core-js/modules/es.object.to-string"; +import "core-js/modules/es.object.values"; +import "core-js/modules/es.parse-float"; +import "core-js/modules/es.parse-int"; +import "core-js/modules/es.promise"; +import "core-js/modules/es.promise.finally"; +import "core-js/modules/es.reflect.apply"; +import "core-js/modules/es.reflect.construct"; +import "core-js/modules/es.reflect.define-property"; +import "core-js/modules/es.reflect.delete-property"; +import "core-js/modules/es.reflect.get"; +import "core-js/modules/es.reflect.get-own-property-descriptor"; +import "core-js/modules/es.reflect.get-prototype-of"; +import "core-js/modules/es.reflect.has"; +import "core-js/modules/es.reflect.is-extensible"; +import "core-js/modules/es.reflect.own-keys"; +import "core-js/modules/es.reflect.prevent-extensions"; +import "core-js/modules/es.reflect.set"; +import "core-js/modules/es.reflect.set-prototype-of"; +import "core-js/modules/es.regexp.constructor"; +import "core-js/modules/es.regexp.exec"; +import "core-js/modules/es.regexp.flags"; +import "core-js/modules/es.regexp.to-string"; +import "core-js/modules/es.set"; +import "core-js/modules/es.string.code-point-at"; +import "core-js/modules/es.string.ends-with"; +import "core-js/modules/es.string.from-code-point"; +import "core-js/modules/es.string.includes"; +import "core-js/modules/es.string.iterator"; +import "core-js/modules/es.string.match"; +import "core-js/modules/es.string.pad-end"; +import "core-js/modules/es.string.pad-start"; +import "core-js/modules/es.string.raw"; +import "core-js/modules/es.string.repeat"; +import "core-js/modules/es.string.replace"; +import "core-js/modules/es.string.search"; +import "core-js/modules/es.string.split"; +import "core-js/modules/es.string.starts-with"; +import "core-js/modules/es.string.trim"; +import "core-js/modules/es.string.trim-end"; +import "core-js/modules/es.string.trim-start"; +import "core-js/modules/es.string.anchor"; +import "core-js/modules/es.string.big"; +import "core-js/modules/es.string.blink"; +import "core-js/modules/es.string.bold"; +import "core-js/modules/es.string.fixed"; +import "core-js/modules/es.string.fontcolor"; +import "core-js/modules/es.string.fontsize"; +import "core-js/modules/es.string.italics"; +import "core-js/modules/es.string.link"; +import "core-js/modules/es.string.small"; +import "core-js/modules/es.string.strike"; +import "core-js/modules/es.string.sub"; +import "core-js/modules/es.string.sup"; +import "core-js/modules/es.typed-array.float32-array"; +import "core-js/modules/es.typed-array.float64-array"; +import "core-js/modules/es.typed-array.int8-array"; +import "core-js/modules/es.typed-array.int16-array"; +import "core-js/modules/es.typed-array.int32-array"; +import "core-js/modules/es.typed-array.uint8-array"; +import "core-js/modules/es.typed-array.uint8-clamped-array"; +import "core-js/modules/es.typed-array.uint16-array"; +import "core-js/modules/es.typed-array.uint32-array"; +import "core-js/modules/es.typed-array.copy-within"; +import "core-js/modules/es.typed-array.every"; +import "core-js/modules/es.typed-array.fill"; +import "core-js/modules/es.typed-array.filter"; +import "core-js/modules/es.typed-array.find"; +import "core-js/modules/es.typed-array.find-index"; +import "core-js/modules/es.typed-array.for-each"; +import "core-js/modules/es.typed-array.from"; +import "core-js/modules/es.typed-array.includes"; +import "core-js/modules/es.typed-array.index-of"; +import "core-js/modules/es.typed-array.iterator"; +import "core-js/modules/es.typed-array.join"; +import "core-js/modules/es.typed-array.last-index-of"; +import "core-js/modules/es.typed-array.map"; +import "core-js/modules/es.typed-array.of"; +import "core-js/modules/es.typed-array.reduce"; +import "core-js/modules/es.typed-array.reduce-right"; +import "core-js/modules/es.typed-array.reverse"; +import "core-js/modules/es.typed-array.set"; +import "core-js/modules/es.typed-array.slice"; +import "core-js/modules/es.typed-array.some"; +import "core-js/modules/es.typed-array.sort"; +import "core-js/modules/es.typed-array.subarray"; +import "core-js/modules/es.typed-array.to-locale-string"; +import "core-js/modules/es.typed-array.to-string"; +import "core-js/modules/es.weak-map"; +import "core-js/modules/es.weak-set"; +import "core-js/modules/esnext.aggregate-error"; +import "core-js/modules/esnext.array.last-index"; +import "core-js/modules/esnext.array.last-item"; +import "core-js/modules/esnext.composite-key"; +import "core-js/modules/esnext.composite-symbol"; +import "core-js/modules/esnext.global-this"; +import "core-js/modules/esnext.map.delete-all"; +import "core-js/modules/esnext.map.every"; +import "core-js/modules/esnext.map.filter"; +import "core-js/modules/esnext.map.find"; +import "core-js/modules/esnext.map.find-key"; +import "core-js/modules/esnext.map.from"; +import "core-js/modules/esnext.map.group-by"; +import "core-js/modules/esnext.map.includes"; +import "core-js/modules/esnext.map.key-by"; +import "core-js/modules/esnext.map.key-of"; +import "core-js/modules/esnext.map.map-keys"; +import "core-js/modules/esnext.map.map-values"; +import "core-js/modules/esnext.map.merge"; +import "core-js/modules/esnext.map.of"; +import "core-js/modules/esnext.map.reduce"; +import "core-js/modules/esnext.map.some"; +import "core-js/modules/esnext.map.update"; +import "core-js/modules/esnext.math.clamp"; +import "core-js/modules/esnext.math.deg-per-rad"; +import "core-js/modules/esnext.math.degrees"; +import "core-js/modules/esnext.math.fscale"; +import "core-js/modules/esnext.math.iaddh"; +import "core-js/modules/esnext.math.imulh"; +import "core-js/modules/esnext.math.isubh"; +import "core-js/modules/esnext.math.rad-per-deg"; +import "core-js/modules/esnext.math.radians"; +import "core-js/modules/esnext.math.scale"; +import "core-js/modules/esnext.math.seeded-prng"; +import "core-js/modules/esnext.math.signbit"; +import "core-js/modules/esnext.math.umulh"; +import "core-js/modules/esnext.number.from-string"; +import "core-js/modules/esnext.observable"; +import "core-js/modules/esnext.promise.all-settled"; +import "core-js/modules/esnext.promise.any"; +import "core-js/modules/esnext.promise.try"; +import "core-js/modules/esnext.reflect.define-metadata"; +import "core-js/modules/esnext.reflect.delete-metadata"; +import "core-js/modules/esnext.reflect.get-metadata"; +import "core-js/modules/esnext.reflect.get-metadata-keys"; +import "core-js/modules/esnext.reflect.get-own-metadata"; +import "core-js/modules/esnext.reflect.get-own-metadata-keys"; +import "core-js/modules/esnext.reflect.has-metadata"; +import "core-js/modules/esnext.reflect.has-own-metadata"; +import "core-js/modules/esnext.reflect.metadata"; +import "core-js/modules/esnext.set.add-all"; +import "core-js/modules/esnext.set.delete-all"; +import "core-js/modules/esnext.set.difference"; +import "core-js/modules/esnext.set.every"; +import "core-js/modules/esnext.set.filter"; +import "core-js/modules/esnext.set.find"; +import "core-js/modules/esnext.set.from"; +import "core-js/modules/esnext.set.intersection"; +import "core-js/modules/esnext.set.is-disjoint-from"; +import "core-js/modules/esnext.set.is-subset-of"; +import "core-js/modules/esnext.set.is-superset-of"; +import "core-js/modules/esnext.set.join"; +import "core-js/modules/esnext.set.map"; +import "core-js/modules/esnext.set.of"; +import "core-js/modules/esnext.set.reduce"; +import "core-js/modules/esnext.set.some"; +import "core-js/modules/esnext.set.symmetric-difference"; +import "core-js/modules/esnext.set.union"; +import "core-js/modules/esnext.string.at"; +import "core-js/modules/esnext.string.code-points"; +import "core-js/modules/esnext.string.match-all"; +import "core-js/modules/esnext.string.replace-all"; +import "core-js/modules/esnext.symbol.dispose"; +import "core-js/modules/esnext.symbol.observable"; +import "core-js/modules/esnext.symbol.pattern-match"; +import "core-js/modules/esnext.weak-map.delete-all"; +import "core-js/modules/esnext.weak-map.from"; +import "core-js/modules/esnext.weak-map.of"; +import "core-js/modules/esnext.weak-set.add-all"; +import "core-js/modules/esnext.weak-set.delete-all"; +import "core-js/modules/esnext.weak-set.from"; +import "core-js/modules/esnext.weak-set.of"; +import "core-js/modules/web.dom-collections.for-each"; +import "core-js/modules/web.dom-collections.iterator"; +import "core-js/modules/web.immediate"; +import "core-js/modules/web.queue-microtask"; +import "core-js/modules/web.timers"; +import "core-js/modules/web.url"; +import "core-js/modules/web.url.to-json"; +import "core-js/modules/web.url-search-params"; ;