@sleetch/server 1.0.9 → 1.0.10
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/index.js +54 -11
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,21 +1,64 @@
|
|
|
1
|
+
import module, { createRequire } from "node:module";
|
|
1
2
|
import { clean_path } from "@sleetch/client";
|
|
2
3
|
import { resolve_language, to_flat_tree } from "@sleetch/core/compiler";
|
|
4
|
+
import process from "node:process";
|
|
3
5
|
//#region src/utils/manifest.ts
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const native_import = new Function("u", "return import(u)");
|
|
7
|
+
let counter = 0;
|
|
8
|
+
const next_version = () => `${Date.now()}-${counter++}`;
|
|
9
|
+
const VITE = Symbol.for("sleetch.vite_server");
|
|
10
|
+
const PARAM = "fresh";
|
|
11
|
+
let hooks_on = false;
|
|
12
|
+
const enable_deep_fresh = () => {
|
|
13
|
+
if (hooks_on || process.versions.bun || !module.registerHooks) return;
|
|
14
|
+
module.registerHooks({ resolve(specifier, context, next) {
|
|
15
|
+
const resolved = next(specifier, context);
|
|
16
|
+
if (!context.parentURL) return resolved;
|
|
17
|
+
if (!resolved.url.startsWith("file:")) return resolved;
|
|
18
|
+
if (resolved.url.includes("/node_modules/")) return resolved;
|
|
19
|
+
const v = new URL(context.parentURL).searchParams.get(PARAM);
|
|
20
|
+
if (!v) return resolved;
|
|
21
|
+
const url = new URL(resolved.url);
|
|
22
|
+
url.searchParams.set(PARAM, v);
|
|
23
|
+
return {
|
|
24
|
+
...resolved,
|
|
25
|
+
url: url.href
|
|
26
|
+
};
|
|
27
|
+
} });
|
|
28
|
+
hooks_on = true;
|
|
29
|
+
};
|
|
30
|
+
const clear_require_cache = (root) => {
|
|
31
|
+
const cache = createRequire(import.meta.url).cache;
|
|
32
|
+
for (const key of Object.keys(cache)) if (key.startsWith(root) && !key.includes("node_modules")) delete cache[key];
|
|
33
|
+
};
|
|
34
|
+
const is_next = () => !!process.env.NEXT_RUNTIME;
|
|
35
|
+
const can_native_resolve = () => {
|
|
36
|
+
try {
|
|
37
|
+
return typeof import.meta.resolve === "function";
|
|
38
|
+
} catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const get_manifest = async ({ fresh = false, root } = {}) => {
|
|
43
|
+
const static_manifest = async () => (await import("@sleetch/client/manifest")).default;
|
|
44
|
+
if (!fresh) return static_manifest();
|
|
45
|
+
const vite = globalThis[VITE];
|
|
46
|
+
if (vite) {
|
|
47
|
+
vite.moduleGraph.invalidateAll();
|
|
48
|
+
return (await vite.ssrLoadModule("@sleetch/client/manifest")).default;
|
|
10
49
|
}
|
|
11
|
-
|
|
12
|
-
|
|
50
|
+
if (is_next() || !can_native_resolve()) return static_manifest();
|
|
51
|
+
enable_deep_fresh();
|
|
52
|
+
if (root) clear_require_cache(root);
|
|
53
|
+
const v = next_version();
|
|
54
|
+
const url = import.meta.resolve("@sleetch/client/manifest-cache-bust");
|
|
55
|
+
return (await native_import(`${url}?${PARAM}=${v}`)).create_manifest(v);
|
|
13
56
|
};
|
|
14
57
|
//#endregion
|
|
15
58
|
//#region src/utils/tree.ts
|
|
16
59
|
const get_tree = async (_language) => {
|
|
17
60
|
const language = resolve_language(_language);
|
|
18
|
-
const { default: tree } = await (await get_manifest())[language].tree();
|
|
61
|
+
const { default: tree } = await (await get_manifest({ fresh: true }))[language].tree();
|
|
19
62
|
return {
|
|
20
63
|
tree,
|
|
21
64
|
language
|
|
@@ -32,14 +75,14 @@ const get_static_paths = async (transformer, _language) => {
|
|
|
32
75
|
};
|
|
33
76
|
};
|
|
34
77
|
const get_languages = async () => {
|
|
35
|
-
return (await get_manifest()).languages;
|
|
78
|
+
return (await get_manifest({ fresh: true })).languages;
|
|
36
79
|
};
|
|
37
80
|
//#endregion
|
|
38
81
|
//#region src/utils/pages.ts
|
|
39
82
|
const get_page = async (_path, _language) => {
|
|
40
83
|
_path = clean_path(_path);
|
|
41
84
|
const language = resolve_language(_language);
|
|
42
|
-
const manifest = await get_manifest();
|
|
85
|
+
const manifest = await get_manifest({ fresh: true });
|
|
43
86
|
for (const path of Object.keys(manifest[language].pages)) if (path === _path) {
|
|
44
87
|
const { default: page } = await manifest[language].pages[path]();
|
|
45
88
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sleetch/server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"dev": "tsdown --watch"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@sleetch/core": "1.0.
|
|
17
|
-
"@sleetch/client": "1.0.
|
|
16
|
+
"@sleetch/core": "1.0.10",
|
|
17
|
+
"@sleetch/client": "1.0.10"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@sleetch/client": "1.0.
|
|
20
|
+
"@sleetch/client": "1.0.10"
|
|
21
21
|
},
|
|
22
22
|
"exports": {
|
|
23
23
|
".": "./dist/index.js",
|