typerighter 0.40.3 → 0.40.4

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.
@@ -1,30 +1,30 @@
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";
1
+ import { D as e, E as t, F as n, H as r, K as i, L as a, P as o, R as s, V as c, X as l, Y as u, _ as d, b as f, c as p, d as m, g as h, h as g, i as _, p as v, q as y, v as b, w as x, y as S, z as C } from "./shared-D_kuT4zK.js";
2
+ import { a as w, i as T, n as E, o as ee, r as D, s as O, t as te } from "./jsonld-CjCAKIGY.js";
3
+ import { t as ne } from "./temml-DZbhOfRE.js";
4
+ import { a as re, i as ie, n as ae, r as oe } from "./context-CNTdcpo4.js";
5
+ import { t as se } from "./es-ClqUVRJn.js";
6
6
  import k, { resolve as A } from "node:path";
7
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";
8
+ import ce from "@tailwindcss/vite";
9
+ import le from "@vitejs/plugin-vue";
10
+ import { build as M, normalizePath as ue } from "vite";
11
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";
12
+ import { fileURLToPath as de } from "node:url";
13
+ import fe from "node:os";
14
+ import { Worker as pe } from "node:worker_threads";
15
+ import { createHighlighter as me, guessEmbeddedLanguages as he, isSpecialLang as ge } from "shiki";
16
+ import { createReadStream as _e, existsSync as ve, globSync as P, readFileSync as ye, statSync as be } from "node:fs";
17
+ import { createRequire as xe } from "node:module";
18
18
  //#region src/node/lib/worker-pool/index.ts
19
- var xe = class {
19
+ var Se = 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(de.cpus().length / 2));
25
+ let t = e.concurrency ?? Math.max(1, Math.floor(fe.cpus().length / 2));
26
26
  for (let n = 0; n < t; n++) {
27
- let t = new fe(e.filename, { workerData: e.workerData }), n = { worker: t };
27
+ let t = new pe(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);
@@ -62,18 +62,18 @@ var xe = class {
62
62
  };
63
63
  //#endregion
64
64
  //#region src/node/build/seo/sitemap.ts
65
- function Se(e, t, n, r) {
65
+ function Ce(e, t, n, r) {
66
66
  let i = n ?? "";
67
67
  return `<?xml version="1.0" encoding="UTF-8"?>
68
68
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
69
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>`;
70
+ let n = p(i + t + o(e)), a = r?.get(e);
71
+ return ` <url><loc>${n}</loc>${a === void 0 ? "" : `<lastmod>${_(a)}</lastmod>`}</url>`;
72
72
  }).join("\n")}
73
73
  </urlset>
74
74
  `;
75
75
  }
76
- function Ce(e, t) {
76
+ function we(e, t) {
77
77
  return `User-agent: *
78
78
  Allow: /
79
79
 
@@ -82,40 +82,40 @@ Sitemap: ${e}${t}sitemap.xml
82
82
  }
83
83
  //#endregion
84
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}]]>`;
85
+ function Te(e, t, n, r, i, a) {
86
+ let o = [...e].filter((e) => e.metadata.mtime > 0).sort((e, t) => t.metadata.mtime - e.metadata.mtime).slice(0, 50).map((e) => {
87
+ let r = c(e.filepath), i = `${n}${t}${r}`, a = new Date(e.metadata.mtime).toUTCString(), o = p(e.label ?? r), s = e.excerpt === void 0 ? "" : `<![CDATA[${e.excerpt}]]>`;
88
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>
89
+ <title>${o}</title>
90
+ <link>${p(i)}</link>
91
+ <guid>${p(i)}</guid>
92
+ <pubDate>${a}</pubDate>
93
+ <description>${s}</description>
94
94
  </item>`;
95
95
  }).join("\n");
96
96
  return `<?xml version="1.0" encoding="UTF-8"?>
97
97
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
98
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}
99
+ <title>${p(r)}</title>
100
+ <link>${p(n + t)}</link>
101
+ <description>${p(i)}</description>
102
+ <language>${a}</language>
103
+ <atom:link href="${p(n + t)}feed.xml" rel="self" type="application/rss+xml"/>
104
+ ${o}
105
105
  </channel>
106
106
  </rss>
107
107
  `;
108
108
  }
109
109
  //#endregion
110
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"),
111
+ var Ee = 64;
112
+ async function De(e) {
113
+ let { clientEntry: t, cssFiles: n, jsFiles: r } = await Ae(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 >= Ee ? await Oe(e, t, i) : await ke(e, t, i);
115
+ }
116
+ async function Oe(e, t, n) {
117
+ let r = new Se({
118
+ filename: k.resolve(de(import.meta.url), "../prerenderWorker.js"),
119
119
  workerData: {
120
120
  ssrEntryPath: e.ssrEntryPath,
121
121
  base: e.base,
@@ -136,18 +136,18 @@ async function De(e, t, n) {
136
136
  await r.destroy();
137
137
  }
138
138
  }
139
- async function Oe(e, t, n) {
139
+ async function ke(e, t, n) {
140
140
  let r = await import(e.ssrEntryPath), i = e.pagePaths.length, a = 0;
141
- for (let o = 0; o < i; o += 32) {
142
- let s = e.pagePaths.slice(o, o + 32);
143
- await Promise.all(s.map(async (o) => {
144
- let s = await r.render(o), l = E(s.pageData), u = C(s.pageData), d = D(s.pageData), f = e.base + c(o), p = [ee({
141
+ for (let s = 0; s < i; s += 32) {
142
+ let c = e.pagePaths.slice(s, s + 32);
143
+ await Promise.all(c.map(async (s) => {
144
+ let c = await r.render(s), l = ee(c.pageData), u = w(c.pageData), d = D(c.pageData), f = e.base + o(s), p = [te({
145
145
  title: l,
146
146
  description: u,
147
147
  canonicalUrl: f,
148
148
  author: e.author,
149
149
  dateModified: d
150
- }), T(o, l)].filter((e) => e !== void 0), m = O({
150
+ }), E(s, l)].filter((e) => e !== void 0), m = O({
151
151
  title: l,
152
152
  description: u,
153
153
  siteTitle: e.siteTitle,
@@ -157,16 +157,16 @@ async function Oe(e, t, n) {
157
157
  lang: e.lang,
158
158
  entryScript: t,
159
159
  canonicalUrl: f,
160
- ogImagePath: w(s.pageData),
160
+ ogImagePath: T(c.pageData),
161
161
  jsonLdBlocks: p,
162
162
  headExtra: n,
163
- appContent: s.html
164
- }), h = o === "/" ? "index.html" : `${c(o)}.html`, g = k.join(e.outDir, h);
163
+ appContent: c.html
164
+ }), h = s === "/" ? "index.html" : `${o(s)}.html`, g = k.join(e.outDir, h);
165
165
  await N.mkdir(k.dirname(g), { recursive: !0 }), await N.writeFile(g, m), a++, e.progress?.update(a, i);
166
166
  }));
167
167
  }
168
168
  }
169
- async function ke(e) {
169
+ async function Ae(e) {
170
170
  let t = k.join(e, ".vite", "manifest.json"), n = await N.readFile(t, "utf-8"), r = JSON.parse(n), i = "", a = [], o = [];
171
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);
172
172
  return {
@@ -203,150 +203,150 @@ var F = [
203
203
  done(e) {
204
204
  this.stopSpinner(), process.stdout.isTTY && process.stdout.write("\r\x1B[K");
205
205
  let t = Math.round(performance.now() - this.start);
206
- this.logger.success(`${e} (${Ae(t)})`);
206
+ this.logger.success(`${e} (${je(t)})`);
207
207
  }
208
208
  stopSpinner() {
209
209
  this.spinnerInterval &&= (clearInterval(this.spinnerInterval), void 0);
210
210
  }
211
211
  };
212
- function Ae(e) {
212
+ function je(e) {
213
213
  return e < 1e3 ? `${Math.round(e)}ms` : `${(e / 1e3).toFixed(1)}s`;
214
214
  }
215
215
  //#endregion
216
216
  //#region src/node/build/index.ts
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, {
217
+ var Me = "typerighter/client/theme-default";
218
+ async function L(e, t = {}) {
219
+ let { root: n, logger: r } = e, i = k.resolve(n, t.outDir ?? "dist"), a = k.join(i, ".client"), o = k.join(i, ".server");
220
+ await N.rm(i, {
221
221
  recursive: !0,
222
222
  force: !0
223
223
  });
224
- let c = await t.getTdContext(), [l, u, d, f] = await Promise.all([
225
- c.getConfig(),
226
- c.listFiles(),
227
- c.listSidebar(),
228
- c.listSchemas()
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) => ({
224
+ let s = await e.getTdContext(), [l, u, d, f] = await Promise.all([
225
+ s.getConfig(),
226
+ s.listFiles(),
227
+ s.listSidebar(),
228
+ s.listSchemas()
229
+ ]), p = l.origin ?? void 0, m = l.author ?? void 0, h = l.license ?? void 0, _ = l.repo ?? void 0, v = t.base ?? l.basePath ?? "/", y = v.endsWith("/") ? v : v + "/", b = d.map((e) => ({
230
230
  ...e,
231
231
  header: {}
232
- })), x = b(y), S = JSON.stringify({
232
+ })), x = g(b), S = JSON.stringify({
233
233
  title: l.siteTitle,
234
234
  description: l.siteDescription,
235
- basePath: v,
235
+ basePath: y,
236
236
  origin: p,
237
237
  lang: l.lang,
238
238
  nav: l.nav
239
239
  }), C = JSON.stringify({
240
240
  ready: !0,
241
241
  contentTree: x
242
- }), w = k.join(r, "node_modules", ".typerighter");
242
+ }), w = k.join(n, "node_modules", ".typerighter");
243
243
  await N.mkdir(w, { recursive: !0 });
244
244
  let T = k.join(w, "client-entry.js"), E = k.join(w, "ssr-entry.js");
245
245
  await Promise.all([N.writeFile(T, Q({
246
246
  rootDir: l.rootDir,
247
- basePath: v,
247
+ basePath: y,
248
248
  origin: p,
249
249
  lang: l.lang,
250
250
  siteTitle: l.siteTitle,
251
251
  siteDescription: l.siteDescription,
252
- repo: g,
252
+ repo: _,
253
253
  author: m,
254
254
  license: h,
255
255
  nav: l.nav
256
- })), N.writeFile(E, Me({
256
+ })), N.writeFile(E, Ne({
257
257
  rootDir: l.rootDir,
258
- layoutImport: je,
258
+ layoutImport: Me,
259
259
  siteConfig: S,
260
260
  siteData: C
261
261
  }))]);
262
262
  try {
263
- let c = $({ context: t }), f = t.createViteLogger(), h = new I(i, "Building client bundle...");
263
+ let s = $({ context: e }), f = e.createViteLogger(), h = new I(r, "Building client bundle...");
264
264
  await M({
265
- ...n.viteConfig,
266
- root: r,
267
- base: v,
268
- plugins: c,
265
+ ...t.viteConfig,
266
+ root: n,
267
+ base: y,
268
+ plugins: s,
269
269
  customLogger: f,
270
270
  logLevel: "silent",
271
271
  build: {
272
- ...n.viteConfig?.build,
273
- outDir: o,
272
+ ...t.viteConfig?.build,
273
+ outDir: a,
274
274
  manifest: !0,
275
275
  emptyOutDir: !0,
276
276
  rollupOptions: {
277
- ...n.viteConfig?.build?.rollupOptions,
277
+ ...t.viteConfig?.build?.rollupOptions,
278
278
  input: T
279
279
  }
280
280
  }
281
281
  });
282
- let g = await N.readdir(k.join(o, "assets")).catch(() => []);
282
+ let g = await N.readdir(k.join(a, "assets")).catch(() => []);
283
283
  h.done(`Client bundle (${g.length} chunks)`);
284
- let _ = new I(i, "Building SSR bundle...");
284
+ let _ = new I(r, "Building SSR bundle...");
285
285
  await M({
286
- ...n.viteConfig,
287
- root: r,
288
- base: v,
289
- plugins: c,
286
+ ...t.viteConfig,
287
+ root: n,
288
+ base: y,
289
+ plugins: s,
290
290
  customLogger: f,
291
291
  logLevel: "silent",
292
292
  build: {
293
- ...n.viteConfig?.build,
294
- outDir: s,
293
+ ...t.viteConfig?.build,
294
+ outDir: o,
295
295
  ssr: E,
296
296
  emptyOutDir: !0
297
297
  }
298
298
  }), _.done("SSR bundle");
299
- let y = u.map((t) => {
300
- let n = e(t);
301
- return n === "index" ? "/" : `/${n}`;
299
+ let v = u.map((e) => {
300
+ let t = c(e);
301
+ return t === "index" ? "/" : `/${t}`;
302
302
  });
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"),
307
- clientOutDir: o,
308
- outDir: a,
309
- base: v,
303
+ v.push("/"), R(x.entries, "", v);
304
+ let b = new I(r, "Pre-rendering pages...");
305
+ await De({
306
+ ssrEntryPath: k.join(o, "ssr-entry.js"),
307
+ clientOutDir: a,
308
+ outDir: i,
309
+ base: y,
310
310
  origin: p,
311
311
  lang: l.lang,
312
- pagePaths: y,
312
+ pagePaths: v,
313
313
  siteTitle: l.siteTitle,
314
314
  author: m,
315
315
  progress: b
316
- }), b.done(`Pre-rendered ${y.length} pages`);
316
+ }), b.done(`Pre-rendered ${v.length} pages`);
317
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);
318
+ for (let e of d) {
319
+ let t = c(e.filepath), n = t === "index" ? "/" : `/${t}`;
320
+ S.set(n, e.metadata.mtime);
321
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(() => {});
322
+ let C = Ce(v, y, p, S), w = [N.writeFile(k.join(i, "sitemap.xml"), C)];
323
+ p !== void 0 && (w.push(N.writeFile(k.join(i, "robots.txt"), we(p, y))), w.push(N.writeFile(k.join(i, "feed.xml"), Te(d, y, p, l.siteTitle, l.siteDescription, l.lang)))), await Promise.all(w);
324
+ let ee = k.join(a, "assets"), D = k.join(i, "assets");
325
+ await N.cp(ee, D, { recursive: !0 }).catch(() => {}), await Pe(k.join(n, l.rootDir), i);
326
+ let O = k.join(n, l.publicDir);
327
+ await N.cp(O, i, { recursive: !0 }).catch(() => {});
328
328
  } finally {
329
329
  await Promise.all([
330
330
  N.rm(w, {
331
331
  recursive: !0,
332
332
  force: !0
333
333
  }),
334
- N.rm(o, {
334
+ N.rm(a, {
335
335
  recursive: !0,
336
336
  force: !0
337
337
  }),
338
- N.rm(s, {
338
+ N.rm(o, {
339
339
  recursive: !0,
340
340
  force: !0
341
341
  })
342
342
  ]);
343
343
  }
344
- i.log(`\nBuild complete. Output: ${a}`);
344
+ r.log(`\nBuild complete. Output: ${i}`);
345
345
  }
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
346
+ function Ne(e) {
347
+ let t = `/${e.rootDir}/${y}`, n = JSON.parse(e.siteConfig), r = JSON.parse(e.siteData), a = r.contentTree ?? { entries: [] }, o = h(a.entries ?? [], n.title ?? ""), s = JSON.stringify({
348
+ ...r,
349
+ directoryListings: o
350
350
  });
351
351
  return `
352
352
  import { createTypedownApp } from 'typerighter/client';
@@ -357,8 +357,8 @@ import { h } from 'vue';
357
357
  import theme from '${e.layoutImport}';
358
358
 
359
359
  const pages = import.meta.glob('${t}', { eager: true });
360
- const contentExts = ${JSON.stringify(r)};
361
- const siteData = ${c};
360
+ const contentExts = ${JSON.stringify(i)};
361
+ const siteData = ${s};
362
362
 
363
363
  function findPage(base) {
364
364
  for (const ext of contentExts) {
@@ -392,7 +392,7 @@ export async function render(url) {
392
392
  }
393
393
  `;
394
394
  }
395
- async function Ne(e, t) {
395
+ async function Pe(e, t) {
396
396
  let n = (await N.readdir(e, {
397
397
  recursive: !0,
398
398
  withFileTypes: !0
@@ -402,22 +402,22 @@ async function Ne(e, t) {
402
402
  });
403
403
  await Promise.all(n);
404
404
  }
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);
405
+ function R(e, t, n) {
406
+ for (let r of e) {
407
+ if (r.kind !== "dir") continue;
408
+ let e = `${t}/${r.node.name}`;
409
+ d(r.node) || n.push(x(e)), R(r.node.entries, e, n);
410
410
  }
411
411
  }
412
412
  //#endregion
413
413
  //#region ../../node_modules/.pnpm/@shikijs+transformers@4.4.3/node_modules/@shikijs/transformers/dist/index.mjs
414
- var Pe = /(\s+\/\/)/, Fe = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ie = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, Le = [
414
+ var Fe = /(\s+\/\/)/, Ie = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Le = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, Re = [
415
415
  [/^(<!--)(.+)(-->)$/, !1],
416
416
  [/^(\/\*)(.+)(\*\/)$/, !1],
417
417
  [/^(\/\/|["'#]|;{1,2}|%{1,2}|--)(.*)$/, !0],
418
418
  [/^(\*)(.+)$/, !0]
419
419
  ];
420
- function Re(e, t, n) {
420
+ function ze(e, t, n) {
421
421
  let r = [];
422
422
  for (let i of e) {
423
423
  if (n === "v3") {
@@ -427,7 +427,7 @@ function Re(e, t, n) {
427
427
  if (n.type !== "text") return e;
428
428
  let r = t === i.children.length - 1;
429
429
  if (!z(n.value, r)) return e;
430
- let a = n.value.split(Pe);
430
+ let a = n.value.split(Fe);
431
431
  if (a.length <= 1) return e;
432
432
  let o = [a[0]];
433
433
  for (let e = 1; e < a.length; e += 2) o.push(a[e] + (a[e + 1] || ""));
@@ -471,7 +471,7 @@ function Re(e, t, n) {
471
471
  }
472
472
  if (c) {
473
473
  if (t && !s && n !== 0) {
474
- let t = ze(e[n - 1], "{") && ze(e[n + 1], "}");
474
+ let t = Be(e[n - 1], "{") && Be(e[n + 1], "}");
475
475
  r.push({
476
476
  info: c,
477
477
  line: i,
@@ -493,7 +493,7 @@ function Re(e, t, n) {
493
493
  }
494
494
  return r;
495
495
  }
496
- function ze(e, t) {
496
+ function Be(e, t) {
497
497
  if (e.type !== "element") return !1;
498
498
  let n = e.children[0];
499
499
  return n.type === "text" && n.value.trim() === t;
@@ -502,7 +502,7 @@ function z(e, t) {
502
502
  let n = e.trimStart(), r = e.length - n.length;
503
503
  n = n.trimEnd();
504
504
  let i = e.length - n.length - r;
505
- for (let [e, a] of Le) {
505
+ for (let [e, a] of Re) {
506
506
  if (a && !t) continue;
507
507
  let o = e.exec(n);
508
508
  if (o) return [
@@ -512,22 +512,22 @@ function z(e, t) {
512
512
  ];
513
513
  }
514
514
  }
515
- function Be(e) {
516
- let t = e.match(Fe);
517
- return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
518
- }
519
515
  function Ve(e) {
520
516
  let t = e.match(Ie);
517
+ return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
518
+ }
519
+ function He(e) {
520
+ let t = e.match(Le);
521
521
  return t && t[1].trim().length === 0 ? e.slice(0, t.index).trimEnd() : e;
522
522
  }
523
- function He(e, t, n, r) {
523
+ function Ue(e, t, n, r) {
524
524
  return r ??= "v3", {
525
525
  name: e,
526
526
  code(e) {
527
527
  let i = e.children.filter((e) => e.type === "element"), a = [];
528
528
  e.data ??= {};
529
529
  let o = e.data;
530
- o._shiki_notation ??= Re(i, ["jsx", "tsx"].includes(this.options.lang), r);
530
+ o._shiki_notation ??= ze(i, ["jsx", "tsx"].includes(this.options.lang), r);
531
531
  let s = o._shiki_notation;
532
532
  for (let e of s) {
533
533
  if (e.info[1].length === 0) continue;
@@ -535,7 +535,7 @@ function He(e, t, n, r) {
535
535
  e.isLineCommentOnly && r !== "v1" && o++;
536
536
  let s = !1;
537
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;
538
- r === "v1" ? e.info[1] = Be(e.info[1]) : r === "v3" && (e.info[1] = Ve(e.info[1]));
538
+ r === "v1" ? e.info[1] = Ve(e.info[1]) : r === "v3" && (e.info[1] = He(e.info[1]));
539
539
  let c = e.info[1].trim().length === 0;
540
540
  if (c && (e.info[1] = ""), c && e.isLineCommentOnly) a.push(e.line);
541
541
  else if (c && e.isJsxStyle) e.line.children.splice(e.line.children.indexOf(e.token) - 1, 3);
@@ -560,42 +560,42 @@ function He(e, t, n, r) {
560
560
  }
561
561
  };
562
562
  }
563
- var Ue = /\{([\d,-]+)\}/;
564
- function We(e) {
563
+ var We = /\{([\d,-]+)\}/;
564
+ function Ge(e) {
565
565
  if (!e) return null;
566
- let t = e.match(Ue);
566
+ let t = e.match(We);
567
567
  return t ? t[1].split(",").flatMap((e) => {
568
568
  let t = e.split("-").map((e) => Number.parseInt(e, 10));
569
569
  return t.length === 1 ? [t[0]] : Array.from({ length: t[1] - t[0] + 1 }, (e, n) => t[0] + n);
570
570
  }) : null;
571
571
  }
572
- var Ge = Symbol("highlighted-lines");
573
- function Ke(e = {}) {
572
+ var Ke = Symbol("highlighted-lines");
573
+ function qe(e = {}) {
574
574
  let { className: t = "highlighted", zeroIndexed: n = !1 } = e;
575
575
  return {
576
576
  name: "@shikijs/transformers:meta-highlight",
577
577
  line(e, r) {
578
578
  if (!this.options.meta?.__raw) return;
579
579
  let i = this.meta;
580
- i[Ge] ??= We(this.options.meta.__raw);
581
- let a = i[Ge] ?? [], o = n ? r - 1 : r;
580
+ i[Ke] ??= Ge(this.options.meta.__raw);
581
+ let a = i[Ke] ?? [], o = n ? r - 1 : r;
582
582
  return a.includes(o) && this.addClassToHast(e, t), e;
583
583
  }
584
584
  };
585
585
  }
586
- var qe = /[.*+?^${}()|[\]\\]/g;
587
- function Je(e) {
588
- return e.replace(qe, "\\$&");
586
+ var Je = /[.*+?^${}()|[\]\\]/g;
587
+ function Ye(e) {
588
+ return e.replace(Je, "\\$&");
589
589
  }
590
590
  function B(e = {}, t = "@shikijs/transformers:notation-map") {
591
591
  let { classMap: n = {}, classActivePre: r = void 0, classActiveCode: i = void 0 } = e;
592
- return He(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(Je).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
592
+ return Ue(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(Ye).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
593
593
  let u = Number.parseInt(a.slice(1), 10);
594
594
  for (let e = l; e < Math.min(l + u, c.length); e++) this.addClassToHast(c[e], n[t]);
595
595
  return r && this.addClassToHast(this.pre, r), i && this.addClassToHast(this.code, i), !0;
596
596
  }, e.matchAlgorithm);
597
597
  }
598
- function Ye(e = {}) {
598
+ function Xe(e = {}) {
599
599
  let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
600
600
  return B({
601
601
  classMap: {
@@ -607,7 +607,7 @@ function Ye(e = {}) {
607
607
  matchAlgorithm: e.matchAlgorithm
608
608
  }, "@shikijs/transformers:notation-diff");
609
609
  }
610
- function Xe(e = {}) {
610
+ function Ze(e = {}) {
611
611
  let { classMap: t = {
612
612
  error: ["highlighted", "error"],
613
613
  warning: ["highlighted", "warning"],
@@ -620,7 +620,7 @@ function Xe(e = {}) {
620
620
  matchAlgorithm: e.matchAlgorithm
621
621
  }, "@shikijs/transformers:notation-error-level");
622
622
  }
623
- function Ze(e = {}) {
623
+ function Qe(e = {}) {
624
624
  let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
625
625
  return B({
626
626
  classMap: { focus: t },
@@ -629,7 +629,7 @@ function Ze(e = {}) {
629
629
  matchAlgorithm: e.matchAlgorithm
630
630
  }, "@shikijs/transformers:notation-focus");
631
631
  }
632
- function Qe(e = {}) {
632
+ function $e(e = {}) {
633
633
  let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
634
634
  return B({
635
635
  classMap: {
@@ -643,42 +643,42 @@ function Qe(e = {}) {
643
643
  }
644
644
  //#endregion
645
645
  //#region src/node/lib/render/highlight/language.ts
646
- var $e = [
646
+ var et = [
647
647
  "shellscript",
648
648
  "shell",
649
649
  "bash",
650
650
  "sh",
651
651
  "zsh"
652
652
  ];
653
- function et(e) {
654
- return $e.includes(e);
653
+ function tt(e) {
654
+ return et.includes(e);
655
655
  }
656
- var tt = /^[a-zA-Z0-9-_]+/;
657
- function nt(e) {
658
- return tt.exec(e)?.[0] || "";
656
+ var nt = /^[a-zA-Z0-9-_]+/;
657
+ function rt(e) {
658
+ return nt.exec(e)?.[0] || "";
659
659
  }
660
660
  //#endregion
661
661
  //#region src/node/lib/render/highlight/index.ts
662
- var rt = new FinalizationRegistry((e) => {
662
+ var it = new FinalizationRegistry((e) => {
663
663
  e();
664
664
  }), V = {
665
665
  light: "github-light",
666
666
  dark: "github-dark"
667
667
  };
668
- async function it() {
669
- let e = await pe({
668
+ async function at() {
669
+ let e = await me({
670
670
  themes: [V.light, V.dark],
671
671
  langs: []
672
672
  }), t = [
673
- Ke(),
674
- Ye(),
675
- Ze({
673
+ qe(),
674
+ Xe(),
675
+ Qe({
676
676
  classActiveLine: "has-focus",
677
677
  classActivePre: "has-focused-lines"
678
678
  }),
679
- Qe(),
680
- Xe(),
681
- at(),
679
+ $e(),
680
+ Ze(),
681
+ ot(),
682
682
  {
683
683
  name: "typedown:add-dir",
684
684
  pre(e) {
@@ -687,19 +687,19 @@ async function it() {
687
687
  }
688
688
  ], n = new Set(e.getLoadedLanguages());
689
689
  async function r(r, i, a) {
690
- let o = nt(i);
690
+ let o = rt(i);
691
691
  if (o) {
692
692
  let e = i;
693
693
  i = o.toLowerCase(), a = e.slice(i.length).replace(/(?<!=)\{/g, " {") + " " + a, a = a.trim().replace(/\s+/g, " ");
694
694
  }
695
695
  i ||= "txt";
696
696
  try {
697
- !he(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
697
+ !ge(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
698
698
  } catch {
699
- ne.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
699
+ re.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
700
700
  }
701
701
  r = r.trimEnd();
702
- let s = me(r, i, e);
702
+ let s = he(r, i, e);
703
703
  return await e.loadLanguage(...s), e.codeToHtml(r, {
704
704
  lang: i,
705
705
  transformers: [...t, {
@@ -741,13 +741,13 @@ async function it() {
741
741
  }
742
742
  });
743
743
  }
744
- return rt.register(r, () => e.dispose()), r;
744
+ return it.register(r, () => e.dispose()), r;
745
745
  }
746
- function at() {
746
+ function ot() {
747
747
  return {
748
748
  name: "typedown:disable-shell-symbol-select",
749
749
  tokens(e) {
750
- if (et(this.options.lang)) for (let t of e) {
750
+ if (tt(this.options.lang)) for (let t of e) {
751
751
  if (t.length < 2) continue;
752
752
  let e = t[0].content.trim();
753
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));
@@ -758,19 +758,19 @@ function at() {
758
758
  //#endregion
759
759
  //#region src/node/lib/render/postprocess.ts
760
760
  var H;
761
- async function ot(e) {
762
- return e = await lt(e), e = pt(e), e;
761
+ async function st(e) {
762
+ return e = await ut(e), e = mt(e), e;
763
763
  }
764
- function st() {
765
- return H ||= it(), H;
764
+ function ct() {
765
+ return H ||= at(), H;
766
766
  }
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)];
767
+ var lt = /<pre class="td-code-placeholder"(?: data-lang="([^"]*)")?(?: data-meta="([^"]*)")?><code>([\s\S]*?)<\/code><\/pre>/g;
768
+ async function ut(e) {
769
+ let t = await ct(), n = [...e.matchAll(lt)];
770
770
  if (n.length === 0) return e;
771
771
  let r = await Promise.all(n.map(async (e) => {
772
- let n = e[1] || "", r = e[2] || "", i = g(e[3]);
773
- return ut(await t(i, n, r), n, r);
772
+ let n = e[1] || "", r = e[2] || "", i = m(e[3]);
773
+ return dt(await t(i, n, r), n, r);
774
774
  })), i = e;
775
775
  for (let e = n.length - 1; 0 <= e; e--) {
776
776
  let t = n[e];
@@ -778,7 +778,7 @@ async function lt(e) {
778
778
  }
779
779
  return i;
780
780
  }
781
- function ut(e, t, n) {
781
+ function dt(e, t, n) {
782
782
  t ||= "txt";
783
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>";
784
784
  if (/:line-numbers\b/.test(n)) {
@@ -789,14 +789,14 @@ function ut(e, t, n) {
789
789
  }
790
790
  return i;
791
791
  }
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;
792
+ var ft = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, pt = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
793
+ function mt(e) {
794
+ return e = e.replace(ft, (e, t) => U(t, !1)), e = e.replace(pt, (e, t) => U(t, !0)), e;
795
795
  }
796
796
  function U(e, t) {
797
797
  let n = t ? "div" : "span";
798
798
  try {
799
- return te.renderToString(g(e), {
799
+ return ne.renderToString(m(e), {
800
800
  throwOnError: !1,
801
801
  displayMode: t
802
802
  });
@@ -807,21 +807,21 @@ function U(e, t) {
807
807
  //#endregion
808
808
  //#region src/node/lib/render/vue.ts
809
809
  async function W(e, t, n) {
810
- let r = t.title || t.label || (S(n) ? m(n, (await e.getConfig()).siteTitle) : x(n));
810
+ let r = t.title || t.label || (f(n) ? b(n, (await e.getConfig()).siteTitle) : S(n));
811
811
  return {
812
812
  schema: t.schema,
813
813
  schemaLabel: t.schemaLabel,
814
814
  label: t.label,
815
815
  icon: t.icon,
816
816
  frontmatter: t.header ?? {},
817
- headings: ht(t.headings),
817
+ headings: gt(t.headings),
818
818
  title: r,
819
819
  metadata: t.metadata,
820
820
  meta: t.meta
821
821
  };
822
822
  }
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)}`);
823
+ async function ht(e, t, n) {
824
+ let r = await st(t.content), i = await W(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
825
825
  return {
826
826
  vueSrc: [
827
827
  "<script>",
@@ -833,12 +833,12 @@ async function mt(e, t, n) {
833
833
  `import { pageData } from ${a}`,
834
834
  "useRouter().route.data = pageData",
835
835
  "<\/script>",
836
- `<template><div class="typedown-content">\n${gt(r)}\n</div></template>`
836
+ `<template><div class="typedown-content">\n${_t(r)}\n</div></template>`
837
837
  ].join("\n"),
838
838
  pageData: i
839
839
  };
840
840
  }
841
- function ht(e) {
841
+ function gt(e) {
842
842
  let t = [], n = [];
843
843
  for (let r of e) {
844
844
  let e = {
@@ -854,37 +854,37 @@ function ht(e) {
854
854
  }
855
855
  return t;
856
856
  }
857
- function gt(e) {
857
+ function _t(e) {
858
858
  return e.replaceAll("{{", "&#123;&#123;").replaceAll("}}", "&#125;&#125;");
859
859
  }
860
860
  //#endregion
861
861
  //#region src/node/plugin/vite/constants.ts
862
- var _t = "@typedown/app", G = "\0@typedown/app", K = "@typedown/pages", q = "\0" + K;
862
+ var vt = "@typedown/app", G = "\0@typedown/app", K = "@typedown/pages", q = "\0" + K;
863
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";
864
+ var J = "\0@typedown/pages?resource=", Y = "@typedown/site-data", yt = "\0@typedown/site-data", X = "@typedown/search-index", bt = "\0@typedown/search-index";
865
865
  //#endregion
866
866
  //#region src/node/plugin/vite/virtual/utils.ts
867
867
  function Z(e, t) {
868
868
  let n = e.moduleGraph.getModuleById(t);
869
869
  if (!n) return;
870
870
  e.moduleGraph.invalidateModule(n);
871
- let r = bt(n.url);
871
+ let r = xt(n.url);
872
872
  for (let t of n.importers) e.hot.send({
873
873
  type: "update",
874
874
  updates: [{
875
875
  type: "js-update",
876
- path: bt(t.url),
876
+ path: xt(t.url),
877
877
  acceptedPath: r,
878
878
  timestamp: Date.now()
879
879
  }]
880
880
  });
881
881
  }
882
- function bt(e) {
882
+ function xt(e) {
883
883
  return e.startsWith("\0") ? "/@id/__x00__" + e.slice(1) : e;
884
884
  }
885
885
  //#endregion
886
886
  //#region src/node/plugin/vite/virtual/app.ts
887
- var xt = class {
887
+ var St = class {
888
888
  async load(e) {
889
889
  let t = await e.getConfig();
890
890
  return Q({
@@ -919,7 +919,7 @@ import theme from 'typerighter/client/theme-default';
919
919
  import { pages as initialPages } from '${K}';
920
920
  import initialSiteData from '${Y}';
921
921
  let pages = initialPages;
922
- const contentExts = ${JSON.stringify(r)};
922
+ const contentExts = ${JSON.stringify(i)};
923
923
 
924
924
  function findPage(base) {
925
925
  for (const ext of contentExts) {
@@ -976,7 +976,7 @@ if (import.meta.hot) {
976
976
  }
977
977
  //#endregion
978
978
  //#region src/node/plugin/vite/virtual/pages.ts
979
- var St = class {
979
+ var Ct = class {
980
980
  async load(e) {
981
981
  let t = (await e.getConfig()).rootDir ?? ".";
982
982
  return `export const pages = import.meta.glob('${t === "." ? "/**/*.{td,md}" : `/${t}/**/*.{td,md}`}');`;
@@ -997,12 +997,12 @@ var St = class {
997
997
  invalidate(e) {
998
998
  Z(e, q);
999
999
  }
1000
- }, Ct = "\0@typedown/site-data", wt = {
1000
+ }, wt = "\0@typedown/site-data", Tt = {
1001
1001
  ready: !1,
1002
1002
  contentTree: { entries: [] },
1003
1003
  schemas: {},
1004
1004
  directoryListings: {}
1005
- }, Tt = class {
1005
+ }, Et = class {
1006
1006
  data;
1007
1007
  scan(e) {
1008
1008
  let t = P("**/*.td", {
@@ -1010,40 +1010,40 @@ var St = class {
1010
1010
  exclude: (e) => e.startsWith("_")
1011
1011
  }).map((e) => ({
1012
1012
  filepath: e,
1013
- label: x(e),
1013
+ label: S(e),
1014
1014
  header: {}
1015
- })), n = b(t);
1015
+ })), n = g(t);
1016
1016
  this.data = {
1017
1017
  contentTree: n,
1018
1018
  schemas: {},
1019
- directoryListings: v(n.entries, "")
1019
+ directoryListings: h(n.entries, "")
1020
1020
  };
1021
1021
  }
1022
1022
  load(e) {
1023
1023
  let t = this.data ? {
1024
1024
  ready: !0,
1025
1025
  ...this.data
1026
- } : wt;
1026
+ } : Tt;
1027
1027
  return `export default ${JSON.stringify(t)}`;
1028
1028
  }
1029
1029
  clear() {
1030
1030
  this.data = void 0;
1031
1031
  }
1032
- fetch(e, t) {
1033
- Et(e).then((e) => {
1032
+ fetch = v((e, t) => {
1033
+ Dt(e).then((e) => {
1034
1034
  this.data = e, t && this.invalidate(t);
1035
1035
  }).catch((e) => {
1036
1036
  console.error("[typedown] Failed to fetch site data:", e instanceof Error ? e.message : e);
1037
1037
  });
1038
- }
1038
+ }, 200);
1039
1039
  async fetchSync(e) {
1040
- this.data = await Et(e);
1040
+ this.data = await Dt(e);
1041
1041
  }
1042
1042
  invalidate(e) {
1043
- Z(e, Ct);
1043
+ Z(e, wt);
1044
1044
  }
1045
1045
  };
1046
- async function Et(e) {
1046
+ async function Dt(e) {
1047
1047
  let [t, n, r] = await Promise.all([
1048
1048
  e.getConfig(),
1049
1049
  e.listSidebar(),
@@ -1051,21 +1051,21 @@ async function Et(e) {
1051
1051
  ]), i = await Promise.all(r.map(async (t) => [t, (await e.getSchema(t)).properties])), a = Object.fromEntries(i), o = n.map((e) => ({
1052
1052
  ...e,
1053
1053
  header: {}
1054
- })), s = b(o);
1054
+ })), s = g(o);
1055
1055
  return {
1056
1056
  contentTree: s,
1057
1057
  schemas: a,
1058
- directoryListings: v(s.entries, t.siteTitle)
1058
+ directoryListings: h(s.entries, t.siteTitle)
1059
1059
  };
1060
1060
  }
1061
1061
  //#endregion
1062
1062
  //#region src/node/lib/search-indexer/index.ts
1063
- var Dt = class {
1063
+ var Ot = class {
1064
1064
  index;
1065
1065
  constructor() {
1066
- this.index = new oe({
1067
- fields: a,
1068
- storeFields: p
1066
+ this.index = new se({
1067
+ fields: u,
1068
+ storeFields: l
1069
1069
  });
1070
1070
  }
1071
1071
  addAll(e) {
@@ -1084,20 +1084,20 @@ var Dt = class {
1084
1084
  };
1085
1085
  //#endregion
1086
1086
  //#region src/node/lib/search-indexer/scan.ts
1087
- function Ot(e, t) {
1088
- let n = Mt(e), r = [];
1087
+ function kt(e, t) {
1088
+ let n = Nt(e), r = [];
1089
1089
  for (let t of n) {
1090
- let n = jt(e, t);
1090
+ let n = Mt(e, t);
1091
1091
  n && r.push(n);
1092
1092
  }
1093
1093
  t.addAll(r);
1094
1094
  }
1095
- function kt(e, t, n) {
1096
- let r = jt(e, A(e, t));
1097
- r ? n.addPage(r) : n.discardPage(d(t));
1095
+ function At(e, n, r) {
1096
+ let i = Mt(e, A(e, n));
1097
+ i ? r.addPage(i) : r.discardPage(t(n));
1098
1098
  }
1099
- function At(e, t) {
1100
- let n = x(e);
1099
+ function jt(e, t) {
1100
+ let n = S(e);
1101
1101
  if (!t.startsWith("---")) return {
1102
1102
  title: n,
1103
1103
  body: t
@@ -1113,22 +1113,22 @@ function At(e, t) {
1113
1113
  body: a
1114
1114
  };
1115
1115
  }
1116
- function jt(e, t) {
1117
- let n;
1116
+ function Mt(e, n) {
1117
+ let r;
1118
1118
  try {
1119
- n = ve(t, "utf-8");
1119
+ r = ye(n, "utf-8");
1120
1120
  } catch {
1121
1121
  return;
1122
1122
  }
1123
- if (!n.trim()) return;
1124
- let r = t.slice(e.length + 1), { title: i, body: a } = At(r, n);
1123
+ if (!r.trim()) return;
1124
+ let i = n.slice(e.length + 1), { title: a, body: o } = jt(i, r);
1125
1125
  return {
1126
- id: d(r),
1127
- title: i,
1128
- text: `${i}\n${a}`
1126
+ id: t(i),
1127
+ title: a,
1128
+ text: `${a}\n${o}`
1129
1129
  };
1130
1130
  }
1131
- function Mt(e) {
1131
+ function Nt(e) {
1132
1132
  return P("**/*.td", {
1133
1133
  cwd: e,
1134
1134
  exclude: (e) => e.startsWith("_")
@@ -1136,33 +1136,33 @@ function Mt(e) {
1136
1136
  }
1137
1137
  //#endregion
1138
1138
  //#region src/node/plugin/vite/virtual/search-index.ts
1139
- var Nt = "\0@typedown/search-index", Pt = class {
1140
- indexer = new Dt();
1139
+ var Pt = "\0@typedown/search-index", Ft = class {
1140
+ indexer = new Ot();
1141
1141
  load(e) {
1142
1142
  return `export default ${JSON.stringify(this.indexer.serialize())}`;
1143
1143
  }
1144
1144
  index(e) {
1145
- Ot(e, this.indexer);
1145
+ kt(e, this.indexer);
1146
1146
  }
1147
1147
  reindex(e, t) {
1148
- kt(e, t, this.indexer);
1148
+ At(e, t, this.indexer);
1149
1149
  }
1150
1150
  invalidate(e) {
1151
- Z(e, Nt);
1151
+ Z(e, Pt);
1152
1152
  }
1153
- }, Ft = be(import.meta.url);
1154
- function It() {
1153
+ }, It = xe(import.meta.url);
1154
+ function Lt() {
1155
1155
  return [{
1156
1156
  find: "vue/server-renderer",
1157
- replacement: Ft.resolve("vue/server-renderer")
1157
+ replacement: It.resolve("vue/server-renderer")
1158
1158
  }, {
1159
1159
  find: "vue",
1160
- replacement: Ft.resolve("vue/dist/vue.runtime.esm-bundler.js")
1160
+ replacement: It.resolve("vue/dist/vue.runtime.esm-bundler.js")
1161
1161
  }];
1162
1162
  }
1163
1163
  //#endregion
1164
1164
  //#region src/node/plugin/vite/middleware/vault-assets.ts
1165
- var Lt = {
1165
+ var Rt = {
1166
1166
  jpg: "image/jpeg",
1167
1167
  jpeg: "image/jpeg",
1168
1168
  png: "image/png",
@@ -1180,55 +1180,55 @@ var Lt = {
1180
1180
  woff: "font/woff",
1181
1181
  ttf: "font/ttf"
1182
1182
  };
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);
1183
+ function zt(t, r) {
1184
+ return (i, o, s) => {
1185
+ if (!i.url || i.method !== "GET" || o.writableEnded) return s();
1186
+ let c = e(i.url);
1187
+ if (c.startsWith("/@") || c.startsWith("/node_modules")) return s();
1188
+ let l = n(r.basePath), u = (l && c.startsWith(l) ? c.slice(l.length) : c).replace(/^\//, ""), d = A(t.config.root, r.rootDirectory, u);
1189
+ if (ve(d)) try {
1190
+ let e = be(d);
1191
1191
  if (e.isFile()) {
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);
1192
+ let t = Rt[a(d).slice(1).toLowerCase()] ?? "application/octet-stream";
1193
+ o.setHeader("Content-Type", t), o.setHeader("Content-Length", e.size), _e(d).pipe(o);
1194
1194
  return;
1195
1195
  }
1196
1196
  } catch {}
1197
- o();
1197
+ s();
1198
1198
  };
1199
1199
  }
1200
1200
  //#endregion
1201
1201
  //#region src/node/plugin/vite/middleware/virtual-html.ts
1202
- function zt(e, t, r) {
1203
- return (i, a, o) => {
1204
- if (!i.url) 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();
1209
- t.getConfig().then(async (t) => {
1210
- let n = await e.transformIndexHtml(i.url ?? "", Bt(r, t));
1211
- a.setHeader("Content-Type", "text/html"), a.end(n);
1212
- }).catch(() => o());
1202
+ function Bt(t, r, i) {
1203
+ return (a, o, s) => {
1204
+ if (!a.url) return s();
1205
+ let c = n(e(a.url)), l = n(i.basePath);
1206
+ if (c.startsWith("/@") || c.startsWith("/node_modules") || !c.startsWith(l)) return s();
1207
+ let u = c.slice(l.length);
1208
+ if (u.startsWith("/@") || u.startsWith("/node_modules") || c.includes(".") && !c.endsWith("/index.html")) return s();
1209
+ r.getConfig().then(async (e) => {
1210
+ let n = await t.transformIndexHtml(a.url ?? "", Vt(i, e));
1211
+ o.setHeader("Content-Type", "text/html"), o.end(n);
1212
+ }).catch(() => s());
1213
1213
  };
1214
1214
  }
1215
- function Bt(e, t) {
1215
+ function Vt(e, t) {
1216
1216
  return e.devHtml === void 0 && (e.devHtml = O({
1217
1217
  title: t.siteTitle,
1218
1218
  description: t.siteDescription,
1219
1219
  base: "/",
1220
- entryScript: _t
1220
+ entryScript: vt
1221
1221
  })), e.devHtml;
1222
1222
  }
1223
1223
  //#endregion
1224
1224
  //#region src/node/plugin/vite/index.ts
1225
1225
  function $(e = {}) {
1226
- let t = e.context, n, r, i, a = new xt(), o = new St(), c = new Tt(), l = new Pt(), d = {
1226
+ let t = e.context, n, i, a, o = new St(), c = new Ct(), l = new Et(), u = new Ft(), d = {
1227
1227
  devHtml: void 0,
1228
1228
  basePath: "/",
1229
1229
  rootDirectory: "vault"
1230
1230
  };
1231
- function p() {
1231
+ function f() {
1232
1232
  if (t === void 0) throw Error("typedown plugin not initialized");
1233
1233
  return t.getTdContext();
1234
1234
  }
@@ -1238,11 +1238,11 @@ function $(e = {}) {
1238
1238
  enforce: "pre",
1239
1239
  async config(n) {
1240
1240
  if (!t) {
1241
- let r = e.root ? A(n.root ?? process.cwd(), e.root) : ae(n.root ?? process.cwd());
1242
- t = ie(r);
1241
+ let r = e.root ? A(n.root ?? process.cwd(), e.root) : oe(n.root ?? process.cwd());
1242
+ t = ae(r);
1243
1243
  }
1244
- i = n.base ?? "/";
1245
- let r = await (await p()).getConfig();
1244
+ a = n.base ?? "/";
1245
+ let r = await (await f()).getConfig();
1246
1246
  return {
1247
1247
  base: n.base ?? r.basePath,
1248
1248
  publicDir: r.publicDir,
@@ -1250,19 +1250,19 @@ function $(e = {}) {
1250
1250
  port: n.server?.port ?? 8686,
1251
1251
  strictPort: n.server?.strictPort ?? !1
1252
1252
  },
1253
- resolve: { alias: It() },
1253
+ resolve: { alias: Lt() },
1254
1254
  ssr: { noExternal: ["typerighter"] }
1255
1255
  };
1256
1256
  },
1257
1257
  configResolved(e) {
1258
- r = A(e.root, e.build.outDir);
1258
+ i = A(e.root, e.build.outDir);
1259
1259
  },
1260
1260
  async buildStart() {
1261
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);
1262
+ let e = await f(), t = await e.getConfig(), r = A(t.rootDir);
1263
+ u.index(r), await l.fetchSync(e);
1264
1264
  let i = await e.checkVault();
1265
- if (Gt(i.diagnostics), 0 < i.errorCount) {
1265
+ if (Kt(i.diagnostics), 0 < i.errorCount) {
1266
1266
  let e = i.diagnostics.filter((e) => e.severity === "error").map((e) => ` ${e.filepath}:${e.line}:${e.column} - ${e.message} (${e.code})`);
1267
1267
  this.error(`Vault check failed with ${i.errorCount} error(s):\n${e.join("\n")}`);
1268
1268
  }
@@ -1270,37 +1270,37 @@ function $(e = {}) {
1270
1270
  resolveId(e) {
1271
1271
  if (e === "/@typedown/app" || e === "@typedown/app") return G;
1272
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;
1273
+ if (e.startsWith("@typedown/pages?resource=")) return c.resolvePageData(e);
1274
+ if (e === "@typedown/site-data") return yt;
1275
+ if (e === "@typedown/search-index") return bt;
1276
1276
  },
1277
1277
  async load(e) {
1278
- if (o.isPageDataModule(e)) return o.loadPageData(e, await p());
1278
+ if (c.isPageDataModule(e)) return c.loadPageData(e, await f());
1279
1279
  if (e !== "\0@typedown/search-index" && e !== "\0@typedown/site-data" && e !== "\0@typedown/pages" && e !== "\0@typedown/app") return;
1280
- let t = await p();
1281
- if (e === "\0@typedown/search-index") return l.load(t);
1282
- if (e === "\0@typedown/site-data") return c.load(t);
1283
- if (e === "\0@typedown/pages") return o.load(t);
1284
- if (e === "\0@typedown/app") return a.load(t);
1280
+ let t = await f();
1281
+ if (e === "\0@typedown/search-index") return u.load(t);
1282
+ if (e === "\0@typedown/site-data") return l.load(t);
1283
+ if (e === "\0@typedown/pages") return c.load(t);
1284
+ if (e === "\0@typedown/app") return o.load(t);
1285
1285
  },
1286
1286
  async configureServer(e) {
1287
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 () => {
1288
+ let t = await f(), r = await t.getConfig(), i = A(r.rootDir);
1289
+ u.index(i), l.scan(i), l.fetch(t, n), e.httpServer?.once("listening", async () => {
1290
1290
  let e = await t.checkVault();
1291
- 0 < e.diagnostics.length && (console.error(""), Gt(e.diagnostics));
1291
+ 0 < e.diagnostics.length && (console.error(""), Kt(e.diagnostics));
1292
1292
  }), t.rpc.onConfigChanged(() => {
1293
- n && (d.devHtml = void 0, c.clear(), a.invalidate(n), o.invalidate(n), Ht(n), c.fetch(t, n));
1293
+ n && (d.devHtml = void 0, l.clear(), o.invalidate(n), c.invalidate(n), Ut(n), l.fetch(t, n));
1294
1294
  });
1295
- function s(...e) {
1295
+ function a(...e) {
1296
1296
  n && t.getConfig().then((t) => {
1297
1297
  if (!n) return;
1298
1298
  let r = [];
1299
1299
  for (let i of e) {
1300
- let e = le(A(n.config.root, t.rootDir, i)), a = n.moduleGraph.getModulesByFile(e);
1300
+ let e = ue(A(n.config.root, t.rootDir, i)), a = n.moduleGraph.getModulesByFile(e);
1301
1301
  if (a?.size) {
1302
- for (let e of a) n.moduleGraph.invalidateModule(e), r.push(Wt(e));
1303
- o.invalidatePageData(n, i);
1302
+ for (let e of a) n.moduleGraph.invalidateModule(e), r.push(Gt(e));
1303
+ c.invalidatePageData(n, i);
1304
1304
  }
1305
1305
  }
1306
1306
  0 < r.length && n.hot.send({
@@ -1310,37 +1310,37 @@ function $(e = {}) {
1310
1310
  }).catch(() => {});
1311
1311
  }
1312
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));
1313
+ n && (u.reindex(i, e), u.invalidate(n), c.invalidate(n), l.fetch(t, n), a(e, ...r));
1314
1314
  }), t.rpc.onContentDeleted(({ filepath: e }) => {
1315
- n && (l.index(i), l.invalidate(n), o.invalidate(n), c.clear(), c.fetch(t, n), s(e));
1315
+ n && (u.reindex(i, e), u.invalidate(n), c.invalidate(n), l.fetch(t, n), a(e));
1316
1316
  });
1317
- function u() {
1318
- n && (c.clear(), Ut(n), c.fetch(t, n));
1317
+ function s() {
1318
+ n && (l.clear(), Wt(n), l.fetch(t, n));
1319
1319
  }
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) => {
1320
+ t.rpc.onSchemaUpdated(s), t.rpc.onSchemaDeleted(s);
1321
+ let p = await t.getConfig();
1322
+ d.basePath = p.basePath, d.rootDirectory = p.rootDir, t.rpc.onConfigChanged((e) => {
1323
1323
  d.basePath = e.basePath, d.rootDirectory = e.rootDir, d.devHtml = void 0;
1324
- }), e.middlewares.use(Rt(e, d)), e.middlewares.use(zt(e, t, d));
1324
+ }), e.middlewares.use(zt(e, d)), e.middlewares.use(Bt(e, t, d));
1325
1325
  },
1326
1326
  async transform(e, t) {
1327
1327
  let n = t.split("?")[0];
1328
1328
  if (!s(n)) return;
1329
- if (u(n)) return {
1329
+ if (C(n)) return {
1330
1330
  code: "<script>import { TdNotFound } from 'typerighter/client/theme-default'; export default TdNotFound; export const pageData = { frontmatter: {}, headings: [], title: '' };<\/script>",
1331
1331
  map: null
1332
1332
  };
1333
- let r = await p(), i = await r.getConfig(), a = f(n, i.rootDir);
1333
+ let i = await f(), a = await i.getConfig(), o = r(n, a.rootDir);
1334
1334
  try {
1335
- let { vueSrc: e } = await mt(r, await r.getFile(a), a);
1335
+ let { vueSrc: e } = await ht(i, await i.getFile(o), o);
1336
1336
  return {
1337
1337
  code: e,
1338
1338
  map: null
1339
1339
  };
1340
1340
  } catch (e) {
1341
- if (re(e)) return;
1341
+ if (ie(e)) return;
1342
1342
  let t = e instanceof Error ? e.message : String(e);
1343
- this.error(`[typedown] Failed to transform ${a}: ${t}`);
1343
+ this.error(`[typedown] Failed to transform ${o}: ${t}`);
1344
1344
  }
1345
1345
  },
1346
1346
  handleHotUpdate({ file: e }) {
@@ -1348,9 +1348,9 @@ function $(e = {}) {
1348
1348
  },
1349
1349
  async closeBundle() {
1350
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(/^\//, "");
1351
+ let e = (await (await t.getTdContext()).getConfig()).basePath, n = e.startsWith(a) ? e.slice(a.length) : e.replace(/^\//, "");
1352
1352
  await L(t, {
1353
- outDir: A(r, n),
1353
+ outDir: A(i, n),
1354
1354
  base: e
1355
1355
  });
1356
1356
  } finally {
@@ -1358,28 +1358,28 @@ function $(e = {}) {
1358
1358
  }
1359
1359
  }
1360
1360
  },
1361
- ce({
1361
+ le({
1362
1362
  include: e.root ? RegExp(`${e.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
1363
1363
  template: { transformAssetUrls: !1 }
1364
1364
  }),
1365
- ...se()
1365
+ ...ce()
1366
1366
  ];
1367
1367
  }
1368
- function Vt(e) {
1368
+ function Ht(e) {
1369
1369
  return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
1370
1370
  }
1371
- function Ht(e) {
1372
- for (let t of Vt(e)) e.moduleGraph.invalidateModule(t);
1371
+ function Ut(e) {
1372
+ for (let t of Ht(e)) e.moduleGraph.invalidateModule(t);
1373
1373
  e.hot.send({ type: "full-reload" });
1374
1374
  }
1375
- function Ut(e) {
1376
- let t = Vt(e).map((t) => (e.moduleGraph.invalidateModule(t), Wt(t)));
1375
+ function Wt(e) {
1376
+ let t = Ht(e).map((t) => (e.moduleGraph.invalidateModule(t), Gt(t)));
1377
1377
  0 < t.length && e.hot.send({
1378
1378
  type: "update",
1379
1379
  updates: t
1380
1380
  });
1381
1381
  }
1382
- function Wt(e) {
1382
+ function Gt(e) {
1383
1383
  return {
1384
1384
  type: "js-update",
1385
1385
  path: e.url,
@@ -1387,7 +1387,7 @@ function Wt(e) {
1387
1387
  timestamp: Date.now()
1388
1388
  };
1389
1389
  }
1390
- function Gt(e) {
1390
+ function Kt(e) {
1391
1391
  for (let t of e) {
1392
1392
  let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? j.red("error") : j.yellow("warn");
1393
1393
  console.error(` ${n} ${e} ${t.message} ${j.dim(`(${t.code})`)}`);