typerighter 0.38.1 → 0.40.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/{app-Bnln5XCo.js → app-GI_8rzn8.js} +339 -338
- package/dist/{cli-DEOw0tox.js → cli-CPY9dpTQ.js} +28 -26
- package/dist/cli.js +1 -1
- package/dist/client/app/index.d.ts +8 -0
- package/dist/client/app/index.d.ts.map +1 -1
- package/dist/client/theme-default.js +174 -174
- package/dist/client.js +1 -1
- package/dist/context-CNTdcpo4.js +192 -0
- package/dist/index.js +3 -3
- package/dist/{init-BhEVxNbG.js → init-YypOGdjI.js} +9 -6
- package/dist/jsonld-e_0GNJdS.js +84 -0
- package/dist/node/build/index.d.ts.map +1 -1
- package/dist/node/build/prerender.d.ts +21 -0
- package/dist/node/build/prerender.d.ts.map +1 -1
- package/dist/node/build/prerenderWorker.d.ts +2 -0
- package/dist/node/build/prerenderWorker.d.ts.map +1 -0
- package/dist/node/build/seo/feed.d.ts +3 -0
- package/dist/node/build/seo/feed.d.ts.map +1 -0
- package/dist/node/build/seo/index.d.ts +5 -0
- package/dist/node/build/seo/index.d.ts.map +1 -0
- package/dist/node/build/seo/jsonld.d.ts +10 -0
- package/dist/node/build/seo/jsonld.d.ts.map +1 -0
- package/dist/node/build/seo/page.d.ts +6 -0
- package/dist/node/build/seo/page.d.ts.map +1 -0
- package/dist/node/build/seo/sitemap.d.ts +3 -0
- package/dist/node/build/seo/sitemap.d.ts.map +1 -0
- package/dist/node/cli/index.d.ts.map +1 -1
- package/dist/node/lib/htmlTemplate.d.ts +30 -0
- package/dist/node/lib/htmlTemplate.d.ts.map +1 -0
- package/dist/node/lib/render/vue.d.ts.map +1 -1
- package/dist/node/lib/worker-pool/index.d.ts +21 -0
- package/dist/node/lib/worker-pool/index.d.ts.map +1 -0
- package/dist/node/plugin/vite/virtual/app.d.ts +2 -0
- package/dist/node/plugin/vite/virtual/app.d.ts.map +1 -1
- package/dist/prerenderWorker.js +39 -0
- package/dist/rolldown-runtime-B0aSnxlc.js +20 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/types/ssg.d.ts +6 -0
- package/dist/shared/types/ssg.d.ts.map +1 -1
- package/dist/shared/utils/time.d.ts +1 -0
- package/dist/shared/utils/time.d.ts.map +1 -1
- package/dist/shared/utils/url.d.ts +1 -0
- package/dist/shared/utils/url.d.ts.map +1 -1
- package/dist/{shared-l3GF0JOc.js → shared-LPNgvigl.js} +111 -120
- package/dist/shared.js +2 -2
- package/dist/{vite-DACnySpv.js → vite-Djs3IU9Y.js} +508 -587
- package/dist/vite.js +1 -1
- package/package.json +7 -7
- package/dist/node/lib/html-template.d.ts +0 -22
- package/dist/node/lib/html-template.d.ts.map +0 -1
|
@@ -1,79 +1,173 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
import { B as e, C as t, E as n, G as r, I as i, J as a, K as o, L as s, N as c, P as l, R as u, T as d, V as f, Y as p, _ as m, c as h, d as g, g as _, h as v, i as y, m as b, v as x, y as S } from "./shared-LPNgvigl.js";
|
|
2
|
+
import { a as C, i as w, n as T, o as E, r as D, s as O, t as ee } from "./jsonld-e_0GNJdS.js";
|
|
3
|
+
import { t as te } from "./temml-DZbhOfRE.js";
|
|
4
|
+
import { a as ne, i as re, n as ie, r as ae } from "./context-CNTdcpo4.js";
|
|
5
|
+
import { t as oe } from "./es-ClqUVRJn.js";
|
|
6
|
+
import k, { resolve as A } from "node:path";
|
|
7
|
+
import j from "picocolors";
|
|
8
|
+
import se from "@tailwindcss/vite";
|
|
9
|
+
import ce from "@vitejs/plugin-vue";
|
|
10
|
+
import { build as M, normalizePath as le } from "vite";
|
|
11
|
+
import N from "node:fs/promises";
|
|
12
|
+
import { fileURLToPath as ue } from "node:url";
|
|
13
|
+
import de from "node:os";
|
|
14
|
+
import { Worker as fe } from "node:worker_threads";
|
|
15
|
+
import { createHighlighter as pe, guessEmbeddedLanguages as me, isSpecialLang as he } from "shiki";
|
|
16
|
+
import { createReadStream as ge, existsSync as _e, globSync as P, readFileSync as ve, statSync as ye } from "node:fs";
|
|
17
|
+
import { createRequire as be } from "node:module";
|
|
18
|
+
//#region src/node/lib/worker-pool/index.ts
|
|
19
|
+
var xe = class {
|
|
20
|
+
workers = [];
|
|
21
|
+
queue = [];
|
|
22
|
+
destroyed = !1;
|
|
23
|
+
startupError;
|
|
24
|
+
constructor(e) {
|
|
25
|
+
let t = e.concurrency ?? Math.max(1, Math.floor(de.cpus().length / 2));
|
|
26
|
+
for (let n = 0; n < t; n++) {
|
|
27
|
+
let t = new fe(e.filename, { workerData: e.workerData }), n = { worker: t };
|
|
28
|
+
this.workers.push(n), t.on("message", (e) => {
|
|
29
|
+
let t = n.pending;
|
|
30
|
+
n.pending = void 0, e.error === void 0 ? t?.resolve(e.result) : t?.reject(Error(e.error)), this.dispatch(n);
|
|
31
|
+
}), t.on("error", (e) => {
|
|
32
|
+
let t = n.pending;
|
|
33
|
+
n.pending = void 0, t?.reject(e), this.destroyAll(e);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
run(e) {
|
|
38
|
+
return this.destroyed ? Promise.reject(this.startupError ?? /* @__PURE__ */ Error("Worker pool is destroyed")) : new Promise((t, n) => {
|
|
39
|
+
let r = {
|
|
40
|
+
task: e,
|
|
41
|
+
resolve: t,
|
|
42
|
+
reject: n
|
|
43
|
+
}, i = this.workers.find((e) => e.pending === void 0);
|
|
44
|
+
i ? (i.pending = r, i.worker.postMessage(r.task)) : this.queue.push(r);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async destroy() {
|
|
48
|
+
this.destroyed = !0, this.rejectAll(/* @__PURE__ */ Error("Worker pool is destroyed")), await Promise.all(this.workers.map((e) => e.worker.terminate()));
|
|
49
|
+
}
|
|
50
|
+
dispatch(e) {
|
|
51
|
+
let t = this.queue.shift();
|
|
52
|
+
t !== void 0 && (e.pending = t, e.worker.postMessage(t.task));
|
|
53
|
+
}
|
|
54
|
+
rejectAll(e) {
|
|
55
|
+
for (let t of this.queue) t.reject(e);
|
|
56
|
+
this.queue.length = 0;
|
|
57
|
+
for (let t of this.workers) t.pending &&= (t.pending.reject(e), void 0);
|
|
58
|
+
}
|
|
59
|
+
destroyAll(e) {
|
|
60
|
+
this.destroyed || (this.startupError = e instanceof Error ? e : Error(String(e)), this.destroyed = !0, this.rejectAll(e), Promise.all(this.workers.map((e) => e.worker.terminate())).catch(() => {}));
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region src/node/build/seo/sitemap.ts
|
|
65
|
+
function Se(e, t, n, r) {
|
|
66
|
+
let i = n ?? "";
|
|
67
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
68
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
69
|
+
${e.map((e) => {
|
|
70
|
+
let n = h(i + t + c(e)), a = r?.get(e);
|
|
71
|
+
return ` <url><loc>${n}</loc>${a === void 0 ? "" : `<lastmod>${y(a)}</lastmod>`}</url>`;
|
|
72
|
+
}).join("\n")}
|
|
73
|
+
</urlset>
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
function Ce(e, t) {
|
|
77
|
+
return `User-agent: *
|
|
78
|
+
Allow: /
|
|
79
|
+
|
|
80
|
+
Sitemap: ${e}${t}sitemap.xml
|
|
81
|
+
`;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/node/build/seo/feed.ts
|
|
85
|
+
function we(t, n, r, i, a, o) {
|
|
86
|
+
let s = [...t].filter((e) => e.metadata.mtime > 0).sort((e, t) => t.metadata.mtime - e.metadata.mtime).slice(0, 50).map((t) => {
|
|
87
|
+
let i = e(t.filepath), a = `${r}${n}${i}`, o = new Date(t.metadata.mtime).toUTCString(), s = h(t.label ?? i), c = t.excerpt === void 0 ? "" : `<![CDATA[${t.excerpt}]]>`;
|
|
88
|
+
return ` <item>
|
|
89
|
+
<title>${s}</title>
|
|
90
|
+
<link>${h(a)}</link>
|
|
91
|
+
<guid>${h(a)}</guid>
|
|
92
|
+
<pubDate>${o}</pubDate>
|
|
93
|
+
<description>${c}</description>
|
|
94
|
+
</item>`;
|
|
95
|
+
}).join("\n");
|
|
96
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
97
|
+
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
98
|
+
<channel>
|
|
99
|
+
<title>${h(i)}</title>
|
|
100
|
+
<link>${h(r + n)}</link>
|
|
101
|
+
<description>${h(a)}</description>
|
|
102
|
+
<language>${o}</language>
|
|
103
|
+
<atom:link href="${h(r + n)}feed.xml" rel="self" type="application/rss+xml"/>
|
|
104
|
+
${s}
|
|
105
|
+
</channel>
|
|
106
|
+
</rss>
|
|
107
|
+
`;
|
|
53
108
|
}
|
|
54
109
|
//#endregion
|
|
55
110
|
//#region src/node/build/prerender.ts
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
111
|
+
var Te = 64;
|
|
112
|
+
async function Ee(e) {
|
|
113
|
+
let { clientEntry: t, cssFiles: n, jsFiles: r } = await ke(e.clientOutDir), i = [n.map((t) => ` <link rel="stylesheet" href="${e.base}${t}">`).join("\n"), r.map((t) => ` <link rel="modulepreload" href="${e.base}${t}">`).join("\n")].filter(Boolean).join("\n") || void 0;
|
|
114
|
+
e.pagePaths.length >= Te ? await De(e, t, i) : await Oe(e, t, i);
|
|
115
|
+
}
|
|
116
|
+
async function De(e, t, n) {
|
|
117
|
+
let r = new xe({
|
|
118
|
+
filename: k.resolve(ue(import.meta.url), "../prerenderWorker.js"),
|
|
119
|
+
workerData: {
|
|
120
|
+
ssrEntryPath: e.ssrEntryPath,
|
|
121
|
+
base: e.base,
|
|
122
|
+
origin: e.origin,
|
|
123
|
+
lang: e.lang,
|
|
124
|
+
siteTitle: e.siteTitle,
|
|
125
|
+
author: e.author,
|
|
126
|
+
clientEntry: t,
|
|
127
|
+
headExtra: n
|
|
128
|
+
}
|
|
129
|
+
}), i = 0, a = e.pagePaths.length;
|
|
130
|
+
try {
|
|
131
|
+
await Promise.all(e.pagePaths.map(async (t) => {
|
|
132
|
+
let n = await r.run(t), o = k.join(e.outDir, n.fileName);
|
|
133
|
+
await N.mkdir(k.dirname(o), { recursive: !0 }), await N.writeFile(o, n.html), i++, e.progress?.update(i, a);
|
|
134
|
+
}));
|
|
135
|
+
} finally {
|
|
136
|
+
await r.destroy();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async function Oe(e, t, n) {
|
|
140
|
+
let r = await import(e.ssrEntryPath), i = e.pagePaths.length, a = 0;
|
|
141
|
+
for (let o = 0; o < i; o += 32) {
|
|
142
|
+
let s = e.pagePaths.slice(o, o + 32);
|
|
143
|
+
await Promise.all(s.map(async (o) => {
|
|
144
|
+
let s = await r.render(o), l = E(s.pageData), u = C(s.pageData), d = D(s.pageData), f = e.base + c(o), p = [ee({
|
|
145
|
+
title: l,
|
|
146
|
+
description: u,
|
|
147
|
+
canonicalUrl: f,
|
|
148
|
+
author: e.author,
|
|
149
|
+
dateModified: d
|
|
150
|
+
}), T(o, l)].filter((e) => e !== void 0), m = O({
|
|
151
|
+
title: l,
|
|
152
|
+
description: u,
|
|
64
153
|
siteTitle: e.siteTitle,
|
|
154
|
+
author: e.author,
|
|
65
155
|
base: e.base,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
156
|
+
origin: e.origin,
|
|
157
|
+
lang: e.lang,
|
|
158
|
+
entryScript: t,
|
|
159
|
+
canonicalUrl: f,
|
|
160
|
+
ogImagePath: w(s.pageData),
|
|
161
|
+
jsonLdBlocks: p,
|
|
162
|
+
headExtra: n,
|
|
163
|
+
appContent: s.html
|
|
164
|
+
}), h = o === "/" ? "index.html" : `${c(o)}.html`, g = k.join(e.outDir, h);
|
|
165
|
+
await N.mkdir(k.dirname(g), { recursive: !0 }), await N.writeFile(g, m), a++, e.progress?.update(a, i);
|
|
72
166
|
}));
|
|
73
167
|
}
|
|
74
168
|
}
|
|
75
|
-
async function
|
|
76
|
-
let t =
|
|
169
|
+
async function ke(e) {
|
|
170
|
+
let t = k.join(e, ".vite", "manifest.json"), n = await N.readFile(t, "utf-8"), r = JSON.parse(n), i = "", a = [], o = [];
|
|
77
171
|
for (let e of Object.values(r)) e.isEntry ? (i = e.file, e.css && a.push(...e.css)) : e.file.endsWith(".js") && o.push(e.file);
|
|
78
172
|
return {
|
|
79
173
|
clientEntry: i,
|
|
@@ -83,12 +177,12 @@ async function _e(e) {
|
|
|
83
177
|
}
|
|
84
178
|
//#endregion
|
|
85
179
|
//#region src/node/lib/progress.ts
|
|
86
|
-
var
|
|
180
|
+
var F = [
|
|
87
181
|
"◐",
|
|
88
182
|
"◓",
|
|
89
183
|
"◑",
|
|
90
184
|
"◒"
|
|
91
|
-
],
|
|
185
|
+
], I = class {
|
|
92
186
|
logger;
|
|
93
187
|
label;
|
|
94
188
|
start;
|
|
@@ -96,8 +190,8 @@ var A = [
|
|
|
96
190
|
constructor(e, t) {
|
|
97
191
|
if (this.logger = e, this.label = t, this.start = performance.now(), process.stdout.isTTY) {
|
|
98
192
|
let e = 0;
|
|
99
|
-
process.stdout.write(
|
|
100
|
-
e = (e + 1) %
|
|
193
|
+
process.stdout.write(j.cyan(`${F[0]} ${t}`)), this.spinnerInterval = setInterval(() => {
|
|
194
|
+
e = (e + 1) % F.length, process.stdout.write(`\r${j.cyan(`${F[e]} ${this.label}`)}`);
|
|
101
195
|
}, 120).unref();
|
|
102
196
|
} else this.logger.start(t);
|
|
103
197
|
}
|
|
@@ -109,138 +203,150 @@ var A = [
|
|
|
109
203
|
done(e) {
|
|
110
204
|
this.stopSpinner(), process.stdout.isTTY && process.stdout.write("\r\x1B[K");
|
|
111
205
|
let t = Math.round(performance.now() - this.start);
|
|
112
|
-
this.logger.success(`${e} (${
|
|
206
|
+
this.logger.success(`${e} (${Ae(t)})`);
|
|
113
207
|
}
|
|
114
208
|
stopSpinner() {
|
|
115
209
|
this.spinnerInterval &&= (clearInterval(this.spinnerInterval), void 0);
|
|
116
210
|
}
|
|
117
211
|
};
|
|
118
|
-
function
|
|
212
|
+
function Ae(e) {
|
|
119
213
|
return e < 1e3 ? `${Math.round(e)}ms` : `${(e / 1e3).toFixed(1)}s`;
|
|
120
214
|
}
|
|
121
215
|
//#endregion
|
|
122
216
|
//#region src/node/build/index.ts
|
|
123
|
-
var
|
|
124
|
-
async function
|
|
125
|
-
let { root:
|
|
126
|
-
await
|
|
217
|
+
var je = "typerighter/client/theme-default";
|
|
218
|
+
async function L(t, n = {}) {
|
|
219
|
+
let { root: r, logger: i } = t, a = k.resolve(r, n.outDir ?? "dist"), o = k.join(a, ".client"), s = k.join(a, ".server");
|
|
220
|
+
await N.rm(a, {
|
|
127
221
|
recursive: !0,
|
|
128
222
|
force: !0
|
|
129
223
|
});
|
|
130
|
-
let c = await
|
|
224
|
+
let c = await t.getTdContext(), [l, u, d, f] = await Promise.all([
|
|
131
225
|
c.getConfig(),
|
|
132
226
|
c.listFiles(),
|
|
133
227
|
c.listSidebar(),
|
|
134
228
|
c.listSchemas()
|
|
135
|
-
]), p =
|
|
229
|
+
]), p = l.origin ?? void 0, m = l.author ?? void 0, h = l.license ?? void 0, g = l.repo ?? void 0, _ = n.base ?? l.basePath ?? "/", v = _.endsWith("/") ? _ : _ + "/", y = d.map((e) => ({
|
|
136
230
|
...e,
|
|
137
231
|
header: {}
|
|
138
|
-
})),
|
|
232
|
+
})), x = b(y), S = JSON.stringify({
|
|
139
233
|
title: l.siteTitle,
|
|
140
234
|
description: l.siteDescription,
|
|
141
|
-
basePath:
|
|
235
|
+
basePath: v,
|
|
236
|
+
origin: p,
|
|
237
|
+
lang: l.lang,
|
|
142
238
|
nav: l.nav
|
|
143
|
-
}),
|
|
239
|
+
}), C = JSON.stringify({
|
|
144
240
|
ready: !0,
|
|
145
|
-
contentTree:
|
|
146
|
-
}),
|
|
147
|
-
await
|
|
148
|
-
let
|
|
149
|
-
await Promise.all([
|
|
241
|
+
contentTree: x
|
|
242
|
+
}), w = k.join(r, "node_modules", ".typerighter");
|
|
243
|
+
await N.mkdir(w, { recursive: !0 });
|
|
244
|
+
let T = k.join(w, "client-entry.js"), E = k.join(w, "ssr-entry.js");
|
|
245
|
+
await Promise.all([N.writeFile(T, Q({
|
|
150
246
|
rootDir: l.rootDir,
|
|
151
|
-
basePath:
|
|
247
|
+
basePath: v,
|
|
248
|
+
origin: p,
|
|
249
|
+
lang: l.lang,
|
|
152
250
|
siteTitle: l.siteTitle,
|
|
153
251
|
siteDescription: l.siteDescription,
|
|
154
|
-
repo:
|
|
155
|
-
author:
|
|
156
|
-
license:
|
|
252
|
+
repo: g,
|
|
253
|
+
author: m,
|
|
254
|
+
license: h,
|
|
157
255
|
nav: l.nav
|
|
158
|
-
})),
|
|
256
|
+
})), N.writeFile(E, Me({
|
|
159
257
|
rootDir: l.rootDir,
|
|
160
|
-
layoutImport:
|
|
161
|
-
siteConfig:
|
|
162
|
-
siteData:
|
|
258
|
+
layoutImport: je,
|
|
259
|
+
siteConfig: S,
|
|
260
|
+
siteData: C
|
|
163
261
|
}))]);
|
|
164
262
|
try {
|
|
165
|
-
let c = $({ context:
|
|
166
|
-
await
|
|
167
|
-
...
|
|
168
|
-
root:
|
|
169
|
-
base:
|
|
263
|
+
let c = $({ context: t }), f = t.createViteLogger(), h = new I(i, "Building client bundle...");
|
|
264
|
+
await M({
|
|
265
|
+
...n.viteConfig,
|
|
266
|
+
root: r,
|
|
267
|
+
base: v,
|
|
170
268
|
plugins: c,
|
|
171
|
-
customLogger:
|
|
269
|
+
customLogger: f,
|
|
172
270
|
logLevel: "silent",
|
|
173
271
|
build: {
|
|
174
|
-
...
|
|
272
|
+
...n.viteConfig?.build,
|
|
175
273
|
outDir: o,
|
|
176
274
|
manifest: !0,
|
|
177
275
|
emptyOutDir: !0,
|
|
178
276
|
rollupOptions: {
|
|
179
|
-
...
|
|
180
|
-
input:
|
|
277
|
+
...n.viteConfig?.build?.rollupOptions,
|
|
278
|
+
input: T
|
|
181
279
|
}
|
|
182
280
|
}
|
|
183
281
|
});
|
|
184
|
-
let
|
|
185
|
-
|
|
186
|
-
let
|
|
187
|
-
await
|
|
188
|
-
...
|
|
189
|
-
root:
|
|
190
|
-
base:
|
|
282
|
+
let g = await N.readdir(k.join(o, "assets")).catch(() => []);
|
|
283
|
+
h.done(`Client bundle (${g.length} chunks)`);
|
|
284
|
+
let _ = new I(i, "Building SSR bundle...");
|
|
285
|
+
await M({
|
|
286
|
+
...n.viteConfig,
|
|
287
|
+
root: r,
|
|
288
|
+
base: v,
|
|
191
289
|
plugins: c,
|
|
192
|
-
customLogger:
|
|
290
|
+
customLogger: f,
|
|
193
291
|
logLevel: "silent",
|
|
194
292
|
build: {
|
|
195
|
-
...
|
|
293
|
+
...n.viteConfig?.build,
|
|
196
294
|
outDir: s,
|
|
197
|
-
ssr:
|
|
295
|
+
ssr: E,
|
|
198
296
|
emptyOutDir: !0
|
|
199
297
|
}
|
|
200
|
-
}),
|
|
201
|
-
let
|
|
202
|
-
let
|
|
203
|
-
return
|
|
298
|
+
}), _.done("SSR bundle");
|
|
299
|
+
let y = u.map((t) => {
|
|
300
|
+
let n = e(t);
|
|
301
|
+
return n === "index" ? "/" : `/${n}`;
|
|
204
302
|
});
|
|
205
|
-
|
|
206
|
-
let
|
|
207
|
-
await
|
|
208
|
-
ssrEntryPath:
|
|
303
|
+
y.push("/"), R(x.entries, "", y);
|
|
304
|
+
let b = new I(i, "Pre-rendering pages...");
|
|
305
|
+
await Ee({
|
|
306
|
+
ssrEntryPath: k.join(s, "ssr-entry.js"),
|
|
209
307
|
clientOutDir: o,
|
|
210
|
-
outDir:
|
|
211
|
-
base:
|
|
212
|
-
|
|
308
|
+
outDir: a,
|
|
309
|
+
base: v,
|
|
310
|
+
origin: p,
|
|
311
|
+
lang: l.lang,
|
|
312
|
+
pagePaths: y,
|
|
213
313
|
siteTitle: l.siteTitle,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
let
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
314
|
+
author: m,
|
|
315
|
+
progress: b
|
|
316
|
+
}), b.done(`Pre-rendered ${y.length} pages`);
|
|
317
|
+
let S = /* @__PURE__ */ new Map();
|
|
318
|
+
for (let t of d) {
|
|
319
|
+
let n = e(t.filepath), r = n === "index" ? "/" : `/${n}`;
|
|
320
|
+
S.set(r, t.metadata.mtime);
|
|
321
|
+
}
|
|
322
|
+
let C = Se(y, v, p, S), w = [N.writeFile(k.join(a, "sitemap.xml"), C)];
|
|
323
|
+
p !== void 0 && (w.push(N.writeFile(k.join(a, "robots.txt"), Ce(p, v))), w.push(N.writeFile(k.join(a, "feed.xml"), we(d, v, p, l.siteTitle, l.siteDescription, l.lang)))), await Promise.all(w);
|
|
324
|
+
let D = k.join(o, "assets"), O = k.join(a, "assets");
|
|
325
|
+
await N.cp(D, O, { recursive: !0 }).catch(() => {}), await Ne(k.join(r, l.rootDir), a);
|
|
326
|
+
let ee = k.join(r, l.publicDir);
|
|
327
|
+
await N.cp(ee, a, { recursive: !0 }).catch(() => {});
|
|
222
328
|
} finally {
|
|
223
329
|
await Promise.all([
|
|
224
|
-
|
|
330
|
+
N.rm(w, {
|
|
225
331
|
recursive: !0,
|
|
226
332
|
force: !0
|
|
227
333
|
}),
|
|
228
|
-
|
|
334
|
+
N.rm(o, {
|
|
229
335
|
recursive: !0,
|
|
230
336
|
force: !0
|
|
231
337
|
}),
|
|
232
|
-
|
|
338
|
+
N.rm(s, {
|
|
233
339
|
recursive: !0,
|
|
234
340
|
force: !0
|
|
235
341
|
})
|
|
236
342
|
]);
|
|
237
343
|
}
|
|
238
|
-
|
|
344
|
+
i.log(`\nBuild complete. Output: ${a}`);
|
|
239
345
|
}
|
|
240
|
-
function
|
|
241
|
-
let t = `/${e.rootDir}/${
|
|
242
|
-
...
|
|
243
|
-
directoryListings:
|
|
346
|
+
function Me(e) {
|
|
347
|
+
let t = `/${e.rootDir}/${o}`, n = JSON.parse(e.siteConfig), i = JSON.parse(e.siteData), a = i.contentTree ?? { entries: [] }, s = v(a.entries ?? [], n.title ?? ""), c = JSON.stringify({
|
|
348
|
+
...i,
|
|
349
|
+
directoryListings: s
|
|
244
350
|
});
|
|
245
351
|
return `
|
|
246
352
|
import { createTypedownApp } from 'typerighter/client';
|
|
@@ -251,8 +357,8 @@ import { h } from 'vue';
|
|
|
251
357
|
import theme from '${e.layoutImport}';
|
|
252
358
|
|
|
253
359
|
const pages = import.meta.glob('${t}', { eager: true });
|
|
254
|
-
const contentExts = ${JSON.stringify(
|
|
255
|
-
const siteData = ${
|
|
360
|
+
const contentExts = ${JSON.stringify(r)};
|
|
361
|
+
const siteData = ${c};
|
|
256
362
|
|
|
257
363
|
function findPage(base) {
|
|
258
364
|
for (const ext of contentExts) {
|
|
@@ -286,39 +392,32 @@ export async function render(url) {
|
|
|
286
392
|
}
|
|
287
393
|
`;
|
|
288
394
|
}
|
|
289
|
-
async function
|
|
290
|
-
let
|
|
395
|
+
async function Ne(e, t) {
|
|
396
|
+
let n = (await N.readdir(e, {
|
|
291
397
|
recursive: !0,
|
|
292
398
|
withFileTypes: !0
|
|
293
|
-
})).filter((
|
|
294
|
-
let r =
|
|
295
|
-
return
|
|
399
|
+
})).filter((e) => e.isFile() && !s(e.name)).map(async (n) => {
|
|
400
|
+
let r = k.join(n.parentPath, n.name), i = k.relative(e, r), a = k.join(t, i);
|
|
401
|
+
return N.mkdir(k.dirname(a), { recursive: !0 }).then(() => N.copyFile(r, a));
|
|
296
402
|
});
|
|
297
|
-
await Promise.all(
|
|
403
|
+
await Promise.all(n);
|
|
298
404
|
}
|
|
299
|
-
function
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
`;
|
|
305
|
-
}
|
|
306
|
-
function N(e, t, n) {
|
|
307
|
-
for (let r of e) {
|
|
308
|
-
if (r.kind !== "dir") continue;
|
|
309
|
-
let e = `${t}/${r.node.name}`;
|
|
310
|
-
f(r.node) || n.push(o(e)), N(r.node.entries, e, n);
|
|
405
|
+
function R(e, n, r) {
|
|
406
|
+
for (let i of e) {
|
|
407
|
+
if (i.kind !== "dir") continue;
|
|
408
|
+
let e = `${n}/${i.node.name}`;
|
|
409
|
+
_(i.node) || r.push(t(e)), R(i.node.entries, e, r);
|
|
311
410
|
}
|
|
312
411
|
}
|
|
313
412
|
//#endregion
|
|
314
413
|
//#region ../../node_modules/.pnpm/@shikijs+transformers@4.4.3/node_modules/@shikijs/transformers/dist/index.mjs
|
|
315
|
-
var
|
|
414
|
+
var Pe = /(\s+\/\/)/, Fe = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ie = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, Le = [
|
|
316
415
|
[/^(<!--)(.+)(-->)$/, !1],
|
|
317
416
|
[/^(\/\*)(.+)(\*\/)$/, !1],
|
|
318
417
|
[/^(\/\/|["'#]|;{1,2}|%{1,2}|--)(.*)$/, !0],
|
|
319
418
|
[/^(\*)(.+)$/, !0]
|
|
320
419
|
];
|
|
321
|
-
function
|
|
420
|
+
function Re(e, t, n) {
|
|
322
421
|
let r = [];
|
|
323
422
|
for (let i of e) {
|
|
324
423
|
if (n === "v3") {
|
|
@@ -327,8 +426,8 @@ function De(e, t, n) {
|
|
|
327
426
|
let n = e.children[0];
|
|
328
427
|
if (n.type !== "text") return e;
|
|
329
428
|
let r = t === i.children.length - 1;
|
|
330
|
-
if (!
|
|
331
|
-
let a = n.value.split(
|
|
429
|
+
if (!z(n.value, r)) return e;
|
|
430
|
+
let a = n.value.split(Pe);
|
|
332
431
|
if (a.length <= 1) return e;
|
|
333
432
|
let o = [a[0]];
|
|
334
433
|
for (let e = 1; e < a.length; e += 2) o.push(a[e] + (a[e + 1] || ""));
|
|
@@ -349,13 +448,13 @@ function De(e, t, n) {
|
|
|
349
448
|
if (a.type !== "element") continue;
|
|
350
449
|
let o = a.children.at(0);
|
|
351
450
|
if (o?.type !== "text") continue;
|
|
352
|
-
let s = n === e.length - 1, c =
|
|
451
|
+
let s = n === e.length - 1, c = z(o.value, s), l;
|
|
353
452
|
if (!c && n > 0 && o.value.trim().startsWith("[!code")) {
|
|
354
453
|
let t = e[n - 1];
|
|
355
454
|
if (t?.type === "element") {
|
|
356
455
|
let n = t.children.at(0);
|
|
357
456
|
if (n?.type === "text" && n.value.includes("//")) {
|
|
358
|
-
let l =
|
|
457
|
+
let l = z(n.value + o.value, s);
|
|
359
458
|
if (l) {
|
|
360
459
|
c = l, r.push({
|
|
361
460
|
info: l,
|
|
@@ -372,7 +471,7 @@ function De(e, t, n) {
|
|
|
372
471
|
}
|
|
373
472
|
if (c) {
|
|
374
473
|
if (t && !s && n !== 0) {
|
|
375
|
-
let t =
|
|
474
|
+
let t = ze(e[n - 1], "{") && ze(e[n + 1], "}");
|
|
376
475
|
r.push({
|
|
377
476
|
info: c,
|
|
378
477
|
line: i,
|
|
@@ -394,16 +493,16 @@ function De(e, t, n) {
|
|
|
394
493
|
}
|
|
395
494
|
return r;
|
|
396
495
|
}
|
|
397
|
-
function
|
|
496
|
+
function ze(e, t) {
|
|
398
497
|
if (e.type !== "element") return !1;
|
|
399
498
|
let n = e.children[0];
|
|
400
499
|
return n.type === "text" && n.value.trim() === t;
|
|
401
500
|
}
|
|
402
|
-
function
|
|
501
|
+
function z(e, t) {
|
|
403
502
|
let n = e.trimStart(), r = e.length - n.length;
|
|
404
503
|
n = n.trimEnd();
|
|
405
504
|
let i = e.length - n.length - r;
|
|
406
|
-
for (let [e, a] of
|
|
505
|
+
for (let [e, a] of Le) {
|
|
407
506
|
if (a && !t) continue;
|
|
408
507
|
let o = e.exec(n);
|
|
409
508
|
if (o) return [
|
|
@@ -413,22 +512,22 @@ function F(e, t) {
|
|
|
413
512
|
];
|
|
414
513
|
}
|
|
415
514
|
}
|
|
416
|
-
function
|
|
417
|
-
let t = e.match(
|
|
515
|
+
function Be(e) {
|
|
516
|
+
let t = e.match(Fe);
|
|
418
517
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
|
|
419
518
|
}
|
|
420
|
-
function
|
|
421
|
-
let t = e.match(
|
|
519
|
+
function Ve(e) {
|
|
520
|
+
let t = e.match(Ie);
|
|
422
521
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index).trimEnd() : e;
|
|
423
522
|
}
|
|
424
|
-
function
|
|
523
|
+
function He(e, t, n, r) {
|
|
425
524
|
return r ??= "v3", {
|
|
426
525
|
name: e,
|
|
427
526
|
code(e) {
|
|
428
527
|
let i = e.children.filter((e) => e.type === "element"), a = [];
|
|
429
528
|
e.data ??= {};
|
|
430
529
|
let o = e.data;
|
|
431
|
-
o._shiki_notation ??=
|
|
530
|
+
o._shiki_notation ??= Re(i, ["jsx", "tsx"].includes(this.options.lang), r);
|
|
432
531
|
let s = o._shiki_notation;
|
|
433
532
|
for (let e of s) {
|
|
434
533
|
if (e.info[1].length === 0) continue;
|
|
@@ -436,7 +535,7 @@ function Ae(e, t, n, r) {
|
|
|
436
535
|
e.isLineCommentOnly && r !== "v1" && o++;
|
|
437
536
|
let s = !1;
|
|
438
537
|
if (e.info[1] = e.info[1].replace(t, (...t) => n.call(this, t, e.line, e.token, i, o) ? (s = !0, "") : t[0]), !s) continue;
|
|
439
|
-
r === "v1" ? e.info[1] =
|
|
538
|
+
r === "v1" ? e.info[1] = Be(e.info[1]) : r === "v3" && (e.info[1] = Ve(e.info[1]));
|
|
440
539
|
let c = e.info[1].trim().length === 0;
|
|
441
540
|
if (c && (e.info[1] = ""), c && e.isLineCommentOnly) a.push(e.line);
|
|
442
541
|
else if (c && e.isJsxStyle) e.line.children.splice(e.line.children.indexOf(e.token) - 1, 3);
|
|
@@ -461,44 +560,44 @@ function Ae(e, t, n, r) {
|
|
|
461
560
|
}
|
|
462
561
|
};
|
|
463
562
|
}
|
|
464
|
-
var
|
|
465
|
-
function
|
|
563
|
+
var Ue = /\{([\d,-]+)\}/;
|
|
564
|
+
function We(e) {
|
|
466
565
|
if (!e) return null;
|
|
467
|
-
let t = e.match(
|
|
566
|
+
let t = e.match(Ue);
|
|
468
567
|
return t ? t[1].split(",").flatMap((e) => {
|
|
469
568
|
let t = e.split("-").map((e) => Number.parseInt(e, 10));
|
|
470
569
|
return t.length === 1 ? [t[0]] : Array.from({ length: t[1] - t[0] + 1 }, (e, n) => t[0] + n);
|
|
471
570
|
}) : null;
|
|
472
571
|
}
|
|
473
|
-
var
|
|
474
|
-
function
|
|
572
|
+
var Ge = Symbol("highlighted-lines");
|
|
573
|
+
function Ke(e = {}) {
|
|
475
574
|
let { className: t = "highlighted", zeroIndexed: n = !1 } = e;
|
|
476
575
|
return {
|
|
477
576
|
name: "@shikijs/transformers:meta-highlight",
|
|
478
577
|
line(e, r) {
|
|
479
578
|
if (!this.options.meta?.__raw) return;
|
|
480
579
|
let i = this.meta;
|
|
481
|
-
i[
|
|
482
|
-
let a = i[
|
|
580
|
+
i[Ge] ??= We(this.options.meta.__raw);
|
|
581
|
+
let a = i[Ge] ?? [], o = n ? r - 1 : r;
|
|
483
582
|
return a.includes(o) && this.addClassToHast(e, t), e;
|
|
484
583
|
}
|
|
485
584
|
};
|
|
486
585
|
}
|
|
487
|
-
var
|
|
488
|
-
function
|
|
489
|
-
return e.replace(
|
|
586
|
+
var qe = /[.*+?^${}()|[\]\\]/g;
|
|
587
|
+
function Je(e) {
|
|
588
|
+
return e.replace(qe, "\\$&");
|
|
490
589
|
}
|
|
491
|
-
function
|
|
590
|
+
function B(e = {}, t = "@shikijs/transformers:notation-map") {
|
|
492
591
|
let { classMap: n = {}, classActivePre: r = void 0, classActiveCode: i = void 0 } = e;
|
|
493
|
-
return
|
|
592
|
+
return He(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(Je).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
|
|
494
593
|
let u = Number.parseInt(a.slice(1), 10);
|
|
495
594
|
for (let e = l; e < Math.min(l + u, c.length); e++) this.addClassToHast(c[e], n[t]);
|
|
496
595
|
return r && this.addClassToHast(this.pre, r), i && this.addClassToHast(this.code, i), !0;
|
|
497
596
|
}, e.matchAlgorithm);
|
|
498
597
|
}
|
|
499
|
-
function
|
|
598
|
+
function Ye(e = {}) {
|
|
500
599
|
let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
|
|
501
|
-
return
|
|
600
|
+
return B({
|
|
502
601
|
classMap: {
|
|
503
602
|
"++": t,
|
|
504
603
|
"--": n
|
|
@@ -508,31 +607,31 @@ function Le(e = {}) {
|
|
|
508
607
|
matchAlgorithm: e.matchAlgorithm
|
|
509
608
|
}, "@shikijs/transformers:notation-diff");
|
|
510
609
|
}
|
|
511
|
-
function
|
|
610
|
+
function Xe(e = {}) {
|
|
512
611
|
let { classMap: t = {
|
|
513
612
|
error: ["highlighted", "error"],
|
|
514
613
|
warning: ["highlighted", "warning"],
|
|
515
614
|
info: ["highlighted", "info"]
|
|
516
615
|
}, classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
517
|
-
return
|
|
616
|
+
return B({
|
|
518
617
|
classMap: t,
|
|
519
618
|
classActivePre: n,
|
|
520
619
|
classActiveCode: r,
|
|
521
620
|
matchAlgorithm: e.matchAlgorithm
|
|
522
621
|
}, "@shikijs/transformers:notation-error-level");
|
|
523
622
|
}
|
|
524
|
-
function
|
|
623
|
+
function Ze(e = {}) {
|
|
525
624
|
let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
|
|
526
|
-
return
|
|
625
|
+
return B({
|
|
527
626
|
classMap: { focus: t },
|
|
528
627
|
classActivePre: n,
|
|
529
628
|
classActiveCode: r,
|
|
530
629
|
matchAlgorithm: e.matchAlgorithm
|
|
531
630
|
}, "@shikijs/transformers:notation-focus");
|
|
532
631
|
}
|
|
533
|
-
function
|
|
632
|
+
function Qe(e = {}) {
|
|
534
633
|
let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
535
|
-
return
|
|
634
|
+
return B({
|
|
536
635
|
classMap: {
|
|
537
636
|
highlight: t,
|
|
538
637
|
hl: t
|
|
@@ -544,73 +643,42 @@ function Be(e = {}) {
|
|
|
544
643
|
}
|
|
545
644
|
//#endregion
|
|
546
645
|
//#region src/node/lib/render/highlight/language.ts
|
|
547
|
-
var
|
|
646
|
+
var $e = [
|
|
548
647
|
"shellscript",
|
|
549
648
|
"shell",
|
|
550
649
|
"bash",
|
|
551
650
|
"sh",
|
|
552
651
|
"zsh"
|
|
553
652
|
];
|
|
554
|
-
function
|
|
555
|
-
return
|
|
653
|
+
function et(e) {
|
|
654
|
+
return $e.includes(e);
|
|
556
655
|
}
|
|
557
|
-
var
|
|
558
|
-
function
|
|
559
|
-
return
|
|
656
|
+
var tt = /^[a-zA-Z0-9-_]+/;
|
|
657
|
+
function nt(e) {
|
|
658
|
+
return tt.exec(e)?.[0] || "";
|
|
560
659
|
}
|
|
561
660
|
//#endregion
|
|
562
|
-
//#region src/node/lib/
|
|
563
|
-
var
|
|
564
|
-
logStream;
|
|
565
|
-
constructor(e) {
|
|
566
|
-
e !== void 0 && (this.logStream = D.createWriteStream(e, { flags: "a" }), process.once("exit", () => this.close()));
|
|
567
|
-
}
|
|
568
|
-
info(e) {
|
|
569
|
-
console.log(T.cyan(`ℹ ${e}`)), this.writeToFile("INFO", e);
|
|
570
|
-
}
|
|
571
|
-
warn(e) {
|
|
572
|
-
console.warn(T.yellow(`⚠ ${e}`)), this.writeToFile("WARN", e);
|
|
573
|
-
}
|
|
574
|
-
error(e) {
|
|
575
|
-
console.error(T.red(`✖ ${e}`)), this.writeToFile("ERROR", e);
|
|
576
|
-
}
|
|
577
|
-
success(e) {
|
|
578
|
-
console.log(T.green(`✔ ${e}`)), this.writeToFile("SUCCESS", e);
|
|
579
|
-
}
|
|
580
|
-
start(e) {
|
|
581
|
-
console.log(T.cyan(`◐ ${e}`)), this.writeToFile("START", e);
|
|
582
|
-
}
|
|
583
|
-
log(e) {
|
|
584
|
-
console.log(e), this.writeToFile("LOG", e);
|
|
585
|
-
}
|
|
586
|
-
writeToFile(e, t) {
|
|
587
|
-
if (!this.logStream) return;
|
|
588
|
-
let n = (/* @__PURE__ */ new Date()).toISOString(), r = t.replace(Ge, "");
|
|
589
|
-
this.logStream.write(`${n} [${e}] ${r}\n`);
|
|
590
|
-
}
|
|
591
|
-
close() {
|
|
592
|
-
this.logStream?.end(), this.logStream = void 0;
|
|
593
|
-
}
|
|
594
|
-
}, qe = new Ke(), Je = new FinalizationRegistry((e) => {
|
|
661
|
+
//#region src/node/lib/render/highlight/index.ts
|
|
662
|
+
var rt = new FinalizationRegistry((e) => {
|
|
595
663
|
e();
|
|
596
|
-
}),
|
|
664
|
+
}), V = {
|
|
597
665
|
light: "github-light",
|
|
598
666
|
dark: "github-dark"
|
|
599
667
|
};
|
|
600
|
-
async function
|
|
601
|
-
let e = await
|
|
602
|
-
themes: [
|
|
668
|
+
async function it() {
|
|
669
|
+
let e = await pe({
|
|
670
|
+
themes: [V.light, V.dark],
|
|
603
671
|
langs: []
|
|
604
672
|
}), t = [
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
673
|
+
Ke(),
|
|
674
|
+
Ye(),
|
|
675
|
+
Ze({
|
|
608
676
|
classActiveLine: "has-focus",
|
|
609
677
|
classActivePre: "has-focused-lines"
|
|
610
678
|
}),
|
|
611
|
-
|
|
612
|
-
Re(),
|
|
679
|
+
Qe(),
|
|
613
680
|
Xe(),
|
|
681
|
+
at(),
|
|
614
682
|
{
|
|
615
683
|
name: "typedown:add-dir",
|
|
616
684
|
pre(e) {
|
|
@@ -619,19 +687,19 @@ async function Ye() {
|
|
|
619
687
|
}
|
|
620
688
|
], n = new Set(e.getLoadedLanguages());
|
|
621
689
|
async function r(r, i, a) {
|
|
622
|
-
let o =
|
|
690
|
+
let o = nt(i);
|
|
623
691
|
if (o) {
|
|
624
692
|
let e = i;
|
|
625
693
|
i = o.toLowerCase(), a = e.slice(i.length).replace(/(?<!=)\{/g, " {") + " " + a, a = a.trim().replace(/\s+/g, " ");
|
|
626
694
|
}
|
|
627
695
|
i ||= "txt";
|
|
628
696
|
try {
|
|
629
|
-
!
|
|
697
|
+
!he(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
|
|
630
698
|
} catch {
|
|
631
|
-
|
|
699
|
+
ne.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
|
|
632
700
|
}
|
|
633
701
|
r = r.trimEnd();
|
|
634
|
-
let s =
|
|
702
|
+
let s = me(r, i, e);
|
|
635
703
|
return await e.loadLanguage(...s), e.codeToHtml(r, {
|
|
636
704
|
lang: i,
|
|
637
705
|
transformers: [...t, {
|
|
@@ -648,7 +716,7 @@ async function Ye() {
|
|
|
648
716
|
}
|
|
649
717
|
}],
|
|
650
718
|
meta: { __raw: a },
|
|
651
|
-
themes:
|
|
719
|
+
themes: V,
|
|
652
720
|
defaultColor: !1,
|
|
653
721
|
colorReplacements: {
|
|
654
722
|
"github-light": {
|
|
@@ -673,13 +741,13 @@ async function Ye() {
|
|
|
673
741
|
}
|
|
674
742
|
});
|
|
675
743
|
}
|
|
676
|
-
return
|
|
744
|
+
return rt.register(r, () => e.dispose()), r;
|
|
677
745
|
}
|
|
678
|
-
function
|
|
746
|
+
function at() {
|
|
679
747
|
return {
|
|
680
748
|
name: "typedown:disable-shell-symbol-select",
|
|
681
749
|
tokens(e) {
|
|
682
|
-
if (
|
|
750
|
+
if (et(this.options.lang)) for (let t of e) {
|
|
683
751
|
if (t.length < 2) continue;
|
|
684
752
|
let e = t[0].content.trim();
|
|
685
753
|
(e === "$" || e === ">") && t[1].content[0] === " " && (t[0].content = e + " ", t[0].htmlStyle ??= {}, t[0].htmlStyle["user-select"] = "none", t[0].htmlStyle["-webkit-user-select"] = "none", t[1].content = t[1].content.slice(1));
|
|
@@ -689,20 +757,20 @@ function Xe() {
|
|
|
689
757
|
}
|
|
690
758
|
//#endregion
|
|
691
759
|
//#region src/node/lib/render/postprocess.ts
|
|
692
|
-
var
|
|
693
|
-
async function
|
|
694
|
-
return e = await
|
|
760
|
+
var H;
|
|
761
|
+
async function ot(e) {
|
|
762
|
+
return e = await lt(e), e = pt(e), e;
|
|
695
763
|
}
|
|
696
|
-
function
|
|
697
|
-
return
|
|
764
|
+
function st() {
|
|
765
|
+
return H ||= it(), H;
|
|
698
766
|
}
|
|
699
|
-
var
|
|
700
|
-
async function
|
|
701
|
-
let t = await
|
|
767
|
+
var ct = /<pre class="td-code-placeholder"(?: data-lang="([^"]*)")?(?: data-meta="([^"]*)")?><code>([\s\S]*?)<\/code><\/pre>/g;
|
|
768
|
+
async function lt(e) {
|
|
769
|
+
let t = await st(), n = [...e.matchAll(ct)];
|
|
702
770
|
if (n.length === 0) return e;
|
|
703
771
|
let r = await Promise.all(n.map(async (e) => {
|
|
704
|
-
let n = e[1] || "", r = e[2] || "", i =
|
|
705
|
-
return
|
|
772
|
+
let n = e[1] || "", r = e[2] || "", i = g(e[3]);
|
|
773
|
+
return ut(await t(i, n, r), n, r);
|
|
706
774
|
})), i = e;
|
|
707
775
|
for (let e = n.length - 1; 0 <= e; e--) {
|
|
708
776
|
let t = n[e];
|
|
@@ -710,7 +778,7 @@ async function et(e) {
|
|
|
710
778
|
}
|
|
711
779
|
return i;
|
|
712
780
|
}
|
|
713
|
-
function
|
|
781
|
+
function ut(e, t, n) {
|
|
714
782
|
t ||= "txt";
|
|
715
783
|
let r = t.replace(/_/g, " "), i = `<div class="language-${t}"><button title="Copy code" data-copied="Copied" class="copy"></button><span class="lang">${r}</span>` + e + "</div>";
|
|
716
784
|
if (/:line-numbers\b/.test(n)) {
|
|
@@ -721,14 +789,14 @@ function tt(e, t, n) {
|
|
|
721
789
|
}
|
|
722
790
|
return i;
|
|
723
791
|
}
|
|
724
|
-
var
|
|
725
|
-
function
|
|
726
|
-
return e = e.replace(
|
|
792
|
+
var dt = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, ft = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
|
|
793
|
+
function pt(e) {
|
|
794
|
+
return e = e.replace(dt, (e, t) => U(t, !1)), e = e.replace(ft, (e, t) => U(t, !0)), e;
|
|
727
795
|
}
|
|
728
|
-
function
|
|
796
|
+
function U(e, t) {
|
|
729
797
|
let n = t ? "div" : "span";
|
|
730
798
|
try {
|
|
731
|
-
return
|
|
799
|
+
return te.renderToString(g(e), {
|
|
732
800
|
throwOnError: !1,
|
|
733
801
|
displayMode: t
|
|
734
802
|
});
|
|
@@ -738,21 +806,22 @@ function z(e, t) {
|
|
|
738
806
|
}
|
|
739
807
|
//#endregion
|
|
740
808
|
//#region src/node/lib/render/vue.ts
|
|
741
|
-
async function
|
|
742
|
-
let r = t.title || t.label || (
|
|
809
|
+
async function W(e, t, n) {
|
|
810
|
+
let r = t.title || t.label || (S(n) ? m(n, (await e.getConfig()).siteTitle) : x(n));
|
|
743
811
|
return {
|
|
744
812
|
schema: t.schema,
|
|
745
813
|
schemaLabel: t.schemaLabel,
|
|
746
814
|
label: t.label,
|
|
747
815
|
icon: t.icon,
|
|
748
816
|
frontmatter: t.header ?? {},
|
|
749
|
-
headings:
|
|
817
|
+
headings: ht(t.headings),
|
|
750
818
|
title: r,
|
|
751
|
-
metadata: t.metadata
|
|
819
|
+
metadata: t.metadata,
|
|
820
|
+
meta: t.meta
|
|
752
821
|
};
|
|
753
822
|
}
|
|
754
|
-
async function
|
|
755
|
-
let r = await
|
|
823
|
+
async function mt(e, t, n) {
|
|
824
|
+
let r = await ot(t.content), i = await W(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
|
|
756
825
|
return {
|
|
757
826
|
vueSrc: [
|
|
758
827
|
"<script>",
|
|
@@ -764,12 +833,12 @@ async function at(e, t, n) {
|
|
|
764
833
|
`import { pageData } from ${a}`,
|
|
765
834
|
"useRouter().route.data = pageData",
|
|
766
835
|
"<\/script>",
|
|
767
|
-
`<template><div class="typedown-content">\n${
|
|
836
|
+
`<template><div class="typedown-content">\n${gt(r)}\n</div></template>`
|
|
768
837
|
].join("\n"),
|
|
769
838
|
pageData: i
|
|
770
839
|
};
|
|
771
840
|
}
|
|
772
|
-
function
|
|
841
|
+
function ht(e) {
|
|
773
842
|
let t = [], n = [];
|
|
774
843
|
for (let r of e) {
|
|
775
844
|
let e = {
|
|
@@ -785,191 +854,37 @@ function ot(e) {
|
|
|
785
854
|
}
|
|
786
855
|
return t;
|
|
787
856
|
}
|
|
788
|
-
function
|
|
857
|
+
function gt(e) {
|
|
789
858
|
return e.replaceAll("{{", "{{").replaceAll("}}", "}}");
|
|
790
859
|
}
|
|
791
860
|
//#endregion
|
|
792
|
-
//#region src/node/lib/typedown-context.ts
|
|
793
|
-
var ct = class {
|
|
794
|
-
client;
|
|
795
|
-
constructor(e) {
|
|
796
|
-
this.client = e, this.registerNotificationHandlers(e);
|
|
797
|
-
}
|
|
798
|
-
cachedConfig;
|
|
799
|
-
cachedFiles;
|
|
800
|
-
cachedSchemas;
|
|
801
|
-
cachedSchemaMap = /* @__PURE__ */ new Map();
|
|
802
|
-
cachedFileMap = /* @__PURE__ */ new Map();
|
|
803
|
-
registerNotificationHandlers(e) {
|
|
804
|
-
e.onConfigChanged((e) => {
|
|
805
|
-
this.cachedConfig = e;
|
|
806
|
-
}), e.onContentUpdated(({ filepath: e, affectedFiles: t = [] }) => {
|
|
807
|
-
this.cachedFiles = void 0, this.cachedFileMap.delete(e);
|
|
808
|
-
for (let e of t) this.cachedFileMap.delete(e);
|
|
809
|
-
}), e.onContentDeleted(({ filepath: e }) => {
|
|
810
|
-
this.cachedFiles = void 0, this.cachedFileMap.delete(e);
|
|
811
|
-
}), e.onSchemaUpdated(({ schema: e }) => {
|
|
812
|
-
this.cachedSchemas = void 0, this.cachedSchemaMap.delete(e);
|
|
813
|
-
}), e.onSchemaDeleted(({ schema: e }) => {
|
|
814
|
-
this.cachedSchemas = void 0, this.cachedSchemaMap.delete(e);
|
|
815
|
-
});
|
|
816
|
-
}
|
|
817
|
-
get rpc() {
|
|
818
|
-
return this.client;
|
|
819
|
-
}
|
|
820
|
-
async getFile(e) {
|
|
821
|
-
let t = this.cachedFileMap.get(e);
|
|
822
|
-
if (t) return t;
|
|
823
|
-
let n = await H(() => this.rpc.requestFile(e));
|
|
824
|
-
return this.cachedFileMap.set(e, n), n;
|
|
825
|
-
}
|
|
826
|
-
async getFiles(e) {
|
|
827
|
-
let t = e.filter((e) => !this.cachedFileMap.has(e));
|
|
828
|
-
if (0 < t.length) {
|
|
829
|
-
let e = await H(() => this.rpc.requestFiles(t));
|
|
830
|
-
for (let [n, r] of t.entries()) this.cachedFileMap.set(r, e[n]);
|
|
831
|
-
}
|
|
832
|
-
return e.map((e) => this.cachedFileMap.get(e));
|
|
833
|
-
}
|
|
834
|
-
async listFiles() {
|
|
835
|
-
return this.cachedFiles ||= await H(() => this.rpc.listVault()), this.cachedFiles;
|
|
836
|
-
}
|
|
837
|
-
async listSidebar() {
|
|
838
|
-
return H(() => this.rpc.listSidebar());
|
|
839
|
-
}
|
|
840
|
-
async getConfig() {
|
|
841
|
-
return this.cachedConfig ||= await H(() => this.rpc.getConfig()), this.cachedConfig;
|
|
842
|
-
}
|
|
843
|
-
async getSchema(e) {
|
|
844
|
-
let t = this.cachedSchemaMap.get(e);
|
|
845
|
-
if (t) return t;
|
|
846
|
-
let n = await H(() => this.rpc.getSchema(e));
|
|
847
|
-
return this.cachedSchemaMap.set(e, n), n;
|
|
848
|
-
}
|
|
849
|
-
async listSchemas() {
|
|
850
|
-
return this.cachedSchemas ||= await H(() => this.rpc.listSchemas()), this.cachedSchemas;
|
|
851
|
-
}
|
|
852
|
-
async checkVault() {
|
|
853
|
-
return H(() => this.rpc.checkVault());
|
|
854
|
-
}
|
|
855
|
-
async formatFile(e) {
|
|
856
|
-
return H(() => this.rpc.formatFile(e));
|
|
857
|
-
}
|
|
858
|
-
};
|
|
859
|
-
function V(e) {
|
|
860
|
-
return e instanceof Error && "code" in e && e.code === pe;
|
|
861
|
-
}
|
|
862
|
-
async function H(e, t = 5) {
|
|
863
|
-
for (let n = 0; n < t; n++) try {
|
|
864
|
-
return await e();
|
|
865
|
-
} catch (e) {
|
|
866
|
-
if (!V(e) || n === t - 1) throw e;
|
|
867
|
-
await new Promise((e) => setTimeout(e, 50 * (n + 1)));
|
|
868
|
-
}
|
|
869
|
-
throw Error("unreachable");
|
|
870
|
-
}
|
|
871
|
-
//#endregion
|
|
872
|
-
//#region src/node/context.ts
|
|
873
|
-
var U = ["typedown.yaml", "typedown.yml"];
|
|
874
|
-
function W(e) {
|
|
875
|
-
let t = new Ke(dt(e));
|
|
876
|
-
function n() {
|
|
877
|
-
let e = re("warn");
|
|
878
|
-
return {
|
|
879
|
-
...e,
|
|
880
|
-
info(e) {
|
|
881
|
-
t.writeToFile("VITE", e);
|
|
882
|
-
},
|
|
883
|
-
warn(n) {
|
|
884
|
-
e.warn(n), t.writeToFile("VITE:WARN", n);
|
|
885
|
-
},
|
|
886
|
-
error(n) {
|
|
887
|
-
e.error(n), t.writeToFile("VITE:ERROR", n);
|
|
888
|
-
}
|
|
889
|
-
};
|
|
890
|
-
}
|
|
891
|
-
let r, i, a, o = !1;
|
|
892
|
-
function s() {
|
|
893
|
-
t.log(""), u(), process.exit(0);
|
|
894
|
-
}
|
|
895
|
-
function c() {
|
|
896
|
-
u();
|
|
897
|
-
}
|
|
898
|
-
async function l() {
|
|
899
|
-
if (r) return r;
|
|
900
|
-
process.on("SIGINT", s), process.on("SIGTERM", s), i = new fe({ root: e }), await new Promise((e, t) => {
|
|
901
|
-
i?.once("error", t), i?.listen(() => {
|
|
902
|
-
i?.removeListener("error", t), e();
|
|
903
|
-
});
|
|
904
|
-
});
|
|
905
|
-
let t = i.host, n = i.port;
|
|
906
|
-
if (t === void 0 || n === void 0) throw Error("RPC server started but host/port not available");
|
|
907
|
-
return a = await me.connectTcp(t, n), r = new ct(a), i.unref(), process.on("exit", c), r;
|
|
908
|
-
}
|
|
909
|
-
function u() {
|
|
910
|
-
o || (o = !0, process.removeListener("exit", c), process.removeListener("SIGINT", s), process.removeListener("SIGTERM", s), a?.dispose(), i?.close(), r = void 0, i = void 0, a = void 0);
|
|
911
|
-
}
|
|
912
|
-
return {
|
|
913
|
-
root: e,
|
|
914
|
-
logger: t,
|
|
915
|
-
getTdContext: l,
|
|
916
|
-
createViteLogger: n,
|
|
917
|
-
dispose: u
|
|
918
|
-
};
|
|
919
|
-
}
|
|
920
|
-
function lt(e) {
|
|
921
|
-
let t = C.resolve(e);
|
|
922
|
-
for (;;) {
|
|
923
|
-
if (ut(t)) return t;
|
|
924
|
-
let e = C.dirname(t);
|
|
925
|
-
if (e === t) break;
|
|
926
|
-
t = e;
|
|
927
|
-
}
|
|
928
|
-
return C.resolve(e);
|
|
929
|
-
}
|
|
930
|
-
function ut(e) {
|
|
931
|
-
return U.some((t) => D.existsSync(C.join(e, t)));
|
|
932
|
-
}
|
|
933
|
-
function dt(e) {
|
|
934
|
-
try {
|
|
935
|
-
let t = C.join(e, ".typedown", ".local"), n = C.join(t, "logs");
|
|
936
|
-
D.mkdirSync(n, { recursive: !0 });
|
|
937
|
-
let r = C.join(t, ".gitignore");
|
|
938
|
-
D.existsSync(r) || D.writeFileSync(r, "*\n");
|
|
939
|
-
let i = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
940
|
-
return C.join(n, `${i}.log`);
|
|
941
|
-
} catch {
|
|
942
|
-
return;
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
//#endregion
|
|
946
861
|
//#region src/node/plugin/vite/constants.ts
|
|
947
|
-
var
|
|
862
|
+
var _t = "@typedown/app", G = "\0@typedown/app", K = "@typedown/pages", q = "\0" + K;
|
|
948
863
|
K + "";
|
|
949
|
-
var J = "\0@typedown/pages?resource=", Y = "@typedown/site-data",
|
|
864
|
+
var J = "\0@typedown/pages?resource=", Y = "@typedown/site-data", vt = "\0@typedown/site-data", X = "@typedown/search-index", yt = "\0@typedown/search-index";
|
|
950
865
|
//#endregion
|
|
951
866
|
//#region src/node/plugin/vite/virtual/utils.ts
|
|
952
867
|
function Z(e, t) {
|
|
953
868
|
let n = e.moduleGraph.getModuleById(t);
|
|
954
869
|
if (!n) return;
|
|
955
870
|
e.moduleGraph.invalidateModule(n);
|
|
956
|
-
let r =
|
|
871
|
+
let r = bt(n.url);
|
|
957
872
|
for (let t of n.importers) e.hot.send({
|
|
958
873
|
type: "update",
|
|
959
874
|
updates: [{
|
|
960
875
|
type: "js-update",
|
|
961
|
-
path:
|
|
876
|
+
path: bt(t.url),
|
|
962
877
|
acceptedPath: r,
|
|
963
878
|
timestamp: Date.now()
|
|
964
879
|
}]
|
|
965
880
|
});
|
|
966
881
|
}
|
|
967
|
-
function
|
|
882
|
+
function bt(e) {
|
|
968
883
|
return e.startsWith("\0") ? "/@id/__x00__" + e.slice(1) : e;
|
|
969
884
|
}
|
|
970
885
|
//#endregion
|
|
971
886
|
//#region src/node/plugin/vite/virtual/app.ts
|
|
972
|
-
var
|
|
887
|
+
var xt = class {
|
|
973
888
|
async load(e) {
|
|
974
889
|
let t = await e.getConfig();
|
|
975
890
|
return Q({
|
|
@@ -986,6 +901,8 @@ function Q(e) {
|
|
|
986
901
|
title: e.siteTitle,
|
|
987
902
|
description: e.siteDescription,
|
|
988
903
|
basePath: e.basePath ?? "/",
|
|
904
|
+
origin: e.origin,
|
|
905
|
+
lang: e.lang,
|
|
989
906
|
repo: e.repo,
|
|
990
907
|
author: e.author,
|
|
991
908
|
license: e.license,
|
|
@@ -1002,7 +919,7 @@ import theme from 'typerighter/client/theme-default';
|
|
|
1002
919
|
import { pages as initialPages } from '${K}';
|
|
1003
920
|
import initialSiteData from '${Y}';
|
|
1004
921
|
let pages = initialPages;
|
|
1005
|
-
const contentExts = ${JSON.stringify(
|
|
922
|
+
const contentExts = ${JSON.stringify(r)};
|
|
1006
923
|
|
|
1007
924
|
function findPage(base) {
|
|
1008
925
|
for (const ext of contentExts) {
|
|
@@ -1059,7 +976,7 @@ if (import.meta.hot) {
|
|
|
1059
976
|
}
|
|
1060
977
|
//#endregion
|
|
1061
978
|
//#region src/node/plugin/vite/virtual/pages.ts
|
|
1062
|
-
var
|
|
979
|
+
var St = class {
|
|
1063
980
|
async load(e) {
|
|
1064
981
|
let t = (await e.getConfig()).rootDir ?? ".";
|
|
1065
982
|
return `export const pages = import.meta.glob('${t === "." ? "/**/*.{td,md}" : `/${t}/**/*.{td,md}`}');`;
|
|
@@ -1071,7 +988,7 @@ var _t = class {
|
|
|
1071
988
|
return e.startsWith(J);
|
|
1072
989
|
}
|
|
1073
990
|
async loadPageData(e, t) {
|
|
1074
|
-
let n = decodeURIComponent(e.slice(J.length)), r = await
|
|
991
|
+
let n = decodeURIComponent(e.slice(J.length)), r = await W(t, await t.getFile(n), n);
|
|
1075
992
|
return `export const pageData = ${JSON.stringify(r)}`;
|
|
1076
993
|
}
|
|
1077
994
|
invalidatePageData(e, t) {
|
|
@@ -1080,53 +997,53 @@ var _t = class {
|
|
|
1080
997
|
invalidate(e) {
|
|
1081
998
|
Z(e, q);
|
|
1082
999
|
}
|
|
1083
|
-
},
|
|
1000
|
+
}, Ct = "\0@typedown/site-data", wt = {
|
|
1084
1001
|
ready: !1,
|
|
1085
1002
|
contentTree: { entries: [] },
|
|
1086
1003
|
schemas: {},
|
|
1087
1004
|
directoryListings: {}
|
|
1088
|
-
},
|
|
1005
|
+
}, Tt = class {
|
|
1089
1006
|
data;
|
|
1090
1007
|
scan(e) {
|
|
1091
|
-
let t =
|
|
1008
|
+
let t = P("**/*.td", {
|
|
1092
1009
|
cwd: e,
|
|
1093
1010
|
exclude: (e) => e.startsWith("_")
|
|
1094
1011
|
}).map((e) => ({
|
|
1095
1012
|
filepath: e,
|
|
1096
|
-
label:
|
|
1013
|
+
label: x(e),
|
|
1097
1014
|
header: {}
|
|
1098
|
-
})), n =
|
|
1015
|
+
})), n = b(t);
|
|
1099
1016
|
this.data = {
|
|
1100
1017
|
contentTree: n,
|
|
1101
1018
|
schemas: {},
|
|
1102
|
-
directoryListings:
|
|
1019
|
+
directoryListings: v(n.entries, "")
|
|
1103
1020
|
};
|
|
1104
1021
|
}
|
|
1105
1022
|
load(e) {
|
|
1106
1023
|
let t = this.data ? {
|
|
1107
1024
|
ready: !0,
|
|
1108
1025
|
...this.data
|
|
1109
|
-
} :
|
|
1026
|
+
} : wt;
|
|
1110
1027
|
return `export default ${JSON.stringify(t)}`;
|
|
1111
1028
|
}
|
|
1112
1029
|
clear() {
|
|
1113
1030
|
this.data = void 0;
|
|
1114
1031
|
}
|
|
1115
1032
|
fetch(e, t) {
|
|
1116
|
-
|
|
1033
|
+
Et(e).then((e) => {
|
|
1117
1034
|
this.data = e, t && this.invalidate(t);
|
|
1118
1035
|
}).catch((e) => {
|
|
1119
1036
|
console.error("[typedown] Failed to fetch site data:", e instanceof Error ? e.message : e);
|
|
1120
1037
|
});
|
|
1121
1038
|
}
|
|
1122
1039
|
async fetchSync(e) {
|
|
1123
|
-
this.data = await
|
|
1040
|
+
this.data = await Et(e);
|
|
1124
1041
|
}
|
|
1125
1042
|
invalidate(e) {
|
|
1126
|
-
Z(e,
|
|
1043
|
+
Z(e, Ct);
|
|
1127
1044
|
}
|
|
1128
1045
|
};
|
|
1129
|
-
async function
|
|
1046
|
+
async function Et(e) {
|
|
1130
1047
|
let [t, n, r] = await Promise.all([
|
|
1131
1048
|
e.getConfig(),
|
|
1132
1049
|
e.listSidebar(),
|
|
@@ -1134,21 +1051,21 @@ async function xt(e) {
|
|
|
1134
1051
|
]), i = await Promise.all(r.map(async (t) => [t, (await e.getSchema(t)).properties])), a = Object.fromEntries(i), o = n.map((e) => ({
|
|
1135
1052
|
...e,
|
|
1136
1053
|
header: {}
|
|
1137
|
-
})), s =
|
|
1054
|
+
})), s = b(o);
|
|
1138
1055
|
return {
|
|
1139
1056
|
contentTree: s,
|
|
1140
1057
|
schemas: a,
|
|
1141
|
-
directoryListings:
|
|
1058
|
+
directoryListings: v(s.entries, t.siteTitle)
|
|
1142
1059
|
};
|
|
1143
1060
|
}
|
|
1144
1061
|
//#endregion
|
|
1145
1062
|
//#region src/node/lib/search-indexer/index.ts
|
|
1146
|
-
var
|
|
1063
|
+
var Dt = class {
|
|
1147
1064
|
index;
|
|
1148
1065
|
constructor() {
|
|
1149
|
-
this.index = new
|
|
1150
|
-
fields:
|
|
1151
|
-
storeFields:
|
|
1066
|
+
this.index = new oe({
|
|
1067
|
+
fields: a,
|
|
1068
|
+
storeFields: p
|
|
1152
1069
|
});
|
|
1153
1070
|
}
|
|
1154
1071
|
addAll(e) {
|
|
@@ -1167,20 +1084,20 @@ var St = class {
|
|
|
1167
1084
|
};
|
|
1168
1085
|
//#endregion
|
|
1169
1086
|
//#region src/node/lib/search-indexer/scan.ts
|
|
1170
|
-
function
|
|
1171
|
-
let n =
|
|
1087
|
+
function Ot(e, t) {
|
|
1088
|
+
let n = Mt(e), r = [];
|
|
1172
1089
|
for (let t of n) {
|
|
1173
|
-
let n =
|
|
1090
|
+
let n = jt(e, t);
|
|
1174
1091
|
n && r.push(n);
|
|
1175
1092
|
}
|
|
1176
1093
|
t.addAll(r);
|
|
1177
1094
|
}
|
|
1178
|
-
function
|
|
1179
|
-
let r =
|
|
1180
|
-
r ? n.addPage(r) : n.discardPage(
|
|
1095
|
+
function kt(e, t, n) {
|
|
1096
|
+
let r = jt(e, A(e, t));
|
|
1097
|
+
r ? n.addPage(r) : n.discardPage(d(t));
|
|
1181
1098
|
}
|
|
1182
|
-
function
|
|
1183
|
-
let n =
|
|
1099
|
+
function At(e, t) {
|
|
1100
|
+
let n = x(e);
|
|
1184
1101
|
if (!t.startsWith("---")) return {
|
|
1185
1102
|
title: n,
|
|
1186
1103
|
body: t
|
|
@@ -1196,56 +1113,56 @@ function Tt(e, t) {
|
|
|
1196
1113
|
body: a
|
|
1197
1114
|
};
|
|
1198
1115
|
}
|
|
1199
|
-
function
|
|
1116
|
+
function jt(e, t) {
|
|
1200
1117
|
let n;
|
|
1201
1118
|
try {
|
|
1202
|
-
n =
|
|
1119
|
+
n = ve(t, "utf-8");
|
|
1203
1120
|
} catch {
|
|
1204
1121
|
return;
|
|
1205
1122
|
}
|
|
1206
1123
|
if (!n.trim()) return;
|
|
1207
|
-
let r = t.slice(e.length + 1), { title: i, body: a } =
|
|
1124
|
+
let r = t.slice(e.length + 1), { title: i, body: a } = At(r, n);
|
|
1208
1125
|
return {
|
|
1209
|
-
id:
|
|
1126
|
+
id: d(r),
|
|
1210
1127
|
title: i,
|
|
1211
1128
|
text: `${i}\n${a}`
|
|
1212
1129
|
};
|
|
1213
1130
|
}
|
|
1214
|
-
function
|
|
1215
|
-
return
|
|
1131
|
+
function Mt(e) {
|
|
1132
|
+
return P("**/*.td", {
|
|
1216
1133
|
cwd: e,
|
|
1217
1134
|
exclude: (e) => e.startsWith("_")
|
|
1218
|
-
}).map((t) =>
|
|
1135
|
+
}).map((t) => A(e, t));
|
|
1219
1136
|
}
|
|
1220
1137
|
//#endregion
|
|
1221
1138
|
//#region src/node/plugin/vite/virtual/search-index.ts
|
|
1222
|
-
var
|
|
1223
|
-
indexer = new
|
|
1139
|
+
var Nt = "\0@typedown/search-index", Pt = class {
|
|
1140
|
+
indexer = new Dt();
|
|
1224
1141
|
load(e) {
|
|
1225
1142
|
return `export default ${JSON.stringify(this.indexer.serialize())}`;
|
|
1226
1143
|
}
|
|
1227
1144
|
index(e) {
|
|
1228
|
-
|
|
1145
|
+
Ot(e, this.indexer);
|
|
1229
1146
|
}
|
|
1230
1147
|
reindex(e, t) {
|
|
1231
|
-
|
|
1148
|
+
kt(e, t, this.indexer);
|
|
1232
1149
|
}
|
|
1233
1150
|
invalidate(e) {
|
|
1234
|
-
Z(e,
|
|
1151
|
+
Z(e, Nt);
|
|
1235
1152
|
}
|
|
1236
|
-
},
|
|
1237
|
-
function
|
|
1153
|
+
}, Ft = be(import.meta.url);
|
|
1154
|
+
function It() {
|
|
1238
1155
|
return [{
|
|
1239
1156
|
find: "vue/server-renderer",
|
|
1240
|
-
replacement:
|
|
1157
|
+
replacement: Ft.resolve("vue/server-renderer")
|
|
1241
1158
|
}, {
|
|
1242
1159
|
find: "vue",
|
|
1243
|
-
replacement:
|
|
1160
|
+
replacement: Ft.resolve("vue/dist/vue.runtime.esm-bundler.js")
|
|
1244
1161
|
}];
|
|
1245
1162
|
}
|
|
1246
1163
|
//#endregion
|
|
1247
1164
|
//#region src/node/plugin/vite/middleware/vault-assets.ts
|
|
1248
|
-
var
|
|
1165
|
+
var Lt = {
|
|
1249
1166
|
jpg: "image/jpeg",
|
|
1250
1167
|
jpeg: "image/jpeg",
|
|
1251
1168
|
png: "image/png",
|
|
@@ -1263,17 +1180,17 @@ var Mt = {
|
|
|
1263
1180
|
woff: "font/woff",
|
|
1264
1181
|
ttf: "font/ttf"
|
|
1265
1182
|
};
|
|
1266
|
-
function
|
|
1267
|
-
return (
|
|
1268
|
-
if (!
|
|
1269
|
-
let
|
|
1270
|
-
if (
|
|
1271
|
-
let
|
|
1272
|
-
if (
|
|
1273
|
-
let e =
|
|
1183
|
+
function Rt(e, t) {
|
|
1184
|
+
return (r, a, o) => {
|
|
1185
|
+
if (!r.url || r.method !== "GET" || a.writableEnded) return o();
|
|
1186
|
+
let s = n(r.url);
|
|
1187
|
+
if (s.startsWith("/@") || s.startsWith("/node_modules")) return o();
|
|
1188
|
+
let c = l(t.basePath), u = (c && s.startsWith(c) ? s.slice(c.length) : s).replace(/^\//, ""), d = A(e.config.root, t.rootDirectory, u);
|
|
1189
|
+
if (_e(d)) try {
|
|
1190
|
+
let e = ye(d);
|
|
1274
1191
|
if (e.isFile()) {
|
|
1275
|
-
let t =
|
|
1276
|
-
a.setHeader("Content-Type", t), a.setHeader("Content-Length", e.size),
|
|
1192
|
+
let t = Lt[i(d).slice(1).toLowerCase()] ?? "application/octet-stream";
|
|
1193
|
+
a.setHeader("Content-Type", t), a.setHeader("Content-Length", e.size), ge(d).pipe(a);
|
|
1277
1194
|
return;
|
|
1278
1195
|
}
|
|
1279
1196
|
} catch {}
|
|
@@ -1282,183 +1199,187 @@ function Nt(e, t) {
|
|
|
1282
1199
|
}
|
|
1283
1200
|
//#endregion
|
|
1284
1201
|
//#region src/node/plugin/vite/middleware/virtual-html.ts
|
|
1285
|
-
function
|
|
1202
|
+
function zt(e, t, r) {
|
|
1286
1203
|
return (i, a, o) => {
|
|
1287
1204
|
if (!i.url) return o();
|
|
1288
|
-
let
|
|
1289
|
-
if (
|
|
1290
|
-
let u =
|
|
1291
|
-
if (u.startsWith("/@") || u.startsWith("/node_modules") ||
|
|
1205
|
+
let s = l(n(i.url)), c = l(r.basePath);
|
|
1206
|
+
if (s.startsWith("/@") || s.startsWith("/node_modules") || !s.startsWith(c)) return o();
|
|
1207
|
+
let u = s.slice(c.length);
|
|
1208
|
+
if (u.startsWith("/@") || u.startsWith("/node_modules") || s.includes(".") && !s.endsWith("/index.html")) return o();
|
|
1292
1209
|
t.getConfig().then(async (t) => {
|
|
1293
|
-
let
|
|
1294
|
-
a.setHeader("Content-Type", "text/html"), a.end(
|
|
1210
|
+
let n = await e.transformIndexHtml(i.url ?? "", Bt(r, t));
|
|
1211
|
+
a.setHeader("Content-Type", "text/html"), a.end(n);
|
|
1295
1212
|
}).catch(() => o());
|
|
1296
1213
|
};
|
|
1297
1214
|
}
|
|
1298
|
-
function
|
|
1299
|
-
return e.devHtml === void 0 && (e.devHtml =
|
|
1215
|
+
function Bt(e, t) {
|
|
1216
|
+
return e.devHtml === void 0 && (e.devHtml = O({
|
|
1300
1217
|
title: t.siteTitle,
|
|
1301
1218
|
description: t.siteDescription,
|
|
1302
1219
|
base: "/",
|
|
1303
|
-
entryScript:
|
|
1220
|
+
entryScript: _t
|
|
1304
1221
|
})), e.devHtml;
|
|
1305
1222
|
}
|
|
1306
1223
|
//#endregion
|
|
1307
1224
|
//#region src/node/plugin/vite/index.ts
|
|
1308
|
-
function $(
|
|
1309
|
-
let
|
|
1225
|
+
function $(e = {}) {
|
|
1226
|
+
let t = e.context, n, r, i, a = new xt(), o = new St(), c = new Tt(), l = new Pt(), d = {
|
|
1310
1227
|
devHtml: void 0,
|
|
1311
1228
|
basePath: "/",
|
|
1312
1229
|
rootDirectory: "vault"
|
|
1313
1230
|
};
|
|
1314
|
-
function
|
|
1315
|
-
if (
|
|
1316
|
-
return
|
|
1231
|
+
function p() {
|
|
1232
|
+
if (t === void 0) throw Error("typedown plugin not initialized");
|
|
1233
|
+
return t.getTdContext();
|
|
1317
1234
|
}
|
|
1318
1235
|
return [
|
|
1319
1236
|
{
|
|
1320
1237
|
name: "vite-plugin-typedown",
|
|
1321
1238
|
enforce: "pre",
|
|
1322
|
-
async config(
|
|
1323
|
-
|
|
1324
|
-
|
|
1239
|
+
async config(n) {
|
|
1240
|
+
if (!t) {
|
|
1241
|
+
let r = e.root ? A(n.root ?? process.cwd(), e.root) : ae(n.root ?? process.cwd());
|
|
1242
|
+
t = ie(r);
|
|
1243
|
+
}
|
|
1244
|
+
i = n.base ?? "/";
|
|
1245
|
+
let r = await (await p()).getConfig();
|
|
1325
1246
|
return {
|
|
1326
|
-
base:
|
|
1327
|
-
publicDir:
|
|
1247
|
+
base: n.base ?? r.basePath,
|
|
1248
|
+
publicDir: r.publicDir,
|
|
1328
1249
|
server: {
|
|
1329
|
-
port:
|
|
1330
|
-
strictPort:
|
|
1250
|
+
port: n.server?.port ?? 8686,
|
|
1251
|
+
strictPort: n.server?.strictPort ?? !1
|
|
1331
1252
|
},
|
|
1332
|
-
resolve: { alias:
|
|
1253
|
+
resolve: { alias: It() },
|
|
1333
1254
|
ssr: { noExternal: ["typerighter"] }
|
|
1334
1255
|
};
|
|
1335
1256
|
},
|
|
1336
1257
|
configResolved(e) {
|
|
1337
|
-
|
|
1258
|
+
r = A(e.root, e.build.outDir);
|
|
1338
1259
|
},
|
|
1339
1260
|
async buildStart() {
|
|
1340
|
-
if (
|
|
1341
|
-
let e = await
|
|
1342
|
-
|
|
1343
|
-
let
|
|
1344
|
-
if (
|
|
1345
|
-
let e =
|
|
1346
|
-
this.error(`Vault check failed with ${
|
|
1261
|
+
if (n) return;
|
|
1262
|
+
let e = await p(), t = await e.getConfig(), r = A(t.rootDir);
|
|
1263
|
+
l.index(r), await c.fetchSync(e);
|
|
1264
|
+
let i = await e.checkVault();
|
|
1265
|
+
if (Gt(i.diagnostics), 0 < i.errorCount) {
|
|
1266
|
+
let e = i.diagnostics.filter((e) => e.severity === "error").map((e) => ` ${e.filepath}:${e.line}:${e.column} - ${e.message} (${e.code})`);
|
|
1267
|
+
this.error(`Vault check failed with ${i.errorCount} error(s):\n${e.join("\n")}`);
|
|
1347
1268
|
}
|
|
1348
1269
|
},
|
|
1349
1270
|
resolveId(e) {
|
|
1350
1271
|
if (e === "/@typedown/app" || e === "@typedown/app") return G;
|
|
1351
1272
|
if (e === "@typedown/pages") return q;
|
|
1352
|
-
if (e.startsWith("@typedown/pages?resource=")) return
|
|
1353
|
-
if (e === "@typedown/site-data") return
|
|
1354
|
-
if (e === "@typedown/search-index") return
|
|
1273
|
+
if (e.startsWith("@typedown/pages?resource=")) return o.resolvePageData(e);
|
|
1274
|
+
if (e === "@typedown/site-data") return vt;
|
|
1275
|
+
if (e === "@typedown/search-index") return yt;
|
|
1355
1276
|
},
|
|
1356
1277
|
async load(e) {
|
|
1357
|
-
if (
|
|
1278
|
+
if (o.isPageDataModule(e)) return o.loadPageData(e, await p());
|
|
1358
1279
|
if (e !== "\0@typedown/search-index" && e !== "\0@typedown/site-data" && e !== "\0@typedown/pages" && e !== "\0@typedown/app") return;
|
|
1359
|
-
let t = await
|
|
1360
|
-
if (e === "\0@typedown/search-index") return
|
|
1361
|
-
if (e === "\0@typedown/site-data") return
|
|
1362
|
-
if (e === "\0@typedown/pages") return
|
|
1363
|
-
if (e === "\0@typedown/app") return
|
|
1280
|
+
let t = await p();
|
|
1281
|
+
if (e === "\0@typedown/search-index") return l.load(t);
|
|
1282
|
+
if (e === "\0@typedown/site-data") return c.load(t);
|
|
1283
|
+
if (e === "\0@typedown/pages") return o.load(t);
|
|
1284
|
+
if (e === "\0@typedown/app") return a.load(t);
|
|
1364
1285
|
},
|
|
1365
1286
|
async configureServer(e) {
|
|
1366
|
-
|
|
1367
|
-
let t = await
|
|
1368
|
-
|
|
1287
|
+
n = e;
|
|
1288
|
+
let t = await p(), r = await t.getConfig(), i = A(r.rootDir);
|
|
1289
|
+
l.index(i), c.scan(i), c.fetch(t, n), e.httpServer?.once("listening", async () => {
|
|
1369
1290
|
let e = await t.checkVault();
|
|
1370
|
-
0 < e.diagnostics.length && (console.error(""),
|
|
1291
|
+
0 < e.diagnostics.length && (console.error(""), Gt(e.diagnostics));
|
|
1371
1292
|
}), t.rpc.onConfigChanged(() => {
|
|
1372
|
-
|
|
1293
|
+
n && (d.devHtml = void 0, c.clear(), a.invalidate(n), o.invalidate(n), Ht(n), c.fetch(t, n));
|
|
1373
1294
|
});
|
|
1374
|
-
function
|
|
1375
|
-
|
|
1376
|
-
if (!
|
|
1377
|
-
let
|
|
1378
|
-
for (let
|
|
1379
|
-
let e =
|
|
1295
|
+
function s(...e) {
|
|
1296
|
+
n && t.getConfig().then((t) => {
|
|
1297
|
+
if (!n) return;
|
|
1298
|
+
let r = [];
|
|
1299
|
+
for (let i of e) {
|
|
1300
|
+
let e = le(A(n.config.root, t.rootDir, i)), a = n.moduleGraph.getModulesByFile(e);
|
|
1380
1301
|
if (a?.size) {
|
|
1381
|
-
for (let e of a)
|
|
1382
|
-
|
|
1302
|
+
for (let e of a) n.moduleGraph.invalidateModule(e), r.push(Wt(e));
|
|
1303
|
+
o.invalidatePageData(n, i);
|
|
1383
1304
|
}
|
|
1384
1305
|
}
|
|
1385
|
-
0 <
|
|
1306
|
+
0 < r.length && n.hot.send({
|
|
1386
1307
|
type: "update",
|
|
1387
|
-
updates:
|
|
1308
|
+
updates: r
|
|
1388
1309
|
});
|
|
1389
1310
|
}).catch(() => {});
|
|
1390
1311
|
}
|
|
1391
|
-
t.rpc.onContentUpdated(({ filepath: e, affectedFiles:
|
|
1392
|
-
|
|
1312
|
+
t.rpc.onContentUpdated(({ filepath: e, affectedFiles: r = [] }) => {
|
|
1313
|
+
n && (l.index(i), l.invalidate(n), o.invalidate(n), c.clear(), c.fetch(t, n), s(e, ...r));
|
|
1393
1314
|
}), t.rpc.onContentDeleted(({ filepath: e }) => {
|
|
1394
|
-
|
|
1315
|
+
n && (l.index(i), l.invalidate(n), o.invalidate(n), c.clear(), c.fetch(t, n), s(e));
|
|
1395
1316
|
});
|
|
1396
|
-
function
|
|
1397
|
-
|
|
1317
|
+
function u() {
|
|
1318
|
+
n && (c.clear(), Ut(n), c.fetch(t, n));
|
|
1398
1319
|
}
|
|
1399
|
-
t.rpc.onSchemaUpdated(
|
|
1400
|
-
let
|
|
1401
|
-
d.basePath =
|
|
1320
|
+
t.rpc.onSchemaUpdated(u), t.rpc.onSchemaDeleted(u);
|
|
1321
|
+
let f = await t.getConfig();
|
|
1322
|
+
d.basePath = f.basePath, d.rootDirectory = f.rootDir, t.rpc.onConfigChanged((e) => {
|
|
1402
1323
|
d.basePath = e.basePath, d.rootDirectory = e.rootDir, d.devHtml = void 0;
|
|
1403
|
-
}), e.middlewares.use(
|
|
1324
|
+
}), e.middlewares.use(Rt(e, d)), e.middlewares.use(zt(e, t, d));
|
|
1404
1325
|
},
|
|
1405
|
-
async transform(
|
|
1406
|
-
let
|
|
1407
|
-
if (!
|
|
1408
|
-
if (
|
|
1326
|
+
async transform(e, t) {
|
|
1327
|
+
let n = t.split("?")[0];
|
|
1328
|
+
if (!s(n)) return;
|
|
1329
|
+
if (u(n)) return {
|
|
1409
1330
|
code: "<script>import { TdNotFound } from 'typerighter/client/theme-default'; export default TdNotFound; export const pageData = { frontmatter: {}, headings: [], title: '' };<\/script>",
|
|
1410
1331
|
map: null
|
|
1411
1332
|
};
|
|
1412
|
-
let
|
|
1333
|
+
let r = await p(), i = await r.getConfig(), a = f(n, i.rootDir);
|
|
1413
1334
|
try {
|
|
1414
|
-
let { vueSrc: e } = await
|
|
1335
|
+
let { vueSrc: e } = await mt(r, await r.getFile(a), a);
|
|
1415
1336
|
return {
|
|
1416
1337
|
code: e,
|
|
1417
1338
|
map: null
|
|
1418
1339
|
};
|
|
1419
1340
|
} catch (e) {
|
|
1420
|
-
if (
|
|
1341
|
+
if (re(e)) return;
|
|
1421
1342
|
let t = e instanceof Error ? e.message : String(e);
|
|
1422
|
-
this.error(`[typedown] Failed to transform ${
|
|
1343
|
+
this.error(`[typedown] Failed to transform ${a}: ${t}`);
|
|
1423
1344
|
}
|
|
1424
1345
|
},
|
|
1425
|
-
handleHotUpdate({ file:
|
|
1426
|
-
if (e
|
|
1346
|
+
handleHotUpdate({ file: e }) {
|
|
1347
|
+
if (s(e)) return [];
|
|
1427
1348
|
},
|
|
1428
1349
|
async closeBundle() {
|
|
1429
|
-
if (!
|
|
1430
|
-
let e = (await (await
|
|
1431
|
-
await
|
|
1432
|
-
outDir:
|
|
1350
|
+
if (!e.context && t) try {
|
|
1351
|
+
let e = (await (await t.getTdContext()).getConfig()).basePath, n = e.startsWith(i) ? e.slice(i.length) : e.replace(/^\//, "");
|
|
1352
|
+
await L(t, {
|
|
1353
|
+
outDir: A(r, n),
|
|
1433
1354
|
base: e
|
|
1434
1355
|
});
|
|
1435
1356
|
} finally {
|
|
1436
|
-
|
|
1357
|
+
t.dispose();
|
|
1437
1358
|
}
|
|
1438
1359
|
}
|
|
1439
1360
|
},
|
|
1440
|
-
|
|
1441
|
-
include:
|
|
1361
|
+
ce({
|
|
1362
|
+
include: e.root ? RegExp(`${e.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
|
|
1442
1363
|
template: { transformAssetUrls: !1 }
|
|
1443
1364
|
}),
|
|
1444
|
-
...
|
|
1365
|
+
...se()
|
|
1445
1366
|
];
|
|
1446
1367
|
}
|
|
1447
|
-
function
|
|
1368
|
+
function Vt(e) {
|
|
1448
1369
|
return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
|
|
1449
1370
|
}
|
|
1450
|
-
function
|
|
1451
|
-
for (let t of
|
|
1371
|
+
function Ht(e) {
|
|
1372
|
+
for (let t of Vt(e)) e.moduleGraph.invalidateModule(t);
|
|
1452
1373
|
e.hot.send({ type: "full-reload" });
|
|
1453
1374
|
}
|
|
1454
|
-
function
|
|
1455
|
-
let t =
|
|
1375
|
+
function Ut(e) {
|
|
1376
|
+
let t = Vt(e).map((t) => (e.moduleGraph.invalidateModule(t), Wt(t)));
|
|
1456
1377
|
0 < t.length && e.hot.send({
|
|
1457
1378
|
type: "update",
|
|
1458
1379
|
updates: t
|
|
1459
1380
|
});
|
|
1460
1381
|
}
|
|
1461
|
-
function
|
|
1382
|
+
function Wt(e) {
|
|
1462
1383
|
return {
|
|
1463
1384
|
type: "js-update",
|
|
1464
1385
|
path: e.url,
|
|
@@ -1466,11 +1387,11 @@ function zt(e) {
|
|
|
1466
1387
|
timestamp: Date.now()
|
|
1467
1388
|
};
|
|
1468
1389
|
}
|
|
1469
|
-
function
|
|
1390
|
+
function Gt(e) {
|
|
1470
1391
|
for (let t of e) {
|
|
1471
|
-
let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ?
|
|
1472
|
-
console.error(` ${n} ${e} ${t.message} ${
|
|
1392
|
+
let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? j.red("error") : j.yellow("warn");
|
|
1393
|
+
console.error(` ${n} ${e} ${t.message} ${j.dim(`(${t.code})`)}`);
|
|
1473
1394
|
}
|
|
1474
1395
|
}
|
|
1475
1396
|
//#endregion
|
|
1476
|
-
export {
|
|
1397
|
+
export { Q as n, L as r, $ as t };
|