@stainless-api/docs 0.1.0-beta.12 → 0.1.0-beta.121

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 (152) hide show
  1. package/CHANGELOG.md +1012 -0
  2. package/eslint-suppressions.json +95 -0
  3. package/{eslint.config.js → eslint.config.ts} +0 -2
  4. package/locals.d.ts +17 -0
  5. package/package.json +57 -43
  6. package/playground-virtual-modules.d.ts +96 -0
  7. package/plugin/assets/languages/cli.svg +14 -0
  8. package/plugin/assets/languages/csharp.svg +1 -0
  9. package/plugin/assets/languages/php.svg +4 -0
  10. package/plugin/buildAlgoliaIndex.ts +40 -39
  11. package/plugin/components/MethodDescription.tsx +54 -0
  12. package/plugin/components/RequestBuilder/ParamEditor.tsx +55 -0
  13. package/plugin/components/RequestBuilder/SnippetStainlessIsland.tsx +107 -0
  14. package/plugin/components/RequestBuilder/index.tsx +40 -0
  15. package/plugin/components/RequestBuilder/props.ts +9 -0
  16. package/plugin/components/RequestBuilder/spec-helpers.ts +47 -0
  17. package/plugin/components/RequestBuilder/styles.css +67 -0
  18. package/plugin/components/SDKSelect.astro +18 -111
  19. package/plugin/components/SnippetCode.tsx +112 -70
  20. package/plugin/components/StainlessIslands.tsx +126 -0
  21. package/plugin/components/search/SearchAlgolia.astro +46 -29
  22. package/plugin/components/search/SearchIsland.tsx +61 -37
  23. package/plugin/generateAPIReferenceLink.ts +2 -2
  24. package/plugin/globalJs/ai-dropdown-options.ts +248 -0
  25. package/plugin/globalJs/code-snippets.ts +45 -16
  26. package/plugin/globalJs/copy.ts +115 -27
  27. package/plugin/globalJs/create-playground.shim.ts +3 -0
  28. package/plugin/globalJs/method-descriptions.ts +33 -0
  29. package/plugin/globalJs/navigation.ts +15 -33
  30. package/plugin/globalJs/playground-data.shim.ts +1 -0
  31. package/plugin/globalJs/playground-data.ts +14 -0
  32. package/plugin/globalJs/summary-selection-tweak.ts +29 -0
  33. package/plugin/helpers/generateDocsRoutes.ts +59 -0
  34. package/plugin/helpers/multiSpec.ts +8 -0
  35. package/plugin/index.ts +306 -142
  36. package/plugin/languages.ts +8 -2
  37. package/plugin/loadPluginConfig.ts +251 -107
  38. package/plugin/middlewareBuilder/stainlessMiddleware.d.ts +3 -1
  39. package/plugin/react/Routing.tsx +214 -143
  40. package/plugin/referencePlaceholderUtils.ts +18 -15
  41. package/plugin/replaceSidebarPlaceholderMiddleware.ts +39 -35
  42. package/plugin/routes/Docs.astro +71 -111
  43. package/plugin/routes/DocsStatic.astro +6 -5
  44. package/plugin/routes/Overview.astro +46 -22
  45. package/plugin/routes/markdown.ts +13 -12
  46. package/plugin/{cms → sidebar-utils}/sidebar-builder.ts +83 -63
  47. package/plugin/specs/FileCache.ts +99 -0
  48. package/plugin/specs/fetchSpecSSR.ts +27 -0
  49. package/plugin/specs/generateSpec.ts +112 -0
  50. package/plugin/specs/index.ts +137 -0
  51. package/plugin/specs/inputResolver.ts +148 -0
  52. package/plugin/{cms → specs}/worker.ts +82 -5
  53. package/plugin/vendor/preview.worker.docs.js +27234 -17991
  54. package/plugin/vendor/templates/cli.md +1 -0
  55. package/plugin/vendor/templates/go.md +4 -2
  56. package/plugin/vendor/templates/java.md +5 -1
  57. package/plugin/vendor/templates/kotlin.md +5 -1
  58. package/plugin/vendor/templates/node.md +4 -2
  59. package/plugin/vendor/templates/python.md +4 -2
  60. package/plugin/vendor/templates/ruby.md +4 -2
  61. package/plugin/vendor/templates/terraform.md +1 -1
  62. package/plugin/vendor/templates/typescript.md +3 -1
  63. package/resolveSrcFile.ts +10 -0
  64. package/scripts/vendor_deps.ts +5 -5
  65. package/shared/conditionalIntegration.ts +28 -0
  66. package/shared/getProsePages.ts +41 -0
  67. package/shared/getSharedLogger.ts +15 -0
  68. package/shared/terminalUtils.ts +3 -0
  69. package/shared/virtualModule.ts +54 -1
  70. package/src/content.config.ts +9 -0
  71. package/stl-docs/components/AIDropdown.tsx +63 -0
  72. package/stl-docs/components/AiChatIsland.tsx +14 -0
  73. package/stl-docs/components/{content-panel/ContentBreadcrumbs.tsx → ContentBreadcrumbs.tsx} +2 -2
  74. package/stl-docs/components/ContentPanel.astro +9 -0
  75. package/stl-docs/components/Footer.astro +89 -0
  76. package/stl-docs/components/Head.astro +20 -0
  77. package/stl-docs/components/Header.astro +3 -10
  78. package/stl-docs/components/PageFrame.astro +34 -0
  79. package/stl-docs/components/PageSidebar.astro +11 -0
  80. package/stl-docs/components/PageTitle.astro +82 -0
  81. package/stl-docs/components/StainlessLogo.svg +4 -0
  82. package/stl-docs/components/TableOfContents.astro +34 -0
  83. package/stl-docs/components/ThemeProvider.astro +36 -0
  84. package/stl-docs/components/ThemeSelect.astro +84 -146
  85. package/stl-docs/components/TwoColumnContent.astro +2 -0
  86. package/stl-docs/components/headers/DefaultHeader.astro +4 -6
  87. package/stl-docs/components/headers/StackedHeader.astro +8 -51
  88. package/stl-docs/components/icons/chat-gpt.tsx +2 -2
  89. package/stl-docs/components/icons/cursor.tsx +10 -0
  90. package/stl-docs/components/icons/gemini.tsx +19 -0
  91. package/stl-docs/components/icons/markdown.tsx +1 -1
  92. package/stl-docs/components/index.ts +1 -0
  93. package/stl-docs/components/mintlify-compat/Frame.astro +4 -4
  94. package/stl-docs/components/mintlify-compat/card.css +4 -4
  95. package/stl-docs/components/mintlify-compat/index.ts +2 -4
  96. package/stl-docs/components/nav-tabs/NavDropdown.astro +31 -75
  97. package/stl-docs/components/nav-tabs/NavTabs.astro +79 -81
  98. package/stl-docs/components/nav-tabs/SecondaryNavTabs.astro +15 -7
  99. package/stl-docs/components/nav-tabs/buildNavLinks.ts +3 -2
  100. package/stl-docs/components/pagination/HomeLink.astro +10 -0
  101. package/stl-docs/components/pagination/Pagination.astro +177 -0
  102. package/stl-docs/components/pagination/PaginationLinkEmphasized.astro +22 -0
  103. package/stl-docs/components/pagination/PaginationLinkQuiet.astro +13 -0
  104. package/stl-docs/components/pagination/util.ts +71 -0
  105. package/stl-docs/components/scripts.ts +1 -0
  106. package/stl-docs/components/sidebars/BaseSidebar.astro +80 -2
  107. package/stl-docs/components/sidebars/SidebarWithComponents.tsx +10 -0
  108. package/stl-docs/components/sidebars/convertAstroSidebarToStl.tsx +62 -0
  109. package/stl-docs/disableCalloutSyntax.ts +36 -0
  110. package/stl-docs/fonts.ts +186 -0
  111. package/stl-docs/index.ts +178 -54
  112. package/stl-docs/loadStlDocsConfig.ts +64 -8
  113. package/stl-docs/proseDocSync.ts +314 -0
  114. package/stl-docs/proseMarkdown/proseMarkdownIntegration.ts +53 -0
  115. package/stl-docs/proseMarkdown/proseMarkdownMiddleware.ts +41 -0
  116. package/stl-docs/proseMarkdown/toMarkdown.ts +158 -0
  117. package/stl-docs/proseSearchIndexing.ts +222 -0
  118. package/stl-docs/tabsMiddleware.ts +14 -5
  119. package/styles/code.css +53 -49
  120. package/styles/links.css +2 -37
  121. package/styles/method-descriptions.css +36 -0
  122. package/styles/overrides.css +28 -46
  123. package/styles/page.css +230 -52
  124. package/styles/sdk_select.css +9 -6
  125. package/styles/search.css +11 -21
  126. package/styles/sidebar.css +28 -211
  127. package/styles/{variables.css → sl-variables.css} +4 -8
  128. package/styles/stldocs-variables.css +6 -0
  129. package/styles/toc.css +19 -8
  130. package/theme.css +11 -9
  131. package/tsconfig.json +1 -4
  132. package/virtual-module.d.ts +65 -8
  133. package/components/variables.css +0 -112
  134. package/plugin/cms/client.ts +0 -62
  135. package/plugin/cms/server.ts +0 -268
  136. package/plugin/globalJs/ai-dropdown.ts +0 -57
  137. package/stl-docs/components/APIReferenceAIDropdown.tsx +0 -58
  138. package/stl-docs/components/content-panel/ContentPanel.astro +0 -69
  139. package/stl-docs/components/content-panel/ProseAIDropdown.tsx +0 -55
  140. package/stl-docs/components/headers/SplashMobileMenuToggle.astro +0 -49
  141. package/stl-docs/components/mintlify-compat/Step.astro +0 -56
  142. package/stl-docs/components/mintlify-compat/Steps.astro +0 -15
  143. package/styles/fonts.css +0 -68
  144. /package/{plugin/assets → assets}/fonts/geist/OFL.txt +0 -0
  145. /package/{plugin/assets → assets}/fonts/geist/geist-italic-latin-ext.woff2 +0 -0
  146. /package/{plugin/assets → assets}/fonts/geist/geist-italic-latin.woff2 +0 -0
  147. /package/{plugin/assets → assets}/fonts/geist/geist-latin-ext.woff2 +0 -0
  148. /package/{plugin/assets → assets}/fonts/geist/geist-latin.woff2 +0 -0
  149. /package/{plugin/assets → assets}/fonts/geist/geist-mono-italic-latin-ext.woff2 +0 -0
  150. /package/{plugin/assets → assets}/fonts/geist/geist-mono-italic-latin.woff2 +0 -0
  151. /package/{plugin/assets → assets}/fonts/geist/geist-mono-latin-ext.woff2 +0 -0
  152. /package/{plugin/assets → assets}/fonts/geist/geist-mono-latin.woff2 +0 -0
@@ -1,79 +1,78 @@
1
1
  ---
2
- import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro";
3
- import { cmsClient } from "../cms/client";
2
+ import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
3
+ import { getReadmeContent, buildPageNavigation, RenderSpec, astroMarkdownRender } from '../react/Routing';
4
+ import { getResourceFromSpec } from '@stainless-api/docs-ui/utils';
5
+ import { parseRoute, parseStainlessPath } from '@stainless-api/docs-ui/routing';
4
6
  import {
5
- getReadmeContent,
6
- generateDocsRoutes,
7
- buildPageNavigation,
8
- RenderSpec,
9
- astroMarkdownRender,
10
- } from "../react/Routing";
11
- import { getResourceFromSpec } from "@stainless-api/docs-ui/src/utils";
12
- import { BASE_PATH, CONTENT_PANEL_LAYOUT,MIDDLEWARE } from "virtual:stl-starlight-virtual-module";
7
+ CONTENT_PANEL_LAYOUT,
8
+ MIDDLEWARE,
9
+ EXPERIMENTAL_REQUEST_BUILDER,
10
+ RESOLVED_API_REFERENCE_PATH,
11
+ } from 'virtual:stl-starlight-virtual-module';
12
+ import { generateDocsRoutes } from '../helpers/generateDocsRoutes';
13
+ import { StainlessIslands } from '../components/StainlessIslands';
14
+ import { getSDKJSONInSSR } from '../specs/fetchSpecSSR';
13
15
 
16
+ const language = parseRoute(RESOLVED_API_REFERENCE_PATH, Astro.url.pathname)?.language;
14
17
 
15
- const spec = await cmsClient.getSpec();
16
- const routes = generateDocsRoutes(spec);
18
+ const spec = await getSDKJSONInSSR(language);
17
19
 
18
- const route = routes.find((r) => r.params.slug === Astro.params.slug);
20
+ export type Props = Awaited<ReturnType<typeof generateDocsRoutes>>[number]['props'] | Record<string, never>;
19
21
 
20
- if (!route) {
21
- throw new Error("No such route");
22
- }
22
+ const props =
23
+ 'language' in Astro.props
24
+ ? // In prod, we pass the props down to this page
25
+ Astro.props
26
+ : // In the dev server, we skip the DocsStatic wrapper so we need to find the props ourselves
27
+ generateDocsRoutes(spec).find((r) => r.params.slug === Astro.params.slug)?.props;
28
+ if (!props) throw new Error(`Could not find a route for slug '${Astro.params.slug}'`);
29
+
30
+ // PageTitle override will skip rendering the default Starlight title
31
+ Astro.locals._stlStarlightPage = {
32
+ skipRenderingStarlightTitle: props.kind === 'readme' ? false : true,
33
+ };
23
34
 
24
- const readmeContent = await getReadmeContent(spec, route.props.language);
25
- const readme =
26
- route.props.kind === "readme"
27
- ? await astroMarkdownRender(readmeContent ?? "")
28
- : null;
35
+ const readmeContent = await getReadmeContent(spec, props.language);
36
+ const readme = props.kind === 'readme' ? await astroMarkdownRender(readmeContent ?? '') : null;
29
37
 
30
- const resource = route.props.stainlessPath
31
- ? getResourceFromSpec(route.props.stainlessPath, spec)
32
- : null;
38
+ const resource = props.stainlessPath ? getResourceFromSpec(props.stainlessPath, spec) : null;
33
39
 
34
40
  const pageNav =
35
- route.props.kind === "resource" && resource
41
+ props.kind === 'resource' && resource
36
42
  ? buildPageNavigation(resource)
37
- : route.props.kind === "readme" && readme?.metadata
43
+ : props.kind === 'readme' && readme?.metadata
38
44
  ? readme?.metadata.headings
39
45
  : [];
40
46
 
41
- const props = route.props;
47
+ Astro.locals.language = props.language;
42
48
 
49
+ // Use first heading in README as page title
43
50
  if (readme) {
44
51
  const repo = spec.metadata?.[props.language]?.code_url;
45
- readme.code = readme.code.replace(
46
- /<a href="(?!(?:https?:\/\/|\/\/))([^"]+)"/g,
47
- `<a href="${repo}/$1"`);
48
- props.title = readme.metadata.headings[0].text ?? "Overview";
52
+ readme.code = readme.code.replace(/<a href="(?!(?:https?:\/\/|\/\/))([^"]+)"/g, `<a href="${repo}/$1"`);
53
+ props.title = readme.metadata.headings[0]!.text ?? 'Overview';
49
54
  }
50
55
 
56
+ // use summary for the page title of method pages
57
+ if (props.kind === 'http_method' && props.stainlessPath) {
58
+ const parsed = parseStainlessPath(props.stainlessPath);
59
+ const resource = getResourceFromSpec(props.stainlessPath, spec);
60
+ if (parsed?.method && resource?.methods[parsed.method]) {
61
+ const method = resource.methods[parsed.method];
62
+ props.title = method?.summary ?? method?.title ?? props.title;
63
+ }
64
+ }
51
65
  ---
52
66
 
53
-
54
67
  <StarlightPage
55
68
  headings={pageNav}
56
69
  frontmatter={{
57
- title: props?.title,
58
- head: [
59
- {
60
- tag: "link",
61
- attrs: {
62
- rel: "alternate",
63
- type: "text/markdown",
64
- href: `${BASE_PATH}/${Astro.params.slug}.md`
65
- }
66
- }
67
- ],
70
+ title: props.title,
68
71
  pagefind: false,
69
- tableOfContents: ["resource", "readme"].includes(props.kind)
70
- ? { maxHeadingLevel: 6 }
71
- : false,
72
- // @ts-ignore
73
- stainlessStarlight: {
74
- basePath: BASE_PATH,
75
- ...props,
76
- },
72
+ tableOfContents:
73
+ props.kind === 'readme' || (props.kind === 'resource' && props.language !== 'terraform')
74
+ ? { maxHeadingLevel: 6 }
75
+ : false,
77
76
  }}
78
77
  >
79
78
  {
@@ -88,76 +87,37 @@ if (readme) {
88
87
  contentPanelLayout={CONTENT_PANEL_LAYOUT}
89
88
  transformRequestSnippet={MIDDLEWARE.transformRequestSnippet}
90
89
  />
91
-
92
- <style is:inline>
93
- #stldocs-snippet-title {
94
- display: flex;
95
- gap: 5px;
96
- }
97
-
98
- .stldocs-snippet-code:not(.stldocs-snippet-response .stldocs-snippet-code) {
99
- padding: 0 !important;
100
-
101
- .astro-code {
102
- padding: 1rem;
103
- }
104
- }
105
-
106
-
107
- [data-has-sidebar]:not([data-has-toc]) .sl-container {
108
- max-width: 1428px;
109
- }
110
-
111
- .content-panel:nth-of-type(1) {
112
- display: none;
113
- }
114
- .content-panel:nth-of-type(2) .stl-page-nav-container {
115
- display: none;
116
- }
117
-
118
- .content-panel:nth-of-type(2) .stldocs-root .stl-page-nav-container {
119
- display: flex;
120
- }
121
- </style>
122
90
  </div>
123
91
  ) : (
124
92
  <>
125
93
  <Fragment set:html={readme?.code} />
126
- <style is:inline>
127
- .sl-markdown-content h1:first-of-type {
128
- display: none;
129
- }
130
-
131
- .sl-markdown-content img {
132
- display: inline-block;
133
- vertical-align: text-bottom;
134
- }
135
-
136
- .sl-markdown-content .octicon {
137
- margin-right: 0.2rem;
138
- overflow: visible !important;
139
- -webkit-mask: var(--oct-icon) no-repeat;
140
- mask: var(--oct-icon) no-repeat;
141
- -webkit-mask-size: 100% 100%;
142
- mask-size: 100% 100%;
143
- background-color: currentColor;
144
- color: inherit;
145
- display: inline-block;
146
- vertical-align: text-bottom;
147
- width: 1em;
148
- height: 1em;
149
- }
150
-
151
- .sl-markdown-content code {
152
- white-space: pre-wrap;
153
- }
154
- </style>
94
+ <style
95
+ is:inline
96
+ set:text={`
97
+ .sl-markdown-content h1:first-of-type {
98
+ display: none;
99
+ }
100
+
101
+ .sl-markdown-content img {
102
+ display: inline-block;
103
+ vertical-align: text-bottom;
104
+ }
105
+
106
+ .sl-markdown-content code {
107
+ white-space: pre-wrap;
108
+ }
109
+ `}
110
+ />
155
111
  </>
156
112
  )
157
113
  }
158
114
  </StarlightPage>
159
115
 
116
+ {EXPERIMENTAL_REQUEST_BUILDER && <StainlessIslands client:load />}
117
+
160
118
  <script src="../globalJs/navigation.ts"></script>
161
119
  <script src="../globalJs/copy.ts"></script>
162
120
  <script src="../globalJs/tooltip.ts"></script>
163
121
  <script src="../globalJs/code-snippets.ts"></script>
122
+ <script src="../globalJs/method-descriptions.ts"></script>
123
+ <script src="../globalJs/summary-selection-tweak.ts"></script>
@@ -1,14 +1,15 @@
1
1
  ---
2
2
  import type { GetStaticPaths } from 'astro';
3
3
  import Docs from './Docs.astro';
4
- import { cmsClient } from '../cms/client';
5
- import { generateDocsRoutes } from '../react/Routing';
4
+ import { generateAllDocsRoutes } from '../helpers/generateDocsRoutes';
6
5
 
7
6
  export const getStaticPaths = (async () => {
8
- const spec = await cmsClient.getSpec();
9
- const routes = generateDocsRoutes(spec);
7
+ const routes = await generateAllDocsRoutes();
10
8
  return routes;
11
9
  }) satisfies GetStaticPaths;
10
+
11
+ export type Props = Awaited<ReturnType<typeof getStaticPaths>>[number]['props'];
12
+ const props = Astro.props;
12
13
  ---
13
14
 
14
- <Docs />
15
+ <Docs {...props} />
@@ -1,17 +1,36 @@
1
1
  ---
2
2
  import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
3
- import { BASE_PATH, EXCLUDE_LANGUAGES } from 'virtual:stl-starlight-virtual-module';
4
- import { cmsClient } from '../cms/client';
5
- import type { DocsLanguage } from '@stainless-api/docs-ui/src/routing';
3
+ import { EXCLUDE_LANGUAGES } from 'virtual:stl-starlight-virtual-module';
6
4
  import { RenderLibraries, RenderSpecOverview, type SpecMetadata } from '../react/Routing';
5
+ import { getSDKJSONInSSR } from '../specs/fetchSpecSSR';
6
+ import { api } from 'virtual:stainless-apis-manifest';
7
7
 
8
- const spec = await cmsClient.getSpec();
8
+ const spec = await getSDKJSONInSSR('http');
9
9
 
10
- const languages: DocsLanguage[] = spec.docs!.languages ?? ['http'];
11
- const metadata = languages
12
- .filter((language) => !['http', 'terraform'].includes(language) && spec.metadata[language])
13
- .filter((language) => !EXCLUDE_LANGUAGES.includes(language))
14
- .map((language) => [language, spec.metadata[language]]) as SpecMetadata;
10
+ const langTargets = api.languages
11
+ .map((l) => l.language)
12
+ .filter((l) => !EXCLUDE_LANGUAGES.includes(l))
13
+ .filter((l) => l !== 'http');
14
+
15
+ const langsWithSpecs = await Promise.all(
16
+ langTargets.map(async (language) => {
17
+ const spec = await getSDKJSONInSSR(language);
18
+ return {
19
+ language,
20
+ spec,
21
+ };
22
+ }),
23
+ );
24
+
25
+ const metadata: SpecMetadata = langsWithSpecs.map(({ language, spec }) => [
26
+ language,
27
+ spec.metadata[language]!,
28
+ ]);
29
+
30
+ // PageTitle override will skip rendering the default Starlight title
31
+ Astro.locals._stlStarlightPage = {
32
+ hasMarkdownRoute: false,
33
+ };
15
34
  ---
16
35
 
17
36
  <StarlightPage
@@ -19,22 +38,26 @@ const metadata = languages
19
38
  title: 'API Reference',
20
39
  pagefind: false,
21
40
  tableOfContents: false,
22
- stainlessStarlight: {
23
- basePath: BASE_PATH,
24
- language: 'http',
25
- },
26
41
  }}
27
42
  >
28
- <h3>Libraries</h3>
43
+ <div class="stl-overview">
44
+ {
45
+ metadata.length > 0 && (
46
+ <>
47
+ <h3>Libraries</h3>
29
48
 
30
- <div class="stldocs-root language-blocks stl-ui-not-prose not-content">
31
- <RenderLibraries metadata={metadata} />
32
- </div>
49
+ <div class="stldocs-root language-blocks stl-ui-not-prose not-content">
50
+ <RenderLibraries metadata={metadata} />
51
+ </div>
52
+ </>
53
+ )
54
+ }
33
55
 
34
- <h3>API Overview</h3>
56
+ <h3>API Overview</h3>
35
57
 
36
- <div class="stldocs-root api-overview stl-ui-not-prose">
37
- <RenderSpecOverview spec={spec} language="http" />
58
+ <div class="stldocs-root api-overview stl-ui-not-prose">
59
+ <RenderSpecOverview spec={spec} language="http" />
60
+ </div>
38
61
  </div>
39
62
  </StarlightPage>
40
63
 
@@ -45,8 +68,9 @@ const metadata = languages
45
68
  gap: 1rem;
46
69
  margin-top: 2rem;
47
70
 
48
- .stldocs-language-block {
49
- width: 350px;
71
+ > * {
72
+ width: 0;
73
+ flex: 1 1 350px;
50
74
  }
51
75
  }
52
76
 
@@ -1,13 +1,14 @@
1
1
  import type { APIRoute, GetStaticPaths } from 'astro';
2
- import { cmsClient } from '../cms/client';
3
- import { generateDocsRoutes, getReadmeContent } from '../react/Routing';
4
- import { getResourceFromSpec } from '@stainless-api/docs-ui/src/utils';
2
+ import { getReadmeContent } from '../react/Routing';
3
+ import { getResourceFromSpec } from '@stainless-api/docs-ui/utils';
5
4
 
6
- import { renderMarkdown } from '@stainless-api/docs-ui/src/markdown';
5
+ import { renderMarkdown } from '@stainless-api/docs-ui/markdown';
7
6
 
8
- import { parseStainlessPath, type DocsLanguage } from '@stainless-api/docs-ui/src/routing';
9
- import type { EnvironmentType } from '@stainless-api/docs-ui/src/markdown/utils';
7
+ import { parseStainlessPath, type DocsLanguage } from '@stainless-api/docs-ui/routing';
8
+ import type { EnvironmentType } from '@stainless-api/docs-ui/markdown/utils';
10
9
  import { PROPERTY_SETTINGS, MIDDLEWARE } from 'virtual:stl-starlight-virtual-module';
10
+ import { generateAllDocsRoutes } from '../helpers/generateDocsRoutes';
11
+ import { getSDKJSONInSSR } from '../specs/fetchSpecSSR';
11
12
 
12
13
  type RouteProps = {
13
14
  stainlessPath: string;
@@ -16,17 +17,17 @@ type RouteProps = {
16
17
  };
17
18
 
18
19
  export const getStaticPaths = (async () => {
19
- const spec = await cmsClient.getSpec();
20
- return generateDocsRoutes(spec);
20
+ const paths = await generateAllDocsRoutes();
21
+ return paths;
21
22
  }) satisfies GetStaticPaths;
22
23
 
23
24
  export const GET: APIRoute<RouteProps> = async ({ props }) => {
24
- const spec = await cmsClient.getSpec();
25
+ const spec = await getSDKJSONInSSR(props.language);
25
26
 
26
27
  if (props.kind === 'readme') {
27
28
  const readmeContent = await getReadmeContent(spec, props.language);
28
29
  return new Response(readmeContent, {
29
- headers: { 'Content-Type': 'text/markdown' },
30
+ headers: { 'Content-Type': 'text/plain' },
30
31
  });
31
32
  }
32
33
 
@@ -47,11 +48,11 @@ export const GET: APIRoute<RouteProps> = async ({ props }) => {
47
48
  },
48
49
  };
49
50
 
50
- const target = props.kind === 'http_method' && parsed?.method ? resource.methods[parsed.method] : resource;
51
+ const target = props.kind === 'http_method' && parsed?.method ? resource.methods[parsed.method]! : resource;
51
52
  const output = renderMarkdown(env, target);
52
53
 
53
54
  return new Response(output, {
54
- headers: { 'Content-Type': 'text/markdown' },
55
+ headers: { 'Content-Type': 'text/plain' },
55
56
  });
56
57
  };
57
58