@jsenv/core 27.0.0-alpha.9 → 27.0.0-alpha.92

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 (277) hide show
  1. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
  2. package/dist/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  3. package/dist/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
  4. package/dist/babel_helpers/applyDecs/applyDecs.js +756 -0
  5. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
  6. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  7. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  8. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  9. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  10. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  11. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  12. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  13. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  14. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  15. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  16. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  18. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  19. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  20. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  21. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  24. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  25. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  27. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  29. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  31. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  32. package/dist/babel_helpers/construct/construct.js +15 -0
  33. package/dist/babel_helpers/createClass/createClass.js +18 -0
  34. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  35. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  36. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  37. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  38. package/dist/babel_helpers/decorate/decorate.js +622 -0
  39. package/dist/babel_helpers/defaults/defaults.js +14 -0
  40. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  41. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  42. package/dist/babel_helpers/extends/extends.js +16 -0
  43. package/dist/babel_helpers/get/get.js +21 -0
  44. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  45. package/dist/babel_helpers/identity/identity.js +3 -0
  46. package/dist/babel_helpers/inherits/inherits.js +21 -0
  47. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  48. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  49. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  50. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  51. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  52. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  53. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  54. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  55. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  56. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  57. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  58. package/dist/babel_helpers/jsx/jsx.js +49 -0
  59. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  60. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  61. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  62. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  63. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  64. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  65. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  66. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  67. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  68. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  69. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  70. package/dist/babel_helpers/set/set.js +51 -0
  71. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  72. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  73. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  74. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  75. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  76. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  77. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  78. package/dist/babel_helpers/tdz/tdz.js +4 -0
  79. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  80. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  81. package/dist/babel_helpers/toArray/toArray.js +5 -0
  82. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  83. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  84. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  85. package/dist/babel_helpers/typeof/typeof.js +7 -0
  86. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  87. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  88. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  89. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  90. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  91. package/dist/html/explorer.html +557 -0
  92. package/dist/js/controllable_file.mjs +227 -0
  93. package/dist/js/event_source_client.js +528 -0
  94. package/dist/js/global_this.js +32 -0
  95. package/dist/js/html_supervisor_installer.js +522 -0
  96. package/dist/js/html_supervisor_setup.js +82 -0
  97. package/dist/js/import_meta_hot.js +84 -0
  98. package/dist/js/inline_content.js +8 -0
  99. package/dist/js/new_stylesheet.js +409 -0
  100. package/dist/js/regenerator_runtime.js +721 -0
  101. package/dist/js/s.js +429 -0
  102. package/dist/js/uneval.js +804 -0
  103. package/dist/main.js +25163 -0
  104. package/dist/other/jsenv.png +0 -0
  105. package/dist/s.js +626 -0
  106. package/dist/s.js.map +205 -0
  107. package/package.json +61 -57
  108. package/readme.md +6 -14
  109. package/src/build/build.js +1040 -551
  110. package/src/build/build_urls_generator.js +65 -25
  111. package/src/build/graph_utils.js +31 -0
  112. package/src/build/inject_global_version_mappings.js +93 -0
  113. package/src/build/inject_service_worker_urls.js +79 -0
  114. package/src/build/resync_ressource_hints.js +114 -0
  115. package/src/build/start_build_server.js +217 -0
  116. package/src/build/version_generator.js +60 -0
  117. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  118. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -14
  119. package/src/dev/plugins/toolbar/client/util/fetching.js +1 -1
  120. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +6 -4
  121. package/src/dev/start_dev_server.js +173 -38
  122. package/src/execute/execute.js +35 -8
  123. package/src/execute/run.js +21 -57
  124. package/src/execute/runtimes/browsers/from_playwright.js +224 -153
  125. package/src/execute/runtimes/node/child_exec_options.js +1 -1
  126. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  127. package/src/execute/runtimes/node/kill_process_tree.js +2 -4
  128. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  129. package/src/execute/runtimes/node/node_process.js +288 -39
  130. package/src/helpers/command/command.js +73 -0
  131. package/src/{dev/plugins/autoreload/client/event_source_connection.js → helpers/event_source/event_source.js} +2 -0
  132. package/src/helpers/event_source/sse_service.js +53 -0
  133. package/src/helpers/worker_reload.js +57 -0
  134. package/src/main.js +27 -0
  135. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  136. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +16 -17
  137. package/src/omega/errors.js +63 -67
  138. package/src/omega/fetched_content_compliance.js +24 -0
  139. package/src/omega/file_url_converter.js +9 -51
  140. package/src/omega/kitchen.js +607 -466
  141. package/src/omega/omega_server.js +2 -3
  142. package/src/omega/server/file_service.js +88 -41
  143. package/src/omega/server/user_agent.js +5 -5
  144. package/src/omega/url_graph/{url_graph_sort.js → sort_by_dependencies.js} +3 -5
  145. package/src/omega/url_graph/url_graph_load.js +31 -23
  146. package/src/omega/url_graph/url_graph_report.js +94 -51
  147. package/src/omega/url_graph/url_info_transformations.js +54 -24
  148. package/src/omega/url_graph.js +88 -19
  149. package/src/omega/url_specifier_encoding.js +59 -0
  150. package/src/omega/web_workers.js +42 -0
  151. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  152. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  153. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +6 -3
  154. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  155. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  156. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  157. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  158. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  159. package/src/plugins/bundling/css/bundle_css.js +140 -0
  160. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  161. package/src/plugins/bundling/js_module/bundle_js_module.js +362 -0
  162. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  163. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  164. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +56 -43
  165. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +190 -0
  166. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  167. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  168. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  169. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
  170. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  171. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  172. package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +239 -0
  173. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +16 -0
  174. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  175. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  176. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +15 -18
  177. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  178. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +35 -10
  179. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  180. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  181. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +56 -54
  182. package/src/plugins/inject_globals/inject_globals.js +57 -0
  183. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
  184. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  185. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
  186. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +159 -0
  187. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  188. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  189. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  190. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  191. package/src/plugins/minification/css/minify_css.js +9 -0
  192. package/src/plugins/minification/html/minify_html.js +13 -0
  193. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  194. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  195. package/src/plugins/minification/json/minify_json.js +8 -0
  196. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
  197. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  198. package/src/{omega → plugins}/plugin_controller.js +57 -12
  199. package/src/plugins/plugins.js +91 -0
  200. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  201. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  202. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  203. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +209 -0
  204. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +282 -0
  205. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  206. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +2 -3
  207. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  208. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +3 -4
  209. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  210. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  211. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +40 -33
  212. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +32 -9
  213. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  214. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +2 -3
  215. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  216. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  217. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  218. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  219. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +80 -0
  220. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  221. package/src/plugins/url_analysis/css/css_urls.js +48 -0
  222. package/src/plugins/url_analysis/html/html_urls.js +257 -0
  223. package/src/plugins/url_analysis/js/js_urls.js +69 -0
  224. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +110 -0
  225. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  226. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  227. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  228. package/src/require_from_jsenv.js +3 -0
  229. package/src/test/coverage/babel_plugin_instrument.js +82 -0
  230. package/src/test/coverage/coverage_reporter_html_directory.js +36 -0
  231. package/src/test/coverage/coverage_reporter_json_file.js +22 -0
  232. package/src/test/coverage/coverage_reporter_text_log.js +19 -0
  233. package/src/test/coverage/empty_coverage_factory.js +52 -0
  234. package/src/test/coverage/file_by_file_coverage.js +25 -0
  235. package/src/test/coverage/istanbul_coverage_composition.js +28 -0
  236. package/src/test/coverage/istanbul_coverage_map_from_coverage.js +16 -0
  237. package/src/test/coverage/list_files_not_covered.js +15 -0
  238. package/src/test/coverage/missing_coverage.js +41 -0
  239. package/src/test/coverage/report_to_coverage.js +196 -0
  240. package/src/test/coverage/v8_and_istanbul.js +37 -0
  241. package/src/test/coverage/v8_coverage_composition.js +24 -0
  242. package/src/test/coverage/v8_coverage_from_directory.js +87 -0
  243. package/src/test/coverage/v8_coverage_to_istanbul.js +99 -0
  244. package/src/test/execute_plan.js +87 -46
  245. package/src/test/execute_test_plan.js +40 -28
  246. package/src/test/execution_steps.js +2 -5
  247. package/src/test/logs_file_execution.js +56 -49
  248. package/main.js +0 -19
  249. package/src/build/inject_version_mappings.js +0 -62
  250. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
  251. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  252. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  253. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  254. package/src/execute/runtimes/node/controlled_process.js +0 -316
  255. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  256. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  257. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  258. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  259. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  260. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +0 -233
  261. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  262. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  263. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  264. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  265. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  266. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  267. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  268. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  269. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  270. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  271. package/src/omega/core_plugins.js +0 -39
  272. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  273. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  274. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  275. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  276. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  277. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -0,0 +1,43 @@
1
+ // const { clientRuntimeCompat, isSupportedOnCurrentClient } = context
2
+ // const shouldBeCompatibleWithNode =
3
+ // Object.keys(clientRuntimeCompat).includes("node")
4
+ // const requiredFeatureNames = [
5
+ // "import_dynamic",
6
+ // "top_level_await",
7
+ // "global_this",
8
+ // // when using node we assume the code won't use browser specific feature
9
+ // ...(shouldBeCompatibleWithNode
10
+ // ? []
11
+ // : [
12
+ // "script_type_module",
13
+ // "worker_type_module",
14
+ // "import_type_json",
15
+ // "import_type_css",
16
+ // ]),
17
+ // // "importmap",
18
+ // ]
19
+ // const needsSystemJs = featuresRelatedToSystemJs.some((featureName) => {
20
+ // const isRequired = requiredFeatureNames.includes(featureName)
21
+ // return isRequired && !isSupportedOnCurrentClient(featureName)
22
+ // })
23
+ // if (!needsSystemJs) {
24
+ // return null
25
+ // }
26
+ // const { code, map } = await applyBabelPlugins({
27
+
28
+ // })
29
+ // return {
30
+ // content: code,
31
+ // soourcemap: map,
32
+ // }
33
+
34
+ // const featuresRelatedToSystemJs = [
35
+ // "script_type_module",
36
+ // "worker_type_module",
37
+ // "import_dynamic",
38
+ // "import_type_json",
39
+ // "import_type_css",
40
+ // "top_level_await",
41
+ // // "importmap",
42
+ // // "worker_importmap",
43
+ // ]
@@ -0,0 +1,209 @@
1
+ /*
2
+ * Something to keep in mind:
3
+ * When systemjs format is used by babel, it will generated UID based on
4
+ * the import specifier:
5
+ * https://github.com/babel/babel/blob/97d1967826077f15e766778c0d64711399e9a72a/packages/babel-plugin-transform-modules-systemjs/src/index.ts#L498
6
+ * But at this stage import specifier are absolute file urls
7
+ * So without minification these specifier are long and dependent
8
+ * on where the files are on the filesystem.
9
+ * This is mitigated by minification that will shorten them
10
+ * But ideally babel should not generate this in the first place
11
+ * and prefer to unique identifier based solely on the specifier basename for instance
12
+ */
13
+
14
+ import { urlToFilename, injectQueryParams } from "@jsenv/urls"
15
+ import { readFileSync } from "@jsenv/filesystem"
16
+ import { createMagicSource, composeTwoSourcemaps } from "@jsenv/sourcemap"
17
+ import { applyBabelPlugins } from "@jsenv/ast"
18
+
19
+ import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
20
+ import { requireBabelPlugin } from "../babel/require_babel_plugin.js"
21
+ import { babelPluginTransformImportMetaUrl } from "./helpers/babel_plugin_transform_import_meta_url.js"
22
+ import { jsenvPluginAsJsClassicHtml } from "./jsenv_plugin_as_js_classic_html.js"
23
+ import { jsenvPluginAsJsClassicWorkers } from "./jsenv_plugin_as_js_classic_workers.js"
24
+
25
+ export const jsenvPluginAsJsClassic = ({ systemJsInjection }) => {
26
+ const systemJsClientFileUrl = new URL(
27
+ "./client/s.js?js_classic",
28
+ import.meta.url,
29
+ ).href
30
+
31
+ return [
32
+ jsenvPluginAsJsClassicConversion({
33
+ systemJsInjection,
34
+ systemJsClientFileUrl,
35
+ }),
36
+ jsenvPluginAsJsClassicHtml({
37
+ systemJsInjection,
38
+ systemJsClientFileUrl,
39
+ generateJsClassicFilename,
40
+ }),
41
+ jsenvPluginAsJsClassicWorkers({
42
+ generateJsClassicFilename,
43
+ }),
44
+ ]
45
+ }
46
+
47
+ // propagate ?as_js_classic to referenced urls
48
+ // and perform the conversion during fetchUrlContent
49
+ const jsenvPluginAsJsClassicConversion = ({
50
+ systemJsInjection,
51
+ systemJsClientFileUrl,
52
+ }) => {
53
+ const propagateJsClassicSearchParam = (reference, context) => {
54
+ const parentUrlInfo = context.urlGraph.getUrlInfo(reference.parentUrl)
55
+ if (
56
+ !parentUrlInfo ||
57
+ !new URL(parentUrlInfo.url).searchParams.has("as_js_classic")
58
+ ) {
59
+ return null
60
+ }
61
+ const urlTransformed = injectQueryParams(reference.url, {
62
+ as_js_classic: "",
63
+ })
64
+ reference.filename = generateJsClassicFilename(reference.url)
65
+ return urlTransformed
66
+ }
67
+
68
+ return {
69
+ name: "jsenv:as_js_classic_conversion",
70
+ appliesDuring: "*",
71
+ redirectUrl: {
72
+ // We want to propagate transformation of js module to js classic to:
73
+ // - import specifier (static/dynamic import + re-export)
74
+ // - url specifier when inside System.register/_context.import()
75
+ // (because it's the transpiled equivalent of static and dynamic imports)
76
+ // And not other references otherwise we could try to transform inline ressources
77
+ // or specifiers inside new URL()...
78
+ js_import_export: propagateJsClassicSearchParam,
79
+ js_url_specifier: (reference, context) => {
80
+ if (
81
+ reference.subtype === "system_register_arg" ||
82
+ reference.subtype === "system_import_arg"
83
+ ) {
84
+ return propagateJsClassicSearchParam(reference, context)
85
+ }
86
+ return null
87
+ },
88
+ },
89
+ fetchUrlContent: async (urlInfo, context) => {
90
+ const originalUrlInfo = await context.fetchOriginalUrlInfo({
91
+ urlInfo,
92
+ context,
93
+ searchParam: "as_js_classic",
94
+ // override the expectedType to "js_module"
95
+ // because when there is ?as_js_classic it means the underlying ressource
96
+ // is a js_module
97
+ expectedType: "js_module",
98
+ })
99
+ if (!originalUrlInfo) {
100
+ return null
101
+ }
102
+ const isJsEntryPoint =
103
+ // in general html files are entry points
104
+ // but during build js can be sepcified as an entry point
105
+ // (meaning there is no html file where we can inject systemjs)
106
+ // in that case we need to inject systemjs in the js file
107
+ originalUrlInfo.data.isEntryPoint ||
108
+ // In thoose case we need to inject systemjs the worker js file
109
+ originalUrlInfo.data.isWebWorkerEntryPoint
110
+ // if it's an entry point without dependency (it does not use import)
111
+ // then we can use UMD, otherwise we have to use systemjs
112
+ // because it is imported by systemjs
113
+ const jsClassicFormat =
114
+ isJsEntryPoint && !originalUrlInfo.data.usesImport ? "umd" : "system"
115
+ const { content, sourcemap } = await convertJsModuleToJsClassic({
116
+ systemJsInjection,
117
+ systemJsClientFileUrl,
118
+ urlInfo: originalUrlInfo,
119
+ isJsEntryPoint,
120
+ jsClassicFormat,
121
+ })
122
+ urlInfo.data.jsClassicFormat = jsClassicFormat
123
+ return {
124
+ content,
125
+ contentType: "text/javascript",
126
+ type: "js_classic",
127
+ originalUrl: originalUrlInfo.originalUrl,
128
+ originalContent: originalUrlInfo.originalContent,
129
+ sourcemap,
130
+ }
131
+ },
132
+ }
133
+ }
134
+
135
+ const generateJsClassicFilename = (url) => {
136
+ const filename = urlToFilename(url)
137
+ let [basename, extension] = splitFileExtension(filename)
138
+ const { searchParams } = new URL(url)
139
+ if (
140
+ searchParams.has("as_json_module") ||
141
+ searchParams.has("as_css_module") ||
142
+ searchParams.has("as_text_module")
143
+ ) {
144
+ extension = ".js"
145
+ }
146
+ return `${basename}.es5${extension}`
147
+ }
148
+
149
+ const splitFileExtension = (filename) => {
150
+ const dotLastIndex = filename.lastIndexOf(".")
151
+ if (dotLastIndex === -1) {
152
+ return [filename, ""]
153
+ }
154
+ return [filename.slice(0, dotLastIndex), filename.slice(dotLastIndex)]
155
+ }
156
+
157
+ const convertJsModuleToJsClassic = async ({
158
+ systemJsInjection,
159
+ systemJsClientFileUrl,
160
+ urlInfo,
161
+ isJsEntryPoint,
162
+ jsClassicFormat,
163
+ }) => {
164
+ const { code, map } = await applyBabelPlugins({
165
+ babelPlugins: [
166
+ ...(jsClassicFormat === "system"
167
+ ? [
168
+ // propposal-dynamic-import required with systemjs for babel8:
169
+ // https://github.com/babel/babel/issues/10746
170
+ requireFromJsenv("@babel/plugin-proposal-dynamic-import"),
171
+ [
172
+ requireBabelPlugin("babel-plugin-transform-async-to-promises"),
173
+ {
174
+ topLevelAwait: "return",
175
+ },
176
+ ],
177
+ requireFromJsenv("@babel/plugin-transform-modules-systemjs"),
178
+ ]
179
+ : [
180
+ [
181
+ requireBabelPlugin("babel-plugin-transform-async-to-promises"),
182
+ {
183
+ topLevelAwait: "simple",
184
+ },
185
+ ],
186
+ babelPluginTransformImportMetaUrl,
187
+ requireFromJsenv("@babel/plugin-transform-modules-umd"),
188
+ ]),
189
+ ],
190
+ urlInfo,
191
+ })
192
+ let sourcemap = urlInfo.sourcemap
193
+ sourcemap = await composeTwoSourcemaps(sourcemap, map)
194
+ if (systemJsInjection && jsClassicFormat === "system" && isJsEntryPoint) {
195
+ const magicSource = createMagicSource(code)
196
+ const systemjsCode = readFileSync(systemJsClientFileUrl, { as: "string" })
197
+ magicSource.prepend(`${systemjsCode}\n\n`)
198
+ const magicResult = magicSource.toContentAndSourcemap()
199
+ sourcemap = await composeTwoSourcemaps(sourcemap, magicResult.sourcemap)
200
+ return {
201
+ content: magicResult.content,
202
+ sourcemap,
203
+ }
204
+ }
205
+ return {
206
+ content: code,
207
+ sourcemap,
208
+ }
209
+ }
@@ -0,0 +1,282 @@
1
+ import {
2
+ generateInlineContentUrl,
3
+ injectQueryParamsIntoSpecifier,
4
+ } from "@jsenv/urls"
5
+ import {
6
+ parseHtmlString,
7
+ visitHtmlNodes,
8
+ stringifyHtmlAst,
9
+ getHtmlNodeAttribute,
10
+ getHtmlNodeText,
11
+ getHtmlNodePosition,
12
+ setHtmlNodeAttributes,
13
+ setHtmlNodeText,
14
+ injectScriptNodeAsEarlyAsPossible,
15
+ createHtmlNode,
16
+ } from "@jsenv/ast"
17
+
18
+ export const jsenvPluginAsJsClassicHtml = ({
19
+ systemJsInjection,
20
+ systemJsClientFileUrl,
21
+ generateJsClassicFilename,
22
+ }) => {
23
+ return {
24
+ name: "jsenv:as_js_classic_html",
25
+ appliesDuring: "*",
26
+ transformUrlContent: {
27
+ html: async (urlInfo, context) => {
28
+ const shouldTransformScriptTypeModule =
29
+ !context.isSupportedOnCurrentClients("script_type_module") ||
30
+ !context.isSupportedOnCurrentClients("import_dynamic")
31
+ const htmlAst = parseHtmlString(urlInfo.content)
32
+ const preloadAsScriptNodes = []
33
+ const modulePreloadNodes = []
34
+ const moduleScriptNodes = []
35
+ const classicScriptNodes = []
36
+ const visitLinkNodes = (node) => {
37
+ const rel = getHtmlNodeAttribute(node, "rel")
38
+ if (rel === "modulepreload") {
39
+ modulePreloadNodes.push(node)
40
+ return
41
+ }
42
+ if (rel === "preload") {
43
+ const asValue = getHtmlNodeAttribute(node, "as")
44
+ if (asValue === "script") {
45
+ preloadAsScriptNodes.push(node)
46
+ }
47
+ return
48
+ }
49
+ }
50
+ const visitScriptNodes = (node) => {
51
+ const type = getHtmlNodeAttribute(node, "type")
52
+ if (type === "module") {
53
+ moduleScriptNodes.push(node)
54
+ return
55
+ }
56
+ if (type === undefined || type === "text/javascript") {
57
+ classicScriptNodes.push(node)
58
+ return
59
+ }
60
+ }
61
+ visitHtmlNodes(htmlAst, {
62
+ link: (node) => {
63
+ visitLinkNodes(node)
64
+ },
65
+ script: (node) => {
66
+ visitScriptNodes(node)
67
+ },
68
+ })
69
+
70
+ const actions = []
71
+ const jsModuleUrls = []
72
+ const convertedUrls = []
73
+ const getReferenceAsJsClassic = async (
74
+ reference,
75
+ {
76
+ // we don't cook ressource hints
77
+ // because they might refer to ressource that will be modified during build
78
+ // It also means something else HAVE to reference that url in order to cook it
79
+ // so that the preload is deleted by "resync_ressource_hints.js" otherwise
80
+ cookIt = false,
81
+ } = {},
82
+ ) => {
83
+ const newReferenceProps = {
84
+ expectedType: "js_classic",
85
+ specifier: injectQueryParamsIntoSpecifier(reference.specifier, {
86
+ as_js_classic: "",
87
+ }),
88
+ filename: generateJsClassicFilename(reference.url),
89
+ }
90
+ const [newReference, newUrlInfo] = context.referenceUtils.update(
91
+ reference,
92
+ newReferenceProps,
93
+ )
94
+ const convertedUrl = newUrlInfo.url
95
+ if (!convertedUrls.includes(convertedUrl)) {
96
+ convertedUrls.push(convertedUrl)
97
+ }
98
+ if (cookIt) {
99
+ // during dev it means js modules will be cooked before server sends the HTML
100
+ // it's ok because:
101
+ // - during dev script_type_module are supported (dev use a recent browser)
102
+ // - even if browser is not supported it still works it's jus a bit slower
103
+ // because it needs to decide if systemjs will be injected or not
104
+ await context.cook(newUrlInfo, { reference: newReference })
105
+ }
106
+ return [newReference, newUrlInfo]
107
+ }
108
+
109
+ classicScriptNodes.forEach((classicScriptNode) => {
110
+ const src = getHtmlNodeAttribute(classicScriptNode, "src")
111
+ if (src !== undefined) {
112
+ const reference = urlInfo.references.find(
113
+ (ref) =>
114
+ ref.generatedSpecifier === src && ref.type === "script_src",
115
+ )
116
+ const urlObject = new URL(reference.url)
117
+ if (urlObject.searchParams.has("as_js_classic")) {
118
+ const convertedUrl = urlObject.href
119
+ convertedUrls.push(convertedUrl)
120
+ urlObject.searchParams.delete("as_js_classic")
121
+ const jsModuleUrl = urlObject.href
122
+ jsModuleUrls.push(jsModuleUrl)
123
+ actions.push(async () => {
124
+ const urlInfo = context.urlGraph.getUrlInfo(convertedUrl)
125
+ await context.cook(urlInfo, { reference })
126
+ })
127
+ }
128
+ }
129
+ })
130
+ moduleScriptNodes.forEach((moduleScriptNode) => {
131
+ const src = getHtmlNodeAttribute(moduleScriptNode, "src")
132
+ if (src !== undefined) {
133
+ const reference = urlInfo.references.find(
134
+ (ref) =>
135
+ ref.generatedSpecifier === src &&
136
+ ref.type === "script_src" &&
137
+ ref.expectedType === "js_module",
138
+ )
139
+ jsModuleUrls.push(reference.url)
140
+ if (shouldTransformScriptTypeModule) {
141
+ actions.push(async () => {
142
+ const [newReference] = await getReferenceAsJsClassic(
143
+ reference,
144
+ {
145
+ cookIt: true,
146
+ },
147
+ )
148
+ setHtmlNodeAttributes(moduleScriptNode, {
149
+ type: undefined,
150
+ src: newReference.generatedSpecifier,
151
+ })
152
+ })
153
+ }
154
+ return
155
+ }
156
+ if (shouldTransformScriptTypeModule) {
157
+ const htmlNodeText = getHtmlNodeText(moduleScriptNode)
158
+ actions.push(async () => {
159
+ const { line, column, lineEnd, columnEnd, isOriginal } =
160
+ getHtmlNodePosition(moduleScriptNode, {
161
+ preferOriginal: true,
162
+ })
163
+ let inlineScriptUrl = generateInlineContentUrl({
164
+ url: urlInfo.url,
165
+ extension: ".js",
166
+ line,
167
+ column,
168
+ lineEnd,
169
+ columnEnd,
170
+ })
171
+ const [inlineReference] = context.referenceUtils.foundInline({
172
+ node: moduleScriptNode,
173
+ type: "script_src",
174
+ expectedType: "js_module",
175
+ isOriginalPosition: isOriginal,
176
+ // we remove 1 to the line because imagine the following html:
177
+ // <script>console.log('ok')</script>
178
+ // -> content starts same line as <script>
179
+ specifierLine: line - 1,
180
+ specifierColumn: column,
181
+ specifier: inlineScriptUrl,
182
+ contentType: "text/javascript",
183
+ content: htmlNodeText,
184
+ })
185
+ const [, newUrlInfo] = await getReferenceAsJsClassic(
186
+ inlineReference,
187
+ { cookIt: true },
188
+ )
189
+ setHtmlNodeText(moduleScriptNode, newUrlInfo.content)
190
+ setHtmlNodeAttributes(moduleScriptNode, {
191
+ "type": undefined,
192
+ "generated-by": "jsenv:as_js_classic_html",
193
+ })
194
+ })
195
+ }
196
+ })
197
+ if (shouldTransformScriptTypeModule) {
198
+ preloadAsScriptNodes.forEach((preloadAsScriptNode) => {
199
+ const href = getHtmlNodeAttribute(preloadAsScriptNode, "href")
200
+ const reference = urlInfo.references.find(
201
+ (ref) =>
202
+ ref.generatedSpecifier === href &&
203
+ ref.type === "link_href" &&
204
+ ref.expectedType === undefined,
205
+ )
206
+ const expectedScriptType = jsModuleUrls.includes(reference.url)
207
+ ? "module"
208
+ : "classic"
209
+ if (expectedScriptType === "module") {
210
+ actions.push(async () => {
211
+ // reference modified by <script type="module"> conversion
212
+ let newReference
213
+ if (reference.next) {
214
+ newReference = reference.next
215
+ } else {
216
+ // when the url is not referenced by a <script type="module">
217
+ // we assume we want to preload "classic" but it might not be the case
218
+ // but it's unlikely to happen and people should use "modulepreload" in that case anyway
219
+ ;[newReference] = await getReferenceAsJsClassic(reference)
220
+ }
221
+ setHtmlNodeAttributes(preloadAsScriptNode, {
222
+ href: newReference.generatedSpecifier,
223
+ crossorigin: undefined,
224
+ })
225
+ })
226
+ }
227
+ })
228
+ modulePreloadNodes.forEach((modulePreloadNode) => {
229
+ const href = getHtmlNodeAttribute(modulePreloadNode, "href")
230
+ const reference = urlInfo.references.find(
231
+ (ref) =>
232
+ ref.generatedSpecifier === href &&
233
+ ref.type === "link_href" &&
234
+ ref.expectedType === "js_module",
235
+ )
236
+ actions.push(async () => {
237
+ let newReference
238
+ if (reference.next) {
239
+ newReference = reference.next
240
+ } else {
241
+ ;[newReference] = await getReferenceAsJsClassic(reference)
242
+ }
243
+ setHtmlNodeAttributes(modulePreloadNode, {
244
+ rel: "preload",
245
+ as: "script",
246
+ href: newReference.generatedSpecifier,
247
+ })
248
+ })
249
+ })
250
+ }
251
+
252
+ if (actions.length === 0) {
253
+ return null
254
+ }
255
+ await Promise.all(actions.map((action) => action()))
256
+ if (systemJsInjection) {
257
+ const needsSystemJs = convertedUrls.some(
258
+ (convertedUrl) =>
259
+ context.urlGraph.getUrlInfo(convertedUrl).data.jsClassicFormat ===
260
+ "system",
261
+ )
262
+ if (needsSystemJs) {
263
+ const [systemJsReference] = context.referenceUtils.inject({
264
+ type: "script_src",
265
+ expectedType: "js_classic",
266
+ specifier: systemJsClientFileUrl,
267
+ })
268
+ injectScriptNodeAsEarlyAsPossible(
269
+ htmlAst,
270
+ createHtmlNode({
271
+ "tagName": "script",
272
+ "src": systemJsReference.generatedSpecifier,
273
+ "injected-by": "jsenv:as_js_classic_html",
274
+ }),
275
+ )
276
+ }
277
+ }
278
+ return stringifyHtmlAst(htmlAst)
279
+ },
280
+ },
281
+ }
282
+ }
@@ -0,0 +1,55 @@
1
+ import { injectQueryParams } from "@jsenv/urls"
2
+
3
+ export const jsenvPluginAsJsClassicWorkers = ({
4
+ generateJsClassicFilename,
5
+ }) => {
6
+ const updateReference = (reference) => {
7
+ reference.filename = generateJsClassicFilename(reference.url)
8
+ reference.mutation = (magicSource) => {
9
+ magicSource.replace({
10
+ start: reference.typePropertyNode.value.start,
11
+ end: reference.typePropertyNode.value.end,
12
+ replacement: JSON.stringify("classic"),
13
+ })
14
+ }
15
+ reference.expectedType = "js_classic"
16
+ return injectQueryParams(reference.url, {
17
+ as_js_classic: "",
18
+ })
19
+ }
20
+
21
+ return {
22
+ name: "jsenv:as_js_classic_workers",
23
+ appliesDuring: "*",
24
+ redirectUrl: {
25
+ js_url_specifier: (reference, context) => {
26
+ if (reference.expectedType !== "js_module") {
27
+ return null
28
+ }
29
+ if (reference.expectedSubtype === "worker") {
30
+ if (context.isSupportedOnCurrentClients("worker_type_module")) {
31
+ return null
32
+ }
33
+ return updateReference(reference)
34
+ }
35
+ if (reference.expectedSubtype === "service_worker") {
36
+ if (
37
+ context.isSupportedOnCurrentClients("service_worker_type_module")
38
+ ) {
39
+ return null
40
+ }
41
+ return updateReference(reference)
42
+ }
43
+ if (reference.expectedSubtype === "shared_worker") {
44
+ if (
45
+ context.isSupportedOnCurrentClients("shared_worker_type_module")
46
+ ) {
47
+ return null
48
+ }
49
+ return updateReference(reference)
50
+ }
51
+ return null
52
+ },
53
+ },
54
+ }
55
+ }
@@ -1,6 +1,5 @@
1
1
  import { pathToFileURL } from "node:url"
2
-
3
- import { injectImport } from "@jsenv/utils/js_ast/babel_utils.js"
2
+ import { injectJsImport } from "@jsenv/ast"
4
3
 
5
4
  export const babelPluginGlobalThisAsJsenvImport = (
6
5
  babel,
@@ -23,7 +22,7 @@ export const babelPluginGlobalThisAsJsenvImport = (
23
22
  const { node } = path
24
23
  // we should do this once, tree shaking will remote it but still
25
24
  if (node.name === "globalThis") {
26
- injectImport({
25
+ injectJsImport({
27
26
  programPath: path.scope.getProgramParent().path,
28
27
  from: getImportSpecifier(globalThisClientFileUrl),
29
28
  sideEffect: true,
@@ -1,10 +1,9 @@
1
1
  import { pathToFileURL } from "node:url"
2
-
3
- import { injectImport } from "@jsenv/utils/js_ast/babel_utils.js"
2
+ import { injectJsImport } from "@jsenv/ast"
4
3
  import {
5
4
  getBabelHelperFileUrl,
6
5
  babelHelperNameFromUrl,
7
- } from "@jsenv/babel-plugins/main.js"
6
+ } from "@jsenv/babel-plugins"
8
7
 
9
8
  // named import approach found here:
10
9
  // https://github.com/rollup/rollup-plugin-babel/blob/18e4232a450f320f44c651aa8c495f21c74d59ac/src/helperPlugin.js#L1
@@ -37,7 +36,7 @@ export const babelPluginBabelHelpersAsJsenvImports = (
37
36
  return undefined
38
37
  }
39
38
  const babelHelperImportSpecifier = getBabelHelperFileUrl(name)
40
- const helper = injectImport({
39
+ const helper = injectJsImport({
41
40
  programPath: file.path,
42
41
  from: getImportSpecifier(babelHelperImportSpecifier),
43
42
  nameHint: `_${name}`,
@@ -1,16 +1,15 @@
1
- import { getBabelHelperFileUrl, requireBabelPlugin } from "@jsenv/babel-plugins"
1
+ import { getBabelHelperFileUrl } from "@jsenv/babel-plugins"
2
+ import { requireBabelPlugin } from "../require_babel_plugin.js"
2
3
  import { babelPluginCompatMap } from "./babel_plugins_compatibility.js"
3
4
 
4
5
  export const getBaseBabelPluginStructure = ({
5
6
  url,
6
- isSupportedOnRuntime,
7
- usesTopLevelAwait,
8
- // // https://github.com/rpetrich/babel-plugin-transform-async-to-promises/blob/92755ff8c943c97596523e586b5fa515c2e99326/async-to-promises.ts#L55
9
- topLevelAwait = "simple",
10
- isJsModule,
7
+ isSupported,
8
+ // isJsModule,
9
+ // getImportSpecifier,
11
10
  }) => {
12
11
  const isBabelPluginNeeded = (babelPluginName) => {
13
- return !isSupportedOnRuntime(babelPluginCompatMap[babelPluginName])
12
+ return !isSupported(babelPluginCompatMap[babelPluginName])
14
13
  }
15
14
 
16
15
  const babelPluginStructure = {}
@@ -37,21 +36,19 @@ export const getBaseBabelPluginStructure = ({
37
36
  babelPluginStructure["proposal-unicode-property-regex"] =
38
37
  requireBabelPlugin("@babel/plugin-proposal-unicode-property-regex")
39
38
  }
40
- if (
41
- isJsModule &&
42
- usesTopLevelAwait &&
43
- !isSupportedOnRuntime("top_level_await")
44
- ) {
39
+ if (isBabelPluginNeeded("transform-async-to-promises")) {
45
40
  babelPluginStructure["transform-async-to-promises"] = [
46
41
  requireBabelPlugin("babel-plugin-transform-async-to-promises"),
47
42
  {
48
- topLevelAwait,
43
+ topLevelAwait: "ignore", // will be handled by "jsenv:top_level_await" plugin
44
+ externalHelpers: false,
45
+ // enable once https://github.com/rpetrich/babel-plugin-transform-async-to-promises/pull/83
46
+ // externalHelpers: isJsModule,
47
+ // externalHelpersPath: isJsModule ? getImportSpecifier(
48
+ // "babel-plugin-transform-async-to-promises/helpers.mjs",
49
+ // ) : null
49
50
  },
50
51
  ]
51
- } else if (isBabelPluginNeeded("transform-async-to-promises")) {
52
- babelPluginStructure["transform-async-to-promises"] = requireBabelPlugin(
53
- "babel-plugin-transform-async-to-promises",
54
- )
55
52
  }
56
53
  if (isBabelPluginNeeded("transform-arrow-functions")) {
57
54
  babelPluginStructure["transform-arrow-functions"] = requireBabelPlugin(