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.
Files changed (43) hide show
  1. package/dist/{app-N-phWAP_.js → app-GI_8rzn8.js} +69 -68
  2. package/dist/{cli-DVQB43sa.js → cli-CNSEVT0i.js} +5 -5
  3. package/dist/cli.js +1 -1
  4. package/dist/client/app/index.d.ts +8 -0
  5. package/dist/client/app/index.d.ts.map +1 -1
  6. package/dist/client/theme-default.js +174 -174
  7. package/dist/client.js +1 -1
  8. package/dist/index.js +2 -2
  9. package/dist/{init-pLTVuBAf.js → init-BplW2rUB.js} +7 -4
  10. package/dist/jsonld-Dxk0xvAr.js +84 -0
  11. package/dist/node/build/index.d.ts.map +1 -1
  12. package/dist/node/build/prerender.d.ts +9 -0
  13. package/dist/node/build/prerender.d.ts.map +1 -1
  14. package/dist/node/build/seo/feed.d.ts +3 -0
  15. package/dist/node/build/seo/feed.d.ts.map +1 -0
  16. package/dist/node/build/seo/index.d.ts +5 -0
  17. package/dist/node/build/seo/index.d.ts.map +1 -0
  18. package/dist/node/build/seo/jsonld.d.ts +10 -0
  19. package/dist/node/build/seo/jsonld.d.ts.map +1 -0
  20. package/dist/node/build/seo/page.d.ts +6 -0
  21. package/dist/node/build/seo/page.d.ts.map +1 -0
  22. package/dist/node/build/seo/sitemap.d.ts +3 -0
  23. package/dist/node/build/seo/sitemap.d.ts.map +1 -0
  24. package/dist/node/lib/htmlTemplate.d.ts +30 -0
  25. package/dist/node/lib/htmlTemplate.d.ts.map +1 -0
  26. package/dist/node/lib/render/vue.d.ts.map +1 -1
  27. package/dist/node/plugin/vite/virtual/app.d.ts +2 -0
  28. package/dist/node/plugin/vite/virtual/app.d.ts.map +1 -1
  29. package/dist/prerenderWorker.js +32 -20
  30. package/dist/shared/types/ssg.d.ts +6 -0
  31. package/dist/shared/types/ssg.d.ts.map +1 -1
  32. package/dist/shared/utils/time.d.ts +1 -0
  33. package/dist/shared/utils/time.d.ts.map +1 -1
  34. package/dist/shared/utils/url.d.ts +1 -0
  35. package/dist/shared/utils/url.d.ts.map +1 -1
  36. package/dist/{shared-Lh4FwI36.js → shared-LPNgvigl.js} +47 -41
  37. package/dist/shared.js +2 -2
  38. package/dist/{vite-XB1qqgp7.js → vite-D6x3T--t.js} +462 -391
  39. package/dist/vite.js +1 -1
  40. package/package.json +7 -7
  41. package/dist/html-template-S2xsTyW5.js +0 -42
  42. package/dist/node/lib/html-template.d.ts +0 -22
  43. package/dist/node/lib/html-template.d.ts.map +0 -1
@@ -1,30 +1,30 @@
1
- import { F as e, I as t, K as n, M as r, P as i, R as a, S as o, T as s, U as c, W as l, _ as u, g as d, h as f, m as p, p as m, q as h, s as g, u as _, v, w as y, z as b } from "./shared-Lh4FwI36.js";
2
- import { t as x } from "./html-template-S2xsTyW5.js";
3
- import { t as S } from "./temml-DZbhOfRE.js";
4
- import { a as C, i as w, n as ee, r as te } from "./context-CNTdcpo4.js";
5
- import { t as ne } from "./es-ClqUVRJn.js";
6
- import T, { resolve as E } from "node:path";
7
- import D from "picocolors";
8
- import re from "@tailwindcss/vite";
9
- import ie from "@vitejs/plugin-vue";
10
- import { build as O, normalizePath as ae } from "vite";
11
- import k from "node:fs/promises";
12
- import { fileURLToPath as oe } from "node:url";
13
- import se from "node:os";
14
- import { Worker as ce } from "node:worker_threads";
15
- import { createHighlighter as le, guessEmbeddedLanguages as ue, isSpecialLang as de } from "shiki";
16
- import { createReadStream as fe, existsSync as pe, globSync as A, readFileSync as me, statSync as he } from "node:fs";
17
- import { createRequire as ge } from "node:module";
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 _e = class {
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(se.cpus().length / 2));
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 ce(e.filename, { workerData: e.workerData }), n = { worker: t };
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
- }, ve = 64;
63
- async function ye(e) {
64
- let { clientEntry: t, cssFiles: n, jsFiles: r } = await Se(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;
65
- e.pagePaths.length >= ve ? await be(e, t, i) : await xe(e, t, i);
66
- }
67
- async function be(e, t, n) {
68
- let r = new _e({
69
- filename: T.resolve(oe(import.meta.url), "../prerenderWorker.js"),
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 = T.join(e.outDir, n.fileName);
81
- await k.mkdir(T.dirname(o), { recursive: !0 }), await k.writeFile(o, n.html), i++, e.progress?.update(i, a);
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 xe(e, t, n) {
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 = x({
93
- title: s.pageData.title,
94
- description: s.pageData.frontmatter.description === void 0 ? "" : String(s.pageData.frontmatter.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: e.base + o.replace(/^\//, ""),
159
+ canonicalUrl: f,
160
+ ogImagePath: w(s.pageData),
161
+ jsonLdBlocks: p,
99
162
  headExtra: n,
100
163
  appContent: s.html
101
- }), l = o === "/" ? "index.html" : `${o.replace(/^\//, "")}.html`, u = T.join(e.outDir, l);
102
- await k.mkdir(T.dirname(u), { recursive: !0 }), await k.writeFile(u, c), a++, e.progress?.update(a, i);
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 Se(e) {
107
- let t = T.join(e, ".vite", "manifest.json"), n = await k.readFile(t, "utf-8"), r = JSON.parse(n), i = "", a = [], o = [];
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 j = [
180
+ var F = [
118
181
  "◐",
119
182
  "◓",
120
183
  "◑",
121
184
  "◒"
122
- ], M = class {
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(D.cyan(`${j[0]} ${t}`)), this.spinnerInterval = setInterval(() => {
131
- e = (e + 1) % j.length, process.stdout.write(`\r${D.cyan(`${j[e]} ${this.label}`)}`);
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} (${Ce(t)})`);
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 Ce(e) {
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 we = "typerighter/client/theme-default";
155
- async function N(e, t = {}) {
156
- let { root: n, logger: r } = e, i = T.resolve(n, t.outDir ?? "dist"), o = T.join(i, ".client"), s = T.join(i, ".server");
157
- await k.rm(i, {
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 e.getTdContext(), [l, u, d, f] = await Promise.all([
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 = t.base ?? l.basePath ?? "/", h = p.endsWith("/") ? p : p + "/", g = d.map((e) => ({
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
- })), _ = m(g), v = JSON.stringify({
232
+ })), x = b(y), S = JSON.stringify({
170
233
  title: l.siteTitle,
171
234
  description: l.siteDescription,
172
- basePath: h,
235
+ basePath: v,
236
+ origin: p,
237
+ lang: l.lang,
173
238
  nav: l.nav
174
- }), y = JSON.stringify({
239
+ }), C = JSON.stringify({
175
240
  ready: !0,
176
- contentTree: _
177
- }), b = T.join(n, "node_modules", ".typerighter");
178
- await k.mkdir(b, { recursive: !0 });
179
- let x = T.join(b, "client-entry.js"), S = T.join(b, "ssr-entry.js");
180
- await Promise.all([k.writeFile(x, X({
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: h,
247
+ basePath: v,
248
+ origin: p,
249
+ lang: l.lang,
183
250
  siteTitle: l.siteTitle,
184
251
  siteDescription: l.siteDescription,
185
- repo: l.repo,
186
- author: l.author,
187
- license: l.license,
252
+ repo: g,
253
+ author: m,
254
+ license: h,
188
255
  nav: l.nav
189
- })), k.writeFile(S, Te({
256
+ })), N.writeFile(E, Me({
190
257
  rootDir: l.rootDir,
191
- layoutImport: we,
192
- siteConfig: v,
193
- siteData: y
258
+ layoutImport: je,
259
+ siteConfig: S,
260
+ siteData: C
194
261
  }))]);
195
262
  try {
196
- let c = At({ context: e }), d = e.createViteLogger(), f = new M(r, "Building client bundle...");
197
- await O({
198
- ...t.viteConfig,
199
- root: n,
200
- base: h,
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: d,
269
+ customLogger: f,
203
270
  logLevel: "silent",
204
271
  build: {
205
- ...t.viteConfig?.build,
272
+ ...n.viteConfig?.build,
206
273
  outDir: o,
207
274
  manifest: !0,
208
275
  emptyOutDir: !0,
209
276
  rollupOptions: {
210
- ...t.viteConfig?.build?.rollupOptions,
211
- input: x
277
+ ...n.viteConfig?.build?.rollupOptions,
278
+ input: T
212
279
  }
213
280
  }
214
281
  });
215
- let p = await k.readdir(T.join(o, "assets")).catch(() => []);
216
- f.done(`Client bundle (${p.length} chunks)`);
217
- let m = new M(r, "Building SSR bundle...");
218
- await O({
219
- ...t.viteConfig,
220
- root: n,
221
- base: h,
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: d,
290
+ customLogger: f,
224
291
  logLevel: "silent",
225
292
  build: {
226
- ...t.viteConfig?.build,
293
+ ...n.viteConfig?.build,
227
294
  outDir: s,
228
- ssr: S,
295
+ ssr: E,
229
296
  emptyOutDir: !0
230
297
  }
231
- }), m.done("SSR bundle");
232
- let g = u.map((e) => {
233
- let t = a(e);
234
- return t === "index" ? "/" : `/${t}`;
298
+ }), _.done("SSR bundle");
299
+ let y = u.map((t) => {
300
+ let n = e(t);
301
+ return n === "index" ? "/" : `/${n}`;
235
302
  });
236
- g.push("/"), P(_.entries, "", g);
237
- let v = new M(r, "Pre-rendering pages...");
238
- await ye({
239
- ssrEntryPath: T.join(s, "ssr-entry.js"),
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: i,
242
- base: h,
243
- pagePaths: g,
308
+ outDir: a,
309
+ base: v,
310
+ origin: p,
311
+ lang: l.lang,
312
+ pagePaths: y,
244
313
  siteTitle: l.siteTitle,
245
- progress: v
246
- }), v.done(`Pre-rendered ${g.length} pages`);
247
- let y = De(g, h);
248
- await k.writeFile(T.join(i, "sitemap.xml"), y);
249
- let b = T.join(o, "assets"), C = T.join(i, "assets");
250
- await k.cp(b, C, { recursive: !0 }).catch(() => {}), await Ee(T.join(n, l.rootDir), i);
251
- let w = T.join(n, l.publicDir);
252
- await k.cp(w, i, { recursive: !0 }).catch(() => {});
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
- k.rm(b, {
330
+ N.rm(w, {
256
331
  recursive: !0,
257
332
  force: !0
258
333
  }),
259
- k.rm(o, {
334
+ N.rm(o, {
260
335
  recursive: !0,
261
336
  force: !0
262
337
  }),
263
- k.rm(s, {
338
+ N.rm(s, {
264
339
  recursive: !0,
265
340
  force: !0
266
341
  })
267
342
  ]);
268
343
  }
269
- r.log(`\nBuild complete. Output: ${i}`);
344
+ i.log(`\nBuild complete. Output: ${a}`);
270
345
  }
271
- function Te(e) {
272
- let t = `/${e.rootDir}/${l}`, n = JSON.parse(e.siteConfig), r = JSON.parse(e.siteData), i = r.contentTree ?? { entries: [] }, a = p(i.entries ?? [], n.title ?? ""), o = JSON.stringify({
273
- ...r,
274
- directoryListings: a
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(c)};
286
- const siteData = ${o};
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 Ee(t, n) {
321
- let r = (await k.readdir(t, {
395
+ async function Ne(e, t) {
396
+ let n = (await N.readdir(e, {
322
397
  recursive: !0,
323
398
  withFileTypes: !0
324
- })).filter((t) => t.isFile() && !e(t.name)).map(async (e) => {
325
- let r = T.join(e.parentPath, e.name), i = T.relative(t, r), a = T.join(n, i);
326
- return k.mkdir(T.dirname(a), { recursive: !0 }).then(() => k.copyFile(r, a));
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(r);
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 P(e, t, n) {
338
- for (let r of e) {
339
- if (r.kind !== "dir") continue;
340
- let e = `${t}/${r.node.name}`;
341
- f(r.node) || n.push(o(e)), P(r.node.entries, e, n);
405
+ function R(e, n, r) {
406
+ for (let i of e) {
407
+ if (i.kind !== "dir") continue;
408
+ let e = `${n}/${i.node.name}`;
409
+ _(i.node) || r.push(t(e)), R(i.node.entries, e, r);
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 Oe = /(\s+\/\/)/, ke = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ae = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, je = [
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 Me(e, t, n) {
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 (!I(n.value, r)) return e;
362
- let a = n.value.split(Oe);
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 = I(o.value, s), l;
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 = I(n.value + o.value, s);
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 = F(e[n - 1], "{") && F(e[n + 1], "}");
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 F(e, t) {
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 I(e, t) {
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 je) {
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 Ne(e) {
448
- let t = e.match(ke);
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 Pe(e) {
452
- let t = e.match(Ae);
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 Fe(e, t, n, r) {
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 ??= Me(i, ["jsx", "tsx"].includes(this.options.lang), r);
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] = Ne(e.info[1]) : r === "v3" && (e.info[1] = Pe(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 Ie = /\{([\d,-]+)\}/;
496
- function Le(e) {
563
+ var Ue = /\{([\d,-]+)\}/;
564
+ function We(e) {
497
565
  if (!e) return null;
498
- let t = e.match(Ie);
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 Re = Symbol("highlighted-lines");
505
- function ze(e = {}) {
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[Re] ??= Le(this.options.meta.__raw);
513
- let a = i[Re] ?? [], o = n ? r - 1 : r;
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 Be = /[.*+?^${}()|[\]\\]/g;
519
- function Ve(e) {
520
- return e.replace(Be, "\\$&");
586
+ var qe = /[.*+?^${}()|[\]\\]/g;
587
+ function Je(e) {
588
+ return e.replace(qe, "\\$&");
521
589
  }
522
- function L(e = {}, t = "@shikijs/transformers:notation-map") {
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 Fe(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(Ve).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
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 He(e = {}) {
598
+ function Ye(e = {}) {
531
599
  let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
532
- return L({
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 Ue(e = {}) {
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 L({
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 We(e = {}) {
623
+ function Ze(e = {}) {
556
624
  let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
557
- return L({
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 Ge(e = {}) {
632
+ function Qe(e = {}) {
565
633
  let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
566
- return L({
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 Ke = [
646
+ var $e = [
579
647
  "shellscript",
580
648
  "shell",
581
649
  "bash",
582
650
  "sh",
583
651
  "zsh"
584
652
  ];
585
- function qe(e) {
586
- return Ke.includes(e);
653
+ function et(e) {
654
+ return $e.includes(e);
587
655
  }
588
- var Je = /^[a-zA-Z0-9-_]+/;
589
- function Ye(e) {
590
- return Je.exec(e)?.[0] || "";
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 Xe = new FinalizationRegistry((e) => {
662
+ var rt = new FinalizationRegistry((e) => {
595
663
  e();
596
- }), R = {
664
+ }), V = {
597
665
  light: "github-light",
598
666
  dark: "github-dark"
599
667
  };
600
- async function Ze() {
601
- let e = await le({
602
- themes: [R.light, R.dark],
668
+ async function it() {
669
+ let e = await pe({
670
+ themes: [V.light, V.dark],
603
671
  langs: []
604
672
  }), t = [
605
- ze(),
606
- He(),
607
- We({
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 = Ye(i);
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
- !de(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
697
+ !he(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
630
698
  } catch {
631
- C.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
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 = ue(r, i, e);
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: R,
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 Xe.register(r, () => e.dispose()), r;
744
+ return rt.register(r, () => e.dispose()), r;
677
745
  }
678
- function Qe() {
746
+ function at() {
679
747
  return {
680
748
  name: "typedown:disable-shell-symbol-select",
681
749
  tokens(e) {
682
- if (qe(this.options.lang)) for (let t of e) {
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 z;
693
- async function $e(e) {
694
- return e = await nt(e), e = ot(e), e;
760
+ var H;
761
+ async function ot(e) {
762
+ return e = await lt(e), e = pt(e), e;
695
763
  }
696
- function et() {
697
- return z ||= Ze(), z;
764
+ function st() {
765
+ return H ||= it(), H;
698
766
  }
699
- var tt = /<pre class="td-code-placeholder"(?: data-lang="([^"]*)")?(?: data-meta="([^"]*)")?><code>([\s\S]*?)<\/code><\/pre>/g;
700
- async function nt(e) {
701
- let t = await et(), n = [...e.matchAll(tt)];
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 = _(e[3]);
705
- return rt(await t(i, n, r), n, r);
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 rt(e, t, n) {
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 it = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, at = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
725
- function ot(e) {
726
- return e = e.replace(it, (e, t) => B(t, !1)), e = e.replace(at, (e, t) => B(t, !0)), e;
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 B(e, t) {
796
+ function U(e, t) {
729
797
  let n = t ? "div" : "span";
730
798
  try {
731
- return S.renderToString(_(e), {
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 V(e, t, n) {
742
- let r = t.title || t.label || (v(n) ? d(n, (await e.getConfig()).siteTitle) : u(n));
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: ct(t.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 st(e, t, n) {
755
- let r = await $e(t.content), i = await V(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
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${lt(r)}\n</div></template>`
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 ct(e) {
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 lt(e) {
857
+ function gt(e) {
789
858
  return e.replaceAll("{{", "&#123;&#123;").replaceAll("}}", "&#125;&#125;");
790
859
  }
791
860
  //#endregion
792
861
  //#region src/node/plugin/vite/constants.ts
793
- var ut = "@typedown/app", H = "\0@typedown/app", U = "@typedown/pages", W = "\0" + U;
794
- U + "";
795
- var G = "\0@typedown/pages?resource=", K = "@typedown/site-data", dt = "\0@typedown/site-data", q = "@typedown/search-index", ft = "\0@typedown/search-index";
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 J(e, t) {
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 = Y(n.url);
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: Y(t.url),
876
+ path: bt(t.url),
808
877
  acceptedPath: r,
809
878
  timestamp: Date.now()
810
879
  }]
811
880
  });
812
881
  }
813
- function Y(e) {
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 pt = class {
887
+ var xt = class {
819
888
  async load(e) {
820
889
  let t = await e.getConfig();
821
- return X({
890
+ return Q({
822
891
  ...t,
823
892
  rootDir: t.rootDir
824
893
  });
825
894
  }
826
895
  invalidate(e) {
827
- J(e, H);
896
+ Z(e, G);
828
897
  }
829
898
  };
830
- function X(e) {
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 '${U}';
849
- import initialSiteData from '${K}';
919
+ import { pages as initialPages } from '${K}';
920
+ import initialSiteData from '${Y}';
850
921
  let pages = initialPages;
851
- const contentExts = ${JSON.stringify(c)};
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('${q}').then((m) => { searchIndexRef.value = m.default; });
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('${U}', (m) => {
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('${q}', (m) => {
967
+ import.meta.hot.accept('${X}', (m) => {
897
968
  if (m) searchIndexRef.value = m.default;
898
969
  });
899
970
 
900
- import.meta.hot.accept('${K}', (m) => {
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 mt = class {
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(G);
988
+ return e.startsWith(J);
918
989
  }
919
990
  async loadPageData(e, t) {
920
- let n = decodeURIComponent(e.slice(G.length)), r = await V(t, await t.getFile(n), n);
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
- J(e, G + encodeURIComponent(t));
995
+ Z(e, J + encodeURIComponent(t));
925
996
  }
926
997
  invalidate(e) {
927
- J(e, W);
998
+ Z(e, q);
928
999
  }
929
- }, ht = "\0@typedown/site-data", gt = {
1000
+ }, Ct = "\0@typedown/site-data", wt = {
930
1001
  ready: !1,
931
1002
  contentTree: { entries: [] },
932
1003
  schemas: {},
933
1004
  directoryListings: {}
934
- }, _t = class {
1005
+ }, Tt = class {
935
1006
  data;
936
1007
  scan(e) {
937
- let t = A("**/*.td", {
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: u(e),
1013
+ label: x(e),
943
1014
  header: {}
944
- })), n = m(t);
1015
+ })), n = b(t);
945
1016
  this.data = {
946
1017
  contentTree: n,
947
1018
  schemas: {},
948
- directoryListings: p(n.entries, "")
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
- } : gt;
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
- Z(e).then((e) => {
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 Z(e);
1040
+ this.data = await Et(e);
970
1041
  }
971
1042
  invalidate(e) {
972
- J(e, ht);
1043
+ Z(e, Ct);
973
1044
  }
974
1045
  };
975
- async function Z(e) {
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 = m(o);
1054
+ })), s = b(o);
984
1055
  return {
985
1056
  contentTree: s,
986
1057
  schemas: a,
987
- directoryListings: p(s.entries, t.siteTitle)
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 vt = class {
1063
+ var Dt = class {
993
1064
  index;
994
1065
  constructor() {
995
- this.index = new ne({
996
- fields: n,
997
- storeFields: h
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 yt(e, t) {
1017
- let n = St(e), r = [];
1087
+ function Ot(e, t) {
1088
+ let n = Mt(e), r = [];
1018
1089
  for (let t of n) {
1019
- let n = Q(e, t);
1090
+ let n = jt(e, t);
1020
1091
  n && r.push(n);
1021
1092
  }
1022
1093
  t.addAll(r);
1023
1094
  }
1024
- function bt(e, t, n) {
1025
- let r = Q(e, E(e, t));
1026
- r ? n.addPage(r) : n.discardPage(y(t));
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 xt(e, t) {
1029
- let n = u(e);
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 Q(e, t) {
1116
+ function jt(e, t) {
1046
1117
  let n;
1047
1118
  try {
1048
- n = me(t, "utf-8");
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 } = xt(r, n);
1124
+ let r = t.slice(e.length + 1), { title: i, body: a } = At(r, n);
1054
1125
  return {
1055
- id: y(r),
1126
+ id: d(r),
1056
1127
  title: i,
1057
1128
  text: `${i}\n${a}`
1058
1129
  };
1059
1130
  }
1060
- function St(e) {
1061
- return A("**/*.td", {
1131
+ function Mt(e) {
1132
+ return P("**/*.td", {
1062
1133
  cwd: e,
1063
1134
  exclude: (e) => e.startsWith("_")
1064
- }).map((t) => E(e, 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 Ct = "\0@typedown/search-index", wt = class {
1069
- indexer = new vt();
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
- yt(e, this.indexer);
1145
+ Ot(e, this.indexer);
1075
1146
  }
1076
1147
  reindex(e, t) {
1077
- bt(e, t, this.indexer);
1148
+ kt(e, t, this.indexer);
1078
1149
  }
1079
1150
  invalidate(e) {
1080
- J(e, Ct);
1151
+ Z(e, Nt);
1081
1152
  }
1082
- }, $ = ge(import.meta.url);
1083
- function Tt() {
1153
+ }, Ft = be(import.meta.url);
1154
+ function It() {
1084
1155
  return [{
1085
1156
  find: "vue/server-renderer",
1086
- replacement: $.resolve("vue/server-renderer")
1157
+ replacement: Ft.resolve("vue/server-renderer")
1087
1158
  }, {
1088
1159
  find: "vue",
1089
- replacement: $.resolve("vue/dist/vue.runtime.esm-bundler.js")
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 Et = {
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 Dt(e, t) {
1113
- return (n, a, o) => {
1114
- if (!n.url || n.method !== "GET" || a.writableEnded) return o();
1115
- let c = s(n.url);
1116
- if (c.startsWith("/@") || c.startsWith("/node_modules")) return o();
1117
- let l = r(t.basePath), u = (l && c.startsWith(l) ? c.slice(l.length) : c).replace(/^\//, ""), d = E(e.config.root, t.rootDirectory, u);
1118
- if (pe(d)) try {
1119
- let e = he(d);
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 = Et[i(d).slice(1).toLowerCase()] ?? "application/octet-stream";
1122
- a.setHeader("Content-Type", t), a.setHeader("Content-Length", e.size), fe(d).pipe(a);
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 Ot(e, t, n) {
1202
+ function zt(e, t, r) {
1132
1203
  return (i, a, o) => {
1133
1204
  if (!i.url) return o();
1134
- let c = r(s(i.url)), l = r(n.basePath);
1135
- if (c.startsWith("/@") || c.startsWith("/node_modules") || !c.startsWith(l)) return o();
1136
- let u = c.slice(l.length);
1137
- if (u.startsWith("/@") || u.startsWith("/node_modules") || c.includes(".") && !c.endsWith("/index.html")) return o();
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 r = await e.transformIndexHtml(i.url ?? "", kt(n, t));
1140
- a.setHeader("Content-Type", "text/html"), a.end(r);
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 kt(e, t) {
1145
- return e.devHtml === void 0 && (e.devHtml = x({
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: ut
1220
+ entryScript: _t
1150
1221
  })), e.devHtml;
1151
1222
  }
1152
1223
  //#endregion
1153
1224
  //#region src/node/plugin/vite/index.ts
1154
- function At(n = {}) {
1155
- let r = n.context, i, a, o, s = new pt(), c = new mt(), l = new _t(), u = new wt(), d = {
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 f() {
1161
- if (r === void 0) throw Error("typedown plugin not initialized");
1162
- return r.getTdContext();
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(e) {
1169
- if (!r) {
1170
- let t = n.root ? E(e.root ?? process.cwd(), n.root) : te(e.root ?? process.cwd());
1171
- r = ee(t);
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
- o = e.base ?? "/";
1174
- let t = await (await f()).getConfig();
1244
+ i = n.base ?? "/";
1245
+ let r = await (await p()).getConfig();
1175
1246
  return {
1176
- base: e.base ?? t.basePath,
1177
- publicDir: t.publicDir,
1247
+ base: n.base ?? r.basePath,
1248
+ publicDir: r.publicDir,
1178
1249
  server: {
1179
- port: e.server?.port ?? 8686,
1180
- strictPort: e.server?.strictPort ?? !1
1250
+ port: n.server?.port ?? 8686,
1251
+ strictPort: n.server?.strictPort ?? !1
1181
1252
  },
1182
- resolve: { alias: Tt() },
1253
+ resolve: { alias: It() },
1183
1254
  ssr: { noExternal: ["typerighter"] }
1184
1255
  };
1185
1256
  },
1186
1257
  configResolved(e) {
1187
- a = E(e.root, e.build.outDir);
1258
+ r = A(e.root, e.build.outDir);
1188
1259
  },
1189
1260
  async buildStart() {
1190
- if (i) return;
1191
- let e = await f(), t = await e.getConfig(), n = E(t.rootDir);
1192
- u.index(n), await l.fetchSync(e);
1193
- let r = await e.checkVault();
1194
- if (Ft(r.diagnostics), 0 < r.errorCount) {
1195
- let e = r.diagnostics.filter((e) => e.severity === "error").map((e) => ` ${e.filepath}:${e.line}:${e.column} - ${e.message} (${e.code})`);
1196
- this.error(`Vault check failed with ${r.errorCount} error(s):\n${e.join("\n")}`);
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 H;
1201
- if (e === "@typedown/pages") return W;
1202
- if (e.startsWith("@typedown/pages?resource=")) return c.resolvePageData(e);
1203
- if (e === "@typedown/site-data") return dt;
1204
- if (e === "@typedown/search-index") return ft;
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 (c.isPageDataModule(e)) return c.loadPageData(e, await f());
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 f();
1210
- if (e === "\0@typedown/search-index") return u.load(t);
1211
- if (e === "\0@typedown/site-data") return l.load(t);
1212
- if (e === "\0@typedown/pages") return c.load(t);
1213
- if (e === "\0@typedown/app") return s.load(t);
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
- i = e;
1217
- let t = await f(), n = await t.getConfig(), r = E(n.rootDir);
1218
- u.index(r), l.scan(r), l.fetch(t, i), e.httpServer?.once("listening", async () => {
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(""), Ft(e.diagnostics));
1291
+ 0 < e.diagnostics.length && (console.error(""), Gt(e.diagnostics));
1221
1292
  }), t.rpc.onConfigChanged(() => {
1222
- i && (d.devHtml = void 0, l.clear(), s.invalidate(i), c.invalidate(i), Mt(i), l.fetch(t, i));
1293
+ n && (d.devHtml = void 0, c.clear(), a.invalidate(n), o.invalidate(n), Ht(n), c.fetch(t, n));
1223
1294
  });
1224
- function a(...e) {
1225
- i && t.getConfig().then((t) => {
1226
- if (!i) return;
1227
- let n = [];
1228
- for (let r of e) {
1229
- let e = ae(E(i.config.root, t.rootDir, r)), a = i.moduleGraph.getModulesByFile(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) i.moduleGraph.invalidateModule(e), n.push(Pt(e));
1232
- c.invalidatePageData(i, r);
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 < n.length && i.hot.send({
1306
+ 0 < r.length && n.hot.send({
1236
1307
  type: "update",
1237
- updates: n
1308
+ updates: r
1238
1309
  });
1239
1310
  }).catch(() => {});
1240
1311
  }
1241
- t.rpc.onContentUpdated(({ filepath: e, affectedFiles: n = [] }) => {
1242
- i && (u.index(r), u.invalidate(i), c.invalidate(i), l.clear(), l.fetch(t, i), a(e, ...n));
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
- i && (u.index(r), u.invalidate(i), c.invalidate(i), l.clear(), l.fetch(t, i), a(e));
1315
+ n && (l.index(i), l.invalidate(n), o.invalidate(n), c.clear(), c.fetch(t, n), s(e));
1245
1316
  });
1246
- function o() {
1247
- i && (l.clear(), Nt(i), l.fetch(t, i));
1317
+ function u() {
1318
+ n && (c.clear(), Ut(n), c.fetch(t, n));
1248
1319
  }
1249
- t.rpc.onSchemaUpdated(o), t.rpc.onSchemaDeleted(o);
1250
- let p = await t.getConfig();
1251
- d.basePath = p.basePath, d.rootDirectory = p.rootDir, t.rpc.onConfigChanged((e) => {
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(Dt(e, d)), e.middlewares.use(Ot(e, t, d));
1324
+ }), e.middlewares.use(Rt(e, d)), e.middlewares.use(zt(e, t, d));
1254
1325
  },
1255
- async transform(n, r) {
1256
- let i = r.split("?")[0];
1257
- if (!e(i)) return;
1258
- if (t(i)) return {
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 a = await f(), o = await a.getConfig(), s = b(i, o.rootDir);
1333
+ let r = await p(), i = await r.getConfig(), a = f(n, i.rootDir);
1263
1334
  try {
1264
- let { vueSrc: e } = await st(a, await a.getFile(s), s);
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 (w(e)) return;
1341
+ if (re(e)) return;
1271
1342
  let t = e instanceof Error ? e.message : String(e);
1272
- this.error(`[typedown] Failed to transform ${s}: ${t}`);
1343
+ this.error(`[typedown] Failed to transform ${a}: ${t}`);
1273
1344
  }
1274
1345
  },
1275
- handleHotUpdate({ file: t }) {
1276
- if (e(t)) return [];
1346
+ handleHotUpdate({ file: e }) {
1347
+ if (s(e)) return [];
1277
1348
  },
1278
1349
  async closeBundle() {
1279
- if (!n.context && r) try {
1280
- let e = (await (await r.getTdContext()).getConfig()).basePath, t = e.startsWith(o) ? e.slice(o.length) : e.replace(/^\//, "");
1281
- await N(r, {
1282
- outDir: E(a, t),
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
- r.dispose();
1357
+ t.dispose();
1287
1358
  }
1288
1359
  }
1289
1360
  },
1290
- ie({
1291
- include: n.root ? RegExp(`${n.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
1361
+ ce({
1362
+ include: e.root ? RegExp(`${e.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
1292
1363
  template: { transformAssetUrls: !1 }
1293
1364
  }),
1294
- ...re()
1365
+ ...se()
1295
1366
  ];
1296
1367
  }
1297
- function jt(e) {
1368
+ function Vt(e) {
1298
1369
  return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
1299
1370
  }
1300
- function Mt(e) {
1301
- for (let t of jt(e)) e.moduleGraph.invalidateModule(t);
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 Nt(e) {
1305
- let t = jt(e).map((t) => (e.moduleGraph.invalidateModule(t), Pt(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 Pt(e) {
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 Ft(e) {
1390
+ function Gt(e) {
1320
1391
  for (let t of e) {
1321
- let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? D.red("error") : D.yellow("warn");
1322
- console.error(` ${n} ${e} ${t.message} ${D.dim(`(${t.code})`)}`);
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 { X as n, N as r, At as t };
1397
+ export { Q as n, L as r, $ as t };