@dogsbay/format-openapi 0.2.0-beta.115 → 0.2.0-beta.117

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.
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The spec references an embed names, in order. Each is the string the
3
+ * viewer would request, and whether it is resolved against the page URL
4
+ * (`window.location.pathname + "../api.yaml"`, or any relative URL) or the
5
+ * site root (`/api.yaml`). URLs (`https:`) are not returned.
6
+ */
7
+ export declare function embeddedSpecRefs(html: string): string[];
8
+ export interface EmbedSpecOptions {
9
+ /** The source root; the spec must be inside it once symlinks resolve. */
10
+ srcDir: string;
11
+ /** The page's docname: `reference/api/ams-api` (no suffix). */
12
+ docname: string;
13
+ /** Directories copied to the site root (Sphinx `html_extra_path`). */
14
+ extraDirs?: readonly string[];
15
+ /** Directories served at `/_static/` (Sphinx `html_static_path`). */
16
+ staticDirs?: readonly string[];
17
+ }
18
+ /**
19
+ * The source file a spec reference loads, as a `/`-separated path relative
20
+ * to `srcDir`, or null.
21
+ *
22
+ * A relative reference is resolved against the page URL. Sphinx serves a
23
+ * page at `/reference/api/ams-api/` (dirhtml) or `/reference/api/ams-api.html`
24
+ * (html), and the two resolve `../` differently, so both are tried. The site
25
+ * path is then looked up where Sphinx would have put that file: the source
26
+ * tree, `html_extra_path` (copied to the root) and `html_static_path`
27
+ * (served at `/_static/`). Last, a file of the same name next to the page.
28
+ */
29
+ export declare function resolveEmbeddedSpec(ref: string, opts: EmbedSpecOptions): string | null;
30
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAmBA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,qEAAqE;IACrE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CA8CtF"}
package/dist/embed.js ADDED
@@ -0,0 +1,135 @@
1
+ /**
2
+ * A spec embedded in a page by a JavaScript API viewer: Swagger UI, Redoc or
3
+ * RapiDoc. Importers drop raw `<script>`, which leaves such a page EMPTY:
4
+ * the reference was never in the page, the viewer drew it in the browser
5
+ * from a spec file. This finds that file so the importer can emit
6
+ * `:::openapi{spec="…"}` instead, and the site build renders the spec.
7
+ *
8
+ * No dependencies (it is imported by format-rst and format-myst, which do not
9
+ * need the spec parser), and nothing is fetched: only a file in the source
10
+ * tree is ever returned.
11
+ */
12
+ import { existsSync, realpathSync, statSync } from "node:fs";
13
+ import { join, posix, relative, sep } from "node:path";
14
+ const SPEC_FILE = /\.(ya?ml|json)$/i;
15
+ /** An embed is a few hundred bytes; a larger block is not scanned. Every
16
+ * pattern below is also linear: `[^<>]` cannot run on into the next tag. */
17
+ const MAX_HTML = 64 * 1024;
18
+ /**
19
+ * The spec references an embed names, in order. Each is the string the
20
+ * viewer would request, and whether it is resolved against the page URL
21
+ * (`window.location.pathname + "../api.yaml"`, or any relative URL) or the
22
+ * site root (`/api.yaml`). URLs (`https:`) are not returned.
23
+ */
24
+ export function embeddedSpecRefs(html) {
25
+ const refs = [];
26
+ if (html.length > MAX_HTML)
27
+ return refs;
28
+ const add = (ref) => {
29
+ if (!ref)
30
+ return;
31
+ const clean = ref.trim();
32
+ if (!clean || /^[a-z][a-z0-9+.-]*:|^\/\//i.test(clean))
33
+ return;
34
+ if (!SPEC_FILE.test(clean.split(/[?#]/)[0]))
35
+ return;
36
+ if (!refs.includes(clean))
37
+ refs.push(clean);
38
+ };
39
+ // Swagger UI: SwaggerUIBundle({ url: … }) / SwaggerUI({ url: … }), and
40
+ // `urls: [{ url: … }]`. The value may concatenate location.pathname with a
41
+ // relative literal; the literal is what matters.
42
+ if (/\bSwaggerUI(?:Bundle)?\s*\(/.test(html)) {
43
+ for (const m of html.matchAll(/\burl\s*:\s*([^,\n}]+)/g)) {
44
+ const literals = [...m[1].matchAll(/(["'`])((?:(?!\1)[^\\\n]|\\.)*)\1/g)].map((l) => l[2]);
45
+ add(literals.join(""));
46
+ }
47
+ }
48
+ // Redoc: Redoc.init("spec.yaml", …) and <redoc spec-url="…">.
49
+ for (const m of html.matchAll(/\bRedoc\.init\s*\(\s*(["'`])([^"'`\n]+)\1/g))
50
+ add(m[2]);
51
+ // Redoc and RapiDoc elements.
52
+ for (const m of html.matchAll(/<(?:redoc|rapi-doc)\b[^<>]*?\bspec-url\s*=\s*(["'])([^"'<>]+)\1/gi))
53
+ add(m[2]);
54
+ return refs;
55
+ }
56
+ /**
57
+ * The source file a spec reference loads, as a `/`-separated path relative
58
+ * to `srcDir`, or null.
59
+ *
60
+ * A relative reference is resolved against the page URL. Sphinx serves a
61
+ * page at `/reference/api/ams-api/` (dirhtml) or `/reference/api/ams-api.html`
62
+ * (html), and the two resolve `../` differently, so both are tried. The site
63
+ * path is then looked up where Sphinx would have put that file: the source
64
+ * tree, `html_extra_path` (copied to the root) and `html_static_path`
65
+ * (served at `/_static/`). Last, a file of the same name next to the page.
66
+ */
67
+ export function resolveEmbeddedSpec(ref, opts) {
68
+ const path = ref.split(/[?#]/)[0].replace(/\\/g, "/");
69
+ const docname = opts.docname.replace(/\\/g, "/");
70
+ const docDir = posix.dirname(docname) === "." ? "" : posix.dirname(docname);
71
+ const pageDirs = docname === "index" || docname.endsWith("/index") ? [docDir] : [docname, docDir];
72
+ const sitePaths = [];
73
+ if (path.startsWith("/")) {
74
+ sitePaths.push(path.replace(/^\/+/, ""));
75
+ }
76
+ else {
77
+ for (const base of pageDirs) {
78
+ const joined = posix.normalize(posix.join("/", base, path));
79
+ // posix.join("/", …) clamps at the root; a reference that climbs above
80
+ // it under one URL shape is simply not that shape.
81
+ if (climbsAbove(base, path))
82
+ continue;
83
+ sitePaths.push(joined.replace(/^\/+/, ""));
84
+ }
85
+ }
86
+ const candidates = [];
87
+ for (const p of sitePaths) {
88
+ candidates.push(join(opts.srcDir, p));
89
+ for (const d of opts.extraDirs ?? [])
90
+ candidates.push(join(d, p));
91
+ if (p.startsWith("_static/")) {
92
+ for (const d of opts.staticDirs ?? [])
93
+ candidates.push(join(d, p.slice("_static/".length)));
94
+ }
95
+ }
96
+ candidates.push(join(opts.srcDir, docDir, posix.basename(path)));
97
+ let realRoot;
98
+ try {
99
+ realRoot = realpathSync(opts.srcDir);
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ for (const c of candidates) {
105
+ if (!existsSync(c))
106
+ continue;
107
+ let real;
108
+ try {
109
+ real = realpathSync(c);
110
+ if (!statSync(real).isFile())
111
+ continue;
112
+ }
113
+ catch {
114
+ continue;
115
+ }
116
+ if (!real.startsWith(realRoot + sep))
117
+ continue;
118
+ return relative(realRoot, real).split(sep).join("/");
119
+ }
120
+ return null;
121
+ }
122
+ /** Does `rel`, resolved from the directory `base`, go above the root? */
123
+ function climbsAbove(base, rel) {
124
+ let depth = base ? base.split("/").filter(Boolean).length : 0;
125
+ for (const seg of rel.split("/")) {
126
+ if (seg === "..") {
127
+ if (--depth < 0)
128
+ return true;
129
+ }
130
+ else if (seg && seg !== ".")
131
+ depth++;
132
+ }
133
+ return false;
134
+ }
135
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { SchemaProperty, Parameter, ResponseDef, CodeSample, EndpointProps, } from "./types.js";
2
- export { parseOpenApiSpec, detectOpenApiSource, detectSpecPath } from "./parse.js";
3
- export type { ParseOpenApiOptions } from "./parse.js";
2
+ export { parseOpenApiSpec, detectOpenApiSource, detectSpecPath, openApiEmbed } from "./parse.js";
3
+ export type { ParseOpenApiOptions, OpenApiEmbed } from "./parse.js";
4
4
  export { operationToSlug, slugifyTag } from "./slug.js";
5
5
  export { resolveCodeSamples } from "./code-samples.js";
6
6
  export { plugin } from "./cli.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjG,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { parseOpenApiSpec, detectOpenApiSource, detectSpecPath } from "./parse.js";
1
+ export { parseOpenApiSpec, detectOpenApiSource, detectSpecPath, openApiEmbed } from "./parse.js";
2
2
  export { operationToSlug, slugifyTag } from "./slug.js";
3
3
  export { resolveCodeSamples } from "./code-samples.js";
4
4
  export { plugin } from "./cli.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGjG,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
package/dist/parse.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ExportPage, NavItem } from "@dogsbay/types";
1
+ import type { ExportPage, Heading, NavItem, TreeNode } from "@dogsbay/types";
2
2
  /** Auto-detect spec location given the configured source path. */
3
3
  export declare function detectSpecPath(sourcePath: string): string | null;
4
4
  /**
@@ -17,4 +17,25 @@ export declare function parseOpenApiSpec(sourcePath: string, options?: ParseOpen
17
17
  pages: ExportPage[];
18
18
  nav: NavItem[];
19
19
  }>;
20
+ export interface OpenApiEmbed {
21
+ /** Version line, description, then one section per tag of endpoint nodes. */
22
+ tree: TreeNode[];
23
+ /** One entry per tag section, for the page's table of contents. */
24
+ headings: Heading[];
25
+ operations: number;
26
+ }
27
+ /**
28
+ * A whole spec as the BODY of one page: what Swagger UI or Redoc show when a
29
+ * page embeds them. The info version and description, then a section per tag
30
+ * (declared order, then first use; untagged operations last, under "Other"),
31
+ * each holding its operations as `endpoint` nodes in document order.
32
+ *
33
+ * `parseOpenApiSpec` is the other shape — a page per operation — for a spec
34
+ * that IS the source. This one is for a spec a prose page points at.
35
+ */
36
+ export declare function openApiEmbed(specPath: string, options?: {
37
+ level?: number;
38
+ /** Ids the page already uses: the embed's headings get others. */
39
+ usedIds?: Iterable<string>;
40
+ }): Promise<OpenApiEmbed>;
20
41
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,UAAU,EAEV,OAAO,EAER,MAAM,gBAAgB,CAAC;AAwBxB,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+DhE;AAyCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CA4HlD"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAwBxB,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+DhE;AAyCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAqFlD;AAiED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,mEAAmE;IACnE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACvB,GACL,OAAO,CAAC,YAAY,CAAC,CA4DvB"}
package/dist/parse.js CHANGED
@@ -19,7 +19,8 @@
19
19
  import { existsSync, readFileSync, statSync } from "node:fs";
20
20
  import { readFile } from "node:fs/promises";
21
21
  import { resolve, join, isAbsolute } from "node:path";
22
- import { dereference } from "@scalar/openapi-parser";
22
+ import { dereference, upgrade } from "@scalar/openapi-parser";
23
+ import MarkdownIt from "markdown-it";
23
24
  import { parse as parseYaml } from "yaml";
24
25
  import { operationToSlug, slugifyTag } from "./slug.js";
25
26
  import { resolveCodeSamples } from "./code-samples.js";
@@ -159,6 +160,76 @@ export async function parseOpenApiSpec(sourcePath, options = {}) {
159
160
  throw new Error(`OpenAPI spec not found at ${sourcePath}. Looked for openapi.{yaml,yml,json} ` +
160
161
  `and spec.{yaml,yml,json} (or expected a direct file path / URL).`);
161
162
  }
163
+ const spec = await loadSpec(specPath);
164
+ const hrefPrefix = normalisePrefix(options.hrefPrefix);
165
+ const pages = [];
166
+ // Collect tag descriptions (from spec.tags[]) for tag overview pages.
167
+ const tagDescriptions = new Map();
168
+ for (const t of spec.tags || []) {
169
+ if (t?.name)
170
+ tagDescriptions.set(t.name, t.description || "");
171
+ }
172
+ const tagToOps = new Map();
173
+ const untagged = [];
174
+ for (const op of collectOperations(spec)) {
175
+ const { method, path, operation, props } = op;
176
+ const primaryTag = props.tags?.[0];
177
+ const tagSlug = primaryTag ? slugifyTag(primaryTag) : "";
178
+ const opSlug = operationToSlug(method, path, operation.operationId);
179
+ const slug = tagSlug ? `${tagSlug}/${opSlug}` : opSlug;
180
+ const title = operation.summary || `${method.toUpperCase()} ${path}`;
181
+ const tree = [
182
+ {
183
+ type: "endpoint",
184
+ props: props,
185
+ },
186
+ ];
187
+ const headings = [{ depth: 1, slug: opSlug, text: title }];
188
+ pages.push({
189
+ slug,
190
+ title,
191
+ tree,
192
+ headings,
193
+ });
194
+ const summary = {
195
+ slug,
196
+ title,
197
+ method,
198
+ path,
199
+ deprecated: operation.deprecated === true,
200
+ };
201
+ if (primaryTag) {
202
+ const arr = tagToOps.get(primaryTag) || [];
203
+ arr.push(summary);
204
+ tagToOps.set(primaryTag, arr);
205
+ }
206
+ else {
207
+ untagged.push(summary);
208
+ }
209
+ }
210
+ // Tag overview pages.
211
+ for (const [tagName, ops] of tagToOps) {
212
+ const tagSlug = slugifyTag(tagName);
213
+ const description = tagDescriptions.get(tagName) || "";
214
+ pages.push(buildTagPage(tagName, tagSlug, description, ops));
215
+ }
216
+ // Root info page.
217
+ const info = spec.info || {};
218
+ pages.push(buildInfoPage(info.title || "API Reference", info.description || "", info.version || ""));
219
+ // Build nav: tag groups in declaration order, with operations as
220
+ // children. Untagged operations land under a synthetic "Other" group
221
+ // so they're discoverable but visually separated.
222
+ const nav = buildNav(spec, pages, tagToOps, untagged, hrefPrefix);
223
+ return { pages, nav };
224
+ }
225
+ /**
226
+ * Read, parse and dereference a spec. Swagger 2.0 is upgraded to OpenAPI 3
227
+ * first: everything below reads the 3.x shape (`requestBody`, response
228
+ * `content`, `servers`), so a 2.0 spec parsed without the upgrade lost every
229
+ * body parameter and response schema while still producing plausible-looking
230
+ * pages. Canonical's Anbox Cloud API specs are 2.0.
231
+ */
232
+ async function loadSpec(specPath) {
162
233
  const raw = await readSpecText(specPath);
163
234
  let parsed;
164
235
  try {
@@ -167,37 +238,27 @@ export async function parseOpenApiSpec(sourcePath, options = {}) {
167
238
  catch {
168
239
  parsed = parseYaml(raw);
169
240
  }
241
+ if (typeof parsed?.swagger === "string" && parsed.swagger.startsWith("2")) {
242
+ parsed = upgrade(parsed).specification;
243
+ }
170
244
  const { schema: spec } = await dereference(parsed);
171
245
  if (!spec) {
172
246
  throw new Error(`Failed to dereference OpenAPI spec at ${specPath}`);
173
247
  }
248
+ return spec;
249
+ }
250
+ /** Every operation in the spec, in document order, as `endpoint` props. */
251
+ function collectOperations(spec) {
174
252
  const baseUrl = spec.servers?.[0]?.url || "";
175
- const hrefPrefix = normalisePrefix(options.hrefPrefix);
176
- const pages = [];
177
- // Collect tag descriptions (from spec.tags[]) for tag overview pages.
178
- const tagDescriptions = new Map();
179
- for (const t of spec.tags || []) {
180
- if (t?.name)
181
- tagDescriptions.set(t.name, t.description || "");
182
- }
183
- // Walk operations.
184
- const paths = spec.paths || {};
185
- const tagToOps = new Map();
186
- const untagged = [];
187
- for (const [path, pathItem] of Object.entries(paths)) {
253
+ const out = [];
254
+ for (const [path, pathItem] of Object.entries(spec.paths || {})) {
188
255
  if (!pathItem)
189
256
  continue;
190
257
  for (const method of HTTP_METHODS) {
191
258
  const operation = pathItem[method];
192
259
  if (!operation)
193
260
  continue;
194
- const opTags = Array.isArray(operation.tags)
195
- ? operation.tags
196
- : [];
197
- const primaryTag = opTags[0];
198
- const tagSlug = primaryTag ? slugifyTag(primaryTag) : "";
199
- const opSlug = operationToSlug(method, path, operation.operationId);
200
- const slug = tagSlug ? `${tagSlug}/${opSlug}` : opSlug;
261
+ const opTags = Array.isArray(operation.tags) ? operation.tags : [];
201
262
  const props = {
202
263
  method,
203
264
  path,
@@ -212,51 +273,122 @@ export async function parseOpenApiSpec(sourcePath, options = {}) {
212
273
  responses: extractResponses(operation),
213
274
  codeSamples: resolveCodeSamples(operation, method, path, baseUrl),
214
275
  };
215
- const title = operation.summary || `${method.toUpperCase()} ${path}`;
216
- const tree = [
217
- {
218
- type: "endpoint",
219
- props: props,
220
- },
221
- ];
222
- const headings = [{ depth: 1, slug: opSlug, text: title }];
223
- pages.push({
224
- slug,
225
- title,
226
- tree,
227
- headings,
228
- });
229
- const summary = {
230
- slug,
231
- title,
232
- method,
233
- path,
234
- deprecated: operation.deprecated === true,
235
- };
236
- if (primaryTag) {
237
- const arr = tagToOps.get(primaryTag) || [];
238
- arr.push(summary);
239
- tagToOps.set(primaryTag, arr);
240
- }
241
- else {
242
- untagged.push(summary);
243
- }
276
+ out.push({ method, path, operation, props });
244
277
  }
245
278
  }
246
- // Tag overview pages.
247
- for (const [tagName, ops] of tagToOps) {
248
- const tagSlug = slugifyTag(tagName);
249
- const description = tagDescriptions.get(tagName) || "";
250
- pages.push(buildTagPage(tagName, tagSlug, description, ops));
251
- }
252
- // Root info page.
279
+ return out;
280
+ }
281
+ /**
282
+ * A whole spec as the BODY of one page: what Swagger UI or Redoc show when a
283
+ * page embeds them. The info version and description, then a section per tag
284
+ * (declared order, then first use; untagged operations last, under "Other"),
285
+ * each holding its operations as `endpoint` nodes in document order.
286
+ *
287
+ * `parseOpenApiSpec` is the other shape — a page per operation — for a spec
288
+ * that IS the source. This one is for a spec a prose page points at.
289
+ */
290
+ export async function openApiEmbed(specPath, options = {}) {
291
+ const spec = await loadSpec(specPath);
292
+ const level = Math.min(6, Math.max(2, options.level ?? 2));
293
+ const tree = [];
294
+ const headings = [];
295
+ const used = new Set(options.usedIds ?? []);
296
+ // A description's own headings go under the section that holds it, with
297
+ // ids, and into the outline (a `# Title` was a second H1).
298
+ const describe = (text, minLevel) => {
299
+ const d = descriptionHtml(text, minLevel, used);
300
+ headings.push(...d.headings);
301
+ tree.push({ type: "prose", html: d.html });
302
+ };
253
303
  const info = spec.info || {};
254
- pages.push(buildInfoPage(info.title || "API Reference", info.description || "", info.version || ""));
255
- // Build nav: tag groups in declaration order, with operations as
256
- // children. Untagged operations land under a synthetic "Other" group
257
- // so they're discoverable but visually separated.
258
- const nav = buildNav(spec, pages, tagToOps, untagged, hrefPrefix);
259
- return { pages, nav };
304
+ if (info.version) {
305
+ tree.push({
306
+ type: "prose",
307
+ html: `<p class="text-sm text-muted-foreground">Version ${escapeHtml(String(info.version))}</p>`,
308
+ });
309
+ }
310
+ if (typeof info.description === "string" && info.description.trim()) {
311
+ describe(info.description, level);
312
+ }
313
+ const tagDescriptions = new Map();
314
+ for (const t of spec.tags || []) {
315
+ if (t?.name)
316
+ tagDescriptions.set(t.name, t.description || "");
317
+ }
318
+ const groups = new Map();
319
+ for (const t of tagDescriptions.keys())
320
+ groups.set(t, []);
321
+ const untagged = [];
322
+ const operations = collectOperations(spec);
323
+ for (const { props } of operations) {
324
+ const node = { type: "endpoint", props: props };
325
+ const tag = props.tags?.[0];
326
+ if (!tag) {
327
+ untagged.push(node);
328
+ continue;
329
+ }
330
+ if (!groups.has(tag))
331
+ groups.set(tag, []);
332
+ groups.get(tag).push(node);
333
+ }
334
+ if (untagged.length)
335
+ groups.set("\u0000other", untagged);
336
+ for (const [tag, nodes] of groups) {
337
+ if (!nodes.length)
338
+ continue;
339
+ const text = tag === "\u0000other" ? "Other" : tag;
340
+ const id = uniqueId(slugifyTag(text) || "section", used);
341
+ tree.push({
342
+ type: "heading",
343
+ props: { level, id },
344
+ inline: [{ type: "text", text: text }],
345
+ });
346
+ headings.push({ depth: level, slug: id, text });
347
+ const description = tagDescriptions.get(tag);
348
+ if (description)
349
+ describe(description, level + 1);
350
+ tree.push(...nodes);
351
+ }
352
+ return { tree, headings, operations: operations.length };
353
+ }
354
+ function uniqueId(base, used) {
355
+ let id = base;
356
+ for (let n = 2; used.has(id); n++)
357
+ id = `${base}-${n}`;
358
+ used.add(id);
359
+ return id;
360
+ }
361
+ /**
362
+ * A description (CommonMark) → HTML with its headings shifted so the
363
+ * highest is `minLevel`, each given a unique id, and listed for the TOC.
364
+ * Raw HTML stays off (see `md`).
365
+ */
366
+ function descriptionHtml(text, minLevel, used) {
367
+ const tokens = md.parse(text, {});
368
+ const levels = tokens.filter((t) => t.type === "heading_open").map((t) => Number(t.tag.slice(1)));
369
+ const headings = [];
370
+ if (levels.length) {
371
+ const shift = Math.max(0, minLevel - Math.min(...levels));
372
+ for (let i = 0; i < tokens.length; i++) {
373
+ const t = tokens[i];
374
+ if (t.type !== "heading_open")
375
+ continue;
376
+ const depth = Math.min(6, Number(t.tag.slice(1)) + shift);
377
+ const inline = tokens[i + 1];
378
+ const label = (inline?.children ?? [])
379
+ .filter((c) => c.type === "text" || c.type === "code_inline")
380
+ .map((c) => c.content)
381
+ .join("")
382
+ .trim();
383
+ const id = uniqueId(slugifyTag(label) || "section", used);
384
+ t.tag = `h${depth}`;
385
+ t.attrSet("id", id);
386
+ if (tokens[i + 2]?.type === "heading_close")
387
+ tokens[i + 2].tag = `h${depth}`;
388
+ headings.push({ depth, slug: id, text: label });
389
+ }
390
+ }
391
+ return { html: md.renderer.render(tokens, md.options, {}).trim(), headings };
260
392
  }
261
393
  async function readSpecText(specPath) {
262
394
  if (specPath.startsWith("http://") || specPath.startsWith("https://")) {
@@ -275,47 +407,104 @@ function normalisePrefix(p) {
275
407
  return "";
276
408
  return p.replace(/\/+$/, "");
277
409
  }
278
- function schemaToType(schema) {
410
+ /** The one non-null type of a schema: OpenAPI 3.1 (and an upgraded 2.0
411
+ * spec) writes a nullable object as `type: [object, "null"]`. */
412
+ function primaryType(schema) {
413
+ if (!schema)
414
+ return undefined;
415
+ if (!Array.isArray(schema.type))
416
+ return schema.type;
417
+ const types = schema.type.filter((t) => t !== "null");
418
+ return types.length === 1 ? types[0] : undefined;
419
+ }
420
+ function schemaToType(schema, depth = 0) {
279
421
  if (!schema)
280
422
  return "any";
423
+ // An array of itself (a cycle once dereferenced) has no finite name.
424
+ if (depth > SCHEMA_MAX_DEPTH)
425
+ return "any";
426
+ // OpenAPI 3.1 (and a Swagger 2.0 spec upgraded to it) writes nullable as
427
+ // a type list: `type: [string, "null"]`.
428
+ if (Array.isArray(schema.type)) {
429
+ const types = schema.type.filter((t) => t !== "null");
430
+ if (types.length === 1)
431
+ return schemaToType({ ...schema, type: types[0] }, depth + 1);
432
+ return types.length ? types.join(" | ") : "null";
433
+ }
281
434
  if (schema.type === "array") {
282
- const itemType = schema.items ? schemaToType(schema.items) : "any";
435
+ const itemType = schema.items ? schemaToType(schema.items, depth + 1) : "any";
283
436
  return `${itemType}[]`;
284
437
  }
285
438
  return schema.type || "any";
286
439
  }
287
- function extractSchemaProperties(schema, requiredFields) {
440
+ /**
441
+ * Bounds on walking one schema. A dereferenced spec is a GRAPH: a
442
+ * self-referencing schema is a cycle (the walk overflowed the stack), and
443
+ * eight properties that each reference the level below grow 8× per level
444
+ * (a 2.2 KB spec made 18 MB of tree at depth 6). Past a bound the walk stops
445
+ * and the property shows without children.
446
+ */
447
+ const SCHEMA_MAX_DEPTH = 10;
448
+ const SCHEMA_MAX_NODES = 2000;
449
+ const newWalk = () => ({ nodes: SCHEMA_MAX_NODES, depth: 0, ancestors: new Set() });
450
+ /** Run `f` one level into `schema`, or return `empty` past a bound. */
451
+ function descend(walk, schema, empty, f) {
452
+ if (!schema || typeof schema !== "object")
453
+ return f();
454
+ if (walk.depth >= SCHEMA_MAX_DEPTH || walk.nodes <= 0 || walk.ancestors.has(schema))
455
+ return empty;
456
+ walk.depth++;
457
+ walk.ancestors.add(schema);
458
+ try {
459
+ return f();
460
+ }
461
+ finally {
462
+ walk.depth--;
463
+ walk.ancestors.delete(schema);
464
+ }
465
+ }
466
+ function extractSchemaProperties(schema, requiredFields, walk = newWalk()) {
288
467
  if (!schema?.properties)
289
468
  return [];
469
+ return descend(walk, schema, [], () => propertiesOf(schema, requiredFields, walk));
470
+ }
471
+ function propertiesOf(schema, requiredFields, walk) {
290
472
  const required = requiredFields || schema.required || [];
291
- return Object.entries(schema.properties).map(([name, prop]) => {
292
- const result = {
293
- name,
294
- type: schemaToType(prop),
295
- required: required.includes(name),
296
- };
297
- if (prop.description)
298
- result.description = prop.description;
299
- if (prop.nullable)
300
- result.nullable = true;
301
- if (prop.format)
302
- result.format = prop.format;
303
- if (prop.enum)
304
- result.enum = prop.enum;
305
- if (prop.default !== undefined)
306
- result.default = prop.default;
307
- if (prop.example !== undefined)
308
- result.example = prop.example;
309
- if (prop.type === "object" && prop.properties) {
310
- result.properties = extractSchemaProperties(prop);
311
- }
312
- if (prop.type === "array" && prop.items) {
313
- if (prop.items.type === "object" && prop.items.properties) {
314
- result.items = extractSchemaProperties(prop.items);
315
- }
473
+ const out = [];
474
+ for (const [name, prop] of Object.entries(schema.properties)) {
475
+ if (walk.nodes-- <= 0)
476
+ break;
477
+ out.push(propertyOf(name, prop ?? {}, required, walk));
478
+ }
479
+ return out;
480
+ }
481
+ function propertyOf(name, prop, required, walk) {
482
+ const result = {
483
+ name,
484
+ type: schemaToType(prop),
485
+ required: required.includes(name),
486
+ };
487
+ if (prop.description)
488
+ result.description = prop.description;
489
+ if (prop.nullable)
490
+ result.nullable = true;
491
+ if (prop.format)
492
+ result.format = prop.format;
493
+ if (prop.enum)
494
+ result.enum = prop.enum;
495
+ if (prop.default !== undefined)
496
+ result.default = prop.default;
497
+ if (prop.example !== undefined)
498
+ result.example = prop.example;
499
+ if (primaryType(prop) === "object" && prop.properties) {
500
+ result.properties = extractSchemaProperties(prop, undefined, walk);
501
+ }
502
+ if (primaryType(prop) === "array" && prop.items) {
503
+ if (primaryType(prop.items) === "object" && prop.items.properties) {
504
+ result.items = extractSchemaProperties(prop.items, undefined, walk);
316
505
  }
317
- return result;
318
- });
506
+ }
507
+ return result;
319
508
  }
320
509
  function extractParameters(operation, pathItem) {
321
510
  const params = [];
@@ -382,7 +571,7 @@ function extractResponses(operation) {
382
571
  result.contentType = contentTypeKey;
383
572
  if (mediaType?.schema) {
384
573
  const rawSchema = mediaType.schema;
385
- const schema = rawSchema.type === "array" && rawSchema.items
574
+ const schema = primaryType(rawSchema) === "array" && rawSchema.items
386
575
  ? rawSchema.items
387
576
  : rawSchema;
388
577
  result.schema = extractSchemaProperties(schema);
@@ -393,23 +582,28 @@ function extractResponses(operation) {
393
582
  })
394
583
  .sort((a, b) => a.status.localeCompare(b.status));
395
584
  }
396
- function generateExampleFromSchema(schema) {
585
+ function generateExampleFromSchema(schema, walk = newWalk()) {
397
586
  if (!schema)
398
587
  return undefined;
588
+ if (walk.nodes-- <= 0)
589
+ return null;
590
+ return descend(walk, schema, null, () => exampleOf(schema, walk));
591
+ }
592
+ function exampleOf(schema, walk) {
399
593
  if (schema.example !== undefined)
400
594
  return schema.example;
401
- switch (schema.type) {
595
+ switch (primaryType(schema)) {
402
596
  case "object": {
403
597
  if (!schema.properties)
404
598
  return {};
405
599
  const obj = {};
406
600
  for (const [name, prop] of Object.entries(schema.properties)) {
407
- obj[name] = generateExampleFromSchema(prop);
601
+ obj[name] = generateExampleFromSchema(prop, walk);
408
602
  }
409
603
  return obj;
410
604
  }
411
605
  case "array":
412
- return schema.items ? [generateExampleFromSchema(schema.items)] : [];
606
+ return schema.items ? [generateExampleFromSchema(schema.items, walk)] : [];
413
607
  case "string": {
414
608
  if (schema.enum)
415
609
  return schema.enum[0];
@@ -442,12 +636,13 @@ function buildTagPage(tagName, tagSlug, description, ops) {
442
636
  {
443
637
  type: "heading",
444
638
  props: { level: 1, id: tagSlug },
445
- children: [{ type: "prose", html: escapeHtml(tagName) }],
639
+ inline: [{ type: "text", text: tagName }],
446
640
  },
447
641
  ];
448
- if (description) {
449
- tree.push({ type: "prose", html: paragraphHtml(description) });
450
- }
642
+ const used = new Set([tagSlug]);
643
+ const described = description ? descriptionHtml(description, 2, used) : null;
644
+ if (described)
645
+ tree.push({ type: "prose", html: described.html });
451
646
  const items = ops.map((op) => ({
452
647
  type: "list-item",
453
648
  children: [
@@ -462,7 +657,7 @@ function buildTagPage(tagName, tagSlug, description, ops) {
462
657
  slug: tagSlug,
463
658
  title: tagName,
464
659
  tree,
465
- headings: [{ depth: 1, slug: tagSlug, text: tagName }],
660
+ headings: [{ depth: 1, slug: tagSlug, text: tagName }, ...(described?.headings ?? [])],
466
661
  };
467
662
  }
468
663
  function buildInfoPage(title, description, version) {
@@ -470,7 +665,7 @@ function buildInfoPage(title, description, version) {
470
665
  {
471
666
  type: "heading",
472
667
  props: { level: 1, id: "api-reference" },
473
- children: [{ type: "prose", html: escapeHtml(title) }],
668
+ inline: [{ type: "text", text: title }],
474
669
  },
475
670
  ];
476
671
  if (version) {
@@ -479,14 +674,14 @@ function buildInfoPage(title, description, version) {
479
674
  html: `<p class="text-sm text-muted-foreground">Version ${escapeHtml(version)}</p>`,
480
675
  });
481
676
  }
482
- if (description) {
483
- tree.push({ type: "prose", html: paragraphHtml(description) });
484
- }
677
+ const described = description ? descriptionHtml(description, 2, new Set(["api-reference"])) : null;
678
+ if (described)
679
+ tree.push({ type: "prose", html: described.html });
485
680
  return {
486
681
  slug: "index",
487
682
  title,
488
683
  tree,
489
- headings: [{ depth: 1, slug: "api-reference", text: title }],
684
+ headings: [{ depth: 1, slug: "api-reference", text: title }, ...(described?.headings ?? [])],
490
685
  };
491
686
  }
492
687
  function buildNav(spec, pages, tagToOps, untagged, hrefPrefix) {
@@ -560,7 +755,10 @@ function escapeHtml(s) {
560
755
  function escapeAttr(s) {
561
756
  return s.replace(/&/g, "&amp;").replace(/"/g, "&quot;");
562
757
  }
563
- function paragraphHtml(text) {
564
- return `<p>${escapeHtml(text)}</p>`;
565
- }
758
+ /**
759
+ * A spec description (CommonMark, per OpenAPI) → HTML, raw HTML off: a `<`
760
+ * in the spec is escaped, and markdown-it refuses `javascript:` links.
761
+ * Plain-text paragraphs showed a spec's `## Authentication` literally.
762
+ */
763
+ const md = new MarkdownIt({ html: false, linkify: false });
566
764
  //# sourceMappingURL=parse.js.map
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAc1C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,YAAY,GAAG;IACnB,KAAK;IACL,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;CACD,CAAC;AAEX,iFAAiF;AACjF,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEzC,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1E,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,yEAAyE;QACzE,0EAA0E;QAC1E,yDAAyD;QACzD,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,kEAAkE;QAClE,EAAE;QACF,2EAA2E;QAC3E,wEAAwE;QACxE,2EAA2E;QAC3E,mEAAmE;QACnE,wEAAwE;QACxE,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC;YACvD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QACD,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,yEAAyE;YACzE,wEAAwE;YACxE,gEAAgE;YAChE,oCAAoC;YACpC,MAAM,UAAU,GAAG;gBACjB,cAAc;gBACd,aAAa;gBACb,cAAc;gBACd,cAAc;gBACd,aAAa;gBACb,cAAc;gBACd,WAAW;gBACX,UAAU;gBACV,WAAW;aACZ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,4DAA4D;YAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,gEAAgE;YAChE,uEAAuE;YACvE,+DAA+D;YAC/D,gEAAgE;YAChE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,CACL,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,oEAAoE;IACpE,sDAAsD;IACtD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAkB,EAClB,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,6BAA6B,UAAU,uCAAuC;YAC5E,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,sEAAsE;IACtE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,CAAC,IAAK,IAAY,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,EAAE,IAAI;YAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IACvD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;QACrE,MAAM,IAAI,GAAe;YACvB;gBACE,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAA2C;aACnD;SACF,CAAC;QACF,MAAM,QAAQ,GAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,OAAO,GAAqB;YAChC,IAAI;YACJ,KAAK;YACL,MAAM;YACN,IAAI;YACJ,UAAU,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI;SAC1C,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,kBAAkB;IAClB,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,KAAK,CAAC,IAAI,CACR,aAAa,CACX,IAAI,CAAC,KAAK,IAAI,eAAe,EAC7B,IAAI,CAAC,WAAW,IAAI,EAAE,EACtB,IAAI,CAAC,OAAO,IAAI,EAAE,CACnB,CACF,CAAC;IAEF,iEAAiE;IACjE,qEAAqE;IACrE,kDAAkD;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAElE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,IAAS;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,MAAM,GAAa,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAkB;gBAC3B,MAAM;gBACN,IAAI;gBACJ,OAAO;gBACP,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,SAAS;gBACvC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS;gBAC/C,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS;gBAC/C,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC5C,UAAU,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC5D,UAAU,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC;gBAClD,GAAG,kBAAkB,CAAC,SAAS,CAAC;gBAChC,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;aAClE,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,UAII,EAAE;IAEN,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACpD,wEAAwE;IACxE,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;QAClD,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,oDAAoD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;SACjG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,EAAE,IAAI;YAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAa,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAA2C,EAAE,CAAC;QAChG,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAS;QAC5B,MAAM,IAAI,GAAG,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACpB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACvC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,WAAW;YAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAiB;IAC/C,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAAE,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACtB,IAAY,EACZ,QAAgB,EAChB,IAAiB;IAEjB,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;iBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;iBAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACrB,IAAI,CAAC,EAAE,CAAC;iBACR,IAAI,EAAE,CAAC;YACV,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1D,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YACpB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpB,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,eAAe;gBAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAUD,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChE,OAAO,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;kEACkE;AAClE,SAAS,WAAW,CAAC,MAAW;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,MAAW,EAAE,KAAK,GAAG,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,qEAAqE;IACrE,IAAI,KAAK,GAAG,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAC3C,yEAAyE;IACzE,yCAAyC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACtF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,OAAO,GAAG,QAAQ,IAAI,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAM9B,MAAM,OAAO,GAAG,GAAe,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAEhG,uEAAuE;AACvE,SAAS,OAAO,CAAI,IAAgB,EAAE,MAAW,EAAE,KAAQ,EAAE,CAAU;IACrE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,CAAC;IACtD,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAClG,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,EAAE,CAAC;IACb,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAW,EACX,cAAyB,EACzB,OAAmB,OAAO,EAAE;IAE5B,IAAI,CAAC,MAAM,EAAE,UAAU;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,YAAY,CAAC,MAAW,EAAE,cAAoC,EAAE,IAAgB;IACvF,MAAM,QAAQ,GAAG,cAAc,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,MAAM;QAC7B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAS,EAAE,QAAkB,EAAE,IAAgB;IAC/E,MAAM,MAAM,GAAmB;QAC7B,IAAI;QACJ,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;QACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;KAClC,CAAC;IACF,IAAI,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5D,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE9D,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,CAAC,UAAU,GAAG,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAClE,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAc,EAAE,QAAa;IACtD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG;QAChB,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QAC9B,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;KAChC,CAAC;IACF,gEAAgE;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;YAAE,SAAS;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;SAC9B,CAAC;QACF,IAAI,CAAC,CAAC,WAAW;YAAE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,CAAC,UAAU;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAc;IAEd,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,SAAS,GACb,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAS,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL,WAAW,EAAE,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC;QACtD,kBAAkB,EAAE,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAc;IACtC,IAAI,CAAC,SAAS,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,OAAO,CAAM,SAAS,CAAC,SAAS,CAAC;SAC5C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,MAAM,MAAM,GAAgB;YAC1B,MAAM;YACN,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBACrD,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAQ,CAAC;YACtD,IAAI,cAAc;gBAAE,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC;YACxD,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;gBACnC,MAAM,MAAM,GACV,WAAW,CAAC,SAAS,CAAC,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK;oBACnD,CAAC,CAAC,SAAS,CAAC,KAAK;oBACjB,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,CAAC,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAW,EAAE,OAAmB,OAAO,EAAE;IAC1E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,SAAS,CAAC,MAAW,EAAE,IAAgB;IAC9C,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACxD,QAAQ,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,UAAU;gBAAE,OAAO,EAAE,CAAC;YAClC,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,MAAM,CAAC,IAAI;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,sBAAsB,CAAC;YACjE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,kBAAkB,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACvD,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,sCAAsC,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YACxD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/C,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;QACjD,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QAClD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,OAAe,EACf,OAAe,EACf,WAAmB,EACnB,GAAuB;IAEvB,MAAM,IAAI,GAAe;QACvB;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE;YAChC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC1C;KACF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAe,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,EAAE,EAAE;aAC9L;SACF;KACF,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,IAAI;QACJ,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAa,EACb,WAAmB,EACnB,OAAe;IAEf,MAAM,IAAI,GAAe;QACvB;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE;YACxC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SACxC;KACF,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,oDAAoD,UAAU,CAAC,OAAO,CAAC,MAAM;SACpF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,IAAS,EACT,KAAmB,EACnB,QAAyC,EACzC,QAA4B,EAC5B,UAAkB;IAElB,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAY;QACpB,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe;QACxD,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;KACpC,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEf,mEAAmE;IACnE,MAAM,gBAAgB,GAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;YACnC,QAAQ,EAAE,GAAG;iBACV,KAAK,EAAE;iBACP,IAAI,CAAC,gBAAgB,CAAC;iBACtB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACZ,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;SACN,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,QAAQ;iBACf,KAAK,EAAE;iBACP,IAAI,CAAC,gBAAgB,CAAC;iBACtB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACZ,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAmB,EAAE,CAAmB;IAChE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAY;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dogsbay/format-openapi",
3
- "version": "0.2.0-beta.115",
3
+ "version": "0.2.0-beta.117",
4
4
  "description": "OpenAPI format plugin for Dogsbay — parse OpenAPI 3.x specs into ExportPage[] for the SSG pipeline",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,6 +13,10 @@
13
13
  "./cli": {
14
14
  "types": "./dist/cli.d.ts",
15
15
  "import": "./dist/cli.js"
16
+ },
17
+ "./embed": {
18
+ "types": "./dist/embed.d.ts",
19
+ "import": "./dist/embed.js"
16
20
  }
17
21
  },
18
22
  "files": [
@@ -21,14 +25,16 @@
21
25
  ],
22
26
  "dependencies": {
23
27
  "@scalar/openapi-parser": "^0.10.17",
28
+ "markdown-it": "^14.3.0",
24
29
  "yaml": "^2.9.0",
25
- "@dogsbay/types": "0.2.0-beta.115"
30
+ "@dogsbay/types": "0.2.0-beta.117"
26
31
  },
27
32
  "devDependencies": {
33
+ "@types/markdown-it": "^14.1.2",
28
34
  "@types/node": "^25.9.5",
29
35
  "typescript": "^5.9.3",
30
36
  "vitest": "^4.1.10",
31
- "@dogsbay/format-astro": "0.2.0-beta.115"
37
+ "@dogsbay/format-astro": "0.2.0-beta.117"
32
38
  },
33
39
  "license": "MIT",
34
40
  "repository": {