@stainless-api/docs 0.1.0-beta.6 → 0.1.0-beta.60

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