@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,18 @@
1
- import { composeTwoSourcemaps } from "@jsenv/utils/sourcemap/sourcemap_composition_v3.js"
1
+ import { pathToFileURL } from "node:url"
2
+ import { bufferToEtag } from "@jsenv/filesystem"
3
+ import { urlToRelativeUrl, isFileSystemPath } from "@jsenv/urls"
2
4
  import {
5
+ composeTwoSourcemaps,
3
6
  SOURCEMAP,
4
- sourcemapToBase64Url,
5
- generateSourcemapUrl,
6
- } from "@jsenv/utils/sourcemap/sourcemap_utils.js"
7
+ generateSourcemapFileUrl,
8
+ generateSourcemapDataUrl,
9
+ } from "@jsenv/sourcemap"
7
10
 
8
11
  export const createUrlInfoTransformer = ({
9
12
  logger,
10
13
  sourcemaps,
11
- sourcemapsSources,
14
+ sourcemapsSourcesContent,
15
+ sourcemapsRelativeSources,
12
16
  urlGraph,
13
17
  injectSourcemapPlaceholder,
14
18
  foundSourcemap,
@@ -19,21 +23,33 @@ export const createUrlInfoTransformer = ({
19
23
  sourcemaps === "programmatic"
20
24
 
21
25
  const normalizeSourcemap = (urlInfo, sourcemap) => {
26
+ let { sources } = sourcemap
27
+ if (sources) {
28
+ sources = sources.map((source) => {
29
+ if (source && isFileSystemPath(source)) {
30
+ return String(pathToFileURL(source))
31
+ }
32
+ return source
33
+ })
34
+ }
22
35
  const wantSourcesContent =
23
36
  // for inline content (<script> insdide html)
24
37
  // chrome won't be able to fetch the file as it does not exists
25
38
  // so sourcemap must contain sources
26
- urlInfo.isInline || sourcemapsSources
27
- if (sourcemap.sources && sourcemap.sources.length > 1) {
28
- sourcemap.sources = sourcemap.sources.map(
29
- (source) => new URL(source, urlInfo.data.rawUrl || urlInfo.url).href,
39
+ sourcemapsSourcesContent ||
40
+ urlInfo.isInline ||
41
+ (sources &&
42
+ sources.some((source) => !source || !source.startsWith("file:")))
43
+ if (sources && sources.length > 1) {
44
+ sourcemap.sources = sources.map(
45
+ (source) => new URL(source, urlInfo.originalUrl).href,
30
46
  )
31
47
  if (!wantSourcesContent) {
32
48
  sourcemap.sourcesContent = undefined
33
49
  }
34
50
  return sourcemap
35
51
  }
36
- sourcemap.sources = [urlInfo.data.rawUrl || urlInfo.url]
52
+ sourcemap.sources = [urlInfo.originalUrl]
37
53
  sourcemap.sourcesContent = [urlInfo.originalContent]
38
54
  if (!wantSourcesContent) {
39
55
  sourcemap.sourcesContent = undefined
@@ -56,7 +72,9 @@ export const createUrlInfoTransformer = ({
56
72
  // when jsenv is done cooking the file
57
73
  // during build it's urlInfo.url to be inside the build
58
74
  // but otherwise it's generatedUrl to be inside .jsenv/ directory
59
- urlInfo.sourcemapGeneratedUrl = generateSourcemapUrl(urlInfo.generatedUrl)
75
+ urlInfo.sourcemapGeneratedUrl = generateSourcemapFileUrl(
76
+ urlInfo.generatedUrl,
77
+ )
60
78
  const [sourcemapReference, sourcemapUrlInfo] = injectSourcemapPlaceholder({
61
79
  urlInfo,
62
80
  specifier: urlInfo.sourcemapGeneratedUrl,
@@ -66,6 +84,7 @@ export const createUrlInfoTransformer = ({
66
84
 
67
85
  // already loaded during "load" hook (happens during build)
68
86
  if (urlInfo.sourcemap) {
87
+ urlInfo.sourcemap = normalizeSourcemap(urlInfo, urlInfo.sourcemap)
69
88
  return
70
89
  }
71
90
  // check for existing sourcemap for this content
@@ -78,17 +97,15 @@ export const createUrlInfoTransformer = ({
78
97
  const [sourcemapReference, sourcemapUrlInfo] = foundSourcemap({
79
98
  urlInfo,
80
99
  type,
81
- line,
82
- column,
83
100
  specifier,
101
+ specifierLine: line,
102
+ specifierColumn: column,
84
103
  })
85
104
  try {
86
- await context.cook({
87
- reference: sourcemapReference,
88
- urlInfo: sourcemapUrlInfo,
89
- })
90
- const sourcemap = JSON.parse(sourcemapUrlInfo.content)
91
- urlInfo.sourcemap = normalizeSourcemap(urlInfo, sourcemap)
105
+ await context.cook(sourcemapUrlInfo, { reference: sourcemapReference })
106
+ const sourcemapRaw = JSON.parse(sourcemapUrlInfo.content)
107
+ const sourcemap = normalizeSourcemap(urlInfo, sourcemapRaw)
108
+ urlInfo.sourcemap = sourcemap
92
109
  } catch (e) {
93
110
  logger.error(`Error while handling existing sourcemap: ${e.message}`)
94
111
  return
@@ -137,20 +154,33 @@ export const createUrlInfoTransformer = ({
137
154
  const sourcemapReference = urlInfo.sourcemapReference
138
155
  const sourcemapUrlInfo = urlGraph.getUrlInfo(sourcemapReference.url)
139
156
  sourcemapUrlInfo.contentType = "application/json"
140
- sourcemapUrlInfo.content = JSON.stringify(urlInfo.sourcemap, null, " ")
157
+ const sourcemap = urlInfo.sourcemap
158
+ if (sourcemapsRelativeSources) {
159
+ sourcemap.sources = sourcemap.sources.map((source) => {
160
+ const sourceRelative = urlToRelativeUrl(source, urlInfo.url)
161
+ return sourceRelative || "."
162
+ })
163
+ }
164
+ sourcemapUrlInfo.content = JSON.stringify(sourcemap, null, " ")
141
165
  if (sourcemaps === "inline") {
142
- sourcemapReference.generatedSpecifier = sourcemapToBase64Url(
143
- urlInfo.sourcemap,
144
- )
166
+ sourcemapReference.generatedSpecifier =
167
+ generateSourcemapDataUrl(sourcemap)
145
168
  }
146
169
  if (sourcemaps === "file" || sourcemaps === "inline") {
147
170
  urlInfo.content = SOURCEMAP.writeComment({
148
171
  contentType: urlInfo.contentType,
149
172
  content: urlInfo.content,
150
- specifier: sourcemapReference.generatedSpecifier,
173
+ specifier:
174
+ sourcemaps === "file" && sourcemapsRelativeSources
175
+ ? urlToRelativeUrl(sourcemapReference.url, urlInfo.url)
176
+ : sourcemapReference.generatedSpecifier,
151
177
  })
152
178
  }
179
+ } else if (urlInfo.sourcemapReference) {
180
+ // in the end we don't use the sourcemap placeholder
181
+ urlGraph.deleteUrlInfo(urlInfo.sourcemapReference.url)
153
182
  }
183
+ urlInfo.contentEtag = bufferToEtag(Buffer.from(urlInfo.content))
154
184
  }
155
185
 
156
186
  return {
@@ -1,10 +1,22 @@
1
- import { createCallbackList } from "@jsenv/abort"
2
- import { urlToRelativeUrl } from "@jsenv/filesystem"
1
+ import { urlToRelativeUrl } from "@jsenv/urls"
2
+ import { urlSpecifierEncoding } from "./url_specifier_encoding.js"
3
3
 
4
- export const createUrlGraph = () => {
4
+ export const createUrlGraph = ({
5
+ clientFileChangeCallbackList,
6
+ clientFilesPruneCallbackList,
7
+ } = {}) => {
5
8
  const urlInfos = {}
6
9
  const getUrlInfo = (url) => urlInfos[url]
7
- const deleteUrlInfo = (url) => delete urlInfos[url]
10
+ const deleteUrlInfo = (url) => {
11
+ const urlInfo = urlInfos[url]
12
+ if (urlInfo) {
13
+ delete urlInfos[url]
14
+ if (urlInfo.sourcemapReference) {
15
+ deleteUrlInfo(urlInfo.sourcemapReference.url)
16
+ }
17
+ }
18
+ }
19
+
8
20
  const reuseOrCreateUrlInfo = (url) => {
9
21
  const existingUrlInfo = urlInfos[url]
10
22
  if (existingUrlInfo) return existingUrlInfo
@@ -12,13 +24,15 @@ export const createUrlGraph = () => {
12
24
  urlInfos[url] = urlInfo
13
25
  return urlInfo
14
26
  }
15
- const inferReference = (url, parentUrl) => {
27
+ const inferReference = (specifier, parentUrl) => {
16
28
  const parentUrlInfo = urlInfos[parentUrl]
17
29
  if (!parentUrlInfo) {
18
30
  return null
19
31
  }
20
32
  const firstReferenceOnThatUrl = parentUrlInfo.references.find(
21
- (reference) => reference.url === url,
33
+ (reference) => {
34
+ return urlSpecifierEncoding.decode(reference) === specifier
35
+ },
22
36
  )
23
37
  return firstReferenceOnThatUrl
24
38
  }
@@ -40,13 +54,22 @@ export const createUrlGraph = () => {
40
54
  return visitDependents(urlInfo)
41
55
  }
42
56
 
43
- const prunedCallbackList = createCallbackList()
44
57
  const updateReferences = (urlInfo, references) => {
45
58
  const dependencyUrls = []
46
59
  references.forEach((reference) => {
47
- if (!dependencyUrls.includes(reference.url)) {
48
- dependencyUrls.push(reference.url)
60
+ if (reference.isRessourceHint) {
61
+ // ressource hint are a special kind of reference.
62
+ // They are a sort of weak reference to an url.
63
+ // We ignore them so that url referenced only by ressource hints
64
+ // have url.dependents.size === 0 and can be considered as not used
65
+ // It means html won't consider url referenced solely
66
+ // by <link> as dependency and it's fine
67
+ return
68
+ }
69
+ if (dependencyUrls.includes(reference.url)) {
70
+ return
49
71
  }
72
+ dependencyUrls.push(reference.url)
50
73
  })
51
74
  pruneDependencies(
52
75
  urlInfo,
@@ -82,7 +105,47 @@ export const createUrlGraph = () => {
82
105
  if (prunedUrlInfos.length === 0) {
83
106
  return
84
107
  }
85
- prunedCallbackList.notify({ prunedUrlInfos, firstUrlInfo })
108
+ prunedUrlInfos.forEach((prunedUrlInfo) => {
109
+ prunedUrlInfo.modifiedTimestamp = Date.now()
110
+ // should we delete?
111
+ // delete urlInfos[prunedUrlInfo.url]
112
+ })
113
+ if (clientFilesPruneCallbackList) {
114
+ clientFilesPruneCallbackList.forEach((callback) => {
115
+ callback({
116
+ firstUrlInfo,
117
+ prunedUrlInfos,
118
+ })
119
+ })
120
+ }
121
+ }
122
+
123
+ if (clientFileChangeCallbackList) {
124
+ const updateModifiedTimestamp = (urlInfo, modifiedTimestamp) => {
125
+ const seen = []
126
+ const iterate = (urlInfo) => {
127
+ if (seen.includes(urlInfo.url)) {
128
+ return
129
+ }
130
+ seen.push(urlInfo.url)
131
+ urlInfo.modifiedTimestamp = modifiedTimestamp
132
+ urlInfo.dependents.forEach((dependentUrl) => {
133
+ const dependentUrlInfo = urlInfos[dependentUrl]
134
+ const { hotAcceptDependencies = [] } = dependentUrlInfo.data
135
+ if (!hotAcceptDependencies.includes(urlInfo.url)) {
136
+ iterate(dependentUrlInfo)
137
+ }
138
+ })
139
+ }
140
+ iterate(urlInfo)
141
+ }
142
+ clientFileChangeCallbackList.push(({ url }) => {
143
+ const urlInfo = urlInfos[url]
144
+ if (urlInfo) {
145
+ updateModifiedTimestamp(urlInfo, Date.now())
146
+ urlInfo.contentEtag = null
147
+ }
148
+ })
86
149
  }
87
150
 
88
151
  return {
@@ -92,8 +155,6 @@ export const createUrlGraph = () => {
92
155
  deleteUrlInfo,
93
156
  inferReference,
94
157
  findDependent,
95
-
96
- prunedCallbackList,
97
158
  updateReferences,
98
159
 
99
160
  toJSON: (rootDirectoryUrl) => {
@@ -114,19 +175,27 @@ export const createUrlGraph = () => {
114
175
 
115
176
  const createUrlInfo = (url) => {
116
177
  return {
178
+ modifiedTimestamp: 0,
117
179
  data: {}, // plugins can put whatever they want here
180
+ references: [],
181
+ dependencies: new Set(),
182
+ dependents: new Set(),
183
+ type: undefined, // "html", "css", "js_classic", "js_module", "importmap", "json", "webmanifest", ...
184
+ subtype: undefined, // "worker", "service_worker", "shared_worker" for js, otherwise undefined
185
+ contentType: "", // "text/html", "text/css", "text/javascript", "application/json", ...
118
186
  url,
187
+ originalUrl: undefined,
119
188
  generatedUrl: null,
189
+ filename: "",
120
190
  isInline: false,
121
191
  inlineUrlSite: null,
122
- contentType: "",
123
- originalContent: "",
124
- content: "",
192
+ shouldHandle: undefined,
193
+ originalContent: undefined,
194
+ content: undefined,
195
+ contentEtag: null,
125
196
  sourcemap: null,
126
197
  sourcemapReference: null,
127
- type: "",
128
- references: [],
129
- dependencies: new Set(),
130
- dependents: new Set(),
198
+ timing: {},
199
+ headers: {},
131
200
  }
132
201
  }
@@ -0,0 +1,59 @@
1
+ export const urlSpecifierEncoding = {
2
+ encode: (reference) => {
3
+ const { generatedSpecifier } = reference
4
+ if (generatedSpecifier.then) {
5
+ return generatedSpecifier.then((value) => {
6
+ reference.generatedSpecifier = value
7
+ return urlSpecifierEncoding.encode(reference)
8
+ })
9
+ }
10
+ // allow plugin to return a function to bypas default formatting
11
+ // (which is to use JSON.stringify when url is referenced inside js)
12
+ if (typeof generatedSpecifier === "function") {
13
+ return generatedSpecifier()
14
+ }
15
+ const formatter = formatters[reference.type]
16
+ const value = formatter
17
+ ? formatter.encode(generatedSpecifier)
18
+ : generatedSpecifier
19
+ if (reference.escape) {
20
+ return reference.escape(value)
21
+ }
22
+ return value
23
+ },
24
+ decode: (reference) => {
25
+ const formatter = formatters[reference.type]
26
+ return formatter
27
+ ? formatter.decode(reference.generatedSpecifier)
28
+ : reference.generatedSpecifier
29
+ },
30
+ }
31
+ const formatters = {
32
+ "js_import_export": { encode: JSON.stringify, decode: JSON.parse },
33
+ "js_url_specifier": { encode: JSON.stringify, decode: JSON.parse },
34
+ "css_@import": { encode: JSON.stringify, code: JSON.stringify },
35
+ // https://github.com/webpack-contrib/css-loader/pull/627/files
36
+ "css_url": {
37
+ encode: (url) => {
38
+ // If url is already wrapped in quotes, remove them
39
+ url = formatters.css_url.decode(url)
40
+ // Should url be wrapped?
41
+ // See https://drafts.csswg.org/css-values-3/#urls
42
+ if (/["'() \t\n]/.test(url)) {
43
+ return `"${url.replace(/"/g, '\\"').replace(/\n/g, "\\n")}"`
44
+ }
45
+ return url
46
+ },
47
+ decode: (url) => {
48
+ const firstChar = url[0]
49
+ const lastChar = url[url.length - 1]
50
+ if (firstChar === `"` && lastChar === `"`) {
51
+ return url.slice(1, -1)
52
+ }
53
+ if (firstChar === `'` && lastChar === `'`) {
54
+ return url.slice(1, -1)
55
+ }
56
+ return url
57
+ },
58
+ },
59
+ }
@@ -0,0 +1,42 @@
1
+ // the following apis are creating js entry points:
2
+ // - new Worker()
3
+ // - new SharedWorker()
4
+ // - navigator.serviceWorker.register()
5
+ export const isWebWorkerEntryPointReference = (reference) => {
6
+ if (reference.subtype === "new_url_first_arg") {
7
+ return ["worker", "service_worker", "shared_worker"].includes(
8
+ reference.expectedSubtype,
9
+ )
10
+ }
11
+ return [
12
+ "new_worker_first_arg",
13
+ "new_shared_worker_first_arg",
14
+ "service_worker_register_first_arg",
15
+ ].includes(reference.subtype)
16
+ }
17
+
18
+ export const isWebWorkerUrlInfo = (urlInfo) => {
19
+ return (
20
+ urlInfo.subtype === "worker" ||
21
+ urlInfo.subtype === "service_worker" ||
22
+ urlInfo.subtype === "shared_worker"
23
+ )
24
+ }
25
+
26
+ // export const isEntryPoint = (urlInfo, urlGraph) => {
27
+ // if (urlInfo.data.isEntryPoint) {
28
+ // return true
29
+ // }
30
+ // if (isWebWorker(urlInfo)) {
31
+ // // - new Worker("a.js") -> "a.js" is an entry point
32
+ // // - self.importScripts("b.js") -> "b.js" is not an entry point
33
+ // // So the following logic applies to infer if the file is a web worker entry point
34
+ // // "When a non-webworker file references a worker file, the worker file is an entry point"
35
+ // const dependents = Array.from(urlInfo.dependents)
36
+ // return dependents.some((dependentUrl) => {
37
+ // const dependentUrlInfo = urlGraph.getUrlInfo(dependentUrl)
38
+ // return !isWebWorker(dependentUrlInfo)
39
+ // })
40
+ // }
41
+ // return false
42
+ // }
@@ -1,4 +1,5 @@
1
- import { createEventSourceConnection } from "./event_source_connection.js"
1
+ import { createEventSourceConnection } from "@jsenv/core/src/helpers/event_source/event_source.js"
2
+ import { urlHotMetas } from "../../../import_meta_hot/client/import_meta_hot.js"
2
3
  import {
3
4
  isAutoreloadEnabled,
4
5
  setAutoreloadPreference,
@@ -9,7 +10,6 @@ import {
9
10
  reloadDOMNodesUsingUrl,
10
11
  reloadJsImport,
11
12
  } from "./reload.js"
12
- import { urlHotMetas } from "./import_meta_hot.js"
13
13
 
14
14
  const reloadMessages = []
15
15
  const reloadMessagesSignal = { onchange: () => {} }
@@ -26,13 +26,16 @@ const dequeue = async () => {
26
26
  const callbacks = pendingCallbacks.slice()
27
27
  pendingCallbacks = []
28
28
  running = true
29
- await callbacks.reduce(async (previous, callback) => {
30
- await previous
31
- await callback()
32
- }, Promise.resolve())
33
- running = false
34
- if (pendingCallbacks.length) {
35
- dequeue()
29
+ try {
30
+ await callbacks.reduce(async (previous, callback) => {
31
+ await previous
32
+ await callback()
33
+ }, Promise.resolve())
34
+ } finally {
35
+ running = false
36
+ if (pendingCallbacks.length) {
37
+ dequeue()
38
+ }
36
39
  }
37
40
  }
38
41
 
@@ -93,11 +96,15 @@ const applyHotReload = async ({ hotInstructions }) => {
93
96
  // if (!urlHotMeta) {return }
94
97
 
95
98
  if (type === "prune") {
96
- console.group(`[jsenv] prune: ${boundary} (inside ${acceptedBy})`)
99
+ console.groupCollapsed(
100
+ `[jsenv] prune: ${boundary} (inside ${acceptedBy})`,
101
+ )
97
102
  } else if (acceptedBy === boundary) {
98
- console.group(`[jsenv] hot reloading: ${boundary}`)
103
+ console.groupCollapsed(`[jsenv] hot reloading: ${boundary}`)
99
104
  } else {
100
- console.group(`[jsenv] hot reloading: ${acceptedBy} inside ${boundary}`)
105
+ console.groupCollapsed(
106
+ `[jsenv] hot reloading: ${acceptedBy} inside ${boundary}`,
107
+ )
101
108
  }
102
109
  if (urlHotMeta && urlHotMeta.disposeCallback) {
103
110
  console.log(`call dispose callback`)
@@ -1,4 +1,7 @@
1
- import { htmlAttributeSrcSet } from "@jsenv/utils/html_ast/html_attribute_src_set.js"
1
+ import {
2
+ parseSrcSet,
3
+ stringifySrcSet,
4
+ } from "@jsenv/ast/src/html/html_src_set.js"
2
5
 
3
6
  import { injectQuery, compareTwoUrlPaths } from "./url_helpers.js"
4
7
 
@@ -57,7 +60,7 @@ export const reloadDOMNodesUsingUrl = (urlToReload) => {
57
60
  visitNodeAttributeAsUrl(img, "src")
58
61
  const srcset = img.srcset
59
62
  if (srcset) {
60
- const srcCandidates = htmlAttributeSrcSet.parse(srcset)
63
+ const srcCandidates = parseSrcSet(srcset)
61
64
  srcCandidates.forEach((srcCandidate) => {
62
65
  const url = new URL(srcCandidate.specifier, `${window.location.href}`)
63
66
  if (shouldReloadUrl(url)) {
@@ -65,7 +68,7 @@ export const reloadDOMNodesUsingUrl = (urlToReload) => {
65
68
  }
66
69
  })
67
70
  mutations.push(() => {
68
- img.srcset = htmlAttributeSrcSet.stringify(srcCandidates)
71
+ img.srcset = stringifySrcSet(srcCandidates)
69
72
  })
70
73
  }
71
74
  })
@@ -0,0 +1,41 @@
1
+ import {
2
+ parseHtmlString,
3
+ stringifyHtmlAst,
4
+ injectScriptNodeAsEarlyAsPossible,
5
+ createHtmlNode,
6
+ } from "@jsenv/ast"
7
+
8
+ export const jsenvPluginDevSSEClient = () => {
9
+ const eventSourceClientFileUrl = new URL(
10
+ "./client/event_source_client.js",
11
+ import.meta.url,
12
+ ).href
13
+
14
+ return {
15
+ name: "jsenv:dev_sse_client",
16
+ appliesDuring: { dev: true },
17
+ transformUrlContent: {
18
+ html: (htmlUrlInfo, context) => {
19
+ const htmlAst = parseHtmlString(htmlUrlInfo.content)
20
+ const [eventSourceClientReference] = context.referenceUtils.inject({
21
+ type: "script_src",
22
+ expectedType: "js_module",
23
+ specifier: eventSourceClientFileUrl,
24
+ })
25
+ injectScriptNodeAsEarlyAsPossible(
26
+ htmlAst,
27
+ createHtmlNode({
28
+ "tagName": "script",
29
+ "type": "module",
30
+ "src": eventSourceClientReference.generatedSpecifier,
31
+ "injected-by": "jsenv:dev_sse_client",
32
+ }),
33
+ )
34
+ const htmlModified = stringifyHtmlAst(htmlAst)
35
+ return {
36
+ content: htmlModified,
37
+ }
38
+ },
39
+ },
40
+ }
41
+ }