fumadocs-openapi 9.0.18 → 9.1.1

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 (54) 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 +46 -40
  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 -7
  12. package/dist/playground/inputs.d.ts.map +1 -1
  13. package/dist/playground/inputs.js +5 -4
  14. package/dist/playground/schema.d.ts +5 -0
  15. package/dist/playground/schema.d.ts.map +1 -1
  16. package/dist/playground/schema.js +61 -32
  17. package/dist/render/api-page.d.ts.map +1 -1
  18. package/dist/render/api-page.js +2 -8
  19. package/dist/render/operation/api-example.d.ts +3 -2
  20. package/dist/render/operation/api-example.d.ts.map +1 -1
  21. package/dist/render/operation/api-example.js +8 -6
  22. package/dist/render/operation/get-request-data.d.ts +2 -2
  23. package/dist/render/operation/get-request-data.d.ts.map +1 -1
  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/contexts/api.d.ts +2 -1
  43. package/dist/ui/contexts/api.d.ts.map +1 -1
  44. package/dist/ui/contexts/code-example.d.ts +5 -4
  45. package/dist/ui/contexts/code-example.d.ts.map +1 -1
  46. package/dist/ui/contexts/code-example.js +14 -11
  47. package/dist/ui/index.d.ts.map +1 -1
  48. package/dist/ui/index.js +8 -2
  49. package/dist/ui/lazy.d.ts +2 -1
  50. package/dist/ui/lazy.d.ts.map +1 -1
  51. package/dist/utils/schema-to-string.d.ts.map +1 -1
  52. package/dist/utils/schema-to-string.js +30 -35
  53. package/dist/utils/url.js +10 -12
  54. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"api-example.d.ts","sourceRoot":"","sources":["../../../src/render/operation/api-example.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAM3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA6BtD,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAeA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,aAAa,GACjB,eAAe,EAAE,CA8BnB;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,GAAG,EAAE,aAAa,CAAC;CACpB,oDAmCA"}
1
+ {"version":3,"file":"api-example.d.ts","sourceRoot":"","sources":["../../../src/render/operation/api-example.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAM3D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AA6B5B,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAYA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,aAAa,GACjB,eAAe,EAAE,CA0CnB;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,GAAG,EAAE,aAAa,CAAC;CACpB,oDAmCA"}
@@ -5,6 +5,7 @@ import { CodeExample, CodeExampleProvider } from '../../ui/lazy.js';
5
5
  import { getPreferredType } from '../../utils/schema.js';
6
6
  import { getRequestData } from '../../render/operation/get-request-data.js';
7
7
  import { sample } from 'openapi-sampler';
8
+ import { encodeRequestData, } from '../../requests/_shared.js';
8
9
  const defaultSamples = [
9
10
  {
10
11
  label: 'cURL',
@@ -33,10 +34,7 @@ const defaultSamples = [
33
34
  ];
34
35
  export function APIExampleProvider({ examples, method, children, route, }) {
35
36
  const exclusiveSampleKey = method['x-exclusiveCodeSample'];
36
- return (_jsx(CodeExampleProvider, { initialKey: exclusiveSampleKey, route: route, examples: examples.map((example) => ({
37
- key: example.key,
38
- data: example.data,
39
- })), children: children }));
37
+ return (_jsx(CodeExampleProvider, { initialKey: exclusiveSampleKey, route: route, examples: examples, children: children }));
40
38
  }
41
39
  export function getAPIExamples(path, method, ctx) {
42
40
  const media = method.requestBody
@@ -46,22 +44,26 @@ export function getAPIExamples(path, method, ctx) {
46
44
  if (bodyOfType?.examples) {
47
45
  const result = [];
48
46
  for (const [key, value] of Object.entries(bodyOfType.examples)) {
47
+ const data = getRequestData(path, method, key, ctx);
49
48
  result.push({
50
49
  key,
51
50
  name: value.summary ?? key,
52
51
  description: value.description,
53
- data: getRequestData(path, method, key, ctx),
52
+ data,
53
+ encoded: encodeRequestData(data, ctx.mediaAdapters, method.parameters ?? []),
54
54
  });
55
55
  }
56
56
  if (result.length > 0)
57
57
  return result;
58
58
  }
59
+ const data = getRequestData(path, method, null, ctx);
59
60
  return [
60
61
  {
61
62
  key: '_default',
62
63
  name: 'Default',
63
64
  description: bodyOfType?.schema?.description,
64
- data: getRequestData(path, method, null, ctx),
65
+ data,
66
+ encoded: encodeRequestData(data, ctx.mediaAdapters, method.parameters ?? []),
65
67
  },
66
68
  ];
67
69
  }
@@ -1,4 +1,4 @@
1
1
  import type { MethodInformation, RenderContext } from '../../types.js';
2
- import type { RequestData } from '../../requests/_shared.js';
3
- export declare function getRequestData(path: string, method: MethodInformation, sampleKey: string | null, _ctx: RenderContext): RequestData;
2
+ import { type RawRequestData } from '../../requests/_shared.js';
3
+ export declare function getRequestData(path: string, method: MethodInformation, sampleKey: string | null, _ctx: RenderContext): RawRequestData;
4
4
  //# sourceMappingURL=get-request-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-request-data.d.ts","sourceRoot":"","sources":["../../../src/render/operation/get-request-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,EAAE,aAAa,GAClB,WAAW,CA8Db"}
1
+ {"version":3,"file":"get-request-data.d.ts","sourceRoot":"","sources":["../../../src/render/operation/get-request-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIhE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,EAAE,aAAa,GAClB,cAAc,CA8DhB"}
@@ -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,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"}