mdzilla 0.0.6 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_chunks/exporter.mjs +1 -13
- package/dist/_chunks/server.mjs +161 -165
- package/dist/cli/main.mjs +42 -16
- package/package.json +9 -10
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Markdown browser for humans and agents.
|
|
|
14
14
|
|
|
15
15
|
> Browse docs from local directories, GitHub repos, and remote websites — all from your terminal.
|
|
16
16
|
|
|
17
|
-
Built with [md4x](https://github.com/unjs/md4x), [
|
|
17
|
+
Built with [md4x](https://github.com/unjs/md4x), [giget](https://github.com/unjs/giget) and [speed-highlight](https://github.com/speed-highlight/core), [nitro](https://v3.nitro.build/), [h3](https://h3.dev/), [srvx](https://srvx.h3.dev/) and [vite](https://vite.dev/).
|
|
18
18
|
|
|
19
19
|
Supports any website with [`/llms.txt`](https://llmstxt.org/) or markdown content negotiation.
|
|
20
20
|
|
|
@@ -591,21 +591,9 @@ var DocsSourceHTTP = class extends DocsSource {
|
|
|
591
591
|
return `# Fetch Error\n\nFailed to fetch \`${url}\`\n\n> ${err instanceof Error ? err.message : String(err)}`;
|
|
592
592
|
}
|
|
593
593
|
if (!res.ok) return `# ${res.status} ${res.statusText}\n\nFailed to fetch \`${url}\``;
|
|
594
|
-
|
|
595
|
-
const text = await res.text();
|
|
596
|
-
if (_isHTML(contentType, text)) {
|
|
597
|
-
const { htmlToMarkdown } = await import("mdream");
|
|
598
|
-
return htmlToMarkdown(text, { origin: url });
|
|
599
|
-
}
|
|
600
|
-
return text;
|
|
594
|
+
return await res.text();
|
|
601
595
|
}
|
|
602
596
|
};
|
|
603
|
-
/** Check if a response is HTML by content-type or content sniffing */
|
|
604
|
-
function _isHTML(contentType, body) {
|
|
605
|
-
if (contentType.includes("text/html") || contentType.includes("application/xhtml")) return true;
|
|
606
|
-
const trimmed = body.trimStart();
|
|
607
|
-
return trimmed.startsWith("<!") || trimmed.startsWith("<html");
|
|
608
|
-
}
|
|
609
597
|
/** Extract a readable title from a URL */
|
|
610
598
|
function _titleFromURL(url) {
|
|
611
599
|
try {
|
package/dist/_chunks/server.mjs
CHANGED
|
@@ -14,16 +14,19 @@ var te = Object.defineProperty, v = (e, t) => () => (e && (t = e(e = 0)), t), y
|
|
|
14
14
|
enumerable: !0
|
|
15
15
|
});
|
|
16
16
|
return t || te(n, Symbol.toStringTag, { value: `Module` }), n;
|
|
17
|
-
}
|
|
18
|
-
globalThis.__nitro_vite_envs__ =
|
|
19
|
-
var b,
|
|
17
|
+
};
|
|
18
|
+
globalThis.__nitro_vite_envs__ = {};
|
|
19
|
+
var b, ne = v((() => {
|
|
20
20
|
b = (() => {
|
|
21
21
|
let e = function() {};
|
|
22
22
|
return e.prototype = Object.create(null), Object.freeze(e.prototype), e;
|
|
23
23
|
})();
|
|
24
|
-
})),
|
|
25
|
-
|
|
24
|
+
})), re, x, ie = v((() => {
|
|
25
|
+
re = URL, x = Response;
|
|
26
26
|
}));
|
|
27
|
+
function ae(e) {
|
|
28
|
+
return decodeURI(e.includes(`%25`) ? e.replace(/%25/g, `%2525`) : e);
|
|
29
|
+
}
|
|
27
30
|
function oe(e = ``) {
|
|
28
31
|
return e.replace(ve, ``);
|
|
29
32
|
}
|
|
@@ -48,14 +51,14 @@ function S(e, t, n = {}) {
|
|
|
48
51
|
}
|
|
49
52
|
function le(e, t, n, r) {
|
|
50
53
|
if (e === ye) return new x(null);
|
|
51
|
-
if (e ===
|
|
54
|
+
if (e === P && (e = new N({
|
|
52
55
|
status: 404,
|
|
53
56
|
message: `Cannot find any route matching [${t.req.method}] ${t.url}`
|
|
54
57
|
})), e && e instanceof Error) {
|
|
55
|
-
let i =
|
|
58
|
+
let i = N.isError(e), a = i ? e : new N(e);
|
|
56
59
|
i || (a.unhandled = !0, e?.stack && (a.stack = e.stack)), a.unhandled && !n.silent && console.error(a);
|
|
57
|
-
let { onError: o } = n;
|
|
58
|
-
return o && !r ? Promise.resolve(o(a, t)).catch((e) => e).then((r) => le(r ?? e, t, n, !0)) : fe(a, n.debug);
|
|
60
|
+
let { onError: o } = n, s = t[k]?.[j];
|
|
61
|
+
return o && !r ? Promise.resolve(o(a, t)).catch((e) => e).then((r) => le(r ?? e, t, n, !0)) : fe(a, n.debug, s);
|
|
59
62
|
}
|
|
60
63
|
let i = t[k], a = i?.[A];
|
|
61
64
|
if (t[k] = void 0, !(e instanceof Response)) {
|
|
@@ -89,14 +92,14 @@ function ue(e, t, n) {
|
|
|
89
92
|
let r = typeof e;
|
|
90
93
|
if (r === `string`) return { body: e };
|
|
91
94
|
if (e instanceof Uint8Array) return t.res.headers.set(`content-length`, e.byteLength.toString()), { body: e };
|
|
92
|
-
if (e instanceof
|
|
95
|
+
if (e instanceof F || e?.constructor?.name === `HTTPResponse`) return e;
|
|
93
96
|
if (ce(e, r)) return {
|
|
94
97
|
body: JSON.stringify(e, void 0, n.debug ? 2 : void 0),
|
|
95
|
-
headers:
|
|
98
|
+
headers: R
|
|
96
99
|
};
|
|
97
100
|
if (r === `bigint`) return {
|
|
98
101
|
body: e.toString(),
|
|
99
|
-
headers:
|
|
102
|
+
headers: R
|
|
100
103
|
};
|
|
101
104
|
if (e instanceof Blob) {
|
|
102
105
|
let t = new Headers({
|
|
@@ -113,15 +116,16 @@ function ue(e, t, n) {
|
|
|
113
116
|
function de(e, t) {
|
|
114
117
|
return e === `HEAD` || t === 100 || t === 101 || t === 102 || t === 204 || t === 205 || t === 304;
|
|
115
118
|
}
|
|
116
|
-
function fe(e, t) {
|
|
117
|
-
|
|
119
|
+
function fe(e, t, n) {
|
|
120
|
+
let r = e.headers ? C(R, e.headers) : new Headers(R);
|
|
121
|
+
return n && (r = C(r, n)), new x(JSON.stringify({
|
|
118
122
|
...e.toJSON(),
|
|
119
123
|
stack: t && e.stack ? e.stack.split(`
|
|
120
124
|
`).map((e) => e.trim()) : void 0
|
|
121
125
|
}, void 0, t ? 2 : void 0), {
|
|
122
126
|
status: e.status,
|
|
123
127
|
statusText: e.statusText,
|
|
124
|
-
headers:
|
|
128
|
+
headers: r
|
|
125
129
|
});
|
|
126
130
|
}
|
|
127
131
|
function w(e, t, n, r = 0) {
|
|
@@ -130,7 +134,7 @@ function w(e, t, n, r = 0) {
|
|
|
130
134
|
return pe(c) ? s() : typeof c?.then == `function` ? c.then((e) => pe(e) ? s() : e) : c;
|
|
131
135
|
}
|
|
132
136
|
function pe(e) {
|
|
133
|
-
return e === void 0 || e ===
|
|
137
|
+
return e === void 0 || e === P;
|
|
134
138
|
}
|
|
135
139
|
function me(e) {
|
|
136
140
|
let t = new b();
|
|
@@ -139,10 +143,10 @@ function me(e) {
|
|
|
139
143
|
for (let p = 0; p < n + 1; p++) switch (f = p === n ? 38 : e.charCodeAt(p), f) {
|
|
140
144
|
case 38:
|
|
141
145
|
if (d = o > a, d || (o = p), r = e.slice(a + 1, o), d || r.length > 0) {
|
|
142
|
-
if (l && (r = r.replace(
|
|
146
|
+
if (l && (r = r.replace(z, ` `)), s) try {
|
|
143
147
|
r = decodeURIComponent(r);
|
|
144
148
|
} catch {}
|
|
145
|
-
if (d && (i = e.slice(o + 1, p), u && (i = i.replace(
|
|
149
|
+
if (d && (i = e.slice(o + 1, p), u && (i = i.replace(z, ` `)), c)) try {
|
|
146
150
|
i = decodeURIComponent(i);
|
|
147
151
|
} catch {}
|
|
148
152
|
let n = t[r];
|
|
@@ -169,7 +173,7 @@ function T(e) {
|
|
|
169
173
|
if (typeof e == `function`) return ge(e);
|
|
170
174
|
let t = e.handler || (e.fetch ? function(t) {
|
|
171
175
|
return e.fetch(t.req);
|
|
172
|
-
} :
|
|
176
|
+
} : B);
|
|
173
177
|
return Object.assign(ge(e.middleware?.length ? function(n) {
|
|
174
178
|
return w(n, e.middleware, t);
|
|
175
179
|
} : t), e);
|
|
@@ -177,7 +181,7 @@ function T(e) {
|
|
|
177
181
|
function ge(e) {
|
|
178
182
|
return `fetch` in e ? e : Object.assign(e, { fetch: (t) => {
|
|
179
183
|
typeof t == `string` && (t = new URL(t, `http://_`)), t instanceof URL && (t = new Request(t));
|
|
180
|
-
let n = new
|
|
184
|
+
let n = new M(t);
|
|
181
185
|
try {
|
|
182
186
|
return Promise.resolve(S(e(n), n));
|
|
183
187
|
} catch (e) {
|
|
@@ -201,8 +205,8 @@ function D(e) {
|
|
|
201
205
|
return e.fetch(t.req);
|
|
202
206
|
};
|
|
203
207
|
}
|
|
204
|
-
var O, k, A, j, _e, ve,
|
|
205
|
-
|
|
208
|
+
var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
|
|
209
|
+
ne(), ie(), O = `h3.internal.event.`, k = Symbol.for(`${O}res`), A = Symbol.for(`${O}res.headers`), j = Symbol.for(`${O}res.err.headers`), M = class {
|
|
206
210
|
app;
|
|
207
211
|
req;
|
|
208
212
|
url;
|
|
@@ -210,8 +214,8 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
210
214
|
static __is_event__ = !0;
|
|
211
215
|
constructor(e, t, n) {
|
|
212
216
|
this.context = t || e.context || new b(), this.req = e, this.app = n;
|
|
213
|
-
let r = e._url;
|
|
214
|
-
|
|
217
|
+
let r = e._url, i = r && r instanceof URL ? r : new re(e.url);
|
|
218
|
+
i.pathname.includes(`%`) && (i.pathname = ae(i.pathname)), this.url = i;
|
|
215
219
|
}
|
|
216
220
|
get res() {
|
|
217
221
|
return this[k] ||= new _e();
|
|
@@ -246,7 +250,10 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
246
250
|
get headers() {
|
|
247
251
|
return this[A] ||= new Headers();
|
|
248
252
|
}
|
|
249
|
-
|
|
253
|
+
get errHeaders() {
|
|
254
|
+
return this[j] ||= new Headers();
|
|
255
|
+
}
|
|
256
|
+
}, ve = /[^\u0009\u0020-\u007E]/g, N = class e extends Error {
|
|
250
257
|
get name() {
|
|
251
258
|
return `HTTPError`;
|
|
252
259
|
}
|
|
@@ -270,7 +277,7 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
270
277
|
constructor(e, t) {
|
|
271
278
|
let n, r;
|
|
272
279
|
typeof e == `string` ? (n = e, r = t) : r = e;
|
|
273
|
-
let i = se(r?.status || r?.
|
|
280
|
+
let i = se(r?.status || r?.statusCode || r?.cause?.status || r?.cause?.statusCode, 500), a = oe(r?.statusText || r?.statusMessage || r?.cause?.statusText || r?.cause?.statusMessage), o = n || r?.message || r?.cause?.message || r?.statusText || r?.statusMessage || [
|
|
274
281
|
`HTTPError`,
|
|
275
282
|
i,
|
|
276
283
|
a
|
|
@@ -296,7 +303,7 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
296
303
|
...e ? void 0 : this.body
|
|
297
304
|
};
|
|
298
305
|
}
|
|
299
|
-
},
|
|
306
|
+
}, P = Symbol.for(`h3.notFound`), ye = Symbol.for(`h3.handled`), F = class {
|
|
300
307
|
#e;
|
|
301
308
|
#t;
|
|
302
309
|
body;
|
|
@@ -312,13 +319,13 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
312
319
|
get headers() {
|
|
313
320
|
return this.#e ||= new Headers(this.#t?.headers);
|
|
314
321
|
}
|
|
315
|
-
},
|
|
322
|
+
}, I = (e) => (...t) => {
|
|
316
323
|
throw Error(`Headers are frozen (${e} ${t.join(`, `)})`);
|
|
317
|
-
},
|
|
318
|
-
set =
|
|
319
|
-
append =
|
|
320
|
-
delete =
|
|
321
|
-
}, be = new
|
|
324
|
+
}, L = class extends Headers {
|
|
325
|
+
set = I(`set`);
|
|
326
|
+
append = I(`append`);
|
|
327
|
+
delete = I(`delete`);
|
|
328
|
+
}, be = new L({ "content-length": `0` }), R = new L({ "content-type": `application/json;charset=UTF-8` }), z = /\+/g, B = () => P, xe = class {
|
|
322
329
|
config;
|
|
323
330
|
"~middleware";
|
|
324
331
|
"~routes" = [];
|
|
@@ -331,11 +338,11 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
331
338
|
handler(e) {
|
|
332
339
|
let t = this[`~findRoute`](e);
|
|
333
340
|
t && (e.context.params = t.params, e.context.matchedRoute = t.data);
|
|
334
|
-
let n = t?.data.handler ||
|
|
341
|
+
let n = t?.data.handler || B, r = this[`~getMiddleware`](e, t);
|
|
335
342
|
return r.length > 0 ? w(e, r, n) : n(e);
|
|
336
343
|
}
|
|
337
344
|
"~request"(e, t) {
|
|
338
|
-
let n = new
|
|
345
|
+
let n = new M(e, t, this), r;
|
|
339
346
|
try {
|
|
340
347
|
if (this.config.onRequest) {
|
|
341
348
|
let e = this.config.onRequest(n);
|
|
@@ -355,16 +362,16 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
355
362
|
return n ? [...r, ...n] : r;
|
|
356
363
|
}
|
|
357
364
|
}, new TextEncoder();
|
|
358
|
-
})),
|
|
365
|
+
})), V = v((() => {
|
|
359
366
|
Se();
|
|
360
367
|
}));
|
|
361
|
-
|
|
368
|
+
V(), ie();
|
|
362
369
|
var we = (e, t) => {
|
|
363
|
-
let n =
|
|
370
|
+
let n = Te(e, t);
|
|
364
371
|
return new x(typeof n.body == `string` ? n.body : JSON.stringify(n.body, null, 2), n);
|
|
365
372
|
};
|
|
366
|
-
function
|
|
367
|
-
let n = e.unhandled ?? !
|
|
373
|
+
function Te(e, t) {
|
|
374
|
+
let n = e.unhandled ?? !N.isError(e), { status: r = 500, statusText: i = `` } = n ? {} : e;
|
|
368
375
|
if (r === 404) {
|
|
369
376
|
let e = t.url || new URL(t.req.url);
|
|
370
377
|
if (/^\/[^/]/.test(`/`) && !e.pathname.startsWith(`/`)) return {
|
|
@@ -390,32 +397,32 @@ function V(e, t) {
|
|
|
390
397
|
}
|
|
391
398
|
};
|
|
392
399
|
}
|
|
393
|
-
var
|
|
394
|
-
async function
|
|
395
|
-
for (let n of
|
|
396
|
-
let r = await n(e, t, { defaultHandler:
|
|
400
|
+
var Ee = [we];
|
|
401
|
+
async function De(e, t) {
|
|
402
|
+
for (let n of Ee) try {
|
|
403
|
+
let r = await n(e, t, { defaultHandler: Te });
|
|
397
404
|
if (r) return r;
|
|
398
405
|
} catch (e) {
|
|
399
406
|
console.error(e);
|
|
400
407
|
}
|
|
401
408
|
}
|
|
402
409
|
String.fromCharCode;
|
|
403
|
-
var
|
|
404
|
-
function
|
|
410
|
+
var Oe = /%2f/gi;
|
|
411
|
+
function ke(e = ``) {
|
|
405
412
|
try {
|
|
406
413
|
return decodeURIComponent(`` + e);
|
|
407
414
|
} catch {
|
|
408
415
|
return `` + e;
|
|
409
416
|
}
|
|
410
417
|
}
|
|
411
|
-
function
|
|
412
|
-
return
|
|
418
|
+
function Ae(e) {
|
|
419
|
+
return ke(e.replace(Oe, `%252F`));
|
|
413
420
|
}
|
|
414
|
-
var
|
|
421
|
+
var je = /\/$|\/\?|\/#/, Me = /^\.?\//;
|
|
415
422
|
function H(e = ``, t) {
|
|
416
|
-
return t ?
|
|
423
|
+
return t ? je.test(e) : e.endsWith(`/`);
|
|
417
424
|
}
|
|
418
|
-
function
|
|
425
|
+
function Ne(e = ``, t) {
|
|
419
426
|
if (!t) return (H(e) ? e.slice(0, -1) : e) || `/`;
|
|
420
427
|
if (!H(e, !0)) return e || `/`;
|
|
421
428
|
let n = e, r = ``, i = e.indexOf(`#`);
|
|
@@ -423,7 +430,7 @@ function Me(e = ``, t) {
|
|
|
423
430
|
let [a, ...o] = n.split(`?`);
|
|
424
431
|
return ((a.endsWith(`/`) ? a.slice(0, -1) : a) || `/`) + (o.length > 0 ? `?${o.join(`?`)}` : ``) + r;
|
|
425
432
|
}
|
|
426
|
-
function
|
|
433
|
+
function Pe(e = ``, t) {
|
|
427
434
|
if (!t) return e.endsWith(`/`) ? e : e + `/`;
|
|
428
435
|
if (H(e, !0)) return e || `/`;
|
|
429
436
|
let n = e, r = ``, i = e.indexOf(`#`);
|
|
@@ -431,30 +438,30 @@ function Ne(e = ``, t) {
|
|
|
431
438
|
let [a, ...o] = n.split(`?`);
|
|
432
439
|
return a + `/` + (o.length > 0 ? `?${o.join(`?`)}` : ``) + r;
|
|
433
440
|
}
|
|
434
|
-
function
|
|
441
|
+
function Fe(e = ``) {
|
|
435
442
|
return e.startsWith(`/`);
|
|
436
443
|
}
|
|
437
|
-
function
|
|
438
|
-
return
|
|
444
|
+
function Ie(e = ``) {
|
|
445
|
+
return Fe(e) ? e : `/` + e;
|
|
439
446
|
}
|
|
440
|
-
function
|
|
447
|
+
function Le(e) {
|
|
441
448
|
return e && e !== `/`;
|
|
442
449
|
}
|
|
443
|
-
function
|
|
450
|
+
function Re(e, ...t) {
|
|
444
451
|
let n = e || ``;
|
|
445
|
-
for (let e of t.filter((e) =>
|
|
446
|
-
let t = e.replace(
|
|
447
|
-
n =
|
|
452
|
+
for (let e of t.filter((e) => Le(e))) if (n) {
|
|
453
|
+
let t = e.replace(Me, ``);
|
|
454
|
+
n = Pe(n) + t;
|
|
448
455
|
} else n = e;
|
|
449
456
|
return n;
|
|
450
457
|
}
|
|
451
|
-
var
|
|
458
|
+
var ze = ((e) => function(t) {
|
|
452
459
|
for (let [n, r] of Object.entries(e.options || {})) t.res.headers.set(n, r);
|
|
453
460
|
}), U = {
|
|
454
461
|
"/assets/index-BC9qhYL0.js": {
|
|
455
462
|
type: `text/javascript; charset=utf-8`,
|
|
456
463
|
etag: `"2c32-P9M3yJbjRmzrrPeoaEqQI2KbS4E"`,
|
|
457
|
-
mtime: `2026-03-
|
|
464
|
+
mtime: `2026-03-24T10:49:38.806Z`,
|
|
458
465
|
size: 11314,
|
|
459
466
|
path: `../public/assets/index-BC9qhYL0.js`,
|
|
460
467
|
data: `KGZ1bmN0aW9uKCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgbGlua2ApLnJlbExpc3Q7aWYoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cyhgbW9kdWxlcHJlbG9hZGApKXJldHVybjtmb3IobGV0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXWApKW4oZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2ZvcihsZXQgdCBvZiBlKWlmKHQudHlwZT09PWBjaGlsZExpc3RgKWZvcihsZXQgZSBvZiB0LmFkZGVkTm9kZXMpZS50YWdOYW1lPT09YExJTktgJiZlLnJlbD09PWBtb2R1bGVwcmVsb2FkYCYmbihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gdChlKXtsZXQgdD17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJih0LmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHQucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksZS5jcm9zc09yaWdpbj09PWB1c2UtY3JlZGVudGlhbHNgP3QuY3JlZGVudGlhbHM9YGluY2x1ZGVgOmUuY3Jvc3NPcmlnaW49PT1gYW5vbnltb3VzYD90LmNyZWRlbnRpYWxzPWBvbWl0YDp0LmNyZWRlbnRpYWxzPWBzYW1lLW9yaWdpbmAsdH1mdW5jdGlvbiBuKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7bGV0IG49dChlKTtmZXRjaChlLmhyZWYsbil9fSkoKTt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgaWNvbi1zdW5gKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpY29uLW1vb25gKTtmdW5jdGlvbiBuKCl7bGV0IG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oYHRoZW1lYCkscj1uPT09YGRhcmtgfHwhbiYmd2luZG93Lm1hdGNoTWVkaWEoYChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylgKS5tYXRjaGVzO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGBkYXJrYCxyKSxlLmNsYXNzTGlzdC50b2dnbGUoYGhpZGRlbmAsIXIpLHQuY2xhc3NMaXN0LnRvZ2dsZShgaGlkZGVuYCxyKX1mdW5jdGlvbiByKCl7bigpLHdpbmRvdy5tYXRjaE1lZGlhKGAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCwoKT0+e2xvY2FsU3RvcmFnZS5nZXRJdGVtKGB0aGVtZWApfHxuKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdGhlbWUtdG9nZ2xlYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLCgpPT57bGV0IGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhgZGFya2ApO2xvY2FsU3RvcmFnZS5zZXRJdGVtKGB0aGVtZWAsZT9gbGlnaHRgOmBkYXJrYCksbigpfSl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBlLnBhdGg9PT10PyEwOmUuY2hpbGRyZW4/LnNvbWUoZT0+aShlLHQpKT8/ITF9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLm1hcChlPT57bGV0IG49ZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCxyPW4/YShlLmNoaWxkcmVuLHQrMSk6YGAsaT0xMit0KjEyO3JldHVybmAKICAgICAgICA8bGk+CiAgICAgICAgICAke2UucGFnZSE9PSExJiYhKG4mJmUuY2hpbGRyZW4/LlswXT8ucGF0aD09PWUucGF0aCk/YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgY2xhc3M9Im5hdi1saW5rIGJsb2NrIHB5LTEuNSB0ZXh0LXNtICR7bj9gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDBgOmB0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMGB9IGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS0xMDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgc3R5bGU9InBhZGRpbmctbGVmdDogJHtpfXB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4IgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbgogICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAgY3Vyc29yLWRlZmF1bHQiCiAgICAgICAgICAgIHN0eWxlPSJwYWRkaW5nLWxlZnQ6ICR7aX1weDsgcGFkZGluZy1yaWdodDogMTJweCI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvc3Bhbj5gfQogICAgICAgICAgJHtyP2A8dWwgY2xhc3M9Im10LTAuNSI+JHtyfTwvdWw+YDpgYH0KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG49ZS5zb21lKGU9PmkoZSx0KSkscj0hMDtyZXR1cm4gZS5tYXAoZT0+e2lmKCEoZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCkpcmV0dXJuYDxsaT4ke2UucGFnZT09PSExP2A8c3BhbiBjbGFzcz0iYmxvY2sgcHktMS41IHB4LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCBjdXJzb3ItZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAke2UudGl0bGV9CiAgICAgICAgICAgICAgPC9zcGFuPmA6YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgICAgIGNsYXNzPSJuYXYtbGluayBibG9jayBweS0xLjUgcHgtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgICAgIGRhdGEtcGF0aD0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgICAgICA8L2E+YH08L2xpPmA7bGV0IG89aShlLHQpfHwhbiYmcjtyPSExO2xldCBzPWUucGFnZSE9PSExJiZlLmNoaWxkcmVuPy5bMF0/LnBhdGghPT1lLnBhdGgsYz1gPHN2ZyBjbGFzcz0ibmF2LWNoZXZyb24gdy00IGgtNCB0ZXh0LWdyYXktNDAwIHRyYW5zaXRpb24tdHJhbnNmb3JtICR7bz9gcm90YXRlLTkwYDpgYH0iIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz5gLGw9cz9gPGEgaHJlZj0iJHtlLnBhdGh9IgogICAgICAgICAgICBjbGFzcz0ibmF2LWxpbmsgZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwIHRyYW5zaXRpb24tY29sb3JzIgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbiBjbGFzcz0iZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIj4KICAgICAgICAgICAgJHtlLnRpdGxlfQogICAgICAgICAgPC9zcGFuPmAsdT1hKGUuY2hpbGRyZW4sMSk7cmV0dXJuYAogICAgICAgIDxsaSBkYXRhLXNlY3Rpb249IiR7ZS5wYXRofSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBweC0zIHJvdW5kZWQtbWQgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi10b2dnbGUgcC0wLjUgLW1sLTEgbXItMSIgZGF0YS1zZWN0aW9uPSIke2UucGF0aH0iIGFyaWEtbGFiZWw9IlRvZ2dsZSBzZWN0aW9uIj4KICAgICAgICAgICAgICAke2N9CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAke2x9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx1bCBjbGFzcz0ibmF2LXNlY3Rpb24gbXQtMC41ICR7bz9gYDpgaGlkZGVuYH0iIGRhdGEtc2VjdGlvbj0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgJHt1fQogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBzKGUpe2ZvcihsZXQgdCBvZiBlKXtpZih0LnBhZ2UhPT0hMSlyZXR1cm4gdC5wYXRoO2lmKHQuY2hpbGRyZW4pe2xldCBlPXModC5jaGlsZHJlbik7aWYoZSlyZXR1cm4gZX19fXZhciBjPVtdO2Z1bmN0aW9uIGwoZSx0KXtjPXQ7bGV0IG49bG9jYXRpb24ucGF0aG5hbWU7ZS5pbm5lckhUTUw9dC5sZW5ndGg/YDx1bCBjbGFzcz0ic3BhY2UteS0wLjUiPiR7byh0LG4pfTwvdWw+YDpgPHAgY2xhc3M9InB4LTMgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS00MDAiPk5vIHBhZ2VzIGxvYWRlZDwvcD5gLGUuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9PntsZXQgbj10LnRhcmdldCxyPW4uY2xvc2VzdChgLm5hdi10b2dnbGVgKTtpZihyKXt1KGUsci5kYXRhc2V0LnNlY3Rpb24pO3JldHVybn1sZXQgaT1uLmNsb3Nlc3QoYGxpW2RhdGEtc2VjdGlvbl1gKTtpJiYhbi5jbG9zZXN0KGAubmF2LWxpbmtgKSYmdShlLGkuZGF0YXNldC5zZWN0aW9uKX0pfWZ1bmN0aW9uIHUoZSx0KXtsZXQgbj1lLnF1ZXJ5U2VsZWN0b3IoYHVsLm5hdi1zZWN0aW9uW2RhdGEtc2VjdGlvbj0iJHt0fSJdYCk7biYmKG4uY2xhc3NMaXN0LmNvbnRhaW5zKGBoaWRkZW5gKT8oZS5xdWVyeVNlbGVjdG9yQWxsKGB1bC5uYXYtc2VjdGlvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LmFkZChgaGlkZGVuYCl9KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtY2hldnJvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LnJlbW92ZShgcm90YXRlLTkwYCl9KSxuLmNsYXNzTGlzdC5yZW1vdmUoYGhpZGRlbmApLGUucXVlcnlTZWxlY3RvcihgLm5hdi10b2dnbGVbZGF0YS1zZWN0aW9uPSIke3R9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKToobi5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHt0fSJdIC5uYXYtY2hldnJvbmApPy5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKSkpfWZ1bmN0aW9uIGQoZSx0KXtlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtbGlua2ApLmZvckVhY2goZT0+e2xldCBuPWUuZ2V0QXR0cmlidXRlKGBkYXRhLXBhdGhgKT09PXQ7ZS5jbGFzc0xpc3QudG9nZ2xlKGBuYXYtYWN0aXZlYCxuKSxlLmNsYXNzTGlzdC50b2dnbGUoYGZvbnQtbWVkaXVtYCxuKX0pO2xldCBuPWMuZmluZChlPT5pKGUsdCkpO24/LmNoaWxkcmVuPy5sZW5ndGgmJihlLnF1ZXJ5U2VsZWN0b3JBbGwoYHVsLm5hdi1zZWN0aW9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKX0pLGUucXVlcnlTZWxlY3RvckFsbChgLm5hdi1jaGV2cm9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKX0pLGUucXVlcnlTZWxlY3RvcihgdWwubmF2LXNlY3Rpb25bZGF0YS1zZWN0aW9uPSIke24ucGF0aH0iXWApPy5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHtuLnBhdGh9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKX1mdW5jdGlvbiBmKGUsdCl7ZS5pbm5lckhUTUw9YDxhcnRpY2xlIGNsYXNzPSJwcm9zZSBwcm9zZS1ncmF5IG1heC13LW5vbmUiPiR7dH08L2FydGljbGU+YDtmb3IobGV0IHQgb2YgZS5xdWVyeVNlbGVjdG9yQWxsKGBhW2hyZWZdYCkpe2xldCBuPXQuZ2V0QXR0cmlidXRlKGBocmVmYCk7bi5zdGFydHNXaXRoKGAvYCk/dC5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsZT0+e2UucHJldmVudERlZmF1bHQoKSxoaXN0b3J5LnB1c2hTdGF0ZShudWxsLGBgLG4pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KGBwb3BzdGF0ZWApKX0pOm4uc3RhcnRzV2l0aChgI2ApP3QuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9Pnt0LnByZXZlbnREZWZhdWx0KCk7bGV0IHI9bi5zbGljZSgxKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHIpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHIpfSJdYCk7aSYmKGkuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOmBzbW9vdGhgfSksaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxgYCxuKSl9KTovXmh0dHBzPzpcL1wvLy50ZXN0KG4pJiYodC50YXJnZXQ9YF9ibGFua2AsdC5yZWw9YG5vb3BlbmVyIG5vcmVmZXJyZXJgKX19YXN5bmMgZnVuY3Rpb24gcChlLHQpe2YoZSxgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IG49YXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvcGFnZT9wYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHQpfWApKS5qc29uKCk7aWYobi5lcnJvcilmKGUsYDxwIGNsYXNzPSJ0ZXh0LXJlZC01MDAiPiR7bi5lcnJvcn08L3A+YCk7ZWxzZXtmKGUsbi5odG1sKTtsZXQgdD1sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO2lmKHQpe2xldCBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHQpfSJdYCk7biYmbi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6YHNtb290aGB9KX19fXZhciBtPVtdO2Z1bmN0aW9uIGgoZSl7bT1lfWZ1bmN0aW9uIGcoKXtsZXQgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VhcmNoLXRyaWdnZXJgKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtbW9kYWxgKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtYmFja2Ryb3BgKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtaW5wdXRgKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtcmVzdWx0c2ApLGEsbz0tMSxzPVtdO2UuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PnsoZS5tZXRhS2V5fHxlLmN0cmxLZXkpJiZlLmtleT09PWBrYCYmKGUucHJldmVudERlZmF1bHQoKSxjKCkpfSksbi5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsbCksci5hZGRFdmVudExpc3RlbmVyKGBpbnB1dGAsKCk9PntjbGVhclRpbWVvdXQoYSk7bGV0IGU9ci52YWx1ZS50cmltKCk7aWYoZS5sZW5ndGg8Mil7bz0tMSxzPVtdLHAoKTtyZXR1cm59YT1zZXRUaW1lb3V0KCgpPT51KGUpLDIwMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PntlLmtleT09PWBBcnJvd0Rvd25gPyhlLnByZXZlbnREZWZhdWx0KCksZihvKzEpKTplLmtleT09PWBBcnJvd1VwYD8oZS5wcmV2ZW50RGVmYXVsdCgpLGYoby0xKSk6ZS5rZXk9PT1gRW50ZXJgJiZvPj0wPyhlLnByZXZlbnREZWZhdWx0KCksaChzW29dLnBhdGgpKTplLmtleT09PWBFc2NhcGVgJiZsKCl9KTtmdW5jdGlvbiBjKCl7dC5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxyLnZhbHVlPWBgLG89LTEscz1bXSxwKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5yLmZvY3VzKCkpfWZ1bmN0aW9uIGwoKXt0LmNsYXNzTGlzdC5hZGQoYGhpZGRlbmApLHIudmFsdWU9YGAscz1bXSxvPS0xfWFzeW5jIGZ1bmN0aW9uIHUoZSl7cz0oYXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvc2VhcmNoP3E9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9YCkpLmpzb24oKSkucmVzdWx0cyxvPXMubGVuZ3RoPjA/MDotMSxkKCl9ZnVuY3Rpb24gZCgpe2lmKHMubGVuZ3RoPT09MCl7aS5pbm5lckhUTUw9YDxwIGNsYXNzPSJweC00IHB5LTggdGV4dC1zbSB0ZXh0LWdyYXktNDAwIHRleHQtY2VudGVyIj5ObyByZXN1bHRzIGZvdW5kPC9wPmA7cmV0dXJufWkuaW5uZXJIVE1MPXMubWFwKChlLHQpPT5gCiAgICAgIDxhIGhyZWY9IiR7ZS5wYXRofSIgY2xhc3M9InNlYXJjaC1pdGVtIGZsZXggaXRlbXMtc3RhcnQgZ2FwLTMgcHgtNCBweS0zIGJvcmRlci1iIGJvcmRlci1ncmF5LTEwMCBkYXJrOmJvcmRlci1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgdHJhbnNpdGlvbi1jb2xvcnMgJHt0PT09bz9gYmctZ3JheS01MCBkYXJrOmJnLWdyYXktODAwYDpgYH0iIGRhdGEtaW5kZXg9IiR7dH0iPgogICAgICAgIDxzdmcgY2xhc3M9InNpemUtNCBtdC0wLjUgc2hyaW5rLTAgdGV4dC1ncmF5LTQwMCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMTkuNSAxNC4yNXYtMi42MjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVoLTEuNUExLjEyNSAxLjEyNSAwIDAgMSAxMy41IDcuMTI1di0xLjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVIOC4yNW0yLjI1IDBINS42MjVjLS42MjEgMC0xLjEyNS41MDQtMS4xMjUgMS4xMjV2MTcuMjVjMCAuNjIxLjUwNCAxLjEyNSAxLjEyNSAxLjEyNWgxMi43NWMuNjIxIDAgMS4xMjUtLjUwNCAxLjEyNS0xLjEyNVYxMS4yNWE5IDkgMCAwIDAtOS05WiIgLz4KICAgICAgICA8L3N2Zz4KICAgICAgICA8ZGl2IGNsYXNzPSJtaW4tdy0wIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAiPiR7dihlLnRpdGxlKX08L2Rpdj4KICAgICAgICAgICR7ZS5zbmlwcGV0c1swXT9gPGRpdiBjbGFzcz0idGV4dC14cyB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMCBtdC0wLjUgbGluZS1jbGFtcC0yIj4ke3YoZS5zbmlwcGV0c1swXSl9PC9kaXY+YDpgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9hPmApLmpvaW4oYGApLGkucXVlcnlTZWxlY3RvckFsbChgLnNlYXJjaC1pdGVtYCkuZm9yRWFjaChlPT57ZS5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsKCk9PmwoKSl9KX1mdW5jdGlvbiBmKGUpe3MubGVuZ3RoIT09MCYmKG89TWF0aC5tYXgoMCxNYXRoLm1pbihlLHMubGVuZ3RoLTEpKSxkKCksaS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pbmRleD0iJHtvfSJdYCk/LnNjcm9sbEludG9WaWV3KHtibG9jazpgbmVhcmVzdGB9KSl9ZnVuY3Rpb24gcCgpe2xldCBlPV8obSk7aWYoZS5sZW5ndGg9PT0wKXtpLmlubmVySFRNTD1gPHAgY2xhc3M9InB4LTQgcHktOCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgdGV4dC1jZW50ZXIiPlR5cGUgdG8gc2VhcmNo4oCmPC9wPmA7cmV0dXJufXM9ZS5tYXAoZT0+KHtwYXRoOmUucGF0aCx0aXRsZTplLnRpdGxlLHNuaXBwZXRzOltdfSkpLG89LTEsaS5pbm5lckhUTUw9cy5tYXAoKGUsdCk9PmAKICAgICAgPGEgaHJlZj0iJHtlLnBhdGh9IiBjbGFzcz0ic2VhcmNoLWl0ZW0gZmxleCBpdGVtcy1zdGFydCBnYXAtMyBweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktODAwIGhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyIgZGF0YS1pbmRleD0iJHt0fSI+CiAgICAgICAgPHN2ZyBjbGFzcz0ic2l6ZS00IG10LTAuNSBzaHJpbmstMCB0ZXh0LWdyYXktNDAwIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xOS41IDE0LjI1di0yLjYyNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NWgtMS41QTEuMTI1IDEuMTI1IDAgMCAxIDEzLjUgNy4xMjV2LTEuNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NUg4LjI1bTIuMjUgMEg1LjYyNWMtLjYyMSAwLTEuMTI1LjUwNC0xLjEyNSAxLjEyNXYxNy4yNWMwIC42MjEuNTA0IDEuMTI1IDEuMTI1IDEuMTI1aDEyLjc1Yy42MjEgMCAxLjEyNS0uNTA0IDEuMTI1LTEuMTI1VjExLjI1YTkgOSAwIDAgMC05LTlaIiAvPgogICAgICAgIDwvc3ZnPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LTAiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCI+JHt2KGUudGl0bGUpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2E+YCkuam9pbihgYCksaS5xdWVyeVNlbGVjdG9yQWxsKGAuc2VhcmNoLWl0ZW1gKS5mb3JFYWNoKGU9PntlLmFkZEV2ZW50TGlzdGVuZXIoYGNsaWNrYCx0PT57dC5wcmV2ZW50RGVmYXVsdCgpO2xldCBuPU51bWJlcihlLmRhdGFzZXQuaW5kZXgpO2goc1tuXS5wYXRoKX0pfSl9ZnVuY3Rpb24gaChlKXtsb2NhdGlvbi5oYXNoPWUsbCgpfX1mdW5jdGlvbiBfKGUpe2xldCB0PVtdO2ZvcihsZXQgbiBvZiBlKW4ucGFnZSE9PSExJiZ0LnB1c2goe3BhdGg6bi5wYXRoLHRpdGxlOm4udGl0bGV9KSxuLmNoaWxkcmVuJiZ0LnB1c2goLi4uXyhuLmNoaWxkcmVuKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5yZXBsYWNlKC8mL2csYCZhbXA7YCkucmVwbGFjZSgvPC9nLGAmbHQ7YCkucmVwbGFjZSgvPi9nLGAmZ3Q7YCkucmVwbGFjZSgvIi9nLGAmcXVvdDtgKX12YXIgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2lkZWJhcmApLGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvbnRlbnRgKTtyKCksZygpO2Z1bmN0aW9uIHgoZSl7aGlzdG9yeS5wdXNoU3RhdGUobnVsbCxgYCxlKSxTKCl9YXN5bmMgZnVuY3Rpb24gUygpe2xldCBlPWxvY2F0aW9uLnBhdGhuYW1lO2lmKGU9PT1gL2Ape2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPlNlbGVjdCBhIHBhZ2UgZnJvbSB0aGUgc2lkZWJhci48L3A+YCk7cmV0dXJufWQoeSxlKSxhd2FpdCBwKGIsZSl9YXN5bmMgZnVuY3Rpb24gQygpe2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IGU9KGF3YWl0KGF3YWl0IGZldGNoKGAvYXBpL21ldGFgKSkuanNvbigpKS50b2M7aWYobCh5LGUpLGgoZSkseS5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsZT0+e2xldCB0PWUudGFyZ2V0LmNsb3Nlc3QoYGEubmF2LWxpbmtgKTt0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLHgodC5nZXRBdHRyaWJ1dGUoYGRhdGEtcGF0aGApKSl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgcG9wc3RhdGVgLFMpLGxvY2F0aW9uLnBhdGhuYW1lPT09YC9gKXtsZXQgdD1zKGUpO2lmKHQpe3godCk7cmV0dXJufX1TKCl9QygpOw==`
|
|
@@ -462,56 +469,56 @@ var Re = ((e) => function(t) {
|
|
|
462
469
|
"/assets/logo-BLkVGWak.svg": {
|
|
463
470
|
type: `image/svg+xml`,
|
|
464
471
|
etag: `"557-HYXN/qI1kFu3DGsCSw4J8HIDoeU"`,
|
|
465
|
-
mtime: `2026-03-
|
|
472
|
+
mtime: `2026-03-24T10:49:38.807Z`,
|
|
466
473
|
size: 1367,
|
|
467
474
|
path: `../public/assets/logo-BLkVGWak.svg`,
|
|
468
475
|
data: `PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgPCEtLSBCb2R5OiByb3VuZGVkIHJlY3RhbmdsZSAoZG9jdW1lbnQgc2hhcGUpIC0tPgogIDxyZWN0IHg9IjQwIiB5PSIzMCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxNTAiIHJ4PSIxOCIgcnk9IjE4IiBmaWxsPSIjMkIyRDQyIi8+CgogIDwhLS0gRG9jdW1lbnQgbGluZXMgKG1hcmtkb3duIGZlZWwpIC0tPgogIDxyZWN0IHg9IjYyIiB5PSI3MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjYiIHJ4PSIzIiBmaWxsPSIjOEQ5OUFFIi8+CiAgPHJlY3QgeD0iNjIiIHk9Ijg2IiB3aWR0aD0iNzYiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTAyIiB3aWR0aD0iNjIiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTE4IiB3aWR0aD0iNzAiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTM0IiB3aWR0aD0iNDAiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KCiAgPCEtLSBIZWFkaW5nIGhhc2ggbWFyayAobWFya2Rvd24gIykgLS0+CiAgPHRleHQgeD0iNjIiIHk9IjYwIiBmb250LWZhbWlseT0ibW9ub3NwYWNlIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxOCIgZmlsbD0iI0VERjJGNCI+IzwvdGV4dD4KCiAgPCEtLSBFeWVzIC0tPgogIDxjaXJjbGUgY3g9Ijc4IiBjeT0iMTcyIiByPSI1IiBmaWxsPSIjRUYyMzNDIi8+CiAgPGNpcmNsZSBjeD0iMTIyIiBjeT0iMTcyIiByPSI1IiBmaWxsPSIjRUYyMzNDIi8+CgogIDwhLS0gVGVldGggKHppbGxhIGJpdGUgb24gYm90dG9tKSAtLT4KICA8cG9seWdvbiBwb2ludHM9IjY4LDE4MCA3NCwxOTIgODAsMTgwIiBmaWxsPSIjRURGMkY0Ii8+CiAgPHBvbHlnb24gcG9pbnRzPSI4OCwxODAgOTQsMTkyIDEwMCwxODAiIGZpbGw9IiNFREYyRjQiLz4KICA8cG9seWdvbiBwb2ludHM9IjEwOCwxODAgMTE0LDE5MiAxMjAsMTgwIiBmaWxsPSIjRURGMkY0Ii8+CiAgPHBvbHlnb24gcG9pbnRzPSIxMjgsMTgwIDEzNCwxOTIgMTQwLDE4MCIgZmlsbD0iI0VERjJGNCIvPgoKICA8IS0tIFNwaWtlcyBvbiB0b3AgKHppbGxhIGhvcm5zKSAtLT4KICA8cG9seWdvbiBwb2ludHM9IjcwLDMwIDc4LDEwIDg2LDMwIiBmaWxsPSIjMkIyRDQyIi8+CiAgPHBvbHlnb24gcG9pbnRzPSI5MiwzMCAxMDAsNiAxMDgsMzAiIGZpbGw9IiMyQjJENDIiLz4KICA8cG9seWdvbiBwb2ludHM9IjExNCwzMCAxMjIsMTAgMTMwLDMwIiBmaWxsPSIjMkIyRDQyIi8+Cjwvc3ZnPgo=`
|
|
469
476
|
}
|
|
470
477
|
};
|
|
471
|
-
function
|
|
478
|
+
function Be(e) {
|
|
472
479
|
if (U[e]) return U[e]._data ? U[e]._data : U[e].data ? (U[e]._data = Uint8Array.from(atob(U[e].data), (e) => e.charCodeAt(0)), U[e]._data) : U[e].data;
|
|
473
480
|
}
|
|
474
|
-
var
|
|
475
|
-
function
|
|
481
|
+
var Ve = {};
|
|
482
|
+
function He(e = ``) {
|
|
476
483
|
if (U[e]) return !0;
|
|
477
|
-
for (let t in
|
|
484
|
+
for (let t in Ve) if (e.startsWith(t)) return !0;
|
|
478
485
|
return !1;
|
|
479
486
|
}
|
|
480
|
-
function
|
|
487
|
+
function Ue(e) {
|
|
481
488
|
return U[e];
|
|
482
489
|
}
|
|
483
|
-
|
|
484
|
-
var
|
|
490
|
+
V();
|
|
491
|
+
var We = new Set([`HEAD`, `GET`]), Ge = {
|
|
485
492
|
gzip: `.gz`,
|
|
486
493
|
br: `.br`,
|
|
487
494
|
zstd: `.zst`
|
|
488
|
-
},
|
|
489
|
-
if (e.req.method && !
|
|
490
|
-
let t =
|
|
491
|
-
for (let e of r) for (let r of [t + e,
|
|
492
|
-
let e =
|
|
495
|
+
}, Ke = T((e) => {
|
|
496
|
+
if (e.req.method && !We.has(e.req.method)) return;
|
|
497
|
+
let t = Ae(Ie(Ne(e.url.pathname))), n, r = [...(e.req.headers.get(`accept-encoding`) || ``).split(`,`).map((e) => Ge[e.trim()]).filter(Boolean).sort(), ``];
|
|
498
|
+
for (let e of r) for (let r of [t + e, Re(t, `index.html` + e)]) {
|
|
499
|
+
let e = Ue(r);
|
|
493
500
|
if (e) {
|
|
494
501
|
n = e, t = r;
|
|
495
502
|
break;
|
|
496
503
|
}
|
|
497
504
|
}
|
|
498
505
|
if (!n) {
|
|
499
|
-
if (
|
|
506
|
+
if (He(t)) throw e.res.headers.delete(`Cache-Control`), new N({ status: 404 });
|
|
500
507
|
return;
|
|
501
508
|
}
|
|
502
509
|
if (r.length > 1 && e.res.headers.append(`Vary`, `Accept-Encoding`), e.req.headers.get(`if-none-match`) === n.etag) return e.res.status = 304, e.res.statusText = `Not Modified`, ``;
|
|
503
510
|
let i = e.req.headers.get(`if-modified-since`), a = new Date(n.mtime);
|
|
504
|
-
return i && n.mtime && new Date(i) >= a ? (e.res.status = 304, e.res.statusText = `Not Modified`, ``) : (n.type && e.res.headers.set(`Content-Type`, n.type), n.etag && !e.res.headers.has(`ETag`) && e.res.headers.set(`ETag`, n.etag), n.mtime && !e.res.headers.has(`Last-Modified`) && e.res.headers.set(`Last-Modified`, a.toUTCString()), n.encoding && !e.res.headers.has(`Content-Encoding`) && e.res.headers.set(`Content-Encoding`, n.encoding), n.size > 0 && !e.res.headers.has(`Content-Length`) && e.res.headers.set(`Content-Length`, n.size.toString()),
|
|
511
|
+
return i && n.mtime && new Date(i) >= a ? (e.res.status = 304, e.res.statusText = `Not Modified`, ``) : (n.type && e.res.headers.set(`Content-Type`, n.type), n.etag && !e.res.headers.has(`ETag`) && e.res.headers.set(`ETag`, n.etag), n.mtime && !e.res.headers.has(`Last-Modified`) && e.res.headers.set(`Last-Modified`, a.toUTCString()), n.encoding && !e.res.headers.has(`Content-Encoding`) && e.res.headers.set(`Content-Encoding`, n.encoding), n.size > 0 && !e.res.headers.has(`Content-Length`) && e.res.headers.set(`Content-Length`, n.size.toString()), Be(t));
|
|
505
512
|
}), W = v((() => {
|
|
506
|
-
|
|
513
|
+
V();
|
|
507
514
|
}));
|
|
508
|
-
function
|
|
515
|
+
function G(e, t, n) {
|
|
509
516
|
let r = [];
|
|
510
517
|
for (let i of e) r.push({
|
|
511
518
|
entry: i,
|
|
512
519
|
depth: t,
|
|
513
520
|
filePath: n.get(i.path)
|
|
514
|
-
}), i.children && r.push(...
|
|
521
|
+
}), i.children && r.push(...G(i.children, t + 1, n));
|
|
515
522
|
return r;
|
|
516
523
|
}
|
|
517
524
|
function qe(e, t) {
|
|
@@ -550,7 +557,7 @@ var Ye, Xe = v((() => {
|
|
|
550
557
|
}
|
|
551
558
|
async load() {
|
|
552
559
|
let { tree: e, fileMap: t } = await this.source.load();
|
|
553
|
-
this.tree = e, this._fileMap = t, this.flat =
|
|
560
|
+
this.tree = e, this._fileMap = t, this.flat = G(this.tree, 0, this._fileMap), this._contentCache.clear();
|
|
554
561
|
}
|
|
555
562
|
async reload() {
|
|
556
563
|
return this.load();
|
|
@@ -611,8 +618,8 @@ var Ye, Xe = v((() => {
|
|
|
611
618
|
return [...n].sort((e, t) => e - t);
|
|
612
619
|
}
|
|
613
620
|
};
|
|
614
|
-
})),
|
|
615
|
-
|
|
621
|
+
})), K, q = v((() => {
|
|
622
|
+
K = class {};
|
|
616
623
|
}));
|
|
617
624
|
function Ze(e) {
|
|
618
625
|
let t = e.endsWith(`.md`) ? e.slice(0, -3) : e, n = t.endsWith(`.draft`);
|
|
@@ -755,8 +762,8 @@ function lt(e, t) {
|
|
|
755
762
|
e?.children && lt(n.children, e.children);
|
|
756
763
|
}
|
|
757
764
|
}
|
|
758
|
-
var
|
|
759
|
-
at(),
|
|
765
|
+
var J, Y = v((() => {
|
|
766
|
+
at(), q(), J = class extends K {
|
|
760
767
|
dir;
|
|
761
768
|
constructor(e) {
|
|
762
769
|
super(), this.dir = e;
|
|
@@ -773,7 +780,7 @@ var q, J = v((() => {
|
|
|
773
780
|
}
|
|
774
781
|
};
|
|
775
782
|
})), ut, dt = v((() => {
|
|
776
|
-
|
|
783
|
+
q(), Y(), ut = class extends K {
|
|
777
784
|
src;
|
|
778
785
|
options;
|
|
779
786
|
_fs;
|
|
@@ -796,7 +803,7 @@ var q, J = v((() => {
|
|
|
796
803
|
break;
|
|
797
804
|
}
|
|
798
805
|
}
|
|
799
|
-
return this._fs = new
|
|
806
|
+
return this._fs = new J(i), this._fs.load();
|
|
800
807
|
}
|
|
801
808
|
async readContent(e) {
|
|
802
809
|
if (!this._fs) throw Error(`DocsSourceGit: call load() before readContent()`);
|
|
@@ -839,19 +846,14 @@ function mt(e) {
|
|
|
839
846
|
if (r && !/^(package|settings|signup|login|org|search)$/.test(r[1])) return r[1];
|
|
840
847
|
}
|
|
841
848
|
var ht = v((() => {}));
|
|
842
|
-
function gt(e
|
|
843
|
-
if (e.includes(`text/html`) || e.includes(`application/xhtml`)) return !0;
|
|
844
|
-
let n = t.trimStart();
|
|
845
|
-
return n.startsWith(`<!`) || n.startsWith(`<html`);
|
|
846
|
-
}
|
|
847
|
-
function _t(e) {
|
|
849
|
+
function gt(e) {
|
|
848
850
|
try {
|
|
849
851
|
return new URL(e).hostname;
|
|
850
852
|
} catch {
|
|
851
853
|
return e;
|
|
852
854
|
}
|
|
853
855
|
}
|
|
854
|
-
function
|
|
856
|
+
function _t(e, t, n, r) {
|
|
855
857
|
let i = e.split(`
|
|
856
858
|
`), a = [], o = ``, s = ``, c, l = 0, u = 0;
|
|
857
859
|
for (let e of i) {
|
|
@@ -866,7 +868,7 @@ function vt(e, t, n, r) {
|
|
|
866
868
|
}
|
|
867
869
|
if (r.startsWith(`## `)) {
|
|
868
870
|
c = {
|
|
869
|
-
slug:
|
|
871
|
+
slug: vt(r.slice(3).trim()),
|
|
870
872
|
path: `/_section/${l}`,
|
|
871
873
|
title: r.slice(3).trim(),
|
|
872
874
|
order: l++,
|
|
@@ -898,20 +900,20 @@ function vt(e, t, n, r) {
|
|
|
898
900
|
let d = {
|
|
899
901
|
slug: ``,
|
|
900
902
|
path: `/`,
|
|
901
|
-
title: o ||
|
|
903
|
+
title: o || gt(t),
|
|
902
904
|
order: 0,
|
|
903
905
|
...s ? { description: s } : {},
|
|
904
906
|
...a.length > 0 ? { children: a } : {}
|
|
905
907
|
};
|
|
906
908
|
return n.set(`/`, `/`), r.set(`/`, e), [d];
|
|
907
909
|
}
|
|
908
|
-
function
|
|
910
|
+
function vt(e) {
|
|
909
911
|
return e.toLowerCase().replace(/[^a-z\d]+/g, `-`).replace(/^-|-$/g, ``);
|
|
910
912
|
}
|
|
911
|
-
function
|
|
913
|
+
function yt(e, t) {
|
|
912
914
|
let n = /* @__PURE__ */ new Set(), r = [], i = /* @__PURE__ */ new Set(), a = 0, o = /\[([^\]]+)]\(([^)]+)\)/g, s;
|
|
913
915
|
for (; (s = o.exec(e)) !== null;) {
|
|
914
|
-
let e = s[1], o = s[2], c =
|
|
916
|
+
let e = s[1], o = s[2], c = bt(o, t);
|
|
915
917
|
if (!c) continue;
|
|
916
918
|
let l = c.pathname.replace(/\/+$/, ``) || `/`, u = /\/index\.md$/i.test(l) || l.endsWith(`/index`);
|
|
917
919
|
if (l = l.replace(/\/index\.md$/i, ``).replace(/\/index$/, ``).replace(/\.md$/i, ``), l ||= `/`, l === `/` || n.has(l)) continue;
|
|
@@ -929,7 +931,7 @@ function bt(e, t) {
|
|
|
929
931
|
tocPaths: i
|
|
930
932
|
};
|
|
931
933
|
}
|
|
932
|
-
function
|
|
934
|
+
function bt(e, t) {
|
|
933
935
|
try {
|
|
934
936
|
let n = new URL(t), r = new URL(e, t);
|
|
935
937
|
return r.origin !== n.origin || e.startsWith(`#`) || /\.(png|jpg|jpeg|gif|svg|css|js|ico|woff2?)$/i.test(r.pathname) ? void 0 : r;
|
|
@@ -937,8 +939,8 @@ function xt(e, t) {
|
|
|
937
939
|
return;
|
|
938
940
|
}
|
|
939
941
|
}
|
|
940
|
-
var
|
|
941
|
-
|
|
942
|
+
var xt, St = v((() => {
|
|
943
|
+
q(), ht(), xt = class extends K {
|
|
942
944
|
url;
|
|
943
945
|
options;
|
|
944
946
|
_contentCache = /* @__PURE__ */ new Map();
|
|
@@ -960,9 +962,9 @@ var St, Ct = v((() => {
|
|
|
960
962
|
let n = {
|
|
961
963
|
slug: ``,
|
|
962
964
|
path: `/`,
|
|
963
|
-
title: parseMeta(t).title ||
|
|
965
|
+
title: parseMeta(t).title || gt(this.url),
|
|
964
966
|
order: 0
|
|
965
|
-
}, { entries: r, tocPaths: i } =
|
|
967
|
+
}, { entries: r, tocPaths: i } = yt(t, this.url);
|
|
966
968
|
if (r.length > 0) {
|
|
967
969
|
n.children = r;
|
|
968
970
|
for (let e of r) this._fileMap.set(e.path, e.path);
|
|
@@ -990,7 +992,7 @@ var St, Ct = v((() => {
|
|
|
990
992
|
} catch {
|
|
991
993
|
return;
|
|
992
994
|
}
|
|
993
|
-
if (t.trimStart().startsWith(`#`)) return
|
|
995
|
+
if (t.trimStart().startsWith(`#`)) return _t(t, e, this._fileMap, this._contentCache);
|
|
994
996
|
}
|
|
995
997
|
async readContent(e) {
|
|
996
998
|
let t = this._contentCache.get(e);
|
|
@@ -1005,7 +1007,7 @@ var St, Ct = v((() => {
|
|
|
1005
1007
|
if (!t.has(e.path)) return;
|
|
1006
1008
|
let i = `${r}${e.path}`, a = await this._fetch(i);
|
|
1007
1009
|
this._contentCache.set(e.path, a);
|
|
1008
|
-
let { entries: o, tocPaths: s } =
|
|
1010
|
+
let { entries: o, tocPaths: s } = yt(a, i);
|
|
1009
1011
|
if (o.length > 0) {
|
|
1010
1012
|
e.children = o;
|
|
1011
1013
|
for (let e of o) this._fileMap.set(e.path, e.path);
|
|
@@ -1041,17 +1043,11 @@ var St, Ct = v((() => {
|
|
|
1041
1043
|
} catch (t) {
|
|
1042
1044
|
return `# Fetch Error\n\nFailed to fetch \`${e}\`\n\n> ${t instanceof Error ? t.message : String(t)}`;
|
|
1043
1045
|
}
|
|
1044
|
-
|
|
1045
|
-
let n = t.headers.get(`content-type`) || ``, r = await t.text();
|
|
1046
|
-
if (gt(n, r)) {
|
|
1047
|
-
let { htmlToMarkdown: t } = await import(`mdream`);
|
|
1048
|
-
return t(r, { origin: e });
|
|
1049
|
-
}
|
|
1050
|
-
return r;
|
|
1046
|
+
return t.ok ? await t.text() : `# ${t.status} ${t.statusText}\n\nFailed to fetch \`${e}\``;
|
|
1051
1047
|
}
|
|
1052
1048
|
};
|
|
1053
1049
|
}));
|
|
1054
|
-
async function
|
|
1050
|
+
async function Ct(e) {
|
|
1055
1051
|
let { name: t, version: n, subdir: r } = ft(e), i = await pt(t, n);
|
|
1056
1052
|
return {
|
|
1057
1053
|
name: i.name,
|
|
@@ -1060,8 +1056,8 @@ async function wt(e) {
|
|
|
1060
1056
|
tar: i.dist.tarball
|
|
1061
1057
|
};
|
|
1062
1058
|
}
|
|
1063
|
-
var
|
|
1064
|
-
|
|
1059
|
+
var wt, Tt = v((() => {
|
|
1060
|
+
q(), Y(), ht(), wt = class extends K {
|
|
1065
1061
|
src;
|
|
1066
1062
|
options;
|
|
1067
1063
|
_fs;
|
|
@@ -1074,7 +1070,7 @@ var Tt, Et = v((() => {
|
|
|
1074
1070
|
dir: r,
|
|
1075
1071
|
force: !0,
|
|
1076
1072
|
install: !1,
|
|
1077
|
-
providers: { npm:
|
|
1073
|
+
providers: { npm: Ct },
|
|
1078
1074
|
registry: !1
|
|
1079
1075
|
});
|
|
1080
1076
|
let a = r;
|
|
@@ -1085,21 +1081,21 @@ var Tt, Et = v((() => {
|
|
|
1085
1081
|
break;
|
|
1086
1082
|
}
|
|
1087
1083
|
}
|
|
1088
|
-
return this._fs = new
|
|
1084
|
+
return this._fs = new J(a), this._fs.load();
|
|
1089
1085
|
}
|
|
1090
1086
|
async readContent(e) {
|
|
1091
1087
|
if (!this._fs) throw Error(`DocsSourceNpm: call load() before readContent()`);
|
|
1092
1088
|
return this._fs.readContent(e);
|
|
1093
1089
|
}
|
|
1094
1090
|
};
|
|
1095
|
-
})),
|
|
1096
|
-
|
|
1091
|
+
})), Et = v((() => {
|
|
1092
|
+
q(), Y(), dt(), St(), Tt();
|
|
1097
1093
|
}));
|
|
1098
|
-
async function
|
|
1094
|
+
async function Dt(t, n, r = {}) {
|
|
1099
1095
|
let a = t.flat.find((e) => e.entry.path === `/`), s = [`# ${r.title ?? a?.entry.title ?? `Table of Contents`}`, ``], l = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Set();
|
|
1100
|
-
|
|
1096
|
+
Ot(t.tree, f);
|
|
1101
1097
|
for (let a of t.flat) {
|
|
1102
|
-
if ((r.filter ? !r.filter(a) : a.entry.page === !1) ||
|
|
1098
|
+
if ((r.filter ? !r.filter(a) : a.entry.page === !1) || kt.has(a.entry.path)) continue;
|
|
1103
1099
|
let p = await t.getContent(a);
|
|
1104
1100
|
if (p === void 0) continue;
|
|
1105
1101
|
let m = r.plainText ? renderToText(p) : renderToMarkdown(p), h = a.entry.path === `/` || f.has(a.entry.path) ? a.entry.path === `/` ? `/index.md` : `${a.entry.path}/index.md` : a.entry.path.endsWith(`.md`) ? a.entry.path : `${a.entry.path}.md`, g = join(n, h);
|
|
@@ -1113,40 +1109,40 @@ async function Ot(t, n, r = {}) {
|
|
|
1113
1109
|
`, `utf8`), await writeFile(join(n, `_navigation.json`), JSON.stringify(t.tree, null, 2) + `
|
|
1114
1110
|
`, `utf8`);
|
|
1115
1111
|
}
|
|
1116
|
-
function
|
|
1117
|
-
for (let n of e) n.children?.length && (t.add(n.path),
|
|
1112
|
+
function Ot(e, t) {
|
|
1113
|
+
for (let n of e) n.children?.length && (t.add(n.path), Ot(n.children, t));
|
|
1118
1114
|
}
|
|
1119
|
-
var
|
|
1120
|
-
|
|
1121
|
-
})),
|
|
1115
|
+
var kt, At = v((() => {
|
|
1116
|
+
kt = new Set([`/llms.txt`, `/llms-full.txt`]);
|
|
1117
|
+
})), jt = y({
|
|
1122
1118
|
DocsManager: () => Ye,
|
|
1123
|
-
DocsSource: () =>
|
|
1124
|
-
DocsSourceFS: () =>
|
|
1119
|
+
DocsSource: () => K,
|
|
1120
|
+
DocsSourceFS: () => J,
|
|
1125
1121
|
DocsSourceGit: () => ut,
|
|
1126
|
-
DocsSourceHTTP: () =>
|
|
1127
|
-
DocsSourceNpm: () =>
|
|
1128
|
-
exportDocsToFS: () =>
|
|
1129
|
-
}),
|
|
1130
|
-
Xe(),
|
|
1122
|
+
DocsSourceHTTP: () => xt,
|
|
1123
|
+
DocsSourceNpm: () => wt,
|
|
1124
|
+
exportDocsToFS: () => Dt
|
|
1125
|
+
}), Mt = v((() => {
|
|
1126
|
+
Xe(), Et(), At();
|
|
1131
1127
|
}));
|
|
1132
|
-
async function
|
|
1133
|
-
if (
|
|
1134
|
-
if (!
|
|
1135
|
-
let { DocsManager: t, DocsSourceGit: n } = await Promise.resolve().then(() => (
|
|
1136
|
-
|
|
1128
|
+
async function X(e) {
|
|
1129
|
+
if (Z) return Z;
|
|
1130
|
+
if (!Z) {
|
|
1131
|
+
let { DocsManager: t, DocsSourceGit: n } = await Promise.resolve().then(() => (Mt(), jt));
|
|
1132
|
+
Z = new t(e?.source || new n(`gh:nitrojs/nitro/docs`, { subdir: `docs` })), await Z.load();
|
|
1137
1133
|
}
|
|
1138
|
-
return
|
|
1134
|
+
return Z;
|
|
1139
1135
|
}
|
|
1140
|
-
var
|
|
1141
|
-
W(),
|
|
1136
|
+
var Z, Q = v((() => {})), Nt = y({ default: () => Pt }), Pt, Ft = v((() => {
|
|
1137
|
+
W(), Q(), Pt = T(async () => ({
|
|
1142
1138
|
title: `Nitro`,
|
|
1143
|
-
toc: (await
|
|
1139
|
+
toc: (await X()).tree
|
|
1144
1140
|
}));
|
|
1145
|
-
})),
|
|
1146
|
-
async function
|
|
1141
|
+
})), It = y({ default: () => Bt });
|
|
1142
|
+
async function Lt(e) {
|
|
1147
1143
|
let t = /<pre><code class="language-(\w+)">([\s\S]*?)<\/code><\/pre>/g, n = [];
|
|
1148
1144
|
for (let r of e.matchAll(t)) {
|
|
1149
|
-
let [e, t, i] = r, a =
|
|
1145
|
+
let [e, t, i] = r, a = zt(i);
|
|
1150
1146
|
n.push(highlightText(a, t, !1).then((n) => ({
|
|
1151
1147
|
match: e,
|
|
1152
1148
|
result: `<pre><code class="language-${t}">${n}</code></pre>`
|
|
@@ -1159,23 +1155,23 @@ async function Rt(e) {
|
|
|
1159
1155
|
for (let { match: e, result: t } of await Promise.all(n)) r = r.replace(e, t);
|
|
1160
1156
|
return r;
|
|
1161
1157
|
}
|
|
1162
|
-
function
|
|
1158
|
+
function Rt(e) {
|
|
1163
1159
|
return e.replace(/<(h[1-6])>(.*?)<\/\1>/g, (e, t, n) => {
|
|
1164
1160
|
let r = n.replace(/<[^>]+>/g, ``).trim().toLowerCase().replace(/[^\w\s-]/g, ``).replace(/\s+/g, `-`);
|
|
1165
1161
|
return `<${t} id="${r}"><a href="#${r}">#</a>${n}</${t}>`;
|
|
1166
1162
|
});
|
|
1167
1163
|
}
|
|
1168
|
-
function
|
|
1164
|
+
function zt(e) {
|
|
1169
1165
|
return e.replace(/&/g, `&`).replace(/</g, `<`).replace(/>/g, `>`).replace(/"/g, `"`).replace(/'/g, `'`);
|
|
1170
1166
|
}
|
|
1171
|
-
var
|
|
1172
|
-
W(),
|
|
1167
|
+
var Bt, Vt = v((async () => {
|
|
1168
|
+
W(), Q(), await init(), Bt = T(async (e) => {
|
|
1173
1169
|
let { path: t } = he(e);
|
|
1174
1170
|
if (!t) return { error: `Missing ?path= query parameter` };
|
|
1175
|
-
let n = await (await
|
|
1171
|
+
let n = await (await X()).resolvePage(t);
|
|
1176
1172
|
return n.raw ? {
|
|
1177
1173
|
path: t,
|
|
1178
|
-
html:
|
|
1174
|
+
html: Rt(await Lt(renderToHtml(n.raw)))
|
|
1179
1175
|
} : {
|
|
1180
1176
|
error: `Page not found`,
|
|
1181
1177
|
path: t
|
|
@@ -1201,10 +1197,10 @@ function Ut(e, t, n = {}) {
|
|
|
1201
1197
|
return s;
|
|
1202
1198
|
}
|
|
1203
1199
|
var Wt, Gt = v((() => {
|
|
1204
|
-
W(),
|
|
1200
|
+
W(), Q(), Wt = T(async (e) => {
|
|
1205
1201
|
let { q: t, limit: n } = he(e);
|
|
1206
1202
|
if (!t || t.length < 2) return { results: [] };
|
|
1207
|
-
let r = await
|
|
1203
|
+
let r = await X(), i = Math.min(Number(n) || 20, 50), a = t.toLowerCase(), o = a.split(/\s+/).filter(Boolean), s = [], c = /* @__PURE__ */ new Set();
|
|
1208
1204
|
for (let e of r.pages) {
|
|
1209
1205
|
let t = e.entry.title, n = t.toLowerCase();
|
|
1210
1206
|
o.every((e) => n.includes(e)) && (c.add(e.entry.path), s.push({
|
|
@@ -1247,14 +1243,14 @@ var Wt, Gt = v((() => {
|
|
|
1247
1243
|
return s.sort((e, t) => e.score - t.score), { results: s.slice(0, i).map(({ score: e, ...t }) => t) };
|
|
1248
1244
|
});
|
|
1249
1245
|
})), Kt, qt = v((() => {
|
|
1250
|
-
|
|
1246
|
+
V(), Kt = () => new F(`<!doctype html>
|
|
1251
1247
|
<html lang="en">
|
|
1252
1248
|
<head>
|
|
1253
1249
|
<meta charset="UTF-8" />
|
|
1254
1250
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
1255
1251
|
<link rel="icon" type="image/svg+xml" href="/assets/logo-BLkVGWak.svg" />
|
|
1256
1252
|
<title></title>
|
|
1257
|
-
<style>/*! tailwindcss v4.2.
|
|
1253
|
+
<style>/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
1258
1254
|
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--radius-md:.375rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-screen{height:100vh}.max-h-80{max-height:calc(var(--spacing) * 80)}.w-4{width:calc(var(--spacing) * 4)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-\\[15vh\\]{padding-top:15vh}.text-center{text-align:center}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-900{color:var(--color-gray-900)}.text-red-500{color:var(--color-red-500)}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:text-gray-500:hover{color:var(--color-gray-500)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\\:inline{display:inline}}.dark\\:border-gray-700:where(.dark,.dark *){border-color:var(--color-gray-700)}.dark\\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\\:bg-gray-950:where(.dark,.dark *){background-color:var(--color-gray-950)}.dark\\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\\:text-gray-500:where(.dark,.dark *),.dark\\:placeholder-gray-500:where(.dark,.dark *)::placeholder{color:var(--color-gray-500)}@media (hover:hover){.dark\\:hover\\:border-gray-600:where(.dark,.dark *):hover{border-color:var(--color-gray-600)}.dark\\:hover\\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-gray-100:where(.dark,.dark *):hover{color:var(--color-gray-100)}.dark\\:hover\\:text-gray-300:where(.dark,.dark *):hover{color:var(--color-gray-300)}.dark\\:hover\\:text-gray-400:where(.dark,.dark *):hover{color:var(--color-gray-400)}}}#search-results::-webkit-scrollbar{width:6px}#search-results::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:3px}.dark #search-results::-webkit-scrollbar-thumb{background:var(--color-gray-600)}.line-clamp-2{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.nav-active{background:var(--color-gray-100)}.dark .nav-active{background:var(--color-gray-800)}.prose{color:var(--color-gray-700);line-height:1.75}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--color-gray-900);margin-top:2em;margin-bottom:.75em;font-weight:700;line-height:1.3;position:relative}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6)>a[href^=\\#]{color:var(--color-gray-300);opacity:0;padding-right:.25em;font-weight:400;text-decoration:none;transition:opacity .15s;position:absolute;right:100%}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6):hover>a[href^=\\#]{opacity:1}.prose h1{margin-top:0;font-size:2.25em}.prose h2{border-bottom:1px solid var(--color-gray-200);padding-bottom:.3em;font-size:1.5em}.prose h3{font-size:1.25em}.prose h4{font-size:1.1em}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose a{color:var(--color-blue-600);text-underline-offset:2px;text-decoration:underline}.prose a:hover{color:var(--color-blue-500)}.prose strong{color:var(--color-gray-900);font-weight:600}.prose code{color:var(--color-gray-800);background:var(--color-gray-100);border-radius:.25em;padding:.2em .4em;font-size:.875em}.prose pre{border:1px solid var(--color-gray-200);background:#f6f8fa;border-radius:.5em;margin-top:1.5em;margin-bottom:1.5em;padding:1em;overflow-x:auto}.prose pre code{background:0 0;border-radius:0;padding:0;font-size:.875em}.prose blockquote{border-left:3px solid var(--color-gray-300);color:var(--color-gray-500);margin-top:1.5em;margin-bottom:1.5em;padding-left:1em;font-style:italic}.prose blockquote.alert{border-left-width:4px;border-radius:.5em;padding:.75em 1em;font-style:normal}.prose blockquote.alert>p:first-child{margin-top:0}.prose blockquote.alert>p:last-child{margin-bottom:0}.prose blockquote.alert-tip{border-left-color:var(--color-green-500);background:#f0fdf499}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-50) 60%, transparent)}}.prose blockquote.alert-tip{color:var(--color-green-800)}.prose blockquote.alert-note{border-left-color:var(--color-blue-500);background:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-50) 60%, transparent)}}.prose blockquote.alert-note{color:var(--color-blue-800)}.prose blockquote.alert-important{border-left-color:var(--color-purple-500);background:#faf5ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-50) 60%, transparent)}}.prose blockquote.alert-important{color:var(--color-purple-800)}.prose blockquote.alert-warning{border-left-color:var(--color-yellow-500);background:#fefce899}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-50) 60%, transparent)}}.prose blockquote.alert-warning{color:var(--color-yellow-800)}.prose blockquote.alert-caution{border-left-color:var(--color-red-500);background:#fef2f299}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-50) 60%, transparent)}}.prose blockquote.alert-caution{color:var(--color-red-800)}.prose ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:outside}.prose ol{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:decimal}.prose li{margin-top:.5em;margin-bottom:.5em}.prose li>ul,.prose li>ol{margin-top:.25em;margin-bottom:.25em}.prose hr{border:none;border-top:1px solid var(--color-gray-200);margin-top:2em;margin-bottom:2em}.prose table{border-collapse:collapse;width:100%;margin-top:1.5em;margin-bottom:1.5em;font-size:.875em}.prose th,.prose td{border:1px solid var(--color-gray-200);text-align:left;padding:.5em .75em}.prose th{background:var(--color-gray-50);color:var(--color-gray-900);font-weight:600}.prose img,.prose video{border-radius:.5em;max-width:100%;margin-top:1.5em;margin-bottom:1.5em}.dark .prose{color:var(--color-gray-200)}.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6{color:var(--color-gray-50)}:is(.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6)>a[href^=\\#]{color:var(--color-gray-600)}.dark .prose h2{border-bottom-color:var(--color-gray-700)}.dark .prose a{color:var(--color-blue-400)}.dark .prose a:hover{color:var(--color-blue-300)}.dark .prose strong{color:var(--color-gray-50)}.dark .prose code{color:var(--color-gray-100);background:var(--color-gray-800)}.dark .prose pre{border-color:var(--color-gray-700);background:#161b22}.dark .prose pre code{color:var(--color-gray-100);background:0 0}.dark .prose blockquote{border-left-color:var(--color-gray-600);color:var(--color-gray-400)}.dark .prose blockquote.alert-tip{background:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-900) 30%, transparent)}}.dark .prose blockquote.alert-tip{color:var(--color-green-300);border-left-color:var(--color-green-500)}.dark .prose blockquote.alert-note{background:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-900) 30%, transparent)}}.dark .prose blockquote.alert-note{color:var(--color-blue-300);border-left-color:var(--color-blue-500)}.dark .prose blockquote.alert-important{background:#59168b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-900) 30%, transparent)}}.dark .prose blockquote.alert-important{color:var(--color-purple-300);border-left-color:var(--color-purple-500)}.dark .prose blockquote.alert-warning{background:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-900) 30%, transparent)}}.dark .prose blockquote.alert-warning{color:var(--color-yellow-300);border-left-color:var(--color-yellow-500)}.dark .prose blockquote.alert-caution{background:#82181a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-900) 30%, transparent)}}.dark .prose blockquote.alert-caution{color:var(--color-red-300);border-left-color:var(--color-red-500)}.dark .prose hr{border-top-color:var(--color-gray-700)}.dark .prose th,.dark .prose td{border-color:var(--color-gray-700)}.dark .prose th{background:var(--color-gray-800);color:var(--color-gray-50)}.shj-syn-cmnt{color:#6e7781;font-style:italic}.shj-syn-err,.shj-syn-kwd{color:#cf222e}.shj-syn-class{color:#953800}.shj-syn-type,.shj-syn-oper,.shj-syn-num,.shj-syn-section,.shj-syn-var,.shj-syn-bool{color:#0550ae}.shj-syn-str{color:#0a3069}.shj-syn-func{color:#8250df}.shj-syn-insert{color:#116329}.shj-syn-deleted{color:#cf222e}.shj-syn-esc{color:#0550ae}.dark .shj-syn-cmnt{color:#8b949e}.dark .shj-syn-err,.dark .shj-syn-kwd{color:#ff7b72}.dark .shj-syn-class{color:#ffa657}.dark .shj-syn-type,.dark .shj-syn-oper,.dark .shj-syn-num,.dark .shj-syn-section,.dark .shj-syn-var,.dark .shj-syn-bool{color:#79c0ff}.dark .shj-syn-str{color:#a5d6ff}.dark .shj-syn-func{color:#d2a8ff}.dark .shj-syn-insert{color:#98c379}.dark .shj-syn-deleted{color:#ff7b72}.dark .shj-syn-esc{color:#79c0ff}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}</style>
|
|
1259
1255
|
<script type="module" crossorigin src="/assets/index-BC9qhYL0.js"><\/script>
|
|
1260
1256
|
</head>
|
|
@@ -1390,12 +1386,12 @@ function Yt(e) {
|
|
|
1390
1386
|
var Xt = v((() => {
|
|
1391
1387
|
qt();
|
|
1392
1388
|
}));
|
|
1393
|
-
|
|
1389
|
+
V();
|
|
1394
1390
|
var Zt = (() => {
|
|
1395
1391
|
let e = [{
|
|
1396
1392
|
name: `headers`,
|
|
1397
1393
|
route: `/assets/**`,
|
|
1398
|
-
handler:
|
|
1394
|
+
handler: ze,
|
|
1399
1395
|
options: { "cache-control": `public, max-age=31536000, immutable` }
|
|
1400
1396
|
}];
|
|
1401
1397
|
return (t, n) => {
|
|
@@ -1407,7 +1403,7 @@ var Zt = (() => {
|
|
|
1407
1403
|
params: { _: i.slice(2).join(`/`) }
|
|
1408
1404
|
}), r;
|
|
1409
1405
|
};
|
|
1410
|
-
})(), Qt = E(() => Promise.resolve().then(() => (
|
|
1406
|
+
})(), Qt = E(() => Promise.resolve().then(() => (Ft(), Nt))), $t = E(() => Vt().then(() => It)), en = E(() => Promise.resolve().then(() => (Gt(), Ht))), tn = E(() => Promise.resolve().then(() => (Xt(), Jt))), nn = (() => {
|
|
1411
1407
|
let e = {
|
|
1412
1408
|
route: `/api/meta`,
|
|
1413
1409
|
handler: Qt
|
|
@@ -1431,8 +1427,8 @@ var Zt = (() => {
|
|
|
1431
1427
|
params: { _: o.slice(1).join(`/`) }
|
|
1432
1428
|
};
|
|
1433
1429
|
};
|
|
1434
|
-
})(), rn = [D(
|
|
1435
|
-
|
|
1430
|
+
})(), rn = [D(Ke)].filter(Boolean);
|
|
1431
|
+
V();
|
|
1436
1432
|
var an = `default`;
|
|
1437
1433
|
function $() {
|
|
1438
1434
|
let e = $._instance;
|
|
@@ -1448,7 +1444,7 @@ function on() {
|
|
|
1448
1444
|
});
|
|
1449
1445
|
}
|
|
1450
1446
|
}, t = sn({ onError(e, t) {
|
|
1451
|
-
return
|
|
1447
|
+
return De(e, t);
|
|
1452
1448
|
} });
|
|
1453
1449
|
return {
|
|
1454
1450
|
fetch: (e) => (e.context ||= {}, e.context.nitro = e.context.nitro || { errors: [] }, t.fetch(e)),
|
|
@@ -1498,9 +1494,9 @@ function cn(e, t) {
|
|
|
1498
1494
|
routeRuleMiddleware: i
|
|
1499
1495
|
};
|
|
1500
1496
|
}
|
|
1501
|
-
|
|
1497
|
+
Q();
|
|
1502
1498
|
async function ln(e) {
|
|
1503
|
-
let t = $(), n = await
|
|
1499
|
+
let t = $(), n = await X(e);
|
|
1504
1500
|
return {
|
|
1505
1501
|
fetch: t.fetch,
|
|
1506
1502
|
docs: n
|
package/dist/cli/main.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { parseMeta, renderToAnsi, renderToText } from "md4x";
|
|
|
6
6
|
import { parseArgs } from "node:util";
|
|
7
7
|
import { isAgent } from "std-env";
|
|
8
8
|
import { highlightText } from "@speed-highlight/core/terminal";
|
|
9
|
-
import { exec,
|
|
9
|
+
import { exec, execFile } from "node:child_process";
|
|
10
10
|
//#region src/cli/_ansi.ts
|
|
11
11
|
const noColor = !!(process.env.NO_COLOR || process.env.TERM === "dumb" || !process.stdout.isTTY || isAgent);
|
|
12
12
|
const ESC = "\x1B[";
|
|
@@ -273,8 +273,10 @@ async function pageMode(docs, pagePath, plain) {
|
|
|
273
273
|
title: parseMeta(raw).title || slug,
|
|
274
274
|
order: 0
|
|
275
275
|
};
|
|
276
|
-
if (plain)
|
|
277
|
-
|
|
276
|
+
if (plain) {
|
|
277
|
+
process.stdout.write(renderToText(raw) + "\n");
|
|
278
|
+
if (isAgent) process.stdout.write(agentTrailer(docs, normalized));
|
|
279
|
+
} else {
|
|
278
280
|
const lines = await renderContent(raw, navEntry, 0);
|
|
279
281
|
process.stdout.write(lines.join("\n") + "\n");
|
|
280
282
|
}
|
|
@@ -285,20 +287,54 @@ async function plainMode(docs, pagePath) {
|
|
|
285
287
|
console.log("No pages found.");
|
|
286
288
|
return;
|
|
287
289
|
}
|
|
290
|
+
if (isAgent && pagePath) {
|
|
291
|
+
const normalized = pagePath.startsWith("/") ? pagePath : "/" + pagePath;
|
|
292
|
+
const resolved = await docs.resolvePage(normalized);
|
|
293
|
+
if (resolved.raw) process.stdout.write(renderToText(resolved.raw) + "\n");
|
|
294
|
+
else process.stdout.write(`Page not found: ${pagePath}\n`);
|
|
295
|
+
process.stdout.write(agentTrailer(docs, normalized));
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
288
298
|
const tocLines = ["Table of Contents", ""];
|
|
289
299
|
for (const f of navigable) {
|
|
290
300
|
const indent = " ".repeat(f.depth);
|
|
291
301
|
tocLines.push(`${indent}- [${f.entry.title}](${f.entry.path})`);
|
|
292
302
|
}
|
|
293
303
|
process.stdout.write(tocLines.join("\n") + "\n");
|
|
294
|
-
let targetEntry = navigable[0];
|
|
295
304
|
if (pagePath) {
|
|
296
305
|
const resolved = await docs.resolvePage(pagePath);
|
|
297
306
|
if (resolved.raw) process.stdout.write(renderToText(resolved.raw) + "\n\n");
|
|
298
307
|
} else {
|
|
299
|
-
const raw = await docs.getContent(
|
|
308
|
+
const raw = await docs.getContent(navigable[0]);
|
|
300
309
|
if (raw) process.stdout.write(renderToText(raw) + "\n\n");
|
|
301
310
|
}
|
|
311
|
+
if (isAgent && navigable.length > 1) process.stdout.write("\n---\n\nTo read a specific page from the table of contents above, run this command again with `--page <path>`.\n");
|
|
312
|
+
}
|
|
313
|
+
function agentTrailer(docs, currentPath) {
|
|
314
|
+
const pages = docs.pages;
|
|
315
|
+
if (pages.length <= 1) return "";
|
|
316
|
+
const normalized = currentPath?.startsWith("/") ? currentPath : currentPath ? "/" + currentPath : void 0;
|
|
317
|
+
const otherPages = pages.filter((p) => p.entry.path !== normalized);
|
|
318
|
+
if (otherPages.length === 0) return "";
|
|
319
|
+
return "\n" + [
|
|
320
|
+
"---",
|
|
321
|
+
"",
|
|
322
|
+
"Other available pages:",
|
|
323
|
+
...otherPages.map((p) => ` - [${p.entry.title}](${p.entry.path})`),
|
|
324
|
+
"",
|
|
325
|
+
"To read a specific page, run this command again with `--page <path>`.",
|
|
326
|
+
"To view the full table of contents, run this command without `--page`.",
|
|
327
|
+
""
|
|
328
|
+
].join("\n");
|
|
329
|
+
}
|
|
330
|
+
//#endregion
|
|
331
|
+
//#region src/cli/_utils.ts
|
|
332
|
+
function openInBrowser(url) {
|
|
333
|
+
const parsed = new URL(url);
|
|
334
|
+
if (parsed.hostname === "[::]" || parsed.hostname === "[::1]" || parsed.hostname === "127.0.0.1") parsed.hostname = "localhost";
|
|
335
|
+
url = parsed.href;
|
|
336
|
+
if (process.platform === "win32") exec(`start "" ${JSON.stringify(url)}`, () => {});
|
|
337
|
+
else execFile(process.platform === "darwin" ? "open" : "xdg-open", [url], () => {});
|
|
302
338
|
}
|
|
303
339
|
//#endregion
|
|
304
340
|
//#region src/cli/interactive/nav.ts
|
|
@@ -603,9 +639,7 @@ async function interactiveMode(docs) {
|
|
|
603
639
|
if (line < contentScroll || line >= contentScroll + rows - 2) contentScroll = Math.max(0, Math.min(line - Math.floor(rows / 3), contentLines.length - rows + 2));
|
|
604
640
|
};
|
|
605
641
|
const activateLink = (url) => {
|
|
606
|
-
if (url.startsWith("http://") || url.startsWith("https://"))
|
|
607
|
-
execSync(`open ${JSON.stringify(url)}`, { stdio: "ignore" });
|
|
608
|
-
} catch {}
|
|
642
|
+
if (url.startsWith("http://") || url.startsWith("https://")) openInBrowser(url);
|
|
609
643
|
else {
|
|
610
644
|
const target = url.replace(/^\.\//, "/").replace(/\/$/, "");
|
|
611
645
|
const idx = flat.indexOf(docs.findByPath(target));
|
|
@@ -730,14 +764,6 @@ async function interactiveMode(docs) {
|
|
|
730
764
|
}
|
|
731
765
|
}
|
|
732
766
|
//#endregion
|
|
733
|
-
//#region src/cli/_utils.ts
|
|
734
|
-
function openInBrowser(url) {
|
|
735
|
-
const parsed = new URL(url);
|
|
736
|
-
if (parsed.hostname === "[::]" || parsed.hostname === "[::1]" || parsed.hostname === "127.0.0.1") parsed.hostname = "localhost";
|
|
737
|
-
url = parsed.href;
|
|
738
|
-
exec(process.platform === "win32" ? `start ${url}` : process.platform === "darwin" ? `open ${url}` : `xdg-open ${url}`, () => {});
|
|
739
|
-
}
|
|
740
|
-
//#endregion
|
|
741
767
|
//#region src/cli/main.ts
|
|
742
768
|
async function main() {
|
|
743
769
|
process.stdout.on("error", (err) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mdzilla",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "pi0/mdzilla",
|
|
@@ -30,24 +30,23 @@
|
|
|
30
30
|
"typecheck": "tsgo --noEmit --skipLibCheck"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@speed-highlight/core": "^1.2.
|
|
33
|
+
"@speed-highlight/core": "^1.2.15",
|
|
34
34
|
"giget": "^3.1.2",
|
|
35
35
|
"md4x": "^0.0.25",
|
|
36
|
-
"
|
|
37
|
-
"srvx": "^0.11.9",
|
|
36
|
+
"srvx": "^0.11.13",
|
|
38
37
|
"std-env": "^4.0.0"
|
|
39
38
|
},
|
|
40
39
|
"devDependencies": {
|
|
41
40
|
"@types/node": "^25.5.0",
|
|
42
|
-
"@typescript/native-preview": "^7.0.0-dev.
|
|
43
|
-
"@vitest/coverage-v8": "^4.1.
|
|
41
|
+
"@typescript/native-preview": "^7.0.0-dev.20260324.1",
|
|
42
|
+
"@vitest/coverage-v8": "^4.1.1",
|
|
44
43
|
"automd": "^0.4.3",
|
|
45
44
|
"changelogen": "^0.6.2",
|
|
46
45
|
"obuild": "^0.4.32",
|
|
47
|
-
"oxfmt": "^0.
|
|
48
|
-
"oxlint": "^1.
|
|
49
|
-
"typescript": "^
|
|
50
|
-
"vitest": "^4.1.
|
|
46
|
+
"oxfmt": "^0.41.0",
|
|
47
|
+
"oxlint": "^1.56.0",
|
|
48
|
+
"typescript": "^6.0.2",
|
|
49
|
+
"vitest": "^4.1.1"
|
|
51
50
|
},
|
|
52
51
|
"packageManager": "pnpm@10.32.1"
|
|
53
52
|
}
|