@jsenv/core 40.6.2 → 40.7.0
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/build/build.js +335 -135
- package/dist/build/jsenv_core_packages.js +100 -102
- package/dist/jsenv_core.js +4 -0
- package/dist/start_build_server/jsenv_core_packages.js +29 -29
- package/dist/start_dev_server/jsenv_core_packages.js +100 -102
- package/dist/start_dev_server/start_dev_server.js +338 -136
- package/package.json +4 -4
- package/src/dev/start_dev_server.js +3 -1
- package/src/kitchen/kitchen.js +2 -0
- package/src/kitchen/url_graph/url_graph.js +1 -0
- package/src/kitchen/url_graph/url_info_injections.js +172 -0
- package/src/kitchen/url_graph/url_info_transformations.js +28 -7
- package/src/main.js +1 -1
- package/src/plugins/global_scenarios/jsenv_plugin_global_scenarios.js +4 -9
- package/src/plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +2 -0
- package/src/plugins/injections/jsenv_plugin_injections.js +51 -85
- package/src/plugins/plugin_controller.js +3 -0
- package/src/plugins/plugins.js +3 -1
- package/src/plugins/protocol_file/jsenv_plugin_directory_listing.js +23 -22
- package/src/plugins/protocol_file/jsenv_plugin_fs_redirection.js +41 -3
- package/src/plugins/protocol_file/jsenv_plugin_protocol_file.js +2 -0
- package/src/plugins/injections/internal/inject_globals.js +0 -52
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { injectJsenvScript, parseHtml, stringifyHtmlAst } from "@jsenv/ast";
|
|
2
|
-
import { createMagicSource } from "@jsenv/sourcemap";
|
|
3
|
-
|
|
4
|
-
export const injectGlobals = (content, globals, urlInfo) => {
|
|
5
|
-
if (urlInfo.type === "html") {
|
|
6
|
-
return globalInjectorOnHtml(content, globals, urlInfo);
|
|
7
|
-
}
|
|
8
|
-
if (urlInfo.type === "js_classic" || urlInfo.type === "js_module") {
|
|
9
|
-
return globalsInjectorOnJs(content, globals, urlInfo);
|
|
10
|
-
}
|
|
11
|
-
throw new Error(`cannot inject globals into "${urlInfo.type}"`);
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const globalInjectorOnHtml = (content, globals, urlInfo) => {
|
|
15
|
-
// ideally we would inject an importmap but browser support is too low
|
|
16
|
-
// (even worse for worker/service worker)
|
|
17
|
-
// so for now we inject code into entry points
|
|
18
|
-
const htmlAst = parseHtml({
|
|
19
|
-
html: content,
|
|
20
|
-
url: urlInfo.url,
|
|
21
|
-
storeOriginalPositions: false,
|
|
22
|
-
});
|
|
23
|
-
const clientCode = generateClientCodeForGlobals(globals, {
|
|
24
|
-
isWebWorker: false,
|
|
25
|
-
});
|
|
26
|
-
injectJsenvScript(htmlAst, {
|
|
27
|
-
content: clientCode,
|
|
28
|
-
pluginName: "jsenv:inject_globals",
|
|
29
|
-
});
|
|
30
|
-
return stringifyHtmlAst(htmlAst);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const globalsInjectorOnJs = (content, globals, urlInfo) => {
|
|
34
|
-
const clientCode = generateClientCodeForGlobals(globals, {
|
|
35
|
-
isWebWorker:
|
|
36
|
-
urlInfo.subtype === "worker" ||
|
|
37
|
-
urlInfo.subtype === "service_worker" ||
|
|
38
|
-
urlInfo.subtype === "shared_worker",
|
|
39
|
-
});
|
|
40
|
-
const magicSource = createMagicSource(content);
|
|
41
|
-
magicSource.prepend(clientCode);
|
|
42
|
-
return magicSource.toContentAndSourcemap();
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const generateClientCodeForGlobals = (globals, { isWebWorker = false }) => {
|
|
46
|
-
const globalName = isWebWorker ? "self" : "window";
|
|
47
|
-
return `Object.assign(${globalName}, ${JSON.stringify(
|
|
48
|
-
globals,
|
|
49
|
-
null,
|
|
50
|
-
" ",
|
|
51
|
-
)});`;
|
|
52
|
-
};
|