fumadocs-openapi 10.6.4 → 10.6.5

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 (228) hide show
  1. package/css/generated/shared.css +2 -2
  2. package/dist/_openapi/types.d.ts +1 -2
  3. package/dist/generate-file.d.ts +1 -2
  4. package/dist/generate-file.js +0 -2
  5. package/dist/i18n.d.ts +1 -2
  6. package/dist/i18n.js +0 -2
  7. package/dist/playground/client.d.ts +3 -9
  8. package/dist/playground/client.js +27 -20
  9. package/dist/playground/components/inputs.js +0 -2
  10. package/dist/playground/components/oauth-dialog.js +0 -2
  11. package/dist/playground/components/server-select.js +0 -2
  12. package/dist/playground/fetcher.d.ts +1 -2
  13. package/dist/playground/fetcher.js +0 -2
  14. package/dist/playground/schema.d.ts +1 -2
  15. package/dist/playground/schema.js +24 -15
  16. package/dist/playground/status-info.js +0 -2
  17. package/dist/requests/generators/all.d.ts +1 -2
  18. package/dist/requests/generators/all.js +0 -2
  19. package/dist/requests/generators/csharp.d.ts +1 -2
  20. package/dist/requests/generators/csharp.js +0 -2
  21. package/dist/requests/generators/curl.d.ts +1 -2
  22. package/dist/requests/generators/curl.js +0 -2
  23. package/dist/requests/generators/go.d.ts +1 -2
  24. package/dist/requests/generators/go.js +0 -2
  25. package/dist/requests/generators/index.d.ts +1 -2
  26. package/dist/requests/generators/index.js +0 -2
  27. package/dist/requests/generators/java.d.ts +1 -2
  28. package/dist/requests/generators/java.js +0 -2
  29. package/dist/requests/generators/javascript.d.ts +1 -2
  30. package/dist/requests/generators/javascript.js +0 -2
  31. package/dist/requests/generators/python.d.ts +1 -2
  32. package/dist/requests/generators/python.js +0 -2
  33. package/dist/requests/media/adapter.d.ts +1 -2
  34. package/dist/requests/media/adapter.js +0 -2
  35. package/dist/requests/media/encode.d.ts +1 -2
  36. package/dist/requests/media/encode.js +0 -2
  37. package/dist/requests/media/resolve-adapter.js +0 -2
  38. package/dist/requests/string-utils.js +0 -2
  39. package/dist/requests/types.d.ts +1 -2
  40. package/dist/scalar/client.js +0 -2
  41. package/dist/scalar/index.d.ts +1 -2
  42. package/dist/scalar/index.js +0 -2
  43. package/dist/server/create.d.ts +2 -3
  44. package/dist/server/create.js +0 -2
  45. package/dist/server/proxy.d.ts +1 -2
  46. package/dist/server/proxy.js +0 -2
  47. package/dist/server/source-api.d.ts +1 -2
  48. package/dist/server/source-api.js +0 -2
  49. package/dist/types.d.ts +1 -2
  50. package/dist/ui/api-page.d.ts +1 -2
  51. package/dist/ui/api-page.js +0 -2
  52. package/dist/ui/base.d.ts +1 -2
  53. package/dist/ui/base.js +3 -5
  54. package/dist/ui/client/boundary.d.ts +1 -2
  55. package/dist/ui/client/boundary.js +0 -2
  56. package/dist/ui/client/boundary.lazy.js +0 -2
  57. package/dist/ui/client/full.js +0 -2
  58. package/dist/ui/client/i18n.js +0 -2
  59. package/dist/ui/client/index.d.ts +1 -2
  60. package/dist/ui/client/index.js +0 -2
  61. package/dist/ui/client/storage-key.js +0 -2
  62. package/dist/ui/components/accordion.js +0 -2
  63. package/dist/ui/components/codeblock.d.ts +1 -2
  64. package/dist/ui/components/codeblock.js +0 -2
  65. package/dist/ui/components/dialog.js +0 -2
  66. package/dist/ui/components/input.js +0 -2
  67. package/dist/ui/components/method-label.js +0 -2
  68. package/dist/ui/components/select-tab.js +0 -2
  69. package/dist/ui/components/select.js +0 -2
  70. package/dist/ui/contexts/api.d.ts +1 -2
  71. package/dist/ui/contexts/api.js +0 -2
  72. package/dist/ui/create-client.d.ts +1 -2
  73. package/dist/ui/create-client.js +1 -3
  74. package/dist/ui/index.d.ts +1 -2
  75. package/dist/ui/index.js +0 -2
  76. package/dist/ui/operation/client.js +0 -2
  77. package/dist/ui/operation/get-example-requests.d.ts +1 -2
  78. package/dist/ui/operation/get-example-requests.js +0 -2
  79. package/dist/ui/operation/index.js +0 -2
  80. package/dist/ui/operation/request-tabs.js +0 -2
  81. package/dist/ui/operation/response-tabs.d.ts +1 -2
  82. package/dist/ui/operation/response-tabs.js +0 -2
  83. package/dist/ui/operation/usage-tabs/client.d.ts +1 -2
  84. package/dist/ui/operation/usage-tabs/client.js +0 -2
  85. package/dist/ui/operation/usage-tabs/index.js +0 -2
  86. package/dist/ui/schema/client.d.ts +1 -2
  87. package/dist/ui/schema/client.js +0 -2
  88. package/dist/ui/schema/index.d.ts +3 -4
  89. package/dist/ui/schema/index.js +1 -3
  90. package/dist/utils/deep-equal.js +0 -2
  91. package/dist/utils/document/dereference.d.ts +1 -2
  92. package/dist/utils/document/dereference.js +0 -2
  93. package/dist/utils/document/process.d.ts +1 -2
  94. package/dist/utils/document/process.js +0 -2
  95. package/dist/utils/id-to-title.js +0 -2
  96. package/dist/utils/is-plain-object.js +0 -2
  97. package/dist/utils/pages/builder.d.ts +1 -2
  98. package/dist/utils/pages/builder.js +0 -2
  99. package/dist/utils/pages/preset-auto.d.ts +1 -2
  100. package/dist/utils/pages/preset-auto.js +0 -2
  101. package/dist/utils/pages/to-static-data.js +0 -2
  102. package/dist/utils/pages/to-text.d.ts +1 -2
  103. package/dist/utils/pages/to-text.js +0 -2
  104. package/dist/utils/remove-undefined.js +0 -2
  105. package/dist/utils/schema/dereference.js +22 -14
  106. package/dist/utils/schema/index.d.ts +1 -6
  107. package/dist/utils/schema/index.js +0 -2
  108. package/dist/utils/{merge-schema.js → schema/merge.js} +2 -4
  109. package/dist/utils/schema/pick.js +0 -2
  110. package/dist/utils/schema/ref.js +0 -2
  111. package/dist/utils/schema/resolve-ref.js +0 -2
  112. package/dist/utils/schema/to-string.js +4 -7
  113. package/dist/utils/url.js +0 -2
  114. package/dist/utils/use-query.js +0 -2
  115. package/package.json +1 -1
  116. package/dist/_openapi/types.d.ts.map +0 -1
  117. package/dist/generate-file.d.ts.map +0 -1
  118. package/dist/generate-file.js.map +0 -1
  119. package/dist/i18n.d.ts.map +0 -1
  120. package/dist/i18n.js.map +0 -1
  121. package/dist/playground/client.d.ts.map +0 -1
  122. package/dist/playground/client.js.map +0 -1
  123. package/dist/playground/components/inputs.js.map +0 -1
  124. package/dist/playground/components/oauth-dialog.js.map +0 -1
  125. package/dist/playground/components/server-select.js.map +0 -1
  126. package/dist/playground/fetcher.d.ts.map +0 -1
  127. package/dist/playground/fetcher.js.map +0 -1
  128. package/dist/playground/schema.d.ts.map +0 -1
  129. package/dist/playground/schema.js.map +0 -1
  130. package/dist/playground/status-info.js.map +0 -1
  131. package/dist/requests/generators/all.d.ts.map +0 -1
  132. package/dist/requests/generators/all.js.map +0 -1
  133. package/dist/requests/generators/csharp.d.ts.map +0 -1
  134. package/dist/requests/generators/csharp.js.map +0 -1
  135. package/dist/requests/generators/curl.d.ts.map +0 -1
  136. package/dist/requests/generators/curl.js.map +0 -1
  137. package/dist/requests/generators/go.d.ts.map +0 -1
  138. package/dist/requests/generators/go.js.map +0 -1
  139. package/dist/requests/generators/index.d.ts.map +0 -1
  140. package/dist/requests/generators/index.js.map +0 -1
  141. package/dist/requests/generators/java.d.ts.map +0 -1
  142. package/dist/requests/generators/java.js.map +0 -1
  143. package/dist/requests/generators/javascript.d.ts.map +0 -1
  144. package/dist/requests/generators/javascript.js.map +0 -1
  145. package/dist/requests/generators/python.d.ts.map +0 -1
  146. package/dist/requests/generators/python.js.map +0 -1
  147. package/dist/requests/media/adapter.d.ts.map +0 -1
  148. package/dist/requests/media/adapter.js.map +0 -1
  149. package/dist/requests/media/encode.d.ts.map +0 -1
  150. package/dist/requests/media/encode.js.map +0 -1
  151. package/dist/requests/media/resolve-adapter.js.map +0 -1
  152. package/dist/requests/string-utils.js.map +0 -1
  153. package/dist/requests/types.d.ts.map +0 -1
  154. package/dist/scalar/client.js.map +0 -1
  155. package/dist/scalar/index.d.ts.map +0 -1
  156. package/dist/scalar/index.js.map +0 -1
  157. package/dist/server/create.d.ts.map +0 -1
  158. package/dist/server/create.js.map +0 -1
  159. package/dist/server/proxy.d.ts.map +0 -1
  160. package/dist/server/proxy.js.map +0 -1
  161. package/dist/server/source-api.d.ts.map +0 -1
  162. package/dist/server/source-api.js.map +0 -1
  163. package/dist/types.d.ts.map +0 -1
  164. package/dist/ui/api-page.d.ts.map +0 -1
  165. package/dist/ui/api-page.js.map +0 -1
  166. package/dist/ui/base.d.ts.map +0 -1
  167. package/dist/ui/base.js.map +0 -1
  168. package/dist/ui/client/boundary.d.ts.map +0 -1
  169. package/dist/ui/client/boundary.js.map +0 -1
  170. package/dist/ui/client/boundary.lazy.js.map +0 -1
  171. package/dist/ui/client/full.js.map +0 -1
  172. package/dist/ui/client/i18n.js.map +0 -1
  173. package/dist/ui/client/index.d.ts.map +0 -1
  174. package/dist/ui/client/index.js.map +0 -1
  175. package/dist/ui/client/storage-key.js.map +0 -1
  176. package/dist/ui/components/accordion.js.map +0 -1
  177. package/dist/ui/components/codeblock.d.ts.map +0 -1
  178. package/dist/ui/components/codeblock.js.map +0 -1
  179. package/dist/ui/components/dialog.js.map +0 -1
  180. package/dist/ui/components/input.js.map +0 -1
  181. package/dist/ui/components/method-label.js.map +0 -1
  182. package/dist/ui/components/select-tab.js.map +0 -1
  183. package/dist/ui/components/select.js.map +0 -1
  184. package/dist/ui/contexts/api.d.ts.map +0 -1
  185. package/dist/ui/contexts/api.js.map +0 -1
  186. package/dist/ui/create-client.d.ts.map +0 -1
  187. package/dist/ui/create-client.js.map +0 -1
  188. package/dist/ui/index.d.ts.map +0 -1
  189. package/dist/ui/index.js.map +0 -1
  190. package/dist/ui/operation/client.js.map +0 -1
  191. package/dist/ui/operation/get-example-requests.d.ts.map +0 -1
  192. package/dist/ui/operation/get-example-requests.js.map +0 -1
  193. package/dist/ui/operation/index.js.map +0 -1
  194. package/dist/ui/operation/request-tabs.js.map +0 -1
  195. package/dist/ui/operation/response-tabs.d.ts.map +0 -1
  196. package/dist/ui/operation/response-tabs.js.map +0 -1
  197. package/dist/ui/operation/usage-tabs/client.d.ts.map +0 -1
  198. package/dist/ui/operation/usage-tabs/client.js.map +0 -1
  199. package/dist/ui/operation/usage-tabs/index.js.map +0 -1
  200. package/dist/ui/schema/client.d.ts.map +0 -1
  201. package/dist/ui/schema/client.js.map +0 -1
  202. package/dist/ui/schema/index.d.ts.map +0 -1
  203. package/dist/ui/schema/index.js.map +0 -1
  204. package/dist/utils/deep-equal.js.map +0 -1
  205. package/dist/utils/document/dereference.d.ts.map +0 -1
  206. package/dist/utils/document/dereference.js.map +0 -1
  207. package/dist/utils/document/process.d.ts.map +0 -1
  208. package/dist/utils/document/process.js.map +0 -1
  209. package/dist/utils/id-to-title.js.map +0 -1
  210. package/dist/utils/is-plain-object.js.map +0 -1
  211. package/dist/utils/merge-schema.js.map +0 -1
  212. package/dist/utils/pages/builder.d.ts.map +0 -1
  213. package/dist/utils/pages/builder.js.map +0 -1
  214. package/dist/utils/pages/preset-auto.d.ts.map +0 -1
  215. package/dist/utils/pages/preset-auto.js.map +0 -1
  216. package/dist/utils/pages/to-static-data.js.map +0 -1
  217. package/dist/utils/pages/to-text.d.ts.map +0 -1
  218. package/dist/utils/pages/to-text.js.map +0 -1
  219. package/dist/utils/remove-undefined.js.map +0 -1
  220. package/dist/utils/schema/dereference.js.map +0 -1
  221. package/dist/utils/schema/index.d.ts.map +0 -1
  222. package/dist/utils/schema/index.js.map +0 -1
  223. package/dist/utils/schema/pick.js.map +0 -1
  224. package/dist/utils/schema/ref.js.map +0 -1
  225. package/dist/utils/schema/resolve-ref.js.map +0 -1
  226. package/dist/utils/schema/to-string.js.map +0 -1
  227. package/dist/utils/url.js.map +0 -1
  228. package/dist/utils/use-query.js.map +0 -1
@@ -218,7 +218,9 @@
218
218
  @source inline("definitions");
219
219
  @source inline("deprecated");
220
220
  @source inline("depth");
221
+ @source inline("dereference");
221
222
  @source inline("dereferenceDocument");
223
+ @source inline("dereferenceSwallow");
222
224
  @source inline("dereferenced");
223
225
  @source inline("description");
224
226
  @source inline("descriptionNode");
@@ -263,7 +265,6 @@
263
265
  @source inline("error");
264
266
  @source inline("eslint-disable");
265
267
  @source inline("eslint-disable-next-line");
266
- @source inline("eslint-plugin-react-hooks/rules-of-hooks");
267
268
  @source inline("example");
268
269
  @source inline("exampleId");
269
270
  @source inline("exampleRequests");
@@ -590,7 +591,6 @@
590
591
  @source inline("overflow-hidden");
591
592
  @source inline("overrides");
592
593
  @source inline("overview");
593
- @source inline("oxlint-disable-next-line");
594
594
  @source inline("p-1");
595
595
  @source inline("p-1.5");
596
596
  @source inline("p-2");
@@ -877,5 +877,4 @@ type IJsonSchema = {
877
877
  $ref?: string;
878
878
  };
879
879
  //#endregion
880
- export { OpenAPIV3, OpenAPIV3_2 };
881
- //# sourceMappingURL=types.d.ts.map
880
+ export { OpenAPIV3, OpenAPIV3_2 };
@@ -78,5 +78,4 @@ interface BeforeWriteContext {
78
78
  declare function generateFiles(options: Config): Promise<void>;
79
79
  declare function generateFilesOnly(options: DistributiveOmit<Config, 'output'>): Promise<OutputFile[]>;
80
80
  //#endregion
81
- export { Config, OutputFile, generateFiles, generateFilesOnly };
82
- //# sourceMappingURL=generate-file.d.ts.map
81
+ export { Config, OutputFile, generateFiles, generateFilesOnly };
@@ -133,5 +133,3 @@ function writeIndexFiles(context, options) {
133
133
  }
134
134
  //#endregion
135
135
  export { generateFiles, generateFilesOnly };
136
-
137
- //# sourceMappingURL=generate-file.js.map
package/dist/i18n.d.ts CHANGED
@@ -96,5 +96,4 @@ declare const defaultTranslations: {
96
96
  type Translations = typeof defaultTranslations;
97
97
  declare function defineI18nOpenAPI<Languages extends string>(config: I18nUIConfig<Languages>, translations: Partial<Record<NoInfer<Languages>, Partial<Translations>>>): I18nUIConfig<Languages>;
98
98
  //#endregion
99
- export { Translations, defaultTranslations, defineI18nOpenAPI };
100
- //# sourceMappingURL=i18n.d.ts.map
99
+ export { Translations, defaultTranslations, defineI18nOpenAPI };
package/dist/i18n.js CHANGED
@@ -109,5 +109,3 @@ function defineI18nOpenAPI(config, translations) {
109
109
  }
110
110
  //#endregion
111
111
  export { defaultTranslations, defineI18nOpenAPI };
112
-
113
- //# sourceMappingURL=i18n.js.map
@@ -1,6 +1,5 @@
1
1
  import { BrowserFetcherOptions, FetchResult } from "./fetcher.js";
2
2
  import { SchemaScope } from "./schema.js";
3
- import { ProcessedDocument } from "../utils/document/process.js";
4
3
  import { Document, HttpMethods, ParameterObject } from "../types.js";
5
4
  import { ParsedSchema, SecurityEntry } from "../utils/schema/index.js";
6
5
  import { ComponentProps, FC, ReactNode } from "react";
@@ -20,12 +19,8 @@ interface PlaygroundClientProps extends ComponentProps<'form'>, SchemaScope {
20
19
  route: string;
21
20
  method: HttpMethods;
22
21
  securities: SecurityEntry[][];
23
- /** the OpenAPI document */
24
- doc: {
25
- bundled: Document;
26
- } | {
27
- processed: ProcessedDocument;
28
- };
22
+ /** the OpenAPI document (not dereferenced) */
23
+ doc: Document;
29
24
  proxyUrl?: string;
30
25
  }
31
26
  interface ResultDisplayProps extends ComponentProps<'div'> {
@@ -109,5 +104,4 @@ declare const Custom: {
109
104
  };
110
105
  };
111
106
  //#endregion
112
- export { AuthField, CollapsiblePanelProps, Custom, DefaultCollapsiblePanel, DefaultResultDisplay, FormValues, PlaygroundClientOptions, PlaygroundClientProps, ResultDisplayProps, PlaygroundClient as default };
113
- //# sourceMappingURL=client.d.ts.map
107
+ export { AuthField, CollapsiblePanelProps, Custom, DefaultCollapsiblePanel, DefaultResultDisplay, FormValues, PlaygroundClientOptions, PlaygroundClientProps, ResultDisplayProps, PlaygroundClient as default };
@@ -8,6 +8,7 @@ import { cn } from "../utils/cn.js";
8
8
  import { MethodLabel } from "../ui/components/method-label.js";
9
9
  import { useQuery } from "../utils/use-query.js";
10
10
  import { encodeRequestData } from "../requests/media/encode.js";
11
+ import { dereferenceSwallow } from "../utils/schema/dereference.js";
11
12
  import { SchemaProvider, anyFields, useResolvedSchema } from "./schema.js";
12
13
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/components/select.js";
13
14
  import { labelVariants } from "../ui/components/input.js";
@@ -17,7 +18,6 @@ import { FieldInput, FieldSet, JsonInput, ObjectInput } from "./components/input
17
18
  import { ClientCodeBlock } from "../ui/components/codeblock.js";
18
19
  import { useOperationContext } from "../ui/operation/client.js";
19
20
  import { OauthDialog, OauthDialogTrigger } from "./components/oauth-dialog.js";
20
- import { dereferenceDocument } from "../utils/document/dereference.js";
21
21
  import { Fragment, useEffect, useMemo, useRef, useState } from "react";
22
22
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
23
23
  import { ChevronDown, LoaderCircle } from "lucide-react";
@@ -26,20 +26,29 @@ import { buttonVariants } from "fumadocs-ui/components/ui/button";
26
26
  import { StfProvider, useDataEngine, useFieldValue, useListener, useStf } from "@fumari/stf";
27
27
  import { objectGet, objectSet, stringifyFieldKey } from "@fumari/stf/lib/utils";
28
28
  //#region src/playground/client.tsx
29
- function getBodyInfo(operation) {
30
- const content = operation.requestBody?.content;
31
- if (!content) return;
32
- const mediaType = getPreferredType(content);
33
- if (mediaType) return {
34
- mediaType,
35
- schema: content[mediaType].schema ?? true
36
- };
37
- }
38
29
  function PlaygroundClient({ route, method, securities, doc, proxyUrl, writeOnly, readOnly, ...rest }) {
39
30
  const t = useTranslations();
40
- const schema = "processed" in doc ? doc.processed : useMemo(() => dereferenceDocument(doc.bundled), [doc.bundled]);
41
- const operation = schema.dereferenced.paths[route][method];
42
- const body = getBodyInfo(operation);
31
+ const { parameters, body } = useMemo(() => {
32
+ const operation = doc.paths[route][method];
33
+ const parameters = operation.parameters?.map((param) => dereferenceSwallow(param, doc)) ?? [];
34
+ let body;
35
+ if (operation.requestBody) {
36
+ const content = dereferenceSwallow(operation.requestBody, doc).content;
37
+ const mediaType = content ? getPreferredType(content) : void 0;
38
+ if (content && mediaType) body = {
39
+ mediaType,
40
+ schema: dereferenceSwallow(content[mediaType], doc).schema ?? true
41
+ };
42
+ }
43
+ return {
44
+ body,
45
+ parameters
46
+ };
47
+ }, [
48
+ doc,
49
+ route,
50
+ method
51
+ ]);
43
52
  const { example: exampleId, examples, setExampleData } = useOperationContext();
44
53
  const { server } = useServerContext();
45
54
  const storageKeys = useStorageKey();
@@ -69,7 +78,7 @@ function PlaygroundClient({ route, method, securities, doc, proxyUrl, writeOnly,
69
78
  ...mapInputs(input),
70
79
  method,
71
80
  bodyMediaType: body?.mediaType
72
- }, mediaAdapters, operation.parameters);
81
+ }, mediaAdapters, parameters);
73
82
  return fetcher.fetch(joinURL(withBase(server ? resolveServerUrl(server.url, server.variables) : "/", window.location.origin), resolveRequestData(route, encoded)), encoded);
74
83
  });
75
84
  const timerRef = useRef(null);
@@ -88,7 +97,7 @@ function PlaygroundClient({ route, method, securities, doc, proxyUrl, writeOnly,
88
97
  method,
89
98
  bodyMediaType: body?.mediaType
90
99
  };
91
- setExampleData(data, encodeRequestData(data, mediaAdapters, operation.parameters));
100
+ setExampleData(data, encodeRequestData(data, mediaAdapters, parameters));
92
101
  }, timerRef.current ? 400 : 0);
93
102
  }
94
103
  });
@@ -102,7 +111,7 @@ function PlaygroundClient({ route, method, securities, doc, proxyUrl, writeOnly,
102
111
  return /* @__PURE__ */ jsx(StfProvider, {
103
112
  value: stf,
104
113
  children: /* @__PURE__ */ jsx(SchemaProvider, {
105
- schema,
114
+ doc,
106
115
  writeOnly,
107
116
  readOnly,
108
117
  children: /* @__PURE__ */ jsxs("form", {
@@ -143,7 +152,7 @@ function PlaygroundClient({ route, method, securities, doc, proxyUrl, writeOnly,
143
152
  setSecurityId,
144
153
  children: inputs.map((input) => /* @__PURE__ */ jsx(Fragment, { children: input.children }, stringifyFieldKey(input.fieldName)))
145
154
  }),
146
- /* @__PURE__ */ jsx(ParametersForm, { parameters: operation.parameters }),
155
+ /* @__PURE__ */ jsx(ParametersForm, { parameters }),
147
156
  body && /* @__PURE__ */ jsx(CollapsiblePanel, {
148
157
  "data-type": "body",
149
158
  title: t.body,
@@ -220,7 +229,7 @@ function ParameterItem({ type, parameters }) {
220
229
  }, stringifyFieldKey(fieldName));
221
230
  });
222
231
  }
223
- function ParametersForm({ parameters = [] }) {
232
+ function ParametersForm({ parameters }) {
224
233
  const { components: { CollapsiblePanel = DefaultCollapsiblePanel } = {} } = useApiContext().client.playground ?? {};
225
234
  const t = useTranslations();
226
235
  const displayNames = {
@@ -488,5 +497,3 @@ const Custom = { useController(fieldName, options) {
488
497
  } };
489
498
  //#endregion
490
499
  export { Custom, DefaultCollapsiblePanel, DefaultResultDisplay, PlaygroundClient as default };
491
-
492
- //# sourceMappingURL=client.js.map
@@ -418,5 +418,3 @@ function ArrayInput({ fieldName, items: itemSchema, ...props }) {
418
418
  }
419
419
  //#endregion
420
420
  export { FieldInput, FieldSet, JsonInput, ObjectInput };
421
-
422
- //# sourceMappingURL=inputs.js.map
@@ -281,5 +281,3 @@ function OauthDialog({ scheme, scopes, setToken, children, open, setOpen }) {
281
281
  const OauthDialogTrigger = DialogTrigger;
282
282
  //#endregion
283
283
  export { OauthDialog, OauthDialogTrigger };
284
-
285
- //# sourceMappingURL=oauth-dialog.js.map
@@ -124,5 +124,3 @@ function Field({ fieldName, variable }) {
124
124
  }
125
125
  //#endregion
126
126
  export { ServerSelect as default };
127
-
128
- //# sourceMappingURL=server-select.js.map
@@ -24,5 +24,4 @@ interface BrowserFetcherOptions {
24
24
  onRequestInit?: (requestInit: RequestInit) => Awaitable<RequestInit>;
25
25
  }
26
26
  //#endregion
27
- export { BrowserFetcherOptions, FetchResult };
28
- //# sourceMappingURL=fetcher.d.ts.map
27
+ export { BrowserFetcherOptions, FetchResult };
@@ -67,5 +67,3 @@ function createBrowserFetcher(adapters, { proxyUrl, proxyForwardCookie = true, r
67
67
  }
68
68
  //#endregion
69
69
  export { createBrowserFetcher };
70
-
71
- //# sourceMappingURL=fetcher.js.map
@@ -14,5 +14,4 @@ interface SchemaScope {
14
14
  readOnly: boolean;
15
15
  }
16
16
  //#endregion
17
- export { SchemaScope };
18
- //# sourceMappingURL=schema.d.ts.map
17
+ export { SchemaScope };
@@ -1,5 +1,6 @@
1
- import { mergeAllOf } from "../utils/merge-schema.js";
1
+ import { mergeAllOf } from "../utils/schema/merge.js";
2
2
  import { schemaToString } from "../utils/schema/to-string.js";
3
+ import { dereferenceSwallow } from "../utils/schema/dereference.js";
3
4
  import { createContext, use, useMemo } from "react";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  import { Ajv2020 } from "ajv/dist/2020.js";
@@ -19,7 +20,7 @@ const anyFields = {
19
20
  items: true,
20
21
  additionalProperties: true
21
22
  };
22
- function SchemaProvider({ schema, readOnly, writeOnly, children }) {
23
+ function SchemaProvider({ doc, readOnly, writeOnly, children }) {
23
24
  const ajv = useMemo(() => new Ajv2020({
24
25
  strict: false,
25
26
  validateSchema: false,
@@ -27,12 +28,12 @@ function SchemaProvider({ schema, readOnly, writeOnly, children }) {
27
28
  }), []);
28
29
  return /* @__PURE__ */ jsx(SchemaContext.Provider, {
29
30
  value: useMemo(() => ({
30
- schema,
31
+ doc,
31
32
  ajv,
32
33
  readOnly,
33
34
  writeOnly
34
35
  }), [
35
- schema,
36
+ doc,
36
37
  ajv,
37
38
  readOnly,
38
39
  writeOnly
@@ -51,7 +52,7 @@ function useSchemaScope() {
51
52
  * @param depth - The depth to avoid duplicated field name with same schema (e.g. nested `oneOf`).
52
53
  */
53
54
  function useFieldInfo(fieldName, schema, depth = 0) {
54
- const { ajv } = use(SchemaContext);
55
+ const { ajv, doc } = use(SchemaContext);
55
56
  const engine = useDataEngine();
56
57
  const { generateDefault } = useSchemaUtils();
57
58
  const [info, setInfo] = useFieldValue([], { stf: useNamespace({
@@ -62,7 +63,10 @@ function useFieldInfo(fieldName, schema, depth = 0) {
62
63
  const union = getUnion(schema);
63
64
  if (union) {
64
65
  const [members, field] = union;
65
- out.oneOf = members.findIndex((item) => ajv.validate(item, value));
66
+ out.oneOf = members.findIndex((item) => typeof item === "object" && ajv.validate({
67
+ ...doc,
68
+ ...item
69
+ }, value));
66
70
  if (out.oneOf === -1) out.oneOf = 0;
67
71
  out.unionField = field;
68
72
  }
@@ -70,6 +74,7 @@ function useFieldInfo(fieldName, schema, depth = 0) {
70
74
  const types = schema.type;
71
75
  out.selectedType = types.find((type) => {
72
76
  return ajv.validate({
77
+ ...doc,
73
78
  ...schema,
74
79
  type
75
80
  }, value);
@@ -100,29 +105,35 @@ function useFieldInfo(fieldName, schema, depth = 0) {
100
105
  };
101
106
  }
102
107
  function useSchemaUtils() {
103
- const { schema, readOnly } = use(SchemaContext);
108
+ const { doc, readOnly } = use(SchemaContext);
104
109
  return {
105
110
  generateDefault(schema) {
106
111
  return sample(schema, {
107
112
  skipNonRequired: true,
108
113
  skipReadOnly: !readOnly,
109
114
  quiet: true
110
- });
115
+ }, doc);
111
116
  },
112
117
  schemaToString(value, flags) {
113
- return schemaToString(value, schema, flags);
118
+ return schemaToString(value, (raw) => ({
119
+ raw,
120
+ dereferenced: dereferenceSwallow(raw, doc)
121
+ }), flags);
114
122
  }
115
123
  };
116
124
  }
117
125
  /**
118
- * merge `allOf`.
126
+ * dereference & merge `allOf`.
119
127
  */
120
128
  function useResolvedSchema(raw) {
129
+ const { doc } = use(SchemaContext);
121
130
  return useMemo(() => {
122
- let out = raw;
123
- if (typeof out === "object" && out.allOf) out = mergeAllOf(out);
131
+ let out = dereferenceSwallow(raw, doc);
132
+ if (typeof out === "object" && out.allOf) out = mergeAllOf(out, { dereference(schema) {
133
+ return dereferenceSwallow(schema, doc);
134
+ } });
124
135
  return typeof out === "boolean" ? anyFields : out;
125
- }, [raw]);
136
+ }, [doc, raw]);
126
137
  }
127
138
  function getUnion(schema) {
128
139
  if (schema.anyOf) return [schema.anyOf, "anyOf"];
@@ -130,5 +141,3 @@ function getUnion(schema) {
130
141
  }
131
142
  //#endregion
132
143
  export { SchemaProvider, anyFields, useFieldInfo, useResolvedSchema, useSchemaScope, useSchemaUtils };
133
-
134
- //# sourceMappingURL=schema.js.map
@@ -54,5 +54,3 @@ function getStatusInfo(status, t) {
54
54
  }
55
55
  //#endregion
56
56
  export { getStatusInfo };
57
-
58
- //# sourceMappingURL=status-info.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGeneratorRegistry } from "./index.js";
3
3
  //#region src/requests/generators/all.d.ts
4
4
  declare function registerDefault(registry: CodeUsageGeneratorRegistry): void;
5
5
  //#endregion
6
- export { registerDefault };
7
- //# sourceMappingURL=all.d.ts.map
6
+ export { registerDefault };
@@ -15,5 +15,3 @@ function registerDefault(registry) {
15
15
  }
16
16
  //#endregion
17
17
  export { registerDefault };
18
-
19
- //# sourceMappingURL=all.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGenerator } from "./index.js";
3
3
  //#region src/requests/generators/csharp.d.ts
4
4
  declare const csharp: CodeUsageGenerator;
5
5
  //#endregion
6
- export { csharp };
7
- //# sourceMappingURL=csharp.d.ts.map
6
+ export { csharp };
@@ -39,5 +39,3 @@ const csharp = {
39
39
  };
40
40
  //#endregion
41
41
  export { csharp };
42
-
43
- //# sourceMappingURL=csharp.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGenerator } from "./index.js";
3
3
  //#region src/requests/generators/curl.d.ts
4
4
  declare const curl: CodeUsageGenerator;
5
5
  //#endregion
6
- export { curl };
7
- //# sourceMappingURL=curl.d.ts.map
6
+ export { curl };
@@ -27,5 +27,3 @@ const curl = {
27
27
  };
28
28
  //#endregion
29
29
  export { curl };
30
-
31
- //# sourceMappingURL=curl.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGenerator } from "./index.js";
3
3
  //#region src/requests/generators/go.d.ts
4
4
  declare const go: CodeUsageGenerator;
5
5
  //#endregion
6
- export { go };
7
- //# sourceMappingURL=go.d.ts.map
6
+ export { go };
@@ -50,5 +50,3 @@ ${indent(Array.from(headers.entries()).map(([key, value]) => `req.Header.Add("${
50
50
  };
51
51
  //#endregion
52
52
  export { go };
53
-
54
- //# sourceMappingURL=go.js.map
@@ -52,5 +52,4 @@ type CodeUsageGeneratorFn<ServerContext = unknown> = (url: string, data: Request
52
52
  server: ServerContext;
53
53
  }) => string;
54
54
  //#endregion
55
- export { CodeUsageGenerator, CodeUsageGeneratorFn, CodeUsageGeneratorRegistry, InlineCodeUsageGenerator, createCodeUsageGeneratorRegistry };
56
- //# sourceMappingURL=index.d.ts.map
55
+ export { CodeUsageGenerator, CodeUsageGeneratorFn, CodeUsageGeneratorRegistry, InlineCodeUsageGenerator, createCodeUsageGeneratorRegistry };
@@ -37,5 +37,3 @@ function createCodeUsageGeneratorRegistry(inherit) {
37
37
  }
38
38
  //#endregion
39
39
  export { createCodeUsageGeneratorRegistry };
40
-
41
- //# sourceMappingURL=index.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGenerator } from "./index.js";
3
3
  //#region src/requests/generators/java.d.ts
4
4
  declare const java: CodeUsageGenerator;
5
5
  //#endregion
6
- export { java };
7
- //# sourceMappingURL=java.d.ts.map
6
+ export { java };
@@ -55,5 +55,3 @@ const java = {
55
55
  };
56
56
  //#endregion
57
57
  export { java };
58
-
59
- //# sourceMappingURL=java.js.map
@@ -3,5 +3,4 @@ import { CodeUsageGenerator } from "./index.js";
3
3
  //#region src/requests/generators/javascript.d.ts
4
4
  declare const javascript: CodeUsageGenerator;
5
5
  //#endregion
6
- export { javascript };
7
- //# sourceMappingURL=javascript.d.ts.map
6
+ export { javascript };
@@ -37,5 +37,3 @@ const javascript = {
37
37
  };
38
38
  //#endregion
39
39
  export { javascript };
40
-
41
- //# sourceMappingURL=javascript.js.map
@@ -4,5 +4,4 @@ import { CodeUsageGenerator } from "./index.js";
4
4
  declare const python: CodeUsageGenerator;
5
5
  declare function generatePythonObject(v: unknown, imports: Set<string>): string;
6
6
  //#endregion
7
- export { generatePythonObject, python };
8
- //# sourceMappingURL=python.d.ts.map
7
+ export { generatePythonObject, python };
@@ -47,5 +47,3 @@ function generatePythonObject(v, imports) {
47
47
  }
48
48
  //#endregion
49
49
  export { generatePythonObject, python };
50
-
51
- //# sourceMappingURL=python.js.map
@@ -47,5 +47,4 @@ interface MediaAdapter {
47
47
  }, ctx: MediaContext) => string | undefined;
48
48
  }
49
49
  //#endregion
50
- export { MediaAdapter };
51
- //# sourceMappingURL=adapter.d.ts.map
50
+ export { MediaAdapter };
@@ -120,5 +120,3 @@ function str(init, mediaType, ctx) {
120
120
  }
121
121
  //#endregion
122
122
  export { defaultAdapters };
123
-
124
- //# sourceMappingURL=adapter.js.map
@@ -6,5 +6,4 @@ interface EncodedParameterMultiple {
6
6
  readonly values: string[];
7
7
  }
8
8
  //#endregion
9
- export { EncodedParameter, EncodedParameterMultiple };
10
- //# sourceMappingURL=encode.d.ts.map
9
+ export { EncodedParameter, EncodedParameterMultiple };
@@ -128,5 +128,3 @@ function serializeCookieParameter(field, value, output) {
128
128
  }
129
129
  //#endregion
130
130
  export { encodeRequestData };
131
-
132
- //# sourceMappingURL=encode.js.map
@@ -33,5 +33,3 @@ function isMediaTypeSupported(mediaType, adapters) {
33
33
  }
34
34
  //#endregion
35
35
  export { isMediaTypeSupported, resolveMediaAdapter };
36
-
37
- //# sourceMappingURL=resolve-adapter.js.map
@@ -28,5 +28,3 @@ function indent(code, tab = 1) {
28
28
  }
29
29
  //#endregion
30
30
  export { escapeString, indent, inputToString };
31
-
32
- //# sourceMappingURL=string-utils.js.map
@@ -20,5 +20,4 @@ interface RequestData {
20
20
  bodyMediaType?: string;
21
21
  }
22
22
  //#endregion
23
- export { RawRequestData, RequestData };
24
- //# sourceMappingURL=types.d.ts.map
23
+ export { RawRequestData, RequestData };
@@ -55,5 +55,3 @@ function Trigger({ path, method }) {
55
55
  }
56
56
  //#endregion
57
57
  export { ScalarPlayground as default };
58
-
59
- //# sourceMappingURL=client.js.map
@@ -8,5 +8,4 @@ import { CreateAPIPageOptions } from "../ui/index.js";
8
8
  */
9
9
  declare function withScalar(options?: CreateAPIPageOptions): CreateAPIPageOptions;
10
10
  //#endregion
11
- export { withScalar };
12
- //# sourceMappingURL=index.d.ts.map
11
+ export { withScalar };
@@ -27,5 +27,3 @@ function withScalar(options = {}) {
27
27
  }
28
28
  //#endregion
29
29
  export { withScalar };
30
-
31
- //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import { ProcessedDocument } from "../utils/document/process.js";
2
1
  import { InlineCodeUsageGenerator } from "../requests/generators/index.js";
3
2
  import { createProxy } from "./proxy.js";
3
+ import { ProcessedDocument } from "../utils/document/process.js";
4
4
  import { Document } from "../types.js";
5
5
 
6
6
  //#region src/server/create.d.ts
@@ -37,5 +37,4 @@ declare function createOpenAPI(options?: OpenAPIOptions): OpenAPIServer;
37
37
  */
38
38
  declare function createCodeSample<T>(options: InlineCodeUsageGenerator<T>): InlineCodeUsageGenerator<T>;
39
39
  //#endregion
40
- export { OpenAPIOptions, OpenAPIServer, createCodeSample, createOpenAPI };
41
- //# sourceMappingURL=create.d.ts.map
40
+ export { OpenAPIOptions, OpenAPIServer, createCodeSample, createOpenAPI };
@@ -40,5 +40,3 @@ function createCodeSample(options) {
40
40
  }
41
41
  //#endregion
42
42
  export { createCodeSample, createOpenAPI };
43
-
44
- //# sourceMappingURL=create.js.map
@@ -31,5 +31,4 @@ interface CreateProxyOptions {
31
31
  }
32
32
  declare function createProxy(options?: CreateProxyOptions): Proxy;
33
33
  //#endregion
34
- export { createProxy };
35
- //# sourceMappingURL=proxy.d.ts.map
34
+ export { createProxy };
@@ -65,5 +65,3 @@ function createProxy(options = {}) {
65
65
  }
66
66
  //#endregion
67
67
  export { createProxy };
68
-
69
- //# sourceMappingURL=proxy.js.map
@@ -51,5 +51,4 @@ declare function openapiSource(server: OpenAPIServer, options?: SchemaToPagesOpt
51
51
  */
52
52
  declare function transformerOpenAPI(): PageTreeTransformer;
53
53
  //#endregion
54
- export { InternalOpenAPIMeta, openapiPlugin, openapiSource, transformerOpenAPI };
55
- //# sourceMappingURL=source-api.d.ts.map
54
+ export { InternalOpenAPIMeta, openapiPlugin, openapiSource, transformerOpenAPI };
@@ -142,5 +142,3 @@ function transformerOpenAPI() {
142
142
  }
143
143
  //#endregion
144
144
  export { openapiPlugin, openapiSource, transformerOpenAPI };
145
-
146
- //# sourceMappingURL=source-api.js.map
package/dist/types.d.ts CHANGED
@@ -47,5 +47,4 @@ interface RenderContext extends Pick<OpenAPIOptions, 'proxyUrl'>, Omit<RequireKe
47
47
  type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
48
48
  type Awaitable<T> = T | Promise<T>;
49
49
  //#endregion
50
- export { Awaitable, CallbackObject, DistributiveOmit, Document, ExampleObject, HttpMethods, MediaTypeObject, MethodInformation, OAuth2SecurityScheme, OperationObject, ParameterObject, PathItemObject, ReferenceObject, RenderContext, RequestBodyObject, ResponseObject, SecuritySchemeObject, ServerObject, ServerVariableObject, TagObject };
51
- //# sourceMappingURL=types.d.ts.map
50
+ export { Awaitable, CallbackObject, DistributiveOmit, Document, ExampleObject, HttpMethods, MediaTypeObject, MethodInformation, OAuth2SecurityScheme, OperationObject, ParameterObject, PathItemObject, ReferenceObject, RenderContext, RequestBodyObject, ResponseObject, SecuritySchemeObject, ServerObject, ServerVariableObject, TagObject };
@@ -28,5 +28,4 @@ interface OperationItem {
28
28
  method: HttpMethods;
29
29
  }
30
30
  //#endregion
31
- export { ApiPageProps, OperationItem, WebhookItem };
32
- //# sourceMappingURL=api-page.d.ts.map
31
+ export { ApiPageProps, OperationItem, WebhookItem };
@@ -55,5 +55,3 @@ function APIPage({ showTitle: hasHead = false, showDescription, operations, webh
55
55
  }
56
56
  //#endregion
57
57
  export { APIPage };
58
-
59
- //# sourceMappingURL=api-page.js.map