@jsenv/core 27.0.0-alpha.12 → 27.0.0-alpha.15

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 (125) hide show
  1. package/main.js +4 -0
  2. package/package.json +15 -11
  3. package/readme.md +4 -12
  4. package/src/build/build.js +451 -388
  5. package/src/build/build_urls_generator.js +23 -20
  6. package/src/build/graph_utils.js +31 -0
  7. package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +31 -14
  8. package/src/build/inject_service_worker_urls.js +66 -12
  9. package/src/build/resync_ressource_hints.js +83 -0
  10. package/src/build/start_build_server.js +176 -0
  11. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +2 -2
  12. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
  13. package/src/dev/start_dev_server.js +16 -22
  14. package/src/execute/execute.js +19 -6
  15. package/src/execute/run.js +17 -54
  16. package/src/execute/runtimes/browsers/from_playwright.js +167 -146
  17. package/src/execute/runtimes/node/node_process.js +281 -37
  18. package/src/omega/{runtime_support/default_runtime_support.js → compat/default_runtime_compat.js} +3 -5
  19. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  20. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +14 -16
  21. package/src/omega/errors.js +51 -58
  22. package/src/omega/fetched_content_compliance.js +24 -0
  23. package/src/omega/kitchen.js +403 -283
  24. package/src/omega/server/file_service.js +9 -11
  25. package/src/omega/url_graph/url_graph_load.js +13 -7
  26. package/src/omega/url_graph/url_graph_report.js +7 -5
  27. package/src/omega/url_graph.js +22 -10
  28. package/src/omega/web_workers.js +42 -0
  29. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  30. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +2 -2
  31. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  32. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  33. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  34. package/src/{dev/plugins/autoreload/jsenv_plugin_autoreload.js → plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js} +25 -166
  35. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  36. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  37. package/src/plugins/bundling/css/bundle_css.js +17 -0
  38. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  39. package/src/{build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js → plugins/bundling/js_module/bundle_js_module.js} +100 -75
  40. package/src/plugins/bundling/jsenv_plugin_bundling.js +51 -0
  41. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +48 -41
  42. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +66 -0
  43. package/src/{omega/core_plugins → plugins}/filesystem_magic/jsenv_plugin_filesystem_magic.js +7 -4
  44. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  45. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  46. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_installer.js +3 -2
  47. package/src/{omega/core_plugins → plugins}/html_supervisor/client/html_supervisor_setup.js +0 -0
  48. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  49. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  50. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +38 -46
  51. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  52. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  53. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  54. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +2 -2
  55. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +98 -0
  56. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +26 -8
  57. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  58. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  59. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +37 -31
  60. package/src/{omega/core_plugins → plugins}/inject_globals/jsenv_plugin_inject_globals.js +4 -6
  61. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  62. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +18 -14
  63. package/src/{omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js → plugins/inline/jsenv_plugin_html_inline_content.js} +61 -40
  64. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  65. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +6 -6
  66. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +263 -0
  67. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  68. package/src/plugins/minification/css/minify_css.js +9 -0
  69. package/src/plugins/minification/html/minify_html.js +15 -0
  70. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  71. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  72. package/src/plugins/minification/json/minify_json.js +8 -0
  73. package/src/{omega/core_plugins → plugins}/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +15 -15
  74. package/src/{omega → plugins}/plugin_controller.js +18 -10
  75. package/src/plugins/plugins.js +73 -0
  76. package/src/plugins/transpilation/as_js_classic/client/s.js +808 -0
  77. package/src/plugins/transpilation/as_js_classic/client/s.js.md +1 -0
  78. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  79. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  80. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +191 -0
  81. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_script_type_module_as_classic.js +156 -0
  82. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_top_level_await.js +37 -0
  83. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_workers_type_module_as_classic.js +133 -0
  84. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  85. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  86. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
  87. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +3 -21
  88. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  89. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +29 -27
  90. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +0 -0
  91. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/.eslintrc.cjs +0 -0
  92. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  93. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  94. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  95. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  96. package/src/{omega/core_plugins → plugins/transpilation}/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -0
  97. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +243 -0
  98. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +40 -0
  99. package/src/plugins/url_references/css/css_urls.js +49 -0
  100. package/src/plugins/url_references/html/html_urls.js +273 -0
  101. package/src/plugins/url_references/js/js_urls.js +170 -0
  102. package/src/plugins/url_references/jsenv_plugin_url_references.js +18 -0
  103. package/src/plugins/url_references/webmanifest/webmanifest_urls.js +17 -0
  104. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +12 -5
  105. package/src/{omega/core_plugins → plugins}/url_version/jsenv_plugin_url_version.js +8 -8
  106. package/src/test/execute_plan.js +23 -11
  107. package/src/test/execute_test_plan.js +9 -6
  108. package/src/test/logs_file_execution.js +8 -7
  109. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  110. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  111. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  112. package/src/execute/runtimes/node/controlled_process.js +0 -316
  113. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  114. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  115. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  116. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  117. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  118. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  119. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  120. package/src/omega/core_plugins.js +0 -42
  121. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  122. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  123. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  124. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  125. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -20,18 +20,18 @@ export const jsenvPluginNodeEsmResolution = ({
20
20
  const nodeEsmResolution = {
21
21
  name: "jsenv:node_esm_resolve",
22
22
  appliesDuring: "*",
23
- resolve: {
24
- js_import_export: ({ parentUrl, specifier }) => {
23
+ resolveUrl: {
24
+ js_import_export: (reference) => {
25
25
  const { url } = applyNodeEsmResolution({
26
26
  conditions: packageConditions,
27
- parentUrl,
28
- specifier,
27
+ parentUrl: reference.parentUrl,
28
+ specifier: reference.specifier,
29
29
  })
30
30
  return url
31
31
  },
32
32
  },
33
- load: ({ url }) => {
34
- if (url.startsWith("file:///@ignore/")) {
33
+ fetchUrlContent: (urlInfo) => {
34
+ if (urlInfo.url.startsWith("file:///@ignore/")) {
35
35
  return {
36
36
  content: "export default {}",
37
37
  }
@@ -46,30 +46,30 @@ export const jsenvPluginNodeEsmResolution = ({
46
46
  dev: true,
47
47
  test: true,
48
48
  },
49
- transformReferencedUrl: ({ url }, { rootDirectoryUrl }) => {
50
- if (!url.startsWith("file:")) {
49
+ transformUrlSearchParams: (reference, context) => {
50
+ if (!reference.url.startsWith("file:")) {
51
51
  return null
52
52
  }
53
53
  // without this check a file inside a project without package.json
54
54
  // could be considered as a node module if there is a ancestor package.json
55
55
  // but we want to version only node modules
56
- if (!url.includes("/node_modules/")) {
56
+ if (!reference.url.includes("/node_modules/")) {
57
57
  return null
58
58
  }
59
- const urlObject = new URL(url)
60
- if (urlObject.searchParams.has("v")) {
59
+ if (reference.searchParams.has("v")) {
61
60
  return null
62
61
  }
63
- const packageUrl = lookupPackageScope(url)
62
+ const packageUrl = lookupPackageScope(reference.url)
64
63
  if (!packageUrl) {
65
64
  return null
66
65
  }
67
- if (packageUrl === rootDirectoryUrl) {
66
+ if (packageUrl === context.rootDirectoryUrl) {
68
67
  return null
69
68
  }
70
69
  const packageVersion = readPackageJson(packageUrl).version
71
- urlObject.searchParams.set("v", packageVersion)
72
- return urlObject.href
70
+ return {
71
+ v: packageVersion,
72
+ }
73
73
  },
74
74
  }
75
75
 
@@ -2,13 +2,13 @@ export const createPluginController = ({
2
2
  plugins,
3
3
  scenario,
4
4
  hooks = [
5
- "resolve",
6
- "normalize",
7
- "load",
8
- "transform",
9
- "transformReferencedUrl",
10
- "formatReferencedUrl",
11
- "finalize",
5
+ "resolveUrl",
6
+ "normalizeUrl",
7
+ "fetchUrlContent",
8
+ "transformUrlContent",
9
+ "transformUrlSearchParams",
10
+ "formatUrl",
11
+ "finalizeUrlContent",
12
12
  "cooked",
13
13
  "destroy",
14
14
  ],
@@ -203,7 +203,7 @@ const assertAndNormalizeReturnValue = (hookName, returnValue) => {
203
203
  const returnValueAssertions = [
204
204
  {
205
205
  name: "url_assertion",
206
- appliesTo: ["resolve", "redirect"],
206
+ appliesTo: ["resolveUrl", "normalizeUrl"],
207
207
  assertion: (valueReturned) => {
208
208
  if (valueReturned instanceof URL) {
209
209
  return valueReturned.href
@@ -218,13 +218,21 @@ const returnValueAssertions = [
218
218
  },
219
219
  {
220
220
  name: "content_assertion",
221
- appliesTo: ["load", "transform", "finalize"],
221
+ appliesTo: [
222
+ "fetchUrlContent",
223
+ "transformUrlContent",
224
+ "finalizeUrlContent",
225
+ "optimizeUrlContent",
226
+ ],
222
227
  assertion: (valueReturned) => {
223
228
  if (typeof valueReturned === "string" || Buffer.isBuffer(valueReturned)) {
224
229
  return { content: valueReturned }
225
230
  }
226
231
  if (typeof valueReturned === "object") {
227
- const { content } = valueReturned
232
+ const { external, content } = valueReturned
233
+ if (external) {
234
+ return undefined
235
+ }
228
236
  if (typeof content !== "string" && !Buffer.isBuffer(content)) {
229
237
  throw new Error(
230
238
  `Unexpected "content" returned by plugin: it must be a string or a buffer; got ${content}`,
@@ -0,0 +1,73 @@
1
+ import { jsenvPluginLeadingSlash } from "./leading_slash/jsenv_plugin_leading_slash.js"
2
+ import { jsenvPluginImportmap } from "./importmap/jsenv_plugin_importmap.js"
3
+ import { jsenvPluginUrlResolution } from "./url_resolution/jsenv_plugin_url_resolution.js"
4
+ import { jsenvPluginNodeEsmResolution } from "./node_esm_resolution/jsenv_plugin_node_esm_resolution.js"
5
+ import { jsenvPluginUrlVersion } from "./url_version/jsenv_plugin_url_version.js"
6
+ import { jsenvPluginFileUrls } from "./file_urls/jsenv_plugin_file_urls.js"
7
+ import { jsenvPluginHttpUrls } from "./http_urls/jsenv_plugin_http_urls.js"
8
+ import { jsenvPluginFileSystemMagic } from "./filesystem_magic/jsenv_plugin_filesystem_magic.js"
9
+ import { jsenvPluginInline } from "./inline/jsenv_plugin_inline.js"
10
+ import { jsenvPluginHtmlSupervisor } from "./html_supervisor/jsenv_plugin_html_supervisor.js"
11
+ import { jsenvPluginCommonJsGlobals } from "./commonjs_globals/jsenv_plugin_commonjs_globals.js"
12
+ import { jsenvPluginImportMetaScenarios } from "./import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js"
13
+ import { jsenvPluginInjectGlobals } from "./inject_globals/jsenv_plugin_inject_globals.js"
14
+ import { jsenvPluginTranspilation } from "./transpilation/jsenv_plugin_transpilation.js"
15
+ import { jsenvPluginBundling } from "./bundling/jsenv_plugin_bundling.js"
16
+ import { jsenvPluginMinification } from "./minification/jsenv_plugin_minification.js"
17
+ import { jsenvPluginImportMetaHot } from "./import_meta_hot/jsenv_plugin_import_meta_hot.js"
18
+ import { jsenvPluginAutoreload } from "./autoreload/jsenv_plugin_autoreload.js"
19
+
20
+ export const getCorePlugins = ({
21
+ rootDirectoryUrl,
22
+ urlGraph,
23
+ scenario,
24
+
25
+ htmlSupervisor,
26
+ nodeEsmResolution,
27
+ fileSystemMagicResolution,
28
+ injectedGlobals,
29
+ transpilation = true,
30
+ minification = false,
31
+ bundling = false,
32
+
33
+ autoreload = false,
34
+ } = {}) => {
35
+ if (htmlSupervisor === true) {
36
+ htmlSupervisor = {}
37
+ }
38
+ if (autoreload === true) {
39
+ autoreload = {}
40
+ }
41
+ return [
42
+ jsenvPluginTranspilation(transpilation),
43
+ ...(htmlSupervisor ? [jsenvPluginHtmlSupervisor(htmlSupervisor)] : []), // before inline as it turns inline <script> into <script src>
44
+ jsenvPluginInline(), // before "file urls" to resolve and load inline urls
45
+ jsenvPluginImportmap(), // before node esm to handle bare specifiers before node esm
46
+ jsenvPluginFileUrls(),
47
+ jsenvPluginHttpUrls(),
48
+ jsenvPluginLeadingSlash(),
49
+ jsenvPluginNodeEsmResolution(nodeEsmResolution), // before url resolution to handle "js_import_export" resolution
50
+ jsenvPluginUrlResolution(),
51
+ jsenvPluginFileSystemMagic(fileSystemMagicResolution),
52
+ jsenvPluginUrlVersion(),
53
+ jsenvPluginInjectGlobals(injectedGlobals),
54
+ jsenvPluginCommonJsGlobals(),
55
+ jsenvPluginImportMetaScenarios(),
56
+ // jsenvPluginWorkers(),
57
+
58
+ jsenvPluginBundling(bundling),
59
+ jsenvPluginMinification(minification),
60
+
61
+ jsenvPluginImportMetaHot(),
62
+ ...(autoreload
63
+ ? [
64
+ jsenvPluginAutoreload({
65
+ rootDirectoryUrl,
66
+ urlGraph,
67
+ scenario,
68
+ ...autoreload,
69
+ }),
70
+ ]
71
+ : []),
72
+ ]
73
+ }