@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,432 @@
1
+ /* eslint-disable camelcase */
2
+ // copied from
3
+ // https://github.com/babel/babel/blob/e498bee10f0123bb208baa228ce6417542a2c3c4/packages/babel-compat-data/data/plugins.json#L1
4
+ // https://github.com/babel/babel/blob/master/packages/babel-compat-data/data/plugins.json#L1
5
+ // Because this is an hidden implementation detail of @babel/preset-env
6
+ // it could be deprecated or moved anytime.
7
+ // For that reason it makes more sens to have it inlined here
8
+ // than importing it from an undocumented location.
9
+ // Ideally it would be documented or a separate module
10
+
11
+ export const babelPluginCompatMap = {
12
+ "proposal-numeric-separator": {
13
+ chrome: "75",
14
+ opera: "62",
15
+ edge: "79",
16
+ firefox: "70",
17
+ safari: "13",
18
+ node: "12.5",
19
+ ios: "13",
20
+ samsung: "11",
21
+ electron: "6",
22
+ },
23
+ "proposal-class-properties": {
24
+ chrome: "74",
25
+ opera: "61",
26
+ edge: "79",
27
+ node: "12",
28
+ electron: "6.1",
29
+ },
30
+ "proposal-private-methods": {
31
+ chrome: "84",
32
+ opera: "71",
33
+ },
34
+ "proposal-nullish-coalescing-operator": {
35
+ chrome: "80",
36
+ opera: "67",
37
+ edge: "80",
38
+ firefox: "72",
39
+ safari: "13.1",
40
+ node: "14",
41
+ electron: "8.1",
42
+ },
43
+ "proposal-optional-chaining": {
44
+ chrome: "80",
45
+ opera: "67",
46
+ edge: "80",
47
+ firefox: "74",
48
+ safari: "13.1",
49
+ node: "14",
50
+ electron: "8.1",
51
+ },
52
+ "proposal-json-strings": {
53
+ chrome: "66",
54
+ opera: "53",
55
+ edge: "79",
56
+ firefox: "62",
57
+ safari: "12",
58
+ node: "10",
59
+ ios: "12",
60
+ samsung: "9",
61
+ electron: "3",
62
+ },
63
+ "proposal-optional-catch-binding": {
64
+ chrome: "66",
65
+ opera: "53",
66
+ edge: "79",
67
+ firefox: "58",
68
+ safari: "11.1",
69
+ node: "10",
70
+ ios: "11.3",
71
+ samsung: "9",
72
+ electron: "3",
73
+ },
74
+ "transform-parameters": {
75
+ chrome: "49",
76
+ opera: "36",
77
+ edge: "18",
78
+ firefox: "53",
79
+ safari: "10",
80
+ node: "6",
81
+ ios: "10",
82
+ samsung: "5",
83
+ electron: "0.37",
84
+ },
85
+ "proposal-async-generator-functions": {
86
+ chrome: "63",
87
+ opera: "50",
88
+ edge: "79",
89
+ firefox: "57",
90
+ safari: "12",
91
+ node: "10",
92
+ ios: "12",
93
+ samsung: "8",
94
+ electron: "3",
95
+ },
96
+ "proposal-object-rest-spread": {
97
+ chrome: "60",
98
+ opera: "47",
99
+ edge: "79",
100
+ firefox: "55",
101
+ safari: "11.1",
102
+ node: "8.3",
103
+ ios: "11.3",
104
+ samsung: "8",
105
+ electron: "2",
106
+ },
107
+ "transform-dotall-regex": {
108
+ chrome: "62",
109
+ opera: "49",
110
+ edge: "79",
111
+ firefox: "78",
112
+ safari: "11.1",
113
+ node: "8.10",
114
+ ios: "11.3",
115
+ samsung: "8",
116
+ electron: "3",
117
+ },
118
+ "proposal-unicode-property-regex": {
119
+ chrome: "64",
120
+ opera: "51",
121
+ edge: "79",
122
+ firefox: "78",
123
+ safari: "11.1",
124
+ node: "10",
125
+ ios: "11.3",
126
+ samsung: "9",
127
+ electron: "3",
128
+ },
129
+ "transform-named-capturing-groups-regex": {
130
+ chrome: "64",
131
+ opera: "51",
132
+ edge: "79",
133
+ safari: "11.1",
134
+ node: "10",
135
+ ios: "11.3",
136
+ samsung: "9",
137
+ electron: "3",
138
+ },
139
+ "transform-async-to-generator": {
140
+ chrome: "55",
141
+ opera: "42",
142
+ edge: "15",
143
+ firefox: "52",
144
+ safari: "11",
145
+ node: "7.6",
146
+ ios: "11",
147
+ samsung: "6",
148
+ electron: "1.6",
149
+ },
150
+ "transform-exponentiation-operator": {
151
+ chrome: "52",
152
+ opera: "39",
153
+ edge: "14",
154
+ firefox: "52",
155
+ safari: "10.1",
156
+ node: "7",
157
+ ios: "10.3",
158
+ samsung: "6",
159
+ electron: "1.3",
160
+ },
161
+ "transform-template-literals": {
162
+ chrome: "41",
163
+ opera: "28",
164
+ edge: "13",
165
+ electron: "0.22",
166
+ firefox: "34",
167
+ safari: "13",
168
+ node: "4",
169
+ ios: "13",
170
+ samsung: "3.4",
171
+ },
172
+ "transform-literals": {
173
+ chrome: "44",
174
+ opera: "31",
175
+ edge: "12",
176
+ firefox: "53",
177
+ safari: "9",
178
+ node: "4",
179
+ ios: "9",
180
+ samsung: "4",
181
+ electron: "0.30",
182
+ },
183
+ "transform-function-name": {
184
+ chrome: "51",
185
+ opera: "38",
186
+ edge: "79",
187
+ firefox: "53",
188
+ safari: "10",
189
+ node: "6.5",
190
+ ios: "10",
191
+ samsung: "5",
192
+ electron: "1.2",
193
+ },
194
+ "transform-arrow-functions": {
195
+ chrome: "47",
196
+ opera: "34",
197
+ edge: "13",
198
+ firefox: "45",
199
+ safari: "10",
200
+ node: "6",
201
+ ios: "10",
202
+ samsung: "5",
203
+ electron: "0.36",
204
+ },
205
+ "transform-block-scoped-functions": {
206
+ chrome: "41",
207
+ opera: "28",
208
+ edge: "12",
209
+ firefox: "46",
210
+ safari: "10",
211
+ node: "4",
212
+ ie: "11",
213
+ ios: "10",
214
+ samsung: "3.4",
215
+ electron: "0.22",
216
+ },
217
+ "transform-classes": {
218
+ chrome: "46",
219
+ opera: "33",
220
+ edge: "13",
221
+ firefox: "45",
222
+ safari: "10",
223
+ node: "5",
224
+ ios: "10",
225
+ samsung: "5",
226
+ electron: "0.36",
227
+ },
228
+ "transform-object-super": {
229
+ chrome: "46",
230
+ opera: "33",
231
+ edge: "13",
232
+ firefox: "45",
233
+ safari: "10",
234
+ node: "5",
235
+ ios: "10",
236
+ samsung: "5",
237
+ electron: "0.36",
238
+ },
239
+ "transform-shorthand-properties": {
240
+ chrome: "43",
241
+ opera: "30",
242
+ edge: "12",
243
+ firefox: "33",
244
+ safari: "9",
245
+ node: "4",
246
+ ios: "9",
247
+ samsung: "4",
248
+ electron: "0.28",
249
+ },
250
+ "transform-duplicate-keys": {
251
+ chrome: "42",
252
+ opera: "29",
253
+ edge: "12",
254
+ firefox: "34",
255
+ safari: "9",
256
+ node: "4",
257
+ ios: "9",
258
+ samsung: "3.4",
259
+ electron: "0.25",
260
+ },
261
+ "transform-computed-properties": {
262
+ chrome: "44",
263
+ opera: "31",
264
+ edge: "12",
265
+ firefox: "34",
266
+ safari: "7.1",
267
+ node: "4",
268
+ ios: "8",
269
+ samsung: "4",
270
+ electron: "0.30",
271
+ },
272
+ "transform-for-of": {
273
+ chrome: "51",
274
+ opera: "38",
275
+ edge: "15",
276
+ firefox: "53",
277
+ safari: "10",
278
+ node: "6.5",
279
+ ios: "10",
280
+ samsung: "5",
281
+ electron: "1.2",
282
+ },
283
+ "transform-sticky-regex": {
284
+ chrome: "49",
285
+ opera: "36",
286
+ edge: "13",
287
+ firefox: "3",
288
+ safari: "10",
289
+ node: "6",
290
+ ios: "10",
291
+ samsung: "5",
292
+ electron: "0.37",
293
+ },
294
+ "transform-unicode-escapes": {
295
+ chrome: "44",
296
+ opera: "31",
297
+ edge: "12",
298
+ firefox: "53",
299
+ safari: "9",
300
+ node: "4",
301
+ ios: "9",
302
+ samsung: "4",
303
+ electron: "0.30",
304
+ },
305
+ "transform-unicode-regex": {
306
+ chrome: "50",
307
+ opera: "37",
308
+ edge: "13",
309
+ firefox: "46",
310
+ safari: "12",
311
+ node: "6",
312
+ ios: "12",
313
+ samsung: "5",
314
+ electron: "1.1",
315
+ },
316
+ "transform-spread": {
317
+ chrome: "46",
318
+ opera: "33",
319
+ edge: "13",
320
+ firefox: "36",
321
+ safari: "10",
322
+ node: "5",
323
+ ios: "10",
324
+ samsung: "5",
325
+ electron: "0.36",
326
+ },
327
+ "transform-destructuring": {
328
+ chrome: "51",
329
+ opera: "38",
330
+ edge: "15",
331
+ firefox: "53",
332
+ safari: "10",
333
+ node: "6.5",
334
+ ios: "10",
335
+ samsung: "5",
336
+ electron: "1.2",
337
+ },
338
+ "transform-block-scoping": {
339
+ chrome: "49",
340
+ opera: "36",
341
+ edge: "14",
342
+ firefox: "51",
343
+ safari: "11",
344
+ node: "6",
345
+ ios: "11",
346
+ samsung: "5",
347
+ electron: "0.37",
348
+ },
349
+ "transform-typeof-symbol": {
350
+ chrome: "38",
351
+ opera: "25",
352
+ edge: "12",
353
+ firefox: "36",
354
+ safari: "9",
355
+ node: "0.12",
356
+ ios: "9",
357
+ samsung: "3",
358
+ electron: "0.20",
359
+ },
360
+ "transform-new-target": {
361
+ chrome: "46",
362
+ opera: "33",
363
+ edge: "14",
364
+ firefox: "41",
365
+ safari: "10",
366
+ node: "5",
367
+ ios: "10",
368
+ samsung: "5",
369
+ electron: "0.36",
370
+ },
371
+ "transform-regenerator": {
372
+ chrome: "50",
373
+ opera: "37",
374
+ edge: "13",
375
+ firefox: "53",
376
+ safari: "10",
377
+ node: "6",
378
+ ios: "10",
379
+ samsung: "5",
380
+ electron: "1.1",
381
+ },
382
+ "transform-member-expression-literals": {
383
+ chrome: "7",
384
+ opera: "12",
385
+ edge: "12",
386
+ firefox: "2",
387
+ safari: "5.1",
388
+ node: "0.10",
389
+ ie: "9",
390
+ android: "4",
391
+ ios: "6",
392
+ phantom: "2",
393
+ samsung: "1",
394
+ electron: "0.20",
395
+ },
396
+ "transform-property-literals": {
397
+ chrome: "7",
398
+ opera: "12",
399
+ edge: "12",
400
+ firefox: "2",
401
+ safari: "5.1",
402
+ node: "0.10",
403
+ ie: "9",
404
+ android: "4",
405
+ ios: "6",
406
+ phantom: "2",
407
+ samsung: "1",
408
+ electron: "0.20",
409
+ },
410
+ "transform-reserved-words": {
411
+ chrome: "13",
412
+ opera: "10.50",
413
+ edge: "12",
414
+ firefox: "2",
415
+ safari: "3.1",
416
+ node: "0.10",
417
+ ie: "9",
418
+ android: "4.4",
419
+ ios: "6",
420
+ phantom: "2",
421
+ samsung: "1",
422
+ electron: "0.20",
423
+ },
424
+ };
425
+
426
+ // copy of transform-async-to-generator
427
+ // so that async is not transpiled when supported
428
+ babelPluginCompatMap["transform-async-to-promises"] =
429
+ babelPluginCompatMap["transform-async-to-generator"];
430
+
431
+ babelPluginCompatMap["regenerator-transform"] =
432
+ babelPluginCompatMap["transform-regenerator"];
@@ -0,0 +1,56 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { injectPolyfillIntoBabelAst } from "../polyfill_injection_in_babel_ast.js";
3
+
4
+ const globalThisJsModuleClientFileUrl = new URL(
5
+ "./client/global_this_js_module.js",
6
+ import.meta.url,
7
+ ).href;
8
+ const globalThisJsClassicClientFileUrl = new URL(
9
+ "./client/global_this_js_classic.js?js_classic",
10
+ import.meta.url,
11
+ ).href;
12
+
13
+ export const babelPluginGlobalThisInjector = (
14
+ babel,
15
+ { babelHelpersAsImport, getImportSpecifier },
16
+ ) => {
17
+ return {
18
+ name: "global-this-injector",
19
+ visitor: {
20
+ Program: {
21
+ enter: (path, state) => {
22
+ let globalThisDetected = false;
23
+ const { filename } = state;
24
+ const fileUrl = pathToFileURL(filename).href;
25
+ if (fileUrl === globalThisJsModuleClientFileUrl) {
26
+ return;
27
+ }
28
+ path.traverse({
29
+ Identifier(path) {
30
+ const { node } = path;
31
+ if (node.name === "globalThis") {
32
+ globalThisDetected = true;
33
+ path.stop();
34
+ }
35
+ },
36
+ });
37
+ state.file.metadata.globalThisDetected = globalThisDetected;
38
+ if (globalThisDetected) {
39
+ const { sourceType } = state.file.opts.parserOpts;
40
+ const isJsModule = sourceType === "module";
41
+ injectPolyfillIntoBabelAst({
42
+ programPath: path,
43
+ isJsModule,
44
+ asImport: babelHelpersAsImport,
45
+ polyfillFileUrl: isJsModule
46
+ ? globalThisJsModuleClientFileUrl
47
+ : globalThisJsClassicClientFileUrl,
48
+ getPolyfillImportSpecifier: getImportSpecifier,
49
+ babel,
50
+ });
51
+ }
52
+ },
53
+ },
54
+ },
55
+ };
56
+ };
@@ -0,0 +1,25 @@
1
+ // https://mathiasbynens.be/notes/globalthis
2
+
3
+ /* eslint-disable no-redeclare */
4
+ /* global globalThis */
5
+ let globalObject;
6
+ if (typeof globalThis === "object") {
7
+ globalObject = globalThis;
8
+ } else {
9
+ if (typeof this === "object") {
10
+ globalObject = this;
11
+ } else {
12
+ // eslint-disable-next-line no-extend-native
13
+ Object.defineProperty(Object.prototype, "__global__", {
14
+ get() {
15
+ return this;
16
+ },
17
+ configurable: true,
18
+ });
19
+ // eslint-disable-next-line no-undef
20
+ globalObject = __global__;
21
+ delete Object.prototype.__global__;
22
+ }
23
+
24
+ globalObject.globalThis = globalObject;
25
+ }
@@ -0,0 +1,21 @@
1
+ // https://mathiasbynens.be/notes/globalthis
2
+
3
+ /* eslint-disable no-redeclare */
4
+ /* global globalThis */
5
+ let globalObject;
6
+ if (typeof globalThis === "object") {
7
+ globalObject = globalThis;
8
+ } else {
9
+ // eslint-disable-next-line no-extend-native
10
+ Object.defineProperty(Object.prototype, "__global__", {
11
+ get() {
12
+ return this;
13
+ },
14
+ configurable: true,
15
+ });
16
+ // eslint-disable-next-line no-undef
17
+ globalObject = __global__;
18
+ delete Object.prototype.__global__;
19
+ }
20
+
21
+ globalObject.globalThis = globalObject;
@@ -0,0 +1,35 @@
1
+ import { applyJsTranspilation } from "./apply_js_transpilation.js";
2
+
3
+ export const jsenvPluginBabel = ({ babelHelpersAsImport = true } = {}) => {
4
+ const transformWithBabel = async (urlInfo, context) => {
5
+ return applyJsTranspilation({
6
+ input: urlInfo.content,
7
+ inputIsJsModule: urlInfo.type === "js_module",
8
+ inputUrl: urlInfo.originalUrl,
9
+ outputUrl: urlInfo.generatedUrl,
10
+ babelHelpersAsImport,
11
+ babelOptions: {
12
+ generatorOpts: {
13
+ retainLines: context.dev,
14
+ },
15
+ },
16
+ runtimeCompat: context.clientRuntimeCompat,
17
+ getImportSpecifier: (clientFileUrl) => {
18
+ const [reference] = context.referenceUtils.inject({
19
+ type: "js_import",
20
+ expectedType: "js_module",
21
+ specifier: clientFileUrl,
22
+ });
23
+ return JSON.parse(reference.generatedSpecifier);
24
+ },
25
+ });
26
+ };
27
+ return {
28
+ name: "jsenv:babel",
29
+ appliesDuring: "*",
30
+ transformUrlContent: {
31
+ js_classic: transformWithBabel,
32
+ js_module: transformWithBabel,
33
+ },
34
+ };
35
+ };