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

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 (247) 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 +13452 -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 +44 -32
  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 +8 -12
  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 +342 -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 +19 -18
  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 +7 -10
  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 +12 -16
  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/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  205. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  206. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +80 -0
  207. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  208. package/src/plugins/url_analysis/css/css_urls.js +49 -0
  209. package/src/plugins/url_analysis/html/html_urls.js +272 -0
  210. package/src/plugins/url_analysis/js/js_urls.js +68 -0
  211. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +102 -0
  212. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  213. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  214. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  215. package/src/test/execute_plan.js +81 -44
  216. package/src/test/execute_test_plan.js +37 -24
  217. package/src/test/execution_steps.js +1 -4
  218. package/src/test/logs_file_execution.js +56 -49
  219. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -225
  220. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  221. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  222. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  223. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  224. package/src/execute/runtimes/node/controlled_process.js +0 -316
  225. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  226. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  227. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  228. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  229. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  230. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  231. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  232. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  233. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  234. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  235. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  236. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  237. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  238. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  239. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  240. package/src/omega/core_plugins.js +0 -39
  241. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  242. package/src/omega/url_graph/url_graph_sort.js +0 -29
  243. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  244. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  245. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  246. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  247. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -3,37 +3,27 @@ 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, urlToFileSystemPath } from "@jsenv/urls"
7
+ import { createDetailedMessage, loggerToLevels } from "@jsenv/logger"
8
+ import { createLog, startSpinner } from "@jsenv/log"
9
+ import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
6
10
  import {
7
- urlToFileSystemPath,
8
11
  writeDirectory,
9
12
  ensureEmptyDirectory,
10
- normalizeStructuredMetaMap,
11
- urlToMeta,
12
- writeFile,
13
+ writeFileSync,
13
14
  } 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
15
 
22
16
  import { babelPluginInstrument } from "@jsenv/utils/coverage/babel_plugin_instrument.js"
23
17
  import { reportToCoverage } from "@jsenv/utils/coverage/report_to_coverage.js"
24
18
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
25
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
19
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
26
20
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
27
21
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
28
22
  import { run } from "@jsenv/core/src/execute/run.js"
29
23
 
30
24
  import { ensureGlobalGc } from "./gc.js"
31
25
  import { generateExecutionSteps } from "./execution_steps.js"
32
- import {
33
- formatExecuting,
34
- formatExecutionResult,
35
- createSummaryLog,
36
- } from "./logs_file_execution.js"
26
+ import { createExecutionLog, createSummaryLog } from "./logs_file_execution.js"
37
27
 
38
28
  export const executePlan = async (
39
29
  plan,
@@ -42,6 +32,7 @@ export const executePlan = async (
42
32
  handleSIGINT,
43
33
  logger,
44
34
  logSummary,
35
+ logTimeUsage,
45
36
  logMemoryHeapUsage,
46
37
  logFileRelativeUrl,
47
38
  completedExecutionLogMerging,
@@ -62,9 +53,14 @@ export const executePlan = async (
62
53
  coverageV8ConflictWarning,
63
54
  coverageTempDirectoryRelativeUrl,
64
55
 
65
- plugins = [],
66
- scenario = "test",
67
- sourcemaps = "inline",
56
+ scenario,
57
+ sourcemaps,
58
+ plugins,
59
+ injectedGlobals,
60
+ nodeEsmResolution,
61
+ fileSystemMagicResolution,
62
+ transpilation,
63
+ writeGeneratedFiles,
68
64
 
69
65
  protocol,
70
66
  privateKey,
@@ -132,12 +128,29 @@ export const executePlan = async (
132
128
  logger,
133
129
  rootDirectoryUrl,
134
130
  urlGraph,
131
+ scenario,
132
+ sourcemaps,
133
+ runtimeCompat: runtimes,
134
+ writeGeneratedFiles,
135
135
  plugins: [
136
136
  ...plugins,
137
137
  ...getCorePlugins({
138
- babel: {
139
- getCustomBabelPlugins: ({ runtimeSupport }) => {
140
- if (coverage && Object.keys(runtimeSupport)[0] !== "chrome") {
138
+ rootDirectoryUrl,
139
+ urlGraph,
140
+ scenario,
141
+ runtimeCompat: runtimes,
142
+
143
+ htmlSupervisor: true,
144
+ nodeEsmResolution,
145
+ fileSystemMagicResolution,
146
+ injectedGlobals,
147
+ transpilation: {
148
+ ...transpilation,
149
+ getCustomBabelPlugins: ({ clientRuntimeCompat }) => {
150
+ if (
151
+ coverage &&
152
+ Object.keys(clientRuntimeCompat)[0] !== "chrome"
153
+ ) {
141
154
  return {
142
155
  "transform-instrument": [
143
156
  babelPluginInstrument,
@@ -153,13 +166,10 @@ export const executePlan = async (
153
166
  },
154
167
  }),
155
168
  ],
156
- scenario,
157
- sourcemaps,
158
169
  })
159
- const serverLogger = createLogger({ logLevel: "warn" })
160
170
  const server = await startOmegaServer({
161
171
  signal: multipleExecutionsOperation.signal,
162
- logger: serverLogger,
172
+ logLevel: "warn",
163
173
  rootDirectoryUrl,
164
174
  urlGraph,
165
175
  kitchen,
@@ -196,7 +206,13 @@ export const executePlan = async (
196
206
  const debugLogsEnabled = loggerToLevels(logger).debug
197
207
  const executionLogsEnabled = loggerToLevels(logger).info
198
208
  const executionSpinner =
199
- !debugLogsEnabled && executionLogsEnabled && process.stdout.isTTY
209
+ !debugLogsEnabled &&
210
+ executionLogsEnabled &&
211
+ process.stdout.isTTY &&
212
+ // if there is an error during execution npm will mess up the output
213
+ // (happens when npm runs several command in a workspace)
214
+ // so we enable spinner only when !process.exitCode (no error so far)
215
+ process.exitCode !== 1
200
216
 
201
217
  const startMs = Date.now()
202
218
  const report = {}
@@ -213,17 +229,16 @@ export const executePlan = async (
213
229
  ).href
214
230
 
215
231
  if (coverage) {
216
- const structuredMetaMapForCover = normalizeStructuredMetaMap(
217
- {
218
- cover: coverageConfig,
219
- },
232
+ const associations = URL_META.resolveAssociations(
233
+ { cover: coverageConfig },
220
234
  rootDirectoryUrl,
221
235
  )
222
236
  const urlShouldBeCovered = (url) => {
223
- return urlToMeta({
237
+ const { cover } = URL_META.applyAssociations({
224
238
  url: new URL(url, rootDirectoryUrl).href,
225
- structuredMetaMap: structuredMetaMapForCover,
226
- }).cover
239
+ associations,
240
+ })
241
+ return cover
227
242
  }
228
243
  runtimeParams.urlShouldBeCovered = urlShouldBeCovered
229
244
 
@@ -307,17 +322,29 @@ export const executePlan = async (
307
322
  runtimeVersion,
308
323
  executionIndex,
309
324
  executionParams,
325
+ startMs: Date.now(),
326
+ executionResult: {
327
+ status: "executing",
328
+ },
310
329
  }
311
330
  let spinner
312
331
  if (executionSpinner) {
313
- spinner = startSpinner({
314
- log: executionLog,
315
- text: formatExecuting(beforeExecutionInfo, {
332
+ const renderSpinnerText = () =>
333
+ createExecutionLog(beforeExecutionInfo, {
316
334
  counters,
335
+ ...(logTimeUsage
336
+ ? {
337
+ timeEllapsed: Date.now() - startMs,
338
+ }
339
+ : {}),
317
340
  ...(logMemoryHeapUsage
318
341
  ? { memoryHeap: memoryUsage().heapUsed }
319
342
  : {}),
320
- }),
343
+ })
344
+ spinner = startSpinner({
345
+ log: executionLog,
346
+ text: renderSpinnerText(),
347
+ update: renderSpinnerText,
321
348
  })
322
349
  }
323
350
  beforeExecutionCallback(beforeExecutionInfo)
@@ -349,10 +376,15 @@ export const executePlan = async (
349
376
  }
350
377
  }
351
378
  counters.done++
352
- if (fileRelativeUrl in report === false) {
353
- report[fileRelativeUrl] = {}
379
+ const fileReport = report[fileRelativeUrl]
380
+ if (fileReport) {
381
+ fileReport[executionName] = executionResult
382
+ } else {
383
+ report[fileRelativeUrl] = {
384
+ [executionName]: executionResult,
385
+ }
354
386
  }
355
- report[fileRelativeUrl][executionName] = executionResult
387
+
356
388
  const afterExecutionInfo = {
357
389
  ...beforeExecutionInfo,
358
390
  endMs: Date.now(),
@@ -373,9 +405,14 @@ export const executePlan = async (
373
405
  global.gc()
374
406
  }
375
407
  if (executionLogsEnabled) {
376
- let log = formatExecutionResult(afterExecutionInfo, {
408
+ let log = createExecutionLog(afterExecutionInfo, {
377
409
  completedExecutionLogAbbreviation,
378
410
  counters,
411
+ ...(logTimeUsage
412
+ ? {
413
+ timeEllapsed: Date.now() - startMs,
414
+ }
415
+ : {}),
379
416
  ...(logMemoryHeapUsage
380
417
  ? { memoryHeap: memoryUsage().heapUsed }
381
418
  : {}),
@@ -433,7 +470,7 @@ export const executePlan = async (
433
470
  }
434
471
  if (summary.counters.total !== summary.counters.completed) {
435
472
  const logFileUrl = new URL(logFileRelativeUrl, rootDirectoryUrl).href
436
- writeFile(logFileUrl, rawOutput)
473
+ writeFileSync(logFileUrl, rawOutput)
437
474
  logger.info(`-> ${urlToFileSystemPath(logFileUrl)}`)
438
475
  }
439
476
  const result = await transformReturnValue({
@@ -1,9 +1,6 @@
1
+ import { urlToFileSystemPath, resolveDirectoryUrl, URL_META } from "@jsenv/urls"
1
2
  import {
2
- normalizeStructuredMetaMap,
3
- urlToFileSystemPath,
4
3
  ensureEmptyDirectory,
5
- resolveDirectoryUrl,
6
- urlToMeta,
7
4
  assertAndNormalizeDirectoryUrl,
8
5
  } from "@jsenv/filesystem"
9
6
  import { createLogger, createDetailedMessage } from "@jsenv/logger"
@@ -13,6 +10,14 @@ import { generateCoverageHtmlDirectory } from "@jsenv/utils/coverage/coverage_re
13
10
  import { generateCoverageTextLog } from "@jsenv/utils/coverage/coverage_reporter_text_log.js"
14
11
  import { executePlan } from "./execute_plan.js"
15
12
 
13
+ export const defaultCoverageConfig = {
14
+ "./index.js": true,
15
+ "./main.js": true,
16
+ "./src/**/*.js": true,
17
+ "./**/*.test.*": false, // contains .test. -> nope
18
+ "./**/test/": false, // inside a test folder -> nope,
19
+ }
20
+
16
21
  /**
17
22
  * Execute a list of files and log how it goes
18
23
  * @param {Object} testPlanParameters
@@ -34,6 +39,7 @@ export const executeTestPlan = async ({
34
39
  handleSIGINT = true,
35
40
  logLevel = "info",
36
41
  logSummary = true,
42
+ logTimeUsage = false,
37
43
  logMemoryHeapUsage = false,
38
44
  logFileRelativeUrl = ".jsenv/test_plan_debug.txt",
39
45
  completedExecutionLogAbbreviation = false,
@@ -57,13 +63,7 @@ export const executeTestPlan = async ({
57
63
  coverage = process.argv.includes("--cover") ||
58
64
  process.argv.includes("--coverage"),
59
65
  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
- },
66
+ coverageConfig = defaultCoverageConfig,
67
67
  coverageIncludeMissing = true,
68
68
  coverageAndExecutionAllowed = false,
69
69
  coverageForceIstanbul = false,
@@ -80,6 +80,13 @@ 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
+ writeGeneratedFiles = false,
89
+
83
90
  protocol,
84
91
  privateKey,
85
92
  certificate,
@@ -103,25 +110,22 @@ export const executeTestPlan = async ({
103
110
  )
104
111
  }
105
112
  if (!coverageAndExecutionAllowed) {
106
- const structuredMetaMapForExecute = normalizeStructuredMetaMap(
107
- {
108
- execute: testPlan,
109
- },
113
+ const associationsForExecute = URL_META.resolveAssociations(
114
+ { execute: testPlan },
110
115
  "file:///",
111
116
  )
112
- const structuredMetaMapForCover = normalizeStructuredMetaMap(
113
- {
114
- cover: coverageConfig,
115
- },
117
+ const associationsForCover = URL_META.resolveAssociations(
118
+ { cover: coverageConfig },
116
119
  "file:///",
117
120
  )
118
121
  const patternsMatchingCoverAndExecute = Object.keys(
119
- structuredMetaMapForExecute.execute,
122
+ associationsForExecute.execute,
120
123
  ).filter((testPlanPattern) => {
121
- return urlToMeta({
124
+ const { cover } = URL_META.applyAssociations({
122
125
  url: testPlanPattern,
123
- structuredMetaMap: structuredMetaMapForCover,
124
- }).cover
126
+ associations: associationsForCover,
127
+ })
128
+ return cover
125
129
  })
126
130
  if (patternsMatchingCoverAndExecute.length) {
127
131
  // It would be strange, for a given file to be both covered and executed
@@ -139,12 +143,13 @@ export const executeTestPlan = async ({
139
143
  logger,
140
144
  logLevel,
141
145
  logSummary,
146
+ logTimeUsage,
142
147
  logMemoryHeapUsage,
143
148
  logFileRelativeUrl,
144
149
  completedExecutionLogMerging,
145
150
  completedExecutionLogAbbreviation,
146
-
147
151
  rootDirectoryUrl,
152
+
148
153
  maxExecutionsInParallel,
149
154
  defaultMsAllocatedPerExecution,
150
155
  failFast,
@@ -159,6 +164,14 @@ export const executeTestPlan = async ({
159
164
  coverageV8ConflictWarning,
160
165
  coverageTempDirectoryRelativeUrl,
161
166
 
167
+ scenario: "test",
168
+ sourcemaps,
169
+ plugins,
170
+ injectedGlobals,
171
+ nodeEsmResolution,
172
+ fileSystemMagicResolution,
173
+ writeGeneratedFiles,
174
+
162
175
  protocol,
163
176
  privateKey,
164
177
  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
  }