From e93a3ec703b838e1402fd23e5ae2edd827c729ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 30 Mar 2023 17:37:44 +0200 Subject: [PATCH 1/5] Allow polyfill providers to specify custom `@babel/runtime` pkg --- .../src/index.ts | 179 ++---------------- .../src/polyfills.ts | 138 ++++++++++++++ 2 files changed, 154 insertions(+), 163 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/src/polyfills.ts diff --git a/packages/babel-plugin-transform-runtime/src/index.ts b/packages/babel-plugin-transform-runtime/src/index.ts index 89a524a787d3..d1cf63bdd17d 100644 --- a/packages/babel-plugin-transform-runtime/src/index.ts +++ b/packages/babel-plugin-transform-runtime/src/index.ts @@ -1,22 +1,10 @@ import { declare } from "@babel/helper-plugin-utils"; import { addDefault, isModule } from "@babel/helper-module-imports"; -import { types as t } from "@babel/core"; +import { types as t, type CallerMetadata } from "@babel/core"; import { hasMinVersion } from "./helpers"; import getRuntimePath, { resolveFSPath } from "./get-runtime-path"; -import type { PluginAPI, PluginObject, CallerMetadata } from "@babel/core"; - -import _pluginCorejs2 from "babel-plugin-polyfill-corejs2"; -import _pluginCorejs3 from "babel-plugin-polyfill-corejs3"; -import _pluginRegenerator from "babel-plugin-polyfill-regenerator"; -const pluginCorejs2 = (_pluginCorejs2.default || - _pluginCorejs2) as typeof _pluginCorejs2.default; -const pluginCorejs3 = (_pluginCorejs3.default || - _pluginCorejs3) as typeof _pluginCorejs3.default; -const pluginRegenerator = (_pluginRegenerator.default || - _pluginRegenerator) as typeof _pluginRegenerator.default; - -const pluginsCompat = "#__secret_key__@babel/runtime__compatibility"; +import { createBasePolyfillsPlugin } from "./polyfills"; function supportsStaticESM(caller: CallerMetadata | undefined) { // @ts-expect-error TS does not narrow down optional chaining @@ -32,79 +20,16 @@ export interface Options { version?: string; } -interface CoreJS2PluginOptions { - absoluteImports: string | false; - method: "usage-pure"; - [pluginsCompat]: { - runtimeVersion: string; - useBabelRuntime: string | false; - ext: string; - }; -} - -interface RegeneratorPluginOptions { - absoluteImports: string | false; - method: "usage-pure"; - [pluginsCompat]: { - useBabelRuntime: string | false; - }; -} - -interface CoreJS3PluginOptions { - absoluteImports: string | false; - method: "usage-pure"; - proposals: boolean; - version: number; - [pluginsCompat]: { - useBabelRuntime: string | false; - ext: string; - }; -} - export default declare((api, options: Options, dirname) => { api.assertVersion(7); const { - corejs, helpers: useRuntimeHelpers = true, - regenerator: useRuntimeRegenerator = true, useESModules = false, version: runtimeVersion = "7.0.0-beta.0", absoluteRuntime = false, } = options; - let proposals = false; - let rawVersion; - - if (typeof corejs === "object" && corejs !== null) { - rawVersion = corejs.version; - proposals = Boolean(corejs.proposals); - } else { - rawVersion = corejs; - } - - const corejsVersion = rawVersion ? Number(rawVersion) : false; - - if (![false, 2, 3].includes(corejsVersion)) { - throw new Error( - `The \`core-js\` version must be false, 2 or 3, but got ${JSON.stringify( - rawVersion, - )}.`, - ); - } - - if (proposals && (!corejsVersion || corejsVersion < 3)) { - throw new Error( - "The 'proposals' option is only supported when using 'corejs: 3'", - ); - } - - if (typeof useRuntimeRegenerator !== "boolean") { - throw new Error( - "The 'regenerator' option must be undefined, or a boolean.", - ); - } - if (typeof useRuntimeHelpers !== "boolean") { throw new Error("The 'helpers' option must be undefined, or a boolean."); } @@ -183,101 +108,29 @@ export default declare((api, options: Options, dirname) => { const esModules = useESModules === "auto" ? api.caller(supportsStaticESM) : useESModules; - const injectCoreJS2 = corejsVersion === 2; - const injectCoreJS3 = corejsVersion === 3; - - const moduleName = injectCoreJS3 - ? "@babel/runtime-corejs3" - : injectCoreJS2 - ? "@babel/runtime-corejs2" - : "@babel/runtime"; - const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"]; - const modulePath = getRuntimePath(moduleName, dirname, absoluteRuntime); - - function createCorejsPlugin( - plugin: ( - api: PluginAPI, - options: Options, - filename: string, - ) => PluginObject, - options: Options, - regeneratorPlugin: ( - api: PluginAPI, - options: RegeneratorPluginOptions, - filename: string, - ) => PluginObject, - ): (api: PluginAPI, options: {}, filename: string) => PluginObject { - return (api: PluginAPI, _: {}, filename: string) => { - return { - ...plugin(api, options, filename), - inherits: regeneratorPlugin, - }; - }; - } - - // TODO: Remove this in Babel 8 - function createRegeneratorPlugin( - options: RegeneratorPluginOptions, - ): ( - api: PluginAPI, - options: RegeneratorPluginOptions, - filename: string, - ) => PluginObject { - if (!useRuntimeRegenerator) return undefined; - return (api, _, filename) => { - return pluginRegenerator(api, options, filename); - }; - } - return { name: "transform-runtime", - inherits: injectCoreJS2 - ? createCorejsPlugin( - pluginCorejs2, - { - method: "usage-pure", - absoluteImports: absoluteRuntime ? modulePath : false, - [pluginsCompat]: { - runtimeVersion, - useBabelRuntime: modulePath, - ext: "", - }, - }, - createRegeneratorPlugin({ - method: "usage-pure", - absoluteImports: absoluteRuntime ? modulePath : false, - [pluginsCompat]: { useBabelRuntime: modulePath }, - }), - ) - : injectCoreJS3 - ? createCorejsPlugin( - pluginCorejs3, - { - method: "usage-pure", - version: 3, - proposals, - absoluteImports: absoluteRuntime ? modulePath : false, - [pluginsCompat]: { useBabelRuntime: modulePath, ext: "" }, - }, - createRegeneratorPlugin({ - method: "usage-pure", - absoluteImports: absoluteRuntime ? modulePath : false, - [pluginsCompat]: { useBabelRuntime: modulePath }, - }), - ) - : createRegeneratorPlugin({ - method: "usage-pure", - absoluteImports: absoluteRuntime ? modulePath : false, - [pluginsCompat]: { useBabelRuntime: modulePath }, - }), + inherits: createBasePolyfillsPlugin( + options, + runtimeVersion, + absoluteRuntime, + ), pre(file) { if (!useRuntimeHelpers) return; + let modulePath: string; + file.set("helperGenerator", (name: string) => { + modulePath ??= getRuntimePath( + file.get("runtimeHelpersModuleName") ?? "@babel/runtime", + dirname, + absoluteRuntime, + ); + // If the helper didn't exist yet at the version given, we bail // out and let Babel either insert it directly, or throw an error // so that plugins can handle that case properly. @@ -287,7 +140,7 @@ export default declare((api, options: Options, dirname) => { // For regeneratorRuntime, we can fallback to the old behavior of // relying on the regeneratorRuntime global. If the 'regenerator' // option is not disabled, babel-plugin-polyfill-regenerator will - // then replace it with a @babel/helpers/regeneratorRuntime import. + // then replace it with a @babel/helpers/regenerator import. // // We must wrap it in a function, because built-in Babel helpers // are functions. diff --git a/packages/babel-plugin-transform-runtime/src/polyfills.ts b/packages/babel-plugin-transform-runtime/src/polyfills.ts new file mode 100644 index 000000000000..d53a3e9df1bd --- /dev/null +++ b/packages/babel-plugin-transform-runtime/src/polyfills.ts @@ -0,0 +1,138 @@ +// TODO(Babel 8): Remove at least support for babel-plugin-polyfill-regenerator, +// which isn't needed anymore, and babel-plugin-polyfill-corejs2, since core-js +// 2 isn't maintained anymore. +// Consider also removing babel-plugin-polyfill-corejs3 from here, and ask users +// to explicitly enable it in their Babel configuration files. + +import type { PluginAPI, PluginObject } from "@babel/core"; +import _pluginCorejs2 from "babel-plugin-polyfill-corejs2"; +import _pluginCorejs3 from "babel-plugin-polyfill-corejs3"; +import _pluginRegenerator from "babel-plugin-polyfill-regenerator"; +const pluginCorejs2 = (_pluginCorejs2.default || + _pluginCorejs2) as typeof _pluginCorejs2.default; +const pluginCorejs3 = (_pluginCorejs3.default || + _pluginCorejs3) as typeof _pluginCorejs3.default; +const pluginRegenerator = (_pluginRegenerator.default || + _pluginRegenerator) as typeof _pluginRegenerator.default; + +import type { Options } from "./index"; + +const pluginsCompat = "#__secret_key__@babel/runtime__compatibility"; + +interface CoreJS2PluginOptions { + absoluteImports: boolean; + method: "usage-pure"; + [pluginsCompat]: { + runtimeVersion: string; + useBabelRuntime: boolean; + ext: string; + }; +} + +interface RegeneratorPluginOptions { + absoluteImports: boolean; + method: "usage-pure"; + [pluginsCompat]: { + useBabelRuntime: boolean; + }; +} + +interface CoreJS3PluginOptions { + absoluteImports: boolean; + method: "usage-pure"; + proposals: boolean; + version: number; + [pluginsCompat]: { + useBabelRuntime: boolean; + ext: string; + }; +} + +function createCorejsPlugin( + plugin: (api: PluginAPI, options: Options, filename: string) => PluginObject, + options: Options, + regeneratorPlugin: ( + api: PluginAPI, + options: RegeneratorPluginOptions, + filename: string, + ) => PluginObject, +): (api: PluginAPI, options: {}, filename: string) => PluginObject { + return (api: PluginAPI, _: {}, filename: string) => { + return { + ...plugin(api, options, filename), + inherits: regeneratorPlugin, + }; + }; +} + +function createRegeneratorPlugin( + options: RegeneratorPluginOptions, + useRuntimeRegenerator: boolean, +): ( + api: PluginAPI, + options: RegeneratorPluginOptions, + filename: string, +) => PluginObject { + if (!useRuntimeRegenerator) return undefined; + return (api, _, filename) => { + return pluginRegenerator(api, options, filename); + }; +} + +export function createBasePolyfillsPlugin( + { corejs, regenerator: useRuntimeRegenerator = true }: Options, + runtimeVersion: string, + absoluteImports: boolean, +) { + let proposals = false; + let rawVersion; + + if (typeof corejs === "object" && corejs !== null) { + rawVersion = corejs.version; + proposals = Boolean(corejs.proposals); + } else { + rawVersion = corejs; + } + + const corejsVersion = rawVersion ? Number(rawVersion) : false; + + if (![false, 2, 3].includes(corejsVersion)) { + throw new Error( + `The \`core-js\` version must be false, 2 or 3, but got ${JSON.stringify( + rawVersion, + )}.`, + ); + } + + if (proposals && (!corejsVersion || corejsVersion < 3)) { + throw new Error( + "The 'proposals' option is only supported when using 'corejs: 3'", + ); + } + + if (typeof useRuntimeRegenerator !== "boolean") { + throw new Error( + "The 'regenerator' option must be undefined, or a boolean.", + ); + } + + const polyfillOpts = { + method: "usage-pure", + absoluteImports, + [pluginsCompat]: { useBabelRuntime: true, runtimeVersion, ext: "" }, + } as const; + + return corejsVersion === 2 + ? createCorejsPlugin( + pluginCorejs2, + polyfillOpts, + createRegeneratorPlugin(polyfillOpts, useRuntimeRegenerator), + ) + : corejsVersion === 3 + ? createCorejsPlugin( + pluginCorejs3, + { version: 3, proposals, ...polyfillOpts }, + createRegeneratorPlugin(polyfillOpts, useRuntimeRegenerator), + ) + : createRegeneratorPlugin(polyfillOpts, useRuntimeRegenerator); +} From c3ef460d8daeb17f3f8e67b436e511200a5762b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 10 May 2023 13:00:11 +0200 Subject: [PATCH 2/5] Update polyfill dependencies --- package.json | 2 +- packages/babel-compat-data/package.json | 2 +- packages/babel-node/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 6 +- .../regression/with-env-useBuiltIns/input.js | 1 + .../with-env-useBuiltIns/options.json | 4 + .../regression/with-env-useBuiltIns/output.js | 7 ++ packages/babel-preset-env/package.json | 8 +- packages/babel-preset-env/src/index.ts | 3 + packages/babel-runtime-corejs3/package.json | 2 +- yarn.lock | 110 +++++++++++++----- 15 files changed, 112 insertions(+), 45 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js diff --git a/package.json b/package.json index 9b5d2da703aa..184abcaff21e 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "c8": "^7.12.0", "chalk": "^5.0.0", "charcodes": "^0.2.0", - "core-js": "^3.26.0", + "core-js": "^3.30.2", "eslint": "^8.22.0", "eslint-formatter-codeframe": "^7.32.1", "eslint-import-resolver-node": "^0.3.6", diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index d8f628c64a48..ea981b9b5b31 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -41,7 +41,7 @@ ], "devDependencies": { "@mdn/browser-compat-data": "^4.0.10", - "core-js-compat": "^3.25.1", + "core-js-compat": "^3.30.2", "electron-to-chromium": "^1.4.248" }, "engines": { diff --git a/packages/babel-node/package.json b/packages/babel-node/package.json index 5c354f53f7a6..3dbdaf504977 100644 --- a/packages/babel-node/package.json +++ b/packages/babel-node/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/register": "workspace:^", "commander": "^4.0.1", - "core-js": "^3.26.0", + "core-js": "^3.30.2", "node-environment-flags": "^1.0.5", "regenerator-runtime": "^0.13.11", "v8flags": "^3.1.1" diff --git a/packages/babel-plugin-proposal-decorators/package.json b/packages/babel-plugin-proposal-decorators/package.json index 319cfe9996ad..6d2bdfb80657 100644 --- a/packages/babel-plugin-proposal-decorators/package.json +++ b/packages/babel-plugin-proposal-decorators/package.json @@ -35,7 +35,7 @@ "@babel/traverse": "workspace:^", "@types/charcodes": "^0.2.0", "array.prototype.concat": "^1.0.2", - "babel-plugin-polyfill-es-shims": "^0.7.1", + "babel-plugin-polyfill-es-shims": "^0.9.0", "charcodes": "^0.2.0", "object.getownpropertydescriptors": "^2.1.1" }, diff --git a/packages/babel-plugin-proposal-duplicate-named-capturing-groups-regex/package.json b/packages/babel-plugin-proposal-duplicate-named-capturing-groups-regex/package.json index abc0a78cd61f..19ab05f42050 100644 --- a/packages/babel-plugin-proposal-duplicate-named-capturing-groups-regex/package.json +++ b/packages/babel-plugin-proposal-duplicate-named-capturing-groups-regex/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/core": "workspace:^", "@babel/helper-plugin-test-runner": "workspace:^", - "core-js": "^3.26.0" + "core-js": "^3.30.2" }, "engines": { "node": ">=6.9.0" diff --git a/packages/babel-plugin-transform-async-generator-functions/package.json b/packages/babel-plugin-transform-async-generator-functions/package.json index 1f18dd2b49da..d8efd0220dd2 100644 --- a/packages/babel-plugin-transform-async-generator-functions/package.json +++ b/packages/babel-plugin-transform-async-generator-functions/package.json @@ -28,8 +28,8 @@ "devDependencies": { "@babel/core": "workspace:^", "@babel/helper-plugin-test-runner": "workspace:^", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "core-js-pure": "^3.25.1" + "babel-plugin-polyfill-corejs3": "^0.8.1", + "core-js-pure": "^3.30.2" }, "engines": { "node": ">=6.9.0" diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json index e3fab5b0ce9d..17bb7de821b9 100644 --- a/packages/babel-plugin-transform-named-capturing-groups-regex/package.json +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/core": "workspace:^", "@babel/helper-plugin-test-runner": "workspace:^", - "core-js": "^3.26.0" + "core-js": "^3.30.2" }, "engines": { "node": ">=6.9.0" diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index c6d7c49093e5..a37acaee50fb 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -22,9 +22,9 @@ "dependencies": { "@babel/helper-module-imports": "workspace:^", "@babel/helper-plugin-utils": "workspace:^", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", + "babel-plugin-polyfill-corejs2": "^0.4.1", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", "semver": "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0" }, "peerDependencies": { diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/input.js new file mode 100644 index 000000000000..37bdd2221a71 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/input.js @@ -0,0 +1 @@ +class A {} \ No newline at end of file diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json new file mode 100644 index 000000000000..3353401a5f08 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json @@ -0,0 +1,4 @@ +{ + "presets": [["env", { "corejs": 3, "useBuiltIns": "usage" }]], + "plugins": ["transform-runtime"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js new file mode 100644 index 000000000000..7292f11e7839 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js @@ -0,0 +1,7 @@ +var _createClass = require("@babel/runtime/helpers/createClass"); +var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); +var A = /*#__PURE__*/_createClass(function A() { + "use strict"; + + _classCallCheck(this, A); +}); diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index 61003fb937c7..ab0e0f0b3fec 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -88,10 +88,10 @@ "@babel/plugin-transform-unicode-regex": "workspace:^", "@babel/preset-modules": "^0.1.5", "@babel/types": "workspace:^", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", + "babel-plugin-polyfill-corejs2": "^0.4.1", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", "semver": "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0" }, "peerDependencies": { diff --git a/packages/babel-preset-env/src/index.ts b/packages/babel-preset-env/src/index.ts index dcd7f3b022e6..689d7cac24b0 100644 --- a/packages/babel-preset-env/src/index.ts +++ b/packages/babel-preset-env/src/index.ts @@ -208,6 +208,9 @@ export const getPolyfillPlugins = ({ proposals, shippedProposals, debug, + "#__secret_key__@babel/preset-env__compatibility": { + noRuntimeName: true, + }, }; if (corejs) { diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index 265d9ac5f488..bd750c443f08 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -13,7 +13,7 @@ }, "author": "The Babel Team (https://babel.dev/team)", "dependencies": { - "core-js-pure": "^3.25.1", + "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.13.11" }, "exports": { diff --git a/yarn.lock b/yarn.lock index 63da0d20bc26..f0cedf09218f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -285,7 +285,7 @@ __metadata: resolution: "@babel/compat-data@workspace:packages/babel-compat-data" dependencies: "@mdn/browser-compat-data": ^4.0.10 - core-js-compat: ^3.25.1 + core-js-compat: ^3.30.2 electron-to-chromium: ^1.4.248 languageName: unknown linkType: soft @@ -661,6 +661,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.4.0": + version: 0.4.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.0" + dependencies: + "@babel/helper-compilation-targets": ^7.17.7 + "@babel/helper-plugin-utils": ^7.16.7 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 5dca4c5e78457c5ced366bea601efa4e8c69bf5d53b0fe540283897575c49b1b88191c8ef062110de9046e886703ed3270fcda3a87f0886cdbb549204d3ff63f + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.18.2, @babel/helper-environment-visitor@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-environment-visitor@npm:7.18.9" @@ -1089,7 +1105,7 @@ __metadata: "@babel/runtime": "workspace:^" "@types/v8flags": ^3.1.1 commander: ^4.0.1 - core-js: ^3.26.0 + core-js: ^3.30.2 fs-readdir-recursive: ^1.0.0 make-dir: "condition:BABEL_8_BREAKING ? : ^2.1.0" node-environment-flags: ^1.0.5 @@ -1285,7 +1301,7 @@ __metadata: "@babel/traverse": "workspace:^" "@types/charcodes": ^0.2.0 array.prototype.concat: ^1.0.2 - babel-plugin-polyfill-es-shims: ^0.7.1 + babel-plugin-polyfill-es-shims: ^0.9.0 charcodes: ^0.2.0 object.getownpropertydescriptors: ^2.1.1 peerDependencies: @@ -1331,7 +1347,7 @@ __metadata: "@babel/helper-create-regexp-features-plugin": "workspace:^" "@babel/helper-plugin-test-runner": "workspace:^" "@babel/helper-plugin-utils": "workspace:^" - core-js: ^3.26.0 + core-js: ^3.30.2 peerDependencies: "@babel/core": ^7.0.0 languageName: unknown @@ -2081,8 +2097,8 @@ __metadata: "@babel/helper-plugin-utils": "workspace:^" "@babel/helper-remap-async-to-generator": "workspace:^" "@babel/plugin-syntax-async-generators": ^7.8.4 - babel-plugin-polyfill-corejs3: ^0.6.0 - core-js-pure: ^3.25.1 + babel-plugin-polyfill-corejs3: ^0.8.1 + core-js-pure: ^3.30.2 peerDependencies: "@babel/core": ^7.0.0-0 languageName: unknown @@ -2686,7 +2702,7 @@ __metadata: "@babel/helper-create-regexp-features-plugin": "workspace:^" "@babel/helper-plugin-test-runner": "workspace:^" "@babel/helper-plugin-utils": "workspace:^" - core-js: ^3.26.0 + core-js: ^3.30.2 peerDependencies: "@babel/core": ^7.0.0 languageName: unknown @@ -3133,9 +3149,9 @@ __metadata: "@babel/runtime-corejs3": "workspace:^" "@babel/template": "workspace:^" "@babel/types": "workspace:^" - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 + babel-plugin-polyfill-corejs2: ^0.4.1 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 make-dir: "condition:BABEL_8_BREAKING ? : ^2.1.0" semver: "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0" peerDependencies: @@ -3531,10 +3547,10 @@ __metadata: "@babel/preset-modules": ^0.1.5 "@babel/traverse": "workspace:^" "@babel/types": "workspace:^" - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 + babel-plugin-polyfill-corejs2: ^0.4.1 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + core-js-compat: ^3.30.2 semver: "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0" peerDependencies: "@babel/core": ^7.0.0-0 @@ -3654,7 +3670,7 @@ __metadata: version: 0.0.0-use.local resolution: "@babel/runtime-corejs3@workspace:packages/babel-runtime-corejs3" dependencies: - core-js-pure: ^3.25.1 + core-js-pure: ^3.30.2 regenerator-runtime: ^0.13.11 languageName: unknown linkType: soft @@ -6016,6 +6032,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs2@npm:^0.4.1": + version: 0.4.1 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.1" + dependencies: + "@babel/compat-data": ^7.17.7 + "@babel/helper-define-polyfill-provider": ^0.4.0 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f2b9bfec71914899b6e028441db565e1a2f2bc8208738c0fd7093e36fa6232cb803577751a745a0a30484928fcff65b3dad2c124bf9d956c3de19c26a1355a5e + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.6.0": version: 0.6.0 resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" @@ -6028,14 +6057,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-es-shims@npm:^0.7.1": - version: 0.7.1 - resolution: "babel-plugin-polyfill-es-shims@npm:0.7.1" +"babel-plugin-polyfill-corejs3@npm:^0.8.1": + version: 0.8.1 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.1" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 + "@babel/helper-define-polyfill-provider": ^0.4.0 + core-js-compat: ^3.30.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d7c6329d785d522fc68ee96187fc9e540445125a5a034563a3153d34810b58a7ae9a18cf3cd305085250f29ba382f9470eaec0876da73e05ae3b4c7754502bcc + checksum: c23a581973c141a4687126cf964981180ef27e3eb0b34b911161db4f5caf9ba7ff60bee0ebe46d650ba09e03a6a3ac2cd6a6ae5f4f5363a148470e5cd8447df2 + languageName: node + linkType: hard + +"babel-plugin-polyfill-es-shims@npm:^0.9.0": + version: 0.9.0 + resolution: "babel-plugin-polyfill-es-shims@npm:0.9.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 771408849b7c969bd2aea4cf30466c5078069ed1c17e54302b4b59afd7d73178082d7b150b0dea41e2e99ae05eef1b76badd58b770735fcabcb7a187240083c3 languageName: node linkType: hard @@ -6050,6 +6091,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-regenerator@npm:^0.5.0": + version: 0.5.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.4.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ef2bcffc7c9a5e4426fc2dbf89bf3a46999a8415c21cd741c3ab3cb4b5ab804aaa3d71ef733f0eda1bcc0b91d9d80f98d33983a66dab9b8bed166ec38f8f8ad1 + languageName: node + linkType: hard + "babel-plugin-transform-charcodes@npm:^0.2.0": version: 0.2.0 resolution: "babel-plugin-transform-charcodes@npm:0.2.0" @@ -6126,7 +6178,7 @@ __metadata: c8: ^7.12.0 chalk: ^5.0.0 charcodes: ^0.2.0 - core-js: ^3.26.0 + core-js: ^3.30.2 eslint: ^8.22.0 eslint-formatter-codeframe: ^7.32.1 eslint-import-resolver-node: ^0.3.6 @@ -7220,10 +7272,10 @@ __metadata: languageName: node linkType: hard -"core-js-pure@npm:^3.25.1": - version: 3.25.1 - resolution: "core-js-pure@npm:3.25.1" - checksum: 0123131ec7ab3a1e56f0b4df4ae659de03d9c245ce281637d4d0f18f9839d8e0cfbfa989bd577ce1b67826f889a7dcc734421f697cf1bbe59f605f29c537a678 +"core-js-pure@npm:^3.30.2": + version: 3.30.2 + resolution: "core-js-pure@npm:3.30.2" + checksum: e0e012fe94e38663d837410baac62efe05d0c7431e3fbaa70c65f51eb980da9c3add225eca04208d576bc0d92cefeca9a4f7671a65fd84fd7dfc92d8618dddfd languageName: node linkType: hard @@ -7234,10 +7286,10 @@ __metadata: languageName: node linkType: hard -"core-js@npm:^3.26.0": - version: 3.26.0 - resolution: "core-js@npm:3.26.0" - checksum: 0149eb9d3909fde9c17626af3a6e625c326e8598d0bb5e6c5b48a18e5fcd4eaf48d4964d873667d8148542ff590fb98eb3f93618da114ca54999d6bc0349734b +"core-js@npm:^3.30.2": + version: 3.30.2 + resolution: "core-js@npm:3.30.2" + checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e languageName: node linkType: hard From d4357f7e9604777db1cf79b8ce73d840b0111fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 10 May 2023 16:49:31 +0200 Subject: [PATCH 3/5] Babel 8 test --- .../regression/with-env-useBuiltIns-babel-7/input.js | 1 + .../regression/with-env-useBuiltIns-babel-7/options.json | 5 +++++ .../regression/with-env-useBuiltIns-babel-7/output.js | 7 +++++++ .../fixtures/regression/with-env-useBuiltIns/options.json | 1 + .../fixtures/regression/with-env-useBuiltIns/output.js | 4 ++-- 5 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/output.js diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/input.js new file mode 100644 index 000000000000..37bdd2221a71 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/input.js @@ -0,0 +1 @@ +class A {} \ No newline at end of file diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/options.json new file mode 100644 index 000000000000..f38e675c5366 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "presets": [["env", { "corejs": 3, "useBuiltIns": "usage" }]], + "plugins": ["transform-runtime"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/output.js new file mode 100644 index 000000000000..7292f11e7839 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns-babel-7/output.js @@ -0,0 +1,7 @@ +var _createClass = require("@babel/runtime/helpers/createClass"); +var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); +var A = /*#__PURE__*/_createClass(function A() { + "use strict"; + + _classCallCheck(this, A); +}); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json index 3353401a5f08..f3ba41621305 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/options.json @@ -1,4 +1,5 @@ { + "BABEL_8_BREAKING": true, "presets": [["env", { "corejs": 3, "useBuiltIns": "usage" }]], "plugins": ["transform-runtime"] } diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js index 7292f11e7839..5f1fc0990714 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/regression/with-env-useBuiltIns/output.js @@ -1,5 +1,5 @@ -var _createClass = require("@babel/runtime/helpers/createClass"); -var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); +var _createClass = require("@babel/runtime/helpers/createClass")["default"]; +var _classCallCheck = require("@babel/runtime/helpers/classCallCheck")["default"]; var A = /*#__PURE__*/_createClass(function A() { "use strict"; From c94d6475c836903460eaa17aaabbcfc79bc94a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 10 May 2023 16:50:06 +0200 Subject: [PATCH 4/5] Pack makefile --- Makefile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.js b/Makefile.js index 89930e4e1143..7d7edba00f73 100644 --- a/Makefile.js +++ b/Makefile.js @@ -1,3 +1,3 @@ /* eslint-disable */ // prettier-ignore -"use strict";var e=require("os"),t=require("fs"),r=require("path"),n=require("events"),i=require("assert"),o=require("util"),s=require("child_process");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=c(e),u=c(t),l=c(r),f=c(n),p=c(i),h=c(o),d=c(s),v="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function g(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var y=function(e){return e&&e.Math==Math&&e},m=y("object"==typeof globalThis&&globalThis)||y("object"==typeof window&&window)||y("object"==typeof self&&self)||y("object"==typeof v&&v)||function(){return this}()||Function("return this")(),E={},b=function(e){try{return!!e()}catch(e){return!0}},w=!b((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),O=!b((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),S=O,R=Function.prototype.call,I=S?R.bind(R):function(){return R.apply(R,arguments)},A={},j={}.propertyIsEnumerable,x=Object.getOwnPropertyDescriptor,k=x&&!j.call({1:2},1);A.f=k?function(e){var t=x(this,e);return!!t&&t.enumerable}:j;var L,_,T=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},N=O,P=Function.prototype,F=P.call,D=N&&P.bind.bind(F,F),C=N?D:function(e){return function(){return F.apply(e,arguments)}},M=C,G=M({}.toString),$=M("".slice),U=function(e){return $(G(e),8,-1)},B=U,X=C,q=function(e){if("Function"===B(e))return X(e)},W=b,V=U,H=Object,z=q("".split),Y=W((function(){return!H("z").propertyIsEnumerable(0)}))?function(e){return"String"==V(e)?z(e,""):H(e)}:H,K=function(e){return null==e},J=K,Q=TypeError,Z=function(e){if(J(e))throw Q("Can't call method on "+e);return e},ee=Y,te=Z,re=function(e){return ee(te(e))},ne="object"==typeof document&&document.all,ie={all:ne,IS_HTMLDDA:void 0===ne&&void 0!==ne},oe=ie.all,se=ie.IS_HTMLDDA?function(e){return"function"==typeof e||e===oe}:function(e){return"function"==typeof e},ce=se,ae=ie.all,ue=ie.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:ce(e)||e===ae}:function(e){return"object"==typeof e?null!==e:ce(e)},le=m,fe=se,pe=function(e){return fe(e)?e:void 0},he=function(e,t){return arguments.length<2?pe(le[e]):le[e]&&le[e][t]},de=q({}.isPrototypeOf),ve=he("navigator","userAgent")||"",ge=m,ye=ve,me=ge.process,Ee=ge.Deno,be=me&&me.versions||Ee&&Ee.version,we=be&&be.v8;we&&(_=(L=we.split("."))[0]>0&&L[0]<4?1:+(L[0]+L[1])),!_&&ye&&(!(L=ye.match(/Edge\/(\d+)/))||L[1]>=74)&&(L=ye.match(/Chrome\/(\d+)/))&&(_=+L[1]);var Oe=_,Se=Oe,Re=b,Ie=!!Object.getOwnPropertySymbols&&!Re((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Se&&Se<41})),Ae=Ie&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,je=he,xe=se,ke=de,Le=Object,_e=Ae?function(e){return"symbol"==typeof e}:function(e){var t=je("Symbol");return xe(t)&&ke(t.prototype,Le(e))},Te=String,Ne=function(e){try{return Te(e)}catch(e){return"Object"}},Pe=se,Fe=Ne,De=TypeError,Ce=function(e){if(Pe(e))return e;throw De(Fe(e)+" is not a function")},Me=Ce,Ge=K,$e=function(e,t){var r=e[t];return Ge(r)?void 0:Me(r)},Ue=I,Be=se,Xe=ue,qe=TypeError,We={exports:{}},Ve=m,He=Object.defineProperty,ze=function(e,t){try{He(Ve,e,{value:t,configurable:!0,writable:!0})}catch(r){Ve[e]=t}return t},Ye=ze,Ke=m["__core-js_shared__"]||Ye("__core-js_shared__",{}),Je=Ke;(We.exports=function(e,t){return Je[e]||(Je[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.26.0",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.0/LICENSE",source:"https://github.com/zloirock/core-js"});var Qe=We.exports,Ze=Z,et=Object,tt=function(e){return et(Ze(e))},rt=tt,nt=q({}.hasOwnProperty),it=Object.hasOwn||function(e,t){return nt(rt(e),t)},ot=q,st=0,ct=Math.random(),at=ot(1..toString),ut=function(e){return"Symbol("+(void 0===e?"":e)+")_"+at(++st+ct,36)},lt=m,ft=it,pt=ut,ht=Ie,dt=Ae,vt=Qe("wks"),gt=lt.Symbol,yt=gt&>.for,mt=dt?gt:gt&>.withoutSetter||pt,Et=function(e){if(!ft(vt,e)||!ht&&"string"!=typeof vt[e]){var t="Symbol."+e;ht&&ft(gt,e)?vt[e]=gt[e]:vt[e]=dt&&yt?yt(t):mt(t)}return vt[e]},bt=I,wt=ue,Ot=_e,St=$e,Rt=function(e,t){var r,n;if("string"===t&&Be(r=e.toString)&&!Xe(n=Ue(r,e)))return n;if(Be(r=e.valueOf)&&!Xe(n=Ue(r,e)))return n;if("string"!==t&&Be(r=e.toString)&&!Xe(n=Ue(r,e)))return n;throw qe("Can't convert object to primitive value")},It=TypeError,At=Et("toPrimitive"),jt=function(e,t){if(!wt(e)||Ot(e))return e;var r,n=St(e,At);if(n){if(void 0===t&&(t="default"),r=bt(n,e,t),!wt(r)||Ot(r))return r;throw It("Can't convert object to primitive value")}return void 0===t&&(t="number"),Rt(e,t)},xt=_e,kt=function(e){var t=jt(e,"string");return xt(t)?t:t+""},Lt=ue,_t=m.document,Tt=Lt(_t)&&Lt(_t.createElement),Nt=function(e){return Tt?_t.createElement(e):{}},Pt=Nt,Ft=!w&&!b((function(){return 7!=Object.defineProperty(Pt("div"),"a",{get:function(){return 7}}).a})),Dt=w,Ct=I,Mt=A,Gt=T,$t=re,Ut=kt,Bt=it,Xt=Ft,qt=Object.getOwnPropertyDescriptor;E.f=Dt?qt:function(e,t){if(e=$t(e),t=Ut(t),Xt)try{return qt(e,t)}catch(e){}if(Bt(e,t))return Gt(!Ct(Mt.f,e,t),e[t])};var Wt={},Vt=w&&b((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ht=ue,zt=String,Yt=TypeError,Kt=function(e){if(Ht(e))return e;throw Yt(zt(e)+" is not an object")},Jt=w,Qt=Ft,Zt=Vt,er=Kt,tr=kt,rr=TypeError,nr=Object.defineProperty,ir=Object.getOwnPropertyDescriptor;Wt.f=Jt?Zt?function(e,t,r){if(er(e),t=tr(t),er(r),"function"==typeof e&&"prototype"===t&&"value"in r&&"writable"in r&&!r.writable){var n=ir(e,t);n&&n.writable&&(e[t]=r.value,r={configurable:"configurable"in r?r.configurable:n.configurable,enumerable:"enumerable"in r?r.enumerable:n.enumerable,writable:!1})}return nr(e,t,r)}:nr:function(e,t,r){if(er(e),t=tr(t),er(r),Qt)try{return nr(e,t,r)}catch(e){}if("get"in r||"set"in r)throw rr("Accessors not supported");return"value"in r&&(e[t]=r.value),e};var or=Wt,sr=T,cr=w?function(e,t,r){return or.f(e,t,sr(1,r))}:function(e,t,r){return e[t]=r,e},ar={exports:{}},ur=w,lr=it,fr=Function.prototype,pr=ur&&Object.getOwnPropertyDescriptor,hr=lr(fr,"name"),dr={EXISTS:hr,PROPER:hr&&"something"===function(){}.name,CONFIGURABLE:hr&&(!ur||ur&&pr(fr,"name").configurable)},vr=se,gr=Ke,yr=q(Function.toString);vr(gr.inspectSource)||(gr.inspectSource=function(e){return yr(e)});var mr,Er,br,wr=gr.inspectSource,Or=se,Sr=m.WeakMap,Rr=Or(Sr)&&/native code/.test(String(Sr)),Ir=ut,Ar=Qe("keys"),jr=function(e){return Ar[e]||(Ar[e]=Ir(e))},xr={},kr=Rr,Lr=m,_r=ue,Tr=cr,Nr=it,Pr=Ke,Fr=jr,Dr=xr,Cr=Lr.TypeError,Mr=Lr.WeakMap;if(kr||Pr.state){var Gr=Pr.state||(Pr.state=new Mr);Gr.get=Gr.get,Gr.has=Gr.has,Gr.set=Gr.set,mr=function(e,t){if(Gr.has(e))throw Cr("Object already initialized");return t.facade=e,Gr.set(e,t),t},Er=function(e){return Gr.get(e)||{}},br=function(e){return Gr.has(e)}}else{var $r=Fr("state");Dr[$r]=!0,mr=function(e,t){if(Nr(e,$r))throw Cr("Object already initialized");return t.facade=e,Tr(e,$r,t),t},Er=function(e){return Nr(e,$r)?e[$r]:{}},br=function(e){return Nr(e,$r)}}var Ur={set:mr,get:Er,has:br,enforce:function(e){return br(e)?Er(e):mr(e,{})},getterFor:function(e){return function(t){var r;if(!_r(t)||(r=Er(t)).type!==e)throw Cr("Incompatible receiver, "+e+" required");return r}}},Br=b,Xr=se,qr=it,Wr=w,Vr=dr.CONFIGURABLE,Hr=wr,zr=Ur.enforce,Yr=Ur.get,Kr=Object.defineProperty,Jr=Wr&&!Br((function(){return 8!==Kr((function(){}),"length",{value:8}).length})),Qr=String(String).split("String"),Zr=ar.exports=function(e,t,r){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!qr(e,"name")||Vr&&e.name!==t)&&(Wr?Kr(e,"name",{value:t,configurable:!0}):e.name=t),Jr&&r&&qr(r,"arity")&&e.length!==r.arity&&Kr(e,"length",{value:r.arity});try{r&&qr(r,"constructor")&&r.constructor?Wr&&Kr(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=zr(e);return qr(n,"source")||(n.source=Qr.join("string"==typeof t?t:"")),e};Function.prototype.toString=Zr((function(){return Xr(this)&&Yr(this).source||Hr(this)}),"toString");var en=ar.exports,tn=se,rn=Wt,nn=en,on=ze,sn=function(e,t,r,n){n||(n={});var i=n.enumerable,o=void 0!==n.name?n.name:t;if(tn(r)&&nn(r,o,n),n.global)i?e[t]=r:on(t,r);else{try{n.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=r:rn.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e},cn={},an=Math.ceil,un=Math.floor,ln=Math.trunc||function(e){var t=+e;return(t>0?un:an)(t)},fn=function(e){var t=+e;return t!=t||0===t?0:ln(t)},pn=fn,hn=Math.max,dn=Math.min,vn=function(e,t){var r=pn(e);return r<0?hn(r+t,0):dn(r,t)},gn=fn,yn=Math.min,mn=function(e){return e>0?yn(gn(e),9007199254740991):0},En=mn,bn=function(e){return En(e.length)},wn=re,On=vn,Sn=bn,Rn=function(e){return function(t,r,n){var i,o=wn(t),s=Sn(o),c=On(n,s);if(e&&r!=r){for(;s>c;)if((i=o[c++])!=i)return!0}else for(;s>c;c++)if((e||c in o)&&o[c]===r)return e||c||0;return!e&&-1}},In={includes:Rn(!0),indexOf:Rn(!1)},An=it,jn=re,xn=In.indexOf,kn=xr,Ln=q([].push),_n=function(e,t){var r,n=jn(e),i=0,o=[];for(r in n)!An(kn,r)&&An(n,r)&&Ln(o,r);for(;t.length>i;)An(n,r=t[i++])&&(~xn(o,r)||Ln(o,r));return o},Tn=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Nn=_n,Pn=Tn.concat("length","prototype");cn.f=Object.getOwnPropertyNames||function(e){return Nn(e,Pn)};var Fn={};Fn.f=Object.getOwnPropertySymbols;var Dn=he,Cn=cn,Mn=Fn,Gn=Kt,$n=q([].concat),Un=Dn("Reflect","ownKeys")||function(e){var t=Cn.f(Gn(e)),r=Mn.f;return r?$n(t,r(e)):t},Bn=it,Xn=Un,qn=E,Wn=Wt,Vn=function(e,t,r){for(var n=Xn(t),i=Wn.f,o=qn.f,s=0;ss;)Oi.f(e,r=i[s++],n[r]);return e};var Ai,ji=he("document","documentElement"),xi=Kt,ki=gi,Li=Tn,_i=xr,Ti=ji,Ni=Nt,Pi=jr("IE_PROTO"),Fi=function(){},Di=function(e){return"