typerighter 0.4.3 → 0.30.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/app-gH0dpuch.js +2382 -0
  2. package/dist/brand-CG1fQshq.js +5 -0
  3. package/dist/cli-BFgBPypP.js +440 -0
  4. package/dist/cli.js +1 -1
  5. package/dist/client/app/index.d.ts +43 -4
  6. package/dist/client/app/index.d.ts.map +1 -1
  7. package/dist/client/app/router.d.ts +6 -2
  8. package/dist/client/app/router.d.ts.map +1 -1
  9. package/dist/client/theme-default.js +2314 -593
  10. package/dist/client.js +1 -1
  11. package/dist/fonts.css +2 -0
  12. package/dist/index.js +3 -4
  13. package/dist/init-EKDV1L4U.js +821 -0
  14. package/dist/math.css +1 -0
  15. package/dist/node/build/index.d.ts.map +1 -1
  16. package/dist/node/build/prerender.d.ts +2 -0
  17. package/dist/node/build/prerender.d.ts.map +1 -1
  18. package/dist/node/cli/index.d.ts.map +1 -1
  19. package/dist/node/cli/init.d.ts +7 -1
  20. package/dist/node/cli/init.d.ts.map +1 -1
  21. package/dist/node/context.d.ts.map +1 -1
  22. package/dist/node/lib/html-template.d.ts +22 -0
  23. package/dist/node/lib/html-template.d.ts.map +1 -0
  24. package/dist/node/lib/image-dimensions.d.ts +6 -0
  25. package/dist/node/lib/image-dimensions.d.ts.map +1 -0
  26. package/dist/node/lib/index.d.ts +0 -1
  27. package/dist/node/lib/index.d.ts.map +1 -1
  28. package/dist/node/lib/progress.d.ts +2 -0
  29. package/dist/node/lib/progress.d.ts.map +1 -1
  30. package/dist/node/lib/render/highlight/index.d.ts.map +1 -0
  31. package/dist/node/lib/render/highlight/language.d.ts.map +1 -0
  32. package/dist/node/lib/render/postprocess.d.ts +2 -0
  33. package/dist/node/lib/render/postprocess.d.ts.map +1 -0
  34. package/dist/node/lib/render/vue.d.ts +1 -0
  35. package/dist/node/lib/render/vue.d.ts.map +1 -1
  36. package/dist/node/{plugin/vite/search.d.ts → lib/search-indexer/index.d.ts} +2 -3
  37. package/dist/node/lib/search-indexer/index.d.ts.map +1 -0
  38. package/dist/node/lib/search-indexer/scan.d.ts +4 -0
  39. package/dist/node/lib/search-indexer/scan.d.ts.map +1 -0
  40. package/dist/node/lib/typedown-context.d.ts +6 -10
  41. package/dist/node/lib/typedown-context.d.ts.map +1 -1
  42. package/dist/node/plugin/vite/constants.d.ts +6 -0
  43. package/dist/node/plugin/vite/constants.d.ts.map +1 -1
  44. package/dist/node/plugin/vite/index.d.ts +7 -13
  45. package/dist/node/plugin/vite/index.d.ts.map +1 -1
  46. package/dist/node/plugin/vite/middleware/index.d.ts +3 -0
  47. package/dist/node/plugin/vite/middleware/index.d.ts.map +1 -0
  48. package/dist/node/plugin/vite/middleware/vault-assets.d.ts +5 -0
  49. package/dist/node/plugin/vite/middleware/vault-assets.d.ts.map +1 -0
  50. package/dist/node/plugin/vite/middleware/virtual-html.d.ts +6 -0
  51. package/dist/node/plugin/vite/middleware/virtual-html.d.ts.map +1 -0
  52. package/dist/node/plugin/vite/virtual/app.d.ts +23 -0
  53. package/dist/node/plugin/vite/virtual/app.d.ts.map +1 -0
  54. package/dist/node/plugin/vite/virtual/pages.d.ts +12 -0
  55. package/dist/node/plugin/vite/virtual/pages.d.ts.map +1 -0
  56. package/dist/node/plugin/vite/virtual/search-index.d.ts +11 -0
  57. package/dist/node/plugin/vite/virtual/search-index.d.ts.map +1 -0
  58. package/dist/node/plugin/vite/virtual/site-data.d.ts +13 -0
  59. package/dist/node/plugin/vite/virtual/site-data.d.ts.map +1 -0
  60. package/dist/node/plugin/vite/virtual/utils.d.ts +8 -0
  61. package/dist/node/plugin/vite/virtual/utils.d.ts.map +1 -0
  62. package/dist/shared/constants.d.ts.map +1 -1
  63. package/dist/shared/types/content.d.ts +42 -11
  64. package/dist/shared/types/content.d.ts.map +1 -1
  65. package/dist/shared/types/index.d.ts +0 -1
  66. package/dist/shared/types/index.d.ts.map +1 -1
  67. package/dist/shared/types/ssg.d.ts +15 -3
  68. package/dist/shared/types/ssg.d.ts.map +1 -1
  69. package/dist/shared/utils/content.d.ts +5 -3
  70. package/dist/shared/utils/content.d.ts.map +1 -1
  71. package/dist/shared/utils/field.d.ts +2 -0
  72. package/dist/shared/utils/field.d.ts.map +1 -0
  73. package/dist/shared/utils/html.d.ts +1 -0
  74. package/dist/shared/utils/html.d.ts.map +1 -1
  75. package/dist/shared/utils/index.d.ts +1 -0
  76. package/dist/shared/utils/index.d.ts.map +1 -1
  77. package/dist/shared/utils/path.d.ts +1 -0
  78. package/dist/shared/utils/path.d.ts.map +1 -1
  79. package/dist/shared/utils/url.d.ts +9 -1
  80. package/dist/shared/utils/url.d.ts.map +1 -1
  81. package/dist/shared-BuA2cqMO.js +401 -0
  82. package/dist/shared.js +2 -0
  83. package/dist/temml-DZbhOfRE.js +8146 -0
  84. package/dist/typerighter.css +1 -1
  85. package/dist/vite-CYozrIIG.js +1468 -0
  86. package/dist/vite.js +2 -2
  87. package/package.json +26 -40
  88. package/dist/app-Bw90hv7G.js +0 -266
  89. package/dist/brand-CmL-6h9U.js +0 -203
  90. package/dist/cli-BbvLsY1i.js +0 -640
  91. package/dist/constants-7heqadyd.js +0 -32183
  92. package/dist/init-DCkztTxJ.js +0 -2356
  93. package/dist/node/lib/markdown/index.d.ts +0 -5
  94. package/dist/node/lib/markdown/index.d.ts.map +0 -1
  95. package/dist/node/lib/markdown/plugins/callout-container.d.ts +0 -4
  96. package/dist/node/lib/markdown/plugins/callout-container.d.ts.map +0 -1
  97. package/dist/node/lib/markdown/plugins/custom-container.d.ts +0 -3
  98. package/dist/node/lib/markdown/plugins/custom-container.d.ts.map +0 -1
  99. package/dist/node/lib/markdown/plugins/highlight/index.d.ts.map +0 -1
  100. package/dist/node/lib/markdown/plugins/highlight/language.d.ts.map +0 -1
  101. package/dist/node/lib/markdown/plugins/image.d.ts +0 -3
  102. package/dist/node/lib/markdown/plugins/image.d.ts.map +0 -1
  103. package/dist/node/lib/markdown/plugins/line-number.d.ts +0 -3
  104. package/dist/node/lib/markdown/plugins/line-number.d.ts.map +0 -1
  105. package/dist/node/lib/markdown/plugins/link.d.ts +0 -3
  106. package/dist/node/lib/markdown/plugins/link.d.ts.map +0 -1
  107. package/dist/node/lib/markdown/plugins/pre-wrapper.d.ts +0 -6
  108. package/dist/node/lib/markdown/plugins/pre-wrapper.d.ts.map +0 -1
  109. package/dist/node/lib/markdown/plugins/restore-entities.d.ts +0 -3
  110. package/dist/node/lib/markdown/plugins/restore-entities.d.ts.map +0 -1
  111. package/dist/node/lib/markdown/plugins/table.d.ts +0 -3
  112. package/dist/node/lib/markdown/plugins/table.d.ts.map +0 -1
  113. package/dist/node/plugin/vite/search.d.ts.map +0 -1
  114. package/dist/shared/types/markdown.d.ts +0 -62
  115. package/dist/shared/types/markdown.d.ts.map +0 -1
  116. package/dist/vite-B-ktlRz9.js +0 -309
  117. /package/dist/node/lib/{markdown/plugins → render}/highlight/index.d.ts +0 -0
  118. /package/dist/node/lib/{markdown/plugins → render}/highlight/language.d.ts +0 -0
@@ -0,0 +1,5 @@
1
+ //#region src/shared/brand.ts
2
+ var e = "m15 10c-2.7614 0-5 2.2386-5 5v98c0 2.761 2.2386 5 5 5h178c2.761 0 5-2.239 5-5v-98c0-2.7614-2.239-5-5-5zm-15 5c0-8.28427 6.71573-15 15-15h178c8.284 0 15 6.71573 15 15v98c0 8.284-6.716 15-15 15h-178c-8.28427 0-15-6.716-15-15z", t = "M30 30h70v16h-27v52h-16v-52h-27z", n = "m155 98-30-33h20v-35h20v35h20z", r = "0 0 208 128", i = "#a0522d", a = `<svg fill='none' viewBox='${r}' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='${e}' fill-rule='evenodd' fill='${i}'/><path d='${t}' fill='${i}'/><path d='${n}' fill='${i}'/></svg>`;
3
+ `${encodeURIComponent(a)}`;
4
+ //#endregion
5
+ export { r as a, t as i, e as n, i as r, n as t };
@@ -0,0 +1,440 @@
1
+ import { a as e, i as t, t as n } from "./vite-CYozrIIG.js";
2
+ import r from "node:path";
3
+ import i from "picocolors";
4
+ import { createServer as a } from "vite";
5
+ import o from "node:fs";
6
+ //#region ../../node_modules/.pnpm/cac@7.0.0/node_modules/cac/dist/index.js
7
+ function s(e) {
8
+ return e == null ? [] : Array.isArray(e) ? e : [e];
9
+ }
10
+ function c(e, t, n, r) {
11
+ var i, a = e[t], o = ~r.string.indexOf(t) ? n == null || n === !0 ? "" : String(n) : typeof n == "boolean" ? n : ~r.boolean.indexOf(t) ? n === "false" ? !1 : n === "true" || (e._.push((i = +n, i * 0 == 0 ? i : n)), !!n) : (i = +n, i * 0 == 0 ? i : n);
12
+ e[t] = a == null ? o : Array.isArray(a) ? a.concat(o) : [a, o];
13
+ }
14
+ function l(e, t) {
15
+ e ||= [], t ||= {};
16
+ var n, r, i, a, o, l = { _: [] }, u = 0, d = 0, f = 0, p = e.length;
17
+ let m = t.alias !== void 0, h = t.unknown !== void 0, g = t.default !== void 0;
18
+ if (t.alias = t.alias || {}, t.string = s(t.string), t.boolean = s(t.boolean), m) for (n in t.alias) for (r = t.alias[n] = s(t.alias[n]), u = 0; u < r.length; u++) (t.alias[r[u]] = r.concat(n)).splice(u, 1);
19
+ for (u = t.boolean.length; u-- > 0;) for (r = t.alias[t.boolean[u]] || [], d = r.length; d-- > 0;) t.boolean.push(r[d]);
20
+ for (u = t.string.length; u-- > 0;) for (r = t.alias[t.string[u]] || [], d = r.length; d-- > 0;) t.string.push(r[d]);
21
+ if (g) {
22
+ for (n in t.default) if (a = typeof t.default[n], r = t.alias[n] = t.alias[n] || [], t[a] !== void 0) for (t[a].push(n), u = 0; u < r.length; u++) t[a].push(r[u]);
23
+ }
24
+ let _ = h ? Object.keys(t.alias) : [];
25
+ for (u = 0; u < p; u++) {
26
+ if (i = e[u], i === "--") {
27
+ l._ = l._.concat(e.slice(++u));
28
+ break;
29
+ }
30
+ for (d = 0; d < i.length && i.charCodeAt(d) === 45; d++);
31
+ if (d === 0) l._.push(i);
32
+ else if (i.substring(d, d + 3) === "no-") {
33
+ if (a = i.substring(d + 3), h && !~_.indexOf(a)) return t.unknown(i);
34
+ l[a] = !1;
35
+ } else {
36
+ for (f = d + 1; f < i.length && i.charCodeAt(f) !== 61; f++);
37
+ for (a = i.substring(d, f), o = i.substring(++f) || u + 1 === p || ("" + e[u + 1]).charCodeAt(0) === 45 || e[++u], r = d === 2 ? [a] : a, f = 0; f < r.length; f++) {
38
+ if (a = r[f], h && !~_.indexOf(a)) return t.unknown("-".repeat(d) + a);
39
+ c(l, a, f + 1 < r.length || o, t);
40
+ }
41
+ }
42
+ }
43
+ if (g) for (n in t.default) l[n] === void 0 && (l[n] = t.default[n]);
44
+ if (m) for (n in l) for (r = t.alias[n] || []; r.length > 0;) l[r.shift()] = l[n];
45
+ return l;
46
+ }
47
+ function u(e) {
48
+ return e.replace(/[<[].+/, "").trim();
49
+ }
50
+ function d(e) {
51
+ let t = /<([^>]+)>/g, n = /\[([^\]]+)\]/g, r = [], i = (e) => {
52
+ let t = !1, n = e[1];
53
+ return n.startsWith("...") && (n = n.slice(3), t = !0), {
54
+ required: e[0].startsWith("<"),
55
+ value: n,
56
+ variadic: t
57
+ };
58
+ }, a;
59
+ for (; a = t.exec(e);) r.push(i(a));
60
+ let o;
61
+ for (; o = n.exec(e);) r.push(i(o));
62
+ return r;
63
+ }
64
+ function f(e) {
65
+ let t = {
66
+ alias: {},
67
+ boolean: []
68
+ };
69
+ for (let [n, r] of e.entries()) r.names.length > 1 && (t.alias[r.names[0]] = r.names.slice(1)), r.isBoolean && (r.negated && e.some((e, t) => t !== n && e.names.some((e) => r.names.includes(e)) && typeof e.required == "boolean") || t.boolean.push(r.names[0]));
70
+ return t;
71
+ }
72
+ function p(e) {
73
+ return e.sort((e, t) => e.length > t.length ? -1 : 1)[0];
74
+ }
75
+ function m(e, t) {
76
+ return e.length >= t ? e : `${e}${" ".repeat(t - e.length)}`;
77
+ }
78
+ function h(e) {
79
+ return e.replaceAll(/([a-z])-([a-z])/g, (e, t, n) => t + n.toUpperCase());
80
+ }
81
+ function g(e, t, n) {
82
+ let r = e;
83
+ for (let e = 0; e < t.length; e++) {
84
+ let i = t[e];
85
+ if (e === t.length - 1) {
86
+ r[i] = n;
87
+ return;
88
+ }
89
+ if (r[i] == null) {
90
+ let n = +t[e + 1] > -1;
91
+ r[i] = n ? [] : {};
92
+ }
93
+ r = r[i];
94
+ }
95
+ }
96
+ function _(e, t) {
97
+ for (let n of Object.keys(t)) {
98
+ let r = t[n];
99
+ r.shouldTransform && (e[n] = [e[n]].flat(), typeof r.transformFunction == "function" && (e[n] = e[n].map(r.transformFunction)));
100
+ }
101
+ }
102
+ function v(e) {
103
+ let t = /([^\\/]+)$/.exec(e);
104
+ return t ? t[1] : "";
105
+ }
106
+ function y(e) {
107
+ return e.split(".").map((e, t) => t === 0 ? h(e) : e).join(".");
108
+ }
109
+ var b = class extends Error {
110
+ constructor(e) {
111
+ super(e), this.name = "CACError", typeof Error.captureStackTrace != "function" && (this.stack = Error(e).stack);
112
+ }
113
+ }, x = class {
114
+ rawName;
115
+ description;
116
+ name;
117
+ names;
118
+ isBoolean;
119
+ required;
120
+ config;
121
+ negated;
122
+ constructor(e, t, n) {
123
+ this.rawName = e, this.description = t, this.config = Object.assign({}, n), e = e.replaceAll(".*", ""), this.negated = !1, this.names = u(e).split(",").map((e) => {
124
+ let t = e.trim().replace(/^-{1,2}/, "");
125
+ return t.startsWith("no-") && (this.negated = !0, t = t.replace(/^no-/, "")), y(t);
126
+ }).sort((e, t) => e.length > t.length ? 1 : -1), this.name = this.names.at(-1), this.negated && this.config.default == null && (this.config.default = !0), e.includes("<") ? this.required = !0 : e.includes("[") ? this.required = !1 : this.isBoolean = !0;
127
+ }
128
+ }, S, C;
129
+ if (typeof process < "u") {
130
+ let e;
131
+ e = typeof Deno < "u" && typeof Deno.version?.deno == "string" ? "deno" : typeof Bun < "u" && typeof Bun.version == "string" ? "bun" : "node", C = `${process.platform}-${process.arch} ${e}-${process.version}`, S = process.argv;
132
+ } else C = typeof navigator > "u" ? "unknown" : `${navigator.platform} ${navigator.userAgent}`;
133
+ var w = class {
134
+ rawName;
135
+ description;
136
+ config;
137
+ cli;
138
+ options;
139
+ aliasNames;
140
+ name;
141
+ args;
142
+ commandAction;
143
+ usageText;
144
+ versionNumber;
145
+ examples;
146
+ helpCallback;
147
+ globalCommand;
148
+ constructor(e, t, n = {}, r) {
149
+ this.rawName = e, this.description = t, this.config = n, this.cli = r, this.options = [], this.aliasNames = [], this.name = u(e), this.args = d(e), this.examples = [];
150
+ }
151
+ usage(e) {
152
+ return this.usageText = e, this;
153
+ }
154
+ allowUnknownOptions() {
155
+ return this.config.allowUnknownOptions = !0, this;
156
+ }
157
+ ignoreOptionDefaultValue() {
158
+ return this.config.ignoreOptionDefaultValue = !0, this;
159
+ }
160
+ version(e, t = "-v, --version") {
161
+ return this.versionNumber = e, this.option(t, "Display version number"), this;
162
+ }
163
+ example(e) {
164
+ return this.examples.push(e), this;
165
+ }
166
+ option(e, t, n) {
167
+ let r = new x(e, t, n);
168
+ return this.options.push(r), this;
169
+ }
170
+ alias(e) {
171
+ return this.aliasNames.push(e), this;
172
+ }
173
+ action(e) {
174
+ return this.commandAction = e, this;
175
+ }
176
+ isMatched(e) {
177
+ return this.name === e || this.aliasNames.includes(e);
178
+ }
179
+ get isDefaultCommand() {
180
+ return this.name === "" || this.aliasNames.includes("!");
181
+ }
182
+ get isGlobalCommand() {
183
+ return this instanceof T;
184
+ }
185
+ hasOption(e) {
186
+ return e = e.split(".")[0], this.options.find((t) => t.names.includes(e));
187
+ }
188
+ outputHelp() {
189
+ let { name: e, commands: t } = this.cli, { versionNumber: n, options: r, helpCallback: i } = this.cli.globalCommand, a = [{ body: `${e}${n ? `/${n}` : ""}` }];
190
+ if (a.push({
191
+ title: "Usage",
192
+ body: ` $ ${e} ${this.usageText || this.rawName}`
193
+ }), (this.isGlobalCommand || this.isDefaultCommand) && t.length > 0) {
194
+ let n = p(t.map((e) => e.rawName));
195
+ a.push({
196
+ title: "Commands",
197
+ body: t.map((e) => ` ${m(e.rawName, n.length)} ${e.description}`).join("\n")
198
+ }, {
199
+ title: "For more info, run any command with the `--help` flag",
200
+ body: t.map((t) => ` $ ${e}${t.name === "" ? "" : ` ${t.name}`} --help`).join("\n")
201
+ });
202
+ }
203
+ let o = this.isGlobalCommand ? r : [...this.options, ...r || []];
204
+ if (!this.isGlobalCommand && !this.isDefaultCommand && (o = o.filter((e) => e.name !== "version")), o.length > 0) {
205
+ let e = p(o.map((e) => e.rawName));
206
+ a.push({
207
+ title: "Options",
208
+ body: o.map((t) => ` ${m(t.rawName, e.length)} ${t.description} ${t.config.default === void 0 ? "" : `(default: ${t.config.default})`}`).join("\n")
209
+ });
210
+ }
211
+ this.examples.length > 0 && a.push({
212
+ title: "Examples",
213
+ body: this.examples.map((t) => typeof t == "function" ? t(e) : t).join("\n")
214
+ }), i && (a = i(a) || a), console.info(a.map((e) => e.title ? `${e.title}:\n${e.body}` : e.body).join("\n\n"));
215
+ }
216
+ outputVersion() {
217
+ let { name: e } = this.cli, { versionNumber: t } = this.cli.globalCommand;
218
+ t && console.info(`${e}/${t} ${C}`);
219
+ }
220
+ checkRequiredArgs() {
221
+ let e = this.args.filter((e) => e.required).length;
222
+ if (this.cli.args.length < e) throw new b(`missing required args for command \`${this.rawName}\``);
223
+ }
224
+ checkUnknownOptions() {
225
+ let { options: e, globalCommand: t } = this.cli;
226
+ if (!this.config.allowUnknownOptions) {
227
+ for (let n of Object.keys(e)) if (n !== "--" && !this.hasOption(n) && !t.hasOption(n)) throw new b(`Unknown option \`${n.length > 1 ? `--${n}` : `-${n}`}\``);
228
+ }
229
+ }
230
+ checkOptionValue() {
231
+ let { options: e, globalCommand: t } = this.cli, n = [...t.options, ...this.options];
232
+ for (let t of n) {
233
+ let r = e[t.name.split(".")[0]];
234
+ if (t.required) {
235
+ let e = n.some((e) => e.negated && e.names.includes(t.name));
236
+ if (r === !0 || r === !1 && !e) throw new b(`option \`${t.rawName}\` value is missing`);
237
+ }
238
+ }
239
+ }
240
+ checkUnusedArgs() {
241
+ let e = this.args.some((e) => e.variadic) ? Infinity : this.args.length;
242
+ if (e < this.cli.args.length) throw new b(`Unused args: ${this.cli.args.slice(e).map((e) => `\`${e}\``).join(", ")}`);
243
+ }
244
+ }, T = class extends w {
245
+ constructor(e) {
246
+ super("@@global@@", "", {}, e);
247
+ }
248
+ }, E = class extends EventTarget {
249
+ name;
250
+ commands;
251
+ globalCommand;
252
+ matchedCommand;
253
+ matchedCommandName;
254
+ rawArgs;
255
+ args;
256
+ options;
257
+ showHelpOnExit;
258
+ showVersionOnExit;
259
+ constructor(e = "") {
260
+ super(), this.name = e, this.commands = [], this.rawArgs = [], this.args = [], this.options = {}, this.globalCommand = new T(this), this.globalCommand.usage("<command> [options]");
261
+ }
262
+ usage(e) {
263
+ return this.globalCommand.usage(e), this;
264
+ }
265
+ command(e, t, n) {
266
+ let r = new w(e, t || "", n, this);
267
+ return r.globalCommand = this.globalCommand, this.commands.push(r), r;
268
+ }
269
+ option(e, t, n) {
270
+ return this.globalCommand.option(e, t, n), this;
271
+ }
272
+ help(e) {
273
+ return this.globalCommand.option("-h, --help", "Display this message"), this.globalCommand.helpCallback = e, this.showHelpOnExit = !0, this;
274
+ }
275
+ version(e, t = "-v, --version") {
276
+ return this.globalCommand.version(e, t), this.showVersionOnExit = !0, this;
277
+ }
278
+ example(e) {
279
+ return this.globalCommand.example(e), this;
280
+ }
281
+ outputHelp() {
282
+ this.matchedCommand ? this.matchedCommand.outputHelp() : this.globalCommand.outputHelp();
283
+ }
284
+ outputVersion() {
285
+ this.globalCommand.outputVersion();
286
+ }
287
+ setParsedInfo({ args: e, options: t }, n, r) {
288
+ return this.args = e, this.options = t, n && (this.matchedCommand = n), r && (this.matchedCommandName = r), this;
289
+ }
290
+ unsetMatchedCommand() {
291
+ this.matchedCommand = void 0, this.matchedCommandName = void 0;
292
+ }
293
+ parse(e, { run: t = !0 } = {}) {
294
+ if (!e) {
295
+ if (!S) throw Error("No argv provided and runtime process argv is not available.");
296
+ e = S;
297
+ }
298
+ this.rawArgs = e, this.name ||= e[1] ? v(e[1]) : "cli";
299
+ let n = !0;
300
+ for (let t of this.commands) {
301
+ let r = this.mri(e.slice(2), t), i = r.args[0];
302
+ if (t.isMatched(i)) {
303
+ n = !1;
304
+ let e = {
305
+ ...r,
306
+ args: r.args.slice(1)
307
+ };
308
+ this.setParsedInfo(e, t, i), this.dispatchEvent(new CustomEvent(`command:${i}`, { detail: t }));
309
+ }
310
+ }
311
+ if (n) {
312
+ for (let t of this.commands) if (t.isDefaultCommand) {
313
+ n = !1;
314
+ let r = this.mri(e.slice(2), t);
315
+ this.setParsedInfo(r, t), this.dispatchEvent(new CustomEvent("command:!", { detail: t }));
316
+ }
317
+ }
318
+ if (n) {
319
+ let t = this.mri(e.slice(2));
320
+ this.setParsedInfo(t);
321
+ }
322
+ this.options.help && this.showHelpOnExit && (this.outputHelp(), t = !1, this.unsetMatchedCommand()), this.options.version && this.showVersionOnExit && this.matchedCommandName == null && (this.outputVersion(), t = !1, this.unsetMatchedCommand());
323
+ let r = {
324
+ args: this.args,
325
+ options: this.options
326
+ };
327
+ return t && this.runMatchedCommand(), !this.matchedCommand && this.args[0] && this.dispatchEvent(new CustomEvent("command:*", { detail: this.args[0] })), r;
328
+ }
329
+ mri(e, t) {
330
+ let n = [...this.globalCommand.options, ...t ? t.options : []], r = f(n), i = [], a = e.indexOf("--");
331
+ a !== -1 && (i = e.slice(a + 1), e = e.slice(0, a));
332
+ let o = l(e, r);
333
+ o = Object.keys(o).reduce((e, t) => ({
334
+ ...e,
335
+ [y(t)]: o[t]
336
+ }), { _: [] });
337
+ let s = o._, c = { "--": i }, u = t && t.config.ignoreOptionDefaultValue ? t.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue, d = Object.create(null);
338
+ for (let e of n) {
339
+ if (!u && e.config.default !== void 0) for (let t of e.names) c[t] = e.config.default;
340
+ Array.isArray(e.config.type) && d[e.name] === void 0 && (d[e.name] = Object.create(null), d[e.name].shouldTransform = !0, d[e.name].transformFunction = e.config.type[0]);
341
+ }
342
+ for (let e of Object.keys(o)) e !== "_" && (g(c, e.split("."), o[e]), _(c, d));
343
+ return {
344
+ args: s,
345
+ options: c
346
+ };
347
+ }
348
+ runMatchedCommand() {
349
+ let { args: e, options: t, matchedCommand: n } = this;
350
+ if (!n || !n.commandAction) return;
351
+ n.checkUnknownOptions(), n.checkOptionValue(), n.checkRequiredArgs(), n.checkUnusedArgs();
352
+ let r = [];
353
+ return n.args.forEach((t, n) => {
354
+ t.variadic ? r.push(e.slice(n)) : r.push(e[n]);
355
+ }), r.push(t), n.commandAction.apply(this, r);
356
+ }
357
+ }, D = (e = "") => new E(e), O = i.bold(i.cyan("[typerighter]"));
358
+ function k() {
359
+ let i = D("typerighter");
360
+ process.on("uncaughtException", (e) => {
361
+ A("runtime", e);
362
+ }), process.on("unhandledRejection", (e) => {
363
+ A("runtime", e instanceof Error ? e : Error(String(e)));
364
+ }), i.command("[root]", "Start dev server").alias("dev").option("--port <port>", "Port to listen on").option("--host", "Expose to network").option("--verbose", "Print version and build info").action(async (e, t) => {
365
+ t.verbose && console.log(`${O} cli v0.30.3 (built 9/12/2026, 3:06:00 AM)\n`);
366
+ let r = await a({
367
+ root: M(e),
368
+ configFile: !1,
369
+ plugins: [n()],
370
+ server: {
371
+ port: t.port,
372
+ host: t.host
373
+ }
374
+ });
375
+ await r.listen(), r.printUrls();
376
+ }), i.command("build [root]", "Build for production").option("--outDir <dir>", "Output directory", { default: "dist" }).option("--base <path>", "Base public path").option("--verbose", "Print version and build info").action(async (n, r) => {
377
+ let i = t(M(n));
378
+ r.verbose && await j(i);
379
+ try {
380
+ await e(i, {
381
+ outDir: r.outDir,
382
+ base: r.base
383
+ });
384
+ } finally {
385
+ i.dispose();
386
+ }
387
+ }), i.command("init [root]", "Scaffold a new project").option("--name <name>", "Project name").option("--title <title>", "Site title").option("--description <description>", "Site description").option("--yes", "Skip confirmation for existing projects").action(async (e, t) => {
388
+ let { initialize: n } = await import("./init-EKDV1L4U.js");
389
+ await n(M(e), t);
390
+ }), i.command("preview [root]", "Preview production build").option("--port <port>", "Port to listen on").action(async (e, n) => {
391
+ let r = M(e), i = t(r);
392
+ try {
393
+ let e = (await (await i.getTdContext()).getConfig()).basePath, { preview: t } = await import("vite");
394
+ (await t({
395
+ root: r,
396
+ base: e,
397
+ preview: { port: n.port }
398
+ })).printUrls();
399
+ } finally {
400
+ i.dispose();
401
+ }
402
+ }), i.command("check [root]", "Check vault for errors").option("--fix", "Auto-fix formatting issues").option("--verbose", "Print version and build info").action(async (e, n) => {
403
+ let i = t(M(e));
404
+ n.verbose && await j(i);
405
+ let { logger: a } = i;
406
+ try {
407
+ a.start("Checking vault...");
408
+ let e = await i.getTdContext(), t = await e.checkVault();
409
+ for (let e of t.diagnostics) e.severity === "error" ? a.error(`${e.filepath}:${e.line}:${e.column} ${e.message} (${e.code})`) : a.warn(`${e.filepath}:${e.line}:${e.column} ${e.message} (${e.code})`);
410
+ if (n.fix && 0 < t.warningCount) {
411
+ let t = await e.getConfig(), n = await e.listFiles(), i = 0;
412
+ for (let a of n) {
413
+ let n = await e.formatFile(a);
414
+ if (n.changed) {
415
+ let e = r.resolve(t.rootDir, a);
416
+ o.writeFileSync(e, n.content), i++;
417
+ }
418
+ }
419
+ 0 < i && a.success(`Fixed ${i} file(s)`);
420
+ }
421
+ let s = `${t.fileCount} files checked, ${t.errorCount} error(s), ${t.warningCount} warning(s)`;
422
+ 0 < t.errorCount ? (a.error(s), process.exit(1)) : a.success(s);
423
+ } finally {
424
+ i.dispose();
425
+ }
426
+ }), i.help(), i.version("0.30.3"), i.parse();
427
+ }
428
+ function A(e, t) {
429
+ let n = t instanceof Error ? t.message : String(t);
430
+ console.error(`\n${O} ${i.red(`${e} failed`)}\n`), console.error(i.red(n)), console.error(""), process.exit(1);
431
+ }
432
+ async function j(e) {
433
+ let t = await (await e.getTdContext()).rpc.getVersion();
434
+ console.log(`${O} cli v0.30.3 (built 9/12/2026, 3:06:00 AM)`), console.log(`${O} rpc v${t}`), console.log("");
435
+ }
436
+ function M(e) {
437
+ return r.resolve(e ?? process.cwd());
438
+ }
439
+ //#endregion
440
+ export { k as t };
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./cli-BbvLsY1i.js";
1
+ import { t as e } from "./cli-BFgBPypP.js";
2
2
  export { e as cli };
@@ -1,6 +1,6 @@
1
- import { type App, type Component, type ShallowRef } from 'vue';
1
+ import { type App, type Component, type Ref, type ShallowRef } from 'vue';
2
2
  import { type Router } from './router';
3
- import type { PageModule, ContentTree, SchemaDefinition } from '@/shared';
3
+ import { type PageModule, type ContentTree, type SchemaDefinition, type DirectoryListing } from '@/shared';
4
4
  export { useTdContent, } from './composables/useTdContent';
5
5
  export { useRouter, useRoute, } from './router';
6
6
  export { Content, } from './components/Content';
@@ -9,23 +9,62 @@ export interface TypedownSiteConfig {
9
9
  title: string;
10
10
  /** Site description */
11
11
  description: string;
12
+ /** URL base path (e.g. "/" or "/blog") */
13
+ basePath: string;
14
+ /** Repository URL */
15
+ repo?: string;
16
+ /** Site author */
17
+ author?: string;
18
+ /** License name */
19
+ license?: string;
20
+ /** Navigation links */
21
+ nav?: {
22
+ title: string;
23
+ link: string;
24
+ icon?: string;
25
+ }[];
12
26
  }
13
27
  export interface TypedownSiteData {
28
+ /** Whether the data has been fetched from the server */
29
+ ready: boolean;
14
30
  /** Content files as a recursive directory tree */
15
31
  contentTree: ContentTree;
16
32
  /** Serialized MiniSearch index for full-text search */
17
33
  searchIndex?: string;
18
34
  /** Schema definitions keyed by schema name */
19
35
  schemas: Record<string, SchemaDefinition>;
36
+ /** Directory listings keyed by URL path */
37
+ directoryListings: Record<string, DirectoryListing>;
20
38
  }
21
39
  type PageLoader = (path: string) => Promise<PageModule | undefined>;
22
40
  export declare function createTypedownApp(loadPageModule: (path: string) => Promise<PageModule | undefined>, Layout: Component, config?: Partial<TypedownSiteConfig>, data?: Partial<TypedownSiteData>): Promise<{
23
41
  app: App;
24
42
  router: Router;
25
43
  searchIndex: ShallowRef<string | undefined>;
44
+ siteData: Ref<TypedownSiteData>;
26
45
  }>;
27
46
  export declare function usePageLoader(): PageLoader | undefined;
28
47
  export declare function useSearchIndex(): ShallowRef<string | undefined>;
29
- export declare function useSiteConfig(): TypedownSiteConfig;
30
- export declare function useSiteData(): TypedownSiteData;
48
+ export declare function useSiteConfig(): {
49
+ withBase(path: string): string;
50
+ /** Site title */
51
+ title: string;
52
+ /** Site description */
53
+ description: string;
54
+ /** URL base path (e.g. "/" or "/blog") */
55
+ basePath: string;
56
+ /** Repository URL */
57
+ repo?: string;
58
+ /** Site author */
59
+ author?: string;
60
+ /** License name */
61
+ license?: string;
62
+ /** Navigation links */
63
+ nav?: {
64
+ title: string;
65
+ link: string;
66
+ icon?: string;
67
+ }[];
68
+ };
69
+ export declare function useSiteData(): Ref<TypedownSiteData>;
31
70
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GAAG,EACR,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,KAAK,CAAC;AAQb,OAAO,EACuB,KAAK,MAAM,EACxC,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,SAAS,EAAE,QAAQ,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,WAAW,EAAE,WAAW,CAAC;IACzB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAOpE,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,EACjE,MAAM,EAAE,SAAS,EACjB,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,EACxC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACnC,OAAO,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C,CAAC,CAqDD;AAED,wBAAgB,aAAa,IAAK,UAAU,GAAG,SAAS,CAEvD;AAGD,wBAAgB,cAAc,IAAK,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAEhE;AAED,wBAAgB,aAAa,IAAK,kBAAkB,CAKnD;AAED,wBAAgB,WAAW,IAAK,gBAAgB,CAQ/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,GAAG,EACR,KAAK,SAAS,EAEd,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,KAAK,CAAC;AAWb,OAAO,EACuB,KAAK,MAAM,EACxC,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,SAAS,EAAE,QAAQ,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,GAAG,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,WAAW,EAAE,WAAW,CAAC;IACzB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACrD;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAOpE,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,EACjE,MAAM,EAAE,SAAS,EACjB,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,EACxC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACnC,OAAO,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACjC,CAAC,CAiED;AAED,wBAAgB,aAAa,IAAK,UAAU,GAAG,SAAS,CAEvD;AAGD,wBAAgB,cAAc,IAAK,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAEhE;AAED,wBAAgB,aAAa;mBAUT,MAAM,GAAG,MAAM;IAxIjC,iBAAiB;WACV,MAAM;IACb,uBAAuB;iBACV,MAAM;IACnB,0CAA0C;cAChC,MAAM;IAChB,qBAAqB;WACd,MAAM;IACb,kBAAkB;aACT,MAAM;IACf,mBAAmB;cACT,MAAM;IAChB,uBAAuB;UACjB;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE;EA+HJ;AAWD,wBAAgB,WAAW,IAAK,GAAG,CAAC,gBAAgB,CAAC,CAEpD"}
@@ -1,5 +1,5 @@
1
1
  import type { Component, InjectionKey } from 'vue';
2
- import type { PageData, PageModule } from '@/shared';
2
+ import { type PageData, type PageModule } from '@/shared';
3
3
  export interface Route {
4
4
  path: string;
5
5
  hash: string;
@@ -17,7 +17,11 @@ export interface Router {
17
17
  onAfterRouteChange?: (to: string) => Promise<undefined> | undefined;
18
18
  }
19
19
  export declare const routerSymbol: InjectionKey<Router>;
20
- export declare function createRouter(loadPageModule: (path: string) => Promise<PageModule | undefined>, fallbackComponent?: Component): Router;
20
+ export interface RouterOptions {
21
+ basePath?: string;
22
+ fallbackComponent?: Component;
23
+ }
24
+ export declare function createRouter(loadPageModule: (path: string) => Promise<PageModule | undefined>, options?: RouterOptions): Router;
21
25
  export declare function scrollToHash(hash: string): void;
22
26
  export declare function useRoute(): Route;
23
27
  export declare function useRouter(): Router;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/client/app/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAAE,YAAY,EACxB,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EACV,QAAQ,EAAE,UAAU,EACrB,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IACzF,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CACrE;AAED,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,MAAM,CAA6B,CAAC;AAS5E,wBAAgB,YAAY,CAC1B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,EACjE,iBAAiB,CAAC,EAAE,SAAS,GAC5B,MAAM,CAoIR;AAGD,wBAAgB,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAchD;AAGD,wBAAgB,QAAQ,IAAK,KAAK,CAEjC;AAGD,wBAAgB,SAAS,IAAK,MAAM,CAMnC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/client/app/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAAE,YAAY,EACxB,MAAM,KAAK,CAAC;AAIb,OAAO,EAEL,KAAK,QAAQ,EAAE,KAAK,UAAU,EAC/B,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IACzF,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CACrE;AAED,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,MAAM,CAA6B,CAAC;AAS5E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,EACjE,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAyIR;AAGD,wBAAgB,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAchD;AAGD,wBAAgB,QAAQ,IAAK,KAAK,CAEjC;AAGD,wBAAgB,SAAS,IAAK,MAAM,CAMnC"}