@dogsbay/format-openapi 0.2.0-beta.115 → 0.2.0-beta.116
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/dist/embed.d.ts +30 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/embed.js +135 -0
- package/dist/embed.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts +22 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +309 -111
- package/dist/parse.js.map +1 -1
- package/package.json +9 -3
package/dist/embed.d.ts
ADDED
|
@@ -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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"
|
|
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
|
|
176
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
639
|
+
inline: [{ type: "text", text: tagName }],
|
|
446
640
|
},
|
|
447
641
|
];
|
|
448
|
-
|
|
449
|
-
|
|
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
|
-
|
|
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
|
-
|
|
483
|
-
|
|
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, "&").replace(/"/g, """);
|
|
562
757
|
}
|
|
563
|
-
|
|
564
|
-
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dogsbay/format-openapi",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.116",
|
|
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.
|
|
30
|
+
"@dogsbay/types": "0.2.0-beta.116"
|
|
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.
|
|
37
|
+
"@dogsbay/format-astro": "0.2.0-beta.116"
|
|
32
38
|
},
|
|
33
39
|
"license": "MIT",
|
|
34
40
|
"repository": {
|