raffel 1.1.97 → 1.1.98
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/docs/try-it-proxy.d.ts +15 -0
- package/dist/docs/try-it-proxy.d.ts.map +1 -1
- package/dist/docs/try-it-proxy.js +54 -0
- package/dist/docs/try-it-proxy.js.map +1 -1
- package/dist/docs/ui/assets/protocol-console.js +13 -1
- package/dist/docs/ui/assets/raffel-docs.js +167 -1
- package/dist/docs/ui/client-script/index.d.ts.map +1 -1
- package/dist/docs/ui/client-script/index.js +3 -95
- package/dist/docs/ui/client-script/index.js.map +1 -1
- package/dist/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/docs/ui/html-builder.js +6 -3
- package/dist/docs/ui/html-builder.js.map +1 -1
- package/dist/docs/ui/runtime/index.js +167 -1
- package/dist/docs/ui/runtime/index.js.map +1 -1
- package/dist/docs/ui/runtime/protocol-console.d.ts +2 -0
- package/dist/docs/ui/runtime/protocol-console.d.ts.map +1 -1
- package/dist/docs/ui/runtime/protocol-console.js +13 -1
- package/dist/docs/ui/runtime/protocol-console.js.map +1 -1
- package/dist/docs/usd-middleware.d.ts +2 -0
- package/dist/docs/usd-middleware.d.ts.map +1 -1
- package/dist/docs/usd-middleware.js +37 -1
- package/dist/docs/usd-middleware.js.map +1 -1
- package/dist/server/builder/execution-http-docs.d.ts.map +1 -1
- package/dist/server/builder/execution-http-docs.js +8 -0
- package/dist/server/builder/execution-http-docs.js.map +1 -1
- package/dist/server/rest-middleware.d.ts.map +1 -1
- package/dist/server/rest-middleware.js +26 -0
- package/dist/server/rest-middleware.js.map +1 -1
- package/dist/ui/docs/try-it-proxy.d.ts +15 -0
- package/dist/ui/docs/try-it-proxy.d.ts.map +1 -1
- package/dist/ui/docs/ui/client-script/index.d.ts.map +1 -1
- package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/ui/docs/ui/runtime/protocol-console.d.ts +2 -0
- package/dist/ui/docs/ui/runtime/protocol-console.d.ts.map +1 -1
- package/dist/ui/docs/usd-middleware.d.ts +2 -0
- package/dist/ui/docs/usd-middleware.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/docs/ui/client-script/cards-and-code.d.ts +0 -5
- package/dist/docs/ui/client-script/cards-and-code.d.ts.map +0 -1
- package/dist/docs/ui/client-script/cards-and-code.js +0 -5
- package/dist/docs/ui/client-script/cards-and-code.js.map +0 -1
- package/dist/docs/ui/client-script/content.d.ts +0 -5
- package/dist/docs/ui/client-script/content.d.ts.map +0 -1
- package/dist/docs/ui/client-script/content.js +0 -412
- package/dist/docs/ui/client-script/content.js.map +0 -1
- package/dist/docs/ui/client-script/docs-pages.d.ts +0 -5
- package/dist/docs/ui/client-script/docs-pages.d.ts.map +0 -1
- package/dist/docs/ui/client-script/docs-pages.js +0 -153
- package/dist/docs/ui/client-script/docs-pages.js.map +0 -1
- package/dist/docs/ui/client-script/endpoint-details.d.ts +0 -5
- package/dist/docs/ui/client-script/endpoint-details.d.ts.map +0 -1
- package/dist/docs/ui/client-script/endpoint-details.js +0 -5
- package/dist/docs/ui/client-script/endpoint-details.js.map +0 -1
- package/dist/docs/ui/client-script/init.d.ts +0 -5
- package/dist/docs/ui/client-script/init.d.ts.map +0 -1
- package/dist/docs/ui/client-script/init.js +0 -227
- package/dist/docs/ui/client-script/init.js.map +0 -1
- package/dist/docs/ui/client-script/markdown.d.ts +0 -5
- package/dist/docs/ui/client-script/markdown.d.ts.map +0 -1
- package/dist/docs/ui/client-script/markdown.js +0 -438
- package/dist/docs/ui/client-script/markdown.js.map +0 -1
- package/dist/docs/ui/client-script/navigation.d.ts +0 -5
- package/dist/docs/ui/client-script/navigation.d.ts.map +0 -1
- package/dist/docs/ui/client-script/navigation.js +0 -548
- package/dist/docs/ui/client-script/navigation.js.map +0 -1
- package/dist/docs/ui/client-script/protocols.d.ts +0 -5
- package/dist/docs/ui/client-script/protocols.d.ts.map +0 -1
- package/dist/docs/ui/client-script/protocols.js +0 -5
- package/dist/docs/ui/client-script/protocols.js.map +0 -1
- package/dist/docs/ui/client-script/schema-rendering.d.ts +0 -5
- package/dist/docs/ui/client-script/schema-rendering.d.ts.map +0 -1
- package/dist/docs/ui/client-script/schema-rendering.js +0 -5
- package/dist/docs/ui/client-script/schema-rendering.js.map +0 -1
- package/dist/docs/ui/client-script/try-it.d.ts +0 -5
- package/dist/docs/ui/client-script/try-it.d.ts.map +0 -1
- package/dist/docs/ui/client-script/try-it.js +0 -5
- package/dist/docs/ui/client-script/try-it.js.map +0 -1
- package/dist/ui/docs/ui/client-script/cards-and-code.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/cards-and-code.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/content.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/content.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/docs-pages.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/docs-pages.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/endpoint-details.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/endpoint-details.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/init.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/init.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/markdown.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/markdown.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/navigation.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/navigation.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/protocols.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/protocols.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/schema-rendering.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/schema-rendering.d.ts.map +0 -1
- package/dist/ui/docs/ui/client-script/try-it.d.ts +0 -5
- package/dist/ui/docs/ui/client-script/try-it.d.ts.map +0 -1
|
@@ -2287,11 +2287,168 @@ function renderAsyncContracts(title, entries, callbacks = false) {
|
|
|
2287
2287
|
});
|
|
2288
2288
|
return section;
|
|
2289
2289
|
}
|
|
2290
|
+
// Merge content-type declarations across the three USD layers (operation →
|
|
2291
|
+
// protocol → global) the same way the reference generator does, so a console
|
|
2292
|
+
// row shows the effective default plus every supported media type.
|
|
2293
|
+
function resolveEffectiveContentTypes(operationTypes, protocolTypes) {
|
|
2294
|
+
const globalTypes = (xUsd && xUsd.contentTypes) ? xUsd.contentTypes : {};
|
|
2295
|
+
const defaultType = (operationTypes && operationTypes.default)
|
|
2296
|
+
|| (protocolTypes && protocolTypes.default)
|
|
2297
|
+
|| globalTypes.default
|
|
2298
|
+
|| 'application/json';
|
|
2299
|
+
const supportedList = (operationTypes && operationTypes.supported)
|
|
2300
|
+
|| (protocolTypes && protocolTypes.supported)
|
|
2301
|
+
|| globalTypes.supported
|
|
2302
|
+
|| [];
|
|
2303
|
+
const supported = Array.isArray(supportedList) ? supportedList.slice() : [];
|
|
2304
|
+
if (defaultType && supported.indexOf(defaultType) === -1)
|
|
2305
|
+
supported.unshift(defaultType);
|
|
2306
|
+
return { default: defaultType, supported };
|
|
2307
|
+
}
|
|
2308
|
+
function appendContentTypesSection(container, label, contentTypes) {
|
|
2309
|
+
if (!contentTypes)
|
|
2310
|
+
return;
|
|
2311
|
+
const section = doc.createElement('div');
|
|
2312
|
+
section.className = 'endpoint-subsection';
|
|
2313
|
+
section.innerHTML = `<div class="subsection-label">${esc(label)}</div>`;
|
|
2314
|
+
const grid = doc.createElement('div');
|
|
2315
|
+
grid.className = 'info-grid';
|
|
2316
|
+
const supportedText = (contentTypes.supported && contentTypes.supported.length > 0)
|
|
2317
|
+
? contentTypes.supported.join(', ')
|
|
2318
|
+
: contentTypes.default;
|
|
2319
|
+
grid.innerHTML =
|
|
2320
|
+
`<div class="info-card"><div class="info-card-title">Default</div><div class="info-card-value">${esc(contentTypes.default || 'application/json')}</div></div>` +
|
|
2321
|
+
`<div class="info-card"><div class="info-card-title">Supported</div><div class="info-card-value">${esc(supportedText || 'application/json')}</div></div>`;
|
|
2322
|
+
section.appendChild(grid);
|
|
2323
|
+
container.appendChild(section);
|
|
2324
|
+
}
|
|
2325
|
+
// Multi-language client snippets for WebSocket channels.
|
|
2326
|
+
function generateWsCodeSample(lang, url, path, data) {
|
|
2327
|
+
const channelType = data?.type || 'public';
|
|
2328
|
+
const subscribeMsg = { type: 'subscribe', channel: path, id: '1' };
|
|
2329
|
+
const subscribeMsgStr = JSON.stringify(subscribeMsg, null, 2);
|
|
2330
|
+
const publishMsg = data?.publish?.message?.payload
|
|
2331
|
+
? { type: 'publish', channel: path, event: 'message', data: generateExampleFromSchema(data.publish.message.payload), id: '2' }
|
|
2332
|
+
: null;
|
|
2333
|
+
const needsAuth = channelType === 'private' || channelType === 'presence';
|
|
2334
|
+
const authUrl = needsAuth ? `${url}?token=YOUR_TOKEN` : url;
|
|
2335
|
+
const indent = (value, pad) => value.split('\n').map((line, i) => i === 0 ? line : pad + line).join('\n');
|
|
2336
|
+
switch (lang) {
|
|
2337
|
+
case 'wscat': {
|
|
2338
|
+
let out = `wscat -c "${authUrl}"\n\n# Subscribe to channel:\n> ${JSON.stringify(subscribeMsg)}`;
|
|
2339
|
+
if (publishMsg)
|
|
2340
|
+
out += `\n\n# Publish a message:\n> ${JSON.stringify(publishMsg)}`;
|
|
2341
|
+
return out;
|
|
2342
|
+
}
|
|
2343
|
+
case 'javascript': {
|
|
2344
|
+
let out = `const ws = new WebSocket("${authUrl}");\n\n`;
|
|
2345
|
+
out += `ws.onopen = () => {\n console.log("Connected");\n // Subscribe to channel\n ws.send(JSON.stringify(${indent(subscribeMsgStr, ' ')}));\n};\n\n`;
|
|
2346
|
+
out += `ws.onmessage = (event) => {\n const msg = JSON.parse(event.data);\n console.log("Received:", msg);\n`;
|
|
2347
|
+
if (publishMsg)
|
|
2348
|
+
out += `\n // After subscribed, you can publish:\n // ws.send(JSON.stringify(${JSON.stringify(publishMsg)}));\n`;
|
|
2349
|
+
out += `};\n\nws.onclose = () => {\n console.log("Disconnected");\n};`;
|
|
2350
|
+
return out;
|
|
2351
|
+
}
|
|
2352
|
+
case 'recker': {
|
|
2353
|
+
let out = `import { ws } from "recker";\n\n`;
|
|
2354
|
+
out += needsAuth
|
|
2355
|
+
? `const socket = await ws("${url}", {\n query: { token: "YOUR_TOKEN" }\n});\n\n`
|
|
2356
|
+
: `const socket = await ws("${url}");\n\n`;
|
|
2357
|
+
out += `// Subscribe to channel\nsocket.send(${indent(subscribeMsgStr, ' ')});\n\n`;
|
|
2358
|
+
out += `// Listen for messages\nsocket.on("message", (data) => {\n console.log("Received:", data);\n});\n`;
|
|
2359
|
+
if (publishMsg)
|
|
2360
|
+
out += `\n// Publish a message\n// socket.send(${JSON.stringify(publishMsg)});\n`;
|
|
2361
|
+
return out;
|
|
2362
|
+
}
|
|
2363
|
+
case 'python': {
|
|
2364
|
+
let out = `import asyncio\nimport websockets\nimport json\n\n`;
|
|
2365
|
+
out += `async def connect():\n async with websockets.connect("${authUrl}") as ws:\n`;
|
|
2366
|
+
out += ` # Subscribe to channel\n await ws.send(json.dumps(${indent(subscribeMsgStr, ' ')}))\n \n`;
|
|
2367
|
+
out += ` # Wait for messages\n async for message in ws:\n data = json.loads(message)\n print(f"Received: {data}")\n\n`;
|
|
2368
|
+
out += `asyncio.run(connect())`;
|
|
2369
|
+
return out;
|
|
2370
|
+
}
|
|
2371
|
+
default:
|
|
2372
|
+
return '// Not implemented';
|
|
2373
|
+
}
|
|
2374
|
+
}
|
|
2375
|
+
// Multi-language client snippets for SSE / EventSource streams.
|
|
2376
|
+
function generateStreamCodeSample(lang, url) {
|
|
2377
|
+
switch (lang) {
|
|
2378
|
+
case 'curl':
|
|
2379
|
+
return `curl -N "${url}"\n\n# -N disables buffering for streaming output`;
|
|
2380
|
+
case 'eventsource':
|
|
2381
|
+
return `const eventSource = new EventSource("${url}");\n\neventSource.onmessage = (event) => {\n console.log("Received:", event.data);\n};\n\neventSource.onerror = (error) => {\n console.error("Error:", error);\n eventSource.close();\n};\n\n// To close the connection:\n// eventSource.close();`;
|
|
2382
|
+
case 'recker':
|
|
2383
|
+
return `import { sse } from "recker";\n\nconst stream = sse("${url}");\n\nfor await (const event of stream) {\n console.log("Received:", event.data);\n}`;
|
|
2384
|
+
case 'python':
|
|
2385
|
+
return `import sseclient\nimport requests\n\nresponse = requests.get("${url}", stream=True)\nclient = sseclient.SSEClient(response)\n\nfor event in client.events():\n print(f"Event: {event.event}, Data: {event.data}")`;
|
|
2386
|
+
default:
|
|
2387
|
+
return '// Not implemented';
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
// Tabbed client-code panel for the non-HTTP protocols that carry a live console
|
|
2391
|
+
// (WebSocket, streams). Mirrors renderCodeExamples' markup so the shared code
|
|
2392
|
+
// tab / copy styling applies.
|
|
2393
|
+
function renderProtocolCodeSamples(kind, endpoint, data) {
|
|
2394
|
+
const base = String(spec.servers?.[0]?.url ?? 'http://localhost:3000').replace(/\/$/, '');
|
|
2395
|
+
const isWs = kind === 'websocket';
|
|
2396
|
+
const url = isWs
|
|
2397
|
+
? `${base.replace(/^http/, 'ws')}${wsSpec.path ?? '/ws'}`
|
|
2398
|
+
: `${base}/${streamsSpec.pathPrefix ?? 'streams'}/${endpoint.path}`.replace(/([^:]\/)\/+/g, '$1');
|
|
2399
|
+
const langs = isWs
|
|
2400
|
+
? [['wscat', 'wscat', 'bash'], ['javascript', 'WebSocket', 'javascript'], ['recker', 'Recker', 'typescript'], ['python', 'Python', 'python']]
|
|
2401
|
+
: [['curl', 'cURL', 'bash'], ['eventsource', 'EventSource', 'javascript'], ['recker', 'Recker', 'typescript'], ['python', 'Python', 'python']];
|
|
2402
|
+
const section = doc.createElement('div');
|
|
2403
|
+
section.className = 'endpoint-subsection';
|
|
2404
|
+
section.innerHTML = '<div class="subsection-label">Client examples</div>';
|
|
2405
|
+
const wrap = doc.createElement('div');
|
|
2406
|
+
wrap.className = 'http-code-samples';
|
|
2407
|
+
const tabs = doc.createElement('div');
|
|
2408
|
+
tabs.className = 'code-tabs';
|
|
2409
|
+
const contents = doc.createElement('div');
|
|
2410
|
+
contents.className = 'code-contents';
|
|
2411
|
+
langs.forEach(([key, label, language], index) => {
|
|
2412
|
+
const tab = doc.createElement('button');
|
|
2413
|
+
tab.type = 'button';
|
|
2414
|
+
tab.className = `code-tab${index === 0 ? ' active' : ''}`;
|
|
2415
|
+
tab.textContent = label;
|
|
2416
|
+
const content = doc.createElement('div');
|
|
2417
|
+
content.className = `code-content${index === 0 ? ' active' : ''}`;
|
|
2418
|
+
const pre = doc.createElement('pre');
|
|
2419
|
+
pre.className = 'http-code-sample-pre';
|
|
2420
|
+
pre.setAttribute('data-code-toolbar', 'managed');
|
|
2421
|
+
const code = doc.createElement('code');
|
|
2422
|
+
code.className = `language-${language}`;
|
|
2423
|
+
code.textContent = isWs
|
|
2424
|
+
? generateWsCodeSample(key, url, endpoint.path, data)
|
|
2425
|
+
: generateStreamCodeSample(key, url);
|
|
2426
|
+
pre.appendChild(code);
|
|
2427
|
+
content.appendChild(pre);
|
|
2428
|
+
tab.onclick = () => {
|
|
2429
|
+
tabs.querySelectorAll('.code-tab').forEach((t) => t.classList.remove('active'));
|
|
2430
|
+
contents.querySelectorAll('.code-content').forEach((c) => c.classList.remove('active'));
|
|
2431
|
+
tab.classList.add('active');
|
|
2432
|
+
content.classList.add('active');
|
|
2433
|
+
};
|
|
2434
|
+
tabs.appendChild(tab);
|
|
2435
|
+
contents.appendChild(content);
|
|
2436
|
+
});
|
|
2437
|
+
const copy = createSampleCopyButton('http-code-copy', () => {
|
|
2438
|
+
const active = contents.querySelector('.code-content.active pre');
|
|
2439
|
+
return active?.textContent ?? '';
|
|
2440
|
+
});
|
|
2441
|
+
tabs.appendChild(copy);
|
|
2442
|
+
wrap.appendChild(tabs);
|
|
2443
|
+
wrap.appendChild(contents);
|
|
2444
|
+
section.appendChild(wrap);
|
|
2445
|
+
return section;
|
|
2446
|
+
}
|
|
2290
2447
|
function renderEndpointDetails(endpoint) {
|
|
2291
2448
|
const container = doc.createElement('div');
|
|
2292
2449
|
container.className = 'endpoint-details';
|
|
2293
2450
|
const data = (endpoint.data ?? {});
|
|
2294
|
-
appendProtocolConsole(container, { doc, spec, wsSpec, streamsSpec, jsonrpcSpec, activeProtocol, endpoint, data, esc, escapeAttr });
|
|
2451
|
+
appendProtocolConsole(container, { doc, spec, wsSpec, streamsSpec, jsonrpcSpec, activeProtocol, endpoint, data, esc, escapeAttr, tryItConfig });
|
|
2295
2452
|
const appendMany = (items) => items.forEach(([title, value]) => appendSchemaSubsection(container, title, value));
|
|
2296
2453
|
if (activeProtocol === 'http') {
|
|
2297
2454
|
// Two-column operation layout (ReDoc-style): the left column carries the
|
|
@@ -2417,6 +2574,9 @@ function renderEndpointDetails(endpoint) {
|
|
|
2417
2574
|
if (activeProtocol === 'websocket') {
|
|
2418
2575
|
appendInfoGrid(container, [['Channel Type', data.type], ['Path', endpoint.path]]);
|
|
2419
2576
|
appendMany([['Parameters', parameterMapToSchema(data.parameters)], ['Subscribe Message', resolveMessagePayload(data.subscribe?.message)], ['Publish Message', resolveMessagePayload(data.publish?.message)]]);
|
|
2577
|
+
appendContentTypesSection(container, 'Subscribe Content Types', resolveEffectiveContentTypes(data.subscribe?.contentTypes, wsSpec?.contentTypes));
|
|
2578
|
+
appendContentTypesSection(container, 'Publish Content Types', resolveEffectiveContentTypes(data.publish?.contentTypes, wsSpec?.contentTypes));
|
|
2579
|
+
container.appendChild(renderProtocolCodeSamples('websocket', endpoint, data));
|
|
2420
2580
|
}
|
|
2421
2581
|
if (activeProtocol === 'graphql') {
|
|
2422
2582
|
appendInfoGrid(container, [['Endpoint', graphqlSpec.endpoint], ['Kind', data.kind], ['Resource', data.resource ?? data.name], ['Source', data.source]]);
|
|
@@ -2433,23 +2593,29 @@ function renderEndpointDetails(endpoint) {
|
|
|
2433
2593
|
]);
|
|
2434
2594
|
appendStreamProjectionDiagnostics(container, resumable?.projections);
|
|
2435
2595
|
appendMany([['Parameters', parameterMapToSchema(data.parameters)], ['Message Schema', resolveMessagePayload(data.message)]]);
|
|
2596
|
+
appendContentTypesSection(container, 'Content Types', resolveEffectiveContentTypes(data.contentTypes, streamsSpec?.contentTypes));
|
|
2597
|
+
container.appendChild(renderProtocolCodeSamples('streams', endpoint, data));
|
|
2436
2598
|
}
|
|
2437
2599
|
if (activeProtocol === 'jsonrpc') {
|
|
2438
2600
|
appendInfoGrid(container, [['Method', endpoint.path], ['Notification', data['x-usd-notification'] === true ? 'yes' : undefined], ['Streaming', data['x-usd-streaming'] === true ? 'yes' : undefined]]);
|
|
2439
2601
|
appendMany([['Parameters', data.params], ['Result', data.result], ['Errors', data.errors]]);
|
|
2602
|
+
appendContentTypesSection(container, 'Content Types', resolveEffectiveContentTypes(data.contentTypes, jsonrpcSpec?.contentTypes));
|
|
2440
2603
|
}
|
|
2441
2604
|
if (activeProtocol === 'grpc') {
|
|
2442
2605
|
const method = data.method ?? {};
|
|
2443
2606
|
appendInfoGrid(container, [['Service', data.serviceName], ['Method', data.methodName], ['Type', getGrpcMethodType(method).replace(/_/g, ' ')]]);
|
|
2444
2607
|
appendMany([['Request', method.input], ['Response', method.output]]);
|
|
2608
|
+
appendContentTypesSection(container, 'Content Types', resolveEffectiveContentTypes(method.contentTypes, grpcSpec?.contentTypes));
|
|
2445
2609
|
}
|
|
2446
2610
|
if (activeProtocol === 'tcp') {
|
|
2447
2611
|
appendInfoGrid(container, [['Host', data.host ?? 'localhost'], ['Port', data.port], ['TLS', data.tls?.enabled === true ? 'enabled' : undefined]]);
|
|
2448
2612
|
appendMany([['Framing', data.framing], ['Inbound Message', resolveMessagePayload(data.messages?.inbound)], ['Outbound Message', resolveMessagePayload(data.messages?.outbound)]]);
|
|
2613
|
+
appendContentTypesSection(container, 'Content Types', resolveEffectiveContentTypes(data.contentTypes, tcpSpec?.contentTypes));
|
|
2449
2614
|
}
|
|
2450
2615
|
if (activeProtocol === 'udp') {
|
|
2451
2616
|
appendInfoGrid(container, [['Host', data.host ?? '127.0.0.1'], ['Port', data.port], ['Max Packet', data.maxPacketSize ? `${data.maxPacketSize} bytes` : undefined]]);
|
|
2452
2617
|
appendMany([['Inbound Message', resolveMessagePayload(data.messages?.inbound)], ['Outbound Message', resolveMessagePayload(data.messages?.outbound)], ['Message Schema', resolveMessagePayload(data.message)]]);
|
|
2618
|
+
appendContentTypesSection(container, 'Content Types', resolveEffectiveContentTypes(data.contentTypes, udpSpec?.contentTypes));
|
|
2453
2619
|
}
|
|
2454
2620
|
return container;
|
|
2455
2621
|
}
|