fumadocs-openapi 9.0.17 → 9.1.0

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 (61) hide show
  1. package/dist/media/adapter.d.ts +47 -16
  2. package/dist/media/adapter.d.ts.map +1 -1
  3. package/dist/media/adapter.js +3 -4
  4. package/dist/playground/client.d.ts +6 -4
  5. package/dist/playground/client.d.ts.map +1 -1
  6. package/dist/playground/client.js +19 -18
  7. package/dist/playground/fetcher.d.ts.map +1 -1
  8. package/dist/playground/fetcher.js +14 -24
  9. package/dist/playground/index.d.ts +3 -5
  10. package/dist/playground/index.d.ts.map +1 -1
  11. package/dist/playground/index.js +2 -4
  12. package/dist/render/api-page.d.ts.map +1 -1
  13. package/dist/render/api-page.js +2 -8
  14. package/dist/render/operation/api-example.d.ts +3 -2
  15. package/dist/render/operation/api-example.d.ts.map +1 -1
  16. package/dist/render/operation/api-example.js +8 -6
  17. package/dist/render/operation/get-request-data.d.ts +2 -2
  18. package/dist/render/operation/get-request-data.d.ts.map +1 -1
  19. package/dist/render/renderer.d.ts.map +1 -1
  20. package/dist/render/renderer.js +3 -2
  21. package/dist/render/schema.d.ts +1 -1
  22. package/dist/render/schema.d.ts.map +1 -1
  23. package/dist/render/schema.js +11 -12
  24. package/dist/requests/_shared.d.ts +20 -4
  25. package/dist/requests/_shared.d.ts.map +1 -1
  26. package/dist/requests/_shared.js +113 -0
  27. package/dist/requests/csharp.d.ts.map +1 -1
  28. package/dist/requests/csharp.js +12 -8
  29. package/dist/requests/curl.d.ts.map +1 -1
  30. package/dist/requests/curl.js +5 -6
  31. package/dist/requests/go.d.ts +1 -1
  32. package/dist/requests/go.d.ts.map +1 -1
  33. package/dist/requests/go.js +6 -6
  34. package/dist/requests/java.d.ts.map +1 -1
  35. package/dist/requests/java.js +8 -8
  36. package/dist/requests/javascript.d.ts.map +1 -1
  37. package/dist/requests/javascript.js +9 -6
  38. package/dist/requests/python.d.ts.map +1 -1
  39. package/dist/requests/python.js +12 -5
  40. package/dist/types.d.ts +1 -1
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/ui/components/accordion.d.ts.map +1 -1
  43. package/dist/ui/components/accordion.js +1 -1
  44. package/dist/ui/contexts/api.d.ts +2 -1
  45. package/dist/ui/contexts/api.d.ts.map +1 -1
  46. package/dist/ui/contexts/code-example.d.ts +5 -4
  47. package/dist/ui/contexts/code-example.d.ts.map +1 -1
  48. package/dist/ui/contexts/code-example.js +14 -11
  49. package/dist/ui/index.d.ts.map +1 -1
  50. package/dist/ui/index.js +8 -2
  51. package/dist/ui/lazy.d.ts +2 -1
  52. package/dist/ui/lazy.d.ts.map +1 -1
  53. package/dist/utils/get-typescript-schema.d.ts.map +1 -1
  54. package/dist/utils/get-typescript-schema.js +13 -8
  55. package/dist/utils/process-document.d.ts.map +1 -1
  56. package/dist/utils/process-document.js +8 -11
  57. package/dist/utils/schema-to-string.d.ts +2 -1
  58. package/dist/utils/schema-to-string.d.ts.map +1 -1
  59. package/dist/utils/schema-to-string.js +54 -46
  60. package/dist/utils/url.js +10 -12
  61. package/package.json +5 -5
@@ -1,15 +1,31 @@
1
1
  import type { MediaAdapter } from '../media/adapter.js';
2
+ import type { NoReference } from '../utils/schema.js';
3
+ import type { ParameterObject } from '../types.js';
2
4
  export type SampleGenerator = (url: string, data: RequestData, context: {
3
5
  mediaAdapters: Record<string, MediaAdapter>;
4
6
  }) => string;
7
+ export interface RawRequestData {
8
+ method: string;
9
+ path: Record<string, unknown>;
10
+ query: Record<string, unknown>;
11
+ header: Record<string, unknown>;
12
+ cookie: Record<string, unknown>;
13
+ body?: unknown;
14
+ bodyMediaType?: string;
15
+ }
16
+ interface EncodedParameter {
17
+ readonly value: string | string[];
18
+ }
5
19
  export interface RequestData {
6
20
  method: string;
7
- path: Record<string, string>;
8
- query: Record<string, string>;
9
- header: Record<string, string>;
10
- cookie: Record<string, string>;
21
+ path: Record<string, EncodedParameter>;
22
+ query: Record<string, EncodedParameter>;
23
+ header: Record<string, EncodedParameter>;
24
+ cookie: Record<string, EncodedParameter>;
11
25
  body?: unknown;
12
26
  bodyMediaType?: string;
13
27
  }
14
28
  export declare function ident(code: string, tab?: number): string;
29
+ export declare function encodeRequestData(from: RawRequestData, adapters: Record<string, MediaAdapter>, parameters: NoReference<ParameterObject>[]): RequestData;
30
+ export {};
15
31
  //# sourceMappingURL=_shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/requests/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C,KACE,MAAM,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,UAKlD"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/requests/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C,KACE,MAAM,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,UAKlD;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,UAAU,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,GACzC,WAAW,CAsIb"}
@@ -1,6 +1,119 @@
1
+ const FormDelimiter = {
2
+ spaceDelimited: ' ',
3
+ pipeDelimited: '|',
4
+ };
5
+ const PathPrefix = {
6
+ label: '.',
7
+ matrix: ';',
8
+ };
1
9
  export function ident(code, tab = 1) {
2
10
  return code
3
11
  .split('\n')
4
12
  .map((v) => ' '.repeat(tab) + v)
5
13
  .join('\n');
6
14
  }
15
+ export function encodeRequestData(from, adapters, parameters) {
16
+ function getMediaEncoder(field) {
17
+ if (!field.content)
18
+ return;
19
+ for (const k in field.content) {
20
+ if (k in adapters) {
21
+ return (v) => String(adapters[k].encode({ body: v }));
22
+ }
23
+ }
24
+ }
25
+ function writeObject(parentKey, value, deep, output) {
26
+ for (const k in value) {
27
+ const prop = value[k];
28
+ if (prop == null)
29
+ continue;
30
+ const key = deep ? `${parentKey}[${k}]` : k;
31
+ if (!deep || typeof prop !== 'object') {
32
+ output[key] = {
33
+ value: String(prop),
34
+ };
35
+ continue;
36
+ }
37
+ writeObject(key, value, deep, output);
38
+ }
39
+ }
40
+ function write(key, value, field, output = {}) {
41
+ const encoder = getMediaEncoder(field);
42
+ if (encoder) {
43
+ output[key] = { value: encoder(value) };
44
+ return output;
45
+ }
46
+ const explode = field.explode ?? true;
47
+ let prefix = '';
48
+ let sep = ',';
49
+ if (field.in === 'path') {
50
+ const style = field.style ?? 'simple';
51
+ if (style in PathPrefix) {
52
+ prefix = PathPrefix[style];
53
+ if (explode)
54
+ sep = prefix;
55
+ }
56
+ }
57
+ if (Array.isArray(value)) {
58
+ // header & cookie doesn't support explode for array values
59
+ if (explode && field.in !== 'header' && field.in !== 'cookie') {
60
+ output[key] = {
61
+ value: prefix + value.map(String),
62
+ };
63
+ return output;
64
+ }
65
+ if (field.in === 'query') {
66
+ const style = field.style ?? 'form';
67
+ if (style in FormDelimiter)
68
+ sep = FormDelimiter[style];
69
+ }
70
+ output[key] = {
71
+ value: prefix + value.map(String).join(sep),
72
+ };
73
+ return output;
74
+ }
75
+ if (typeof value === 'object' && value) {
76
+ // header & path creates key-value pairs
77
+ if (explode && (field.in === 'header' || field.in === 'path')) {
78
+ output[key] = {
79
+ value: prefix +
80
+ Object.entries(value)
81
+ .map(([k, v]) => `${k}=${v}`)
82
+ .join(sep),
83
+ };
84
+ return output;
85
+ }
86
+ if (explode || field.style === 'deepObject') {
87
+ writeObject(key, value, field.style === 'deepObject', output);
88
+ return output;
89
+ }
90
+ output[key] = {
91
+ value: prefix + Object.entries(value).flat().join(sep),
92
+ };
93
+ return output;
94
+ }
95
+ output[key] = {
96
+ value: prefix + String(value),
97
+ };
98
+ return output;
99
+ }
100
+ const result = {
101
+ method: from.method,
102
+ body: from.body,
103
+ bodyMediaType: from.bodyMediaType,
104
+ };
105
+ for (const type of ['cookie', 'query', 'header', 'path']) {
106
+ const out = {};
107
+ for (const k in from[type]) {
108
+ const value = from[type][k];
109
+ if (value == null)
110
+ continue;
111
+ const field = parameters.find((p) => p.name === k && p.in === type);
112
+ if (!field)
113
+ continue;
114
+ write(k, value, field, out);
115
+ }
116
+ result[type] = out;
117
+ }
118
+ return result;
119
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../src/requests/csharp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,eAAO,MAAM,SAAS,EAAE,eA0DvB,CAAC"}
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../src/requests/csharp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,SAAS,EAAE,eAkEvB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  'use client';
2
- import { resolveRequestData } from '../utils/url.js';
3
2
  export const generator = (url, data, { mediaAdapters }) => {
4
3
  const s = [];
5
4
  const imports = new Set(['System', 'System.Net.Http', 'System.Text']);
@@ -22,23 +21,28 @@ export const generator = (url, data, { mediaAdapters }) => {
22
21
  s.push(body, '');
23
22
  }
24
23
  s.push('var client = new HttpClient();');
24
+ const headerLines = [];
25
+ function addHeader(key, value) {
26
+ headerLines.push(`client.DefaultRequestHeaders.Add("${key}", ${JSON.stringify(value)});`);
27
+ }
28
+ for (const k in headers) {
29
+ addHeader(k, headers[k].value);
30
+ }
25
31
  // Add cookie header if cookies are present
26
32
  if (Object.keys(data.cookie).length > 0) {
27
- headers['cookie'] = Object.entries(data.cookie)
28
- .map(([key, value]) => `${key}=${value}`)
33
+ const cookie = Object.entries(data.cookie)
34
+ .map(([key, param]) => `${key}=${param.value}`)
29
35
  .join('; ');
36
+ addHeader('cookie', cookie);
30
37
  }
31
- // Add headers
32
- const headerLines = Object.entries(headers).map(([key, value]) => `client.DefaultRequestHeaders.Add("${key}", ${JSON.stringify(value)});`);
33
38
  s.push(...headerLines);
34
39
  // Build the request
35
- const resolvedUrl = resolveRequestData(url, data);
36
40
  const method = data.method[0].toUpperCase() + data.method.slice(1).toLowerCase() + 'Async';
37
41
  if (body) {
38
- s.push(`var response = await client.${method}("${resolvedUrl}", body);`);
42
+ s.push(`var response = await client.${method}("${url}", body);`);
39
43
  }
40
44
  else {
41
- s.push(`var response = await client.${method}("${resolvedUrl}");`);
45
+ s.push(`var response = await client.${method}("${url}");`);
42
46
  }
43
47
  // Add response handling
44
48
  s.push('var responseBody = await response.Content.ReadAsStringAsync();');
@@ -1 +1 @@
1
- {"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../src/requests/curl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGjE,eAAO,MAAM,SAAS,EAAE,eAsCvB,CAAC"}
1
+ {"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../src/requests/curl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,SAAS,EAAE,eAsCvB,CAAC"}
@@ -1,17 +1,16 @@
1
1
  'use client';
2
2
  import { escapeString, inputToString } from '../utils/input-to-string.js';
3
3
  import { ident } from '../requests/_shared.js';
4
- import { resolveRequestData } from '../utils/url.js';
5
4
  export const generator = (url, data) => {
6
5
  const s = [];
7
- s.push(`curl -X ${data.method} "${resolveRequestData(url, data)}"`);
6
+ s.push(`curl -X ${data.method} "${url}"`);
8
7
  for (const header in data.header) {
9
- const value = `${header}: ${data.header[header]}`;
8
+ const value = `${header}: ${data.header[header].value}`;
10
9
  s.push(`-H "${value}"`);
11
10
  }
12
- for (const cookie in data.cookie) {
13
- const value = JSON.stringify(`${cookie}=${data.cookie[cookie]}`);
14
- s.push(`--cookie ${value}`);
11
+ for (const k in data.cookie) {
12
+ const param = data.cookie[k];
13
+ s.push(`--cookie ${JSON.stringify(`${k}=${param.value}`)}`);
15
14
  }
16
15
  if (data.body && data.bodyMediaType === 'multipart/form-data') {
17
16
  if (typeof data.body !== 'object')
@@ -1,3 +1,3 @@
1
- import { SampleGenerator } from '../requests/_shared.js';
1
+ import { type SampleGenerator } from '../requests/_shared.js';
2
2
  export declare const generator: SampleGenerator;
3
3
  //# sourceMappingURL=go.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/requests/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG5D,eAAO,MAAM,SAAS,EAAE,eAqDvB,CAAC"}
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/requests/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,SAAS,EAAE,eA2DvB,CAAC"}
@@ -1,17 +1,17 @@
1
1
  'use client';
2
2
  import { ident } from '../requests/_shared.js';
3
- import { resolveRequestData } from '../utils/url.js';
4
3
  export const generator = (url, data, { mediaAdapters }) => {
5
4
  const imports = ['fmt', 'net/http', 'io/ioutil'];
6
5
  const headers = new Map();
7
6
  const variables = new Map();
8
- variables.set('url', JSON.stringify(resolveRequestData(url, data)));
7
+ variables.set('url', JSON.stringify(url));
9
8
  for (const header in data.header) {
10
- headers.set(header, JSON.stringify(data.header[header]));
9
+ headers.set(header, JSON.stringify(data.header[header].value));
10
+ }
11
+ const cookies = Object.entries(data.cookie);
12
+ if (cookies.length > 0) {
13
+ headers.set('Cookie', JSON.stringify(cookies.map(([k, param]) => `${k}=${param.value}`).join('; ')));
11
14
  }
12
- const cookies = Object.keys(data.cookie);
13
- if (cookies.length > 0)
14
- headers.set('Cookie', JSON.stringify(cookies.map((p) => `${p}=${data.cookie[p]}`).join('; ')));
15
15
  let body;
16
16
  if (data.body && data.bodyMediaType && data.bodyMediaType in mediaAdapters) {
17
17
  headers.set('Content-Type', `"${data.bodyMediaType}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/requests/java.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGjE,eAAO,MAAM,SAAS,EAAE,eAmFvB,CAAC"}
1
+ {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../src/requests/java.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,SAAS,EAAE,eAqFvB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
  import { ident } from '../requests/_shared.js';
3
- import { resolveRequestData } from '../utils/url.js';
4
3
  export const generator = (url, data, { mediaAdapters }) => {
5
4
  const s = [];
6
5
  const headers = { ...data.header };
@@ -37,19 +36,20 @@ export const generator = (url, data, { mediaAdapters }) => {
37
36
  s.push('');
38
37
  // Build request
39
38
  s.push('HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()');
40
- s.push(ident(`.uri(URI.create(${JSON.stringify(resolveRequestData(url, data))}))`));
39
+ s.push(ident(`.uri(URI.create(${JSON.stringify(url)}))`));
41
40
  // Add headers
42
- for (const [key, value] of Object.entries(headers)) {
43
- s.push(ident(`.header(${JSON.stringify(key)}, ${JSON.stringify(value)})`));
41
+ for (const [key, param] of Object.entries(headers)) {
42
+ s.push(ident(`.header(${JSON.stringify(key)}, ${JSON.stringify(param.value)})`));
44
43
  }
45
44
  if (data.bodyMediaType) {
46
45
  s.push(ident(`.header("Content-Type", "${data.bodyMediaType}")`));
47
46
  }
48
47
  // Add cookies if present
49
- const cookieString = Object.entries(data.cookie)
50
- .map(([key, value]) => `${key}=${value}`)
51
- .join('; ');
52
- if (cookieString.length > 0) {
48
+ const cookies = Object.entries(data.cookie);
49
+ if (cookies.length > 0) {
50
+ const cookieString = cookies
51
+ .map(([key, param]) => `${key}=${param.value}`)
52
+ .join('; ');
53
53
  s.push(ident(`.header("Cookie", ${JSON.stringify(cookieString)})`));
54
54
  }
55
55
  const arg = body ? 'body' : '';
@@ -1 +1 @@
1
- {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/requests/javascript.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGjE,eAAO,MAAM,SAAS,EAAE,eA0CvB,CAAC"}
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../src/requests/javascript.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,SAAS,EAAE,eAkDvB,CAAC"}
@@ -1,13 +1,16 @@
1
1
  'use client';
2
2
  import { ident } from '../requests/_shared.js';
3
- import { resolveRequestData } from '../utils/url.js';
4
3
  export const generator = (url, data, { mediaAdapters }) => {
5
4
  const s = [];
6
5
  const options = new Map();
7
- const headers = { ...data.header };
8
- if (Object.keys(data.cookie).length > 0) {
9
- headers['cookie'] = Object.entries(data.cookie)
10
- .map(([key, value]) => `${key}=${value}`)
6
+ const headers = {};
7
+ for (const [k, v] of Object.entries(data.header)) {
8
+ headers[k] = v.value;
9
+ }
10
+ const cookies = Object.entries(data.cookie);
11
+ if (cookies.length > 0) {
12
+ headers['cookie'] = cookies
13
+ .map(([key, param]) => `${key}=${param.value}`)
11
14
  .join('; ');
12
15
  }
13
16
  if (Object.keys(headers).length > 0) {
@@ -26,7 +29,7 @@ export const generator = (url, data, { mediaAdapters }) => {
26
29
  s.push(body);
27
30
  options.set('body', 'body');
28
31
  }
29
- const params = [JSON.stringify(resolveRequestData(url, data))];
32
+ const params = [JSON.stringify(url)];
30
33
  if (options.size > 0) {
31
34
  const str = Array.from(options.entries())
32
35
  .map(([k, v]) => ident(k === v ? k : `${k}: ${v}`))
@@ -1 +1 @@
1
- {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/requests/python.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,eAAO,MAAM,SAAS,EAAE,eAkCvB,CAAC"}
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/requests/python.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,SAAS,EAAE,eAgDvB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  'use client';
2
- import { resolveRequestData } from '../utils/url.js';
3
2
  export const generator = (url, data, { mediaAdapters }) => {
4
- const headers = { ...data.header };
3
+ const headers = {};
5
4
  const params = [`"${data.method}"`, 'url'];
6
5
  let body;
7
6
  if (data.body && data.bodyMediaType && data.bodyMediaType in mediaAdapters) {
@@ -16,15 +15,23 @@ export const generator = (url, data, { mediaAdapters }) => {
16
15
  params.push('data = body');
17
16
  }
18
17
  }
18
+ for (const [k, v] of Object.entries(data.header)) {
19
+ headers[k] = v.value;
20
+ }
19
21
  if (Object.keys(headers).length > 0) {
20
22
  params.push(`headers = ${JSON.stringify(headers, null, 2)}`);
21
23
  }
22
- if (Object.keys(data.cookie).length > 0) {
23
- params.push(`cookies = ${JSON.stringify(data.cookie, null, 2)}`);
24
+ const inputCookies = Object.entries(data.cookie);
25
+ if (inputCookies.length > 0) {
26
+ const cookies = {};
27
+ for (const [k, v] of inputCookies) {
28
+ cookies[k] = v.value;
29
+ }
30
+ params.push(`cookies = ${JSON.stringify(cookies, null, 2)}`);
24
31
  }
25
32
  return `import requests
26
33
 
27
- url = ${JSON.stringify(resolveRequestData(url, data))}
34
+ url = ${JSON.stringify(url)}
28
35
  ${body ?? ''}
29
36
  response = requests.request(${params.join(', ')})
30
37
 
package/dist/types.d.ts CHANGED
@@ -60,7 +60,7 @@ export interface RenderContext {
60
60
  * @default true
61
61
  */
62
62
  showResponseSchema?: boolean;
63
- mediaAdapters: Record<string, MediaAdapter | true>;
63
+ mediaAdapters: Record<string, MediaAdapter>;
64
64
  }
65
65
  export {};
66
66
  //# 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,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,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,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACvE,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,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,iBAAiB,CAAC;IAE1B;;;;;;;OAOG;IACH,wBAAwB,CAAC,EACrB,CAAC,CACC,MAAM,EAAE,WAAW,CAAC,iBAAiB,CAAC,EACtC,UAAU,EAAE,MAAM,KACf,SAAS,CAAC,MAAM,CAAC,CAAC,GACvB,KAAK,CAAC;IAEV;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7E,YAAY,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,GAClD,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAElC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;CACpD"}
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,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,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,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACvE,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,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,iBAAiB,CAAC;IAE1B;;;;;;;OAOG;IACH,wBAAwB,CAAC,EACrB,CAAC,CACC,MAAM,EAAE,WAAW,CAAC,iBAAiB,CAAC,EACtC,UAAU,EAAE,MAAM,KACf,SAAS,CAAC,MAAM,CAAC,CAAC,GACvB,KAAK,CAAC;IAEV;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7E,YAAY,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,GAClD,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAElC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/ui/components/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,2CAUtE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,2CAMzE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,2CAahD;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,2CAa/C;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,2CAchD"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/ui/components/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,2CAOtE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,2CAMzE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,2CAahD;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,2CAa/C;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,2CAchD"}
@@ -4,7 +4,7 @@ import * as Primitive from '@radix-ui/react-accordion';
4
4
  import { ChevronRight } from '../../icons.js';
5
5
  import { cn } from 'fumadocs-ui/utils/cn';
6
6
  export function Accordions(props) {
7
- return (_jsx(Primitive.Root, { ...props, className: cn('divide-y divide-fd-border overflow-hidden', props.className) }));
7
+ return (_jsx(Primitive.Root, { ...props, className: cn('divide-y divide-fd-border', props.className) }));
8
8
  }
9
9
  export function AccordionItem(props) {
10
10
  return (_jsx(Primitive.Item, { ...props, className: cn('scroll-m-20', props.className), children: props.children }));
@@ -1,12 +1,13 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { RenderContext, ServerObject } from '../../types.js';
3
3
  import { type MediaAdapter } from '../../media/adapter.js';
4
- export interface ApiProviderProps extends ApiContextType {
4
+ export interface ApiProviderProps extends Omit<ApiContextType, 'mediaAdapters'> {
5
5
  /**
6
6
  * Base URL for API requests
7
7
  */
8
8
  defaultBaseUrl?: string;
9
9
  children?: ReactNode;
10
+ mediaAdapters?: Record<string, MediaAdapter>;
10
11
  }
11
12
  export interface SelectedServer {
12
13
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/ui/contexts/api.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CAC7D;AAKD,wBAAgB,aAAa,IAAI,cAAc,CAK9C;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAKzD;AAED,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,gBAAgB,2CA2ElB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/ui/contexts/api.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;IAC7C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CAC7D;AAKD,wBAAgB,aAAa,IAAI,cAAc,CAK9C;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAKzD;AAED,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,gBAAgB,2CA2ElB"}
@@ -1,20 +1,21 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { CodeSample } from '../../render/operation/index.js';
3
3
  import type { SamplesProps } from '../../render/renderer.js';
4
- import type { RequestData } from '../../requests/_shared.js';
4
+ import type { RawRequestData, RequestData } from '../../requests/_shared.js';
5
5
  export declare function CodeExampleProvider({ route, examples, initialKey, children, }: {
6
6
  route: string;
7
7
  examples: {
8
8
  key: string;
9
- data: RequestData;
9
+ data: RawRequestData;
10
+ encoded: RequestData;
10
11
  }[];
11
12
  initialKey?: string;
12
13
  children: ReactNode;
13
14
  }): import("react/jsx-runtime").JSX.Element;
14
15
  export declare function CodeExample(props: CodeSample): import("react/jsx-runtime").JSX.Element | null;
15
16
  export declare function CodeExampleSelector({ items }: SamplesProps): import("react/jsx-runtime").JSX.Element;
16
- export declare function useRequestInitialData(): RequestData;
17
+ export declare function useRequestInitialData(): RawRequestData;
17
18
  export declare function useRequestDataUpdater(): {
18
- setData: (data: RequestData) => void;
19
+ setData: (data: RawRequestData, encoded: RequestData) => void;
19
20
  };
20
21
  //# sourceMappingURL=code-example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-example.d.ts","sourceRoot":"","sources":["../../../src/ui/contexts/code-example.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,WAAW,CAAC;KACnB,EAAE,CAAC;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAwDA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,kDAgD5C;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,2CAoB1D;AAgBD,wBAAgB,qBAAqB,gBAOpC;AAED,wBAAgB,qBAAqB;oBA5KnB,WAAW,KAAK,IAAI;EA+KrC"}
1
+ {"version":3,"file":"code-example.d.ts","sourceRoot":"","sources":["../../../src/ui/contexts/code-example.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAetD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAsBtE,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,cAAc,CAAC;QACrB,OAAO,EAAE,WAAW,CAAC;KACtB,EAAE,CAAC;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CA6DA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,kDAgD5C;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,2CAoB1D;AAgBD,wBAAgB,qBAAqB,mBAOpC;AAED,wBAAgB,qBAAqB;oBAlLnB,cAAc,WAAW,WAAW,KAAK,IAAI;EAqL9D"}
@@ -5,36 +5,39 @@ import { useApiContext, useServerSelectContext } from '../../ui/contexts/api.js'
5
5
  import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
6
6
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/components/select.js';
7
7
  import { useEffectEvent } from 'fumadocs-core/utils/use-effect-event';
8
- import { joinURL, resolveServerUrl, withBase } from '../../utils/url.js';
8
+ import { joinURL, resolveRequestData, resolveServerUrl, withBase, } from '../../utils/url.js';
9
9
  import { defaultSamples } from '../../requests/index.js';
10
10
  const CodeExampleContext = createContext(null);
11
11
  export function CodeExampleProvider({ route, examples, initialKey, children, }) {
12
12
  const [key, setKey] = useState(initialKey ?? examples[0].key);
13
13
  const listeners = useRef([]);
14
- const setData = useEffectEvent((newData) => {
14
+ const setData = useEffectEvent((data, encoded) => {
15
15
  for (const example of examples) {
16
16
  if (example.key === key) {
17
17
  // persistent changes
18
- example.data = newData;
18
+ example.data = data;
19
+ example.encoded = encoded;
20
+ break;
19
21
  }
20
22
  }
21
23
  for (const listener of listeners.current) {
22
- listener(newData);
24
+ listener(data, encoded);
23
25
  }
24
26
  });
25
27
  const updateKey = useEffectEvent((newKey) => {
26
- const data = examples.find((example) => example.key === newKey)?.data;
27
- if (!data)
28
+ const example = examples.find((example) => example.key === newKey);
29
+ if (!example)
28
30
  return;
29
31
  setKey(newKey);
30
32
  for (const listener of listeners.current) {
31
- listener(data);
33
+ listener(example.data, example.encoded);
32
34
  }
33
35
  });
34
36
  const addListener = useEffectEvent((listener) => {
35
37
  // initial call to listeners to ensure their data is the latest
36
38
  // this is necessary to avoid race conditions between `useEffect()`
37
- listener(examples.find((example) => example.key === key).data);
39
+ const example = examples.find((example) => example.key === key);
40
+ listener(example.data, example.encoded);
38
41
  listeners.current.push(listener);
39
42
  });
40
43
  const removeListener = useEffectEvent((listener) => {
@@ -55,13 +58,13 @@ export function CodeExample(props) {
55
58
  const { examples, key, route, addListener, removeListener } = useContext(CodeExampleContext);
56
59
  const { server } = useServerSelectContext();
57
60
  const [data, setData] = useState(() => {
58
- return examples.find((example) => example.key === key).data;
61
+ return examples.find((example) => example.key === key).encoded;
59
62
  });
60
63
  const sample = props.source
61
64
  ? props
62
65
  : defaultSamples.find((item) => item.label === props.label);
63
66
  useEffect(() => {
64
- const listener = setData;
67
+ const listener = (_, encoded) => setData(encoded);
65
68
  addListener(listener);
66
69
  return () => {
67
70
  removeListener(listener);
@@ -74,7 +77,7 @@ export function CodeExample(props) {
74
77
  return sample.source;
75
78
  return sample.source(joinURL(withBase(server ? resolveServerUrl(server.url, server.variables) : '/', typeof window !== 'undefined'
76
79
  ? window.location.origin
77
- : 'https://loading'), route), data, {
80
+ : 'https://loading'), resolveRequestData(route, data)), data, {
78
81
  mediaAdapters,
79
82
  });
80
83
  }, [mediaAdapters, sample, server, route, data]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYlE,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,2CAkB5C;AAED,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,2CAMhC;AAED,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,2CAmBzE;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,GAAG,KAAK,EACT,EAAE,aAAa,2CA+Bf;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAY/D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAiBA;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYlE,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,2CAmB5C;AAED,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,2CAMhC;AAED,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,2CAmBzE;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,GAAG,KAAK,EACT,EAAE,aAAa,2CA+Bf;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAY/D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAiBA;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/ui/index.js CHANGED
@@ -6,7 +6,13 @@ import { ApiProvider } from '../ui/lazy.js';
6
6
  import { cn } from 'fumadocs-ui/utils/cn';
7
7
  import { buttonVariants } from 'fumadocs-ui/components/ui/button';
8
8
  export function Root({ children, className, ctx, ...props }) {
9
- return (_jsx("div", { className: cn('flex flex-col gap-24 text-sm', className), ...props, children: _jsx(ApiProvider, { mediaAdapters: Object.fromEntries(Object.entries(ctx.mediaAdapters).filter(([_, v]) => typeof v !== 'boolean')), servers: ctx.servers, shikiOptions: ctx.shikiOptions, children: children }) }));
9
+ const mediaAdapters = {};
10
+ for (const k in ctx.mediaAdapters) {
11
+ const adapter = ctx.mediaAdapters[k];
12
+ if (adapter.client)
13
+ mediaAdapters[k] = adapter.client;
14
+ }
15
+ return (_jsx("div", { className: cn('flex flex-col gap-24 text-sm', className), ...props, children: _jsx(ApiProvider, { mediaAdapters: mediaAdapters, servers: ctx.servers, shikiOptions: ctx.shikiOptions, children: children }) }));
10
16
  }
11
17
  export function APIInfo({ className, ...props }) {
12
18
  return (_jsx("div", { className: cn('min-w-0 flex-1', className), ...props, children: props.children }));
@@ -26,6 +32,6 @@ export function APIExample(props) {
26
32
  return (_jsx("div", { ...props, className: cn('prose-no-margin md:sticky md:top-(--fd-api-info-top) xl:w-[400px]', props.className), children: props.children }));
27
33
  }
28
34
  export function ObjectCollapsible(props) {
29
- return (_jsxs(Collapsible, { ...props, children: [_jsxs(CollapsibleTrigger, { className: cn(buttonVariants({ color: 'secondary', size: 'sm' }), 'group px-3 py-2 data-[state=open]:rounded-b-none'), children: [props.name, _jsx(ChevronDown, { className: "size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180" })] }), _jsx(CollapsibleContent, { className: "-mt-px *:bg-fd-card", children: props.children })] }));
35
+ return (_jsxs(Collapsible, { className: "my-2", ...props, children: [_jsxs(CollapsibleTrigger, { className: cn(buttonVariants({ color: 'secondary', size: 'sm' }), 'group px-3 py-2 data-[state=open]:rounded-b-none'), children: [props.name, _jsx(ChevronDown, { className: "size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180" })] }), _jsx(CollapsibleContent, { className: "-mt-px *:bg-fd-card", children: props.children })] }));
30
36
  }
31
37
  export { APIPage } from '../render/api-page.js';
package/dist/ui/lazy.d.ts CHANGED
@@ -2,7 +2,8 @@ export declare const CodeExampleProvider: import("react").ComponentType<{
2
2
  route: string;
3
3
  examples: {
4
4
  key: string;
5
- data: import("../requests/_shared.js").RequestData;
5
+ data: import("../requests/_shared.js").RawRequestData;
6
+ encoded: import("../requests/_shared.js").RequestData;
6
7
  }[];
7
8
  initialKey?: string;
8
9
  children: import("react").ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/ui/lazy.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;EAE/B,CAAC;AACF,eAAO,MAAM,WAAW,yEAEvB,CAAC;AACF,eAAO,MAAM,mBAAmB,0EAE/B,CAAC;AAEF,eAAO,MAAM,UAAU,0EAA+C,CAAC;AAEvE,eAAO,MAAM,WAAW,0EAEvB,CAAC"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/ui/lazy.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;;EAE/B,CAAC;AACF,eAAO,MAAM,WAAW,yEAEvB,CAAC;AACF,eAAO,MAAM,mBAAmB,0EAE/B,CAAC;AAEF,eAAO,MAAM,UAAU,0EAA+C,CAAC;AAEvE,eAAO,MAAM,WAAW,0EAEvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-typescript-schema.d.ts","sourceRoot":"","sources":["../../src/utils/get-typescript-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B"}
1
+ {"version":3,"file":"get-typescript-schema.d.ts","sourceRoot":"","sources":["../../src/utils/get-typescript-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B"}