@leonardo-ai/sdk 4.10.1 → 4.14.2

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 (458) hide show
  1. package/README.md +130 -43
  2. package/docs/sdks/dataset/README.md +10 -5
  3. package/docs/sdks/{element → elements}/README.md +5 -4
  4. package/docs/sdks/{model → image}/README.md +32 -114
  5. package/docs/sdks/initimages/README.md +182 -0
  6. package/docs/sdks/models/README.md +180 -0
  7. package/docs/sdks/motion/README.md +50 -0
  8. package/docs/sdks/pricingcalculator/README.md +48 -0
  9. package/docs/sdks/prompt/README.md +4 -2
  10. package/docs/sdks/realtimecanvas/README.md +190 -0
  11. package/docs/sdks/texture/README.md +92 -0
  12. package/docs/sdks/{initimage → threedmodelassets}/README.md +17 -58
  13. package/docs/sdks/user/README.md +2 -1
  14. package/docs/sdks/variation/README.md +10 -5
  15. package/hooks/hooks.d.ts +2 -2
  16. package/hooks/hooks.d.ts.map +1 -1
  17. package/hooks/hooks.js +1 -1
  18. package/hooks/index.d.ts +2 -2
  19. package/hooks/index.d.ts.map +1 -1
  20. package/hooks/index.js +3 -3
  21. package/hooks/index.js.map +1 -1
  22. package/hooks/types.d.ts +1 -1
  23. package/hooks/types.d.ts.map +1 -1
  24. package/hooks/types.js +1 -1
  25. package/index.d.ts +2 -2
  26. package/index.d.ts.map +1 -1
  27. package/index.js +3 -3
  28. package/index.js.map +1 -1
  29. package/lib/base64.js +1 -1
  30. package/lib/config.d.ts +6 -5
  31. package/lib/config.d.ts.map +1 -1
  32. package/lib/config.js +6 -6
  33. package/lib/config.js.map +1 -1
  34. package/lib/encodings.d.ts +16 -0
  35. package/lib/encodings.d.ts.map +1 -1
  36. package/lib/encodings.js +56 -24
  37. package/lib/encodings.js.map +1 -1
  38. package/lib/http.d.ts +56 -2
  39. package/lib/http.d.ts.map +1 -1
  40. package/lib/http.js +173 -4
  41. package/lib/http.js.map +1 -1
  42. package/lib/is-plain-object.d.ts +2 -0
  43. package/lib/is-plain-object.d.ts.map +1 -0
  44. package/lib/is-plain-object.js +42 -0
  45. package/lib/is-plain-object.js.map +1 -0
  46. package/lib/primitives.d.ts +16 -0
  47. package/lib/primitives.d.ts.map +1 -0
  48. package/lib/primitives.js +30 -0
  49. package/lib/primitives.js.map +1 -0
  50. package/lib/retries.js +1 -1
  51. package/lib/schemas.d.ts +4 -0
  52. package/lib/schemas.d.ts.map +1 -1
  53. package/lib/schemas.js +23 -27
  54. package/lib/schemas.js.map +1 -1
  55. package/lib/sdks.d.ts +30 -8
  56. package/lib/sdks.d.ts.map +1 -1
  57. package/lib/sdks.js +59 -29
  58. package/lib/sdks.js.map +1 -1
  59. package/lib/security.d.ts +1 -1
  60. package/lib/security.d.ts.map +1 -1
  61. package/lib/security.js +1 -1
  62. package/lib/url.js +1 -1
  63. package/package.json +2 -3
  64. package/sdk/dataset.d.ts +3 -3
  65. package/sdk/dataset.d.ts.map +1 -1
  66. package/sdk/dataset.js +100 -124
  67. package/sdk/dataset.js.map +1 -1
  68. package/sdk/{element.d.ts → elements.d.ts} +5 -5
  69. package/sdk/elements.d.ts.map +1 -0
  70. package/sdk/{element.js → elements.js} +28 -35
  71. package/sdk/elements.js.map +1 -0
  72. package/sdk/image.d.ts +36 -0
  73. package/sdk/image.d.ts.map +1 -0
  74. package/sdk/image.js +316 -0
  75. package/sdk/image.js.map +1 -0
  76. package/sdk/index.d.ts +1 -1
  77. package/sdk/index.d.ts.map +1 -1
  78. package/sdk/index.js +2 -2
  79. package/sdk/index.js.map +1 -1
  80. package/sdk/{initimage.d.ts → initimages.d.ts} +12 -5
  81. package/sdk/initimages.d.ts.map +1 -0
  82. package/sdk/initimages.js +304 -0
  83. package/sdk/initimages.js.map +1 -0
  84. package/sdk/models/errors/index.d.ts +2 -2
  85. package/sdk/models/errors/index.d.ts.map +1 -1
  86. package/sdk/models/errors/index.js +3 -3
  87. package/sdk/models/errors/index.js.map +1 -1
  88. package/sdk/models/errors/sdkerror.js +1 -1
  89. package/sdk/models/errors/sdkvalidationerror.js +1 -1
  90. package/sdk/models/operations/createdataset.d.ts +72 -40
  91. package/sdk/models/operations/createdataset.d.ts.map +1 -1
  92. package/sdk/models/operations/createdataset.js +101 -96
  93. package/sdk/models/operations/createdataset.js.map +1 -1
  94. package/sdk/models/operations/creategeneration.d.ts +155 -121
  95. package/sdk/models/operations/creategeneration.d.ts.map +1 -1
  96. package/sdk/models/operations/creategeneration.js +216 -280
  97. package/sdk/models/operations/creategeneration.js.map +1 -1
  98. package/sdk/models/operations/createlcmgeneration.d.ts +83 -61
  99. package/sdk/models/operations/createlcmgeneration.d.ts.map +1 -1
  100. package/sdk/models/operations/createlcmgeneration.js +110 -149
  101. package/sdk/models/operations/createlcmgeneration.js.map +1 -1
  102. package/sdk/models/operations/createmodel.d.ts +81 -57
  103. package/sdk/models/operations/createmodel.d.ts.map +1 -1
  104. package/sdk/models/operations/createmodel.js +120 -125
  105. package/sdk/models/operations/createmodel.js.map +1 -1
  106. package/sdk/models/operations/createsvdmotiongeneration.d.ts +76 -48
  107. package/sdk/models/operations/createsvdmotiongeneration.d.ts.map +1 -1
  108. package/sdk/models/operations/createsvdmotiongeneration.js +97 -116
  109. package/sdk/models/operations/createsvdmotiongeneration.js.map +1 -1
  110. package/sdk/models/operations/createtexturegeneration.d.ts +79 -54
  111. package/sdk/models/operations/createtexturegeneration.d.ts.map +1 -1
  112. package/sdk/models/operations/createtexturegeneration.js +125 -136
  113. package/sdk/models/operations/createtexturegeneration.js.map +1 -1
  114. package/sdk/models/operations/createuniversalupscalerjob.d.ts +79 -53
  115. package/sdk/models/operations/createuniversalupscalerjob.d.ts.map +1 -1
  116. package/sdk/models/operations/createuniversalupscalerjob.js +102 -125
  117. package/sdk/models/operations/createuniversalupscalerjob.js.map +1 -1
  118. package/sdk/models/operations/createvariationnobg.d.ts +73 -42
  119. package/sdk/models/operations/createvariationnobg.d.ts.map +1 -1
  120. package/sdk/models/operations/createvariationnobg.js +91 -96
  121. package/sdk/models/operations/createvariationnobg.js.map +1 -1
  122. package/sdk/models/operations/createvariationunzoom.d.ts +73 -42
  123. package/sdk/models/operations/createvariationunzoom.d.ts.map +1 -1
  124. package/sdk/models/operations/createvariationunzoom.js +91 -96
  125. package/sdk/models/operations/createvariationunzoom.js.map +1 -1
  126. package/sdk/models/operations/createvariationupscale.d.ts +72 -40
  127. package/sdk/models/operations/createvariationupscale.d.ts.map +1 -1
  128. package/sdk/models/operations/createvariationupscale.js +93 -96
  129. package/sdk/models/operations/createvariationupscale.js.map +1 -1
  130. package/sdk/models/operations/delete3dmodelbyid.d.ts +93 -52
  131. package/sdk/models/operations/delete3dmodelbyid.d.ts.map +1 -1
  132. package/sdk/models/operations/delete3dmodelbyid.js +128 -118
  133. package/sdk/models/operations/delete3dmodelbyid.js.map +1 -1
  134. package/sdk/models/operations/deletedatasetbyid.d.ts +71 -38
  135. package/sdk/models/operations/deletedatasetbyid.d.ts.map +1 -1
  136. package/sdk/models/operations/deletedatasetbyid.js +103 -96
  137. package/sdk/models/operations/deletedatasetbyid.js.map +1 -1
  138. package/sdk/models/operations/deletegenerationbyid.d.ts +71 -38
  139. package/sdk/models/operations/deletegenerationbyid.d.ts.map +1 -1
  140. package/sdk/models/operations/deletegenerationbyid.js +99 -94
  141. package/sdk/models/operations/deletegenerationbyid.js.map +1 -1
  142. package/sdk/models/operations/deleteinitimagebyid.d.ts +71 -38
  143. package/sdk/models/operations/deleteinitimagebyid.d.ts.map +1 -1
  144. package/sdk/models/operations/deleteinitimagebyid.js +99 -94
  145. package/sdk/models/operations/deleteinitimagebyid.js.map +1 -1
  146. package/sdk/models/operations/deletemodelbyid.d.ts +71 -38
  147. package/sdk/models/operations/deletemodelbyid.d.ts.map +1 -1
  148. package/sdk/models/operations/deletemodelbyid.js +99 -96
  149. package/sdk/models/operations/deletemodelbyid.js.map +1 -1
  150. package/sdk/models/operations/deletetexturegenerationbyid.d.ts +93 -52
  151. package/sdk/models/operations/deletetexturegenerationbyid.d.ts.map +1 -1
  152. package/sdk/models/operations/deletetexturegenerationbyid.js +132 -128
  153. package/sdk/models/operations/deletetexturegenerationbyid.js.map +1 -1
  154. package/sdk/models/operations/getdatasetbyid.d.ts +95 -60
  155. package/sdk/models/operations/getdatasetbyid.d.ts.map +1 -1
  156. package/sdk/models/operations/getdatasetbyid.js +140 -138
  157. package/sdk/models/operations/getdatasetbyid.js.map +1 -1
  158. package/sdk/models/operations/getgenerationbyid.d.ts +184 -159
  159. package/sdk/models/operations/getgenerationbyid.d.ts.map +1 -1
  160. package/sdk/models/operations/getgenerationbyid.js +284 -377
  161. package/sdk/models/operations/getgenerationbyid.js.map +1 -1
  162. package/sdk/models/operations/getgenerationsbyuserid.d.ts +186 -162
  163. package/sdk/models/operations/getgenerationsbyuserid.d.ts.map +1 -1
  164. package/sdk/models/operations/getgenerationsbyuserid.js +278 -381
  165. package/sdk/models/operations/getgenerationsbyuserid.js.map +1 -1
  166. package/sdk/models/operations/getinitimagebyid.d.ts +73 -42
  167. package/sdk/models/operations/getinitimagebyid.d.ts.map +1 -1
  168. package/sdk/models/operations/getinitimagebyid.js +107 -104
  169. package/sdk/models/operations/getinitimagebyid.js.map +1 -1
  170. package/sdk/models/operations/getmodelbyid.d.ts +83 -61
  171. package/sdk/models/operations/getmodelbyid.d.ts.map +1 -1
  172. package/sdk/models/operations/getmodelbyid.js +126 -141
  173. package/sdk/models/operations/getmodelbyid.js.map +1 -1
  174. package/sdk/models/operations/getuserself.d.ts +81 -58
  175. package/sdk/models/operations/getuserself.d.ts.map +1 -1
  176. package/sdk/models/operations/getuserself.js +119 -156
  177. package/sdk/models/operations/getuserself.js.map +1 -1
  178. package/sdk/models/operations/getvariationbyid.d.ts +76 -47
  179. package/sdk/models/operations/getvariationbyid.d.ts.map +1 -1
  180. package/sdk/models/operations/getvariationbyid.js +112 -113
  181. package/sdk/models/operations/getvariationbyid.js.map +1 -1
  182. package/sdk/models/operations/index.d.ts +36 -34
  183. package/sdk/models/operations/index.d.ts.map +1 -1
  184. package/sdk/models/operations/index.js +37 -35
  185. package/sdk/models/operations/index.js.map +1 -1
  186. package/sdk/models/operations/listelements.d.ts +63 -47
  187. package/sdk/models/operations/listelements.d.ts.map +1 -1
  188. package/sdk/models/operations/listelements.js +89 -103
  189. package/sdk/models/operations/listelements.js.map +1 -1
  190. package/sdk/models/operations/listplatformmodels.d.ts +77 -50
  191. package/sdk/models/operations/listplatformmodels.d.ts.map +1 -1
  192. package/sdk/models/operations/listplatformmodels.js +131 -122
  193. package/sdk/models/operations/listplatformmodels.js.map +1 -1
  194. package/sdk/models/operations/performalchemyupscalelcm.d.ts +88 -71
  195. package/sdk/models/operations/performalchemyupscalelcm.d.ts.map +1 -1
  196. package/sdk/models/operations/performalchemyupscalelcm.js +124 -175
  197. package/sdk/models/operations/performalchemyupscalelcm.js.map +1 -1
  198. package/sdk/models/operations/performinpaintinglcm.d.ts +84 -63
  199. package/sdk/models/operations/performinpaintinglcm.d.ts.map +1 -1
  200. package/sdk/models/operations/performinpaintinglcm.js +116 -153
  201. package/sdk/models/operations/performinpaintinglcm.js.map +1 -1
  202. package/sdk/models/operations/performinstantrefine.d.ts +83 -61
  203. package/sdk/models/operations/performinstantrefine.d.ts.map +1 -1
  204. package/sdk/models/operations/performinstantrefine.js +114 -149
  205. package/sdk/models/operations/performinstantrefine.js.map +1 -1
  206. package/sdk/models/operations/pricingcalculator.d.ts +476 -0
  207. package/sdk/models/operations/pricingcalculator.d.ts.map +1 -0
  208. package/sdk/models/operations/pricingcalculator.js +391 -0
  209. package/sdk/models/operations/pricingcalculator.js.map +1 -0
  210. package/sdk/models/operations/promptimprove.d.ts +72 -40
  211. package/sdk/models/operations/promptimprove.d.ts.map +1 -1
  212. package/sdk/models/operations/promptimprove.js +89 -96
  213. package/sdk/models/operations/promptimprove.js.map +1 -1
  214. package/sdk/models/operations/promptrandom.d.ts +55 -32
  215. package/sdk/models/operations/promptrandom.d.ts.map +1 -1
  216. package/sdk/models/operations/promptrandom.js +74 -82
  217. package/sdk/models/operations/promptrandom.js.map +1 -1
  218. package/sdk/models/operations/uploadcanvasinitimage.d.ts +140 -0
  219. package/sdk/models/operations/uploadcanvasinitimage.d.ts.map +1 -0
  220. package/sdk/models/operations/uploadcanvasinitimage.js +152 -0
  221. package/sdk/models/operations/uploadcanvasinitimage.js.map +1 -0
  222. package/sdk/models/operations/uploaddatasetimage.d.ts +92 -54
  223. package/sdk/models/operations/uploaddatasetimage.d.ts.map +1 -1
  224. package/sdk/models/operations/uploaddatasetimage.js +122 -130
  225. package/sdk/models/operations/uploaddatasetimage.js.map +1 -1
  226. package/sdk/models/operations/uploaddatasetimagefromgen.d.ts +89 -48
  227. package/sdk/models/operations/uploaddatasetimagefromgen.d.ts.map +1 -1
  228. package/sdk/models/operations/uploaddatasetimagefromgen.js +120 -118
  229. package/sdk/models/operations/uploaddatasetimagefromgen.js.map +1 -1
  230. package/sdk/models/operations/uploadinitimage.d.ts +74 -44
  231. package/sdk/models/operations/uploadinitimage.d.ts.map +1 -1
  232. package/sdk/models/operations/uploadinitimage.js +93 -108
  233. package/sdk/models/operations/uploadinitimage.js.map +1 -1
  234. package/sdk/models/operations/uploadmodelasset.d.ts +75 -46
  235. package/sdk/models/operations/uploadmodelasset.d.ts.map +1 -1
  236. package/sdk/models/operations/uploadmodelasset.js +95 -112
  237. package/sdk/models/operations/uploadmodelasset.js.map +1 -1
  238. package/sdk/models/shared/canvasrequesttype.d.ts +25 -0
  239. package/sdk/models/shared/canvasrequesttype.d.ts.map +1 -0
  240. package/sdk/models/shared/canvasrequesttype.js +56 -0
  241. package/sdk/models/shared/canvasrequesttype.js.map +1 -0
  242. package/sdk/models/shared/controlnetinput.d.ts +93 -0
  243. package/sdk/models/shared/controlnetinput.d.ts.map +1 -0
  244. package/sdk/models/shared/controlnetinput.js +107 -0
  245. package/sdk/models/shared/controlnetinput.js.map +1 -0
  246. package/sdk/models/shared/controlnettype.d.ts +16 -2
  247. package/sdk/models/shared/controlnettype.d.ts.map +1 -1
  248. package/sdk/models/shared/controlnettype.js +19 -4
  249. package/sdk/models/shared/controlnettype.js.map +1 -1
  250. package/sdk/models/shared/custommodeltype.d.ts +13 -1
  251. package/sdk/models/shared/custommodeltype.d.ts.map +1 -1
  252. package/sdk/models/shared/custommodeltype.js +16 -3
  253. package/sdk/models/shared/custommodeltype.js.map +1 -1
  254. package/sdk/models/shared/elementinput.d.ts +18 -10
  255. package/sdk/models/shared/elementinput.d.ts.map +1 -1
  256. package/sdk/models/shared/elementinput.js +19 -24
  257. package/sdk/models/shared/elementinput.js.map +1 -1
  258. package/sdk/models/shared/index.d.ts +15 -12
  259. package/sdk/models/shared/index.d.ts.map +1 -1
  260. package/sdk/models/shared/index.js +16 -13
  261. package/sdk/models/shared/index.js.map +1 -1
  262. package/sdk/models/shared/jobstatus.d.ts +13 -1
  263. package/sdk/models/shared/jobstatus.d.ts.map +1 -1
  264. package/sdk/models/shared/jobstatus.js +16 -3
  265. package/sdk/models/shared/jobstatus.js.map +1 -1
  266. package/sdk/models/shared/lcmgenerationstyle.d.ts +13 -1
  267. package/sdk/models/shared/lcmgenerationstyle.d.ts.map +1 -1
  268. package/sdk/models/shared/lcmgenerationstyle.js +16 -3
  269. package/sdk/models/shared/lcmgenerationstyle.js.map +1 -1
  270. package/sdk/models/shared/pricingcalculatorservices.d.ts +28 -0
  271. package/sdk/models/shared/pricingcalculatorservices.d.ts.map +1 -0
  272. package/sdk/models/shared/pricingcalculatorservices.js +59 -0
  273. package/sdk/models/shared/pricingcalculatorservices.js.map +1 -0
  274. package/sdk/models/shared/sdgenerationschedulers.d.ts +13 -1
  275. package/sdk/models/shared/sdgenerationschedulers.d.ts.map +1 -1
  276. package/sdk/models/shared/sdgenerationschedulers.js +16 -3
  277. package/sdk/models/shared/sdgenerationschedulers.js.map +1 -1
  278. package/sdk/models/shared/sdgenerationstyle.d.ts +13 -1
  279. package/sdk/models/shared/sdgenerationstyle.d.ts.map +1 -1
  280. package/sdk/models/shared/sdgenerationstyle.js +16 -3
  281. package/sdk/models/shared/sdgenerationstyle.js.map +1 -1
  282. package/sdk/models/shared/sdversions.d.ts +13 -1
  283. package/sdk/models/shared/sdversions.d.ts.map +1 -1
  284. package/sdk/models/shared/sdversions.js +16 -3
  285. package/sdk/models/shared/sdversions.js.map +1 -1
  286. package/sdk/models/shared/security.d.ts +17 -8
  287. package/sdk/models/shared/security.d.ts.map +1 -1
  288. package/sdk/models/shared/security.js +17 -20
  289. package/sdk/models/shared/security.js.map +1 -1
  290. package/sdk/models/shared/strength.d.ts +13 -1
  291. package/sdk/models/shared/strength.d.ts.map +1 -1
  292. package/sdk/models/shared/strength.js +16 -3
  293. package/sdk/models/shared/strength.js.map +1 -1
  294. package/sdk/models/shared/universalupscalerstyle.d.ts +13 -1
  295. package/sdk/models/shared/universalupscalerstyle.d.ts.map +1 -1
  296. package/sdk/models/shared/universalupscalerstyle.js +16 -3
  297. package/sdk/models/shared/universalupscalerstyle.js.map +1 -1
  298. package/sdk/models/shared/variationtype.d.ts +13 -1
  299. package/sdk/models/shared/variationtype.d.ts.map +1 -1
  300. package/sdk/models/shared/variationtype.js +16 -3
  301. package/sdk/models/shared/variationtype.js.map +1 -1
  302. package/sdk/{model.d.ts → models.d.ts} +5 -19
  303. package/sdk/models.d.ts.map +1 -0
  304. package/sdk/models.js +299 -0
  305. package/sdk/models.js.map +1 -0
  306. package/sdk/motion.d.ts +15 -0
  307. package/sdk/motion.d.ts.map +1 -0
  308. package/sdk/motion.js +121 -0
  309. package/sdk/motion.js.map +1 -0
  310. package/sdk/pricingcalculator.d.ts +15 -0
  311. package/sdk/pricingcalculator.d.ts.map +1 -0
  312. package/sdk/pricingcalculator.js +119 -0
  313. package/sdk/pricingcalculator.js.map +1 -0
  314. package/sdk/prompt.d.ts +3 -3
  315. package/sdk/prompt.d.ts.map +1 -1
  316. package/sdk/prompt.js +44 -55
  317. package/sdk/prompt.js.map +1 -1
  318. package/sdk/realtimecanvas.d.ts +36 -0
  319. package/sdk/realtimecanvas.d.ts.map +1 -0
  320. package/sdk/realtimecanvas.js +296 -0
  321. package/sdk/realtimecanvas.js.map +1 -0
  322. package/sdk/sdk.d.ts +33 -18
  323. package/sdk/sdk.d.ts.map +1 -1
  324. package/sdk/sdk.js +55 -30
  325. package/sdk/sdk.js.map +1 -1
  326. package/sdk/texture.d.ts +22 -0
  327. package/sdk/texture.d.ts.map +1 -0
  328. package/sdk/texture.js +186 -0
  329. package/sdk/texture.js.map +1 -0
  330. package/sdk/threedmodelassets.d.ts +22 -0
  331. package/sdk/threedmodelassets.d.ts.map +1 -0
  332. package/sdk/threedmodelassets.js +184 -0
  333. package/sdk/threedmodelassets.js.map +1 -0
  334. package/sdk/types/blobs.js +1 -1
  335. package/sdk/types/enums.d.ts +12 -0
  336. package/sdk/types/enums.d.ts.map +1 -0
  337. package/sdk/types/enums.js +11 -0
  338. package/sdk/types/enums.js.map +1 -0
  339. package/sdk/types/index.d.ts +6 -4
  340. package/sdk/types/index.d.ts.map +1 -1
  341. package/sdk/types/index.js +11 -9
  342. package/sdk/types/index.js.map +1 -1
  343. package/sdk/types/operations.js +1 -1
  344. package/sdk/types/rfcdate.js +1 -1
  345. package/sdk/user.d.ts +3 -3
  346. package/sdk/user.d.ts.map +1 -1
  347. package/sdk/user.js +25 -32
  348. package/sdk/user.js.map +1 -1
  349. package/sdk/variation.d.ts +3 -3
  350. package/sdk/variation.d.ts.map +1 -1
  351. package/sdk/variation.js +99 -127
  352. package/sdk/variation.js.map +1 -1
  353. package/src/hooks/hooks.ts +3 -3
  354. package/src/hooks/index.ts +3 -3
  355. package/src/hooks/types.ts +2 -2
  356. package/src/index.ts +3 -3
  357. package/src/lib/base64.ts +1 -1
  358. package/src/lib/config.ts +8 -7
  359. package/src/lib/encodings.ts +73 -14
  360. package/src/lib/http.ts +446 -203
  361. package/src/lib/is-plain-object.ts +43 -0
  362. package/src/lib/primitives.ts +40 -0
  363. package/src/lib/retries.ts +1 -1
  364. package/src/lib/schemas.ts +38 -4
  365. package/src/lib/sdks.ts +89 -27
  366. package/src/lib/security.ts +2 -2
  367. package/src/lib/url.ts +1 -1
  368. package/src/sdk/dataset.ts +105 -154
  369. package/src/sdk/{element.ts → elements.ts} +23 -36
  370. package/src/sdk/image.ts +377 -0
  371. package/src/sdk/index.ts +2 -2
  372. package/src/sdk/{initimage.ts → initimages.ts} +140 -93
  373. package/src/sdk/models/errors/index.ts +3 -3
  374. package/src/sdk/models/errors/sdkerror.ts +1 -1
  375. package/src/sdk/models/errors/sdkvalidationerror.ts +1 -1
  376. package/src/sdk/models/operations/createdataset.ts +161 -135
  377. package/src/sdk/models/operations/creategeneration.ts +351 -395
  378. package/src/sdk/models/operations/createlcmgeneration.ts +182 -209
  379. package/src/sdk/models/operations/createmodel.ts +186 -174
  380. package/src/sdk/models/operations/createsvdmotiongeneration.ts +163 -182
  381. package/src/sdk/models/operations/createtexturegeneration.ts +194 -205
  382. package/src/sdk/models/operations/createuniversalupscalerjob.ts +174 -199
  383. package/src/sdk/models/operations/createvariationnobg.ts +161 -145
  384. package/src/sdk/models/operations/createvariationunzoom.ts +158 -153
  385. package/src/sdk/models/operations/createvariationupscale.ts +162 -162
  386. package/src/sdk/models/operations/delete3dmodelbyid.ts +210 -169
  387. package/src/sdk/models/operations/deletedatasetbyid.ts +169 -134
  388. package/src/sdk/models/operations/deletegenerationbyid.ts +162 -137
  389. package/src/sdk/models/operations/deleteinitimagebyid.ts +159 -137
  390. package/src/sdk/models/operations/deletemodelbyid.ts +161 -133
  391. package/src/sdk/models/operations/deletetexturegenerationbyid.ts +214 -211
  392. package/src/sdk/models/operations/getdatasetbyid.ts +218 -189
  393. package/src/sdk/models/operations/getgenerationbyid.ts +460 -553
  394. package/src/sdk/models/operations/getgenerationsbyuserid.ts +458 -601
  395. package/src/sdk/models/operations/getinitimagebyid.ts +175 -145
  396. package/src/sdk/models/operations/getmodelbyid.ts +197 -194
  397. package/src/sdk/models/operations/getuserself.ts +177 -207
  398. package/src/sdk/models/operations/getvariationbyid.ts +182 -163
  399. package/src/sdk/models/operations/index.ts +37 -35
  400. package/src/sdk/models/operations/listelements.ts +140 -149
  401. package/src/sdk/models/operations/listplatformmodels.ts +201 -179
  402. package/src/sdk/models/operations/performalchemyupscalelcm.ts +202 -269
  403. package/src/sdk/models/operations/performinpaintinglcm.ts +189 -227
  404. package/src/sdk/models/operations/performinstantrefine.ts +186 -221
  405. package/src/sdk/models/operations/pricingcalculator.ts +883 -0
  406. package/src/sdk/models/operations/promptimprove.ts +158 -137
  407. package/src/sdk/models/operations/promptrandom.ts +126 -122
  408. package/src/sdk/models/operations/uploadcanvasinitimage.ts +256 -0
  409. package/src/sdk/models/operations/uploaddatasetimage.ts +201 -178
  410. package/src/sdk/models/operations/uploaddatasetimagefromgen.ts +197 -188
  411. package/src/sdk/models/operations/uploadinitimage.ts +164 -153
  412. package/src/sdk/models/operations/uploadmodelasset.ts +167 -159
  413. package/src/sdk/models/shared/canvasrequesttype.ts +34 -0
  414. package/src/sdk/models/shared/controlnetinput.ts +130 -0
  415. package/src/sdk/models/shared/controlnettype.ts +21 -3
  416. package/src/sdk/models/shared/custommodeltype.ts +17 -2
  417. package/src/sdk/models/shared/elementinput.ts +30 -32
  418. package/src/sdk/models/shared/index.ts +16 -13
  419. package/src/sdk/models/shared/jobstatus.ts +16 -2
  420. package/src/sdk/models/shared/lcmgenerationstyle.ts +17 -2
  421. package/src/sdk/models/shared/pricingcalculatorservices.ts +39 -0
  422. package/src/sdk/models/shared/sdgenerationschedulers.ts +17 -2
  423. package/src/sdk/models/shared/sdgenerationstyle.ts +17 -2
  424. package/src/sdk/models/shared/sdversions.ts +18 -2
  425. package/src/sdk/models/shared/security.ts +24 -26
  426. package/src/sdk/models/shared/strength.ts +16 -2
  427. package/src/sdk/models/shared/universalupscalerstyle.ts +17 -2
  428. package/src/sdk/models/shared/variationtype.ts +18 -2
  429. package/src/sdk/models.ts +347 -0
  430. package/src/sdk/motion.ts +123 -0
  431. package/src/sdk/pricingcalculator.ts +119 -0
  432. package/src/sdk/prompt.ts +43 -65
  433. package/src/sdk/realtimecanvas.ts +361 -0
  434. package/src/sdk/sdk.ts +55 -25
  435. package/src/sdk/texture.ts +208 -0
  436. package/src/sdk/threedmodelassets.ts +204 -0
  437. package/src/sdk/types/blobs.ts +1 -1
  438. package/src/sdk/types/enums.ts +16 -0
  439. package/src/sdk/types/index.ts +7 -5
  440. package/src/sdk/types/operations.ts +1 -1
  441. package/src/sdk/types/rfcdate.ts +1 -1
  442. package/src/sdk/user.ts +22 -35
  443. package/src/sdk/variation.ts +106 -157
  444. package/docs/sdks/generation/README.md +0 -485
  445. package/sdk/element.d.ts.map +0 -1
  446. package/sdk/element.js.map +0 -1
  447. package/sdk/generation.d.ts +0 -85
  448. package/sdk/generation.d.ts.map +0 -1
  449. package/sdk/generation.js +0 -799
  450. package/sdk/generation.js.map +0 -1
  451. package/sdk/initimage.d.ts.map +0 -1
  452. package/sdk/initimage.js +0 -261
  453. package/sdk/initimage.js.map +0 -1
  454. package/sdk/model.d.ts.map +0 -1
  455. package/sdk/model.js +0 -454
  456. package/sdk/model.js.map +0 -1
  457. package/src/sdk/generation.ts +0 -1057
  458. package/src/sdk/model.ts +0 -574
package/src/lib/http.ts CHANGED
@@ -1,39 +1,41 @@
1
1
  /*
2
- * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  */
4
4
 
5
- export type Fetcher = (
6
- input: RequestInfo | URL,
7
- init?: RequestInit,
8
- ) => Promise<Response>;
5
+ import { never as znever } from "zod";
6
+ import { parse } from "./schemas.js";
7
+ import { isPlainObject } from "./is-plain-object.js";
8
+ import { SDKError } from "../sdk/models/errors/sdkerror.js";
9
+
10
+ export type Fetcher = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
9
11
 
10
12
  export type Awaitable<T> = T | Promise<T>;
11
13
 
12
14
  const DEFAULT_FETCHER: Fetcher = (input, init) => {
13
- // If input is a Request and init is undefined, Bun will discard the method,
14
- // headers, body and other options that were set on the request object.
15
- // Node.js and browers would ignore an undefined init value. This check is
16
- // therefore needed for interop with Bun.
17
- if (init == null) {
18
- return fetch(input);
19
- } else {
20
- return fetch(input, init);
21
- }
15
+ // If input is a Request and init is undefined, Bun will discard the method,
16
+ // headers, body and other options that were set on the request object.
17
+ // Node.js and browers would ignore an undefined init value. This check is
18
+ // therefore needed for interop with Bun.
19
+ if (init == null) {
20
+ return fetch(input);
21
+ } else {
22
+ return fetch(input, init);
23
+ }
22
24
  };
23
25
 
24
26
  export type RequestInput = {
25
- /**
26
- * The URL the request will use.
27
- */
28
- url: URL;
29
- /**
30
- * Options used to create a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
31
- */
32
- options?: RequestInit | undefined;
27
+ /**
28
+ * The URL the request will use.
29
+ */
30
+ url: URL;
31
+ /**
32
+ * Options used to create a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
33
+ */
34
+ options?: RequestInit | undefined;
33
35
  };
34
36
 
35
37
  export interface HTTPClientOptions {
36
- fetcher?: Fetcher;
38
+ fetcher?: Fetcher;
37
39
  }
38
40
 
39
41
  export type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
@@ -41,223 +43,464 @@ export type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
41
43
  export type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
42
44
 
43
45
  export class HTTPClient {
44
- private fetcher: Fetcher;
45
- private requestHooks: BeforeRequestHook[] = [];
46
- private requestErrorHooks: RequestErrorHook[] = [];
47
- private responseHooks: ResponseHook[] = [];
48
-
49
- constructor(private options: HTTPClientOptions = {}) {
50
- this.fetcher = options.fetcher || DEFAULT_FETCHER;
51
- }
52
-
53
- async request(request: Request): Promise<Response> {
54
- let req = request;
55
- for (const hook of this.requestHooks) {
56
- const nextRequest = await hook(req);
57
- if (nextRequest) {
58
- req = nextRequest;
59
- }
60
- }
61
-
62
- try {
63
- const res = await this.fetcher(req);
64
-
65
- for (const hook of this.responseHooks) {
66
- await hook(res, req);
67
- }
46
+ private fetcher: Fetcher;
47
+ private requestHooks: BeforeRequestHook[] = [];
48
+ private requestErrorHooks: RequestErrorHook[] = [];
49
+ private responseHooks: ResponseHook[] = [];
68
50
 
69
- return res;
70
- } catch (err) {
71
- for (const hook of this.requestErrorHooks) {
72
- await hook(err, req);
73
- }
74
-
75
- throw err;
76
- }
77
- }
78
-
79
- /**
80
- * Registers a hook that is called before a request is made. The hook function
81
- * can mutate the request or return a new request. This may be useful to add
82
- * additional information to request such as request IDs and tracing headers.
83
- */
84
- addHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
85
- /**
86
- * Registers a hook that is called when a request cannot be made due to a
87
- * network error.
88
- */
89
- addHook(hook: "requestError", fn: RequestErrorHook): this;
90
- /**
91
- * Registers a hook that is called when a response has been received from the
92
- * server.
93
- */
94
- addHook(hook: "response", fn: ResponseHook): this;
95
- addHook(
96
- ...args:
97
- | [hook: "beforeRequest", fn: BeforeRequestHook]
98
- | [hook: "requestError", fn: RequestErrorHook]
99
- | [hook: "response", fn: ResponseHook]
100
- ) {
101
- if (args[0] === "beforeRequest") {
102
- this.requestHooks.push(args[1]);
103
- } else if (args[0] === "requestError") {
104
- this.requestErrorHooks.push(args[1]);
105
- } else if (args[0] === "response") {
106
- this.responseHooks.push(args[1]);
107
- } else {
108
- throw new Error(`Invalid hook type: ${args[0]}`);
51
+ constructor(private options: HTTPClientOptions = {}) {
52
+ this.fetcher = options.fetcher || DEFAULT_FETCHER;
109
53
  }
110
- return this;
111
- }
112
-
113
- /** Removes a hook that was previously registered with `addHook`. */
114
- removeHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
115
- /** Removes a hook that was previously registered with `addHook`. */
116
- removeHook(hook: "requestError", fn: RequestErrorHook): this;
117
- /** Removes a hook that was previously registered with `addHook`. */
118
- removeHook(hook: "response", fn: ResponseHook): this;
119
- removeHook(
120
- ...args:
121
- | [hook: "beforeRequest", fn: BeforeRequestHook]
122
- | [hook: "requestError", fn: RequestErrorHook]
123
- | [hook: "response", fn: ResponseHook]
124
- ): this {
125
- let target: unknown[];
126
- if (args[0] === "beforeRequest") {
127
- target = this.requestHooks;
128
- } else if (args[0] === "requestError") {
129
- target = this.requestErrorHooks;
130
- } else if (args[0] === "response") {
131
- target = this.responseHooks;
132
- } else {
133
- throw new Error(`Invalid hook type: ${args[0]}`);
54
+
55
+ async request(request: Request): Promise<Response> {
56
+ let req = request;
57
+ for (const hook of this.requestHooks) {
58
+ const nextRequest = await hook(req);
59
+ if (nextRequest) {
60
+ req = nextRequest;
61
+ }
62
+ }
63
+
64
+ try {
65
+ const res = await this.fetcher(req);
66
+
67
+ for (const hook of this.responseHooks) {
68
+ await hook(res, req);
69
+ }
70
+
71
+ return res;
72
+ } catch (err) {
73
+ for (const hook of this.requestErrorHooks) {
74
+ await hook(err, req);
75
+ }
76
+
77
+ throw err;
78
+ }
134
79
  }
135
80
 
136
- const index = target.findIndex((v) => v === args[1]);
137
- if (index >= 0) {
138
- target.splice(index, 1);
81
+ /**
82
+ * Registers a hook that is called before a request is made. The hook function
83
+ * can mutate the request or return a new request. This may be useful to add
84
+ * additional information to request such as request IDs and tracing headers.
85
+ */
86
+ addHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
87
+ /**
88
+ * Registers a hook that is called when a request cannot be made due to a
89
+ * network error.
90
+ */
91
+ addHook(hook: "requestError", fn: RequestErrorHook): this;
92
+ /**
93
+ * Registers a hook that is called when a response has been received from the
94
+ * server.
95
+ */
96
+ addHook(hook: "response", fn: ResponseHook): this;
97
+ addHook(
98
+ ...args:
99
+ | [hook: "beforeRequest", fn: BeforeRequestHook]
100
+ | [hook: "requestError", fn: RequestErrorHook]
101
+ | [hook: "response", fn: ResponseHook]
102
+ ) {
103
+ if (args[0] === "beforeRequest") {
104
+ this.requestHooks.push(args[1]);
105
+ } else if (args[0] === "requestError") {
106
+ this.requestErrorHooks.push(args[1]);
107
+ } else if (args[0] === "response") {
108
+ this.responseHooks.push(args[1]);
109
+ } else {
110
+ throw new Error(`Invalid hook type: ${args[0]}`);
111
+ }
112
+ return this;
139
113
  }
140
114
 
141
- return this;
142
- }
115
+ /** Removes a hook that was previously registered with `addHook`. */
116
+ removeHook(hook: "beforeRequest", fn: BeforeRequestHook): this;
117
+ /** Removes a hook that was previously registered with `addHook`. */
118
+ removeHook(hook: "requestError", fn: RequestErrorHook): this;
119
+ /** Removes a hook that was previously registered with `addHook`. */
120
+ removeHook(hook: "response", fn: ResponseHook): this;
121
+ removeHook(
122
+ ...args:
123
+ | [hook: "beforeRequest", fn: BeforeRequestHook]
124
+ | [hook: "requestError", fn: RequestErrorHook]
125
+ | [hook: "response", fn: ResponseHook]
126
+ ): this {
127
+ let target: unknown[];
128
+ if (args[0] === "beforeRequest") {
129
+ target = this.requestHooks;
130
+ } else if (args[0] === "requestError") {
131
+ target = this.requestErrorHooks;
132
+ } else if (args[0] === "response") {
133
+ target = this.responseHooks;
134
+ } else {
135
+ throw new Error(`Invalid hook type: ${args[0]}`);
136
+ }
137
+
138
+ const index = target.findIndex((v) => v === args[1]);
139
+ if (index >= 0) {
140
+ target.splice(index, 1);
141
+ }
142
+
143
+ return this;
144
+ }
143
145
 
144
- clone(): HTTPClient {
145
- const child = new HTTPClient(this.options);
146
- child.requestHooks = this.requestHooks.slice();
147
- child.requestErrorHooks = this.requestErrorHooks.slice();
148
- child.responseHooks = this.responseHooks.slice();
146
+ clone(): HTTPClient {
147
+ const child = new HTTPClient(this.options);
148
+ child.requestHooks = this.requestHooks.slice();
149
+ child.requestErrorHooks = this.requestErrorHooks.slice();
150
+ child.responseHooks = this.responseHooks.slice();
149
151
 
150
- return child;
151
- }
152
+ return child;
153
+ }
152
154
  }
153
155
 
156
+ export type StatusCodePredicate = number | string | (number | string)[];
157
+
154
158
  // A semicolon surrounded by optional whitespace characters is used to separate
155
159
  // segments in a media type string.
156
160
  const mediaParamSeparator = /\s*;\s*/g;
157
161
 
158
162
  function matchContentType(response: Response, pattern: string): boolean {
159
- // `*` is a special case which means anything is acceptable.
160
- if (pattern === "*") {
161
- return true;
162
- }
163
-
164
- let contentType =
165
- response.headers.get("content-type")?.trim() || "application/octet-stream";
166
- contentType = contentType.toLowerCase();
167
-
168
- const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
169
- const [wantType = "", ...wantParams] = wantParts;
170
-
171
- if (wantType.split("/").length !== 2) {
172
- return false;
173
- }
174
-
175
- const gotParts = contentType.split(mediaParamSeparator);
176
- const [gotType = "", ...gotParams] = gotParts;
177
-
178
- const [type = "", subtype = ""] = gotType.split("/");
179
- if (!type || !subtype) {
180
- return false;
181
- }
182
-
183
- if (
184
- wantType !== "*/*" &&
185
- gotType !== wantType &&
186
- `${type}/*` !== wantType &&
187
- `*/${subtype}` !== wantType
188
- ) {
189
- return false;
190
- }
191
-
192
- if (gotParams.length < wantParams.length) {
193
- return false;
194
- }
195
-
196
- const params = new Set(gotParams);
197
- for (const wantParam of wantParams) {
198
- if (!params.has(wantParam)) {
199
- return false;
163
+ // `*` is a special case which means anything is acceptable.
164
+ if (pattern === "*") {
165
+ return true;
200
166
  }
201
- }
202
167
 
203
- return true;
204
- }
168
+ let contentType = response.headers.get("content-type")?.trim() || "application/octet-stream";
169
+ contentType = contentType.toLowerCase();
205
170
 
206
- const codeRangeRE = new RegExp("^[0-9]xx$", "i");
171
+ const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
172
+ const [wantType = "", ...wantParams] = wantParts;
207
173
 
208
- export function matchStatusCode(
209
- response: Response,
210
- codes: number | string | (number | string)[],
211
- ): boolean {
212
- const actual = `${response.status}`;
213
- const expectedCodes = Array.isArray(codes) ? codes : [codes];
214
- if (!expectedCodes.length) {
215
- return false;
216
- }
174
+ if (wantType.split("/").length !== 2) {
175
+ return false;
176
+ }
217
177
 
218
- return expectedCodes.some((ec) => {
219
- const code = `${ec}`;
178
+ const gotParts = contentType.split(mediaParamSeparator);
179
+ const [gotType = "", ...gotParams] = gotParts;
220
180
 
221
- if (code === "default") {
222
- return true;
181
+ const [type = "", subtype = ""] = gotType.split("/");
182
+ if (!type || !subtype) {
183
+ return false;
223
184
  }
224
185
 
225
- if (!codeRangeRE.test(`${code}`)) {
226
- return code === actual;
186
+ if (
187
+ wantType !== "*/*" &&
188
+ gotType !== wantType &&
189
+ `${type}/*` !== wantType &&
190
+ `*/${subtype}` !== wantType
191
+ ) {
192
+ return false;
227
193
  }
228
194
 
229
- const expectFamily = code.charAt(0);
230
- if (!expectFamily) {
231
- throw new Error("Invalid status code range");
195
+ if (gotParams.length < wantParams.length) {
196
+ return false;
232
197
  }
233
198
 
234
- const actualFamily = actual.charAt(0);
235
- if (!actualFamily) {
236
- throw new Error(`Invalid response status code: ${actual}`);
199
+ const params = new Set(gotParams);
200
+ for (const wantParam of wantParams) {
201
+ if (!params.has(wantParam)) {
202
+ return false;
203
+ }
237
204
  }
238
205
 
239
- return actualFamily === expectFamily;
240
- });
206
+ return true;
207
+ }
208
+
209
+ const codeRangeRE = new RegExp("^[0-9]xx$", "i");
210
+
211
+ export function matchStatusCode(response: Response, codes: StatusCodePredicate): boolean {
212
+ const actual = `${response.status}`;
213
+ const expectedCodes = Array.isArray(codes) ? codes : [codes];
214
+ if (!expectedCodes.length) {
215
+ return false;
216
+ }
217
+
218
+ return expectedCodes.some((ec) => {
219
+ const code = `${ec}`;
220
+
221
+ if (code === "default") {
222
+ return true;
223
+ }
224
+
225
+ if (!codeRangeRE.test(`${code}`)) {
226
+ return code === actual;
227
+ }
228
+
229
+ const expectFamily = code.charAt(0);
230
+ if (!expectFamily) {
231
+ throw new Error("Invalid status code range");
232
+ }
233
+
234
+ const actualFamily = actual.charAt(0);
235
+ if (!actualFamily) {
236
+ throw new Error(`Invalid response status code: ${actual}`);
237
+ }
238
+
239
+ return actualFamily === expectFamily;
240
+ });
241
241
  }
242
242
 
243
243
  export function matchResponse(
244
- response: Response,
245
- code: number | string | (number | string)[],
246
- contentTypePattern: string,
244
+ response: Response,
245
+ code: StatusCodePredicate,
246
+ contentTypePattern: string
247
247
  ): boolean {
248
- return (
249
- matchStatusCode(response, code) &&
250
- matchContentType(response, contentTypePattern)
251
- );
248
+ return matchStatusCode(response, code) && matchContentType(response, contentTypePattern);
252
249
  }
253
250
 
254
251
  const headerValRE = /, */;
255
252
  export function unpackHeaders(headers: Headers): Record<string, string[]> {
256
- const out: Record<string, string[]> = {};
253
+ const out: Record<string, string[]> = {};
254
+
255
+ for (const [k, v] of headers.entries()) {
256
+ out[k] = v.split(headerValRE);
257
+ }
258
+
259
+ return out;
260
+ }
261
+
262
+ type ResponseMatcherSchema<T> =
263
+ | { parse: (data: unknown) => T }
264
+ | { inboundSchema: { parse: (data: unknown) => T } };
265
+
266
+ type SerializationMethod = "sse" | "json" | "rawBytes" | "rawStream" | "text" | "void" | "fail";
267
+
268
+ const defaultContentTypes: Record<SerializationMethod, string> = {
269
+ sse: "text/event-stream",
270
+ json: "application/json",
271
+ rawBytes: "application/octet-stream",
272
+ rawStream: "application/octet-stream",
273
+ text: "text/plain",
274
+ void: "",
275
+ fail: "",
276
+ };
277
+
278
+ type ResponsePredicateMatch<Result> = {
279
+ method: SerializationMethod;
280
+ codes: StatusCodePredicate;
281
+ ctype: string;
282
+ schema: ResponseMatcherSchema<Result | Error>;
283
+ hdrs: boolean;
284
+ key: string | undefined;
285
+ err: boolean;
286
+ fail: boolean;
287
+ sseSentinel?: string | undefined;
288
+ };
289
+
290
+ type ResponsePredicateOptions = {
291
+ /** Content type to match on. */
292
+ ctype?: string;
293
+ /** Pass HTTP headers to deserializer. */
294
+ hdrs?: boolean;
295
+ /** A value for an SSE event's data field that indicates a stream should be terminated. */
296
+ sseSentinel?: string;
297
+ } & (
298
+ | {
299
+ /** The result key to store the deserialized value into. */
300
+ key?: string;
301
+ fail?: never;
302
+ err?: never;
303
+ }
304
+ | {
305
+ /** Indicates the matched response must throw the built-in error. */
306
+ fail: true;
307
+ key?: never;
308
+ err?: never;
309
+ }
310
+ | {
311
+ /** Indicates the matched response is a custom error. */
312
+ err: true;
313
+ key?: never;
314
+ fail?: never;
315
+ }
316
+ );
317
+
318
+ export class ResponseMatcher<Result> {
319
+ private predicates: ResponsePredicateMatch<Result>[] = [];
320
+
321
+ #any<T extends Result | Error>(
322
+ method: SerializationMethod,
323
+ codes: StatusCodePredicate,
324
+ schema: ResponseMatcherSchema<T>,
325
+ opts?: ResponsePredicateOptions
326
+ ) {
327
+ const ctype = opts?.ctype || defaultContentTypes[method];
328
+ const hdrs = !!opts?.hdrs;
329
+ const key = opts?.key;
330
+ const err = !!opts?.err;
331
+ const fail = !!opts?.fail;
332
+ const sseSentinel = opts?.sseSentinel;
333
+ this.predicates.push({
334
+ method,
335
+ codes,
336
+ ctype,
337
+ schema,
338
+ hdrs,
339
+ key,
340
+ err,
341
+ fail,
342
+ sseSentinel,
343
+ });
344
+ return this;
345
+ }
346
+
347
+ json<T extends Result | Error>(
348
+ codes: StatusCodePredicate,
349
+ schema: ResponseMatcherSchema<T>,
350
+ opts?: ResponsePredicateOptions
351
+ ): this {
352
+ return this.#any("json", codes, schema, opts);
353
+ }
354
+ bytes<T extends Result | Error>(
355
+ codes: StatusCodePredicate,
356
+ schema: ResponseMatcherSchema<T>,
357
+ opts?: ResponsePredicateOptions
358
+ ): this {
359
+ return this.#any("rawBytes", codes, schema, opts);
360
+ }
361
+ stream<T extends Result | Error>(
362
+ codes: StatusCodePredicate,
363
+ schema: ResponseMatcherSchema<T>,
364
+ opts?: ResponsePredicateOptions
365
+ ): this {
366
+ return this.#any("rawStream", codes, schema, opts);
367
+ }
368
+ text<T extends Result | Error>(
369
+ codes: StatusCodePredicate,
370
+ schema: ResponseMatcherSchema<T>,
371
+ opts?: ResponsePredicateOptions
372
+ ): this {
373
+ return this.#any("text", codes, schema, opts);
374
+ }
375
+ sse<T extends Result | Error>(
376
+ codes: StatusCodePredicate,
377
+ schema: ResponseMatcherSchema<T>,
378
+ opts?: Omit<ResponsePredicateOptions, "err" | "fail">
379
+ ): this {
380
+ return this.#any("sse", codes, schema, opts);
381
+ }
382
+ void<T extends Result | Error>(
383
+ codes: StatusCodePredicate,
384
+ schema: ResponseMatcherSchema<T>,
385
+ opts?: Pick<ResponsePredicateOptions, "hdrs">
386
+ ): this {
387
+ return this.#any("void", codes, schema, opts);
388
+ }
389
+ fail(codes: StatusCodePredicate): this {
390
+ return this.#any("fail", codes, znever(), { fail: true });
391
+ }
392
+
393
+ async match(
394
+ response: Response,
395
+ // envelope
396
+ options?: {
397
+ resultKey?: string;
398
+ extraFields?: Record<string, unknown>;
399
+ }
400
+ ): Promise<[result: Result, rawData: unknown]> {
401
+ let pred: ResponsePredicateMatch<Result> | undefined;
402
+ for (const predicate of this.predicates) {
403
+ const { codes, ctype } = predicate;
404
+ if (ctype && matchResponse(response, codes, ctype)) {
405
+ pred = predicate;
406
+ break;
407
+ } else if (!ctype && matchStatusCode(response, codes)) {
408
+ pred = predicate;
409
+ break;
410
+ }
411
+ }
412
+ if (pred == null) {
413
+ const responseBody = await response.text();
414
+ throw new SDKError(
415
+ "Unexpected API response status or content-type",
416
+ response,
417
+ responseBody
418
+ );
419
+ }
420
+
421
+ const { method, schema } = pred;
422
+
423
+ let raw: unknown;
424
+ switch (method) {
425
+ case "json":
426
+ raw = await response.json();
427
+ break;
428
+ case "rawBytes":
429
+ raw = await response.arrayBuffer();
430
+ break;
431
+ case "rawStream":
432
+ raw = response.body;
433
+ break;
434
+ case "text":
435
+ raw = await response.text();
436
+ break;
437
+ case "sse":
438
+ raw = response.body;
439
+ break;
440
+ case "void":
441
+ raw = await discardResponseBody(response);
442
+ break;
443
+ case "fail":
444
+ raw = await response.text();
445
+ break;
446
+ default:
447
+ method satisfies never;
448
+ throw new Error(`Unsupported response type: ${method}`);
449
+ }
450
+
451
+ const resultKey = pred.key || options?.resultKey;
452
+ let data: unknown;
453
+ if (pred.fail) {
454
+ throw new SDKError("API error occurred", response, typeof raw === "string" ? raw : "");
455
+ } else if (pred.err) {
456
+ data = {
457
+ ...options?.extraFields,
458
+ ...(pred.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
459
+ ...(isPlainObject(raw) ? raw : null),
460
+ };
461
+ } else if (resultKey) {
462
+ data = {
463
+ ...options?.extraFields,
464
+ ...(pred.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
465
+ [resultKey]: raw,
466
+ };
467
+ } else {
468
+ data = {
469
+ ...options?.extraFields,
470
+ ...(pred.hdrs ? { Headers: unpackHeaders(response.headers) } : null),
471
+ };
472
+ }
473
+
474
+ const parser = "inboundSchema" in schema ? schema.inboundSchema : schema;
475
+ const body = parse(data, (v: unknown) => parser.parse(v), "Response validation failed");
476
+
477
+ if (body instanceof Error) {
478
+ throw body;
479
+ }
480
+
481
+ return [body, raw];
482
+ }
483
+ }
257
484
 
258
- for (const [k, v] of headers.entries()) {
259
- out[k] = v.split(headerValRE);
260
- }
485
+ /**
486
+ * Discards the response body to free up resources.
487
+ *
488
+ * To learn why this is need, see the undici docs:
489
+ * https://undici.nodejs.org/#/?id=garbage-collection
490
+ */
491
+ export async function discardResponseBody(res: Response) {
492
+ const reader = res.body?.getReader();
493
+ if (reader == null) {
494
+ return;
495
+ }
261
496
 
262
- return out;
497
+ try {
498
+ let done = false;
499
+ while (!done) {
500
+ const res = await reader.read();
501
+ done = res.done;
502
+ }
503
+ } finally {
504
+ reader.releaseLock();
505
+ }
263
506
  }