vocs 2.3.2 → 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.
@@ -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;CAC/B,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;;;;;;;;;;;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,CAYrD;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"}
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;AA6KH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,IAAI,CAAC,MAAoB;IACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE7C,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,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"}
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":"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"}
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 { groups, injections } = await buildGroups(document, { baseUrl: openrpcBaseUrl });
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
- const shouldInlineClientSpec = injections.length > 0 || (isUrl && shouldNormalizeClientServers(document, servers));
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(specification, servers);
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":"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"}
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,CAWnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmBnD"}
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":"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"}
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;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,SAAS,CAAC,OAAY,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAoDtF;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;KAChC,CAAA;CACF"}
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
- ...ir.groups.map((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
- })),
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":"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"}
1
+ {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/internal/openapi/sidebar.ts"],"names":[],"mappings":"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"}
@@ -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,CAuElB;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"}
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.2",
4
+ "version": "2.3.3",
5
5
  "main": "./dist/index.js",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -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 { groups, injections } = await buildGroups(document, { baseUrl: openrpcBaseUrl })
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 || (isUrl && shouldNormalizeClientServers(document, servers))
312
- if (shouldInlineClientSpec) setClientServers(specification as Record<string, unknown>, servers)
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
- ...ir.groups.map((group) => ({
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
- })),
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
  }
@@ -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
  ]