@jsenv/core 39.14.3 → 40.0.1
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.
- package/dist/js/directory_listing.js +16 -9
- package/dist/js/server_events_client.js +2 -2
- package/dist/jsenv_core.js +7220 -11089
- package/package.json +22 -19
- package/src/build/build.js +122 -93
- package/src/build/build_specifier_manager.js +103 -94
- package/src/build/build_urls_generator.js +1 -1
- package/src/build/{version_mappings_injection.js → mappings_injection.js} +62 -21
- package/src/build/start_build_server.js +46 -36
- package/src/dev/start_dev_server.js +246 -248
- package/src/helpers/watch_source_files.js +50 -36
- package/src/kitchen/fetched_content_compliance.js +4 -2
- package/src/kitchen/kitchen.js +31 -24
- package/src/kitchen/url_graph/references.js +10 -2
- package/src/kitchen/url_graph/url_graph.js +3 -0
- package/src/kitchen/url_graph/url_graph_visitor.js +3 -0
- package/src/plugins/autoreload/jsenv_plugin_autoreload_server.js +29 -16
- package/src/plugins/html_syntax_error_fallback/jsenv_plugin_html_syntax_error_fallback.js +1 -1
- package/src/plugins/plugin_controller.js +194 -200
- package/src/plugins/plugins.js +5 -0
- package/src/plugins/protocol_file/client/directory_listing.jsx +5 -0
- package/src/plugins/protocol_file/jsenv_plugin_directory_listing.js +92 -67
- package/src/plugins/protocol_file/jsenv_plugin_fs_redirection.js +17 -7
- package/src/plugins/protocol_file/jsenv_plugin_protocol_file.js +6 -0
- package/src/plugins/protocol_http/jsenv_plugin_protocol_http.js +33 -3
- package/src/plugins/reference_analysis/html/jsenv_plugin_html_reference_analysis.js +15 -22
- package/src/plugins/reference_analysis/js/jsenv_plugin_js_reference_analysis.js +53 -2
- package/src/plugins/resolution_node_esm/jsenv_plugin_node_esm_resolution.js +37 -30
- package/src/plugins/resolution_node_esm/node_esm_resolver.js +4 -8
- package/src/plugins/resolution_web/jsenv_plugin_web_resolution.js +8 -6
- package/src/plugins/server_events/client/server_events_client.js +2 -2
- package/src/plugins/server_events/jsenv_plugin_server_events.js +18 -16
- package/dist/js/ws.js +0 -6863
- package/src/helpers/lookup_package_directory.js +0 -9
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { injectJsenvScript, parseHtml, stringifyHtmlAst } from "@jsenv/ast";
|
|
7
|
-
import {
|
|
7
|
+
import { ServerEvents } from "@jsenv/server";
|
|
8
8
|
|
|
9
9
|
const serverEventsClientFileUrl = new URL(
|
|
10
10
|
"./client/server_events_client.js",
|
|
@@ -12,8 +12,9 @@ const serverEventsClientFileUrl = new URL(
|
|
|
12
12
|
).href;
|
|
13
13
|
|
|
14
14
|
export const jsenvPluginServerEvents = ({ clientAutoreload }) => {
|
|
15
|
-
let
|
|
16
|
-
|
|
15
|
+
let serverEvents = new ServerEvents({
|
|
16
|
+
actionOnClientLimitReached: "kick-oldest",
|
|
17
|
+
});
|
|
17
18
|
const { clientServerEventsConfig } = clientAutoreload;
|
|
18
19
|
const { logs = true } = clientServerEventsConfig;
|
|
19
20
|
|
|
@@ -37,9 +38,9 @@ export const jsenvPluginServerEvents = ({ clientAutoreload }) => {
|
|
|
37
38
|
if (serverEventNames.length === 0) {
|
|
38
39
|
return false;
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
|
|
41
42
|
const onabort = () => {
|
|
42
|
-
|
|
43
|
+
serverEvents.close();
|
|
43
44
|
};
|
|
44
45
|
kitchenContext.signal.addEventListener("abort", onabort);
|
|
45
46
|
for (const serverEventName of Object.keys(allServerEvents)) {
|
|
@@ -48,14 +49,14 @@ export const jsenvPluginServerEvents = ({ clientAutoreload }) => {
|
|
|
48
49
|
// serverEventsDispatcher variable is safe, we can disable esling warning
|
|
49
50
|
// eslint-disable-next-line no-loop-func
|
|
50
51
|
sendServerEvent: (data) => {
|
|
51
|
-
if (!
|
|
52
|
+
if (!serverEvents) {
|
|
52
53
|
// this can happen if a plugin wants to send a server event but
|
|
53
54
|
// server is closing or the plugin got destroyed but still wants to do things
|
|
54
55
|
// if plugin code is correctly written it is never supposed to happen
|
|
55
56
|
// because it means a plugin is still trying to do stuff after being destroyed
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
serverEvents.sendEventToAllClients({
|
|
59
60
|
type: serverEventName,
|
|
60
61
|
data,
|
|
61
62
|
});
|
|
@@ -66,17 +67,10 @@ export const jsenvPluginServerEvents = ({ clientAutoreload }) => {
|
|
|
66
67
|
}
|
|
67
68
|
return () => {
|
|
68
69
|
kitchenContext.signal.removeEventListener("abort", onabort);
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
serverEvents.close();
|
|
71
|
+
serverEvents = undefined;
|
|
71
72
|
};
|
|
72
73
|
},
|
|
73
|
-
serveWebsocket: async ({ websocket, request }) => {
|
|
74
|
-
if (request.headers["sec-websocket-protocol"] !== "jsenv") {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
serverEventsDispatcher.addWebsocket(websocket, request);
|
|
78
|
-
return true;
|
|
79
|
-
},
|
|
80
74
|
transformUrlContent: {
|
|
81
75
|
html: (urlInfo) => {
|
|
82
76
|
const htmlAst = parseHtml({
|
|
@@ -96,5 +90,13 @@ export const jsenvPluginServerEvents = ({ clientAutoreload }) => {
|
|
|
96
90
|
return stringifyHtmlAst(htmlAst);
|
|
97
91
|
},
|
|
98
92
|
},
|
|
93
|
+
devServerRoutes: [
|
|
94
|
+
{
|
|
95
|
+
endpoint: "GET /.internal/events.websocket",
|
|
96
|
+
description: `Jsenv dev server emit server events on this endpoint. When a file is saved the "reload" event is sent here.`,
|
|
97
|
+
fetch: serverEvents.fetch,
|
|
98
|
+
declarationSource: import.meta.url,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
99
101
|
};
|
|
100
102
|
};
|