@redocly/client-generator 0.3.8 → 0.4.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 (617) hide show
  1. package/README.md +32 -54
  2. package/eject-assets/AGENTS.md +137 -0
  3. package/eject-assets/generators/cli/docs.ts +224 -0
  4. package/eject-assets/generators/cli/engine-source.ts +21 -0
  5. package/eject-assets/generators/cli/index.ts +90 -0
  6. package/eject-assets/generators/cli/render.ts +348 -0
  7. package/eject-assets/generators/go/client.ts +57 -0
  8. package/eject-assets/generators/go/descriptor.ts +41 -0
  9. package/eject-assets/generators/go/index.ts +336 -0
  10. package/eject-assets/generators/go/models.ts +179 -0
  11. package/eject-assets/generators/go/naming.ts +49 -0
  12. package/eject-assets/generators/go/operations.ts +296 -0
  13. package/eject-assets/generators/go/pagination.ts +194 -0
  14. package/eject-assets/generators/go/types.ts +60 -0
  15. package/eject-assets/generators/mock/faker.ts +214 -0
  16. package/eject-assets/generators/mock/index.ts +35 -0
  17. package/eject-assets/generators/mock/render.ts +282 -0
  18. package/eject-assets/generators/mock/sample.ts +316 -0
  19. package/eject-assets/generators/mock/values.ts +63 -0
  20. package/eject-assets/generators/php/client.ts +63 -0
  21. package/eject-assets/generators/php/descriptor.ts +58 -0
  22. package/eject-assets/generators/php/index.ts +237 -0
  23. package/eject-assets/generators/php/models.ts +275 -0
  24. package/eject-assets/generators/php/naming.ts +51 -0
  25. package/eject-assets/generators/php/operations.ts +232 -0
  26. package/eject-assets/generators/php/pagination.ts +133 -0
  27. package/eject-assets/generators/php/types.ts +148 -0
  28. package/eject-assets/generators/python/client.ts +123 -0
  29. package/eject-assets/generators/python/descriptor.ts +52 -0
  30. package/eject-assets/generators/python/index.ts +251 -0
  31. package/eject-assets/generators/python/models.ts +242 -0
  32. package/eject-assets/generators/python/naming.ts +46 -0
  33. package/eject-assets/generators/python/operations.ts +147 -0
  34. package/eject-assets/generators/python/pagination.ts +128 -0
  35. package/eject-assets/generators/python/types.ts +54 -0
  36. package/eject-assets/generators/swr/index.ts +37 -0
  37. package/eject-assets/generators/swr/render.ts +78 -0
  38. package/eject-assets/generators/tanstack-query/index.ts +48 -0
  39. package/eject-assets/generators/tanstack-query/render.ts +346 -0
  40. package/eject-assets/generators/transformers/index.ts +46 -0
  41. package/eject-assets/generators/transformers/render.ts +506 -0
  42. package/eject-assets/generators/typescript/banner.ts +35 -0
  43. package/eject-assets/generators/typescript/client.ts +254 -0
  44. package/eject-assets/generators/typescript/descriptor.ts +137 -0
  45. package/eject-assets/generators/typescript/index.ts +101 -0
  46. package/eject-assets/generators/typescript/inline-runtime.ts +135 -0
  47. package/eject-assets/generators/typescript/operation-signature.ts +62 -0
  48. package/eject-assets/generators/typescript/operation-types.ts +17 -0
  49. package/eject-assets/generators/typescript/operations.ts +524 -0
  50. package/eject-assets/generators/typescript/response-headers.ts +74 -0
  51. package/eject-assets/generators/typescript/type-guards.ts +159 -0
  52. package/eject-assets/generators/typescript/types.ts +172 -0
  53. package/eject-assets/generators/zod/index.ts +32 -0
  54. package/eject-assets/generators/zod/schemas.ts +456 -0
  55. package/eject-assets/skills/cli-generator/SKILL.md +121 -0
  56. package/eject-assets/skills/client-generators/SKILL.md +142 -0
  57. package/eject-assets/skills/go-generator/SKILL.md +96 -0
  58. package/eject-assets/skills/mock-generator/SKILL.md +50 -0
  59. package/eject-assets/skills/php-generator/SKILL.md +112 -0
  60. package/eject-assets/skills/python-generator/SKILL.md +110 -0
  61. package/eject-assets/skills/swr-generator/SKILL.md +50 -0
  62. package/eject-assets/skills/tanstack-query-generator/SKILL.md +55 -0
  63. package/eject-assets/skills/transformers-generator/SKILL.md +47 -0
  64. package/eject-assets/skills/typescript-generator/SKILL.md +95 -0
  65. package/eject-assets/skills/zod-generator/SKILL.md +54 -0
  66. package/lib/authoring/index.d.ts +11 -0
  67. package/lib/authoring/index.d.ts.map +1 -0
  68. package/lib/authoring/index.js +42 -0
  69. package/lib/authoring/index.js.map +1 -0
  70. package/lib/authoring/naming.d.ts +34 -0
  71. package/lib/authoring/naming.d.ts.map +1 -0
  72. package/lib/authoring/naming.js +104 -0
  73. package/lib/authoring/naming.js.map +1 -0
  74. package/lib/authoring/operation.d.ts +47 -0
  75. package/lib/authoring/operation.d.ts.map +1 -0
  76. package/lib/authoring/operation.js +86 -0
  77. package/lib/authoring/operation.js.map +1 -0
  78. package/lib/authoring/options.d.ts +9 -0
  79. package/lib/authoring/options.d.ts.map +1 -0
  80. package/lib/authoring/options.js +5 -0
  81. package/lib/authoring/options.js.map +1 -0
  82. package/lib/authoring/pagination.d.ts +19 -0
  83. package/lib/authoring/pagination.d.ts.map +1 -0
  84. package/lib/authoring/pagination.js +45 -0
  85. package/lib/authoring/pagination.js.map +1 -0
  86. package/lib/authoring/printer.d.ts +16 -0
  87. package/lib/authoring/printer.d.ts.map +1 -0
  88. package/lib/authoring/printer.js +36 -0
  89. package/lib/authoring/printer.js.map +1 -0
  90. package/lib/authoring/reference-page.d.ts +31 -0
  91. package/lib/authoring/reference-page.d.ts.map +1 -0
  92. package/lib/authoring/reference-page.js +160 -0
  93. package/lib/authoring/reference-page.js.map +1 -0
  94. package/lib/authoring/schema.d.ts +51 -0
  95. package/lib/authoring/schema.d.ts.map +1 -0
  96. package/lib/authoring/schema.js +190 -0
  97. package/lib/authoring/schema.js.map +1 -0
  98. package/lib/cli-contract.d.ts +126 -0
  99. package/lib/cli-contract.d.ts.map +1 -0
  100. package/lib/cli-contract.js +25 -0
  101. package/lib/cli-contract.js.map +1 -0
  102. package/lib/{emitters/wrapper-support.d.ts → contracts/typescript.d.ts} +13 -24
  103. package/lib/contracts/typescript.d.ts.map +1 -0
  104. package/lib/contracts/typescript.js +87 -0
  105. package/lib/contracts/typescript.js.map +1 -0
  106. package/lib/generate.d.ts +10 -10
  107. package/lib/generate.d.ts.map +1 -1
  108. package/lib/generate.js +25 -106
  109. package/lib/generate.js.map +1 -1
  110. package/lib/generators/cli/docs.d.ts +19 -0
  111. package/lib/generators/cli/docs.d.ts.map +1 -0
  112. package/lib/generators/cli/docs.js +187 -0
  113. package/lib/generators/cli/docs.js.map +1 -0
  114. package/lib/generators/cli/engine-source.d.ts +5 -0
  115. package/lib/generators/cli/engine-source.d.ts.map +1 -0
  116. package/lib/generators/cli/engine-source.js +12 -0
  117. package/lib/generators/cli/engine-source.js.map +1 -0
  118. package/lib/generators/cli/index.d.ts +18 -0
  119. package/lib/generators/cli/index.d.ts.map +1 -0
  120. package/lib/generators/cli/index.js +67 -0
  121. package/lib/generators/cli/index.js.map +1 -0
  122. package/lib/generators/cli/render.d.ts +39 -0
  123. package/lib/generators/cli/render.d.ts.map +1 -0
  124. package/lib/generators/cli/render.js +281 -0
  125. package/lib/generators/cli/render.js.map +1 -0
  126. package/lib/generators/cli/runtime/cli.d.ts +42 -0
  127. package/lib/generators/cli/runtime/cli.d.ts.map +1 -0
  128. package/lib/generators/cli/runtime/cli.js +582 -0
  129. package/lib/generators/cli/runtime/cli.js.map +1 -0
  130. package/lib/generators/compatibility.d.ts +10 -0
  131. package/lib/generators/compatibility.d.ts.map +1 -0
  132. package/lib/generators/compatibility.js +45 -0
  133. package/lib/generators/compatibility.js.map +1 -0
  134. package/lib/generators/go/client.d.ts +5 -0
  135. package/lib/generators/go/client.d.ts.map +1 -0
  136. package/lib/generators/go/client.js +34 -0
  137. package/lib/generators/go/client.js.map +1 -0
  138. package/lib/generators/go/descriptor.d.ts +6 -0
  139. package/lib/generators/go/descriptor.d.ts.map +1 -0
  140. package/lib/generators/go/descriptor.js +26 -0
  141. package/lib/generators/go/descriptor.js.map +1 -0
  142. package/lib/generators/go/index.d.ts +14 -0
  143. package/lib/generators/go/index.d.ts.map +1 -0
  144. package/lib/generators/go/index.js +240 -0
  145. package/lib/generators/go/index.js.map +1 -0
  146. package/lib/generators/go/models.d.ts +4 -0
  147. package/lib/generators/go/models.d.ts.map +1 -0
  148. package/lib/generators/go/models.js +125 -0
  149. package/lib/generators/go/models.js.map +1 -0
  150. package/lib/generators/go/naming.d.ts +15 -0
  151. package/lib/generators/go/naming.d.ts.map +1 -0
  152. package/lib/generators/go/naming.js +36 -0
  153. package/lib/generators/go/naming.js.map +1 -0
  154. package/lib/generators/go/operations.d.ts +16 -0
  155. package/lib/generators/go/operations.d.ts.map +1 -0
  156. package/lib/generators/go/operations.js +200 -0
  157. package/lib/generators/go/operations.js.map +1 -0
  158. package/lib/generators/go/pagination.d.ts +5 -0
  159. package/lib/generators/go/pagination.d.ts.map +1 -0
  160. package/lib/generators/go/pagination.js +93 -0
  161. package/lib/generators/go/pagination.js.map +1 -0
  162. package/lib/generators/go/types.d.ts +4 -0
  163. package/lib/generators/go/types.d.ts.map +1 -0
  164. package/lib/generators/go/types.js +48 -0
  165. package/lib/generators/go/types.js.map +1 -0
  166. package/lib/generators/index.d.ts +2 -3
  167. package/lib/generators/index.d.ts.map +1 -1
  168. package/lib/generators/index.js +31 -53
  169. package/lib/generators/index.js.map +1 -1
  170. package/lib/generators/meta.d.ts +13 -0
  171. package/lib/generators/meta.d.ts.map +1 -0
  172. package/lib/generators/meta.js +157 -0
  173. package/lib/generators/meta.js.map +1 -0
  174. package/lib/{emitters → generators/mock}/faker.d.ts +4 -5
  175. package/lib/generators/mock/faker.d.ts.map +1 -0
  176. package/lib/generators/mock/faker.js +180 -0
  177. package/lib/generators/mock/faker.js.map +1 -0
  178. package/lib/generators/{mock.d.ts → mock/index.d.ts} +2 -2
  179. package/lib/generators/mock/index.d.ts.map +1 -0
  180. package/lib/generators/{mock.js → mock/index.js} +8 -8
  181. package/lib/generators/mock/index.js.map +1 -0
  182. package/lib/{emitters/mock.d.ts → generators/mock/render.d.ts} +2 -3
  183. package/lib/generators/mock/render.d.ts.map +1 -0
  184. package/lib/generators/mock/render.js +228 -0
  185. package/lib/generators/mock/render.js.map +1 -0
  186. package/lib/{emitters → generators/mock}/sample.d.ts +1 -2
  187. package/lib/generators/mock/sample.d.ts.map +1 -0
  188. package/lib/generators/mock/sample.js.map +1 -0
  189. package/lib/generators/mock/values.d.ts +33 -0
  190. package/lib/generators/mock/values.d.ts.map +1 -0
  191. package/lib/generators/mock/values.js +46 -0
  192. package/lib/generators/mock/values.js.map +1 -0
  193. package/lib/generators/options.d.ts +7 -0
  194. package/lib/generators/options.d.ts.map +1 -0
  195. package/lib/generators/options.js +74 -0
  196. package/lib/generators/options.js.map +1 -0
  197. package/lib/generators/php/client.d.ts +5 -0
  198. package/lib/generators/php/client.d.ts.map +1 -0
  199. package/lib/generators/php/client.js +38 -0
  200. package/lib/generators/php/client.js.map +1 -0
  201. package/lib/generators/php/descriptor.d.ts +7 -0
  202. package/lib/generators/php/descriptor.d.ts.map +1 -0
  203. package/lib/generators/php/descriptor.js +42 -0
  204. package/lib/generators/php/descriptor.js.map +1 -0
  205. package/lib/generators/php/index.d.ts +14 -0
  206. package/lib/generators/php/index.d.ts.map +1 -0
  207. package/lib/generators/php/index.js +166 -0
  208. package/lib/generators/php/index.js.map +1 -0
  209. package/lib/generators/php/models.d.ts +8 -0
  210. package/lib/generators/php/models.d.ts.map +1 -0
  211. package/lib/generators/php/models.js +200 -0
  212. package/lib/generators/php/models.js.map +1 -0
  213. package/lib/generators/php/naming.d.ts +16 -0
  214. package/lib/generators/php/naming.d.ts.map +1 -0
  215. package/lib/generators/php/naming.js +31 -0
  216. package/lib/generators/php/naming.js.map +1 -0
  217. package/lib/generators/php/operations.d.ts +21 -0
  218. package/lib/generators/php/operations.d.ts.map +1 -0
  219. package/lib/generators/php/operations.js +156 -0
  220. package/lib/generators/php/operations.js.map +1 -0
  221. package/lib/generators/php/pagination.d.ts +5 -0
  222. package/lib/generators/php/pagination.d.ts.map +1 -0
  223. package/lib/generators/php/pagination.js +68 -0
  224. package/lib/generators/php/pagination.js.map +1 -0
  225. package/lib/generators/php/types.d.ts +27 -0
  226. package/lib/generators/php/types.d.ts.map +1 -0
  227. package/lib/generators/php/types.js +128 -0
  228. package/lib/generators/php/types.js.map +1 -0
  229. package/lib/generators/python/client.d.ts +6 -0
  230. package/lib/generators/python/client.d.ts.map +1 -0
  231. package/lib/generators/python/client.js +80 -0
  232. package/lib/generators/python/client.js.map +1 -0
  233. package/lib/generators/python/descriptor.d.ts +9 -0
  234. package/lib/generators/python/descriptor.d.ts.map +1 -0
  235. package/lib/generators/python/descriptor.js +38 -0
  236. package/lib/generators/python/descriptor.js.map +1 -0
  237. package/lib/generators/python/index.d.ts +15 -0
  238. package/lib/generators/python/index.d.ts.map +1 -0
  239. package/lib/generators/python/index.js +197 -0
  240. package/lib/generators/python/index.js.map +1 -0
  241. package/lib/generators/python/models.d.ts +31 -0
  242. package/lib/generators/python/models.d.ts.map +1 -0
  243. package/lib/generators/python/models.js +203 -0
  244. package/lib/generators/python/models.js.map +1 -0
  245. package/lib/generators/python/naming.d.ts +22 -0
  246. package/lib/generators/python/naming.d.ts.map +1 -0
  247. package/lib/generators/python/naming.js +28 -0
  248. package/lib/generators/python/naming.js.map +1 -0
  249. package/lib/generators/python/operations.d.ts +4 -0
  250. package/lib/generators/python/operations.d.ts.map +1 -0
  251. package/lib/generators/python/operations.js +108 -0
  252. package/lib/generators/python/operations.js.map +1 -0
  253. package/lib/generators/python/pagination.d.ts +5 -0
  254. package/lib/generators/python/pagination.d.ts.map +1 -0
  255. package/lib/generators/python/pagination.js +95 -0
  256. package/lib/generators/python/pagination.js.map +1 -0
  257. package/lib/generators/python/types.d.ts +4 -0
  258. package/lib/generators/python/types.d.ts.map +1 -0
  259. package/lib/generators/python/types.js +45 -0
  260. package/lib/generators/python/types.js.map +1 -0
  261. package/lib/generators/resolve.d.ts.map +1 -1
  262. package/lib/generators/resolve.js +92 -13
  263. package/lib/generators/resolve.js.map +1 -1
  264. package/lib/generators/{swr.d.ts → swr/index.d.ts} +3 -3
  265. package/lib/generators/swr/index.d.ts.map +1 -0
  266. package/lib/generators/{swr.js → swr/index.js} +7 -10
  267. package/lib/generators/swr/index.js.map +1 -0
  268. package/lib/{emitters/swr.d.ts → generators/swr/render.d.ts} +2 -4
  269. package/lib/generators/swr/render.d.ts.map +1 -0
  270. package/lib/generators/swr/render.js +57 -0
  271. package/lib/generators/swr/render.js.map +1 -0
  272. package/lib/generators/{tanstack-query.d.ts → tanstack-query/index.d.ts} +3 -3
  273. package/lib/generators/tanstack-query/index.d.ts.map +1 -0
  274. package/lib/generators/{tanstack-query.js → tanstack-query/index.js} +11 -10
  275. package/lib/generators/tanstack-query/index.js.map +1 -0
  276. package/lib/{emitters/tanstack-query.d.ts → generators/tanstack-query/render.d.ts} +6 -5
  277. package/lib/generators/tanstack-query/render.d.ts.map +1 -0
  278. package/lib/{emitters/tanstack-query.js → generators/tanstack-query/render.js} +33 -21
  279. package/lib/generators/tanstack-query/render.js.map +1 -0
  280. package/lib/generators/{transformers.d.ts → transformers/index.d.ts} +2 -2
  281. package/lib/generators/transformers/index.d.ts.map +1 -0
  282. package/lib/generators/{transformers.js → transformers/index.js} +11 -8
  283. package/lib/generators/transformers/index.js.map +1 -0
  284. package/lib/{emitters/transformers.d.ts → generators/transformers/render.d.ts} +2 -2
  285. package/lib/generators/transformers/render.d.ts.map +1 -0
  286. package/lib/{emitters/transformers.js → generators/transformers/render.js} +125 -165
  287. package/lib/generators/transformers/render.js.map +1 -0
  288. package/lib/generators/types.d.ts +190 -12
  289. package/lib/generators/types.d.ts.map +1 -1
  290. package/lib/generators/typescript/banner.d.ts +12 -0
  291. package/lib/generators/typescript/banner.d.ts.map +1 -0
  292. package/lib/{emitters/emit-options.js → generators/typescript/banner.js} +2 -3
  293. package/lib/generators/typescript/banner.js.map +1 -0
  294. package/lib/generators/typescript/client.d.ts +25 -0
  295. package/lib/generators/typescript/client.d.ts.map +1 -0
  296. package/lib/generators/typescript/client.js +207 -0
  297. package/lib/generators/typescript/client.js.map +1 -0
  298. package/lib/generators/typescript/descriptor.d.ts +11 -0
  299. package/lib/generators/typescript/descriptor.d.ts.map +1 -0
  300. package/lib/generators/typescript/descriptor.js +97 -0
  301. package/lib/generators/typescript/descriptor.js.map +1 -0
  302. package/lib/generators/typescript/index.d.ts +20 -0
  303. package/lib/generators/typescript/index.d.ts.map +1 -0
  304. package/lib/generators/typescript/index.js +80 -0
  305. package/lib/generators/typescript/index.js.map +1 -0
  306. package/lib/generators/typescript/inline-runtime.d.ts +21 -0
  307. package/lib/generators/typescript/inline-runtime.d.ts.map +1 -0
  308. package/lib/generators/typescript/inline-runtime.js +114 -0
  309. package/lib/generators/typescript/inline-runtime.js.map +1 -0
  310. package/lib/generators/typescript/operation-signature.d.ts +23 -0
  311. package/lib/generators/typescript/operation-signature.d.ts.map +1 -0
  312. package/lib/generators/typescript/operation-signature.js +41 -0
  313. package/lib/generators/typescript/operation-signature.js.map +1 -0
  314. package/lib/generators/typescript/operation-types.d.ts +9 -0
  315. package/lib/generators/typescript/operation-types.d.ts.map +1 -0
  316. package/lib/generators/typescript/operation-types.js +11 -0
  317. package/lib/generators/typescript/operation-types.js.map +1 -0
  318. package/lib/generators/typescript/operations.d.ts +60 -0
  319. package/lib/generators/typescript/operations.d.ts.map +1 -0
  320. package/lib/generators/typescript/operations.js +386 -0
  321. package/lib/generators/typescript/operations.js.map +1 -0
  322. package/lib/generators/typescript/response-headers.d.ts +12 -0
  323. package/lib/generators/typescript/response-headers.d.ts.map +1 -0
  324. package/lib/generators/typescript/response-headers.js +40 -0
  325. package/lib/generators/typescript/response-headers.js.map +1 -0
  326. package/lib/generators/typescript/runtime/auth.d.ts.map +1 -0
  327. package/lib/generators/typescript/runtime/auth.js.map +1 -0
  328. package/lib/{runtime → generators/typescript/runtime}/create-client.d.ts +7 -2
  329. package/lib/generators/typescript/runtime/create-client.d.ts.map +1 -0
  330. package/lib/{runtime → generators/typescript/runtime}/create-client.js +84 -30
  331. package/lib/generators/typescript/runtime/create-client.js.map +1 -0
  332. package/lib/generators/typescript/runtime/errors.d.ts.map +1 -0
  333. package/lib/generators/typescript/runtime/errors.js.map +1 -0
  334. package/lib/generators/typescript/runtime/index.d.ts.map +1 -0
  335. package/lib/generators/typescript/runtime/index.js.map +1 -0
  336. package/lib/generators/typescript/runtime/multipart.d.ts.map +1 -0
  337. package/lib/generators/typescript/runtime/multipart.js.map +1 -0
  338. package/lib/{runtime → generators/typescript/runtime}/paginate.d.ts +2 -2
  339. package/lib/generators/typescript/runtime/paginate.d.ts.map +1 -0
  340. package/lib/{runtime → generators/typescript/runtime}/paginate.js +12 -12
  341. package/lib/generators/typescript/runtime/paginate.js.map +1 -0
  342. package/lib/generators/typescript/runtime/parse.d.ts.map +1 -0
  343. package/lib/generators/typescript/runtime/parse.js.map +1 -0
  344. package/lib/generators/typescript/runtime/retry.d.ts.map +1 -0
  345. package/lib/generators/typescript/runtime/retry.js.map +1 -0
  346. package/lib/generators/typescript/runtime/send.d.ts.map +1 -0
  347. package/lib/generators/typescript/runtime/send.js.map +1 -0
  348. package/lib/generators/typescript/runtime/setup.d.ts.map +1 -0
  349. package/lib/generators/typescript/runtime/setup.js.map +1 -0
  350. package/lib/generators/typescript/runtime/sse.d.ts.map +1 -0
  351. package/lib/generators/typescript/runtime/sse.js.map +1 -0
  352. package/lib/{runtime → generators/typescript/runtime}/types.d.ts +17 -95
  353. package/lib/generators/typescript/runtime/types.d.ts.map +1 -0
  354. package/lib/generators/typescript/runtime/types.js.map +1 -0
  355. package/lib/generators/typescript/runtime/url.d.ts.map +1 -0
  356. package/lib/generators/typescript/runtime/url.js.map +1 -0
  357. package/lib/generators/typescript/type-guards.d.ts +4 -0
  358. package/lib/generators/typescript/type-guards.d.ts.map +1 -0
  359. package/lib/{emitters → generators/typescript}/type-guards.js +18 -52
  360. package/lib/generators/typescript/type-guards.js.map +1 -0
  361. package/lib/generators/typescript/types.d.ts +8 -0
  362. package/lib/generators/typescript/types.d.ts.map +1 -0
  363. package/lib/generators/typescript/types.js +132 -0
  364. package/lib/generators/typescript/types.js.map +1 -0
  365. package/lib/generators/{zod.d.ts → zod/index.d.ts} +2 -2
  366. package/lib/generators/zod/index.d.ts.map +1 -0
  367. package/lib/generators/{zod.js → zod/index.js} +5 -7
  368. package/lib/generators/zod/index.js.map +1 -0
  369. package/lib/{emitters/zod.d.ts → generators/zod/schemas.d.ts} +4 -5
  370. package/lib/generators/zod/schemas.d.ts.map +1 -0
  371. package/lib/{emitters/zod.js → generators/zod/schemas.js} +118 -154
  372. package/lib/generators/zod/schemas.js.map +1 -0
  373. package/lib/index.d.ts +8 -3
  374. package/lib/index.d.ts.map +1 -1
  375. package/lib/index.js +18 -11
  376. package/lib/index.js.map +1 -1
  377. package/lib/intermediate-representation/build.d.ts +8 -1
  378. package/lib/intermediate-representation/build.d.ts.map +1 -1
  379. package/lib/intermediate-representation/build.js +59 -4
  380. package/lib/intermediate-representation/build.js.map +1 -1
  381. package/lib/intermediate-representation/model.d.ts +26 -1
  382. package/lib/intermediate-representation/model.d.ts.map +1 -1
  383. package/lib/intermediate-representation/model.js.map +1 -1
  384. package/lib/intermediate-representation/sanitize-identifiers.d.ts +1 -10
  385. package/lib/intermediate-representation/sanitize-identifiers.d.ts.map +1 -1
  386. package/lib/intermediate-representation/sanitize-identifiers.js +37 -38
  387. package/lib/intermediate-representation/sanitize-identifiers.js.map +1 -1
  388. package/lib/{emitters/pagination.d.ts → pagination.d.ts} +39 -15
  389. package/lib/pagination.d.ts.map +1 -0
  390. package/lib/{emitters/pagination.js → pagination.js} +13 -52
  391. package/lib/pagination.js.map +1 -0
  392. package/lib/pipeline.d.ts +17 -0
  393. package/lib/pipeline.d.ts.map +1 -0
  394. package/lib/pipeline.js +244 -0
  395. package/lib/pipeline.js.map +1 -0
  396. package/lib/plugin.d.ts +4 -4
  397. package/lib/plugin.d.ts.map +1 -1
  398. package/lib/plugin.js +12 -9
  399. package/lib/plugin.js.map +1 -1
  400. package/lib/printers/go.d.ts +33 -0
  401. package/lib/printers/go.d.ts.map +1 -0
  402. package/lib/printers/go.js +209 -0
  403. package/lib/printers/go.js.map +1 -0
  404. package/lib/printers/index.d.ts +5 -0
  405. package/lib/printers/index.d.ts.map +1 -0
  406. package/lib/printers/index.js +9 -0
  407. package/lib/printers/index.js.map +1 -0
  408. package/lib/printers/php.d.ts +21 -0
  409. package/lib/printers/php.d.ts.map +1 -0
  410. package/lib/printers/php.js +68 -0
  411. package/lib/printers/php.js.map +1 -0
  412. package/lib/printers/python.d.ts +31 -0
  413. package/lib/printers/python.d.ts.map +1 -0
  414. package/lib/printers/python.js +101 -0
  415. package/lib/printers/python.js.map +1 -0
  416. package/lib/printers/typescript.d.ts +82 -0
  417. package/lib/printers/typescript.d.ts.map +1 -0
  418. package/lib/printers/typescript.js +268 -0
  419. package/lib/printers/typescript.js.map +1 -0
  420. package/lib/reserved-names.d.ts +8 -0
  421. package/lib/reserved-names.d.ts.map +1 -0
  422. package/lib/{emitters/reserved-names.js → reserved-names.js} +16 -27
  423. package/lib/reserved-names.js.map +1 -0
  424. package/lib/runtime-contract.d.ts +62 -2
  425. package/lib/runtime-contract.d.ts.map +1 -1
  426. package/lib/runtime-contract.js +3 -3
  427. package/lib/runtime-contract.js.map +1 -1
  428. package/lib/runtime-sources/go.d.ts +2 -0
  429. package/lib/runtime-sources/go.d.ts.map +1 -0
  430. package/lib/runtime-sources/go.js +3 -0
  431. package/lib/runtime-sources/go.js.map +1 -0
  432. package/lib/runtime-sources/php.d.ts +2 -0
  433. package/lib/runtime-sources/php.d.ts.map +1 -0
  434. package/lib/runtime-sources/php.js +3 -0
  435. package/lib/runtime-sources/php.js.map +1 -0
  436. package/lib/runtime-sources/python.d.ts +12 -0
  437. package/lib/runtime-sources/python.d.ts.map +1 -0
  438. package/lib/runtime-sources/python.js +12 -0
  439. package/lib/runtime-sources/python.js.map +1 -0
  440. package/lib/runtime-sources/typescript.d.ts +36 -0
  441. package/lib/runtime-sources/typescript.d.ts.map +1 -0
  442. package/lib/runtime-sources/typescript.js +152 -0
  443. package/lib/runtime-sources/typescript.js.map +1 -0
  444. package/lib/runtime-sources.d.ts +5 -0
  445. package/lib/runtime-sources.d.ts.map +1 -0
  446. package/lib/runtime-sources.js +10 -0
  447. package/lib/runtime-sources.js.map +1 -0
  448. package/lib/setup-bake.d.ts.map +1 -0
  449. package/lib/{emitters/setup-bake.js → setup-bake.js} +11 -2
  450. package/lib/setup-bake.js.map +1 -0
  451. package/lib/types.d.ts +38 -8
  452. package/lib/types.d.ts.map +1 -1
  453. package/package.json +40 -4
  454. package/lib/emitters/auth.d.ts +0 -14
  455. package/lib/emitters/auth.d.ts.map +0 -1
  456. package/lib/emitters/auth.js +0 -30
  457. package/lib/emitters/auth.js.map +0 -1
  458. package/lib/emitters/client-assembly.d.ts +0 -15
  459. package/lib/emitters/client-assembly.d.ts.map +0 -1
  460. package/lib/emitters/client-assembly.js +0 -358
  461. package/lib/emitters/client-assembly.js.map +0 -1
  462. package/lib/emitters/descriptor.d.ts +0 -22
  463. package/lib/emitters/descriptor.d.ts.map +0 -1
  464. package/lib/emitters/descriptor.js +0 -199
  465. package/lib/emitters/descriptor.js.map +0 -1
  466. package/lib/emitters/emit-options.d.ts +0 -67
  467. package/lib/emitters/emit-options.d.ts.map +0 -1
  468. package/lib/emitters/emit-options.js.map +0 -1
  469. package/lib/emitters/faker.d.ts.map +0 -1
  470. package/lib/emitters/faker.js +0 -221
  471. package/lib/emitters/faker.js.map +0 -1
  472. package/lib/emitters/identifier.d.ts +0 -34
  473. package/lib/emitters/identifier.d.ts.map +0 -1
  474. package/lib/emitters/identifier.js +0 -104
  475. package/lib/emitters/identifier.js.map +0 -1
  476. package/lib/emitters/inline-runtime.d.ts +0 -11
  477. package/lib/emitters/inline-runtime.d.ts.map +0 -1
  478. package/lib/emitters/inline-runtime.js +0 -99
  479. package/lib/emitters/inline-runtime.js.map +0 -1
  480. package/lib/emitters/jsdoc.d.ts +0 -9
  481. package/lib/emitters/jsdoc.d.ts.map +0 -1
  482. package/lib/emitters/jsdoc.js +0 -83
  483. package/lib/emitters/jsdoc.js.map +0 -1
  484. package/lib/emitters/mock.d.ts.map +0 -1
  485. package/lib/emitters/mock.js +0 -265
  486. package/lib/emitters/mock.js.map +0 -1
  487. package/lib/emitters/operation-aliases.d.ts +0 -27
  488. package/lib/emitters/operation-aliases.d.ts.map +0 -1
  489. package/lib/emitters/operation-aliases.js +0 -150
  490. package/lib/emitters/operation-aliases.js.map +0 -1
  491. package/lib/emitters/operation-signature.d.ts +0 -24
  492. package/lib/emitters/operation-signature.d.ts.map +0 -1
  493. package/lib/emitters/operation-signature.js +0 -42
  494. package/lib/emitters/operation-signature.js.map +0 -1
  495. package/lib/emitters/operation-types.d.ts +0 -32
  496. package/lib/emitters/operation-types.d.ts.map +0 -1
  497. package/lib/emitters/operation-types.js +0 -117
  498. package/lib/emitters/operation-types.js.map +0 -1
  499. package/lib/emitters/operations.d.ts +0 -41
  500. package/lib/emitters/operations.d.ts.map +0 -1
  501. package/lib/emitters/operations.js +0 -35
  502. package/lib/emitters/operations.js.map +0 -1
  503. package/lib/emitters/pagination.d.ts.map +0 -1
  504. package/lib/emitters/pagination.js.map +0 -1
  505. package/lib/emitters/reserved-names.d.ts +0 -5
  506. package/lib/emitters/reserved-names.d.ts.map +0 -1
  507. package/lib/emitters/reserved-names.js.map +0 -1
  508. package/lib/emitters/response-headers.d.ts +0 -14
  509. package/lib/emitters/response-headers.d.ts.map +0 -1
  510. package/lib/emitters/response-headers.js +0 -91
  511. package/lib/emitters/response-headers.js.map +0 -1
  512. package/lib/emitters/runtime-sources.d.ts +0 -16
  513. package/lib/emitters/runtime-sources.d.ts.map +0 -1
  514. package/lib/emitters/runtime-sources.js +0 -16
  515. package/lib/emitters/runtime-sources.js.map +0 -1
  516. package/lib/emitters/sample.d.ts.map +0 -1
  517. package/lib/emitters/sample.js.map +0 -1
  518. package/lib/emitters/setup-bake.d.ts.map +0 -1
  519. package/lib/emitters/setup-bake.js.map +0 -1
  520. package/lib/emitters/sse.d.ts +0 -10
  521. package/lib/emitters/sse.d.ts.map +0 -1
  522. package/lib/emitters/sse.js +0 -46
  523. package/lib/emitters/sse.js.map +0 -1
  524. package/lib/emitters/support.d.ts +0 -18
  525. package/lib/emitters/support.d.ts.map +0 -1
  526. package/lib/emitters/support.js +0 -37
  527. package/lib/emitters/support.js.map +0 -1
  528. package/lib/emitters/swr.d.ts.map +0 -1
  529. package/lib/emitters/swr.js +0 -88
  530. package/lib/emitters/swr.js.map +0 -1
  531. package/lib/emitters/tanstack-query.d.ts.map +0 -1
  532. package/lib/emitters/tanstack-query.js.map +0 -1
  533. package/lib/emitters/transformers.d.ts.map +0 -1
  534. package/lib/emitters/transformers.js.map +0 -1
  535. package/lib/emitters/ts.d.ts +0 -42
  536. package/lib/emitters/ts.d.ts.map +0 -1
  537. package/lib/emitters/ts.js +0 -116
  538. package/lib/emitters/ts.js.map +0 -1
  539. package/lib/emitters/type-guards.d.ts +0 -21
  540. package/lib/emitters/type-guards.d.ts.map +0 -1
  541. package/lib/emitters/type-guards.js.map +0 -1
  542. package/lib/emitters/types.d.ts +0 -15
  543. package/lib/emitters/types.d.ts.map +0 -1
  544. package/lib/emitters/types.js +0 -125
  545. package/lib/emitters/types.js.map +0 -1
  546. package/lib/emitters/wrapper-support.d.ts.map +0 -1
  547. package/lib/emitters/wrapper-support.js +0 -127
  548. package/lib/emitters/wrapper-support.js.map +0 -1
  549. package/lib/emitters/zod.d.ts.map +0 -1
  550. package/lib/emitters/zod.js.map +0 -1
  551. package/lib/generators/anchor.d.ts +0 -9
  552. package/lib/generators/anchor.d.ts.map +0 -1
  553. package/lib/generators/anchor.js +0 -10
  554. package/lib/generators/anchor.js.map +0 -1
  555. package/lib/generators/mock.d.ts.map +0 -1
  556. package/lib/generators/mock.js.map +0 -1
  557. package/lib/generators/sdk.d.ts +0 -12
  558. package/lib/generators/sdk.d.ts.map +0 -1
  559. package/lib/generators/sdk.js +0 -26
  560. package/lib/generators/sdk.js.map +0 -1
  561. package/lib/generators/swr.d.ts.map +0 -1
  562. package/lib/generators/swr.js.map +0 -1
  563. package/lib/generators/tanstack-query.d.ts.map +0 -1
  564. package/lib/generators/tanstack-query.js.map +0 -1
  565. package/lib/generators/transformers.d.ts.map +0 -1
  566. package/lib/generators/transformers.js.map +0 -1
  567. package/lib/generators/zod.d.ts.map +0 -1
  568. package/lib/generators/zod.js.map +0 -1
  569. package/lib/runtime/auth.d.ts.map +0 -1
  570. package/lib/runtime/auth.js.map +0 -1
  571. package/lib/runtime/create-client.d.ts.map +0 -1
  572. package/lib/runtime/create-client.js.map +0 -1
  573. package/lib/runtime/errors.d.ts.map +0 -1
  574. package/lib/runtime/errors.js.map +0 -1
  575. package/lib/runtime/index.d.ts.map +0 -1
  576. package/lib/runtime/index.js.map +0 -1
  577. package/lib/runtime/multipart.d.ts.map +0 -1
  578. package/lib/runtime/multipart.js.map +0 -1
  579. package/lib/runtime/paginate.d.ts.map +0 -1
  580. package/lib/runtime/paginate.js.map +0 -1
  581. package/lib/runtime/parse.d.ts.map +0 -1
  582. package/lib/runtime/parse.js.map +0 -1
  583. package/lib/runtime/retry.d.ts.map +0 -1
  584. package/lib/runtime/retry.js.map +0 -1
  585. package/lib/runtime/send.d.ts.map +0 -1
  586. package/lib/runtime/send.js.map +0 -1
  587. package/lib/runtime/setup.d.ts.map +0 -1
  588. package/lib/runtime/setup.js.map +0 -1
  589. package/lib/runtime/sse.d.ts.map +0 -1
  590. package/lib/runtime/sse.js.map +0 -1
  591. package/lib/runtime/types.d.ts.map +0 -1
  592. package/lib/runtime/types.js.map +0 -1
  593. package/lib/runtime/url.d.ts.map +0 -1
  594. package/lib/runtime/url.js.map +0 -1
  595. /package/lib/{emitters → generators/mock}/sample.js +0 -0
  596. /package/lib/{runtime → generators/typescript/runtime}/auth.d.ts +0 -0
  597. /package/lib/{runtime → generators/typescript/runtime}/auth.js +0 -0
  598. /package/lib/{runtime → generators/typescript/runtime}/errors.d.ts +0 -0
  599. /package/lib/{runtime → generators/typescript/runtime}/errors.js +0 -0
  600. /package/lib/{runtime → generators/typescript/runtime}/index.d.ts +0 -0
  601. /package/lib/{runtime → generators/typescript/runtime}/index.js +0 -0
  602. /package/lib/{runtime → generators/typescript/runtime}/multipart.d.ts +0 -0
  603. /package/lib/{runtime → generators/typescript/runtime}/multipart.js +0 -0
  604. /package/lib/{runtime → generators/typescript/runtime}/parse.d.ts +0 -0
  605. /package/lib/{runtime → generators/typescript/runtime}/parse.js +0 -0
  606. /package/lib/{runtime → generators/typescript/runtime}/retry.d.ts +0 -0
  607. /package/lib/{runtime → generators/typescript/runtime}/retry.js +0 -0
  608. /package/lib/{runtime → generators/typescript/runtime}/send.d.ts +0 -0
  609. /package/lib/{runtime → generators/typescript/runtime}/send.js +0 -0
  610. /package/lib/{runtime → generators/typescript/runtime}/setup.d.ts +0 -0
  611. /package/lib/{runtime → generators/typescript/runtime}/setup.js +0 -0
  612. /package/lib/{runtime → generators/typescript/runtime}/sse.d.ts +0 -0
  613. /package/lib/{runtime → generators/typescript/runtime}/sse.js +0 -0
  614. /package/lib/{runtime → generators/typescript/runtime}/types.js +0 -0
  615. /package/lib/{runtime → generators/typescript/runtime}/url.d.ts +0 -0
  616. /package/lib/{runtime → generators/typescript/runtime}/url.js +0 -0
  617. /package/lib/{emitters/setup-bake.d.ts → setup-bake.d.ts} +0 -0
@@ -0,0 +1,108 @@
1
+ // The `operations` stage: one typed request method per operation (sync and async),
2
+ // with the optional `_with_headers` envelope variant.
3
+ import { isMultipartBody, jsonSuccessSchema, sseResponse, uniqueIdentifiers, } from '@redocly/client-generator';
4
+ import { envelopeHeaderSpecs } from "./descriptor.js";
5
+ import { METHOD_ARG_SLOTS, naming, PY } from "./naming.js";
6
+ import { pythonType } from "./types.js";
7
+ export function writeMethod(printer, op, ident, errorMode, isAsync, dateType, model, envelope = false) {
8
+ // Every parameter is a separate argument, so path and query names share one namespace
9
+ // with the slots this method declares itself. `uniqueIdentifiers` moves a repeat aside
10
+ // (`id`, `id_2`) — a description may legally use one name in two locations, and a
11
+ // signature that declared it twice would not even parse.
12
+ const argNames = uniqueIdentifiers([...op.pathParams, ...op.queryParams].map((param) => param.name), { style: 'snake', reserved: PY, taken: METHOD_ARG_SLOTS });
13
+ const pathArgs = op.pathParams.map((param, index) => ({ param, python: argNames[index] }));
14
+ const queryArgs = op.queryParams.map((param, index) => ({
15
+ param,
16
+ python: argNames[op.pathParams.length + index],
17
+ }));
18
+ const positional = pathArgs.map(({ param, python }) => `${python}: ${pythonType(param.schema, dateType)}`);
19
+ const bodyArg = op.requestBody ? [`body: ${pythonType(op.requestBody.schema, dateType)}`] : [];
20
+ const kwargs = [
21
+ ...queryArgs.map(({ param, python }) => {
22
+ const annotation = pythonType(param.schema, dateType);
23
+ const optional = annotation.startsWith('Optional[') ? annotation : `Optional[${annotation}]`;
24
+ return `${python}: ${optional} = None`;
25
+ }),
26
+ 'headers: Optional[Dict[str, str]] = None',
27
+ 'timeout: Optional[float] = None',
28
+ 'retry: Optional[Dict[str, Any]] = None',
29
+ 'idempotency_key: Any = None',
30
+ ];
31
+ const success = jsonSuccessSchema(op);
32
+ const sse = sseResponse(op);
33
+ const returns = envelope
34
+ ? `Envelope[${success === undefined ? 'None' : pythonType(success, dateType)}]`
35
+ : sse !== undefined
36
+ ? `${isAsync ? 'AsyncIterator' : 'Iterator'}[ServerSentEvent]`
37
+ : errorMode === 'result'
38
+ ? 'Result'
39
+ : success === undefined
40
+ ? 'None'
41
+ : pythonType(success, dateType);
42
+ // Streaming methods are plain defs returning an (async) iterator — an `async def`
43
+ // would force awaiting the call before iterating it.
44
+ const prefix = isAsync && sse === undefined ? 'async def' : 'def';
45
+ const awaitKw = isAsync ? 'await ' : '';
46
+ const sendFn = isAsync ? 'send_async' : 'send';
47
+ const signature = ['self', ...positional, ...bodyArg, '*', ...kwargs].join(', ');
48
+ const defName = envelope ? `${ident}_with_headers` : ident;
49
+ printer.block(`${prefix} ${defName}(${signature}) -> ${returns}:`, () => {
50
+ printer.doc(envelope
51
+ ? `Like ${ident}(), returning an Envelope with the declared response headers.`
52
+ : op.summary);
53
+ printer.line(`op = _OPERATIONS["${ident}"]`);
54
+ printer.line('auth_headers, auth_query = resolve_auth(op.get("security") or [], self._auth)');
55
+ printer.line('params: Dict[str, Any] = dict(auth_query)');
56
+ for (const { param, python } of queryArgs) {
57
+ printer.block(`if ${python} is not None:`, () => {
58
+ printer.line(`params[${naming.string(param.name)}] = encode(${python})`);
59
+ });
60
+ }
61
+ const pathDict = pathArgs
62
+ .map(({ param, python }) => `${naming.string(param.name)}: ${python}`)
63
+ .join(', ');
64
+ printer.line(`url = build_url(self._server_url, op["path"], {${pathDict}})`);
65
+ if (sse !== undefined) {
66
+ const dataKind = sse.schema !== undefined && sse.schema.kind !== 'unknown' ? 'json' : 'text';
67
+ printer.block('def _open(extra_headers: Dict[str, str]):', () => {
68
+ printer.line('return self._http.stream(op["method"], url, ' +
69
+ 'headers={**auth_headers, **(headers or {}), **extra_headers}, params=params, timeout=timeout)');
70
+ });
71
+ printer.line(`return ${isAsync ? 'aiter_sse' : 'iter_sse'}(_open, data_kind="${dataKind}")`);
72
+ return;
73
+ }
74
+ if (isMultipartBody(op))
75
+ printer.line('form_data, form_files = to_multipart(body)');
76
+ const bodyKw = op.requestBody
77
+ ? isMultipartBody(op)
78
+ ? ', data=form_data, files=form_files'
79
+ : ', json_body=encode(body)'
80
+ : '';
81
+ printer.line(`response = ${awaitKw}${sendFn}(self._http, self._config, op, url, method=op["method"], ` +
82
+ `headers={**auth_headers, **(headers or {})}, params=params${bodyKw}, ` +
83
+ 'timeout=timeout, retry=retry, idempotency_key=idempotency_key)');
84
+ const decoded = success === undefined
85
+ ? 'None'
86
+ : `decode(${pythonType(success, dateType)}, _safe_json(response))`;
87
+ if (envelope) {
88
+ printer.block('if not response.is_success:', () => {
89
+ printer.line('raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))');
90
+ });
91
+ printer.line(`return Envelope(data=${decoded}, headers=read_envelope_headers(response, ${envelopeHeaderSpecs(op, model)}), response=response)`);
92
+ }
93
+ else if (errorMode === 'result') {
94
+ printer.block('if not response.is_success:', () => {
95
+ printer.line('return Result(data=None, error=_safe_json(response), response=response)');
96
+ });
97
+ printer.line(`return Result(data=${decoded}, error=None, response=response)`);
98
+ }
99
+ else {
100
+ printer.block('if not response.is_success:', () => {
101
+ printer.line('raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))');
102
+ });
103
+ printer.line(success === undefined ? 'return None' : `return ${decoded}`);
104
+ }
105
+ });
106
+ printer.blank();
107
+ }
108
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/generators/python/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type DateType, type OperationModel } from '@redocly/client-generator';
2
+ import type { PythonPrinter } from '@redocly/client-generator/printers/python';
3
+ /** `<ident>_pages` / `<ident>_items` iterator methods for a paginated operation. */
4
+ export declare function writePaginationWrappers(printer: PythonPrinter, op: OperationModel, ident: string, isAsync: boolean, itemType: string, dateType: DateType): void;
5
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/generators/python/pagination.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAK/E,oFAAoF;AACpF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAqGN"}
@@ -0,0 +1,95 @@
1
+ // The `pagination` stage: `<ident>_pages` / `<ident>_items` iterator methods for
2
+ // paginated operations, sync and async.
3
+ import { jsonSuccessSchema, uniqueIdentifiers, } from '@redocly/client-generator';
4
+ import { METHOD_ARG_SLOTS, naming, PY } from "./naming.js";
5
+ import { pythonType } from "./types.js";
6
+ /** `<ident>_pages` / `<ident>_items` iterator methods for a paginated operation. */
7
+ export function writePaginationWrappers(printer, op, ident, isAsync, itemType, dateType) {
8
+ const success = jsonSuccessSchema(op);
9
+ const pageType = success === undefined ? 'Any' : pythonType(success, dateType);
10
+ // The iterators take the same arguments as the operation itself, computed the same way,
11
+ // so a name the method moved aside (`id_2`) is the same name here — copying a call from
12
+ // one to the other has to keep working. Path values are substituted, not dropped.
13
+ const argNames = uniqueIdentifiers([...op.pathParams, ...op.queryParams].map((param) => param.name), { style: 'snake', reserved: PY, taken: METHOD_ARG_SLOTS });
14
+ const pathArgs = op.pathParams.map((param, index) => ({ param, python: argNames[index] }));
15
+ const queryArgs = op.queryParams.map((param, index) => ({
16
+ param,
17
+ python: argNames[op.pathParams.length + index],
18
+ }));
19
+ const positional = pathArgs.map(({ param, python }) => `${python}: ${pythonType(param.schema, dateType)}`);
20
+ const kwargs = [
21
+ ...queryArgs.map(({ param, python }) => {
22
+ const annotation = pythonType(param.schema, dateType);
23
+ const optional = annotation.startsWith('Optional[') ? annotation : `Optional[${annotation}]`;
24
+ return `${python}: ${optional} = None`;
25
+ }),
26
+ 'headers: Optional[Dict[str, str]] = None',
27
+ 'timeout: Optional[float] = None',
28
+ 'retry: Optional[Dict[str, Any]] = None',
29
+ ];
30
+ const signature = ['self', ...positional, '*', ...kwargs].join(', ');
31
+ const iterType = isAsync ? 'AsyncIterator' : 'Iterator';
32
+ const pagesFn = isAsync ? 'aiter_pages' : 'iter_pages';
33
+ const itemsFn = isAsync ? 'aiter_items' : 'iter_items';
34
+ const writeCallClosure = () => {
35
+ printer.line('base: Dict[str, Any] = {}');
36
+ for (const { param, python } of queryArgs) {
37
+ printer.block(`if ${python} is not None:`, () => {
38
+ printer.line(`base[${naming.string(param.name)}] = encode(${python})`);
39
+ });
40
+ }
41
+ const prefix = isAsync ? 'async def' : 'def';
42
+ const awaitKw = isAsync ? 'await ' : '';
43
+ printer.block(`${prefix} _page(page_params: Dict[str, Any]) -> Tuple[Any, Any]:`, () => {
44
+ printer.line('auth_headers, auth_query = resolve_auth(op.get("security") or [], self._auth)');
45
+ const pathDict = pathArgs
46
+ .map(({ param, python }) => `${naming.string(param.name)}: ${python}`)
47
+ .join(', ');
48
+ printer.line(`url = build_url(self._server_url, op["path"], {${pathDict}})`);
49
+ printer.line(`response = ${awaitKw}${isAsync ? 'send_async' : 'send'}(self._http, self._config, op, url, method=op["method"], ` +
50
+ 'headers={**auth_headers, **(headers or {})}, params={**page_params, **auth_query}, ' +
51
+ 'timeout=timeout, retry=retry)');
52
+ printer.block('if not response.is_success:', () => {
53
+ printer.line('raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))');
54
+ });
55
+ printer.line('return _safe_json(response), response');
56
+ });
57
+ };
58
+ // pages: raw page JSON decoded into the page model per page.
59
+ if (isAsync) {
60
+ printer.block(`async def ${ident}_pages(${signature}) -> ${iterType}[${pageType}]:`, () => {
61
+ printer.line(`op = _OPERATIONS["${ident}"]`);
62
+ writeCallClosure();
63
+ printer.block(`async for page in ${pagesFn}(_page, op["pagination"], base):`, () => {
64
+ printer.line(pageType === 'Any' ? 'yield page' : `yield decode(${pageType}, page)`);
65
+ });
66
+ });
67
+ printer.blank();
68
+ printer.block(`async def ${ident}_items(${signature}) -> ${iterType}[${itemType}]:`, () => {
69
+ printer.line(`op = _OPERATIONS["${ident}"]`);
70
+ writeCallClosure();
71
+ printer.block(`async for item in ${itemsFn}(_page, op["pagination"], base):`, () => {
72
+ printer.line(itemType === 'Any' ? 'yield item' : `yield decode(${itemType}, item)`);
73
+ });
74
+ });
75
+ }
76
+ else {
77
+ printer.block(`def ${ident}_pages(${signature}) -> ${iterType}[${pageType}]:`, () => {
78
+ printer.line(`op = _OPERATIONS["${ident}"]`);
79
+ writeCallClosure();
80
+ printer.line(pageType === 'Any'
81
+ ? `return ${pagesFn}(_page, op["pagination"], base)`
82
+ : `return (decode(${pageType}, page) for page in ${pagesFn}(_page, op["pagination"], base))`);
83
+ });
84
+ printer.blank();
85
+ printer.block(`def ${ident}_items(${signature}) -> ${iterType}[${itemType}]:`, () => {
86
+ printer.line(`op = _OPERATIONS["${ident}"]`);
87
+ writeCallClosure();
88
+ printer.line(itemType === 'Any'
89
+ ? `return ${itemsFn}(_page, op["pagination"], base)`
90
+ : `return (decode(${itemType}, item) for item in ${itemsFn}(_page, op["pagination"], base))`);
91
+ });
92
+ }
93
+ printer.blank();
94
+ }
95
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/generators/python/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type DateType, type SchemaModel } from '@redocly/client-generator';
2
+ /** The Python type annotation for a schema (anonymous complex shapes collapse to Any-ish). */
3
+ export declare function pythonType(schema: SchemaModel, dateType?: DateType): string;
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/generators/python/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,WAAW,EAEjB,MAAM,2BAA2B,CAAC;AAInC,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,QAAmB,GAAG,MAAM,CAqCrF"}
@@ -0,0 +1,45 @@
1
+ // The `types` stage: schema → Python type annotation.
2
+ import { isNullable, unwrapNullable, } from '@redocly/client-generator';
3
+ import { className, naming } from "./naming.js";
4
+ /** The Python type annotation for a schema (anonymous complex shapes collapse to Any-ish). */
5
+ export function pythonType(schema, dateType = 'string') {
6
+ if (isNullable(schema)) {
7
+ return `Optional[${pythonType(unwrapNullable(schema), dateType)}]`;
8
+ }
9
+ switch (schema.kind) {
10
+ case 'scalar':
11
+ // `dateType: Date` annotates date/date-time as stdlib objects; `_decode.py`
12
+ // converts them from and to ISO strings on the wire.
13
+ if (dateType === 'Date' && schema.scalar === 'string') {
14
+ if (schema.metadata?.format === 'date-time')
15
+ return 'datetime';
16
+ if (schema.metadata?.format === 'date')
17
+ return 'date';
18
+ }
19
+ return { string: 'str', integer: 'int', number: 'float', boolean: 'bool' }[schema.scalar];
20
+ case 'array':
21
+ return `List[${pythonType(schema.items, dateType)}]`;
22
+ case 'record':
23
+ return `Dict[str, ${pythonType(schema.value, dateType)}]`;
24
+ case 'ref':
25
+ return className(schema.name);
26
+ case 'literal':
27
+ return `Literal[${naming.literal(schema.value)}]`;
28
+ case 'enum':
29
+ // Anonymous (inline) enums keep the wire scalar; only NAMED enums get classes.
30
+ return { string: 'str', integer: 'int', number: 'float', boolean: 'bool' }[schema.scalar];
31
+ case 'union':
32
+ return `Union[${schema.members.map((member) => pythonType(member, dateType)).join(', ')}]`;
33
+ case 'null':
34
+ return 'None';
35
+ case 'omit':
36
+ // Python has no Omit; the base class is the honest annotation (readOnly
37
+ // fields are server-managed and simply absent on requests).
38
+ return className(schema.base);
39
+ case 'object':
40
+ case 'intersection':
41
+ case 'unknown':
42
+ return 'Any';
43
+ }
44
+ }
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/generators/python/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,EAEL,UAAU,EAEV,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhD,8FAA8F;AAC9F,MAAM,UAAU,UAAU,CAAC,MAAmB,EAAE,WAAqB,QAAQ;IAC3E,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC;IACrE,CAAC;IACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,4EAA4E;YAC5E,qDAAqD;YACrD,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW;oBAAE,OAAO,UAAU,CAAC;gBAC/D,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;YACxD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5F,KAAK,OAAO;YACV,OAAO,QAAQ,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;QACvD,KAAK,QAAQ;YACX,OAAO,aAAa,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;QAC5D,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACpD,KAAK,MAAM;YACT,+EAA+E;YAC/E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5F,KAAK,OAAO;YACV,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7F,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,wEAAwE;YACxE,4DAA4D;YAC5D,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,QAAQ,CAAC;QACd,KAAK,cAAc,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/generators/resolve.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAe7B"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/generators/resolve.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
@@ -4,31 +4,82 @@
4
4
  // already-registered custom name is dynamically `import()`ed (a standard Node ESM dynamic import), its
5
5
  // default (or `generator`) export validated, and registered under its declared name. Built-ins are
6
6
  // seeded fresh per call (see `builtinGenerators`), so registration never mutates the built-in table.
7
- import { isAbsoluteUrl, isPlainObject } from '@redocly/openapi-core';
7
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
8
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
9
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
10
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
11
+ });
12
+ }
13
+ return path;
14
+ };
15
+ import { isAbsoluteUrl, isPlainObject, logger } from '@redocly/openapi-core';
8
16
  import { isAbsolute, resolve as resolvePath } from 'node:path';
9
17
  import { pathToFileURL } from 'node:url';
10
18
  import { NotSupportedError } from '../errors.js';
11
- import { builtinGenerators } from './index.js';
19
+ import { GENERATOR_VERSION, satisfiesGeneratorRange } from './compatibility.js';
20
+ import { BUILTIN_META } from './meta.js';
12
21
  /**
13
22
  * Build the run list + registry for a `generators` selection. Each entry is, in order of preference,
14
23
  * a built-in name, an already-registered custom name, or an import specifier (path or package).
15
24
  */
16
25
  export async function resolveGenerators(entries, options = {}) {
17
- const registry = builtinGenerators();
26
+ // Built-ins are loaded lazily through BUILTIN_META so a selection without a
27
+ // TypeScript-emitting generator never loads the `typescript` package.
28
+ const registry = new Map();
18
29
  for (const custom of options.customGenerators ?? [])
19
30
  register(registry, custom);
20
- const selected = [];
31
+ // Load every selected entry first: an import specifier's declared name and `requires`
32
+ // are only known once it is imported, and an ejected generator carries the same
33
+ // `requires` as the built-in it replaces.
34
+ const names = [];
21
35
  for (const entry of entries) {
22
- if (registry.has(entry)) {
23
- selected.push(entry);
24
- continue;
25
- }
26
- const custom = await importGenerator(entry, options.configDir ?? process.cwd());
27
- register(registry, custom);
28
- selected.push(custom.name);
36
+ names.push(await loadEntry(entry, registry, options.configDir));
29
37
  }
38
+ // A prerequisite is pulled in rather than demanded: selecting `cli` should give a
39
+ // working CLI without the user knowing which other generators provide its parts.
40
+ const selected = [];
41
+ const visiting = new Set();
42
+ const add = async (name) => {
43
+ if (selected.includes(name) || visiting.has(name))
44
+ return;
45
+ visiting.add(name);
46
+ for (const required of registry.get(name).requires ?? []) {
47
+ // Only pull in a prerequisite we know how to load — an already-registered
48
+ // generator or a built-in. Anything else stays the user's problem and is
49
+ // reported by `validateSelection`.
50
+ if (registry.has(required) || required in BUILTIN_META) {
51
+ await add(await loadEntry(required, registry, options.configDir));
52
+ }
53
+ }
54
+ visiting.delete(name);
55
+ selected.push(name);
56
+ };
57
+ for (const name of names)
58
+ await add(name);
30
59
  return { selected, registry };
31
60
  }
61
+ /**
62
+ * Load one entry — an already-registered name, a built-in name, or an import specifier —
63
+ * into the registry, and return the name it is registered under.
64
+ */
65
+ async function loadEntry(entry, registry, configDir) {
66
+ if (registry.has(entry))
67
+ return entry;
68
+ const meta = BUILTIN_META[entry];
69
+ if (meta !== undefined) {
70
+ const { load, ...compatibility } = meta;
71
+ registry.set(entry, { ...compatibility, ...(await load()) });
72
+ return entry;
73
+ }
74
+ // Without this, the old name falls through to `import('sdk')` and fails with a
75
+ // module-load error that hides the rename.
76
+ if (entry === 'sdk') {
77
+ throw new NotSupportedError('The "sdk" generator is now named "typescript". Update the `generators` list or the --generator flag.');
78
+ }
79
+ const custom = await importGenerator(entry, configDir ?? process.cwd());
80
+ register(registry, custom);
81
+ return custom.name;
82
+ }
32
83
  /** Validate a custom generator and add it under its name, rejecting collisions. */
33
84
  function register(registry, custom) {
34
85
  if (!isPlainObject(custom) ||
@@ -40,12 +91,35 @@ function register(registry, custom) {
40
91
  if (registry.has(custom.name)) {
41
92
  throw new NotSupportedError(`Generator name "${custom.name}" collides with an existing generator. Rename the custom generator.`);
42
93
  }
94
+ // The model and the helpers change under semver, so a declared range that excludes the
95
+ // running version means the generator and this CLI disagree on the contract.
96
+ if (custom.requiresGenerator !== undefined) {
97
+ const satisfied = satisfiesGeneratorRange(GENERATOR_VERSION, custom.requiresGenerator);
98
+ if (satisfied === undefined) {
99
+ throw new NotSupportedError(`Generator "${custom.name}" declares requiresGenerator "${custom.requiresGenerator}", which is not a range we read. Use ^1.2.0, ~1.2.0, >=1.2.0, or an exact version.`);
100
+ }
101
+ if (!satisfied) {
102
+ throw new NotSupportedError(`Generator "${custom.name}" needs @redocly/client-generator ${custom.requiresGenerator}; this CLI ships ${GENERATOR_VERSION}. ` +
103
+ 'Upgrade @redocly/cli if the generator is newer, or update the generator — `redocly eject-generator <name> --update` for an ejected file, or upgrade its package.');
104
+ }
105
+ }
106
+ // A custom generator MAY take over a built-in name — that's how an ejected
107
+ // generator replaces its origin without a config rename. Announce the takeover.
108
+ if (custom.name in BUILTIN_META) {
109
+ logger.warn(`generate-client: custom generator "${custom.name}" takes over the built-in generator of the same name.\n`);
110
+ }
43
111
  registry.set(custom.name, {
44
112
  run: custom.run,
113
+ sample: custom.sample,
114
+ // `docs` and `notApplicable` are part of the contract the ejected files export —
115
+ // dropping either makes an ejected generator quietly do less than the built-in it
116
+ // replaced (`--docs` writes no page, ignored options stop warning).
117
+ docs: custom.docs,
118
+ notApplicable: custom.notApplicable,
119
+ options: custom.options,
45
120
  requires: custom.requires,
46
121
  errorModes: custom.errorModes,
47
122
  dateTypes: custom.dateTypes,
48
- runtimes: custom.runtimes,
49
123
  });
50
124
  }
51
125
  /** Dynamically import a generator from a path (resolved against `configDir`) or package specifier. */
@@ -57,9 +131,14 @@ async function importGenerator(specifier, configDir) {
57
131
  }
58
132
  const isPath = specifier.startsWith('.') || isAbsolute(specifier);
59
133
  const target = isPath ? pathToFileURL(resolvePath(configDir, specifier)).href : specifier;
134
+ // An ejected generator is TypeScript source, run through Node's own type stripping —
135
+ // absent that, `import()` would die with ERR_UNKNOWN_FILE_EXTENSION deep in the loader.
136
+ if (isPath && specifier.endsWith('.ts') && !process.features.typescript) {
137
+ throw new NotSupportedError(`Generator "${specifier}" is TypeScript, which this Node cannot run directly — use Node 22.18, 23.6, or newer.`);
138
+ }
60
139
  let module;
61
140
  try {
62
- module = (await import(target));
141
+ module = (await import(__rewriteRelativeImportExtension(target)));
63
142
  }
64
143
  catch (cause) {
65
144
  throw new NotSupportedError(`Could not load generator "${specifier}": ${cause.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/generators/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/generators/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import type { Generator } from './types.js';
1
+ import type { Generator } from '@redocly/client-generator';
2
2
  /**
3
3
  * The swr generator: a standalone `<stem>.swr.ts` module of SWR hooks wrapping the
4
4
  * sdk operation functions — `<op>Key` + `use<Op>` (`useSWR`) per query (GET/HEAD),
5
5
  * `use<Op>` (`useSWRMutation`) per mutation. It imports the operation functions +
6
6
  * their `<Op>Variables` types from the sdk entry (`./<stem>.js`), so it requires the
7
- * `sdk` generator and targets its throw-mode operation functions. `swr`/`swr/mutation`
7
+ * `typescript` generator and targets its throw-mode operation functions. `swr`/`swr/mutation`
8
8
  * are the consumer's peer; the sdk client stays dependency-free.
9
9
  *
10
10
  * Output-mode-agnostic: `./<stem>.js` resolves to the single-file client or the
@@ -12,4 +12,4 @@ import type { Generator } from './types.js';
12
12
  * no operations.
13
13
  */
14
14
  export declare const swrGenerator: Generator;
15
- //# sourceMappingURL=swr.d.ts.map
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/swr/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,EAAE,SAO1B,CAAC"}
@@ -1,27 +1,24 @@
1
1
  import { join } from 'node:path';
2
- import { HEADER } from '../emitters/emit-options.js';
3
- import { renderSwrModule } from '../emitters/swr.js';
4
- import { anchor } from './anchor.js';
2
+ import { renderSwrModule } from "./render.js";
5
3
  /**
6
4
  * The swr generator: a standalone `<stem>.swr.ts` module of SWR hooks wrapping the
7
5
  * sdk operation functions — `<op>Key` + `use<Op>` (`useSWR`) per query (GET/HEAD),
8
6
  * `use<Op>` (`useSWRMutation`) per mutation. It imports the operation functions +
9
7
  * their `<Op>Variables` types from the sdk entry (`./<stem>.js`), so it requires the
10
- * `sdk` generator and targets its throw-mode operation functions. `swr`/`swr/mutation`
8
+ * `typescript` generator and targets its throw-mode operation functions. `swr`/`swr/mutation`
11
9
  * are the consumer's peer; the sdk client stays dependency-free.
12
10
  *
13
11
  * Output-mode-agnostic: `./<stem>.js` resolves to the single-file client or the
14
12
  * multi-file barrel at the output anchor either way. Emits nothing when there are
15
13
  * no operations.
16
14
  */
17
- export const swrGenerator = ({ model, outputPath, emit }) => {
18
- const { dir, stem } = anchor(outputPath);
15
+ export const swrGenerator = ({ model, output, banner, emit }) => {
19
16
  const content = renderSwrModule(model, {
20
- argsStyle: emit.argsStyle ?? 'flat',
21
- sdkModule: `./${stem}.${emit.importExt ?? 'js'}`,
17
+ sdkModule: `./${output.stem}.${emit.importExt ?? 'js'}`,
22
18
  });
23
19
  if (content === '')
24
20
  return [];
25
- return [{ path: join(dir, `${stem}.swr.ts`), content: `${HEADER}\n\n${content}` }];
21
+ const header = banner.map((line) => `// ${line}`).join('\n');
22
+ return [{ path: join(output.dir, `${output.stem}.swr.ts`), content: `${header}\n\n${content}` }];
26
23
  };
27
- //# sourceMappingURL=swr.js.map
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/swr/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;KACxD,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,OAAO,EAAE,EAAE,CAAC,CAAC;AACnG,CAAC,CAAC"}
@@ -1,10 +1,8 @@
1
- import type { ApiModel } from '../intermediate-representation/model.js';
1
+ import type { ApiModel } from '@redocly/client-generator';
2
2
  export type SwrOptions = {
3
3
  /** Import specifier for the sdk entry the operation functions/types live in. */
4
4
  sdkModule: string;
5
- /** How the sdk function takes its inputs — must match the generated client. */
6
- argsStyle: 'flat' | 'grouped';
7
5
  };
8
6
  /** Render the full SWR module source. `''` when there are no wrappable operations. */
9
7
  export declare function renderSwrModule(model: ApiModel, opts: SwrOptions): string;
10
- //# sourceMappingURL=swr.d.ts.map
8
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/generators/swr/render.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,2BAA2B,CAAC;AAW1E,MAAM,MAAM,UAAU,GAAG;IACvB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;CAEnB,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAYzE"}
@@ -0,0 +1,57 @@
1
+ // Emits an idiomatic SWR module wrapping the sdk operation functions. Per query
2
+ // operation (GET/HEAD) a `<op>Key(vars)` tuple factory + a `use<Op>(vars, init?)`
3
+ // hook returning `useSWR(key, fetcher)`; per mutation (everything else) a
4
+ // `use<Op>()` hook returning `useSWRMutation(key, (key, { arg }) => <op>(arg))`.
5
+ // The fetcher forwards args per the configured args style (grouped `<op>(vars, init)`
6
+ // or flat `<op>(vars.petId, …, init)`) via the shared `operationSignature`, so the
7
+ // call type-checks against the generated sdk.
8
+ // `swr`/`swr/mutation` are the consumer's peer; the sdk stays dependency-free.
9
+ // Source-text templates throughout.
10
+ import { hasInputs, isQuery, sdkCallText, sdkNamedImportText, variablesName, wrappableOperations, } from '@redocly/client-generator/contracts/typescript';
11
+ import { pascalCase } from '@redocly/client-generator/printers/typescript';
12
+ /** Render the full SWR module source. `''` when there are no wrappable operations. */
13
+ export function renderSwrModule(model, opts) {
14
+ const ops = wrappableOperations(model, 'swr');
15
+ if (ops.length === 0)
16
+ return '';
17
+ const hasQuery = ops.some(isQuery);
18
+ const hasMutation = ops.some((op) => !isQuery(op));
19
+ const blocks = [
20
+ ...(hasQuery ? ['import useSWR from "swr";'] : []),
21
+ ...(hasMutation ? ['import useSWRMutation from "swr/mutation";'] : []),
22
+ sdkNamedImportText(ops, opts.sdkModule, hasQuery),
23
+ ...ops.flatMap((op) => (isQuery(op) ? queryBlocks(op) : [mutationBlock(op)])),
24
+ ];
25
+ return blocks.join('\n\n');
26
+ }
27
+ /** An exported `function use<Op>(<params>) { return <expr>; }` declaration. */
28
+ function hookBlock(op, params, expr) {
29
+ return `export function use${pascalCase(op.name)}(${params}) {\n return ${expr};\n}`;
30
+ }
31
+ /** A query op's `<op>Key` factory + `use<Op>` hook calling `useSWR`. */
32
+ function queryBlocks(op) {
33
+ const inputs = hasInputs(op);
34
+ const keyParams = inputs ? `vars: ${variablesName(op)}` : '';
35
+ const keyElements = inputs
36
+ ? `[${JSON.stringify(op.name)}, vars]`
37
+ : `[${JSON.stringify(op.name)}]`;
38
+ const key = `export const ${op.name}Key = (${keyParams}) => ${keyElements} as const;`;
39
+ const keyCall = `${op.name}Key(${inputs ? 'vars' : ''})`;
40
+ const useSwr = `useSWR(${keyCall}, () => ${sdkCallText(op, 'vars', true)})`;
41
+ // The throw-only `envelope` option is excluded — cached data must stay the plain body.
42
+ const params = inputs
43
+ ? `vars: ${variablesName(op)}, init?: Omit<RequestOptions, "envelope">`
44
+ : 'init?: Omit<RequestOptions, "envelope">';
45
+ return [key, hookBlock(op, params, useSwr)];
46
+ }
47
+ /** A mutation op's `use<Op>` hook calling `useSWRMutation`. */
48
+ function mutationBlock(op) {
49
+ // `(_key: string, { arg }: { arg: <Op>Variables }) => <op>(…arg)` when the op has
50
+ // inputs; a no-arg `() => <op>()` when it has none (`arg` would be unused).
51
+ const trigger = hasInputs(op)
52
+ ? `(_key: string, { arg }: {\n arg: ${variablesName(op)};\n }) => ${sdkCallText(op, 'arg', false)}`
53
+ : `() => ${sdkCallText(op, 'arg', false)}`;
54
+ const useSwrMutation = `useSWRMutation(${JSON.stringify(op.name)}, ${trigger})`;
55
+ return hookBlock(op, '', useSwrMutation);
56
+ }
57
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/generators/swr/render.ts"],"names":[],"mappings":"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"}