mdzilla 0.0.6 → 0.2.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 +47 -60
- package/dist/_chunks/exporter.mjs +174 -62
- package/dist/_chunks/server.mjs +394 -370
- package/dist/cli/main.mjs +167 -596
- package/dist/index.d.mts +105 -64
- package/dist/index.mjs +2 -2
- package/package.json +10 -11
package/dist/_chunks/server.mjs
CHANGED
|
@@ -1,102 +1,105 @@
|
|
|
1
|
+
import { parseMeta, renderToMarkdown, renderToText } from "md4x";
|
|
1
2
|
import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
|
|
2
3
|
import { basename, dirname, extname, join } from "node:path";
|
|
3
|
-
import { parseMeta, renderToMarkdown, renderToText } from "md4x";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
|
-
import { init,
|
|
6
|
+
import { init, renderToHtml, renderToText as renderToText$1 } from "md4x/napi";
|
|
7
7
|
import { highlightText } from "@speed-highlight/core";
|
|
8
8
|
//#region web/.output/server/index.mjs
|
|
9
9
|
globalThis.__nitro_main__ = import.meta.url;
|
|
10
|
-
var
|
|
10
|
+
var v = Object.defineProperty, y = (e, t) => () => (e && (t = e(e = 0)), t), b = (e, t) => {
|
|
11
11
|
let n = {};
|
|
12
|
-
for (var r in e)
|
|
12
|
+
for (var r in e) v(n, r, {
|
|
13
13
|
get: e[r],
|
|
14
14
|
enumerable: !0
|
|
15
15
|
});
|
|
16
|
-
return t ||
|
|
17
|
-
}
|
|
18
|
-
globalThis.__nitro_vite_envs__ =
|
|
19
|
-
var
|
|
20
|
-
|
|
16
|
+
return t || v(n, Symbol.toStringTag, { value: `Module` }), n;
|
|
17
|
+
};
|
|
18
|
+
globalThis.__nitro_vite_envs__ = {};
|
|
19
|
+
var x, ee = y((() => {
|
|
20
|
+
x = (() => {
|
|
21
21
|
let e = function() {};
|
|
22
22
|
return e.prototype = Object.create(null), Object.freeze(e.prototype), e;
|
|
23
23
|
})();
|
|
24
|
-
})),
|
|
25
|
-
|
|
24
|
+
})), te, S, ne = y((() => {
|
|
25
|
+
te = URL, S = Response;
|
|
26
26
|
}));
|
|
27
|
-
function
|
|
28
|
-
return e.replace(
|
|
27
|
+
function re(e) {
|
|
28
|
+
return decodeURI(e.includes(`%25`) ? e.replace(/%25/g, `%2525`) : e);
|
|
29
29
|
}
|
|
30
|
-
function
|
|
30
|
+
function ie(e = ``) {
|
|
31
|
+
return e.replace(_e, ``);
|
|
32
|
+
}
|
|
33
|
+
function ae(e, t = 200) {
|
|
31
34
|
return !e || (typeof e == `string` && (e = +e), e < 100 || e > 599) ? t : e;
|
|
32
35
|
}
|
|
33
|
-
function
|
|
36
|
+
function oe(e, t) {
|
|
34
37
|
if (e == null) return !0;
|
|
35
38
|
if (t !== `object`) return t === `boolean` || t === `number` || t === `string`;
|
|
36
39
|
if (typeof e.toJSON == `function` || Array.isArray(e)) return !0;
|
|
37
40
|
if (typeof e.pipe == `function` || typeof e.pipeTo == `function`) return !1;
|
|
38
|
-
if (e instanceof
|
|
41
|
+
if (e instanceof x) return !0;
|
|
39
42
|
let n = Object.getPrototypeOf(e);
|
|
40
43
|
return n === Object.prototype || n === null;
|
|
41
44
|
}
|
|
42
|
-
function
|
|
43
|
-
if (typeof e?.then == `function`) return (e.catch?.((e) => e) || Promise.resolve(e)).then((e) =>
|
|
44
|
-
let r =
|
|
45
|
-
if (typeof r?.then == `function`) return
|
|
45
|
+
function C(e, t, n = {}) {
|
|
46
|
+
if (typeof e?.then == `function`) return (e.catch?.((e) => e) || Promise.resolve(e)).then((e) => C(e, t, n));
|
|
47
|
+
let r = se(e, t, n);
|
|
48
|
+
if (typeof r?.then == `function`) return C(r, t, n);
|
|
46
49
|
let { onResponse: i } = n;
|
|
47
50
|
return i ? Promise.resolve(i(r, t)).then(() => r) : r;
|
|
48
51
|
}
|
|
49
|
-
function
|
|
50
|
-
if (e ===
|
|
51
|
-
if (e ===
|
|
52
|
+
function se(e, t, n, r) {
|
|
53
|
+
if (e === ve) return new S(null);
|
|
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) =>
|
|
60
|
+
let { onError: o } = n, s = t[k]?.[j];
|
|
61
|
+
return o && !r ? Promise.resolve(o(a, t)).catch((e) => e).then((r) => se(r ?? e, t, n, !0)) : ue(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)) {
|
|
62
|
-
let r =
|
|
63
|
-
return new
|
|
65
|
+
let r = ce(e, t, n), o = r.status || i?.status;
|
|
66
|
+
return new S(le(t.req.method, o) ? null : r.body, {
|
|
64
67
|
status: o,
|
|
65
68
|
statusText: r.statusText || i?.statusText,
|
|
66
|
-
headers: r.headers && a ?
|
|
69
|
+
headers: r.headers && a ? w(r.headers, a) : r.headers || a
|
|
67
70
|
});
|
|
68
71
|
}
|
|
69
72
|
if (!a || r || !e.ok) return e;
|
|
70
73
|
try {
|
|
71
|
-
return
|
|
74
|
+
return w(e.headers, a, e.headers), e;
|
|
72
75
|
} catch {
|
|
73
|
-
return new
|
|
76
|
+
return new S(le(t.req.method, e.status) ? null : e.body, {
|
|
74
77
|
status: e.status,
|
|
75
78
|
statusText: e.statusText,
|
|
76
|
-
headers:
|
|
79
|
+
headers: w(e.headers, a)
|
|
77
80
|
});
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
|
-
function
|
|
83
|
+
function w(e, t, n = new Headers(e)) {
|
|
81
84
|
for (let [e, r] of t) e === `set-cookie` ? n.append(e, r) : n.set(e, r);
|
|
82
85
|
return n;
|
|
83
86
|
}
|
|
84
|
-
function
|
|
87
|
+
function ce(e, t, n) {
|
|
85
88
|
if (e == null) return {
|
|
86
89
|
body: ``,
|
|
87
|
-
headers:
|
|
90
|
+
headers: ye
|
|
88
91
|
};
|
|
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
|
|
93
|
-
if (
|
|
95
|
+
if (e instanceof F || e?.constructor?.name === `HTTPResponse`) return e;
|
|
96
|
+
if (oe(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({
|
|
@@ -110,39 +113,40 @@ function ue(e, t, n) {
|
|
|
110
113
|
}
|
|
111
114
|
return r === `symbol` ? { body: e.toString() } : r === `function` ? { body: `${e.name}()` } : { body: e };
|
|
112
115
|
}
|
|
113
|
-
function
|
|
116
|
+
function le(e, t) {
|
|
114
117
|
return e === `HEAD` || t === 100 || t === 101 || t === 102 || t === 204 || t === 205 || t === 304;
|
|
115
118
|
}
|
|
116
|
-
function
|
|
117
|
-
|
|
119
|
+
function ue(e, t, n) {
|
|
120
|
+
let r = e.headers ? w(R, e.headers) : new Headers(R);
|
|
121
|
+
return n && (r = w(r, n)), new S(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
|
-
function
|
|
131
|
+
function de(e, t, n, r = 0) {
|
|
128
132
|
if (r === t.length) return n(e);
|
|
129
|
-
let i = t[r], a, o, s = () => a ? o : (a = !0, o =
|
|
130
|
-
return
|
|
133
|
+
let i = t[r], a, o, s = () => a ? o : (a = !0, o = de(e, t, n, r + 1), o), c = i(e, s);
|
|
134
|
+
return fe(c) ? s() : typeof c?.then == `function` ? c.then((e) => fe(e) ? s() : e) : c;
|
|
131
135
|
}
|
|
132
|
-
function
|
|
133
|
-
return e === void 0 || e ===
|
|
136
|
+
function fe(e) {
|
|
137
|
+
return e === void 0 || e === P;
|
|
134
138
|
}
|
|
135
|
-
function
|
|
136
|
-
let t = new
|
|
139
|
+
function pe(e) {
|
|
140
|
+
let t = new x();
|
|
137
141
|
if (!e || e === `?`) return t;
|
|
138
142
|
let n = e.length, r = ``, i = ``, a = -1, o = -1, s = !1, c = !1, l = !1, u = !1, d = !1, f = 0;
|
|
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];
|
|
@@ -162,26 +166,26 @@ function me(e) {
|
|
|
162
166
|
}
|
|
163
167
|
return t;
|
|
164
168
|
}
|
|
165
|
-
function
|
|
166
|
-
return
|
|
169
|
+
function me(e) {
|
|
170
|
+
return pe((e.url || new URL(e.req.url)).search.slice(1));
|
|
167
171
|
}
|
|
168
172
|
function T(e) {
|
|
169
|
-
if (typeof e == `function`) return
|
|
173
|
+
if (typeof e == `function`) return he(e);
|
|
170
174
|
let t = e.handler || (e.fetch ? function(t) {
|
|
171
175
|
return e.fetch(t.req);
|
|
172
|
-
} :
|
|
173
|
-
return Object.assign(
|
|
174
|
-
return
|
|
176
|
+
} : B);
|
|
177
|
+
return Object.assign(he(e.middleware?.length ? function(n) {
|
|
178
|
+
return de(n, e.middleware, t);
|
|
175
179
|
} : t), e);
|
|
176
180
|
}
|
|
177
|
-
function
|
|
181
|
+
function he(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
|
-
return Promise.resolve(
|
|
186
|
+
return Promise.resolve(C(e(n), n));
|
|
183
187
|
} catch (e) {
|
|
184
|
-
return Promise.resolve(
|
|
188
|
+
return Promise.resolve(C(e, n));
|
|
185
189
|
}
|
|
186
190
|
} });
|
|
187
191
|
}
|
|
@@ -201,20 +205,20 @@ function D(e) {
|
|
|
201
205
|
return e.fetch(t.req);
|
|
202
206
|
};
|
|
203
207
|
}
|
|
204
|
-
var O, k, A, j,
|
|
205
|
-
|
|
208
|
+
var O, k, A, j, M, ge, _e, N, P, ve, F, I, L, ye, R, z, B, be, xe = y((() => {
|
|
209
|
+
ee(), ne(), 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;
|
|
209
213
|
context;
|
|
210
214
|
static __is_event__ = !0;
|
|
211
215
|
constructor(e, t, n) {
|
|
212
|
-
this.context = t || e.context || new
|
|
213
|
-
let r = e._url;
|
|
214
|
-
|
|
216
|
+
this.context = t || e.context || new x(), this.req = e, this.app = n;
|
|
217
|
+
let r = e._url, i = r && r instanceof URL ? r : new te(e.url);
|
|
218
|
+
i.pathname.includes(`%`) && (i.pathname = re(i.pathname)), this.url = i;
|
|
215
219
|
}
|
|
216
220
|
get res() {
|
|
217
|
-
return this[k] ||= new
|
|
221
|
+
return this[k] ||= new ge();
|
|
218
222
|
}
|
|
219
223
|
get runtime() {
|
|
220
224
|
return this.req.runtime;
|
|
@@ -240,13 +244,16 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
240
244
|
get method() {
|
|
241
245
|
return this.req.method;
|
|
242
246
|
}
|
|
243
|
-
},
|
|
247
|
+
}, ge = class {
|
|
244
248
|
status;
|
|
245
249
|
statusText;
|
|
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
|
+
}, _e = /[^\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 =
|
|
280
|
+
let i = ae(r?.status || r?.statusCode || r?.cause?.status || r?.cause?.statusCode, 500), a = ie(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`), ve = 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
|
-
},
|
|
324
|
+
}, L = class extends Headers {
|
|
325
|
+
set = I(`set`);
|
|
326
|
+
append = I(`append`);
|
|
327
|
+
delete = I(`delete`);
|
|
328
|
+
}, ye = new L({ "content-length": `0` }), R = new L({ "content-type": `application/json;charset=UTF-8` }), z = /\+/g, B = () => P, be = 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 ||
|
|
335
|
-
return r.length > 0 ?
|
|
341
|
+
let n = t?.data.handler || B, r = this[`~getMiddleware`](e, t);
|
|
342
|
+
return r.length > 0 ? de(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);
|
|
@@ -344,7 +351,7 @@ var O, k, A, j, _e, ve, M, N, ye, P, F, I, be, L, R, z, xe, Se = v((() => {
|
|
|
344
351
|
} catch (e) {
|
|
345
352
|
r = Promise.reject(e);
|
|
346
353
|
}
|
|
347
|
-
return
|
|
354
|
+
return C(r, n, this.config);
|
|
348
355
|
}
|
|
349
356
|
"~findRoute"(e) {}
|
|
350
357
|
"~addRoute"(e) {
|
|
@@ -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
|
-
})),
|
|
359
|
-
|
|
365
|
+
})), V = y((() => {
|
|
366
|
+
xe();
|
|
360
367
|
}));
|
|
361
|
-
|
|
362
|
-
var
|
|
363
|
-
let n =
|
|
364
|
-
return new
|
|
368
|
+
V(), ne();
|
|
369
|
+
var Ce = (e, t) => {
|
|
370
|
+
let n = we(e, t);
|
|
371
|
+
return new S(typeof n.body == `string` ? n.body : JSON.stringify(n.body, null, 2), n);
|
|
365
372
|
};
|
|
366
|
-
function
|
|
367
|
-
let n = e.unhandled ?? !
|
|
373
|
+
function we(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,10 +397,10 @@ function V(e, t) {
|
|
|
390
397
|
}
|
|
391
398
|
};
|
|
392
399
|
}
|
|
393
|
-
var Te = [
|
|
400
|
+
var Te = [Ce];
|
|
394
401
|
async function Ee(e, t) {
|
|
395
402
|
for (let n of Te) try {
|
|
396
|
-
let r = await n(e, t, { defaultHandler:
|
|
403
|
+
let r = await n(e, t, { defaultHandler: we });
|
|
397
404
|
if (r) return r;
|
|
398
405
|
} catch (e) {
|
|
399
406
|
console.error(e);
|
|
@@ -454,7 +461,7 @@ var Re = ((e) => function(t) {
|
|
|
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-25T21:41:35.759Z`,
|
|
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,7 +469,7 @@ 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-25T21:41:35.760Z`,
|
|
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=`
|
|
@@ -480,7 +487,7 @@ function Ve(e = ``) {
|
|
|
480
487
|
function He(e) {
|
|
481
488
|
return U[e];
|
|
482
489
|
}
|
|
483
|
-
|
|
490
|
+
V();
|
|
484
491
|
var Ue = new Set([`HEAD`, `GET`]), We = {
|
|
485
492
|
gzip: `.gz`,
|
|
486
493
|
br: `.br`,
|
|
@@ -496,14 +503,14 @@ var Ue = new Set([`HEAD`, `GET`]), We = {
|
|
|
496
503
|
}
|
|
497
504
|
}
|
|
498
505
|
if (!n) {
|
|
499
|
-
if (Ve(t)) throw e.res.headers.delete(`Cache-Control`), new
|
|
506
|
+
if (Ve(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
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()), ze(t));
|
|
505
|
-
}), W =
|
|
506
|
-
|
|
512
|
+
}), W = y((() => {
|
|
513
|
+
V();
|
|
507
514
|
}));
|
|
508
515
|
function Ke(e, t, n) {
|
|
509
516
|
let r = [];
|
|
@@ -529,7 +536,7 @@ function Je(e, t, n) {
|
|
|
529
536
|
let e = Infinity;
|
|
530
537
|
for (let r of n(i)) {
|
|
531
538
|
let n = qe(t, r);
|
|
532
|
-
n
|
|
539
|
+
n !== -1 && n < e && (e = n);
|
|
533
540
|
}
|
|
534
541
|
e < Infinity && r.push({
|
|
535
542
|
item: i,
|
|
@@ -538,8 +545,22 @@ function Je(e, t, n) {
|
|
|
538
545
|
}
|
|
539
546
|
return r.sort((e, t) => e.score - t.score), r.map((e) => e.item);
|
|
540
547
|
}
|
|
541
|
-
|
|
542
|
-
|
|
548
|
+
function Ye(e, t, n = 1) {
|
|
549
|
+
let r = [], i = e.split(`
|
|
550
|
+
`);
|
|
551
|
+
for (let e = 0; e < i.length; e++) if (i[e].toLowerCase().includes(t)) {
|
|
552
|
+
let t = [];
|
|
553
|
+
for (let r = Math.max(0, e - n); r <= Math.min(i.length - 1, e + n); r++) r !== e && t.push(i[r].trim());
|
|
554
|
+
r.push({
|
|
555
|
+
line: e + 1,
|
|
556
|
+
text: i[e].trim(),
|
|
557
|
+
context: t
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
return r;
|
|
561
|
+
}
|
|
562
|
+
var G, Xe = y((() => {
|
|
563
|
+
G = class {
|
|
543
564
|
source;
|
|
544
565
|
tree = [];
|
|
545
566
|
flat = [];
|
|
@@ -568,6 +589,36 @@ var Ye, Xe = v((() => {
|
|
|
568
589
|
filter(e) {
|
|
569
590
|
return Je(this.flat, e, ({ entry: e }) => [e.title, e.path]);
|
|
570
591
|
}
|
|
592
|
+
async *search(t) {
|
|
593
|
+
if (!t) return;
|
|
594
|
+
let n = t.toLowerCase(), r = n.split(/\s+/).filter(Boolean), i = (e) => r.every((t) => e.includes(t)), a = /* @__PURE__ */ new Set();
|
|
595
|
+
for (let t of this.flat) {
|
|
596
|
+
if (t.entry.page === !1 || a.has(t.entry.path)) continue;
|
|
597
|
+
a.add(t.entry.path);
|
|
598
|
+
let r = t.entry.title.toLowerCase(), o = i(r) || i(t.entry.path.toLowerCase()), s = await this.getContent(t), c = s?.toLowerCase(), l = c ? i(c) : !1;
|
|
599
|
+
if (!o && !l) continue;
|
|
600
|
+
let u = 300, d;
|
|
601
|
+
if (o) u = r === n ? 0 : 100;
|
|
602
|
+
else if (s) {
|
|
603
|
+
let t = parseMeta(s);
|
|
604
|
+
for (let e of t.headings || []) {
|
|
605
|
+
let t = e.text.toLowerCase();
|
|
606
|
+
if (i(t)) {
|
|
607
|
+
u = t === n ? 150 : 200, d = e.text;
|
|
608
|
+
break;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
let f = s ? Ye(s, n) : [];
|
|
613
|
+
yield {
|
|
614
|
+
flat: t,
|
|
615
|
+
score: u,
|
|
616
|
+
titleMatch: o,
|
|
617
|
+
heading: d,
|
|
618
|
+
contentMatches: f
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
}
|
|
571
622
|
get pages() {
|
|
572
623
|
return this.flat.filter((e) => e.entry.page !== !1);
|
|
573
624
|
}
|
|
@@ -597,24 +648,36 @@ var Ye, Xe = v((() => {
|
|
|
597
648
|
let i = await this.source.readContent(t).catch(() => void 0);
|
|
598
649
|
return i ? { raw: i } : {};
|
|
599
650
|
}
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
let t = this.flat[e].depth;
|
|
608
|
-
for (let r = e + 1; r < this.flat.length && !(this.flat[r].depth <= t); r++) n.add(r);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
return [...n].sort((e, t) => e - t);
|
|
651
|
+
suggest(e, t = 5) {
|
|
652
|
+
let n = this.filter(e);
|
|
653
|
+
if (n.length > 0) return n.slice(0, t);
|
|
654
|
+
let r = e.replace(/^\/+/, ``).split(`/`).filter(Boolean), i = r.at(-1);
|
|
655
|
+
if (i && i !== e && (n = this.filter(i), n.length > 0)) return n.slice(0, t);
|
|
656
|
+
let a = r.flatMap((e) => e.split(`-`)).filter(Boolean);
|
|
657
|
+
return this.pages.filter((e) => a.some((t) => e.entry.title.toLowerCase().includes(t) || e.entry.path.toLowerCase().includes(t))).slice(0, t);
|
|
612
658
|
}
|
|
613
659
|
};
|
|
614
|
-
})), G, K = v((() => {
|
|
615
|
-
G = class {};
|
|
616
660
|
}));
|
|
617
|
-
function Ze(e) {
|
|
661
|
+
function Ze(e, t, n = {}) {
|
|
662
|
+
let { maxSnippets: r = 3, radius: i = 80 } = n, a = e.toLowerCase(), o = [];
|
|
663
|
+
for (let e of t) {
|
|
664
|
+
let t = a.indexOf(e);
|
|
665
|
+
for (; t !== -1 && o.length < r * 2;) o.push(t), t = a.indexOf(e, t + e.length);
|
|
666
|
+
}
|
|
667
|
+
o.sort((e, t) => e - t);
|
|
668
|
+
let s = [], c = -1;
|
|
669
|
+
for (let t of o) {
|
|
670
|
+
if (s.length >= r) break;
|
|
671
|
+
let n = Math.max(0, t - i), a = Math.min(e.length, t + i);
|
|
672
|
+
if (n <= c) continue;
|
|
673
|
+
c = a;
|
|
674
|
+
let o = e.slice(n, a).trim().replaceAll(/\s+/g, ` `);
|
|
675
|
+
n > 0 && (o = `…` + o), a < e.length && (o += `…`), s.push(o);
|
|
676
|
+
}
|
|
677
|
+
return s;
|
|
678
|
+
}
|
|
679
|
+
var Qe = y((() => {}));
|
|
680
|
+
function $e(e) {
|
|
618
681
|
let t = e.endsWith(`.md`) ? e.slice(0, -3) : e, n = t.endsWith(`.draft`);
|
|
619
682
|
n && (t = t.slice(0, -6));
|
|
620
683
|
let r = t.match(/^(\d+)\.(.+)$/);
|
|
@@ -628,18 +691,18 @@ function Ze(e) {
|
|
|
628
691
|
draft: n
|
|
629
692
|
};
|
|
630
693
|
}
|
|
631
|
-
function
|
|
694
|
+
function et(e) {
|
|
632
695
|
return e.split(`-`).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(` `);
|
|
633
696
|
}
|
|
634
|
-
async function
|
|
697
|
+
async function tt(t) {
|
|
635
698
|
try {
|
|
636
|
-
let { headings: n, ...r } = parseMeta(`---\n${await readFile(join(
|
|
699
|
+
let { headings: n, ...r } = parseMeta(`---\n${await readFile(join(t, `.navigation.yml`), `utf8`)}\n---\n`);
|
|
637
700
|
return r;
|
|
638
701
|
} catch {
|
|
639
702
|
return {};
|
|
640
703
|
}
|
|
641
704
|
}
|
|
642
|
-
function
|
|
705
|
+
function nt(e) {
|
|
643
706
|
let t = e.navigation;
|
|
644
707
|
if (t === !1) return {
|
|
645
708
|
...e,
|
|
@@ -654,60 +717,60 @@ function et(e) {
|
|
|
654
717
|
}
|
|
655
718
|
return e;
|
|
656
719
|
}
|
|
657
|
-
function
|
|
720
|
+
function rt(e) {
|
|
658
721
|
let t = {}, n = !1;
|
|
659
|
-
for (let [r, i] of Object.entries(e)) !
|
|
722
|
+
for (let [r, i] of Object.entries(e)) !ot.has(r) && r !== `navigation` && (t[r] = i, n = !0);
|
|
660
723
|
return n ? t : void 0;
|
|
661
724
|
}
|
|
662
|
-
async function
|
|
663
|
-
return
|
|
725
|
+
async function it(e, t) {
|
|
726
|
+
return at(e, `/`, t || {});
|
|
664
727
|
}
|
|
665
|
-
async function
|
|
666
|
-
let
|
|
667
|
-
for (let
|
|
668
|
-
if (
|
|
669
|
-
let
|
|
728
|
+
async function at(t, n, r) {
|
|
729
|
+
let s = await readdir(t), l = [];
|
|
730
|
+
for (let a of s) {
|
|
731
|
+
if (a.startsWith(`.`) || a.startsWith(`_`) || a === `node_modules` || a === `dist` || a === `package.json` || a === `pnpm-lock.yaml` || a === `pnpm-workspace.yaml`) continue;
|
|
732
|
+
let s = join(t, a), f;
|
|
670
733
|
try {
|
|
671
|
-
f = await stat(
|
|
734
|
+
f = await stat(s);
|
|
672
735
|
} catch {
|
|
673
736
|
continue;
|
|
674
737
|
}
|
|
675
738
|
if (f.isDirectory()) {
|
|
676
|
-
let { order: e, slug: t } =
|
|
677
|
-
if (
|
|
678
|
-
let
|
|
739
|
+
let { order: e, slug: t } = $e(a), i = await tt(s);
|
|
740
|
+
if (i.navigation === !1) continue;
|
|
741
|
+
let o = await at(s, n === `/` ? `/${t}` : `${n}/${t}`, r), c = o.some((e) => e.slug === ``), u = {
|
|
679
742
|
slug: t,
|
|
680
|
-
path:
|
|
681
|
-
title:
|
|
743
|
+
path: n === `/` ? `/${t}` : `${n}/${t}`,
|
|
744
|
+
title: i.title || et(t),
|
|
682
745
|
order: e,
|
|
683
|
-
...
|
|
684
|
-
...
|
|
685
|
-
...
|
|
686
|
-
...
|
|
746
|
+
...i.icon ? { icon: i.icon } : {},
|
|
747
|
+
...i.description ? { description: i.description } : {},
|
|
748
|
+
...c ? {} : { page: !1 },
|
|
749
|
+
...o.length > 0 ? { children: o } : {}
|
|
687
750
|
};
|
|
688
|
-
|
|
689
|
-
} else if (extname(
|
|
690
|
-
let { order:
|
|
691
|
-
if (
|
|
692
|
-
let
|
|
693
|
-
if (
|
|
694
|
-
let f = typeof
|
|
751
|
+
l.push(u);
|
|
752
|
+
} else if (extname(a) === `.md`) {
|
|
753
|
+
let { order: t, slug: o, draft: u } = $e(basename(a));
|
|
754
|
+
if (u && !r.drafts) continue;
|
|
755
|
+
let d = nt(parseMeta(await readFile(s, `utf8`)));
|
|
756
|
+
if (d.navigation === !1) continue;
|
|
757
|
+
let f = typeof d.order == `number` ? d.order : t, p = o === `index` ? `` : o, m = d.title || et(o) || `index`, h = p === `` ? n === `/` ? `/` : n : n === `/` ? `/${p}` : `${n}/${p}`, g = rt(d), _ = {
|
|
695
758
|
slug: p,
|
|
696
759
|
path: h,
|
|
697
760
|
title: m,
|
|
698
761
|
order: f,
|
|
699
|
-
...
|
|
700
|
-
...
|
|
701
|
-
...
|
|
762
|
+
...d.icon ? { icon: d.icon } : {},
|
|
763
|
+
...d.description ? { description: d.description } : {},
|
|
764
|
+
...u ? { draft: !0 } : {},
|
|
702
765
|
...g
|
|
703
766
|
};
|
|
704
|
-
|
|
767
|
+
l.push(_);
|
|
705
768
|
}
|
|
706
769
|
}
|
|
707
|
-
return
|
|
770
|
+
return l.sort((e, t) => e.order - t.order || e.slug.localeCompare(t.slug)), l;
|
|
708
771
|
}
|
|
709
|
-
var
|
|
710
|
-
|
|
772
|
+
var ot, st = y((() => {
|
|
773
|
+
ot = new Set([
|
|
711
774
|
`slug`,
|
|
712
775
|
`path`,
|
|
713
776
|
`title`,
|
|
@@ -718,62 +781,64 @@ var it, at = v((() => {
|
|
|
718
781
|
`children`,
|
|
719
782
|
`headings`
|
|
720
783
|
]);
|
|
784
|
+
})), K, q = y((() => {
|
|
785
|
+
K = class {};
|
|
721
786
|
}));
|
|
722
|
-
function
|
|
787
|
+
function ct(e) {
|
|
723
788
|
let t = e.endsWith(`.draft`) ? e.slice(0, -6) : e, n = t.match(/^(\d+)\.(.+)$/);
|
|
724
789
|
return n ? n[2] : t;
|
|
725
790
|
}
|
|
726
|
-
async function
|
|
727
|
-
let
|
|
728
|
-
for (let
|
|
729
|
-
if (
|
|
730
|
-
let
|
|
731
|
-
if (
|
|
732
|
-
let t =
|
|
733
|
-
for (let [e, t] of a)
|
|
734
|
-
} else if (extname(
|
|
735
|
-
let t =
|
|
736
|
-
|
|
791
|
+
async function lt(e, t) {
|
|
792
|
+
let n = /* @__PURE__ */ new Map(), r = await readdir(t, { withFileTypes: !0 });
|
|
793
|
+
for (let i of r) {
|
|
794
|
+
if (i.name.startsWith(`.`) || i.name.startsWith(`_`) || i.name === `node_modules` || i.name === `dist`) continue;
|
|
795
|
+
let r = join(t, i.name);
|
|
796
|
+
if (i.isDirectory()) {
|
|
797
|
+
let t = ct(i.name), a = await lt(e === `/` ? `/${t}` : `${e}/${t}`, r);
|
|
798
|
+
for (let [e, t] of a) n.set(e, t);
|
|
799
|
+
} else if (extname(i.name) === `.md`) {
|
|
800
|
+
let t = ct(i.name.replace(/\.md$/, ``)), a = t === `index` ? `` : t, o = a === `` ? e === `/` ? `/` : e : e === `/` ? `/${a}` : `${e}/${a}`;
|
|
801
|
+
n.set(o, r);
|
|
737
802
|
}
|
|
738
803
|
}
|
|
739
|
-
return
|
|
804
|
+
return n;
|
|
740
805
|
}
|
|
741
|
-
async function
|
|
742
|
-
let
|
|
806
|
+
async function ut(e, t) {
|
|
807
|
+
let n;
|
|
743
808
|
try {
|
|
744
|
-
|
|
809
|
+
n = JSON.parse(await readFile(join(t, `_navigation.json`), `utf8`));
|
|
745
810
|
} catch {
|
|
746
811
|
return;
|
|
747
812
|
}
|
|
748
|
-
|
|
813
|
+
dt(e, n);
|
|
749
814
|
}
|
|
750
|
-
function
|
|
815
|
+
function dt(e, t) {
|
|
751
816
|
let n = new Map(t.map((e, t) => [e.path, t]));
|
|
752
817
|
e.sort((e, t) => (n.get(e.path) ?? Infinity) - (n.get(t.path) ?? Infinity));
|
|
753
818
|
for (let n of e) if (n.children?.length) {
|
|
754
819
|
let e = t.find((e) => e.path === n.path);
|
|
755
|
-
e?.children &&
|
|
820
|
+
e?.children && dt(n.children, e.children);
|
|
756
821
|
}
|
|
757
822
|
}
|
|
758
|
-
var
|
|
759
|
-
|
|
823
|
+
var J, Y = y((() => {
|
|
824
|
+
st(), q(), J = class extends K {
|
|
760
825
|
dir;
|
|
761
826
|
constructor(e) {
|
|
762
827
|
super(), this.dir = e;
|
|
763
828
|
}
|
|
764
829
|
async load() {
|
|
765
|
-
let e = await
|
|
766
|
-
return await
|
|
830
|
+
let e = await it(this.dir);
|
|
831
|
+
return await ut(e, this.dir), {
|
|
767
832
|
tree: e,
|
|
768
|
-
fileMap: await
|
|
833
|
+
fileMap: await lt(`/`, this.dir)
|
|
769
834
|
};
|
|
770
835
|
}
|
|
771
836
|
async readContent(e) {
|
|
772
837
|
return readFile(e, `utf8`);
|
|
773
838
|
}
|
|
774
839
|
};
|
|
775
|
-
})),
|
|
776
|
-
|
|
840
|
+
})), X, ft = y((() => {
|
|
841
|
+
q(), Y(), X = class extends K {
|
|
777
842
|
src;
|
|
778
843
|
options;
|
|
779
844
|
_fs;
|
|
@@ -796,15 +861,15 @@ var q, J = v((() => {
|
|
|
796
861
|
break;
|
|
797
862
|
}
|
|
798
863
|
}
|
|
799
|
-
return this._fs = new
|
|
864
|
+
return this._fs = new J(i), this._fs.load();
|
|
800
865
|
}
|
|
801
866
|
async readContent(e) {
|
|
802
|
-
if (!this._fs) throw Error(`
|
|
867
|
+
if (!this._fs) throw Error(`GitSource: call load() before readContent()`);
|
|
803
868
|
return this._fs.readContent(e);
|
|
804
869
|
}
|
|
805
870
|
};
|
|
806
871
|
}));
|
|
807
|
-
function
|
|
872
|
+
function pt(e) {
|
|
808
873
|
let t = e, n = ``;
|
|
809
874
|
if (t.startsWith(`@`)) {
|
|
810
875
|
let e = t.indexOf(`/`, t.indexOf(`/`) + 1);
|
|
@@ -820,12 +885,12 @@ function ft(e) {
|
|
|
820
885
|
subdir: n
|
|
821
886
|
};
|
|
822
887
|
}
|
|
823
|
-
async function
|
|
888
|
+
async function mt(e, t) {
|
|
824
889
|
let n = t ? `https://registry.npmjs.org/${e}/${t}` : `https://registry.npmjs.org/${e}`, r = await fetch(n);
|
|
825
890
|
if (!r.ok) throw Error(`Failed to fetch package info for ${e}${t ? `@${t}` : ``}: ${r.status} ${r.statusText}`);
|
|
826
891
|
return r.json();
|
|
827
892
|
}
|
|
828
|
-
function
|
|
893
|
+
function ht(e) {
|
|
829
894
|
let t;
|
|
830
895
|
try {
|
|
831
896
|
t = new URL(e);
|
|
@@ -838,12 +903,7 @@ function mt(e) {
|
|
|
838
903
|
let r = t.pathname.match(/^\/((?:@[^/]+\/)?[^/]+)\/?$/);
|
|
839
904
|
if (r && !/^(package|settings|signup|login|org|search)$/.test(r[1])) return r[1];
|
|
840
905
|
}
|
|
841
|
-
var
|
|
842
|
-
function gt(e, t) {
|
|
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
|
-
}
|
|
906
|
+
var gt = y((() => {}));
|
|
847
907
|
function _t(e) {
|
|
848
908
|
try {
|
|
849
909
|
return new URL(e).hostname;
|
|
@@ -937,8 +997,8 @@ function xt(e, t) {
|
|
|
937
997
|
return;
|
|
938
998
|
}
|
|
939
999
|
}
|
|
940
|
-
var St, Ct =
|
|
941
|
-
|
|
1000
|
+
var St, Ct = y((() => {
|
|
1001
|
+
q(), gt(), St = class extends K {
|
|
942
1002
|
url;
|
|
943
1003
|
options;
|
|
944
1004
|
_contentCache = /* @__PURE__ */ new Map();
|
|
@@ -946,28 +1006,28 @@ var St, Ct = v((() => {
|
|
|
946
1006
|
_fileMap = /* @__PURE__ */ new Map();
|
|
947
1007
|
_npmPackage;
|
|
948
1008
|
constructor(e, t = {}) {
|
|
949
|
-
super(), this.url = e.replace(/\/+$/, ``), this._npmPackage =
|
|
1009
|
+
super(), this.url = e.replace(/\/+$/, ``), this._npmPackage = ht(this.url), this.options = t;
|
|
950
1010
|
}
|
|
951
1011
|
async load() {
|
|
952
1012
|
if (this._npmPackage) return this._loadNpm(this._npmPackage);
|
|
953
|
-
let
|
|
954
|
-
if (
|
|
1013
|
+
let t = await this._tryLlmsTxt();
|
|
1014
|
+
if (t) return this._tree = t, {
|
|
955
1015
|
tree: this._tree,
|
|
956
1016
|
fileMap: this._fileMap
|
|
957
1017
|
};
|
|
958
|
-
let
|
|
959
|
-
this._contentCache.set(`/`,
|
|
960
|
-
let
|
|
1018
|
+
let n = await this._fetch(this.url);
|
|
1019
|
+
this._contentCache.set(`/`, n);
|
|
1020
|
+
let r = {
|
|
961
1021
|
slug: ``,
|
|
962
1022
|
path: `/`,
|
|
963
|
-
title: parseMeta(
|
|
1023
|
+
title: parseMeta(n).title || _t(this.url),
|
|
964
1024
|
order: 0
|
|
965
|
-
}, { entries:
|
|
966
|
-
if (
|
|
967
|
-
|
|
968
|
-
for (let e of
|
|
1025
|
+
}, { entries: i, tocPaths: a } = bt(n, this.url);
|
|
1026
|
+
if (i.length > 0) {
|
|
1027
|
+
r.children = i;
|
|
1028
|
+
for (let e of i) this._fileMap.set(e.path, e.path);
|
|
969
1029
|
}
|
|
970
|
-
return this._tree = [
|
|
1030
|
+
return this._tree = [r], this._fileMap.set(`/`, `/`), a.size > 0 && await this._crawlTocPages(i, a), {
|
|
971
1031
|
tree: this._tree,
|
|
972
1032
|
fileMap: this._fileMap
|
|
973
1033
|
};
|
|
@@ -1013,18 +1073,18 @@ var St, Ct = v((() => {
|
|
|
1013
1073
|
}
|
|
1014
1074
|
}));
|
|
1015
1075
|
}
|
|
1016
|
-
async _loadNpm(
|
|
1017
|
-
let
|
|
1076
|
+
async _loadNpm(t) {
|
|
1077
|
+
let n;
|
|
1018
1078
|
try {
|
|
1019
|
-
let
|
|
1020
|
-
|
|
1021
|
-
} catch (
|
|
1022
|
-
|
|
1079
|
+
let e = await mt(t);
|
|
1080
|
+
n = e.readme || `# ${e.name || t}\n\n${e.description || `No README available.`}`;
|
|
1081
|
+
} catch (e) {
|
|
1082
|
+
n = `# Fetch Error\n\nFailed to fetch package \`${t}\`\n\n> ${e instanceof Error ? e.message : String(e)}`;
|
|
1023
1083
|
}
|
|
1024
|
-
return this._contentCache.set(`/`,
|
|
1084
|
+
return this._contentCache.set(`/`, n), this._fileMap.set(`/`, `/`), this._tree = [{
|
|
1025
1085
|
slug: ``,
|
|
1026
1086
|
path: `/`,
|
|
1027
|
-
title: parseMeta(
|
|
1087
|
+
title: parseMeta(n).title || t,
|
|
1028
1088
|
order: 0
|
|
1029
1089
|
}], {
|
|
1030
1090
|
tree: this._tree,
|
|
@@ -1041,18 +1101,12 @@ var St, Ct = v((() => {
|
|
|
1041
1101
|
} catch (t) {
|
|
1042
1102
|
return `# Fetch Error\n\nFailed to fetch \`${e}\`\n\n> ${t instanceof Error ? t.message : String(t)}`;
|
|
1043
1103
|
}
|
|
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;
|
|
1104
|
+
return t.ok ? await t.text() : `# ${t.status} ${t.statusText}\n\nFailed to fetch \`${e}\``;
|
|
1051
1105
|
}
|
|
1052
1106
|
};
|
|
1053
1107
|
}));
|
|
1054
1108
|
async function wt(e) {
|
|
1055
|
-
let { name: t, version: n, subdir: r } =
|
|
1109
|
+
let { name: t, version: n, subdir: r } = pt(e), i = await mt(t, n);
|
|
1056
1110
|
return {
|
|
1057
1111
|
name: i.name,
|
|
1058
1112
|
version: i.version,
|
|
@@ -1060,8 +1114,8 @@ async function wt(e) {
|
|
|
1060
1114
|
tar: i.dist.tarball
|
|
1061
1115
|
};
|
|
1062
1116
|
}
|
|
1063
|
-
var Tt, Et =
|
|
1064
|
-
|
|
1117
|
+
var Tt, Et = y((() => {
|
|
1118
|
+
q(), Y(), gt(), Tt = class extends K {
|
|
1065
1119
|
src;
|
|
1066
1120
|
options;
|
|
1067
1121
|
_fs;
|
|
@@ -1085,68 +1139,86 @@ var Tt, Et = v((() => {
|
|
|
1085
1139
|
break;
|
|
1086
1140
|
}
|
|
1087
1141
|
}
|
|
1088
|
-
return this._fs = new
|
|
1142
|
+
return this._fs = new J(a), this._fs.load();
|
|
1089
1143
|
}
|
|
1090
1144
|
async readContent(e) {
|
|
1091
|
-
if (!this._fs) throw Error(`
|
|
1145
|
+
if (!this._fs) throw Error(`NpmSource: call load() before readContent()`);
|
|
1092
1146
|
return this._fs.readContent(e);
|
|
1093
1147
|
}
|
|
1094
1148
|
};
|
|
1095
|
-
})), Dt = v((() => {
|
|
1096
|
-
K(), J(), dt(), Ct(), Et();
|
|
1097
1149
|
}));
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1150
|
+
function Dt(e) {
|
|
1151
|
+
return e.startsWith(`http://`) || e.startsWith(`https://`) ? new St(e) : e.startsWith(`gh:`) ? new X(e) : e.startsWith(`npm:`) ? new Tt(e) : new J(e);
|
|
1152
|
+
}
|
|
1153
|
+
var Ot = y((() => {
|
|
1154
|
+
Y(), ft(), Ct(), Et(), q();
|
|
1155
|
+
}));
|
|
1156
|
+
async function kt(e, t, n = {}) {
|
|
1157
|
+
let i = new G(typeof e == `string` ? Dt(e) : e);
|
|
1158
|
+
return await i.load(), await mkdir(t, { recursive: !0 }), await At(i, t, n), i;
|
|
1159
|
+
}
|
|
1160
|
+
async function At(e, i, a = {}) {
|
|
1161
|
+
let o = e.flat.find((e) => e.entry.path === `/`), c = [`# ${a.title ?? o?.entry.title ?? `Table of Contents`}`, ``], u = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Map();
|
|
1162
|
+
Mt(e.tree, ``, f);
|
|
1163
|
+
let p = /* @__PURE__ */ new Set();
|
|
1164
|
+
jt(e.tree, p);
|
|
1165
|
+
for (let o of e.flat) {
|
|
1166
|
+
if ((a.filter ? !a.filter(o) : o.entry.page === !1) || Nt.has(o.entry.path)) continue;
|
|
1167
|
+
let m = await e.getContent(o);
|
|
1168
|
+
if (m === void 0) continue;
|
|
1169
|
+
let h = a.plainText ? renderToText(m) : renderToMarkdown(m), g = f.get(o.entry.path) ?? o.entry.path, _ = o.entry.path === `/` || p.has(o.entry.path) ? o.entry.path === `/` ? `/index.md` : `${g}/index.md` : g.endsWith(`.md`) ? g : `${g}.md`, v = join(i, _);
|
|
1170
|
+
await mkdir(dirname(v), { recursive: !0 }), await writeFile(v, h, `utf8`), u.add(_.slice(1));
|
|
1171
|
+
let y = ` `.repeat(o.depth), b = o.entry.description ? `: ${o.entry.description}` : ``;
|
|
1172
|
+
c.push(`${y}- [${o.entry.title}](.${_})${b}`);
|
|
1109
1173
|
}
|
|
1110
|
-
let
|
|
1111
|
-
|
|
1174
|
+
let m = a.tocFile ?? `README.md`;
|
|
1175
|
+
u.has(m) && (m = `_${m}`), await writeFile(join(i, m), c.join(`
|
|
1112
1176
|
`) + `
|
|
1113
|
-
`, `utf8`), await writeFile(join(n, `_navigation.json`), JSON.stringify(t.tree, null, 2) + `
|
|
1114
1177
|
`, `utf8`);
|
|
1115
1178
|
}
|
|
1116
|
-
function
|
|
1117
|
-
for (let n of e) n.children?.length && (t.add(n.path),
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1179
|
+
function jt(e, t) {
|
|
1180
|
+
for (let n of e) n.children?.length && (t.add(n.path), jt(n.children, t));
|
|
1181
|
+
}
|
|
1182
|
+
function Mt(e, t, n) {
|
|
1183
|
+
for (let [r, i] of e.entries()) {
|
|
1184
|
+
let e = `${t}/${r}.${i.slug || `index`}`;
|
|
1185
|
+
n.set(i.path, e), i.children?.length && Mt(i.children, e, n);
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
var Nt, Pt = y((() => {
|
|
1189
|
+
Xe(), Ot(), Nt = new Set([`/llms.txt`, `/llms-full.txt`]);
|
|
1190
|
+
})), Ft = b({
|
|
1191
|
+
Collection: () => G,
|
|
1192
|
+
FSSource: () => J,
|
|
1193
|
+
GitSource: () => X,
|
|
1194
|
+
HTTPSource: () => St,
|
|
1195
|
+
NpmSource: () => Tt,
|
|
1196
|
+
Source: () => K,
|
|
1197
|
+
exportSource: () => kt,
|
|
1198
|
+
extractSnippets: () => Ze,
|
|
1199
|
+
resolveSource: () => Dt,
|
|
1200
|
+
writeCollection: () => At
|
|
1201
|
+
}), It = y((() => {
|
|
1202
|
+
Xe(), Qe(), Ot(), Pt();
|
|
1131
1203
|
}));
|
|
1132
|
-
async function
|
|
1133
|
-
if (
|
|
1134
|
-
if (!
|
|
1135
|
-
let {
|
|
1136
|
-
|
|
1204
|
+
async function Z(e) {
|
|
1205
|
+
if (Q) return Q;
|
|
1206
|
+
if (!Q) {
|
|
1207
|
+
let { Collection: t, GitSource: n } = await Promise.resolve().then(() => (It(), Ft));
|
|
1208
|
+
Q = new t(e?.source || new n(`gh:nitrojs/nitro/docs`, { subdir: `docs` })), await Q.load();
|
|
1137
1209
|
}
|
|
1138
|
-
return
|
|
1210
|
+
return Q;
|
|
1139
1211
|
}
|
|
1140
|
-
var
|
|
1141
|
-
W(),
|
|
1212
|
+
var Q, $ = y((() => {})), Lt = b({ default: () => Rt }), Rt, zt = y((() => {
|
|
1213
|
+
W(), $(), Rt = T(async () => ({
|
|
1142
1214
|
title: `Nitro`,
|
|
1143
|
-
toc: (await
|
|
1215
|
+
toc: (await Z()).tree
|
|
1144
1216
|
}));
|
|
1145
|
-
})),
|
|
1146
|
-
async function
|
|
1217
|
+
})), Bt = b({ default: () => Wt });
|
|
1218
|
+
async function Vt(e) {
|
|
1147
1219
|
let t = /<pre><code class="language-(\w+)">([\s\S]*?)<\/code><\/pre>/g, n = [];
|
|
1148
1220
|
for (let r of e.matchAll(t)) {
|
|
1149
|
-
let [e, t, i] = r, a =
|
|
1221
|
+
let [e, t, i] = r, a = Ut(i);
|
|
1150
1222
|
n.push(highlightText(a, t, !1).then((n) => ({
|
|
1151
1223
|
match: e,
|
|
1152
1224
|
result: `<pre><code class="language-${t}">${n}</code></pre>`
|
|
@@ -1159,103 +1231,55 @@ async function Rt(e) {
|
|
|
1159
1231
|
for (let { match: e, result: t } of await Promise.all(n)) r = r.replace(e, t);
|
|
1160
1232
|
return r;
|
|
1161
1233
|
}
|
|
1162
|
-
function
|
|
1234
|
+
function Ht(e) {
|
|
1163
1235
|
return e.replace(/<(h[1-6])>(.*?)<\/\1>/g, (e, t, n) => {
|
|
1164
1236
|
let r = n.replace(/<[^>]+>/g, ``).trim().toLowerCase().replace(/[^\w\s-]/g, ``).replace(/\s+/g, `-`);
|
|
1165
1237
|
return `<${t} id="${r}"><a href="#${r}">#</a>${n}</${t}>`;
|
|
1166
1238
|
});
|
|
1167
1239
|
}
|
|
1168
|
-
function
|
|
1240
|
+
function Ut(e) {
|
|
1169
1241
|
return e.replace(/&/g, `&`).replace(/</g, `<`).replace(/>/g, `>`).replace(/"/g, `"`).replace(/'/g, `'`);
|
|
1170
1242
|
}
|
|
1171
|
-
var
|
|
1172
|
-
W(),
|
|
1173
|
-
let { path: t } =
|
|
1243
|
+
var Wt, Gt = y((async () => {
|
|
1244
|
+
W(), $(), await init(), Wt = T(async (e) => {
|
|
1245
|
+
let { path: t } = me(e);
|
|
1174
1246
|
if (!t) return { error: `Missing ?path= query parameter` };
|
|
1175
|
-
let n = await (await
|
|
1247
|
+
let n = await (await Z()).resolvePage(t);
|
|
1176
1248
|
return n.raw ? {
|
|
1177
1249
|
path: t,
|
|
1178
|
-
html:
|
|
1250
|
+
html: Ht(await Vt(renderToHtml(n.raw)))
|
|
1179
1251
|
} : {
|
|
1180
1252
|
error: `Page not found`,
|
|
1181
1253
|
path: t
|
|
1182
1254
|
};
|
|
1183
1255
|
});
|
|
1184
|
-
})),
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
for (let e of t) {
|
|
1188
|
-
let t = a.indexOf(e);
|
|
1189
|
-
for (; t !== -1 && o.length < r * 2;) o.push(t), t = a.indexOf(e, t + e.length);
|
|
1190
|
-
}
|
|
1191
|
-
o.sort((e, t) => e - t);
|
|
1192
|
-
let s = [], c = -1;
|
|
1193
|
-
for (let t of o) {
|
|
1194
|
-
if (s.length >= r) break;
|
|
1195
|
-
let n = Math.max(0, t - i), a = Math.min(e.length, t + i);
|
|
1196
|
-
if (n <= c) continue;
|
|
1197
|
-
c = a;
|
|
1198
|
-
let o = e.slice(n, a).trim().replaceAll(/\s+/g, ` `);
|
|
1199
|
-
n > 0 && (o = `…` + o), a < e.length && (o += `…`), s.push(o);
|
|
1200
|
-
}
|
|
1201
|
-
return s;
|
|
1202
|
-
}
|
|
1203
|
-
var Wt, Gt = v((() => {
|
|
1204
|
-
W(), Z(), Wt = T(async (e) => {
|
|
1205
|
-
let { q: t, limit: n } = he(e);
|
|
1256
|
+
})), Kt = b({ default: () => qt }), qt, Jt = y((() => {
|
|
1257
|
+
W(), $(), It(), qt = T(async (e) => {
|
|
1258
|
+
let { q: t, limit: n } = me(e);
|
|
1206
1259
|
if (!t || t.length < 2) return { results: [] };
|
|
1207
|
-
let r = await
|
|
1208
|
-
for (let e of r.
|
|
1209
|
-
let t = e.
|
|
1210
|
-
o.
|
|
1211
|
-
path: e.entry.path,
|
|
1212
|
-
title:
|
|
1213
|
-
|
|
1214
|
-
snippets:
|
|
1215
|
-
|
|
1216
|
-
}
|
|
1217
|
-
for (let e of r.pages) {
|
|
1218
|
-
if (c.has(e.entry.path)) continue;
|
|
1219
|
-
let t = await r.getContent(e);
|
|
1220
|
-
if (!t) continue;
|
|
1221
|
-
let n = t.toLowerCase();
|
|
1222
|
-
if (!o.every((e) => n.includes(e))) continue;
|
|
1223
|
-
let i = 300, l, u = parseMeta$1(t);
|
|
1224
|
-
for (let e of u.headings || []) {
|
|
1225
|
-
let t = e.text.toLowerCase();
|
|
1226
|
-
if (o.every((e) => t.includes(e))) {
|
|
1227
|
-
i = t === a ? 150 : 200, l = e.text;
|
|
1228
|
-
break;
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
let d = Ut(renderToText$1(t), o);
|
|
1232
|
-
s.push({
|
|
1233
|
-
path: e.entry.path,
|
|
1234
|
-
title: e.entry.title,
|
|
1235
|
-
heading: l,
|
|
1236
|
-
snippets: d,
|
|
1237
|
-
score: i
|
|
1260
|
+
let r = await Z(), i = Math.min(Number(n) || 20, 50), a = t.toLowerCase().split(/\s+/).filter(Boolean), o = [];
|
|
1261
|
+
for await (let e of r.search(t)) {
|
|
1262
|
+
let t = await r.getContent(e.flat), n = t ? renderToText$1(t) : ``, i = n ? Ze(n, a) : [];
|
|
1263
|
+
o.push({
|
|
1264
|
+
path: e.flat.entry.path,
|
|
1265
|
+
title: e.flat.entry.title,
|
|
1266
|
+
heading: e.heading,
|
|
1267
|
+
snippets: i,
|
|
1268
|
+
score: e.score
|
|
1238
1269
|
});
|
|
1239
1270
|
}
|
|
1240
|
-
|
|
1241
|
-
if (e.snippets.length > 0) continue;
|
|
1242
|
-
let t = r.pages.find((t) => t.entry.path === e.path);
|
|
1243
|
-
if (!t) continue;
|
|
1244
|
-
let n = await r.getContent(t);
|
|
1245
|
-
n && (e.snippets = Ut(renderToText$1(n), o));
|
|
1246
|
-
}
|
|
1247
|
-
return s.sort((e, t) => e.score - t.score), { results: s.slice(0, i).map(({ score: e, ...t }) => t) };
|
|
1271
|
+
return o.sort((e, t) => e.score - t.score), { results: o.slice(0, i).map(({ score: e, ...t }) => t) };
|
|
1248
1272
|
});
|
|
1249
|
-
})),
|
|
1250
|
-
|
|
1273
|
+
})), Yt, Xt = y((() => {
|
|
1274
|
+
V(), Yt = () => new F(`<!doctype html>
|
|
1251
1275
|
<html lang="en">
|
|
1252
1276
|
<head>
|
|
1253
1277
|
<meta charset="UTF-8" />
|
|
1254
1278
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
1255
1279
|
<link rel="icon" type="image/svg+xml" href="/assets/logo-BLkVGWak.svg" />
|
|
1256
1280
|
<title></title>
|
|
1257
|
-
<style>/*! tailwindcss v4.2.
|
|
1258
|
-
@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>
|
|
1281
|
+
<style>/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
1282
|
+
@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)}.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
1283
|
<script type="module" crossorigin src="/assets/index-BC9qhYL0.js"><\/script>
|
|
1260
1284
|
</head>
|
|
1261
1285
|
<body class="h-screen flex flex-col bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-200">
|
|
@@ -1383,15 +1407,15 @@ var Wt, Gt = v((() => {
|
|
|
1383
1407
|
</body>
|
|
1384
1408
|
</html>
|
|
1385
1409
|
`, { headers: { "content-type": `text/html; charset=utf-8` } });
|
|
1386
|
-
})),
|
|
1387
|
-
function
|
|
1388
|
-
return
|
|
1410
|
+
})), Zt = b({ default: () => Qt });
|
|
1411
|
+
function Qt(e) {
|
|
1412
|
+
return Yt(e.req);
|
|
1389
1413
|
}
|
|
1390
|
-
var
|
|
1391
|
-
|
|
1414
|
+
var $t = y((() => {
|
|
1415
|
+
Xt();
|
|
1392
1416
|
}));
|
|
1393
|
-
|
|
1394
|
-
var
|
|
1417
|
+
V();
|
|
1418
|
+
var en = (() => {
|
|
1395
1419
|
let e = [{
|
|
1396
1420
|
name: `headers`,
|
|
1397
1421
|
route: `/assets/**`,
|
|
@@ -1407,19 +1431,19 @@ var Zt = (() => {
|
|
|
1407
1431
|
params: { _: i.slice(2).join(`/`) }
|
|
1408
1432
|
}), r;
|
|
1409
1433
|
};
|
|
1410
|
-
})(),
|
|
1434
|
+
})(), tn = E(() => Promise.resolve().then(() => (zt(), Lt))), nn = E(() => Gt().then(() => Bt)), rn = E(() => Promise.resolve().then(() => (Jt(), Kt))), an = E(() => Promise.resolve().then(() => ($t(), Zt))), on = (() => {
|
|
1411
1435
|
let e = {
|
|
1412
1436
|
route: `/api/meta`,
|
|
1413
|
-
handler:
|
|
1437
|
+
handler: tn
|
|
1414
1438
|
}, t = {
|
|
1415
1439
|
route: `/api/page`,
|
|
1416
|
-
handler:
|
|
1440
|
+
handler: nn
|
|
1417
1441
|
}, n = {
|
|
1418
1442
|
route: `/api/search`,
|
|
1419
|
-
handler:
|
|
1443
|
+
handler: rn
|
|
1420
1444
|
}, r = {
|
|
1421
1445
|
route: `/**`,
|
|
1422
|
-
handler:
|
|
1446
|
+
handler: an
|
|
1423
1447
|
};
|
|
1424
1448
|
return (i, a) => {
|
|
1425
1449
|
if (a.charCodeAt(a.length - 1) === 47 && (a = a.slice(0, -1) || `/`), a === `/api/meta`) return { data: e };
|
|
@@ -1431,14 +1455,14 @@ var Zt = (() => {
|
|
|
1431
1455
|
params: { _: o.slice(1).join(`/`) }
|
|
1432
1456
|
};
|
|
1433
1457
|
};
|
|
1434
|
-
})(),
|
|
1435
|
-
|
|
1436
|
-
var
|
|
1437
|
-
function
|
|
1438
|
-
let e =
|
|
1439
|
-
return e || (e =
|
|
1440
|
-
}
|
|
1441
|
-
function
|
|
1458
|
+
})(), sn = [D(Ge)].filter(Boolean);
|
|
1459
|
+
V();
|
|
1460
|
+
var cn = `default`;
|
|
1461
|
+
function ln() {
|
|
1462
|
+
let e = ln._instance;
|
|
1463
|
+
return e || (e = ln._instance = un(), globalThis.__nitro__ = globalThis.__nitro__ || {}, globalThis.__nitro__[cn] = e, e);
|
|
1464
|
+
}
|
|
1465
|
+
function un() {
|
|
1442
1466
|
let e = (e, t) => {
|
|
1443
1467
|
if (t?.event) {
|
|
1444
1468
|
let n = t.event.req.context?.nitro?.errors;
|
|
@@ -1447,7 +1471,7 @@ function on() {
|
|
|
1447
1471
|
context: t
|
|
1448
1472
|
});
|
|
1449
1473
|
}
|
|
1450
|
-
}, t =
|
|
1474
|
+
}, t = dn({ onError(e, t) {
|
|
1451
1475
|
return Ee(e, t);
|
|
1452
1476
|
} });
|
|
1453
1477
|
return {
|
|
@@ -1457,19 +1481,19 @@ function on() {
|
|
|
1457
1481
|
captureError: e
|
|
1458
1482
|
};
|
|
1459
1483
|
}
|
|
1460
|
-
function
|
|
1461
|
-
let t = new
|
|
1462
|
-
return t[`~findRoute`] = (e) =>
|
|
1484
|
+
function dn(e) {
|
|
1485
|
+
let t = new be(e);
|
|
1486
|
+
return t[`~findRoute`] = (e) => on(e.req.method, e.url.pathname), t[`~middleware`].push(...sn), t[`~getMiddleware`] = (e, n) => {
|
|
1463
1487
|
let r = e.url.pathname, i = e.req.method, a = [];
|
|
1464
1488
|
{
|
|
1465
|
-
let t =
|
|
1489
|
+
let t = fn(i, r);
|
|
1466
1490
|
e.context.routeRules = t?.routeRules, t?.routeRuleMiddleware.length && a.push(...t.routeRuleMiddleware);
|
|
1467
1491
|
}
|
|
1468
1492
|
return a.push(...t[`~middleware`]), n?.data?.middleware?.length && a.push(...n.data.middleware), a;
|
|
1469
1493
|
}, t;
|
|
1470
1494
|
}
|
|
1471
|
-
function
|
|
1472
|
-
let n =
|
|
1495
|
+
function fn(e, t) {
|
|
1496
|
+
let n = en(e, t);
|
|
1473
1497
|
if (!n?.length) return { routeRuleMiddleware: [] };
|
|
1474
1498
|
let r = {};
|
|
1475
1499
|
for (let e of n) for (let t of e.data) {
|
|
@@ -1498,13 +1522,13 @@ function cn(e, t) {
|
|
|
1498
1522
|
routeRuleMiddleware: i
|
|
1499
1523
|
};
|
|
1500
1524
|
}
|
|
1501
|
-
|
|
1502
|
-
async function
|
|
1503
|
-
let t =
|
|
1525
|
+
$();
|
|
1526
|
+
async function pn(e) {
|
|
1527
|
+
let t = ln(), n = await Z(e);
|
|
1504
1528
|
return {
|
|
1505
1529
|
fetch: t.fetch,
|
|
1506
1530
|
docs: n
|
|
1507
1531
|
};
|
|
1508
1532
|
}
|
|
1509
1533
|
//#endregion
|
|
1510
|
-
export {
|
|
1534
|
+
export { pn as createDocsServer };
|