@redocly/cli 2.62.2 → 2.63.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 (133) hide show
  1. package/lib/chunks/{HYE4U6V5.js → 24AVTWC7.js} +1 -1
  2. package/lib/chunks/{TKLMYBPI.js → 2G2Q42ND.js} +1 -1
  3. package/lib/chunks/{KRCCY64H.js → 3LGZAJES.js} +1 -1
  4. package/lib/chunks/3SFDVGEQ.js +7 -0
  5. package/lib/chunks/{4AM55DEH.js → 4C44BO5N.js} +1 -1
  6. package/lib/chunks/{DS4SCWID.js → 4JKMQCWY.js} +1 -1
  7. package/lib/chunks/{3JYQOGV3.js → 5IIJHGNO.js} +1 -1
  8. package/lib/chunks/{6MH5ZWLD.js → 5VDBZVBF.js} +1 -1
  9. package/lib/chunks/6AB3BDX4.js +20 -0
  10. package/lib/chunks/{LRLGVYCG.js → 6LEQ46KS.js} +1 -1
  11. package/lib/chunks/{2OQM5ARW.js → 6QRNEF7K.js} +1 -1
  12. package/lib/chunks/{PTNNX4IU.js → 6WESXERF.js} +1 -1
  13. package/lib/chunks/{5X35UU2C.js → 7AWM5GPD.js} +1 -1
  14. package/lib/chunks/{CQKQB4PJ.js → 7LNKXEIU.js} +1 -1
  15. package/lib/chunks/{FDGP3ZYZ.js → 7RQW6KPZ.js} +156 -58
  16. package/lib/chunks/{SLQPKXO2.js → A22GELRX.js} +1 -1
  17. package/lib/chunks/{HUWKDZPP.js → AAPHKNGA.js} +1 -1
  18. package/lib/chunks/{22EANOP2.js → ACMV5RZA.js} +1 -1
  19. package/lib/chunks/AU7VOB4V.js +20 -0
  20. package/lib/chunks/{2OBVZIAW.js → B4ONRSDG.js} +3 -3
  21. package/lib/chunks/BC3XCWQE.js +11 -0
  22. package/lib/chunks/{VXONEXYX.js → BFIZTFWS.js} +1 -1
  23. package/lib/chunks/{HWTYAU4Y.js → BS3AUVYD.js} +1 -1
  24. package/lib/chunks/{ZCVUIIPU.js → C2OCU4E3.js} +1 -1
  25. package/lib/chunks/{US7X4XPD.js → CQMZF72H.js} +1 -1
  26. package/lib/chunks/{3C6UUCEW.js → CTPVBOG5.js} +1 -1
  27. package/lib/chunks/{3JYY42DL.js → CVUPOCX4.js} +1 -1
  28. package/lib/chunks/{FDMXHRDK.js → DEXQ6S3P.js} +1 -1
  29. package/lib/chunks/{RPHIT72T.js → DQFNUDOT.js} +1 -1
  30. package/lib/chunks/{7WM6VLB3.js → E2D25T4G.js} +1 -1
  31. package/lib/chunks/{4OEXH5EV.js → FCZH3476.js} +1 -1
  32. package/lib/chunks/{7WTV5KH3.js → FRM6TZ42.js} +1 -1
  33. package/lib/chunks/{3WHXM4DJ.js → HTG3RKCV.js} +1 -1
  34. package/lib/chunks/{M3XPS7UF.js → HW7ZCN7J.js} +1 -1
  35. package/lib/chunks/{I5CGSLGR.js → I3M476SQ.js} +1 -1
  36. package/lib/chunks/{KOR5TUJG.js → IODGA6FG.js} +1 -1
  37. package/lib/chunks/{WX24BERR.js → ITUUIAOZ.js} +1 -1
  38. package/lib/chunks/{CIDSJFJO.js → IYKYAJDC.js} +1 -1
  39. package/lib/chunks/{XFBJHVYU.js → J373CXCH.js} +1 -1
  40. package/lib/chunks/{JLVGRO3I.js → J7J4PH3V.js} +7 -7
  41. package/lib/chunks/{IUSSBOYO.js → JGBWIR5U.js} +1 -1
  42. package/lib/chunks/{S6NFOZ34.js → JHK6XIMG.js} +1 -1
  43. package/lib/chunks/{YDVWNFMS.js → KMP5ZE2D.js} +1 -1
  44. package/lib/chunks/{6EGJEFXO.js → L2EBKZQZ.js} +1 -1
  45. package/lib/chunks/{SHZZKTDE.js → LLWU7A5G.js} +1 -1
  46. package/lib/chunks/{LVGVWPDB.js → LXSCIQFU.js} +1 -1
  47. package/lib/chunks/{5PG3ST2N.js → NCBLLIQ3.js} +2 -2
  48. package/lib/chunks/{73RBZL53.js → NERCHMVY.js} +1 -1
  49. package/lib/chunks/{XJE2OFDN.js → NR3R4HFM.js} +45 -18
  50. package/lib/chunks/{ENSYM7KY.js → OFJ2KV5N.js} +1 -1
  51. package/lib/chunks/{6WZUCZGV.js → OYUXHAGQ.js} +1 -1
  52. package/lib/chunks/{37WWN4MA.js → PHWKGYUT.js} +1 -1
  53. package/lib/chunks/{6NB3FKVN.js → Q4UGLPO2.js} +1 -1
  54. package/lib/chunks/{36IHQANV.js → QNCKZURN.js} +1 -1
  55. package/lib/chunks/{GWXT3QO6.js → RFGNVCAR.js} +2 -2
  56. package/lib/chunks/{HBENVUR4.js → SXIFTBZB.js} +1 -1
  57. package/lib/chunks/{XJTGJYVS.js → TCALQAX5.js} +1 -1
  58. package/lib/chunks/{TBZEEKTV.js → U52CY34I.js} +1 -1
  59. package/lib/chunks/VB4PNWOR.js +7 -0
  60. package/lib/chunks/{SYWAPWW7.js → VSBSD3XZ.js} +1 -1
  61. package/lib/chunks/{V3ILUN2S.js → WV2NAII3.js} +1 -1
  62. package/lib/chunks/{3FXYWWTJ.js → X2V5QOZP.js} +1 -1
  63. package/lib/chunks/{SXBAAS4M.js → XNNK5G6V.js} +1 -1
  64. package/lib/chunks/Y4UTXOI2.js +59 -0
  65. package/lib/chunks/{6DO6IN4A.js → YKST56C6.js} +1 -1
  66. package/lib/chunks/{2XK7ML3U.js → YXH72HCU.js} +1 -1
  67. package/lib/chunks/{MNH2K4WM.js → Z52TEGV5.js} +1 -1
  68. package/lib/chunks/{3DEJQSYG.js → Z5QYTPVY.js} +1 -1
  69. package/lib/chunks/{OP7NIAI7.js → Z7J6WWCO.js} +1 -1
  70. package/lib/chunks/{2OVI7BIW.js → ZK27F53P.js} +1 -1
  71. package/lib/chunks/{V2YF33JL.js → ZP54RCIQ.js} +1 -1
  72. package/lib/eject-assets/generators/cli/docs.ts +1 -1
  73. package/lib/eject-assets/generators/cli/engine-source.ts +1 -1
  74. package/lib/eject-assets/generators/cli/index.ts +2 -2
  75. package/lib/eject-assets/generators/cli/render.ts +1 -1
  76. package/lib/eject-assets/generators/go/client.ts +1 -1
  77. package/lib/eject-assets/generators/go/descriptor.ts +2 -1
  78. package/lib/eject-assets/generators/go/index.ts +2 -2
  79. package/lib/eject-assets/generators/go/models.ts +1 -1
  80. package/lib/eject-assets/generators/go/naming.ts +1 -1
  81. package/lib/eject-assets/generators/go/operations.ts +1 -1
  82. package/lib/eject-assets/generators/go/pagination.ts +1 -1
  83. package/lib/eject-assets/generators/go/types.ts +1 -1
  84. package/lib/eject-assets/generators/mock/faker.ts +1 -1
  85. package/lib/eject-assets/generators/mock/index.ts +2 -2
  86. package/lib/eject-assets/generators/mock/render.ts +1 -1
  87. package/lib/eject-assets/generators/mock/sample.ts +1 -1
  88. package/lib/eject-assets/generators/mock/values.ts +1 -1
  89. package/lib/eject-assets/generators/php/client.ts +1 -1
  90. package/lib/eject-assets/generators/php/descriptor.ts +2 -1
  91. package/lib/eject-assets/generators/php/index.ts +2 -2
  92. package/lib/eject-assets/generators/php/models.ts +1 -1
  93. package/lib/eject-assets/generators/php/naming.ts +1 -1
  94. package/lib/eject-assets/generators/php/operations.ts +1 -1
  95. package/lib/eject-assets/generators/php/pagination.ts +1 -1
  96. package/lib/eject-assets/generators/php/types.ts +1 -1
  97. package/lib/eject-assets/generators/python/client.ts +1 -1
  98. package/lib/eject-assets/generators/python/descriptor.ts +2 -1
  99. package/lib/eject-assets/generators/python/index.ts +2 -2
  100. package/lib/eject-assets/generators/python/models.ts +1 -1
  101. package/lib/eject-assets/generators/python/naming.ts +1 -1
  102. package/lib/eject-assets/generators/python/operations.ts +1 -1
  103. package/lib/eject-assets/generators/python/pagination.ts +1 -1
  104. package/lib/eject-assets/generators/python/types.ts +1 -1
  105. package/lib/eject-assets/generators/swr/index.ts +2 -2
  106. package/lib/eject-assets/generators/swr/render.ts +1 -1
  107. package/lib/eject-assets/generators/tanstack-query/index.ts +2 -2
  108. package/lib/eject-assets/generators/tanstack-query/render.ts +56 -9
  109. package/lib/eject-assets/generators/transformers/index.ts +2 -2
  110. package/lib/eject-assets/generators/transformers/render.ts +1 -1
  111. package/lib/eject-assets/generators/typescript/banner.ts +1 -1
  112. package/lib/eject-assets/generators/typescript/client.ts +1 -1
  113. package/lib/eject-assets/generators/typescript/descriptor.ts +1 -1
  114. package/lib/eject-assets/generators/typescript/index.ts +2 -2
  115. package/lib/eject-assets/generators/typescript/inline-runtime.ts +1 -1
  116. package/lib/eject-assets/generators/typescript/operation-signature.ts +1 -1
  117. package/lib/eject-assets/generators/typescript/operation-types.ts +1 -1
  118. package/lib/eject-assets/generators/typescript/operations.ts +1 -1
  119. package/lib/eject-assets/generators/typescript/response-headers.ts +1 -1
  120. package/lib/eject-assets/generators/typescript/type-guards.ts +1 -1
  121. package/lib/eject-assets/generators/typescript/types.ts +1 -1
  122. package/lib/eject-assets/generators/zod/index.ts +2 -2
  123. package/lib/eject-assets/generators/zod/schemas.ts +1 -1
  124. package/lib/eject-assets/skills/tanstack-query-generator/SKILL.md +5 -2
  125. package/lib/eject-assets/skills/typescript-generator/SKILL.md +5 -0
  126. package/lib/index.js +5 -5
  127. package/package.json +1 -1
  128. package/lib/chunks/5SIJI5LC.js +0 -42
  129. package/lib/chunks/EDQ6QRIB.js +0 -20
  130. package/lib/chunks/LCFG5N4V.js +0 -7
  131. package/lib/chunks/PWGFZ5ZK.js +0 -7
  132. package/lib/chunks/RU7T4CKG.js +0 -11
  133. package/lib/chunks/Z6GHMX6Z.js +0 -20
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "tanstack-query" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "tanstack-query" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator tanstack-query --update`.
@@ -11,7 +11,7 @@
11
11
  // `<op>InfiniteOptions(vars, init?)` with `initialPageParam`/`getNextPageParam` compiled
12
12
  // from the pagination rule's JSON pointers. Per mutation: `<op>Mutation(init?)`. Calls go
13
13
  // through the client instance's methods, which take one input object in either
14
- // `--args-style`; only the infinite query's cursor override differs between them.
14
+ // `--args-style`; only the infinite query's page-param override differs between them.
15
15
  //
16
16
  // The factory bodies are authored as source text — the emitted module verbatim
17
17
  // and normalizes everything to the printer's canonical style. Every interpolated piece
@@ -58,6 +58,7 @@ export function renderTanstackModule(model: ApiModel, opts: TanstackOptions): st
58
58
  const pagination = opts.pagination ?? new Map();
59
59
  const source = [
60
60
  importHeader(ops, opts, pagination),
61
+ ...(ops.some((op) => isBodyLinkInfinite(op, pagination)) ? [NEXT_LINK_QUERY] : []),
61
62
  ...ops.filter(isQuery).map((op) => queryKeySource(op, opts.queryKeyPrefix)),
62
63
  factoriesSource(model, ops, pagination, opts.queryKeyPrefix, opts.argsStyle),
63
64
  ...defaultBindings(ops, pagination),
@@ -69,14 +70,36 @@ export function renderTanstackModule(model: ApiModel, opts: TanstackOptions): st
69
70
  * Whether the op gets an `<op>InfiniteOptions` factory: a paginated query operation.
70
71
  * `link`-style pagination is excluded — its next page lives in the `Link` response
71
72
  * HEADER, which a TanStack `queryFn` (body-only) cannot see; use the sdk's
72
- * `.pages()`/`.items()` iterators for those operations instead.
73
+ * `.pages()`/`.items()` iterators for those operations instead. `body-link` qualifies
74
+ * when the operation has a query parameter to carry the link's parameters.
73
75
  */
74
76
  function isInfinite(op: OperationModel, pagination: ModelPagination): boolean {
75
77
  if (!isQuery(op)) return false;
76
78
  const paginated = pagination.get(op.name);
77
- return paginated !== undefined && paginated.spec.style !== 'link';
79
+ if (paginated === undefined || paginated.spec.style === 'link') return false;
80
+ return paginated.spec.style !== 'body-link' || op.queryParams.length > 0;
78
81
  }
79
82
 
83
+ /** A query op whose `body-link` pagination gets an `<op>InfiniteOptions` factory. */
84
+ function isBodyLinkInfinite(op: OperationModel, pagination: ModelPagination): boolean {
85
+ return isInfinite(op, pagination) && pagination.get(op.name)?.spec.style === 'body-link';
86
+ }
87
+
88
+ /**
89
+ * The module-private helper a body-link `queryFn` merges the next page's query
90
+ * parameters with, the way the sdk's link iterator does: a repeated key becomes an array.
91
+ */
92
+ const NEXT_LINK_QUERY =
93
+ '/** The query parameters of a next-page link; a repeated key becomes an array. */\n' +
94
+ 'const nextLinkQuery = (link: string) => {\n' +
95
+ ' const query: Record<string, string | string[]> = {};\n' +
96
+ ' for (const [key, value] of new URL(link, "http://relative.invalid").searchParams) {\n' +
97
+ ' const seen = query[key];\n' +
98
+ ' query[key] = seen === undefined ? value : Array.isArray(seen) ? [...seen, value] : [seen, value];\n' +
99
+ ' }\n' +
100
+ ' return query;\n' +
101
+ '};';
102
+
80
103
  /**
81
104
  * The import header: the option helpers from `@tanstack/${framework}-query` (only the
82
105
  * ones used), then the sdk's `client` instance plus the referenced types.
@@ -133,9 +156,9 @@ function factoriesSource(
133
156
  ): string {
134
157
  const members = ops.flatMap((op) => {
135
158
  if (!isQuery(op)) return [mutationMember(op, prefix)];
136
- const paginated = pagination.get(op.name);
137
- return paginated !== undefined && paginated.spec.style !== 'link'
138
- ? [optionsMember(op), infiniteMember(model, op, paginated.spec, argsStyle)]
159
+ const spec = pagination.get(op.name)?.spec;
160
+ return spec !== undefined && spec.style !== 'link' && isInfinite(op, pagination)
161
+ ? [optionsMember(op), infiniteMember(model, op, spec, argsStyle)]
139
162
  : [optionsMember(op)];
140
163
  });
141
164
  return (
@@ -179,7 +202,8 @@ function mutationMember(op: OperationModel, prefix: string | undefined): string
179
202
  * page param rides the rule's advance query parameter, `initialPageParam` resumes from
180
203
  * the caller's own value, and `getNextPageParam` mirrors the runtime iterators' stop
181
204
  * conditions (cursor: absent/`null`/`''`, plus the optional `hasMore === false`;
182
- * offset/page: an empty items page).
205
+ * offset/page: an empty items page). A body link is the page param itself: the first
206
+ * page sends `vars` as given, later pages merge the link's query parameters over them.
183
207
  */
184
208
  function infiniteMember(
185
209
  model: ApiModel,
@@ -188,6 +212,29 @@ function infiniteMember(
188
212
  argsStyle: TanstackOptions['argsStyle']
189
213
  ): string {
190
214
  const { params, keyArg } = varsPieces(op);
215
+ if (spec.style === 'body-link') {
216
+ const merged =
217
+ argsStyle === 'flat'
218
+ ? '{ ...vars, ...nextLinkQuery(pageParam) }'
219
+ : '{ ...vars, query: { ...vars.query, ...nextLinkQuery(pageParam) } }';
220
+ const pointer = spec.nextLink;
221
+ const checks = cursorStopChecks(model, op, pointer);
222
+ const next =
223
+ checks.length === 0
224
+ ? ` return lastPage${pointerChain(pointer)};\n`
225
+ : ` const next = lastPage${pointerChain(pointer)};\n` +
226
+ ` return ${checks.join(' || ')} ? undefined : next;\n`;
227
+ return (
228
+ ` ${op.name}InfiniteOptions: (${params}) => infiniteQueryOptions({\n` +
229
+ ` queryKey: [...${op.name}QueryKey(${keyArg}), "infinite"] as const,\n` +
230
+ ` queryFn: ({ pageParam, signal }) => instance.${op.name}(pageParam === undefined ? vars : ${merged} as ${variablesName(op)}, { ...init, signal, envelope: undefined }),\n` +
231
+ ` initialPageParam: undefined as string | undefined,\n` +
232
+ ` getNextPageParam: (lastPage) => {\n` +
233
+ next +
234
+ ` },\n` +
235
+ ` })`
236
+ );
237
+ }
191
238
  // The cursor is a query parameter, so it lands in the sdk's own spelling for one:
192
239
  // inside the `query` layer, or at the top level of a merged call.
193
240
  const cursor = safeIdent(spec.param);
@@ -208,7 +255,7 @@ function infiniteMember(
208
255
  function nextPageSource(
209
256
  model: ApiModel,
210
257
  op: OperationModel,
211
- spec: Exclude<PaginationSpec, { style: 'link' }>,
258
+ spec: Exclude<PaginationSpec, { style: 'link' | 'body-link' }>,
212
259
  argsStyle: TanstackOptions['argsStyle']
213
260
  ): string {
214
261
  const advance = paramsAccess(spec.param);
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "transformers" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "transformers" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator transformers --update`.
@@ -42,5 +42,5 @@ export default {
42
42
  run: transformersGenerator,
43
43
  requires: ["typescript"],
44
44
  dateTypes: ["Date"],
45
- requiresGenerator: '^0.5.3',
45
+ requiresGenerator: '^0.6.0',
46
46
  };
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "transformers" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "transformers" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator transformers --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -97,5 +97,5 @@ export default {
97
97
  run: typescriptGenerator,
98
98
  sample: typescriptSample,
99
99
  docs: typescriptDocs,
100
- requiresGenerator: '^0.5.3',
100
+ requiresGenerator: '^0.6.0',
101
101
  };
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "typescript" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "typescript" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator typescript --update`.
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "zod" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "zod" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator zod --update`.
@@ -28,5 +28,5 @@ export const zodGenerator: Generator = ({ model, output, banner }) => {
28
28
  export default {
29
29
  name: 'zod',
30
30
  run: zodGenerator,
31
- requiresGenerator: '^0.5.3',
31
+ requiresGenerator: '^0.6.0',
32
32
  };
@@ -1,4 +1,4 @@
1
- // Ejected from @redocly/client-generator@0.5.3 — the built-in "zod" generator.
1
+ // Ejected from @redocly/client-generator@0.6.0 — the built-in "zod" generator.
2
2
  // This file is yours: edit freely; the generated client stays machine-owned and is
3
3
  // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
4
  // `redocly eject-generator zod --update`.
@@ -21,8 +21,11 @@ query keys. One generator, four framework variants (`react` default, `-vue`,
21
21
  - **Options factories, not hooks:** consumers call `useQuery(<op>Options(...))`, so the
22
22
  output works with any of the framework adapters and stays testable.
23
23
  - **`queryKeyPrefix`** namespaces every key when several clients share a cache.
24
- - **Infinite queries** derive `getNextPageParam` from the resolved pagination rule; a
25
- `link`-style rule reads the `Link` header the descriptor declares.
24
+ - **Infinite queries** derive `getNextPageParam` from the resolved pagination rule. A
25
+ `body-link` rule gets one when the operation has a query parameter: the next page's
26
+ URL is the page param, and each later page merges the URL's query parameters over
27
+ `vars`. A `Link` header is invisible to a `queryFn`, so `link`-style operations get
28
+ only the sdk's `.pages()`/`.items()`.
26
29
  - **`envelope` is excluded and stripped** — cached data is the plain body.
27
30
  - Requires `typescript`; throw-mode only (it wraps thrown errors into query errors).
28
31
 
@@ -26,6 +26,11 @@ relatively (`runtime: module`).
26
26
  an entry that `export *`s it; the entry type-imports only the schema names it
27
27
  references (`collectEntrySchemaRefs`).
28
28
  - **Zero runtime dependencies.** `Date`, `Blob`, `fetch` — nothing else.
29
+ - **Timeouts need no platform statics.** `send()` uses `AbortSignal.timeout()` and
30
+ `AbortSignal.any()` where they exist and builds the same signal from an `AbortController`
31
+ and `setTimeout` where they do not (Chrome before 116, Safari before 17.4, Firefox before
32
+ 124). A timed-out attempt is recognized by its own timeout signal having fired, never by
33
+ the abort reason's name, because Chrome 103 to 123 abort a timeout with `AbortError`.
29
34
  - **Names are collision-safe:** `packageIdents` seeds every reserved wiring name before
30
35
  any operation is sanitized, so renames are deterministic (`configure` → `configure_2`).
31
36
  A rename becomes part of the SDK's public API, so the warning must say WHICH cause it