raffel 1.1.87 → 1.1.88

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 (121) hide show
  1. package/dist/core/registry.d.ts +2 -0
  2. package/dist/core/registry.d.ts.map +1 -1
  3. package/dist/core/registry.js +1 -0
  4. package/dist/core/registry.js.map +1 -1
  5. package/dist/docs/generators/http-generator.d.ts +4 -0
  6. package/dist/docs/generators/http-generator.d.ts.map +1 -1
  7. package/dist/docs/generators/http-generator.js +30 -12
  8. package/dist/docs/generators/http-generator.js.map +1 -1
  9. package/dist/docs/generators/usd-generator.d.ts +4 -0
  10. package/dist/docs/generators/usd-generator.d.ts.map +1 -1
  11. package/dist/docs/generators/usd-generator.js +3 -1
  12. package/dist/docs/generators/usd-generator.js.map +1 -1
  13. package/dist/docs/ui/assets/raffel-docs.css +44 -5
  14. package/dist/docs/ui/assets/raffel-docs.js +45 -42
  15. package/dist/docs/ui/client-script/navigation.d.ts.map +1 -1
  16. package/dist/docs/ui/client-script/navigation.js +2 -1
  17. package/dist/docs/ui/client-script/navigation.js.map +1 -1
  18. package/dist/docs/ui/html-builder.d.ts.map +1 -1
  19. package/dist/docs/ui/html-builder.js +13 -7
  20. package/dist/docs/ui/html-builder.js.map +1 -1
  21. package/dist/docs/ui/runtime/index.js +45 -42
  22. package/dist/docs/ui/runtime/index.js.map +1 -1
  23. package/dist/docs/ui/style-sections/content.d.ts +1 -1
  24. package/dist/docs/ui/style-sections/content.d.ts.map +1 -1
  25. package/dist/docs/ui/style-sections/content.js +40 -4
  26. package/dist/docs/ui/style-sections/content.js.map +1 -1
  27. package/dist/docs/ui/style-sections/shell.d.ts +2 -1
  28. package/dist/docs/ui/style-sections/shell.d.ts.map +1 -1
  29. package/dist/docs/ui/style-sections/shell.js +48 -2
  30. package/dist/docs/ui/style-sections/shell.js.map +1 -1
  31. package/dist/docs/ui/styles.d.ts +2 -0
  32. package/dist/docs/ui/styles.d.ts.map +1 -1
  33. package/dist/docs/ui/styles.js +2 -2
  34. package/dist/docs/ui/styles.js.map +1 -1
  35. package/dist/docs/ui/types.d.ts +51 -1
  36. package/dist/docs/ui/types.d.ts.map +1 -1
  37. package/dist/docs/ui/utils.d.ts +2 -0
  38. package/dist/docs/ui/utils.d.ts.map +1 -1
  39. package/dist/docs/ui/utils.js +7 -0
  40. package/dist/docs/ui/utils.js.map +1 -1
  41. package/dist/docs/usd-middleware.d.ts +5 -1
  42. package/dist/docs/usd-middleware.d.ts.map +1 -1
  43. package/dist/docs/usd-middleware.js +3 -1
  44. package/dist/docs/usd-middleware.js.map +1 -1
  45. package/dist/http/index.d.ts +1 -1
  46. package/dist/http/index.d.ts.map +1 -1
  47. package/dist/http/index.js +1 -1
  48. package/dist/http/index.js.map +1 -1
  49. package/dist/http/route-table.d.ts +2 -0
  50. package/dist/http/route-table.d.ts.map +1 -1
  51. package/dist/http/route-table.js +15 -2
  52. package/dist/http/route-table.js.map +1 -1
  53. package/dist/index.d.ts +1 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/middleware/auth/oauth2-client-credentials.d.ts.map +1 -1
  57. package/dist/middleware/auth/oauth2-client-credentials.js +12 -0
  58. package/dist/middleware/auth/oauth2-client-credentials.js.map +1 -1
  59. package/dist/middleware/auth/oauth2.d.ts.map +1 -1
  60. package/dist/middleware/auth/oauth2.js +20 -0
  61. package/dist/middleware/auth/oauth2.js.map +1 -1
  62. package/dist/middleware/auth.d.ts +19 -0
  63. package/dist/middleware/auth.d.ts.map +1 -1
  64. package/dist/middleware/auth.js +58 -1
  65. package/dist/middleware/auth.js.map +1 -1
  66. package/dist/server/builder/execution-http-docs.d.ts.map +1 -1
  67. package/dist/server/builder/execution-http-docs.js +17 -3
  68. package/dist/server/builder/execution-http-docs.js.map +1 -1
  69. package/dist/server/builder.js +2 -0
  70. package/dist/server/builder.js.map +1 -1
  71. package/dist/server/discovery-utils.d.ts.map +1 -1
  72. package/dist/server/discovery-utils.js +3 -0
  73. package/dist/server/discovery-utils.js.map +1 -1
  74. package/dist/server/fs-routes/middleware-processor.d.ts.map +1 -1
  75. package/dist/server/fs-routes/middleware-processor.js +17 -1
  76. package/dist/server/fs-routes/middleware-processor.js.map +1 -1
  77. package/dist/server/fs-routes/types.d.ts +2 -0
  78. package/dist/server/fs-routes/types.d.ts.map +1 -1
  79. package/dist/server/rest-middleware.d.ts.map +1 -1
  80. package/dist/server/rest-middleware.js +7 -11
  81. package/dist/server/rest-middleware.js.map +1 -1
  82. package/dist/server/types/lifecycle-docs-types.d.ts +2 -2
  83. package/dist/server/types/lifecycle-docs-types.d.ts.map +1 -1
  84. package/dist/types/handlers.d.ts +2 -0
  85. package/dist/types/handlers.d.ts.map +1 -1
  86. package/dist/ui/core/registry.d.ts +2 -0
  87. package/dist/ui/core/registry.d.ts.map +1 -1
  88. package/dist/ui/docs/generators/http-generator.d.ts +4 -0
  89. package/dist/ui/docs/generators/http-generator.d.ts.map +1 -1
  90. package/dist/ui/docs/generators/usd-generator.d.ts +4 -0
  91. package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -1
  92. package/dist/ui/docs/ui/client-script/navigation.d.ts.map +1 -1
  93. package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
  94. package/dist/ui/docs/ui/style-sections/content.d.ts +1 -1
  95. package/dist/ui/docs/ui/style-sections/content.d.ts.map +1 -1
  96. package/dist/ui/docs/ui/style-sections/shell.d.ts +2 -1
  97. package/dist/ui/docs/ui/style-sections/shell.d.ts.map +1 -1
  98. package/dist/ui/docs/ui/styles.d.ts +2 -0
  99. package/dist/ui/docs/ui/styles.d.ts.map +1 -1
  100. package/dist/ui/docs/ui/types.d.ts +51 -1
  101. package/dist/ui/docs/ui/types.d.ts.map +1 -1
  102. package/dist/ui/docs/ui/utils.d.ts +2 -0
  103. package/dist/ui/docs/ui/utils.d.ts.map +1 -1
  104. package/dist/ui/docs/usd-middleware.d.ts +5 -1
  105. package/dist/ui/docs/usd-middleware.d.ts.map +1 -1
  106. package/dist/ui/middleware/auth/jwks.d.ts +39 -0
  107. package/dist/ui/middleware/auth/jwks.d.ts.map +1 -0
  108. package/dist/ui/middleware/auth/oauth2-client-credentials.d.ts +50 -0
  109. package/dist/ui/middleware/auth/oauth2-client-credentials.d.ts.map +1 -0
  110. package/dist/ui/middleware/auth/oauth2-http.d.ts +4 -0
  111. package/dist/ui/middleware/auth/oauth2-http.d.ts.map +1 -0
  112. package/dist/ui/middleware/auth/oauth2.d.ts +296 -0
  113. package/dist/ui/middleware/auth/oauth2.d.ts.map +1 -0
  114. package/dist/ui/middleware/auth.d.ts +331 -0
  115. package/dist/ui/middleware/auth.d.ts.map +1 -0
  116. package/dist/ui/server/fs-routes/middleware-processor.d.ts.map +1 -1
  117. package/dist/ui/server/fs-routes/types.d.ts +2 -0
  118. package/dist/ui/server/fs-routes/types.d.ts.map +1 -1
  119. package/dist/ui/types/handlers.d.ts +2 -0
  120. package/dist/ui/types/handlers.d.ts.map +1 -1
  121. package/package.json +1 -1
@@ -56,6 +56,7 @@ const protocolRank = (name) => {
56
56
  const protocols = Object.keys(protocolData).sort((a, b) => protocolRank(a) - protocolRank(b));
57
57
  let activeProtocol = protocols[0] ?? 'http';
58
58
  const environments = resolveEnvironments(spec.servers);
59
+ const environmentStorageKey = `raffel-docs-environment:${String(win.location?.pathname ?? '/docs')}`;
59
60
  let selectedEnvironmentUrl = inferEnvironmentUrl(environments);
60
61
  let searchQuery = '';
61
62
  let routeState = parseRouteHash();
@@ -1395,7 +1396,7 @@ function resolveEnvironments(servers) {
1395
1396
  const url = String(safeRuntimeUrl(expandedUrl)?.toString() ?? expandedUrl).replace(/\/$/, '');
1396
1397
  const described = String(server?.description ?? '');
1397
1398
  const label = Object.entries(values).reduce((current, [name, value]) => current.replaceAll(`{${name}}`, value), described) || Object.values(values).join(' / ') || `Server ${serverIndex + 1}`;
1398
- resolved.push({ id: `${serverIndex}:${variantIndex}`, label, url, variables: values });
1399
+ resolved.push({ id: `${serverIndex}:${variantIndex}`, label, url, description: described, variables: values, variableDefinitions: variables });
1399
1400
  });
1400
1401
  });
1401
1402
  return resolved;
@@ -1403,6 +1404,9 @@ function resolveEnvironments(servers) {
1403
1404
  function inferEnvironmentUrl(options) {
1404
1405
  if (options.length === 0)
1405
1406
  return String(win.location?.origin ?? 'http://localhost:3000');
1407
+ const stored = win.localStorage?.getItem?.(environmentStorageKey);
1408
+ if (stored && options.some(environment => environment.url === stored))
1409
+ return stored;
1406
1410
  const current = safeRuntimeUrl(String(win.location?.href ?? ''));
1407
1411
  if (!current)
1408
1412
  return options[0].url;
@@ -3020,26 +3024,6 @@ function renderAuthenticationSection() {
3020
3024
  heading.className = 'authentication-header';
3021
3025
  heading.innerHTML = '<div><div class="subsection-label">AUTHENTICATION</div><h2>Authentication</h2><p>Credentials saved here are shared with every protected route in this environment.</p></div>';
3022
3026
  section.appendChild(heading);
3023
- const environmentField = doc.createElement('label');
3024
- environmentField.className = 'auth-environment';
3025
- environmentField.innerHTML = '<span class="auth-field-label">Current environment</span>';
3026
- const select = doc.createElement('select');
3027
- select.className = 'auth-environment-select';
3028
- environments.forEach(environment => {
3029
- const option = doc.createElement('option');
3030
- option.value = environment.url;
3031
- option.textContent = `${environment.label} — ${environment.url}`;
3032
- if (environment.url === selectedEnvironmentUrl)
3033
- option.setAttribute('selected', '');
3034
- select.appendChild(option);
3035
- });
3036
- select.value = selectedEnvironmentUrl;
3037
- select.onchange = () => {
3038
- selectedEnvironmentUrl = select.value;
3039
- render();
3040
- };
3041
- environmentField.appendChild(select);
3042
- section.appendChild(environmentField);
3043
3027
  const cards = doc.createElement('div');
3044
3028
  cards.className = 'auth-schemes';
3045
3029
  Object.entries(schemes).forEach(([schemeName, scheme]) => {
@@ -3234,31 +3218,48 @@ function renderDocsOverview() {
3234
3218
  meta.innerHTML = metaBits.join('<span class="docs-overview-meta-sep">·</span>');
3235
3219
  container.appendChild(meta);
3236
3220
  }
3237
- // Servers — straight from `spec.servers`.
3221
+ // One compact environment control drives samples, authentication and Try It.
3238
3222
  const servers = Array.isArray(spec.servers) ? spec.servers : [];
3239
3223
  if (servers.length) {
3240
3224
  const section = doc.createElement('section');
3241
3225
  section.className = 'docs-overview-servers';
3242
- const rows = servers
3243
- .map((s) => {
3244
- const url = esc(String(s?.url ?? ''));
3245
- const desc = s?.description
3246
- ? `<span class="docs-overview-server-desc">${esc(String(s.description))}</span>`
3247
- : '';
3248
- const variables = Object.entries(s?.variables ?? {}).map(([name, definition]) => {
3249
- const allowed = Array.isArray(definition?.enum) && definition.enum.length > 0
3250
- ? `<span>allowed: ${esc(definition.enum.join(', '))}</span>`
3251
- : '';
3226
+ const label = doc.createElement('label');
3227
+ label.className = 'docs-overview-environment';
3228
+ label.innerHTML = `<span class="docs-overview-subtitle">${environments.length > 1 ? 'Environment' : 'Server'}</span>`;
3229
+ const select = doc.createElement('select');
3230
+ select.className = 'docs-overview-environment-select';
3231
+ environments.forEach(environment => {
3232
+ const option = doc.createElement('option');
3233
+ option.value = environment.url;
3234
+ option.textContent = environment.label;
3235
+ if (environment.url === selectedEnvironmentUrl)
3236
+ option.setAttribute('selected', '');
3237
+ select.appendChild(option);
3238
+ });
3239
+ select.value = selectedEnvironmentUrl;
3240
+ select.onchange = () => {
3241
+ selectedEnvironmentUrl = select.value;
3242
+ win.localStorage?.setItem?.(environmentStorageKey, selectedEnvironmentUrl);
3243
+ render();
3244
+ };
3245
+ label.appendChild(select);
3246
+ section.appendChild(label);
3247
+ const current = selectedEnvironment();
3248
+ const url = doc.createElement('code');
3249
+ url.className = 'docs-overview-server-url';
3250
+ url.textContent = current?.url ?? '';
3251
+ section.appendChild(url);
3252
+ if (current && (current.description || Object.keys(current.variables).length > 0)) {
3253
+ const details = doc.createElement('details');
3254
+ details.className = 'docs-overview-server-details';
3255
+ const variables = Object.entries(current.variableDefinitions).map(([name, definition]) => {
3256
+ const allowed = Array.isArray(definition?.enum) && definition.enum.length > 0 ? `<span>allowed: ${esc(definition.enum.join(', '))}</span>` : '';
3252
3257
  const description = definition?.description ? `<span>${esc(definition.description)}</span>` : '';
3253
- return `<li><code>${esc(name)}</code><span>default: ${esc(definition?.default ?? '')}</span>${allowed}${description}</li>`;
3258
+ return `<li><code>${esc(name)}</code><span>current: ${esc(current.variables[name] ?? '')}</span><span>default: ${esc(definition?.default ?? '')}</span>${allowed}${description}</li>`;
3254
3259
  }).join('');
3255
- const variableBlock = variables
3256
- ? `<div class="docs-overview-server-variables"><strong>Server variables</strong><ul>${variables}</ul></div>`
3257
- : '';
3258
- return `<li class="docs-overview-server"><code class="docs-overview-server-url">${url}</code>${desc}${variableBlock}</li>`;
3259
- })
3260
- .join('');
3261
- section.innerHTML = `<h2 class="docs-overview-subtitle">${servers.length > 1 ? 'Servers' : 'Server'}</h2><ul class="docs-overview-server-list">${rows}</ul>`;
3260
+ details.innerHTML = `<summary>${variables ? 'Server variables' : 'Details'}</summary>${current.description ? `<p>${esc(current.description)}</p>` : ''}${variables ? `<ul>${variables}</ul>` : ''}`;
3261
+ section.appendChild(details);
3262
+ }
3262
3263
  container.appendChild(section);
3263
3264
  }
3264
3265
  // Description (markdown).
@@ -3890,7 +3891,8 @@ function bindEvents() {
3890
3891
  byId('themeToggle')?.addEventListener('click', () => {
3891
3892
  const root = doc.documentElement;
3892
3893
  const current = root.getAttribute('data-theme') || 'auto';
3893
- const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : current === 'light' ? 'custom' : 'auto';
3894
+ const hasConfiguredTheme = root.getAttribute('data-theme-configured') === 'true';
3895
+ const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : hasConfiguredTheme ? 'auto' : current === 'light' ? 'custom' : 'auto';
3894
3896
  root.setAttribute('data-theme', next);
3895
3897
  win.localStorage?.setItem?.(themeStorageKey, next);
3896
3898
  });
@@ -3964,7 +3966,8 @@ function init() {
3964
3966
  if (!doc)
3965
3967
  return;
3966
3968
  const storedTheme = win.localStorage?.getItem?.(themeStorageKey);
3967
- if (storedTheme === 'auto' || storedTheme === 'dark' || storedTheme === 'light' || storedTheme === 'custom')
3969
+ const configuredTheme = doc.documentElement.getAttribute('data-theme-configured') === 'true';
3970
+ if (storedTheme === 'auto' || storedTheme === 'dark' || storedTheme === 'light' || (!configuredTheme && storedTheme === 'custom'))
3968
3971
  doc.documentElement.setAttribute('data-theme', storedTheme);
3969
3972
  installOAuthCallback();
3970
3973
  installDocsPluginApi();
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,sBAAsB,QA8hBlC,CAAA"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,sBAAsB,QA+hBlC,CAAA"}
@@ -16,7 +16,8 @@ export const navigationClientScript = String.raw ` // Search functionality
16
16
  themeToggle.addEventListener('click', () => {
17
17
  const root = document.documentElement;
18
18
  const current = root.getAttribute('data-theme') || 'auto';
19
- const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : current === 'light' ? 'custom' : 'auto';
19
+ const configured = root.getAttribute('data-theme-configured') === 'true';
20
+ const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : configured ? 'auto' : current === 'light' ? 'custom' : 'auto';
20
21
  root.setAttribute('data-theme', next);
21
22
  localStorage?.setItem?.('raffel-docs-theme', next);
22
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8hB/C,CAAA"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/docs/ui/client-script/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+hB/C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA8E,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAqBhI;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAmKlE;AA4FD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAYjE"}
1
+ {"version":3,"file":"html-builder.d.ts","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAA8E,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAqBhI;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAsKlE;AA4FD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAejE"}
@@ -13,7 +13,7 @@
13
13
  */
14
14
  const _startupTs = Date.now();
15
15
  import { generateStyles } from './styles.js';
16
- import { escapeHtml, escapeJsonForScript, generateHeroBackgroundCSS } from './utils.js';
16
+ import { escapeHtml, escapeJsonForScript, generateHeroBackgroundCSS, sanitizeCssTokenValue } from './utils.js';
17
17
  import { generateAppContainer, generateHeroSection, generateIntroductionSection, generateSkipLink, generateTopNavigation, mergeHeroConfig, } from './html-shell.js';
18
18
  import { generateClientDataScript, generateInlineRuntimeDependencyScripts, generateClientRuntimeScript, } from './client-script/index.js';
19
19
  import { buildDocsSearchIndex } from '../search-index.js';
@@ -25,8 +25,11 @@ export function generateUIHTML(options) {
25
25
  const { doc, basePath, ui, tagGroups } = options;
26
26
  // Get USD documentation config from spec
27
27
  const usdDocumentation = doc['x-usd']?.documentation;
28
- const theme = ui?.theme ?? 'auto';
29
- const primaryColor = ui?.primaryColor ?? '#6366f1';
28
+ const themeConfig = ui?.theme && typeof ui.theme === 'object' ? ui.theme : undefined;
29
+ const theme = themeConfig?.defaultMode ?? (typeof ui?.theme === 'string' ? ui.theme : 'auto');
30
+ const primaryColor = sanitizeCssTokenValue(themeConfig?.light?.colors?.primary)
31
+ ?? sanitizeCssTokenValue(ui?.primaryColor)
32
+ ?? '#6366f1';
30
33
  const logo = ui?.logo ?? usdDocumentation?.logo;
31
34
  const favicon = ui?.favicon ?? usdDocumentation?.favicon;
32
35
  const title = doc.info.title;
@@ -78,7 +81,7 @@ export function generateUIHTML(options) {
78
81
  // Generate hero background CSS
79
82
  const heroBackgroundCSS = generateHeroBackgroundCSS(primaryColor, hero?.background, hero?.backgroundImage);
80
83
  // Generate CSS
81
- const styles = generateStyles({ primaryColor, heroBackgroundCSS });
84
+ const styles = generateStyles({ primaryColor, heroBackgroundCSS, theme: themeConfig });
82
85
  const stylesHtml = assetMode === 'external'
83
86
  ? `<link rel="stylesheet" href="${escapeHtml(assetBasePath)}/-/raffel-docs.css">`
84
87
  : `<style>
@@ -127,7 +130,7 @@ ${generateClientRuntimeScript()}
127
130
  </script>`;
128
131
  // Generate HTML
129
132
  return `<!DOCTYPE html>
130
- <html lang="en" data-theme="${theme}">
133
+ <html lang="en" data-theme="${theme}"${themeConfig ? ' data-theme-configured="true"' : ''}>
131
134
  <head>
132
135
  <meta charset="UTF-8">
133
136
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -244,10 +247,13 @@ export function generateUIRuntimeJS() {
244
247
  export function generateUICSS(options) {
245
248
  const { doc, ui } = options;
246
249
  const usdDocumentation = doc['x-usd']?.documentation;
247
- const primaryColor = ui?.primaryColor ?? '#6366f1';
250
+ const themeConfig = ui?.theme && typeof ui.theme === 'object' ? ui.theme : undefined;
251
+ const primaryColor = sanitizeCssTokenValue(themeConfig?.light?.colors?.primary)
252
+ ?? sanitizeCssTokenValue(ui?.primaryColor)
253
+ ?? '#6366f1';
248
254
  const hero = mergeHeroConfig(usdDocumentation, ui?.hero);
249
255
  const heroBackgroundCSS = generateHeroBackgroundCSS(primaryColor, hero?.background, hero?.backgroundImage);
250
- return generateStyles({ primaryColor, heroBackgroundCSS });
256
+ return generateStyles({ primaryColor, heroBackgroundCSS, theme: themeConfig });
251
257
  }
252
258
  const DEFAULT_MERMAID_CDN_SRC = 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js';
253
259
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-builder.js","sourceRoot":"","sources":["../../../src/docs/ui/html-builder.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,7 @@ const protocolRank = (name) => {
56
56
  const protocols = Object.keys(protocolData).sort((a, b) => protocolRank(a) - protocolRank(b));
57
57
  let activeProtocol = protocols[0] ?? 'http';
58
58
  const environments = resolveEnvironments(spec.servers);
59
+ const environmentStorageKey = `raffel-docs-environment:${String(win.location?.pathname ?? '/docs')}`;
59
60
  let selectedEnvironmentUrl = inferEnvironmentUrl(environments);
60
61
  let searchQuery = '';
61
62
  let routeState = parseRouteHash();
@@ -1395,7 +1396,7 @@ function resolveEnvironments(servers) {
1395
1396
  const url = String(safeRuntimeUrl(expandedUrl)?.toString() ?? expandedUrl).replace(/\/$/, '');
1396
1397
  const described = String(server?.description ?? '');
1397
1398
  const label = Object.entries(values).reduce((current, [name, value]) => current.replaceAll(`{${name}}`, value), described) || Object.values(values).join(' / ') || `Server ${serverIndex + 1}`;
1398
- resolved.push({ id: `${serverIndex}:${variantIndex}`, label, url, variables: values });
1399
+ resolved.push({ id: `${serverIndex}:${variantIndex}`, label, url, description: described, variables: values, variableDefinitions: variables });
1399
1400
  });
1400
1401
  });
1401
1402
  return resolved;
@@ -1403,6 +1404,9 @@ function resolveEnvironments(servers) {
1403
1404
  function inferEnvironmentUrl(options) {
1404
1405
  if (options.length === 0)
1405
1406
  return String(win.location?.origin ?? 'http://localhost:3000');
1407
+ const stored = win.localStorage?.getItem?.(environmentStorageKey);
1408
+ if (stored && options.some(environment => environment.url === stored))
1409
+ return stored;
1406
1410
  const current = safeRuntimeUrl(String(win.location?.href ?? ''));
1407
1411
  if (!current)
1408
1412
  return options[0].url;
@@ -3020,26 +3024,6 @@ function renderAuthenticationSection() {
3020
3024
  heading.className = 'authentication-header';
3021
3025
  heading.innerHTML = '<div><div class="subsection-label">AUTHENTICATION</div><h2>Authentication</h2><p>Credentials saved here are shared with every protected route in this environment.</p></div>';
3022
3026
  section.appendChild(heading);
3023
- const environmentField = doc.createElement('label');
3024
- environmentField.className = 'auth-environment';
3025
- environmentField.innerHTML = '<span class="auth-field-label">Current environment</span>';
3026
- const select = doc.createElement('select');
3027
- select.className = 'auth-environment-select';
3028
- environments.forEach(environment => {
3029
- const option = doc.createElement('option');
3030
- option.value = environment.url;
3031
- option.textContent = `${environment.label} — ${environment.url}`;
3032
- if (environment.url === selectedEnvironmentUrl)
3033
- option.setAttribute('selected', '');
3034
- select.appendChild(option);
3035
- });
3036
- select.value = selectedEnvironmentUrl;
3037
- select.onchange = () => {
3038
- selectedEnvironmentUrl = select.value;
3039
- render();
3040
- };
3041
- environmentField.appendChild(select);
3042
- section.appendChild(environmentField);
3043
3027
  const cards = doc.createElement('div');
3044
3028
  cards.className = 'auth-schemes';
3045
3029
  Object.entries(schemes).forEach(([schemeName, scheme]) => {
@@ -3234,31 +3218,48 @@ function renderDocsOverview() {
3234
3218
  meta.innerHTML = metaBits.join('<span class="docs-overview-meta-sep">·</span>');
3235
3219
  container.appendChild(meta);
3236
3220
  }
3237
- // Servers — straight from `spec.servers`.
3221
+ // One compact environment control drives samples, authentication and Try It.
3238
3222
  const servers = Array.isArray(spec.servers) ? spec.servers : [];
3239
3223
  if (servers.length) {
3240
3224
  const section = doc.createElement('section');
3241
3225
  section.className = 'docs-overview-servers';
3242
- const rows = servers
3243
- .map((s) => {
3244
- const url = esc(String(s?.url ?? ''));
3245
- const desc = s?.description
3246
- ? `<span class="docs-overview-server-desc">${esc(String(s.description))}</span>`
3247
- : '';
3248
- const variables = Object.entries(s?.variables ?? {}).map(([name, definition]) => {
3249
- const allowed = Array.isArray(definition?.enum) && definition.enum.length > 0
3250
- ? `<span>allowed: ${esc(definition.enum.join(', '))}</span>`
3251
- : '';
3226
+ const label = doc.createElement('label');
3227
+ label.className = 'docs-overview-environment';
3228
+ label.innerHTML = `<span class="docs-overview-subtitle">${environments.length > 1 ? 'Environment' : 'Server'}</span>`;
3229
+ const select = doc.createElement('select');
3230
+ select.className = 'docs-overview-environment-select';
3231
+ environments.forEach(environment => {
3232
+ const option = doc.createElement('option');
3233
+ option.value = environment.url;
3234
+ option.textContent = environment.label;
3235
+ if (environment.url === selectedEnvironmentUrl)
3236
+ option.setAttribute('selected', '');
3237
+ select.appendChild(option);
3238
+ });
3239
+ select.value = selectedEnvironmentUrl;
3240
+ select.onchange = () => {
3241
+ selectedEnvironmentUrl = select.value;
3242
+ win.localStorage?.setItem?.(environmentStorageKey, selectedEnvironmentUrl);
3243
+ render();
3244
+ };
3245
+ label.appendChild(select);
3246
+ section.appendChild(label);
3247
+ const current = selectedEnvironment();
3248
+ const url = doc.createElement('code');
3249
+ url.className = 'docs-overview-server-url';
3250
+ url.textContent = current?.url ?? '';
3251
+ section.appendChild(url);
3252
+ if (current && (current.description || Object.keys(current.variables).length > 0)) {
3253
+ const details = doc.createElement('details');
3254
+ details.className = 'docs-overview-server-details';
3255
+ const variables = Object.entries(current.variableDefinitions).map(([name, definition]) => {
3256
+ const allowed = Array.isArray(definition?.enum) && definition.enum.length > 0 ? `<span>allowed: ${esc(definition.enum.join(', '))}</span>` : '';
3252
3257
  const description = definition?.description ? `<span>${esc(definition.description)}</span>` : '';
3253
- return `<li><code>${esc(name)}</code><span>default: ${esc(definition?.default ?? '')}</span>${allowed}${description}</li>`;
3258
+ return `<li><code>${esc(name)}</code><span>current: ${esc(current.variables[name] ?? '')}</span><span>default: ${esc(definition?.default ?? '')}</span>${allowed}${description}</li>`;
3254
3259
  }).join('');
3255
- const variableBlock = variables
3256
- ? `<div class="docs-overview-server-variables"><strong>Server variables</strong><ul>${variables}</ul></div>`
3257
- : '';
3258
- return `<li class="docs-overview-server"><code class="docs-overview-server-url">${url}</code>${desc}${variableBlock}</li>`;
3259
- })
3260
- .join('');
3261
- section.innerHTML = `<h2 class="docs-overview-subtitle">${servers.length > 1 ? 'Servers' : 'Server'}</h2><ul class="docs-overview-server-list">${rows}</ul>`;
3260
+ details.innerHTML = `<summary>${variables ? 'Server variables' : 'Details'}</summary>${current.description ? `<p>${esc(current.description)}</p>` : ''}${variables ? `<ul>${variables}</ul>` : ''}`;
3261
+ section.appendChild(details);
3262
+ }
3262
3263
  container.appendChild(section);
3263
3264
  }
3264
3265
  // Description (markdown).
@@ -3890,7 +3891,8 @@ function bindEvents() {
3890
3891
  byId('themeToggle')?.addEventListener('click', () => {
3891
3892
  const root = doc.documentElement;
3892
3893
  const current = root.getAttribute('data-theme') || 'auto';
3893
- const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : current === 'light' ? 'custom' : 'auto';
3894
+ const hasConfiguredTheme = root.getAttribute('data-theme-configured') === 'true';
3895
+ const next = current === 'auto' ? 'dark' : current === 'dark' ? 'light' : hasConfiguredTheme ? 'auto' : current === 'light' ? 'custom' : 'auto';
3894
3896
  root.setAttribute('data-theme', next);
3895
3897
  win.localStorage?.setItem?.(themeStorageKey, next);
3896
3898
  });
@@ -3964,7 +3966,8 @@ function init() {
3964
3966
  if (!doc)
3965
3967
  return;
3966
3968
  const storedTheme = win.localStorage?.getItem?.(themeStorageKey);
3967
- if (storedTheme === 'auto' || storedTheme === 'dark' || storedTheme === 'light' || storedTheme === 'custom')
3969
+ const configuredTheme = doc.documentElement.getAttribute('data-theme-configured') === 'true';
3970
+ if (storedTheme === 'auto' || storedTheme === 'dark' || storedTheme === 'light' || (!configuredTheme && storedTheme === 'custom'))
3968
3971
  doc.documentElement.setAttribute('data-theme', storedTheme);
3969
3972
  installOAuthCallback();
3970
3973
  installDocsPluginApi();