polyfills.cjs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. ;
  2. const pluginCorejs2 = require("babel-plugin-polyfill-corejs2").default;
  3. const pluginCorejs3 = require("babel-plugin-polyfill-corejs3").default;
  4. const pluginRegenerator = require("babel-plugin-polyfill-regenerator").default;
  5. const pluginsCompat = "#__secret_key__@babel/runtime__compatibility";
  6. function createCorejs2Plugin(options) {
  7. return (api, _, filename) => pluginCorejs2(api, options, filename);
  8. }
  9. function createCorejs3Plugin(options) {
  10. return (api, _, filename) => pluginCorejs3(api, options, filename);
  11. }
  12. function createRegeneratorPlugin(options, useRuntimeRegenerator, corejsPlugin) {
  13. if (!useRuntimeRegenerator) return corejsPlugin != null ? corejsPlugin : undefined;
  14. return (api, _, filename) => {
  15. return Object.assign({}, pluginRegenerator(api, options, filename), {
  16. inherits: corejsPlugin != null ? corejsPlugin : undefined
  17. });
  18. };
  19. }
  20. module.exports = function createBasePolyfillsPlugin({
  21. corejs,
  22. regenerator = true,
  23. moduleName
  24. }, runtimeVersion, absoluteImports) {
  25. let proposals = false;
  26. let rawVersion;
  27. if (typeof corejs === "object" && corejs !== null) {
  28. rawVersion = corejs.version;
  29. proposals = Boolean(corejs.proposals);
  30. } else {
  31. rawVersion = corejs;
  32. }
  33. const corejsVersion = rawVersion ? Number(rawVersion) : false;
  34. if (![false, 2, 3].includes(corejsVersion)) {
  35. throw new Error(`The \`core-js\` version must be false, 2 or 3, but got ${JSON.stringify(rawVersion)}.`);
  36. }
  37. if (proposals && (!corejsVersion || corejsVersion < 3)) {
  38. throw new Error("The 'proposals' option is only supported when using 'corejs: 3'");
  39. }
  40. if (typeof regenerator !== "boolean") {
  41. throw new Error("The 'regenerator' option must be undefined, or a boolean.");
  42. }
  43. const polyfillOpts = {
  44. method: "usage-pure",
  45. absoluteImports,
  46. proposals,
  47. [pluginsCompat]: {
  48. useBabelRuntime: true,
  49. runtimeVersion,
  50. ext: "",
  51. moduleName
  52. }
  53. };
  54. return createRegeneratorPlugin(polyfillOpts, regenerator, corejsVersion === 2 ? createCorejs2Plugin(polyfillOpts) : corejsVersion === 3 ? createCorejs3Plugin(polyfillOpts) : null);
  55. };
  56. //# sourceMappingURL=polyfills.cjs.map