typerighter 0.39.0 → 0.40.2
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-N-phWAP_.js → app-GI_8rzn8.js} +69 -68
- package/dist/{cli-DVQB43sa.js → cli-CNSEVT0i.js} +5 -5
- 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/index.js +2 -2
- package/dist/{init-pLTVuBAf.js → init-BplW2rUB.js} +7 -4
- package/dist/jsonld-Dxk0xvAr.js +84 -0
- package/dist/node/build/index.d.ts.map +1 -1
- package/dist/node/build/prerender.d.ts +9 -0
- package/dist/node/build/prerender.d.ts.map +1 -1
- 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/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/plugin/vite/virtual/app.d.ts +2 -0
- package/dist/node/plugin/vite/virtual/app.d.ts.map +1 -1
- package/dist/prerenderWorker.js +32 -20
- 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-Lh4FwI36.js → shared-LPNgvigl.js} +47 -41
- package/dist/shared.js +2 -2
- package/dist/{vite-XB1qqgp7.js → vite-D6x3T--t.js} +462 -391
- package/dist/vite.js +1 -1
- package/package.json +7 -7
- package/dist/html-template-S2xsTyW5.js +0 -42
- package/dist/node/lib/html-template.d.ts +0 -22
- package/dist/node/lib/html-template.d.ts.map +0 -1
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { a as
|
|
5
|
-
import { t as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import { build as
|
|
11
|
-
import
|
|
12
|
-
import { fileURLToPath as
|
|
13
|
-
import
|
|
14
|
-
import { Worker as
|
|
15
|
-
import { createHighlighter as
|
|
16
|
-
import { createReadStream as
|
|
17
|
-
import { createRequire as
|
|
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-Dxk0xvAr.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
18
|
//#region src/node/lib/worker-pool/index.ts
|
|
19
|
-
var
|
|
19
|
+
var xe = class {
|
|
20
20
|
workers = [];
|
|
21
21
|
queue = [];
|
|
22
22
|
destroyed = !1;
|
|
23
23
|
startupError;
|
|
24
24
|
constructor(e) {
|
|
25
|
-
let t = e.concurrency ?? Math.max(1, Math.floor(
|
|
25
|
+
let t = e.concurrency ?? Math.max(1, Math.floor(de.cpus().length / 2));
|
|
26
26
|
for (let n = 0; n < t; n++) {
|
|
27
|
-
let t = new
|
|
27
|
+
let t = new fe(e.filename, { workerData: e.workerData }), n = { worker: t };
|
|
28
28
|
this.workers.push(n), t.on("message", (e) => {
|
|
29
29
|
let t = n.pending;
|
|
30
30
|
n.pending = void 0, e.error === void 0 ? t?.resolve(e.result) : t?.reject(Error(e.error)), this.dispatch(n);
|
|
@@ -59,52 +59,115 @@ var _e = class {
|
|
|
59
59
|
destroyAll(e) {
|
|
60
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
61
|
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/node/build/prerender.ts
|
|
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"),
|
|
70
119
|
workerData: {
|
|
71
120
|
ssrEntryPath: e.ssrEntryPath,
|
|
72
121
|
base: e.base,
|
|
122
|
+
origin: e.origin,
|
|
123
|
+
lang: e.lang,
|
|
73
124
|
siteTitle: e.siteTitle,
|
|
125
|
+
author: e.author,
|
|
74
126
|
clientEntry: t,
|
|
75
127
|
headExtra: n
|
|
76
128
|
}
|
|
77
129
|
}), i = 0, a = e.pagePaths.length;
|
|
78
130
|
try {
|
|
79
131
|
await Promise.all(e.pagePaths.map(async (t) => {
|
|
80
|
-
let n = await r.run(t), o =
|
|
81
|
-
await
|
|
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);
|
|
82
134
|
}));
|
|
83
135
|
} finally {
|
|
84
136
|
await r.destroy();
|
|
85
137
|
}
|
|
86
138
|
}
|
|
87
|
-
async function
|
|
139
|
+
async function Oe(e, t, n) {
|
|
88
140
|
let r = await import(e.ssrEntryPath), i = e.pagePaths.length, a = 0;
|
|
89
141
|
for (let o = 0; o < i; o += 32) {
|
|
90
142
|
let s = e.pagePaths.slice(o, o + 32);
|
|
91
143
|
await Promise.all(s.map(async (o) => {
|
|
92
|
-
let s = await r.render(o), c =
|
|
93
|
-
title:
|
|
94
|
-
description:
|
|
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,
|
|
95
153
|
siteTitle: e.siteTitle,
|
|
154
|
+
author: e.author,
|
|
96
155
|
base: e.base,
|
|
156
|
+
origin: e.origin,
|
|
157
|
+
lang: e.lang,
|
|
97
158
|
entryScript: t,
|
|
98
|
-
canonicalUrl:
|
|
159
|
+
canonicalUrl: f,
|
|
160
|
+
ogImagePath: w(s.pageData),
|
|
161
|
+
jsonLdBlocks: p,
|
|
99
162
|
headExtra: n,
|
|
100
163
|
appContent: s.html
|
|
101
|
-
}),
|
|
102
|
-
await
|
|
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);
|
|
103
166
|
}));
|
|
104
167
|
}
|
|
105
168
|
}
|
|
106
|
-
async function
|
|
107
|
-
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 = [];
|
|
108
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);
|
|
109
172
|
return {
|
|
110
173
|
clientEntry: i,
|
|
@@ -114,12 +177,12 @@ async function Se(e) {
|
|
|
114
177
|
}
|
|
115
178
|
//#endregion
|
|
116
179
|
//#region src/node/lib/progress.ts
|
|
117
|
-
var
|
|
180
|
+
var F = [
|
|
118
181
|
"◐",
|
|
119
182
|
"◓",
|
|
120
183
|
"◑",
|
|
121
184
|
"◒"
|
|
122
|
-
],
|
|
185
|
+
], I = class {
|
|
123
186
|
logger;
|
|
124
187
|
label;
|
|
125
188
|
start;
|
|
@@ -127,8 +190,8 @@ var j = [
|
|
|
127
190
|
constructor(e, t) {
|
|
128
191
|
if (this.logger = e, this.label = t, this.start = performance.now(), process.stdout.isTTY) {
|
|
129
192
|
let e = 0;
|
|
130
|
-
process.stdout.write(
|
|
131
|
-
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}`)}`);
|
|
132
195
|
}, 120).unref();
|
|
133
196
|
} else this.logger.start(t);
|
|
134
197
|
}
|
|
@@ -140,138 +203,150 @@ var j = [
|
|
|
140
203
|
done(e) {
|
|
141
204
|
this.stopSpinner(), process.stdout.isTTY && process.stdout.write("\r\x1B[K");
|
|
142
205
|
let t = Math.round(performance.now() - this.start);
|
|
143
|
-
this.logger.success(`${e} (${
|
|
206
|
+
this.logger.success(`${e} (${Ae(t)})`);
|
|
144
207
|
}
|
|
145
208
|
stopSpinner() {
|
|
146
209
|
this.spinnerInterval &&= (clearInterval(this.spinnerInterval), void 0);
|
|
147
210
|
}
|
|
148
211
|
};
|
|
149
|
-
function
|
|
212
|
+
function Ae(e) {
|
|
150
213
|
return e < 1e3 ? `${Math.round(e)}ms` : `${(e / 1e3).toFixed(1)}s`;
|
|
151
214
|
}
|
|
152
215
|
//#endregion
|
|
153
216
|
//#region src/node/build/index.ts
|
|
154
|
-
var
|
|
155
|
-
async function
|
|
156
|
-
let { root:
|
|
157
|
-
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, {
|
|
158
221
|
recursive: !0,
|
|
159
222
|
force: !0
|
|
160
223
|
});
|
|
161
|
-
let c = await
|
|
224
|
+
let c = await t.getTdContext(), [l, u, d, f] = await Promise.all([
|
|
162
225
|
c.getConfig(),
|
|
163
226
|
c.listFiles(),
|
|
164
227
|
c.listSidebar(),
|
|
165
228
|
c.listSchemas()
|
|
166
|
-
]), 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) => ({
|
|
167
230
|
...e,
|
|
168
231
|
header: {}
|
|
169
|
-
})),
|
|
232
|
+
})), x = b(y), S = JSON.stringify({
|
|
170
233
|
title: l.siteTitle,
|
|
171
234
|
description: l.siteDescription,
|
|
172
|
-
basePath:
|
|
235
|
+
basePath: v,
|
|
236
|
+
origin: p,
|
|
237
|
+
lang: l.lang,
|
|
173
238
|
nav: l.nav
|
|
174
|
-
}),
|
|
239
|
+
}), C = JSON.stringify({
|
|
175
240
|
ready: !0,
|
|
176
|
-
contentTree:
|
|
177
|
-
}),
|
|
178
|
-
await
|
|
179
|
-
let
|
|
180
|
-
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({
|
|
181
246
|
rootDir: l.rootDir,
|
|
182
|
-
basePath:
|
|
247
|
+
basePath: v,
|
|
248
|
+
origin: p,
|
|
249
|
+
lang: l.lang,
|
|
183
250
|
siteTitle: l.siteTitle,
|
|
184
251
|
siteDescription: l.siteDescription,
|
|
185
|
-
repo:
|
|
186
|
-
author:
|
|
187
|
-
license:
|
|
252
|
+
repo: g,
|
|
253
|
+
author: m,
|
|
254
|
+
license: h,
|
|
188
255
|
nav: l.nav
|
|
189
|
-
})),
|
|
256
|
+
})), N.writeFile(E, Me({
|
|
190
257
|
rootDir: l.rootDir,
|
|
191
|
-
layoutImport:
|
|
192
|
-
siteConfig:
|
|
193
|
-
siteData:
|
|
258
|
+
layoutImport: je,
|
|
259
|
+
siteConfig: S,
|
|
260
|
+
siteData: C
|
|
194
261
|
}))]);
|
|
195
262
|
try {
|
|
196
|
-
let c =
|
|
197
|
-
await
|
|
198
|
-
...
|
|
199
|
-
root:
|
|
200
|
-
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,
|
|
201
268
|
plugins: c,
|
|
202
|
-
customLogger:
|
|
269
|
+
customLogger: f,
|
|
203
270
|
logLevel: "silent",
|
|
204
271
|
build: {
|
|
205
|
-
...
|
|
272
|
+
...n.viteConfig?.build,
|
|
206
273
|
outDir: o,
|
|
207
274
|
manifest: !0,
|
|
208
275
|
emptyOutDir: !0,
|
|
209
276
|
rollupOptions: {
|
|
210
|
-
...
|
|
211
|
-
input:
|
|
277
|
+
...n.viteConfig?.build?.rollupOptions,
|
|
278
|
+
input: T
|
|
212
279
|
}
|
|
213
280
|
}
|
|
214
281
|
});
|
|
215
|
-
let
|
|
216
|
-
|
|
217
|
-
let
|
|
218
|
-
await
|
|
219
|
-
...
|
|
220
|
-
root:
|
|
221
|
-
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,
|
|
222
289
|
plugins: c,
|
|
223
|
-
customLogger:
|
|
290
|
+
customLogger: f,
|
|
224
291
|
logLevel: "silent",
|
|
225
292
|
build: {
|
|
226
|
-
...
|
|
293
|
+
...n.viteConfig?.build,
|
|
227
294
|
outDir: s,
|
|
228
|
-
ssr:
|
|
295
|
+
ssr: E,
|
|
229
296
|
emptyOutDir: !0
|
|
230
297
|
}
|
|
231
|
-
}),
|
|
232
|
-
let
|
|
233
|
-
let
|
|
234
|
-
return
|
|
298
|
+
}), _.done("SSR bundle");
|
|
299
|
+
let y = u.map((t) => {
|
|
300
|
+
let n = e(t);
|
|
301
|
+
return n === "index" ? "/" : `/${n}`;
|
|
235
302
|
});
|
|
236
|
-
|
|
237
|
-
let
|
|
238
|
-
await
|
|
239
|
-
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"),
|
|
240
307
|
clientOutDir: o,
|
|
241
|
-
outDir:
|
|
242
|
-
base:
|
|
243
|
-
|
|
308
|
+
outDir: a,
|
|
309
|
+
base: v,
|
|
310
|
+
origin: p,
|
|
311
|
+
lang: l.lang,
|
|
312
|
+
pagePaths: y,
|
|
244
313
|
siteTitle: l.siteTitle,
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
let
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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(() => {});
|
|
253
328
|
} finally {
|
|
254
329
|
await Promise.all([
|
|
255
|
-
|
|
330
|
+
N.rm(w, {
|
|
256
331
|
recursive: !0,
|
|
257
332
|
force: !0
|
|
258
333
|
}),
|
|
259
|
-
|
|
334
|
+
N.rm(o, {
|
|
260
335
|
recursive: !0,
|
|
261
336
|
force: !0
|
|
262
337
|
}),
|
|
263
|
-
|
|
338
|
+
N.rm(s, {
|
|
264
339
|
recursive: !0,
|
|
265
340
|
force: !0
|
|
266
341
|
})
|
|
267
342
|
]);
|
|
268
343
|
}
|
|
269
|
-
|
|
344
|
+
i.log(`\nBuild complete. Output: ${a}`);
|
|
270
345
|
}
|
|
271
|
-
function
|
|
272
|
-
let t = `/${e.rootDir}/${
|
|
273
|
-
...
|
|
274
|
-
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
|
|
275
350
|
});
|
|
276
351
|
return `
|
|
277
352
|
import { createTypedownApp } from 'typerighter/client';
|
|
@@ -282,8 +357,8 @@ import { h } from 'vue';
|
|
|
282
357
|
import theme from '${e.layoutImport}';
|
|
283
358
|
|
|
284
359
|
const pages = import.meta.glob('${t}', { eager: true });
|
|
285
|
-
const contentExts = ${JSON.stringify(
|
|
286
|
-
const siteData = ${
|
|
360
|
+
const contentExts = ${JSON.stringify(r)};
|
|
361
|
+
const siteData = ${c};
|
|
287
362
|
|
|
288
363
|
function findPage(base) {
|
|
289
364
|
for (const ext of contentExts) {
|
|
@@ -317,39 +392,32 @@ export async function render(url) {
|
|
|
317
392
|
}
|
|
318
393
|
`;
|
|
319
394
|
}
|
|
320
|
-
async function
|
|
321
|
-
let
|
|
395
|
+
async function Ne(e, t) {
|
|
396
|
+
let n = (await N.readdir(e, {
|
|
322
397
|
recursive: !0,
|
|
323
398
|
withFileTypes: !0
|
|
324
|
-
})).filter((
|
|
325
|
-
let r =
|
|
326
|
-
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));
|
|
327
402
|
});
|
|
328
|
-
await Promise.all(
|
|
329
|
-
}
|
|
330
|
-
function De(e, t) {
|
|
331
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
332
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
333
|
-
${e.map((e) => ` <url><loc>${g(t + e.replace(/^\//, ""))}</loc></url>`).join("\n")}
|
|
334
|
-
</urlset>
|
|
335
|
-
`;
|
|
403
|
+
await Promise.all(n);
|
|
336
404
|
}
|
|
337
|
-
function
|
|
338
|
-
for (let
|
|
339
|
-
if (
|
|
340
|
-
let e = `${
|
|
341
|
-
|
|
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);
|
|
342
410
|
}
|
|
343
411
|
}
|
|
344
412
|
//#endregion
|
|
345
413
|
//#region ../../node_modules/.pnpm/@shikijs+transformers@4.4.3/node_modules/@shikijs/transformers/dist/index.mjs
|
|
346
|
-
var
|
|
414
|
+
var Pe = /(\s+\/\/)/, Fe = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ie = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, Le = [
|
|
347
415
|
[/^(<!--)(.+)(-->)$/, !1],
|
|
348
416
|
[/^(\/\*)(.+)(\*\/)$/, !1],
|
|
349
417
|
[/^(\/\/|["'#]|;{1,2}|%{1,2}|--)(.*)$/, !0],
|
|
350
418
|
[/^(\*)(.+)$/, !0]
|
|
351
419
|
];
|
|
352
|
-
function
|
|
420
|
+
function Re(e, t, n) {
|
|
353
421
|
let r = [];
|
|
354
422
|
for (let i of e) {
|
|
355
423
|
if (n === "v3") {
|
|
@@ -358,8 +426,8 @@ function Me(e, t, n) {
|
|
|
358
426
|
let n = e.children[0];
|
|
359
427
|
if (n.type !== "text") return e;
|
|
360
428
|
let r = t === i.children.length - 1;
|
|
361
|
-
if (!
|
|
362
|
-
let a = n.value.split(
|
|
429
|
+
if (!z(n.value, r)) return e;
|
|
430
|
+
let a = n.value.split(Pe);
|
|
363
431
|
if (a.length <= 1) return e;
|
|
364
432
|
let o = [a[0]];
|
|
365
433
|
for (let e = 1; e < a.length; e += 2) o.push(a[e] + (a[e + 1] || ""));
|
|
@@ -380,13 +448,13 @@ function Me(e, t, n) {
|
|
|
380
448
|
if (a.type !== "element") continue;
|
|
381
449
|
let o = a.children.at(0);
|
|
382
450
|
if (o?.type !== "text") continue;
|
|
383
|
-
let s = n === e.length - 1, c =
|
|
451
|
+
let s = n === e.length - 1, c = z(o.value, s), l;
|
|
384
452
|
if (!c && n > 0 && o.value.trim().startsWith("[!code")) {
|
|
385
453
|
let t = e[n - 1];
|
|
386
454
|
if (t?.type === "element") {
|
|
387
455
|
let n = t.children.at(0);
|
|
388
456
|
if (n?.type === "text" && n.value.includes("//")) {
|
|
389
|
-
let l =
|
|
457
|
+
let l = z(n.value + o.value, s);
|
|
390
458
|
if (l) {
|
|
391
459
|
c = l, r.push({
|
|
392
460
|
info: l,
|
|
@@ -403,7 +471,7 @@ function Me(e, t, n) {
|
|
|
403
471
|
}
|
|
404
472
|
if (c) {
|
|
405
473
|
if (t && !s && n !== 0) {
|
|
406
|
-
let t =
|
|
474
|
+
let t = ze(e[n - 1], "{") && ze(e[n + 1], "}");
|
|
407
475
|
r.push({
|
|
408
476
|
info: c,
|
|
409
477
|
line: i,
|
|
@@ -425,16 +493,16 @@ function Me(e, t, n) {
|
|
|
425
493
|
}
|
|
426
494
|
return r;
|
|
427
495
|
}
|
|
428
|
-
function
|
|
496
|
+
function ze(e, t) {
|
|
429
497
|
if (e.type !== "element") return !1;
|
|
430
498
|
let n = e.children[0];
|
|
431
499
|
return n.type === "text" && n.value.trim() === t;
|
|
432
500
|
}
|
|
433
|
-
function
|
|
501
|
+
function z(e, t) {
|
|
434
502
|
let n = e.trimStart(), r = e.length - n.length;
|
|
435
503
|
n = n.trimEnd();
|
|
436
504
|
let i = e.length - n.length - r;
|
|
437
|
-
for (let [e, a] of
|
|
505
|
+
for (let [e, a] of Le) {
|
|
438
506
|
if (a && !t) continue;
|
|
439
507
|
let o = e.exec(n);
|
|
440
508
|
if (o) return [
|
|
@@ -444,22 +512,22 @@ function I(e, t) {
|
|
|
444
512
|
];
|
|
445
513
|
}
|
|
446
514
|
}
|
|
447
|
-
function
|
|
448
|
-
let t = e.match(
|
|
515
|
+
function Be(e) {
|
|
516
|
+
let t = e.match(Fe);
|
|
449
517
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
|
|
450
518
|
}
|
|
451
|
-
function
|
|
452
|
-
let t = e.match(
|
|
519
|
+
function Ve(e) {
|
|
520
|
+
let t = e.match(Ie);
|
|
453
521
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index).trimEnd() : e;
|
|
454
522
|
}
|
|
455
|
-
function
|
|
523
|
+
function He(e, t, n, r) {
|
|
456
524
|
return r ??= "v3", {
|
|
457
525
|
name: e,
|
|
458
526
|
code(e) {
|
|
459
527
|
let i = e.children.filter((e) => e.type === "element"), a = [];
|
|
460
528
|
e.data ??= {};
|
|
461
529
|
let o = e.data;
|
|
462
|
-
o._shiki_notation ??=
|
|
530
|
+
o._shiki_notation ??= Re(i, ["jsx", "tsx"].includes(this.options.lang), r);
|
|
463
531
|
let s = o._shiki_notation;
|
|
464
532
|
for (let e of s) {
|
|
465
533
|
if (e.info[1].length === 0) continue;
|
|
@@ -467,7 +535,7 @@ function Fe(e, t, n, r) {
|
|
|
467
535
|
e.isLineCommentOnly && r !== "v1" && o++;
|
|
468
536
|
let s = !1;
|
|
469
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;
|
|
470
|
-
r === "v1" ? e.info[1] =
|
|
538
|
+
r === "v1" ? e.info[1] = Be(e.info[1]) : r === "v3" && (e.info[1] = Ve(e.info[1]));
|
|
471
539
|
let c = e.info[1].trim().length === 0;
|
|
472
540
|
if (c && (e.info[1] = ""), c && e.isLineCommentOnly) a.push(e.line);
|
|
473
541
|
else if (c && e.isJsxStyle) e.line.children.splice(e.line.children.indexOf(e.token) - 1, 3);
|
|
@@ -492,44 +560,44 @@ function Fe(e, t, n, r) {
|
|
|
492
560
|
}
|
|
493
561
|
};
|
|
494
562
|
}
|
|
495
|
-
var
|
|
496
|
-
function
|
|
563
|
+
var Ue = /\{([\d,-]+)\}/;
|
|
564
|
+
function We(e) {
|
|
497
565
|
if (!e) return null;
|
|
498
|
-
let t = e.match(
|
|
566
|
+
let t = e.match(Ue);
|
|
499
567
|
return t ? t[1].split(",").flatMap((e) => {
|
|
500
568
|
let t = e.split("-").map((e) => Number.parseInt(e, 10));
|
|
501
569
|
return t.length === 1 ? [t[0]] : Array.from({ length: t[1] - t[0] + 1 }, (e, n) => t[0] + n);
|
|
502
570
|
}) : null;
|
|
503
571
|
}
|
|
504
|
-
var
|
|
505
|
-
function
|
|
572
|
+
var Ge = Symbol("highlighted-lines");
|
|
573
|
+
function Ke(e = {}) {
|
|
506
574
|
let { className: t = "highlighted", zeroIndexed: n = !1 } = e;
|
|
507
575
|
return {
|
|
508
576
|
name: "@shikijs/transformers:meta-highlight",
|
|
509
577
|
line(e, r) {
|
|
510
578
|
if (!this.options.meta?.__raw) return;
|
|
511
579
|
let i = this.meta;
|
|
512
|
-
i[
|
|
513
|
-
let a = i[
|
|
580
|
+
i[Ge] ??= We(this.options.meta.__raw);
|
|
581
|
+
let a = i[Ge] ?? [], o = n ? r - 1 : r;
|
|
514
582
|
return a.includes(o) && this.addClassToHast(e, t), e;
|
|
515
583
|
}
|
|
516
584
|
};
|
|
517
585
|
}
|
|
518
|
-
var
|
|
519
|
-
function
|
|
520
|
-
return e.replace(
|
|
586
|
+
var qe = /[.*+?^${}()|[\]\\]/g;
|
|
587
|
+
function Je(e) {
|
|
588
|
+
return e.replace(qe, "\\$&");
|
|
521
589
|
}
|
|
522
|
-
function
|
|
590
|
+
function B(e = {}, t = "@shikijs/transformers:notation-map") {
|
|
523
591
|
let { classMap: n = {}, classActivePre: r = void 0, classActiveCode: i = void 0 } = e;
|
|
524
|
-
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) {
|
|
525
593
|
let u = Number.parseInt(a.slice(1), 10);
|
|
526
594
|
for (let e = l; e < Math.min(l + u, c.length); e++) this.addClassToHast(c[e], n[t]);
|
|
527
595
|
return r && this.addClassToHast(this.pre, r), i && this.addClassToHast(this.code, i), !0;
|
|
528
596
|
}, e.matchAlgorithm);
|
|
529
597
|
}
|
|
530
|
-
function
|
|
598
|
+
function Ye(e = {}) {
|
|
531
599
|
let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
|
|
532
|
-
return
|
|
600
|
+
return B({
|
|
533
601
|
classMap: {
|
|
534
602
|
"++": t,
|
|
535
603
|
"--": n
|
|
@@ -539,31 +607,31 @@ function He(e = {}) {
|
|
|
539
607
|
matchAlgorithm: e.matchAlgorithm
|
|
540
608
|
}, "@shikijs/transformers:notation-diff");
|
|
541
609
|
}
|
|
542
|
-
function
|
|
610
|
+
function Xe(e = {}) {
|
|
543
611
|
let { classMap: t = {
|
|
544
612
|
error: ["highlighted", "error"],
|
|
545
613
|
warning: ["highlighted", "warning"],
|
|
546
614
|
info: ["highlighted", "info"]
|
|
547
615
|
}, classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
548
|
-
return
|
|
616
|
+
return B({
|
|
549
617
|
classMap: t,
|
|
550
618
|
classActivePre: n,
|
|
551
619
|
classActiveCode: r,
|
|
552
620
|
matchAlgorithm: e.matchAlgorithm
|
|
553
621
|
}, "@shikijs/transformers:notation-error-level");
|
|
554
622
|
}
|
|
555
|
-
function
|
|
623
|
+
function Ze(e = {}) {
|
|
556
624
|
let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
|
|
557
|
-
return
|
|
625
|
+
return B({
|
|
558
626
|
classMap: { focus: t },
|
|
559
627
|
classActivePre: n,
|
|
560
628
|
classActiveCode: r,
|
|
561
629
|
matchAlgorithm: e.matchAlgorithm
|
|
562
630
|
}, "@shikijs/transformers:notation-focus");
|
|
563
631
|
}
|
|
564
|
-
function
|
|
632
|
+
function Qe(e = {}) {
|
|
565
633
|
let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
566
|
-
return
|
|
634
|
+
return B({
|
|
567
635
|
classMap: {
|
|
568
636
|
highlight: t,
|
|
569
637
|
hl: t
|
|
@@ -575,42 +643,42 @@ function Ge(e = {}) {
|
|
|
575
643
|
}
|
|
576
644
|
//#endregion
|
|
577
645
|
//#region src/node/lib/render/highlight/language.ts
|
|
578
|
-
var
|
|
646
|
+
var $e = [
|
|
579
647
|
"shellscript",
|
|
580
648
|
"shell",
|
|
581
649
|
"bash",
|
|
582
650
|
"sh",
|
|
583
651
|
"zsh"
|
|
584
652
|
];
|
|
585
|
-
function
|
|
586
|
-
return
|
|
653
|
+
function et(e) {
|
|
654
|
+
return $e.includes(e);
|
|
587
655
|
}
|
|
588
|
-
var
|
|
589
|
-
function
|
|
590
|
-
return
|
|
656
|
+
var tt = /^[a-zA-Z0-9-_]+/;
|
|
657
|
+
function nt(e) {
|
|
658
|
+
return tt.exec(e)?.[0] || "";
|
|
591
659
|
}
|
|
592
660
|
//#endregion
|
|
593
661
|
//#region src/node/lib/render/highlight/index.ts
|
|
594
|
-
var
|
|
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
|
-
Ge(),
|
|
612
|
-
Ue(),
|
|
613
679
|
Qe(),
|
|
680
|
+
Xe(),
|
|
681
|
+
at(),
|
|
614
682
|
{
|
|
615
683
|
name: "typedown:add-dir",
|
|
616
684
|
pre(e) {
|
|
@@ -619,19 +687,19 @@ async function Ze() {
|
|
|
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 Ze() {
|
|
|
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 Ze() {
|
|
|
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 Qe() {
|
|
|
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 nt(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 rt(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 B(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 st(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,53 +854,55 @@ function ct(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
861
|
//#region src/node/plugin/vite/constants.ts
|
|
793
|
-
var
|
|
794
|
-
|
|
795
|
-
var
|
|
862
|
+
var _t = "@typedown/app", G = "\0@typedown/app", K = "@typedown/pages", q = "\0" + K;
|
|
863
|
+
K + "";
|
|
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";
|
|
796
865
|
//#endregion
|
|
797
866
|
//#region src/node/plugin/vite/virtual/utils.ts
|
|
798
|
-
function
|
|
867
|
+
function Z(e, t) {
|
|
799
868
|
let n = e.moduleGraph.getModuleById(t);
|
|
800
869
|
if (!n) return;
|
|
801
870
|
e.moduleGraph.invalidateModule(n);
|
|
802
|
-
let r =
|
|
871
|
+
let r = bt(n.url);
|
|
803
872
|
for (let t of n.importers) e.hot.send({
|
|
804
873
|
type: "update",
|
|
805
874
|
updates: [{
|
|
806
875
|
type: "js-update",
|
|
807
|
-
path:
|
|
876
|
+
path: bt(t.url),
|
|
808
877
|
acceptedPath: r,
|
|
809
878
|
timestamp: Date.now()
|
|
810
879
|
}]
|
|
811
880
|
});
|
|
812
881
|
}
|
|
813
|
-
function
|
|
882
|
+
function bt(e) {
|
|
814
883
|
return e.startsWith("\0") ? "/@id/__x00__" + e.slice(1) : e;
|
|
815
884
|
}
|
|
816
885
|
//#endregion
|
|
817
886
|
//#region src/node/plugin/vite/virtual/app.ts
|
|
818
|
-
var
|
|
887
|
+
var xt = class {
|
|
819
888
|
async load(e) {
|
|
820
889
|
let t = await e.getConfig();
|
|
821
|
-
return
|
|
890
|
+
return Q({
|
|
822
891
|
...t,
|
|
823
892
|
rootDir: t.rootDir
|
|
824
893
|
});
|
|
825
894
|
}
|
|
826
895
|
invalidate(e) {
|
|
827
|
-
|
|
896
|
+
Z(e, G);
|
|
828
897
|
}
|
|
829
898
|
};
|
|
830
|
-
function
|
|
899
|
+
function Q(e) {
|
|
831
900
|
let { rootDir: t = "." } = e, n = JSON.stringify({
|
|
832
901
|
title: e.siteTitle,
|
|
833
902
|
description: e.siteDescription,
|
|
834
903
|
basePath: e.basePath ?? "/",
|
|
904
|
+
origin: e.origin,
|
|
905
|
+
lang: e.lang,
|
|
835
906
|
repo: e.repo,
|
|
836
907
|
author: e.author,
|
|
837
908
|
license: e.license,
|
|
@@ -845,10 +916,10 @@ import { TdDirectoryIndex, TdGlossaryIndex } from 'typerighter/client/theme-defa
|
|
|
845
916
|
import { isIndexUrl, getDirectoryFromPageUrl, getParentUrl, path } from 'typerighter/shared';
|
|
846
917
|
import { h } from 'vue';
|
|
847
918
|
import theme from 'typerighter/client/theme-default';
|
|
848
|
-
import { pages as initialPages } from '${
|
|
849
|
-
import initialSiteData from '${
|
|
919
|
+
import { pages as initialPages } from '${K}';
|
|
920
|
+
import initialSiteData from '${Y}';
|
|
850
921
|
let pages = initialPages;
|
|
851
|
-
const contentExts = ${JSON.stringify(
|
|
922
|
+
const contentExts = ${JSON.stringify(r)};
|
|
852
923
|
|
|
853
924
|
function findPage(base) {
|
|
854
925
|
for (const ext of contentExts) {
|
|
@@ -877,11 +948,11 @@ const { app, router, searchIndex: searchIndexRef, siteData } = await createTyped
|
|
|
877
948
|
app.mount('#app');
|
|
878
949
|
|
|
879
950
|
// Load search index in the background after the app is mounted
|
|
880
|
-
import('${
|
|
951
|
+
import('${X}').then((m) => { searchIndexRef.value = m.default; });
|
|
881
952
|
|
|
882
953
|
// Accept HMR so modules update without a full page reload
|
|
883
954
|
if (import.meta.hot) {
|
|
884
|
-
import.meta.hot.accept('${
|
|
955
|
+
import.meta.hot.accept('${K}', (m) => {
|
|
885
956
|
if (!m) return;
|
|
886
957
|
const base = path.join('/', '${t}', router.route.path);
|
|
887
958
|
const hadPage = !!findPage(base);
|
|
@@ -893,11 +964,11 @@ if (import.meta.hot) {
|
|
|
893
964
|
if (!hadPage && hasPage) router.go(router.route.path);
|
|
894
965
|
});
|
|
895
966
|
|
|
896
|
-
import.meta.hot.accept('${
|
|
967
|
+
import.meta.hot.accept('${X}', (m) => {
|
|
897
968
|
if (m) searchIndexRef.value = m.default;
|
|
898
969
|
});
|
|
899
970
|
|
|
900
|
-
import.meta.hot.accept('${
|
|
971
|
+
import.meta.hot.accept('${Y}', (m) => {
|
|
901
972
|
if (m) siteData.value = m.default;
|
|
902
973
|
});
|
|
903
974
|
}
|
|
@@ -905,7 +976,7 @@ if (import.meta.hot) {
|
|
|
905
976
|
}
|
|
906
977
|
//#endregion
|
|
907
978
|
//#region src/node/plugin/vite/virtual/pages.ts
|
|
908
|
-
var
|
|
979
|
+
var St = class {
|
|
909
980
|
async load(e) {
|
|
910
981
|
let t = (await e.getConfig()).rootDir ?? ".";
|
|
911
982
|
return `export const pages = import.meta.glob('${t === "." ? "/**/*.{td,md}" : `/${t}/**/*.{td,md}`}');`;
|
|
@@ -914,65 +985,65 @@ var mt = class {
|
|
|
914
985
|
if (e.startsWith("@typedown/pages?resource=")) return "\0" + e;
|
|
915
986
|
}
|
|
916
987
|
isPageDataModule(e) {
|
|
917
|
-
return e.startsWith(
|
|
988
|
+
return e.startsWith(J);
|
|
918
989
|
}
|
|
919
990
|
async loadPageData(e, t) {
|
|
920
|
-
let n = decodeURIComponent(e.slice(
|
|
991
|
+
let n = decodeURIComponent(e.slice(J.length)), r = await W(t, await t.getFile(n), n);
|
|
921
992
|
return `export const pageData = ${JSON.stringify(r)}`;
|
|
922
993
|
}
|
|
923
994
|
invalidatePageData(e, t) {
|
|
924
|
-
|
|
995
|
+
Z(e, J + encodeURIComponent(t));
|
|
925
996
|
}
|
|
926
997
|
invalidate(e) {
|
|
927
|
-
|
|
998
|
+
Z(e, q);
|
|
928
999
|
}
|
|
929
|
-
},
|
|
1000
|
+
}, Ct = "\0@typedown/site-data", wt = {
|
|
930
1001
|
ready: !1,
|
|
931
1002
|
contentTree: { entries: [] },
|
|
932
1003
|
schemas: {},
|
|
933
1004
|
directoryListings: {}
|
|
934
|
-
},
|
|
1005
|
+
}, Tt = class {
|
|
935
1006
|
data;
|
|
936
1007
|
scan(e) {
|
|
937
|
-
let t =
|
|
1008
|
+
let t = P("**/*.td", {
|
|
938
1009
|
cwd: e,
|
|
939
1010
|
exclude: (e) => e.startsWith("_")
|
|
940
1011
|
}).map((e) => ({
|
|
941
1012
|
filepath: e,
|
|
942
|
-
label:
|
|
1013
|
+
label: x(e),
|
|
943
1014
|
header: {}
|
|
944
|
-
})), n =
|
|
1015
|
+
})), n = b(t);
|
|
945
1016
|
this.data = {
|
|
946
1017
|
contentTree: n,
|
|
947
1018
|
schemas: {},
|
|
948
|
-
directoryListings:
|
|
1019
|
+
directoryListings: v(n.entries, "")
|
|
949
1020
|
};
|
|
950
1021
|
}
|
|
951
1022
|
load(e) {
|
|
952
1023
|
let t = this.data ? {
|
|
953
1024
|
ready: !0,
|
|
954
1025
|
...this.data
|
|
955
|
-
} :
|
|
1026
|
+
} : wt;
|
|
956
1027
|
return `export default ${JSON.stringify(t)}`;
|
|
957
1028
|
}
|
|
958
1029
|
clear() {
|
|
959
1030
|
this.data = void 0;
|
|
960
1031
|
}
|
|
961
1032
|
fetch(e, t) {
|
|
962
|
-
|
|
1033
|
+
Et(e).then((e) => {
|
|
963
1034
|
this.data = e, t && this.invalidate(t);
|
|
964
1035
|
}).catch((e) => {
|
|
965
1036
|
console.error("[typedown] Failed to fetch site data:", e instanceof Error ? e.message : e);
|
|
966
1037
|
});
|
|
967
1038
|
}
|
|
968
1039
|
async fetchSync(e) {
|
|
969
|
-
this.data = await
|
|
1040
|
+
this.data = await Et(e);
|
|
970
1041
|
}
|
|
971
1042
|
invalidate(e) {
|
|
972
|
-
|
|
1043
|
+
Z(e, Ct);
|
|
973
1044
|
}
|
|
974
1045
|
};
|
|
975
|
-
async function
|
|
1046
|
+
async function Et(e) {
|
|
976
1047
|
let [t, n, r] = await Promise.all([
|
|
977
1048
|
e.getConfig(),
|
|
978
1049
|
e.listSidebar(),
|
|
@@ -980,21 +1051,21 @@ async function Z(e) {
|
|
|
980
1051
|
]), i = await Promise.all(r.map(async (t) => [t, (await e.getSchema(t)).properties])), a = Object.fromEntries(i), o = n.map((e) => ({
|
|
981
1052
|
...e,
|
|
982
1053
|
header: {}
|
|
983
|
-
})), s =
|
|
1054
|
+
})), s = b(o);
|
|
984
1055
|
return {
|
|
985
1056
|
contentTree: s,
|
|
986
1057
|
schemas: a,
|
|
987
|
-
directoryListings:
|
|
1058
|
+
directoryListings: v(s.entries, t.siteTitle)
|
|
988
1059
|
};
|
|
989
1060
|
}
|
|
990
1061
|
//#endregion
|
|
991
1062
|
//#region src/node/lib/search-indexer/index.ts
|
|
992
|
-
var
|
|
1063
|
+
var Dt = class {
|
|
993
1064
|
index;
|
|
994
1065
|
constructor() {
|
|
995
|
-
this.index = new
|
|
996
|
-
fields:
|
|
997
|
-
storeFields:
|
|
1066
|
+
this.index = new oe({
|
|
1067
|
+
fields: a,
|
|
1068
|
+
storeFields: p
|
|
998
1069
|
});
|
|
999
1070
|
}
|
|
1000
1071
|
addAll(e) {
|
|
@@ -1013,20 +1084,20 @@ var vt = class {
|
|
|
1013
1084
|
};
|
|
1014
1085
|
//#endregion
|
|
1015
1086
|
//#region src/node/lib/search-indexer/scan.ts
|
|
1016
|
-
function
|
|
1017
|
-
let n =
|
|
1087
|
+
function Ot(e, t) {
|
|
1088
|
+
let n = Mt(e), r = [];
|
|
1018
1089
|
for (let t of n) {
|
|
1019
|
-
let n =
|
|
1090
|
+
let n = jt(e, t);
|
|
1020
1091
|
n && r.push(n);
|
|
1021
1092
|
}
|
|
1022
1093
|
t.addAll(r);
|
|
1023
1094
|
}
|
|
1024
|
-
function
|
|
1025
|
-
let r =
|
|
1026
|
-
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));
|
|
1027
1098
|
}
|
|
1028
|
-
function
|
|
1029
|
-
let n =
|
|
1099
|
+
function At(e, t) {
|
|
1100
|
+
let n = x(e);
|
|
1030
1101
|
if (!t.startsWith("---")) return {
|
|
1031
1102
|
title: n,
|
|
1032
1103
|
body: t
|
|
@@ -1042,56 +1113,56 @@ function xt(e, t) {
|
|
|
1042
1113
|
body: a
|
|
1043
1114
|
};
|
|
1044
1115
|
}
|
|
1045
|
-
function
|
|
1116
|
+
function jt(e, t) {
|
|
1046
1117
|
let n;
|
|
1047
1118
|
try {
|
|
1048
|
-
n =
|
|
1119
|
+
n = ve(t, "utf-8");
|
|
1049
1120
|
} catch {
|
|
1050
1121
|
return;
|
|
1051
1122
|
}
|
|
1052
1123
|
if (!n.trim()) return;
|
|
1053
|
-
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);
|
|
1054
1125
|
return {
|
|
1055
|
-
id:
|
|
1126
|
+
id: d(r),
|
|
1056
1127
|
title: i,
|
|
1057
1128
|
text: `${i}\n${a}`
|
|
1058
1129
|
};
|
|
1059
1130
|
}
|
|
1060
|
-
function
|
|
1061
|
-
return
|
|
1131
|
+
function Mt(e) {
|
|
1132
|
+
return P("**/*.td", {
|
|
1062
1133
|
cwd: e,
|
|
1063
1134
|
exclude: (e) => e.startsWith("_")
|
|
1064
|
-
}).map((t) =>
|
|
1135
|
+
}).map((t) => A(e, t));
|
|
1065
1136
|
}
|
|
1066
1137
|
//#endregion
|
|
1067
1138
|
//#region src/node/plugin/vite/virtual/search-index.ts
|
|
1068
|
-
var
|
|
1069
|
-
indexer = new
|
|
1139
|
+
var Nt = "\0@typedown/search-index", Pt = class {
|
|
1140
|
+
indexer = new Dt();
|
|
1070
1141
|
load(e) {
|
|
1071
1142
|
return `export default ${JSON.stringify(this.indexer.serialize())}`;
|
|
1072
1143
|
}
|
|
1073
1144
|
index(e) {
|
|
1074
|
-
|
|
1145
|
+
Ot(e, this.indexer);
|
|
1075
1146
|
}
|
|
1076
1147
|
reindex(e, t) {
|
|
1077
|
-
|
|
1148
|
+
kt(e, t, this.indexer);
|
|
1078
1149
|
}
|
|
1079
1150
|
invalidate(e) {
|
|
1080
|
-
|
|
1151
|
+
Z(e, Nt);
|
|
1081
1152
|
}
|
|
1082
|
-
},
|
|
1083
|
-
function
|
|
1153
|
+
}, Ft = be(import.meta.url);
|
|
1154
|
+
function It() {
|
|
1084
1155
|
return [{
|
|
1085
1156
|
find: "vue/server-renderer",
|
|
1086
|
-
replacement:
|
|
1157
|
+
replacement: Ft.resolve("vue/server-renderer")
|
|
1087
1158
|
}, {
|
|
1088
1159
|
find: "vue",
|
|
1089
|
-
replacement:
|
|
1160
|
+
replacement: Ft.resolve("vue/dist/vue.runtime.esm-bundler.js")
|
|
1090
1161
|
}];
|
|
1091
1162
|
}
|
|
1092
1163
|
//#endregion
|
|
1093
1164
|
//#region src/node/plugin/vite/middleware/vault-assets.ts
|
|
1094
|
-
var
|
|
1165
|
+
var Lt = {
|
|
1095
1166
|
jpg: "image/jpeg",
|
|
1096
1167
|
jpeg: "image/jpeg",
|
|
1097
1168
|
png: "image/png",
|
|
@@ -1109,17 +1180,17 @@ var Et = {
|
|
|
1109
1180
|
woff: "font/woff",
|
|
1110
1181
|
ttf: "font/ttf"
|
|
1111
1182
|
};
|
|
1112
|
-
function
|
|
1113
|
-
return (
|
|
1114
|
-
if (!
|
|
1115
|
-
let
|
|
1116
|
-
if (
|
|
1117
|
-
let
|
|
1118
|
-
if (
|
|
1119
|
-
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);
|
|
1120
1191
|
if (e.isFile()) {
|
|
1121
|
-
let t =
|
|
1122
|
-
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);
|
|
1123
1194
|
return;
|
|
1124
1195
|
}
|
|
1125
1196
|
} catch {}
|
|
@@ -1128,187 +1199,187 @@ function Dt(e, t) {
|
|
|
1128
1199
|
}
|
|
1129
1200
|
//#endregion
|
|
1130
1201
|
//#region src/node/plugin/vite/middleware/virtual-html.ts
|
|
1131
|
-
function
|
|
1202
|
+
function zt(e, t, r) {
|
|
1132
1203
|
return (i, a, o) => {
|
|
1133
1204
|
if (!i.url) return o();
|
|
1134
|
-
let
|
|
1135
|
-
if (
|
|
1136
|
-
let u =
|
|
1137
|
-
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();
|
|
1138
1209
|
t.getConfig().then(async (t) => {
|
|
1139
|
-
let
|
|
1140
|
-
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);
|
|
1141
1212
|
}).catch(() => o());
|
|
1142
1213
|
};
|
|
1143
1214
|
}
|
|
1144
|
-
function
|
|
1145
|
-
return e.devHtml === void 0 && (e.devHtml =
|
|
1215
|
+
function Bt(e, t) {
|
|
1216
|
+
return e.devHtml === void 0 && (e.devHtml = O({
|
|
1146
1217
|
title: t.siteTitle,
|
|
1147
1218
|
description: t.siteDescription,
|
|
1148
1219
|
base: "/",
|
|
1149
|
-
entryScript:
|
|
1220
|
+
entryScript: _t
|
|
1150
1221
|
})), e.devHtml;
|
|
1151
1222
|
}
|
|
1152
1223
|
//#endregion
|
|
1153
1224
|
//#region src/node/plugin/vite/index.ts
|
|
1154
|
-
function
|
|
1155
|
-
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 = {
|
|
1156
1227
|
devHtml: void 0,
|
|
1157
1228
|
basePath: "/",
|
|
1158
1229
|
rootDirectory: "vault"
|
|
1159
1230
|
};
|
|
1160
|
-
function
|
|
1161
|
-
if (
|
|
1162
|
-
return
|
|
1231
|
+
function p() {
|
|
1232
|
+
if (t === void 0) throw Error("typedown plugin not initialized");
|
|
1233
|
+
return t.getTdContext();
|
|
1163
1234
|
}
|
|
1164
1235
|
return [
|
|
1165
1236
|
{
|
|
1166
1237
|
name: "vite-plugin-typedown",
|
|
1167
1238
|
enforce: "pre",
|
|
1168
|
-
async config(
|
|
1169
|
-
if (!
|
|
1170
|
-
let
|
|
1171
|
-
|
|
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);
|
|
1172
1243
|
}
|
|
1173
|
-
|
|
1174
|
-
let
|
|
1244
|
+
i = n.base ?? "/";
|
|
1245
|
+
let r = await (await p()).getConfig();
|
|
1175
1246
|
return {
|
|
1176
|
-
base:
|
|
1177
|
-
publicDir:
|
|
1247
|
+
base: n.base ?? r.basePath,
|
|
1248
|
+
publicDir: r.publicDir,
|
|
1178
1249
|
server: {
|
|
1179
|
-
port:
|
|
1180
|
-
strictPort:
|
|
1250
|
+
port: n.server?.port ?? 8686,
|
|
1251
|
+
strictPort: n.server?.strictPort ?? !1
|
|
1181
1252
|
},
|
|
1182
|
-
resolve: { alias:
|
|
1253
|
+
resolve: { alias: It() },
|
|
1183
1254
|
ssr: { noExternal: ["typerighter"] }
|
|
1184
1255
|
};
|
|
1185
1256
|
},
|
|
1186
1257
|
configResolved(e) {
|
|
1187
|
-
|
|
1258
|
+
r = A(e.root, e.build.outDir);
|
|
1188
1259
|
},
|
|
1189
1260
|
async buildStart() {
|
|
1190
|
-
if (
|
|
1191
|
-
let e = await
|
|
1192
|
-
|
|
1193
|
-
let
|
|
1194
|
-
if (
|
|
1195
|
-
let e =
|
|
1196
|
-
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")}`);
|
|
1197
1268
|
}
|
|
1198
1269
|
},
|
|
1199
1270
|
resolveId(e) {
|
|
1200
|
-
if (e === "/@typedown/app" || e === "@typedown/app") return
|
|
1201
|
-
if (e === "@typedown/pages") return
|
|
1202
|
-
if (e.startsWith("@typedown/pages?resource=")) return
|
|
1203
|
-
if (e === "@typedown/site-data") return
|
|
1204
|
-
if (e === "@typedown/search-index") return
|
|
1271
|
+
if (e === "/@typedown/app" || e === "@typedown/app") return G;
|
|
1272
|
+
if (e === "@typedown/pages") return q;
|
|
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;
|
|
1205
1276
|
},
|
|
1206
1277
|
async load(e) {
|
|
1207
|
-
if (
|
|
1278
|
+
if (o.isPageDataModule(e)) return o.loadPageData(e, await p());
|
|
1208
1279
|
if (e !== "\0@typedown/search-index" && e !== "\0@typedown/site-data" && e !== "\0@typedown/pages" && e !== "\0@typedown/app") return;
|
|
1209
|
-
let t = await
|
|
1210
|
-
if (e === "\0@typedown/search-index") return
|
|
1211
|
-
if (e === "\0@typedown/site-data") return
|
|
1212
|
-
if (e === "\0@typedown/pages") return
|
|
1213
|
-
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);
|
|
1214
1285
|
},
|
|
1215
1286
|
async configureServer(e) {
|
|
1216
|
-
|
|
1217
|
-
let t = await
|
|
1218
|
-
|
|
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 () => {
|
|
1219
1290
|
let e = await t.checkVault();
|
|
1220
|
-
0 < e.diagnostics.length && (console.error(""),
|
|
1291
|
+
0 < e.diagnostics.length && (console.error(""), Gt(e.diagnostics));
|
|
1221
1292
|
}), t.rpc.onConfigChanged(() => {
|
|
1222
|
-
|
|
1293
|
+
n && (d.devHtml = void 0, c.clear(), a.invalidate(n), o.invalidate(n), Ht(n), c.fetch(t, n));
|
|
1223
1294
|
});
|
|
1224
|
-
function
|
|
1225
|
-
|
|
1226
|
-
if (!
|
|
1227
|
-
let
|
|
1228
|
-
for (let
|
|
1229
|
-
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);
|
|
1230
1301
|
if (a?.size) {
|
|
1231
|
-
for (let e of a)
|
|
1232
|
-
|
|
1302
|
+
for (let e of a) n.moduleGraph.invalidateModule(e), r.push(Wt(e));
|
|
1303
|
+
o.invalidatePageData(n, i);
|
|
1233
1304
|
}
|
|
1234
1305
|
}
|
|
1235
|
-
0 <
|
|
1306
|
+
0 < r.length && n.hot.send({
|
|
1236
1307
|
type: "update",
|
|
1237
|
-
updates:
|
|
1308
|
+
updates: r
|
|
1238
1309
|
});
|
|
1239
1310
|
}).catch(() => {});
|
|
1240
1311
|
}
|
|
1241
|
-
t.rpc.onContentUpdated(({ filepath: e, affectedFiles:
|
|
1242
|
-
|
|
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));
|
|
1243
1314
|
}), t.rpc.onContentDeleted(({ filepath: e }) => {
|
|
1244
|
-
|
|
1315
|
+
n && (l.index(i), l.invalidate(n), o.invalidate(n), c.clear(), c.fetch(t, n), s(e));
|
|
1245
1316
|
});
|
|
1246
|
-
function
|
|
1247
|
-
|
|
1317
|
+
function u() {
|
|
1318
|
+
n && (c.clear(), Ut(n), c.fetch(t, n));
|
|
1248
1319
|
}
|
|
1249
|
-
t.rpc.onSchemaUpdated(
|
|
1250
|
-
let
|
|
1251
|
-
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) => {
|
|
1252
1323
|
d.basePath = e.basePath, d.rootDirectory = e.rootDir, d.devHtml = void 0;
|
|
1253
|
-
}), e.middlewares.use(
|
|
1324
|
+
}), e.middlewares.use(Rt(e, d)), e.middlewares.use(zt(e, t, d));
|
|
1254
1325
|
},
|
|
1255
|
-
async transform(
|
|
1256
|
-
let
|
|
1257
|
-
if (!
|
|
1258
|
-
if (
|
|
1326
|
+
async transform(e, t) {
|
|
1327
|
+
let n = t.split("?")[0];
|
|
1328
|
+
if (!s(n)) return;
|
|
1329
|
+
if (u(n)) return {
|
|
1259
1330
|
code: "<script>import { TdNotFound } from 'typerighter/client/theme-default'; export default TdNotFound; export const pageData = { frontmatter: {}, headings: [], title: '' };<\/script>",
|
|
1260
1331
|
map: null
|
|
1261
1332
|
};
|
|
1262
|
-
let
|
|
1333
|
+
let r = await p(), i = await r.getConfig(), a = f(n, i.rootDir);
|
|
1263
1334
|
try {
|
|
1264
|
-
let { vueSrc: e } = await
|
|
1335
|
+
let { vueSrc: e } = await mt(r, await r.getFile(a), a);
|
|
1265
1336
|
return {
|
|
1266
1337
|
code: e,
|
|
1267
1338
|
map: null
|
|
1268
1339
|
};
|
|
1269
1340
|
} catch (e) {
|
|
1270
|
-
if (
|
|
1341
|
+
if (re(e)) return;
|
|
1271
1342
|
let t = e instanceof Error ? e.message : String(e);
|
|
1272
|
-
this.error(`[typedown] Failed to transform ${
|
|
1343
|
+
this.error(`[typedown] Failed to transform ${a}: ${t}`);
|
|
1273
1344
|
}
|
|
1274
1345
|
},
|
|
1275
|
-
handleHotUpdate({ file:
|
|
1276
|
-
if (e
|
|
1346
|
+
handleHotUpdate({ file: e }) {
|
|
1347
|
+
if (s(e)) return [];
|
|
1277
1348
|
},
|
|
1278
1349
|
async closeBundle() {
|
|
1279
|
-
if (!
|
|
1280
|
-
let e = (await (await
|
|
1281
|
-
await
|
|
1282
|
-
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),
|
|
1283
1354
|
base: e
|
|
1284
1355
|
});
|
|
1285
1356
|
} finally {
|
|
1286
|
-
|
|
1357
|
+
t.dispose();
|
|
1287
1358
|
}
|
|
1288
1359
|
}
|
|
1289
1360
|
},
|
|
1290
|
-
|
|
1291
|
-
include:
|
|
1361
|
+
ce({
|
|
1362
|
+
include: e.root ? RegExp(`${e.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
|
|
1292
1363
|
template: { transformAssetUrls: !1 }
|
|
1293
1364
|
}),
|
|
1294
|
-
...
|
|
1365
|
+
...se()
|
|
1295
1366
|
];
|
|
1296
1367
|
}
|
|
1297
|
-
function
|
|
1368
|
+
function Vt(e) {
|
|
1298
1369
|
return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
|
|
1299
1370
|
}
|
|
1300
|
-
function
|
|
1301
|
-
for (let t of
|
|
1371
|
+
function Ht(e) {
|
|
1372
|
+
for (let t of Vt(e)) e.moduleGraph.invalidateModule(t);
|
|
1302
1373
|
e.hot.send({ type: "full-reload" });
|
|
1303
1374
|
}
|
|
1304
|
-
function
|
|
1305
|
-
let t =
|
|
1375
|
+
function Ut(e) {
|
|
1376
|
+
let t = Vt(e).map((t) => (e.moduleGraph.invalidateModule(t), Wt(t)));
|
|
1306
1377
|
0 < t.length && e.hot.send({
|
|
1307
1378
|
type: "update",
|
|
1308
1379
|
updates: t
|
|
1309
1380
|
});
|
|
1310
1381
|
}
|
|
1311
|
-
function
|
|
1382
|
+
function Wt(e) {
|
|
1312
1383
|
return {
|
|
1313
1384
|
type: "js-update",
|
|
1314
1385
|
path: e.url,
|
|
@@ -1316,11 +1387,11 @@ function Pt(e) {
|
|
|
1316
1387
|
timestamp: Date.now()
|
|
1317
1388
|
};
|
|
1318
1389
|
}
|
|
1319
|
-
function
|
|
1390
|
+
function Gt(e) {
|
|
1320
1391
|
for (let t of e) {
|
|
1321
|
-
let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ?
|
|
1322
|
-
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})`)}`);
|
|
1323
1394
|
}
|
|
1324
1395
|
}
|
|
1325
1396
|
//#endregion
|
|
1326
|
-
export {
|
|
1397
|
+
export { Q as n, L as r, $ as t };
|