@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,296 @@
1
+ // Ejected from @redocly/client-generator@0.4.0 — the built-in "go" generator.
2
+ // This file is yours: edit freely; the generated client stays machine-owned and is
3
+ // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
+ // `redocly eject-generator go --update`.
5
+ // The `operations` stage: one typed request method per operation, plus the
6
+ // argument and envelope-header planning it shares with the pagination wrappers.
7
+
8
+ import {
9
+ type ApiModel,
10
+ type DateType,
11
+ headerCoerceType,
12
+ isMultipartBody,
13
+ jsonSuccessSchema,
14
+ type OperationModel,
15
+ type ParamModel,
16
+ sseResponse,
17
+ uniqueIdentifiers,
18
+ } from '@redocly/client-generator';
19
+ import { exported, type GoPrinter } from '@redocly/client-generator/printers/go';
20
+
21
+ import { GO, naming } from './naming.ts';
22
+ import { goType } from './types.ts';
23
+
24
+ /** A query-value expression formatted to string for url.Values. */
25
+ export function goQueryFormat(expr: string, type: string): string {
26
+ if (type === 'string') return expr;
27
+ // Dates serialize in their wire layout, not Go's default String(). A dereferenced
28
+ // pointer needs parentheses: `*p.Format(…)` would deref Format's result.
29
+ const receiver = expr.startsWith('*') ? `(${expr})` : expr;
30
+ if (type === 'time.Time') return `${receiver}.Format(time.RFC3339)`;
31
+ if (type === 'Date') return `${receiver}.Format("2006-01-02")`;
32
+ if (type === 'int64') return `strconv.FormatInt(${expr}, 10)`;
33
+ if (type === 'float64') return `strconv.FormatFloat(${expr}, 'f', -1, 64)`;
34
+ if (type === 'bool') return `strconv.FormatBool(${expr})`;
35
+ return `fmt.Sprint(${expr})`;
36
+ }
37
+
38
+ /**
39
+ * The argument names a method declares beside its path parameters: the receiver, the
40
+ * context, the request body, and the query struct.
41
+ */
42
+ const METHOD_ARG_SLOTS = ['c', 'ctx', 'body', 'params', 'out', 'op'];
43
+
44
+ /**
45
+ * Path parameters as Go arguments, uniquely named. A parameter named after one of the
46
+ * method's own arguments (or a name a description reuses across locations) moves aside as
47
+ * `id2` — Go rejects a duplicate parameter, and the wire name is untouched either way.
48
+ */
49
+ export function pathArguments(
50
+ op: OperationModel,
51
+ dateType: DateType
52
+ ): Array<{ param: ParamModel; go: string; type: string }> {
53
+ const names = uniqueIdentifiers(
54
+ op.pathParams.map((param) => param.name),
55
+ { style: 'camel', reserved: GO, taken: METHOD_ARG_SLOTS }
56
+ );
57
+ return op.pathParams.map((param, index) => ({
58
+ param,
59
+ go: names[index],
60
+ type: goType(param.schema, dateType),
61
+ }));
62
+ }
63
+
64
+ /** Declared response headers planned for the `<Op>Headers` struct: field, wire name, coerce helper. */
65
+ function envelopeHeaderPlan(
66
+ op: OperationModel,
67
+ model: ApiModel
68
+ ): Array<{ field: string; name: string; goType: string; helper: string }> {
69
+ const used = new Set<string>();
70
+ return (op.successResponseHeaders ?? []).map((header) => {
71
+ const base = exported(header.name);
72
+ let field = base;
73
+ let suffix = 2;
74
+ while (used.has(field)) field = `${base}${suffix++}`;
75
+ used.add(field);
76
+ const coerce = headerCoerceType(header.schema, model);
77
+ const mapping = {
78
+ integer: { goType: '*int64', helper: 'headerInt64' },
79
+ number: { goType: '*float64', helper: 'headerFloat64' },
80
+ boolean: { goType: '*bool', helper: 'headerBool' },
81
+ string: { goType: '*string', helper: 'headerString' },
82
+ }[coerce];
83
+ return { field, name: header.name, ...mapping };
84
+ });
85
+ }
86
+
87
+ export function writeGoMethod(
88
+ printer: GoPrinter,
89
+ op: OperationModel,
90
+ ident: string,
91
+ dateType: DateType,
92
+ model?: ApiModel,
93
+ envelope = false
94
+ ): void {
95
+ const pathArgs = pathArguments(op, dateType);
96
+ const hasParams = op.queryParams.length > 0;
97
+ const success = jsonSuccessSchema(op);
98
+ const returnType = success === undefined ? undefined : goType(success, dateType);
99
+ const headerPlan = envelope ? envelopeHeaderPlan(op, model!) : [];
100
+ if (envelope) {
101
+ printer.line(
102
+ `// ${ident}Headers carries the declared response headers of ${ident}WithHeaders (nil when absent or unparsable).`
103
+ );
104
+ printer.block(
105
+ `type ${ident}Headers struct {`,
106
+ () => {
107
+ for (const planned of headerPlan) printer.line(`${planned.field} ${planned.goType}`);
108
+ },
109
+ '}'
110
+ );
111
+ printer.blank();
112
+ }
113
+ const args = [
114
+ 'ctx context.Context',
115
+ ...pathArgs.map(({ go, type }) => `${go} ${type}`),
116
+ ...(op.requestBody ? [`body ${goType(op.requestBody.schema, dateType)}`] : []),
117
+ ...(hasParams ? [`params *${ident}Params`] : []),
118
+ ];
119
+ const sse = sseResponse(op);
120
+ const returns = envelope
121
+ ? returnType === undefined
122
+ ? `(${ident}Headers, error)`
123
+ : `(${returnType}, ${ident}Headers, error)`
124
+ : sse !== undefined
125
+ ? 'func(yield func(ServerSentEvent, error) bool)'
126
+ : returnType === undefined
127
+ ? 'error'
128
+ : `(${returnType}, error)`;
129
+ const fail = (errExpr: string) =>
130
+ envelope
131
+ ? returnType === undefined
132
+ ? `return headers, ${errExpr}`
133
+ : `return out, headers, ${errExpr}`
134
+ : returnType === undefined
135
+ ? `return ${errExpr}`
136
+ : `return out, ${errExpr}`;
137
+ const funcName = envelope ? `${ident}WithHeaders` : ident;
138
+ printer.doc(
139
+ funcName,
140
+ envelope ? `Like ${ident}, also returning the declared response headers.` : op.summary
141
+ );
142
+ printer.block(
143
+ `func (c *Client) ${funcName}(${args.join(', ')}) ${returns} {`,
144
+ () => {
145
+ if (sse === undefined && returnType !== undefined) printer.line(`var out ${returnType}`);
146
+ if (envelope) printer.line(`var headers ${ident}Headers`);
147
+ printer.line(`op := operations[${naming.string(op.specName ?? op.name)}]`);
148
+ printer.line('authHeaders, query := resolveAuth(op.Security, c.config.Auth)');
149
+ if (hasParams) {
150
+ printer.block(
151
+ 'if params != nil {',
152
+ () => {
153
+ for (const param of op.queryParams) {
154
+ const field = exported(param.name);
155
+ printer.block(
156
+ `if params.${field} != nil {`,
157
+ () => {
158
+ // An array repeats the key per element (OpenAPI `form` + `explode`, the
159
+ // default — and what the TS runtime sends). `fmt.Sprint` of a slice
160
+ // would put `[a b]` on the wire as one value.
161
+ if (param.schema.kind === 'array') {
162
+ const elementType = goType(param.schema.items, dateType);
163
+ printer.block(
164
+ `for _, item := range *params.${field} {`,
165
+ () => {
166
+ printer.line(
167
+ `query.Add(${naming.string(param.name)}, ${goQueryFormat('item', elementType)})`
168
+ );
169
+ },
170
+ '}'
171
+ );
172
+ } else {
173
+ printer.line(
174
+ `query.Set(${naming.string(param.name)}, ${goQueryFormat(`*params.${field}`, goType(param.schema, dateType))})`
175
+ );
176
+ }
177
+ },
178
+ '}'
179
+ );
180
+ }
181
+ },
182
+ '}'
183
+ );
184
+ }
185
+ const pathDict = pathArgs
186
+ .map(({ param, go, type }) => `${naming.string(param.name)}: ${goQueryFormat(go, type)}`)
187
+ .join(', ');
188
+ printer.line(
189
+ `requestURL := buildURL(c.config.ServerURL, op.Path, map[string]string{${pathDict}})`
190
+ );
191
+ if (sse !== undefined) {
192
+ printer.block(
193
+ 'open := func(extraHeaders map[string]string) (*http.Response, error) {',
194
+ () => {
195
+ printer.line('merged := map[string]string{}');
196
+ printer.block(
197
+ 'for key, value := range authHeaders {',
198
+ () => {
199
+ printer.line('merged[key] = value');
200
+ },
201
+ '}'
202
+ );
203
+ printer.block(
204
+ 'for key, value := range extraHeaders {',
205
+ () => {
206
+ printer.line('merged[key] = value');
207
+ },
208
+ '}'
209
+ );
210
+ printer.line(
211
+ 'return send(ctx, &c.config, requestSpec{OperationID: op.ID, Method: op.Method, URL: requestURL, Headers: merged, Query: query})'
212
+ );
213
+ },
214
+ '}'
215
+ );
216
+ printer.line(
217
+ `return iterSSE(open, ${sse.schema !== undefined && sse.schema.kind !== 'unknown'})`
218
+ );
219
+ return;
220
+ }
221
+ const specFields = [
222
+ 'OperationID: op.ID',
223
+ 'Method: op.Method',
224
+ 'URL: requestURL',
225
+ 'Headers: authHeaders',
226
+ 'Query: query',
227
+ ];
228
+ if (op.requestBody && isMultipartBody(op)) {
229
+ printer.line('contentType, reader, err := toMultipart(body)');
230
+ printer.block(
231
+ 'if err != nil {',
232
+ () => {
233
+ printer.line(fail('err'));
234
+ },
235
+ '}'
236
+ );
237
+ specFields.push('Body: reader');
238
+ specFields.push('ContentType: contentType');
239
+ } else if (op.requestBody) {
240
+ printer.line('payload, err := json.Marshal(body)');
241
+ printer.block(
242
+ 'if err != nil {',
243
+ () => {
244
+ printer.line(fail('err'));
245
+ },
246
+ '}'
247
+ );
248
+ specFields.push('Body: bytes.NewReader(payload)');
249
+ specFields.push(`ContentType: ${naming.string(op.requestBody.contentType)}`);
250
+ }
251
+ printer.line(`resp, err := send(ctx, &c.config, requestSpec{${specFields.join(', ')}})`);
252
+ printer.block(
253
+ 'if err != nil {',
254
+ () => {
255
+ printer.line(fail('err'));
256
+ },
257
+ '}'
258
+ );
259
+ printer.block(
260
+ 'if resp.StatusCode >= 400 {',
261
+ () => {
262
+ printer.line(fail('apiErrorFrom(resp, requestURL)'));
263
+ },
264
+ '}'
265
+ );
266
+ if (envelope) {
267
+ printer.block(
268
+ `if err := decodeJSON(resp, ${returnType === undefined ? 'nil' : '&out'}); err != nil {`,
269
+ () => {
270
+ printer.line(fail('err'));
271
+ },
272
+ '}'
273
+ );
274
+ for (const planned of headerPlan) {
275
+ printer.line(
276
+ `headers.${planned.field} = ${planned.helper}(resp.Header, ${naming.string(planned.name)})`
277
+ );
278
+ }
279
+ printer.line(returnType === undefined ? 'return headers, nil' : 'return out, headers, nil');
280
+ } else if (returnType === undefined) {
281
+ printer.line('return decodeJSON(resp, nil)');
282
+ } else {
283
+ printer.block(
284
+ 'if err := decodeJSON(resp, &out); err != nil {',
285
+ () => {
286
+ printer.line('return out, err');
287
+ },
288
+ '}'
289
+ );
290
+ printer.line('return out, nil');
291
+ }
292
+ },
293
+ '}'
294
+ );
295
+ printer.blank();
296
+ }
@@ -0,0 +1,194 @@
1
+ // Ejected from @redocly/client-generator@0.4.0 — the built-in "go" generator.
2
+ // This file is yours: edit freely; the generated client stays machine-owned and is
3
+ // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
+ // `redocly eject-generator go --update`.
5
+ // The `pagination` stage: the `<Op>Pages` / `<Op>Items` yield-func iterators.
6
+
7
+ import { type DateType, type OperationModel } from '@redocly/client-generator';
8
+ import { exported, type GoPrinter } from '@redocly/client-generator/printers/go';
9
+
10
+ import { naming } from './naming.ts';
11
+ import { goQueryFormat, pathArguments } from './operations.ts';
12
+ import { goType } from './types.ts';
13
+
14
+ /** `<Op>Pages` / `<Op>Items` iterators over the runtime's `iterPages`, hydrated via `reencode`. */
15
+ export function writeGoPaginationWrappers(
16
+ printer: GoPrinter,
17
+ op: OperationModel,
18
+ ident: string,
19
+ dateType: DateType,
20
+ pageType: string,
21
+ itemType: string
22
+ ): void {
23
+ const pathArgs = pathArguments(op, dateType);
24
+ const hasParams = op.queryParams.length > 0;
25
+ const args = [
26
+ 'ctx context.Context',
27
+ ...pathArgs.map(({ go, type }) => `${go} ${type}`),
28
+ ...(hasParams ? [`params *${ident}Params`] : []),
29
+ ].join(', ');
30
+
31
+ const writeCallClosure = () => {
32
+ printer.line(`op := operations[${naming.string(op.specName ?? op.name)}]`);
33
+ printer.line('base := url.Values{}');
34
+ if (hasParams) {
35
+ printer.block(
36
+ 'if params != nil {',
37
+ () => {
38
+ for (const param of op.queryParams) {
39
+ const field = exported(param.name);
40
+ printer.block(
41
+ `if params.${field} != nil {`,
42
+ () => {
43
+ printer.line(
44
+ `base.Set(${naming.string(param.name)}, ${goQueryFormat(`*params.${field}`, goType(param.schema, dateType))})`
45
+ );
46
+ },
47
+ '}'
48
+ );
49
+ }
50
+ },
51
+ '}'
52
+ );
53
+ }
54
+ printer.block(
55
+ 'call := func(pageParams url.Values) (any, *http.Response, error) {',
56
+ () => {
57
+ printer.line('authHeaders, query := resolveAuth(op.Security, c.config.Auth)');
58
+ printer.block(
59
+ 'for key, values := range pageParams {',
60
+ () => {
61
+ printer.block(
62
+ 'for _, value := range values {',
63
+ () => {
64
+ printer.line('query.Set(key, value)');
65
+ },
66
+ '}'
67
+ );
68
+ },
69
+ '}'
70
+ );
71
+ const pathDict = pathArgs
72
+ .map(({ param, go, type }) => `${naming.string(param.name)}: ${goQueryFormat(go, type)}`)
73
+ .join(', ');
74
+ printer.line(
75
+ `requestURL := buildURL(c.config.ServerURL, op.Path, map[string]string{${pathDict}})`
76
+ );
77
+ printer.line(
78
+ 'resp, err := send(ctx, &c.config, requestSpec{OperationID: op.ID, Method: op.Method, URL: requestURL, Headers: authHeaders, Query: query})'
79
+ );
80
+ printer.block(
81
+ 'if err != nil {',
82
+ () => {
83
+ printer.line('return nil, nil, err');
84
+ },
85
+ '}'
86
+ );
87
+ printer.block(
88
+ 'if resp.StatusCode >= 400 {',
89
+ () => {
90
+ printer.line('return nil, resp, apiErrorFrom(resp, requestURL)');
91
+ },
92
+ '}'
93
+ );
94
+ printer.line('var raw any');
95
+ printer.block(
96
+ 'if err := decodeJSON(resp, &raw); err != nil {',
97
+ () => {
98
+ printer.line('return nil, resp, err');
99
+ },
100
+ '}'
101
+ );
102
+ printer.line('return raw, resp, nil');
103
+ },
104
+ '}'
105
+ );
106
+ printer.line('pages := iterPages(call, *op.Pagination, base)');
107
+ };
108
+
109
+ printer.line(
110
+ `// ${ident}Pages iterates ${ident} response pages; use with \`for page, err := range\`.`
111
+ );
112
+ printer.block(
113
+ `func (c *Client) ${ident}Pages(${args}) func(yield func(${pageType}, error) bool) {`,
114
+ () => {
115
+ writeCallClosure();
116
+ printer.block(
117
+ `return func(yield func(${pageType}, error) bool) {`,
118
+ () => {
119
+ printer.block(
120
+ 'pages(func(raw any, err error) bool {',
121
+ () => {
122
+ printer.line(`var page ${pageType}`);
123
+ printer.block(
124
+ 'if err == nil {',
125
+ () => {
126
+ printer.line('err = reencode(raw, &page)');
127
+ },
128
+ '}'
129
+ );
130
+ printer.line('return yield(page, err)');
131
+ },
132
+ '})'
133
+ );
134
+ },
135
+ '}'
136
+ );
137
+ },
138
+ '}'
139
+ );
140
+ printer.blank();
141
+
142
+ printer.line(`// ${ident}Items iterates the items of every ${ident} page.`);
143
+ printer.block(
144
+ `func (c *Client) ${ident}Items(${args}) func(yield func(${itemType}, error) bool) {`,
145
+ () => {
146
+ writeCallClosure();
147
+ printer.block(
148
+ `return func(yield func(${itemType}, error) bool) {`,
149
+ () => {
150
+ printer.block(
151
+ 'pages(func(raw any, err error) bool {',
152
+ () => {
153
+ printer.block(
154
+ 'if err != nil {',
155
+ () => {
156
+ printer.line(`var zero ${itemType}`);
157
+ printer.line('return yield(zero, err)');
158
+ },
159
+ '}'
160
+ );
161
+ printer.line('pageItems, _ := resolvePointer(raw, op.Pagination.Items).([]any)');
162
+ printer.block(
163
+ 'for _, item := range pageItems {',
164
+ () => {
165
+ printer.line(`var typed ${itemType}`);
166
+ printer.block(
167
+ 'if err := reencode(item, &typed); err != nil {',
168
+ () => {
169
+ printer.line('return yield(typed, err)');
170
+ },
171
+ '}'
172
+ );
173
+ printer.block(
174
+ 'if !yield(typed, nil) {',
175
+ () => {
176
+ printer.line('return false');
177
+ },
178
+ '}'
179
+ );
180
+ },
181
+ '}'
182
+ );
183
+ printer.line('return true');
184
+ },
185
+ '})'
186
+ );
187
+ },
188
+ '}'
189
+ );
190
+ },
191
+ '}'
192
+ );
193
+ printer.blank();
194
+ }
@@ -0,0 +1,60 @@
1
+ // Ejected from @redocly/client-generator@0.4.0 — the built-in "go" generator.
2
+ // This file is yours: edit freely; the generated client stays machine-owned and is
3
+ // rebuilt by `redocly generate-client`. Newer generator versions merge in with
4
+ // `redocly eject-generator go --update`.
5
+ // The `types` stage: the Go type annotation for a schema.
6
+
7
+ import {
8
+ type DateType,
9
+ isNullable,
10
+ type SchemaModel,
11
+ unwrapNullable,
12
+ } from '@redocly/client-generator';
13
+ import { exported } from '@redocly/client-generator/printers/go';
14
+
15
+ /** The Go type for a schema; `required=false` optionals become pointers at the field site. */
16
+ export function goType(schema: SchemaModel, dateType: DateType = 'string'): string {
17
+ if (isNullable(schema)) {
18
+ const inner = goType(unwrapNullable(schema), dateType);
19
+ return inner.startsWith('*') || inner === 'any' ? inner : `*${inner}`;
20
+ }
21
+ switch (schema.kind) {
22
+ case 'scalar':
23
+ // Under `dateType: Date`, a date-time is a time.Time (encoding/json handles
24
+ // RFC 3339 natively) and a bare date is the runtime's `Date` wrapper.
25
+ if (dateType === 'Date' && schema.scalar === 'string') {
26
+ if (schema.metadata?.format === 'date-time') return 'time.Time';
27
+ if (schema.metadata?.format === 'date') return 'Date';
28
+ }
29
+ return { string: 'string', integer: 'int64', number: 'float64', boolean: 'bool' }[
30
+ schema.scalar
31
+ ];
32
+ case 'array':
33
+ return `[]${goType(schema.items, dateType)}`;
34
+ case 'record':
35
+ return `map[string]${goType(schema.value, dateType)}`;
36
+ case 'ref':
37
+ return exported(schema.name);
38
+ case 'literal':
39
+ return typeof schema.value === 'string'
40
+ ? 'string'
41
+ : typeof schema.value === 'boolean'
42
+ ? 'bool'
43
+ : 'float64';
44
+ case 'enum':
45
+ // Anonymous (inline) enums keep the wire scalar; only NAMED enums get types.
46
+ return { string: 'string', integer: 'int64', number: 'float64', boolean: 'bool' }[
47
+ schema.scalar
48
+ ];
49
+ case 'omit':
50
+ // Go has no Omit; the base struct is the honest annotation (readOnly
51
+ // fields are server-managed and simply omitted from requests).
52
+ return exported(schema.base);
53
+ case 'union':
54
+ case 'null':
55
+ case 'object':
56
+ case 'intersection':
57
+ case 'unknown':
58
+ return 'any';
59
+ }
60
+ }