@jsenv/core 35.0.3 → 35.0.4

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 (117) hide show
  1. package/dist/html/explorer.html +107 -107
  2. package/dist/js/new_stylesheet.js +3 -0
  3. package/dist/js/s.js.map +3 -3
  4. package/package.json +1 -1
  5. package/src/build/build.js +589 -587
  6. package/src/build/build_urls_generator.js +44 -44
  7. package/src/build/graph_utils.js +14 -14
  8. package/src/build/jsenv_plugin_line_break_normalization.js +6 -6
  9. package/src/build/line_break_unix.js +11 -11
  10. package/src/build/start_build_server.js +37 -37
  11. package/src/build/version_generator.js +7 -7
  12. package/src/build/version_mappings_injection.js +23 -23
  13. package/src/dev/file_service.js +132 -132
  14. package/src/dev/start_dev_server.js +56 -56
  15. package/src/dev/user_agent.js +8 -8
  16. package/src/helpers/basic_fetch.js +24 -24
  17. package/src/helpers/command/command.js +28 -28
  18. package/src/helpers/lookup_package_directory.js +19 -16
  19. package/src/helpers/ping_server.js +17 -17
  20. package/src/helpers/require_from_jsenv.js +2 -2
  21. package/src/helpers/watch_source_files.js +9 -9
  22. package/src/helpers/web_url_converter.js +10 -10
  23. package/src/helpers/worker_reload.js +27 -27
  24. package/src/kitchen/compat/features_compatibility.js +1 -1
  25. package/src/kitchen/compat/runtime_compat.js +26 -24
  26. package/src/kitchen/errors.js +75 -75
  27. package/src/kitchen/fetched_content_compliance.js +8 -8
  28. package/src/kitchen/kitchen.js +251 -250
  29. package/src/kitchen/url_graph/sort_by_dependencies.js +17 -17
  30. package/src/kitchen/url_graph/url_graph_loader.js +30 -30
  31. package/src/kitchen/url_graph/url_graph_report.js +57 -57
  32. package/src/kitchen/url_graph/url_info_transformations.js +77 -77
  33. package/src/kitchen/url_graph.js +121 -121
  34. package/src/kitchen/url_specifier_encoding.js +21 -21
  35. package/src/kitchen/web_workers.js +5 -5
  36. package/src/main.js +3 -3
  37. package/src/plugins/autoreload/client/autoreload.js +96 -96
  38. package/src/plugins/autoreload/client/reload.js +56 -56
  39. package/src/plugins/autoreload/client/url_helpers.js +13 -13
  40. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +5 -5
  41. package/src/plugins/autoreload/jsenv_plugin_autoreload_client.js +9 -9
  42. package/src/plugins/autoreload/jsenv_plugin_autoreload_server.js +61 -60
  43. package/src/plugins/autoreload/jsenv_plugin_hmr.js +15 -15
  44. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +5 -5
  45. package/src/plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js +57 -57
  46. package/src/plugins/explorer/client/explorer.html +107 -107
  47. package/src/plugins/explorer/jsenv_plugin_explorer.js +20 -20
  48. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +60 -60
  49. package/src/plugins/global_scenarios/jsenv_plugin_global_scenarios.js +5 -5
  50. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +3 -3
  51. package/src/plugins/import_meta_hot/babel_plugin_metadata_import_meta_hot.js +35 -35
  52. package/src/plugins/import_meta_hot/client/import_meta_hot.js +26 -26
  53. package/src/plugins/import_meta_hot/html_hot_dependencies.js +43 -43
  54. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +44 -40
  55. package/src/plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +35 -35
  56. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +21 -21
  57. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +3 -3
  58. package/src/plugins/importmap/jsenv_plugin_importmap.js +54 -54
  59. package/src/plugins/inline_content_analysis/client/inline_content.js +3 -3
  60. package/src/plugins/inline_content_analysis/jsenv_plugin_data_urls.js +26 -26
  61. package/src/plugins/inline_content_analysis/jsenv_plugin_html_inline_content_analysis.js +47 -47
  62. package/src/plugins/inline_content_analysis/jsenv_plugin_inline_content_analysis.js +9 -9
  63. package/src/plugins/inline_content_analysis/jsenv_plugin_js_inline_content_analysis.js +101 -101
  64. package/src/plugins/inlining/jsenv_plugin_inlining.js +9 -9
  65. package/src/plugins/inlining/jsenv_plugin_inlining_as_data_url.js +11 -11
  66. package/src/plugins/inlining/jsenv_plugin_inlining_into_html.js +48 -46
  67. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +4 -4
  68. package/src/plugins/plugin_controller.js +124 -124
  69. package/src/plugins/plugins.js +27 -27
  70. package/src/plugins/ribbon/client/ribbon.js +6 -6
  71. package/src/plugins/ribbon/jsenv_plugin_ribbon.js +15 -15
  72. package/src/plugins/server_events/client/connection_manager.js +52 -52
  73. package/src/plugins/server_events/client/event_source_connection.js +36 -36
  74. package/src/plugins/server_events/client/events_manager.js +37 -37
  75. package/src/plugins/server_events/client/server_events_client.js +7 -7
  76. package/src/plugins/server_events/client/web_socket_connection.js +39 -39
  77. package/src/plugins/server_events/jsenv_plugin_server_events_client_injection.js +9 -9
  78. package/src/plugins/server_events/server_events_dispatcher.js +43 -43
  79. package/src/plugins/supervisor/client/supervisor.js +455 -450
  80. package/src/plugins/supervisor/html_supervisor_injection.js +64 -62
  81. package/src/plugins/supervisor/js_supervisor_injection.js +67 -67
  82. package/src/plugins/supervisor/jsenv_plugin_supervisor.js +54 -51
  83. package/src/plugins/transpilation/as_js_module/convert_js_classic_to_js_module.js +13 -13
  84. package/src/plugins/transpilation/as_js_module/jsenv_plugin_as_js_module.js +19 -19
  85. package/src/plugins/transpilation/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +10 -10
  86. package/src/plugins/transpilation/babel/global_this/client/global_this.js +8 -8
  87. package/src/plugins/transpilation/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +16 -16
  88. package/src/plugins/transpilation/babel/helpers/babel_plugin_structure.js +36 -36
  89. package/src/plugins/transpilation/babel/helpers/babel_plugins_compatibility.js +3 -3
  90. package/src/plugins/transpilation/babel/jsenv_plugin_babel.js +24 -24
  91. package/src/plugins/transpilation/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +44 -44
  92. package/src/plugins/transpilation/babel/new_stylesheet/client/new_stylesheet.js +166 -166
  93. package/src/plugins/transpilation/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +10 -10
  94. package/src/plugins/transpilation/babel/require_babel_plugin.js +6 -6
  95. package/src/plugins/transpilation/css/jsenv_plugin_css_transpilation.js +20 -20
  96. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +62 -62
  97. package/src/plugins/transpilation/js_module_fallback/client/s.js +214 -209
  98. package/src/plugins/transpilation/js_module_fallback/convert_js_module_to_js_classic.js +45 -45
  99. package/src/plugins/transpilation/js_module_fallback/helpers/babel_plugin_transform_import_meta_resolve.js +6 -6
  100. package/src/plugins/transpilation/js_module_fallback/helpers/babel_plugin_transform_import_meta_url.js +17 -17
  101. package/src/plugins/transpilation/js_module_fallback/helpers-string.js +1 -1
  102. package/src/plugins/transpilation/js_module_fallback/jsenv_plugin_js_module_conversion.js +32 -32
  103. package/src/plugins/transpilation/js_module_fallback/jsenv_plugin_js_module_fallback.js +17 -17
  104. package/src/plugins/transpilation/js_module_fallback/jsenv_plugin_js_module_fallback_inside_html.js +63 -63
  105. package/src/plugins/transpilation/js_module_fallback/jsenv_plugin_js_module_fallback_on_workers.js +15 -15
  106. package/src/plugins/transpilation/jsenv_plugin_import_meta_resolve.js +20 -20
  107. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +23 -23
  108. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +11 -11
  109. package/src/plugins/url_analysis/css/css_urls.js +12 -12
  110. package/src/plugins/url_analysis/html/html_urls.js +85 -85
  111. package/src/plugins/url_analysis/js/js_urls.js +16 -16
  112. package/src/plugins/url_analysis/jsenv_plugin_reference_expected_types.js +16 -16
  113. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +40 -40
  114. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +12 -12
  115. package/src/plugins/url_resolution/jsenv_plugin_url_resolution.js +35 -35
  116. package/src/plugins/url_resolution/node_esm_resolver.js +26 -26
  117. package/src/plugins/url_version/jsenv_plugin_url_version.js +11 -11
@@ -29,7 +29,7 @@
29
29
  * - "package_json"
30
30
  */
31
31
 
32
- import { createNodeEsmResolver } from "./node_esm_resolver.js"
32
+ import { createNodeEsmResolver } from "./node_esm_resolver.js";
33
33
 
34
34
  export const jsenvPluginUrlResolution = ({
35
35
  runtimeCompat,
@@ -42,62 +42,62 @@ export const jsenvPluginUrlResolution = ({
42
42
  // baseUrl happens second argument to new URL() is different from
43
43
  // import.meta.url or document.currentScript.src
44
44
  reference.baseUrl || reference.parentUrl,
45
- ).href
46
- }
45
+ ).href;
46
+ };
47
47
 
48
- const resolvers = {}
48
+ const resolvers = {};
49
49
  Object.keys(urlResolution).forEach((urlType) => {
50
- const resolver = urlResolution[urlType]
50
+ const resolver = urlResolution[urlType];
51
51
  if (typeof resolver !== "object") {
52
52
  throw new Error(
53
53
  `urlResolution values must be objects, got ${resolver} on "${urlType}"`,
54
- )
54
+ );
55
55
  }
56
- let { web, node_esm, ...rest } = resolver
57
- const unexpectedKeys = Object.keys(rest)
56
+ let { web, node_esm, ...rest } = resolver;
57
+ const unexpectedKeys = Object.keys(rest);
58
58
  if (unexpectedKeys.length) {
59
59
  throw new TypeError(
60
60
  `${unexpectedKeys.join(
61
61
  ",",
62
62
  )}: there is no such configuration on "${urlType}"`,
63
- )
63
+ );
64
64
  }
65
65
  if (node_esm === undefined) {
66
- node_esm = urlType === "js_import"
66
+ node_esm = urlType === "js_import";
67
67
  }
68
68
  if (web === undefined) {
69
- web = true
69
+ web = true;
70
70
  }
71
71
  if (node_esm) {
72
- if (node_esm === true) node_esm = {}
73
- const { packageConditions, preservesSymlink } = node_esm
72
+ if (node_esm === true) node_esm = {};
73
+ const { packageConditions, preservesSymlink } = node_esm;
74
74
  resolvers[urlType] = createNodeEsmResolver({
75
75
  runtimeCompat,
76
76
  packageConditions,
77
77
  preservesSymlink,
78
- })
78
+ });
79
79
  } else if (web) {
80
- resolvers[urlType] = resolveUrlUsingWebResolution
80
+ resolvers[urlType] = resolveUrlUsingWebResolution;
81
81
  }
82
- })
82
+ });
83
83
 
84
84
  const nodeEsmResolverDefault = createNodeEsmResolver({
85
85
  runtimeCompat,
86
86
  preservesSymlink: true,
87
- })
87
+ });
88
88
  if (!resolvers.js_module) {
89
- resolvers.js_module = nodeEsmResolverDefault
89
+ resolvers.js_module = nodeEsmResolverDefault;
90
90
  }
91
91
  if (!resolvers.js_classic) {
92
92
  resolvers.js_classic = (reference, context) => {
93
93
  if (reference.subtype === "self_import_scripts_arg") {
94
- return nodeEsmResolverDefault(reference, context)
94
+ return nodeEsmResolverDefault(reference, context);
95
95
  }
96
- return resolveUrlUsingWebResolution(reference, context)
97
- }
96
+ return resolveUrlUsingWebResolution(reference, context);
97
+ };
98
98
  }
99
99
  if (!resolvers["*"]) {
100
- resolvers["*"] = resolveUrlUsingWebResolution
100
+ resolvers["*"] = resolveUrlUsingWebResolution;
101
101
  }
102
102
 
103
103
  return {
@@ -105,24 +105,24 @@ export const jsenvPluginUrlResolution = ({
105
105
  appliesDuring: "*",
106
106
  resolveUrl: (reference, context) => {
107
107
  if (reference.specifier === "/") {
108
- return String(defaultFileUrl)
108
+ return String(defaultFileUrl);
109
109
  }
110
110
  if (reference.specifier[0] === "/") {
111
111
  return new URL(reference.specifier.slice(1), context.rootDirectoryUrl)
112
- .href
112
+ .href;
113
113
  }
114
114
  if (reference.type === "sourcemap_comment") {
115
- return resolveUrlUsingWebResolution(reference, context)
115
+ return resolveUrlUsingWebResolution(reference, context);
116
116
  }
117
- let urlType
117
+ let urlType;
118
118
  if (reference.injected) {
119
- urlType = reference.expectedType
119
+ urlType = reference.expectedType;
120
120
  } else {
121
- const parentUrlInfo = context.urlGraph.getUrlInfo(reference.parentUrl)
122
- urlType = parentUrlInfo ? parentUrlInfo.type : "entry_point"
121
+ const parentUrlInfo = context.urlGraph.getUrlInfo(reference.parentUrl);
122
+ urlType = parentUrlInfo ? parentUrlInfo.type : "entry_point";
123
123
  }
124
- const resolver = resolvers[urlType] || resolvers["*"]
125
- return resolver(reference, context)
124
+ const resolver = resolvers[urlType] || resolvers["*"];
125
+ return resolver(reference, context);
126
126
  },
127
127
  // when specifier is prefixed by "file:///@ignore/"
128
128
  // we return an empty js module (used by node esm)
@@ -132,9 +132,9 @@ export const jsenvPluginUrlResolution = ({
132
132
  content: "export default {}",
133
133
  contentType: "text/javascript",
134
134
  type: "js_module",
135
- }
135
+ };
136
136
  }
137
- return null
137
+ return null;
138
138
  },
139
- }
140
- }
139
+ };
140
+ };
@@ -7,47 +7,47 @@
7
7
  * it should likely be an other plugin happening after the others
8
8
  */
9
9
 
10
- import { readFileSync } from "node:fs"
11
- import { bufferToEtag } from "@jsenv/filesystem"
10
+ import { readFileSync } from "node:fs";
11
+ import { bufferToEtag } from "@jsenv/filesystem";
12
12
  import {
13
13
  applyNodeEsmResolution,
14
14
  readCustomConditionsFromProcessArgs,
15
15
  defaultLookupPackageScope,
16
16
  defaultReadPackageJson,
17
- } from "@jsenv/node-esm-resolution"
17
+ } from "@jsenv/node-esm-resolution";
18
18
 
19
19
  export const createNodeEsmResolver = ({
20
20
  runtimeCompat,
21
21
  packageConditions,
22
22
  preservesSymlink,
23
23
  }) => {
24
- const nodeRuntimeEnabled = Object.keys(runtimeCompat).includes("node")
24
+ const nodeRuntimeEnabled = Object.keys(runtimeCompat).includes("node");
25
25
  // https://nodejs.org/api/esm.html#resolver-algorithm-specification
26
26
  packageConditions = packageConditions || [
27
27
  ...readCustomConditionsFromProcessArgs(),
28
28
  nodeRuntimeEnabled ? "node" : "browser",
29
29
  "import",
30
- ]
30
+ ];
31
31
 
32
32
  return (reference, context) => {
33
33
  if (reference.type === "package_json") {
34
- return reference.specifier
34
+ return reference.specifier;
35
35
  }
36
- const parentUrl = reference.baseUrl || reference.parentUrl
36
+ const parentUrl = reference.baseUrl || reference.parentUrl;
37
37
  if (!parentUrl.startsWith("file:")) {
38
- return new URL(reference.specifier, parentUrl).href
38
+ return new URL(reference.specifier, parentUrl).href;
39
39
  }
40
40
  const { url, type, packageDirectoryUrl } = applyNodeEsmResolution({
41
41
  conditions: packageConditions,
42
42
  parentUrl,
43
43
  specifier: reference.specifier,
44
44
  preservesSymlink,
45
- })
45
+ });
46
46
  if (context.dev) {
47
47
  const dependsOnPackageJson =
48
48
  type !== "relative_specifier" &&
49
49
  type !== "absolute_specifier" &&
50
- type !== "node_builtin_specifier"
50
+ type !== "node_builtin_specifier";
51
51
  if (dependsOnPackageJson) {
52
52
  // this reference depends on package.json and node_modules
53
53
  // to be resolved. Each file using this specifier
@@ -59,7 +59,7 @@ export const createNodeEsmResolver = ({
59
59
  field: type.startsWith("field:")
60
60
  ? `#${type.slice("field:".length)}`
61
61
  : "",
62
- })
62
+ });
63
63
  }
64
64
  }
65
65
  if (context.dev) {
@@ -67,13 +67,13 @@ export const createNodeEsmResolver = ({
67
67
  // could be considered as a node module if there is a ancestor package.json
68
68
  // but we want to version only node modules
69
69
  if (url.includes("/node_modules/")) {
70
- const packageDirectoryUrl = defaultLookupPackageScope(url)
70
+ const packageDirectoryUrl = defaultLookupPackageScope(url);
71
71
  if (
72
72
  packageDirectoryUrl &&
73
73
  packageDirectoryUrl !== context.rootDirectoryUrl
74
74
  ) {
75
75
  const packageVersion =
76
- defaultReadPackageJson(packageDirectoryUrl).version
76
+ defaultReadPackageJson(packageDirectoryUrl).version;
77
77
  // package version can be null, see https://github.com/babel/babel/blob/2ce56e832c2dd7a7ed92c89028ba929f874c2f5c/packages/babel-runtime/helpers/esm/package.json#L2
78
78
  if (packageVersion) {
79
79
  addRelationshipWithPackageJson({
@@ -82,15 +82,15 @@ export const createNodeEsmResolver = ({
82
82
  packageJsonUrl: `${packageDirectoryUrl}package.json`,
83
83
  field: "version",
84
84
  hasVersioningEffect: true,
85
- })
85
+ });
86
86
  }
87
- reference.version = packageVersion
87
+ reference.version = packageVersion;
88
88
  }
89
89
  }
90
90
  }
91
- return url
92
- }
93
- }
91
+ return url;
92
+ };
93
+ };
94
94
 
95
95
  const addRelationshipWithPackageJson = ({
96
96
  context,
@@ -100,9 +100,9 @@ const addRelationshipWithPackageJson = ({
100
100
  }) => {
101
101
  const referenceFound = context.referenceUtils.find(
102
102
  (ref) => ref.type === "package_json" && ref.subtype === field,
103
- )
103
+ );
104
104
  if (referenceFound) {
105
- return
105
+ return;
106
106
  }
107
107
  const [, packageJsonUrlInfo] = context.referenceUtils.inject({
108
108
  type: "package_json",
@@ -110,12 +110,12 @@ const addRelationshipWithPackageJson = ({
110
110
  specifier: packageJsonUrl,
111
111
  isImplicit: true,
112
112
  hasVersioningEffect,
113
- })
113
+ });
114
114
  if (packageJsonUrlInfo.type === undefined) {
115
- const packageJsonContentAsBuffer = readFileSync(new URL(packageJsonUrl))
116
- packageJsonUrlInfo.type = "json"
117
- packageJsonUrlInfo.content = String(packageJsonContentAsBuffer)
115
+ const packageJsonContentAsBuffer = readFileSync(new URL(packageJsonUrl));
116
+ packageJsonUrlInfo.type = "json";
117
+ packageJsonUrlInfo.content = String(packageJsonContentAsBuffer);
118
118
  packageJsonUrlInfo.originalContentEtag = packageJsonUrlInfo.contentEtag =
119
- bufferToEtag(packageJsonContentAsBuffer)
119
+ bufferToEtag(packageJsonContentAsBuffer);
120
120
  }
121
- }
121
+ };
@@ -9,25 +9,25 @@ export const jsenvPluginUrlVersion = () => {
9
9
  // this goal is achieved when we reach this part of the code
10
10
  // We get rid of this params so that urlGraph and other parts of the code
11
11
  // recognize the url (it is not considered as a different url)
12
- const version = reference.searchParams.get("v")
12
+ const version = reference.searchParams.get("v");
13
13
  if (version) {
14
- const urlObject = new URL(reference.url)
15
- urlObject.searchParams.delete("v")
16
- reference.version = version
17
- return urlObject.href
14
+ const urlObject = new URL(reference.url);
15
+ urlObject.searchParams.delete("v");
16
+ reference.version = version;
17
+ return urlObject.href;
18
18
  }
19
- return null
19
+ return null;
20
20
  },
21
21
  transformUrlSearchParams: (reference) => {
22
22
  if (!reference.version) {
23
- return null
23
+ return null;
24
24
  }
25
25
  if (reference.searchParams.has("v")) {
26
- return null
26
+ return null;
27
27
  }
28
28
  return {
29
29
  v: reference.version,
30
- }
30
+ };
31
31
  },
32
- }
33
- }
32
+ };
33
+ };