fumadocs-openapi 10.2.1 → 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 -25
  82. package/dist/server/source-api.d.ts.map +1 -1
  83. package/dist/server/source-api.js +82 -69
  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 +35 -34
  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,8 +1,14 @@
1
- import type { CreateAPIPageOptions } from '../ui/index.js';
1
+ import { CreateAPIPageOptions } from "../ui/api-page.js";
2
+ import "../ui/index.js";
3
+
4
+ //#region src/scalar/index.d.ts
5
+
2
6
  /**
3
7
  * Enable Scalar for API playgrounds by wrapping your options inside.
4
8
  *
5
9
  * Requires `@scalar/api-client-react` to be installed, it imports the styles automatically.
6
10
  */
7
- export declare function withScalar(options?: CreateAPIPageOptions): CreateAPIPageOptions;
11
+ declare function withScalar(options?: CreateAPIPageOptions): CreateAPIPageOptions;
12
+ //#endregion
13
+ export { withScalar };
8
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scalar/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AAmBjD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,GAAE,oBAAyB,GACjC,oBAAoB,CAUtB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/scalar/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;AAuBA;;iBAAgB,UAAA,WAAoB,uBAA4B"}
@@ -1,22 +1,32 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { lazy } from 'react';
3
- const Client = lazy(() => import('./client.js'));
4
- function APIPlayground({ path, method, ctx, }) {
5
- return (_jsx(Client, { method: method.method, path: path, spec: ctx.schema.bundled }));
1
+ import { lazy } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+
4
+ //#region src/scalar/index.tsx
5
+ const Client = lazy(() => import("./client.js"));
6
+ function APIPlayground({ path, method, ctx }) {
7
+ return /* @__PURE__ */ jsx(Client, {
8
+ method: method.method,
9
+ path,
10
+ spec: ctx.schema.bundled
11
+ });
6
12
  }
7
13
  /**
8
- * Enable Scalar for API playgrounds by wrapping your options inside.
9
- *
10
- * Requires `@scalar/api-client-react` to be installed, it imports the styles automatically.
11
- */
12
- export function withScalar(options = {}) {
13
- return {
14
- ...options,
15
- playground: {
16
- ...options.playground,
17
- render(props) {
18
- return _jsx(APIPlayground, { ...props });
19
- },
20
- },
21
- };
14
+ * Enable Scalar for API playgrounds by wrapping your options inside.
15
+ *
16
+ * Requires `@scalar/api-client-react` to be installed, it imports the styles automatically.
17
+ */
18
+ function withScalar(options = {}) {
19
+ return {
20
+ ...options,
21
+ playground: {
22
+ ...options.playground,
23
+ render(props) {
24
+ return /* @__PURE__ */ jsx(APIPlayground, { ...props });
25
+ }
26
+ }
27
+ };
22
28
  }
29
+
30
+ //#endregion
31
+ export { withScalar };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/scalar/index.tsx"],"sourcesContent":["import type { MethodInformation, RenderContext } from '@/types';\nimport type { CreateAPIPageOptions } from '@/ui';\nimport { lazy } from 'react';\n\nconst Client = lazy(() => import('./client'));\n\nfunction APIPlayground({\n path,\n method,\n ctx,\n}: {\n path: string;\n method: MethodInformation;\n ctx: RenderContext;\n}) {\n return <Client method={method.method} path={path} spec={ctx.schema.bundled} />;\n}\n\n/**\n * Enable Scalar for API playgrounds by wrapping your options inside.\n *\n * Requires `@scalar/api-client-react` to be installed, it imports the styles automatically.\n */\nexport function withScalar(options: CreateAPIPageOptions = {}): CreateAPIPageOptions {\n return {\n ...options,\n playground: {\n ...options.playground,\n render(props) {\n return <APIPlayground {...props} />;\n },\n },\n };\n}\n"],"mappings":";;;;AAIA,MAAM,SAAS,WAAW,OAAO,eAAY;AAE7C,SAAS,cAAc,EACrB,MACA,QACA,OAKC;AACD,QAAO,oBAAC;EAAO,QAAQ,OAAO;EAAc;EAAM,MAAM,IAAI,OAAO;GAAW;;;;;;;AAQhF,SAAgB,WAAW,UAAgC,EAAE,EAAwB;AACnF,QAAO;EACL,GAAG;EACH,YAAY;GACV,GAAG,QAAQ;GACX,OAAO,OAAO;AACZ,WAAO,oBAAC,iBAAc,GAAI,QAAS;;GAEtC;EACF"}
@@ -1,33 +1,37 @@
1
- import { createProxy } from '../server/proxy.js';
2
- import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
3
- import { type ProcessedDocument } from '../utils/process-document.js';
4
- import type { CodeUsageGenerator } from '../ui/operation/usage-tabs/index.js';
1
+ import { createProxy } from "./proxy.js";
2
+ import { CodeUsageGenerator } from "../ui/operation/usage-tabs/index.js";
3
+ import { ProcessedDocument } from "../utils/process-document.js";
4
+ import { OpenAPIV3, OpenAPIV3_1 } from "openapi-types";
5
+
6
+ //#region src/server/create.d.ts
7
+
5
8
  /**
6
9
  * schema id -> file path, URL, or downloaded schema object
7
10
  */
8
11
  type SchemaMap = Record<string, string | OpenAPIV3_1.Document | OpenAPIV3.Document>;
9
12
  type ProcessedSchemaMap = Record<string, ProcessedDocument>;
10
- export interface OpenAPIOptions {
11
- /**
12
- * Schema files, can be:
13
- * - URL
14
- * - file path
15
- * - a function returning records of downloaded schemas.
16
- */
17
- input?: string[] | (() => SchemaMap | Promise<SchemaMap>);
18
- disableCache?: boolean;
19
- /**
20
- * The url of proxy to avoid CORS issues
21
- */
22
- proxyUrl?: string;
13
+ interface OpenAPIOptions {
14
+ /**
15
+ * Schema files, can be:
16
+ * - URL
17
+ * - file path
18
+ * - a function returning records of downloaded schemas.
19
+ */
20
+ input?: string[] | (() => SchemaMap | Promise<SchemaMap>);
21
+ disableCache?: boolean;
22
+ /**
23
+ * The url of proxy to avoid CORS issues
24
+ */
25
+ proxyUrl?: string;
23
26
  }
24
- export interface OpenAPIServer {
25
- createProxy: typeof createProxy;
26
- getSchemas: () => Promise<ProcessedSchemaMap>;
27
- getSchema: (document: string) => Promise<ProcessedDocument>;
28
- readonly options: OpenAPIOptions;
27
+ interface OpenAPIServer {
28
+ createProxy: typeof createProxy;
29
+ getSchemas: () => Promise<ProcessedSchemaMap>;
30
+ getSchema: (document: string) => Promise<ProcessedDocument>;
31
+ readonly options: OpenAPIOptions;
29
32
  }
30
- export declare function createOpenAPI(options?: OpenAPIOptions): OpenAPIServer;
31
- export declare function createCodeSample<T>(options: Partial<CodeUsageGenerator<T>>): CodeUsageGenerator;
32
- export {};
33
+ declare function createOpenAPI(options?: OpenAPIOptions): OpenAPIServer;
34
+ declare function createCodeSample<T>(options: Partial<CodeUsageGenerator<T>>): CodeUsageGenerator;
35
+ //#endregion
36
+ export { OpenAPIOptions, OpenAPIServer, createCodeSample, createOpenAPI };
33
37
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/server/create.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;GAEG;AACH,KAAK,SAAS,GAAG,MAAM,CACrB,MAAM,EACN,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CACnD,CAAC;AACF,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,UAAU,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CA2CzE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACtC,kBAAkB,CAQpB"}
1
+ {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/server/create.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;AAGoE;KAK/D,SAAA,GAAY,MAAoC,CAAA,MAAA,EAAA,MAAA,GAAZ,WAAA,CAAY,QAAA,GAAW,SAAA,CAAU,QAArB,CAAA;KAChD,kBAAA,GAAqB,MADgD,CAAA,MAAA,EACjC,iBADiC,CAAA;AAAzD,UAGA,cAAA,CAHA;EAAM;AAAA;AAGvB;;;;EAO+C,KAAA,CAAA,EAAA,MAAA,EAAA,GAAA,CAAA,GAAA,GAAnB,SAAmB,GAAP,OAAO,CAAC,SAAD,CAAA,CAAA;EAU9B,YAAA,CAAA,EAAA,OAAa;EACR;;;EAEqB,QAAA,CAAA,EAAA,MAAA;;AACvB,UAJH,aAAA,CAIG;EAAc,WAAA,EAAA,OAHZ,WAGY;EAGlB,UAAA,EAAA,GAAA,GALI,OAKS,CALD,kBAKiC,CAAA;EA6C7C,SAAA,EAAA,CAAA,QAAgB,EAAA,MAAA,EAAA,GAjDG,OAiDH,CAjDW,iBAiDX,CAAA;EAAwC,SAAA,OAAA,EAhDpD,cAgDoD;;AAA3B,iBA7C7B,aAAA,CA6C6B,OAAA,CAAA,EA7CN,cA6CM,CAAA,EA7CgB,aA6ChB;AAAiC,iBAA9D,gBAA8D,CAAA,CAAA,CAAA,CAAA,OAAA,EAAjC,OAAiC,CAAzB,kBAAyB,CAAN,CAAM,CAAA,CAAA,CAAA,EAAA,kBAAA"}
@@ -1,41 +1,44 @@
1
- import { createProxy } from '../server/proxy.js';
2
- import { processDocument, } from '../utils/process-document.js';
3
- export function createOpenAPI(options = {}) {
4
- const { input = [], disableCache = false } = options;
5
- let schemas;
6
- async function getSchemas() {
7
- const out = {};
8
- if (Array.isArray(input)) {
9
- await Promise.all(input.map(async (item) => {
10
- out[item] = await processDocument(item);
11
- }));
12
- }
13
- else {
14
- await Promise.all(Object.entries(await input()).map(async ([k, v]) => {
15
- out[k] = await processDocument(v);
16
- }));
17
- }
18
- return out;
19
- }
20
- return {
21
- options,
22
- createProxy,
23
- async getSchema(document) {
24
- const schemas = await getSchemas();
25
- if (document in schemas)
26
- return schemas[document];
27
- console.warn(`[Fumadocs OpenAPI] the document "${document}" is not listed in the input array, this may not be expected.`);
28
- // do not cache unlisted documents
29
- return processDocument(document);
30
- },
31
- async getSchemas() {
32
- if (disableCache)
33
- return getSchemas();
34
- return (schemas ?? (schemas = getSchemas()));
35
- },
36
- };
1
+ import { createProxy } from "./proxy.js";
2
+ import { processDocument } from "../utils/process-document.js";
3
+
4
+ //#region src/server/create.tsx
5
+ function createOpenAPI(options = {}) {
6
+ const { input = [], disableCache = false } = options;
7
+ let schemas;
8
+ async function getSchemas() {
9
+ const out = {};
10
+ if (Array.isArray(input)) await Promise.all(input.map(async (item) => {
11
+ out[item] = await processDocument(item);
12
+ }));
13
+ else await Promise.all(Object.entries(await input()).map(async ([k, v]) => {
14
+ out[k] = await processDocument(v);
15
+ }));
16
+ return out;
17
+ }
18
+ return {
19
+ options,
20
+ createProxy,
21
+ async getSchema(document) {
22
+ const schemas$1 = await getSchemas();
23
+ if (document in schemas$1) return schemas$1[document];
24
+ console.warn(`[Fumadocs OpenAPI] the document "${document}" is not listed in the input array, this may not be expected.`);
25
+ return processDocument(document);
26
+ },
27
+ async getSchemas() {
28
+ if (disableCache) return getSchemas();
29
+ return schemas ??= getSchemas();
30
+ }
31
+ };
37
32
  }
38
- export function createCodeSample(options) {
39
- const { lang = 'unknown', id = lang, ...rest } = options;
40
- return { id, lang, ...rest };
33
+ function createCodeSample(options) {
34
+ const { lang = "unknown", id = lang, ...rest } = options;
35
+ return {
36
+ id,
37
+ lang,
38
+ ...rest
39
+ };
41
40
  }
41
+
42
+ //#endregion
43
+ export { createCodeSample, createOpenAPI };
44
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","names":["schemas: Promise<ProcessedSchemaMap> | undefined","out: ProcessedSchemaMap","schemas"],"sources":["../../src/server/create.tsx"],"sourcesContent":["import { createProxy } from '@/server/proxy';\nimport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';\nimport { processDocument, type ProcessedDocument } from '@/utils/process-document';\nimport type { CodeUsageGenerator } from '@/ui/operation/usage-tabs';\n\n/**\n * schema id -> file path, URL, or downloaded schema object\n */\ntype SchemaMap = Record<string, string | OpenAPIV3_1.Document | OpenAPIV3.Document>;\ntype ProcessedSchemaMap = Record<string, ProcessedDocument>;\n\nexport interface OpenAPIOptions {\n /**\n * Schema files, can be:\n * - URL\n * - file path\n * - a function returning records of downloaded schemas.\n */\n input?: string[] | (() => SchemaMap | Promise<SchemaMap>);\n\n disableCache?: boolean;\n\n /**\n * The url of proxy to avoid CORS issues\n */\n proxyUrl?: string;\n}\n\nexport interface OpenAPIServer {\n createProxy: typeof createProxy;\n getSchemas: () => Promise<ProcessedSchemaMap>;\n getSchema: (document: string) => Promise<ProcessedDocument>;\n readonly options: OpenAPIOptions;\n}\n\nexport function createOpenAPI(options: OpenAPIOptions = {}): OpenAPIServer {\n const { input = [], disableCache = false } = options;\n let schemas: Promise<ProcessedSchemaMap> | undefined;\n\n async function getSchemas() {\n const out: ProcessedSchemaMap = {};\n\n if (Array.isArray(input)) {\n await Promise.all(\n input.map(async (item) => {\n out[item] = await processDocument(item);\n }),\n );\n } else {\n await Promise.all(\n Object.entries(await input()).map(async ([k, v]) => {\n out[k] = await processDocument(v);\n }),\n );\n }\n\n return out;\n }\n\n return {\n options,\n createProxy,\n async getSchema(document) {\n const schemas = await getSchemas();\n if (document in schemas) return schemas[document];\n\n console.warn(\n `[Fumadocs OpenAPI] the document \"${document}\" is not listed in the input array, this may not be expected.`,\n );\n // do not cache unlisted documents\n return processDocument(document);\n },\n async getSchemas() {\n if (disableCache) return getSchemas();\n\n return (schemas ??= getSchemas());\n },\n };\n}\n\nexport function createCodeSample<T>(options: Partial<CodeUsageGenerator<T>>): CodeUsageGenerator {\n const { lang = 'unknown', id = lang, ...rest } = options as Partial<CodeUsageGenerator>;\n\n return { id, lang, ...rest };\n}\n"],"mappings":";;;;AAmCA,SAAgB,cAAc,UAA0B,EAAE,EAAiB;CACzE,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,UAAU;CAC7C,IAAIA;CAEJ,eAAe,aAAa;EAC1B,MAAMC,MAA0B,EAAE;AAElC,MAAI,MAAM,QAAQ,MAAM,CACtB,OAAM,QAAQ,IACZ,MAAM,IAAI,OAAO,SAAS;AACxB,OAAI,QAAQ,MAAM,gBAAgB,KAAK;IACvC,CACH;MAED,OAAM,QAAQ,IACZ,OAAO,QAAQ,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,OAAO;AAClD,OAAI,KAAK,MAAM,gBAAgB,EAAE;IACjC,CACH;AAGH,SAAO;;AAGT,QAAO;EACL;EACA;EACA,MAAM,UAAU,UAAU;GACxB,MAAMC,YAAU,MAAM,YAAY;AAClC,OAAI,YAAYA,UAAS,QAAOA,UAAQ;AAExC,WAAQ,KACN,oCAAoC,SAAS,+DAC9C;AAED,UAAO,gBAAgB,SAAS;;EAElC,MAAM,aAAa;AACjB,OAAI,aAAc,QAAO,YAAY;AAErC,UAAQ,YAAY,YAAY;;EAEnC;;AAGH,SAAgB,iBAAoB,SAA6D;CAC/F,MAAM,EAAE,OAAO,WAAW,KAAK,MAAM,GAAG,SAAS;AAEjD,QAAO;EAAE;EAAI;EAAM,GAAG;EAAM"}
@@ -1,3 +1,3 @@
1
- export * from './create.js';
2
- export * from './source-api.js';
3
- //# sourceMappingURL=index.d.ts.map
1
+ import { OpenAPIOptions, OpenAPIServer, createCodeSample, createOpenAPI } from "./create.js";
2
+ import { InternalOpenAPIMeta, openapiPlugin, openapiSource, transformerOpenAPI } from "./source-api.js";
3
+ export { InternalOpenAPIMeta, OpenAPIOptions, OpenAPIServer, createCodeSample, createOpenAPI, openapiPlugin, openapiSource, transformerOpenAPI };
@@ -1,2 +1,4 @@
1
- export * from './create.js';
2
- export * from './source-api.js';
1
+ import { createCodeSample, createOpenAPI } from "./create.js";
2
+ import { openapiPlugin, openapiSource, transformerOpenAPI } from "./source-api.js";
3
+
4
+ export { createCodeSample, createOpenAPI, openapiPlugin, openapiSource, transformerOpenAPI };
@@ -1,32 +1,32 @@
1
+ //#region src/server/proxy.d.ts
1
2
  declare const keys: readonly ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"];
2
- type Proxy = {
3
- [K in (typeof keys)[number]]: (req: Request) => Promise<Response>;
4
- };
3
+ type Proxy = { [K in (typeof keys)[number]]: (req: Request) => Promise<Response> };
5
4
  interface CreateProxyOptions {
6
- /**
7
- * Filter by prefixes of request url
8
- *
9
- * @deprecated Use `allowedOrigins` for filtering origins, or `filterRequest` for more detailed rules.
10
- */
11
- allowedUrls?: string[];
12
- /**
13
- * List of allowed origins to proxy to.
14
- */
15
- allowedOrigins?: string[];
16
- /**
17
- * Determine if the proxied request is allowed.
18
- *
19
- * @returns true if allowed, otherwise forbidden.
20
- */
21
- filterRequest?: (request: Request) => boolean;
22
- /**
23
- * Override proxied request/response with yours
24
- */
25
- overrides?: {
26
- request?: (request: Request) => Request;
27
- response?: (response: Response) => Response;
28
- };
5
+ /**
6
+ * Filter by prefixes of request url
7
+ *
8
+ * @deprecated Use `allowedOrigins` for filtering origins, or `filterRequest` for more detailed rules.
9
+ */
10
+ allowedUrls?: string[];
11
+ /**
12
+ * List of allowed origins to proxy to.
13
+ */
14
+ allowedOrigins?: string[];
15
+ /**
16
+ * Determine if the proxied request is allowed.
17
+ *
18
+ * @returns true if allowed, otherwise forbidden.
19
+ */
20
+ filterRequest?: (request: Request) => boolean;
21
+ /**
22
+ * Override proxied request/response with yours
23
+ */
24
+ overrides?: {
25
+ request?: (request: Request) => Request;
26
+ response?: (response: Response) => Response;
27
+ };
29
28
  }
30
- export declare function createProxy(options?: CreateProxyOptions): Proxy;
31
- export {};
29
+ declare function createProxy(options?: CreateProxyOptions): Proxy;
30
+ //#endregion
31
+ export { createProxy };
32
32
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,4DAA6D,CAAC;AAExE,KAAK,KAAK,GAAG;KACV,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC;CAClE,CAAC;AAEF,UAAU,kBAAkB;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAE9C;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QACxC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAC;KAC7C,CAAC;CACH;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,KAAK,CAyGnE"}
1
+ {"version":3,"file":"proxy.d.ts","names":[],"sources":["../../src/server/proxy.ts"],"sourcesContent":[],"mappings":";cAAM;KAED,KAAA,GAFkE,QAElE,CAAA,OACW,IADN,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,GAAA,EAC4B,OAD5B,EAAA,GACwC,OADxC,CACgD,QADhD,CAAA,EACM;UAGN,kBAAA,CAH4B;EAAoB;;;AAAD;;EA2BjC,WAAA,CAAA,EAAA,MAAA,EAAA;EAAY;;;EACW,cAAA,CAAA,EAAA,MAAA,EAAA;EAI/B;;;;;4BAXY;;;;;wBAMJ,YAAY;0BACV,aAAa;;;iBAIvB,WAAA,WAAqB,qBAA0B"}
@@ -1,76 +1,59 @@
1
- const keys = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];
2
- export function createProxy(options = {}) {
3
- const { allowedOrigins, allowedUrls, filterRequest = (req) => {
4
- return (!allowedUrls || allowedUrls.some((item) => req.url.startsWith(item)));
5
- }, overrides, } = options;
6
- const handlers = {};
7
- async function handler(req) {
8
- const searchParams = new URL(req.url).searchParams;
9
- const url = searchParams.get('url');
10
- if (!url)
11
- return Response.json('[Proxy] A `url` query parameter is required for proxy url', {
12
- status: 400,
13
- });
14
- const parsedUrl = URL.parse(url);
15
- if (!parsedUrl)
16
- return Response.json('[Proxy] Invalid `url` parameter value.', {
17
- status: 400,
18
- });
19
- if (allowedOrigins && !allowedOrigins.includes(parsedUrl.origin)) {
20
- return Response.json(`[Proxy] The origin "${parsedUrl.origin}" is not allowed.`, {
21
- status: 400,
22
- });
23
- }
24
- const contentLength = req.headers.get('content-length');
25
- const hasBody = contentLength && parseInt(contentLength) > 0;
26
- let proxied = new Request(parsedUrl, {
27
- method: req.method,
28
- cache: 'no-cache',
29
- headers: req.headers,
30
- body: hasBody &&
31
- ['POST', 'PUT', 'PATCH', 'DELETE'].includes(req.method.toUpperCase())
32
- ? await req.arrayBuffer()
33
- : undefined,
34
- });
35
- if (overrides?.request) {
36
- proxied = overrides.request(proxied);
37
- }
38
- if (!filterRequest(proxied)) {
39
- return Response.json('[Proxy] The proxied request is not allowed', {
40
- status: 403,
41
- });
42
- }
43
- proxied.headers.forEach((_value, originalKey) => {
44
- const key = originalKey.toLowerCase();
45
- if (key === 'origin') {
46
- proxied.headers.delete(originalKey);
47
- }
48
- });
49
- let res = await fetch(proxied).catch((e) => new Error(e.toString()));
50
- if (res instanceof Error) {
51
- return Response.json(`[Proxy] Failed to proxy request: ${res.message}`, {
52
- status: 500,
53
- });
54
- }
55
- if (overrides?.response) {
56
- res = overrides.response(res);
57
- }
58
- const headers = new Headers(res.headers);
59
- headers.forEach((_value, originalKey) => {
60
- const key = originalKey.toLowerCase();
61
- if (key.startsWith('access-control-')) {
62
- headers.delete(originalKey);
63
- }
64
- });
65
- headers.set('X-Forwarded-Host', res.url);
66
- return new Response(res.body, {
67
- status: res.status,
68
- statusText: res.statusText,
69
- headers,
70
- });
71
- }
72
- for (const key of keys) {
73
- handlers[key] = handler;
74
- }
75
- return handlers;
1
+ //#region src/server/proxy.ts
2
+ const keys = [
3
+ "GET",
4
+ "POST",
5
+ "PUT",
6
+ "DELETE",
7
+ "PATCH",
8
+ "HEAD"
9
+ ];
10
+ function createProxy(options = {}) {
11
+ const { allowedOrigins, allowedUrls, filterRequest = (req) => {
12
+ return !allowedUrls || allowedUrls.some((item) => req.url.startsWith(item));
13
+ }, overrides } = options;
14
+ const handlers = {};
15
+ async function handler(req) {
16
+ const url = new URL(req.url).searchParams.get("url");
17
+ if (!url) return Response.json("[Proxy] A `url` query parameter is required for proxy url", { status: 400 });
18
+ const parsedUrl = URL.parse(url);
19
+ if (!parsedUrl) return Response.json("[Proxy] Invalid `url` parameter value.", { status: 400 });
20
+ if (allowedOrigins && !allowedOrigins.includes(parsedUrl.origin)) return Response.json(`[Proxy] The origin "${parsedUrl.origin}" is not allowed.`, { status: 400 });
21
+ const contentLength = req.headers.get("content-length");
22
+ const hasBody = contentLength && parseInt(contentLength) > 0;
23
+ let proxied = new Request(parsedUrl, {
24
+ method: req.method,
25
+ cache: "no-cache",
26
+ headers: req.headers,
27
+ body: hasBody && [
28
+ "POST",
29
+ "PUT",
30
+ "PATCH",
31
+ "DELETE"
32
+ ].includes(req.method.toUpperCase()) ? await req.arrayBuffer() : void 0
33
+ });
34
+ if (overrides?.request) proxied = overrides.request(proxied);
35
+ if (!filterRequest(proxied)) return Response.json("[Proxy] The proxied request is not allowed", { status: 403 });
36
+ proxied.headers.forEach((_value, originalKey) => {
37
+ if (originalKey.toLowerCase() === "origin") proxied.headers.delete(originalKey);
38
+ });
39
+ let res = await fetch(proxied).catch((e) => new Error(e.toString()));
40
+ if (res instanceof Error) return Response.json(`[Proxy] Failed to proxy request: ${res.message}`, { status: 500 });
41
+ if (overrides?.response) res = overrides.response(res);
42
+ const headers = new Headers(res.headers);
43
+ headers.forEach((_value, originalKey) => {
44
+ if (originalKey.toLowerCase().startsWith("access-control-")) headers.delete(originalKey);
45
+ });
46
+ headers.set("X-Forwarded-Host", res.url);
47
+ return new Response(res.body, {
48
+ status: res.status,
49
+ statusText: res.statusText,
50
+ headers
51
+ });
52
+ }
53
+ for (const key of keys) handlers[key] = handler;
54
+ return handlers;
76
55
  }
56
+
57
+ //#endregion
58
+ export { createProxy };
59
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","names":["handlers: Partial<Proxy>"],"sources":["../../src/server/proxy.ts"],"sourcesContent":["const keys = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'] as const;\n\ntype Proxy = {\n [K in (typeof keys)[number]]: (req: Request) => Promise<Response>;\n};\n\ninterface CreateProxyOptions {\n /**\n * Filter by prefixes of request url\n *\n * @deprecated Use `allowedOrigins` for filtering origins, or `filterRequest` for more detailed rules.\n */\n allowedUrls?: string[];\n\n /**\n * List of allowed origins to proxy to.\n */\n allowedOrigins?: string[];\n\n /**\n * Determine if the proxied request is allowed.\n *\n * @returns true if allowed, otherwise forbidden.\n */\n filterRequest?: (request: Request) => boolean;\n\n /**\n * Override proxied request/response with yours\n */\n overrides?: {\n request?: (request: Request) => Request;\n response?: (response: Response) => Response;\n };\n}\n\nexport function createProxy(options: CreateProxyOptions = {}): Proxy {\n const {\n allowedOrigins,\n allowedUrls,\n filterRequest = (req) => {\n return !allowedUrls || allowedUrls.some((item) => req.url.startsWith(item));\n },\n overrides,\n } = options;\n const handlers: Partial<Proxy> = {};\n\n async function handler(req: Request): Promise<Response> {\n const searchParams = new URL(req.url).searchParams;\n const url = searchParams.get('url');\n\n if (!url)\n return Response.json('[Proxy] A `url` query parameter is required for proxy url', {\n status: 400,\n });\n\n const parsedUrl = URL.parse(url);\n if (!parsedUrl)\n return Response.json('[Proxy] Invalid `url` parameter value.', {\n status: 400,\n });\n\n if (allowedOrigins && !allowedOrigins.includes(parsedUrl.origin)) {\n return Response.json(`[Proxy] The origin \"${parsedUrl.origin}\" is not allowed.`, {\n status: 400,\n });\n }\n\n const contentLength = req.headers.get('content-length');\n const hasBody = contentLength && parseInt(contentLength) > 0;\n\n let proxied = new Request(parsedUrl, {\n method: req.method,\n cache: 'no-cache',\n headers: req.headers,\n body:\n hasBody && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(req.method.toUpperCase())\n ? await req.arrayBuffer()\n : undefined,\n });\n\n if (overrides?.request) {\n proxied = overrides.request(proxied);\n }\n\n if (!filterRequest(proxied)) {\n return Response.json('[Proxy] The proxied request is not allowed', {\n status: 403,\n });\n }\n\n proxied.headers.forEach((_value, originalKey) => {\n const key = originalKey.toLowerCase();\n\n if (key === 'origin') {\n proxied.headers.delete(originalKey);\n }\n });\n\n let res = await fetch(proxied).catch((e) => new Error(e.toString()));\n if (res instanceof Error) {\n return Response.json(`[Proxy] Failed to proxy request: ${res.message}`, {\n status: 500,\n });\n }\n\n if (overrides?.response) {\n res = overrides.response(res);\n }\n\n const headers = new Headers(res.headers);\n headers.forEach((_value, originalKey) => {\n const key = originalKey.toLowerCase();\n\n if (key.startsWith('access-control-')) {\n headers.delete(originalKey);\n }\n });\n headers.set('X-Forwarded-Host', res.url);\n\n return new Response(res.body, {\n status: res.status,\n statusText: res.statusText,\n headers,\n });\n }\n\n for (const key of keys) {\n handlers[key] = handler;\n }\n\n return handlers as Proxy;\n}\n"],"mappings":";AAAA,MAAM,OAAO;CAAC;CAAO;CAAQ;CAAO;CAAU;CAAS;CAAO;AAmC9D,SAAgB,YAAY,UAA8B,EAAE,EAAS;CACnE,MAAM,EACJ,gBACA,aACA,iBAAiB,QAAQ;AACvB,SAAO,CAAC,eAAe,YAAY,MAAM,SAAS,IAAI,IAAI,WAAW,KAAK,CAAC;IAE7E,cACE;CACJ,MAAMA,WAA2B,EAAE;CAEnC,eAAe,QAAQ,KAAiC;EAEtD,MAAM,MADe,IAAI,IAAI,IAAI,IAAI,CAAC,aACb,IAAI,MAAM;AAEnC,MAAI,CAAC,IACH,QAAO,SAAS,KAAK,6DAA6D,EAChF,QAAQ,KACT,CAAC;EAEJ,MAAM,YAAY,IAAI,MAAM,IAAI;AAChC,MAAI,CAAC,UACH,QAAO,SAAS,KAAK,0CAA0C,EAC7D,QAAQ,KACT,CAAC;AAEJ,MAAI,kBAAkB,CAAC,eAAe,SAAS,UAAU,OAAO,CAC9D,QAAO,SAAS,KAAK,uBAAuB,UAAU,OAAO,oBAAoB,EAC/E,QAAQ,KACT,CAAC;EAGJ,MAAM,gBAAgB,IAAI,QAAQ,IAAI,iBAAiB;EACvD,MAAM,UAAU,iBAAiB,SAAS,cAAc,GAAG;EAE3D,IAAI,UAAU,IAAI,QAAQ,WAAW;GACnC,QAAQ,IAAI;GACZ,OAAO;GACP,SAAS,IAAI;GACb,MACE,WAAW;IAAC;IAAQ;IAAO;IAAS;IAAS,CAAC,SAAS,IAAI,OAAO,aAAa,CAAC,GAC5E,MAAM,IAAI,aAAa,GACvB;GACP,CAAC;AAEF,MAAI,WAAW,QACb,WAAU,UAAU,QAAQ,QAAQ;AAGtC,MAAI,CAAC,cAAc,QAAQ,CACzB,QAAO,SAAS,KAAK,8CAA8C,EACjE,QAAQ,KACT,CAAC;AAGJ,UAAQ,QAAQ,SAAS,QAAQ,gBAAgB;AAG/C,OAFY,YAAY,aAAa,KAEzB,SACV,SAAQ,QAAQ,OAAO,YAAY;IAErC;EAEF,IAAI,MAAM,MAAM,MAAM,QAAQ,CAAC,OAAO,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC,CAAC;AACpE,MAAI,eAAe,MACjB,QAAO,SAAS,KAAK,oCAAoC,IAAI,WAAW,EACtE,QAAQ,KACT,CAAC;AAGJ,MAAI,WAAW,SACb,OAAM,UAAU,SAAS,IAAI;EAG/B,MAAM,UAAU,IAAI,QAAQ,IAAI,QAAQ;AACxC,UAAQ,SAAS,QAAQ,gBAAgB;AAGvC,OAFY,YAAY,aAAa,CAE7B,WAAW,kBAAkB,CACnC,SAAQ,OAAO,YAAY;IAE7B;AACF,UAAQ,IAAI,oBAAoB,IAAI,IAAI;AAExC,SAAO,IAAI,SAAS,IAAI,MAAM;GAC5B,QAAQ,IAAI;GACZ,YAAY,IAAI;GAChB;GACD,CAAC;;AAGJ,MAAK,MAAM,OAAO,KAChB,UAAS,OAAO;AAGlB,QAAO"}
@@ -1,42 +1,49 @@
1
- import type { LoaderPlugin, MetaData, PageData, PageTreeTransformer, Source } from 'fumadocs-core/source';
2
- import type { OpenAPIServer } from '../server/create.js';
3
- import type { SchemaToPagesOptions } from '../utils/pages/preset-auto.js';
4
- import type { ApiPageProps } from '../ui/api-page.js';
5
- import type { StructuredData } from 'fumadocs-core/mdx-plugins';
6
- import type { TOCItemType } from 'fumadocs-core/toc';
1
+ import { OpenAPIServer } from "./create.js";
2
+ import { ApiPageProps } from "../ui/api-page.js";
3
+ import { SchemaToPagesOptions } from "../utils/pages/preset-auto.js";
4
+ import { ProcessedDocument } from "../utils/process-document.js";
5
+ import { LoaderPlugin, PageData, PageTreeTransformer, Source } from "fumadocs-core/source";
6
+ import { StructuredData } from "fumadocs-core/mdx-plugins";
7
+ import { TOCItemType } from "fumadocs-core/toc";
8
+
9
+ //#region src/server/source-api.d.ts
7
10
  declare module 'fumadocs-core/source' {
8
- interface PageData {
9
- /**
10
- * Added by Fumadocs OpenAPI
11
- */
12
- _openapi?: InternalOpenAPIMeta;
13
- }
11
+ interface PageData {
12
+ /**
13
+ * Added by Fumadocs OpenAPI
14
+ */
15
+ _openapi?: InternalOpenAPIMeta;
16
+ }
14
17
  }
15
- export interface InternalOpenAPIMeta {
16
- method?: string;
17
- webhook?: boolean;
18
+ interface InternalOpenAPIMeta {
19
+ method?: string;
20
+ webhook?: boolean;
18
21
  }
19
22
  /**
20
23
  * Fumadocs Source API integration, pass this to `plugins` array in `loader()`.
21
24
  */
22
- export declare function openapiPlugin(): LoaderPlugin;
25
+ declare function openapiPlugin(): LoaderPlugin;
23
26
  interface OpenAPIPageData extends PageData {
24
- getAPIPageProps: () => ApiPageProps;
25
- structuredData: StructuredData;
26
- toc: TOCItemType[];
27
+ getAPIPageProps: () => ApiPageProps;
28
+ getSchema: () => {
29
+ id: string;
30
+ } & ProcessedDocument;
31
+ structuredData: StructuredData;
32
+ toc: TOCItemType[];
27
33
  }
28
34
  /**
29
35
  * Generate virtual pages for Fumadocs Source API
30
36
  */
31
- export declare function openapiSource(server: OpenAPIServer, options?: SchemaToPagesOptions & {
32
- baseDir?: string;
37
+ declare function openapiSource(server: OpenAPIServer, options?: SchemaToPagesOptions & {
38
+ baseDir?: string;
33
39
  }): Promise<Source<{
34
- metaData: MetaData;
35
- pageData: OpenAPIPageData;
40
+ metaData: never;
41
+ pageData: OpenAPIPageData;
36
42
  }>>;
37
43
  /**
38
44
  * @deprecated use `openapiPlugin()`
39
45
  */
40
- export declare function transformerOpenAPI(): PageTreeTransformer;
41
- export {};
46
+ declare function transformerOpenAPI(): PageTreeTransformer;
47
+ //#endregion
48
+ export { InternalOpenAPIMeta, openapiPlugin, openapiSource, transformerOpenAPI };
42
49
  //# sourceMappingURL=source-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-api.d.ts","sourceRoot":"","sources":["../../src/server/source-api.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,MAAM,EAEP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAiB,QAAQ;QACvB;;WAEG;QACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;KAChC;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAqC5C;AAED,UAAU,eAAgB,SAAQ,QAAQ;IACxC,eAAe,EAAE,MAAM,YAAY,CAAC;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,GAAG,EAAE,WAAW,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,oBAAoB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,OAAO,CACR,MAAM,CAAC;IACL,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC,CACH,CAyCA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,CAExD"}
1
+ {"version":3,"file":"source-api.d.ts","names":[],"sources":["../../src/server/source-api.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;IAakE;;;IAOhC,QAAA,CAAA,EAAnB,mBAAmB;EAAA;AAIlC;AAQgB,UARC,mBAAA,CAQgB;EAuCvB,MAAA,CAAA,EAAA,MAAA;EACe,OAAA,CAAA,EAAA,OAAA;;;;;AADiB,iBAvC1B,aAAA,CAAA,CAuC0B,EAvCT,YAuCS;AAU1C,UAVU,eAAA,SAAwB,QAUC,CAAA;EACzB,eAAA,EAAA,GAAA,GAVe,YAUf;EACC,SAAA,EAAA,GAAA,GAAA;IAMG,EAAA,EAAA,MAAA;EAFZ,CAAA,GAdkC,iBAclC;EADC,cAAA,EAZe,cAYf;EAAO,GAAA,EAXH,WAWG,EAAA;AA0DV;;;;iBA/DsB,aAAA,SACZ,yBACC;;IAGR,QACD;;YAEY;;;;;iBAuDE,kBAAA,CAAA,GAAsB"}