@jsenv/core 27.0.0-alpha.4 → 27.0.0-alpha.40

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 (141) hide show
  1. package/dist/event_source_client.js +549 -0
  2. package/dist/event_source_client.js.map +188 -0
  3. package/dist/html_supervisor_installer.js +1145 -0
  4. package/dist/html_supervisor_installer.js.map +322 -0
  5. package/dist/html_supervisor_setup.js +92 -0
  6. package/dist/html_supervisor_setup.js.map +57 -0
  7. package/main.js +8 -1
  8. package/package.json +22 -21
  9. package/readme.md +4 -12
  10. package/src/build/build.js +731 -433
  11. package/src/build/build_urls_generator.js +55 -21
  12. package/src/build/graph_utils.js +31 -0
  13. package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +33 -15
  14. package/src/build/inject_service_worker_urls.js +79 -0
  15. package/src/build/resync_ressource_hints.js +68 -0
  16. package/src/build/start_build_server.js +205 -0
  17. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +2 -2
  18. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
  19. package/src/dev/start_dev_server.js +58 -26
  20. package/src/execute/execute.js +30 -4
  21. package/src/execute/run.js +19 -56
  22. package/src/execute/runtimes/browsers/from_playwright.js +201 -147
  23. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  24. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  25. package/src/execute/runtimes/node/node_process.js +280 -39
  26. package/src/jsenv_root_directory_url.js +1 -0
  27. package/src/omega/{runtime_support/default_runtime_support.js → compat/default_runtime_compat.js} +3 -5
  28. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +66 -4
  29. package/src/omega/compat/runtime_compat.js +50 -0
  30. package/src/omega/errors.js +51 -58
  31. package/src/omega/fetched_content_compliance.js +24 -0
  32. package/src/omega/file_url_converter.js +8 -50
  33. package/src/omega/kitchen.js +414 -285
  34. package/src/omega/server/file_service.js +21 -22
  35. package/src/omega/url_graph/url_graph_load.js +14 -7
  36. package/src/omega/url_graph/url_graph_report.js +17 -15
  37. package/src/omega/url_graph/url_info_transformations.js +17 -5
  38. package/src/omega/url_graph.js +33 -10
  39. package/src/omega/web_workers.js +42 -0
  40. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  41. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +2 -2
  42. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  43. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  44. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +46 -0
  45. package/src/{dev/plugins/autoreload/jsenv_plugin_autoreload.js → plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js} +31 -172
  46. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +27 -0
  47. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  48. package/src/plugins/bundling/css/bundle_css.js +21 -0
  49. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  50. package/src/{build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js → plugins/bundling/js_module/bundle_js_module.js} +120 -79
  51. package/src/plugins/bundling/jsenv_plugin_bundling.js +51 -0
  52. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
  53. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +66 -0
  54. package/src/{omega/core_plugins → plugins}/filesystem_magic/jsenv_plugin_filesystem_magic.js +8 -5
  55. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  56. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  57. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_installer.js +3 -2
  58. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_setup.js +0 -0
  59. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  60. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  61. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +52 -55
  62. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  63. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  64. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  65. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +2 -2
  66. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +101 -0
  67. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
  68. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  69. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  70. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +37 -31
  71. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +67 -0
  72. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  73. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +18 -14
  74. package/src/{omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js → plugins/inline/jsenv_plugin_html_inline_content.js} +61 -40
  75. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  76. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +6 -6
  77. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +296 -0
  78. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  79. package/src/plugins/minification/css/minify_css.js +9 -0
  80. package/src/plugins/minification/html/minify_html.js +15 -0
  81. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  82. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  83. package/src/plugins/minification/json/minify_json.js +8 -0
  84. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +146 -0
  85. package/src/{omega → plugins}/plugin_controller.js +39 -11
  86. package/src/plugins/plugins.js +89 -0
  87. package/src/plugins/transpilation/as_js_classic/client/s.js +808 -0
  88. package/src/plugins/transpilation/as_js_classic/client/s.js.md +1 -0
  89. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  90. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  91. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +183 -0
  92. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_script_type_module_as_classic.js +256 -0
  93. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_workers_type_module_as_classic.js +93 -0
  94. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  95. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  96. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
  97. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +4 -22
  98. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  99. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +37 -21
  100. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
  101. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/.eslintrc.cjs +0 -0
  102. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  103. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  104. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  105. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  106. package/src/plugins/transpilation/fetch_original_url_info.js +30 -0
  107. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +200 -0
  108. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +70 -0
  109. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +44 -0
  110. package/src/plugins/url_references/css/css_urls.js +49 -0
  111. package/src/plugins/url_references/html/html_urls.js +273 -0
  112. package/src/plugins/url_references/js/js_urls.js +43 -0
  113. package/src/plugins/url_references/jsenv_plugin_imports_analysis.js +46 -0
  114. package/src/plugins/url_references/jsenv_plugin_url_analysis.js +18 -0
  115. package/src/plugins/url_references/jsenv_plugin_url_references.js +6 -0
  116. package/src/plugins/url_references/webmanifest/webmanifest_urls.js +17 -0
  117. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +12 -5
  118. package/src/{omega/core_plugins → plugins}/url_version/jsenv_plugin_url_version.js +12 -15
  119. package/src/test/execute_plan.js +28 -11
  120. package/src/test/execute_test_plan.js +23 -8
  121. package/src/test/logs_file_execution.js +8 -7
  122. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  123. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  124. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  125. package/src/execute/runtimes/node/controlled_process.js +0 -316
  126. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  127. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  128. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  129. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  130. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  131. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  132. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -210
  133. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  134. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  135. package/src/omega/core_plugins.js +0 -39
  136. package/src/omega/runtime_support/runtime_support.js +0 -20
  137. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  138. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  139. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  140. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  141. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -1,14 +1,16 @@
1
+ import { timeStart } from "@jsenv/server"
2
+
1
3
  export const createPluginController = ({
2
4
  plugins,
3
5
  scenario,
4
6
  hooks = [
5
- "resolve",
6
- "normalize",
7
- "load",
8
- "transform",
9
- "transformReferencedUrl",
10
- "formatReferencedUrl",
11
- "finalize",
7
+ "resolveUrl",
8
+ "normalizeUrl",
9
+ "fetchUrlContent",
10
+ "transformUrlContent",
11
+ "transformUrlSearchParams",
12
+ "formatUrl",
13
+ "finalizeUrlContent",
12
14
  "cooked",
13
15
  "destroy",
14
16
  ],
@@ -47,7 +49,13 @@ export const createPluginController = ({
47
49
  }
48
50
  currentPlugin = hook.plugin
49
51
  currentHookName = hook.hookName
52
+ const timeEnd = timeStart(
53
+ `${currentHookName}-${currentPlugin.name.replace("jsenv:", "")}`,
54
+ )
50
55
  let valueReturned = hookFn(info, context)
56
+ if (info.timing) {
57
+ Object.assign(info.timing, timeEnd())
58
+ }
51
59
  valueReturned = assertAndNormalizeReturnValue(hook.hookName, valueReturned)
52
60
  currentPlugin = null
53
61
  currentHookName = null
@@ -60,7 +68,13 @@ export const createPluginController = ({
60
68
  }
61
69
  currentPlugin = hook.plugin
62
70
  currentHookName = hook.hookName
71
+ const timeEnd = timeStart(
72
+ `${currentHookName}-${currentPlugin.name.replace("jsenv:", "")}`,
73
+ )
63
74
  let valueReturned = await hookFn(info, context)
75
+ if (info.timing) {
76
+ Object.assign(info.timing, timeEnd())
77
+ }
64
78
  valueReturned = assertAndNormalizeReturnValue(hook.hookName, valueReturned)
65
79
  currentPlugin = null
66
80
  currentHookName = null
@@ -145,12 +159,18 @@ const flattenAndFilterPlugins = (pluginsRaw, { scenario }) => {
145
159
  const { appliesDuring } = pluginEntry
146
160
  if (appliesDuring === undefined) {
147
161
  console.warn(`"appliesDuring" is undefined on ${pluginEntry.name}`)
162
+ return
148
163
  }
149
164
  if (appliesDuring === "*") {
150
165
  plugins.push(pluginEntry)
151
166
  return
152
167
  }
153
- if (appliesDuring && appliesDuring[scenario]) {
168
+ if (typeof appliesDuring !== "object") {
169
+ throw new Error(
170
+ `"appliesDuring" must be an object or "*", got ${appliesDuring}`,
171
+ )
172
+ }
173
+ if (appliesDuring[scenario]) {
154
174
  plugins.push(pluginEntry)
155
175
  return
156
176
  }
@@ -203,7 +223,7 @@ const assertAndNormalizeReturnValue = (hookName, returnValue) => {
203
223
  const returnValueAssertions = [
204
224
  {
205
225
  name: "url_assertion",
206
- appliesTo: ["resolve", "redirect"],
226
+ appliesTo: ["resolveUrl", "normalizeUrl"],
207
227
  assertion: (valueReturned) => {
208
228
  if (valueReturned instanceof URL) {
209
229
  return valueReturned.href
@@ -218,13 +238,21 @@ const returnValueAssertions = [
218
238
  },
219
239
  {
220
240
  name: "content_assertion",
221
- appliesTo: ["load", "transform", "finalize"],
241
+ appliesTo: [
242
+ "fetchUrlContent",
243
+ "transformUrlContent",
244
+ "finalizeUrlContent",
245
+ "optimizeUrlContent",
246
+ ],
222
247
  assertion: (valueReturned) => {
223
248
  if (typeof valueReturned === "string" || Buffer.isBuffer(valueReturned)) {
224
249
  return { content: valueReturned }
225
250
  }
226
251
  if (typeof valueReturned === "object") {
227
- const { content } = valueReturned
252
+ const { external, content } = valueReturned
253
+ if (external) {
254
+ return undefined
255
+ }
228
256
  if (typeof content !== "string" && !Buffer.isBuffer(content)) {
229
257
  throw new Error(
230
258
  `Unexpected "content" returned by plugin: it must be a string or a buffer; got ${content}`,
@@ -0,0 +1,89 @@
1
+ import { jsenvPluginUrlReferences } from "../plugins/url_references/jsenv_plugin_url_references.js"
2
+ import { jsenvPluginLeadingSlash } from "./leading_slash/jsenv_plugin_leading_slash.js"
3
+ import { jsenvPluginImportmap } from "./importmap/jsenv_plugin_importmap.js"
4
+ import { jsenvPluginUrlResolution } from "./url_resolution/jsenv_plugin_url_resolution.js"
5
+ import { jsenvPluginNodeEsmResolution } from "./node_esm_resolution/jsenv_plugin_node_esm_resolution.js"
6
+ import { jsenvPluginUrlVersion } from "./url_version/jsenv_plugin_url_version.js"
7
+ import { jsenvPluginFileUrls } from "./file_urls/jsenv_plugin_file_urls.js"
8
+ import { jsenvPluginHttpUrls } from "./http_urls/jsenv_plugin_http_urls.js"
9
+ import { jsenvPluginFileSystemMagic } from "./filesystem_magic/jsenv_plugin_filesystem_magic.js"
10
+ import { jsenvPluginInline } from "./inline/jsenv_plugin_inline.js"
11
+ import { jsenvPluginHtmlSupervisor } from "./html_supervisor/jsenv_plugin_html_supervisor.js"
12
+ import { jsenvPluginCommonJsGlobals } from "./commonjs_globals/jsenv_plugin_commonjs_globals.js"
13
+ import { jsenvPluginImportMetaScenarios } from "./import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js"
14
+ import { jsenvPluginInjectGlobals } from "./inject_globals/jsenv_plugin_inject_globals.js"
15
+ import { jsenvPluginTranspilation } from "./transpilation/jsenv_plugin_transpilation.js"
16
+ import { jsenvPluginBundling } from "./bundling/jsenv_plugin_bundling.js"
17
+ import { jsenvPluginMinification } from "./minification/jsenv_plugin_minification.js"
18
+ import { jsenvPluginImportMetaHot } from "./import_meta_hot/jsenv_plugin_import_meta_hot.js"
19
+ import { jsenvPluginAutoreload } from "./autoreload/jsenv_plugin_autoreload.js"
20
+
21
+ export const getCorePlugins = ({
22
+ rootDirectoryUrl,
23
+ urlGraph,
24
+ scenario,
25
+
26
+ htmlSupervisor,
27
+ nodeEsmResolution,
28
+ fileSystemMagicResolution,
29
+ injectedGlobals,
30
+ transpilation = true,
31
+ minification = false,
32
+ bundling = false,
33
+
34
+ autoreload = false,
35
+ } = {}) => {
36
+ if (htmlSupervisor === true) {
37
+ htmlSupervisor = {}
38
+ }
39
+ if (autoreload === true) {
40
+ autoreload = {}
41
+ }
42
+ if (nodeEsmResolution === true) {
43
+ nodeEsmResolution = {}
44
+ }
45
+ return [
46
+ jsenvPluginUrlReferences(),
47
+ jsenvPluginTranspilation(transpilation),
48
+ ...(htmlSupervisor
49
+ ? [
50
+ jsenvPluginHtmlSupervisor({
51
+ rootDirectoryUrl,
52
+ ...htmlSupervisor,
53
+ }),
54
+ ]
55
+ : []), // before inline as it turns inline <script> into <script src>
56
+ jsenvPluginInline(), // before "file urls" to resolve and load inline urls
57
+ jsenvPluginImportmap(), // before node esm to handle bare specifiers before node esm
58
+ jsenvPluginFileUrls(),
59
+ jsenvPluginHttpUrls(),
60
+ jsenvPluginLeadingSlash(),
61
+ // before url resolution to handle "js_import_export" resolution
62
+ jsenvPluginNodeEsmResolution({
63
+ rootDirectoryUrl,
64
+ ...nodeEsmResolution,
65
+ }),
66
+ jsenvPluginUrlResolution(),
67
+ jsenvPluginFileSystemMagic(fileSystemMagicResolution),
68
+ jsenvPluginUrlVersion(),
69
+ jsenvPluginInjectGlobals(injectedGlobals),
70
+ jsenvPluginCommonJsGlobals(),
71
+ jsenvPluginImportMetaScenarios(),
72
+ // jsenvPluginWorkers(),
73
+
74
+ jsenvPluginBundling(bundling),
75
+ jsenvPluginMinification(minification),
76
+
77
+ jsenvPluginImportMetaHot(),
78
+ ...(autoreload
79
+ ? [
80
+ jsenvPluginAutoreload({
81
+ rootDirectoryUrl,
82
+ urlGraph,
83
+ scenario,
84
+ ...autoreload,
85
+ }),
86
+ ]
87
+ : []),
88
+ ]
89
+ }