@redocly/client-generator 0.3.7 → 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,166 @@
1
+ // The built-in `php` generator — the third non-TypeScript library entry, authored
2
+ // with the language-neutral toolkit only (same dogfooding invariant as python/go,
3
+ // pinned by the guard test). Output is a single PHP >= 8.1 file over the curl
4
+ // extension: promoted-constructor classes with fromArray/toArray hydration, native
5
+ // backed enums, match-based discriminator dispatchers, and a Client over the
6
+ // embedded runtime. Exceptions are the error mode (`errorMode` does not apply).
7
+ import { identifierFor, jsonSuccessSchema, paginationItemSchema, renderReferencePage, sseResponse, } from '@redocly/client-generator';
8
+ import { PhpPrinter } from '@redocly/client-generator/printers/php';
9
+ import { PHP_RUNTIME_SOURCE } from '@redocly/client-generator/runtime-sources';
10
+ import { writeServers } from "./client.js";
11
+ import { phpPaginationLiteral, phpSecurityLiteral } from "./descriptor.js";
12
+ import { hydration, renderPhpModels } from "./models.js";
13
+ import { methodIdents, methodName, PHP, phpString, propertyName } from "./naming.js";
14
+ import { writePhpMethod } from "./operations.js";
15
+ import { writePhpPaginationWrappers } from "./pagination.js";
16
+ import { phpType } from "./types.js";
17
+ export { renderPhpModels } from "./models.js";
18
+ export { phpType } from "./types.js";
19
+ /** Drop the standalone header (<?php, declare, namespace, leading comments) for stitching. */
20
+ function stripPhpHeader(source) {
21
+ const lines = source.split('\n');
22
+ let start = 0;
23
+ for (let index = 0; index < lines.length; index++) {
24
+ const line = lines[index].trim();
25
+ if (line.startsWith('namespace ')) {
26
+ start = index + 1;
27
+ break;
28
+ }
29
+ }
30
+ return lines.slice(start).join('\n').trim();
31
+ }
32
+ /** The whole generated file: namespace + models + embedded runtime + operations + Client. */
33
+ export const phpGenerator = ({ model, output, banner, emit, pagination }) => {
34
+ const printer = new PhpPrinter();
35
+ const dateType = emit.dateType ?? 'string';
36
+ const namespace = identifierFor(model.title, { style: 'pascal', reserved: PHP });
37
+ printer.line('<?php');
38
+ printer.blank();
39
+ printer.line(`// Code generated by @redocly/client-generator (php) from ${phpString(model.title)} ${model.version}. DO NOT EDIT.`);
40
+ printer.line('// Regenerate with `redocly generate-client`. PHP >= 8.1, curl extension — zero Composer dependencies.');
41
+ printer.blank();
42
+ printer.line('declare(strict_types=1);');
43
+ printer.blank();
44
+ printer.line(`namespace ${namespace};`);
45
+ printer.blank();
46
+ printer.line(renderPhpModels(model, dateType));
47
+ writeServers(printer, model);
48
+ if (emit.runtime === 'module') {
49
+ // The runtime file re-declares this same namespace, so the require binds the
50
+ // exact names the inline stitching would have defined at this position.
51
+ printer.line('// ─── Runtime (a real file beside this one, written by the same run) ───');
52
+ printer.line("require_once __DIR__ . '/runtime.php';");
53
+ printer.blank();
54
+ }
55
+ else {
56
+ printer.line('// ─── Embedded runtime (@redocly/client-generator php runtime) ───');
57
+ printer.line(stripPhpHeader(PHP_RUNTIME_SOURCE));
58
+ printer.blank();
59
+ }
60
+ const operations = model.services.flatMap((service) => service.operations);
61
+ const idents = methodIdents(model);
62
+ // Pagination arrives RESOLVED from the pipeline — one fit-verified answer per run.
63
+ const paginationRules = new Map();
64
+ for (const op of operations) {
65
+ const spec = pagination?.get(op.name)?.spec;
66
+ if (spec !== undefined)
67
+ paginationRules.set(op.name, spec);
68
+ }
69
+ printer.block('const OPERATIONS = [', () => {
70
+ for (const op of operations) {
71
+ const id = op.specName ?? op.name;
72
+ const security = phpSecurityLiteral(op, model);
73
+ const rule = paginationRules.get(op.name);
74
+ const fields = [
75
+ `'id' => ${phpString(id)}`,
76
+ `'method' => ${phpString(op.method.toUpperCase())}`,
77
+ `'path' => ${phpString(op.path)}`,
78
+ ...(security !== undefined ? [`'security' => ${security}`] : []),
79
+ ...(rule !== undefined ? [`'pagination' => ${phpPaginationLiteral(rule)}`] : []),
80
+ ];
81
+ printer.line(`${phpString(id)} => [${fields.join(', ')}],`);
82
+ }
83
+ }, '];');
84
+ printer.blank();
85
+ printer.doc('Client', `Client for ${model.title} (${model.version}).`);
86
+ // Not final: PHP test suites mock concrete classes (createMock(Client::class)).
87
+ printer.line('class Client');
88
+ printer.block('{', () => {
89
+ printer.line('public function __construct(private Config $config)');
90
+ printer.block('{', () => {
91
+ printer.block("if ($this->config->serverUrl === '') {", () => {
92
+ printer.line(`$this->config->serverUrl = ${phpString(emit.serverUrl ?? model.serverUrl ?? '')};`);
93
+ }, '}');
94
+ }, '}');
95
+ printer.blank();
96
+ for (const op of operations) {
97
+ const ident = idents.get(op.name);
98
+ writePhpMethod(printer, op, ident, model, dateType);
99
+ if (sseResponse(op) === undefined && (op.successResponseHeaders?.length ?? 0) > 0) {
100
+ writePhpMethod(printer, op, ident, model, dateType, true);
101
+ }
102
+ const rule = paginationRules.get(op.name);
103
+ if (rule === undefined)
104
+ continue;
105
+ const success = jsonSuccessSchema(op);
106
+ const pageHydration = success === undefined ? undefined : hydration(success, '$page', model, dateType);
107
+ const element = paginationItemSchema(success, rule.items, model);
108
+ const itemHydration = element === undefined ? undefined : hydration(element, '$item', model, dateType);
109
+ writePhpPaginationWrappers(printer, op, ident, model, dateType, pageHydration, itemHydration, rule.items, element === undefined ? 'mixed' : phpType(element, model, dateType));
110
+ }
111
+ }, '}');
112
+ const entry = { path: output.path.replace(/\.[^.\\/]+$/, '.php'), content: printer.toString() };
113
+ if (emit.runtime !== 'module')
114
+ return [entry];
115
+ // The runtime, verbatim except its namespace: rewritten to the client's, so one
116
+ // namespace spans both files and every bare reference resolves unchanged.
117
+ const header = banner.map((line) => `// ${line}`).join('\n');
118
+ const runtimeSource = PHP_RUNTIME_SOURCE.replace(/^namespace .*$/m, `namespace ${namespace};`)
119
+ .replace(/^<\?php\n/, `<?php\n\n${header}\n`)
120
+ .trimEnd();
121
+ return [
122
+ entry,
123
+ { path: entry.path.replace(/[^\\/]+$/, 'runtime.php'), content: `${runtimeSource}\n` },
124
+ ];
125
+ };
126
+ /** One idiomatic PHP call per operation — feeds `x-codeSamples` for docs. */
127
+ export function phpSample(op, ctx) {
128
+ const args = [
129
+ ...op.pathParams.map((param) => `${phpString(`<${propertyName(param.name)}>`)}`),
130
+ ...(op.requestBody ? ['$body'] : []),
131
+ ...(op.queryParams.length > 0
132
+ ? [`${propertyName(op.queryParams[0].name)}: ${phpString('<value>')}`]
133
+ : []),
134
+ ];
135
+ const namespace = identifierFor(ctx.model.title, { style: 'pascal', reserved: PHP });
136
+ // The file this run writes, so the snippet requires something that exists.
137
+ const file = ctx.outputPath.replace(/^.*[\\/]/, '').replace(/\.[^.]+$/, '.php');
138
+ return {
139
+ lang: 'php',
140
+ label: 'PHP SDK',
141
+ source: `require '${file}';\n\nuse ${namespace}\\{Client, Config};\n\n$client = new Client(new Config());\n$result = $client->${methodIdents(ctx.model).get(op.name) ?? methodName(op)}(${args.join(', ')});\n`,
142
+ };
143
+ }
144
+ /**
145
+ * The SDK's own reference page, written when `client.docs` is on. The call snippets come
146
+ * from `phpSample` — this generator's own hook — so the page can only ever show the syntax
147
+ * of the SDK beside it, and ejecting this generator takes the page with it.
148
+ */
149
+ export const phpDocs = ({ model, output, emit, pagination }) => [
150
+ {
151
+ path: output.path.replace(/\.[^.\\/]+$/, '.php.md'),
152
+ content: renderReferencePage(model, {
153
+ title: `${model.title} PHP SDK reference`,
154
+ frontmatter: emit.docsFrontmatter === true,
155
+ language: {
156
+ name: 'php',
157
+ label: 'PHP',
158
+ fence: 'php',
159
+ requires: 'The SDK needs the curl extension.',
160
+ },
161
+ sample: (op) => phpSample(op, { model, emit, outputPath: output.path }),
162
+ paginated: new Set(pagination?.keys() ?? []),
163
+ }),
164
+ },
165
+ ];
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/php/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type ApiModel, type DateType, type SchemaModel } from '@redocly/client-generator';
2
+ /** Wire value → typed value expression, or undefined when the raw value is already right. */
3
+ export declare function hydration(schema: SchemaModel, expr: string, model: ApiModel, dateType: DateType): string | undefined;
4
+ /** Typed value → wire value expression, or undefined when it serializes as-is. */
5
+ export declare function serialization(schema: SchemaModel, expr: string, model: ApiModel, dateType?: DateType): string | undefined;
6
+ /** Render every named schema: classes (allOf flattened), native enums, union dispatchers. */
7
+ export declare function renderPhpModels(model: ApiModel, dateType?: DateType): string;
8
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/generators/php/models.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAMb,KAAK,WAAW,EAGjB,MAAM,2BAA2B,CAAC;AAYnC,6FAA6F;AAC7F,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,EAGf,QAAQ,EAAE,QAAQ,GACjB,MAAM,GAAG,SAAS,CA0BpB;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,QAAmB,GAC5B,MAAM,GAAG,SAAS,CA8BpB;AA+FD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAmB,GAAG,MAAM,CA2EtF"}
@@ -0,0 +1,200 @@
1
+ // The `models` stage: named schemas as promoted-constructor classes with
2
+ // fromArray/toArray hydration, native backed enums, and match-based union
3
+ // dispatchers — plus the wire↔typed value expressions the methods reuse.
4
+ import { deref, discriminatorCases, enumValues, flattenAllOf, uniqueIdentifiers, unwrapNullable, } from '@redocly/client-generator';
5
+ import { PhpPrinter } from '@redocly/client-generator/printers/php';
6
+ import { className, PHP, phpString, propertyName } from "./naming.js";
7
+ import { classify, isDateFormat, phpNullable, phpType } from "./types.js";
8
+ /** True when the named schema renders as an `unmarshalX` union dispatcher. */
9
+ function isDiscriminatedUnion(name, model) {
10
+ const named = model.schemas.find((candidate) => candidate.name === name);
11
+ return named !== undefined && discriminatorCases(named.schema, model) !== undefined;
12
+ }
13
+ /** Wire value → typed value expression, or undefined when the raw value is already right. */
14
+ export function hydration(schema, expr, model,
15
+ // Required on purpose: a defaulted `'string'` let a call site forget it, and the method
16
+ // then returned a raw string where its own signature declared `\DateTimeImmutable`.
17
+ dateType) {
18
+ const bare = unwrapNullable(schema);
19
+ if (dateType === 'Date' && bare.kind === 'scalar' && bare.scalar === 'string') {
20
+ if (isDateFormat(bare))
21
+ return `new \\DateTimeImmutable(${expr})`;
22
+ }
23
+ if (bare.kind === 'omit')
24
+ return hydration({ kind: 'ref', name: bare.base }, expr, model, dateType);
25
+ if (bare.kind === 'ref') {
26
+ const kind = classify(bare.name, model);
27
+ if (kind === 'class')
28
+ return `${className(bare.name)}::fromArray(${expr})`;
29
+ if (kind === 'enum')
30
+ return `${className(bare.name)}::from(${expr})`;
31
+ if (isDiscriminatedUnion(bare.name, model))
32
+ return `unmarshal${className(bare.name)}(${expr})`;
33
+ const target = deref(bare, model);
34
+ return target === undefined ? undefined : hydration(target, expr, model, dateType);
35
+ }
36
+ if (bare.kind === 'array') {
37
+ const item = hydration(bare.items, '$item', model, dateType);
38
+ if (item === undefined)
39
+ return undefined;
40
+ return `array_map(static fn ($item) => ${item}, ${expr})`;
41
+ }
42
+ if (bare.kind === 'record') {
43
+ const item = hydration(bare.value, '$item', model, dateType);
44
+ if (item === undefined)
45
+ return undefined;
46
+ return `array_map(static fn ($item) => ${item}, ${expr})`;
47
+ }
48
+ return undefined;
49
+ }
50
+ /** Typed value → wire value expression, or undefined when it serializes as-is. */
51
+ export function serialization(schema, expr, model, dateType = 'string') {
52
+ const bare = unwrapNullable(schema);
53
+ if (dateType === 'Date' && bare.kind === 'scalar' && bare.scalar === 'string') {
54
+ // A date-only value must not gain a time component on the way out.
55
+ if (bare.metadata?.format === 'date')
56
+ return `${expr}->format('Y-m-d')`;
57
+ if (bare.metadata?.format === 'date-time') {
58
+ return `${expr}->format(\\DateTimeInterface::ATOM)`;
59
+ }
60
+ }
61
+ if (bare.kind === 'omit') {
62
+ return serialization({ kind: 'ref', name: bare.base }, expr, model, dateType);
63
+ }
64
+ if (bare.kind === 'ref') {
65
+ const kind = classify(bare.name, model);
66
+ if (kind === 'class')
67
+ return `${expr}->toArray()`;
68
+ if (kind === 'enum')
69
+ return `${expr}->value`;
70
+ // A union value may be a hydrated member instance or a raw (default-case) array.
71
+ if (isDiscriminatedUnion(bare.name, model)) {
72
+ return `is_object(${expr}) ? ${expr}->toArray() : ${expr}`;
73
+ }
74
+ const target = deref(bare, model);
75
+ return target === undefined ? undefined : serialization(target, expr, model, dateType);
76
+ }
77
+ if (bare.kind === 'array' || bare.kind === 'record') {
78
+ const inner = bare.kind === 'array' ? bare.items : bare.value;
79
+ const item = serialization(inner, '$item', model, dateType);
80
+ if (item === undefined)
81
+ return undefined;
82
+ return `array_map(static fn ($item) => ${item}, ${expr})`;
83
+ }
84
+ return undefined;
85
+ }
86
+ function writeClass(printer, name, properties, model, dateType, description) {
87
+ // PHP requires defaulted parameters after required ones.
88
+ const ordered = [
89
+ ...properties.filter((property) => property.required),
90
+ ...properties.filter((property) => !property.required),
91
+ ];
92
+ printer.doc(className(name), description);
93
+ printer.line(`final class ${className(name)}`);
94
+ printer.block('{', () => {
95
+ printer.block('public function __construct(', () => {
96
+ for (const property of ordered) {
97
+ const type = phpType(property.schema, model, dateType);
98
+ if (property.required) {
99
+ printer.line(`public ${type} ${'$'}${propertyName(property.name)},`);
100
+ }
101
+ else {
102
+ const nullable = phpNullable(type);
103
+ printer.line(`public ${nullable} ${'$'}${propertyName(property.name)} = null,`);
104
+ }
105
+ }
106
+ }, ') {');
107
+ printer.line('}');
108
+ printer.blank();
109
+ printer.line('public static function fromArray(array $data): self');
110
+ printer.block('{', () => {
111
+ printer.block('return new self(', () => {
112
+ for (const property of ordered) {
113
+ const raw = `$data[${phpString(property.name)}]`;
114
+ const typed = hydration(property.schema, raw, model, dateType);
115
+ const php = propertyName(property.name);
116
+ if (property.required) {
117
+ printer.line(`${php}: ${typed ?? raw},`);
118
+ }
119
+ else if (typed === undefined) {
120
+ printer.line(`${php}: ${raw} ?? null,`);
121
+ }
122
+ else {
123
+ printer.line(`${php}: isset(${raw}) ? ${typed} : null,`);
124
+ }
125
+ }
126
+ }, ');');
127
+ }, '}');
128
+ printer.blank();
129
+ printer.line('public function toArray(): array');
130
+ printer.block('{', () => {
131
+ printer.line('$data = [];');
132
+ for (const property of ordered) {
133
+ const value = `$this->${propertyName(property.name)}`;
134
+ const wire = serialization(property.schema, value, model, dateType) ?? value;
135
+ if (property.required) {
136
+ printer.line(`$data[${phpString(property.name)}] = ${wire};`);
137
+ }
138
+ else {
139
+ printer.block(`if (${value} !== null) {`, () => {
140
+ printer.line(`$data[${phpString(property.name)}] = ${wire};`);
141
+ }, '}');
142
+ }
143
+ }
144
+ printer.line('return $data;');
145
+ }, '}');
146
+ }, '}');
147
+ printer.blank();
148
+ }
149
+ /** Render every named schema: classes (allOf flattened), native enums, union dispatchers. */
150
+ export function renderPhpModels(model, dateType = 'string') {
151
+ const printer = new PhpPrinter();
152
+ for (const { name, schema } of model.schemas) {
153
+ const asEnum = enumValues(schema);
154
+ if (asEnum !== undefined && (asEnum.scalar === 'string' || asEnum.scalar === 'integer')) {
155
+ const backing = asEnum.scalar === 'string' ? 'string' : 'int';
156
+ printer.doc(className(name), schema.description);
157
+ printer.line(`enum ${className(name)}: ${backing}`);
158
+ printer.block('{', () => {
159
+ // `1.5` and `15` fold to one pascal name; PHP rejects a duplicate case.
160
+ const members = uniqueIdentifiers(asEnum.values.map((value) => String(value)), { style: 'pascal', reserved: PHP });
161
+ asEnum.values.forEach((value, index) => {
162
+ const literal = typeof value === 'string' ? phpString(value) : String(value);
163
+ printer.line(`case ${members[index]} = ${literal};`);
164
+ });
165
+ }, '}');
166
+ printer.blank();
167
+ continue;
168
+ }
169
+ if (schema.kind === 'object' || schema.kind === 'intersection') {
170
+ const flat = flattenAllOf(schema, model);
171
+ if (flat !== undefined) {
172
+ writeClass(printer, name, flat.properties, model, dateType, flat.description ?? schema.description);
173
+ continue;
174
+ }
175
+ }
176
+ const cases = discriminatorCases(schema, model);
177
+ if (cases !== undefined) {
178
+ const typeName = className(name);
179
+ const table = cases.cases
180
+ .map((entry) => `${entry.value} -> ${className(entry.schemaName)}`)
181
+ .join(', ');
182
+ printer.line(`/** ${typeName} is a discriminated union (${phpString(cases.property)}): ${table}. */`);
183
+ printer.line(`function unmarshal${typeName}(array $data): mixed`);
184
+ printer.block('{', () => {
185
+ printer.block(`return match ($data[${phpString(cases.property)}] ?? null) {`, () => {
186
+ for (const entry of cases.cases) {
187
+ printer.line(`${phpString(entry.value)} => ${className(entry.schemaName)}::fromArray($data),`);
188
+ }
189
+ printer.line('default => $data,');
190
+ }, '};');
191
+ }, '}');
192
+ printer.blank();
193
+ continue;
194
+ }
195
+ // Everything else (plain unions, aliases, records) has no PHP declaration;
196
+ // references resolve to the underlying type via phpType.
197
+ }
198
+ return printer.toString();
199
+ }
200
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/generators/php/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ApiModel, type OperationModel } from '@redocly/client-generator';
2
+ import { PhpPrinter } from '@redocly/client-generator/printers/php';
3
+ export declare const PHP: ReadonlySet<string>;
4
+ export declare const naming: PhpPrinter;
5
+ export declare function className(name: string): string;
6
+ export declare function propertyName(name: string): string;
7
+ /** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
8
+ export declare function phpString(value: string): string;
9
+ export declare function methodName(op: OperationModel): string;
10
+ /**
11
+ * The method name for every operation, unique across the client — PHP fatals on a
12
+ * redeclared method, and two operationIds may camel-case to one name (`get-user`,
13
+ * `getUser`). Keyed by the IR name, which the sanitizer already made unique.
14
+ */
15
+ export declare function methodIdents(model: ApiModel): Map<string, string>;
16
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../../src/generators/php/naming.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,cAAc,EAGpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,eAAO,MAAM,GAAG,qBAAqB,CAAC;AAGtC,eAAO,MAAM,MAAM,YAAmB,CAAC;AAEvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjE"}
@@ -0,0 +1,31 @@
1
+ // The `naming` stage: the shared printer/naming instance, the string escaper, and
2
+ // the collision-free class/property/method identifiers every other stage builds on.
3
+ import { identifierFor, RESERVED_WORDS, uniqueIdentifiers, } from '@redocly/client-generator';
4
+ import { PhpPrinter } from '@redocly/client-generator/printers/php';
5
+ export const PHP = RESERVED_WORDS.php;
6
+ // Naming and escaping delegate to the printer — one implementation, one policy.
7
+ export const naming = new PhpPrinter();
8
+ export function className(name) {
9
+ return naming.typeName(name);
10
+ }
11
+ export function propertyName(name) {
12
+ return naming.memberName(name);
13
+ }
14
+ /** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
15
+ export function phpString(value) {
16
+ return naming.string(value);
17
+ }
18
+ export function methodName(op) {
19
+ return identifierFor(op.name, { style: 'camel', reserved: PHP });
20
+ }
21
+ /**
22
+ * The method name for every operation, unique across the client — PHP fatals on a
23
+ * redeclared method, and two operationIds may camel-case to one name (`get-user`,
24
+ * `getUser`). Keyed by the IR name, which the sanitizer already made unique.
25
+ */
26
+ export function methodIdents(model) {
27
+ const operations = model.services.flatMap((service) => service.operations);
28
+ const names = uniqueIdentifiers(operations.map((op) => op.name), { style: 'camel', reserved: PHP });
29
+ return new Map(operations.map((op, index) => [op.name, names[index]]));
30
+ }
31
+ //# sourceMappingURL=naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../src/generators/php/naming.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oFAAoF;AAEpF,OAAO,EAEL,aAAa,EAEb,cAAc,EACd,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,MAAM,CAAC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;AAEtC,gFAAgF;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAEvC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAkB;IAC3C,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,iBAAiB,CAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAClC,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type ApiModel, type DateType, type OperationModel } from '@redocly/client-generator';
2
+ import type { PhpPrinter } from '@redocly/client-generator/printers/php';
3
+ type MethodArgs = {
4
+ pathArgs: Array<{
5
+ php: string;
6
+ wire: string;
7
+ type: string;
8
+ }>;
9
+ /** `value` is the expression to send: a date object formats itself, everything else is the variable. */
10
+ queryArgs: Array<{
11
+ php: string;
12
+ wire: string;
13
+ type: string;
14
+ value: string;
15
+ }>;
16
+ signature: string[];
17
+ };
18
+ export declare function methodArgs(op: OperationModel, model: ApiModel, includeBody: boolean, dateType: DateType): MethodArgs;
19
+ export declare function writePhpMethod(printer: PhpPrinter, op: OperationModel, ident: string, model: ApiModel, dateType: DateType, envelope?: boolean): void;
20
+ export {};
21
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/generators/php/operations.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAGb,KAAK,cAAc,EAGpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AASzE,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,wGAAwG;IACxG,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAQF,wBAAgB,UAAU,CACxB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAwCZ;AA+BD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,QAAQ,UAAQ,GACf,IAAI,CA8GN"}