@jsenv/core 27.0.0-alpha.8 → 27.0.0-alpha.82

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 (254) hide show
  1. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
  2. package/dist/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  3. package/dist/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
  4. package/dist/babel_helpers/applyDecs/applyDecs.js +756 -0
  5. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
  6. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  7. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  8. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  9. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  10. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  11. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  12. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  13. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  14. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  15. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  16. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  18. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  19. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  20. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  21. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  24. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  25. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  27. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  29. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  31. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  32. package/dist/babel_helpers/construct/construct.js +15 -0
  33. package/dist/babel_helpers/createClass/createClass.js +18 -0
  34. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  35. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  36. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  37. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  38. package/dist/babel_helpers/decorate/decorate.js +622 -0
  39. package/dist/babel_helpers/defaults/defaults.js +14 -0
  40. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  41. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  42. package/dist/babel_helpers/extends/extends.js +16 -0
  43. package/dist/babel_helpers/get/get.js +21 -0
  44. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  45. package/dist/babel_helpers/identity/identity.js +3 -0
  46. package/dist/babel_helpers/inherits/inherits.js +21 -0
  47. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  48. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  49. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  50. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  51. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  52. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  53. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  54. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  55. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  56. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  57. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  58. package/dist/babel_helpers/jsx/jsx.js +49 -0
  59. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  60. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  61. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  62. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  63. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  64. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  65. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  66. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  67. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  68. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  69. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  70. package/dist/babel_helpers/set/set.js +51 -0
  71. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  72. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  73. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  74. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  75. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  76. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  77. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  78. package/dist/babel_helpers/tdz/tdz.js +4 -0
  79. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  80. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  81. package/dist/babel_helpers/toArray/toArray.js +5 -0
  82. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  83. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  84. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  85. package/dist/babel_helpers/typeof/typeof.js +7 -0
  86. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  87. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  88. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  89. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  90. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  91. package/dist/html/explorer.html +557 -0
  92. package/dist/js/controllable_file.mjs +227 -0
  93. package/dist/js/event_source_client.js +324 -0
  94. package/dist/js/global_this.js +32 -0
  95. package/dist/js/html_supervisor_installer.js +522 -0
  96. package/dist/js/html_supervisor_setup.js +82 -0
  97. package/dist/js/import_meta_hot.js +84 -0
  98. package/dist/js/inline_content.js +8 -0
  99. package/dist/js/new_stylesheet.js +409 -0
  100. package/dist/js/regenerator_runtime.js +721 -0
  101. package/dist/js/s.js +429 -0
  102. package/dist/main.js +13422 -0
  103. package/dist/other/jsenv.png +0 -0
  104. package/dist/s.js +626 -0
  105. package/dist/s.js.map +204 -0
  106. package/package.json +57 -51
  107. package/readme.md +6 -14
  108. package/src/build/build.js +1074 -563
  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 +210 -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 +165 -38
  119. package/src/execute/execute.js +35 -8
  120. package/src/execute/run.js +21 -57
  121. package/src/execute/runtimes/browsers/from_playwright.js +220 -150
  122. package/src/execute/runtimes/node/child_exec_options.js +1 -1
  123. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  124. package/src/execute/runtimes/node/kill_process_tree.js +2 -4
  125. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  126. package/src/execute/runtimes/node/node_process.js +288 -39
  127. package/src/main.js +27 -0
  128. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  129. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +14 -16
  130. package/src/omega/errors.js +63 -67
  131. package/src/omega/fetched_content_compliance.js +24 -0
  132. package/src/omega/file_url_converter.js +9 -51
  133. package/src/omega/kitchen.js +605 -467
  134. package/src/omega/omega_server.js +2 -3
  135. package/src/omega/server/file_service.js +88 -41
  136. package/src/omega/server/user_agent.js +5 -6
  137. package/src/omega/url_graph/url_graph_load.js +31 -23
  138. package/src/omega/url_graph/url_graph_report.js +94 -51
  139. package/src/omega/url_graph/url_info_transformations.js +37 -17
  140. package/src/omega/url_graph.js +88 -19
  141. package/src/omega/url_specifier_encoding.js +59 -0
  142. package/src/omega/web_workers.js +42 -0
  143. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  144. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  145. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  146. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  147. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  148. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  149. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  150. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  151. package/src/plugins/bundling/css/bundle_css.js +140 -0
  152. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  153. package/src/plugins/bundling/js_module/bundle_js_module.js +343 -0
  154. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  155. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  156. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
  157. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +183 -0
  158. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  159. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  160. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  161. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
  162. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  163. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  164. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +73 -55
  165. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  166. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  167. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  168. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +7 -4
  169. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  170. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
  171. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  172. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  173. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +40 -36
  174. package/src/plugins/inject_globals/inject_globals.js +57 -0
  175. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
  176. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  177. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
  178. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +161 -0
  179. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  180. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  181. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  182. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  183. package/src/plugins/minification/css/minify_css.js +9 -0
  184. package/src/plugins/minification/html/minify_html.js +13 -0
  185. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  186. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  187. package/src/plugins/minification/json/minify_json.js +8 -0
  188. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
  189. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  190. package/src/{omega → plugins}/plugin_controller.js +57 -12
  191. package/src/plugins/plugins.js +89 -0
  192. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  193. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  194. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  195. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +211 -0
  196. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +304 -0
  197. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  198. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  199. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  200. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
  201. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  202. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  203. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +39 -32
  204. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
  205. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  206. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  207. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  208. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  209. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  210. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  211. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +79 -0
  212. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  213. package/src/plugins/url_analysis/css/css_urls.js +49 -0
  214. package/src/plugins/url_analysis/html/html_urls.js +272 -0
  215. package/src/plugins/url_analysis/js/js_urls.js +68 -0
  216. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +103 -0
  217. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  218. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  219. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  220. package/src/require_from_jsenv.js +3 -0
  221. package/src/test/execute_plan.js +85 -44
  222. package/src/test/execute_test_plan.js +37 -25
  223. package/src/test/execution_steps.js +2 -5
  224. package/src/test/logs_file_execution.js +56 -49
  225. package/main.js +0 -19
  226. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
  227. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  228. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  229. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  230. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  231. package/src/execute/runtimes/node/controlled_process.js +0 -316
  232. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  233. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  234. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  235. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  236. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  237. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  238. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  239. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  240. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  241. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  242. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  243. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  244. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  245. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  246. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  247. package/src/omega/core_plugins.js +0 -39
  248. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  249. package/src/omega/url_graph/url_graph_sort.js +0 -29
  250. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  251. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  252. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  253. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  254. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -1,8 +1,8 @@
1
1
  import { readFileSync } from "node:fs"
2
- import { urlToContentType } from "@jsenv/server"
3
- import { collectFiles, normalizeStructuredMetaMap } from "@jsenv/filesystem"
2
+ import { DATA_URL } from "@jsenv/urls"
3
+ import { collectFiles } from "@jsenv/filesystem"
4
4
 
5
- import { DataUrl } from "@jsenv/utils/urls/data_url.js"
5
+ import { CONTENT_TYPE } from "@jsenv/utils/content_type/content_type.js"
6
6
 
7
7
  export const jsenvPluginExplorer = ({ groups }) => {
8
8
  const htmlClientFileUrl = new URL("./client/explorer.html", import.meta.url)
@@ -17,21 +17,17 @@ export const jsenvPluginExplorer = ({ groups }) => {
17
17
  if (request.ressource !== "/") {
18
18
  return null
19
19
  }
20
- const structuredMetaMapRelativeForExplorable = {}
20
+ const associationsForExplorable = {}
21
21
  Object.keys(groups).forEach((groupName) => {
22
22
  const groupConfig = groups[groupName]
23
- structuredMetaMapRelativeForExplorable[groupName] = {
23
+ associationsForExplorable[groupName] = {
24
24
  "**/.jsenv/": false, // avoid visting .jsenv directory in jsenv itself
25
25
  ...groupConfig,
26
26
  }
27
27
  })
28
- const structuredMetaMapForExplorable = normalizeStructuredMetaMap(
29
- structuredMetaMapRelativeForExplorable,
30
- rootDirectoryUrl,
31
- )
32
28
  const matchingFileResultArray = await collectFiles({
33
29
  directoryUrl: rootDirectoryUrl,
34
- structuredMetaMap: structuredMetaMapForExplorable,
30
+ associations: associationsForExplorable,
35
31
  predicate: (meta) =>
36
32
  Object.keys(meta).some((group) => Boolean(meta[group])),
37
33
  })
@@ -41,9 +37,9 @@ export const jsenvPluginExplorer = ({ groups }) => {
41
37
  }))
42
38
  let html = String(readFileSync(new URL(htmlClientFileUrl)))
43
39
  html = html.replace(
44
- "FAVICON_HREF",
45
- DataUrl.stringify({
46
- contentType: urlToContentType(faviconClientFileUrl),
40
+ "virtual:FAVICON_HREF",
41
+ DATA_URL.stringify({
42
+ contentType: CONTENT_TYPE.fromUrlExtension(faviconClientFileUrl),
47
43
  base64Flag: true,
48
44
  data: readFileSync(new URL(faviconClientFileUrl)).toString("base64"),
49
45
  }),
@@ -20,7 +20,7 @@ export const jsenvPluginToolbar = ({ logs = false } = {}) => {
20
20
  appliesDuring: {
21
21
  dev: true,
22
22
  },
23
- transform: {
23
+ transformUrlContent: {
24
24
  html: ({ url, content }, { referenceUtils }) => {
25
25
  if (url === toolbarHtmlClientFileUrl) {
26
26
  return null
@@ -28,10 +28,12 @@ export const jsenvPluginToolbar = ({ logs = false } = {}) => {
28
28
  const htmlAst = parseHtmlString(content)
29
29
  const [toolbarInjectorReference] = referenceUtils.inject({
30
30
  type: "js_import_export",
31
+ expectedType: "js_module",
31
32
  specifier: toolbarInjectorClientFileUrl,
32
33
  })
33
34
  const [toolbarClientFileReference] = referenceUtils.inject({
34
35
  type: "iframe_src",
36
+ expectedType: "html",
35
37
  specifier: toolbarHtmlClientFileUrl,
36
38
  })
37
39
  injectScriptAsEarlyAsPossible(
@@ -1,21 +1,27 @@
1
- import { assertAndNormalizeDirectoryUrl } from "@jsenv/filesystem"
2
- import { createLogger } from "@jsenv/logger"
1
+ import { parentPort } from "node:worker_threads"
3
2
 
4
- import { createTaskLog } from "@jsenv/utils/logs/task_log.js"
3
+ import {
4
+ assertAndNormalizeDirectoryUrl,
5
+ registerDirectoryLifecycle,
6
+ } from "@jsenv/filesystem"
7
+ import { createLogger, loggerToLevels, createTaskLog } from "@jsenv/log"
8
+ import { getCallerPosition } from "@jsenv/urls"
9
+ import { initReloadableProcess } from "@jsenv/utils/process_reload/process_reload.js"
10
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
5
11
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
6
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
7
12
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
8
13
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
9
14
 
10
- import { jsenvPluginAutoreload } from "./plugins/autoreload/jsenv_plugin_autoreload.js"
11
15
  import { jsenvPluginExplorer } from "./plugins/explorer/jsenv_plugin_explorer.js"
12
- import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
16
+ // import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
13
17
 
14
18
  export const startDevServer = async ({
15
19
  signal = new AbortController().signal,
16
- logLevel,
17
- port,
18
- protocol,
20
+ handleSIGINT,
21
+ logLevel = "info",
22
+ omegaServerLogLevel = "warn",
23
+ port = 3456,
24
+ protocol = "http",
19
25
  listenAnyIp,
20
26
  // it's better to use http1 by default because it allows to get statusText in devtools
21
27
  // which gives valuable information when there is errors
@@ -23,18 +29,43 @@ export const startDevServer = async ({
23
29
  certificate,
24
30
  privateKey,
25
31
  keepProcessAlive = true,
26
-
27
32
  rootDirectoryUrl,
28
- plugins = [],
33
+ devServerFiles = {
34
+ "./package.json": true,
35
+ "./jsenv.config.mjs": true,
36
+ },
37
+ devServerMainFile = getCallerPosition().url,
38
+ // force disable server autoreload when this code is executed:
39
+ // - inside a forked child process
40
+ // - inside a worker thread
41
+ // (because node cluster won't work)
42
+ devServerAutoreload = typeof process.send !== "function" &&
43
+ !parentPort &&
44
+ !process.env.VSCODE_INSPECTOR_OPTIONS,
45
+ clientFiles = {
46
+ "./src/": true,
47
+ "./test/": true,
48
+ },
49
+ cooldownBetweenFileEvents,
50
+ clientAutoreload = true,
29
51
 
30
52
  sourcemaps = "inline",
31
- autoreload = true,
32
- autoreloadPatterns = {
33
- "./**": true,
34
- "./**/.*/": false, // any folder starting with a dot is ignored (includes .git for instance)
35
- "./dist/": false,
36
- "./**/node_modules/": false,
53
+ // default runtimeCompat assume dev server will be request by recent browsers
54
+ // Used by "jsenv_plugin_node_runtime.js" to deactivate itself
55
+ // If dev server can be requested by Node.js to exec files
56
+ // we would add "node" to the potential runtimes. For now it's out of the scope of the dev server
57
+ // and "jsenv_plugin_node_runtime.js" applies only during build made for node.js
58
+ runtimeCompat = {
59
+ chrome: "100",
60
+ firefox: "100",
61
+ safari: "15.5",
37
62
  },
63
+ plugins = [],
64
+ urlAnalysis = {},
65
+ htmlSupervisor = true,
66
+ nodeEsmResolution,
67
+ fileSystemMagicResolution,
68
+ transpilation,
38
69
  explorerGroups = {
39
70
  source: {
40
71
  "./*.html": true,
@@ -44,40 +75,130 @@ export const startDevServer = async ({
44
75
  "./test/**/*.test.html": true,
45
76
  },
46
77
  },
47
- toolbar = false,
78
+ // toolbar = false,
79
+ writeGeneratedFiles = true,
48
80
  }) => {
49
81
  const logger = createLogger({ logLevel })
50
- const startServerTask = createTaskLog(logger, "start server")
51
-
52
82
  rootDirectoryUrl = assertAndNormalizeDirectoryUrl(rootDirectoryUrl)
53
- const urlGraph = createUrlGraph()
83
+ const reloadableProcess = await initReloadableProcess({
84
+ signal,
85
+ handleSIGINT,
86
+ ...(devServerAutoreload
87
+ ? {
88
+ enabled: true,
89
+ logLevel: "warn",
90
+ fileToRestart: devServerMainFile,
91
+ }
92
+ : {
93
+ enabled: false,
94
+ }),
95
+ })
96
+ if (reloadableProcess.isPrimary) {
97
+ const devServerFileChangeCallback = ({ relativeUrl, event }) => {
98
+ const url = new URL(relativeUrl, rootDirectoryUrl).href
99
+ if (devServerAutoreload) {
100
+ logger.info(`file ${event} ${url} -> restarting server...`)
101
+ reloadableProcess.reload()
102
+ }
103
+ }
104
+ const unregisterDevServerFilesWatcher = registerDirectoryLifecycle(
105
+ rootDirectoryUrl,
106
+ {
107
+ watchPatterns: {
108
+ [devServerMainFile]: true,
109
+ ...devServerFiles,
110
+ },
111
+ cooldownBetweenFileEvents,
112
+ keepProcessAlive: false,
113
+ recursive: true,
114
+ added: ({ relativeUrl }) => {
115
+ devServerFileChangeCallback({ relativeUrl, event: "added" })
116
+ },
117
+ updated: ({ relativeUrl }) => {
118
+ devServerFileChangeCallback({ relativeUrl, event: "modified" })
119
+ },
120
+ removed: ({ relativeUrl }) => {
121
+ devServerFileChangeCallback({ relativeUrl, event: "removed" })
122
+ },
123
+ },
124
+ )
125
+ signal.addEventListener("abort", () => {
126
+ unregisterDevServerFilesWatcher()
127
+ })
128
+ return {
129
+ origin: `${protocol}://127.0.0.1:${port}`,
130
+ stop: () => {
131
+ unregisterDevServerFilesWatcher()
132
+ reloadableProcess.stop()
133
+ },
134
+ }
135
+ }
136
+
137
+ const startDevServerTask = createTaskLog("start dev server", {
138
+ disabled: !loggerToLevels(logger).info,
139
+ })
140
+
141
+ const clientFileChangeCallbackList = []
142
+ const clientFilesPruneCallbackList = []
143
+ const clientFileChangeCallback = ({ relativeUrl, event }) => {
144
+ const url = new URL(relativeUrl, rootDirectoryUrl).href
145
+ clientFileChangeCallbackList.forEach((callback) => {
146
+ callback({ url, event })
147
+ })
148
+ }
149
+ const stopWatchingClientFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
150
+ watchPatterns: clientFiles,
151
+ cooldownBetweenFileEvents,
152
+ keepProcessAlive: false,
153
+ recursive: true,
154
+ added: ({ relativeUrl }) => {
155
+ clientFileChangeCallback({ event: "added", relativeUrl })
156
+ },
157
+ updated: ({ relativeUrl }) => {
158
+ clientFileChangeCallback({ event: "modified", relativeUrl })
159
+ },
160
+ removed: ({ relativeUrl }) => {
161
+ clientFileChangeCallback({ event: "removed", relativeUrl })
162
+ },
163
+ })
164
+ const urlGraph = createUrlGraph({
165
+ clientFileChangeCallbackList,
166
+ clientFilesPruneCallbackList,
167
+ })
54
168
  const kitchen = createKitchen({
55
169
  signal,
56
170
  logger,
57
171
  rootDirectoryUrl,
58
172
  urlGraph,
173
+ scenario: "dev",
174
+ runtimeCompat,
175
+ sourcemaps,
176
+ writeGeneratedFiles,
59
177
  plugins: [
60
178
  ...plugins,
61
- ...getCorePlugins(),
62
- ...(autoreload
63
- ? [
64
- jsenvPluginAutoreload({
65
- rootDirectoryUrl,
66
- urlGraph,
67
- autoreloadPatterns,
68
- }),
69
- ]
70
- : []),
179
+ ...getCorePlugins({
180
+ rootDirectoryUrl,
181
+ urlGraph,
182
+ scenario: "dev",
183
+ runtimeCompat,
184
+
185
+ urlAnalysis,
186
+ htmlSupervisor,
187
+ nodeEsmResolution,
188
+ fileSystemMagicResolution,
189
+ transpilation,
190
+ clientAutoreload,
191
+ clientFileChangeCallbackList,
192
+ clientFilesPruneCallbackList,
193
+ }),
71
194
  jsenvPluginExplorer({
72
195
  groups: explorerGroups,
73
196
  }),
74
- ...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
197
+ // ...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
75
198
  ],
76
- scenario: "dev",
77
- sourcemaps,
78
199
  })
79
200
  const server = await startOmegaServer({
80
- logger,
201
+ logLevel: omegaServerLogLevel,
81
202
  keepProcessAlive,
82
203
  listenAnyIp,
83
204
  port,
@@ -90,7 +211,7 @@ export const startDevServer = async ({
90
211
  kitchen,
91
212
  scenario: "dev",
92
213
  })
93
- startServerTask.done()
214
+ startDevServerTask.done()
94
215
  logger.info(``)
95
216
  Object.keys(server.origins).forEach((key) => {
96
217
  logger.info(`- ${server.origins[key]}`)
@@ -98,8 +219,14 @@ export const startDevServer = async ({
98
219
  logger.info(``)
99
220
  server.addEffect(() => {
100
221
  return () => {
101
- kitchen.pluginController.callHooks("destroy")
222
+ kitchen.pluginController.callHooks("destroy", {})
102
223
  }
103
224
  })
104
- return server
225
+ return {
226
+ origin: server.origin,
227
+ stop: () => {
228
+ stopWatchingClientFiles()
229
+ server.stop()
230
+ },
231
+ }
105
232
  }
@@ -1,10 +1,9 @@
1
1
  import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
2
2
 
3
3
  import { assertAndNormalizeDirectoryUrl } from "@jsenv/filesystem"
4
- import { createLogger } from "@jsenv/logger"
5
-
4
+ import { createLogger } from "@jsenv/log"
5
+ import { getCorePlugins } from "@jsenv/core/src/plugins/plugins.js"
6
6
  import { createUrlGraph } from "@jsenv/core/src/omega/url_graph.js"
7
- import { getCorePlugins } from "@jsenv/core/src/omega/core_plugins.js"
8
7
  import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
9
8
  import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
10
9
 
@@ -23,12 +22,18 @@ export const execute = async ({
23
22
  collectConsole,
24
23
  collectCoverage,
25
24
  coverageTempDirectoryUrl,
25
+ collectPerformance = false,
26
26
  runtime,
27
27
  runtimeParams,
28
28
 
29
- plugins = [],
30
29
  scenario = "dev",
31
30
  sourcemaps = "inline",
31
+ plugins = [],
32
+ nodeEsmResolution,
33
+ fileSystemMagicResolution,
34
+ transpilation,
35
+ htmlSupervisor = true,
36
+ writeGeneratedFiles = false,
32
37
 
33
38
  port,
34
39
  protocol,
@@ -53,6 +58,7 @@ export const execute = async ({
53
58
  })
54
59
  }
55
60
 
61
+ let resultTransformer = (result) => result
56
62
  runtimeParams = {
57
63
  rootDirectoryUrl,
58
64
  fileRelativeUrl,
@@ -60,19 +66,34 @@ export const execute = async ({
60
66
  }
61
67
  if (runtime.needsServer) {
62
68
  const urlGraph = createUrlGraph()
69
+ const runtimeCompat = { [runtime.name]: runtime.version }
63
70
  const kitchen = createKitchen({
64
71
  signal,
65
72
  logger,
66
73
  rootDirectoryUrl,
67
74
  urlGraph,
68
- plugins: [...plugins, ...getCorePlugins()],
69
75
  scenario,
70
76
  sourcemaps,
77
+ runtimeCompat,
78
+ writeGeneratedFiles,
79
+ plugins: [
80
+ ...plugins,
81
+ ...getCorePlugins({
82
+ rootDirectoryUrl,
83
+ urlGraph,
84
+ scenario,
85
+ runtimeCompat,
86
+
87
+ htmlSupervisor,
88
+ nodeEsmResolution,
89
+ fileSystemMagicResolution,
90
+ transpilation,
91
+ }),
92
+ ],
71
93
  })
72
- const serverLogger = createLogger({ logLevel: "warn" })
73
94
  const server = await startOmegaServer({
74
95
  signal: executeOperation.signal,
75
- logger: serverLogger,
96
+ logLevel: "warn",
76
97
  rootDirectoryUrl,
77
98
  urlGraph,
78
99
  kitchen,
@@ -91,9 +112,13 @@ export const execute = async ({
91
112
  ...runtimeParams,
92
113
  server,
93
114
  }
115
+ resultTransformer = (result) => {
116
+ result.server = server
117
+ return result
118
+ }
94
119
  }
95
120
 
96
- const result = await run({
121
+ let result = await run({
97
122
  signal: executeOperation.signal,
98
123
  logger,
99
124
  allocatedMs,
@@ -102,9 +127,11 @@ export const execute = async ({
102
127
  collectConsole,
103
128
  collectCoverage,
104
129
  coverageTempDirectoryUrl,
130
+ collectPerformance,
105
131
  runtime,
106
132
  runtimeParams,
107
133
  })
134
+ result = resultTransformer(result)
108
135
 
109
136
  try {
110
137
  if (result.status === "errored") {
@@ -1,7 +1,7 @@
1
1
  import cuid from "cuid"
2
2
  import { Abort, raceCallbacks } from "@jsenv/abort"
3
- import { resolveUrl, writeFile } from "@jsenv/filesystem"
4
- import { createDetailedMessage } from "@jsenv/logger"
3
+ import { resolveUrl } from "@jsenv/urls"
4
+ import { writeFile } from "@jsenv/filesystem"
5
5
 
6
6
  export const run = async ({
7
7
  signal = new AbortController().signal,
@@ -12,15 +12,12 @@ export const run = async ({
12
12
  collectConsole = false,
13
13
  collectCoverage = false,
14
14
  coverageTempDirectoryUrl,
15
- // measurePerformance,
16
- // collectPerformance = false,
15
+ collectPerformance = false,
17
16
 
18
17
  runtime,
19
18
  runtimeParams,
20
19
  }) => {
21
- const onErrorRef = { current: () => {} }
22
20
  const onConsoleRef = { current: () => {} }
23
- const onStopRef = { current: () => {} }
24
21
  const stopSignal = { notify: () => {} }
25
22
 
26
23
  let resultTransformer = (result) => result
@@ -105,7 +102,7 @@ export const run = async ({
105
102
  try {
106
103
  logger.debug(`run() ${runtimeLabel}`)
107
104
  runOperation.throwIfAborted()
108
- const winnerPromise = new Promise((resolve, reject) => {
105
+ const winnerPromise = new Promise((resolve) => {
109
106
  raceCallbacks(
110
107
  {
111
108
  aborted: (cb) => {
@@ -114,35 +111,23 @@ export const run = async ({
114
111
  runOperation.signal.removeEventListener("abort", cb)
115
112
  }
116
113
  },
117
- errored: (cb) => {
118
- onErrorRef.current = (error) => {
119
- logger.debug(
120
- createDetailedMessage(`error during execution`, {
121
- ["error stack"]: error.stack,
122
- ["runtime"]: runtimeLabel,
123
- }),
124
- )
125
- cb(error)
126
- }
127
- },
128
- stopped: (cb) => {
129
- onStopRef.current = cb
130
- },
131
114
  runned: async (cb) => {
132
115
  try {
133
- await runtime.run({
134
- signal,
116
+ const result = await runtime.run({
117
+ signal: runOperation.signal,
135
118
  logger,
136
119
  ...runtimeParams,
120
+ collectPerformance,
137
121
  keepRunning,
138
122
  stopSignal,
139
- onStop: (stopInfo) => onStopRef.current(stopInfo),
140
- onError: (error) => onErrorRef.current(error),
141
123
  onConsole: (log) => onConsoleRef.current(log),
142
- onResult: cb,
143
124
  })
125
+ cb(result)
144
126
  } catch (e) {
145
- reject(e)
127
+ cb({
128
+ status: "errored",
129
+ error: e,
130
+ })
146
131
  }
147
132
  },
148
133
  },
@@ -153,31 +138,16 @@ export const run = async ({
153
138
  if (winner.name === "aborted") {
154
139
  runOperation.throwIfAborted()
155
140
  }
156
- if (winner.name === "errored") {
157
- return await resultTransformer(
158
- createErroredExecutionResult({
159
- error: winner.data,
160
- }),
161
- )
162
- }
163
- if (winner.name === "stopped") {
164
- return await resultTransformer(
165
- createErroredExecutionResult({
166
- error: new Error(`runtime stopped during execution`),
167
- }),
168
- )
169
- }
170
- onErrorRef.current = (error) => {
171
- throw error
141
+ let result = winner.data
142
+ result = await resultTransformer(result)
143
+ return result
144
+ } catch (e) {
145
+ let result = {
146
+ status: "errored",
147
+ error: e,
172
148
  }
173
- const result = winner.data
174
- return await resultTransformer(result)
175
- } catch (error) {
176
- return await resultTransformer(
177
- createErroredExecutionResult({
178
- error,
179
- }),
180
- )
149
+ result = await resultTransformer(result)
150
+ return result
181
151
  } finally {
182
152
  await runOperation.end()
183
153
  }
@@ -200,9 +170,3 @@ const createTimedoutResult = () => {
200
170
  status: "timedout",
201
171
  }
202
172
  }
203
- const createErroredExecutionResult = ({ error }) => {
204
- return {
205
- status: "errored",
206
- error,
207
- }
208
- }