@jsenv/plugin-transpilation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +3 -0
  2. package/package.json +60 -0
  3. package/src/as_js_module/convert_js_classic_to_js_module.js +42 -0
  4. package/src/as_js_module/jsenv_plugin_as_js_module.js +89 -0
  5. package/src/babel/apply_js_transpilation.js +74 -0
  6. package/src/babel/babel_helper_directory/README.md +8 -0
  7. package/src/babel/babel_helper_directory/babel_helper_directory.js +35 -0
  8. package/src/babel/babel_helper_directory/babel_helpers/AsyncGenerator/AsyncGenerator.js +112 -0
  9. package/src/babel/babel_helper_directory/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  10. package/src/babel/babel_helper_directory/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +23 -0
  11. package/src/babel/babel_helper_directory/babel_helpers/applyDecs/applyDecs.js +802 -0
  12. package/src/babel/babel_helper_directory/babel_helpers/applyDecs2203/applyDecs2203.js +635 -0
  13. package/src/babel/babel_helper_directory/babel_helpers/applyDecs2203R/applyDecs2203R.js +642 -0
  14. package/src/babel/babel_helper_directory/babel_helpers/applyDecs2301/applyDecs2301.js +691 -0
  15. package/src/babel/babel_helper_directory/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +7 -0
  16. package/src/babel/babel_helper_directory/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  17. package/src/babel/babel_helper_directory/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +6 -0
  18. package/src/babel/babel_helper_directory/babel_helpers/assertThisInitialized/assertThisInitialized.js +7 -0
  19. package/src/babel/babel_helper_directory/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +55 -0
  20. package/src/babel/babel_helper_directory/babel_helpers/asyncIterator/asyncIterator.js +65 -0
  21. package/src/babel/babel_helper_directory/babel_helpers/asyncToGenerator/asyncToGenerator.js +34 -0
  22. package/src/babel/babel_helper_directory/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +5 -0
  23. package/src/babel/babel_helper_directory/babel_helpers/checkInRHS/checkInRHS.js +9 -0
  24. package/src/babel/babel_helper_directory/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +20 -0
  25. package/src/babel/babel_helper_directory/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +6 -0
  26. package/src/babel/babel_helper_directory/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +13 -0
  27. package/src/babel/babel_helper_directory/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  28. package/src/babel/babel_helper_directory/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  29. package/src/babel/babel_helper_directory/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  30. package/src/babel/babel_helper_directory/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +7 -0
  31. package/src/babel/babel_helper_directory/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  32. package/src/babel/babel_helper_directory/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +7 -0
  33. package/src/babel/babel_helper_directory/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +7 -0
  34. package/src/babel/babel_helper_directory/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +6 -0
  35. package/src/babel/babel_helper_directory/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  36. package/src/babel/babel_helper_directory/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +8 -0
  37. package/src/babel/babel_helper_directory/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +6 -0
  38. package/src/babel/babel_helper_directory/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  39. package/src/babel/babel_helper_directory/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +9 -0
  40. package/src/babel/babel_helper_directory/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +15 -0
  41. package/src/babel/babel_helper_directory/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +6 -0
  42. package/src/babel/babel_helper_directory/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  43. package/src/babel/babel_helper_directory/babel_helpers/construct/construct.js +16 -0
  44. package/src/babel/babel_helper_directory/babel_helpers/createClass/createClass.js +17 -0
  45. package/src/babel/babel_helper_directory/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +60 -0
  46. package/src/babel/babel_helper_directory/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +23 -0
  47. package/src/babel/babel_helper_directory/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  48. package/src/babel/babel_helper_directory/babel_helpers/createSuper/createSuper.js +22 -0
  49. package/src/babel/babel_helper_directory/babel_helpers/decorate/decorate.js +403 -0
  50. package/src/babel/babel_helper_directory/babel_helpers/defaults/defaults.js +11 -0
  51. package/src/babel/babel_helper_directory/babel_helpers/defineAccessor/defineAccessor.js +6 -0
  52. package/src/babel/babel_helper_directory/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +23 -0
  53. package/src/babel/babel_helper_directory/babel_helpers/defineProperty/defineProperty.js +21 -0
  54. package/src/babel/babel_helper_directory/babel_helpers/extends/extends.js +14 -0
  55. package/src/babel/babel_helper_directory/babel_helpers/get/get.js +19 -0
  56. package/src/babel/babel_helper_directory/babel_helpers/getPrototypeOf/getPrototypeOf.js +4 -0
  57. package/src/babel/babel_helper_directory/babel_helpers/identity/identity.js +3 -0
  58. package/src/babel/babel_helper_directory/babel_helpers/inherits/inherits.js +19 -0
  59. package/src/babel/babel_helper_directory/babel_helpers/inheritsLoose/inheritsLoose.js +7 -0
  60. package/src/babel/babel_helper_directory/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  61. package/src/babel/babel_helper_directory/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +6 -0
  62. package/src/babel/babel_helper_directory/babel_helpers/instanceof/instanceof.js +6 -0
  63. package/src/babel/babel_helper_directory/babel_helpers/interopRequireDefault/interopRequireDefault.js +3 -0
  64. package/src/babel/babel_helper_directory/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +37 -0
  65. package/src/babel/babel_helper_directory/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  66. package/src/babel/babel_helper_directory/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  67. package/src/babel/babel_helper_directory/babel_helpers/iterableToArray/iterableToArray.js +7 -0
  68. package/src/babel/babel_helper_directory/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +54 -0
  69. package/src/babel/babel_helper_directory/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +16 -0
  70. package/src/babel/babel_helper_directory/babel_helpers/jsx/jsx.js +50 -0
  71. package/src/babel/babel_helper_directory/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  72. package/src/babel/babel_helper_directory/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  73. package/src/babel/babel_helper_directory/babel_helpers/nonIterableRest/nonIterableRest.js +5 -0
  74. package/src/babel/babel_helper_directory/babel_helpers/nonIterableSpread/nonIterableSpread.js +5 -0
  75. package/src/babel/babel_helper_directory/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  76. package/src/babel/babel_helper_directory/babel_helpers/objectSpread/objectSpread.js +23 -0
  77. package/src/babel/babel_helper_directory/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  78. package/src/babel/babel_helper_directory/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +19 -0
  79. package/src/babel/babel_helper_directory/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +13 -0
  80. package/src/babel/babel_helper_directory/babel_helpers/overloadYield/overloadYield.js +11 -0
  81. package/src/babel/babel_helper_directory/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  82. package/src/babel/babel_helper_directory/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  83. package/src/babel/babel_helper_directory/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +702 -0
  84. package/src/babel/babel_helper_directory/babel_helpers/set/set.js +44 -0
  85. package/src/babel/babel_helper_directory/babel_helpers/setPrototypeOf/setPrototypeOf.js +6 -0
  86. package/src/babel/babel_helper_directory/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  87. package/src/babel/babel_helper_directory/babel_helpers/slicedToArray/slicedToArray.js +10 -0
  88. package/src/babel/babel_helper_directory/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +13 -0
  89. package/src/babel/babel_helper_directory/babel_helpers/superPropBase/superPropBase.js +10 -0
  90. package/src/babel/babel_helper_directory/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +10 -0
  91. package/src/babel/babel_helper_directory/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +7 -0
  92. package/src/babel/babel_helper_directory/babel_helpers/tdz/tdz.js +4 -0
  93. package/src/babel/babel_helper_directory/babel_helpers/temporalRef/temporalRef.js +6 -0
  94. package/src/babel/babel_helper_directory/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  95. package/src/babel/babel_helper_directory/babel_helpers/toArray/toArray.js +10 -0
  96. package/src/babel/babel_helper_directory/babel_helpers/toConsumableArray/toConsumableArray.js +10 -0
  97. package/src/babel/babel_helper_directory/babel_helpers/toPrimitive/toPrimitive.js +10 -0
  98. package/src/babel/babel_helper_directory/babel_helpers/toPropertyKey/toPropertyKey.js +6 -0
  99. package/src/babel/babel_helper_directory/babel_helpers/typeof/typeof.js +14 -0
  100. package/src/babel/babel_helper_directory/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +12 -0
  101. package/src/babel/babel_helper_directory/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +8 -0
  102. package/src/babel/babel_helper_directory/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +30 -0
  103. package/src/babel/babel_helper_directory/babel_helpers/wrapRegExp/wrapRegExp.js +77 -0
  104. package/src/babel/babel_helper_directory/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  105. package/src/babel/babel_plugin_babel_helpers_as_jsenv_imports.js +53 -0
  106. package/src/babel/babel_plugin_structure.js +176 -0
  107. package/src/babel/babel_plugins_compatibility.js +432 -0
  108. package/src/babel/global_this/babel_plugin_global_this_injector.js +56 -0
  109. package/src/babel/global_this/client/global_this_js_classic.js +25 -0
  110. package/src/babel/global_this/client/global_this_js_module.js +21 -0
  111. package/src/babel/jsenv_plugin_babel.js +35 -0
  112. package/src/babel/new_stylesheet/babel_plugin_new_stylesheet_injector.js +149 -0
  113. package/src/babel/new_stylesheet/client/new_stylesheet.js +381 -0
  114. package/src/babel/polyfill_injection_in_babel_ast.js +41 -0
  115. package/src/babel/regenerator_runtime/babel_plugin_regenerator_runtime_injector.js +49 -0
  116. package/src/babel/regenerator_runtime/client/regenerator_runtime.js +748 -0
  117. package/src/css/apply_css_transpilation.js +41 -0
  118. package/src/css/jsenv_plugin_css_transpilation.js +17 -0
  119. package/src/import_assertions/jsenv_plugin_import_assertions.js +244 -0
  120. package/src/import_meta_resolve/jsenv_plugin_import_meta_resolve.js +48 -0
  121. package/src/js_module_fallback/jsenv_plugin_js_module_conversion.js +136 -0
  122. package/src/js_module_fallback/jsenv_plugin_js_module_fallback.js +46 -0
  123. package/src/js_module_fallback/jsenv_plugin_js_module_fallback_inside_html.js +240 -0
  124. package/src/js_module_fallback/jsenv_plugin_js_module_fallback_on_workers.js +62 -0
  125. package/src/jsenv_plugin_transpilation.js +54 -0
  126. package/src/main.js +2 -0
  127. package/src/top_level_await/jsenv_plugin_top_level_await.js +94 -0
@@ -0,0 +1,44 @@
1
+ import superPropBase from "../superPropBase/superPropBase.js"
2
+ import defineProperty from "../defineProperty/defineProperty.js"
3
+
4
+ function reflectSetPolyfill(target, property, value, receiver) {
5
+ var base = superPropBase(target, property)
6
+ var desc
7
+ if (base) {
8
+ desc = Object.getOwnPropertyDescriptor(base, property)
9
+ if (desc.set) {
10
+ desc.set.call(receiver, value)
11
+ return true
12
+ } else if (!desc.writable) {
13
+ // Both getter and non-writable fall into this.
14
+ return false
15
+ }
16
+ }
17
+ // Without a super that defines the property, spec boils down to
18
+ // "define on receiver" for some reason.
19
+ desc = Object.getOwnPropertyDescriptor(receiver, property)
20
+ if (desc) {
21
+ if (!desc.writable) {
22
+ // Setter, getter, and non-writable fall into this.
23
+ return false
24
+ }
25
+ desc.value = value
26
+ Object.defineProperty(receiver, property, desc)
27
+ } else {
28
+ // Avoid setters that may be defined on Sub's prototype, but not on
29
+ // the instance.
30
+ defineProperty(receiver, property, value)
31
+ }
32
+ return true
33
+ }
34
+
35
+ var reflectSet = typeof Reflect !== "undefined" && Reflect.set ? Reflect.set : reflectSetPolyfill
36
+
37
+ export default (target, property, value, receiver, isStrict) => {
38
+ // eslint-disable-next-line no-obj-calls
39
+ var s = reflectSet(target, property, value, receiver || target)
40
+ if (!s && isStrict) {
41
+ throw new TypeError("failed to set property")
42
+ }
43
+ return value
44
+ }
@@ -0,0 +1,6 @@
1
+ export default Object.setPrototypeOf ? Object.setPrototypeOf.bind() :
2
+ ((o, p) => {
3
+ // eslint-disable-next-line no-proto
4
+ o.__proto__ = p
5
+ return o
6
+ })
@@ -0,0 +1,8 @@
1
+ export default function (fn) {
2
+ return function () {
3
+ // eslint-disable-next-line prefer-rest-params
4
+ var it = fn.apply(this, arguments)
5
+ it.next()
6
+ return it
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ import arrayWithHoles from "../arrayWithHoles/arrayWithHoles.js"
2
+ import iterableToArrayLimit from "../iterableToArrayLimit/iterableToArrayLimit.js"
3
+ import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
4
+ import nonIterableRest from "../nonIterableRest/nonIterableRest.js"
5
+
6
+ export default (arr, i) =>
7
+ arrayWithHoles(arr) ||
8
+ iterableToArrayLimit(arr, i) ||
9
+ unsupportedIterableToArray(arr, i) ||
10
+ nonIterableRest()
@@ -0,0 +1,13 @@
1
+ import arrayWithHoles from "../arrayWithHoles/arrayWithHoles.js"
2
+ import iterableToArrayLimitLoose from "../iterableToArrayLimitLoose/iterableToArrayLimitLoose.js"
3
+ import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
4
+ import nonIterableRest from "../nonIterableRest/nonIterableRest.js"
5
+
6
+ export default function (arr, i) {
7
+ return (
8
+ arrayWithHoles(arr) ||
9
+ iterableToArrayLimitLoose(arr, i) ||
10
+ unsupportedIterableToArray(arr, i) ||
11
+ nonIterableRest()
12
+ )
13
+ }
@@ -0,0 +1,10 @@
1
+ import getPrototypeOf from "../getPrototypeOf/getPrototypeOf.js"
2
+
3
+ export default function (object, property) {
4
+ // Yes, this throws if object is null to being with, that's on purpose.
5
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
6
+ object = getPrototypeOf(object)
7
+ if (object === null) break
8
+ }
9
+ return object
10
+ }
@@ -0,0 +1,10 @@
1
+ export default function (strings, raw) {
2
+ if (!raw) {
3
+ raw = strings.slice(0)
4
+ }
5
+ return Object.freeze(
6
+ Object.defineProperties(strings, {
7
+ raw: { value: Object.freeze(raw) },
8
+ }),
9
+ )
10
+ }
@@ -0,0 +1,7 @@
1
+ export default function (strings, raw) {
2
+ if (!raw) {
3
+ raw = strings.slice(0)
4
+ }
5
+ strings.raw = raw
6
+ return strings
7
+ }
@@ -0,0 +1,4 @@
1
+ export default function _tdzError(name) {
2
+ // eslint-disable-next-line prefer-template
3
+ throw new ReferenceError(name + " is not defined - temporal dead zone")
4
+ }
@@ -0,0 +1,6 @@
1
+ import undef from "../temporalUndefined/temporalUndefined.js"
2
+ import err from "../tdz/tdz.js"
3
+
4
+ export default function (val, name) {
5
+ return val === undef ? err(name) : val
6
+ }
@@ -0,0 +1,3 @@
1
+ // This function isn't mean to be called, but to be used as a reference.
2
+ // We can't use a normal object because it isn't hoisted.
3
+ export default function () {}
@@ -0,0 +1,10 @@
1
+ import arrayWithHoles from "../arrayWithHoles/arrayWithHoles.js"
2
+ import iterableToArray from "../iterableToArray/iterableToArray.js"
3
+ import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
4
+ import nonIterableRest from "../nonIterableRest/nonIterableRest.js"
5
+
6
+ export default (arr) =>
7
+ arrayWithHoles(arr) ||
8
+ iterableToArray(arr) ||
9
+ unsupportedIterableToArray(arr) ||
10
+ nonIterableRest()
@@ -0,0 +1,10 @@
1
+ import arrayWithoutHoles from "../arrayWithoutHoles/arrayWithoutHoles.js"
2
+ import iterableToArray from "../iterableToArray/iterableToArray.js"
3
+ import unsupportedIterableToArray from "../unsupportedIterableToArray/unsupportedIterableToArray.js"
4
+ import nonIterableSpread from "../nonIterableSpread/nonIterableSpread.js"
5
+
6
+ export default (arr) =>
7
+ arrayWithoutHoles(arr) ||
8
+ iterableToArray(arr) ||
9
+ unsupportedIterableToArray(arr) ||
10
+ nonIterableSpread()
@@ -0,0 +1,10 @@
1
+ export default function (input, hint /* : "default" | "string" | "number" | void */) {
2
+ if (typeof input !== "object" || input === null) return input
3
+ var prim = input[Symbol.toPrimitive]
4
+ if (prim !== undefined) {
5
+ var res = prim.call(input, hint || "default")
6
+ if (typeof res !== "object") return res
7
+ throw new TypeError("@@toPrimitive must return a primitive value.")
8
+ }
9
+ return (hint === "string" ? String : Number)(input)
10
+ }
@@ -0,0 +1,6 @@
1
+ import toPrimitive from "../toPrimitive/toPrimitive.js"
2
+
3
+ export default function (arg) {
4
+ var key = toPrimitive(arg, "string")
5
+ return typeof key === "symbol" ? key : String(key)
6
+ }
@@ -0,0 +1,14 @@
1
+ const nativeTypeOf = (obj) => typeof obj
2
+
3
+ const customTypeOf = (obj) => {
4
+ return obj &&
5
+ typeof Symbol === "function" &&
6
+ obj.constructor === Symbol &&
7
+ obj !== Symbol.prototype
8
+ ? "symbol"
9
+ : typeof obj
10
+ }
11
+
12
+ export default typeof Symbol === "function" && typeof Symbol.iterator === "symbol"
13
+ ? nativeTypeOf
14
+ : customTypeOf
@@ -0,0 +1,12 @@
1
+ /* eslint-disable consistent-return */
2
+ import arrayLikeToArray from "../arrayLikeToArray/arrayLikeToArray.js"
3
+
4
+ export default function unsupportedIterableToArray(o, minLen) {
5
+ if (!o) return
6
+ if (typeof o === "string") return arrayLikeToArray(o, minLen)
7
+ var n = Object.prototype.toString.call(o).slice(8, -1)
8
+ if (n === "Object" && o.constructor) n = o.constructor.name
9
+ if (n === "Map" || n === "Set") return Array.from(o)
10
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
11
+ return arrayLikeToArray(o, minLen)
12
+ }
@@ -0,0 +1,8 @@
1
+ import AsyncGenerator from "../AsyncGenerator/AsyncGenerator.js"
2
+
3
+ export default function (fn) {
4
+ return function () {
5
+ // eslint-disable-next-line prefer-rest-params
6
+ return new AsyncGenerator(fn.apply(this, arguments))
7
+ }
8
+ }
@@ -0,0 +1,30 @@
1
+ import getPrototypeOf from "../getPrototypeOf/getPrototypeOf.js"
2
+ import setPrototypeOf from "../setPrototypeOf/setPrototypeOf.js"
3
+ import isNativeFunction from "../isNativeFunction/isNativeFunction.js"
4
+ import construct from "../construct/construct.js"
5
+
6
+ var _cache = typeof Map === "function" ? new Map() : undefined
7
+
8
+ export default function (Class) {
9
+ if (Class === null || !isNativeFunction(Class)) return Class
10
+ if (typeof Class !== "function") {
11
+ throw new TypeError("Super expression must either be null or a function")
12
+ }
13
+ if (typeof _cache !== "undefined") {
14
+ if (_cache.has(Class)) return _cache.get(Class)
15
+ _cache.set(Class, Wrapper)
16
+ }
17
+ function Wrapper() {
18
+ // eslint-disable-next-line prefer-rest-params
19
+ return construct(Class, arguments, getPrototypeOf(this).constructor)
20
+ }
21
+ Wrapper.prototype = Object.create(Class.prototype, {
22
+ constructor: {
23
+ value: Wrapper,
24
+ enumerable: false,
25
+ writable: true,
26
+ configurable: true,
27
+ },
28
+ })
29
+ return setPrototypeOf(Wrapper, Class)
30
+ }
@@ -0,0 +1,77 @@
1
+ import setPrototypeOf from "../setPrototypeOf/setPrototypeOf.js"
2
+ import inherits from "../inherits/inherits.js"
3
+
4
+ export default function _wrapRegExp() {
5
+ _wrapRegExp = function (re, groups) {
6
+ return new BabelRegExp(re, undefined, groups);
7
+ };
8
+
9
+ var _super = RegExp.prototype;
10
+ var _groups = new WeakMap();
11
+
12
+ function BabelRegExp(re, flags, groups) {
13
+ var _this = new RegExp(re, flags);
14
+ // if the regex is recreated with 'g' flag
15
+ _groups.set(_this, groups || _groups.get(re));
16
+ return setPrototypeOf(_this, BabelRegExp.prototype);
17
+ }
18
+ inherits(BabelRegExp, RegExp);
19
+
20
+ BabelRegExp.prototype.exec = function (str) {
21
+ var result = _super.exec.call(this, str);
22
+ if (result) {
23
+ result.groups = buildGroups(result, this);
24
+ var indices = result.indices;
25
+ if (indices) indices.groups = buildGroups(indices, this);
26
+ }
27
+ return result;
28
+ };
29
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
30
+ if (typeof substitution === "string") {
31
+ var groups = _groups.get(this);
32
+ return _super[Symbol.replace].call(
33
+ this,
34
+ str,
35
+ substitution.replace(/\$<([^>]+)>/g, function (_, name) {
36
+ var group = groups[name];
37
+ return "$" + (Array.isArray(group) ? group.join("$") : group);
38
+ })
39
+ );
40
+ } else if (typeof substitution === "function") {
41
+ var _this = this;
42
+ return _super[Symbol.replace].call(this, str, function () {
43
+ var args = arguments;
44
+ // Modern engines already pass result.groups returned by exec() as the last arg.
45
+ if (typeof args[args.length - 1] !== "object") {
46
+ args = [].slice.call(args);
47
+ args.push(buildGroups(args, _this));
48
+ }
49
+ return substitution.apply(this, args);
50
+ });
51
+ } else {
52
+ return _super[Symbol.replace].call(this, str, substitution);
53
+ }
54
+ };
55
+
56
+ function buildGroups(result, re) {
57
+ // NOTE: This function should return undefined if there are no groups,
58
+ // but in that case Babel doesn't add the wrapper anyway.
59
+
60
+ var g = _groups.get(re);
61
+ return Object.keys(g).reduce(function (groups, name) {
62
+ var i = g[name];
63
+ if (typeof i === "number") groups[name] = result[i];
64
+ else {
65
+ // i is an array of indexes
66
+ var k = 0;
67
+ // if no group matched, we stop at k = i.length - 1 and then
68
+ // we store result[i[i.length - 1]] which is undefined.
69
+ while (result[i[k]] === undefined && k + 1 < i.length) k++;
70
+ groups[name] = result[i[k]];
71
+ }
72
+ return groups;
73
+ }, Object.create(null));
74
+ }
75
+
76
+ return _wrapRegExp.apply(this, arguments);
77
+ }
@@ -0,0 +1,4 @@
1
+ export default function (name) {
2
+ // eslint-disable-next-line prefer-template
3
+ throw new TypeError(name + " is write-only")
4
+ }
@@ -0,0 +1,53 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { injectJsImport } from "@jsenv/ast";
3
+
4
+ import {
5
+ getBabelHelperFileUrl,
6
+ babelHelperNameFromUrl,
7
+ } from "./babel_helper_directory/babel_helper_directory.js";
8
+
9
+ // named import approach found here:
10
+ // https://github.com/rollup/rollup-plugin-babel/blob/18e4232a450f320f44c651aa8c495f21c74d59ac/src/helperPlugin.js#L1
11
+
12
+ // for reference this is how it's done to reference
13
+ // a global babel helper object instead of using
14
+ // a named import
15
+ // https://github.com/babel/babel/blob/99f4f6c3b03c7f3f67cf1b9f1a21b80cfd5b0224/packages/babel-plugin-external-helpers/src/index.js
16
+
17
+ export const babelPluginBabelHelpersAsJsenvImports = (
18
+ babel,
19
+ { getImportSpecifier },
20
+ ) => {
21
+ return {
22
+ name: "babel-helper-as-jsenv-import",
23
+ pre: (file) => {
24
+ const cachedHelpers = {};
25
+ file.set("helperGenerator", (name) => {
26
+ // the list of possible helpers name
27
+ // https://github.com/babel/babel/blob/99f4f6c3b03c7f3f67cf1b9f1a21b80cfd5b0224/packages/babel-helpers/src/helpers.js#L13
28
+ if (!file.availableHelper(name)) {
29
+ return undefined;
30
+ }
31
+ if (cachedHelpers[name]) {
32
+ return cachedHelpers[name];
33
+ }
34
+ const filePath = file.opts.filename;
35
+ const fileUrl = pathToFileURL(filePath).href;
36
+ if (babelHelperNameFromUrl(fileUrl) === name) {
37
+ return undefined;
38
+ }
39
+ const babelHelperImportSpecifier = getBabelHelperFileUrl(name);
40
+ const helper = injectJsImport({
41
+ programPath: file.path,
42
+ from: getImportSpecifier(babelHelperImportSpecifier),
43
+ nameHint: `_${name}`,
44
+ // disable interop, useless as we work only with js modules
45
+ importedType: "es6",
46
+ // importedInterop: "uncompiled",
47
+ });
48
+ cachedHelpers[name] = helper;
49
+ return helper;
50
+ });
51
+ },
52
+ };
53
+ };
@@ -0,0 +1,176 @@
1
+ import { createRequire } from "node:module";
2
+
3
+ import { getBabelHelperFileUrl } from "./babel_helper_directory/babel_helper_directory.js";
4
+ import { babelPluginCompatMap } from "./babel_plugins_compatibility.js";
5
+
6
+ const requireBabelPlugin = createRequire(import.meta.url);
7
+
8
+ export const getBaseBabelPluginStructure = ({
9
+ url,
10
+ isSupported,
11
+ // isJsModule,
12
+ // getImportSpecifier,
13
+ }) => {
14
+ const isBabelPluginNeeded = (babelPluginName) => {
15
+ return !isSupported(babelPluginCompatMap[babelPluginName]);
16
+ };
17
+
18
+ const babelPluginStructure = {};
19
+ if (isBabelPluginNeeded("proposal-numeric-separator")) {
20
+ babelPluginStructure["proposal-numeric-separator"] = requireBabelPlugin(
21
+ "@babel/plugin-proposal-numeric-separator",
22
+ );
23
+ }
24
+ if (isBabelPluginNeeded("proposal-json-strings")) {
25
+ babelPluginStructure["proposal-json-strings"] = requireBabelPlugin(
26
+ "@babel/plugin-proposal-json-strings",
27
+ );
28
+ }
29
+ if (isBabelPluginNeeded("proposal-object-rest-spread")) {
30
+ babelPluginStructure["proposal-object-rest-spread"] = requireBabelPlugin(
31
+ "@babel/plugin-proposal-object-rest-spread",
32
+ );
33
+ }
34
+ if (isBabelPluginNeeded("proposal-optional-catch-binding")) {
35
+ babelPluginStructure["proposal-optional-catch-binding"] =
36
+ requireBabelPlugin("@babel/plugin-proposal-optional-catch-binding");
37
+ }
38
+ if (isBabelPluginNeeded("proposal-unicode-property-regex")) {
39
+ babelPluginStructure["proposal-unicode-property-regex"] =
40
+ requireBabelPlugin("@babel/plugin-proposal-unicode-property-regex");
41
+ }
42
+ if (isBabelPluginNeeded("transform-async-to-promises")) {
43
+ babelPluginStructure["transform-async-to-promises"] = [
44
+ requireBabelPlugin("babel-plugin-transform-async-to-promises"),
45
+ {
46
+ topLevelAwait: "ignore", // will be handled by "jsenv:top_level_await" plugin
47
+ externalHelpers: false,
48
+ // enable once https://github.com/rpetrich/babel-plugin-transform-async-to-promises/pull/83
49
+ // externalHelpers: isJsModule,
50
+ // externalHelpersPath: isJsModule ? getImportSpecifier(
51
+ // "babel-plugin-transform-async-to-promises/helpers.mjs",
52
+ // ) : null
53
+ },
54
+ ];
55
+ }
56
+ if (isBabelPluginNeeded("transform-arrow-functions")) {
57
+ babelPluginStructure["transform-arrow-functions"] = requireBabelPlugin(
58
+ "@babel/plugin-transform-arrow-functions",
59
+ );
60
+ }
61
+ if (isBabelPluginNeeded("transform-block-scoped-functions")) {
62
+ babelPluginStructure["transform-block-scoped-functions"] =
63
+ requireBabelPlugin("@babel/plugin-transform-block-scoped-functions");
64
+ }
65
+ if (isBabelPluginNeeded("transform-block-scoping")) {
66
+ babelPluginStructure["transform-block-scoping"] = requireBabelPlugin(
67
+ "@babel/plugin-transform-block-scoping",
68
+ );
69
+ }
70
+ if (isBabelPluginNeeded("transform-classes")) {
71
+ babelPluginStructure["transform-classes"] = requireBabelPlugin(
72
+ "@babel/plugin-transform-classes",
73
+ );
74
+ }
75
+ if (isBabelPluginNeeded("transform-computed-properties")) {
76
+ babelPluginStructure["transform-computed-properties"] = requireBabelPlugin(
77
+ "@babel/plugin-transform-computed-properties",
78
+ );
79
+ }
80
+ if (isBabelPluginNeeded("transform-destructuring")) {
81
+ babelPluginStructure["transform-destructuring"] = requireBabelPlugin(
82
+ "@babel/plugin-transform-destructuring",
83
+ );
84
+ }
85
+ if (isBabelPluginNeeded("transform-dotall-regex")) {
86
+ babelPluginStructure["transform-dotall-regex"] = requireBabelPlugin(
87
+ "@babel/plugin-transform-dotall-regex",
88
+ );
89
+ }
90
+ if (isBabelPluginNeeded("transform-duplicate-keys")) {
91
+ babelPluginStructure["transform-duplicate-keys"] = requireBabelPlugin(
92
+ "@babel/plugin-transform-duplicate-keys",
93
+ );
94
+ }
95
+ if (isBabelPluginNeeded("transform-exponentiation-operator")) {
96
+ babelPluginStructure["transform-exponentiation-operator"] =
97
+ requireBabelPlugin("@babel/plugin-transform-exponentiation-operator");
98
+ }
99
+ if (isBabelPluginNeeded("transform-for-of")) {
100
+ babelPluginStructure["transform-for-of"] = requireBabelPlugin(
101
+ "@babel/plugin-transform-for-of",
102
+ );
103
+ }
104
+ if (isBabelPluginNeeded("transform-function-name")) {
105
+ babelPluginStructure["transform-function-name"] = requireBabelPlugin(
106
+ "@babel/plugin-transform-function-name",
107
+ );
108
+ }
109
+ if (isBabelPluginNeeded("transform-literals")) {
110
+ babelPluginStructure["transform-literals"] = requireBabelPlugin(
111
+ "@babel/plugin-transform-literals",
112
+ );
113
+ }
114
+ if (isBabelPluginNeeded("transform-new-target")) {
115
+ babelPluginStructure["transform-new-target"] = requireBabelPlugin(
116
+ "@babel/plugin-transform-new-target",
117
+ );
118
+ }
119
+ if (isBabelPluginNeeded("transform-object-super")) {
120
+ babelPluginStructure["transform-object-super"] = requireBabelPlugin(
121
+ "@babel/plugin-transform-object-super",
122
+ );
123
+ }
124
+ if (isBabelPluginNeeded("transform-parameters")) {
125
+ babelPluginStructure["transform-parameters"] = requireBabelPlugin(
126
+ "@babel/plugin-transform-parameters",
127
+ );
128
+ }
129
+ if (isBabelPluginNeeded("transform-regenerator")) {
130
+ babelPluginStructure["transform-regenerator"] = [
131
+ requireBabelPlugin("@babel/plugin-transform-regenerator"),
132
+ {
133
+ asyncGenerators: true,
134
+ generators: true,
135
+ async: false,
136
+ },
137
+ ];
138
+ }
139
+ if (isBabelPluginNeeded("transform-shorthand-properties")) {
140
+ babelPluginStructure["transform-shorthand-properties"] = [
141
+ requireBabelPlugin("@babel/plugin-transform-shorthand-properties"),
142
+ ];
143
+ }
144
+ if (isBabelPluginNeeded("transform-spread")) {
145
+ babelPluginStructure["transform-spread"] = [
146
+ requireBabelPlugin("@babel/plugin-transform-spread"),
147
+ ];
148
+ }
149
+ if (isBabelPluginNeeded("transform-sticky-regex")) {
150
+ babelPluginStructure["transform-sticky-regex"] = [
151
+ requireBabelPlugin("@babel/plugin-transform-sticky-regex"),
152
+ ];
153
+ }
154
+ if (isBabelPluginNeeded("transform-template-literals")) {
155
+ babelPluginStructure["transform-template-literals"] = [
156
+ requireBabelPlugin("@babel/plugin-transform-template-literals"),
157
+ ];
158
+ }
159
+ if (
160
+ isBabelPluginNeeded("transform-typeof-symbol") &&
161
+ // prevent "typeof" to be injected into itself:
162
+ // - not needed
163
+ // - would create infinite attempt to transform typeof
164
+ url !== getBabelHelperFileUrl("typeof")
165
+ ) {
166
+ babelPluginStructure["transform-typeof-symbol"] = [
167
+ requireBabelPlugin("@babel/plugin-transform-typeof-symbol"),
168
+ ];
169
+ }
170
+ if (isBabelPluginNeeded("transform-unicode-regex")) {
171
+ babelPluginStructure["transform-unicode-regex"] = [
172
+ requireBabelPlugin("@babel/plugin-transform-unicode-regex"),
173
+ ];
174
+ }
175
+ return babelPluginStructure;
176
+ };