typerighter 0.44.1 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{app-C-CwtIly.js → app-D0bX_TJ8.js} +1 -1
- package/dist/builtin-components.json +95 -0
- package/dist/{cli-BYbSBUOA.js → cli-_m_a7JaO.js} +5 -5
- package/dist/cli.js +1 -1
- package/dist/client/theme-default.js +194 -194
- package/dist/client.js +1 -1
- package/dist/index.js +2 -2
- package/dist/{init-C3xKB6xH.js → init-CbYgEsOM.js} +203 -189
- package/dist/{jsonld-CrXLLdKW.js → jsonld-CRHOaFMj.js} +15 -15
- package/dist/node/build/builtin-contract.d.ts +3 -0
- package/dist/node/build/builtin-contract.d.ts.map +1 -0
- package/dist/node/cli/init.d.ts.map +1 -1
- package/dist/node/lib/codegen/app-entry.d.ts +1 -0
- package/dist/node/lib/codegen/app-entry.d.ts.map +1 -1
- package/dist/node/lib/components.d.ts +9 -7
- package/dist/node/lib/components.d.ts.map +1 -1
- package/dist/node/lib/prop-schema.d.ts +17 -0
- package/dist/node/lib/prop-schema.d.ts.map +1 -0
- package/dist/node/plugin/vite/subplugins/component-contract.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/node/plugin/vite/virtual/pages.d.ts +2 -0
- package/dist/node/plugin/vite/virtual/pages.d.ts.map +1 -1
- package/dist/prerenderWorker.js +2 -2
- package/dist/{renderMath-DBw8KV_4.js → renderMath-C59kPnxc.js} +1 -1
- package/dist/shared/types/json-schema.d.ts +12 -3
- package/dist/shared/types/json-schema.d.ts.map +1 -1
- package/dist/shared/utils/format.d.ts +1 -0
- package/dist/shared/utils/format.d.ts.map +1 -1
- package/dist/{shared-B-wDtFX6.js → shared-C5ERr4vS.js} +64 -54
- package/dist/shared.js +1 -1
- package/dist/typerighter.css +1 -1
- package/dist/{vite-B7uvklyW.js → vite-KkSlWwFu.js} +428 -367
- package/dist/vite.js +1 -1
- package/package.json +6 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as E, i as D, n as O, o as ee, r as te, s as ne, t as re } from "./jsonld-
|
|
1
|
+
import { D as e, E as t, F as n, H as r, K as i, L as a, P as o, Q as s, R as c, V as l, Y as u, Z as d, _ as f, b as p, c as m, d as h, et as g, g as _, h as v, i as y, p as b, tt as x, v as S, w as C, y as w, z as T } from "./shared-C5ERr4vS.js";
|
|
2
|
+
import { a as E, i as D, n as O, o as ee, r as te, s as ne, t as re } from "./jsonld-CRHOaFMj.js";
|
|
3
3
|
import { t as ie } from "./temml-D47Z4xZ2.js";
|
|
4
4
|
import { a as ae, i as oe, n as se, r as ce } from "./context-CSvoDxVt.js";
|
|
5
5
|
import { t as le } from "./es-ClqUVRJn.js";
|
|
@@ -13,9 +13,9 @@ import { fileURLToPath as me } from "node:url";
|
|
|
13
13
|
import he from "node:os";
|
|
14
14
|
import { Worker as ge } from "node:worker_threads";
|
|
15
15
|
import P, { createReadStream as _e, existsSync as ve, globSync as ye, readFileSync as be, statSync as xe } from "node:fs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import { createRequire as Se } from "node:module";
|
|
17
|
+
import { createChecker as Ce, createCheckerByJson as we } from "vue-component-meta";
|
|
18
|
+
import { createHighlighter as Te, guessEmbeddedLanguages as Ee, isSpecialLang as De } from "shiki";
|
|
19
19
|
//#region src/node/lib/worker-pool/index.ts
|
|
20
20
|
var Oe = class {
|
|
21
21
|
workers = [];
|
|
@@ -68,8 +68,8 @@ function ke(e, t, n, r) {
|
|
|
68
68
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
69
69
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
70
70
|
${e.map((e) => {
|
|
71
|
-
let n =
|
|
72
|
-
return ` <url><loc>${n}</loc>${a === void 0 ? "" : `<lastmod>${
|
|
71
|
+
let n = m(i + t + o(e)), a = r?.get(e);
|
|
72
|
+
return ` <url><loc>${n}</loc>${a === void 0 ? "" : `<lastmod>${y(a)}</lastmod>`}</url>`;
|
|
73
73
|
}).join("\n")}
|
|
74
74
|
</urlset>
|
|
75
75
|
`;
|
|
@@ -85,11 +85,11 @@ Sitemap: ${e}${t}sitemap.xml
|
|
|
85
85
|
//#region src/node/build/seo/feed.ts
|
|
86
86
|
function je(e, t, n, r, i, a) {
|
|
87
87
|
let o = [...e].filter((e) => e.fileMetadata.mtime > 0).sort((e, t) => t.fileMetadata.mtime - e.fileMetadata.mtime).slice(0, 50).map((e) => {
|
|
88
|
-
let r =
|
|
88
|
+
let r = l(e.filepath), i = `${n}${t}${r}`, a = new Date(e.fileMetadata.mtime).toUTCString(), o = m(e.label ?? r), s = e.excerpt === void 0 ? "" : `<![CDATA[${e.excerpt}]]>`;
|
|
89
89
|
return ` <item>
|
|
90
90
|
<title>${o}</title>
|
|
91
|
-
<link>${
|
|
92
|
-
<guid>${
|
|
91
|
+
<link>${m(i)}</link>
|
|
92
|
+
<guid>${m(i)}</guid>
|
|
93
93
|
<pubDate>${a}</pubDate>
|
|
94
94
|
<description>${s}</description>
|
|
95
95
|
</item>`;
|
|
@@ -97,11 +97,11 @@ function je(e, t, n, r, i, a) {
|
|
|
97
97
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
98
98
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
99
99
|
<channel>
|
|
100
|
-
<title>${
|
|
101
|
-
<link>${
|
|
102
|
-
<description>${
|
|
100
|
+
<title>${m(r)}</title>
|
|
101
|
+
<link>${m(n + t)}</link>
|
|
102
|
+
<description>${m(i)}</description>
|
|
103
103
|
<language>${a}</language>
|
|
104
|
-
<atom:link href="${
|
|
104
|
+
<atom:link href="${m(n + t)}feed.xml" rel="self" type="application/rss+xml"/>
|
|
105
105
|
${o}
|
|
106
106
|
</channel>
|
|
107
107
|
</rss>
|
|
@@ -145,14 +145,14 @@ async function Fe(e, t, n) {
|
|
|
145
145
|
}
|
|
146
146
|
async function Ie(e, t, n) {
|
|
147
147
|
let r = await (await import(e.ssrEntryPath)).createRenderer(), i = e.pagePaths.length, a = 0;
|
|
148
|
-
for (let
|
|
149
|
-
let
|
|
148
|
+
for (let s of e.pagePaths) {
|
|
149
|
+
let c = await r(s), l = ee(c.pageData), u = E(c.pageData), d = te(c.pageData), f = e.base + o(s), p = [re({
|
|
150
150
|
title: l,
|
|
151
151
|
description: u,
|
|
152
152
|
canonicalUrl: f,
|
|
153
153
|
author: e.author,
|
|
154
154
|
dateModified: d
|
|
155
|
-
}), O(
|
|
155
|
+
}), O(s, l)].filter((e) => e !== void 0), m = ne({
|
|
156
156
|
title: l,
|
|
157
157
|
description: u,
|
|
158
158
|
siteTitle: e.siteTitle,
|
|
@@ -162,11 +162,11 @@ async function Ie(e, t, n) {
|
|
|
162
162
|
lang: e.lang,
|
|
163
163
|
entryScript: t,
|
|
164
164
|
canonicalUrl: f,
|
|
165
|
-
ogImagePath: D(
|
|
165
|
+
ogImagePath: D(c.pageData),
|
|
166
166
|
jsonLdBlocks: p,
|
|
167
167
|
headExtra: n,
|
|
168
|
-
appContent:
|
|
169
|
-
}), h =
|
|
168
|
+
appContent: c.html
|
|
169
|
+
}), h = s === "/" ? "index.html" : `${o(s)}.html`, g = k.join(e.outDir, h);
|
|
170
170
|
await N.mkdir(k.dirname(g), { recursive: !0 }), await N.writeFile(g, m), a++, e.progress?.update(a, i);
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -182,7 +182,7 @@ async function Le(e) {
|
|
|
182
182
|
//#endregion
|
|
183
183
|
//#region src/node/lib/codegen/app-entry.ts
|
|
184
184
|
function Re(e, t) {
|
|
185
|
-
let { rootDir: n = ".",
|
|
185
|
+
let { rootDir: n = ".", mountPath: r = "", userComponents: i = [] } = e, a = [r, n === "." ? "" : n].filter(Boolean).join("/"), o = i.map((e) => `import ${e.name} from ${JSON.stringify(e.absolutePath)};`).join("\n"), s = i.map((e) => `app.component(${JSON.stringify(e.name)}, ${e.name});`).join("\n"), c = JSON.stringify({
|
|
186
186
|
title: e.siteTitle,
|
|
187
187
|
description: e.siteDescription,
|
|
188
188
|
basePath: e.basePath ?? "/",
|
|
@@ -195,7 +195,7 @@ function Re(e, t) {
|
|
|
195
195
|
nav: e.nav
|
|
196
196
|
});
|
|
197
197
|
return `
|
|
198
|
-
${[
|
|
198
|
+
${[o, "import 'typerighter/style.css';"].filter(Boolean).join("\n")}
|
|
199
199
|
import 'typerighter/fonts.css';
|
|
200
200
|
import('typerighter/math.css');
|
|
201
201
|
import { createTypedownApp } from 'typerighter/client';
|
|
@@ -216,7 +216,7 @@ function findPage(base) {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
async function loadPageModule(pagePath) {
|
|
219
|
-
const loader = findPage(path.join('/', '${
|
|
219
|
+
const loader = findPage(path.join('/', '${a}', pagePath));
|
|
220
220
|
if (loader) return loader();
|
|
221
221
|
|
|
222
222
|
if (isIndexUrl(pagePath)) {
|
|
@@ -231,8 +231,8 @@ async function loadPageModule(pagePath) {
|
|
|
231
231
|
return undefined;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
const { app, router, searchIndex: searchIndexRef, siteData } = await createTypedownApp(loadPageModule, theme, ${
|
|
235
|
-
${
|
|
234
|
+
const { app, router, searchIndex: searchIndexRef, siteData } = await createTypedownApp(loadPageModule, theme, ${c}, initialSiteData);
|
|
235
|
+
${s}
|
|
236
236
|
app.mount('#app');
|
|
237
237
|
|
|
238
238
|
// Load search index in the background after the app is mounted
|
|
@@ -242,7 +242,7 @@ import('${t.searchIndex}').then((m) => { searchIndexRef.value = m.default; });
|
|
|
242
242
|
if (import.meta.hot) {
|
|
243
243
|
import.meta.hot.accept('${t.pages}', (m) => {
|
|
244
244
|
if (!m) return;
|
|
245
|
-
const base = path.join('/', '${
|
|
245
|
+
const base = path.join('/', '${a}', router.route.path);
|
|
246
246
|
const hadPage = !!findPage(base);
|
|
247
247
|
pages = m.pages;
|
|
248
248
|
const hasPage = !!findPage(base);
|
|
@@ -262,8 +262,8 @@ if (import.meta.hot) {
|
|
|
262
262
|
|
|
263
263
|
// Update route.data directly when content changes - Vue SFC setup only re-runs on script block changes
|
|
264
264
|
import.meta.hot.on('${t.pageDataEvent}', ({ filepath, pageData }) => {
|
|
265
|
-
const eventBase = path.join('/', '${
|
|
266
|
-
const routeBase = path.join('/', '${
|
|
265
|
+
const eventBase = path.join('/', '${a}', path.stripExtension(filepath));
|
|
266
|
+
const routeBase = path.join('/', '${a}', router.route.path);
|
|
267
267
|
if (eventBase === routeBase) {
|
|
268
268
|
router.route.data = pageData;
|
|
269
269
|
}
|
|
@@ -302,42 +302,35 @@ function ze(e, t) {
|
|
|
302
302
|
}
|
|
303
303
|
//#endregion
|
|
304
304
|
//#region src/node/lib/components.ts
|
|
305
|
-
function Be(e
|
|
306
|
-
let
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
316
|
-
r[i.name] = {
|
|
317
|
-
source: e,
|
|
318
|
-
props: s ? a : void 0
|
|
319
|
-
};
|
|
320
|
-
} catch {
|
|
321
|
-
r[i.name] = { source: e };
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return r;
|
|
305
|
+
function Be(e) {
|
|
306
|
+
let t = k.join(e, "tsconfig.json");
|
|
307
|
+
if (P.existsSync(t)) return Ce(t);
|
|
308
|
+
let n = Ve(e);
|
|
309
|
+
return we(e, { compilerOptions: {
|
|
310
|
+
strict: !1,
|
|
311
|
+
jsx: "preserve",
|
|
312
|
+
jsxImportSource: "vue",
|
|
313
|
+
...n && { paths: n }
|
|
314
|
+
} });
|
|
325
315
|
}
|
|
326
316
|
async function I(e, t) {
|
|
327
317
|
let n = [];
|
|
328
318
|
for (let r of e) if (r.kind === "dir") {
|
|
329
319
|
let e = k.resolve(t, r.path), i;
|
|
330
320
|
try {
|
|
331
|
-
i = await pe(e);
|
|
321
|
+
i = await pe(e, { withFileTypes: !0 });
|
|
332
322
|
} catch {
|
|
333
323
|
continue;
|
|
334
324
|
}
|
|
335
|
-
for (let t of i) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
325
|
+
for (let t of i) if (t.isFile() && t.name.endsWith(".vue")) n.push({
|
|
326
|
+
name: t.name.slice(0, -4),
|
|
327
|
+
absolutePath: k.join(e, t.name)
|
|
328
|
+
});
|
|
329
|
+
else if (t.isDirectory()) {
|
|
330
|
+
let r = k.join(e, t.name, "index.vue");
|
|
331
|
+
P.existsSync(r) && n.push({
|
|
332
|
+
name: t.name,
|
|
333
|
+
absolutePath: r
|
|
341
334
|
});
|
|
342
335
|
}
|
|
343
336
|
} else n.push({
|
|
@@ -347,76 +340,24 @@ async function I(e, t) {
|
|
|
347
340
|
return n;
|
|
348
341
|
}
|
|
349
342
|
function Ve(e) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
if (!e || e.length !== 1) return;
|
|
359
|
-
let t = L(e[0]);
|
|
360
|
-
return t === void 0 ? void 0 : {
|
|
361
|
-
type: "array",
|
|
362
|
-
items: t
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
function Ue(e) {
|
|
366
|
-
let t = e ?? [], n = t.some((e) => e === "undefined" || e === "null"), r = t.filter((e) => e !== "undefined" && e !== "null");
|
|
367
|
-
if (r.length !== 1) return;
|
|
368
|
-
let i = L(r[0]);
|
|
369
|
-
if (i !== void 0) return n ? o(i) : i;
|
|
370
|
-
}
|
|
371
|
-
function L(e) {
|
|
372
|
-
if (typeof e == "string") return Ge(e);
|
|
373
|
-
switch (e.kind) {
|
|
374
|
-
case "enum": return Ue(e.schema);
|
|
375
|
-
case "array": return He(e.schema);
|
|
376
|
-
case "object": return We(e.type, e.schema);
|
|
377
|
-
default: return;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
function We(e, t) {
|
|
381
|
-
if (t && 0 < Object.keys(t).length) return Ke(t);
|
|
382
|
-
let n = /^(?:Record<string,\s*(\w+)>|\{\s*\[key:\s*string\]:\s*(\w+);\s*\})$/.exec(e);
|
|
383
|
-
if (!n) return;
|
|
384
|
-
let r = Ge(n[1] ?? n[2]);
|
|
385
|
-
return r === void 0 ? void 0 : {
|
|
386
|
-
type: "object",
|
|
387
|
-
additionalProperties: r
|
|
388
|
-
};
|
|
389
|
-
}
|
|
390
|
-
function Ge(e) {
|
|
391
|
-
switch (e) {
|
|
392
|
-
case "string": return { type: "string" };
|
|
393
|
-
case "number": return { type: "number" };
|
|
394
|
-
case "boolean": return { type: "boolean" };
|
|
395
|
-
default: return;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
function Ke(e) {
|
|
399
|
-
let t = {}, n = [];
|
|
400
|
-
for (let [r, i] of Object.entries(e)) {
|
|
401
|
-
let e = L(i.schema);
|
|
402
|
-
if (e === void 0) return;
|
|
403
|
-
t[r] = e, i.required && n.push(r);
|
|
343
|
+
try {
|
|
344
|
+
let t = Se(k.join(e, "package.json")), n = k.dirname(t.resolve("vue/package.json"));
|
|
345
|
+
return {
|
|
346
|
+
vue: [n],
|
|
347
|
+
"vue/*": [k.join(n, "*")]
|
|
348
|
+
};
|
|
349
|
+
} catch {
|
|
350
|
+
return;
|
|
404
351
|
}
|
|
405
|
-
let r = {
|
|
406
|
-
type: "object",
|
|
407
|
-
properties: t,
|
|
408
|
-
additionalProperties: !1
|
|
409
|
-
};
|
|
410
|
-
return 0 < n.length && (r.required = n), r;
|
|
411
352
|
}
|
|
412
353
|
//#endregion
|
|
413
354
|
//#region src/node/lib/progress.ts
|
|
414
|
-
var
|
|
355
|
+
var L = [
|
|
415
356
|
"◐",
|
|
416
357
|
"◓",
|
|
417
358
|
"◑",
|
|
418
359
|
"◒"
|
|
419
|
-
],
|
|
360
|
+
], R = class {
|
|
420
361
|
logger;
|
|
421
362
|
label;
|
|
422
363
|
start;
|
|
@@ -424,8 +365,8 @@ var R = [
|
|
|
424
365
|
constructor(e, t) {
|
|
425
366
|
if (this.logger = e, this.label = t, this.start = performance.now(), process.stdout.isTTY) {
|
|
426
367
|
let e = 0;
|
|
427
|
-
process.stdout.write(j.cyan(`${
|
|
428
|
-
e = (e + 1) %
|
|
368
|
+
process.stdout.write(j.cyan(`${L[0]} ${t}`)), this.spinnerInterval = setInterval(() => {
|
|
369
|
+
e = (e + 1) % L.length, process.stdout.write(`\r${j.cyan(`${L[e]} ${this.label}`)}`);
|
|
429
370
|
}, 120).unref();
|
|
430
371
|
} else this.logger.start(t);
|
|
431
372
|
}
|
|
@@ -437,31 +378,31 @@ var R = [
|
|
|
437
378
|
done(e) {
|
|
438
379
|
this.stopSpinner(), process.stdout.isTTY && process.stdout.write("\r\x1B[K");
|
|
439
380
|
let t = Math.round(performance.now() - this.start);
|
|
440
|
-
this.logger.success(`${e} (${
|
|
381
|
+
this.logger.success(`${e} (${He(t)})`);
|
|
441
382
|
}
|
|
442
383
|
stopSpinner() {
|
|
443
384
|
this.spinnerInterval &&= (clearInterval(this.spinnerInterval), void 0);
|
|
444
385
|
}
|
|
445
386
|
};
|
|
446
|
-
function
|
|
387
|
+
function He(e) {
|
|
447
388
|
return e < 1e3 ? `${Math.round(e)}ms` : `${(e / 1e3).toFixed(1)}s`;
|
|
448
389
|
}
|
|
449
390
|
//#endregion
|
|
450
391
|
//#region src/node/build/index.ts
|
|
451
|
-
async function
|
|
392
|
+
async function Ue(e, t = {}) {
|
|
452
393
|
let { root: n, logger: r } = e, i = k.resolve(n, t.outDir ?? "dist"), a = k.join(i, ".client"), o = k.join(i, ".server");
|
|
453
394
|
await N.rm(i, {
|
|
454
395
|
recursive: !0,
|
|
455
396
|
force: !0
|
|
456
397
|
});
|
|
457
|
-
let s = await e.getTdContext(), [c,
|
|
398
|
+
let s = await e.getTdContext(), [c, u, d] = await Promise.all([
|
|
458
399
|
s.getConfig(),
|
|
459
400
|
s.listFiles(),
|
|
460
401
|
s.listSidebar()
|
|
461
|
-
]), f = c.origin ?? void 0, p = c.author ?? void 0, m = c.license ?? void 0, h = c.repo ?? void 0, g = t.base ?? c.basePath ?? "/", _ = g.endsWith("/") ? g : g + "/",
|
|
402
|
+
]), f = c.origin ?? void 0, p = c.author ?? void 0, m = c.license ?? void 0, h = c.repo ?? void 0, g = t.base ?? c.basePath ?? "/", _ = g.endsWith("/") ? g : g + "/", y = d.map((e) => ({
|
|
462
403
|
...e,
|
|
463
404
|
header: {}
|
|
464
|
-
})), b = y
|
|
405
|
+
})), b = v(y), x = JSON.stringify({
|
|
465
406
|
title: c.siteTitle,
|
|
466
407
|
description: c.siteDescription,
|
|
467
408
|
basePath: _,
|
|
@@ -492,13 +433,13 @@ async function Je(e, t = {}) {
|
|
|
492
433
|
nav: c.nav,
|
|
493
434
|
userComponents: D
|
|
494
435
|
}, {
|
|
495
|
-
theme:
|
|
496
|
-
pages:
|
|
497
|
-
siteData:
|
|
498
|
-
searchIndex:
|
|
499
|
-
pageDataEvent:
|
|
436
|
+
theme: J,
|
|
437
|
+
pages: W,
|
|
438
|
+
siteData: K,
|
|
439
|
+
searchIndex: q,
|
|
440
|
+
pageDataEvent: Y
|
|
500
441
|
})),
|
|
501
|
-
N.writeFile(T,
|
|
442
|
+
N.writeFile(T, We({
|
|
502
443
|
rootDir: c.rootDir,
|
|
503
444
|
siteConfig: x,
|
|
504
445
|
siteData: S,
|
|
@@ -508,7 +449,7 @@ async function Je(e, t = {}) {
|
|
|
508
449
|
N.writeFile(E, O)
|
|
509
450
|
]);
|
|
510
451
|
try {
|
|
511
|
-
let s =
|
|
452
|
+
let s = yn({ context: e }), m = e.createViteLogger(), h = new R(r, "Building client bundle...");
|
|
512
453
|
await fe({
|
|
513
454
|
...t.viteConfig,
|
|
514
455
|
root: n,
|
|
@@ -529,7 +470,7 @@ async function Je(e, t = {}) {
|
|
|
529
470
|
});
|
|
530
471
|
let g = await N.readdir(k.join(a, "assets")).catch(() => []);
|
|
531
472
|
h.done(`Client bundle (${g.length} chunks)`);
|
|
532
|
-
let v = new
|
|
473
|
+
let v = new R(r, "Building SSR bundle...");
|
|
533
474
|
await fe({
|
|
534
475
|
...t.viteConfig,
|
|
535
476
|
root: n,
|
|
@@ -544,12 +485,12 @@ async function Je(e, t = {}) {
|
|
|
544
485
|
emptyOutDir: !0
|
|
545
486
|
}
|
|
546
487
|
}), v.done("SSR bundle");
|
|
547
|
-
let y =
|
|
548
|
-
let t =
|
|
488
|
+
let y = u.map((e) => {
|
|
489
|
+
let t = l(e);
|
|
549
490
|
return t === "index" ? "/" : `/${t}`;
|
|
550
491
|
});
|
|
551
|
-
y.push("/"),
|
|
552
|
-
let x = new
|
|
492
|
+
y.push("/"), Ke(b.entries, "", y);
|
|
493
|
+
let x = new R(r, "Pre-rendering pages...");
|
|
553
494
|
await Pe({
|
|
554
495
|
ssrEntryPath: k.join(o, "ssr-entry.js"),
|
|
555
496
|
clientOutDir: a,
|
|
@@ -564,13 +505,13 @@ async function Je(e, t = {}) {
|
|
|
564
505
|
}), x.done(`Pre-rendered ${y.length} pages`);
|
|
565
506
|
let S = /* @__PURE__ */ new Map();
|
|
566
507
|
for (let e of d) {
|
|
567
|
-
let t =
|
|
508
|
+
let t = l(e.filepath), n = t === "index" ? "/" : `/${t}`;
|
|
568
509
|
S.set(n, e.fileMetadata.mtime);
|
|
569
510
|
}
|
|
570
511
|
let C = ke(y, _, f, S), E = [N.writeFile(k.join(i, "sitemap.xml"), C)];
|
|
571
512
|
f !== void 0 && (E.push(N.writeFile(k.join(i, "robots.txt"), Ae(f, _))), E.push(N.writeFile(k.join(i, "feed.xml"), je(d, _, f, c.siteTitle, c.siteDescription, c.lang)))), await Promise.all(E);
|
|
572
513
|
let D = k.join(a, "assets"), O = k.join(i, "assets");
|
|
573
|
-
await N.cp(D, O, { recursive: !0 }).catch(() => {}), await
|
|
514
|
+
await N.cp(D, O, { recursive: !0 }).catch(() => {}), await Ge(k.join(n, c.rootDir), i);
|
|
574
515
|
let ee = k.join(n, c.publicDir);
|
|
575
516
|
await N.cp(ee, i, { recursive: !0 }).catch(() => {});
|
|
576
517
|
} finally {
|
|
@@ -591,13 +532,13 @@ async function Je(e, t = {}) {
|
|
|
591
532
|
}
|
|
592
533
|
r.log(`\nBuild complete. Output: ${i}`);
|
|
593
534
|
}
|
|
594
|
-
function
|
|
595
|
-
let t = `/${e.rootDir}/${
|
|
535
|
+
function We(e) {
|
|
536
|
+
let t = `/${e.rootDir}/${s}`, n = JSON.parse(e.siteConfig), r = JSON.parse(e.siteData), i = r.contentTree ?? { entries: [] }, a = _(i.entries ?? [], n.title ?? ""), o = JSON.stringify({
|
|
596
537
|
...r,
|
|
597
538
|
directoryListings: a
|
|
598
|
-
}),
|
|
539
|
+
}), c = e.userComponents ?? [], l = c.map((e) => `import ${e.name} from ${JSON.stringify(e.absolutePath)};`).join("\n"), u = c.map((e) => `app.component(${JSON.stringify(e.name)}, ${e.name});`).join("\n");
|
|
599
540
|
return `
|
|
600
|
-
${[
|
|
541
|
+
${[l, "import { createTypedownApp } from 'typerighter/client';"].filter(Boolean).join("\n")}
|
|
601
542
|
import { TdDirectoryIndex, TdGlossaryIndex } from 'typerighter/client/theme-default';
|
|
602
543
|
import { isIndexUrl, getDirectoryFromPageUrl } from 'typerighter/shared';
|
|
603
544
|
import { renderToString } from 'vue/server-renderer';
|
|
@@ -634,7 +575,7 @@ function loadPageModule(pagePath) {
|
|
|
634
575
|
|
|
635
576
|
export async function createRenderer() {
|
|
636
577
|
const { app, router } = await createTypedownApp(loadPageModule, theme, ${e.siteConfig}, siteData);
|
|
637
|
-
${
|
|
578
|
+
${u}
|
|
638
579
|
return async function render(url) {
|
|
639
580
|
await router.go(url, { replace: true });
|
|
640
581
|
const html = await renderToString(app);
|
|
@@ -643,32 +584,32 @@ export async function createRenderer() {
|
|
|
643
584
|
}
|
|
644
585
|
`;
|
|
645
586
|
}
|
|
646
|
-
async function
|
|
587
|
+
async function Ge(e, t) {
|
|
647
588
|
let n = (await N.readdir(e, {
|
|
648
589
|
recursive: !0,
|
|
649
590
|
withFileTypes: !0
|
|
650
|
-
})).filter((e) => e.isFile() && !
|
|
591
|
+
})).filter((e) => e.isFile() && !c(e.name)).map(async (n) => {
|
|
651
592
|
let r = k.join(n.parentPath, n.name), i = k.relative(e, r), a = k.join(t, i);
|
|
652
593
|
return N.mkdir(k.dirname(a), { recursive: !0 }).then(() => N.copyFile(r, a));
|
|
653
594
|
});
|
|
654
595
|
await Promise.all(n);
|
|
655
596
|
}
|
|
656
|
-
function
|
|
597
|
+
function Ke(e, t, n) {
|
|
657
598
|
for (let r of e) {
|
|
658
599
|
if (r.kind !== "dir") continue;
|
|
659
600
|
let e = `${t}/${r.node.name}`;
|
|
660
|
-
|
|
601
|
+
f(r.node) || n.push(C(e)), Ke(r.node.entries, e, n);
|
|
661
602
|
}
|
|
662
603
|
}
|
|
663
604
|
//#endregion
|
|
664
605
|
//#region ../../node_modules/.pnpm/@shikijs+transformers@4.4.3/node_modules/@shikijs/transformers/dist/index.mjs
|
|
665
|
-
var
|
|
606
|
+
var qe = /(\s+\/\/)/, Je = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ye = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, Xe = [
|
|
666
607
|
[/^(<!--)(.+)(-->)$/, !1],
|
|
667
608
|
[/^(\/\*)(.+)(\*\/)$/, !1],
|
|
668
609
|
[/^(\/\/|["'#]|;{1,2}|%{1,2}|--)(.*)$/, !0],
|
|
669
610
|
[/^(\*)(.+)$/, !0]
|
|
670
611
|
];
|
|
671
|
-
function
|
|
612
|
+
function Ze(e, t, n) {
|
|
672
613
|
let r = [];
|
|
673
614
|
for (let i of e) {
|
|
674
615
|
if (n === "v3") {
|
|
@@ -677,8 +618,8 @@ function nt(e, t, n) {
|
|
|
677
618
|
let n = e.children[0];
|
|
678
619
|
if (n.type !== "text") return e;
|
|
679
620
|
let r = t === i.children.length - 1;
|
|
680
|
-
if (!
|
|
681
|
-
let a = n.value.split(
|
|
621
|
+
if (!z(n.value, r)) return e;
|
|
622
|
+
let a = n.value.split(qe);
|
|
682
623
|
if (a.length <= 1) return e;
|
|
683
624
|
let o = [a[0]];
|
|
684
625
|
for (let e = 1; e < a.length; e += 2) o.push(a[e] + (a[e + 1] || ""));
|
|
@@ -699,13 +640,13 @@ function nt(e, t, n) {
|
|
|
699
640
|
if (a.type !== "element") continue;
|
|
700
641
|
let o = a.children.at(0);
|
|
701
642
|
if (o?.type !== "text") continue;
|
|
702
|
-
let s = n === e.length - 1, c =
|
|
643
|
+
let s = n === e.length - 1, c = z(o.value, s), l;
|
|
703
644
|
if (!c && n > 0 && o.value.trim().startsWith("[!code")) {
|
|
704
645
|
let t = e[n - 1];
|
|
705
646
|
if (t?.type === "element") {
|
|
706
647
|
let n = t.children.at(0);
|
|
707
648
|
if (n?.type === "text" && n.value.includes("//")) {
|
|
708
|
-
let l =
|
|
649
|
+
let l = z(n.value + o.value, s);
|
|
709
650
|
if (l) {
|
|
710
651
|
c = l, r.push({
|
|
711
652
|
info: l,
|
|
@@ -722,7 +663,7 @@ function nt(e, t, n) {
|
|
|
722
663
|
}
|
|
723
664
|
if (c) {
|
|
724
665
|
if (t && !s && n !== 0) {
|
|
725
|
-
let t =
|
|
666
|
+
let t = Qe(e[n - 1], "{") && Qe(e[n + 1], "}");
|
|
726
667
|
r.push({
|
|
727
668
|
info: c,
|
|
728
669
|
line: i,
|
|
@@ -744,16 +685,16 @@ function nt(e, t, n) {
|
|
|
744
685
|
}
|
|
745
686
|
return r;
|
|
746
687
|
}
|
|
747
|
-
function
|
|
688
|
+
function Qe(e, t) {
|
|
748
689
|
if (e.type !== "element") return !1;
|
|
749
690
|
let n = e.children[0];
|
|
750
691
|
return n.type === "text" && n.value.trim() === t;
|
|
751
692
|
}
|
|
752
|
-
function
|
|
693
|
+
function z(e, t) {
|
|
753
694
|
let n = e.trimStart(), r = e.length - n.length;
|
|
754
695
|
n = n.trimEnd();
|
|
755
696
|
let i = e.length - n.length - r;
|
|
756
|
-
for (let [e, a] of
|
|
697
|
+
for (let [e, a] of Xe) {
|
|
757
698
|
if (a && !t) continue;
|
|
758
699
|
let o = e.exec(n);
|
|
759
700
|
if (o) return [
|
|
@@ -763,22 +704,22 @@ function B(e, t) {
|
|
|
763
704
|
];
|
|
764
705
|
}
|
|
765
706
|
}
|
|
766
|
-
function
|
|
767
|
-
let t = e.match(
|
|
707
|
+
function $e(e) {
|
|
708
|
+
let t = e.match(Je);
|
|
768
709
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
|
|
769
710
|
}
|
|
770
|
-
function
|
|
771
|
-
let t = e.match(
|
|
711
|
+
function et(e) {
|
|
712
|
+
let t = e.match(Ye);
|
|
772
713
|
return t && t[1].trim().length === 0 ? e.slice(0, t.index).trimEnd() : e;
|
|
773
714
|
}
|
|
774
|
-
function
|
|
715
|
+
function tt(e, t, n, r) {
|
|
775
716
|
return r ??= "v3", {
|
|
776
717
|
name: e,
|
|
777
718
|
code(e) {
|
|
778
719
|
let i = e.children.filter((e) => e.type === "element"), a = [];
|
|
779
720
|
e.data ??= {};
|
|
780
721
|
let o = e.data;
|
|
781
|
-
o._shiki_notation ??=
|
|
722
|
+
o._shiki_notation ??= Ze(i, ["jsx", "tsx"].includes(this.options.lang), r);
|
|
782
723
|
let s = o._shiki_notation;
|
|
783
724
|
for (let e of s) {
|
|
784
725
|
if (e.info[1].length === 0) continue;
|
|
@@ -786,7 +727,7 @@ function ot(e, t, n, r) {
|
|
|
786
727
|
e.isLineCommentOnly && r !== "v1" && o++;
|
|
787
728
|
let s = !1;
|
|
788
729
|
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;
|
|
789
|
-
r === "v1" ? e.info[1] =
|
|
730
|
+
r === "v1" ? e.info[1] = $e(e.info[1]) : r === "v3" && (e.info[1] = et(e.info[1]));
|
|
790
731
|
let c = e.info[1].trim().length === 0;
|
|
791
732
|
if (c && (e.info[1] = ""), c && e.isLineCommentOnly) a.push(e.line);
|
|
792
733
|
else if (c && e.isJsxStyle) e.line.children.splice(e.line.children.indexOf(e.token) - 1, 3);
|
|
@@ -811,44 +752,44 @@ function ot(e, t, n, r) {
|
|
|
811
752
|
}
|
|
812
753
|
};
|
|
813
754
|
}
|
|
814
|
-
var
|
|
815
|
-
function
|
|
755
|
+
var nt = /\{([\d,-]+)\}/;
|
|
756
|
+
function rt(e) {
|
|
816
757
|
if (!e) return null;
|
|
817
|
-
let t = e.match(
|
|
758
|
+
let t = e.match(nt);
|
|
818
759
|
return t ? t[1].split(",").flatMap((e) => {
|
|
819
760
|
let t = e.split("-").map((e) => Number.parseInt(e, 10));
|
|
820
761
|
return t.length === 1 ? [t[0]] : Array.from({ length: t[1] - t[0] + 1 }, (e, n) => t[0] + n);
|
|
821
762
|
}) : null;
|
|
822
763
|
}
|
|
823
|
-
var
|
|
824
|
-
function
|
|
764
|
+
var it = Symbol("highlighted-lines");
|
|
765
|
+
function at(e = {}) {
|
|
825
766
|
let { className: t = "highlighted", zeroIndexed: n = !1 } = e;
|
|
826
767
|
return {
|
|
827
768
|
name: "@shikijs/transformers:meta-highlight",
|
|
828
769
|
line(e, r) {
|
|
829
770
|
if (!this.options.meta?.__raw) return;
|
|
830
771
|
let i = this.meta;
|
|
831
|
-
i[
|
|
832
|
-
let a = i[
|
|
772
|
+
i[it] ??= rt(this.options.meta.__raw);
|
|
773
|
+
let a = i[it] ?? [], o = n ? r - 1 : r;
|
|
833
774
|
return a.includes(o) && this.addClassToHast(e, t), e;
|
|
834
775
|
}
|
|
835
776
|
};
|
|
836
777
|
}
|
|
837
|
-
var
|
|
838
|
-
function
|
|
839
|
-
return e.replace(
|
|
778
|
+
var ot = /[.*+?^${}()|[\]\\]/g;
|
|
779
|
+
function st(e) {
|
|
780
|
+
return e.replace(ot, "\\$&");
|
|
840
781
|
}
|
|
841
|
-
function
|
|
782
|
+
function B(e = {}, t = "@shikijs/transformers:notation-map") {
|
|
842
783
|
let { classMap: n = {}, classActivePre: r = void 0, classActiveCode: i = void 0 } = e;
|
|
843
|
-
return
|
|
784
|
+
return tt(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(st).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
|
|
844
785
|
let u = Number.parseInt(a.slice(1), 10);
|
|
845
786
|
for (let e = l; e < Math.min(l + u, c.length); e++) this.addClassToHast(c[e], n[t]);
|
|
846
787
|
return r && this.addClassToHast(this.pre, r), i && this.addClassToHast(this.code, i), !0;
|
|
847
788
|
}, e.matchAlgorithm);
|
|
848
789
|
}
|
|
849
|
-
function
|
|
790
|
+
function ct(e = {}) {
|
|
850
791
|
let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
|
|
851
|
-
return
|
|
792
|
+
return B({
|
|
852
793
|
classMap: {
|
|
853
794
|
"++": t,
|
|
854
795
|
"--": n
|
|
@@ -858,31 +799,31 @@ function pt(e = {}) {
|
|
|
858
799
|
matchAlgorithm: e.matchAlgorithm
|
|
859
800
|
}, "@shikijs/transformers:notation-diff");
|
|
860
801
|
}
|
|
861
|
-
function
|
|
802
|
+
function lt(e = {}) {
|
|
862
803
|
let { classMap: t = {
|
|
863
804
|
error: ["highlighted", "error"],
|
|
864
805
|
warning: ["highlighted", "warning"],
|
|
865
806
|
info: ["highlighted", "info"]
|
|
866
807
|
}, classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
867
|
-
return
|
|
808
|
+
return B({
|
|
868
809
|
classMap: t,
|
|
869
810
|
classActivePre: n,
|
|
870
811
|
classActiveCode: r,
|
|
871
812
|
matchAlgorithm: e.matchAlgorithm
|
|
872
813
|
}, "@shikijs/transformers:notation-error-level");
|
|
873
814
|
}
|
|
874
|
-
function
|
|
815
|
+
function ut(e = {}) {
|
|
875
816
|
let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
|
|
876
|
-
return
|
|
817
|
+
return B({
|
|
877
818
|
classMap: { focus: t },
|
|
878
819
|
classActivePre: n,
|
|
879
820
|
classActiveCode: r,
|
|
880
821
|
matchAlgorithm: e.matchAlgorithm
|
|
881
822
|
}, "@shikijs/transformers:notation-focus");
|
|
882
823
|
}
|
|
883
|
-
function
|
|
824
|
+
function dt(e = {}) {
|
|
884
825
|
let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
|
|
885
|
-
return
|
|
826
|
+
return B({
|
|
886
827
|
classMap: {
|
|
887
828
|
highlight: t,
|
|
888
829
|
hl: t
|
|
@@ -894,42 +835,42 @@ function gt(e = {}) {
|
|
|
894
835
|
}
|
|
895
836
|
//#endregion
|
|
896
837
|
//#region src/node/lib/render/highlight/language.ts
|
|
897
|
-
var
|
|
838
|
+
var ft = [
|
|
898
839
|
"shellscript",
|
|
899
840
|
"shell",
|
|
900
841
|
"bash",
|
|
901
842
|
"sh",
|
|
902
843
|
"zsh"
|
|
903
844
|
];
|
|
904
|
-
function
|
|
905
|
-
return
|
|
845
|
+
function pt(e) {
|
|
846
|
+
return ft.includes(e);
|
|
906
847
|
}
|
|
907
|
-
var
|
|
908
|
-
function
|
|
909
|
-
return
|
|
848
|
+
var mt = /^[a-zA-Z0-9-_]+/;
|
|
849
|
+
function ht(e) {
|
|
850
|
+
return mt.exec(e)?.[0] || "";
|
|
910
851
|
}
|
|
911
852
|
//#endregion
|
|
912
853
|
//#region src/node/lib/render/highlight/index.ts
|
|
913
|
-
var
|
|
854
|
+
var gt = new FinalizationRegistry((e) => {
|
|
914
855
|
e();
|
|
915
|
-
}),
|
|
856
|
+
}), V = {
|
|
916
857
|
light: "github-light",
|
|
917
858
|
dark: "github-dark"
|
|
918
859
|
};
|
|
919
|
-
async function
|
|
920
|
-
let e = await
|
|
921
|
-
themes: [
|
|
860
|
+
async function _t() {
|
|
861
|
+
let e = await Te({
|
|
862
|
+
themes: [V.light, V.dark],
|
|
922
863
|
langs: []
|
|
923
864
|
}), t = [
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
865
|
+
at(),
|
|
866
|
+
ct(),
|
|
867
|
+
ut({
|
|
927
868
|
classActiveLine: "has-focus",
|
|
928
869
|
classActivePre: "has-focused-lines"
|
|
929
870
|
}),
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
871
|
+
dt(),
|
|
872
|
+
lt(),
|
|
873
|
+
vt(),
|
|
933
874
|
{
|
|
934
875
|
name: "typedown:add-dir",
|
|
935
876
|
pre(e) {
|
|
@@ -938,19 +879,19 @@ async function St() {
|
|
|
938
879
|
}
|
|
939
880
|
], n = new Set(e.getLoadedLanguages());
|
|
940
881
|
async function r(r, i, a) {
|
|
941
|
-
let o =
|
|
882
|
+
let o = ht(i);
|
|
942
883
|
if (o) {
|
|
943
884
|
let e = i;
|
|
944
885
|
i = o.toLowerCase(), a = e.slice(i.length).replace(/(?<!=)\{/g, " {") + " " + a, a = a.trim().replace(/\s+/g, " ");
|
|
945
886
|
}
|
|
946
887
|
i ||= "txt";
|
|
947
888
|
try {
|
|
948
|
-
!
|
|
889
|
+
!De(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
|
|
949
890
|
} catch {
|
|
950
891
|
ae.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
|
|
951
892
|
}
|
|
952
893
|
r = r.trimEnd();
|
|
953
|
-
let s =
|
|
894
|
+
let s = Ee(r, i, e);
|
|
954
895
|
return await e.loadLanguage(...s), e.codeToHtml(r, {
|
|
955
896
|
lang: i,
|
|
956
897
|
transformers: [...t, {
|
|
@@ -967,7 +908,7 @@ async function St() {
|
|
|
967
908
|
}
|
|
968
909
|
}],
|
|
969
910
|
meta: { __raw: a },
|
|
970
|
-
themes:
|
|
911
|
+
themes: V,
|
|
971
912
|
defaultColor: !1,
|
|
972
913
|
colorReplacements: {
|
|
973
914
|
"github-light": {
|
|
@@ -992,13 +933,13 @@ async function St() {
|
|
|
992
933
|
}
|
|
993
934
|
});
|
|
994
935
|
}
|
|
995
|
-
return
|
|
936
|
+
return gt.register(r, () => e.dispose()), r;
|
|
996
937
|
}
|
|
997
|
-
function
|
|
938
|
+
function vt() {
|
|
998
939
|
return {
|
|
999
940
|
name: "typedown:disable-shell-symbol-select",
|
|
1000
941
|
tokens(e) {
|
|
1001
|
-
if (
|
|
942
|
+
if (pt(this.options.lang)) for (let t of e) {
|
|
1002
943
|
if (t.length < 2) continue;
|
|
1003
944
|
let e = t[0].content.trim();
|
|
1004
945
|
(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));
|
|
@@ -1008,23 +949,23 @@ function Ct() {
|
|
|
1008
949
|
}
|
|
1009
950
|
//#endregion
|
|
1010
951
|
//#region src/node/lib/render/postprocess.ts
|
|
1011
|
-
var
|
|
1012
|
-
async function
|
|
1013
|
-
return e = await
|
|
952
|
+
var yt;
|
|
953
|
+
async function bt(e) {
|
|
954
|
+
return e = await Ct(e), e = Dt(e), e;
|
|
1014
955
|
}
|
|
1015
|
-
function
|
|
1016
|
-
return
|
|
956
|
+
function xt() {
|
|
957
|
+
return yt ||= _t(), yt;
|
|
1017
958
|
}
|
|
1018
|
-
var
|
|
1019
|
-
function
|
|
959
|
+
var St = /<pre class="td-code-placeholder"([^>]*)><code>([\s\S]*?)<\/code><\/pre>/g;
|
|
960
|
+
function H(e, t) {
|
|
1020
961
|
return e.match(RegExp(`${t}="([^"]*)"`))?.[1];
|
|
1021
962
|
}
|
|
1022
|
-
async function
|
|
1023
|
-
let t = await
|
|
963
|
+
async function Ct(e) {
|
|
964
|
+
let t = await xt(), n = [...e.matchAll(St)];
|
|
1024
965
|
if (n.length === 0) return e;
|
|
1025
966
|
let r = await Promise.all(n.map(async (e) => {
|
|
1026
|
-
let n = e[1], r =
|
|
1027
|
-
return
|
|
967
|
+
let n = e[1], r = H(n, "data-lang") ?? "", i = H(n, "data-meta") ?? "", a = H(n, "data-title"), o = H(n, "data-line-numbers"), s = h(e[2]);
|
|
968
|
+
return wt(await t(s, r, i), r, {
|
|
1028
969
|
title: a,
|
|
1029
970
|
lineNumbers: o
|
|
1030
971
|
});
|
|
@@ -1035,39 +976,39 @@ async function Ot(e) {
|
|
|
1035
976
|
}
|
|
1036
977
|
return i;
|
|
1037
978
|
}
|
|
1038
|
-
function
|
|
979
|
+
function wt(e, t, n) {
|
|
1039
980
|
t ||= "txt";
|
|
1040
981
|
let r = n.title ?? t.replace(/_/g, " "), i = ["language-" + t];
|
|
1041
982
|
n.title && i.push("has-title"), n.lineNumbers !== void 0 && i.push("line-numbers-mode");
|
|
1042
|
-
let a = `<div class="${i.join(" ")}"><button title="Copy code" data-copied="Copied" class="copy"></button><span class="lang">${
|
|
983
|
+
let a = `<div class="${i.join(" ")}"><button title="Copy code" data-copied="Copied" class="copy"></button><span class="lang">${m(r)}</span>` + e;
|
|
1043
984
|
if (n.lineNumbers !== void 0) {
|
|
1044
985
|
let e = parseInt(n.lineNumbers) || 1, t = a.slice(a.indexOf("<code>"), a.indexOf("</code>")).split("\n").length, r = [...Array(t)].map((t, n) => `<span class="line-number">${n + e}</span><br>`).join("");
|
|
1045
986
|
a += `<div class="line-numbers-wrapper" aria-hidden="true">${r}</div>`;
|
|
1046
987
|
}
|
|
1047
988
|
return a += "</div>", a;
|
|
1048
989
|
}
|
|
1049
|
-
var
|
|
1050
|
-
function
|
|
1051
|
-
return e = e.replace(
|
|
990
|
+
var Tt = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, Et = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
|
|
991
|
+
function Dt(e) {
|
|
992
|
+
return e = e.replace(Tt, (e, t) => At(t, !1)), e = e.replace(Et, (e, t) => At(t, !0)), e;
|
|
1052
993
|
}
|
|
1053
|
-
var
|
|
1054
|
-
function
|
|
994
|
+
var Ot = /`([^`]+)`|\$([^$]+)\$/g;
|
|
995
|
+
function kt(e) {
|
|
1055
996
|
let t = 0, n = "";
|
|
1056
|
-
for (let r of e.matchAll(
|
|
1057
|
-
if (n +=
|
|
997
|
+
for (let r of e.matchAll(Ot)) {
|
|
998
|
+
if (n += m(e.slice(t, r.index)), r[1] !== void 0) n += `<code>${m(r[1])}</code>`;
|
|
1058
999
|
else if (r[2] !== void 0) try {
|
|
1059
1000
|
n += ie.renderToString(r[2], { throwOnError: !1 });
|
|
1060
1001
|
} catch {
|
|
1061
|
-
n +=
|
|
1002
|
+
n += m(r[0]);
|
|
1062
1003
|
}
|
|
1063
1004
|
t = r.index + r[0].length;
|
|
1064
1005
|
}
|
|
1065
|
-
return n +=
|
|
1006
|
+
return n += m(e.slice(t)), n;
|
|
1066
1007
|
}
|
|
1067
|
-
function
|
|
1008
|
+
function At(e, t) {
|
|
1068
1009
|
let n = t ? "div" : "span";
|
|
1069
1010
|
try {
|
|
1070
|
-
return ie.renderToString(
|
|
1011
|
+
return ie.renderToString(h(e), {
|
|
1071
1012
|
throwOnError: !1,
|
|
1072
1013
|
displayMode: t
|
|
1073
1014
|
});
|
|
@@ -1077,24 +1018,24 @@ function Ft(e, t) {
|
|
|
1077
1018
|
}
|
|
1078
1019
|
//#endregion
|
|
1079
1020
|
//#region src/node/lib/render/vue.ts
|
|
1080
|
-
async function
|
|
1081
|
-
let r = t.title || t.label || (
|
|
1021
|
+
async function U(e, t, n) {
|
|
1022
|
+
let r = t.title || t.label || (p(n) ? S(n, (await e.getConfig()).siteTitle) : w(n));
|
|
1082
1023
|
return {
|
|
1083
1024
|
schema: t.schema,
|
|
1084
1025
|
schemaLabel: t.schemaLabel,
|
|
1085
1026
|
label: t.label,
|
|
1086
1027
|
icon: t.icon,
|
|
1087
1028
|
frontmatter: t.header ?? {},
|
|
1088
|
-
headings:
|
|
1029
|
+
headings: Mt(t.headings),
|
|
1089
1030
|
title: r,
|
|
1090
|
-
titleHtml:
|
|
1031
|
+
titleHtml: kt(r),
|
|
1091
1032
|
filepath: n,
|
|
1092
1033
|
fileMetadata: t.fileMetadata,
|
|
1093
1034
|
seoMetadata: t.seoMetadata
|
|
1094
1035
|
};
|
|
1095
1036
|
}
|
|
1096
|
-
async function
|
|
1097
|
-
let r = await
|
|
1037
|
+
async function jt(e, t, n) {
|
|
1038
|
+
let r = await bt(t.content), i = await U(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
|
|
1098
1039
|
return {
|
|
1099
1040
|
vueSrc: [
|
|
1100
1041
|
"<script>",
|
|
@@ -1106,12 +1047,12 @@ async function It(e, t, n) {
|
|
|
1106
1047
|
`import { pageData } from ${a}`,
|
|
1107
1048
|
"useRouter().route.data = pageData",
|
|
1108
1049
|
"<\/script>",
|
|
1109
|
-
`<template><div class="typedown-content">\n${
|
|
1050
|
+
`<template><div class="typedown-content">\n${Nt(r)}\n</div></template>`
|
|
1110
1051
|
].join("\n"),
|
|
1111
1052
|
pageData: i
|
|
1112
1053
|
};
|
|
1113
1054
|
}
|
|
1114
|
-
function
|
|
1055
|
+
function Mt(e) {
|
|
1115
1056
|
let t = [], n = [];
|
|
1116
1057
|
for (let r of e) {
|
|
1117
1058
|
let e = {
|
|
@@ -1127,17 +1068,17 @@ function Lt(e) {
|
|
|
1127
1068
|
}
|
|
1128
1069
|
return t;
|
|
1129
1070
|
}
|
|
1130
|
-
function
|
|
1071
|
+
function Nt(e) {
|
|
1131
1072
|
return e.replaceAll("{{", "{{").replaceAll("}}", "}}");
|
|
1132
1073
|
}
|
|
1133
1074
|
//#endregion
|
|
1134
1075
|
//#region src/node/plugin/vite/constants.ts
|
|
1135
|
-
var
|
|
1136
|
-
|
|
1137
|
-
var
|
|
1076
|
+
var Pt = "@typedown/app", Ft = "\0@typedown/app", W = "@typedown/pages", It = "\0" + W;
|
|
1077
|
+
W + "";
|
|
1078
|
+
var G = "\0@typedown/pages?resource=", K = "@typedown/site-data", Lt = "\0@typedown/site-data", q = "@typedown/search-index", Rt = "\0@typedown/search-index", J = "@typedown/theme", zt = "\0@typedown/theme", Y = "typedown:page-data";
|
|
1138
1079
|
//#endregion
|
|
1139
1080
|
//#region src/node/plugin/vite/virtual/utils.ts
|
|
1140
|
-
function
|
|
1081
|
+
function X(e, t) {
|
|
1141
1082
|
let n = e.moduleGraph.getModuleById(t);
|
|
1142
1083
|
if (n) {
|
|
1143
1084
|
e.moduleGraph.invalidateModule(n);
|
|
@@ -1154,11 +1095,16 @@ function Z(e, t) {
|
|
|
1154
1095
|
}
|
|
1155
1096
|
//#endregion
|
|
1156
1097
|
//#region src/node/plugin/vite/virtual/app.ts
|
|
1157
|
-
var
|
|
1098
|
+
var Bt = class {
|
|
1099
|
+
mountPath;
|
|
1100
|
+
constructor(e = "") {
|
|
1101
|
+
this.mountPath = e;
|
|
1102
|
+
}
|
|
1158
1103
|
async load(e) {
|
|
1159
1104
|
let t = await (await e.getTdContext()).getConfig(), n = await I(t.components, e.root);
|
|
1160
1105
|
return Re({
|
|
1161
1106
|
rootDir: t.rootDir,
|
|
1107
|
+
mountPath: this.mountPath,
|
|
1162
1108
|
basePath: t.basePath,
|
|
1163
1109
|
origin: t.origin ?? void 0,
|
|
1164
1110
|
lang: t.lang,
|
|
@@ -1170,40 +1116,44 @@ var Gt = class {
|
|
|
1170
1116
|
nav: t.nav,
|
|
1171
1117
|
userComponents: n
|
|
1172
1118
|
}, {
|
|
1173
|
-
theme:
|
|
1174
|
-
pages:
|
|
1175
|
-
siteData:
|
|
1176
|
-
searchIndex:
|
|
1177
|
-
pageDataEvent:
|
|
1119
|
+
theme: J,
|
|
1120
|
+
pages: W,
|
|
1121
|
+
siteData: K,
|
|
1122
|
+
searchIndex: q,
|
|
1123
|
+
pageDataEvent: Y
|
|
1178
1124
|
});
|
|
1179
1125
|
}
|
|
1180
1126
|
invalidate(e) {
|
|
1181
|
-
|
|
1127
|
+
X(e, Ft);
|
|
1128
|
+
}
|
|
1129
|
+
}, Vt = class {
|
|
1130
|
+
mountPath;
|
|
1131
|
+
constructor(e = "") {
|
|
1132
|
+
this.mountPath = e;
|
|
1182
1133
|
}
|
|
1183
|
-
}, Kt = class {
|
|
1184
1134
|
async load(e) {
|
|
1185
|
-
let t = (await e.getConfig()).rootDir ?? ".";
|
|
1186
|
-
return `export const pages = import.meta.glob('${
|
|
1135
|
+
let t = (await e.getConfig()).rootDir ?? ".", n = [this.mountPath, t === "." ? "" : t].filter(Boolean);
|
|
1136
|
+
return `export const pages = import.meta.glob('${0 < n.length ? `/${n.join("/")}/**/*.{td,md}` : "/**/*.{td,md}"}');`;
|
|
1187
1137
|
}
|
|
1188
1138
|
resolvePageData(e) {
|
|
1189
1139
|
if (e.startsWith("@typedown/pages?resource=")) return "\0" + e;
|
|
1190
1140
|
}
|
|
1191
1141
|
isPageDataModule(e) {
|
|
1192
|
-
return e.startsWith(
|
|
1142
|
+
return e.startsWith(G);
|
|
1193
1143
|
}
|
|
1194
1144
|
async loadPageData(e, t) {
|
|
1195
|
-
let n = decodeURIComponent(e.slice(
|
|
1145
|
+
let n = decodeURIComponent(e.slice(G.length)), r = await U(t, await t.getFile(n), n);
|
|
1196
1146
|
return `export const pageData = ${JSON.stringify(r)}`;
|
|
1197
1147
|
}
|
|
1198
1148
|
invalidatePageData(e, t) {
|
|
1199
|
-
|
|
1149
|
+
X(e, G + encodeURIComponent(t));
|
|
1200
1150
|
}
|
|
1201
1151
|
sendPageData(e, t, n) {
|
|
1202
1152
|
t.getFile(n).then(async (r) => {
|
|
1203
|
-
let i = await
|
|
1153
|
+
let i = await U(t, r, n);
|
|
1204
1154
|
e.hot.send({
|
|
1205
1155
|
type: "custom",
|
|
1206
|
-
event:
|
|
1156
|
+
event: Y,
|
|
1207
1157
|
data: {
|
|
1208
1158
|
filepath: n,
|
|
1209
1159
|
pageData: i
|
|
@@ -1214,21 +1164,21 @@ var Gt = class {
|
|
|
1214
1164
|
});
|
|
1215
1165
|
}
|
|
1216
1166
|
invalidate(e) {
|
|
1217
|
-
|
|
1167
|
+
X(e, It);
|
|
1218
1168
|
}
|
|
1219
|
-
},
|
|
1169
|
+
}, Ht = class {
|
|
1220
1170
|
async load(e) {
|
|
1221
1171
|
return ze((await (await e.getTdContext()).getConfig()).layout ?? void 0, e.root);
|
|
1222
1172
|
}
|
|
1223
1173
|
invalidate(e) {
|
|
1224
|
-
|
|
1174
|
+
X(e, zt);
|
|
1225
1175
|
}
|
|
1226
|
-
},
|
|
1176
|
+
}, Ut = "\0@typedown/site-data", Wt = {
|
|
1227
1177
|
ready: !1,
|
|
1228
1178
|
contentTree: { entries: [] },
|
|
1229
1179
|
schemas: {},
|
|
1230
1180
|
directoryListings: {}
|
|
1231
|
-
},
|
|
1181
|
+
}, Gt = class {
|
|
1232
1182
|
data;
|
|
1233
1183
|
scan(e) {
|
|
1234
1184
|
let t = ye("**/*.td", {
|
|
@@ -1238,38 +1188,38 @@ var Gt = class {
|
|
|
1238
1188
|
filepath: e,
|
|
1239
1189
|
label: w(e),
|
|
1240
1190
|
header: {}
|
|
1241
|
-
})), n =
|
|
1191
|
+
})), n = v(t);
|
|
1242
1192
|
this.data = {
|
|
1243
1193
|
contentTree: n,
|
|
1244
1194
|
schemas: {},
|
|
1245
|
-
directoryListings:
|
|
1195
|
+
directoryListings: _(n.entries, "")
|
|
1246
1196
|
};
|
|
1247
1197
|
}
|
|
1248
1198
|
load(e) {
|
|
1249
1199
|
let t = this.data ? {
|
|
1250
1200
|
ready: !0,
|
|
1251
1201
|
...this.data
|
|
1252
|
-
} :
|
|
1202
|
+
} : Wt;
|
|
1253
1203
|
return `export default ${JSON.stringify(t)}`;
|
|
1254
1204
|
}
|
|
1255
1205
|
clear() {
|
|
1256
1206
|
this.data = void 0;
|
|
1257
1207
|
}
|
|
1258
|
-
fetch =
|
|
1259
|
-
|
|
1208
|
+
fetch = b((e, t) => {
|
|
1209
|
+
Kt(e).then((e) => {
|
|
1260
1210
|
this.data = e, t && this.invalidate(t);
|
|
1261
1211
|
}).catch((e) => {
|
|
1262
1212
|
console.error("[typedown] Failed to fetch site data:", e instanceof Error ? e.message : e);
|
|
1263
1213
|
});
|
|
1264
1214
|
}, 200);
|
|
1265
1215
|
async fetchSync(e) {
|
|
1266
|
-
this.data = await
|
|
1216
|
+
this.data = await Kt(e);
|
|
1267
1217
|
}
|
|
1268
1218
|
invalidate(e) {
|
|
1269
|
-
|
|
1219
|
+
X(e, Ut);
|
|
1270
1220
|
}
|
|
1271
1221
|
};
|
|
1272
|
-
async function
|
|
1222
|
+
async function Kt(e) {
|
|
1273
1223
|
let [t, n, r] = await Promise.all([
|
|
1274
1224
|
e.getConfig(),
|
|
1275
1225
|
e.listSidebar(),
|
|
@@ -1277,21 +1227,21 @@ async function Q(e) {
|
|
|
1277
1227
|
]), i = await Promise.all(r.map(async (t) => [t, (await e.getSchema(t)).properties])), a = Object.fromEntries(i), o = n.map((e) => ({
|
|
1278
1228
|
...e,
|
|
1279
1229
|
header: {}
|
|
1280
|
-
})), s =
|
|
1230
|
+
})), s = v(o);
|
|
1281
1231
|
return {
|
|
1282
1232
|
contentTree: s,
|
|
1283
1233
|
schemas: a,
|
|
1284
|
-
directoryListings:
|
|
1234
|
+
directoryListings: _(s.entries, t.siteTitle)
|
|
1285
1235
|
};
|
|
1286
1236
|
}
|
|
1287
1237
|
//#endregion
|
|
1288
1238
|
//#region src/node/lib/search-indexer/index.ts
|
|
1289
|
-
var
|
|
1239
|
+
var qt = class {
|
|
1290
1240
|
index;
|
|
1291
1241
|
constructor() {
|
|
1292
1242
|
this.index = new le({
|
|
1293
|
-
fields:
|
|
1294
|
-
storeFields:
|
|
1243
|
+
fields: g,
|
|
1244
|
+
storeFields: x
|
|
1295
1245
|
});
|
|
1296
1246
|
}
|
|
1297
1247
|
addAll(e) {
|
|
@@ -1310,19 +1260,19 @@ var Zt = class {
|
|
|
1310
1260
|
};
|
|
1311
1261
|
//#endregion
|
|
1312
1262
|
//#region src/node/lib/search-indexer/scan.ts
|
|
1313
|
-
function
|
|
1314
|
-
let n =
|
|
1263
|
+
function Jt(e, t) {
|
|
1264
|
+
let n = Qt(e), r = [];
|
|
1315
1265
|
for (let t of n) {
|
|
1316
|
-
let n =
|
|
1266
|
+
let n = Zt(e, t);
|
|
1317
1267
|
n && r.push(n);
|
|
1318
1268
|
}
|
|
1319
1269
|
t.addAll(r);
|
|
1320
1270
|
}
|
|
1321
|
-
function
|
|
1322
|
-
let i =
|
|
1323
|
-
i ? r.addPage(i) : r.discardPage(n
|
|
1271
|
+
function Yt(e, n, r) {
|
|
1272
|
+
let i = Zt(e, A(e, n));
|
|
1273
|
+
i ? r.addPage(i) : r.discardPage(t(n));
|
|
1324
1274
|
}
|
|
1325
|
-
function
|
|
1275
|
+
function Xt(e, t) {
|
|
1326
1276
|
let n = w(e);
|
|
1327
1277
|
if (!t.startsWith("---")) return {
|
|
1328
1278
|
title: n,
|
|
@@ -1339,22 +1289,22 @@ function en(e, t) {
|
|
|
1339
1289
|
body: a
|
|
1340
1290
|
};
|
|
1341
1291
|
}
|
|
1342
|
-
function
|
|
1292
|
+
function Zt(e, n) {
|
|
1343
1293
|
let r;
|
|
1344
1294
|
try {
|
|
1345
|
-
r = be(
|
|
1295
|
+
r = be(n, "utf-8");
|
|
1346
1296
|
} catch {
|
|
1347
1297
|
return;
|
|
1348
1298
|
}
|
|
1349
1299
|
if (!r.trim()) return;
|
|
1350
|
-
let i =
|
|
1300
|
+
let i = n.slice(e.length + 1), { title: a, body: o } = Xt(i, r);
|
|
1351
1301
|
return {
|
|
1352
|
-
id:
|
|
1302
|
+
id: t(i),
|
|
1353
1303
|
title: a,
|
|
1354
1304
|
text: `${a}\n${o}`
|
|
1355
1305
|
};
|
|
1356
1306
|
}
|
|
1357
|
-
function
|
|
1307
|
+
function Qt(e) {
|
|
1358
1308
|
return ye("**/*.td", {
|
|
1359
1309
|
cwd: e,
|
|
1360
1310
|
exclude: (e) => e.startsWith("_")
|
|
@@ -1362,33 +1312,33 @@ function nn(e) {
|
|
|
1362
1312
|
}
|
|
1363
1313
|
//#endregion
|
|
1364
1314
|
//#region src/node/plugin/vite/virtual/search-index.ts
|
|
1365
|
-
var
|
|
1366
|
-
indexer = new
|
|
1315
|
+
var $t = "\0@typedown/search-index", en = class {
|
|
1316
|
+
indexer = new qt();
|
|
1367
1317
|
load(e) {
|
|
1368
1318
|
return `export default ${JSON.stringify(this.indexer.serialize())}`;
|
|
1369
1319
|
}
|
|
1370
1320
|
index(e) {
|
|
1371
|
-
|
|
1321
|
+
Jt(e, this.indexer);
|
|
1372
1322
|
}
|
|
1373
1323
|
reindex(e, t) {
|
|
1374
|
-
|
|
1324
|
+
Yt(e, t, this.indexer);
|
|
1375
1325
|
}
|
|
1376
1326
|
invalidate(e) {
|
|
1377
|
-
|
|
1327
|
+
X(e, $t);
|
|
1378
1328
|
}
|
|
1379
|
-
},
|
|
1380
|
-
function
|
|
1329
|
+
}, tn = Se(import.meta.url);
|
|
1330
|
+
function nn() {
|
|
1381
1331
|
return [{
|
|
1382
1332
|
find: "vue/server-renderer",
|
|
1383
|
-
replacement:
|
|
1333
|
+
replacement: tn.resolve("vue/server-renderer")
|
|
1384
1334
|
}, {
|
|
1385
1335
|
find: "vue",
|
|
1386
|
-
replacement:
|
|
1336
|
+
replacement: tn.resolve("vue/dist/vue.runtime.esm-bundler.js")
|
|
1387
1337
|
}];
|
|
1388
1338
|
}
|
|
1389
1339
|
//#endregion
|
|
1390
1340
|
//#region src/node/plugin/vite/middleware/vault-assets.ts
|
|
1391
|
-
var
|
|
1341
|
+
var rn = {
|
|
1392
1342
|
jpg: "image/jpeg",
|
|
1393
1343
|
jpeg: "image/jpeg",
|
|
1394
1344
|
png: "image/png",
|
|
@@ -1406,50 +1356,145 @@ var cn = {
|
|
|
1406
1356
|
woff: "font/woff",
|
|
1407
1357
|
ttf: "font/ttf"
|
|
1408
1358
|
};
|
|
1409
|
-
function
|
|
1410
|
-
return (i,
|
|
1411
|
-
if (!i.url || i.method !== "GET" ||
|
|
1412
|
-
let c =
|
|
1413
|
-
if (c.startsWith("/@") || c.startsWith("/node_modules")) return
|
|
1414
|
-
let l = r
|
|
1359
|
+
function an(t, r) {
|
|
1360
|
+
return (i, o, s) => {
|
|
1361
|
+
if (!i.url || i.method !== "GET" || o.writableEnded) return s();
|
|
1362
|
+
let c = e(i.url);
|
|
1363
|
+
if (c.startsWith("/@") || c.startsWith("/node_modules")) return s();
|
|
1364
|
+
let l = n(r.basePath), u = (l && c.startsWith(l) ? c.slice(l.length) : c).replace(/^\//, ""), d = A(t.config.root, r.rootDirectory, u);
|
|
1415
1365
|
if (ve(d)) try {
|
|
1416
1366
|
let e = xe(d);
|
|
1417
1367
|
if (e.isFile()) {
|
|
1418
|
-
let t =
|
|
1419
|
-
|
|
1368
|
+
let t = rn[a(d).slice(1).toLowerCase()] ?? "application/octet-stream";
|
|
1369
|
+
o.setHeader("Content-Type", t), o.setHeader("Content-Length", e.size), _e(d).pipe(o);
|
|
1420
1370
|
return;
|
|
1421
1371
|
}
|
|
1422
1372
|
} catch {}
|
|
1423
|
-
|
|
1373
|
+
s();
|
|
1424
1374
|
};
|
|
1425
1375
|
}
|
|
1426
1376
|
//#endregion
|
|
1427
1377
|
//#region src/node/plugin/vite/middleware/virtual-html.ts
|
|
1428
|
-
function
|
|
1378
|
+
function on(t, r, i) {
|
|
1429
1379
|
return (a, o, s) => {
|
|
1430
1380
|
if (!a.url) return s();
|
|
1431
|
-
let c =
|
|
1381
|
+
let c = n(e(a.url)), l = n(i.basePath);
|
|
1432
1382
|
if (c.startsWith("/@") || c.startsWith("/node_modules") || !c.startsWith(l)) return s();
|
|
1433
1383
|
let u = c.slice(l.length);
|
|
1434
1384
|
if (u.startsWith("/@") || u.startsWith("/node_modules") || c.includes(".") && !c.endsWith("/index.html")) return s();
|
|
1435
|
-
|
|
1436
|
-
let n = await
|
|
1385
|
+
r.getConfig().then(async (e) => {
|
|
1386
|
+
let n = await t.transformIndexHtml(a.url ?? "", sn(i, e));
|
|
1437
1387
|
o.setHeader("Content-Type", "text/html"), o.end(n);
|
|
1438
1388
|
}).catch(() => s());
|
|
1439
1389
|
};
|
|
1440
1390
|
}
|
|
1441
|
-
function
|
|
1391
|
+
function sn(e, t) {
|
|
1442
1392
|
return e.devHtml === void 0 && (e.devHtml = ne({
|
|
1443
1393
|
title: t.siteTitle,
|
|
1444
1394
|
description: t.siteDescription,
|
|
1445
1395
|
base: "/",
|
|
1446
|
-
entryScript:
|
|
1396
|
+
entryScript: Pt
|
|
1447
1397
|
})), e.devHtml;
|
|
1448
1398
|
}
|
|
1449
1399
|
//#endregion
|
|
1450
|
-
//#region src/node/
|
|
1451
|
-
|
|
1400
|
+
//#region src/node/lib/prop-schema.ts
|
|
1401
|
+
function cn(e, t, n) {
|
|
1402
|
+
let r = {};
|
|
1403
|
+
for (let i of e) {
|
|
1404
|
+
let e = `./${k.relative(t, i.absolutePath)}`;
|
|
1405
|
+
try {
|
|
1406
|
+
let t = n.getComponentMeta(i.absolutePath), a = {}, o = !1;
|
|
1407
|
+
for (let e of t.props) {
|
|
1408
|
+
if (e.global) continue;
|
|
1409
|
+
let t = Z(e.schema);
|
|
1410
|
+
if (t !== void 0) {
|
|
1411
|
+
let n = { schema: e.required ? t : u(t) };
|
|
1412
|
+
e.description && (n.description = e.description), a[e.name] = n, o = !0;
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
let s = t.slots.map((e) => e.name).filter((e) => e !== "default");
|
|
1416
|
+
r[i.name] = {
|
|
1417
|
+
source: e,
|
|
1418
|
+
props: o ? a : void 0,
|
|
1419
|
+
slots: 0 < s.length ? s : void 0
|
|
1420
|
+
};
|
|
1421
|
+
} catch {
|
|
1422
|
+
r[i.name] = { source: e };
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
return r;
|
|
1426
|
+
}
|
|
1427
|
+
function ln(e) {
|
|
1428
|
+
if (!e || e.length !== 1) return;
|
|
1429
|
+
let t = Z(e[0]);
|
|
1430
|
+
return t === void 0 ? void 0 : {
|
|
1431
|
+
type: "array",
|
|
1432
|
+
items: t
|
|
1433
|
+
};
|
|
1434
|
+
}
|
|
1435
|
+
function un(e, t) {
|
|
1436
|
+
if (t && 0 < Object.keys(t).length) return fn(t);
|
|
1437
|
+
let n = /^(?:Record<string,\s*(\w+)>|\{\s*\[key:\s*string\]:\s*(\w+);\s*\})$/.exec(e);
|
|
1438
|
+
if (!n) return;
|
|
1439
|
+
let r = dn(n[1] ?? n[2]);
|
|
1440
|
+
return r === void 0 ? void 0 : {
|
|
1441
|
+
type: "object",
|
|
1442
|
+
additionalProperties: r
|
|
1443
|
+
};
|
|
1444
|
+
}
|
|
1445
|
+
function dn(e) {
|
|
1446
|
+
switch (e) {
|
|
1447
|
+
case "string": return { type: "string" };
|
|
1448
|
+
case "number": return { type: "number" };
|
|
1449
|
+
case "boolean": return { type: "boolean" };
|
|
1450
|
+
default: return;
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
function fn(e) {
|
|
1454
|
+
let t = {}, n = [];
|
|
1455
|
+
for (let [r, i] of Object.entries(e)) {
|
|
1456
|
+
let e = Z(i.schema);
|
|
1457
|
+
if (e === void 0) return;
|
|
1458
|
+
t[r] = e, i.required && n.push(r);
|
|
1459
|
+
}
|
|
1460
|
+
let r = {
|
|
1461
|
+
type: "object",
|
|
1462
|
+
properties: t,
|
|
1463
|
+
additionalProperties: !1
|
|
1464
|
+
};
|
|
1465
|
+
return 0 < n.length && (r.required = n), r;
|
|
1466
|
+
}
|
|
1467
|
+
function Z(e) {
|
|
1468
|
+
if (typeof e == "string") return dn(e);
|
|
1469
|
+
switch (e.kind) {
|
|
1470
|
+
case "enum": return pn(e.schema);
|
|
1471
|
+
case "array": return ln(e.schema);
|
|
1472
|
+
case "object": return un(e.type, e.schema);
|
|
1473
|
+
default: return;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1452
1476
|
function pn(e) {
|
|
1477
|
+
let t = e ?? [], n = t.some((e) => e === "undefined" || e === "null"), r = t.filter((e) => e !== "undefined" && e !== "null");
|
|
1478
|
+
if (r.length !== 0) {
|
|
1479
|
+
if (r.length === 1) {
|
|
1480
|
+
let e = Z(r[0]);
|
|
1481
|
+
return e === void 0 ? void 0 : n ? u(e) : e;
|
|
1482
|
+
}
|
|
1483
|
+
if (r.every((e) => typeof e == "object" && e.kind === "literal")) {
|
|
1484
|
+
let e = [];
|
|
1485
|
+
for (let t of r) {
|
|
1486
|
+
if (typeof t == "string" || !("value" in t)) return;
|
|
1487
|
+
e.push(t.value);
|
|
1488
|
+
}
|
|
1489
|
+
let t = { enum: e };
|
|
1490
|
+
return n ? u(t) : t;
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
//#endregion
|
|
1495
|
+
//#region src/node/plugin/vite/subplugins/component-contract.ts
|
|
1496
|
+
var mn = ".typedown/components.json";
|
|
1497
|
+
function hn(e) {
|
|
1453
1498
|
return {
|
|
1454
1499
|
name: "vite-plugin-typedown-component-contract",
|
|
1455
1500
|
async buildStart() {
|
|
@@ -1462,35 +1507,51 @@ function pn(e) {
|
|
|
1462
1507
|
let n = e();
|
|
1463
1508
|
n && n.getTdContext().then(async (e) => {
|
|
1464
1509
|
let r = await e.getConfig(), i = await I(r.components, n.root);
|
|
1465
|
-
$(n.root, i),
|
|
1510
|
+
$(n.root, i), gn(t, r.components, n.root);
|
|
1466
1511
|
}).catch(() => {});
|
|
1467
1512
|
}
|
|
1468
1513
|
};
|
|
1469
1514
|
}
|
|
1470
|
-
function
|
|
1515
|
+
function gn(e, t, n) {
|
|
1471
1516
|
let r = new Set(t.filter((e) => e.kind === "explicit").map((e) => M(k.resolve(n, e.source)))), i = new Set(t.filter((e) => e.kind === "dir").map((e) => M(k.resolve(n, e.path))));
|
|
1472
1517
|
for (let t of i) e.watcher.add(t);
|
|
1473
1518
|
let a = (a) => {
|
|
1474
|
-
|
|
1519
|
+
_n(a, r, i) && (e.config.logger.info("[typedown] component changed, rebuilding contract..."), I(t, n).then((e) => $(n, e)).catch(() => {}));
|
|
1475
1520
|
};
|
|
1476
1521
|
e.watcher.on("change", a), e.watcher.on("add", a), e.watcher.on("unlink", a);
|
|
1477
1522
|
}
|
|
1478
|
-
function
|
|
1523
|
+
function _n(e, t, n) {
|
|
1479
1524
|
if (!e.endsWith(".vue")) return !1;
|
|
1480
1525
|
let r = M(e);
|
|
1481
1526
|
if (t.has(r)) return !0;
|
|
1482
1527
|
for (let e of n) if (r.startsWith(e + "/")) return !0;
|
|
1483
1528
|
return !1;
|
|
1484
1529
|
}
|
|
1530
|
+
function vn() {
|
|
1531
|
+
try {
|
|
1532
|
+
let e = k.dirname(me(import.meta.url)), t = k.resolve(e, "builtin-components.json"), n = JSON.parse(P.readFileSync(t, "utf-8"));
|
|
1533
|
+
for (let e of Object.values(n)) if (typeof e == "object" && e && "source" in e) {
|
|
1534
|
+
let t = e;
|
|
1535
|
+
typeof t.source == "string" && t.source.startsWith("./") && (t.source = `typerighter/${t.source.slice(2)}`);
|
|
1536
|
+
}
|
|
1537
|
+
return n;
|
|
1538
|
+
} catch {
|
|
1539
|
+
return {};
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
var Q = vn();
|
|
1485
1543
|
function $(e, t) {
|
|
1486
|
-
if (t.length === 0) return;
|
|
1487
|
-
let n =
|
|
1488
|
-
|
|
1544
|
+
if (!(0 < Object.keys(Q).length) && t.length === 0) return;
|
|
1545
|
+
let n = 0 < t.length ? cn(t, e, Be(e)) : {}, r = {
|
|
1546
|
+
...Q,
|
|
1547
|
+
...n
|
|
1548
|
+
}, i = k.join(e, mn);
|
|
1549
|
+
P.mkdirSync(k.dirname(i), { recursive: !0 }), P.writeFileSync(i, JSON.stringify(r, null, 2));
|
|
1489
1550
|
}
|
|
1490
1551
|
//#endregion
|
|
1491
1552
|
//#region src/node/plugin/vite/index.ts
|
|
1492
|
-
function
|
|
1493
|
-
let t = e.context, n,
|
|
1553
|
+
function yn(e = {}) {
|
|
1554
|
+
let t = e.context, n, i, a, o = new Bt(e.root ?? ""), s = new Ht(), l = new Vt(e.root ?? ""), u = new Gt(), d = new en(), f = {
|
|
1494
1555
|
devHtml: void 0,
|
|
1495
1556
|
basePath: "/",
|
|
1496
1557
|
rootDirectory: "vault"
|
|
@@ -1507,7 +1568,7 @@ function gn(e = {}) {
|
|
|
1507
1568
|
let r = e.root ? A(n.root ?? process.cwd(), e.root) : ce(n.root ?? process.cwd());
|
|
1508
1569
|
t = se(r);
|
|
1509
1570
|
}
|
|
1510
|
-
|
|
1571
|
+
a = n.base ?? "/";
|
|
1511
1572
|
let r = await (await p()).getConfig();
|
|
1512
1573
|
return {
|
|
1513
1574
|
base: n.base ?? r.basePath,
|
|
@@ -1516,38 +1577,38 @@ function gn(e = {}) {
|
|
|
1516
1577
|
port: n.server?.port ?? 8686,
|
|
1517
1578
|
strictPort: n.server?.strictPort ?? !1
|
|
1518
1579
|
},
|
|
1519
|
-
resolve: { alias:
|
|
1580
|
+
resolve: { alias: nn() },
|
|
1520
1581
|
ssr: { noExternal: ["typerighter"] }
|
|
1521
1582
|
};
|
|
1522
1583
|
},
|
|
1523
1584
|
configResolved(e) {
|
|
1524
|
-
|
|
1585
|
+
i = A(e.root, e.build.outDir);
|
|
1525
1586
|
},
|
|
1526
1587
|
async buildStart() {
|
|
1527
1588
|
if (n) return;
|
|
1528
1589
|
let e = await p(), t = await e.getConfig(), r = A(t.rootDir);
|
|
1529
1590
|
d.index(r), await u.fetchSync(e);
|
|
1530
1591
|
let i = await e.checkVault();
|
|
1531
|
-
if (
|
|
1592
|
+
if (wn(i.diagnostics), 0 < i.errorCount) {
|
|
1532
1593
|
let e = i.diagnostics.filter((e) => e.severity === "error").map((e) => ` ${e.filepath}:${e.line}:${e.column} - ${e.message} (${e.code})`);
|
|
1533
1594
|
this.error(`Vault check failed with ${i.errorCount} error(s):\n${e.join("\n")}`);
|
|
1534
1595
|
}
|
|
1535
1596
|
},
|
|
1536
1597
|
resolveId(e) {
|
|
1537
|
-
if (e === "/@typedown/app" || e === "@typedown/app") return
|
|
1538
|
-
if (e === "@typedown/pages") return
|
|
1539
|
-
if (e.startsWith("@typedown/pages?resource=")) return
|
|
1540
|
-
if (e === "@typedown/site-data") return
|
|
1541
|
-
if (e === "@typedown/search-index") return
|
|
1542
|
-
if (e === "@typedown/theme") return
|
|
1598
|
+
if (e === "/@typedown/app" || e === "@typedown/app") return Ft;
|
|
1599
|
+
if (e === "@typedown/pages") return It;
|
|
1600
|
+
if (e.startsWith("@typedown/pages?resource=")) return l.resolvePageData(e);
|
|
1601
|
+
if (e === "@typedown/site-data") return Lt;
|
|
1602
|
+
if (e === "@typedown/search-index") return Rt;
|
|
1603
|
+
if (e === "@typedown/theme") return zt;
|
|
1543
1604
|
},
|
|
1544
1605
|
async load(e) {
|
|
1545
|
-
if (
|
|
1606
|
+
if (l.isPageDataModule(e)) return l.loadPageData(e, await p());
|
|
1546
1607
|
if (e !== "\0@typedown/search-index" && e !== "\0@typedown/site-data" && e !== "\0@typedown/pages" && e !== "\0@typedown/app" && e !== "\0@typedown/theme") return;
|
|
1547
1608
|
let n = await p();
|
|
1548
1609
|
if (e === "\0@typedown/search-index") return d.load(n);
|
|
1549
1610
|
if (e === "\0@typedown/site-data") return u.load(n);
|
|
1550
|
-
if (e === "\0@typedown/pages") return
|
|
1611
|
+
if (e === "\0@typedown/pages") return l.load(n);
|
|
1551
1612
|
if (e === "\0@typedown/app") return o.load(t);
|
|
1552
1613
|
if (e === "\0@typedown/theme") return s.load(t);
|
|
1553
1614
|
},
|
|
@@ -1556,11 +1617,11 @@ function gn(e = {}) {
|
|
|
1556
1617
|
let t = await p(), r = await t.getConfig(), i = A(r.rootDir);
|
|
1557
1618
|
d.index(i), u.scan(i), u.fetch(t, n), e.httpServer?.once("listening", async () => {
|
|
1558
1619
|
let e = await t.checkVault();
|
|
1559
|
-
0 < e.diagnostics.length && (console.error(""),
|
|
1620
|
+
0 < e.diagnostics.length && (console.error(""), wn(e.diagnostics));
|
|
1560
1621
|
}), t.rpc.onConfigChanged(() => {
|
|
1561
|
-
n && (f.devHtml = void 0, u.clear(), o.invalidate(n), s.invalidate(n),
|
|
1622
|
+
n && (f.devHtml = void 0, u.clear(), o.invalidate(n), s.invalidate(n), l.invalidate(n), xn(n), u.fetch(t, n));
|
|
1562
1623
|
}), t.rpc.onComponentContractChanged(() => {
|
|
1563
|
-
n && (o.invalidate(n),
|
|
1624
|
+
n && (o.invalidate(n), xn(n));
|
|
1564
1625
|
});
|
|
1565
1626
|
function a(...e) {
|
|
1566
1627
|
n && t.getConfig().then((t) => {
|
|
@@ -1569,8 +1630,8 @@ function gn(e = {}) {
|
|
|
1569
1630
|
for (let i of e) {
|
|
1570
1631
|
let e = M(A(n.config.root, t.rootDir, i)), a = n.moduleGraph.getModulesByFile(e);
|
|
1571
1632
|
if (a?.size) {
|
|
1572
|
-
for (let e of a) n.moduleGraph.invalidateModule(e), r.push(
|
|
1573
|
-
|
|
1633
|
+
for (let e of a) n.moduleGraph.invalidateModule(e), r.push(Cn(e));
|
|
1634
|
+
l.invalidatePageData(n, i);
|
|
1574
1635
|
}
|
|
1575
1636
|
}
|
|
1576
1637
|
0 < r.length && n.hot.send({
|
|
@@ -1580,29 +1641,29 @@ function gn(e = {}) {
|
|
|
1580
1641
|
}).catch(() => {});
|
|
1581
1642
|
}
|
|
1582
1643
|
t.rpc.onContentUpdated(({ filepath: e, affectedFiles: r = [] }) => {
|
|
1583
|
-
n && (d.reindex(i, e), d.invalidate(n),
|
|
1644
|
+
n && (d.reindex(i, e), d.invalidate(n), l.invalidate(n), u.fetch(t, n), a(e, ...r), l.sendPageData(n, t, e));
|
|
1584
1645
|
}), t.rpc.onContentDeleted(({ filepath: e }) => {
|
|
1585
|
-
n && (d.reindex(i, e), d.invalidate(n),
|
|
1646
|
+
n && (d.reindex(i, e), d.invalidate(n), l.invalidate(n), u.fetch(t, n), a(e));
|
|
1586
1647
|
});
|
|
1587
|
-
function
|
|
1588
|
-
n && (u.clear(),
|
|
1648
|
+
function c() {
|
|
1649
|
+
n && (u.clear(), Sn(n), u.fetch(t, n));
|
|
1589
1650
|
}
|
|
1590
|
-
t.rpc.onSchemaUpdated(
|
|
1651
|
+
t.rpc.onSchemaUpdated(c), t.rpc.onSchemaDeleted(c);
|
|
1591
1652
|
let m = await t.getConfig();
|
|
1592
1653
|
f.basePath = m.basePath, f.rootDirectory = m.rootDir, t.rpc.onConfigChanged((e) => {
|
|
1593
1654
|
f.basePath = e.basePath, f.rootDirectory = e.rootDir, f.devHtml = void 0;
|
|
1594
|
-
}), e.middlewares.use(
|
|
1655
|
+
}), e.middlewares.use(an(e, f)), e.middlewares.use(on(e, t, f));
|
|
1595
1656
|
},
|
|
1596
1657
|
async transform(e, t) {
|
|
1597
1658
|
let n = t.split("?")[0];
|
|
1598
|
-
if (!
|
|
1659
|
+
if (!c(n)) return;
|
|
1599
1660
|
if (T(n)) return {
|
|
1600
|
-
code: `<script>import theme from '${
|
|
1661
|
+
code: `<script>import theme from '${J}'; import { TdNotFound } from 'typerighter/client/theme-default'; export default theme.NotFound || TdNotFound; export const pageData = { frontmatter: {}, headings: [], title: '' };<\/script>`,
|
|
1601
1662
|
map: null
|
|
1602
1663
|
};
|
|
1603
|
-
let
|
|
1664
|
+
let i = await p(), a = await i.getConfig(), o = r(n, a.rootDir);
|
|
1604
1665
|
try {
|
|
1605
|
-
let { vueSrc: e } = await
|
|
1666
|
+
let { vueSrc: e } = await jt(i, await i.getFile(o), o);
|
|
1606
1667
|
return {
|
|
1607
1668
|
code: e,
|
|
1608
1669
|
map: null
|
|
@@ -1614,13 +1675,13 @@ function gn(e = {}) {
|
|
|
1614
1675
|
}
|
|
1615
1676
|
},
|
|
1616
1677
|
handleHotUpdate({ file: e }) {
|
|
1617
|
-
if (
|
|
1678
|
+
if (c(e)) return [];
|
|
1618
1679
|
},
|
|
1619
1680
|
async closeBundle() {
|
|
1620
1681
|
if (!e.context && t) try {
|
|
1621
|
-
let e = (await (await t.getTdContext()).getConfig()).basePath, n = e.startsWith(
|
|
1622
|
-
await
|
|
1623
|
-
outDir: A(
|
|
1682
|
+
let e = (await (await t.getTdContext()).getConfig()).basePath, n = e.startsWith(a) ? e.slice(a.length) : e.replace(/^\//, "");
|
|
1683
|
+
await Ue(t, {
|
|
1684
|
+
outDir: A(i, n),
|
|
1624
1685
|
base: e
|
|
1625
1686
|
});
|
|
1626
1687
|
} finally {
|
|
@@ -1633,26 +1694,26 @@ function gn(e = {}) {
|
|
|
1633
1694
|
});
|
|
1634
1695
|
return [
|
|
1635
1696
|
m,
|
|
1636
|
-
|
|
1697
|
+
hn(() => t),
|
|
1637
1698
|
h,
|
|
1638
1699
|
...ue()
|
|
1639
1700
|
];
|
|
1640
1701
|
}
|
|
1641
|
-
function
|
|
1702
|
+
function bn(e) {
|
|
1642
1703
|
return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
|
|
1643
1704
|
}
|
|
1644
|
-
function
|
|
1645
|
-
for (let t of
|
|
1705
|
+
function xn(e) {
|
|
1706
|
+
for (let t of bn(e)) e.moduleGraph.invalidateModule(t);
|
|
1646
1707
|
e.hot.send({ type: "full-reload" });
|
|
1647
1708
|
}
|
|
1648
|
-
function
|
|
1649
|
-
let t =
|
|
1709
|
+
function Sn(e) {
|
|
1710
|
+
let t = bn(e).map((t) => (e.moduleGraph.invalidateModule(t), Cn(t)));
|
|
1650
1711
|
0 < t.length && e.hot.send({
|
|
1651
1712
|
type: "update",
|
|
1652
1713
|
updates: t
|
|
1653
1714
|
});
|
|
1654
1715
|
}
|
|
1655
|
-
function
|
|
1716
|
+
function Cn(e) {
|
|
1656
1717
|
return {
|
|
1657
1718
|
type: "js-update",
|
|
1658
1719
|
path: e.url,
|
|
@@ -1660,11 +1721,11 @@ function bn(e) {
|
|
|
1660
1721
|
timestamp: Date.now()
|
|
1661
1722
|
};
|
|
1662
1723
|
}
|
|
1663
|
-
function
|
|
1724
|
+
function wn(e) {
|
|
1664
1725
|
for (let t of e) {
|
|
1665
1726
|
let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? j.red("error") : j.yellow("warn");
|
|
1666
1727
|
console.error(` ${n} ${e} ${t.message} ${j.dim(`(${t.code})`)}`);
|
|
1667
1728
|
}
|
|
1668
1729
|
}
|
|
1669
1730
|
//#endregion
|
|
1670
|
-
export {
|
|
1731
|
+
export { K as a, q as i, W as n, J as o, Y as r, Ue as s, yn as t };
|