@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
@@ -1,14 +1,16 @@
1
+ import { timeStart } from "@jsenv/server"
2
+
1
3
  export const createPluginController = ({
2
4
  plugins,
3
5
  scenario,
4
6
  hooks = [
5
- "resolve",
6
- "normalize",
7
- "load",
8
- "transform",
9
- "transformReferencedUrl",
10
- "formatReferencedUrl",
11
- "finalize",
7
+ "resolveUrl",
8
+ "redirectUrl",
9
+ "fetchUrlContent",
10
+ "transformUrlContent",
11
+ "transformUrlSearchParams",
12
+ "formatUrl",
13
+ "finalizeUrlContent",
12
14
  "cooked",
13
15
  "destroy",
14
16
  ],
@@ -47,7 +49,13 @@ export const createPluginController = ({
47
49
  }
48
50
  currentPlugin = hook.plugin
49
51
  currentHookName = hook.hookName
52
+ const timeEnd = timeStart(
53
+ `${currentHookName}-${currentPlugin.name.replace("jsenv:", "")}`,
54
+ )
50
55
  let valueReturned = hookFn(info, context)
56
+ if (info.timing) {
57
+ Object.assign(info.timing, timeEnd())
58
+ }
51
59
  valueReturned = assertAndNormalizeReturnValue(hook.hookName, valueReturned)
52
60
  currentPlugin = null
53
61
  currentHookName = null
@@ -60,7 +68,13 @@ export const createPluginController = ({
60
68
  }
61
69
  currentPlugin = hook.plugin
62
70
  currentHookName = hook.hookName
71
+ const timeEnd = timeStart(
72
+ `${currentHookName}-${currentPlugin.name.replace("jsenv:", "")}`,
73
+ )
63
74
  let valueReturned = await hookFn(info, context)
75
+ if (info.timing) {
76
+ Object.assign(info.timing, timeEnd())
77
+ }
64
78
  valueReturned = assertAndNormalizeReturnValue(hook.hookName, valueReturned)
65
79
  currentPlugin = null
66
80
  currentHookName = null
@@ -99,6 +113,9 @@ export const createPluginController = ({
99
113
  }
100
114
  const callAsyncHooksUntil = (hookName, info, context) => {
101
115
  const hooks = hookGroups[hookName]
116
+ if (hooks.length === 0) {
117
+ return null
118
+ }
102
119
  return new Promise((resolve, reject) => {
103
120
  const visit = (index) => {
104
121
  if (index >= hooks.length) {
@@ -142,15 +159,35 @@ const flattenAndFilterPlugins = (pluginsRaw, { scenario }) => {
142
159
  return
143
160
  }
144
161
  if (typeof pluginEntry === "object" && pluginEntry !== null) {
162
+ if (!pluginEntry.name) {
163
+ pluginEntry.name = "anonymous"
164
+ }
145
165
  const { appliesDuring } = pluginEntry
146
166
  if (appliesDuring === undefined) {
147
167
  console.warn(`"appliesDuring" is undefined on ${pluginEntry.name}`)
168
+ return
148
169
  }
149
170
  if (appliesDuring === "*") {
150
171
  plugins.push(pluginEntry)
151
172
  return
152
173
  }
153
- if (appliesDuring && appliesDuring[scenario]) {
174
+ if (typeof appliesDuring === "string") {
175
+ if (!["dev", "build", "test"].includes(appliesDuring)) {
176
+ throw new Error(
177
+ `"appliesDuring" must be "dev", "test" or "build", got ${appliesDuring}`,
178
+ )
179
+ }
180
+ if (appliesDuring === scenario) {
181
+ plugins.push(pluginEntry)
182
+ }
183
+ return
184
+ }
185
+ if (typeof appliesDuring !== "object") {
186
+ throw new Error(
187
+ `"appliesDuring" must be an object or a string, got ${appliesDuring}`,
188
+ )
189
+ }
190
+ if (appliesDuring[scenario]) {
154
191
  plugins.push(pluginEntry)
155
192
  return
156
193
  }
@@ -203,7 +240,7 @@ const assertAndNormalizeReturnValue = (hookName, returnValue) => {
203
240
  const returnValueAssertions = [
204
241
  {
205
242
  name: "url_assertion",
206
- appliesTo: ["resolve", "redirect"],
243
+ appliesTo: ["resolveUrl", "redirectUrl"],
207
244
  assertion: (valueReturned) => {
208
245
  if (valueReturned instanceof URL) {
209
246
  return valueReturned.href
@@ -218,14 +255,22 @@ const returnValueAssertions = [
218
255
  },
219
256
  {
220
257
  name: "content_assertion",
221
- appliesTo: ["load", "transform", "finalize"],
258
+ appliesTo: [
259
+ "fetchUrlContent",
260
+ "transformUrlContent",
261
+ "finalizeUrlContent",
262
+ "optimizeUrlContent",
263
+ ],
222
264
  assertion: (valueReturned) => {
223
265
  if (typeof valueReturned === "string" || Buffer.isBuffer(valueReturned)) {
224
266
  return { content: valueReturned }
225
267
  }
226
268
  if (typeof valueReturned === "object") {
227
- const { content } = valueReturned
228
- if (typeof content !== "string" && !Buffer.isBuffer(content)) {
269
+ const { shouldHandle, content, body } = valueReturned
270
+ if (shouldHandle === false) {
271
+ return undefined
272
+ }
273
+ if (typeof content !== "string" && !Buffer.isBuffer(content) && !body) {
229
274
  throw new Error(
230
275
  `Unexpected "content" returned by plugin: it must be a string or a buffer; got ${content}`,
231
276
  )
@@ -0,0 +1,91 @@
1
+ import { jsenvPluginUrlAnalysis } from "../plugins/url_analysis/jsenv_plugin_url_analysis.js"
2
+ import { jsenvPluginLeadingSlash } from "./leading_slash/jsenv_plugin_leading_slash.js"
3
+ import { jsenvPluginImportmap } from "./importmap/jsenv_plugin_importmap.js"
4
+ import { jsenvPluginUrlResolution } from "./url_resolution/jsenv_plugin_url_resolution.js"
5
+ import { jsenvPluginNodeEsmResolution } from "./node_esm_resolution/jsenv_plugin_node_esm_resolution.js"
6
+ import { jsenvPluginUrlVersion } from "./url_version/jsenv_plugin_url_version.js"
7
+ import { jsenvPluginFileUrls } from "./file_urls/jsenv_plugin_file_urls.js"
8
+ import { jsenvPluginHttpUrls } from "./http_urls/jsenv_plugin_http_urls.js"
9
+ import { jsenvPluginInline } from "./inline/jsenv_plugin_inline.js"
10
+ import { jsenvPluginHtmlSupervisor } from "./html_supervisor/jsenv_plugin_html_supervisor.js"
11
+ import { jsenvPluginCommonJsGlobals } from "./commonjs_globals/jsenv_plugin_commonjs_globals.js"
12
+ import { jsenvPluginImportMetaScenarios } from "./import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js"
13
+ import { jsenvPluginTranspilation } from "./transpilation/jsenv_plugin_transpilation.js"
14
+ import { jsenvPluginNodeRuntime } from "./node_runtime/jsenv_plugin_node_runtime.js"
15
+ // build only
16
+ import { jsenvPluginBundling } from "./bundling/jsenv_plugin_bundling.js"
17
+ import { jsenvPluginMinification } from "./minification/jsenv_plugin_minification.js"
18
+ // autoreload
19
+ import { jsenvPluginImportMetaHot } from "./import_meta_hot/jsenv_plugin_import_meta_hot.js"
20
+ import { jsenvPluginAutoreload } from "./autoreload/jsenv_plugin_autoreload.js"
21
+ import { jsenvPluginCacheControl } from "./cache_control/jsenv_plugin_cache_control.js"
22
+
23
+ export const getCorePlugins = ({
24
+ rootDirectoryUrl,
25
+ urlGraph,
26
+ scenario,
27
+ runtimeCompat,
28
+
29
+ urlAnalysis = {},
30
+ htmlSupervisor,
31
+ nodeEsmResolution,
32
+ fileSystemMagicResolution,
33
+ directoryReferenceAllowed,
34
+ transpilation = true,
35
+ minification = false,
36
+ bundling = false,
37
+
38
+ clientAutoreload = false,
39
+ clientFileChangeCallbackList,
40
+ clientFilesPruneCallbackList,
41
+ } = {}) => {
42
+ if (htmlSupervisor === true) {
43
+ htmlSupervisor = {}
44
+ }
45
+ if (nodeEsmResolution === true) {
46
+ nodeEsmResolution = {}
47
+ }
48
+ return [
49
+ jsenvPluginUrlAnalysis({ rootDirectoryUrl, ...urlAnalysis }),
50
+ jsenvPluginTranspilation(transpilation),
51
+ ...(htmlSupervisor ? [jsenvPluginHtmlSupervisor(htmlSupervisor)] : []), // before inline as it turns inline <script> into <script src>
52
+ jsenvPluginImportmap(),
53
+ // before node esm to handle bare specifiers
54
+ // + before node esm to handle importmap before inline content
55
+ jsenvPluginInline(), // before "file urls" to resolve and load inline urls
56
+ jsenvPluginFileUrls({
57
+ directoryReferenceAllowed,
58
+ ...fileSystemMagicResolution,
59
+ }),
60
+ jsenvPluginHttpUrls(),
61
+ jsenvPluginLeadingSlash(),
62
+ // before url resolution to handle "js_import_export" resolution
63
+ jsenvPluginNodeEsmResolution({
64
+ rootDirectoryUrl,
65
+ runtimeCompat,
66
+ ...nodeEsmResolution,
67
+ }),
68
+ jsenvPluginUrlResolution(),
69
+ jsenvPluginUrlVersion(),
70
+ jsenvPluginCommonJsGlobals(),
71
+ jsenvPluginImportMetaScenarios(),
72
+
73
+ jsenvPluginNodeRuntime({ runtimeCompat }),
74
+ jsenvPluginBundling(bundling),
75
+ jsenvPluginMinification(minification),
76
+
77
+ jsenvPluginImportMetaHot(),
78
+ ...(clientAutoreload
79
+ ? [
80
+ jsenvPluginAutoreload({
81
+ rootDirectoryUrl,
82
+ urlGraph,
83
+ scenario,
84
+ clientFileChangeCallbackList,
85
+ clientFilesPruneCallbackList,
86
+ }),
87
+ ]
88
+ : []),
89
+ jsenvPluginCacheControl(),
90
+ ]
91
+ }
@@ -0,0 +1,429 @@
1
+ /*
2
+ * This file is a modified version of https://github.com/systemjs/systemjs/blob/main/dist/s.js
3
+ * with the following changes:
4
+ *
5
+ * - Code can use aync/await, const, ... because an es5 version of this file is generated
6
+ * - Can use document.currentScript because we don't support IE
7
+ * - auto import inline System.register
8
+ * - auto import first System.register in web workers
9
+ * - queing events in web workers
10
+ * - no support for importmap because jsenv don't need it
11
+ */
12
+
13
+ ;(function () {
14
+ /* eslint-env browser */
15
+ /* globals self */
16
+
17
+ const loadRegistry = Object.create(null)
18
+ const registerRegistry = Object.create(null)
19
+ let inlineScriptCount = 0
20
+ const System = {}
21
+
22
+ const hasDocument = typeof document === "object"
23
+ const envGlobal = self
24
+ const isWorker =
25
+ !hasDocument &&
26
+ typeof envGlobal.WorkerGlobalScope === "function" &&
27
+ envGlobal instanceof envGlobal.WorkerGlobalScope
28
+ const isServiceWorker = isWorker && typeof self.skipWaiting === "function"
29
+ envGlobal.System = System
30
+
31
+ let baseUrl = envGlobal.location.href.split("#")[0].split("?")[0]
32
+ const lastSlashIndex = baseUrl.lastIndexOf("/")
33
+ if (lastSlashIndex !== -1) {
34
+ baseUrl = baseUrl.slice(0, lastSlashIndex + 1)
35
+ }
36
+
37
+ const resolveUrl = (specifier, baseUrl) => new URL(specifier, baseUrl).href
38
+
39
+ if (hasDocument) {
40
+ const baseElement = document.querySelector("base[href]")
41
+ if (baseElement) {
42
+ baseUrl = baseElement.href
43
+ }
44
+ System.register = (deps, declare) => {
45
+ if (!document.currentScript) {
46
+ throw new Error("unexpected call to System.register (document.currentScript is undefined)")
47
+ }
48
+ if (document.currentScript.__s__) {
49
+ registerRegistry[document.currentScript.src] = [deps, declare]
50
+ return null
51
+ }
52
+ const url =
53
+ document.currentScript.src ||
54
+ `${window.location.href}__inline_script__${++inlineScriptCount}`
55
+ registerRegistry[url] = [deps, declare]
56
+ return _import(url)
57
+ }
58
+ System.instantiate = (url) => {
59
+ const script = createScript(url)
60
+ return new Promise(function (resolve, reject) {
61
+ let lastWindowErrorUrl
62
+ let lastWindowError
63
+ const windowErrorCallback = (event) => {
64
+ lastWindowErrorUrl = event.filename
65
+ lastWindowError = event.error
66
+ }
67
+ window.addEventListener("error", windowErrorCallback)
68
+ script.addEventListener("error", () => {
69
+ window.removeEventListener("error", windowErrorCallback)
70
+ reject(`An error occured while loading url with <script> for ${url}`)
71
+ })
72
+ script.addEventListener("load", () => {
73
+ window.removeEventListener("error", windowErrorCallback)
74
+ document.head.removeChild(script)
75
+ // Note that if an error occurs that isn't caught by this if statement,
76
+ // that getRegister will return null and a "did not instantiate" error will be thrown.
77
+ if (lastWindowErrorUrl === url) {
78
+ reject(lastWindowError)
79
+ } else {
80
+ resolve()
81
+ }
82
+ })
83
+ document.head.appendChild(script)
84
+ })
85
+ }
86
+ const createScript = (url) => {
87
+ const script = document.createElement("script")
88
+ script.async = true
89
+ // Only add cross origin for actual cross origin
90
+ // this is because Safari triggers for all
91
+ // - https://bugs.webkit.org/show_bug.cgi?id=171566
92
+ if (url.indexOf(`${self.location.origin}/`)) {
93
+ script.crossOrigin = "anonymous"
94
+ }
95
+ script.__s__ = true
96
+ script.src = url
97
+ return script
98
+ }
99
+ }
100
+ if (isWorker) {
101
+ /*
102
+ * SystemJs loads X files before executing the worker/service worker main file
103
+ * It mean events dispatched during this phase could be missed
104
+ * A warning like the one below is displayed in chrome devtools:
105
+ * "Event handler of 'install' event must be added on the initial evaluation of worker script"
106
+ * To fix that code below listen for these events early and redispatch them later
107
+ * once the worker file is executed (the listeners are installed)
108
+ */
109
+ const firstImportCallbacks = []
110
+ if (isServiceWorker) {
111
+ // for service worker there is more events to listen
112
+ // and, to get rid of the warning, we override self.addEventListener
113
+ const eventsToCatch = ["message", "install", "activate", "fetch"]
114
+ const eventCallbackProxies = {}
115
+ const firstImportPromise = new Promise((resolve) => {
116
+ firstImportCallbacks.push(resolve)
117
+ })
118
+ eventsToCatch.forEach((eventName) => {
119
+ const eventsToDispatch = []
120
+ const eventCallback = (event) => {
121
+ const eventCallbackProxy = eventCallbackProxies[event.type]
122
+ if (eventCallbackProxy) {
123
+ eventCallbackProxy(event)
124
+ } else {
125
+ eventsToDispatch.push(event)
126
+ event.waitUntil(firstImportPromise)
127
+ }
128
+ }
129
+ self.addEventListener(eventName, eventCallback)
130
+ firstImportCallbacks.push(() => {
131
+ if (eventsToDispatch.length) {
132
+ const eventCallbackProxy =
133
+ eventCallbackProxies[eventsToDispatch[0].type]
134
+ if (eventCallbackProxy) {
135
+ eventsToDispatch.forEach((event) => {
136
+ eventCallbackProxy(event)
137
+ })
138
+ }
139
+ eventsToDispatch.length = 0
140
+ }
141
+ })
142
+ })
143
+
144
+ const addEventListener = self.addEventListener
145
+ self.addEventListener = function (eventName, callback, options) {
146
+ if (eventsToCatch.indexOf(eventName) > -1) {
147
+ eventCallbackProxies[eventName] = callback
148
+ return null
149
+ }
150
+ return addEventListener.call(self, eventName, callback, options)
151
+ }
152
+ } else {
153
+ const eventsToCatch = ["message"]
154
+ eventsToCatch.forEach((eventName) => {
155
+ var eventQueue = []
156
+ var eventCallback = (event) => {
157
+ eventQueue.push(event)
158
+ }
159
+ self.addEventListener(eventName, eventCallback)
160
+ firstImportCallbacks.push(() => {
161
+ self.removeEventListener(eventName, eventCallback)
162
+ eventQueue.forEach(function (event) {
163
+ self.dispatchEvent(event)
164
+ })
165
+ eventQueue.length = 0
166
+ })
167
+ })
168
+ }
169
+
170
+ System.register = async (deps, declare) => {
171
+ System.register = () => {
172
+ throw new Error("unexpected call to System.register (called outside url instantiation)")
173
+ }
174
+ const url = self.location.href
175
+ registerRegistry[url] = [deps, declare]
176
+ const namespace = await _import(url)
177
+ firstImportCallbacks.forEach((firstImportCallback) => {
178
+ firstImportCallback()
179
+ })
180
+ firstImportCallbacks.length = 0
181
+ return namespace
182
+ }
183
+ System.instantiate = async (url) => {
184
+ const response = await self.fetch(url, {
185
+ credentials: "same-origin",
186
+ })
187
+ if (!response.ok) {
188
+ throw Error(`Failed to fetch module at ${url}`)
189
+ }
190
+ let source = await response.text()
191
+ if (source.indexOf("//# sourceURL=") < 0) {
192
+ source += `\n//# sourceURL=${url}`
193
+ }
194
+ const register = System.register
195
+ System.register = (deps, declare) => {
196
+ registerRegistry[url] = [deps, declare]
197
+ }
198
+ ;(0, self.eval)(source)
199
+ System.register = register
200
+ }
201
+ }
202
+
203
+ const _import = (specifier, parentUrl) => {
204
+ const url = resolveUrl(specifier, parentUrl)
205
+ const load = getOrCreateLoad(url, parentUrl)
206
+ return load.completionPromise || startExecution(load)
207
+ }
208
+
209
+ const getOrCreateLoad = (url, firstParentUrl) => {
210
+ const existingLoad = loadRegistry[url]
211
+ if (existingLoad) {
212
+ return existingLoad
213
+ }
214
+
215
+ const load = {
216
+ url,
217
+ }
218
+ loadRegistry[url] = load
219
+
220
+ const importerSetters = []
221
+ load.importerSetters = importerSetters
222
+
223
+ const namespace = createNamespace()
224
+ load.namespace = namespace
225
+
226
+ load.instantiatePromise = (async () => {
227
+ try {
228
+ let registration = registerRegistry[url]
229
+ if (!registration) {
230
+ const instantiateReturnValue = System.instantiate(url, firstParentUrl)
231
+ if (instantiateReturnValue) {
232
+ await instantiateReturnValue
233
+ }
234
+ registration = registerRegistry[url]
235
+ }
236
+ if (!registration) {
237
+ throw new Error(`System.register() not called after executing ${url}`)
238
+ }
239
+
240
+ const _export = (firstArg, secondArg) => {
241
+ load.hoistedExports = true
242
+ let changed = false
243
+ if (typeof firstArg === "string") {
244
+ const name = firstArg
245
+ const value = secondArg
246
+ if (!(name in namespace) || namespace[name] !== value) {
247
+ namespace[name] = value
248
+ changed = true
249
+ }
250
+ } else {
251
+ Object.keys(firstArg).forEach((name) => {
252
+ const value = firstArg[name]
253
+ if (!(name in namespace) || namespace[name] !== value) {
254
+ namespace[name] = value
255
+ changed = true
256
+ }
257
+ })
258
+ if (firstArg && firstArg.__esModule) {
259
+ namespace.__esModule = firstArg.__esModule
260
+ }
261
+ }
262
+ if (changed) {
263
+ importerSetters.forEach((importerSetter) => {
264
+ if (importerSetter) {
265
+ importerSetter(namespace)
266
+ }
267
+ })
268
+ }
269
+ return secondArg
270
+ }
271
+ const [deps, declare] = registration
272
+ const { setters, execute = () => {} } = declare(_export, {
273
+ import: (importId) => _import(importId, url),
274
+ meta: createMeta(url),
275
+ })
276
+ load.deps = deps
277
+ load.setters = setters
278
+ load.execute = execute
279
+ } catch (e) {
280
+ load.error = e
281
+ load.execute = null
282
+ }
283
+ })()
284
+
285
+ load.linkPromise = (async () => {
286
+ await load.instantiatePromise
287
+ const dependencyLoads = await Promise.all(
288
+ load.deps.map(async (dep, index) => {
289
+ const setter = load.setters[index]
290
+ const dependencyUrl = resolveUrl(dep, url)
291
+ const dependencyLoad = getOrCreateLoad(dependencyUrl, url)
292
+ if (dependencyLoad.instantiatePromise) {
293
+ await dependencyLoad.instantiatePromise
294
+ }
295
+ if (setter) {
296
+ dependencyLoad.importerSetters.push(setter)
297
+ if (
298
+ dependencyLoad.hoistedExports ||
299
+ !dependencyLoad.instantiatePromise
300
+ ) {
301
+ setter(dependencyLoad.namespace)
302
+ }
303
+ }
304
+ return dependencyLoad
305
+ }),
306
+ )
307
+ load.dependencyLoads = dependencyLoads
308
+ })()
309
+
310
+ return load
311
+ }
312
+
313
+ const startExecution = async (load) => {
314
+ load.completionPromise = (async () => {
315
+ await instantiateAll(load, load, {})
316
+ await postOrderExec(load, {})
317
+ return load.namespace
318
+ })()
319
+ return load.completionPromise
320
+ }
321
+
322
+ const instantiateAll = async (load, parent, loaded) => {
323
+ if (loaded[load.url]) {
324
+ return
325
+ }
326
+ loaded[load.url] = true
327
+ try {
328
+ if (load.linkPromise) {
329
+ // load.linkPromise is null once instantiated
330
+ await load.linkPromise
331
+ }
332
+ // if (!load.parent || !load.parent.execute) {
333
+ // load.parent = parent
334
+ // }
335
+ await Promise.all(
336
+ load.dependencyLoads.map((dependencyLoad) => {
337
+ return instantiateAll(dependencyLoad, parent, loaded)
338
+ }),
339
+ )
340
+ } catch (error) {
341
+ if (load.error) {
342
+ throw error
343
+ }
344
+ load.execute = null
345
+ throw error
346
+ }
347
+ }
348
+
349
+ const postOrderExec = async (load, seen) => {
350
+ if (seen[load.url]) {
351
+ return
352
+ }
353
+ seen[load.url] = true
354
+ if (!load.execute) {
355
+ if (load.error) {
356
+ throw load.error
357
+ }
358
+ if (load.executePromise) {
359
+ await load.executePromise
360
+ }
361
+ return
362
+ }
363
+
364
+ // deps execute first, unless circular
365
+ const depLoadPromises = []
366
+ load.dependencyLoads.forEach((dependencyLoad) => {
367
+ try {
368
+ const depLoadPromise = postOrderExec(dependencyLoad, seen)
369
+ if (depLoadPromise) {
370
+ depLoadPromises.push(depLoadPromise)
371
+ }
372
+ } catch (err) {
373
+ load.execute = null
374
+ load.error = err
375
+ throw err
376
+ }
377
+ })
378
+ if (depLoadPromises.length) {
379
+ await Promise.all(depLoadPromises)
380
+ }
381
+
382
+ try {
383
+ const executeReturnValue = load.execute.call(nullContext)
384
+ if (executeReturnValue) {
385
+ load.executePromise = executeReturnValue.then(
386
+ () => {
387
+ load.executePromise = null
388
+ load.completionPromise = load.namespace
389
+ },
390
+ (error) => {
391
+ load.executePromise = null
392
+ load.error = error
393
+ throw error
394
+ },
395
+ )
396
+ return
397
+ }
398
+ load.instantiatePromise = null
399
+ load.linkPromise = null
400
+ load.completionPromise = load.namespace
401
+ } catch (error) {
402
+ load.error = error
403
+ throw error
404
+ } finally {
405
+ load.execute = null
406
+ }
407
+ }
408
+
409
+ // the closest we can get to call(undefined)
410
+ const nullContext = Object.freeze(Object.create(null))
411
+
412
+ const createMeta = (url) => {
413
+ return {
414
+ url,
415
+ resolve: (id, parentUrl) => resolveUrl(id, parentUrl),
416
+ }
417
+ }
418
+
419
+ const createNamespace =
420
+ typeof Symbol !== "undefined" && Symbol.toStringTag
421
+ ? () => {
422
+ const namespace = Object.create(null)
423
+ Object.defineProperty(namespace, Symbol.toStringTag, {
424
+ value: "Module",
425
+ })
426
+ return namespace
427
+ }
428
+ : () => Object.create(null)
429
+ })();
@@ -0,0 +1,47 @@
1
+ import babelParser from "@babel/parser"
2
+
3
+ export const babelPluginTransformImportMetaUrl = (babel) => {
4
+ return {
5
+ name: "transform-import-meta-url",
6
+ visitor: {
7
+ Program: (programPath) => {
8
+ const currentUrlIdentifier =
9
+ programPath.scope.generateUidIdentifier("currentUrl")
10
+ let used = false
11
+
12
+ programPath.traverse({
13
+ MemberExpression: (path) => {
14
+ const node = path.node
15
+ if (
16
+ node.object.type === "MetaProperty" &&
17
+ node.object.property.name === "meta" &&
18
+ node.property.name === "url"
19
+ ) {
20
+ // const node = babel.types.valueToNode(10)
21
+ const identifier = babel.types.identifier(
22
+ currentUrlIdentifier.name,
23
+ )
24
+ const expressionStatement =
25
+ babel.types.expressionStatement(identifier)
26
+ path.replaceWith(expressionStatement)
27
+ used = true
28
+ }
29
+ },
30
+ })
31
+ if (used) {
32
+ const ast = generateExpressionAst(`document.currentScript.src`)
33
+ programPath.scope.push({
34
+ id: currentUrlIdentifier,
35
+ init: ast,
36
+ })
37
+ }
38
+ },
39
+ },
40
+ }
41
+ }
42
+
43
+ const generateExpressionAst = (expression, options) => {
44
+ const { parseExpression } = babelParser
45
+ const ast = parseExpression(expression, options)
46
+ return ast
47
+ }