@jsenv/core 27.0.0-alpha.3 → 27.0.0-alpha.32

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 (222) hide show
  1. package/main.js +4 -0
  2. package/package.json +17 -14
  3. package/readme.md +4 -12
  4. package/src/build/build.js +690 -429
  5. package/src/build/build_urls_generator.js +33 -21
  6. package/src/build/graph_utils.js +31 -0
  7. package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +33 -15
  8. package/src/build/inject_service_worker_urls.js +79 -0
  9. package/src/build/resync_ressource_hints.js +68 -0
  10. package/src/build/start_build_server.js +201 -0
  11. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +2 -2
  12. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
  13. package/src/dev/start_dev_server.js +58 -26
  14. package/src/execute/execute.js +30 -4
  15. package/src/execute/run.js +19 -56
  16. package/src/execute/runtimes/browsers/from_playwright.js +201 -147
  17. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  18. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  19. package/src/execute/runtimes/node/node_process.js +280 -39
  20. package/src/omega/{runtime_support/default_runtime_support.js → compat/default_runtime_compat.js} +3 -5
  21. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +66 -4
  22. package/src/omega/compat/runtime_compat.js +50 -0
  23. package/src/omega/errors.js +51 -58
  24. package/src/omega/fetched_content_compliance.js +24 -0
  25. package/src/omega/file_url_converter.js +8 -50
  26. package/src/omega/kitchen.js +409 -286
  27. package/src/omega/server/file_service.js +9 -11
  28. package/src/omega/url_graph/url_graph_load.js +14 -7
  29. package/src/omega/url_graph/url_graph_report.js +17 -15
  30. package/src/omega/url_graph.js +32 -10
  31. package/src/omega/web_workers.js +42 -0
  32. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  33. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +2 -2
  34. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  35. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  36. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  37. package/src/{dev/plugins/autoreload/jsenv_plugin_autoreload.js → plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js} +27 -168
  38. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  39. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  40. package/src/plugins/bundling/css/bundle_css.js +21 -0
  41. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  42. package/src/{build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js → plugins/bundling/js_module/bundle_js_module.js} +120 -79
  43. package/src/plugins/bundling/jsenv_plugin_bundling.js +51 -0
  44. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +48 -41
  45. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +66 -0
  46. package/src/{omega/core_plugins → plugins}/filesystem_magic/jsenv_plugin_filesystem_magic.js +7 -4
  47. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  48. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  49. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_installer.js +3 -2
  50. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_setup.js +0 -0
  51. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  52. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  53. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +38 -46
  54. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  55. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  56. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  57. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +2 -2
  58. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +98 -0
  59. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +26 -8
  60. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  61. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  62. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +37 -31
  63. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +25 -0
  64. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  65. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +18 -14
  66. package/src/{omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js → plugins/inline/jsenv_plugin_html_inline_content.js} +61 -40
  67. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  68. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +6 -6
  69. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +263 -0
  70. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  71. package/src/plugins/minification/css/minify_css.js +9 -0
  72. package/src/plugins/minification/html/minify_html.js +15 -0
  73. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  74. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  75. package/src/plugins/minification/json/minify_json.js +8 -0
  76. package/src/{omega/core_plugins → plugins}/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +15 -15
  77. package/src/{omega → plugins}/plugin_controller.js +18 -10
  78. package/src/plugins/plugins.js +73 -0
  79. package/src/plugins/transpilation/as_js_classic/client/s.js +808 -0
  80. package/src/plugins/transpilation/as_js_classic/client/s.js.md +1 -0
  81. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  82. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  83. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +183 -0
  84. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_script_type_module_as_classic.js +256 -0
  85. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_workers_type_module_as_classic.js +139 -0
  86. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  87. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  88. package/src/{omega/core_plugins/babel/babel_helper → plugins/transpilation/babel/helpers}/babel_plugin_babel_helpers_as_jsenv_imports.js +1 -2
  89. package/src/plugins/transpilation/babel/helpers/babel_plugin_structure.js +161 -0
  90. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  91. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +38 -22
  92. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
  93. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/.eslintrc.cjs +0 -0
  94. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  95. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  96. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  97. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  98. package/src/plugins/transpilation/fetch_original_url_info.js +30 -0
  99. package/src/{omega/core_plugins → plugins/transpilation}/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -0
  100. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +225 -0
  101. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +37 -0
  102. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +44 -0
  103. package/src/plugins/url_references/css/css_urls.js +49 -0
  104. package/src/plugins/url_references/html/html_urls.js +273 -0
  105. package/src/plugins/url_references/js/js_urls.js +163 -0
  106. package/src/plugins/url_references/jsenv_plugin_url_references.js +18 -0
  107. package/src/plugins/url_references/webmanifest/webmanifest_urls.js +17 -0
  108. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +12 -5
  109. package/src/{omega/core_plugins → plugins}/url_version/jsenv_plugin_url_version.js +8 -8
  110. package/src/test/execute_plan.js +25 -11
  111. package/src/test/execute_test_plan.js +14 -1
  112. package/src/test/logs_file_execution.js +8 -7
  113. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  114. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  115. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  116. package/src/execute/runtimes/node/controlled_process.js +0 -316
  117. package/src/omega/core_plugins/babel/babel_helper/babel_helper_directory.js +0 -29
  118. package/src/omega/core_plugins/babel/babel_helper/client/.eslintrc.cjs +0 -24
  119. package/src/omega/core_plugins/babel/babel_helper/client/AsyncGenerator/AsyncGenerator.js +0 -81
  120. package/src/omega/core_plugins/babel/babel_helper/client/AwaitValue/AwaitValue.js +0 -3
  121. package/src/omega/core_plugins/babel/babel_helper/client/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -33
  122. package/src/omega/core_plugins/babel/babel_helper/client/arrayLikeToArray/arrayLikeToArray.js +0 -7
  123. package/src/omega/core_plugins/babel/babel_helper/client/arrayWithHoles/arrayWithHoles.js +0 -4
  124. package/src/omega/core_plugins/babel/babel_helper/client/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  125. package/src/omega/core_plugins/babel/babel_helper/client/assertThisInitialized/assertThisInitialized.js +0 -7
  126. package/src/omega/core_plugins/babel/babel_helper/client/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -40
  127. package/src/omega/core_plugins/babel/babel_helper/client/asyncIterator/asyncIterator.js +0 -65
  128. package/src/omega/core_plugins/babel/babel_helper/client/asyncToGenerator/asyncToGenerator.js +0 -34
  129. package/src/omega/core_plugins/babel/babel_helper/client/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  130. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -20
  131. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  132. package/src/omega/core_plugins/babel/babel_helper/client/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  133. package/src/omega/core_plugins/babel/babel_helper/client/classCallCheck/classCallCheck.js +0 -5
  134. package/src/omega/core_plugins/babel/babel_helper/client/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -5
  135. package/src/omega/core_plugins/babel/babel_helper/client/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -6
  136. package/src/omega/core_plugins/babel/babel_helper/client/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -7
  137. package/src/omega/core_plugins/babel/babel_helper/client/classNameTDZError/classNameTDZError.js +0 -4
  138. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  139. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  140. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  141. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  142. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  143. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  144. package/src/omega/core_plugins/babel/babel_helper/client/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  145. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -9
  146. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  147. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -6
  148. package/src/omega/core_plugins/babel/babel_helper/client/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  149. package/src/omega/core_plugins/babel/babel_helper/client/construct/construct.js +0 -16
  150. package/src/omega/core_plugins/babel/babel_helper/client/createClass/createClass.js +0 -15
  151. package/src/omega/core_plugins/babel/babel_helper/client/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -60
  152. package/src/omega/core_plugins/babel/babel_helper/client/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -23
  153. package/src/omega/core_plugins/babel/babel_helper/client/createRawReactElement/createRawReactElement.js +0 -50
  154. package/src/omega/core_plugins/babel/babel_helper/client/createSuper/createSuper.js +0 -22
  155. package/src/omega/core_plugins/babel/babel_helper/client/decorate/decorate.js +0 -403
  156. package/src/omega/core_plugins/babel/babel_helper/client/defaults/defaults.js +0 -11
  157. package/src/omega/core_plugins/babel/babel_helper/client/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  158. package/src/omega/core_plugins/babel/babel_helper/client/defineProperty/defineProperty.js +0 -18
  159. package/src/omega/core_plugins/babel/babel_helper/client/extends/extends.js +0 -14
  160. package/src/omega/core_plugins/babel/babel_helper/client/get/get.js +0 -19
  161. package/src/omega/core_plugins/babel/babel_helper/client/getPrototypeOf/getPrototypeOf.js +0 -4
  162. package/src/omega/core_plugins/babel/babel_helper/client/inherits/inherits.js +0 -19
  163. package/src/omega/core_plugins/babel/babel_helper/client/inheritsLoose/inheritsLoose.js +0 -7
  164. package/src/omega/core_plugins/babel/babel_helper/client/initializerDefineProperty/initializerDefineProperty.js +0 -10
  165. package/src/omega/core_plugins/babel/babel_helper/client/initializerWarningHelper/initializerWarningHelper.js +0 -6
  166. package/src/omega/core_plugins/babel/babel_helper/client/instanceof/instanceof.js +0 -6
  167. package/src/omega/core_plugins/babel/babel_helper/client/interopRequireDefault/interopRequireDefault.js +0 -3
  168. package/src/omega/core_plugins/babel/babel_helper/client/interopRequireWildcard/interopRequireWildcard.js +0 -37
  169. package/src/omega/core_plugins/babel/babel_helper/client/isNativeFunction/isNativeFunction.js +0 -4
  170. package/src/omega/core_plugins/babel/babel_helper/client/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -21
  171. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArray/iterableToArray.js +0 -7
  172. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArrayLimit/iterableToArrayLimit.js +0 -36
  173. package/src/omega/core_plugins/babel/babel_helper/client/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -10
  174. package/src/omega/core_plugins/babel/babel_helper/client/jsx/jsx.js +0 -50
  175. package/src/omega/core_plugins/babel/babel_helper/client/maybeArrayLike/maybeArrayLike.js +0 -10
  176. package/src/omega/core_plugins/babel/babel_helper/client/newArrowCheck/newArrowCheck.js +0 -5
  177. package/src/omega/core_plugins/babel/babel_helper/client/nonIterableRest/nonIterableRest.js +0 -5
  178. package/src/omega/core_plugins/babel/babel_helper/client/nonIterableSpread/nonIterableSpread.js +0 -5
  179. package/src/omega/core_plugins/babel/babel_helper/client/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  180. package/src/omega/core_plugins/babel/babel_helper/client/objectSpread/objectSpread.js +0 -23
  181. package/src/omega/core_plugins/babel/babel_helper/client/objectSpread2/objectSpread2.js +0 -41
  182. package/src/omega/core_plugins/babel/babel_helper/client/objectWithoutProperties/objectWithoutProperties.js +0 -19
  183. package/src/omega/core_plugins/babel/babel_helper/client/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  184. package/src/omega/core_plugins/babel/babel_helper/client/possibleConstructorReturn/possibleConstructorReturn.js +0 -10
  185. package/src/omega/core_plugins/babel/babel_helper/client/readOnlyError/readOnlyError.js +0 -4
  186. package/src/omega/core_plugins/babel/babel_helper/client/readme.md +0 -8
  187. package/src/omega/core_plugins/babel/babel_helper/client/set/set.js +0 -44
  188. package/src/omega/core_plugins/babel/babel_helper/client/setPrototypeOf/setPrototypeOf.js +0 -6
  189. package/src/omega/core_plugins/babel/babel_helper/client/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  190. package/src/omega/core_plugins/babel/babel_helper/client/slicedToArray/slicedToArray.js +0 -10
  191. package/src/omega/core_plugins/babel/babel_helper/client/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  192. package/src/omega/core_plugins/babel/babel_helper/client/superPropBase/superPropBase.js +0 -10
  193. package/src/omega/core_plugins/babel/babel_helper/client/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  194. package/src/omega/core_plugins/babel/babel_helper/client/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  195. package/src/omega/core_plugins/babel/babel_helper/client/tdz/tdz.js +0 -4
  196. package/src/omega/core_plugins/babel/babel_helper/client/temporalRef/temporalRef.js +0 -6
  197. package/src/omega/core_plugins/babel/babel_helper/client/temporalUndefined/temporalUndefined.js +0 -3
  198. package/src/omega/core_plugins/babel/babel_helper/client/toArray/toArray.js +0 -10
  199. package/src/omega/core_plugins/babel/babel_helper/client/toConsumableArray/toConsumableArray.js +0 -10
  200. package/src/omega/core_plugins/babel/babel_helper/client/toPrimitive/toPrimitive.js +0 -10
  201. package/src/omega/core_plugins/babel/babel_helper/client/toPropertyKey/toPropertyKey.js +0 -6
  202. package/src/omega/core_plugins/babel/babel_helper/client/typeof/typeof.js +0 -14
  203. package/src/omega/core_plugins/babel/babel_helper/client/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  204. package/src/omega/core_plugins/babel/babel_helper/client/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  205. package/src/omega/core_plugins/babel/babel_helper/client/wrapNativeSuper/wrapNativeSuper.js +0 -30
  206. package/src/omega/core_plugins/babel/babel_helper/client/wrapRegExp/wrapRegExp.js +0 -63
  207. package/src/omega/core_plugins/babel/babel_helper/client/writeOnlyError/writeOnlyError.js +0 -4
  208. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +0 -187
  209. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  210. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  211. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  212. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  213. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  214. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -210
  215. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  216. package/src/omega/core_plugins.js +0 -39
  217. package/src/omega/runtime_support/runtime_support.js +0 -20
  218. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  219. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  220. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  221. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  222. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -9,7 +9,7 @@ import {
9
9
  ensureEmptyDirectory,
10
10
  normalizeStructuredMetaMap,
11
11
  urlToMeta,
12
- writeFile,
12
+ writeFileSync,
13
13
  } from "@jsenv/filesystem"
14
14
  import {
15
15
  createLogger,
@@ -22,7 +22,7 @@ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
22
22
  import { babelPluginInstrument } from "@jsenv/utils/coverage/babel_plugin_instrument.js"
23
23
  import { reportToCoverage } from "@jsenv/utils/coverage/report_to_coverage.js"
24
24
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
25
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
25
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
26
26
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
27
27
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
28
28
  import { run } from "@jsenv/core/src/execute/run.js"
@@ -62,9 +62,13 @@ export const executePlan = async (
62
62
  coverageV8ConflictWarning,
63
63
  coverageTempDirectoryRelativeUrl,
64
64
 
65
- plugins = [],
66
- scenario = "test",
67
- sourcemaps = "inline",
65
+ scenario,
66
+ sourcemaps,
67
+ plugins,
68
+ injectedGlobals,
69
+ nodeEsmResolution,
70
+ fileSystemMagicResolution,
71
+ transpilation,
68
72
 
69
73
  protocol,
70
74
  privateKey,
@@ -132,12 +136,24 @@ export const executePlan = async (
132
136
  logger,
133
137
  rootDirectoryUrl,
134
138
  urlGraph,
139
+ scenario,
140
+ sourcemaps,
141
+ writeOnFileSystem: false,
135
142
  plugins: [
136
143
  ...plugins,
137
144
  ...getCorePlugins({
138
- babel: {
139
- getCustomBabelPlugins: ({ runtimeSupport }) => {
140
- if (coverage && Object.keys(runtimeSupport)[0] !== "chrome") {
145
+ scenario,
146
+ htmlSupervisor: true,
147
+ nodeEsmResolution,
148
+ fileSystemMagicResolution,
149
+ injectedGlobals,
150
+ transpilation: {
151
+ ...transpilation,
152
+ getCustomBabelPlugins: ({ clientRuntimeCompat }) => {
153
+ if (
154
+ coverage &&
155
+ Object.keys(clientRuntimeCompat)[0] !== "chrome"
156
+ ) {
141
157
  return {
142
158
  "transform-instrument": [
143
159
  babelPluginInstrument,
@@ -153,8 +169,6 @@ export const executePlan = async (
153
169
  },
154
170
  }),
155
171
  ],
156
- scenario,
157
- sourcemaps,
158
172
  })
159
173
  const serverLogger = createLogger({ logLevel: "warn" })
160
174
  const server = await startOmegaServer({
@@ -433,7 +447,7 @@ export const executePlan = async (
433
447
  }
434
448
  if (summary.counters.total !== summary.counters.completed) {
435
449
  const logFileUrl = new URL(logFileRelativeUrl, rootDirectoryUrl).href
436
- writeFile(logFileUrl, rawOutput)
450
+ writeFileSync(logFileUrl, rawOutput)
437
451
  logger.info(`-> ${urlToFileSystemPath(logFileUrl)}`)
438
452
  }
439
453
  const result = await transformReturnValue({
@@ -80,6 +80,12 @@ export const executeTestPlan = async ({
80
80
  // skip full means file with 100% coverage won't appear in coverage reports (log and html)
81
81
  coverageSkipFull = false,
82
82
 
83
+ sourcemaps = "inline",
84
+ plugins = [],
85
+ injectedGlobals,
86
+ nodeEsmResolution,
87
+ fileSystemMagicResolution,
88
+
83
89
  protocol,
84
90
  privateKey,
85
91
  certificate,
@@ -143,8 +149,8 @@ export const executeTestPlan = async ({
143
149
  logFileRelativeUrl,
144
150
  completedExecutionLogMerging,
145
151
  completedExecutionLogAbbreviation,
146
-
147
152
  rootDirectoryUrl,
153
+
148
154
  maxExecutionsInParallel,
149
155
  defaultMsAllocatedPerExecution,
150
156
  failFast,
@@ -159,6 +165,13 @@ export const executeTestPlan = async ({
159
165
  coverageV8ConflictWarning,
160
166
  coverageTempDirectoryRelativeUrl,
161
167
 
168
+ scenario: "test",
169
+ sourcemaps,
170
+ plugins,
171
+ injectedGlobals,
172
+ nodeEsmResolution,
173
+ fileSystemMagicResolution,
174
+
162
175
  protocol,
163
176
  privateKey,
164
177
  certificate,
@@ -38,7 +38,8 @@ export const formatExecutionResult = (
38
38
  { completedExecutionLogAbbreviation, counters, memoryHeap },
39
39
  ) => {
40
40
  const { status } = executionResult
41
- const description = descriptionFormatters[status]({
41
+ const descriptionFormatter = descriptionFormatters[status]
42
+ const description = descriptionFormatter({
42
43
  index: executionIndex,
43
44
  total: counters.total,
44
45
  executionParams,
@@ -52,7 +53,7 @@ export const formatExecutionResult = (
52
53
  return `${description} ${summary}`
53
54
  }
54
55
  const { consoleCalls = [], error, duration } = executionResult
55
- const console = formatConsoleCalls(consoleCalls)
56
+ const consoleOutput = formatConsoleCalls(consoleCalls)
56
57
  return formatExecution({
57
58
  label: `${description} ${summary}`,
58
59
  details: {
@@ -61,7 +62,7 @@ export const formatExecutionResult = (
61
62
  duration: msAsDuration(duration),
62
63
  ...(error ? { error: error.stack } : {}),
63
64
  },
64
- console,
65
+ consoleOutput,
65
66
  })
66
67
  }
67
68
 
@@ -203,21 +204,21 @@ const formatConsoleCalls = (consoleCalls) => {
203
204
  if (consoleOutputTrimmed === "") {
204
205
  return ""
205
206
  }
206
- return `${ANSI.color(`-------- console --------`, ANSI.GREY)}
207
+ return `${ANSI.color(`-------- console output --------`, ANSI.GREY)}
207
208
  ${consoleOutputTrimmed}
208
209
  ${ANSI.color(`-------------------------`, ANSI.GREY)}`
209
210
  }
210
211
 
211
- const formatExecution = ({ label, details = {}, console }) => {
212
+ const formatExecution = ({ label, details = {}, consoleOutput }) => {
212
213
  let message = ``
213
214
  message += label
214
215
  Object.keys(details).forEach((key) => {
215
216
  message += `
216
217
  ${key}: ${details[key]}`
217
218
  })
218
- if (console) {
219
+ if (consoleOutput) {
219
220
  message += `
220
- ${console}`
221
+ ${consoleOutput}`
221
222
  }
222
223
  return message
223
224
  }
@@ -1,30 +0,0 @@
1
- import { createRequire } from "node:module"
2
-
3
- const require = createRequire(import.meta.url)
4
-
5
- // https://github.com/kangax/html-minifier#options-quick-reference
6
- export const jsenvPluginMinifyHtml = ({
7
- collapseWhitespace = true,
8
- removeComments = true,
9
- } = {}) => {
10
- return {
11
- name: "jsenv:minify_html",
12
- appliesDuring: {
13
- build: true,
14
- },
15
- optimize: {
16
- html: async (htmlUrlInfo) => {
17
- return minifyHtml(htmlUrlInfo.content, {
18
- collapseWhitespace,
19
- removeComments,
20
- })
21
- },
22
- },
23
- }
24
- }
25
-
26
- const minifyHtml = (htmlString, options) => {
27
- const { minify } = require("html-minifier")
28
- const htmlMinified = minify(htmlString, options)
29
- return htmlMinified
30
- }
@@ -1,195 +0,0 @@
1
- export const createEventSourceConnection = (
2
- eventSourceUrl,
3
- events = {},
4
- { retryMaxAttempt = Infinity, retryAllocatedMs = Infinity, lastEventId } = {},
5
- ) => {
6
- const { EventSource } = window
7
- if (typeof EventSource !== "function") {
8
- return () => {}
9
- }
10
-
11
- const eventSourceOrigin = new URL(eventSourceUrl).origin
12
- Object.keys(events).forEach((eventName) => {
13
- const eventCallback = events[eventName]
14
- events[eventName] = (e) => {
15
- if (e.origin === eventSourceOrigin) {
16
- if (e.lastEventId) {
17
- lastEventId = e.lastEventId
18
- }
19
- eventCallback(e)
20
- }
21
- }
22
- })
23
-
24
- const status = {
25
- value: "default",
26
- goTo: (value) => {
27
- if (value === status.value) {
28
- return
29
- }
30
- status.value = value
31
- status.onchange()
32
- },
33
- onchange: () => {},
34
- }
35
- let _disconnect = () => {}
36
-
37
- const attemptConnection = (url) => {
38
- const eventSource = new EventSource(url, {
39
- withCredentials: true,
40
- })
41
- _disconnect = () => {
42
- if (status.value !== "connecting" && status.value !== "connected") {
43
- console.warn(
44
- `disconnect() ignored because connection is ${status.value}`,
45
- )
46
- return
47
- }
48
- eventSource.onerror = undefined
49
- eventSource.close()
50
- Object.keys(events).forEach((eventName) => {
51
- eventSource.removeEventListener(eventName, events[eventName])
52
- })
53
- status.goTo("disconnected")
54
- }
55
- let retryCount = 0
56
- let firstRetryMs = Date.now()
57
- eventSource.onerror = (errorEvent) => {
58
- if (errorEvent.target.readyState === EventSource.CONNECTING) {
59
- if (retryCount > retryMaxAttempt) {
60
- console.info(`could not connect after ${retryMaxAttempt} attempt`)
61
- _disconnect()
62
- return
63
- }
64
-
65
- if (retryCount === 0) {
66
- firstRetryMs = Date.now()
67
- } else {
68
- const allRetryDuration = Date.now() - firstRetryMs
69
- if (retryAllocatedMs && allRetryDuration > retryAllocatedMs) {
70
- console.info(
71
- `could not connect in less than ${retryAllocatedMs} ms`,
72
- )
73
- _disconnect()
74
- return
75
- }
76
- }
77
-
78
- retryCount++
79
- status.goTo("connecting")
80
- return
81
- }
82
-
83
- if (errorEvent.target.readyState === EventSource.CLOSED) {
84
- _disconnect()
85
- return
86
- }
87
- }
88
- eventSource.onopen = () => {
89
- status.goTo("connected")
90
- }
91
- Object.keys(events).forEach((eventName) => {
92
- eventSource.addEventListener(eventName, events[eventName])
93
- })
94
- if (!events.hasOwnProperty("welcome")) {
95
- eventSource.addEventListener("welcome", (e) => {
96
- if (e.origin === eventSourceOrigin && e.lastEventId) {
97
- lastEventId = e.lastEventId
98
- }
99
- })
100
- }
101
- status.goTo("connecting")
102
- }
103
-
104
- let connect = () => {
105
- attemptConnection(eventSourceUrl)
106
- connect = () => {
107
- attemptConnection(
108
- lastEventId
109
- ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId)
110
- : eventSourceUrl,
111
- )
112
- }
113
- }
114
-
115
- const removePageUnloadListener = listenPageUnload(() => {
116
- if (status.value === "connecting" || status.value === "connected") {
117
- _disconnect()
118
- }
119
- })
120
-
121
- const destroy = () => {
122
- removePageUnloadListener()
123
- _disconnect()
124
- }
125
-
126
- return {
127
- status,
128
- connect,
129
- disconnect: () => _disconnect(),
130
- destroy,
131
- }
132
- }
133
-
134
- const addLastEventIdIntoUrlSearchParams = (url, lastEventId) => {
135
- if (url.indexOf("?") === -1) {
136
- url += "?"
137
- } else {
138
- url += "&"
139
- }
140
- return `${url}last-event-id=${encodeURIComponent(lastEventId)}`
141
- }
142
-
143
- // const listenPageMightFreeze = (callback) => {
144
- // const removePageHideListener = listenEvent(window, "pagehide", (pageHideEvent) => {
145
- // if (pageHideEvent.persisted === true) {
146
- // callback(pageHideEvent)
147
- // }
148
- // })
149
- // return removePageHideListener
150
- // }
151
-
152
- // const listenPageFreeze = (callback) => {
153
- // const removeFreezeListener = listenEvent(document, "freeze", (freezeEvent) => {
154
- // callback(freezeEvent)
155
- // })
156
- // return removeFreezeListener
157
- // }
158
-
159
- // const listenPageIsRestored = (callback) => {
160
- // const removeResumeListener = listenEvent(document, "resume", (resumeEvent) => {
161
- // removePageshowListener()
162
- // callback(resumeEvent)
163
- // })
164
- // const removePageshowListener = listenEvent(window, "pageshow", (pageshowEvent) => {
165
- // if (pageshowEvent.persisted === true) {
166
- // removePageshowListener()
167
- // removeResumeListener()
168
- // callback(pageshowEvent)
169
- // }
170
- // })
171
- // return () => {
172
- // removeResumeListener()
173
- // removePageshowListener()
174
- // }
175
- // }
176
-
177
- const listenPageUnload = (callback) => {
178
- const removePageHideListener = listenEvent(
179
- window,
180
- "pagehide",
181
- (pageHideEvent) => {
182
- if (pageHideEvent.persisted !== true) {
183
- callback(pageHideEvent)
184
- }
185
- },
186
- )
187
- return removePageHideListener
188
- }
189
-
190
- const listenEvent = (emitter, event, callback) => {
191
- emitter.addEventListener(event, callback)
192
- return () => {
193
- emitter.removeEventListener(event, callback)
194
- }
195
- }
@@ -1,149 +0,0 @@
1
- import { createSSERoom } from "@jsenv/server"
2
- import { registerDirectoryLifecycle } from "@jsenv/filesystem"
3
- import {
4
- createCallbackList,
5
- createCallbackListNotifiedOnce,
6
- } from "@jsenv/abort"
7
-
8
- export const createSSEService = ({
9
- rootDirectoryUrl,
10
- autoreloadPatterns,
11
- onFileChange,
12
- hotUpdateCallbackList,
13
- }) => {
14
- const destroyCallbackList = createCallbackListNotifiedOnce()
15
- const projectFileModified = createCallbackList()
16
- const projectFileRemoved = createCallbackList()
17
- const projectFileAdded = createCallbackList()
18
- const watchProjectFiles = (callback) => {
19
- const removeModifiedCallback = projectFileModified.add((relativeUrl) => {
20
- callback({
21
- event: "modified",
22
- relativeUrl,
23
- })
24
- })
25
- const removeRemovedCallback = projectFileRemoved.add((relativeUrl) => {
26
- callback({
27
- event: "removed",
28
- relativeUrl,
29
- })
30
- })
31
- const removeAddedCallback = projectFileRemoved.add((relativeUrl) => {
32
- callback({
33
- event: "added",
34
- relativeUrl,
35
- })
36
- })
37
- return () => {
38
- removeModifiedCallback()
39
- removeRemovedCallback()
40
- removeAddedCallback()
41
- }
42
- }
43
- // wait 100ms to actually start watching
44
- // otherwise server starting is delayed by the filesystem scan done in
45
- // registerDirectoryLifecycle
46
- const timeout = setTimeout(() => {
47
- const unregisterDirectoryLifecyle = registerDirectoryLifecycle(
48
- rootDirectoryUrl,
49
- {
50
- watchDescription: {
51
- ...autoreloadPatterns,
52
- ".jsenv/": false,
53
- },
54
- updated: ({ relativeUrl }) => {
55
- projectFileModified.notify(relativeUrl)
56
- },
57
- removed: ({ relativeUrl }) => {
58
- projectFileRemoved.notify(relativeUrl)
59
- },
60
- added: ({ relativeUrl }) => {
61
- projectFileAdded.notify(relativeUrl)
62
- },
63
- keepProcessAlive: false,
64
- recursive: true,
65
- },
66
- )
67
- destroyCallbackList.add(unregisterDirectoryLifecyle)
68
- }, 100)
69
- destroyCallbackList.add(() => {
70
- clearTimeout(timeout)
71
- })
72
-
73
- const cache = []
74
- const sseRoomLimit = 100
75
- const getOrCreateSSERoom = (request) => {
76
- const htmlFileRelativeUrl = request.ressource.slice(1)
77
- const cacheEntry = cache.find(
78
- (cacheEntryCandidate) =>
79
- cacheEntryCandidate.htmlFileRelativeUrl === htmlFileRelativeUrl,
80
- )
81
- if (cacheEntry) {
82
- return cacheEntry.sseRoom
83
- }
84
- const sseRoom = createSSERoom({
85
- retryDuration: 2000,
86
- historyLength: 100,
87
- welcomeEventEnabled: true,
88
- effect: () => {
89
- const removeHotUpdateCallback = hotUpdateCallbackList.add(
90
- (hotUpdate) => {
91
- if (hotUpdate.declined) {
92
- sseRoom.sendEvent({
93
- type: "reload",
94
- data: JSON.stringify({
95
- cause: hotUpdate.cause,
96
- type: "full",
97
- typeReason: hotUpdate.reason,
98
- declinedBy: hotUpdate.declinedBy,
99
- }),
100
- })
101
- } else {
102
- sseRoom.sendEvent({
103
- type: "reload",
104
- data: JSON.stringify({
105
- cause: hotUpdate.cause,
106
- type: "hot",
107
- typeReason: hotUpdate.reason,
108
- hotInstructions: hotUpdate.instructions,
109
- }),
110
- })
111
- }
112
- },
113
- )
114
- const stopWatching = watchProjectFiles(({ relativeUrl, event }) => {
115
- onFileChange({ relativeUrl, event })
116
- })
117
- return () => {
118
- removeHotUpdateCallback()
119
- stopWatching()
120
- }
121
- },
122
- })
123
-
124
- const removeSSECleanupCallback = destroyCallbackList.add(() => {
125
- removeSSECleanupCallback()
126
- sseRoom.close()
127
- })
128
- cache.push({
129
- htmlFileRelativeUrl,
130
- sseRoom,
131
- cleanup: () => {
132
- removeSSECleanupCallback()
133
- sseRoom.close()
134
- },
135
- })
136
- if (cache.length >= sseRoomLimit) {
137
- const firstCacheEntry = cache.shift()
138
- firstCacheEntry.cleanup()
139
- }
140
- return sseRoom
141
- }
142
-
143
- return {
144
- getOrCreateSSERoom,
145
- destroy: () => {
146
- destroyCallbackList.notify()
147
- },
148
- }
149
- }