typerighter 0.57.2 → 0.57.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,31 +1,31 @@
1
- import { B as e, D as t, F as n, H as r, I as i, O as a, R as o, T as s, U as c, Z as l, _ as u, b as d, c as f, d as p, et as m, g as h, h as g, i as _, nt as v, p as y, q as b, rt as x, v as ee, x as S, y as C, z as w } from "./shared-dB08amQA.js";
2
- import { n as T, t as E } from "./page-BbSO0VG8.js";
3
- import { t as D } from "./temml-CjI4drVW.js";
4
- import { a as O, i as k, n as te, r as ne } from "./context-CPrHBM3S.js";
5
- import { t as re } from "./es-B_QJMowB.js";
6
- import A, { resolve as j } from "node:path";
7
- import M from "picocolors";
8
- import ie from "@tailwindcss/vite";
9
- import ae from "@vitejs/plugin-vue";
10
- import { build as oe, normalizePath as N } from "vite";
11
- import P, { readdir as se } from "node:fs/promises";
12
- import { fileURLToPath as ce } from "node:url";
13
- import le from "node:os";
14
- import { Worker as ue } from "node:worker_threads";
15
- import F, { createReadStream as de, existsSync as fe, globSync as pe, readFileSync as me, statSync as he } from "node:fs";
16
- import { createRequire as ge } from "node:module";
17
- import { createChecker as _e, createCheckerByJson as ve } from "vue-component-meta";
18
- import { createHighlighter as ye, guessEmbeddedLanguages as be, isSpecialLang as xe } from "shiki";
1
+ import { B as e, D as t, F as n, I as r, J as i, O as a, Q as o, R as s, T as c, U as l, V as u, W as d, X as f, _ as p, b as m, c as h, d as g, g as _, h as v, i as y, it as b, p as x, rt as S, tt as C, v as w, x as ee, y as T, z as E } from "./shared-BhUHq27C.js";
2
+ import { n as D, t as O } from "./page-BjRVeDZC.js";
3
+ import { t as k } from "./temml-CjI4drVW.js";
4
+ import { a as A, i as te, n as ne, r as re } from "./context-CLKZYp4U.js";
5
+ import { t as ie } from "./es-B_QJMowB.js";
6
+ import j, { resolve as M } from "node:path";
7
+ import N from "picocolors";
8
+ import ae from "@tailwindcss/vite";
9
+ import oe from "@vitejs/plugin-vue";
10
+ import { build as se, normalizePath as P } from "vite";
11
+ import F, { readdir as ce } from "node:fs/promises";
12
+ import { fileURLToPath as le } from "node:url";
13
+ import ue from "node:os";
14
+ import { Worker as de } from "node:worker_threads";
15
+ import I, { createReadStream as fe, existsSync as pe, globSync as me, readFileSync as he, statSync as ge } from "node:fs";
16
+ import { createRequire as _e } from "node:module";
17
+ import { createChecker as ve, createCheckerByJson as ye } from "vue-component-meta";
18
+ import { createHighlighter as be, guessEmbeddedLanguages as xe, isSpecialLang as Se } from "shiki";
19
19
  // src/node/lib/worker-pool/index.ts
20
- var Se = class {
20
+ var Ce = class {
21
21
  workers = [];
22
22
  queue = [];
23
23
  destroyed = !1;
24
24
  startupError;
25
25
  constructor(e) {
26
- let t = e.concurrency ?? Math.max(1, Math.floor(le.cpus().length / 2));
26
+ let t = e.concurrency ?? Math.max(1, Math.floor(ue.cpus().length / 2));
27
27
  for (let n = 0; n < t; n++) {
28
- let t = new ue(e.filename, { workerData: e.workerData }), n = { worker: t };
28
+ let t = new de(e.filename, { workerData: e.workerData }), n = { worker: t };
29
29
  this.workers.push(n), t.on("message", (e) => {
30
30
  let t = n.pending;
31
31
  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 Se = class {
62
62
  }
63
63
  };
64
64
  // src/node/build/seo/sitemap.ts
65
- function Ce(e, t, r, i) {
65
+ function we(e, t, r, i) {
66
66
  let a = r ?? "";
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 r = f(a + t + n(e)), o = i?.get(e);
71
- return ` <url><loc>${r}</loc>${o === void 0 ? "" : `<lastmod>${_(o * 1e3)}</lastmod>`}</url>`;
70
+ let r = h(a + t + n(e)), o = i?.get(e);
71
+ return ` <url><loc>${r}</loc>${o === void 0 ? "" : `<lastmod>${y(o * 1e3)}</lastmod>`}</url>`;
72
72
  }).join("\n")}
73
73
  </urlset>
74
74
  `;
75
75
  }
76
- function we(e, t) {
76
+ function Te(e, t) {
77
77
  return `User-agent: *
78
78
  Allow: /
79
79
 
@@ -81,44 +81,64 @@ Sitemap: ${e}${t}sitemap.xml
81
81
  `;
82
82
  }
83
83
  // src/node/build/seo/feed.ts
84
- function Te(e, t, n, i, a, o) {
85
- let s = [...e].filter((e) => e.fileMetadata.mtimeSecs > 0).sort((e, t) => t.fileMetadata.mtimeSecs - e.fileMetadata.mtimeSecs).slice(0, 50).map((e) => {
86
- let i = r(e.filepath), a = `${n}${t}${i}`, o = (/* @__PURE__ */ new Date(e.fileMetadata.mtimeSecs * 1e3)).toUTCString(), s = f(e.label ?? i), c = e.excerpt === void 0 ? "" : `<![CDATA[${e.excerpt}]]>`;
84
+ function Ee(e, t, n, r, i, a) {
85
+ let o = [...e].filter((e) => e.fileMetadata.mtimeSecs > 0).sort((e, t) => t.fileMetadata.mtimeSecs - e.fileMetadata.mtimeSecs).slice(0, 50).map((e) => {
86
+ let r = l(e.filepath), i = `${n}${t}${r}`, a = (/* @__PURE__ */ new Date(e.fileMetadata.mtimeSecs * 1e3)).toUTCString(), o = h(e.label ?? r), s = e.excerpt === void 0 ? "" : `<![CDATA[${e.excerpt}]]>`;
87
87
  return ` <item>
88
- <title>${s}</title>
89
- <link>${f(a)}</link>
90
- <guid>${f(a)}</guid>
91
- <pubDate>${o}</pubDate>
92
- <description>${c}</description>
88
+ <title>${o}</title>
89
+ <link>${h(i)}</link>
90
+ <guid>${h(i)}</guid>
91
+ <pubDate>${a}</pubDate>
92
+ <description>${s}</description>
93
93
  </item>`;
94
94
  }).join("\n");
95
95
  return `<?xml version="1.0" encoding="UTF-8"?>
96
96
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
97
97
  <channel>
98
- <title>${f(i)}</title>
99
- <link>${f(n + t)}</link>
100
- <description>${f(a)}</description>
101
- <language>${o}</language>
102
- <atom:link href="${f(n + t)}feed.xml" rel="self" type="application/rss+xml"/>
103
- ${s}
98
+ <title>${h(r)}</title>
99
+ <link>${h(n + t)}</link>
100
+ <description>${h(i)}</description>
101
+ <language>${a}</language>
102
+ <atom:link href="${h(n + t)}feed.xml" rel="self" type="application/rss+xml"/>
103
+ ${o}
104
104
  </channel>
105
105
  </rss>
106
106
  `;
107
107
  }
108
+ // src/node/build/seo/llms.ts
109
+ function De(e, t, n, r, i) {
110
+ let a = [];
111
+ a.push(`# ${r}`), a.push(""), i && (a.push(`> ${i}`), a.push(""));
112
+ let o = /* @__PURE__ */ new Map();
113
+ for (let t of e) {
114
+ let e = t.filepath.split("/"), n = e.length > 1 ? e[0] : "";
115
+ o.has(n) || o.set(n, []), o.get(n).push(t);
116
+ }
117
+ for (let [e, r] of o) {
118
+ let i = e ? f(e) : "General";
119
+ a.push(`## ${i}`), a.push("");
120
+ for (let e of r) {
121
+ let r = l(e.filepath), i = `${n}${t}${m(e.filepath) ? r.replace(/\/index$/, "/").replace(/^index$/, "") : r}`, o = e.label ?? f(E(e.filepath)), s = e.excerpt ? `: ${e.excerpt}` : "";
122
+ a.push(`- [${o}](${i})${s}`);
123
+ }
124
+ a.push("");
125
+ }
126
+ return a.join("\n");
127
+ }
108
128
  // src/node/build/fonts.ts
109
- function Ee(e) {
110
- let t = A.basename(e);
129
+ function Oe(e) {
130
+ let t = j.basename(e);
111
131
  return t.endsWith(".woff2") && t.includes("-latin-") && !t.includes("-latin-ext-");
112
132
  }
113
133
  // src/node/build/prerender.ts
114
- var De = 64;
115
- async function Oe(e) {
116
- let { clientEntry: t, cssFiles: n, fontFiles: r } = await je(e.clientOutDir), i = [n.map((t) => ` <link rel="stylesheet" href="${e.base}${t}">`).join("\n"), r.map((t) => ` <link rel="preload" as="font" type="font/woff2" crossorigin href="${e.base}${t}">`).join("\n")].filter(Boolean).join("\n") || void 0;
117
- e.pageRoutes.length >= De ? await ke(e, t, i) : await Ae(e, t, i);
118
- }
119
- async function ke(e, t, n) {
120
- let r = new Se({
121
- filename: A.resolve(ce(import.meta.url), "../prerenderWorker.js"),
134
+ var ke = 64;
135
+ async function Ae(e) {
136
+ let { clientEntry: t, cssFiles: n, fontFiles: r } = await Ne(e.clientOutDir), i = [n.map((t) => ` <link rel="stylesheet" href="${e.base}${t}">`).join("\n"), r.map((t) => ` <link rel="preload" as="font" type="font/woff2" crossorigin href="${e.base}${t}">`).join("\n")].filter(Boolean).join("\n") || void 0;
137
+ e.pageRoutes.length >= ke ? await je(e, t, i) : await Me(e, t, i);
138
+ }
139
+ async function je(e, t, n) {
140
+ let r = new Ce({
141
+ filename: j.resolve(le(import.meta.url), "../prerenderWorker.js"),
122
142
  workerData: {
123
143
  ssrEntryPath: e.ssrEntryPath,
124
144
  base: e.base,
@@ -132,21 +152,21 @@ async function ke(e, t, n) {
132
152
  }), i = 0, a = e.pageRoutes.length;
133
153
  try {
134
154
  await Promise.all(e.pageRoutes.map(async (t) => {
135
- let n = await r.run(t), o = A.join(e.outDir, n.fileName);
136
- await P.mkdir(A.dirname(o), { recursive: !0 }), await P.writeFile(o, n.html), i++, e.progress?.update(i, a);
155
+ let n = await r.run(t), o = j.join(e.outDir, n.fileName);
156
+ await F.mkdir(j.dirname(o), { recursive: !0 }), await F.writeFile(o, n.html), i++, e.progress?.update(i, a);
137
157
  }));
138
158
  } finally {
139
159
  await r.destroy();
140
160
  }
141
161
  }
142
- async function Ae(e, t, r) {
162
+ async function Me(e, t, r) {
143
163
  let i = await (await import(e.ssrEntryPath)).createRenderer(), a = e.pageRoutes.length, o = 0;
144
164
  for (let s of e.pageRoutes) {
145
- let c = await i(s), l = E(c.pageData, s, {
165
+ let c = await i(s), l = O(c.pageData, s, {
146
166
  base: e.base,
147
167
  origin: e.origin,
148
168
  author: e.author
149
- }), u = T({
169
+ }), u = D({
150
170
  title: l.title,
151
171
  description: l.description,
152
172
  siteTitle: e.siteTitle,
@@ -161,13 +181,13 @@ async function Ae(e, t, r) {
161
181
  jsonLdBlocks: l.jsonLdBlocks,
162
182
  headExtra: r,
163
183
  appContent: c.html
164
- }), d = l.isHomepage ? "index.html" : `${n(s)}.html`, f = A.join(e.outDir, d);
165
- await P.mkdir(A.dirname(f), { recursive: !0 }), await P.writeFile(f, u), o++, e.progress?.update(o, a);
184
+ }), d = l.isHomepage ? "index.html" : `${n(s)}.html`, f = j.join(e.outDir, d);
185
+ await F.mkdir(j.dirname(f), { recursive: !0 }), await F.writeFile(f, u), o++, e.progress?.update(o, a);
166
186
  }
167
187
  }
168
- async function je(e) {
169
- let t = A.join(e, ".vite", "manifest.json"), n = await P.readFile(t, "utf-8"), r = JSON.parse(n), i = "", a = [], o = [];
170
- for (let e of Object.values(r)) e.isEntry ? (i = e.file, e.css && a.push(...e.css)) : Ee(e.file) && o.push(e.file);
188
+ async function Ne(e) {
189
+ let t = j.join(e, ".vite", "manifest.json"), n = await F.readFile(t, "utf-8"), r = JSON.parse(n), i = "", a = [], o = [];
190
+ for (let e of Object.values(r)) e.isEntry ? (i = e.file, e.css && a.push(...e.css)) : Oe(e.file) && o.push(e.file);
171
191
  return {
172
192
  clientEntry: i,
173
193
  cssFiles: a,
@@ -175,7 +195,7 @@ async function je(e) {
175
195
  };
176
196
  }
177
197
  // src/node/lib/codegen/app-entry.ts
178
- function Me(e, t) {
198
+ function Pe(e, t) {
179
199
  let { rootDir: n = ".", mountPath: r = "", userComponents: i = [] } = e, a = [r, n === "." ? "" : n].filter(Boolean).join("/"), o = i.map((e) => `import ${e.name} from ${JSON.stringify(e.absolutePath)};`).join("\n"), s = i.map((e) => `app.component(${JSON.stringify(e.name)}, ${e.name});`).join("\n"), c = JSON.stringify({
180
200
  title: e.siteTitle,
181
201
  description: e.siteDescription,
@@ -233,89 +253,89 @@ if (import.meta.hot) {
233
253
  `;
234
254
  }
235
255
  // src/node/lib/codegen/theme.ts
236
- var I = "typerighter/client/theme-default";
237
- function Ne(e, t) {
238
- let n = e?.notFound ? `import CustomNotFound from ${JSON.stringify(t ? A.resolve(t, e.notFound) : e.notFound)};` : "", r = e?.notFound ? ", NotFound: CustomNotFound" : "";
256
+ var L = "typerighter/client/theme-default";
257
+ function Fe(e, t) {
258
+ let n = e?.notFound ? `import CustomNotFound from ${JSON.stringify(t ? j.resolve(t, e.notFound) : e.notFound)};` : "", r = e?.notFound ? ", NotFound: CustomNotFound" : "";
239
259
  if (e?.component) {
240
- let i = t ? A.resolve(t, e.component) : e.component;
260
+ let i = t ? j.resolve(t, e.component) : e.component;
241
261
  return [
242
262
  `import CustomLayout from ${JSON.stringify(i)};`,
243
263
  n,
244
264
  `export default { Layout: CustomLayout${r} };`
245
265
  ].filter(Boolean).join("\n");
246
266
  }
247
- let i = Object.entries(e?.slots ?? {});
248
- if (0 < i.length) {
249
- let e = i.map(([e, t]) => `${JSON.stringify(b(e))}: () => h(resolveComponent(${JSON.stringify(t)}))`).join(", ");
267
+ let a = Object.entries(e?.slots ?? {});
268
+ if (0 < a.length) {
269
+ let e = a.map(([e, t]) => `${JSON.stringify(i(e))}: () => h(resolveComponent(${JSON.stringify(t)}))`).join(", ");
250
270
  return [
251
- `import DefaultTheme from ${JSON.stringify(I)};`,
271
+ `import DefaultTheme from ${JSON.stringify(L)};`,
252
272
  "import { h, resolveComponent } from 'vue';",
253
273
  n,
254
274
  `export default { Layout: { render() { return h(DefaultTheme.Layout, null, { ${e} }); } }${r} };`
255
275
  ].filter(Boolean).join("\n");
256
276
  }
257
277
  return n ? [
258
- `import DefaultTheme from ${JSON.stringify(I)};`,
278
+ `import DefaultTheme from ${JSON.stringify(L)};`,
259
279
  n,
260
280
  `export default { ...DefaultTheme${r} };`
261
- ].join("\n") : `export { default } from ${JSON.stringify(I)};`;
281
+ ].join("\n") : `export { default } from ${JSON.stringify(L)};`;
262
282
  }
263
283
  // src/node/lib/components.ts
264
- function Pe(e) {
265
- let t = A.join(e, "tsconfig.json");
266
- if (F.existsSync(t)) return _e(t);
267
- let n = Fe(e);
268
- return ve(e, { compilerOptions: {
284
+ function Ie(e) {
285
+ let t = j.join(e, "tsconfig.json");
286
+ if (I.existsSync(t)) return ve(t);
287
+ let n = Le(e);
288
+ return ye(e, { compilerOptions: {
269
289
  strict: !1,
270
290
  jsx: "preserve",
271
291
  jsxImportSource: "vue",
272
292
  ...n && { paths: n }
273
293
  } });
274
294
  }
275
- async function L(e, t) {
295
+ async function R(e, t) {
276
296
  let n = [];
277
297
  for (let r of e) if (r.kind === "dir") {
278
- let e = A.resolve(t, r.path), i;
298
+ let e = j.resolve(t, r.path), i;
279
299
  try {
280
- i = await se(e, { withFileTypes: !0 });
300
+ i = await ce(e, { withFileTypes: !0 });
281
301
  } catch {
282
302
  continue;
283
303
  }
284
304
  for (let t of i) if (t.isFile() && t.name.endsWith(".vue")) n.push({
285
305
  name: t.name.slice(0, -4),
286
- absolutePath: A.join(e, t.name)
306
+ absolutePath: j.join(e, t.name)
287
307
  });
288
308
  else if (t.isDirectory()) {
289
- let r = A.join(e, t.name, "index.vue");
290
- F.existsSync(r) && n.push({
309
+ let r = j.join(e, t.name, "index.vue");
310
+ I.existsSync(r) && n.push({
291
311
  name: t.name,
292
312
  absolutePath: r
293
313
  });
294
314
  }
295
315
  } else n.push({
296
316
  name: r.name,
297
- absolutePath: A.resolve(t, r.source)
317
+ absolutePath: j.resolve(t, r.source)
298
318
  });
299
319
  return n;
300
320
  }
301
- function Fe(e) {
321
+ function Le(e) {
302
322
  try {
303
- let t = ge(A.join(e, "package.json")), n = A.dirname(t.resolve("vue/package.json"));
323
+ let t = _e(j.join(e, "package.json")), n = j.dirname(t.resolve("vue/package.json"));
304
324
  return {
305
325
  vue: [n],
306
- "vue/*": [A.join(n, "*")]
326
+ "vue/*": [j.join(n, "*")]
307
327
  };
308
328
  } catch {
309
329
  return;
310
330
  }
311
331
  }
312
332
  // src/node/lib/progress.ts
313
- var R = [
333
+ var z = [
314
334
  "◐",
315
335
  "◓",
316
336
  "◑",
317
337
  "◒"
318
- ], z = class {
338
+ ], Re = class {
319
339
  logger;
320
340
  label;
321
341
  start;
@@ -323,8 +343,8 @@ var R = [
323
343
  constructor(e, t) {
324
344
  if (this.logger = e, this.label = t, this.start = performance.now(), process.stdout.isTTY) {
325
345
  let e = 0;
326
- process.stdout.write(M.cyan(`${R[0]} ${t}`)), this.spinnerInterval = setInterval(() => {
327
- e = (e + 1) % R.length, process.stdout.write(`\r${M.cyan(`${R[e]} ${this.label}`)}`);
346
+ process.stdout.write(N.cyan(`${z[0]} ${t}`)), this.spinnerInterval = setInterval(() => {
347
+ e = (e + 1) % z.length, process.stdout.write(`\r${N.cyan(`${z[e]} ${this.label}`)}`);
328
348
  }, 120).unref();
329
349
  } else this.logger.start(t);
330
350
  }
@@ -336,61 +356,61 @@ var R = [
336
356
  done(e) {
337
357
  this.stopSpinner(), process.stdout.isTTY && process.stdout.write("\r\x1B[K");
338
358
  let t = Math.round(performance.now() - this.start);
339
- this.logger.success(`${e} (${Ie(t)})`);
359
+ this.logger.success(`${e} (${ze(t)})`);
340
360
  }
341
361
  stopSpinner() {
342
362
  this.spinnerInterval &&= (clearInterval(this.spinnerInterval), void 0);
343
363
  }
344
364
  };
345
- function Ie(e) {
365
+ function ze(e) {
346
366
  return e < 1e3 ? `${Math.round(e)}ms` : `${(e / 1e3).toFixed(1)}s`;
347
367
  }
348
368
  // src/node/build/index.ts
349
- async function Le(e, t = {}) {
350
- let { root: n, logger: i } = e, a = A.resolve(n, t.outDir ?? "dist"), o = A.join(a, ".client"), s = A.join(a, ".server");
351
- await P.rm(a, {
369
+ async function Be(e, t = {}) {
370
+ let { root: n, logger: r } = e, i = j.resolve(n, t.outDir ?? "dist"), a = j.join(i, ".client"), o = j.join(i, ".server");
371
+ await F.rm(i, {
352
372
  recursive: !0,
353
373
  force: !0
354
374
  });
355
- let c = await e.getTdContext(), [l, u, d, f] = await Promise.all([
356
- c.getConfig(),
357
- c.listFiles(),
358
- c.listSidebar(),
359
- c.listSchemas()
360
- ]), p = await Promise.all(f.map(async (e) => [e, (await c.getSchema(e)).properties])), m = Object.fromEntries(p), h = l.origin ?? void 0, _ = l.author ?? void 0, v = l.license ?? void 0, y = l.repo ?? void 0, b = t.base ?? l.basePath ?? "/", x = S(b), ee = d.map((e) => ({
375
+ let s = await e.getTdContext(), [c, u, d, f] = await Promise.all([
376
+ s.getConfig(),
377
+ s.listFiles(),
378
+ s.listSidebar(),
379
+ s.listSchemas()
380
+ ]), p = await Promise.all(f.map(async (e) => [e, (await s.getSchema(e)).properties])), m = Object.fromEntries(p), h = c.origin ?? void 0, g = c.author ?? void 0, _ = c.license ?? void 0, y = c.repo ?? void 0, b = t.base ?? c.basePath ?? "/", x = ee(b), S = d.map((e) => ({
361
381
  ...e,
362
382
  header: {}
363
- })), C = g(ee), w = JSON.stringify({
364
- title: l.siteTitle,
365
- description: l.siteDescription,
383
+ })), C = v(S), w = JSON.stringify({
384
+ title: c.siteTitle,
385
+ description: c.siteDescription,
366
386
  basePath: x,
367
387
  origin: h,
368
- lang: l.lang,
369
- rootDir: l.rootDir,
388
+ lang: c.lang,
389
+ rootDir: c.rootDir,
370
390
  repo: y,
371
- author: _,
372
- license: v,
373
- nav: l.nav
391
+ author: g,
392
+ license: _,
393
+ nav: c.nav
374
394
  }), T = JSON.stringify({
375
395
  ready: !0,
376
396
  contentTree: C,
377
397
  schemas: m
378
- }), E = A.join(n, "node_modules", ".typerighter");
379
- await P.mkdir(E, { recursive: !0 });
380
- let D = A.join(E, "client-entry.js"), O = A.join(E, "ssr-entry.js"), k = A.join(E, "theme.js"), te = await L(l.components, n), ne = Ne(l.layout ?? void 0, n);
398
+ }), E = j.join(n, "node_modules", ".typerighter");
399
+ await F.mkdir(E, { recursive: !0 });
400
+ let D = j.join(E, "client-entry.js"), O = j.join(E, "ssr-entry.js"), k = j.join(E, "theme.js"), A = await R(c.components, n), te = Fe(c.layout ?? void 0, n);
381
401
  await Promise.all([
382
- P.writeFile(D, Me({
383
- rootDir: l.rootDir,
402
+ F.writeFile(D, Pe({
403
+ rootDir: c.rootDir,
384
404
  basePath: x,
385
405
  origin: h,
386
- lang: l.lang,
387
- siteTitle: l.siteTitle,
388
- siteDescription: l.siteDescription,
406
+ lang: c.lang,
407
+ siteTitle: c.siteTitle,
408
+ siteDescription: c.siteDescription,
389
409
  repo: y,
390
- author: _,
391
- license: v,
392
- nav: l.nav,
393
- userComponents: te
410
+ author: g,
411
+ license: _,
412
+ nav: c.nav,
413
+ userComponents: A
394
414
  }, {
395
415
  theme: Y,
396
416
  pages: G,
@@ -398,27 +418,27 @@ async function Le(e, t = {}) {
398
418
  searchIndex: J,
399
419
  pageDataEvent: X
400
420
  })),
401
- P.writeFile(O, Re({
402
- rootDir: l.rootDir,
421
+ F.writeFile(O, Ve({
422
+ rootDir: c.rootDir,
403
423
  siteConfig: w,
404
424
  siteData: T,
405
425
  themeModulePath: k,
406
- userComponents: te
426
+ userComponents: A
407
427
  })),
408
- P.writeFile(k, ne)
428
+ F.writeFile(k, te)
409
429
  ]);
410
430
  try {
411
- let c = _n({ context: e }), f = e.createViteLogger(), p = new z(i, "Building client bundle...");
412
- await oe({
431
+ let s = e.createViteLogger(), f = new Re(r, "Building bundles..."), p = performance.now();
432
+ await Promise.all([se({
413
433
  ...t.viteConfig,
414
434
  root: n,
415
435
  base: x,
416
- plugins: c,
417
- customLogger: f,
436
+ plugins: $({ context: e }),
437
+ customLogger: s,
418
438
  logLevel: "silent",
419
439
  build: {
420
440
  ...t.viteConfig?.build,
421
- outDir: o,
441
+ outDir: a,
422
442
  manifest: !0,
423
443
  emptyOutDir: !0,
424
444
  rollupOptions: {
@@ -426,73 +446,71 @@ async function Le(e, t = {}) {
426
446
  input: D
427
447
  }
428
448
  }
429
- });
430
- let m = await P.readdir(A.join(o, "assets")).catch(() => []);
431
- p.done(`Client bundle (${m.length} chunks)`);
432
- let g = new z(i, "Building SSR bundle...");
433
- await oe({
449
+ }), se({
434
450
  ...t.viteConfig,
435
451
  root: n,
436
452
  base: x,
437
- plugins: c,
438
- customLogger: f,
453
+ plugins: $({ context: e }),
454
+ customLogger: s,
439
455
  logLevel: "silent",
440
456
  build: {
441
457
  ...t.viteConfig?.build,
442
- outDir: s,
458
+ outDir: o,
443
459
  ssr: O,
444
460
  emptyOutDir: !0
445
461
  }
446
- }), g.done("SSR bundle");
462
+ })]);
463
+ let m = await F.readdir(j.join(a, "assets")).catch(() => []), _ = performance.now() - p;
464
+ f.done(`Client (${m.length} chunks) + SSR`), process.env.TYPEDOWN_VERBOSE === "1" && process.stderr.write(`[timing:phase] bundles ${_.toFixed(0)}ms\n`);
447
465
  let v = u.map((e) => {
448
- let t = r(e);
466
+ let t = l(e);
449
467
  return t === "index" ? "/" : `/${t}`;
450
468
  });
451
- v.push("/"), Be(C.entries, v);
452
- let y = new z(i, "Pre-rendering pages...");
453
- await Oe({
454
- ssrEntryPath: A.join(s, "ssr-entry.js"),
455
- clientOutDir: o,
456
- outDir: a,
469
+ v.push("/"), Ue(C.entries, v);
470
+ let y = new Re(r, "Pre-rendering pages...");
471
+ await Ae({
472
+ ssrEntryPath: j.join(o, "ssr-entry.js"),
473
+ clientOutDir: a,
474
+ outDir: i,
457
475
  base: x,
458
476
  origin: h,
459
- lang: l.lang,
477
+ lang: c.lang,
460
478
  pageRoutes: v,
461
- siteTitle: l.siteTitle,
462
- author: _,
479
+ siteTitle: c.siteTitle,
480
+ author: g,
463
481
  progress: y
464
482
  }), y.done(`Pre-rendered ${v.length} pages`);
465
483
  let b = /* @__PURE__ */ new Map();
466
484
  for (let e of d) {
467
- let t = r(e.filepath), n = t === "index" ? "/" : `/${t}`;
485
+ let t = l(e.filepath), n = t === "index" ? "/" : `/${t}`;
468
486
  b.set(n, e.fileMetadata.mtimeSecs);
469
487
  }
470
- let ee = Ce(v, x, h, b), S = [P.writeFile(A.join(a, "sitemap.xml"), ee)];
471
- h !== void 0 && (S.push(P.writeFile(A.join(a, "robots.txt"), we(h, x))), S.push(P.writeFile(A.join(a, "feed.xml"), Te(d, x, h, l.siteTitle, l.siteDescription, l.lang)))), await Promise.all(S);
472
- let w = A.join(o, "assets"), T = A.join(a, "assets");
473
- await P.cp(w, T, { recursive: !0 }).catch(() => {}), await ze(A.join(n, l.rootDir), a);
474
- let E = A.join(n, l.publicDir);
475
- await P.cp(E, a, { recursive: !0 }).catch(() => {});
488
+ let S = we(v, x, h, b), w = [F.writeFile(j.join(i, "sitemap.xml"), S)];
489
+ h !== void 0 && (w.push(F.writeFile(j.join(i, "robots.txt"), Te(h, x))), w.push(F.writeFile(j.join(i, "feed.xml"), Ee(d, x, h, c.siteTitle, c.siteDescription, c.lang))), w.push(F.writeFile(j.join(i, "llms.txt"), De(d, x, h, c.siteTitle, c.siteDescription)))), await Promise.all(w);
490
+ let ee = j.join(a, "assets"), T = j.join(i, "assets");
491
+ await F.cp(ee, T, { recursive: !0 }).catch(() => {}), await He(j.join(n, c.rootDir), i);
492
+ let E = j.join(n, c.publicDir);
493
+ await F.cp(E, i, { recursive: !0 }).catch(() => {});
476
494
  } finally {
477
495
  await Promise.all([
478
- P.rm(E, {
496
+ F.rm(E, {
479
497
  recursive: !0,
480
498
  force: !0
481
499
  }),
482
- P.rm(o, {
500
+ F.rm(a, {
483
501
  recursive: !0,
484
502
  force: !0
485
503
  }),
486
- P.rm(s, {
504
+ F.rm(o, {
487
505
  recursive: !0,
488
506
  force: !0
489
507
  })
490
508
  ]);
491
509
  }
492
- i.log(`\nBuild complete. Output: ${a}`);
510
+ r.log(`\nBuild complete. Output: ${i}`);
493
511
  }
494
- function Re(e) {
495
- let t = `/${e.rootDir}/${m}`, n = JSON.parse(e.siteConfig), r = JSON.parse(e.siteData), i = r.contentTree ?? { entries: [] }, a = h(i.entries ?? [], n.title ?? ""), o = JSON.stringify({
512
+ function Ve(e) {
513
+ let t = `/${e.rootDir}/${C}`, n = JSON.parse(e.siteConfig), r = JSON.parse(e.siteData), i = r.contentTree ?? { entries: [] }, a = _(i.entries ?? [], n.title ?? ""), o = JSON.stringify({
496
514
  ...r,
497
515
  directoryListings: a
498
516
  }), s = e.userComponents ?? [], c = s.map((e) => `import ${e.name} from ${JSON.stringify(e.absolutePath)};`).join("\n"), l = s.map((e) => `app.component(${JSON.stringify(e.name)}, ${e.name});`).join("\n");
@@ -517,31 +535,31 @@ export async function createRenderer() {
517
535
  }
518
536
  `;
519
537
  }
520
- async function ze(e, t) {
521
- let n = (await P.readdir(e, {
538
+ async function He(t, n) {
539
+ let r = (await F.readdir(t, {
522
540
  recursive: !0,
523
541
  withFileTypes: !0
524
- })).filter((e) => e.isFile() && !w(e.name)).map(async (n) => {
525
- let r = A.join(n.parentPath, n.name), i = A.relative(e, r), a = A.join(t, i);
526
- return P.mkdir(A.dirname(a), { recursive: !0 }).then(() => P.copyFile(r, a));
542
+ })).filter((t) => t.isFile() && !e(t.name)).map(async (e) => {
543
+ let r = j.join(e.parentPath, e.name), i = j.relative(t, r), a = j.join(n, i);
544
+ return F.mkdir(j.dirname(a), { recursive: !0 }).then(() => F.copyFile(r, a));
527
545
  });
528
- await Promise.all(n);
546
+ await Promise.all(r);
529
547
  }
530
- function Be(e, t, n = "") {
548
+ function Ue(e, t, n = "") {
531
549
  for (let r of e) {
532
550
  if (r.kind !== "dir") continue;
533
551
  let e = `${n}/${r.node.name}`;
534
- u(r.node) || t.push(s(e)), Be(r.node.entries, t, e);
552
+ p(r.node) || t.push(c(e)), Ue(r.node.entries, t, e);
535
553
  }
536
554
  }
537
555
  // ../../node_modules/.pnpm/@shikijs+transformers@4.4.3/node_modules/@shikijs/transformers/dist/index.mjs
538
- var Ve = /(\s+\/\/)/, He = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ue = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, We = [
556
+ var We = /(\s+\/\/)/, Ge = /(?:\/\/|["'#]|;{1,2}|%{1,2}|--)(\s*)$/, Ke = /(?:\/\/|#|;{1,2}|%{1,2}|--)(\s*)$/, qe = [
539
557
  [/^(<!--)(.+)(-->)$/, !1],
540
558
  [/^(\/\*)(.+)(\*\/)$/, !1],
541
559
  [/^(\/\/|["'#]|;{1,2}|%{1,2}|--)(.*)$/, !0],
542
560
  [/^(\*)(.+)$/, !0]
543
561
  ];
544
- function Ge(e, t, n) {
562
+ function Je(e, t, n) {
545
563
  let r = [];
546
564
  for (let i of e) {
547
565
  if (n === "v3") {
@@ -551,7 +569,7 @@ function Ge(e, t, n) {
551
569
  if (n.type !== "text") return e;
552
570
  let r = t === i.children.length - 1;
553
571
  if (!B(n.value, r)) return e;
554
- let a = n.value.split(Ve);
572
+ let a = n.value.split(We);
555
573
  if (a.length <= 1) return e;
556
574
  let o = [a[0]];
557
575
  for (let e = 1; e < a.length; e += 2) o.push(a[e] + (a[e + 1] || ""));
@@ -595,7 +613,7 @@ function Ge(e, t, n) {
595
613
  }
596
614
  if (c) {
597
615
  if (t && !s && n !== 0) {
598
- let t = Ke(e[n - 1], "{") && Ke(e[n + 1], "}");
616
+ let t = Ye(e[n - 1], "{") && Ye(e[n + 1], "}");
599
617
  r.push({
600
618
  info: c,
601
619
  line: i,
@@ -617,7 +635,7 @@ function Ge(e, t, n) {
617
635
  }
618
636
  return r;
619
637
  }
620
- function Ke(e, t) {
638
+ function Ye(e, t) {
621
639
  if (e.type !== "element") return !1;
622
640
  let n = e.children[0];
623
641
  return n.type === "text" && n.value.trim() === t;
@@ -626,7 +644,7 @@ function B(e, t) {
626
644
  let n = e.trimStart(), r = e.length - n.length;
627
645
  n = n.trimEnd();
628
646
  let i = e.length - n.length - r;
629
- for (let [e, a] of We) {
647
+ for (let [e, a] of qe) {
630
648
  if (a && !t) continue;
631
649
  let o = e.exec(n);
632
650
  if (o) return [
@@ -636,22 +654,22 @@ function B(e, t) {
636
654
  ];
637
655
  }
638
656
  }
639
- function qe(e) {
640
- let t = e.match(He);
657
+ function Xe(e) {
658
+ let t = e.match(Ge);
641
659
  return t && t[1].trim().length === 0 ? e.slice(0, t.index) : e;
642
660
  }
643
- function Je(e) {
644
- let t = e.match(Ue);
661
+ function Ze(e) {
662
+ let t = e.match(Ke);
645
663
  return t && t[1].trim().length === 0 ? e.slice(0, t.index).trimEnd() : e;
646
664
  }
647
- function Ye(e, t, n, r) {
665
+ function Qe(e, t, n, r) {
648
666
  return r ??= "v3", {
649
667
  name: e,
650
668
  code(e) {
651
669
  let i = e.children.filter((e) => e.type === "element"), a = [];
652
670
  e.data ??= {};
653
671
  let o = e.data;
654
- o._shiki_notation ??= Ge(i, ["jsx", "tsx"].includes(this.options.lang), r);
672
+ o._shiki_notation ??= Je(i, ["jsx", "tsx"].includes(this.options.lang), r);
655
673
  let s = o._shiki_notation;
656
674
  for (let e of s) {
657
675
  if (e.info[1].length === 0) continue;
@@ -659,7 +677,7 @@ function Ye(e, t, n, r) {
659
677
  e.isLineCommentOnly && r !== "v1" && o++;
660
678
  let s = !1;
661
679
  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;
662
- r === "v1" ? e.info[1] = qe(e.info[1]) : r === "v3" && (e.info[1] = Je(e.info[1]));
680
+ r === "v1" ? e.info[1] = Xe(e.info[1]) : r === "v3" && (e.info[1] = Ze(e.info[1]));
663
681
  let c = e.info[1].trim().length === 0;
664
682
  if (c && (e.info[1] = ""), c && e.isLineCommentOnly) a.push(e.line);
665
683
  else if (c && e.isJsxStyle) e.line.children.splice(e.line.children.indexOf(e.token) - 1, 3);
@@ -684,42 +702,42 @@ function Ye(e, t, n, r) {
684
702
  }
685
703
  };
686
704
  }
687
- var Xe = /\{([\d,-]+)\}/;
688
- function Ze(e) {
705
+ var $e = /\{([\d,-]+)\}/;
706
+ function et(e) {
689
707
  if (!e) return null;
690
- let t = e.match(Xe);
708
+ let t = e.match($e);
691
709
  return t ? t[1].split(",").flatMap((e) => {
692
710
  let t = e.split("-").map((e) => Number.parseInt(e, 10));
693
711
  return t.length === 1 ? [t[0]] : Array.from({ length: t[1] - t[0] + 1 }, (e, n) => t[0] + n);
694
712
  }) : null;
695
713
  }
696
- var Qe = Symbol("highlighted-lines");
697
- function $e(e = {}) {
714
+ var tt = Symbol("highlighted-lines");
715
+ function nt(e = {}) {
698
716
  let { className: t = "highlighted", zeroIndexed: n = !1 } = e;
699
717
  return {
700
718
  name: "@shikijs/transformers:meta-highlight",
701
719
  line(e, r) {
702
720
  if (!this.options.meta?.__raw) return;
703
721
  let i = this.meta;
704
- i[Qe] ??= Ze(this.options.meta.__raw);
705
- let a = i[Qe] ?? [], o = n ? r - 1 : r;
722
+ i[tt] ??= et(this.options.meta.__raw);
723
+ let a = i[tt] ?? [], o = n ? r - 1 : r;
706
724
  return a.includes(o) && this.addClassToHast(e, t), e;
707
725
  }
708
726
  };
709
727
  }
710
- var et = /[.*+?^${}()|[\]\\]/g;
711
- function tt(e) {
712
- return e.replace(et, "\\$&");
728
+ var rt = /[.*+?^${}()|[\]\\]/g;
729
+ function it(e) {
730
+ return e.replace(rt, "\\$&");
713
731
  }
714
732
  function V(e = {}, t = "@shikijs/transformers:notation-map") {
715
733
  let { classMap: n = {}, classActivePre: r = void 0, classActiveCode: i = void 0 } = e;
716
- return Ye(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(tt).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
734
+ return Qe(t, RegExp(`#?\\s*\\[!code (${Object.keys(n).map(it).join("|")})(:\\d+)?\\]`, "gi"), function([e, t, a = ":1"], o, s, c, l) {
717
735
  let u = Number.parseInt(a.slice(1), 10);
718
736
  for (let e = l; e < Math.min(l + u, c.length); e++) this.addClassToHast(c[e], n[t]);
719
737
  return r && this.addClassToHast(this.pre, r), i && this.addClassToHast(this.code, i), !0;
720
738
  }, e.matchAlgorithm);
721
739
  }
722
- function nt(e = {}) {
740
+ function at(e = {}) {
723
741
  let { classLineAdd: t = "diff add", classLineRemove: n = "diff remove", classActivePre: r = "has-diff", classActiveCode: i } = e;
724
742
  return V({
725
743
  classMap: {
@@ -731,7 +749,7 @@ function nt(e = {}) {
731
749
  matchAlgorithm: e.matchAlgorithm
732
750
  }, "@shikijs/transformers:notation-diff");
733
751
  }
734
- function rt(e = {}) {
752
+ function ot(e = {}) {
735
753
  let { classMap: t = {
736
754
  error: ["highlighted", "error"],
737
755
  warning: ["highlighted", "warning"],
@@ -744,7 +762,7 @@ function rt(e = {}) {
744
762
  matchAlgorithm: e.matchAlgorithm
745
763
  }, "@shikijs/transformers:notation-error-level");
746
764
  }
747
- function it(e = {}) {
765
+ function st(e = {}) {
748
766
  let { classActiveLine: t = "focused", classActivePre: n = "has-focused", classActiveCode: r } = e;
749
767
  return V({
750
768
  classMap: { focus: t },
@@ -753,7 +771,7 @@ function it(e = {}) {
753
771
  matchAlgorithm: e.matchAlgorithm
754
772
  }, "@shikijs/transformers:notation-focus");
755
773
  }
756
- function at(e = {}) {
774
+ function ct(e = {}) {
757
775
  let { classActiveLine: t = "highlighted", classActivePre: n = "has-highlighted", classActiveCode: r } = e;
758
776
  return V({
759
777
  classMap: {
@@ -766,41 +784,41 @@ function at(e = {}) {
766
784
  }, "@shikijs/transformers:notation-highlight");
767
785
  }
768
786
  // src/node/lib/render/highlight/language.ts
769
- var ot = [
787
+ var lt = [
770
788
  "shellscript",
771
789
  "shell",
772
790
  "bash",
773
791
  "sh",
774
792
  "zsh"
775
793
  ];
776
- function st(e) {
777
- return ot.includes(e);
794
+ function ut(e) {
795
+ return lt.includes(e);
778
796
  }
779
- var ct = /^[a-zA-Z0-9-_]+/;
780
- function lt(e) {
781
- return ct.exec(e)?.[0] || "";
797
+ var dt = /^[a-zA-Z0-9-_]+/;
798
+ function ft(e) {
799
+ return dt.exec(e)?.[0] || "";
782
800
  }
783
801
  // src/node/lib/render/highlight/index.ts
784
- var ut = new FinalizationRegistry((e) => {
802
+ var pt = new FinalizationRegistry((e) => {
785
803
  e();
786
804
  }), H = {
787
805
  light: "github-light",
788
806
  dark: "github-dark"
789
807
  };
790
- async function dt() {
791
- let e = await ye({
808
+ async function mt() {
809
+ let e = await be({
792
810
  themes: [H.light, H.dark],
793
811
  langs: []
794
812
  }), t = [
795
- $e(),
796
813
  nt(),
797
- it({
814
+ at(),
815
+ st({
798
816
  classActiveLine: "has-focus",
799
817
  classActivePre: "has-focused-lines"
800
818
  }),
801
- at(),
802
- rt(),
803
- ft(),
819
+ ct(),
820
+ ot(),
821
+ ht(),
804
822
  {
805
823
  name: "typedown:add-dir",
806
824
  pre(e) {
@@ -809,19 +827,19 @@ async function dt() {
809
827
  }
810
828
  ], n = new Set(e.getLoadedLanguages());
811
829
  async function r(r, i, a, o) {
812
- let s = lt(i);
830
+ let s = ft(i);
813
831
  if (s) {
814
832
  let e = i;
815
833
  i = s.toLowerCase(), a = e.slice(i.length).replace(/(?<!=)\{/g, " {") + " " + a, a = a.trim().replace(/\s+/g, " ");
816
834
  }
817
835
  i ||= "txt";
818
836
  try {
819
- !xe(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
837
+ !Se(i) && !n.has(i) && (await e.loadLanguage(i), n.add(i));
820
838
  } catch {
821
- O.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
839
+ A.warn(`\nThe language '${i}' is not loaded, falling back to 'txt' for syntax highlighting.`), i = "txt";
822
840
  }
823
841
  r = r.trimEnd();
824
- let c = be(r, i, e);
842
+ let c = xe(r, i, e);
825
843
  return await e.loadLanguage(...c), e.codeToHtml(r, {
826
844
  lang: i,
827
845
  transformers: [
@@ -842,7 +860,7 @@ async function dt() {
842
860
  });
843
861
  }
844
862
  },
845
- ...o === void 0 ? [] : [pt(o)]
863
+ ...o === void 0 ? [] : [gt(o)]
846
864
  ],
847
865
  meta: { __raw: a },
848
866
  themes: H,
@@ -870,13 +888,13 @@ async function dt() {
870
888
  }
871
889
  });
872
890
  }
873
- return ut.register(r, () => e.dispose()), r;
891
+ return pt.register(r, () => e.dispose()), r;
874
892
  }
875
- function ft() {
893
+ function ht() {
876
894
  return {
877
895
  name: "typedown:disable-shell-symbol-select",
878
896
  tokens(e) {
879
- if (st(this.options.lang)) for (let t of e) {
897
+ if (ut(this.options.lang)) for (let t of e) {
880
898
  if (t.length < 2) continue;
881
899
  let e = t[0].content.trim();
882
900
  (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));
@@ -884,7 +902,7 @@ function ft() {
884
902
  }
885
903
  };
886
904
  }
887
- function pt(e) {
905
+ function gt(e) {
888
906
  return {
889
907
  name: "typedown:line-numbers",
890
908
  code(t) {
@@ -916,23 +934,23 @@ function pt(e) {
916
934
  };
917
935
  }
918
936
  // src/node/lib/render/postprocess.ts
919
- var mt;
920
- async function ht(e) {
921
- return e = await vt(e), e = wt(e), e;
937
+ var _t;
938
+ async function vt(e) {
939
+ return e = await xt(e), e = Dt(e), e;
922
940
  }
923
- function gt() {
924
- return mt ||= dt(), mt;
941
+ function yt() {
942
+ return _t ||= mt(), _t;
925
943
  }
926
- var _t = /<pre class="td-code-placeholder"([^>]*)><code>([\s\S]*?)<\/code><\/pre>/g;
944
+ var bt = /<pre class="td-code-placeholder"([^>]*)><code>([\s\S]*?)<\/code><\/pre>/g;
927
945
  function U(e, t) {
928
946
  return e.match(RegExp(`${t}="([^"]*)"`))?.[1];
929
947
  }
930
- async function vt(e) {
931
- let t = await gt(), n = [...e.matchAll(_t)];
948
+ async function xt(e) {
949
+ let t = await yt(), n = [...e.matchAll(bt)];
932
950
  if (n.length === 0) return e;
933
951
  let r = await Promise.all(n.map(async (e) => {
934
- let n = e[1], r = U(n, "data-lang") ?? "", i = U(n, "data-meta") ?? "", a = U(n, "data-title"), o = U(n, "data-line-numbers"), s = p(e[2]);
935
- return xt(await t(s, r, i, o === void 0 ? void 0 : parseInt(o) || 1), r, {
952
+ let n = e[1], r = U(n, "data-lang") ?? "", i = U(n, "data-meta") ?? "", a = U(n, "data-title"), o = U(n, "data-line-numbers"), s = g(e[2]);
953
+ return wt(await t(s, r, i, o === void 0 ? void 0 : parseInt(o) || 1), r, {
936
954
  title: a,
937
955
  lineNumbers: o
938
956
  });
@@ -943,7 +961,7 @@ async function vt(e) {
943
961
  }
944
962
  return i;
945
963
  }
946
- var yt = {
964
+ var St = {
947
965
  typescript: "TypeScript",
948
966
  javascript: "JavaScript",
949
967
  tsx: "TSX",
@@ -991,38 +1009,38 @@ var yt = {
991
1009
  scala: "Scala",
992
1010
  txt: "Text"
993
1011
  };
994
- function bt(e) {
995
- return yt[e.toLowerCase()] ?? e;
1012
+ function Ct(e) {
1013
+ return St[e.toLowerCase()] ?? e;
996
1014
  }
997
- function xt(e, t, n) {
1015
+ function wt(e, t, n) {
998
1016
  t ||= "txt";
999
- let r = bt(t), i = ["td-code-block", "language-" + t];
1017
+ let r = Ct(t), i = ["td-code-block", "language-" + t];
1000
1018
  n.title && i.push("has-title"), n.lineNumbers !== void 0 && i.push("line-numbers-mode");
1001
1019
  let a = `<figure class="${i.join(" ")}">`;
1002
- return a += "<figcaption class=\"td-code-header\">", a += "<span class=\"td-code-left\">", a += `<span class="td-code-lang">${f(r)}</span>`, n.title && (a += `<span class="td-code-label">${f(n.title)}</span>`), a += "</span>", a += "<span class=\"td-code-actions\">", a += "<button type=\"button\" aria-label=\"Copy code\" data-copied=\"Copied\" class=\"td-code-copy\">", a += "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>", a += "<span class=\"td-code-copy-text\">Copy</span>", a += "</button>", a += "</span>", a += "</figcaption>", a += e, a += "</figure>", a;
1020
+ return a += "<figcaption class=\"td-code-header\">", a += "<span class=\"td-code-left\">", a += `<span class="td-code-lang">${h(r)}</span>`, n.title && (a += `<span class="td-code-label">${h(n.title)}</span>`), a += "</span>", a += "<span class=\"td-code-actions\">", a += "<button type=\"button\" aria-label=\"Copy code\" data-copied=\"Copied\" class=\"td-code-copy\">", a += "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>", a += "<span class=\"td-code-copy-text\">Copy</span>", a += "</button>", a += "</span>", a += "</figcaption>", a += e, a += "</figure>", a;
1003
1021
  }
1004
- var St = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, Ct = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
1005
- function wt(e) {
1006
- return e = e.replace(St, (e, t) => Dt(t, !1)), e = e.replace(Ct, (e, t) => Dt(t, !0)), e;
1022
+ var Tt = /<span class="td-math-inline">([\s\S]*?)<\/span>/g, Et = /<div class="td-math-block">([\s\S]*?)<\/div>/g;
1023
+ function Dt(e) {
1024
+ return e = e.replace(Tt, (e, t) => At(t, !1)), e = e.replace(Et, (e, t) => At(t, !0)), e;
1007
1025
  }
1008
- var Tt = /`([^`]+)`|\$([^$]+)\$/g;
1009
- function Et(e) {
1026
+ var Ot = /`([^`]+)`|\$([^$]+)\$/g;
1027
+ function kt(e) {
1010
1028
  let t = 0, n = "";
1011
- for (let r of e.matchAll(Tt)) {
1012
- if (n += f(e.slice(t, r.index)), r[1] !== void 0) n += `<code>${f(r[1])}</code>`;
1029
+ for (let r of e.matchAll(Ot)) {
1030
+ if (n += h(e.slice(t, r.index)), r[1] !== void 0) n += `<code>${h(r[1])}</code>`;
1013
1031
  else if (r[2] !== void 0) try {
1014
- n += D.renderToString(r[2], { throwOnError: !1 });
1032
+ n += k.renderToString(r[2], { throwOnError: !1 });
1015
1033
  } catch {
1016
- n += f(r[0]);
1034
+ n += h(r[0]);
1017
1035
  }
1018
1036
  t = r.index + r[0].length;
1019
1037
  }
1020
- return n += f(e.slice(t)), n;
1038
+ return n += h(e.slice(t)), n;
1021
1039
  }
1022
- function Dt(e, t) {
1040
+ function At(e, t) {
1023
1041
  let n = t ? "div" : "span";
1024
1042
  try {
1025
- return D.renderToString(p(e), {
1043
+ return k.renderToString(g(e), {
1026
1044
  throwOnError: !1,
1027
1045
  displayMode: t
1028
1046
  });
@@ -1032,24 +1050,24 @@ function Dt(e, t) {
1032
1050
  }
1033
1051
  // src/node/lib/render/vue.ts
1034
1052
  async function W(e, t, n) {
1035
- let r = t.title || t.label || (d(n) ? ee(n, (await e.getConfig()).siteTitle) : C(n));
1053
+ let r = t.title || t.label || (m(n) ? w(n, (await e.getConfig()).siteTitle) : T(n));
1036
1054
  return {
1037
1055
  schema: t.schema,
1038
1056
  schemaLabel: t.schemaLabel,
1039
1057
  label: t.label,
1040
1058
  icon: t.icon,
1041
1059
  frontmatter: t.header ?? {},
1042
- headings: kt(t.headings),
1060
+ headings: Mt(t.headings),
1043
1061
  title: r,
1044
- titleHtml: Et(r),
1062
+ titleHtml: kt(r),
1045
1063
  filepath: n,
1046
1064
  fileMetadata: t.fileMetadata,
1047
1065
  seoMetadata: t.seoMetadata,
1048
1066
  excerpt: t.excerpt
1049
1067
  };
1050
1068
  }
1051
- async function Ot(e, t, n) {
1052
- let r = await ht(t.content), i = await W(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
1069
+ async function jt(e, t, n) {
1070
+ let r = await vt(t.content), i = await W(e, t, n), a = JSON.stringify(`@typedown/pages?resource=${encodeURIComponent(n)}`);
1053
1071
  return {
1054
1072
  vueSrc: [
1055
1073
  "<script>",
@@ -1061,12 +1079,12 @@ async function Ot(e, t, n) {
1061
1079
  `import { pageData } from ${a}`,
1062
1080
  "useRouter().route.data = pageData",
1063
1081
  "<\/script>",
1064
- `<template><div class="typedown-content">\n${At(r)}\n</div></template>`
1082
+ `<template><div class="typedown-content">\n${Nt(r)}\n</div></template>`
1065
1083
  ].join("\n"),
1066
1084
  pageData: i
1067
1085
  };
1068
1086
  }
1069
- function kt(e) {
1087
+ function Mt(e) {
1070
1088
  let t = [], n = [];
1071
1089
  for (let r of e) {
1072
1090
  let e = {
@@ -1082,13 +1100,13 @@ function kt(e) {
1082
1100
  }
1083
1101
  return t;
1084
1102
  }
1085
- function At(e) {
1103
+ function Nt(e) {
1086
1104
  return e.replaceAll("{{", "&#123;&#123;").replaceAll("}}", "&#125;&#125;");
1087
1105
  }
1088
1106
  // src/node/plugin/vite/constants.ts
1089
- var jt = "@typedown/app", Mt = "\0@typedown/app", G = "@typedown/pages", Nt = "\0" + G;
1107
+ var Pt = "@typedown/app", Ft = "\0@typedown/app", G = "@typedown/pages", It = "\0" + G;
1090
1108
  G + "";
1091
- var K = "\0@typedown/pages?resource=", q = "@typedown/site-data", Pt = "\0@typedown/site-data", J = "@typedown/search-index", Ft = "\0@typedown/search-index", Y = "@typedown/theme", It = "\0@typedown/theme", X = "typedown:page-data";
1109
+ var K = "\0@typedown/pages?resource=", q = "@typedown/site-data", Lt = "\0@typedown/site-data", J = "@typedown/search-index", Rt = "\0@typedown/search-index", Y = "@typedown/theme", zt = "\0@typedown/theme", X = "typedown:page-data";
1092
1110
  // src/node/plugin/vite/virtual/utils.ts
1093
1111
  function Z(e, t) {
1094
1112
  let n = e.moduleGraph.getModuleById(t);
@@ -1106,14 +1124,14 @@ function Z(e, t) {
1106
1124
  }
1107
1125
  }
1108
1126
  // src/node/plugin/vite/virtual/app.ts
1109
- var Lt = class {
1127
+ var Bt = class {
1110
1128
  mountPath;
1111
1129
  constructor(e = "") {
1112
1130
  this.mountPath = e;
1113
1131
  }
1114
1132
  async load(e) {
1115
- let t = await (await e.getTdContext()).getConfig(), n = await L(t.components, e.root);
1116
- return Me({
1133
+ let t = await (await e.getTdContext()).getConfig(), n = await R(t.components, e.root);
1134
+ return Pe({
1117
1135
  rootDir: t.rootDir,
1118
1136
  mountPath: this.mountPath,
1119
1137
  basePath: t.basePath,
@@ -1135,9 +1153,9 @@ var Lt = class {
1135
1153
  });
1136
1154
  }
1137
1155
  invalidate(e) {
1138
- Z(e, Mt);
1156
+ Z(e, Ft);
1139
1157
  }
1140
- }, Rt = class {
1158
+ }, Vt = class {
1141
1159
  mountPath;
1142
1160
  constructor(e = "") {
1143
1161
  this.mountPath = e;
@@ -1175,62 +1193,62 @@ var Lt = class {
1175
1193
  });
1176
1194
  }
1177
1195
  invalidate(e) {
1178
- Z(e, Nt);
1196
+ Z(e, It);
1179
1197
  }
1180
- }, zt = class {
1198
+ }, Ht = class {
1181
1199
  async load(e) {
1182
- return Ne((await (await e.getTdContext()).getConfig()).layout ?? void 0, e.root);
1200
+ return Fe((await (await e.getTdContext()).getConfig()).layout ?? void 0, e.root);
1183
1201
  }
1184
1202
  invalidate(e) {
1185
- Z(e, It);
1203
+ Z(e, zt);
1186
1204
  }
1187
- }, Bt = "\0@typedown/site-data", Vt = {
1205
+ }, Ut = "\0@typedown/site-data", Wt = {
1188
1206
  ready: !1,
1189
1207
  contentTree: { entries: [] },
1190
1208
  schemas: {},
1191
1209
  directoryListings: {}
1192
- }, Ht = class {
1210
+ }, Gt = class {
1193
1211
  data;
1194
1212
  scan(e) {
1195
- let t = pe("**/*.td", {
1213
+ let t = me("**/*.td", {
1196
1214
  cwd: e,
1197
1215
  exclude: (e) => e.startsWith("_")
1198
1216
  }).map((e) => ({
1199
1217
  filepath: e,
1200
- label: C(e),
1218
+ label: T(e),
1201
1219
  header: {}
1202
- })), n = g(t);
1220
+ })), n = v(t);
1203
1221
  this.data = {
1204
1222
  contentTree: n,
1205
1223
  schemas: {},
1206
- directoryListings: h(n.entries, "")
1224
+ directoryListings: _(n.entries, "")
1207
1225
  };
1208
1226
  }
1209
1227
  load(e) {
1210
1228
  let t = this.data ? {
1211
1229
  ready: !0,
1212
1230
  ...this.data
1213
- } : Vt;
1231
+ } : Wt;
1214
1232
  return `export default ${JSON.stringify(t)}`;
1215
1233
  }
1216
1234
  clear() {
1217
1235
  this.data = void 0;
1218
1236
  }
1219
- fetch = y((e, t) => {
1220
- Ut(e).then((e) => {
1237
+ fetch = x((e, t) => {
1238
+ Kt(e).then((e) => {
1221
1239
  this.data = e, t && this.invalidate(t);
1222
1240
  }).catch((e) => {
1223
1241
  console.error("[typedown] Failed to fetch site data:", e instanceof Error ? e.message : e);
1224
1242
  });
1225
1243
  }, 200);
1226
1244
  async fetchSync(e) {
1227
- this.data = await Ut(e);
1245
+ this.data = await Kt(e);
1228
1246
  }
1229
1247
  invalidate(e) {
1230
- Z(e, Bt);
1248
+ Z(e, Ut);
1231
1249
  }
1232
1250
  };
1233
- async function Ut(e) {
1251
+ async function Kt(e) {
1234
1252
  let [t, n, r] = await Promise.all([
1235
1253
  e.getConfig(),
1236
1254
  e.listSidebar(),
@@ -1238,20 +1256,20 @@ async function Ut(e) {
1238
1256
  ]), i = await Promise.all(r.map(async (t) => [t, (await e.getSchema(t)).properties])), a = Object.fromEntries(i), o = n.map((e) => ({
1239
1257
  ...e,
1240
1258
  header: {}
1241
- })), s = g(o);
1259
+ })), s = v(o);
1242
1260
  return {
1243
1261
  contentTree: s,
1244
1262
  schemas: a,
1245
- directoryListings: h(s.entries, t.siteTitle)
1263
+ directoryListings: _(s.entries, t.siteTitle)
1246
1264
  };
1247
1265
  }
1248
1266
  // src/node/lib/search-indexer/index.ts
1249
- var Wt = class {
1267
+ var qt = class {
1250
1268
  index;
1251
1269
  constructor() {
1252
- this.index = new re({
1253
- fields: v,
1254
- storeFields: x
1270
+ this.index = new ie({
1271
+ fields: S,
1272
+ storeFields: b
1255
1273
  });
1256
1274
  }
1257
1275
  addAll(e) {
@@ -1269,20 +1287,20 @@ var Wt = class {
1269
1287
  }
1270
1288
  };
1271
1289
  // src/node/lib/search-indexer/scan.ts
1272
- function Gt(e, t) {
1273
- let n = Yt(e), r = [];
1290
+ function Jt(e, t) {
1291
+ let n = Qt(e), r = [];
1274
1292
  for (let t of n) {
1275
- let n = Jt(e, t);
1293
+ let n = Zt(e, t);
1276
1294
  n && r.push(n);
1277
1295
  }
1278
1296
  t.addAll(r);
1279
1297
  }
1280
- function Kt(e, n, r) {
1281
- let i = Jt(e, j(e, n));
1298
+ function Yt(e, n, r) {
1299
+ let i = Zt(e, M(e, n));
1282
1300
  i ? r.addPage(i) : r.discardPage(t(n));
1283
1301
  }
1284
- function qt(e, t) {
1285
- let n = C(e);
1302
+ function Xt(e, t) {
1303
+ let n = T(e);
1286
1304
  if (!t.startsWith("---")) return {
1287
1305
  title: n,
1288
1306
  body: t
@@ -1298,54 +1316,54 @@ function qt(e, t) {
1298
1316
  body: a
1299
1317
  };
1300
1318
  }
1301
- function Jt(e, n) {
1319
+ function Zt(e, n) {
1302
1320
  let r;
1303
1321
  try {
1304
- r = me(n, "utf-8");
1322
+ r = he(n, "utf-8");
1305
1323
  } catch {
1306
1324
  return;
1307
1325
  }
1308
1326
  if (!r.trim()) return;
1309
- let i = n.slice(e.length + 1), { title: a, body: o } = qt(i, r);
1327
+ let i = n.slice(e.length + 1), { title: a, body: o } = Xt(i, r);
1310
1328
  return {
1311
1329
  id: t(i),
1312
1330
  title: a,
1313
1331
  text: `${a}\n${o}`
1314
1332
  };
1315
1333
  }
1316
- function Yt(e) {
1317
- return pe("**/*.td", {
1334
+ function Qt(e) {
1335
+ return me("**/*.td", {
1318
1336
  cwd: e,
1319
1337
  exclude: (e) => e.startsWith("_")
1320
- }).map((t) => j(e, t));
1338
+ }).map((t) => M(e, t));
1321
1339
  }
1322
1340
  // src/node/plugin/vite/virtual/search-index.ts
1323
- var Xt = "\0@typedown/search-index", Zt = class {
1324
- indexer = new Wt();
1341
+ var $t = "\0@typedown/search-index", en = class {
1342
+ indexer = new qt();
1325
1343
  load(e) {
1326
1344
  return `export default ${JSON.stringify(this.indexer.serialize())}`;
1327
1345
  }
1328
1346
  index(e) {
1329
- Gt(e, this.indexer);
1347
+ Jt(e, this.indexer);
1330
1348
  }
1331
1349
  reindex(e, t) {
1332
- Kt(e, t, this.indexer);
1350
+ Yt(e, t, this.indexer);
1333
1351
  }
1334
1352
  invalidate(e) {
1335
- Z(e, Xt);
1353
+ Z(e, $t);
1336
1354
  }
1337
- }, Qt = ge(import.meta.url);
1338
- function $t() {
1355
+ }, tn = _e(import.meta.url);
1356
+ function nn() {
1339
1357
  return [{
1340
1358
  find: "vue/server-renderer",
1341
- replacement: Qt.resolve("vue/server-renderer")
1359
+ replacement: tn.resolve("vue/server-renderer")
1342
1360
  }, {
1343
1361
  find: "vue",
1344
- replacement: Qt.resolve("vue/dist/vue.runtime.esm-bundler.js")
1362
+ replacement: tn.resolve("vue/dist/vue.runtime.esm-bundler.js")
1345
1363
  }];
1346
1364
  }
1347
1365
  // src/node/plugin/vite/middleware/vault-assets.ts
1348
- var en = {
1366
+ var rn = {
1349
1367
  jpg: "image/jpeg",
1350
1368
  jpeg: "image/jpeg",
1351
1369
  png: "image/png",
@@ -1363,66 +1381,66 @@ var en = {
1363
1381
  woff: "font/woff",
1364
1382
  ttf: "font/ttf"
1365
1383
  };
1366
- function tn(e, t) {
1367
- return (n, r, s) => {
1368
- if (!n.url || n.method !== "GET" || r.writableEnded) return s();
1384
+ function an(e, t) {
1385
+ return (n, i, o) => {
1386
+ if (!n.url || n.method !== "GET" || i.writableEnded) return o();
1369
1387
  let c = a(n.url);
1370
- if (c.startsWith("/@") || c.startsWith("/node_modules")) return s();
1371
- let l = i(t.basePath), u = (l && c.startsWith(l) ? c.slice(l.length) : c).replace(/^\//, ""), d = j(e.config.root, t.rootDirectory, u);
1372
- if (fe(d)) try {
1373
- let e = he(d);
1388
+ if (c.startsWith("/@") || c.startsWith("/node_modules")) return o();
1389
+ let l = r(t.basePath), u = (l && c.startsWith(l) ? c.slice(l.length) : c).replace(/^\//, ""), d = M(e.config.root, t.rootDirectory, u);
1390
+ if (pe(d)) try {
1391
+ let e = ge(d);
1374
1392
  if (e.isFile()) {
1375
- let t = en[o(d).slice(1).toLowerCase()] ?? "application/octet-stream";
1376
- r.setHeader("Content-Type", t), r.setHeader("Content-Length", e.size), de(d).pipe(r);
1393
+ let t = rn[s(d).slice(1).toLowerCase()] ?? "application/octet-stream";
1394
+ i.setHeader("Content-Type", t), i.setHeader("Content-Length", e.size), fe(d).pipe(i);
1377
1395
  return;
1378
1396
  }
1379
1397
  } catch {}
1380
- s();
1398
+ o();
1381
1399
  };
1382
1400
  }
1383
1401
  // src/node/plugin/vite/middleware/virtual-html.ts
1384
- function nn(e, t, n) {
1385
- return (r, o, s) => {
1386
- if (!r.url) return s();
1387
- let c = i(a(r.url)), l = i(n.basePath);
1402
+ function on(e, t, n) {
1403
+ return (i, o, s) => {
1404
+ if (!i.url) return s();
1405
+ let c = r(a(i.url)), l = r(n.basePath);
1388
1406
  if (c.startsWith("/@") || c.startsWith("/node_modules") || !c.startsWith(l)) return s();
1389
1407
  let u = c.slice(l.length);
1390
1408
  if (u.startsWith("/@") || u.startsWith("/node_modules") || c.includes(".") && !c.endsWith("/index.html")) return s();
1391
1409
  t.getConfig().then(async (t) => {
1392
- let i = await e.transformIndexHtml(r.url ?? "", rn(n, t));
1393
- o.setHeader("Content-Type", "text/html"), o.end(i);
1410
+ let r = await e.transformIndexHtml(i.url ?? "", sn(n, t));
1411
+ o.setHeader("Content-Type", "text/html"), o.end(r);
1394
1412
  }).catch(() => s());
1395
1413
  };
1396
1414
  }
1397
- function rn(e, t) {
1398
- return e.devHtml === void 0 && (e.devHtml = T({
1415
+ function sn(e, t) {
1416
+ return e.devHtml === void 0 && (e.devHtml = D({
1399
1417
  title: t.siteTitle,
1400
1418
  description: t.siteDescription,
1401
1419
  base: "/",
1402
1420
  ogType: "website",
1403
- entryScript: jt
1421
+ entryScript: Pt
1404
1422
  })), e.devHtml;
1405
1423
  }
1406
1424
  // src/node/lib/prop-schema.ts
1407
- function an(e, t, n) {
1425
+ function cn(e, t, n) {
1408
1426
  let r = {};
1409
1427
  for (let i of e) {
1410
- let e = `./${A.relative(t, i.absolutePath)}`;
1428
+ let e = `./${j.relative(t, i.absolutePath)}`;
1411
1429
  try {
1412
- let t = n.getComponentMeta(i.absolutePath), a = {}, o = !1;
1430
+ let t = n.getComponentMeta(i.absolutePath), a = {}, s = !1;
1413
1431
  for (let e of t.props) {
1414
1432
  if (e.global) continue;
1415
- let t = $(e.schema);
1433
+ let t = Q(e.schema);
1416
1434
  if (t !== void 0) {
1417
- let n = { schema: e.required ? t : l(t) };
1418
- e.description && (n.description = e.description), a[e.name] = n, o = !0;
1435
+ let n = { schema: e.required ? t : o(t) };
1436
+ e.description && (n.description = e.description), a[e.name] = n, s = !0;
1419
1437
  }
1420
1438
  }
1421
- let s = t.slots.map((e) => e.name).filter((e) => e !== "default");
1439
+ let c = t.slots.map((e) => e.name).filter((e) => e !== "default");
1422
1440
  r[i.name] = {
1423
1441
  source: e,
1424
- props: o ? a : void 0,
1425
- slots: 0 < s.length ? s : void 0
1442
+ props: s ? a : void 0,
1443
+ slots: 0 < c.length ? c : void 0
1426
1444
  };
1427
1445
  } catch {
1428
1446
  r[i.name] = { source: e };
@@ -1430,25 +1448,25 @@ function an(e, t, n) {
1430
1448
  }
1431
1449
  return r;
1432
1450
  }
1433
- function on(e) {
1451
+ function ln(e) {
1434
1452
  if (!e || e.length !== 1) return;
1435
- let t = $(e[0]);
1453
+ let t = Q(e[0]);
1436
1454
  return t === void 0 ? void 0 : {
1437
1455
  type: "array",
1438
1456
  items: t
1439
1457
  };
1440
1458
  }
1441
- function sn(e, t) {
1442
- if (t && 0 < Object.keys(t).length) return cn(t);
1459
+ function un(e, t) {
1460
+ if (t && 0 < Object.keys(t).length) return fn(t);
1443
1461
  let n = /^(?:Record<string,\s*(\w+)>|\{\s*\[key:\s*string\]:\s*(\w+);\s*\})$/.exec(e);
1444
1462
  if (!n) return;
1445
- let r = Q(n[1] ?? n[2]);
1463
+ let r = dn(n[1] ?? n[2]);
1446
1464
  return r === void 0 ? void 0 : {
1447
1465
  type: "object",
1448
1466
  additionalProperties: r
1449
1467
  };
1450
1468
  }
1451
- function Q(e) {
1469
+ function dn(e) {
1452
1470
  switch (e) {
1453
1471
  case "string": return { type: "string" };
1454
1472
  case "number": return { type: "number" };
@@ -1462,20 +1480,20 @@ function Q(e) {
1462
1480
  let t = e.replace(/^["']|["']$/g, "");
1463
1481
  i.push({ const: t });
1464
1482
  } else {
1465
- let t = Q(e);
1483
+ let t = dn(e);
1466
1484
  if (t === void 0) return;
1467
1485
  i.push(t);
1468
1486
  }
1469
1487
  let a = i.length === 1 ? i[0] : { oneOf: i };
1470
- return n ? l(a) : a;
1488
+ return n ? o(a) : a;
1471
1489
  }
1472
1490
  return;
1473
1491
  }
1474
1492
  }
1475
- function cn(e) {
1493
+ function fn(e) {
1476
1494
  let t = {}, n = [];
1477
1495
  for (let [r, i] of Object.entries(e)) {
1478
- let e = $(i.schema);
1496
+ let e = Q(i.schema);
1479
1497
  if (e === void 0) return;
1480
1498
  t[r] = e, i.required && n.push(r);
1481
1499
  }
@@ -1486,22 +1504,22 @@ function cn(e) {
1486
1504
  };
1487
1505
  return 0 < n.length && (r.required = n), r;
1488
1506
  }
1489
- function $(e) {
1490
- if (typeof e == "string") return Q(e);
1507
+ function Q(e) {
1508
+ if (typeof e == "string") return dn(e);
1491
1509
  switch (e.kind) {
1492
- case "enum": return ln(e.schema);
1493
- case "array": return on(e.schema);
1494
- case "object": return sn(e.type, e.schema);
1510
+ case "enum": return pn(e.schema);
1511
+ case "array": return ln(e.schema);
1512
+ case "object": return un(e.type, e.schema);
1495
1513
  case "literal": return "value" in e ? { const: e.value } : void 0;
1496
1514
  default: return;
1497
1515
  }
1498
1516
  }
1499
- function ln(e) {
1517
+ function pn(e) {
1500
1518
  let t = e ?? [], n = t.some((e) => e === "undefined" || e === "null"), r = t.filter((e) => e !== "undefined" && e !== "null");
1501
1519
  if (r.length === 0) return;
1502
1520
  if (r.length === 1) {
1503
- let e = $(r[0]);
1504
- return e === void 0 ? void 0 : n ? l(e) : e;
1521
+ let e = Q(r[0]);
1522
+ return e === void 0 ? void 0 : n ? o(e) : e;
1505
1523
  }
1506
1524
  if (r.every((e) => typeof e == "object" && e.kind === "literal")) {
1507
1525
  let e = [];
@@ -1510,56 +1528,56 @@ function ln(e) {
1510
1528
  e.push(t.value);
1511
1529
  }
1512
1530
  let t = { enum: e };
1513
- return n ? l(t) : t;
1531
+ return n ? o(t) : t;
1514
1532
  }
1515
1533
  let i = [];
1516
1534
  for (let e of r) {
1517
- let t = $(e);
1535
+ let t = Q(e);
1518
1536
  if (t === void 0) return;
1519
1537
  i.push(t);
1520
1538
  }
1521
1539
  if (i.length === 0) return;
1522
1540
  let a = { oneOf: i };
1523
- return n ? l(a) : a;
1541
+ return n ? o(a) : a;
1524
1542
  }
1525
1543
  // src/node/plugin/vite/subplugins/component-contract.ts
1526
- var un = ".typedown/components.json";
1527
- function dn(e) {
1544
+ var mn = ".typedown/components.json";
1545
+ function hn(e) {
1528
1546
  return {
1529
1547
  name: "vite-plugin-typedown-component-contract",
1530
1548
  async buildStart() {
1531
1549
  let t = e();
1532
1550
  if (!t) return;
1533
- let n = await L((await (await t.getTdContext()).getConfig()).components, t.root);
1534
- gn(t.root, n);
1551
+ let n = await R((await (await t.getTdContext()).getConfig()).components, t.root);
1552
+ bn(t.root, n);
1535
1553
  },
1536
1554
  configureServer(t) {
1537
1555
  let n = e();
1538
1556
  n && n.getTdContext().then(async (e) => {
1539
- let r = await e.getConfig(), i = await L(r.components, n.root);
1540
- gn(n.root, i), fn(t, r.components, n.root);
1557
+ let r = await e.getConfig(), i = await R(r.components, n.root);
1558
+ bn(n.root, i), gn(t, r.components, n.root);
1541
1559
  }).catch(() => {});
1542
1560
  }
1543
1561
  };
1544
1562
  }
1545
- function fn(e, t, n) {
1546
- let r = new Set(t.filter((e) => e.kind === "explicit").map((e) => N(A.resolve(n, e.source)))), i = new Set(t.filter((e) => e.kind === "dir").map((e) => N(A.resolve(n, e.path))));
1563
+ function gn(e, t, n) {
1564
+ let r = new Set(t.filter((e) => e.kind === "explicit").map((e) => P(j.resolve(n, e.source)))), i = new Set(t.filter((e) => e.kind === "dir").map((e) => P(j.resolve(n, e.path))));
1547
1565
  for (let t of i) e.watcher.add(t);
1548
1566
  let a = (a) => {
1549
- pn(a, r, i) && (e.config.logger.info("[typedown] component changed, rebuilding contract..."), L(t, n).then((e) => gn(n, e)).catch(() => {}));
1567
+ _n(a, r, i) && (e.config.logger.info("[typedown] component changed, rebuilding contract..."), R(t, n).then((e) => bn(n, e)).catch(() => {}));
1550
1568
  };
1551
1569
  e.watcher.on("change", a), e.watcher.on("add", a), e.watcher.on("unlink", a);
1552
1570
  }
1553
- function pn(e, t, n) {
1571
+ function _n(e, t, n) {
1554
1572
  if (!e.endsWith(".vue")) return !1;
1555
- let r = N(e);
1573
+ let r = P(e);
1556
1574
  if (t.has(r)) return !0;
1557
1575
  for (let e of n) if (r.startsWith(e + "/")) return !0;
1558
1576
  return !1;
1559
1577
  }
1560
- function mn() {
1578
+ function vn() {
1561
1579
  try {
1562
- let e = A.dirname(ce(import.meta.url)), t = A.resolve(e, "builtin-components.json"), n = JSON.parse(F.readFileSync(t, "utf-8"));
1580
+ let e = j.dirname(le(import.meta.url)), t = j.resolve(e, "builtin-components.json"), n = JSON.parse(I.readFileSync(t, "utf-8"));
1563
1581
  for (let e of Object.values(n)) if (typeof e == "object" && e && "source" in e) {
1564
1582
  let t = e;
1565
1583
  typeof t.source == "string" && t.source.startsWith("./") && (t.source = `typerighter/${t.source.slice(2)}`);
@@ -1569,36 +1587,36 @@ function mn() {
1569
1587
  return {};
1570
1588
  }
1571
1589
  }
1572
- var hn = mn();
1573
- function gn(e, t) {
1574
- if (!(0 < Object.keys(hn).length) && t.length === 0) return;
1575
- let n = 0 < t.length ? an(t, e, Pe(e)) : {}, r = {
1576
- ...hn,
1590
+ var yn = vn();
1591
+ function bn(e, t) {
1592
+ if (!(0 < Object.keys(yn).length) && t.length === 0) return;
1593
+ let n = 0 < t.length ? cn(t, e, Ie(e)) : {}, r = {
1594
+ ...yn,
1577
1595
  ...n
1578
- }, i = A.join(e, un);
1579
- F.mkdirSync(A.dirname(i), { recursive: !0 }), F.writeFileSync(i, JSON.stringify(r, null, 2));
1596
+ }, i = j.join(e, mn);
1597
+ I.mkdirSync(j.dirname(i), { recursive: !0 }), I.writeFileSync(i, JSON.stringify(r, null, 2));
1580
1598
  }
1581
1599
  // src/node/plugin/vite/index.ts
1582
- function _n(t = {}) {
1583
- let n = t.context, r, i, a, o = new Lt(t.root ?? ""), s = new zt(), l = new Rt(t.root ?? ""), u = new Ht(), d = new Zt(), f = {
1600
+ function $(t = {}) {
1601
+ let n = t.context, r, i, a, o = new Bt(t.root ?? ""), s = new Ht(), c = new Vt(t.root ?? ""), l = new Gt(), f = new en(), p = {
1584
1602
  devHtml: void 0,
1585
1603
  basePath: "/",
1586
1604
  rootDirectory: "vault"
1587
1605
  };
1588
- function p() {
1606
+ function m() {
1589
1607
  if (n === void 0) throw Error("typedown plugin not initialized");
1590
1608
  return n.getTdContext();
1591
1609
  }
1592
- let m = {
1610
+ let h = {
1593
1611
  name: "vite-plugin-typedown",
1594
1612
  enforce: "pre",
1595
1613
  async config(e) {
1596
1614
  if (!n) {
1597
- let r = t.root ? j(e.root ?? process.cwd(), t.root) : ne(e.root ?? process.cwd());
1598
- n = te(r);
1615
+ let r = t.root ? M(e.root ?? process.cwd(), t.root) : re(e.root ?? process.cwd());
1616
+ n = ne(r);
1599
1617
  }
1600
1618
  a = e.base ?? "/";
1601
- let r = await (await p()).getConfig();
1619
+ let r = await (await m()).getConfig();
1602
1620
  return {
1603
1621
  base: e.base ?? r.basePath,
1604
1622
  publicDir: r.publicDir,
@@ -1606,61 +1624,61 @@ function _n(t = {}) {
1606
1624
  port: e.server?.port ?? 8686,
1607
1625
  strictPort: e.server?.strictPort ?? !1
1608
1626
  },
1609
- resolve: { alias: $t() },
1627
+ resolve: { alias: nn() },
1610
1628
  ssr: { noExternal: ["typerighter"] }
1611
1629
  };
1612
1630
  },
1613
1631
  configResolved(e) {
1614
- i = j(e.root, e.build.outDir);
1632
+ i = M(e.root, e.build.outDir);
1615
1633
  },
1616
1634
  async buildStart() {
1617
1635
  if (r) return;
1618
- let e = await p(), t = await e.getConfig(), n = j(t.rootDir);
1619
- d.index(n), await u.fetchSync(e);
1636
+ let e = await m(), t = await e.getConfig(), n = M(t.rootDir);
1637
+ f.index(n), await l.fetchSync(e);
1620
1638
  let i = await e.checkVault();
1621
- if (Sn(i.diagnostics), 0 < i.errorCount) {
1639
+ if (Tn(i.diagnostics), 0 < i.errorCount) {
1622
1640
  let e = i.diagnostics.filter((e) => e.severity === "error").map((e) => ` ${e.filepath}:${e.line}:${e.column} - ${e.message} (${e.code})`);
1623
1641
  this.error(`Vault check failed with ${i.errorCount} error(s):\n${e.join("\n")}`);
1624
1642
  }
1625
1643
  },
1626
1644
  resolveId(e) {
1627
- if (e === "/@typedown/app" || e === "@typedown/app") return Mt;
1628
- if (e === "@typedown/pages") return Nt;
1629
- if (e.startsWith("@typedown/pages?resource=")) return l.resolvePageData(e);
1630
- if (e === "@typedown/site-data") return Pt;
1631
- if (e === "@typedown/search-index") return Ft;
1632
- if (e === "@typedown/theme") return It;
1645
+ if (e === "/@typedown/app" || e === "@typedown/app") return Ft;
1646
+ if (e === "@typedown/pages") return It;
1647
+ if (e.startsWith("@typedown/pages?resource=")) return c.resolvePageData(e);
1648
+ if (e === "@typedown/site-data") return Lt;
1649
+ if (e === "@typedown/search-index") return Rt;
1650
+ if (e === "@typedown/theme") return zt;
1633
1651
  },
1634
1652
  async load(e) {
1635
- if (l.isPageDataModule(e)) return l.loadPageData(e, await p());
1653
+ if (c.isPageDataModule(e)) return c.loadPageData(e, await m());
1636
1654
  if (e !== "\0@typedown/search-index" && e !== "\0@typedown/site-data" && e !== "\0@typedown/pages" && e !== "\0@typedown/app" && e !== "\0@typedown/theme") return;
1637
- let t = await p();
1638
- if (e === "\0@typedown/search-index") return d.load(t);
1639
- if (e === "\0@typedown/site-data") return u.load(t);
1640
- if (e === "\0@typedown/pages") return l.load(t);
1655
+ let t = await m();
1656
+ if (e === "\0@typedown/search-index") return f.load(t);
1657
+ if (e === "\0@typedown/site-data") return l.load(t);
1658
+ if (e === "\0@typedown/pages") return c.load(t);
1641
1659
  if (e === "\0@typedown/app") return o.load(n);
1642
1660
  if (e === "\0@typedown/theme") return s.load(n);
1643
1661
  },
1644
1662
  async configureServer(e) {
1645
1663
  r = e;
1646
- let t = await p(), n = await t.getConfig(), i = j(n.rootDir);
1647
- d.index(i), u.scan(i), u.fetch(t, r), e.httpServer?.once("listening", async () => {
1664
+ let t = await m(), n = await t.getConfig(), i = M(n.rootDir);
1665
+ f.index(i), l.scan(i), l.fetch(t, r), e.httpServer?.once("listening", async () => {
1648
1666
  let e = await t.checkVault();
1649
- 0 < e.diagnostics.length && (console.error(""), Sn(e.diagnostics));
1667
+ 0 < e.diagnostics.length && (console.error(""), Tn(e.diagnostics));
1650
1668
  }), t.rpc.onConfigChanged(() => {
1651
- r && (f.devHtml = void 0, u.clear(), o.invalidate(r), s.invalidate(r), l.invalidate(r), yn(r), u.fetch(t, r));
1669
+ r && (p.devHtml = void 0, l.clear(), o.invalidate(r), s.invalidate(r), c.invalidate(r), Sn(r), l.fetch(t, r));
1652
1670
  }), t.rpc.onComponentContractChanged(() => {
1653
- r && (o.invalidate(r), yn(r));
1671
+ r && (o.invalidate(r), Sn(r));
1654
1672
  });
1655
1673
  function a(...e) {
1656
1674
  r && t.getConfig().then((t) => {
1657
1675
  if (!r) return;
1658
1676
  let n = [];
1659
1677
  for (let i of e) {
1660
- let e = N(j(r.config.root, t.rootDir, i)), a = r.moduleGraph.getModulesByFile(e);
1678
+ let e = P(M(r.config.root, t.rootDir, i)), a = r.moduleGraph.getModulesByFile(e);
1661
1679
  if (a?.size) {
1662
- for (let e of a) r.moduleGraph.invalidateModule(e), n.push(xn(e));
1663
- l.invalidatePageData(r, i);
1680
+ for (let e of a) r.moduleGraph.invalidateModule(e), n.push(wn(e));
1681
+ c.invalidatePageData(r, i);
1664
1682
  }
1665
1683
  }
1666
1684
  0 < n.length && r.hot.send({
@@ -1670,79 +1688,79 @@ function _n(t = {}) {
1670
1688
  }).catch(() => {});
1671
1689
  }
1672
1690
  t.rpc.onContentUpdated(({ filepath: e, affectedFiles: n = [] }) => {
1673
- r && (d.reindex(i, e), d.invalidate(r), l.invalidate(r), u.fetch(t, r), a(e, ...n), l.sendPageData(r, t, e));
1691
+ r && (f.reindex(i, e), f.invalidate(r), c.invalidate(r), l.fetch(t, r), a(e, ...n), c.sendPageData(r, t, e));
1674
1692
  }), t.rpc.onContentDeleted(({ filepath: e }) => {
1675
- r && (d.reindex(i, e), d.invalidate(r), l.invalidate(r), u.fetch(t, r), a(e));
1693
+ r && (f.reindex(i, e), f.invalidate(r), c.invalidate(r), l.fetch(t, r), a(e));
1676
1694
  });
1677
- function c() {
1678
- r && (u.clear(), bn(r), u.fetch(t, r));
1695
+ function u() {
1696
+ r && (l.clear(), Cn(r), l.fetch(t, r));
1679
1697
  }
1680
- t.rpc.onSchemaUpdated(c), t.rpc.onSchemaDeleted(c);
1681
- let m = await t.getConfig();
1682
- f.basePath = m.basePath, f.rootDirectory = m.rootDir, t.rpc.onConfigChanged((e) => {
1683
- f.basePath = e.basePath, f.rootDirectory = e.rootDir, f.devHtml = void 0;
1684
- }), e.middlewares.use(tn(e, f)), e.middlewares.use(nn(e, t, f));
1698
+ t.rpc.onSchemaUpdated(u), t.rpc.onSchemaDeleted(u);
1699
+ let d = await t.getConfig();
1700
+ p.basePath = d.basePath, p.rootDirectory = d.rootDir, t.rpc.onConfigChanged((e) => {
1701
+ p.basePath = e.basePath, p.rootDirectory = e.rootDir, p.devHtml = void 0;
1702
+ }), e.middlewares.use(an(e, p)), e.middlewares.use(on(e, t, p));
1685
1703
  },
1686
1704
  async transform(t, n) {
1687
1705
  let r = n.split("?")[0];
1688
- if (!w(r)) return;
1689
- if (e(r)) return {
1706
+ if (!e(r)) return;
1707
+ if (u(r)) return {
1690
1708
  code: `<script>import theme from '${Y}'; import { TdNotFound } from 'typerighter/client/theme-default'; export default theme.NotFound || TdNotFound; export const pageData = { frontmatter: {}, headings: [], title: '' };<\/script>`,
1691
1709
  map: null
1692
1710
  };
1693
- let i = await p(), a = await i.getConfig(), o = c(r, a.rootDir);
1711
+ let i = await m(), a = await i.getConfig(), o = d(r, a.rootDir);
1694
1712
  try {
1695
- let { vueSrc: e } = await Ot(i, await i.getFile(o), o);
1713
+ let { vueSrc: e } = await jt(i, await i.getFile(o), o);
1696
1714
  return {
1697
1715
  code: e,
1698
1716
  map: null
1699
1717
  };
1700
1718
  } catch (e) {
1701
- if (k(e)) return;
1719
+ if (te(e)) return;
1702
1720
  let t = e instanceof Error ? e.message : String(e);
1703
1721
  this.error(`[typedown] Failed to transform ${o}: ${t}`);
1704
1722
  }
1705
1723
  },
1706
- handleHotUpdate({ file: e }) {
1707
- if (w(e)) return [];
1724
+ handleHotUpdate({ file: t }) {
1725
+ if (e(t)) return [];
1708
1726
  },
1709
1727
  async closeBundle() {
1710
1728
  if (!t.context && n) try {
1711
1729
  let e = (await (await n.getTdContext()).getConfig()).basePath, t = e.startsWith(a) ? e.slice(a.length) : e.replace(/^\//, "");
1712
- await Le(n, {
1713
- outDir: j(i, t),
1730
+ await Be(n, {
1731
+ outDir: M(i, t),
1714
1732
  base: e
1715
1733
  });
1716
1734
  } finally {
1717
1735
  n.dispose();
1718
1736
  }
1719
1737
  }
1720
- }, h = ae({
1738
+ }, g = oe({
1721
1739
  include: t.root ? RegExp(`${t.root.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/.*\\.(?:vue|td)$`) : /\.(?:vue|td)$/,
1722
1740
  template: { transformAssetUrls: !1 }
1723
1741
  });
1724
1742
  return [
1725
- m,
1726
- dn(() => n),
1727
1743
  h,
1728
- ...ie()
1744
+ hn(() => n),
1745
+ g,
1746
+ ...ae()
1729
1747
  ];
1730
1748
  }
1731
- function vn(e) {
1749
+ function xn(e) {
1732
1750
  return [...e.moduleGraph.idToModuleMap.entries()].filter(([e]) => e.endsWith(".td")).map(([, e]) => e);
1733
1751
  }
1734
- function yn(e) {
1735
- for (let t of vn(e)) e.moduleGraph.invalidateModule(t);
1752
+ function Sn(e) {
1753
+ for (let t of xn(e)) e.moduleGraph.invalidateModule(t);
1736
1754
  e.hot.send({ type: "full-reload" });
1737
1755
  }
1738
- function bn(e) {
1739
- let t = vn(e).map((t) => (e.moduleGraph.invalidateModule(t), xn(t)));
1756
+ function Cn(e) {
1757
+ let t = xn(e).map((t) => (e.moduleGraph.invalidateModule(t), wn(t)));
1740
1758
  0 < t.length && e.hot.send({
1741
1759
  type: "update",
1742
1760
  updates: t
1743
1761
  });
1744
1762
  }
1745
- function xn(e) {
1763
+ function wn(e) {
1746
1764
  return {
1747
1765
  type: "js-update",
1748
1766
  path: e.url,
@@ -1750,10 +1768,10 @@ function xn(e) {
1750
1768
  timestamp: Date.now()
1751
1769
  };
1752
1770
  }
1753
- function Sn(e) {
1771
+ function Tn(e) {
1754
1772
  for (let t of e) {
1755
- let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? M.red("error") : M.yellow("warn");
1756
- console.error(` ${n} ${e} ${t.message} ${M.dim(`(${t.code})`)}`);
1773
+ let e = `${t.filepath}:${t.line}:${t.column}`, n = t.severity === "error" ? N.red("error") : N.yellow("warn");
1774
+ console.error(` ${n} ${e} ${t.message} ${N.dim(`(${t.code})`)}`);
1757
1775
  }
1758
1776
  }
1759
- export { q as a, J as i, G as n, Y as o, X as r, Le as s, _n as t };
1777
+ export { q as a, J as i, G as n, Y as o, X as r, Be as s, $ as t };