@sleetch/server 1.0.8 → 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.d.ts +2 -1
- package/dist/index.js +61 -9
- package/package.json +27 -26
package/dist/index.d.ts
CHANGED
|
@@ -43,5 +43,6 @@ declare const get_static_paths: <T>(transformer: path_transformer<T>, _language?
|
|
|
43
43
|
paths: T[];
|
|
44
44
|
language: string;
|
|
45
45
|
}>;
|
|
46
|
+
declare const get_languages: () => Promise<string[]>;
|
|
46
47
|
//#endregion
|
|
47
|
-
export { get_llms, get_page, get_pages, get_rss, get_sitemap, get_static_paths, get_tree, type sleetch_configuration };
|
|
48
|
+
export { get_languages, get_llms, get_page, get_pages, get_rss, get_sitemap, get_static_paths, get_tree, type sleetch_configuration };
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,64 @@
|
|
|
1
|
+
import module, { createRequire } from "node:module";
|
|
2
|
+
import { clean_path } from "@sleetch/client";
|
|
1
3
|
import { resolve_language, to_flat_tree } from "@sleetch/core/compiler";
|
|
4
|
+
import process from "node:process";
|
|
5
|
+
//#region src/utils/manifest.ts
|
|
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;
|
|
49
|
+
}
|
|
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);
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
2
58
|
//#region src/utils/tree.ts
|
|
3
59
|
const get_tree = async (_language) => {
|
|
4
60
|
const language = resolve_language(_language);
|
|
5
|
-
const { default:
|
|
6
|
-
const { default: tree } = await manifest[language].tree();
|
|
61
|
+
const { default: tree } = await (await get_manifest({ fresh: true }))[language].tree();
|
|
7
62
|
return {
|
|
8
63
|
tree,
|
|
9
64
|
language
|
|
@@ -20,17 +75,14 @@ const get_static_paths = async (transformer, _language) => {
|
|
|
20
75
|
};
|
|
21
76
|
};
|
|
22
77
|
const get_languages = async () => {
|
|
23
|
-
|
|
24
|
-
return manifest.languages;
|
|
78
|
+
return (await get_manifest({ fresh: true })).languages;
|
|
25
79
|
};
|
|
26
80
|
//#endregion
|
|
27
81
|
//#region src/utils/pages.ts
|
|
28
82
|
const get_page = async (_path, _language) => {
|
|
29
|
-
|
|
30
|
-
else if (!_path.startsWith("/", 0)) _path = `/${_path}`;
|
|
31
|
-
if (_path.length > 1 && _path.slice(-1) === "/") _path = _path.slice(0, -1);
|
|
83
|
+
_path = clean_path(_path);
|
|
32
84
|
const language = resolve_language(_language);
|
|
33
|
-
const
|
|
85
|
+
const manifest = await get_manifest({ fresh: true });
|
|
34
86
|
for (const path of Object.keys(manifest[language].pages)) if (path === _path) {
|
|
35
87
|
const { default: page } = await manifest[language].pages[path]();
|
|
36
88
|
return {
|
|
@@ -118,4 +170,4 @@ async function get_sitemap(path_builder) {
|
|
|
118
170
|
</urlset>`;
|
|
119
171
|
}
|
|
120
172
|
//#endregion
|
|
121
|
-
export { get_llms, get_page, get_pages, get_rss, get_sitemap, get_static_paths, get_tree };
|
|
173
|
+
export { get_languages, get_llms, get_page, get_pages, get_rss, get_sitemap, get_static_paths, get_tree };
|
package/package.json
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
"name": "@sleetch/server",
|
|
3
|
+
"version": "1.0.10",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist"
|
|
7
|
+
],
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsdown",
|
|
13
|
+
"dev": "tsdown --watch"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@sleetch/core": "1.0.10",
|
|
17
|
+
"@sleetch/client": "1.0.10"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@sleetch/client": "1.0.10"
|
|
21
|
+
},
|
|
22
|
+
"exports": {
|
|
23
|
+
".": "./dist/index.js",
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"module": "./dist/index.js"
|
|
28
29
|
}
|