fumadocs-openapi 10.2.2 → 10.2.3

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 (278) hide show
  1. package/dist/generate-file.d.ts +53 -49
  2. package/dist/generate-file.d.ts.map +1 -1
  3. package/dist/generate-file.js +88 -102
  4. package/dist/generate-file.js.map +1 -0
  5. package/dist/index.d.ts +6 -6
  6. package/dist/index.js +3 -1
  7. package/dist/playground/client.d.ts +88 -72
  8. package/dist/playground/client.d.ts.map +1 -1
  9. package/dist/playground/client.js +446 -296
  10. package/dist/playground/client.js.map +1 -0
  11. package/dist/playground/components/inputs.js +395 -172
  12. package/dist/playground/components/inputs.js.map +1 -0
  13. package/dist/playground/components/oauth-dialog.js +270 -174
  14. package/dist/playground/components/oauth-dialog.js.map +1 -0
  15. package/dist/playground/components/server-select.js +115 -55
  16. package/dist/playground/components/server-select.js.map +1 -0
  17. package/dist/playground/fetcher.d.ts +10 -18
  18. package/dist/playground/fetcher.d.ts.map +1 -1
  19. package/dist/playground/fetcher.js +67 -75
  20. package/dist/playground/fetcher.js.map +1 -0
  21. package/dist/playground/get-default-values.js +23 -26
  22. package/dist/playground/get-default-values.js.map +1 -0
  23. package/dist/playground/index.d.ts +23 -13
  24. package/dist/playground/index.d.ts.map +1 -1
  25. package/dist/playground/index.js +87 -91
  26. package/dist/playground/index.js.map +1 -0
  27. package/dist/playground/lazy.js +9 -2
  28. package/dist/playground/lazy.js.map +1 -0
  29. package/dist/playground/schema.d.ts +18 -55
  30. package/dist/playground/schema.d.ts.map +1 -1
  31. package/dist/playground/schema.js +117 -106
  32. package/dist/playground/schema.js.map +1 -0
  33. package/dist/playground/status-info.js +49 -37
  34. package/dist/playground/status-info.js.map +1 -0
  35. package/dist/requests/generators/csharp.js +40 -50
  36. package/dist/requests/generators/csharp.js.map +1 -0
  37. package/dist/requests/generators/curl.js +28 -27
  38. package/dist/requests/generators/curl.js.map +1 -0
  39. package/dist/requests/generators/go.js +39 -35
  40. package/dist/requests/generators/go.js.map +1 -0
  41. package/dist/requests/generators/index.js +49 -43
  42. package/dist/requests/generators/index.js.map +1 -0
  43. package/dist/requests/generators/java.js +56 -67
  44. package/dist/requests/generators/java.js.map +1 -0
  45. package/dist/requests/generators/javascript.js +38 -45
  46. package/dist/requests/generators/javascript.js.map +1 -0
  47. package/dist/requests/generators/python.js +33 -37
  48. package/dist/requests/generators/python.js.map +1 -0
  49. package/dist/requests/media/adapter.d.ts +38 -84
  50. package/dist/requests/media/adapter.d.ts.map +1 -1
  51. package/dist/requests/media/adapter.js +122 -169
  52. package/dist/requests/media/adapter.js.map +1 -0
  53. package/dist/requests/media/encode.d.ts +12 -7
  54. package/dist/requests/media/encode.d.ts.map +1 -1
  55. package/dist/requests/media/encode.js +129 -109
  56. package/dist/requests/media/encode.js.map +1 -0
  57. package/dist/requests/media/resolve-adapter.js +28 -28
  58. package/dist/requests/media/resolve-adapter.js.map +1 -0
  59. package/dist/requests/string-utils.js +28 -35
  60. package/dist/requests/string-utils.js.map +1 -0
  61. package/dist/requests/to-python-object.js +16 -28
  62. package/dist/requests/to-python-object.js.map +1 -0
  63. package/dist/requests/types.d.ts +25 -21
  64. package/dist/requests/types.d.ts.map +1 -1
  65. package/dist/scalar/client.js +57 -20
  66. package/dist/scalar/client.js.map +1 -0
  67. package/dist/scalar/index.d.ts +8 -2
  68. package/dist/scalar/index.d.ts.map +1 -1
  69. package/dist/scalar/index.js +29 -19
  70. package/dist/scalar/index.js.map +1 -0
  71. package/dist/server/create.d.ts +29 -25
  72. package/dist/server/create.d.ts.map +1 -1
  73. package/dist/server/create.js +42 -39
  74. package/dist/server/create.js.map +1 -0
  75. package/dist/server/index.d.ts +3 -3
  76. package/dist/server/index.js +4 -2
  77. package/dist/server/proxy.d.ts +28 -28
  78. package/dist/server/proxy.d.ts.map +1 -1
  79. package/dist/server/proxy.js +58 -75
  80. package/dist/server/proxy.js.map +1 -0
  81. package/dist/server/source-api.d.ts +32 -29
  82. package/dist/server/source-api.d.ts.map +1 -1
  83. package/dist/server/source-api.js +82 -75
  84. package/dist/server/source-api.js.map +1 -0
  85. package/dist/types.d.ts +41 -36
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/ui/api-page.d.ts +140 -136
  88. package/dist/ui/api-page.d.ts.map +1 -1
  89. package/dist/ui/api-page.js +134 -118
  90. package/dist/ui/api-page.js.map +1 -0
  91. package/dist/ui/client/index.d.ts +30 -26
  92. package/dist/ui/client/index.d.ts.map +1 -1
  93. package/dist/ui/client/index.js +8 -2
  94. package/dist/ui/client/index.js.map +1 -0
  95. package/dist/ui/client/storage-key.js +16 -10
  96. package/dist/ui/client/storage-key.js.map +1 -0
  97. package/dist/ui/components/accordion.js +40 -14
  98. package/dist/ui/components/accordion.js.map +1 -0
  99. package/dist/ui/components/dialog.js +51 -15
  100. package/dist/ui/components/dialog.js.map +1 -0
  101. package/dist/ui/components/input.js +18 -8
  102. package/dist/ui/components/input.js.map +1 -0
  103. package/dist/ui/components/method-label.js +38 -33
  104. package/dist/ui/components/method-label.js.map +1 -0
  105. package/dist/ui/components/select.js +66 -15
  106. package/dist/ui/components/select.js.map +1 -0
  107. package/dist/ui/contexts/api.js +96 -85
  108. package/dist/ui/contexts/api.js.map +1 -0
  109. package/dist/ui/contexts/api.lazy.js +9 -2
  110. package/dist/ui/contexts/api.lazy.js.map +1 -0
  111. package/dist/ui/index.d.ts +2 -2
  112. package/dist/ui/index.js +3 -1
  113. package/dist/ui/operation/client.js +65 -27
  114. package/dist/ui/operation/client.js.map +1 -0
  115. package/dist/ui/operation/index.js +403 -186
  116. package/dist/ui/operation/index.js.map +1 -0
  117. package/dist/ui/operation/request-tabs.d.ts +15 -16
  118. package/dist/ui/operation/request-tabs.d.ts.map +1 -1
  119. package/dist/ui/operation/request-tabs.js +151 -131
  120. package/dist/ui/operation/request-tabs.js.map +1 -0
  121. package/dist/ui/operation/response-tabs.d.ts +27 -28
  122. package/dist/ui/operation/response-tabs.d.ts.map +1 -1
  123. package/dist/ui/operation/response-tabs.js +73 -56
  124. package/dist/ui/operation/response-tabs.js.map +1 -0
  125. package/dist/ui/operation/usage-tabs/client.js +117 -88
  126. package/dist/ui/operation/usage-tabs/client.js.map +1 -0
  127. package/dist/ui/operation/usage-tabs/index.d.ts +22 -21
  128. package/dist/ui/operation/usage-tabs/index.d.ts.map +1 -1
  129. package/dist/ui/operation/usage-tabs/index.js +63 -48
  130. package/dist/ui/operation/usage-tabs/index.js.map +1 -0
  131. package/dist/ui/operation/usage-tabs/lazy.js +11 -4
  132. package/dist/ui/operation/usage-tabs/lazy.js.map +1 -0
  133. package/dist/ui/schema/client.d.ts +11 -7
  134. package/dist/ui/schema/client.d.ts.map +1 -1
  135. package/dist/ui/schema/client.js +213 -127
  136. package/dist/ui/schema/client.js.map +1 -0
  137. package/dist/ui/schema/index.d.ts +51 -50
  138. package/dist/ui/schema/index.d.ts.map +1 -1
  139. package/dist/ui/schema/index.js +225 -248
  140. package/dist/ui/schema/index.js.map +1 -0
  141. package/dist/ui/schema/lazy.js +9 -2
  142. package/dist/ui/schema/lazy.js.map +1 -0
  143. package/dist/utils/cn.js +3 -1
  144. package/dist/utils/deep-equal.js +18 -26
  145. package/dist/utils/deep-equal.js.map +1 -0
  146. package/dist/utils/get-typescript-schema.js +21 -19
  147. package/dist/utils/get-typescript-schema.js.map +1 -0
  148. package/dist/utils/id-to-title.js +13 -16
  149. package/dist/utils/id-to-title.js.map +1 -0
  150. package/dist/utils/lazy.js +13 -11
  151. package/dist/utils/lazy.js.map +1 -0
  152. package/dist/utils/merge-schema.js +130 -174
  153. package/dist/utils/merge-schema.js.map +1 -0
  154. package/dist/utils/pages/builder.d.ts +80 -76
  155. package/dist/utils/pages/builder.d.ts.map +1 -1
  156. package/dist/utils/pages/builder.js +101 -118
  157. package/dist/utils/pages/builder.js.map +1 -0
  158. package/dist/utils/pages/preset-auto.d.ts +58 -55
  159. package/dist/utils/pages/preset-auto.d.ts.map +1 -1
  160. package/dist/utils/pages/preset-auto.js +124 -137
  161. package/dist/utils/pages/preset-auto.js.map +1 -0
  162. package/dist/utils/pages/to-body.js +21 -18
  163. package/dist/utils/pages/to-body.js.map +1 -0
  164. package/dist/utils/pages/to-static-data.js +48 -40
  165. package/dist/utils/pages/to-static-data.js.map +1 -0
  166. package/dist/utils/pages/to-text.d.ts +43 -41
  167. package/dist/utils/pages/to-text.d.ts.map +1 -1
  168. package/dist/utils/pages/to-text.js +93 -126
  169. package/dist/utils/pages/to-text.js.map +1 -0
  170. package/dist/utils/process-document.d.ts +18 -19
  171. package/dist/utils/process-document.d.ts.map +1 -1
  172. package/dist/utils/process-document.js +43 -54
  173. package/dist/utils/process-document.js.map +1 -0
  174. package/dist/utils/remove-undefined.js +18 -18
  175. package/dist/utils/remove-undefined.js.map +1 -0
  176. package/dist/utils/schema-to-string.js +46 -64
  177. package/dist/utils/schema-to-string.js.map +1 -0
  178. package/dist/utils/schema.d.ts +11 -27
  179. package/dist/utils/schema.d.ts.map +1 -1
  180. package/dist/utils/schema.js +43 -44
  181. package/dist/utils/schema.js.map +1 -0
  182. package/dist/utils/url.js +35 -56
  183. package/dist/utils/url.js.map +1 -0
  184. package/dist/utils/use-query.js +39 -33
  185. package/dist/utils/use-query.js.map +1 -0
  186. package/package.json +33 -32
  187. package/dist/index.d.ts.map +0 -1
  188. package/dist/playground/components/inputs.d.ts +0 -25
  189. package/dist/playground/components/inputs.d.ts.map +0 -1
  190. package/dist/playground/components/oauth-dialog.d.ts +0 -13
  191. package/dist/playground/components/oauth-dialog.d.ts.map +0 -1
  192. package/dist/playground/components/server-select.d.ts +0 -3
  193. package/dist/playground/components/server-select.d.ts.map +0 -1
  194. package/dist/playground/get-default-values.d.ts +0 -3
  195. package/dist/playground/get-default-values.d.ts.map +0 -1
  196. package/dist/playground/lazy.d.ts +0 -2
  197. package/dist/playground/lazy.d.ts.map +0 -1
  198. package/dist/playground/status-info.d.ts +0 -8
  199. package/dist/playground/status-info.d.ts.map +0 -1
  200. package/dist/requests/generators/csharp.d.ts +0 -3
  201. package/dist/requests/generators/csharp.d.ts.map +0 -1
  202. package/dist/requests/generators/curl.d.ts +0 -3
  203. package/dist/requests/generators/curl.d.ts.map +0 -1
  204. package/dist/requests/generators/go.d.ts +0 -3
  205. package/dist/requests/generators/go.d.ts.map +0 -1
  206. package/dist/requests/generators/index.d.ts +0 -3
  207. package/dist/requests/generators/index.d.ts.map +0 -1
  208. package/dist/requests/generators/java.d.ts +0 -3
  209. package/dist/requests/generators/java.d.ts.map +0 -1
  210. package/dist/requests/generators/javascript.d.ts +0 -3
  211. package/dist/requests/generators/javascript.d.ts.map +0 -1
  212. package/dist/requests/generators/python.d.ts +0 -3
  213. package/dist/requests/generators/python.d.ts.map +0 -1
  214. package/dist/requests/media/resolve-adapter.d.ts +0 -19
  215. package/dist/requests/media/resolve-adapter.d.ts.map +0 -1
  216. package/dist/requests/string-utils.d.ts +0 -7
  217. package/dist/requests/string-utils.d.ts.map +0 -1
  218. package/dist/requests/to-python-object.d.ts +0 -2
  219. package/dist/requests/to-python-object.d.ts.map +0 -1
  220. package/dist/requests/types.js +0 -1
  221. package/dist/scalar/client.d.ts +0 -7
  222. package/dist/scalar/client.d.ts.map +0 -1
  223. package/dist/server/index.d.ts.map +0 -1
  224. package/dist/types.js +0 -1
  225. package/dist/ui/client/storage-key.d.ts +0 -9
  226. package/dist/ui/client/storage-key.d.ts.map +0 -1
  227. package/dist/ui/components/accordion.d.ts +0 -8
  228. package/dist/ui/components/accordion.d.ts.map +0 -1
  229. package/dist/ui/components/dialog.d.ts +0 -20
  230. package/dist/ui/components/dialog.d.ts.map +0 -1
  231. package/dist/ui/components/input.d.ts +0 -6
  232. package/dist/ui/components/input.d.ts.map +0 -1
  233. package/dist/ui/components/method-label.d.ts +0 -10
  234. package/dist/ui/components/method-label.d.ts.map +0 -1
  235. package/dist/ui/components/select.d.ts +0 -14
  236. package/dist/ui/components/select.d.ts.map +0 -1
  237. package/dist/ui/contexts/api.d.ts +0 -33
  238. package/dist/ui/contexts/api.d.ts.map +0 -1
  239. package/dist/ui/contexts/api.lazy.d.ts +0 -2
  240. package/dist/ui/contexts/api.lazy.d.ts.map +0 -1
  241. package/dist/ui/icons.d.ts +0 -49
  242. package/dist/ui/icons.d.ts.map +0 -1
  243. package/dist/ui/icons.js +0 -281
  244. package/dist/ui/index.d.ts.map +0 -1
  245. package/dist/ui/operation/client.d.ts +0 -19
  246. package/dist/ui/operation/client.d.ts.map +0 -1
  247. package/dist/ui/operation/index.d.ts +0 -12
  248. package/dist/ui/operation/index.d.ts.map +0 -1
  249. package/dist/ui/operation/usage-tabs/client.d.ts +0 -23
  250. package/dist/ui/operation/usage-tabs/client.d.ts.map +0 -1
  251. package/dist/ui/operation/usage-tabs/lazy.d.ts +0 -4
  252. package/dist/ui/operation/usage-tabs/lazy.d.ts.map +0 -1
  253. package/dist/ui/schema/lazy.d.ts +0 -2
  254. package/dist/ui/schema/lazy.d.ts.map +0 -1
  255. package/dist/utils/cn.d.ts +0 -2
  256. package/dist/utils/cn.d.ts.map +0 -1
  257. package/dist/utils/deep-equal.d.ts +0 -2
  258. package/dist/utils/deep-equal.d.ts.map +0 -1
  259. package/dist/utils/get-typescript-schema.d.ts +0 -4
  260. package/dist/utils/get-typescript-schema.d.ts.map +0 -1
  261. package/dist/utils/id-to-title.d.ts +0 -2
  262. package/dist/utils/id-to-title.d.ts.map +0 -1
  263. package/dist/utils/lazy.d.ts +0 -5
  264. package/dist/utils/lazy.d.ts.map +0 -1
  265. package/dist/utils/merge-schema.d.ts +0 -7
  266. package/dist/utils/merge-schema.d.ts.map +0 -1
  267. package/dist/utils/pages/to-body.d.ts +0 -4
  268. package/dist/utils/pages/to-body.d.ts.map +0 -1
  269. package/dist/utils/pages/to-static-data.d.ts +0 -10
  270. package/dist/utils/pages/to-static-data.d.ts.map +0 -1
  271. package/dist/utils/remove-undefined.d.ts +0 -2
  272. package/dist/utils/remove-undefined.d.ts.map +0 -1
  273. package/dist/utils/schema-to-string.d.ts +0 -8
  274. package/dist/utils/schema-to-string.d.ts.map +0 -1
  275. package/dist/utils/url.d.ts +0 -11
  276. package/dist/utils/url.d.ts.map +0 -1
  277. package/dist/utils/use-query.d.ts +0 -8
  278. package/dist/utils/use-query.d.ts.map +0 -1
@@ -1,81 +1,88 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { MethodLabel } from '../ui/components/method-label.js';
1
+ import { MethodLabel } from "../ui/components/method-label.js";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+
4
+ //#region src/server/source-api.tsx
3
5
  /**
4
- * Fumadocs Source API integration, pass this to `plugins` array in `loader()`.
5
- */
6
- export function openapiPlugin() {
7
- return {
8
- name: 'fumadocs:openapi',
9
- enforce: 'pre',
10
- transformPageTree: {
11
- file(node, filePath) {
12
- if (!filePath)
13
- return node;
14
- const file = this.storage.read(filePath);
15
- if (!file || file.format !== 'page')
16
- return node;
17
- const openApiData = file.data._openapi;
18
- if (!openApiData || typeof openApiData !== 'object')
19
- return node;
20
- if (openApiData.webhook) {
21
- node.name = (_jsxs(_Fragment, { children: [node.name, ' ', _jsx("span", { className: "ms-auto border border-current px-1 rounded-lg text-xs text-nowrap font-mono", children: "Webhook" })] }));
22
- }
23
- else if (openApiData.method) {
24
- node.name = (_jsxs(_Fragment, { children: [node.name, ' ', _jsx(MethodLabel, { className: "ms-auto text-xs text-nowrap", children: openApiData.method })] }));
25
- }
26
- return node;
27
- },
28
- },
29
- };
6
+ * Fumadocs Source API integration, pass this to `plugins` array in `loader()`.
7
+ */
8
+ function openapiPlugin() {
9
+ return {
10
+ name: "fumadocs:openapi",
11
+ enforce: "pre",
12
+ transformPageTree: { file(node, filePath) {
13
+ if (!filePath) return node;
14
+ const file = this.storage.read(filePath);
15
+ if (!file || file.format !== "page") return node;
16
+ const openApiData = file.data._openapi;
17
+ if (!openApiData || typeof openApiData !== "object") return node;
18
+ if (openApiData.webhook) node.name = /* @__PURE__ */ jsxs(Fragment, { children: [
19
+ node.name,
20
+ " ",
21
+ /* @__PURE__ */ jsx("span", {
22
+ className: "ms-auto border border-current px-1 rounded-lg text-xs text-nowrap font-mono",
23
+ children: "Webhook"
24
+ })
25
+ ] });
26
+ else if (openApiData.method) node.name = /* @__PURE__ */ jsxs(Fragment, { children: [
27
+ node.name,
28
+ " ",
29
+ /* @__PURE__ */ jsx(MethodLabel, {
30
+ className: "ms-auto text-xs text-nowrap",
31
+ children: openApiData.method
32
+ })
33
+ ] });
34
+ return node;
35
+ } }
36
+ };
30
37
  }
31
38
  /**
32
- * Generate virtual pages for Fumadocs Source API
33
- */
34
- export async function openapiSource(server, options = {}) {
35
- const { baseDir = '' } = options;
36
- const { createAutoPreset } = await import('../utils/pages/preset-auto.js');
37
- const { fromServer } = await import('../utils/pages/builder.js');
38
- const { toBody } = await import('../utils/pages/to-body.js');
39
- const { toStaticData } = await import('../utils/pages/to-static-data.js');
40
- const files = [];
41
- const entries = await fromServer(server, createAutoPreset(options));
42
- for (const [schemaId, list] of Object.entries(entries)) {
43
- const processed = await server.getSchema(schemaId);
44
- for (const entry of list) {
45
- const props = toBody(entry);
46
- props.showDescription ?? (props.showDescription = true);
47
- files.push({
48
- type: 'page',
49
- path: `${baseDir}/${entry.path}`,
50
- data: {
51
- ...entry.info,
52
- getAPIPageProps() {
53
- return props;
54
- },
55
- getSchema() {
56
- return {
57
- id: schemaId,
58
- ...processed,
59
- };
60
- },
61
- ...toStaticData(props, processed.dereferenced),
62
- _openapi: {
63
- method: entry.type === 'operation' || entry.type === 'webhook'
64
- ? entry.item.method
65
- : undefined,
66
- webhook: entry.type === 'webhook',
67
- },
68
- },
69
- });
70
- }
71
- }
72
- return {
73
- files,
74
- };
39
+ * Generate virtual pages for Fumadocs Source API
40
+ */
41
+ async function openapiSource(server, options = {}) {
42
+ const { baseDir = "" } = options;
43
+ const { createAutoPreset } = await import("../utils/pages/preset-auto.js");
44
+ const { fromServer } = await import("../utils/pages/builder.js");
45
+ const { toBody } = await import("../utils/pages/to-body.js");
46
+ const { toStaticData } = await import("../utils/pages/to-static-data.js");
47
+ const files = [];
48
+ const entries = await fromServer(server, createAutoPreset(options));
49
+ for (const [schemaId, list] of Object.entries(entries)) {
50
+ const processed = await server.getSchema(schemaId);
51
+ for (const entry of list) {
52
+ const props = toBody(entry);
53
+ props.showDescription ??= true;
54
+ files.push({
55
+ type: "page",
56
+ path: `${baseDir}/${entry.path}`,
57
+ data: {
58
+ ...entry.info,
59
+ getAPIPageProps() {
60
+ return props;
61
+ },
62
+ getSchema() {
63
+ return {
64
+ id: schemaId,
65
+ ...processed
66
+ };
67
+ },
68
+ ...toStaticData(props, processed.dereferenced),
69
+ _openapi: {
70
+ method: entry.type === "operation" || entry.type === "webhook" ? entry.item.method : void 0,
71
+ webhook: entry.type === "webhook"
72
+ }
73
+ }
74
+ });
75
+ }
76
+ }
77
+ return { files };
75
78
  }
76
79
  /**
77
- * @deprecated use `openapiPlugin()`
78
- */
79
- export function transformerOpenAPI() {
80
- return openapiPlugin().transformPageTree;
80
+ * @deprecated use `openapiPlugin()`
81
+ */
82
+ function transformerOpenAPI() {
83
+ return openapiPlugin().transformPageTree;
81
84
  }
85
+
86
+ //#endregion
87
+ export { openapiPlugin, openapiSource, transformerOpenAPI };
88
+ //# sourceMappingURL=source-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-api.js","names":["files: VirtualFile<{\n pageData: OpenAPIPageData;\n metaData: never;\n }>[]"],"sources":["../../src/server/source-api.tsx"],"sourcesContent":["import { MethodLabel } from '@/ui/components/method-label';\nimport type {\n LoaderPlugin,\n PageData,\n PageTreeTransformer,\n Source,\n VirtualFile,\n} from 'fumadocs-core/source';\nimport type { OpenAPIServer } from '@/server/create';\nimport type { SchemaToPagesOptions } from '@/utils/pages/preset-auto';\nimport type { ApiPageProps } from '@/ui/api-page';\nimport type { StructuredData } from 'fumadocs-core/mdx-plugins';\nimport type { TOCItemType } from 'fumadocs-core/toc';\nimport type { ProcessedDocument } from '@/utils/process-document';\n\ndeclare module 'fumadocs-core/source' {\n export interface PageData {\n /**\n * Added by Fumadocs OpenAPI\n */\n _openapi?: InternalOpenAPIMeta;\n }\n}\n\nexport interface InternalOpenAPIMeta {\n method?: string;\n webhook?: boolean;\n}\n\n/**\n * Fumadocs Source API integration, pass this to `plugins` array in `loader()`.\n */\nexport function openapiPlugin(): LoaderPlugin {\n return {\n name: 'fumadocs:openapi',\n enforce: 'pre',\n transformPageTree: {\n file(node, filePath) {\n if (!filePath) return node;\n const file = this.storage.read(filePath);\n if (!file || file.format !== 'page') return node;\n\n const openApiData = file.data._openapi;\n if (!openApiData || typeof openApiData !== 'object') return node;\n\n if (openApiData.webhook) {\n node.name = (\n <>\n {node.name}{' '}\n <span className=\"ms-auto border border-current px-1 rounded-lg text-xs text-nowrap font-mono\">\n Webhook\n </span>\n </>\n );\n } else if (openApiData.method) {\n node.name = (\n <>\n {node.name}{' '}\n <MethodLabel className=\"ms-auto text-xs text-nowrap\">\n {openApiData.method}\n </MethodLabel>\n </>\n );\n }\n\n return node;\n },\n },\n };\n}\n\ninterface OpenAPIPageData extends PageData {\n getAPIPageProps: () => ApiPageProps;\n getSchema: () => { id: string } & ProcessedDocument;\n structuredData: StructuredData;\n toc: TOCItemType[];\n}\n\n/**\n * Generate virtual pages for Fumadocs Source API\n */\nexport async function openapiSource(\n server: OpenAPIServer,\n options: SchemaToPagesOptions & {\n baseDir?: string;\n } = {},\n): Promise<\n Source<{\n metaData: never;\n pageData: OpenAPIPageData;\n }>\n> {\n const { baseDir = '' } = options;\n const { createAutoPreset } = await import('@/utils/pages/preset-auto');\n const { fromServer } = await import('@/utils/pages/builder');\n const { toBody } = await import('@/utils/pages/to-body');\n const { toStaticData } = await import('@/utils/pages/to-static-data');\n const files: VirtualFile<{\n pageData: OpenAPIPageData;\n metaData: never;\n }>[] = [];\n\n const entries = await fromServer(server, createAutoPreset(options));\n for (const [schemaId, list] of Object.entries(entries)) {\n const processed = await server.getSchema(schemaId);\n for (const entry of list) {\n const props = toBody(entry);\n props.showDescription ??= true;\n\n files.push({\n type: 'page',\n path: `${baseDir}/${entry.path}`,\n data: {\n ...entry.info,\n getAPIPageProps() {\n return props;\n },\n getSchema() {\n return {\n id: schemaId,\n ...processed,\n };\n },\n ...toStaticData(props, processed.dereferenced),\n _openapi: {\n method:\n entry.type === 'operation' || entry.type === 'webhook'\n ? entry.item.method\n : undefined,\n webhook: entry.type === 'webhook',\n },\n },\n });\n }\n }\n\n return {\n files,\n };\n}\n\n/**\n * @deprecated use `openapiPlugin()`\n */\nexport function transformerOpenAPI(): PageTreeTransformer {\n return openapiPlugin().transformPageTree!;\n}\n"],"mappings":";;;;;;;AAgCA,SAAgB,gBAA8B;AAC5C,QAAO;EACL,MAAM;EACN,SAAS;EACT,mBAAmB,EACjB,KAAK,MAAM,UAAU;AACnB,OAAI,CAAC,SAAU,QAAO;GACtB,MAAM,OAAO,KAAK,QAAQ,KAAK,SAAS;AACxC,OAAI,CAAC,QAAQ,KAAK,WAAW,OAAQ,QAAO;GAE5C,MAAM,cAAc,KAAK,KAAK;AAC9B,OAAI,CAAC,eAAe,OAAO,gBAAgB,SAAU,QAAO;AAE5D,OAAI,YAAY,QACd,MAAK,OACH;IACG,KAAK;IAAM;IACZ,oBAAC;KAAK,WAAU;eAA8E;MAEvF;OACN;YAEI,YAAY,OACrB,MAAK,OACH;IACG,KAAK;IAAM;IACZ,oBAAC;KAAY,WAAU;eACpB,YAAY;MACD;OACb;AAIP,UAAO;KAEV;EACF;;;;;AAaH,eAAsB,cACpB,QACA,UAEI,EAAE,EAMN;CACA,MAAM,EAAE,UAAU,OAAO;CACzB,MAAM,EAAE,qBAAqB,MAAM,OAAO;CAC1C,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,MAAM,EAAE,WAAW,MAAM,OAAO;CAChC,MAAM,EAAE,iBAAiB,MAAM,OAAO;CACtC,MAAMA,QAGC,EAAE;CAET,MAAM,UAAU,MAAM,WAAW,QAAQ,iBAAiB,QAAQ,CAAC;AACnE,MAAK,MAAM,CAAC,UAAU,SAAS,OAAO,QAAQ,QAAQ,EAAE;EACtD,MAAM,YAAY,MAAM,OAAO,UAAU,SAAS;AAClD,OAAK,MAAM,SAAS,MAAM;GACxB,MAAM,QAAQ,OAAO,MAAM;AAC3B,SAAM,oBAAoB;AAE1B,SAAM,KAAK;IACT,MAAM;IACN,MAAM,GAAG,QAAQ,GAAG,MAAM;IAC1B,MAAM;KACJ,GAAG,MAAM;KACT,kBAAkB;AAChB,aAAO;;KAET,YAAY;AACV,aAAO;OACL,IAAI;OACJ,GAAG;OACJ;;KAEH,GAAG,aAAa,OAAO,UAAU,aAAa;KAC9C,UAAU;MACR,QACE,MAAM,SAAS,eAAe,MAAM,SAAS,YACzC,MAAM,KAAK,SACX;MACN,SAAS,MAAM,SAAS;MACzB;KACF;IACF,CAAC;;;AAIN,QAAO,EACL,OACD;;;;;AAMH,SAAgB,qBAA0C;AACxD,QAAO,eAAe,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,39 +1,44 @@
1
- import type { OpenAPIV3_1 as V3_1 } from 'openapi-types';
2
- import type { default as Slugger } from 'github-slugger';
3
- import type { NoReference } from './utils/schema.js';
4
- import type { ProcessedDocument } from './utils/process-document.js';
5
- import type { MediaAdapter } from './requests/media/adapter.js';
6
- import type { OpenAPIOptions } from './server/index.js';
7
- import type { CreateAPIPageOptions } from './ui/api-page.js';
8
- import type { CodeUsageGenerator } from './ui/operation/usage-tabs/index.js';
9
- import type { HTMLAttributes, ReactNode } from 'react';
10
- export type Document = V3_1.Document;
11
- export type OperationObject = V3_1.OperationObject;
12
- export type ParameterObject = V3_1.ParameterObject;
13
- export type SecuritySchemeObject = V3_1.SecuritySchemeObject;
14
- export type ReferenceObject = V3_1.ReferenceObject;
15
- export type PathItemObject = V3_1.PathItemObject;
16
- export type TagObject = V3_1.TagObject;
17
- export type ServerObject = V3_1.ServerObject;
18
- export type CallbackObject = V3_1.CallbackObject;
19
- export type ServerVariableObject = V3_1.ServerVariableObject;
20
- export type ResponseObject = V3_1.ResponseObject;
21
- export type MethodInformation = NoReference<OperationObject> & {
22
- method: string;
23
- 'x-codeSamples'?: Omit<CodeUsageGenerator, 'id'>[];
24
- 'x-selectedCodeSample'?: string;
25
- 'x-exclusiveCodeSample'?: string;
1
+ import { NoReference } from "./utils/schema.js";
2
+ import { MediaAdapter } from "./requests/media/adapter.js";
3
+ import { CodeUsageGenerator } from "./ui/operation/usage-tabs/index.js";
4
+ import { OpenAPIOptions } from "./server/create.js";
5
+ import { CreateAPIPageOptions } from "./ui/api-page.js";
6
+ import "./server/index.js";
7
+ import { ProcessedDocument } from "./utils/process-document.js";
8
+ import Slugger from "github-slugger";
9
+ import { HTMLAttributes, ReactNode } from "react";
10
+ import { OpenAPIV3_1 } from "openapi-types";
11
+
12
+ //#region src/types.d.ts
13
+ type Document = OpenAPIV3_1.Document;
14
+ type OperationObject = OpenAPIV3_1.OperationObject;
15
+ type ParameterObject = OpenAPIV3_1.ParameterObject;
16
+ type SecuritySchemeObject = OpenAPIV3_1.SecuritySchemeObject;
17
+ type ReferenceObject = OpenAPIV3_1.ReferenceObject;
18
+ type PathItemObject = OpenAPIV3_1.PathItemObject;
19
+ type TagObject = OpenAPIV3_1.TagObject;
20
+ type ServerObject = OpenAPIV3_1.ServerObject;
21
+ type CallbackObject = OpenAPIV3_1.CallbackObject;
22
+ type ServerVariableObject = OpenAPIV3_1.ServerVariableObject;
23
+ type ResponseObject = OpenAPIV3_1.ResponseObject;
24
+ type MethodInformation = NoReference<OperationObject> & {
25
+ method: string;
26
+ 'x-codeSamples'?: Omit<CodeUsageGenerator, 'id'>[];
27
+ 'x-selectedCodeSample'?: string;
28
+ 'x-exclusiveCodeSample'?: string;
26
29
  };
27
- export interface RenderContext extends Pick<OpenAPIOptions, 'proxyUrl'>, CreateAPIPageOptions {
28
- servers: NoReference<ServerObject>[];
29
- slugger: Slugger;
30
- /**
31
- * dereferenced schema
32
- */
33
- schema: ProcessedDocument;
34
- mediaAdapters: Record<string, MediaAdapter>;
35
- renderHeading: (depth: number, text: string, props?: HTMLAttributes<HTMLHeadingElement>) => ReactNode;
36
- renderMarkdown: (text: string) => ReactNode;
37
- renderCodeBlock: (lang: string, code: string) => ReactNode;
30
+ interface RenderContext extends Pick<OpenAPIOptions, 'proxyUrl'>, CreateAPIPageOptions {
31
+ servers: NoReference<ServerObject>[];
32
+ slugger: Slugger;
33
+ /**
34
+ * dereferenced schema
35
+ */
36
+ schema: ProcessedDocument;
37
+ mediaAdapters: Record<string, MediaAdapter>;
38
+ renderHeading: (depth: number, text: string, props?: HTMLAttributes<HTMLHeadingElement>) => ReactNode;
39
+ renderMarkdown: (text: string) => ReactNode;
40
+ renderCodeBlock: (lang: string, code: string) => ReactNode;
38
41
  }
42
+ //#endregion
43
+ export { CallbackObject, Document, MethodInformation, OperationObject, ParameterObject, PathItemObject, ReferenceObject, RenderContext, ResponseObject, SecuritySchemeObject, ServerObject, ServerVariableObject, TagObject };
39
44
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACjD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACvC,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7C,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACjD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC;IACnD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,oBAAoB;IAC9D,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,iBAAiB,CAAC;IAE1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE5C,aAAa,EAAE,CACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,cAAc,CAAC,kBAAkB,CAAC,KACvC,SAAS,CAAC;IACf,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAC5C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;CAC5D"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAUY,QAAA,GAAW,WAAA,CAAK;KAChB,eAAA,GAAkB,WAAA,CAAK;KACvB,eAAA,GAAkB,WAAA,CAAK;AAFvB,KAGA,oBAAA,GAAuB,WAAA,CAAK,oBAHJ;AACxB,KAGA,eAAA,GAAkB,WAAA,CAAK,eAHA;AACvB,KAGA,cAAA,GAAiB,WAAA,CAAK,cAHC;AACvB,KAGA,SAAA,GAAY,WAAA,CAAK,SAHG;AACpB,KAGA,YAAA,GAAe,WAAA,CAAK,YAHF;AAClB,KAGA,cAAA,GAAiB,WAAA,CAAK,cAHA;AACtB,KAGA,oBAAA,GAAuB,WAAA,CAAK,oBAHF;AAC1B,KAGA,cAAA,GAAiB,WAAA,CAAK,cAHF;AACpB,KAIA,iBAAA,GAAoB,WAJH,CAIe,eAJV,CAAc,GAAA;EACpC,MAAA,EAAA,MAAA;EACA,eAAA,CAAA,EAIQ,IAJM,CAID,kBAJS,EAAA,IAAA,CAAA,EAAA;EAEtB,sBAAiB,CAAA,EAAA,MAAA;EAAe,uBAAA,CAAA,EAAA,MAAA;CAAZ;AAEP,UAKR,aAAA,SAAsB,IALd,CAKmB,cALnB,EAAA,UAAA,CAAA,EAKgD,oBALhD,CAAA;EAAL,OAAA,EAMT,WANS,CAMG,YANH,CAAA,EAAA;EAAI,OAAA,EAOb,OAPa;EAKP;;;EACN,MAAA,EAMD,iBANC;EACA,aAAA,EAOM,MAPN,CAAA,MAAA,EAOqB,YAPrB,CAAA;EAKD,aAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAOE,cAPF,CAOiB,kBAPjB,CAAA,EAAA,GAQH,SARG;EAEsB,cAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAOI,SAPJ;EAAf,eAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAQkC,SARlC"}
@@ -1,153 +1,157 @@
1
- import type { MethodInformation, RenderContext } from '../types.js';
2
- import { type NoReference } from '../utils/schema.js';
3
- import type { OpenAPIV3_1 } from 'openapi-types';
4
- import type { ProcessedDocument } from '../utils/process-document.js';
5
- import { MediaAdapter } from '../requests/media/adapter.js';
6
- import type { FC, ReactNode } from 'react';
7
- import { type HighlightOptionsCommon, type HighlightOptionsThemes } from 'fumadocs-core/highlight';
8
- import type { OpenAPIServer } from '../server/index.js';
9
- import type { APIPageClientOptions } from './client/index.js';
10
- import type { CodeUsageGenerator } from './operation/usage-tabs/index.js';
11
- import type { SchemaUIOptions } from './schema/index.js';
12
- import type { ResponseTab } from './operation/response-tabs.js';
13
- import type { ExampleRequestItem } from './operation/request-tabs.js';
1
+ import { NoReference } from "../utils/schema.js";
2
+ import { MediaAdapter } from "../requests/media/adapter.js";
3
+ import { CodeUsageGenerator } from "./operation/usage-tabs/index.js";
4
+ import { OpenAPIServer } from "../server/create.js";
5
+ import { ExampleRequestItem } from "./operation/request-tabs.js";
6
+ import { APIPageClientOptions } from "./client/index.js";
7
+ import { SchemaUIOptions } from "./schema/index.js";
8
+ import { ResponseTab } from "./operation/response-tabs.js";
9
+ import "../server/index.js";
10
+ import { MethodInformation, RenderContext } from "../types.js";
11
+ import { ProcessedDocument } from "../utils/process-document.js";
12
+ import { FC, ReactNode } from "react";
13
+ import { HighlightOptionsCommon, HighlightOptionsThemes } from "fumadocs-core/highlight";
14
+ import { OpenAPIV3_1 } from "openapi-types";
15
+
16
+ //#region src/ui/api-page.d.ts
14
17
  type Awaitable<T> = T | Promise<T>;
15
- export interface CreateAPIPageOptions {
18
+ interface CreateAPIPageOptions {
19
+ /**
20
+ * Generate TypeScript definitions from response schema.
21
+ *
22
+ * Pass `false` to disable it.
23
+ *
24
+ * @param method - the operation object
25
+ * @param statusCode - status code
26
+ */
27
+ generateTypeScriptSchema?: ((method: NoReference<MethodInformation>, statusCode: string) => Awaitable<string>) | false;
28
+ /**
29
+ * Generate example code usage for endpoints.
30
+ */
31
+ generateCodeSamples?: (method: MethodInformation) => Awaitable<CodeUsageGenerator[]>;
32
+ shikiOptions?: Omit<HighlightOptionsCommon, 'lang' | 'components'> & HighlightOptionsThemes;
33
+ /**
34
+ * Show full response schema instead of only example response & Typescript definitions.
35
+ *
36
+ * @default true
37
+ */
38
+ showResponseSchema?: boolean;
39
+ /**
40
+ * Support other media types (for server-side generation).
41
+ */
42
+ mediaAdapters?: Record<string, MediaAdapter>;
43
+ /**
44
+ * Customise page content
45
+ */
46
+ content?: {
47
+ renderResponseTabs?: (tabs: ResponseTab[], ctx: RenderContext) => Awaitable<ReactNode>;
48
+ renderRequestTabs?: (items: ExampleRequestItem[], ctx: RenderContext & {
49
+ route: string;
50
+ operation: NoReference<MethodInformation>;
51
+ }) => Awaitable<ReactNode>;
52
+ renderAPIExampleLayout?: (slots: {
53
+ selector: ReactNode;
54
+ usageTabs: ReactNode;
55
+ responseTabs: ReactNode;
56
+ }, ctx: RenderContext) => Awaitable<ReactNode>;
16
57
  /**
17
- * Generate TypeScript definitions from response schema.
18
- *
19
- * Pass `false` to disable it.
20
- *
21
- * @param method - the operation object
22
- * @param statusCode - status code
58
+ * @param generators - codegens for API example usages
23
59
  */
24
- generateTypeScriptSchema?: ((method: NoReference<MethodInformation>, statusCode: string) => Awaitable<string>) | false;
60
+ renderAPIExampleUsageTabs?: (generators: CodeUsageGenerator[], ctx: RenderContext) => Awaitable<ReactNode>;
25
61
  /**
26
- * Generate example code usage for endpoints.
62
+ * renderer of the entire page's layout (containing all operations & webhooks UI)
27
63
  */
28
- generateCodeSamples?: (method: MethodInformation) => Awaitable<CodeUsageGenerator[]>;
29
- shikiOptions?: Omit<HighlightOptionsCommon, 'lang' | 'components'> & HighlightOptionsThemes;
64
+ renderPageLayout?: (slots: {
65
+ operations?: {
66
+ item: OperationItem;
67
+ children: ReactNode;
68
+ }[];
69
+ webhooks?: {
70
+ item: WebhookItem;
71
+ children: ReactNode;
72
+ }[];
73
+ }, ctx: RenderContext) => Awaitable<ReactNode>;
74
+ renderOperationLayout?: (slots: {
75
+ header: ReactNode;
76
+ description: ReactNode;
77
+ apiExample: ReactNode;
78
+ apiPlayground: ReactNode;
79
+ authSchemes: ReactNode;
80
+ paremeters: ReactNode;
81
+ body: ReactNode;
82
+ responses: ReactNode;
83
+ callbacks: ReactNode;
84
+ }, ctx: RenderContext, method: NoReference<MethodInformation>) => Awaitable<ReactNode>;
85
+ renderWebhookLayout?: (slots: {
86
+ header: ReactNode;
87
+ description: ReactNode;
88
+ authSchemes: ReactNode;
89
+ paremeters: ReactNode;
90
+ body: ReactNode;
91
+ requests: ReactNode;
92
+ responses: ReactNode;
93
+ callbacks: ReactNode;
94
+ }) => Awaitable<ReactNode>;
95
+ };
96
+ /**
97
+ * Info UI for JSON schemas
98
+ */
99
+ schemaUI?: {
100
+ render?: (options: SchemaUIOptions, ctx: RenderContext) => Awaitable<ReactNode>;
30
101
  /**
31
- * Show full response schema instead of only example response & Typescript definitions.
102
+ * Show examples under the generated content of JSON schemas.
32
103
  *
33
- * @default true
34
- */
35
- showResponseSchema?: boolean;
36
- /**
37
- * Support other media types (for server-side generation).
104
+ * @defaultValue false
38
105
  */
39
- mediaAdapters?: Record<string, MediaAdapter>;
106
+ showExample?: boolean;
107
+ };
108
+ /**
109
+ * Customise API playground
110
+ */
111
+ playground?: {
40
112
  /**
41
- * Customise page content
113
+ * @defaultValue true
42
114
  */
43
- content?: {
44
- renderResponseTabs?: (tabs: ResponseTab[], ctx: RenderContext) => Awaitable<ReactNode>;
45
- renderRequestTabs?: (items: ExampleRequestItem[], ctx: RenderContext & {
46
- route: string;
47
- operation: NoReference<MethodInformation>;
48
- }) => Awaitable<ReactNode>;
49
- renderAPIExampleLayout?: (slots: {
50
- selector: ReactNode;
51
- usageTabs: ReactNode;
52
- responseTabs: ReactNode;
53
- }, ctx: RenderContext) => Awaitable<ReactNode>;
54
- /**
55
- * @param generators - codegens for API example usages
56
- */
57
- renderAPIExampleUsageTabs?: (generators: CodeUsageGenerator[], ctx: RenderContext) => Awaitable<ReactNode>;
58
- /**
59
- * renderer of the entire page's layout (containing all operations & webhooks UI)
60
- */
61
- renderPageLayout?: (slots: {
62
- operations?: {
63
- item: OperationItem;
64
- children: ReactNode;
65
- }[];
66
- webhooks?: {
67
- item: WebhookItem;
68
- children: ReactNode;
69
- }[];
70
- }, ctx: RenderContext) => Awaitable<ReactNode>;
71
- renderOperationLayout?: (slots: {
72
- header: ReactNode;
73
- description: ReactNode;
74
- apiExample: ReactNode;
75
- apiPlayground: ReactNode;
76
- authSchemes: ReactNode;
77
- paremeters: ReactNode;
78
- body: ReactNode;
79
- responses: ReactNode;
80
- callbacks: ReactNode;
81
- }, ctx: RenderContext, method: NoReference<MethodInformation>) => Awaitable<ReactNode>;
82
- renderWebhookLayout?: (slots: {
83
- header: ReactNode;
84
- description: ReactNode;
85
- authSchemes: ReactNode;
86
- paremeters: ReactNode;
87
- body: ReactNode;
88
- requests: ReactNode;
89
- responses: ReactNode;
90
- callbacks: ReactNode;
91
- }) => Awaitable<ReactNode>;
92
- };
115
+ enabled?: boolean;
93
116
  /**
94
- * Info UI for JSON schemas
117
+ * replace the server-side renderer
95
118
  */
96
- schemaUI?: {
97
- render?: (options: SchemaUIOptions, ctx: RenderContext) => Awaitable<ReactNode>;
98
- /**
99
- * Show examples under the generated content of JSON schemas.
100
- *
101
- * @defaultValue false
102
- */
103
- showExample?: boolean;
104
- };
105
- /**
106
- * Customise API playground
107
- */
108
- playground?: {
109
- /**
110
- * @defaultValue true
111
- */
112
- enabled?: boolean;
113
- /**
114
- * replace the server-side renderer
115
- */
116
- render?: (props: {
117
- path: string;
118
- method: MethodInformation;
119
- ctx: RenderContext;
120
- }) => Awaitable<ReactNode>;
121
- };
122
- client?: APIPageClientOptions;
119
+ render?: (props: {
120
+ path: string;
121
+ method: MethodInformation;
122
+ ctx: RenderContext;
123
+ }) => Awaitable<ReactNode>;
124
+ };
125
+ client?: APIPageClientOptions;
123
126
  }
124
- export interface ApiPageProps {
125
- document: Promise<ProcessedDocument> | string | ProcessedDocument;
126
- showTitle?: boolean;
127
- showDescription?: boolean;
128
- /**
129
- * An array of operations
130
- */
131
- operations?: OperationItem[];
132
- webhooks?: WebhookItem[];
127
+ interface ApiPageProps {
128
+ document: Promise<ProcessedDocument> | string | ProcessedDocument;
129
+ showTitle?: boolean;
130
+ showDescription?: boolean;
131
+ /**
132
+ * An array of operations
133
+ */
134
+ operations?: OperationItem[];
135
+ webhooks?: WebhookItem[];
133
136
  }
134
- export interface WebhookItem {
135
- /**
136
- * webhook name in `webhooks`
137
- */
138
- name: string;
139
- method: OpenAPIV3_1.HttpMethods;
137
+ interface WebhookItem {
138
+ /**
139
+ * webhook name in `webhooks`
140
+ */
141
+ name: string;
142
+ method: OpenAPIV3_1.HttpMethods;
140
143
  }
141
- export interface OperationItem {
142
- /**
143
- * the path of operation in `paths`
144
- */
145
- path: string;
146
- /**
147
- * the HTTP method of operation
148
- */
149
- method: OpenAPIV3_1.HttpMethods;
144
+ interface OperationItem {
145
+ /**
146
+ * the path of operation in `paths`
147
+ */
148
+ path: string;
149
+ /**
150
+ * the HTTP method of operation
151
+ */
152
+ method: OpenAPIV3_1.HttpMethods;
150
153
  }
151
- export declare function createAPIPage(server: OpenAPIServer, options?: CreateAPIPageOptions): FC<ApiPageProps>;
152
- export {};
154
+ declare function createAPIPage(server: OpenAPIServer, options?: CreateAPIPageOptions): FC<ApiPageProps>;
155
+ //#endregion
156
+ export { ApiPageProps, CreateAPIPageOptions, OperationItem, WebhookItem, createAPIPage };
153
157
  //# sourceMappingURL=api-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-page.d.ts","sourceRoot":"","sources":["../../src/ui/api-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-page.d.ts","names":[],"sources":["../../src/ui/api-page.tsx"],"sourcesContent":[],"mappings":"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"}