raffel 0.2.2 → 0.2.3-next.adaade6
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/generators/usd-generator.d.ts +3 -1
- package/dist/docs/generators/usd-generator.d.ts.map +1 -1
- package/dist/docs/generators/usd-generator.js +2 -1
- package/dist/docs/generators/usd-generator.js.map +1 -1
- package/dist/docs/generators/websocket-generator.d.ts.map +1 -1
- package/dist/docs/generators/websocket-generator.js +6 -4
- package/dist/docs/generators/websocket-generator.js.map +1 -1
- package/dist/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/docs/ui/html-builder.js +260 -54
- package/dist/docs/ui/html-builder.js.map +1 -1
- package/dist/docs/ui/styles.d.ts.map +1 -1
- package/dist/docs/ui/styles.js +240 -30
- package/dist/docs/ui/styles.js.map +1 -1
- package/dist/docs/ui/types.d.ts +15 -1
- package/dist/docs/ui/types.d.ts.map +1 -1
- package/dist/docs/usd-middleware.d.ts +3 -1
- package/dist/docs/usd-middleware.d.ts.map +1 -1
- package/dist/docs/usd-middleware.js +2 -1
- package/dist/docs/usd-middleware.js.map +1 -1
- package/dist/http/http.int.test.js +2 -1
- package/dist/http/http.int.test.js.map +1 -1
- package/dist/server/builder.d.ts.map +1 -1
- package/dist/server/builder.js +6 -0
- package/dist/server/builder.js.map +1 -1
- package/dist/server/fs-routes/types.d.ts +6 -0
- package/dist/server/fs-routes/types.d.ts.map +1 -1
- package/dist/server/types.d.ts +77 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/ui/docs/generators/usd-generator.d.ts +3 -1
- package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -1
- package/dist/ui/docs/generators/websocket-generator.d.ts.map +1 -1
- package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
- package/dist/ui/docs/ui/styles.d.ts.map +1 -1
- package/dist/ui/docs/ui/types.d.ts +15 -1
- package/dist/ui/docs/ui/types.d.ts.map +1 -1
- package/dist/ui/docs/usd-middleware.d.ts +3 -1
- package/dist/ui/docs/usd-middleware.d.ts.map +1 -1
- package/dist/ui/server/fs-routes/types.d.ts +6 -0
- package/dist/ui/server/fs-routes/types.d.ts.map +1 -1
- package/dist/ui/usd/index.d.ts +1 -1
- package/dist/ui/usd/index.d.ts.map +1 -1
- package/dist/ui/usd/spec/types.d.ts +78 -0
- package/dist/ui/usd/spec/types.d.ts.map +1 -1
- package/dist/usd/index.d.ts +1 -1
- package/dist/usd/index.d.ts.map +1 -1
- package/dist/usd/index.js.map +1 -1
- package/dist/usd/spec/types.d.ts +78 -0
- package/dist/usd/spec/types.d.ts.map +1 -1
- package/dist/usd/spec/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,23 +13,51 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { generateStyles } from './styles.js';
|
|
15
15
|
import { escapeHtml, escapeJsonForScript, generateHeroBackgroundCSS } from './utils.js';
|
|
16
|
+
/**
|
|
17
|
+
* Merge USD documentation config with UI config (UI config takes precedence)
|
|
18
|
+
*/
|
|
19
|
+
function mergeHeroConfig(usdDocumentation, uiHero) {
|
|
20
|
+
const usdHero = usdDocumentation?.hero;
|
|
21
|
+
if (!usdHero && !uiHero)
|
|
22
|
+
return undefined;
|
|
23
|
+
// UI config takes precedence over USD spec config
|
|
24
|
+
return {
|
|
25
|
+
title: uiHero?.title ?? usdHero?.title,
|
|
26
|
+
version: uiHero?.version ?? usdHero?.version,
|
|
27
|
+
tagline: uiHero?.tagline ?? usdHero?.tagline,
|
|
28
|
+
features: uiHero?.features ?? usdHero?.features,
|
|
29
|
+
background: uiHero?.background ?? usdHero?.background,
|
|
30
|
+
backgroundImage: uiHero?.backgroundImage ?? usdHero?.backgroundImage,
|
|
31
|
+
backgroundColor: uiHero?.backgroundColor ?? usdHero?.backgroundColor,
|
|
32
|
+
buttons: uiHero?.buttons ?? usdHero?.buttons,
|
|
33
|
+
quickLinks: uiHero?.quickLinks ?? usdHero?.quickLinks,
|
|
34
|
+
github: uiHero?.github ?? usdHero?.github,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
16
37
|
/**
|
|
17
38
|
* Generate HTML for USD documentation UI
|
|
18
39
|
*/
|
|
19
40
|
export function generateUIHTML(options) {
|
|
20
41
|
const { doc, basePath: _basePath, ui, tagGroups } = options;
|
|
42
|
+
// Get USD documentation config from spec
|
|
43
|
+
const usdDocumentation = doc['x-usd']?.documentation;
|
|
21
44
|
const theme = ui?.theme ?? 'auto';
|
|
22
45
|
const primaryColor = ui?.primaryColor ?? '#6366f1';
|
|
23
|
-
const logo = ui?.logo;
|
|
24
|
-
const favicon = ui?.favicon;
|
|
46
|
+
const logo = ui?.logo ?? usdDocumentation?.logo;
|
|
47
|
+
const favicon = ui?.favicon ?? usdDocumentation?.favicon;
|
|
25
48
|
const title = doc.info.title;
|
|
26
|
-
const
|
|
49
|
+
const version = doc.info.version;
|
|
27
50
|
const sidebar = ui?.sidebar;
|
|
51
|
+
// Merge hero config from USD spec and UI config
|
|
52
|
+
const hero = mergeHeroConfig(usdDocumentation, ui?.hero);
|
|
53
|
+
// Get introduction markdown from USD spec
|
|
54
|
+
const introduction = usdDocumentation?.introduction;
|
|
28
55
|
// Escape data for embedding in script tag (prevents XSS)
|
|
29
56
|
const escapedSpec = escapeJsonForScript(doc);
|
|
30
57
|
const escapedTagGroups = escapeJsonForScript(tagGroups ?? []);
|
|
31
58
|
const escapedHero = escapeJsonForScript(hero ?? null);
|
|
32
59
|
const escapedSidebar = escapeJsonForScript(sidebar ?? {});
|
|
60
|
+
const escapedIntroduction = escapeJsonForScript(introduction ?? null);
|
|
33
61
|
// Generate hero background CSS
|
|
34
62
|
const heroBackgroundCSS = generateHeroBackgroundCSS(primaryColor, hero?.background, hero?.backgroundImage);
|
|
35
63
|
// Generate CSS
|
|
@@ -47,20 +75,61 @@ ${styles}
|
|
|
47
75
|
</style>
|
|
48
76
|
</head>
|
|
49
77
|
<body>
|
|
50
|
-
${generateHeroSection(hero, logo, title)}
|
|
78
|
+
${generateHeroSection(hero, logo, title, version)}
|
|
79
|
+
${generateIntroductionSection(introduction)}
|
|
51
80
|
${generateAppContainer(logo, title, sidebar)}
|
|
52
81
|
<script>
|
|
53
|
-
${generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar)}
|
|
82
|
+
${generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction)}
|
|
54
83
|
</script>
|
|
55
84
|
</body>
|
|
56
85
|
</html>`;
|
|
57
86
|
}
|
|
58
87
|
/**
|
|
59
|
-
* Generate
|
|
88
|
+
* Generate introduction section HTML (markdown content)
|
|
89
|
+
* This renders after the hero and before the main docs content
|
|
90
|
+
*/
|
|
91
|
+
function generateIntroductionSection(introduction) {
|
|
92
|
+
if (!introduction)
|
|
93
|
+
return '';
|
|
94
|
+
return `
|
|
95
|
+
<section class="introduction" id="introduction">
|
|
96
|
+
<div class="introduction-content" id="introductionContent">
|
|
97
|
+
<!-- Markdown will be rendered by client-side script -->
|
|
98
|
+
</div>
|
|
99
|
+
</section>
|
|
100
|
+
`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate GitHub corner SVG (Docsify-style)
|
|
104
|
+
*/
|
|
105
|
+
function generateGitHubCorner(url) {
|
|
106
|
+
return `
|
|
107
|
+
<a href="${escapeHtml(url)}" target="_blank" class="github-corner" aria-label="View source on GitHub">
|
|
108
|
+
<svg viewBox="0 0 250 250" aria-hidden="true">
|
|
109
|
+
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
|
|
110
|
+
<path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
|
|
111
|
+
<path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path>
|
|
112
|
+
</svg>
|
|
113
|
+
</a>
|
|
114
|
+
`;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Generate hero section HTML (Docsify-inspired)
|
|
60
118
|
*/
|
|
61
|
-
function generateHeroSection(hero, logo, title) {
|
|
119
|
+
function generateHeroSection(hero, logo, title, version) {
|
|
62
120
|
if (!hero)
|
|
63
121
|
return '';
|
|
122
|
+
// Version badge
|
|
123
|
+
const versionHtml = hero.version || version
|
|
124
|
+
? `<span class="hero-version">${escapeHtml(hero.version || version || '')}</span>`
|
|
125
|
+
: '';
|
|
126
|
+
// Features list
|
|
127
|
+
const featuresHtml = hero.features && hero.features.length > 0
|
|
128
|
+
? `<ul class="hero-features">
|
|
129
|
+
${hero.features.map(feature => `<li>${escapeHtml(feature)}</li>`).join('')}
|
|
130
|
+
</ul>`
|
|
131
|
+
: '';
|
|
132
|
+
// Action buttons
|
|
64
133
|
const buttonsHtml = hero.buttons && hero.buttons.length > 0
|
|
65
134
|
? `<div class="hero-buttons">
|
|
66
135
|
${hero.buttons.map(btn => `
|
|
@@ -70,6 +139,7 @@ function generateHeroSection(hero, logo, title) {
|
|
|
70
139
|
`).join('')}
|
|
71
140
|
</div>`
|
|
72
141
|
: '';
|
|
142
|
+
// Quick links grid
|
|
73
143
|
const quickLinksHtml = hero.quickLinks && hero.quickLinks.length > 0
|
|
74
144
|
? `<div class="hero-quicklinks">
|
|
75
145
|
${hero.quickLinks.map(link => `
|
|
@@ -81,12 +151,16 @@ function generateHeroSection(hero, logo, title) {
|
|
|
81
151
|
`).join('')}
|
|
82
152
|
</div>`
|
|
83
153
|
: '';
|
|
154
|
+
// GitHub corner
|
|
155
|
+
const githubHtml = hero.github ? generateGitHubCorner(hero.github) : '';
|
|
84
156
|
return `
|
|
85
157
|
<header class="hero">
|
|
158
|
+
${githubHtml}
|
|
86
159
|
<div class="hero-content">
|
|
87
160
|
${logo ? `<img class="hero-logo" src="${escapeHtml(logo)}" alt="Logo">` : ''}
|
|
88
|
-
<h1 class="hero-title">${escapeHtml(hero.title || title)}</h1>
|
|
161
|
+
<h1 class="hero-title">${escapeHtml(hero.title || title)}${versionHtml}</h1>
|
|
89
162
|
${hero.tagline ? `<p class="hero-tagline">${escapeHtml(hero.tagline)}</p>` : ''}
|
|
163
|
+
${featuresHtml}
|
|
90
164
|
${buttonsHtml}
|
|
91
165
|
${quickLinksHtml}
|
|
92
166
|
</div>
|
|
@@ -122,13 +196,14 @@ function generateAppContainer(logo, title, sidebar) {
|
|
|
122
196
|
* Generate client-side JavaScript
|
|
123
197
|
* This is embedded in the HTML and handles all UI interactions
|
|
124
198
|
*/
|
|
125
|
-
function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar) {
|
|
199
|
+
function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escapedSidebar, escapedIntroduction) {
|
|
126
200
|
return `
|
|
127
201
|
// Trusted data from server
|
|
128
202
|
const spec = ${escapedSpec};
|
|
129
203
|
const tagGroups = ${escapedTagGroups};
|
|
130
204
|
const heroConfig = ${escapedHero};
|
|
131
205
|
const sidebarConfig = ${escapedSidebar};
|
|
206
|
+
const introductionMarkdown = ${escapedIntroduction};
|
|
132
207
|
|
|
133
208
|
// Helper to escape text for display
|
|
134
209
|
function esc(str) {
|
|
@@ -1504,21 +1579,30 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1504
1579
|
container.className = 'code-example';
|
|
1505
1580
|
|
|
1506
1581
|
const baseUrl = (spec.servers && spec.servers[0]?.url) || 'http://localhost:3000';
|
|
1507
|
-
|
|
1582
|
+
// WebSocket URL uses the ws:// scheme and the configured WebSocket path (default: /ws)
|
|
1583
|
+
const wsPath = wsSpec?.path || '/ws';
|
|
1584
|
+
const wsUrl = baseUrl.replace(/^http/, 'ws') + wsPath;
|
|
1508
1585
|
|
|
1509
1586
|
// Language tabs
|
|
1510
|
-
const languages = ['wscat', 'javascript', 'python'];
|
|
1587
|
+
const languages = ['wscat', 'javascript', 'recker', 'python'];
|
|
1511
1588
|
const tabs = document.createElement('div');
|
|
1512
1589
|
tabs.className = 'code-tabs';
|
|
1513
1590
|
|
|
1514
1591
|
const contents = document.createElement('div');
|
|
1515
1592
|
contents.className = 'code-contents';
|
|
1516
1593
|
|
|
1594
|
+
const langLabels = {
|
|
1595
|
+
wscat: 'wscat',
|
|
1596
|
+
javascript: 'WebSocket',
|
|
1597
|
+
recker: 'Recker',
|
|
1598
|
+
python: 'Python'
|
|
1599
|
+
};
|
|
1600
|
+
|
|
1517
1601
|
languages.forEach((lang, i) => {
|
|
1518
1602
|
// Tab button
|
|
1519
1603
|
const tab = document.createElement('button');
|
|
1520
1604
|
tab.className = 'code-tab' + (i === 0 ? ' active' : '');
|
|
1521
|
-
tab.textContent = lang
|
|
1605
|
+
tab.textContent = langLabels[lang] || lang;
|
|
1522
1606
|
tab.onclick = () => {
|
|
1523
1607
|
tabs.querySelectorAll('.code-tab').forEach(t => t.classList.remove('active'));
|
|
1524
1608
|
tab.classList.add('active');
|
|
@@ -1547,41 +1631,90 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1547
1631
|
}
|
|
1548
1632
|
|
|
1549
1633
|
function generateWsCodeSample(lang, url, ep) {
|
|
1550
|
-
const
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1634
|
+
const channelName = ep.path;
|
|
1635
|
+
const channelType = ep.data?.type || 'public';
|
|
1636
|
+
|
|
1637
|
+
// Build subscribe message
|
|
1638
|
+
const subscribeMsg = { type: 'subscribe', channel: channelName, id: '1' };
|
|
1639
|
+
const subscribeMsgStr = JSON.stringify(subscribeMsg, null, 2);
|
|
1640
|
+
|
|
1641
|
+
// Build example publish message if channel supports it
|
|
1642
|
+
let publishMsg = null;
|
|
1643
|
+
if (ep.data?.publish?.message?.payload) {
|
|
1644
|
+
const payload = buildExampleFromSchema(ep.data.publish.message.payload);
|
|
1645
|
+
publishMsg = { type: 'publish', channel: channelName, event: 'message', data: payload, id: '2' };
|
|
1556
1646
|
}
|
|
1557
|
-
const
|
|
1647
|
+
const publishMsgStr = publishMsg ? JSON.stringify(publishMsg, null, 2) : null;
|
|
1648
|
+
|
|
1649
|
+
// For private/presence channels, add token to URL
|
|
1650
|
+
const needsAuth = channelType === 'private' || channelType === 'presence';
|
|
1651
|
+
const authUrl = needsAuth ? url + '?token=YOUR_TOKEN' : url;
|
|
1558
1652
|
|
|
1559
1653
|
switch (lang) {
|
|
1560
1654
|
case 'wscat':
|
|
1561
|
-
|
|
1655
|
+
let wscatCode = 'wscat -c "' + authUrl + '"\\n\\n';
|
|
1656
|
+
wscatCode += '# Subscribe to channel:\\n> ' + JSON.stringify(subscribeMsg);
|
|
1657
|
+
if (publishMsgStr) {
|
|
1658
|
+
wscatCode += '\\n\\n# Publish a message:\\n> ' + JSON.stringify(publishMsg);
|
|
1659
|
+
}
|
|
1660
|
+
return wscatCode;
|
|
1562
1661
|
|
|
1563
1662
|
case 'javascript':
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
'
|
|
1663
|
+
let jsCode = 'const ws = new WebSocket("' + authUrl + '");\\n\\n';
|
|
1664
|
+
jsCode += 'ws.onopen = () => {\\n';
|
|
1665
|
+
jsCode += ' console.log("Connected");\\n';
|
|
1666
|
+
jsCode += ' // Subscribe to channel\\n';
|
|
1667
|
+
jsCode += ' ws.send(JSON.stringify(' + subscribeMsgStr.split('\\n').map((l, i) => i === 0 ? l : ' ' + l).join('\\n') + '));\\n';
|
|
1668
|
+
jsCode += '};\\n\\n';
|
|
1669
|
+
jsCode += 'ws.onmessage = (event) => {\\n';
|
|
1670
|
+
jsCode += ' const msg = JSON.parse(event.data);\\n';
|
|
1671
|
+
jsCode += ' console.log("Received:", msg);\\n';
|
|
1672
|
+
if (publishMsgStr) {
|
|
1673
|
+
jsCode += '\\n // After subscribed, you can publish:\\n';
|
|
1674
|
+
jsCode += ' // ws.send(JSON.stringify(' + JSON.stringify(publishMsg) + '));\\n';
|
|
1675
|
+
}
|
|
1676
|
+
jsCode += '};\\n\\n';
|
|
1677
|
+
jsCode += 'ws.onclose = () => {\\n';
|
|
1678
|
+
jsCode += ' console.log("Disconnected");\\n';
|
|
1679
|
+
jsCode += '};';
|
|
1680
|
+
return jsCode;
|
|
1681
|
+
|
|
1682
|
+
case 'recker':
|
|
1683
|
+
let reckerCode = 'import { ws } from "recker";\\n\\n';
|
|
1684
|
+
if (needsAuth) {
|
|
1685
|
+
reckerCode += 'const socket = await ws("' + url + '", {\\n';
|
|
1686
|
+
reckerCode += ' query: { token: "YOUR_TOKEN" }\\n';
|
|
1687
|
+
reckerCode += '});\\n\\n';
|
|
1688
|
+
} else {
|
|
1689
|
+
reckerCode += 'const socket = await ws("' + url + '");\\n\\n';
|
|
1690
|
+
}
|
|
1691
|
+
reckerCode += '// Subscribe to channel\\n';
|
|
1692
|
+
reckerCode += 'socket.send(' + subscribeMsgStr.split('\\n').map((l, i) => i === 0 ? l : ' ' + l).join('\\n') + ');\\n\\n';
|
|
1693
|
+
reckerCode += '// Listen for messages\\n';
|
|
1694
|
+
reckerCode += 'socket.on("message", (data) => {\\n';
|
|
1695
|
+
reckerCode += ' console.log("Received:", data);\\n';
|
|
1696
|
+
reckerCode += '});\\n';
|
|
1697
|
+
if (publishMsgStr) {
|
|
1698
|
+
reckerCode += '\\n// Publish a message\\n';
|
|
1699
|
+
reckerCode += '// socket.send(' + JSON.stringify(publishMsg) + ');\\n';
|
|
1700
|
+
}
|
|
1701
|
+
return reckerCode;
|
|
1575
1702
|
|
|
1576
1703
|
case 'python':
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1704
|
+
let pyCode = 'import asyncio\\n';
|
|
1705
|
+
pyCode += 'import websockets\\n';
|
|
1706
|
+
pyCode += 'import json\\n\\n';
|
|
1707
|
+
pyCode += 'async def connect():\\n';
|
|
1708
|
+
pyCode += ' async with websockets.connect("' + authUrl + '") as ws:\\n';
|
|
1709
|
+
pyCode += ' # Subscribe to channel\\n';
|
|
1710
|
+
pyCode += ' await ws.send(json.dumps(' + subscribeMsgStr.split('\\n').map((l, i) => i === 0 ? l : ' ' + l).join('\\n') + '))\\n';
|
|
1711
|
+
pyCode += ' \\n';
|
|
1712
|
+
pyCode += ' # Wait for messages\\n';
|
|
1713
|
+
pyCode += ' async for message in ws:\\n';
|
|
1714
|
+
pyCode += ' data = json.loads(message)\\n';
|
|
1715
|
+
pyCode += ' print(f"Received: {data}")\\n\\n';
|
|
1716
|
+
pyCode += 'asyncio.run(connect())';
|
|
1717
|
+
return pyCode;
|
|
1585
1718
|
|
|
1586
1719
|
default:
|
|
1587
1720
|
return '// Not implemented';
|
|
@@ -1594,21 +1727,29 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1594
1727
|
container.className = 'code-example';
|
|
1595
1728
|
|
|
1596
1729
|
const baseUrl = (spec.servers && spec.servers[0]?.url) || 'http://localhost:3000';
|
|
1597
|
-
|
|
1730
|
+
// SSE streams are accessed via GET /streams/<procedure-name>
|
|
1731
|
+
const streamUrl = baseUrl + '/streams/' + ep.path;
|
|
1598
1732
|
|
|
1599
1733
|
// Language tabs
|
|
1600
|
-
const languages = ['curl', '
|
|
1734
|
+
const languages = ['curl', 'eventsource', 'recker', 'python'];
|
|
1601
1735
|
const tabs = document.createElement('div');
|
|
1602
1736
|
tabs.className = 'code-tabs';
|
|
1603
1737
|
|
|
1604
1738
|
const contents = document.createElement('div');
|
|
1605
1739
|
contents.className = 'code-contents';
|
|
1606
1740
|
|
|
1741
|
+
const langLabels = {
|
|
1742
|
+
curl: 'cURL',
|
|
1743
|
+
eventsource: 'EventSource',
|
|
1744
|
+
recker: 'Recker',
|
|
1745
|
+
python: 'Python'
|
|
1746
|
+
};
|
|
1747
|
+
|
|
1607
1748
|
languages.forEach((lang, i) => {
|
|
1608
1749
|
// Tab button
|
|
1609
1750
|
const tab = document.createElement('button');
|
|
1610
1751
|
tab.className = 'code-tab' + (i === 0 ? ' active' : '');
|
|
1611
|
-
tab.textContent = lang
|
|
1752
|
+
tab.textContent = langLabels[lang] || lang;
|
|
1612
1753
|
tab.onclick = () => {
|
|
1613
1754
|
tabs.querySelectorAll('.code-tab').forEach(t => t.classList.remove('active'));
|
|
1614
1755
|
tab.classList.add('active');
|
|
@@ -1641,7 +1782,7 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1641
1782
|
case 'curl':
|
|
1642
1783
|
return 'curl -N "' + url + '"\\n\\n# -N disables buffering for streaming output';
|
|
1643
1784
|
|
|
1644
|
-
case '
|
|
1785
|
+
case 'eventsource':
|
|
1645
1786
|
return 'const eventSource = new EventSource("' + url + '");\\n\\n' +
|
|
1646
1787
|
'eventSource.onmessage = (event) => {\\n' +
|
|
1647
1788
|
' console.log("Received:", event.data);\\n' +
|
|
@@ -1653,6 +1794,13 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1653
1794
|
'// To close the connection:\\n' +
|
|
1654
1795
|
'// eventSource.close();';
|
|
1655
1796
|
|
|
1797
|
+
case 'recker':
|
|
1798
|
+
return 'import { sse } from "recker";\\n\\n' +
|
|
1799
|
+
'const stream = sse("' + url + '");\\n\\n' +
|
|
1800
|
+
'for await (const event of stream) {\\n' +
|
|
1801
|
+
' console.log("Received:", event.data);\\n' +
|
|
1802
|
+
'}';
|
|
1803
|
+
|
|
1656
1804
|
case 'python':
|
|
1657
1805
|
return 'import sseclient\\n' +
|
|
1658
1806
|
'import requests\\n\\n' +
|
|
@@ -1692,31 +1840,67 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1692
1840
|
const method = ep.method.toUpperCase();
|
|
1693
1841
|
const path = ep.path;
|
|
1694
1842
|
const baseUrl = (spec.servers && spec.servers[0]?.url) || 'http://localhost:3000';
|
|
1695
|
-
const fullUrl = baseUrl + path;
|
|
1696
1843
|
|
|
1697
|
-
//
|
|
1844
|
+
// Handle JSON-RPC methods specially
|
|
1845
|
+
const isJsonRpc = method === 'RPC';
|
|
1846
|
+
let fullUrl;
|
|
1698
1847
|
let exampleBody = null;
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1848
|
+
let actualMethod = method;
|
|
1849
|
+
|
|
1850
|
+
if (isJsonRpc) {
|
|
1851
|
+
// For JSON-RPC, use the /rpc endpoint and POST method
|
|
1852
|
+
const rpcEndpoint = jsonrpcSpec?.endpoint || '/rpc';
|
|
1853
|
+
fullUrl = baseUrl + rpcEndpoint;
|
|
1854
|
+
actualMethod = 'POST';
|
|
1855
|
+
|
|
1856
|
+
// Build JSON-RPC request body
|
|
1857
|
+
const opData = ep.data;
|
|
1858
|
+
let params = {};
|
|
1859
|
+
if (opData && opData.params) {
|
|
1860
|
+
params = buildExampleFromSchema(opData.params);
|
|
1861
|
+
}
|
|
1862
|
+
exampleBody = {
|
|
1863
|
+
jsonrpc: '2.0',
|
|
1864
|
+
method: path, // The method name like "tasks.list"
|
|
1865
|
+
params: params,
|
|
1866
|
+
id: 1
|
|
1867
|
+
};
|
|
1868
|
+
} else {
|
|
1869
|
+
// Ensure path has leading slash for proper URL construction
|
|
1870
|
+
const normalizedPath = path.startsWith('/') ? path : '/' + path;
|
|
1871
|
+
fullUrl = baseUrl + normalizedPath;
|
|
1872
|
+
|
|
1873
|
+
// Get request body if exists
|
|
1874
|
+
const opData = ep.data;
|
|
1875
|
+
if (opData && opData.requestBody && opData.requestBody.content) {
|
|
1876
|
+
const jsonContent = opData.requestBody.content['application/json'];
|
|
1877
|
+
if (jsonContent && jsonContent.schema) {
|
|
1878
|
+
exampleBody = buildExampleFromSchema(jsonContent.schema);
|
|
1879
|
+
}
|
|
1704
1880
|
}
|
|
1705
1881
|
}
|
|
1706
1882
|
|
|
1707
1883
|
// Language tabs
|
|
1708
|
-
const languages = ['curl', '
|
|
1884
|
+
const languages = ['curl', 'fetch', 'recker', 'python', 'go'];
|
|
1709
1885
|
const tabs = document.createElement('div');
|
|
1710
1886
|
tabs.className = 'code-tabs';
|
|
1711
1887
|
|
|
1712
1888
|
const contents = document.createElement('div');
|
|
1713
1889
|
contents.className = 'code-contents';
|
|
1714
1890
|
|
|
1891
|
+
const langLabels = {
|
|
1892
|
+
curl: 'cURL',
|
|
1893
|
+
fetch: 'Fetch',
|
|
1894
|
+
recker: 'Recker',
|
|
1895
|
+
python: 'Python',
|
|
1896
|
+
go: 'Go'
|
|
1897
|
+
};
|
|
1898
|
+
|
|
1715
1899
|
languages.forEach((lang, i) => {
|
|
1716
1900
|
// Tab button
|
|
1717
1901
|
const tab = document.createElement('button');
|
|
1718
1902
|
tab.className = 'code-tab' + (i === 0 ? ' active' : '');
|
|
1719
|
-
tab.textContent = lang
|
|
1903
|
+
tab.textContent = langLabels[lang] || lang;
|
|
1720
1904
|
tab.onclick = () => {
|
|
1721
1905
|
tabs.querySelectorAll('.code-tab').forEach(t => t.classList.remove('active'));
|
|
1722
1906
|
tab.classList.add('active');
|
|
@@ -1732,7 +1916,7 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1732
1916
|
|
|
1733
1917
|
const pre = document.createElement('pre');
|
|
1734
1918
|
const code = document.createElement('code');
|
|
1735
|
-
code.textContent = generateCodeSample(lang,
|
|
1919
|
+
code.textContent = generateCodeSample(lang, actualMethod, fullUrl, exampleBody);
|
|
1736
1920
|
pre.appendChild(code);
|
|
1737
1921
|
content.appendChild(pre);
|
|
1738
1922
|
contents.appendChild(content);
|
|
@@ -1759,7 +1943,7 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1759
1943
|
}
|
|
1760
1944
|
return curlLines.join(' \\\\\\n');
|
|
1761
1945
|
|
|
1762
|
-
case '
|
|
1946
|
+
case 'fetch':
|
|
1763
1947
|
if (hasBody) {
|
|
1764
1948
|
return 'const response = await fetch("' + url + '", {\\n' +
|
|
1765
1949
|
' method: "' + method + '",\\n' +
|
|
@@ -1776,6 +1960,18 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
1776
1960
|
'const data = await response.json();\\n' +
|
|
1777
1961
|
'console.log(data);';
|
|
1778
1962
|
|
|
1963
|
+
case 'recker':
|
|
1964
|
+
if (hasBody) {
|
|
1965
|
+
return 'import { ' + method.toLowerCase() + ' } from "recker";\\n\\n' +
|
|
1966
|
+
'const data = await ' + method.toLowerCase() + '("' + url + '")\\n' +
|
|
1967
|
+
' .json(' + bodyStr.split('\\n').map((l, i) => i === 0 ? l : ' ' + l).join('\\n') + ')\\n' +
|
|
1968
|
+
' .json();\\n\\n' +
|
|
1969
|
+
'console.log(data);';
|
|
1970
|
+
}
|
|
1971
|
+
return 'import { ' + method.toLowerCase() + ' } from "recker";\\n\\n' +
|
|
1972
|
+
'const data = await ' + method.toLowerCase() + '("' + url + '").json();\\n\\n' +
|
|
1973
|
+
'console.log(data);';
|
|
1974
|
+
|
|
1779
1975
|
case 'python':
|
|
1780
1976
|
if (hasBody) {
|
|
1781
1977
|
return 'import requests\\n\\n' +
|
|
@@ -3056,7 +3252,17 @@ function generateClientScript(escapedSpec, escapedTagGroups, escapedHero, escape
|
|
|
3056
3252
|
return message;
|
|
3057
3253
|
}
|
|
3058
3254
|
|
|
3255
|
+
// Render introduction markdown if provided
|
|
3256
|
+
// Note: introductionMarkdown is server-generated trusted content from USD spec
|
|
3257
|
+
// parseMarkdown() escapes text before processing markdown syntax
|
|
3258
|
+
function renderIntroduction() {
|
|
3259
|
+
const container = document.getElementById('introductionContent');
|
|
3260
|
+
if (!container || !introductionMarkdown) return;
|
|
3261
|
+
container.innerHTML = parseMarkdown(introductionMarkdown);
|
|
3262
|
+
}
|
|
3263
|
+
|
|
3059
3264
|
// Initial render
|
|
3265
|
+
renderIntroduction();
|
|
3060
3266
|
renderProtocolTabs();
|
|
3061
3267
|
renderSidebar();
|
|
3062
3268
|
renderContent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAu/FnD,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA43E3D"}
|