@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,16 +1,18 @@
1
1
  import { Script } from "node:vm"
2
- import { createDetailedMessage } from "@jsenv/logger"
2
+
3
+ import { createDetailedMessage } from "@jsenv/log"
3
4
  import {
4
5
  Abort,
5
6
  createCallbackListNotifiedOnce,
6
7
  raceProcessTeardownEvents,
8
+ raceCallbacks,
7
9
  } from "@jsenv/abort"
8
- import { moveUrl } from "@jsenv/filesystem"
10
+ import { moveUrl } from "@jsenv/urls"
11
+ import { memoize } from "@jsenv/utils/src/memoize/memoize.js"
12
+ import { escapeRegexpSpecialChars } from "@jsenv/utils/src/string/escape_regexp_special_chars.js"
9
13
 
10
- import { memoize } from "@jsenv/utils/memoize/memoize.js"
11
- import { filterV8Coverage } from "@jsenv/utils/coverage/v8_coverage_from_directory.js"
12
- import { composeTwoFileByFileIstanbulCoverages } from "@jsenv/utils/coverage/istanbul_coverage_composition.js"
13
- import { escapeRegexpSpecialChars } from "@jsenv/utils/string/escape_regexp_special_chars.js"
14
+ import { filterV8Coverage } from "@jsenv/core/src/test/coverage/v8_coverage_from_directory.js"
15
+ import { composeTwoFileByFileIstanbulCoverages } from "@jsenv/core/src/test/coverage/istanbul_coverage_composition.js"
14
16
 
15
17
  export const createRuntimeFromPlaywright = ({
16
18
  browserName,
@@ -34,7 +36,7 @@ export const createRuntimeFromPlaywright = ({
34
36
  server,
35
37
 
36
38
  // measurePerformance,
37
- // collectPerformance,
39
+ collectPerformance,
38
40
  collectCoverage = false,
39
41
  coverageForceIstanbul,
40
42
  urlShouldBeCovered,
@@ -42,10 +44,7 @@ export const createRuntimeFromPlaywright = ({
42
44
  stopAfterAllSignal,
43
45
  stopSignal,
44
46
  keepRunning,
45
- onStop,
46
- onError,
47
47
  onConsole,
48
- onResult,
49
48
 
50
49
  executablePath,
51
50
  headful = false,
@@ -74,11 +73,27 @@ export const createRuntimeFromPlaywright = ({
74
73
  }
75
74
  const { browser, browserContext } = await browserAndContextPromise
76
75
  const closeBrowser = async () => {
76
+ const disconnected = browser.isConnected()
77
+ ? new Promise((resolve) => {
78
+ const disconnectedCallback = () => {
79
+ browser.removeListener("disconnected", disconnectedCallback)
80
+ resolve()
81
+ }
82
+ browser.on("disconnected", disconnectedCallback)
83
+ })
84
+ : Promise.resolve()
85
+ // for some reason without this 100ms timeout
86
+ // browser.close() never resolves (playwright does not like something)
87
+ await new Promise((resolve) => setTimeout(resolve, 100))
77
88
  try {
78
- await stopBrowser(browser)
89
+ await browser.close()
79
90
  } catch (e) {
80
- onError(e)
91
+ if (isTargetClosedError(e)) {
92
+ return
93
+ }
94
+ throw e
81
95
  }
96
+ await disconnected
82
97
  }
83
98
  const page = await browserContext.newPage()
84
99
  const closePage = async () => {
@@ -88,44 +103,9 @@ export const createRuntimeFromPlaywright = ({
88
103
  if (isTargetClosedError(e)) {
89
104
  return
90
105
  }
91
- onError(e)
92
- }
93
- }
94
- // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-disconnected
95
- if (isBrowserDedicatedToExecution) {
96
- browser.on("disconnected", async () => {
97
- await cleanup("browser disconnected")
98
- onStop({ reason: "browser disconnected" })
99
- })
100
- cleanupCallbackList.add(closePage)
101
- cleanupCallbackList.add(closeBrowser)
102
- } else {
103
- const disconnectedCallback = async () => {
104
- await cleanup("browser disconnected")
105
- onError(new Error("browser disconnected during execution"))
106
- }
107
- browser.on("disconnected", disconnectedCallback)
108
- page.on("close", () => {
109
- onStop({ reason: "page closed" })
110
- })
111
- cleanupCallbackList.add(closePage)
112
- const notifyPrevious = stopAfterAllSignal.notify
113
- stopAfterAllSignal.notify = async () => {
114
- await notifyPrevious()
115
- browser.removeListener("disconnected", disconnectedCallback)
116
- await closeBrowser()
106
+ throw e
117
107
  }
118
108
  }
119
- const stopTrackingToNotify = trackPageToNotify(page, {
120
- onError: (error) => {
121
- error = transformErrorHook(error)
122
- if (!ignoreErrorHook(error)) {
123
- onError(error)
124
- }
125
- },
126
- onConsole,
127
- })
128
- cleanupCallbackList.add(stopTrackingToNotify)
129
109
 
130
110
  let resultTransformer = (result) => result
131
111
  if (collectCoverage) {
@@ -169,30 +149,213 @@ export const createRuntimeFromPlaywright = ({
169
149
  resultTransformer = composeTransformer(
170
150
  resultTransformer,
171
151
  async (result) => {
172
- result.coverage = generateCoverageForPage(result.namespace)
152
+ const scriptExecutionResults = result.namespace
153
+ if (scriptExecutionResults) {
154
+ result.coverage = generateCoverageForPage(scriptExecutionResults)
155
+ }
173
156
  return result
174
157
  },
175
158
  )
176
159
  }
177
160
  } else {
178
161
  resultTransformer = composeTransformer(resultTransformer, (result) => {
179
- const { namespace: fileExecutionResultMap } = result
180
- Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
181
- delete fileExecutionResultMap[fileRelativeUrl].coverage
182
- })
162
+ const scriptExecutionResults = result.namespace
163
+ if (scriptExecutionResults) {
164
+ Object.keys(scriptExecutionResults).forEach((fileRelativeUrl) => {
165
+ delete scriptExecutionResults[fileRelativeUrl].coverage
166
+ })
167
+ }
183
168
  return result
184
169
  })
185
170
  }
171
+
172
+ if (collectPerformance) {
173
+ resultTransformer = composeTransformer(
174
+ resultTransformer,
175
+ async (result) => {
176
+ const performance = await page.evaluate(
177
+ /* eslint-disable no-undef */
178
+ /* istanbul ignore next */
179
+ () => {
180
+ const { performance } = window
181
+ if (!performance) {
182
+ return null
183
+ }
184
+ const measures = {}
185
+ const measurePerfEntries = performance.getEntriesByType("measure")
186
+ measurePerfEntries.forEach((measurePerfEntry) => {
187
+ measures[measurePerfEntry.name] = measurePerfEntry.duration
188
+ })
189
+ return {
190
+ timeOrigin: performance.timeOrigin,
191
+ timing: performance.timing.toJSON(),
192
+ navigation: performance.navigation.toJSON(),
193
+ measures,
194
+ }
195
+ },
196
+ /* eslint-enable no-undef */
197
+ )
198
+ result.performance = performance
199
+ return result
200
+ },
201
+ )
202
+ }
203
+
186
204
  const fileClientUrl = new URL(fileRelativeUrl, `${server.origin}/`).href
187
- await page.goto(fileClientUrl, { timeout: 0 })
188
- let result = await getResult({
189
- page,
190
- rootDirectoryUrl,
191
- server,
192
- transformErrorHook,
205
+
206
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-console
207
+ const removeConsoleListener = registerEvent({
208
+ object: page,
209
+ eventType: "console",
210
+ // https://github.com/microsoft/playwright/blob/master/docs/api.md#event-console
211
+ callback: async (consoleMessage) => {
212
+ onConsole({
213
+ type: consoleMessage.type(),
214
+ text: `${extractTextFromConsoleMessage(consoleMessage)}
215
+ `,
216
+ })
217
+ },
193
218
  })
194
- result = await resultTransformer(result)
195
- onResult(result)
219
+ cleanupCallbackList.add(removeConsoleListener)
220
+ const actionOperation = Abort.startOperation()
221
+ actionOperation.addAbortSignal(signal)
222
+ const winnerPromise = new Promise((resolve, reject) => {
223
+ raceCallbacks(
224
+ {
225
+ aborted: (cb) => {
226
+ return actionOperation.addAbortCallback(cb)
227
+ },
228
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-error
229
+ error: (cb) => {
230
+ return registerEvent({
231
+ object: page,
232
+ eventType: "error",
233
+ callback: (error) => {
234
+ if (ignoreErrorHook(error)) {
235
+ return
236
+ }
237
+ cb(transformErrorHook(error))
238
+ },
239
+ })
240
+ },
241
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-pageerror
242
+ pageerror: (cb) => {
243
+ return registerEvent({
244
+ object: page,
245
+ eventType: "pageerror",
246
+ callback: (error) => {
247
+ if (ignoreErrorHook(error)) {
248
+ return
249
+ }
250
+ cb(transformErrorHook(error))
251
+ },
252
+ })
253
+ },
254
+ closed: (cb) => {
255
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-disconnected
256
+ if (isBrowserDedicatedToExecution) {
257
+ browser.on("disconnected", async () => {
258
+ cb({ reason: "browser disconnected" })
259
+ })
260
+ cleanupCallbackList.add(closePage)
261
+ cleanupCallbackList.add(closeBrowser)
262
+ } else {
263
+ const disconnectedCallback = async () => {
264
+ throw new Error("browser disconnected during execution")
265
+ }
266
+ browser.on("disconnected", disconnectedCallback)
267
+ page.on("close", () => {
268
+ cb({ reason: "page closed" })
269
+ })
270
+ cleanupCallbackList.add(closePage)
271
+ cleanupCallbackList.add(() => {
272
+ browser.removeListener("disconnected", disconnectedCallback)
273
+ })
274
+ const notifyPrevious = stopAfterAllSignal.notify
275
+ stopAfterAllSignal.notify = async () => {
276
+ await notifyPrevious()
277
+ browser.removeListener("disconnected", disconnectedCallback)
278
+ await closeBrowser()
279
+ }
280
+ }
281
+ },
282
+ response: async (cb) => {
283
+ try {
284
+ await page.goto(fileClientUrl, { timeout: 0 })
285
+ const result = await page.evaluate(
286
+ /* eslint-disable no-undef */
287
+ /* istanbul ignore next */
288
+ () => {
289
+ if (!window.__html_supervisor__) {
290
+ throw new Error(`window.__html_supervisor__ not found`)
291
+ }
292
+ return window.__html_supervisor__.getScriptExecutionResults()
293
+ },
294
+ /* eslint-enable no-undef */
295
+ )
296
+ const { status, scriptExecutionResults } = result
297
+ if (status === "errored") {
298
+ const { exceptionSource } = result
299
+ const error = evalException(exceptionSource, {
300
+ rootDirectoryUrl,
301
+ server,
302
+ transformErrorHook,
303
+ })
304
+ cb({
305
+ status: "errored",
306
+ error,
307
+ namespace: scriptExecutionResults,
308
+ })
309
+ } else {
310
+ cb({
311
+ status: "completed",
312
+ namespace: scriptExecutionResults,
313
+ })
314
+ }
315
+ } catch (e) {
316
+ reject(e)
317
+ }
318
+ },
319
+ },
320
+ resolve,
321
+ )
322
+ })
323
+
324
+ const getResult = async () => {
325
+ const winner = await winnerPromise
326
+ if (winner.name === "aborted") {
327
+ return {
328
+ status: "aborted",
329
+ }
330
+ }
331
+ if (winner.name === "error" || winner.name === "pageerror") {
332
+ const error = winner.data
333
+ return {
334
+ status: "errored",
335
+ error,
336
+ }
337
+ }
338
+ if (winner.name === "closed") {
339
+ return {
340
+ status: "errored",
341
+ error: isBrowserDedicatedToExecution
342
+ ? new Error(`browser disconnected during execution`)
343
+ : new Error(`page closed during execution`),
344
+ }
345
+ }
346
+ return winner.data
347
+ }
348
+ let result
349
+
350
+ try {
351
+ result = await getResult()
352
+ result = await resultTransformer(result)
353
+ } catch (e) {
354
+ result = {
355
+ status: "errored",
356
+ error: e,
357
+ }
358
+ }
196
359
  if (keepRunning) {
197
360
  stopSignal.notify = cleanup
198
361
  } else {
@@ -214,40 +377,6 @@ export const createRuntimeFromPlaywright = ({
214
377
  return runtime
215
378
  }
216
379
 
217
- const getResult = async ({
218
- page,
219
- rootDirectoryUrl,
220
- server,
221
- transformErrorHook,
222
- }) => {
223
- const result = await page.evaluate(
224
- /* eslint-disable no-undef */
225
- /* istanbul ignore next */
226
- () => {
227
- return window.__html_supervisor__.getScriptExecutionResults()
228
- },
229
- /* eslint-enable no-undef */
230
- )
231
- const { status, scriptExecutionResults } = result
232
- if (status === "errored") {
233
- const { exceptionSource } = result
234
- const error = evalException(exceptionSource, {
235
- rootDirectoryUrl,
236
- server,
237
- transformErrorHook,
238
- })
239
- return {
240
- status: "errored",
241
- error,
242
- namespace: scriptExecutionResults,
243
- }
244
- }
245
- return {
246
- status: "completed",
247
- namespace: scriptExecutionResults,
248
- }
249
- }
250
-
251
380
  const generateCoverageForPage = (scriptExecutionResults) => {
252
381
  let istanbulCoverageComposed = null
253
382
  Object.keys(scriptExecutionResults).forEach((fileRelativeUrl) => {
@@ -262,31 +391,6 @@ const generateCoverageForPage = (scriptExecutionResults) => {
262
391
  return istanbulCoverageComposed
263
392
  }
264
393
 
265
- const stopBrowser = async (browser) => {
266
- const disconnected = browser.isConnected()
267
- ? new Promise((resolve) => {
268
- const disconnectedCallback = () => {
269
- browser.removeListener("disconnected", disconnectedCallback)
270
- resolve()
271
- }
272
- browser.on("disconnected", disconnectedCallback)
273
- })
274
- : Promise.resolve()
275
-
276
- // for some reason without this 100ms timeout
277
- // browser.close() never resolves (playwright does not like something)
278
- await new Promise((resolve) => setTimeout(resolve, 100))
279
- try {
280
- await browser.close()
281
- } catch (e) {
282
- if (isTargetClosedError(e)) {
283
- return
284
- }
285
- throw e
286
- }
287
- await disconnected
288
- }
289
-
290
394
  const launchBrowserUsingPlaywright = async ({
291
395
  signal,
292
396
  browserName,
@@ -366,39 +470,6 @@ const isTargetClosedError = (error) => {
366
470
  return false
367
471
  }
368
472
 
369
- const trackPageToNotify = (page, { onError, onConsole }) => {
370
- // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-error
371
- const removeErrorListener = registerEvent({
372
- object: page,
373
- eventType: "error",
374
- callback: onError,
375
- })
376
- // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-pageerror
377
- const removePageErrorListener = registerEvent({
378
- object: page,
379
- eventType: "pageerror",
380
- callback: onError,
381
- })
382
- // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-console
383
- const removeConsoleListener = registerEvent({
384
- object: page,
385
- eventType: "console",
386
- // https://github.com/microsoft/playwright/blob/master/docs/api.md#event-console
387
- callback: async (consoleMessage) => {
388
- onConsole({
389
- type: consoleMessage.type(),
390
- text: `${extractTextFromConsoleMessage(consoleMessage)}
391
- `,
392
- })
393
- },
394
- })
395
- return () => {
396
- removeErrorListener()
397
- removePageErrorListener()
398
- removeConsoleListener()
399
- }
400
- }
401
-
402
473
  const composeTransformer = (previousTransformer, transformer) => {
403
474
  return async (value) => {
404
475
  const transformedValue = await previousTransformer(value)
@@ -1,6 +1,6 @@
1
1
  import { findFreePort } from "@jsenv/server"
2
- import { createDetailedMessage } from "@jsenv/logger"
3
2
 
3
+ import { createDetailedMessage } from "@jsenv/log"
4
4
  import { ExecOptions } from "./exec_options.js"
5
5
 
6
6
  export const createChildExecOptions = async ({
@@ -1,17 +1,33 @@
1
1
  import v8 from "node:v8"
2
2
  import { uneval } from "@jsenv/uneval"
3
+ import { startObservingPerformances } from "./node_execution_performance.js"
3
4
 
4
5
  const ACTIONS_AVAILABLE = {
5
- "execute-using-dynamic-import": async ({ fileUrl }) => {
6
- const namespace = await import(fileUrl)
7
- const namespaceResolved = {}
8
- await Promise.all([
9
- ...Object.keys(namespace).map(async (key) => {
10
- const value = await namespace[key]
11
- namespaceResolved[key] = value
12
- }),
13
- ])
14
- return namespaceResolved
6
+ "execute-using-dynamic-import": async ({ fileUrl, collectPerformance }) => {
7
+ const getNamespace = async () => {
8
+ const namespace = await import(fileUrl)
9
+ const namespaceResolved = {}
10
+ await Promise.all([
11
+ ...Object.keys(namespace).map(async (key) => {
12
+ const value = await namespace[key]
13
+ namespaceResolved[key] = value
14
+ }),
15
+ ])
16
+ return namespaceResolved
17
+ }
18
+ if (collectPerformance) {
19
+ const getPerformance = startObservingPerformances()
20
+ const namespace = await getNamespace()
21
+ const performance = await getPerformance()
22
+ return {
23
+ namespace,
24
+ performance,
25
+ }
26
+ }
27
+ const namespace = await getNamespace()
28
+ return {
29
+ namespace,
30
+ }
15
31
  },
16
32
  "execute-using-require": async ({ fileUrl }) => {
17
33
  const { createRequire } = await import("module")
@@ -1,13 +1,11 @@
1
- import { createRequire } from "node:module"
2
-
3
- const require = createRequire(import.meta.url)
1
+ import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
4
2
 
5
3
  // see also https://github.com/sindresorhus/execa/issues/96
6
4
  export const killProcessTree = async (
7
5
  processId,
8
6
  { signal, timeout = 2000 },
9
7
  ) => {
10
- const pidtree = require("pidtree")
8
+ const pidtree = requireFromJsenv("pidtree")
11
9
 
12
10
  let descendantProcessIds
13
11
  try {
@@ -0,0 +1,67 @@
1
+ import { PerformanceObserver, performance } from "node:perf_hooks"
2
+
3
+ export const startObservingPerformances = () => {
4
+ const measureEntries = []
5
+ // https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html
6
+ const perfObserver = new PerformanceObserver(
7
+ (
8
+ // https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html#perf_hooks_class_performanceobserverentrylist
9
+ list,
10
+ ) => {
11
+ const perfMeasureEntries = list.getEntriesByType("measure")
12
+ measureEntries.push(...perfMeasureEntries)
13
+ },
14
+ )
15
+ perfObserver.observe({
16
+ entryTypes: ["measure"],
17
+ })
18
+ return async () => {
19
+ // wait for node to call the performance observer
20
+ await new Promise((resolve) => {
21
+ setTimeout(resolve)
22
+ })
23
+ performance.clearMarks()
24
+ perfObserver.disconnect()
25
+ return {
26
+ ...readNodePerformance(),
27
+ measures: measuresFromMeasureEntries(measureEntries),
28
+ }
29
+ }
30
+ }
31
+
32
+ const readNodePerformance = () => {
33
+ const nodePerformance = {
34
+ nodeTiming: asPlainObject(performance.nodeTiming),
35
+ timeOrigin: performance.timeOrigin,
36
+ eventLoopUtilization: performance.eventLoopUtilization(),
37
+ }
38
+ return nodePerformance
39
+ }
40
+
41
+ // remove getters that cannot be stringified
42
+ const asPlainObject = (objectWithGetters) => {
43
+ const objectWithoutGetters = {}
44
+ Object.keys(objectWithGetters).forEach((key) => {
45
+ objectWithoutGetters[key] = objectWithGetters[key]
46
+ })
47
+ return objectWithoutGetters
48
+ }
49
+
50
+ const measuresFromMeasureEntries = (measureEntries) => {
51
+ const measures = {}
52
+ // Sort to ensure measures order is predictable
53
+ // It seems to be already predictable on Node 16+ but
54
+ // it's not the case on Node 14.
55
+ measureEntries.sort((a, b) => {
56
+ return a.startTime - b.startTime
57
+ })
58
+ measureEntries.forEach(
59
+ (
60
+ // https://nodejs.org/dist/latest-v16.x/docs/api/perf_hooks.html#perf_hooks_class_performanceentry
61
+ perfMeasureEntry,
62
+ ) => {
63
+ measures[perfMeasureEntry.name] = perfMeasureEntry.duration
64
+ },
65
+ )
66
+ return measures
67
+ }