@jsenv/core 27.0.0-alpha.7 → 27.0.0-alpha.72

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 (248) 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/arrayLikeToArray/arrayLikeToArray.js +9 -0
  5. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  6. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  7. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  8. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  9. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  10. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  11. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  12. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  13. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  14. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  15. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  16. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  18. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  19. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  20. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  21. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  24. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  25. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  27. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  29. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  31. package/dist/babel_helpers/construct/construct.js +15 -0
  32. package/dist/babel_helpers/createClass/createClass.js +18 -0
  33. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  34. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  35. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  36. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  37. package/dist/babel_helpers/decorate/decorate.js +622 -0
  38. package/dist/babel_helpers/defaults/defaults.js +14 -0
  39. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  40. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  41. package/dist/babel_helpers/extends/extends.js +16 -0
  42. package/dist/babel_helpers/get/get.js +21 -0
  43. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  44. package/dist/babel_helpers/inherits/inherits.js +21 -0
  45. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  46. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  47. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  48. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  49. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  50. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  51. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  52. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  53. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  54. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  55. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  56. package/dist/babel_helpers/jsx/jsx.js +49 -0
  57. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  58. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  59. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  60. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  61. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  62. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  63. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  64. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  65. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  66. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  67. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  68. package/dist/babel_helpers/readme.md +8 -0
  69. package/dist/babel_helpers/set/set.js +51 -0
  70. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  71. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  72. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  73. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  74. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  75. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  76. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  77. package/dist/babel_helpers/tdz/tdz.js +4 -0
  78. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  79. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  80. package/dist/babel_helpers/toArray/toArray.js +5 -0
  81. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  82. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  83. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  84. package/dist/babel_helpers/typeof/typeof.js +7 -0
  85. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  86. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  87. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  88. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  89. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  90. package/dist/html/explorer.html +557 -0
  91. package/dist/js/controllable_file.mjs +227 -0
  92. package/dist/js/event_source_client.js +324 -0
  93. package/dist/js/global_this.js +32 -0
  94. package/dist/js/html_supervisor_installer.js +522 -0
  95. package/dist/js/html_supervisor_setup.js +79 -0
  96. package/dist/js/import_meta_hot.js +84 -0
  97. package/dist/js/inline_content.js +8 -0
  98. package/dist/js/new_stylesheet.js +409 -0
  99. package/dist/js/regenerator_runtime.js +721 -0
  100. package/dist/js/s.js +429 -0
  101. package/dist/main.js +13455 -0
  102. package/dist/other/jsenv.png +0 -0
  103. package/dist/s.js +626 -0
  104. package/dist/s.js.map +204 -0
  105. package/main.js +9 -1
  106. package/package.json +46 -33
  107. package/readme.md +6 -14
  108. package/src/build/build.js +1080 -562
  109. package/src/build/build_urls_generator.js +65 -24
  110. package/src/build/graph_utils.js +31 -0
  111. package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +49 -18
  112. package/src/build/inject_service_worker_urls.js +79 -0
  113. package/src/build/resync_ressource_hints.js +115 -0
  114. package/src/build/start_build_server.js +211 -0
  115. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  116. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -13
  117. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
  118. package/src/dev/start_dev_server.js +170 -38
  119. package/src/execute/execute.js +36 -6
  120. package/src/execute/run.js +21 -57
  121. package/src/execute/runtimes/browsers/from_playwright.js +218 -148
  122. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  123. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  124. package/src/execute/runtimes/node/node_process.js +288 -39
  125. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  126. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +14 -16
  127. package/src/omega/errors.js +62 -66
  128. package/src/omega/fetched_content_compliance.js +24 -0
  129. package/src/omega/file_url_converter.js +9 -51
  130. package/src/omega/kitchen.js +593 -463
  131. package/src/omega/omega_server.js +2 -3
  132. package/src/omega/server/file_service.js +86 -38
  133. package/src/omega/server/user_agent.js +4 -2
  134. package/src/omega/url_graph/url_graph_load.js +31 -23
  135. package/src/omega/url_graph/url_graph_report.js +94 -51
  136. package/src/omega/url_graph/url_info_transformations.js +37 -17
  137. package/src/omega/url_graph.js +88 -19
  138. package/src/omega/url_specifier_encoding.js +59 -0
  139. package/src/omega/web_workers.js +42 -0
  140. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  141. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  142. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  143. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  144. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  145. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  146. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  147. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  148. package/src/plugins/bundling/css/bundle_css.js +140 -0
  149. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  150. package/src/plugins/bundling/js_module/bundle_js_module.js +343 -0
  151. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  152. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  153. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
  154. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +198 -0
  155. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  156. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  157. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  158. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +79 -0
  159. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  160. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  161. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +73 -55
  162. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  163. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  164. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  165. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +7 -4
  166. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  167. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
  168. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  169. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  170. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +40 -36
  171. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +76 -0
  172. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  173. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +20 -19
  174. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +161 -0
  175. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  176. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  177. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  178. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  179. package/src/plugins/minification/css/minify_css.js +9 -0
  180. package/src/plugins/minification/html/minify_html.js +15 -0
  181. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  182. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  183. package/src/plugins/minification/json/minify_json.js +8 -0
  184. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +160 -0
  185. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  186. package/src/{omega → plugins}/plugin_controller.js +56 -11
  187. package/src/plugins/plugins.js +92 -0
  188. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  189. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  190. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  191. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +213 -0
  192. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +304 -0
  193. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  194. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  195. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  196. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
  197. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  198. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  199. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +39 -32
  200. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
  201. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  202. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  203. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  204. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  205. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  206. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  207. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +79 -0
  208. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  209. package/src/plugins/url_analysis/css/css_urls.js +49 -0
  210. package/src/plugins/url_analysis/html/html_urls.js +272 -0
  211. package/src/plugins/url_analysis/js/js_urls.js +68 -0
  212. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +103 -0
  213. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  214. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  215. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  216. package/src/test/execute_plan.js +82 -44
  217. package/src/test/execute_test_plan.js +38 -24
  218. package/src/test/execution_steps.js +1 -4
  219. package/src/test/logs_file_execution.js +56 -49
  220. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -225
  221. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  222. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  223. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  224. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  225. package/src/execute/runtimes/node/controlled_process.js +0 -316
  226. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  227. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  228. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  229. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  230. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  231. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  232. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  233. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  234. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  235. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  236. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  237. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  238. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  239. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  240. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  241. package/src/omega/core_plugins.js +0 -39
  242. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  243. package/src/omega/url_graph/url_graph_sort.js +0 -29
  244. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  245. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  246. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  247. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  248. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -3,37 +3,28 @@ import { memoryUsage } from "node:process"
3
3
  import wrapAnsi from "wrap-ansi"
4
4
  import stripAnsi from "strip-ansi"
5
5
  import cuid from "cuid"
6
+ import { URL_META } from "@jsenv/url-meta"
7
+ import { urlToFileSystemPath } from "@jsenv/urls"
8
+ import { createDetailedMessage, loggerToLevels } from "@jsenv/logger"
9
+ import { createLog, startSpinner } from "@jsenv/log"
10
+ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
6
11
  import {
7
- urlToFileSystemPath,
8
12
  writeDirectory,
9
13
  ensureEmptyDirectory,
10
- normalizeStructuredMetaMap,
11
- urlToMeta,
12
- writeFile,
14
+ writeFileSync,
13
15
  } from "@jsenv/filesystem"
14
- import {
15
- createLogger,
16
- createDetailedMessage,
17
- loggerToLevels,
18
- } from "@jsenv/logger"
19
- import { createLog, startSpinner } from "@jsenv/log"
20
- import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
21
16
 
22
17
  import { babelPluginInstrument } from "@jsenv/utils/coverage/babel_plugin_instrument.js"
23
18
  import { reportToCoverage } from "@jsenv/utils/coverage/report_to_coverage.js"
24
19
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
25
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
20
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
26
21
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
27
22
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
28
23
  import { run } from "@jsenv/core/src/execute/run.js"
29
24
 
30
25
  import { ensureGlobalGc } from "./gc.js"
31
26
  import { generateExecutionSteps } from "./execution_steps.js"
32
- import {
33
- formatExecuting,
34
- formatExecutionResult,
35
- createSummaryLog,
36
- } from "./logs_file_execution.js"
27
+ import { createExecutionLog, createSummaryLog } from "./logs_file_execution.js"
37
28
 
38
29
  export const executePlan = async (
39
30
  plan,
@@ -42,6 +33,7 @@ export const executePlan = async (
42
33
  handleSIGINT,
43
34
  logger,
44
35
  logSummary,
36
+ logTimeUsage,
45
37
  logMemoryHeapUsage,
46
38
  logFileRelativeUrl,
47
39
  completedExecutionLogMerging,
@@ -62,9 +54,14 @@ export const executePlan = async (
62
54
  coverageV8ConflictWarning,
63
55
  coverageTempDirectoryRelativeUrl,
64
56
 
65
- plugins = [],
66
- scenario = "test",
67
- sourcemaps = "inline",
57
+ scenario,
58
+ sourcemaps,
59
+ plugins,
60
+ injectedGlobals,
61
+ nodeEsmResolution,
62
+ fileSystemMagicResolution,
63
+ transpilation,
64
+ writeGeneratedFiles,
68
65
 
69
66
  protocol,
70
67
  privateKey,
@@ -132,12 +129,29 @@ export const executePlan = async (
132
129
  logger,
133
130
  rootDirectoryUrl,
134
131
  urlGraph,
132
+ scenario,
133
+ sourcemaps,
134
+ runtimeCompat: runtimes,
135
+ writeGeneratedFiles,
135
136
  plugins: [
136
137
  ...plugins,
137
138
  ...getCorePlugins({
138
- babel: {
139
- getCustomBabelPlugins: ({ runtimeSupport }) => {
140
- if (coverage && Object.keys(runtimeSupport)[0] !== "chrome") {
139
+ rootDirectoryUrl,
140
+ urlGraph,
141
+ scenario,
142
+ runtimeCompat: runtimes,
143
+
144
+ htmlSupervisor: true,
145
+ nodeEsmResolution,
146
+ fileSystemMagicResolution,
147
+ injectedGlobals,
148
+ transpilation: {
149
+ ...transpilation,
150
+ getCustomBabelPlugins: ({ clientRuntimeCompat }) => {
151
+ if (
152
+ coverage &&
153
+ Object.keys(clientRuntimeCompat)[0] !== "chrome"
154
+ ) {
141
155
  return {
142
156
  "transform-instrument": [
143
157
  babelPluginInstrument,
@@ -153,13 +167,10 @@ export const executePlan = async (
153
167
  },
154
168
  }),
155
169
  ],
156
- scenario,
157
- sourcemaps,
158
170
  })
159
- const serverLogger = createLogger({ logLevel: "warn" })
160
171
  const server = await startOmegaServer({
161
172
  signal: multipleExecutionsOperation.signal,
162
- logger: serverLogger,
173
+ logLevel: "warn",
163
174
  rootDirectoryUrl,
164
175
  urlGraph,
165
176
  kitchen,
@@ -196,7 +207,13 @@ export const executePlan = async (
196
207
  const debugLogsEnabled = loggerToLevels(logger).debug
197
208
  const executionLogsEnabled = loggerToLevels(logger).info
198
209
  const executionSpinner =
199
- !debugLogsEnabled && executionLogsEnabled && process.stdout.isTTY
210
+ !debugLogsEnabled &&
211
+ executionLogsEnabled &&
212
+ process.stdout.isTTY &&
213
+ // if there is an error during execution npm will mess up the output
214
+ // (happens when npm runs several command in a workspace)
215
+ // so we enable spinner only when !process.exitCode (no error so far)
216
+ process.exitCode !== 1
200
217
 
201
218
  const startMs = Date.now()
202
219
  const report = {}
@@ -213,17 +230,16 @@ export const executePlan = async (
213
230
  ).href
214
231
 
215
232
  if (coverage) {
216
- const structuredMetaMapForCover = normalizeStructuredMetaMap(
217
- {
218
- cover: coverageConfig,
219
- },
233
+ const associations = URL_META.resolveAssociations(
234
+ { cover: coverageConfig },
220
235
  rootDirectoryUrl,
221
236
  )
222
237
  const urlShouldBeCovered = (url) => {
223
- return urlToMeta({
238
+ const { cover } = URL_META.applyAssociations({
224
239
  url: new URL(url, rootDirectoryUrl).href,
225
- structuredMetaMap: structuredMetaMapForCover,
226
- }).cover
240
+ associations,
241
+ })
242
+ return cover
227
243
  }
228
244
  runtimeParams.urlShouldBeCovered = urlShouldBeCovered
229
245
 
@@ -307,17 +323,29 @@ export const executePlan = async (
307
323
  runtimeVersion,
308
324
  executionIndex,
309
325
  executionParams,
326
+ startMs: Date.now(),
327
+ executionResult: {
328
+ status: "executing",
329
+ },
310
330
  }
311
331
  let spinner
312
332
  if (executionSpinner) {
313
- spinner = startSpinner({
314
- log: executionLog,
315
- text: formatExecuting(beforeExecutionInfo, {
333
+ const renderSpinnerText = () =>
334
+ createExecutionLog(beforeExecutionInfo, {
316
335
  counters,
336
+ ...(logTimeUsage
337
+ ? {
338
+ timeEllapsed: Date.now() - startMs,
339
+ }
340
+ : {}),
317
341
  ...(logMemoryHeapUsage
318
342
  ? { memoryHeap: memoryUsage().heapUsed }
319
343
  : {}),
320
- }),
344
+ })
345
+ spinner = startSpinner({
346
+ log: executionLog,
347
+ text: renderSpinnerText(),
348
+ update: renderSpinnerText,
321
349
  })
322
350
  }
323
351
  beforeExecutionCallback(beforeExecutionInfo)
@@ -349,10 +377,15 @@ export const executePlan = async (
349
377
  }
350
378
  }
351
379
  counters.done++
352
- if (fileRelativeUrl in report === false) {
353
- report[fileRelativeUrl] = {}
380
+ const fileReport = report[fileRelativeUrl]
381
+ if (fileReport) {
382
+ fileReport[executionName] = executionResult
383
+ } else {
384
+ report[fileRelativeUrl] = {
385
+ [executionName]: executionResult,
386
+ }
354
387
  }
355
- report[fileRelativeUrl][executionName] = executionResult
388
+
356
389
  const afterExecutionInfo = {
357
390
  ...beforeExecutionInfo,
358
391
  endMs: Date.now(),
@@ -373,9 +406,14 @@ export const executePlan = async (
373
406
  global.gc()
374
407
  }
375
408
  if (executionLogsEnabled) {
376
- let log = formatExecutionResult(afterExecutionInfo, {
409
+ let log = createExecutionLog(afterExecutionInfo, {
377
410
  completedExecutionLogAbbreviation,
378
411
  counters,
412
+ ...(logTimeUsage
413
+ ? {
414
+ timeEllapsed: Date.now() - startMs,
415
+ }
416
+ : {}),
379
417
  ...(logMemoryHeapUsage
380
418
  ? { memoryHeap: memoryUsage().heapUsed }
381
419
  : {}),
@@ -433,7 +471,7 @@ export const executePlan = async (
433
471
  }
434
472
  if (summary.counters.total !== summary.counters.completed) {
435
473
  const logFileUrl = new URL(logFileRelativeUrl, rootDirectoryUrl).href
436
- writeFile(logFileUrl, rawOutput)
474
+ writeFileSync(logFileUrl, rawOutput)
437
475
  logger.info(`-> ${urlToFileSystemPath(logFileUrl)}`)
438
476
  }
439
477
  const result = await transformReturnValue({
@@ -1,9 +1,7 @@
1
+ import { URL_META } from "@jsenv/url-meta"
2
+ import { urlToFileSystemPath, resolveDirectoryUrl } from "@jsenv/urls"
1
3
  import {
2
- normalizeStructuredMetaMap,
3
- urlToFileSystemPath,
4
4
  ensureEmptyDirectory,
5
- resolveDirectoryUrl,
6
- urlToMeta,
7
5
  assertAndNormalizeDirectoryUrl,
8
6
  } from "@jsenv/filesystem"
9
7
  import { createLogger, createDetailedMessage } from "@jsenv/logger"
@@ -13,6 +11,14 @@ import { generateCoverageHtmlDirectory } from "@jsenv/utils/coverage/coverage_re
13
11
  import { generateCoverageTextLog } from "@jsenv/utils/coverage/coverage_reporter_text_log.js"
14
12
  import { executePlan } from "./execute_plan.js"
15
13
 
14
+ export const defaultCoverageConfig = {
15
+ "./index.js": true,
16
+ "./main.js": true,
17
+ "./src/**/*.js": true,
18
+ "./**/*.test.*": false, // contains .test. -> nope
19
+ "./**/test/": false, // inside a test folder -> nope,
20
+ }
21
+
16
22
  /**
17
23
  * Execute a list of files and log how it goes
18
24
  * @param {Object} testPlanParameters
@@ -34,6 +40,7 @@ export const executeTestPlan = async ({
34
40
  handleSIGINT = true,
35
41
  logLevel = "info",
36
42
  logSummary = true,
43
+ logTimeUsage = false,
37
44
  logMemoryHeapUsage = false,
38
45
  logFileRelativeUrl = ".jsenv/test_plan_debug.txt",
39
46
  completedExecutionLogAbbreviation = false,
@@ -57,13 +64,7 @@ export const executeTestPlan = async ({
57
64
  coverage = process.argv.includes("--cover") ||
58
65
  process.argv.includes("--coverage"),
59
66
  coverageTempDirectoryRelativeUrl = "./.coverage/tmp/",
60
- coverageConfig = {
61
- "./index.js": true,
62
- "./main.js": true,
63
- "./src/**/*.js": true,
64
- "./**/*.test.*": false, // contains .test. -> nope
65
- "./**/test/": false, // inside a test folder -> nope,
66
- },
67
+ coverageConfig = defaultCoverageConfig,
67
68
  coverageIncludeMissing = true,
68
69
  coverageAndExecutionAllowed = false,
69
70
  coverageForceIstanbul = false,
@@ -80,6 +81,13 @@ export const executeTestPlan = async ({
80
81
  // skip full means file with 100% coverage won't appear in coverage reports (log and html)
81
82
  coverageSkipFull = false,
82
83
 
84
+ sourcemaps = "inline",
85
+ plugins = [],
86
+ injectedGlobals,
87
+ nodeEsmResolution,
88
+ fileSystemMagicResolution,
89
+ writeGeneratedFiles = false,
90
+
83
91
  protocol,
84
92
  privateKey,
85
93
  certificate,
@@ -103,25 +111,22 @@ export const executeTestPlan = async ({
103
111
  )
104
112
  }
105
113
  if (!coverageAndExecutionAllowed) {
106
- const structuredMetaMapForExecute = normalizeStructuredMetaMap(
107
- {
108
- execute: testPlan,
109
- },
114
+ const associationsForExecute = URL_META.resolveAssociations(
115
+ { execute: testPlan },
110
116
  "file:///",
111
117
  )
112
- const structuredMetaMapForCover = normalizeStructuredMetaMap(
113
- {
114
- cover: coverageConfig,
115
- },
118
+ const associationsForCover = URL_META.resolveAssociations(
119
+ { cover: coverageConfig },
116
120
  "file:///",
117
121
  )
118
122
  const patternsMatchingCoverAndExecute = Object.keys(
119
- structuredMetaMapForExecute.execute,
123
+ associationsForExecute.execute,
120
124
  ).filter((testPlanPattern) => {
121
- return urlToMeta({
125
+ const { cover } = URL_META.applyAssociations({
122
126
  url: testPlanPattern,
123
- structuredMetaMap: structuredMetaMapForCover,
124
- }).cover
127
+ associations: associationsForCover,
128
+ })
129
+ return cover
125
130
  })
126
131
  if (patternsMatchingCoverAndExecute.length) {
127
132
  // It would be strange, for a given file to be both covered and executed
@@ -139,12 +144,13 @@ export const executeTestPlan = async ({
139
144
  logger,
140
145
  logLevel,
141
146
  logSummary,
147
+ logTimeUsage,
142
148
  logMemoryHeapUsage,
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,14 @@ 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
+ writeGeneratedFiles,
175
+
162
176
  protocol,
163
177
  privateKey,
164
178
  certificate,
@@ -5,13 +5,10 @@ export const generateExecutionSteps = async (
5
5
  plan,
6
6
  { signal, rootDirectoryUrl },
7
7
  ) => {
8
- const structuredMetaMap = {
9
- filePlan: plan,
10
- }
11
8
  const fileResultArray = await collectFiles({
12
9
  signal,
13
10
  directoryUrl: rootDirectoryUrl,
14
- structuredMetaMap,
11
+ associations: { filePlan: plan },
15
12
  predicate: ({ filePlan }) => filePlan,
16
13
  })
17
14
  const executionSteps = []
@@ -1,32 +1,14 @@
1
- import { ANSI, UNICODE } from "@jsenv/log"
2
-
3
- import { msAsDuration } from "@jsenv/utils/logs/duration_log.js"
4
- import { byteAsMemoryUsage } from "@jsenv/utils/logs/size_log.js"
1
+ import {
2
+ ANSI,
3
+ UNICODE,
4
+ msAsEllapsedTime,
5
+ msAsDuration,
6
+ byteAsMemoryUsage,
7
+ } from "@jsenv/log"
5
8
 
6
9
  import { EXECUTION_COLORS } from "./execution_colors.js"
7
10
 
8
- export const formatExecuting = (
9
- { executionIndex },
10
- { counters, memoryHeap },
11
- ) => {
12
- const description = ANSI.color(
13
- `executing ${executionIndex + 1} of ${counters.total}`,
14
- EXECUTION_COLORS.executing,
15
- )
16
- const summary =
17
- executionIndex === 0
18
- ? ""
19
- : `(${createIntermediateSummary({
20
- executionIndex,
21
- counters,
22
- memoryHeap,
23
- })})`
24
- return formatExecution({
25
- label: `${description} ${summary}`,
26
- })
27
- }
28
-
29
- export const formatExecutionResult = (
11
+ export const createExecutionLog = (
30
12
  {
31
13
  executionIndex,
32
14
  fileRelativeUrl,
@@ -34,34 +16,41 @@ export const formatExecutionResult = (
34
16
  runtimeVersion,
35
17
  executionParams,
36
18
  executionResult,
19
+ startMs,
20
+ endMs,
37
21
  },
38
- { completedExecutionLogAbbreviation, counters, memoryHeap },
22
+ { completedExecutionLogAbbreviation, counters, timeEllapsed, memoryHeap },
39
23
  ) => {
40
24
  const { status } = executionResult
41
- const description = descriptionFormatters[status]({
25
+ const descriptionFormatter = descriptionFormatters[status]
26
+ const description = descriptionFormatter({
42
27
  index: executionIndex,
43
28
  total: counters.total,
44
29
  executionParams,
45
30
  })
46
- const summary = `(${createIntermediateSummary({
31
+ const summary = createIntermediateSummary({
47
32
  executionIndex,
48
33
  counters,
34
+ timeEllapsed,
49
35
  memoryHeap,
50
- })})`
36
+ })
51
37
  if (completedExecutionLogAbbreviation && status === "completed") {
52
- return `${description} ${summary}`
38
+ return `${description}${summary}`
53
39
  }
54
- const { consoleCalls = [], error, duration } = executionResult
55
- const console = formatConsoleCalls(consoleCalls)
40
+ const { consoleCalls = [], error } = executionResult
41
+ const consoleOutput = formatConsoleCalls(consoleCalls)
56
42
  return formatExecution({
57
- label: `${description} ${summary}`,
43
+ label: `${description}${summary}`,
58
44
  details: {
59
45
  file: fileRelativeUrl,
60
46
  runtime: `${runtimeName}/${runtimeVersion}`,
61
- duration: msAsDuration(duration),
62
- ...(error ? { error: error.stack } : {}),
47
+ duration:
48
+ status === "executing"
49
+ ? msAsEllapsedTime(Date.now() - startMs)
50
+ : msAsDuration(endMs - startMs),
51
+ ...(error ? { error: error.stack || error.message || error } : {}),
63
52
  },
64
- console,
53
+ consoleOutput,
65
54
  })
66
55
  }
67
56
 
@@ -87,17 +76,29 @@ const createIntermediateSummary = ({
87
76
  executionIndex,
88
77
  counters,
89
78
  memoryHeap,
79
+ timeEllapsed,
90
80
  }) => {
91
- let intermediateSummary = createStatusSummary({
92
- counters: {
93
- ...counters,
94
- total: executionIndex + 1,
95
- },
96
- })
81
+ const parts = []
82
+ if (executionIndex > 0 || counters.done > 0) {
83
+ parts.push(
84
+ createStatusSummary({
85
+ counters: {
86
+ ...counters,
87
+ total: executionIndex + 1,
88
+ },
89
+ }),
90
+ )
91
+ }
92
+ if (timeEllapsed) {
93
+ parts.push(`duration: ${msAsEllapsedTime(timeEllapsed)}`)
94
+ }
97
95
  if (memoryHeap) {
98
- intermediateSummary += ` / memory heap: ${byteAsMemoryUsage(memoryHeap)}`
96
+ parts.push(`memory heap: ${byteAsMemoryUsage(memoryHeap)}`)
99
97
  }
100
- return intermediateSummary
98
+ if (parts.length === 0) {
99
+ return ""
100
+ }
101
+ return ` (${parts.join(` / `)})`
101
102
  }
102
103
 
103
104
  const createStatusSummary = ({ counters }) => {
@@ -161,6 +162,12 @@ const createMixedDetails = ({ counters }) => {
161
162
  }
162
163
 
163
164
  const descriptionFormatters = {
165
+ executing: ({ index, total }) => {
166
+ return ANSI.color(
167
+ `executing ${index + 1} of ${total}`,
168
+ EXECUTION_COLORS.executing,
169
+ )
170
+ },
164
171
  aborted: ({ index, total }) => {
165
172
  return ANSI.color(
166
173
  `${UNICODE.FAILURE_RAW} execution ${index + 1} of ${total} aborted`,
@@ -203,21 +210,21 @@ const formatConsoleCalls = (consoleCalls) => {
203
210
  if (consoleOutputTrimmed === "") {
204
211
  return ""
205
212
  }
206
- return `${ANSI.color(`-------- console --------`, ANSI.GREY)}
213
+ return `${ANSI.color(`-------- console output --------`, ANSI.GREY)}
207
214
  ${consoleOutputTrimmed}
208
215
  ${ANSI.color(`-------------------------`, ANSI.GREY)}`
209
216
  }
210
217
 
211
- const formatExecution = ({ label, details = {}, console }) => {
218
+ const formatExecution = ({ label, details = {}, consoleOutput }) => {
212
219
  let message = ``
213
220
  message += label
214
221
  Object.keys(details).forEach((key) => {
215
222
  message += `
216
223
  ${key}: ${details[key]}`
217
224
  })
218
- if (console) {
225
+ if (consoleOutput) {
219
226
  message += `
220
- ${console}`
227
+ ${consoleOutput}`
221
228
  }
222
229
  return message
223
230
  }