sourcey 3.3.10 → 3.4.1

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.
Files changed (58) hide show
  1. package/README.md +19 -3
  2. package/dist/client/scroll-tracker.js +8 -1
  3. package/dist/client/search.js +26 -7
  4. package/dist/components/layout/Head.d.ts.map +1 -1
  5. package/dist/components/layout/Head.js +1 -1
  6. package/dist/components/layout/Header.d.ts.map +1 -1
  7. package/dist/components/layout/Header.js +2 -2
  8. package/dist/components/layout/Page.d.ts.map +1 -1
  9. package/dist/components/layout/Page.js +6 -5
  10. package/dist/components/layout/Sidebar.d.ts.map +1 -1
  11. package/dist/components/layout/Sidebar.js +11 -2
  12. package/dist/components/layout/TableOfContents.d.ts.map +1 -1
  13. package/dist/components/layout/TableOfContents.js +3 -2
  14. package/dist/components/mcp/AnnotationBadges.d.ts +15 -0
  15. package/dist/components/mcp/AnnotationBadges.d.ts.map +1 -0
  16. package/dist/components/mcp/AnnotationBadges.js +10 -0
  17. package/dist/components/mcp/McpConnection.d.ts +10 -0
  18. package/dist/components/mcp/McpConnection.d.ts.map +1 -0
  19. package/dist/components/mcp/McpConnection.js +32 -0
  20. package/dist/components/mcp/McpEndpointBar.d.ts +8 -0
  21. package/dist/components/mcp/McpEndpointBar.d.ts.map +1 -0
  22. package/dist/components/mcp/McpEndpointBar.js +16 -0
  23. package/dist/components/mcp/McpReturns.d.ts +18 -0
  24. package/dist/components/mcp/McpReturns.d.ts.map +1 -0
  25. package/dist/components/mcp/McpReturns.js +33 -0
  26. package/dist/components/openapi/Operation.d.ts.map +1 -1
  27. package/dist/components/openapi/Operation.js +5 -1
  28. package/dist/config.d.ts +11 -0
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +12 -3
  31. package/dist/core/markdown-loader.d.ts.map +1 -1
  32. package/dist/core/markdown-loader.js +7 -2
  33. package/dist/core/mcp-normalizer.d.ts +11 -0
  34. package/dist/core/mcp-normalizer.d.ts.map +1 -0
  35. package/dist/core/mcp-normalizer.js +382 -0
  36. package/dist/core/search-indexer.d.ts +3 -1
  37. package/dist/core/search-indexer.d.ts.map +1 -1
  38. package/dist/core/search-indexer.js +7 -3
  39. package/dist/core/types.d.ts +26 -2
  40. package/dist/core/types.d.ts.map +1 -1
  41. package/dist/dev-server.d.ts.map +1 -1
  42. package/dist/dev-server.js +47 -9
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +22 -10
  45. package/dist/renderer/html-builder.d.ts +2 -0
  46. package/dist/renderer/html-builder.d.ts.map +1 -1
  47. package/dist/renderer/html-builder.js +15 -0
  48. package/dist/renderer/llms.d.ts +6 -0
  49. package/dist/renderer/llms.d.ts.map +1 -0
  50. package/dist/renderer/llms.js +247 -0
  51. package/dist/themes/default/main.css +3 -0
  52. package/dist/themes/default/sourcey.css +101 -23
  53. package/dist/utils/icons.d.ts +4 -0
  54. package/dist/utils/icons.d.ts.map +1 -1
  55. package/dist/utils/icons.js +6 -0
  56. package/dist/utils/markdown.d.ts.map +1 -1
  57. package/dist/utils/markdown.js +97 -1
  58. package/package.json +6 -2
package/dist/config.js CHANGED
@@ -59,6 +59,7 @@ export function configFromSpec(specPath) {
59
59
  tabs: [{ label: "API Reference", slug: "api", openapi: absSpec }],
60
60
  navbar: { links: [] },
61
61
  footer: { links: [] },
62
+ search: { featured: [] },
62
63
  };
63
64
  }
64
65
  // ---------------------------------------------------------------------------
@@ -85,6 +86,9 @@ export async function resolveConfigFromRaw(raw, configDir) {
85
86
  footer: {
86
87
  links: raw.footer?.links ?? [],
87
88
  },
89
+ search: {
90
+ featured: raw.search?.featured ?? [],
91
+ },
88
92
  };
89
93
  }
90
94
  const VALID_PRESETS = ["default", "minimal", "api-first"];
@@ -137,18 +141,23 @@ async function resolveTabs(tabs, configDir) {
137
141
  if (slugs.has(slug))
138
142
  throw new Error(`Duplicate tab slug "${slug}" (from "${tab.tab}")`);
139
143
  slugs.add(slug);
140
- const sources = [tab.openapi, tab.groups, tab.doxygen].filter(Boolean).length;
144
+ const sources = [tab.openapi, tab.groups, tab.doxygen, tab.mcp].filter(Boolean).length;
141
145
  if (sources > 1) {
142
- throw new Error(`Tab "${tab.tab}" has multiple sources; use only one of "openapi", "groups", or "doxygen"`);
146
+ throw new Error(`Tab "${tab.tab}" has multiple sources; use only one of "openapi", "groups", "doxygen", or "mcp"`);
143
147
  }
144
148
  if (sources === 0) {
145
- throw new Error(`Tab "${tab.tab}" needs one of "openapi", "groups", or "doxygen"`);
149
+ throw new Error(`Tab "${tab.tab}" needs one of "openapi", "groups", "doxygen", or "mcp"`);
146
150
  }
147
151
  if (tab.openapi) {
148
152
  const absPath = resolve(configDir, tab.openapi);
149
153
  await assertExists(absPath, `OpenAPI spec "${tab.openapi}" in tab "${tab.tab}"`);
150
154
  resolved.push({ label: tab.tab, slug, openapi: absPath });
151
155
  }
156
+ else if (tab.mcp) {
157
+ const absPath = resolve(configDir, tab.mcp);
158
+ await assertExists(absPath, `MCP spec "${tab.mcp}" in tab "${tab.tab}"`);
159
+ resolved.push({ label: tab.tab, slug, mcp: absPath });
160
+ }
152
161
  else if (tab.doxygen) {
153
162
  const absXml = resolve(configDir, tab.doxygen.xml);
154
163
  await assertExists(absXml, `Doxygen XML directory "${tab.doxygen.xml}" in tab "${tab.tab}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-loader.d.ts","sourceRoot":"","sources":["../../src/core/markdown-loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMzF,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAwTxD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAmBvB;AAUD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrD"}
1
+ {"version":3,"file":"markdown-loader.d.ts","sourceRoot":"","sources":["../../src/core/markdown-loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMzF,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA4TxD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAmBvB;AAUD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrD"}
@@ -220,8 +220,13 @@ ${content.trim()}
220
220
  </div>
221
221
  </details>\n\n`;
222
222
  });
223
- // Auto-wrap consecutive accordion items in an accordion-group
224
- html = html.replace(/(<details class="accordion-item">[\s\S]*?<\/details>\s*){2,}/g, (match) => `<div class="accordion-group not-prose">\n${match.trim()}\n</div>`);
223
+ // Auto-wrap consecutive accordion items in an accordion-group (skip already-wrapped)
224
+ html = html.replace(/(<details class="accordion-item">[\s\S]*?<\/details>\s*){2,}/g, (match, _p1, offset) => {
225
+ const before = html.slice(Math.max(0, offset - 40), offset);
226
+ if (before.includes("accordion-group"))
227
+ return match;
228
+ return `<div class="accordion-group not-prose">\n${match.trim()}\n</div>`;
229
+ });
225
230
  return html;
226
231
  }
227
232
  // ---------------------------------------------------------------------------
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Convert an McpSpec (from mcp-parser) into a NormalizedSpec for rendering.
3
+ *
4
+ * This is the bridge between the MCP snapshot format and sourcey's
5
+ * format-agnostic rendering pipeline. Everything downstream (components,
6
+ * search, navigation, themes) works unchanged.
7
+ */
8
+ import type { McpSpec } from "mcp-parser";
9
+ import type { NormalizedSpec } from "./types.js";
10
+ export declare function normalizeMcpSpec(spec: McpSpec): NormalizedSpec;
11
+ //# sourceMappingURL=mcp-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-normalizer.d.ts","sourceRoot":"","sources":["../../src/core/mcp-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAoE,MAAM,YAAY,CAAC;AAC5G,OAAO,KAAK,EACV,cAAc,EAUf,MAAM,YAAY,CAAC;AAKpB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CA+C9D"}
@@ -0,0 +1,382 @@
1
+ /**
2
+ * Convert an McpSpec (from mcp-parser) into a NormalizedSpec for rendering.
3
+ *
4
+ * This is the bridge between the MCP snapshot format and sourcey's
5
+ * format-agnostic rendering pipeline. Everything downstream (components,
6
+ * search, navigation, themes) works unchanged.
7
+ */
8
+ import { generateExample } from "../utils/example-generator.js";
9
+ // ── Public API ────────────────────────────────────────────────────────
10
+ export function normalizeMcpSpec(spec) {
11
+ const connectionInfo = {
12
+ transport: spec.transport ? {
13
+ type: spec.transport.type,
14
+ command: spec.transport.command,
15
+ args: spec.transport.args,
16
+ url: spec.transport.url,
17
+ } : undefined,
18
+ serverName: spec.server.name,
19
+ mcpVersion: spec.mcpVersion,
20
+ capabilities: spec.capabilities,
21
+ };
22
+ const toolOps = (spec.tools ?? []).map((t) => toolToOperation(t, connectionInfo));
23
+ const resourceOps = (spec.resources ?? []).map((r) => resourceToOperation(r, connectionInfo));
24
+ const templateOps = (spec.resourceTemplates ?? []).map((t) => resourceTemplateToOperation(t, connectionInfo));
25
+ const promptOps = (spec.prompts ?? []).map((p) => promptToOperation(p, connectionInfo));
26
+ const allOps = [...toolOps, ...resourceOps, ...templateOps, ...promptOps];
27
+ // Build tags — only for non-empty groups
28
+ const tags = [];
29
+ if (toolOps.length)
30
+ tags.push({ name: "Tools", operations: toolOps });
31
+ if (resourceOps.length || templateOps.length)
32
+ tags.push({ name: "Resources", operations: [...resourceOps, ...templateOps] });
33
+ if (promptOps.length)
34
+ tags.push({ name: "Prompts", operations: promptOps });
35
+ // Shared schema definitions from $defs
36
+ const schemas = {};
37
+ if (spec.$defs) {
38
+ for (const [name, schema] of Object.entries(spec.$defs)) {
39
+ schemas[name] = convertSchema(schema, name);
40
+ }
41
+ }
42
+ return {
43
+ info: {
44
+ title: spec.server.name,
45
+ version: spec.server.version,
46
+ description: spec.description,
47
+ },
48
+ servers: spec.transport?.url ? [{ url: spec.transport.url }] : [],
49
+ tags,
50
+ operations: allOps,
51
+ schemas,
52
+ securitySchemes: {},
53
+ webhooks: [],
54
+ };
55
+ }
56
+ // ── Tool → Operation ──────────────────────────────────────────────────
57
+ function toolToOperation(tool, connection) {
58
+ const group = tool["x-sourcey-group"];
59
+ const inputSchema = convertSchema(tool.inputSchema);
60
+ const outputSchema = tool.outputSchema ? convertSchema(tool.outputSchema) : undefined;
61
+ // Flat parameters from top-level inputSchema properties
62
+ const parameters = flattenInputSchema(tool.inputSchema);
63
+ // Only include requestBody for nested/complex schemas
64
+ const requestBody = hasNestedProperties(tool.inputSchema) ? {
65
+ required: true,
66
+ content: { "application/json": { schema: inputSchema } },
67
+ } : undefined;
68
+ return {
69
+ operationId: tool.name,
70
+ summary: tool.title ?? tool.name,
71
+ description: tool.description,
72
+ method: "tool",
73
+ path: tool.name,
74
+ tags: [group ?? "Tools"],
75
+ parameters,
76
+ requestBody,
77
+ responses: [],
78
+ security: [],
79
+ deprecated: false,
80
+ codeSamples: generateToolSamples(tool, inputSchema),
81
+ mcpExtras: {
82
+ type: "tool",
83
+ annotations: tool.annotations ? {
84
+ readOnlyHint: tool.annotations.readOnlyHint,
85
+ destructiveHint: tool.annotations.destructiveHint,
86
+ idempotentHint: tool.annotations.idempotentHint,
87
+ openWorldHint: tool.annotations.openWorldHint,
88
+ } : undefined,
89
+ outputSchema,
90
+ connection,
91
+ },
92
+ };
93
+ }
94
+ // ── Resource → Operation ──────────────────────────────────────────────
95
+ function resourceToOperation(resource, connection) {
96
+ const group = resource["x-sourcey-group"];
97
+ return {
98
+ operationId: slugify(resource.name),
99
+ summary: resource.name,
100
+ description: resource.description,
101
+ method: "resource",
102
+ path: resource.uri,
103
+ tags: [group ?? "Resources"],
104
+ parameters: [],
105
+ responses: [],
106
+ security: [],
107
+ deprecated: false,
108
+ codeSamples: generateResourceSamples(resource),
109
+ mcpExtras: {
110
+ type: "resource",
111
+ connection,
112
+ },
113
+ };
114
+ }
115
+ // ── Resource Template → Operation ─────────────────────────────────────
116
+ function resourceTemplateToOperation(template, connection) {
117
+ const group = template["x-sourcey-group"];
118
+ return {
119
+ operationId: slugify(template.name),
120
+ summary: template.name,
121
+ description: template.description,
122
+ method: "resource",
123
+ path: template.uriTemplate,
124
+ tags: [group ?? "Resources"],
125
+ parameters: extractUriTemplateParams(template.uriTemplate),
126
+ responses: [],
127
+ security: [],
128
+ deprecated: false,
129
+ codeSamples: generateResourceSamples({ uri: template.uriTemplate, name: template.name }),
130
+ mcpExtras: {
131
+ type: "resource",
132
+ connection,
133
+ },
134
+ };
135
+ }
136
+ // ── Prompt → Operation ────────────────────────────────────────────────
137
+ function promptToOperation(prompt, connection) {
138
+ const group = prompt["x-sourcey-group"];
139
+ const parameters = (prompt.arguments ?? []).map(arg => ({
140
+ name: arg.name,
141
+ in: "argument",
142
+ description: arg.description,
143
+ required: arg.required ?? false,
144
+ deprecated: false,
145
+ schema: { type: "string" },
146
+ }));
147
+ return {
148
+ operationId: prompt.name,
149
+ summary: prompt.name,
150
+ description: prompt.description,
151
+ method: "prompt",
152
+ path: prompt.name,
153
+ tags: [group ?? "Prompts"],
154
+ parameters,
155
+ responses: [],
156
+ security: [],
157
+ deprecated: false,
158
+ codeSamples: generatePromptSamples(prompt),
159
+ mcpExtras: {
160
+ type: "prompt",
161
+ connection,
162
+ },
163
+ };
164
+ }
165
+ // ── Schema conversion ─────────────────────────────────────────────────
166
+ function convertSchema(schema, name) {
167
+ const result = {};
168
+ if (name)
169
+ result.name = name;
170
+ if (schema.type)
171
+ result.type = schema.type;
172
+ if (schema.format)
173
+ result.format = schema.format;
174
+ if (schema.title)
175
+ result.title = schema.title;
176
+ if (schema.description)
177
+ result.description = schema.description;
178
+ if (schema.default !== undefined)
179
+ result.default = schema.default;
180
+ if (schema.enum)
181
+ result.enum = schema.enum;
182
+ if (schema.const !== undefined)
183
+ result.const = schema.const;
184
+ // Object
185
+ if (schema.properties) {
186
+ result.properties = {};
187
+ for (const [key, prop] of Object.entries(schema.properties)) {
188
+ result.properties[key] = convertSchema(prop, key);
189
+ }
190
+ }
191
+ if (schema.additionalProperties !== undefined) {
192
+ result.additionalProperties = typeof schema.additionalProperties === "boolean"
193
+ ? schema.additionalProperties
194
+ : convertSchema(schema.additionalProperties);
195
+ }
196
+ if (schema.required)
197
+ result.required = schema.required;
198
+ // Array — handle JsonSchema.items being JsonSchema | JsonSchema[]
199
+ if (schema.items) {
200
+ if (Array.isArray(schema.items)) {
201
+ result.items = schema.items.length === 1
202
+ ? convertSchema(schema.items[0])
203
+ : { oneOf: schema.items.map(s => convertSchema(s)) };
204
+ }
205
+ else {
206
+ result.items = convertSchema(schema.items);
207
+ }
208
+ }
209
+ if (schema.minItems !== undefined)
210
+ result.minItems = schema.minItems;
211
+ if (schema.maxItems !== undefined)
212
+ result.maxItems = schema.maxItems;
213
+ if (schema.uniqueItems !== undefined)
214
+ result.uniqueItems = schema.uniqueItems;
215
+ // Numeric
216
+ if (schema.minimum !== undefined)
217
+ result.minimum = schema.minimum;
218
+ if (schema.maximum !== undefined)
219
+ result.maximum = schema.maximum;
220
+ if (schema.exclusiveMinimum !== undefined)
221
+ result.exclusiveMinimum = schema.exclusiveMinimum;
222
+ if (schema.exclusiveMaximum !== undefined)
223
+ result.exclusiveMaximum = schema.exclusiveMaximum;
224
+ if (schema.multipleOf !== undefined)
225
+ result.multipleOf = schema.multipleOf;
226
+ // String
227
+ if (schema.minLength !== undefined)
228
+ result.minLength = schema.minLength;
229
+ if (schema.maxLength !== undefined)
230
+ result.maxLength = schema.maxLength;
231
+ if (schema.pattern)
232
+ result.pattern = schema.pattern;
233
+ // Composition
234
+ if (schema.allOf)
235
+ result.allOf = schema.allOf.map((s) => convertSchema(s));
236
+ if (schema.anyOf)
237
+ result.anyOf = schema.anyOf.map((s) => convertSchema(s));
238
+ if (schema.oneOf)
239
+ result.oneOf = schema.oneOf.map((s) => convertSchema(s));
240
+ if (schema.not)
241
+ result.not = convertSchema(schema.not);
242
+ // Examples
243
+ if (schema.examples)
244
+ result.examples = schema.examples;
245
+ return result;
246
+ }
247
+ // ── Helpers ───────────────────────────────────────────────────────────
248
+ function flattenInputSchema(schema) {
249
+ if (!schema.properties)
250
+ return [];
251
+ const required = new Set(schema.required ?? []);
252
+ return Object.entries(schema.properties).map(([name, prop]) => ({
253
+ name,
254
+ in: "argument",
255
+ description: prop.description,
256
+ required: required.has(name),
257
+ deprecated: false,
258
+ schema: convertSchema(prop),
259
+ example: prop.default,
260
+ }));
261
+ }
262
+ function hasNestedProperties(schema) {
263
+ if (!schema.properties)
264
+ return false;
265
+ return Object.values(schema.properties).some((prop) => {
266
+ if (prop.type === "object" && prop.properties)
267
+ return true;
268
+ if (prop.type === "array" && prop.items && !Array.isArray(prop.items) && prop.items.type === "object")
269
+ return true;
270
+ if (prop.allOf || prop.anyOf || prop.oneOf)
271
+ return true;
272
+ return false;
273
+ });
274
+ }
275
+ function extractUriTemplateParams(uriTemplate) {
276
+ const matches = uriTemplate.match(/\{([^}]+)\}/g);
277
+ if (!matches)
278
+ return [];
279
+ return matches.map(m => ({
280
+ name: m.slice(1, -1),
281
+ in: "path",
282
+ required: true,
283
+ deprecated: false,
284
+ schema: { type: "string" },
285
+ }));
286
+ }
287
+ function slugify(name) {
288
+ return name.replace(/[^a-z0-9]+/gi, "-").toLowerCase();
289
+ }
290
+ // ── Code sample generation ────────────────────────────────────────────
291
+ function generateToolSamples(tool, inputSchema) {
292
+ const example = inputSchema.properties
293
+ ? generateExample(inputSchema)
294
+ : {};
295
+ const exampleJson = JSON.stringify(example, null, 2);
296
+ const indented = exampleJson.split("\n").map((line, i) => i === 0 ? line : " " + line).join("\n");
297
+ return [
298
+ {
299
+ lang: "json",
300
+ label: "JSON-RPC",
301
+ source: `{
302
+ "jsonrpc": "2.0",
303
+ "method": "tools/call",
304
+ "params": {
305
+ "name": "${tool.name}",
306
+ "arguments": ${indented}
307
+ }
308
+ }`,
309
+ },
310
+ {
311
+ lang: "typescript",
312
+ label: "TypeScript",
313
+ source: `const result = await client.callTool("${tool.name}", ${exampleJson});`,
314
+ },
315
+ {
316
+ lang: "python",
317
+ label: "Python",
318
+ source: `result = await session.call_tool("${tool.name}", arguments=${exampleJson})`,
319
+ },
320
+ ];
321
+ }
322
+ function generateResourceSamples(resource) {
323
+ return [
324
+ {
325
+ lang: "json",
326
+ label: "JSON-RPC",
327
+ source: `{
328
+ "jsonrpc": "2.0",
329
+ "method": "resources/read",
330
+ "params": {
331
+ "uri": "${resource.uri}"
332
+ }
333
+ }`,
334
+ },
335
+ {
336
+ lang: "typescript",
337
+ label: "TypeScript",
338
+ source: `const result = await client.readResource("${resource.uri}");`,
339
+ },
340
+ {
341
+ lang: "python",
342
+ label: "Python",
343
+ source: `result = await session.read_resource("${resource.uri}")`,
344
+ },
345
+ ];
346
+ }
347
+ function generatePromptSamples(prompt) {
348
+ const args = (prompt.arguments ?? []);
349
+ const exampleArgs = Object.fromEntries(args.map((a) => [a.name, `<${a.name}>`]));
350
+ const argsJson = JSON.stringify(exampleArgs, null, 2);
351
+ const indented = argsJson.split("\n").map((line, i) => i === 0 ? line : " " + line).join("\n");
352
+ const tsArgs = args.map((a) => ` ${a.name}: "<${a.name}>",`).join("\n");
353
+ const pyArgs = args.map((a) => ` "${a.name}": "<${a.name}>",`).join("\n");
354
+ return [
355
+ {
356
+ lang: "json",
357
+ label: "JSON-RPC",
358
+ source: `{
359
+ "jsonrpc": "2.0",
360
+ "method": "prompts/get",
361
+ "params": {
362
+ "name": "${prompt.name}",
363
+ "arguments": ${indented}
364
+ }
365
+ }`,
366
+ },
367
+ {
368
+ lang: "typescript",
369
+ label: "TypeScript",
370
+ source: args.length
371
+ ? `const result = await client.getPrompt("${prompt.name}", {\n${tsArgs}\n});`
372
+ : `const result = await client.getPrompt("${prompt.name}");`,
373
+ },
374
+ {
375
+ lang: "python",
376
+ label: "Python",
377
+ source: args.length
378
+ ? `result = await session.get_prompt("${prompt.name}", arguments={\n${pyArgs}\n})`
379
+ : `result = await session.get_prompt("${prompt.name}")`,
380
+ },
381
+ ];
382
+ }
@@ -16,10 +16,12 @@ export interface SearchEntry {
16
16
  tab: string;
17
17
  /** Category for grouping results */
18
18
  category: string;
19
+ /** Featured in default search results */
20
+ featured?: boolean;
19
21
  }
20
22
  /**
21
23
  * Build a search index from specs and markdown pages.
22
24
  * Returns a JSON string ready to write to disk.
23
25
  */
24
- export declare function buildSearchIndex(specs: Map<string, NormalizedSpec>, pages: Map<string, MarkdownPage[]>, navigation: SiteNavigation, assetBase?: string): string;
26
+ export declare function buildSearchIndex(specs: Map<string, NormalizedSpec>, pages: Map<string, MarkdownPage[]>, navigation: SiteNavigation, assetBase?: string, featuredSlugs?: string[]): string;
25
27
  //# sourceMappingURL=search-indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/core/search-indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAClC,UAAU,EAAE,cAAc,EAC1B,SAAS,SAAM,GACd,MAAM,CAgER"}
1
+ {"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/core/search-indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOtD,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAClC,UAAU,EAAE,cAAc,EAC1B,SAAS,SAAM,EACf,aAAa,GAAE,MAAM,EAAO,GAC3B,MAAM,CAoER"}
@@ -6,8 +6,9 @@ import { htmlId } from "../utils/html-id.js";
6
6
  * Build a search index from specs and markdown pages.
7
7
  * Returns a JSON string ready to write to disk.
8
8
  */
9
- export function buildSearchIndex(specs, pages, navigation, assetBase = "/") {
9
+ export function buildSearchIndex(specs, pages, navigation, assetBase = "/", featuredSlugs = []) {
10
10
  const base = assetBase.endsWith("/") ? assetBase : assetBase + "/";
11
+ const featuredSet = new Set(featuredSlugs);
11
12
  const entries = [];
12
13
  // Index OpenAPI specs
13
14
  for (const [tabSlug, spec] of specs) {
@@ -43,19 +44,22 @@ export function buildSearchIndex(specs, pages, navigation, assetBase = "/") {
43
44
  const tabLabel = tab?.label ?? tabSlug;
44
45
  for (const page of tabPages) {
45
46
  // Page itself
47
+ const pageBase = tabSlug ? `${base}${tabSlug}/` : base;
48
+ const isFeatured = featuredSet.has(page.slug);
46
49
  entries.push({
47
50
  title: page.title,
48
51
  content: page.description || stripHtml(page.html).slice(0, 200),
49
- url: `${base}${tabSlug}/${page.slug}.html`,
52
+ url: `${pageBase}${page.slug}.html`,
50
53
  tab: tabLabel,
51
54
  category: "Pages",
55
+ ...(isFeatured && { featured: true }),
52
56
  });
53
57
  // Headings within page
54
58
  for (const heading of page.headings) {
55
59
  entries.push({
56
60
  title: heading.text,
57
61
  content: `${page.title} — ${heading.text}`,
58
- url: `${base}${tabSlug}/${page.slug}.html#${heading.id}`,
62
+ url: `${pageBase}${page.slug}.html#${heading.id}`,
59
63
  tab: tabLabel,
60
64
  category: "Sections",
61
65
  });
@@ -51,7 +51,7 @@ export interface NormalizedTag {
51
51
  /** Vendor extension: hide this tag from navigation */
52
52
  hidden?: boolean;
53
53
  }
54
- export type HttpMethod = "get" | "post" | "put" | "delete" | "patch" | "options" | "head" | "trace";
54
+ export type HttpMethod = "get" | "post" | "put" | "delete" | "patch" | "options" | "head" | "trace" | "tool" | "resource" | "prompt";
55
55
  export interface NormalizedOperation {
56
56
  operationId?: string;
57
57
  summary?: string;
@@ -71,10 +71,34 @@ export interface NormalizedOperation {
71
71
  hidden?: boolean;
72
72
  /** Vendor extension: custom code samples */
73
73
  codeSamples?: CodeSample[];
74
+ /** MCP-specific rendering data (undefined for OpenAPI operations) */
75
+ mcpExtras?: McpOperationExtras;
76
+ }
77
+ export interface McpOperationExtras {
78
+ type: "tool" | "resource" | "prompt";
79
+ annotations?: {
80
+ readOnlyHint?: boolean;
81
+ destructiveHint?: boolean;
82
+ idempotentHint?: boolean;
83
+ openWorldHint?: boolean;
84
+ };
85
+ outputSchema?: NormalizedSchema;
86
+ connection?: McpConnectionInfo;
87
+ }
88
+ export interface McpConnectionInfo {
89
+ transport?: {
90
+ type: string;
91
+ command?: string;
92
+ args?: string[];
93
+ url?: string;
94
+ };
95
+ serverName: string;
96
+ mcpVersion?: string;
97
+ capabilities?: Record<string, unknown>;
74
98
  }
75
99
  export interface NormalizedParameter {
76
100
  name: string;
77
- in: "query" | "header" | "path" | "cookie";
101
+ in: "query" | "header" | "path" | "cookie" | "argument";
78
102
  description?: string;
79
103
  required: boolean;
80
104
  deprecated: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAID,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAC/F,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEnC,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/C,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,qEAAqE;IACrE,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAID,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,oBAAoB,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAGpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAID,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,CAAC;AAE9F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAI3D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACzC,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,sBAAsB;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,4BAA4B;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,CAAC;IAC1B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoW7E"}
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkY7E"}