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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
  2. package/dist/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  3. package/dist/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
  4. package/dist/babel_helpers/applyDecs/applyDecs.js +756 -0
  5. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
  6. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  7. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  8. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  9. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  10. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  11. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  12. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  13. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  14. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  15. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  16. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  18. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  19. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  20. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  21. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  24. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  25. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  27. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  29. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  31. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  32. package/dist/babel_helpers/construct/construct.js +15 -0
  33. package/dist/babel_helpers/createClass/createClass.js +18 -0
  34. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  35. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  36. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  37. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  38. package/dist/babel_helpers/decorate/decorate.js +622 -0
  39. package/dist/babel_helpers/defaults/defaults.js +14 -0
  40. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  41. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  42. package/dist/babel_helpers/extends/extends.js +16 -0
  43. package/dist/babel_helpers/get/get.js +21 -0
  44. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  45. package/dist/babel_helpers/identity/identity.js +3 -0
  46. package/dist/babel_helpers/inherits/inherits.js +21 -0
  47. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  48. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  49. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  50. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  51. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  52. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  53. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  54. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  55. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  56. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  57. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  58. package/dist/babel_helpers/jsx/jsx.js +49 -0
  59. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  60. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  61. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  62. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  63. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  64. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  65. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  66. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  67. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  68. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  69. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  70. package/dist/babel_helpers/set/set.js +51 -0
  71. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  72. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  73. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  74. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  75. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  76. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  77. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  78. package/dist/babel_helpers/tdz/tdz.js +4 -0
  79. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  80. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  81. package/dist/babel_helpers/toArray/toArray.js +5 -0
  82. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  83. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  84. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  85. package/dist/babel_helpers/typeof/typeof.js +7 -0
  86. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  87. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  88. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  89. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  90. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  91. package/dist/html/explorer.html +557 -0
  92. package/dist/js/controllable_file.mjs +227 -0
  93. package/dist/js/event_source_client.js +528 -0
  94. package/dist/js/global_this.js +32 -0
  95. package/dist/js/html_supervisor_installer.js +522 -0
  96. package/dist/js/html_supervisor_setup.js +82 -0
  97. package/dist/js/import_meta_hot.js +84 -0
  98. package/dist/js/inline_content.js +8 -0
  99. package/dist/js/new_stylesheet.js +409 -0
  100. package/dist/js/regenerator_runtime.js +721 -0
  101. package/dist/js/s.js +429 -0
  102. package/dist/js/uneval.js +804 -0
  103. package/dist/main.js +25163 -0
  104. package/dist/other/jsenv.png +0 -0
  105. package/dist/s.js +626 -0
  106. package/dist/s.js.map +205 -0
  107. package/package.json +61 -57
  108. package/readme.md +6 -14
  109. package/src/build/build.js +1040 -551
  110. package/src/build/build_urls_generator.js +65 -25
  111. package/src/build/graph_utils.js +31 -0
  112. package/src/build/inject_global_version_mappings.js +93 -0
  113. package/src/build/inject_service_worker_urls.js +79 -0
  114. package/src/build/resync_ressource_hints.js +114 -0
  115. package/src/build/start_build_server.js +217 -0
  116. package/src/build/version_generator.js +60 -0
  117. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  118. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -14
  119. package/src/dev/plugins/toolbar/client/util/fetching.js +1 -1
  120. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +6 -4
  121. package/src/dev/start_dev_server.js +173 -38
  122. package/src/execute/execute.js +35 -8
  123. package/src/execute/run.js +21 -57
  124. package/src/execute/runtimes/browsers/from_playwright.js +224 -153
  125. package/src/execute/runtimes/node/child_exec_options.js +1 -1
  126. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  127. package/src/execute/runtimes/node/kill_process_tree.js +2 -4
  128. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  129. package/src/execute/runtimes/node/node_process.js +288 -39
  130. package/src/helpers/command/command.js +73 -0
  131. package/src/{dev/plugins/autoreload/client/event_source_connection.js → helpers/event_source/event_source.js} +2 -0
  132. package/src/helpers/event_source/sse_service.js +53 -0
  133. package/src/helpers/worker_reload.js +57 -0
  134. package/src/main.js +27 -0
  135. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  136. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +16 -17
  137. package/src/omega/errors.js +63 -67
  138. package/src/omega/fetched_content_compliance.js +24 -0
  139. package/src/omega/file_url_converter.js +9 -51
  140. package/src/omega/kitchen.js +607 -466
  141. package/src/omega/omega_server.js +2 -3
  142. package/src/omega/server/file_service.js +88 -41
  143. package/src/omega/server/user_agent.js +5 -5
  144. package/src/omega/url_graph/{url_graph_sort.js → sort_by_dependencies.js} +3 -5
  145. package/src/omega/url_graph/url_graph_load.js +31 -23
  146. package/src/omega/url_graph/url_graph_report.js +94 -51
  147. package/src/omega/url_graph/url_info_transformations.js +54 -24
  148. package/src/omega/url_graph.js +88 -19
  149. package/src/omega/url_specifier_encoding.js +59 -0
  150. package/src/omega/web_workers.js +42 -0
  151. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  152. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  153. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +6 -3
  154. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  155. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  156. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  157. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  158. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  159. package/src/plugins/bundling/css/bundle_css.js +140 -0
  160. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  161. package/src/plugins/bundling/js_module/bundle_js_module.js +362 -0
  162. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  163. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  164. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +56 -43
  165. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +190 -0
  166. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  167. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  168. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  169. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
  170. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  171. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  172. package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +239 -0
  173. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +16 -0
  174. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  175. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  176. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +15 -18
  177. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  178. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +35 -10
  179. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  180. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  181. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +56 -54
  182. package/src/plugins/inject_globals/inject_globals.js +57 -0
  183. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
  184. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  185. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
  186. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +159 -0
  187. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  188. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  189. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  190. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  191. package/src/plugins/minification/css/minify_css.js +9 -0
  192. package/src/plugins/minification/html/minify_html.js +13 -0
  193. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  194. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  195. package/src/plugins/minification/json/minify_json.js +8 -0
  196. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
  197. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  198. package/src/{omega → plugins}/plugin_controller.js +57 -12
  199. package/src/plugins/plugins.js +91 -0
  200. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  201. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  202. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  203. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +209 -0
  204. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +282 -0
  205. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  206. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +2 -3
  207. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  208. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +3 -4
  209. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  210. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  211. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +40 -33
  212. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +32 -9
  213. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  214. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +2 -3
  215. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  216. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  217. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  218. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  219. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +80 -0
  220. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  221. package/src/plugins/url_analysis/css/css_urls.js +48 -0
  222. package/src/plugins/url_analysis/html/html_urls.js +257 -0
  223. package/src/plugins/url_analysis/js/js_urls.js +69 -0
  224. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +110 -0
  225. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  226. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  227. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  228. package/src/require_from_jsenv.js +3 -0
  229. package/src/test/coverage/babel_plugin_instrument.js +82 -0
  230. package/src/test/coverage/coverage_reporter_html_directory.js +36 -0
  231. package/src/test/coverage/coverage_reporter_json_file.js +22 -0
  232. package/src/test/coverage/coverage_reporter_text_log.js +19 -0
  233. package/src/test/coverage/empty_coverage_factory.js +52 -0
  234. package/src/test/coverage/file_by_file_coverage.js +25 -0
  235. package/src/test/coverage/istanbul_coverage_composition.js +28 -0
  236. package/src/test/coverage/istanbul_coverage_map_from_coverage.js +16 -0
  237. package/src/test/coverage/list_files_not_covered.js +15 -0
  238. package/src/test/coverage/missing_coverage.js +41 -0
  239. package/src/test/coverage/report_to_coverage.js +196 -0
  240. package/src/test/coverage/v8_and_istanbul.js +37 -0
  241. package/src/test/coverage/v8_coverage_composition.js +24 -0
  242. package/src/test/coverage/v8_coverage_from_directory.js +87 -0
  243. package/src/test/coverage/v8_coverage_to_istanbul.js +99 -0
  244. package/src/test/execute_plan.js +87 -46
  245. package/src/test/execute_test_plan.js +40 -28
  246. package/src/test/execution_steps.js +2 -5
  247. package/src/test/logs_file_execution.js +56 -49
  248. package/main.js +0 -19
  249. package/src/build/inject_version_mappings.js +0 -62
  250. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
  251. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  252. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  253. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  254. package/src/execute/runtimes/node/controlled_process.js +0 -316
  255. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  256. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  257. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  258. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  259. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  260. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +0 -233
  261. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  262. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  263. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  264. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  265. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  266. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  267. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  268. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  269. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  270. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  271. package/src/omega/core_plugins.js +0 -39
  272. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  273. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  274. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  275. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  276. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  277. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -0,0 +1,60 @@
1
+ import { createHash } from "node:crypto"
2
+
3
+ import { CONTENT_TYPE } from "@jsenv/utils/src/content_type/content_type.js"
4
+
5
+ // https://github.com/rollup/rollup/blob/19e50af3099c2f627451a45a84e2fa90d20246d5/src/utils/FileEmitter.ts#L47
6
+ // https://github.com/rollup/rollup/blob/5a5391971d695c808eed0c5d7d2c6ccb594fc689/src/Chunk.ts#L870
7
+ export const createVersionGenerator = () => {
8
+ const hash = createHash("sha256")
9
+
10
+ const augmentWithContent = ({
11
+ content,
12
+ contentType = "application/octet-stream",
13
+ lineBreakNormalization = false,
14
+ }) => {
15
+ hash.update(
16
+ lineBreakNormalization && CONTENT_TYPE.isTextual(contentType)
17
+ ? normalizeLineBreaks(content)
18
+ : content,
19
+ )
20
+ }
21
+
22
+ const augmentWithDependencyVersion = (version) => {
23
+ hash.update(version)
24
+ }
25
+
26
+ return {
27
+ augmentWithContent,
28
+ augmentWithDependencyVersion,
29
+ generate: () => {
30
+ return hash.digest("hex").slice(0, 8)
31
+ },
32
+ }
33
+ }
34
+
35
+ const normalizeLineBreaks = (stringOrBuffer) => {
36
+ if (typeof stringOrBuffer === "string") {
37
+ const stringWithLinuxBreaks = stringOrBuffer.replace(/\r\n/g, "\n")
38
+ return stringWithLinuxBreaks
39
+ }
40
+ return normalizeLineBreaksForBuffer(stringOrBuffer)
41
+ }
42
+
43
+ // https://github.com/nodejs/help/issues/1738#issuecomment-458460503
44
+ const normalizeLineBreaksForBuffer = (buffer) => {
45
+ const int32Array = new Int32Array(buffer, 0, buffer.length)
46
+ const int32ArrayWithLineBreaksNormalized = int32Array.filter(
47
+ (element, index, typedArray) => {
48
+ if (element === 0x0d) {
49
+ if (typedArray[index + 1] === 0x0a) {
50
+ // Windows -> Unix
51
+ return false
52
+ }
53
+ // Mac OS -> Unix
54
+ typedArray[index] = 0x0a
55
+ }
56
+ return true
57
+ },
58
+ )
59
+ return Buffer.from(int32ArrayWithLineBreaksNormalized)
60
+ }
@@ -4,7 +4,7 @@
4
4
  <title>Exploring</title>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <meta charset="utf-8" />
7
- <link rel="icon" href="FAVICON_HREF" />
7
+ <link rel="icon" href="ignore:FAVICON_HREF" />
8
8
  <style>
9
9
  button:focus,
10
10
  a:focus,
@@ -1,8 +1,7 @@
1
1
  import { readFileSync } from "node:fs"
2
- import { urlToContentType } from "@jsenv/server"
3
- import { collectFiles, normalizeStructuredMetaMap } from "@jsenv/filesystem"
4
-
5
- import { DataUrl } from "@jsenv/utils/urls/data_url.js"
2
+ import { DATA_URL } from "@jsenv/urls"
3
+ import { collectFiles } from "@jsenv/filesystem"
4
+ import { CONTENT_TYPE } from "@jsenv/utils/src/content_type/content_type.js"
6
5
 
7
6
  export const jsenvPluginExplorer = ({ groups }) => {
8
7
  const htmlClientFileUrl = new URL("./client/explorer.html", import.meta.url)
@@ -17,21 +16,17 @@ export const jsenvPluginExplorer = ({ groups }) => {
17
16
  if (request.ressource !== "/") {
18
17
  return null
19
18
  }
20
- const structuredMetaMapRelativeForExplorable = {}
19
+ const associationsForExplorable = {}
21
20
  Object.keys(groups).forEach((groupName) => {
22
21
  const groupConfig = groups[groupName]
23
- structuredMetaMapRelativeForExplorable[groupName] = {
22
+ associationsForExplorable[groupName] = {
24
23
  "**/.jsenv/": false, // avoid visting .jsenv directory in jsenv itself
25
24
  ...groupConfig,
26
25
  }
27
26
  })
28
- const structuredMetaMapForExplorable = normalizeStructuredMetaMap(
29
- structuredMetaMapRelativeForExplorable,
30
- rootDirectoryUrl,
31
- )
32
27
  const matchingFileResultArray = await collectFiles({
33
28
  directoryUrl: rootDirectoryUrl,
34
- structuredMetaMap: structuredMetaMapForExplorable,
29
+ associations: associationsForExplorable,
35
30
  predicate: (meta) =>
36
31
  Object.keys(meta).some((group) => Boolean(meta[group])),
37
32
  })
@@ -41,9 +36,9 @@ export const jsenvPluginExplorer = ({ groups }) => {
41
36
  }))
42
37
  let html = String(readFileSync(new URL(htmlClientFileUrl)))
43
38
  html = html.replace(
44
- "FAVICON_HREF",
45
- DataUrl.stringify({
46
- contentType: urlToContentType(faviconClientFileUrl),
39
+ "ignore:FAVICON_HREF",
40
+ DATA_URL.stringify({
41
+ contentType: CONTENT_TYPE.fromUrlExtension(faviconClientFileUrl),
47
42
  base64Flag: true,
48
43
  data: readFileSync(new URL(faviconClientFileUrl)).toString("base64"),
49
44
  }),
@@ -1,4 +1,4 @@
1
- import { memoize } from "@jsenv/utils/memoize/memoize.js"
1
+ import { memoize } from "@jsenv/utils/src/memoize/memoize.js"
2
2
 
3
3
  const fetchPolyfill = async (...args) => {
4
4
  const { fetchUsingXHR } = await loadPolyfill()
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseHtmlString,
3
3
  stringifyHtmlAst,
4
- injectScriptAsEarlyAsPossible,
4
+ injectScriptNodeAsEarlyAsPossible,
5
5
  createHtmlNode,
6
- } from "@jsenv/utils/html_ast/html_ast.js"
6
+ } from "@jsenv/ast"
7
7
 
8
8
  export const jsenvPluginToolbar = ({ logs = false } = {}) => {
9
9
  const toolbarInjectorClientFileUrl = new URL(
@@ -20,7 +20,7 @@ export const jsenvPluginToolbar = ({ logs = false } = {}) => {
20
20
  appliesDuring: {
21
21
  dev: true,
22
22
  },
23
- transform: {
23
+ transformUrlContent: {
24
24
  html: ({ url, content }, { referenceUtils }) => {
25
25
  if (url === toolbarHtmlClientFileUrl) {
26
26
  return null
@@ -28,13 +28,15 @@ export const jsenvPluginToolbar = ({ logs = false } = {}) => {
28
28
  const htmlAst = parseHtmlString(content)
29
29
  const [toolbarInjectorReference] = referenceUtils.inject({
30
30
  type: "js_import_export",
31
+ expectedType: "js_module",
31
32
  specifier: toolbarInjectorClientFileUrl,
32
33
  })
33
34
  const [toolbarClientFileReference] = referenceUtils.inject({
34
35
  type: "iframe_src",
36
+ expectedType: "html",
35
37
  specifier: toolbarHtmlClientFileUrl,
36
38
  })
37
- injectScriptAsEarlyAsPossible(
39
+ injectScriptNodeAsEarlyAsPossible(
38
40
  htmlAst,
39
41
  createHtmlNode({
40
42
  "tagName": "script",
@@ -1,21 +1,28 @@
1
- import { assertAndNormalizeDirectoryUrl } from "@jsenv/filesystem"
2
- import { createLogger } from "@jsenv/logger"
1
+ import { findFreePort } from "@jsenv/server"
2
+ import {
3
+ assertAndNormalizeDirectoryUrl,
4
+ registerDirectoryLifecycle,
5
+ } from "@jsenv/filesystem"
6
+ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
7
+ import { createLogger, loggerToLevels, createTaskLog } from "@jsenv/log"
8
+ import { getCallerPosition } from "@jsenv/urls"
3
9
 
4
- import { createTaskLog } from "@jsenv/utils/logs/task_log.js"
10
+ import { createReloadableWorker } from "@jsenv/core/src/helpers/worker_reload.js"
11
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
5
12
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
6
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
7
13
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
8
14
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
9
15
 
10
- import { jsenvPluginAutoreload } from "./plugins/autoreload/jsenv_plugin_autoreload.js"
11
16
  import { jsenvPluginExplorer } from "./plugins/explorer/jsenv_plugin_explorer.js"
12
- import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
17
+ // import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
13
18
 
14
19
  export const startDevServer = async ({
15
20
  signal = new AbortController().signal,
16
- logLevel,
17
- port,
18
- protocol,
21
+ handleSIGINT = true,
22
+ logLevel = "info",
23
+ omegaServerLogLevel = "warn",
24
+ port = 3456,
25
+ protocol = "http",
19
26
  listenAnyIp,
20
27
  // it's better to use http1 by default because it allows to get statusText in devtools
21
28
  // which gives valuable information when there is errors
@@ -23,18 +30,42 @@ export const startDevServer = async ({
23
30
  certificate,
24
31
  privateKey,
25
32
  keepProcessAlive = true,
26
-
27
33
  rootDirectoryUrl,
28
- plugins = [],
34
+ devServerFiles = {
35
+ "./package.json": true,
36
+ "./jsenv.config.mjs": true,
37
+ },
38
+ devServerMainFile = getCallerPosition().url,
39
+ // force disable server autoreload when this code is executed:
40
+ // - inside a forked child process
41
+ // - debugged by vscode
42
+ // otherwise we get net:ERR_CONNECTION_REFUSED
43
+ devServerAutoreload = typeof process.send !== "function" &&
44
+ !process.env.VSCODE_INSPECTOR_OPTIONS,
45
+ clientFiles = {
46
+ "./src/": true,
47
+ "./test/": true,
48
+ },
49
+ cooldownBetweenFileEvents,
50
+ clientAutoreload = true,
29
51
 
30
52
  sourcemaps = "inline",
31
- autoreload = true,
32
- autoreloadPatterns = {
33
- "./**": true,
34
- "./**/.*/": false, // any folder starting with a dot is ignored (includes .git for instance)
35
- "./dist/": false,
36
- "./**/node_modules/": false,
53
+ // default runtimeCompat assume dev server will be request by recent browsers
54
+ // Used by "jsenv_plugin_node_runtime.js" to deactivate itself
55
+ // If dev server can be requested by Node.js to exec files
56
+ // we would add "node" to the potential runtimes. For now it's out of the scope of the dev server
57
+ // and "jsenv_plugin_node_runtime.js" applies only during build made for node.js
58
+ runtimeCompat = {
59
+ chrome: "100",
60
+ firefox: "100",
61
+ safari: "15.5",
37
62
  },
63
+ plugins = [],
64
+ urlAnalysis = {},
65
+ htmlSupervisor = true,
66
+ nodeEsmResolution,
67
+ fileSystemMagicResolution,
68
+ transpilation,
38
69
  explorerGroups = {
39
70
  source: {
40
71
  "./*.html": true,
@@ -44,40 +75,138 @@ export const startDevServer = async ({
44
75
  "./test/**/*.test.html": true,
45
76
  },
46
77
  },
47
- toolbar = false,
78
+ // toolbar = false,
79
+ writeGeneratedFiles = true,
48
80
  }) => {
49
81
  const logger = createLogger({ logLevel })
50
- const startServerTask = createTaskLog(logger, "start server")
51
-
52
82
  rootDirectoryUrl = assertAndNormalizeDirectoryUrl(rootDirectoryUrl)
53
- const urlGraph = createUrlGraph()
83
+ const operation = Abort.startOperation()
84
+ operation.addAbortSignal(signal)
85
+ if (handleSIGINT) {
86
+ operation.addAbortSource((abort) => {
87
+ return raceProcessTeardownEvents(
88
+ {
89
+ SIGINT: true,
90
+ },
91
+ abort,
92
+ )
93
+ })
94
+ }
95
+ if (port === 0) {
96
+ port = await findFreePort(port, { signal: operation.signal })
97
+ }
98
+
99
+ const reloadableWorker = createReloadableWorker(devServerMainFile)
100
+ if (devServerAutoreload && reloadableWorker.isPrimary) {
101
+ const devServerFileChangeCallback = ({ relativeUrl, event }) => {
102
+ const url = new URL(relativeUrl, rootDirectoryUrl).href
103
+ logger.info(`file ${event} ${url} -> restarting server...`)
104
+ reloadableWorker.reload()
105
+ }
106
+ const stopWatchingDevServerFiles = registerDirectoryLifecycle(
107
+ rootDirectoryUrl,
108
+ {
109
+ watchPatterns: {
110
+ [devServerMainFile]: true,
111
+ ...devServerFiles,
112
+ },
113
+ cooldownBetweenFileEvents,
114
+ keepProcessAlive: false,
115
+ recursive: true,
116
+ added: ({ relativeUrl }) => {
117
+ devServerFileChangeCallback({ relativeUrl, event: "added" })
118
+ },
119
+ updated: ({ relativeUrl }) => {
120
+ devServerFileChangeCallback({ relativeUrl, event: "modified" })
121
+ },
122
+ removed: ({ relativeUrl }) => {
123
+ devServerFileChangeCallback({ relativeUrl, event: "removed" })
124
+ },
125
+ },
126
+ )
127
+ operation.addAbortCallback(() => {
128
+ stopWatchingDevServerFiles()
129
+ reloadableWorker.terminate()
130
+ })
131
+
132
+ const worker = await reloadableWorker.load()
133
+ if (!keepProcessAlive) {
134
+ worker.unref()
135
+ }
136
+ return {
137
+ origin: `${protocol}://127.0.0.1:${port}`,
138
+ stop: () => {
139
+ stopWatchingDevServerFiles()
140
+ reloadableWorker.terminate()
141
+ },
142
+ }
143
+ }
144
+
145
+ const startDevServerTask = createTaskLog("start dev server", {
146
+ disabled: !loggerToLevels(logger).info,
147
+ })
148
+
149
+ const clientFileChangeCallbackList = []
150
+ const clientFilesPruneCallbackList = []
151
+ const clientFileChangeCallback = ({ relativeUrl, event }) => {
152
+ const url = new URL(relativeUrl, rootDirectoryUrl).href
153
+ clientFileChangeCallbackList.forEach((callback) => {
154
+ callback({ url, event })
155
+ })
156
+ }
157
+ const stopWatchingClientFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
158
+ watchPatterns: clientFiles,
159
+ cooldownBetweenFileEvents,
160
+ keepProcessAlive: false,
161
+ recursive: true,
162
+ added: ({ relativeUrl }) => {
163
+ clientFileChangeCallback({ event: "added", relativeUrl })
164
+ },
165
+ updated: ({ relativeUrl }) => {
166
+ clientFileChangeCallback({ event: "modified", relativeUrl })
167
+ },
168
+ removed: ({ relativeUrl }) => {
169
+ clientFileChangeCallback({ event: "removed", relativeUrl })
170
+ },
171
+ })
172
+ const urlGraph = createUrlGraph({
173
+ clientFileChangeCallbackList,
174
+ clientFilesPruneCallbackList,
175
+ })
54
176
  const kitchen = createKitchen({
55
177
  signal,
56
178
  logger,
57
179
  rootDirectoryUrl,
58
180
  urlGraph,
181
+ scenario: "dev",
182
+ runtimeCompat,
183
+ sourcemaps,
184
+ writeGeneratedFiles,
59
185
  plugins: [
60
186
  ...plugins,
61
- ...getCorePlugins(),
62
- ...(autoreload
63
- ? [
64
- jsenvPluginAutoreload({
65
- rootDirectoryUrl,
66
- urlGraph,
67
- autoreloadPatterns,
68
- }),
69
- ]
70
- : []),
187
+ ...getCorePlugins({
188
+ rootDirectoryUrl,
189
+ urlGraph,
190
+ scenario: "dev",
191
+ runtimeCompat,
192
+
193
+ urlAnalysis,
194
+ htmlSupervisor,
195
+ nodeEsmResolution,
196
+ fileSystemMagicResolution,
197
+ transpilation,
198
+ clientAutoreload,
199
+ clientFileChangeCallbackList,
200
+ clientFilesPruneCallbackList,
201
+ }),
71
202
  jsenvPluginExplorer({
72
203
  groups: explorerGroups,
73
204
  }),
74
- ...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
205
+ // ...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
75
206
  ],
76
- scenario: "dev",
77
- sourcemaps,
78
207
  })
79
208
  const server = await startOmegaServer({
80
- logger,
209
+ logLevel: omegaServerLogLevel,
81
210
  keepProcessAlive,
82
211
  listenAnyIp,
83
212
  port,
@@ -90,7 +219,7 @@ export const startDevServer = async ({
90
219
  kitchen,
91
220
  scenario: "dev",
92
221
  })
93
- startServerTask.done()
222
+ startDevServerTask.done()
94
223
  logger.info(``)
95
224
  Object.keys(server.origins).forEach((key) => {
96
225
  logger.info(`- ${server.origins[key]}`)
@@ -98,8 +227,14 @@ export const startDevServer = async ({
98
227
  logger.info(``)
99
228
  server.addEffect(() => {
100
229
  return () => {
101
- kitchen.pluginController.callHooks("destroy")
230
+ kitchen.pluginController.callHooks("destroy", {})
102
231
  }
103
232
  })
104
- return server
233
+ return {
234
+ origin: server.origin,
235
+ stop: () => {
236
+ stopWatchingClientFiles()
237
+ server.stop()
238
+ },
239
+ }
105
240
  }
@@ -1,10 +1,9 @@
1
1
  import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
2
2
 
3
3
  import { assertAndNormalizeDirectoryUrl } from "@jsenv/filesystem"
4
- import { createLogger } from "@jsenv/logger"
5
-
4
+ import { createLogger } from "@jsenv/log"
5
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
6
6
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
7
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
8
7
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
9
8
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
10
9
 
@@ -23,12 +22,18 @@ export const execute = async ({
23
22
  collectConsole,
24
23
  collectCoverage,
25
24
  coverageTempDirectoryUrl,
25
+ collectPerformance = false,
26
26
  runtime,
27
27
  runtimeParams,
28
28
 
29
- plugins = [],
30
29
  scenario = "dev",
31
30
  sourcemaps = "inline",
31
+ plugins = [],
32
+ nodeEsmResolution,
33
+ fileSystemMagicResolution,
34
+ transpilation,
35
+ htmlSupervisor = true,
36
+ writeGeneratedFiles = false,
32
37
 
33
38
  port,
34
39
  protocol,
@@ -53,6 +58,7 @@ export const execute = async ({
53
58
  })
54
59
  }
55
60
 
61
+ let resultTransformer = (result) => result
56
62
  runtimeParams = {
57
63
  rootDirectoryUrl,
58
64
  fileRelativeUrl,
@@ -60,19 +66,34 @@ export const execute = async ({
60
66
  }
61
67
  if (runtime.needsServer) {
62
68
  const urlGraph = createUrlGraph()
69
+ const runtimeCompat = { [runtime.name]: runtime.version }
63
70
  const kitchen = createKitchen({
64
71
  signal,
65
72
  logger,
66
73
  rootDirectoryUrl,
67
74
  urlGraph,
68
- plugins: [...plugins, ...getCorePlugins()],
69
75
  scenario,
70
76
  sourcemaps,
77
+ runtimeCompat,
78
+ writeGeneratedFiles,
79
+ plugins: [
80
+ ...plugins,
81
+ ...getCorePlugins({
82
+ rootDirectoryUrl,
83
+ urlGraph,
84
+ scenario,
85
+ runtimeCompat,
86
+
87
+ htmlSupervisor,
88
+ nodeEsmResolution,
89
+ fileSystemMagicResolution,
90
+ transpilation,
91
+ }),
92
+ ],
71
93
  })
72
- const serverLogger = createLogger({ logLevel: "warn" })
73
94
  const server = await startOmegaServer({
74
95
  signal: executeOperation.signal,
75
- logger: serverLogger,
96
+ logLevel: "warn",
76
97
  rootDirectoryUrl,
77
98
  urlGraph,
78
99
  kitchen,
@@ -91,9 +112,13 @@ export const execute = async ({
91
112
  ...runtimeParams,
92
113
  server,
93
114
  }
115
+ resultTransformer = (result) => {
116
+ result.server = server
117
+ return result
118
+ }
94
119
  }
95
120
 
96
- const result = await run({
121
+ let result = await run({
97
122
  signal: executeOperation.signal,
98
123
  logger,
99
124
  allocatedMs,
@@ -102,9 +127,11 @@ export const execute = async ({
102
127
  collectConsole,
103
128
  collectCoverage,
104
129
  coverageTempDirectoryUrl,
130
+ collectPerformance,
105
131
  runtime,
106
132
  runtimeParams,
107
133
  })
134
+ result = resultTransformer(result)
108
135
 
109
136
  try {
110
137
  if (result.status === "errored") {
@@ -1,7 +1,7 @@
1
1
  import cuid from "cuid"
2
2
  import { Abort, raceCallbacks } from "@jsenv/abort"
3
- import { resolveUrl, writeFile } from "@jsenv/filesystem"
4
- import { createDetailedMessage } from "@jsenv/logger"
3
+ import { resolveUrl } from "@jsenv/urls"
4
+ import { writeFile } from "@jsenv/filesystem"
5
5
 
6
6
  export const run = async ({
7
7
  signal = new AbortController().signal,
@@ -12,15 +12,12 @@ export const run = async ({
12
12
  collectConsole = false,
13
13
  collectCoverage = false,
14
14
  coverageTempDirectoryUrl,
15
- // measurePerformance,
16
- // collectPerformance = false,
15
+ collectPerformance = false,
17
16
 
18
17
  runtime,
19
18
  runtimeParams,
20
19
  }) => {
21
- const onErrorRef = { current: () => {} }
22
20
  const onConsoleRef = { current: () => {} }
23
- const onStopRef = { current: () => {} }
24
21
  const stopSignal = { notify: () => {} }
25
22
 
26
23
  let resultTransformer = (result) => result
@@ -105,7 +102,7 @@ export const run = async ({
105
102
  try {
106
103
  logger.debug(`run() ${runtimeLabel}`)
107
104
  runOperation.throwIfAborted()
108
- const winnerPromise = new Promise((resolve, reject) => {
105
+ const winnerPromise = new Promise((resolve) => {
109
106
  raceCallbacks(
110
107
  {
111
108
  aborted: (cb) => {
@@ -114,35 +111,23 @@ export const run = async ({
114
111
  runOperation.signal.removeEventListener("abort", cb)
115
112
  }
116
113
  },
117
- errored: (cb) => {
118
- onErrorRef.current = (error) => {
119
- logger.debug(
120
- createDetailedMessage(`error during execution`, {
121
- ["error stack"]: error.stack,
122
- ["runtime"]: runtimeLabel,
123
- }),
124
- )
125
- cb(error)
126
- }
127
- },
128
- stopped: (cb) => {
129
- onStopRef.current = cb
130
- },
131
114
  runned: async (cb) => {
132
115
  try {
133
- await runtime.run({
134
- signal,
116
+ const result = await runtime.run({
117
+ signal: runOperation.signal,
135
118
  logger,
136
119
  ...runtimeParams,
120
+ collectPerformance,
137
121
  keepRunning,
138
122
  stopSignal,
139
- onStop: (stopInfo) => onStopRef.current(stopInfo),
140
- onError: (error) => onErrorRef.current(error),
141
123
  onConsole: (log) => onConsoleRef.current(log),
142
- onResult: cb,
143
124
  })
125
+ cb(result)
144
126
  } catch (e) {
145
- reject(e)
127
+ cb({
128
+ status: "errored",
129
+ error: e,
130
+ })
146
131
  }
147
132
  },
148
133
  },
@@ -153,31 +138,16 @@ export const run = async ({
153
138
  if (winner.name === "aborted") {
154
139
  runOperation.throwIfAborted()
155
140
  }
156
- if (winner.name === "errored") {
157
- return await resultTransformer(
158
- createErroredExecutionResult({
159
- error: winner.data,
160
- }),
161
- )
162
- }
163
- if (winner.name === "stopped") {
164
- return await resultTransformer(
165
- createErroredExecutionResult({
166
- error: new Error(`runtime stopped during execution`),
167
- }),
168
- )
169
- }
170
- onErrorRef.current = (error) => {
171
- throw error
141
+ let result = winner.data
142
+ result = await resultTransformer(result)
143
+ return result
144
+ } catch (e) {
145
+ let result = {
146
+ status: "errored",
147
+ error: e,
172
148
  }
173
- const result = winner.data
174
- return await resultTransformer(result)
175
- } catch (error) {
176
- return await resultTransformer(
177
- createErroredExecutionResult({
178
- error,
179
- }),
180
- )
149
+ result = await resultTransformer(result)
150
+ return result
181
151
  } finally {
182
152
  await runOperation.end()
183
153
  }
@@ -200,9 +170,3 @@ const createTimedoutResult = () => {
200
170
  status: "timedout",
201
171
  }
202
172
  }
203
- const createErroredExecutionResult = ({ error }) => {
204
- return {
205
- status: "errored",
206
- error,
207
- }
208
- }