vocs 2.3.1 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/internal/openapi/openapi.d.ts +20 -0
- package/dist/internal/openapi/openapi.d.ts.map +1 -1
- package/dist/internal/openapi/openapi.js +2 -1
- package/dist/internal/openapi/openapi.js.map +1 -1
- package/dist/internal/openapi/parser.d.ts +13 -0
- package/dist/internal/openapi/parser.d.ts.map +1 -1
- package/dist/internal/openapi/parser.js +107 -6
- package/dist/internal/openapi/parser.js.map +1 -1
- package/dist/internal/openapi/registry.d.ts.map +1 -1
- package/dist/internal/openapi/registry.js +2 -1
- package/dist/internal/openapi/registry.js.map +1 -1
- package/dist/internal/openapi/sidebar.d.ts +8 -1
- package/dist/internal/openapi/sidebar.d.ts.map +1 -1
- package/dist/internal/openapi/sidebar.js +42 -20
- package/dist/internal/openapi/sidebar.js.map +1 -1
- package/dist/react/Link.d.ts +3 -1
- package/dist/react/Link.d.ts.map +1 -1
- package/dist/server/openapi/state.d.ts.map +1 -1
- package/dist/server/openapi/state.js +2 -1
- package/dist/server/openapi/state.js.map +1 -1
- package/package.json +2 -2
- package/src/internal/openapi/openapi.ts +22 -1
- package/src/internal/openapi/parser.test.ts +107 -0
- package/src/internal/openapi/parser.ts +141 -6
- package/src/internal/openapi/registry.ts +2 -1
- package/src/internal/openapi/sidebar.test.ts +94 -0
- package/src/internal/openapi/sidebar.ts +48 -21
- package/src/react/Link.tsx +3 -1
- package/src/server/openapi/state.ts +2 -1
|
@@ -65,6 +65,15 @@ export type SidebarExtras = {
|
|
|
65
65
|
* @default true
|
|
66
66
|
*/
|
|
67
67
|
backLink?: boolean | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Names of `x-tagGroups` sections to flatten: their categories render as
|
|
70
|
+
* top-level sidebar items (as without tag groups) instead of nesting under
|
|
71
|
+
* the section header. Useful to keep a primary API prominent while secondary
|
|
72
|
+
* APIs stay grouped. Names not matching a section are ignored.
|
|
73
|
+
*
|
|
74
|
+
* @example ["Data API"]
|
|
75
|
+
*/
|
|
76
|
+
flatten?: readonly string[] | undefined;
|
|
68
77
|
};
|
|
69
78
|
/**
|
|
70
79
|
* A consumer-authored `.md`/`.mdx` page mounted into an OpenAPI section.
|
|
@@ -116,6 +125,17 @@ export type Config = {
|
|
|
116
125
|
* @example "/api"
|
|
117
126
|
*/
|
|
118
127
|
path?: string | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Tag or `x-tagGroups` section names to leave out of the generated reference
|
|
130
|
+
* entirely: no sidebar items, no category pages, no search entries, and the
|
|
131
|
+
* operations are stripped from the spec handed to the interactive client.
|
|
132
|
+
* Excluding a section name excludes every tag it claims. Names matching
|
|
133
|
+
* nothing are ignored. The source spec is not modified — a spec served
|
|
134
|
+
* separately (e.g. `/openapi.json`) still contains the operations.
|
|
135
|
+
*
|
|
136
|
+
* @example ["Platform API"]
|
|
137
|
+
*/
|
|
138
|
+
exclude?: readonly string[] | undefined;
|
|
119
139
|
/**
|
|
120
140
|
* Extra sidebar items to add around the auto-generated section (e.g. links to
|
|
121
141
|
* consumer-authored guide pages mounted under `path`).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/openapi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,qEAAqE;IACrE,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAC/B,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/openapi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,qEAAqE;IACrE,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAC/B,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CACxC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAA;IACf;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IACvC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;IAC1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;CAC1E,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAarD;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG,UAAU,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
export function from(config) {
|
|
22
|
-
const { spec, path, sidebar, pages } = config;
|
|
22
|
+
const { spec, path, exclude, sidebar, pages } = config;
|
|
23
23
|
if (!spec)
|
|
24
24
|
throw new Error('[vocs] `openapi` entry is missing a `spec`.');
|
|
25
25
|
if (!path)
|
|
@@ -27,6 +27,7 @@ export function from(config) {
|
|
|
27
27
|
return {
|
|
28
28
|
spec,
|
|
29
29
|
path: normalizePath(path),
|
|
30
|
+
...(exclude ? { exclude } : {}),
|
|
30
31
|
...(sidebar ? { sidebar } : {}),
|
|
31
32
|
...(pages ? { pages } : {}),
|
|
32
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/internal/openapi/openapi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/internal/openapi/openapi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiMH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,IAAI,CAAC,MAAoB;IACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAEtD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IACzE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAEzE,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAA;AACH,CAAC;AAMD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;IACzD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3F,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -35,6 +35,13 @@ export type Ir = {
|
|
|
35
35
|
servers: IrServer[];
|
|
36
36
|
/** Operations grouped by category (tag or path segment). */
|
|
37
37
|
groups: IrGroup[];
|
|
38
|
+
/**
|
|
39
|
+
* Named sections of categories from `x-tagGroups` (Redoc convention), used to
|
|
40
|
+
* nest sidebar groups under section headers (e.g. `Data API`, `Platform
|
|
41
|
+
* API`). Present only when the document declares at least one group that
|
|
42
|
+
* resolves to a rendered category; navigation-only — pages stay per-category.
|
|
43
|
+
*/
|
|
44
|
+
tagGroups?: IrTagGroup[] | undefined;
|
|
38
45
|
/**
|
|
39
46
|
* Doc-only "trait" pages: tags marked `x-traitTag: true` (Redoc convention),
|
|
40
47
|
* which carry Markdown `description` content but no operations. The standalone
|
|
@@ -75,6 +82,12 @@ export type IrGroup = {
|
|
|
75
82
|
/** Operations belonging to this category. */
|
|
76
83
|
operations: IrOperation[];
|
|
77
84
|
};
|
|
85
|
+
export type IrTagGroup = {
|
|
86
|
+
/** Display name of the section (e.g. `Data API`). */
|
|
87
|
+
name: string;
|
|
88
|
+
/** Ids of the categories in this section, in authored order. */
|
|
89
|
+
groupIds: string[];
|
|
90
|
+
};
|
|
78
91
|
export type IrOperation = {
|
|
79
92
|
/** Stable slug used as the operation's anchor on the page. */
|
|
80
93
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAA;AAG5C;;GAEG;AACH,eAAO,MAAM,OAAO,gFASV,CAAA;AAEV,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,EAAE,GAAG;IACf,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;IAC9D,yBAAyB;IACzB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACjC,CAAA;IACD,oCAAoC;IACpC,OAAO,EAAE,QAAQ,EAAE,CAAA;IACnB,4DAA4D;IAC5D,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB;;;;OAIG;IACH,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAA;IACV,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,6CAA6C;IAC7C,UAAU,EAAE,WAAW,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAA;IACV,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAChC,sDAAsD;IACtD,UAAU,EAAE,WAAW,EAAE,CAAA;IACzB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,8DAA8D;IAC9D,SAAS,EAAE,UAAU,EAAE,CAAA;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAC5C,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,6DAA6D;IAC7D,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAC5C,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,0DAA0D;IAC1D,OAAO,EAAE,QAAQ,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAC5C,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,9 @@ export async function parse(config, options = {}) {
|
|
|
49
49
|
}))
|
|
50
50
|
.filter((server) => server.url);
|
|
51
51
|
const securitySchemes = document.components?.securitySchemes ?? {};
|
|
52
|
-
const
|
|
52
|
+
const built = await buildGroups(document, { baseUrl: openrpcBaseUrl });
|
|
53
|
+
const { groups, tagGroups, excluded } = applyExclusions(built.groups, buildTagGroups(document, built.groups), config.exclude);
|
|
54
|
+
const injections = built.injections;
|
|
53
55
|
// Inject JSON-RPC examples onto the host operation in the spec the
|
|
54
56
|
// interactive client loads, so each "Try" can preselect its method's
|
|
55
57
|
// envelope. The examples must live in the document Scalar reads; when the
|
|
@@ -57,12 +59,19 @@ export async function parse(config, options = {}) {
|
|
|
57
59
|
// back to handing it the augmented `content` instead.
|
|
58
60
|
for (const injection of injections)
|
|
59
61
|
injectRpcExamples(specification, injection);
|
|
60
|
-
|
|
62
|
+
// Excluded operations are stripped from the client spec too (forcing inline
|
|
63
|
+
// for URL specs), so the interactive client's own navigation can't leak
|
|
64
|
+
// them. Strip a clone: the input `specification` may be a caller-owned
|
|
65
|
+
// object also served elsewhere (e.g. `/openapi.json`), which must keep the
|
|
66
|
+
// excluded operations.
|
|
67
|
+
const clientSpecification = (excluded.length > 0 ? structuredClone(specification) : specification);
|
|
68
|
+
stripOperations(clientSpecification, excluded);
|
|
69
|
+
const shouldInlineClientSpec = injections.length > 0 ||
|
|
70
|
+
excluded.length > 0 ||
|
|
71
|
+
(isUrl && shouldNormalizeClientServers(document, servers));
|
|
61
72
|
if (shouldInlineClientSpec)
|
|
62
|
-
setClientServers(
|
|
63
|
-
const client = isUrl && !shouldInlineClientSpec
|
|
64
|
-
? { url: spec }
|
|
65
|
-
: { content: specification };
|
|
73
|
+
setClientServers(clientSpecification, servers);
|
|
74
|
+
const client = isUrl && !shouldInlineClientSpec ? { url: spec } : { content: clientSpecification };
|
|
66
75
|
return {
|
|
67
76
|
path: config.path ?? '/',
|
|
68
77
|
client,
|
|
@@ -73,10 +82,40 @@ export async function parse(config, options = {}) {
|
|
|
73
82
|
},
|
|
74
83
|
servers,
|
|
75
84
|
groups,
|
|
85
|
+
...(tagGroups ? { tagGroups } : {}),
|
|
76
86
|
traits: buildTraits(document),
|
|
77
87
|
securitySchemes,
|
|
78
88
|
};
|
|
79
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolves `x-tagGroups` entries against the built categories. Tags that don't
|
|
92
|
+
* resolve to a rendered category are dropped; a category claimed by multiple
|
|
93
|
+
* sections stays with the first (pages are per-category, so one sidebar home).
|
|
94
|
+
* Returns `undefined` when nothing resolves, so the sidebar stays flat.
|
|
95
|
+
*/
|
|
96
|
+
function buildTagGroups(document, groups) {
|
|
97
|
+
const entries = document['x-tagGroups'];
|
|
98
|
+
if (!entries || entries.length === 0)
|
|
99
|
+
return undefined;
|
|
100
|
+
const idByName = new Map(groups.map((group) => [group.name, group.id]));
|
|
101
|
+
const claimed = new Set();
|
|
102
|
+
const tagGroups = [];
|
|
103
|
+
for (const entry of entries) {
|
|
104
|
+
if (!entry?.name)
|
|
105
|
+
continue;
|
|
106
|
+
const groupIds = [];
|
|
107
|
+
for (const tag of entry.tags ?? []) {
|
|
108
|
+
const id = idByName.get(tag);
|
|
109
|
+
if (!id || claimed.has(id))
|
|
110
|
+
continue;
|
|
111
|
+
claimed.add(id);
|
|
112
|
+
groupIds.push(id);
|
|
113
|
+
}
|
|
114
|
+
if (groupIds.length > 0)
|
|
115
|
+
tagGroups.push({ name: entry.name, groupIds });
|
|
116
|
+
}
|
|
117
|
+
return tagGroups.length > 0 ? tagGroups : undefined;
|
|
118
|
+
}
|
|
80
119
|
/**
|
|
81
120
|
* Adds named JSON-RPC request examples to a host operation's
|
|
82
121
|
* `application/json` request body in the (upgraded) spec document. Scalar
|
|
@@ -103,6 +142,68 @@ function injectRpcExamples(specification, injection) {
|
|
|
103
142
|
const media = content['application/json'];
|
|
104
143
|
media['examples'] = { ...media['examples'], ...injection.examples };
|
|
105
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Applies the config `exclude` list: a name matching an `x-tagGroups` section
|
|
147
|
+
* excludes every category it claims; a name matching a category (tag) excludes
|
|
148
|
+
* that category. Excluded categories are dropped from `groups`, pruned from
|
|
149
|
+
* `tagGroups` (emptied sections are removed), and their operations returned
|
|
150
|
+
* for stripping from the client spec. Unmatched names are ignored.
|
|
151
|
+
*/
|
|
152
|
+
function applyExclusions(groups, tagGroups, exclude) {
|
|
153
|
+
const names = new Set(exclude ?? []);
|
|
154
|
+
if (names.size === 0)
|
|
155
|
+
return { groups, tagGroups, excluded: [] };
|
|
156
|
+
const excludedIds = new Set();
|
|
157
|
+
for (const tagGroup of tagGroups ?? [])
|
|
158
|
+
if (names.has(tagGroup.name))
|
|
159
|
+
for (const id of tagGroup.groupIds)
|
|
160
|
+
excludedIds.add(id);
|
|
161
|
+
for (const group of groups)
|
|
162
|
+
if (names.has(group.name))
|
|
163
|
+
excludedIds.add(group.id);
|
|
164
|
+
if (excludedIds.size === 0)
|
|
165
|
+
return { groups, tagGroups, excluded: [] };
|
|
166
|
+
const excluded = groups
|
|
167
|
+
.filter((group) => excludedIds.has(group.id))
|
|
168
|
+
.flatMap((group) => group.operations.map((operation) => ({
|
|
169
|
+
method: operation.method,
|
|
170
|
+
path: operation.path,
|
|
171
|
+
isWebhook: operation.isWebhook ?? false,
|
|
172
|
+
})));
|
|
173
|
+
const prunedTagGroups = (tagGroups ?? [])
|
|
174
|
+
.filter((tagGroup) => !names.has(tagGroup.name))
|
|
175
|
+
.map((tagGroup) => ({
|
|
176
|
+
...tagGroup,
|
|
177
|
+
groupIds: tagGroup.groupIds.filter((id) => !excludedIds.has(id)),
|
|
178
|
+
}))
|
|
179
|
+
.filter((tagGroup) => tagGroup.groupIds.length > 0);
|
|
180
|
+
return {
|
|
181
|
+
groups: groups.filter((group) => !excludedIds.has(group.id)),
|
|
182
|
+
tagGroups: prunedTagGroups.length > 0 ? prunedTagGroups : undefined,
|
|
183
|
+
excluded,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Deletes excluded operations from the (upgraded) spec handed to the
|
|
188
|
+
* interactive client. A path item left with no methods is removed entirely.
|
|
189
|
+
*/
|
|
190
|
+
function stripOperations(specification, excluded) {
|
|
191
|
+
// JSON-RPC operations expanded from one host operation share its path+method.
|
|
192
|
+
const seen = new Set();
|
|
193
|
+
for (const operation of excluded) {
|
|
194
|
+
const key = `${operation.isWebhook}:${operation.method}:${operation.path}`;
|
|
195
|
+
if (seen.has(key))
|
|
196
|
+
continue;
|
|
197
|
+
seen.add(key);
|
|
198
|
+
const target = specification[operation.isWebhook ? 'webhooks' : 'paths'];
|
|
199
|
+
const item = target?.[operation.path];
|
|
200
|
+
if (!item || typeof item !== 'object')
|
|
201
|
+
continue;
|
|
202
|
+
delete item[operation.method.toLowerCase()];
|
|
203
|
+
if (!methods.some((method) => method in item))
|
|
204
|
+
delete target[operation.path];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
106
207
|
/** Builds doc-only "trait" pages from tags marked `x-traitTag: true`. */
|
|
107
208
|
function buildTraits(document) {
|
|
108
209
|
const slugger = new GithubSlugger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/internal/openapi/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK;IACL,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;CACC,CAAA;AA8OV;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAsB,EAAE,UAAyB,EAAE;IAC7E,MAAM,EAAE,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAElF,gEAAgE;IAChE,wCAAwC;IACxC,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;IAC7E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAA;IAExB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,GAAY,CAAC,CAAA;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,aAAsB,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,aAAa,CAAa,CAAA;IAEtD,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IACzF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAExC,2EAA2E;IAC3E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAA;IAEjD,MAAM,aAAa,GACjB,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,QAAQ,CAAC,OAAO;QAClB,CAAC,CAAC,OAAO;YACP,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC,CAAC,EAAE,CAAA;IACV,MAAM,OAAO,GAAG,aAAa;SAC1B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC;QAChD,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEjC,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,EAAE,eAAe,IAAI,EAAE,CAAA;IAElE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;IAEvF,mEAAmE;IACnE,qEAAqE;IACrE,0EAA0E;IAC1E,4EAA4E;IAC5E,sDAAsD;IACtD,KAAK,MAAM,SAAS,IAAI,UAAU;QAChC,iBAAiB,CAAC,aAAwC,EAAE,SAAS,CAAC,CAAA;IAExE,MAAM,sBAAsB,GAC1B,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACrF,IAAI,sBAAsB;QAAE,gBAAgB,CAAC,aAAwC,EAAE,OAAO,CAAC,CAAA;IAE/F,MAAM,MAAM,GACV,KAAK,IAAI,CAAC,sBAAsB;QAC9B,CAAC,CAAC,EAAE,GAAG,EAAE,IAAc,EAAE;QACzB,CAAC,CAAC,EAAE,OAAO,EAAE,aAAwC,EAAE,CAAA;IAE3D,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG;QACxB,MAAM;QACN,IAAI,EAAE;YACJ,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,eAAe;YAC9C,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO;YAC/B,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW;SACxC;QACD,OAAO;QACP,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;QAC7B,eAAe;KAChB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,aAAsC,EAAE,SAAuB;IACxF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAwD,CAAA;IAC3F,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAE/C,CAAA;IACb,IAAI,CAAC,SAAS;QAAE,OAAM;IAEtB,IAAI,WAAW,GAAG,SAAS,CAAC,aAAa,CAAwC,CAAA;IACjF,6EAA6E;IAC7E,0EAA0E;IAC1E,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;QAC7E,WAAW,GAAG,EAAE,CAAA;QAChB,SAAS,CAAC,aAAa,CAAC,GAAG,WAAW,CAAA;IACxC,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;IACxD,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAA4C,CAAA;IACjF,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAA;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACzC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAI,KAAK,CAAC,UAAU,CAA6B,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;AAClG,CAAC;AAED,yEAAyE;AACzE,SAAS,WAAW,CAAC,QAAkB;IACrC,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;IACnC,MAAM,MAAM,GAAc,EAAE,CAAA;IAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,SAAQ;QAC7C,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;SACxB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAeD;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,OAA2B;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAA;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,QAAkB,EAAE,OAAmB;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAA;QAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,aAAsC,EAAE,OAAmB;IACnF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAChC,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC,CAAC,CAAA;AACL,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,IAAI,CACjB,IAAkB,EAClB,OAAe;IAEf,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAA+B,CAAA;IAEpE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACtF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,kDAAkD;IAClD,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1C,+EAA+E;IAC/E,qEAAqE;IACrE,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,WAAW,CAAC;SACpB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3E,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAChC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/E,OAAO,KAAK,CAAA;AACd,CAAC;AAWD,4CAA4C;AAC5C,KAAK,UAAU,WAAW,CACxB,QAAkB,EAClB,UAA4C,EAAE;IAE9C,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;IACnC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAA;IAC1D,MAAM,UAAU,GAAmB,EAAE,CAAA;IAErC,+EAA+E;IAC/E,6EAA6E;IAC7E,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC;YAAE,SAAQ;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAA;IAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;QAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,IAAI,CAAC,SAAS;gBAAE,SAAQ;YAExB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAA;YAElD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvB,CAAC;YAED,MAAM,KAAK,GAAG,cAAc,CAAC;gBAC3B,MAAM;gBACN,QAAQ;gBACR,SAAS;gBACT,cAAc;gBACd,OAAO;aACR,CAAC,CAAA;YAEF,2EAA2E;YAC3E,qEAAqE;YACrE,kDAAkD;YAClD,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE;wBACnF,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAA;oBACF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC9E,mEAAmE;oBACnE,gEAAgE;oBAChE,yDAAyD;oBACzD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;wBAC3D,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACzD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,uEAAuE;oBACvE,gEAAgE;oBAChE,6DAA6D;oBAC7D,OAAO,CAAC,IAAI,CACV,yCAAyC,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,KACvE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAA;oBACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,sDAAsD;IACtD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;QAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,IAAI,CAAC,SAAS;gBAAE,SAAQ;YAExB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvB,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CACzB,cAAc,CAAC;gBACb,MAAM;gBACN,QAAQ,EAAE,IAAI;gBACd,SAAS;gBACT,cAAc;gBACd,OAAO;gBACP,SAAS,EAAE,IAAI;aAChB,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI;QACJ,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;KACnC,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,OAOvB;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAE3F,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;IAE/F,iFAAiF;IACjF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC9C,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,SAAQ;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAA;IAC5D,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5B,IAAI,EAAE,QAAQ;QACd,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,SAAS,CAAC,IAAc;YAC9B,EAAE,EAAE,SAAS,CAAC,EAAuB;YACrC,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CAAC;QACH,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;QAC7C,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;QAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAyB;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KACpC,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,SAAkD;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM;QACN,WAAW,EAAE,QAAQ,EAAE,WAAW;QAClC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;KACzC,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAA8C;IAClE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI;QACJ,QAAQ,EAAE,MAAM,EAAE,QAAQ;QAC1B,UAAU,EAAE,MAAM,EAAE,UAAU;QAC9B,WAAW,EAAE,MAAM,EAAE,WAAW;QAChC,MAAM,EAAE,MAAM,EAAE,MAAM;QACtB,OAAO,EAAE,MAAM,EAAE,OAAO;KACzB,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CACnB,OAA4F;IAE5F,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,SAAS;QACT,MAAM,EAAE,KAAK,EAAE,MAAM;QACrB,OAAO,EAAE,KAAK,EAAE,OAAO;KACxB,CAAC,CAAC,CAAA;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/internal/openapi/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,EAAS,MAAM,aAAa,CAAA;AAG5C,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAK/B;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAc1D;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,IAAI,KAAK,GAAG,IAAI,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,EAAS,MAAM,aAAa,CAAA;AAG5C,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAK/B;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAc1D;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,IAAI,KAAK,GAAG,IAAI,CAEnC;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;CAAE,CAAC,CAYnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmBnD"}
|
|
@@ -43,8 +43,9 @@ export function sidebars(config) {
|
|
|
43
43
|
const entry = config?.openapi?.find((entry) => entry.path === path);
|
|
44
44
|
const collapsed = entry?.sidebar?.collapsed;
|
|
45
45
|
const intro = entry?.sidebar?.intro;
|
|
46
|
+
const flatten = entry?.sidebar?.flatten;
|
|
46
47
|
const backLink = entry?.sidebar?.backLink ?? true;
|
|
47
|
-
result[path] = { backLink, items: Sidebar.toSidebar(ir, { collapsed, intro }) };
|
|
48
|
+
result[path] = { backLink, items: Sidebar.toSidebar(ir, { collapsed, intro, flatten }) };
|
|
48
49
|
}
|
|
49
50
|
return result;
|
|
50
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/internal/openapi/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAIvC,IAAI,KAAK,GAAiB,IAAI,CAAA;AAC9B,IAAI,QAAQ,GAA0B,IAAI,CAAA;AAE1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAc;IACxC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QACrB,MAAM,IAAI,GAAU,EAAE,CAAA;QACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QACpE,KAAK,GAAG,IAAI,CAAA;QACZ,QAAQ,GAAG,IAAI,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,IAAI;IAClB,OAAO,KAAK,CAAA;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU;IACxB,KAAK,GAAG,IAAI,CAAA;IACZ,QAAQ,GAAG,IAAI,CAAA;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAe;IAEf,MAAM,MAAM,GAAsE,EAAE,CAAA;IACpF,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAA;IACzB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACnE,MAAM,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,CAAA;QAC3C,MAAM,KAAK,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAA;QACnC,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAA;QACjD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/internal/openapi/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,9 @@ export declare function methodVariant(method: string): BadgeVariant;
|
|
|
11
11
|
* OpenAPI IR.
|
|
12
12
|
*
|
|
13
13
|
* Each category is its own page; operation links are in-page anchors on that
|
|
14
|
-
* page (`/api/{group}#{operation}`).
|
|
14
|
+
* page (`/api/{group}#{operation}`). When the IR carries `tagGroups`, claimed
|
|
15
|
+
* categories nest under static section headers; unclaimed ones follow at the
|
|
16
|
+
* top level so no category silently disappears.
|
|
15
17
|
*/
|
|
16
18
|
export declare function toSidebar(ir: Ir, options?: toSidebar.Options): SidebarItem<true>[];
|
|
17
19
|
export declare namespace toSidebar {
|
|
@@ -25,6 +27,11 @@ export declare namespace toSidebar {
|
|
|
25
27
|
* auto-expands). `Introduction` is unaffected. @default false
|
|
26
28
|
*/
|
|
27
29
|
collapsed?: boolean | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Names of `x-tagGroups` sections whose categories render as top-level
|
|
32
|
+
* items (in place) instead of nesting under the section header.
|
|
33
|
+
*/
|
|
34
|
+
flatten?: readonly string[] | undefined;
|
|
28
35
|
};
|
|
29
36
|
}
|
|
30
37
|
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/sidebar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,EAAe,MAAM,aAAa,CAAA;AAKlD,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAEzE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAc1D;AAED
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/internal/openapi/sidebar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,EAAe,MAAM,aAAa,CAAA;AAKlD,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAEzE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAc1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,SAAS,CAAC,OAAY,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAwEtF;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,OAAO,GAAG;QACb,6DAA6D;QAC7D,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;QACjC,sEAAsE;QACtE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,SAAS,CAAA;QACpD;;;WAGG;QACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC/B;;;WAGG;QACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;KACxC,CAAA;CACF"}
|
|
@@ -24,7 +24,9 @@ export function methodVariant(method) {
|
|
|
24
24
|
* OpenAPI IR.
|
|
25
25
|
*
|
|
26
26
|
* Each category is its own page; operation links are in-page anchors on that
|
|
27
|
-
* page (`/api/{group}#{operation}`).
|
|
27
|
+
* page (`/api/{group}#{operation}`). When the IR carries `tagGroups`, claimed
|
|
28
|
+
* categories nest under static section headers; unclaimed ones follow at the
|
|
29
|
+
* top level so no category silently disappears.
|
|
28
30
|
*/
|
|
29
31
|
export function toSidebar(ir, options = {}) {
|
|
30
32
|
// Strip a trailing slash so a root mount (`/`) doesn't yield `//group`.
|
|
@@ -48,27 +50,47 @@ export function toSidebar(ir, options = {}) {
|
|
|
48
50
|
// Generated category groups start collapsed when `collapsed` is set (the
|
|
49
51
|
// active group still auto-expands at render). `Introduction` is unaffected.
|
|
50
52
|
const groupCollapsed = options.collapsed ?? false;
|
|
53
|
+
const groupItem = (group) => ({
|
|
54
|
+
text: group.name,
|
|
55
|
+
collapsed: groupCollapsed,
|
|
56
|
+
items: [
|
|
57
|
+
// An "Overview" entry links to the category itself; the top-level item
|
|
58
|
+
// is a non-link header so its label doesn't compete with the operations.
|
|
59
|
+
{ text: 'Overview', link: groupLink(group.id) },
|
|
60
|
+
...(groupExtras.get(group.id) ?? []),
|
|
61
|
+
...group.operations.map((operation) => ({
|
|
62
|
+
text: operation.summary || `${operation.method} ${operation.path}`,
|
|
63
|
+
link: operationLink(operation, group.id),
|
|
64
|
+
// Webhooks are inbound deliveries, not callable endpoints — show a
|
|
65
|
+
// webhook glyph instead of the HTTP method (which is always POST).
|
|
66
|
+
badge: operation.isWebhook && webhookIcon
|
|
67
|
+
? { icon: webhookIcon, variant: methodVariant(operation.method) }
|
|
68
|
+
: { text: operation.method, variant: methodVariant(operation.method) },
|
|
69
|
+
})),
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
const tagGroups = ir.tagGroups ?? [];
|
|
73
|
+
if (tagGroups.length === 0)
|
|
74
|
+
return [introduction, ...ir.groups.map(groupItem)];
|
|
75
|
+
// `x-tagGroups` sections render as static headers (no `collapsed`, so not
|
|
76
|
+
// collapsible); the per-category `collapsed` behavior applies unchanged.
|
|
77
|
+
// Sections named in `flatten` spread their categories in place instead.
|
|
78
|
+
const flatten = new Set(options.flatten ?? []);
|
|
79
|
+
const groupById = new Map(ir.groups.map((group) => [group.id, group]));
|
|
80
|
+
const claimed = new Set(tagGroups.flatMap((tagGroup) => tagGroup.groupIds));
|
|
81
|
+
const sections = tagGroups.flatMap((tagGroup) => {
|
|
82
|
+
const items = tagGroup.groupIds.flatMap((id) => {
|
|
83
|
+
const group = groupById.get(id);
|
|
84
|
+
return group ? [groupItem(group)] : [];
|
|
85
|
+
});
|
|
86
|
+
if (flatten.has(tagGroup.name))
|
|
87
|
+
return items;
|
|
88
|
+
return [{ text: tagGroup.name, items }];
|
|
89
|
+
});
|
|
51
90
|
return [
|
|
52
91
|
introduction,
|
|
53
|
-
...
|
|
54
|
-
|
|
55
|
-
collapsed: groupCollapsed,
|
|
56
|
-
items: [
|
|
57
|
-
// An "Overview" entry links to the category itself; the top-level item
|
|
58
|
-
// is a non-link header so its label doesn't compete with the operations.
|
|
59
|
-
{ text: 'Overview', link: groupLink(group.id) },
|
|
60
|
-
...(groupExtras.get(group.id) ?? []),
|
|
61
|
-
...group.operations.map((operation) => ({
|
|
62
|
-
text: operation.summary || `${operation.method} ${operation.path}`,
|
|
63
|
-
link: operationLink(operation, group.id),
|
|
64
|
-
// Webhooks are inbound deliveries, not callable endpoints — show a
|
|
65
|
-
// webhook glyph instead of the HTTP method (which is always POST).
|
|
66
|
-
badge: operation.isWebhook && webhookIcon
|
|
67
|
-
? { icon: webhookIcon, variant: methodVariant(operation.method) }
|
|
68
|
-
: { text: operation.method, variant: methodVariant(operation.method) },
|
|
69
|
-
})),
|
|
70
|
-
],
|
|
71
|
-
})),
|
|
92
|
+
...sections,
|
|
93
|
+
...ir.groups.filter((group) => !claimed.has(group.id)).map(groupItem),
|
|
72
94
|
];
|
|
73
95
|
}
|
|
74
96
|
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/internal/openapi/sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C,oFAAoF;AACpF,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;AAKrD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,MAAM,CAAA;QACf,KAAK,MAAM;YACT,OAAO,SAAS,CAAA;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,SAAS,CAAA;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/internal/openapi/sidebar.ts"],"names":[],"mappings":"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"}
|
package/dist/react/Link.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Link as WakuLink } from 'waku';
|
|
2
2
|
export declare function Link(props: Link.Props): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export declare namespace Link {
|
|
4
|
-
type Props = React.ComponentProps<typeof WakuLink
|
|
4
|
+
type Props = Omit<React.ComponentProps<typeof WakuLink>, 'to'> & {
|
|
5
|
+
to: string;
|
|
6
|
+
};
|
|
5
7
|
}
|
|
6
8
|
//# sourceMappingURL=Link.d.ts.map
|
package/dist/react/Link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/react/Link.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAA;AAuDvC,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,2CAsBrC;AAED,yBAAiB,IAAI,CAAC;IACpB,KAAY,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/react/Link.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAA;AAuDvC,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,2CAsBrC;AAED,yBAAiB,IAAI,CAAC;IACpB,KAAY,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG;QACtE,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/server/openapi/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,KAAK,OAAO,MAAM,mCAAmC,CAAA;AAKjE;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,OAAO,GAAE,OAAO,CAAC,OAAY,GAC5B,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/server/openapi/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,KAAK,OAAO,MAAM,mCAAmC,CAAA;AAKjE;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,OAAO,GAAE,OAAO,CAAC,OAAY,GAC5B,OAAO,CAAC,OAAO,CAAC,CAwElB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,OAAO,GAAG;QACb,4DAA4D;QAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B,CAAA;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC1C,OAAO,GAAE,UAAU,CAAC,OAAY,GAC/B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,KAAK,OAAO,GAAG;QACb,0EAA0E;QAC1E,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B,CAAA;CACF"}
|
|
@@ -46,6 +46,7 @@ export async function prepare(config, options = {}) {
|
|
|
46
46
|
const bottom = config.sidebar?.bottom ?? [];
|
|
47
47
|
const intro = [...traitIntro, ...(config.sidebar?.intro ?? [])];
|
|
48
48
|
const collapsed = config.sidebar?.collapsed ?? false;
|
|
49
|
+
const flatten = config.sidebar?.flatten;
|
|
49
50
|
const newGroups = [...extraGroups].map(([name, items]) => ({
|
|
50
51
|
text: name,
|
|
51
52
|
collapsed,
|
|
@@ -53,7 +54,7 @@ export async function prepare(config, options = {}) {
|
|
|
53
54
|
}));
|
|
54
55
|
const sidebar = [
|
|
55
56
|
...top,
|
|
56
|
-
...Sidebar.toSidebar(ir, { intro, groupExtras, collapsed }),
|
|
57
|
+
...Sidebar.toSidebar(ir, { intro, groupExtras, collapsed, flatten }),
|
|
57
58
|
...newGroups,
|
|
58
59
|
...bottom,
|
|
59
60
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/server/openapi/state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/server/openapi/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vocs",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.3",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"react": "^19",
|
|
98
98
|
"react-dom": "^19",
|
|
99
99
|
"vite": "^8",
|
|
100
|
-
"waku": "^1.0.0-beta.
|
|
100
|
+
"waku": "^1.0.0-beta.6"
|
|
101
101
|
},
|
|
102
102
|
"peerDependenciesMeta": {
|
|
103
103
|
"@vocs/twoslash-rust": {
|
|
@@ -69,6 +69,15 @@ export type SidebarExtras = {
|
|
|
69
69
|
* @default true
|
|
70
70
|
*/
|
|
71
71
|
backLink?: boolean | undefined
|
|
72
|
+
/**
|
|
73
|
+
* Names of `x-tagGroups` sections to flatten: their categories render as
|
|
74
|
+
* top-level sidebar items (as without tag groups) instead of nesting under
|
|
75
|
+
* the section header. Useful to keep a primary API prominent while secondary
|
|
76
|
+
* APIs stay grouped. Names not matching a section are ignored.
|
|
77
|
+
*
|
|
78
|
+
* @example ["Data API"]
|
|
79
|
+
*/
|
|
80
|
+
flatten?: readonly string[] | undefined
|
|
72
81
|
}
|
|
73
82
|
|
|
74
83
|
/**
|
|
@@ -122,6 +131,17 @@ export type Config = {
|
|
|
122
131
|
* @example "/api"
|
|
123
132
|
*/
|
|
124
133
|
path?: string | undefined
|
|
134
|
+
/**
|
|
135
|
+
* Tag or `x-tagGroups` section names to leave out of the generated reference
|
|
136
|
+
* entirely: no sidebar items, no category pages, no search entries, and the
|
|
137
|
+
* operations are stripped from the spec handed to the interactive client.
|
|
138
|
+
* Excluding a section name excludes every tag it claims. Names matching
|
|
139
|
+
* nothing are ignored. The source spec is not modified — a spec served
|
|
140
|
+
* separately (e.g. `/openapi.json`) still contains the operations.
|
|
141
|
+
*
|
|
142
|
+
* @example ["Platform API"]
|
|
143
|
+
*/
|
|
144
|
+
exclude?: readonly string[] | undefined
|
|
125
145
|
/**
|
|
126
146
|
* Extra sidebar items to add around the auto-generated section (e.g. links to
|
|
127
147
|
* consumer-authored guide pages mounted under `path`).
|
|
@@ -191,7 +211,7 @@ export type SiteConfig = Config & {
|
|
|
191
211
|
* ```
|
|
192
212
|
*/
|
|
193
213
|
export function from(config: from.Options): SiteConfig {
|
|
194
|
-
const { spec, path, sidebar, pages } = config
|
|
214
|
+
const { spec, path, exclude, sidebar, pages } = config
|
|
195
215
|
|
|
196
216
|
if (!spec) throw new Error('[vocs] `openapi` entry is missing a `spec`.')
|
|
197
217
|
if (!path) throw new Error('[vocs] `openapi` entry is missing a `path`.')
|
|
@@ -199,6 +219,7 @@ export function from(config: from.Options): SiteConfig {
|
|
|
199
219
|
return {
|
|
200
220
|
spec,
|
|
201
221
|
path: normalizePath(path),
|
|
222
|
+
...(exclude ? { exclude } : {}),
|
|
202
223
|
...(sidebar ? { sidebar } : {}),
|
|
203
224
|
...(pages ? { pages } : {}),
|
|
204
225
|
}
|
|
@@ -188,6 +188,113 @@ describe('parse', () => {
|
|
|
188
188
|
expect(fallback?.operations.map((op) => op.id)).toEqual(['health'])
|
|
189
189
|
})
|
|
190
190
|
|
|
191
|
+
test('omits `tagGroups` when the document has no `x-tagGroups`', async () => {
|
|
192
|
+
const ir = await parse(OpenApi.from({ spec, path: '/api' }))
|
|
193
|
+
expect(ir.tagGroups).toBeUndefined()
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
test('resolves `x-tagGroups` to rendered group ids', async () => {
|
|
197
|
+
const ir = await parse(
|
|
198
|
+
OpenApi.from({
|
|
199
|
+
spec: {
|
|
200
|
+
...spec,
|
|
201
|
+
'x-tagGroups': [
|
|
202
|
+
{ name: 'Data API', tags: ['pets'] },
|
|
203
|
+
{ name: 'Platform API', tags: ['store'] },
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
path: '/api',
|
|
207
|
+
}),
|
|
208
|
+
)
|
|
209
|
+
expect(ir.tagGroups).toEqual([
|
|
210
|
+
{ name: 'Data API', groupIds: ['pets'] },
|
|
211
|
+
{ name: 'Platform API', groupIds: ['store'] },
|
|
212
|
+
])
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
test('drops unknown tags, empty sections, and repeat claims from `x-tagGroups`', async () => {
|
|
216
|
+
const ir = await parse(
|
|
217
|
+
OpenApi.from({
|
|
218
|
+
spec: {
|
|
219
|
+
...spec,
|
|
220
|
+
'x-tagGroups': [
|
|
221
|
+
// `missing` names no rendered group; `pets` resolves.
|
|
222
|
+
{ name: 'Data API', tags: ['missing', 'pets'] },
|
|
223
|
+
// Both tags already claimed or unknown → section drops entirely.
|
|
224
|
+
{ name: 'Empty', tags: ['pets', 'nope'] },
|
|
225
|
+
// Unnamed entries are ignored.
|
|
226
|
+
{ tags: ['store'] },
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
path: '/api',
|
|
230
|
+
}),
|
|
231
|
+
)
|
|
232
|
+
expect(ir.tagGroups).toEqual([{ name: 'Data API', groupIds: ['pets'] }])
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
test('omits `tagGroups` when no `x-tagGroups` entry resolves', async () => {
|
|
236
|
+
const ir = await parse(
|
|
237
|
+
OpenApi.from({
|
|
238
|
+
spec: { ...spec, 'x-tagGroups': [{ name: 'Ghost', tags: ['missing'] }] },
|
|
239
|
+
path: '/api',
|
|
240
|
+
}),
|
|
241
|
+
)
|
|
242
|
+
expect(ir.tagGroups).toBeUndefined()
|
|
243
|
+
})
|
|
244
|
+
|
|
245
|
+
test('excludes a tag by name, stripping its operations from the client spec', async () => {
|
|
246
|
+
const ir = await parse(OpenApi.from({ spec, path: '/api', exclude: ['store'] }))
|
|
247
|
+
expect(ir.groups.map((group) => group.name)).toEqual(['pets', 'default'])
|
|
248
|
+
const content = (ir.client as { content: Record<string, unknown> }).content
|
|
249
|
+
const paths = content['paths'] as Record<string, unknown>
|
|
250
|
+
expect(paths['/inventory']).toBeUndefined()
|
|
251
|
+
expect(paths['/pets']).toBeDefined()
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
test('excludes every tag an excluded `x-tagGroups` section claims', async () => {
|
|
255
|
+
const ir = await parse(
|
|
256
|
+
OpenApi.from({
|
|
257
|
+
spec: {
|
|
258
|
+
...spec,
|
|
259
|
+
'x-tagGroups': [
|
|
260
|
+
{ name: 'Data API', tags: ['pets'] },
|
|
261
|
+
{ name: 'Platform API', tags: ['store'] },
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
path: '/api',
|
|
265
|
+
exclude: ['Platform API'],
|
|
266
|
+
}),
|
|
267
|
+
)
|
|
268
|
+
expect(ir.groups.map((group) => group.name)).toEqual(['pets', 'default'])
|
|
269
|
+
expect(ir.tagGroups).toEqual([{ name: 'Data API', groupIds: ['pets'] }])
|
|
270
|
+
const content = (ir.client as { content: Record<string, unknown> }).content
|
|
271
|
+
expect((content['paths'] as Record<string, unknown>)['/inventory']).toBeUndefined()
|
|
272
|
+
})
|
|
273
|
+
|
|
274
|
+
test('keeps other methods on a path shared with an excluded tag', async () => {
|
|
275
|
+
const sharedSpec = {
|
|
276
|
+
openapi: '3.1.0',
|
|
277
|
+
info: { title: 'Shared', version: '1.0.0' },
|
|
278
|
+
paths: {
|
|
279
|
+
'/shared': {
|
|
280
|
+
get: { operationId: 'readShared', tags: ['a'], responses: { '200': {} } },
|
|
281
|
+
post: { operationId: 'writeShared', tags: ['b'], responses: { '201': {} } },
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
}
|
|
285
|
+
const ir = await parse(OpenApi.from({ spec: sharedSpec, path: '/api', exclude: ['a'] }))
|
|
286
|
+
expect(ir.groups.map((group) => group.name)).toEqual(['b'])
|
|
287
|
+
const content = (ir.client as { content: Record<string, unknown> }).content
|
|
288
|
+
const shared = (content['paths'] as Record<string, Record<string, unknown>>)['/shared']
|
|
289
|
+
expect(shared?.['get']).toBeUndefined()
|
|
290
|
+
expect(shared?.['post']).toBeDefined()
|
|
291
|
+
})
|
|
292
|
+
|
|
293
|
+
test('ignores exclude names matching nothing', async () => {
|
|
294
|
+
const ir = await parse(OpenApi.from({ spec, path: '/api', exclude: ['Ghost'] }))
|
|
295
|
+
expect(ir.groups.map((group) => group.name)).toEqual(['pets', 'store', 'default'])
|
|
296
|
+
})
|
|
297
|
+
|
|
191
298
|
test('inlines remote specs with relative servers for the API client', async () => {
|
|
192
299
|
const fetch_ = globalThis.fetch
|
|
193
300
|
const remoteSpec = {
|
|
@@ -46,6 +46,13 @@ export type Ir = {
|
|
|
46
46
|
servers: IrServer[]
|
|
47
47
|
/** Operations grouped by category (tag or path segment). */
|
|
48
48
|
groups: IrGroup[]
|
|
49
|
+
/**
|
|
50
|
+
* Named sections of categories from `x-tagGroups` (Redoc convention), used to
|
|
51
|
+
* nest sidebar groups under section headers (e.g. `Data API`, `Platform
|
|
52
|
+
* API`). Present only when the document declares at least one group that
|
|
53
|
+
* resolves to a rendered category; navigation-only — pages stay per-category.
|
|
54
|
+
*/
|
|
55
|
+
tagGroups?: IrTagGroup[] | undefined
|
|
49
56
|
/**
|
|
50
57
|
* Doc-only "trait" pages: tags marked `x-traitTag: true` (Redoc convention),
|
|
51
58
|
* which carry Markdown `description` content but no operations. The standalone
|
|
@@ -90,6 +97,13 @@ export type IrGroup = {
|
|
|
90
97
|
operations: IrOperation[]
|
|
91
98
|
}
|
|
92
99
|
|
|
100
|
+
export type IrTagGroup = {
|
|
101
|
+
/** Display name of the section (e.g. `Data API`). */
|
|
102
|
+
name: string
|
|
103
|
+
/** Ids of the categories in this section, in authored order. */
|
|
104
|
+
groupIds: string[]
|
|
105
|
+
}
|
|
106
|
+
|
|
93
107
|
export type IrOperation = {
|
|
94
108
|
/** Stable slug used as the operation's anchor on the page. */
|
|
95
109
|
id: string
|
|
@@ -197,6 +211,11 @@ type Document = {
|
|
|
197
211
|
'x-subtitle'?: string
|
|
198
212
|
'x-parent'?: string
|
|
199
213
|
}[]
|
|
214
|
+
/**
|
|
215
|
+
* Redoc convention: named sections of tags, rendered as sidebar section
|
|
216
|
+
* headers with the tags' groups nested inside.
|
|
217
|
+
*/
|
|
218
|
+
'x-tagGroups'?: { name?: string; tags?: string[] }[]
|
|
200
219
|
paths?: Record<string, PathItem>
|
|
201
220
|
/**
|
|
202
221
|
* OpenAPI 3.1 outbound webhook deliveries. Keyed by event name (an arbitrary
|
|
@@ -297,7 +316,13 @@ export async function parse(config: OpenApi.Config, options: parse.Options = {})
|
|
|
297
316
|
|
|
298
317
|
const securitySchemes = document.components?.securitySchemes ?? {}
|
|
299
318
|
|
|
300
|
-
const
|
|
319
|
+
const built = await buildGroups(document, { baseUrl: openrpcBaseUrl })
|
|
320
|
+
const { groups, tagGroups, excluded } = applyExclusions(
|
|
321
|
+
built.groups,
|
|
322
|
+
buildTagGroups(document, built.groups),
|
|
323
|
+
config.exclude,
|
|
324
|
+
)
|
|
325
|
+
const injections = built.injections
|
|
301
326
|
|
|
302
327
|
// Inject JSON-RPC examples onto the host operation in the spec the
|
|
303
328
|
// interactive client loads, so each "Try" can preselect its method's
|
|
@@ -307,14 +332,24 @@ export async function parse(config: OpenApi.Config, options: parse.Options = {})
|
|
|
307
332
|
for (const injection of injections)
|
|
308
333
|
injectRpcExamples(specification as Record<string, unknown>, injection)
|
|
309
334
|
|
|
335
|
+
// Excluded operations are stripped from the client spec too (forcing inline
|
|
336
|
+
// for URL specs), so the interactive client's own navigation can't leak
|
|
337
|
+
// them. Strip a clone: the input `specification` may be a caller-owned
|
|
338
|
+
// object also served elsewhere (e.g. `/openapi.json`), which must keep the
|
|
339
|
+
// excluded operations.
|
|
340
|
+
const clientSpecification = (
|
|
341
|
+
excluded.length > 0 ? structuredClone(specification) : specification
|
|
342
|
+
) as Record<string, unknown>
|
|
343
|
+
stripOperations(clientSpecification, excluded)
|
|
344
|
+
|
|
310
345
|
const shouldInlineClientSpec =
|
|
311
|
-
injections.length > 0 ||
|
|
312
|
-
|
|
346
|
+
injections.length > 0 ||
|
|
347
|
+
excluded.length > 0 ||
|
|
348
|
+
(isUrl && shouldNormalizeClientServers(document, servers))
|
|
349
|
+
if (shouldInlineClientSpec) setClientServers(clientSpecification, servers)
|
|
313
350
|
|
|
314
351
|
const client =
|
|
315
|
-
isUrl && !shouldInlineClientSpec
|
|
316
|
-
? { url: spec as string }
|
|
317
|
-
: { content: specification as Record<string, unknown> }
|
|
352
|
+
isUrl && !shouldInlineClientSpec ? { url: spec as string } : { content: clientSpecification }
|
|
318
353
|
|
|
319
354
|
return {
|
|
320
355
|
path: config.path ?? '/',
|
|
@@ -326,11 +361,39 @@ export async function parse(config: OpenApi.Config, options: parse.Options = {})
|
|
|
326
361
|
},
|
|
327
362
|
servers,
|
|
328
363
|
groups,
|
|
364
|
+
...(tagGroups ? { tagGroups } : {}),
|
|
329
365
|
traits: buildTraits(document),
|
|
330
366
|
securitySchemes,
|
|
331
367
|
}
|
|
332
368
|
}
|
|
333
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Resolves `x-tagGroups` entries against the built categories. Tags that don't
|
|
372
|
+
* resolve to a rendered category are dropped; a category claimed by multiple
|
|
373
|
+
* sections stays with the first (pages are per-category, so one sidebar home).
|
|
374
|
+
* Returns `undefined` when nothing resolves, so the sidebar stays flat.
|
|
375
|
+
*/
|
|
376
|
+
function buildTagGroups(document: Document, groups: IrGroup[]): IrTagGroup[] | undefined {
|
|
377
|
+
const entries = document['x-tagGroups']
|
|
378
|
+
if (!entries || entries.length === 0) return undefined
|
|
379
|
+
|
|
380
|
+
const idByName = new Map(groups.map((group) => [group.name, group.id]))
|
|
381
|
+
const claimed = new Set<string>()
|
|
382
|
+
const tagGroups: IrTagGroup[] = []
|
|
383
|
+
for (const entry of entries) {
|
|
384
|
+
if (!entry?.name) continue
|
|
385
|
+
const groupIds: string[] = []
|
|
386
|
+
for (const tag of entry.tags ?? []) {
|
|
387
|
+
const id = idByName.get(tag)
|
|
388
|
+
if (!id || claimed.has(id)) continue
|
|
389
|
+
claimed.add(id)
|
|
390
|
+
groupIds.push(id)
|
|
391
|
+
}
|
|
392
|
+
if (groupIds.length > 0) tagGroups.push({ name: entry.name, groupIds })
|
|
393
|
+
}
|
|
394
|
+
return tagGroups.length > 0 ? tagGroups : undefined
|
|
395
|
+
}
|
|
396
|
+
|
|
334
397
|
/**
|
|
335
398
|
* Adds named JSON-RPC request examples to a host operation's
|
|
336
399
|
* `application/json` request body in the (upgraded) spec document. Scalar
|
|
@@ -358,6 +421,78 @@ function injectRpcExamples(specification: Record<string, unknown>, injection: Rp
|
|
|
358
421
|
media['examples'] = { ...(media['examples'] as Record<string, unknown>), ...injection.examples }
|
|
359
422
|
}
|
|
360
423
|
|
|
424
|
+
/** An operation removed by `exclude`, identified for stripping from the client spec. */
|
|
425
|
+
type ExcludedOperation = { method: string; path: string; isWebhook: boolean }
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Applies the config `exclude` list: a name matching an `x-tagGroups` section
|
|
429
|
+
* excludes every category it claims; a name matching a category (tag) excludes
|
|
430
|
+
* that category. Excluded categories are dropped from `groups`, pruned from
|
|
431
|
+
* `tagGroups` (emptied sections are removed), and their operations returned
|
|
432
|
+
* for stripping from the client spec. Unmatched names are ignored.
|
|
433
|
+
*/
|
|
434
|
+
function applyExclusions(
|
|
435
|
+
groups: IrGroup[],
|
|
436
|
+
tagGroups: IrTagGroup[] | undefined,
|
|
437
|
+
exclude: readonly string[] | undefined,
|
|
438
|
+
): { groups: IrGroup[]; tagGroups: IrTagGroup[] | undefined; excluded: ExcludedOperation[] } {
|
|
439
|
+
const names = new Set(exclude ?? [])
|
|
440
|
+
if (names.size === 0) return { groups, tagGroups, excluded: [] }
|
|
441
|
+
|
|
442
|
+
const excludedIds = new Set<string>()
|
|
443
|
+
for (const tagGroup of tagGroups ?? [])
|
|
444
|
+
if (names.has(tagGroup.name)) for (const id of tagGroup.groupIds) excludedIds.add(id)
|
|
445
|
+
for (const group of groups) if (names.has(group.name)) excludedIds.add(group.id)
|
|
446
|
+
if (excludedIds.size === 0) return { groups, tagGroups, excluded: [] }
|
|
447
|
+
|
|
448
|
+
const excluded = groups
|
|
449
|
+
.filter((group) => excludedIds.has(group.id))
|
|
450
|
+
.flatMap((group) =>
|
|
451
|
+
group.operations.map((operation) => ({
|
|
452
|
+
method: operation.method,
|
|
453
|
+
path: operation.path,
|
|
454
|
+
isWebhook: operation.isWebhook ?? false,
|
|
455
|
+
})),
|
|
456
|
+
)
|
|
457
|
+
const prunedTagGroups = (tagGroups ?? [])
|
|
458
|
+
.filter((tagGroup) => !names.has(tagGroup.name))
|
|
459
|
+
.map((tagGroup) => ({
|
|
460
|
+
...tagGroup,
|
|
461
|
+
groupIds: tagGroup.groupIds.filter((id) => !excludedIds.has(id)),
|
|
462
|
+
}))
|
|
463
|
+
.filter((tagGroup) => tagGroup.groupIds.length > 0)
|
|
464
|
+
return {
|
|
465
|
+
groups: groups.filter((group) => !excludedIds.has(group.id)),
|
|
466
|
+
tagGroups: prunedTagGroups.length > 0 ? prunedTagGroups : undefined,
|
|
467
|
+
excluded,
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Deletes excluded operations from the (upgraded) spec handed to the
|
|
473
|
+
* interactive client. A path item left with no methods is removed entirely.
|
|
474
|
+
*/
|
|
475
|
+
function stripOperations(
|
|
476
|
+
specification: Record<string, unknown>,
|
|
477
|
+
excluded: ExcludedOperation[],
|
|
478
|
+
): void {
|
|
479
|
+
// JSON-RPC operations expanded from one host operation share its path+method.
|
|
480
|
+
const seen = new Set<string>()
|
|
481
|
+
for (const operation of excluded) {
|
|
482
|
+
const key = `${operation.isWebhook}:${operation.method}:${operation.path}`
|
|
483
|
+
if (seen.has(key)) continue
|
|
484
|
+
seen.add(key)
|
|
485
|
+
|
|
486
|
+
const target = specification[operation.isWebhook ? 'webhooks' : 'paths'] as
|
|
487
|
+
| Record<string, Record<string, unknown>>
|
|
488
|
+
| undefined
|
|
489
|
+
const item = target?.[operation.path]
|
|
490
|
+
if (!item || typeof item !== 'object') continue
|
|
491
|
+
delete item[operation.method.toLowerCase()]
|
|
492
|
+
if (!methods.some((method) => method in item)) delete target[operation.path]
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
361
496
|
/** Builds doc-only "trait" pages from tags marked `x-traitTag: true`. */
|
|
362
497
|
function buildTraits(document: Document): IrTrait[] {
|
|
363
498
|
const slugger = new GithubSlugger()
|
|
@@ -53,8 +53,9 @@ export function sidebars(
|
|
|
53
53
|
const entry = config?.openapi?.find((entry) => entry.path === path)
|
|
54
54
|
const collapsed = entry?.sidebar?.collapsed
|
|
55
55
|
const intro = entry?.sidebar?.intro
|
|
56
|
+
const flatten = entry?.sidebar?.flatten
|
|
56
57
|
const backLink = entry?.sidebar?.backLink ?? true
|
|
57
|
-
result[path] = { backLink, items: Sidebar.toSidebar(ir, { collapsed, intro }) }
|
|
58
|
+
result[path] = { backLink, items: Sidebar.toSidebar(ir, { collapsed, intro, flatten }) }
|
|
58
59
|
}
|
|
59
60
|
return result
|
|
60
61
|
}
|
|
@@ -94,6 +94,100 @@ describe('toSidebar', () => {
|
|
|
94
94
|
expect((sidebar[1] as { collapsed: boolean }).collapsed).toBe(true)
|
|
95
95
|
})
|
|
96
96
|
|
|
97
|
+
test('nests claimed groups under static section headers from tagGroups', () => {
|
|
98
|
+
const sectioned: Ir = {
|
|
99
|
+
...ir,
|
|
100
|
+
groups: [
|
|
101
|
+
...ir.groups,
|
|
102
|
+
{
|
|
103
|
+
id: 'platform',
|
|
104
|
+
name: 'Platform',
|
|
105
|
+
operations: [
|
|
106
|
+
{
|
|
107
|
+
id: 'listkeys',
|
|
108
|
+
method: 'GET',
|
|
109
|
+
path: '/keys',
|
|
110
|
+
summary: 'List keys',
|
|
111
|
+
parameters: [],
|
|
112
|
+
responses: [],
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
tagGroups: [
|
|
118
|
+
{ name: 'Data API', groupIds: ['pets'] },
|
|
119
|
+
{ name: 'Platform API', groupIds: ['platform'] },
|
|
120
|
+
],
|
|
121
|
+
}
|
|
122
|
+
const sidebar = toSidebar(sectioned, { collapsed: true })
|
|
123
|
+
expect(sidebar.map((item) => item.text)).toEqual(['Introduction', 'Data API', 'Platform API'])
|
|
124
|
+
// Sections are static headers (not collapsible); nested groups keep the
|
|
125
|
+
// `collapsed` behavior.
|
|
126
|
+
const section = sidebar[1] as {
|
|
127
|
+
collapsed?: boolean
|
|
128
|
+
items: { text?: string; collapsed?: boolean }[]
|
|
129
|
+
} // prettier-ignore
|
|
130
|
+
expect(section.collapsed).toBeUndefined()
|
|
131
|
+
expect(section.items.map((item) => item.text)).toEqual(['pets'])
|
|
132
|
+
expect(section.items[0]?.collapsed).toBe(true)
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
test('appends groups unclaimed by tagGroups at the top level', () => {
|
|
136
|
+
const sidebar = toSidebar({
|
|
137
|
+
...ir,
|
|
138
|
+
groups: [
|
|
139
|
+
...ir.groups,
|
|
140
|
+
{ id: 'internal', name: 'Internal', operations: ir.groups[0]?.operations ?? [] },
|
|
141
|
+
],
|
|
142
|
+
tagGroups: [{ name: 'Data API', groupIds: ['pets'] }],
|
|
143
|
+
})
|
|
144
|
+
expect(sidebar.map((item) => item.text)).toEqual(['Introduction', 'Data API', 'Internal'])
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
test('flattened tag groups render their categories in place at the top level', () => {
|
|
148
|
+
const sectioned: Ir = {
|
|
149
|
+
...ir,
|
|
150
|
+
groups: [
|
|
151
|
+
...ir.groups,
|
|
152
|
+
{
|
|
153
|
+
id: 'platform',
|
|
154
|
+
name: 'Platform',
|
|
155
|
+
operations: [
|
|
156
|
+
{
|
|
157
|
+
id: 'listkeys',
|
|
158
|
+
method: 'GET',
|
|
159
|
+
path: '/keys',
|
|
160
|
+
summary: 'List keys',
|
|
161
|
+
parameters: [],
|
|
162
|
+
responses: [],
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
tagGroups: [
|
|
168
|
+
{ name: 'Data API', groupIds: ['pets'] },
|
|
169
|
+
{ name: 'Platform API', groupIds: ['platform'] },
|
|
170
|
+
],
|
|
171
|
+
}
|
|
172
|
+
const sidebar = toSidebar(sectioned, { flatten: ['Data API'] })
|
|
173
|
+
// `pets` renders top-level where its section would sit; `Platform API`
|
|
174
|
+
// keeps its section header.
|
|
175
|
+
expect(sidebar.map((item) => item.text)).toEqual(['Introduction', 'pets', 'Platform API'])
|
|
176
|
+
const pets = sidebar[1] as { collapsed?: boolean }
|
|
177
|
+
const section = sidebar[2] as { collapsed?: boolean; items: { text?: string }[] }
|
|
178
|
+
expect(pets.collapsed).toBe(false)
|
|
179
|
+
expect(section.collapsed).toBeUndefined()
|
|
180
|
+
expect(section.items.map((item) => item.text)).toEqual(['Platform'])
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
test('ignores flatten names that match no tag group', () => {
|
|
184
|
+
const sidebar = toSidebar(
|
|
185
|
+
{ ...ir, tagGroups: [{ name: 'Data API', groupIds: ['pets'] }] },
|
|
186
|
+
{ flatten: ['Nope'] },
|
|
187
|
+
)
|
|
188
|
+
expect(sidebar.map((item) => item.text)).toEqual(['Introduction', 'Data API'])
|
|
189
|
+
})
|
|
190
|
+
|
|
97
191
|
test('injects groupExtras after a group Overview link', () => {
|
|
98
192
|
const sidebar = toSidebar(ir, {
|
|
99
193
|
groupExtras: new Map([['pets', [{ text: 'Rate limits', link: '/api/rate-limits' }]]]),
|
|
@@ -32,7 +32,9 @@ export function methodVariant(method: string): BadgeVariant {
|
|
|
32
32
|
* OpenAPI IR.
|
|
33
33
|
*
|
|
34
34
|
* Each category is its own page; operation links are in-page anchors on that
|
|
35
|
-
* page (`/api/{group}#{operation}`).
|
|
35
|
+
* page (`/api/{group}#{operation}`). When the IR carries `tagGroups`, claimed
|
|
36
|
+
* categories nest under static section headers; unclaimed ones follow at the
|
|
37
|
+
* top level so no category silently disappears.
|
|
36
38
|
*/
|
|
37
39
|
export function toSidebar(ir: Ir, options: toSidebar.Options = {}): SidebarItem<true>[] {
|
|
38
40
|
// Strip a trailing slash so a root mount (`/`) doesn't yield `//group`.
|
|
@@ -63,28 +65,48 @@ export function toSidebar(ir: Ir, options: toSidebar.Options = {}): SidebarItem<
|
|
|
63
65
|
// active group still auto-expands at render). `Introduction` is unaffected.
|
|
64
66
|
const groupCollapsed = options.collapsed ?? false
|
|
65
67
|
|
|
68
|
+
const groupItem = (group: Ir['groups'][number]): SidebarItem<true> => ({
|
|
69
|
+
text: group.name,
|
|
70
|
+
collapsed: groupCollapsed,
|
|
71
|
+
items: [
|
|
72
|
+
// An "Overview" entry links to the category itself; the top-level item
|
|
73
|
+
// is a non-link header so its label doesn't compete with the operations.
|
|
74
|
+
{ text: 'Overview', link: groupLink(group.id) },
|
|
75
|
+
...((groupExtras.get(group.id) ?? []) as SidebarItem<true>[]),
|
|
76
|
+
...group.operations.map((operation) => ({
|
|
77
|
+
text: operation.summary || `${operation.method} ${operation.path}`,
|
|
78
|
+
link: operationLink(operation, group.id),
|
|
79
|
+
// Webhooks are inbound deliveries, not callable endpoints — show a
|
|
80
|
+
// webhook glyph instead of the HTTP method (which is always POST).
|
|
81
|
+
badge:
|
|
82
|
+
operation.isWebhook && webhookIcon
|
|
83
|
+
? { icon: webhookIcon, variant: methodVariant(operation.method) }
|
|
84
|
+
: { text: operation.method, variant: methodVariant(operation.method) },
|
|
85
|
+
})),
|
|
86
|
+
],
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
const tagGroups = ir.tagGroups ?? []
|
|
90
|
+
if (tagGroups.length === 0) return [introduction, ...ir.groups.map(groupItem)]
|
|
91
|
+
|
|
92
|
+
// `x-tagGroups` sections render as static headers (no `collapsed`, so not
|
|
93
|
+
// collapsible); the per-category `collapsed` behavior applies unchanged.
|
|
94
|
+
// Sections named in `flatten` spread their categories in place instead.
|
|
95
|
+
const flatten = new Set(options.flatten ?? [])
|
|
96
|
+
const groupById = new Map(ir.groups.map((group) => [group.id, group]))
|
|
97
|
+
const claimed = new Set(tagGroups.flatMap((tagGroup) => tagGroup.groupIds))
|
|
98
|
+
const sections = tagGroups.flatMap((tagGroup) => {
|
|
99
|
+
const items = tagGroup.groupIds.flatMap((id) => {
|
|
100
|
+
const group = groupById.get(id)
|
|
101
|
+
return group ? [groupItem(group)] : []
|
|
102
|
+
})
|
|
103
|
+
if (flatten.has(tagGroup.name)) return items
|
|
104
|
+
return [{ text: tagGroup.name, items }]
|
|
105
|
+
})
|
|
66
106
|
return [
|
|
67
107
|
introduction,
|
|
68
|
-
...
|
|
69
|
-
|
|
70
|
-
collapsed: groupCollapsed,
|
|
71
|
-
items: [
|
|
72
|
-
// An "Overview" entry links to the category itself; the top-level item
|
|
73
|
-
// is a non-link header so its label doesn't compete with the operations.
|
|
74
|
-
{ text: 'Overview', link: groupLink(group.id) },
|
|
75
|
-
...((groupExtras.get(group.id) ?? []) as SidebarItem<true>[]),
|
|
76
|
-
...group.operations.map((operation) => ({
|
|
77
|
-
text: operation.summary || `${operation.method} ${operation.path}`,
|
|
78
|
-
link: operationLink(operation, group.id),
|
|
79
|
-
// Webhooks are inbound deliveries, not callable endpoints — show a
|
|
80
|
-
// webhook glyph instead of the HTTP method (which is always POST).
|
|
81
|
-
badge:
|
|
82
|
-
operation.isWebhook && webhookIcon
|
|
83
|
-
? { icon: webhookIcon, variant: methodVariant(operation.method) }
|
|
84
|
-
: { text: operation.method, variant: methodVariant(operation.method) },
|
|
85
|
-
})),
|
|
86
|
-
],
|
|
87
|
-
})),
|
|
108
|
+
...sections,
|
|
109
|
+
...ir.groups.filter((group) => !claimed.has(group.id)).map(groupItem),
|
|
88
110
|
]
|
|
89
111
|
}
|
|
90
112
|
|
|
@@ -99,5 +121,10 @@ export declare namespace toSidebar {
|
|
|
99
121
|
* auto-expands). `Introduction` is unaffected. @default false
|
|
100
122
|
*/
|
|
101
123
|
collapsed?: boolean | undefined
|
|
124
|
+
/**
|
|
125
|
+
* Names of `x-tagGroups` sections whose categories render as top-level
|
|
126
|
+
* items (in place) instead of nesting under the section header.
|
|
127
|
+
*/
|
|
128
|
+
flatten?: readonly string[] | undefined
|
|
102
129
|
}
|
|
103
130
|
}
|
package/src/react/Link.tsx
CHANGED
|
@@ -57,6 +57,7 @@ export async function prepare(
|
|
|
57
57
|
const bottom = config.sidebar?.bottom ?? []
|
|
58
58
|
const intro = [...traitIntro, ...(config.sidebar?.intro ?? [])]
|
|
59
59
|
const collapsed = config.sidebar?.collapsed ?? false
|
|
60
|
+
const flatten = config.sidebar?.flatten
|
|
60
61
|
const newGroups = [...extraGroups].map(([name, items]) => ({
|
|
61
62
|
text: name,
|
|
62
63
|
collapsed,
|
|
@@ -64,7 +65,7 @@ export async function prepare(
|
|
|
64
65
|
}))
|
|
65
66
|
const sidebar = [
|
|
66
67
|
...top,
|
|
67
|
-
...Sidebar.toSidebar(ir, { intro, groupExtras, collapsed }),
|
|
68
|
+
...Sidebar.toSidebar(ir, { intro, groupExtras, collapsed, flatten }),
|
|
68
69
|
...newGroups,
|
|
69
70
|
...bottom,
|
|
70
71
|
]
|