@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 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/printers/go.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { GoPrinter, exported } from './go.js';
2
+ export { PhpPrinter } from './php.js';
3
+ export { PythonPrinter } from './python.js';
4
+ export { TypeScriptPrinter } from './typescript.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/printers/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // The four language printers (ADR-0021): the common `Printer` owns structure, each of
2
+ // these owns one language's syntax. They fill the same slots — `typeName`, `memberName`,
3
+ // `identifier`, `identifiers`, `string`, `literal`, `comment`, `doc`, a baked-in indent
4
+ // unit, and (where the language demands one) a `layout` pass applied by `toString()`.
5
+ export { GoPrinter, exported } from './go.js';
6
+ export { PhpPrinter } from './php.js';
7
+ export { PythonPrinter } from './python.js';
8
+ export { TypeScriptPrinter } from './typescript.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/printers/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,yFAAyF;AACzF,wFAAwF;AACxF,sFAAsF;AAEtF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Printer } from '../authoring/printer.js';
2
+ export declare class PhpPrinter extends Printer {
3
+ constructor();
4
+ /** A class/enum name: PascalCase, keyword-safe. */
5
+ typeName(name: string): string;
6
+ /** A property/method name: camelCase, keyword-safe. */
7
+ memberName(name: string): string;
8
+ /** A variable/argument name (without the `$`). */
9
+ identifier(name: string): string;
10
+ /** Names made unique among themselves and the caller's taken set (`id`, `id2`). */
11
+ identifiers(names: readonly string[], taken?: Iterable<string>): string[];
12
+ /** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
13
+ string(value: string): string;
14
+ /** JSON-ish data as a PHP expression (arrays for both lists and maps). */
15
+ literal(value: unknown): string;
16
+ /** A `//` line comment. */
17
+ comment(text: string): this;
18
+ /** A docblock: one line without tags, the `@tag` form with them. */
19
+ doc(name: string, description?: string, tags?: string[]): this;
20
+ }
21
+ //# sourceMappingURL=php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../src/printers/php.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKlD,qBAAa,UAAW,SAAQ,OAAO;;IAKrC,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B,uDAAuD;IACvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,kDAAkD;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,mFAAmF;IACnF,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAIzE,mFAAmF;IACnF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,0EAA0E;IAC1E,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAW/B,2BAA2B;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,oEAAoE;IACpE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI;CAWnE"}
@@ -0,0 +1,68 @@
1
+ // The PHP syntax printer (ADR-0021). PHP's extension: `doc` takes `@tag` lines, because
2
+ // `array` and `\Generator` erase element types — the docblock carries what they hold.
3
+ import { identifierFor, RESERVED_WORDS, uniqueIdentifiers } from '../authoring/naming.js';
4
+ import { Printer } from '../authoring/printer.js';
5
+ import { docText } from '../authoring/schema.js';
6
+ const PHP = RESERVED_WORDS.php;
7
+ export class PhpPrinter extends Printer {
8
+ constructor() {
9
+ super(' ');
10
+ }
11
+ /** A class/enum name: PascalCase, keyword-safe. */
12
+ typeName(name) {
13
+ return identifierFor(name, { style: 'pascal', reserved: PHP });
14
+ }
15
+ /** A property/method name: camelCase, keyword-safe. */
16
+ memberName(name) {
17
+ return identifierFor(name, { style: 'camel', reserved: PHP });
18
+ }
19
+ /** A variable/argument name (without the `$`). */
20
+ identifier(name) {
21
+ return identifierFor(name, { style: 'camel', reserved: PHP });
22
+ }
23
+ /** Names made unique among themselves and the caller's taken set (`id`, `id2`). */
24
+ identifiers(names, taken) {
25
+ return uniqueIdentifiers(names, { style: 'camel', reserved: PHP, taken });
26
+ }
27
+ /** `'…'` with backslashes and quotes escaped — safe for any spec-supplied text. */
28
+ string(value) {
29
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
30
+ }
31
+ /** JSON-ish data as a PHP expression (arrays for both lists and maps). */
32
+ literal(value) {
33
+ if (value === null || value === undefined)
34
+ return 'null';
35
+ if (typeof value === 'boolean' || typeof value === 'number')
36
+ return String(value);
37
+ if (typeof value === 'string')
38
+ return this.string(value);
39
+ if (Array.isArray(value))
40
+ return `[${value.map((item) => this.literal(item)).join(', ')}]`;
41
+ const entries = Object.entries(value)
42
+ .map(([key, entry]) => `${this.string(key)} => ${this.literal(entry)}`)
43
+ .join(', ');
44
+ return `[${entries}]`;
45
+ }
46
+ /** A `//` line comment. */
47
+ comment(text) {
48
+ for (const line of docText(text))
49
+ this.line(line === '' ? '//' : `// ${line}`);
50
+ return this;
51
+ }
52
+ /** A docblock: one line without tags, the `@tag` form with them. */
53
+ doc(name, description, tags = []) {
54
+ const lines = docText(description);
55
+ if (lines.length === 0 && tags.length === 0)
56
+ return this;
57
+ const summary = lines.length === 0 ? name : `${name} — ${lines.join(' ')}`;
58
+ if (tags.length === 0)
59
+ return this.line(`/** ${summary} */`);
60
+ this.line('/**');
61
+ this.line(` * ${summary}`);
62
+ this.line(' *');
63
+ for (const tag of tags)
64
+ this.line(` * ${tag}`);
65
+ return this.line(' */');
66
+ }
67
+ }
68
+ //# sourceMappingURL=php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/printers/php.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Printer } from '../authoring/printer.js';
2
+ export declare class PythonPrinter extends Printer {
3
+ constructor();
4
+ /** A class name: PascalCase, keyword-safe. */
5
+ typeName(name: string): string;
6
+ /** A field/parameter name, reporting a rename so the caller can record the wire name. */
7
+ memberName(name: string): {
8
+ identifier: string;
9
+ renamed: boolean;
10
+ };
11
+ /** A local/argument name: snake_case, keyword-safe. */
12
+ identifier(name: string): string;
13
+ /** Names made unique among themselves and the caller's taken set (`id`, `id_2`). */
14
+ identifiers(names: readonly string[], taken?: Iterable<string>): string[];
15
+ /** A module-level constant name: SCREAMING_SNAKE. */
16
+ constName(name: string): string;
17
+ /**
18
+ * A double-quoted Python string literal for any spec-supplied text. Controls are
19
+ * escaped; a lone surrogate (a JS string can carry one) stays representable as its
20
+ * `\uXXXX` escape; everything else — non-ASCII included — is written as itself,
21
+ * because generated files are UTF-8.
22
+ */
23
+ string(value: string): string;
24
+ /** JSON-ish data as a Python expression (dicts/lists/strings/numbers/bools/None). */
25
+ literal(value: unknown): string;
26
+ /** A `#` line comment (multi-line text becomes one `#` line per line). */
27
+ comment(text: string): this;
28
+ /** A docstring: Python's one-line and multi-line forms differ, and this owns the rule. */
29
+ doc(description?: string): this;
30
+ }
31
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/printers/python.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKlD,qBAAa,aAAc,SAAQ,OAAO;;IAKxC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B,yFAAyF;IACzF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAKlE,uDAAuD;IACvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,oFAAoF;IACpF,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAIzE,qDAAqD;IACrD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAgB7B,qFAAqF;IACrF,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAa/B,0EAA0E;IAC1E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,0FAA0F;IAC1F,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;CAQhC"}
@@ -0,0 +1,101 @@
1
+ // The Python syntax printer (ADR-0021): structure from the common `Printer`, syntax —
2
+ // identifier safety, string escaping, literal rendering, comment and docstring form —
3
+ // owned here. The generator owns shape (classes, signatures, field lists) as template
4
+ // literals; the test for what belongs on the printer is "is there exactly one right answer?"
5
+ import { identifierFor, RESERVED_WORDS, uniqueIdentifiers } from '../authoring/naming.js';
6
+ import { Printer } from '../authoring/printer.js';
7
+ import { docText } from '../authoring/schema.js';
8
+ const PY = RESERVED_WORDS.python;
9
+ export class PythonPrinter extends Printer {
10
+ constructor() {
11
+ super(' ');
12
+ }
13
+ /** A class name: PascalCase, keyword-safe. */
14
+ typeName(name) {
15
+ return identifierFor(name, { style: 'pascal', reserved: PY });
16
+ }
17
+ /** A field/parameter name, reporting a rename so the caller can record the wire name. */
18
+ memberName(name) {
19
+ const identifier = identifierFor(name, { style: 'snake', reserved: PY });
20
+ return { identifier, renamed: identifier !== name };
21
+ }
22
+ /** A local/argument name: snake_case, keyword-safe. */
23
+ identifier(name) {
24
+ return identifierFor(name, { style: 'snake', reserved: PY });
25
+ }
26
+ /** Names made unique among themselves and the caller's taken set (`id`, `id_2`). */
27
+ identifiers(names, taken) {
28
+ return uniqueIdentifiers(names, { style: 'snake', reserved: PY, taken });
29
+ }
30
+ /** A module-level constant name: SCREAMING_SNAKE. */
31
+ constName(name) {
32
+ return identifierFor(name, { style: 'screaming', reserved: PY });
33
+ }
34
+ /**
35
+ * A double-quoted Python string literal for any spec-supplied text. Controls are
36
+ * escaped; a lone surrogate (a JS string can carry one) stays representable as its
37
+ * `\uXXXX` escape; everything else — non-ASCII included — is written as itself,
38
+ * because generated files are UTF-8.
39
+ */
40
+ string(value) {
41
+ let out = '"';
42
+ for (const char of value) {
43
+ const code = char.codePointAt(0);
44
+ if (char === '\\')
45
+ out += '\\\\';
46
+ else if (char === '"')
47
+ out += '\\"';
48
+ else if (char === '\n')
49
+ out += '\\n';
50
+ else if (char === '\r')
51
+ out += '\\r';
52
+ else if (char === '\t')
53
+ out += '\\t';
54
+ else if (code < 0x20 || code === 0x7f)
55
+ out += `\\x${code.toString(16).padStart(2, '0')}`;
56
+ else if (code >= 0xd800 && code <= 0xdfff)
57
+ out += `\\u${code.toString(16).padStart(4, '0')}`;
58
+ else
59
+ out += char;
60
+ }
61
+ return out + '"';
62
+ }
63
+ /** JSON-ish data as a Python expression (dicts/lists/strings/numbers/bools/None). */
64
+ literal(value) {
65
+ if (value === null || value === undefined)
66
+ return 'None';
67
+ if (value === true)
68
+ return 'True';
69
+ if (value === false)
70
+ return 'False';
71
+ if (typeof value === 'number')
72
+ return String(value);
73
+ if (typeof value === 'string')
74
+ return this.string(value);
75
+ if (Array.isArray(value))
76
+ return `[${value.map((item) => this.literal(item)).join(', ')}]`;
77
+ const entries = Object.entries(value)
78
+ .map(([key, entry]) => `${this.string(key)}: ${this.literal(entry)}`)
79
+ .join(', ');
80
+ return `{${entries}}`;
81
+ }
82
+ /** A `#` line comment (multi-line text becomes one `#` line per line). */
83
+ comment(text) {
84
+ for (const line of docText(text))
85
+ this.line(line === '' ? '#' : `# ${line}`);
86
+ return this;
87
+ }
88
+ /** A docstring: Python's one-line and multi-line forms differ, and this owns the rule. */
89
+ doc(description) {
90
+ const lines = docText(description);
91
+ if (lines.length === 0)
92
+ return this;
93
+ if (lines.length === 1)
94
+ return this.line(`"""${lines[0]}"""`);
95
+ this.line(`"""${lines[0]}`);
96
+ for (const line of lines.slice(1))
97
+ this.line(line);
98
+ return this.line('"""');
99
+ }
100
+ }
101
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/printers/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { Printer } from '../authoring/printer.js';
2
+ import type { SchemaMetadata } from '../intermediate-representation/model.js';
3
+ export declare class TypeScriptPrinter extends Printer {
4
+ constructor();
5
+ /** A type name: PascalCase over an already-sanitized name (the IR coerces op names). */
6
+ typeName(name: string): string;
7
+ /** A member (binding) name: sanitized, keyword-safe. */
8
+ memberName(name: string): string;
9
+ /** A local/argument name: sanitized, keyword-safe. */
10
+ identifier(name: string): string;
11
+ /** Names made unique among themselves and the caller's taken set (`id`, `id_2`). */
12
+ identifiers(names: readonly string[], taken?: Iterable<string>): string[];
13
+ /** An object key: bare when it is a valid non-reserved identifier, quoted otherwise. */
14
+ key(name: string): string;
15
+ /** A string literal that cannot escape the code context it lands in. */
16
+ string(value: string): string;
17
+ /** JSON-ish data as TypeScript source text. */
18
+ literal(value: unknown): string;
19
+ /** A `//` line comment. */
20
+ comment(text: string): this;
21
+ /** A JSDoc block; a star-slash in spec text is escaped so it cannot terminate it. */
22
+ doc(description?: string): this;
23
+ }
24
+ /** True when `name` matches the JS identifier grammar (reserved words still pass). */
25
+ export declare function isIdentifier(name: string): boolean;
26
+ /** True when `name` is a valid JS identifier AND not a reserved word — safe as a binding name. */
27
+ export declare function isSafeIdentifier(name: string): boolean;
28
+ /**
29
+ * Coerce an arbitrary spec-supplied name into a valid, non-reserved JS identifier
30
+ * (no uniqueness guarantee — see `uniqueIdent`). Non-identifier characters become
31
+ * `_`; an empty result, a leading digit, or a reserved word is prefixed with `_`.
32
+ * This is the security boundary for any name that lands in a declaration slot —
33
+ * `ts.factory.createIdentifier` prints its text verbatim, so an unsanitized name
34
+ * like `foo(){};evil()` would emit as executable code.
35
+ */
36
+ export declare function sanitizeIdentifier(name: string): string;
37
+ export declare function codeString(value: string): string;
38
+ /**
39
+ * Render `name` as an object key or property name: bare when it is a valid,
40
+ * non-reserved identifier, quoted otherwise. Safe only where quoting is legal
41
+ * (object keys, property signatures) — not for binding names; use `uniqueIdent`
42
+ * there.
43
+ */
44
+ export declare function safeIdent(name: string): string;
45
+ /**
46
+ * `sanitizeIdentifier(name)` made unique within `used` (which it mutates):
47
+ * collisions get a `_2`, `_3`, … suffix. Used wherever a name lands in a binding
48
+ * slot that — unlike an object key — cannot be quoted (function/type/parameter
49
+ * names), so `safeIdent`'s quote-on-failure fallback would not compile.
50
+ */
51
+ export declare function uniqueIdent(name: string, used: Set<string>): string;
52
+ /** The one string-literal policy, under this module's historical name. */
53
+ export declare const sanitizeCodeString: typeof codeString;
54
+ /** A JSON-ish value as TypeScript source text. */
55
+ export declare function codeLiteral(value: unknown): string;
56
+ /** Backslash-escape any comment-closing star-slash so it cannot terminate a block comment. */
57
+ export declare function escapeJsDoc(text: string): string;
58
+ /**
59
+ * The JSDoc body for a description + metadata as a single `\n`-joined string,
60
+ * or `undefined` when there's nothing to document. The AST emitters feed this
61
+ * to `ts.ts`'s `jsdoc` helper (which owns the `*`-prefixing and indentation),
62
+ * so this returns only the raw body — no comment delimiters, no padding.
63
+ */
64
+ export declare function jsdocText(text: string | undefined, metadata?: SchemaMetadata): string | undefined;
65
+ /**
66
+ * Upper-case the first character of an operation name. We don't normalize the
67
+ * rest because almost every spec uses camelCase or PascalCase, and names that
68
+ * contain digits or `_` are passed through unchanged — the user named them that
69
+ * way for a reason.
70
+ *
71
+ * `op.name` reaches here already sanitized into a non-empty, valid TS identifier
72
+ * by the IR builder (see `intermediate-representation/sanitize-identifiers.ts`), so no empty-string or
73
+ * unsafe-character guard is needed.
74
+ */
75
+ export declare function pascalCase(name: string): string;
76
+ /**
77
+ * CamelCase property key for a response-header wire name (`Pagination-Total` →
78
+ * `paginationTotal`).
79
+ */
80
+ export declare function headerPropertyKey(wireName: string): string;
81
+ export declare function splitLines(text: string): string[];
82
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/printers/typescript.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,qBAAa,iBAAkB,SAAQ,OAAO;;IAK5C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B,wDAAwD;IACxD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,sDAAsD;IACtD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC,oFAAoF;IACpF,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAKzE,wFAAwF;IACxF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzB,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,+CAA+C;IAC/C,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAI/B,2BAA2B;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,qFAAqF;IACrF,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;CAOhC;AAcD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvD;AAeD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAOnE;AAID,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,mBAAa,CAAC;AAE7C,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYlD;AAID,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAGjG;AA8DD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKjD"}
@@ -0,0 +1,268 @@
1
+ // The TypeScript syntax printer (ADR-0021). TypeScript's extension is `key(name)` — a
2
+ // bare-or-quoted object key; no other output language has quotable keys. Its `string`
3
+ // carries the merged escaping policy: JSON escaping plus U+2028/U+2029 (line terminators
4
+ // in JS source) plus `<`/`>` (a `</script>` breakout when output lands in an inline
5
+ // script) — previously two escapers with different protections, split by import site.
6
+ import { RESERVED_WORDS } from '../authoring/naming.js';
7
+ import { Printer } from '../authoring/printer.js';
8
+ import { docText } from '../authoring/schema.js';
9
+ export class TypeScriptPrinter extends Printer {
10
+ constructor() {
11
+ super(' ');
12
+ }
13
+ /** A type name: PascalCase over an already-sanitized name (the IR coerces op names). */
14
+ typeName(name) {
15
+ return pascalCase(sanitizeIdentifier(name));
16
+ }
17
+ /** A member (binding) name: sanitized, keyword-safe. */
18
+ memberName(name) {
19
+ return sanitizeIdentifier(name);
20
+ }
21
+ /** A local/argument name: sanitized, keyword-safe. */
22
+ identifier(name) {
23
+ return sanitizeIdentifier(name);
24
+ }
25
+ /** Names made unique among themselves and the caller's taken set (`id`, `id_2`). */
26
+ identifiers(names, taken) {
27
+ const used = new Set(taken ?? []);
28
+ return names.map((name) => uniqueIdent(name, used));
29
+ }
30
+ /** An object key: bare when it is a valid non-reserved identifier, quoted otherwise. */
31
+ key(name) {
32
+ return isSafeIdentifier(name) ? name : this.string(name);
33
+ }
34
+ /** A string literal that cannot escape the code context it lands in. */
35
+ string(value) {
36
+ return sanitizeCodeString(value);
37
+ }
38
+ /** JSON-ish data as TypeScript source text. */
39
+ literal(value) {
40
+ return codeLiteral(value);
41
+ }
42
+ /** A `//` line comment. */
43
+ comment(text) {
44
+ for (const line of docText(text))
45
+ this.line(line === '' ? '//' : `// ${line}`);
46
+ return this;
47
+ }
48
+ /** A JSDoc block; a star-slash in spec text is escaped so it cannot terminate it. */
49
+ doc(description) {
50
+ const lines = docText(description);
51
+ if (lines.length === 0)
52
+ return this;
53
+ this.line('/**');
54
+ for (const line of lines)
55
+ this.line(line === '' ? ' *' : ` * ${line.replace(/\*\//g, '*\\/')}`);
56
+ return this.line(' */');
57
+ }
58
+ }
59
+ // ─── Identifier mechanics ───
60
+ // Identifier sanitization — mapping OpenAPI names (which may contain `-`, `.`,
61
+ // spaces, or be reserved words) onto valid TypeScript identifiers. Pure string
62
+ // logic with no dependency on the IR or other emitters.
63
+ /** Matches a string that is already a valid JS identifier (ignoring reserved words). */
64
+ const IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
65
+ // One list for the package: `identifierFor` (suffix convention) reads the same set.
66
+ const TS_RESERVED = RESERVED_WORDS.typescript;
67
+ /** True when `name` matches the JS identifier grammar (reserved words still pass). */
68
+ export function isIdentifier(name) {
69
+ return IDENT_RE.test(name);
70
+ }
71
+ /** True when `name` is a valid JS identifier AND not a reserved word — safe as a binding name. */
72
+ export function isSafeIdentifier(name) {
73
+ return IDENT_RE.test(name) && !TS_RESERVED.has(name);
74
+ }
75
+ /**
76
+ * Coerce an arbitrary spec-supplied name into a valid, non-reserved JS identifier
77
+ * (no uniqueness guarantee — see `uniqueIdent`). Non-identifier characters become
78
+ * `_`; an empty result, a leading digit, or a reserved word is prefixed with `_`.
79
+ * This is the security boundary for any name that lands in a declaration slot —
80
+ * `ts.factory.createIdentifier` prints its text verbatim, so an unsanitized name
81
+ * like `foo(){};evil()` would emit as executable code.
82
+ */
83
+ export function sanitizeIdentifier(name) {
84
+ let base = name.replace(/[^A-Za-z0-9_$]/g, '_');
85
+ if (base === '' || /^[0-9]/.test(base) || TS_RESERVED.has(base))
86
+ base = `_${base}`;
87
+ return base;
88
+ }
89
+ /**
90
+ * A double-quoted TS string literal for generated code. One policy for the whole
91
+ * package — the stricter of the two that used to exist: U+2028/U+2029 (line terminators
92
+ * in JS source) AND `<`/`>` (a `</script>` breakout when output lands in an inline
93
+ * script). Which protection applied used to depend on which escaper the caller imported.
94
+ */
95
+ const CODE_UNSAFE = {
96
+ '<': '\\u003C',
97
+ '>': '\\u003E',
98
+ '\u2028': '\\u2028',
99
+ '\u2029': '\\u2029',
100
+ };
101
+ export function codeString(value) {
102
+ return JSON.stringify(value).replace(/[<>\u2028\u2029]/g, (char) => CODE_UNSAFE[char]);
103
+ }
104
+ /**
105
+ * Render `name` as an object key or property name: bare when it is a valid,
106
+ * non-reserved identifier, quoted otherwise. Safe only where quoting is legal
107
+ * (object keys, property signatures) — not for binding names; use `uniqueIdent`
108
+ * there.
109
+ */
110
+ export function safeIdent(name) {
111
+ if (IDENT_RE.test(name) && !TS_RESERVED.has(name)) {
112
+ return name;
113
+ }
114
+ return codeString(name);
115
+ }
116
+ /**
117
+ * `sanitizeIdentifier(name)` made unique within `used` (which it mutates):
118
+ * collisions get a `_2`, `_3`, … suffix. Used wherever a name lands in a binding
119
+ * slot that — unlike an object key — cannot be quoted (function/type/parameter
120
+ * names), so `safeIdent`'s quote-on-failure fallback would not compile.
121
+ */
122
+ export function uniqueIdent(name, used) {
123
+ const base = sanitizeIdentifier(name);
124
+ let ident = base;
125
+ let n = 2;
126
+ while (used.has(ident))
127
+ ident = `${base}_${n++}`;
128
+ used.add(ident);
129
+ return ident;
130
+ }
131
+ // ─── Literals ───
132
+ /** The one string-literal policy, under this module's historical name. */
133
+ export const sanitizeCodeString = codeString;
134
+ /** A JSON-ish value as TypeScript source text. */
135
+ export function codeLiteral(value) {
136
+ if (typeof value === 'string')
137
+ return codeString(value);
138
+ if (typeof value === 'boolean' || value === null)
139
+ return String(value);
140
+ if (typeof value === 'number')
141
+ return String(value);
142
+ if (Array.isArray(value)) {
143
+ return `[${value.map(codeLiteral).join(', ')}]`;
144
+ }
145
+ const entries = Object.entries(value).map(([key, entryValue]) => `${isIdentifier(key) ? key : codeString(key)}: ${codeLiteral(entryValue)}`);
146
+ return entries.length === 0 ? '{}' : `{ ${entries.join(', ')} }`;
147
+ }
148
+ // ─── JSDoc ───
149
+ /** Backslash-escape any comment-closing star-slash so it cannot terminate a block comment. */
150
+ export function escapeJsDoc(text) {
151
+ return text.replace(/\*\//g, '*\\/');
152
+ }
153
+ /**
154
+ * The JSDoc body for a description + metadata as a single `\n`-joined string,
155
+ * or `undefined` when there's nothing to document. The AST emitters feed this
156
+ * to `ts.ts`'s `jsdoc` helper (which owns the `*`-prefixing and indentation),
157
+ * so this returns only the raw body — no comment delimiters, no padding.
158
+ */
159
+ export function jsdocText(text, metadata) {
160
+ const lines = jsdocLines(text, metadata);
161
+ return lines.length === 0 ? undefined : lines.join('\n');
162
+ }
163
+ /**
164
+ * Build the body of a JSDoc block from a description and an optional metadata
165
+ * bag. Description lines come first (trimmed of leading/trailing blanks); then
166
+ * the metadata tag lines in a stable, source-driven order.
167
+ *
168
+ * Returns `[]` when there's nothing to render — callers use the empty result
169
+ * to skip emitting any JSDoc at all.
170
+ */
171
+ function jsdocLines(text, metadata) {
172
+ const lines = [];
173
+ if (text && text.trim()) {
174
+ lines.push(...trimLines(splitLines(text)));
175
+ }
176
+ if (metadata) {
177
+ lines.push(...formatMetadata(metadata));
178
+ }
179
+ return lines;
180
+ }
181
+ /**
182
+ * Project a SchemaMetadata bag into JSDoc tag lines.
183
+ *
184
+ * Order matches the (near-)spec order so generated output is deterministic and
185
+ * diff-stable. `pattern` is escaped so an embedded `*​/` cannot terminate the
186
+ * surrounding JSDoc block.
187
+ */
188
+ function formatMetadata(metadata) {
189
+ const lines = [];
190
+ const push = (tag, value) => {
191
+ if (value === undefined) {
192
+ lines.push(`@${tag}`);
193
+ }
194
+ else {
195
+ lines.push(`@${tag} ${value}`);
196
+ }
197
+ };
198
+ if (metadata.minimum !== undefined)
199
+ push('minimum', metadata.minimum);
200
+ if (metadata.maximum !== undefined)
201
+ push('maximum', metadata.maximum);
202
+ if (metadata.exclusiveMinimum !== undefined)
203
+ push('exclusiveMinimum', metadata.exclusiveMinimum);
204
+ if (metadata.exclusiveMaximum !== undefined)
205
+ push('exclusiveMaximum', metadata.exclusiveMaximum);
206
+ if (metadata.minLength !== undefined)
207
+ push('minLength', metadata.minLength);
208
+ if (metadata.maxLength !== undefined)
209
+ push('maxLength', metadata.maxLength);
210
+ if (metadata.pattern !== undefined)
211
+ push('pattern', escapeJsDoc(metadata.pattern));
212
+ if (metadata.minItems !== undefined)
213
+ push('minItems', metadata.minItems);
214
+ if (metadata.maxItems !== undefined)
215
+ push('maxItems', metadata.maxItems);
216
+ if (metadata.uniqueItems === true)
217
+ push('uniqueItems');
218
+ if (metadata.format !== undefined)
219
+ push('format', metadata.format);
220
+ if (metadata.deprecated === true)
221
+ push('deprecated');
222
+ return lines;
223
+ }
224
+ function trimLines(lines) {
225
+ let start = 0;
226
+ let end = lines.length;
227
+ while (start < end && lines[start] === '')
228
+ start++;
229
+ while (end > start && lines[end - 1] === '')
230
+ end--;
231
+ return lines.slice(start, end);
232
+ }
233
+ // ─── Casing and text support ───
234
+ /**
235
+ * Upper-case the first character of an operation name. We don't normalize the
236
+ * rest because almost every spec uses camelCase or PascalCase, and names that
237
+ * contain digits or `_` are passed through unchanged — the user named them that
238
+ * way for a reason.
239
+ *
240
+ * `op.name` reaches here already sanitized into a non-empty, valid TS identifier
241
+ * by the IR builder (see `intermediate-representation/sanitize-identifiers.ts`), so no empty-string or
242
+ * unsafe-character guard is needed.
243
+ */
244
+ export function pascalCase(name) {
245
+ return name[0].toUpperCase() + name.slice(1);
246
+ }
247
+ /**
248
+ * CamelCase property key for a response-header wire name (`Pagination-Total` →
249
+ * `paginationTotal`).
250
+ */
251
+ export function headerPropertyKey(wireName) {
252
+ const camelCase = wireName
253
+ .split(/[-_]/)
254
+ .filter((part) => part.length > 0)
255
+ .map((part, index) => {
256
+ const lower = part.toLowerCase();
257
+ return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);
258
+ })
259
+ .join('');
260
+ return sanitizeIdentifier(camelCase);
261
+ }
262
+ export function splitLines(text) {
263
+ return text
264
+ .replace(/\r\n/g, '\n')
265
+ .split('\n')
266
+ .map((line) => line.trimEnd());
267
+ }
268
+ //# sourceMappingURL=typescript.js.map