@leonardo-ai/sdk 4.14.2 → 4.15.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 (368) hide show
  1. package/README.md +104 -7
  2. package/core.d.ts +10 -0
  3. package/core.d.ts.map +1 -0
  4. package/core.js +17 -0
  5. package/core.js.map +1 -0
  6. package/docs/sdks/dataset/README.md +169 -7
  7. package/docs/sdks/elements/README.md +33 -1
  8. package/docs/sdks/image/README.md +132 -7
  9. package/docs/sdks/initimages/README.md +136 -6
  10. package/docs/sdks/leonardo/README.md +1 -5
  11. package/docs/sdks/models/README.md +135 -6
  12. package/docs/sdks/motion/README.md +34 -4
  13. package/docs/sdks/pricingcalculator/README.md +34 -2
  14. package/docs/sdks/prompt/README.md +67 -2
  15. package/docs/sdks/realtimecanvas/README.md +133 -21
  16. package/docs/sdks/texture/README.md +67 -4
  17. package/docs/sdks/threedmodelassets/README.md +67 -4
  18. package/docs/sdks/user/README.md +33 -1
  19. package/docs/sdks/variation/README.md +166 -10
  20. package/funcs/datasetCreateDataset.d.ts +15 -0
  21. package/funcs/datasetCreateDataset.d.ts.map +1 -0
  22. package/funcs/datasetCreateDataset.js +101 -0
  23. package/funcs/datasetCreateDataset.js.map +1 -0
  24. package/funcs/datasetDeleteDatasetById.d.ts +15 -0
  25. package/funcs/datasetDeleteDatasetById.d.ts.map +1 -0
  26. package/funcs/datasetDeleteDatasetById.js +103 -0
  27. package/funcs/datasetDeleteDatasetById.js.map +1 -0
  28. package/funcs/datasetGetDatasetById.d.ts +15 -0
  29. package/funcs/datasetGetDatasetById.d.ts.map +1 -0
  30. package/funcs/datasetGetDatasetById.js +105 -0
  31. package/funcs/datasetGetDatasetById.js.map +1 -0
  32. package/funcs/datasetUploadDatasetImage.d.ts +15 -0
  33. package/funcs/datasetUploadDatasetImage.d.ts.map +1 -0
  34. package/funcs/datasetUploadDatasetImage.js +108 -0
  35. package/funcs/datasetUploadDatasetImage.js.map +1 -0
  36. package/funcs/datasetUploadDatasetImageFromGen.d.ts +15 -0
  37. package/funcs/datasetUploadDatasetImageFromGen.d.ts.map +1 -0
  38. package/funcs/datasetUploadDatasetImageFromGen.js +108 -0
  39. package/funcs/datasetUploadDatasetImageFromGen.js.map +1 -0
  40. package/funcs/elementsListElements.d.ts +15 -0
  41. package/funcs/elementsListElements.d.ts.map +1 -0
  42. package/funcs/elementsListElements.js +90 -0
  43. package/funcs/elementsListElements.js.map +1 -0
  44. package/funcs/imageCreateGeneration.d.ts +15 -0
  45. package/funcs/imageCreateGeneration.d.ts.map +1 -0
  46. package/funcs/imageCreateGeneration.js +99 -0
  47. package/funcs/imageCreateGeneration.js.map +1 -0
  48. package/funcs/imageDeleteGenerationById.d.ts +15 -0
  49. package/funcs/imageDeleteGenerationById.d.ts.map +1 -0
  50. package/funcs/imageDeleteGenerationById.js +103 -0
  51. package/funcs/imageDeleteGenerationById.js.map +1 -0
  52. package/funcs/imageGetGenerationById.d.ts +15 -0
  53. package/funcs/imageGetGenerationById.d.ts.map +1 -0
  54. package/funcs/imageGetGenerationById.js +103 -0
  55. package/funcs/imageGetGenerationById.js.map +1 -0
  56. package/funcs/imageGetGenerationsByUserId.d.ts +15 -0
  57. package/funcs/imageGetGenerationsByUserId.d.ts.map +1 -0
  58. package/funcs/imageGetGenerationsByUserId.js +113 -0
  59. package/funcs/imageGetGenerationsByUserId.js.map +1 -0
  60. package/funcs/initImagesDeleteInitImageById.d.ts +15 -0
  61. package/funcs/initImagesDeleteInitImageById.d.ts.map +1 -0
  62. package/funcs/initImagesDeleteInitImageById.js +103 -0
  63. package/funcs/initImagesDeleteInitImageById.js.map +1 -0
  64. package/funcs/initImagesGetInitImageById.d.ts +15 -0
  65. package/funcs/initImagesGetInitImageById.d.ts.map +1 -0
  66. package/funcs/initImagesGetInitImageById.js +103 -0
  67. package/funcs/initImagesGetInitImageById.js.map +1 -0
  68. package/funcs/initImagesUploadCanvasInitImage.d.ts +15 -0
  69. package/funcs/initImagesUploadCanvasInitImage.d.ts.map +1 -0
  70. package/funcs/initImagesUploadCanvasInitImage.js +99 -0
  71. package/funcs/initImagesUploadCanvasInitImage.js.map +1 -0
  72. package/funcs/initImagesUploadInitImage.d.ts +15 -0
  73. package/funcs/initImagesUploadInitImage.d.ts.map +1 -0
  74. package/funcs/initImagesUploadInitImage.js +101 -0
  75. package/funcs/initImagesUploadInitImage.js.map +1 -0
  76. package/funcs/modelsCreateModel.d.ts +15 -0
  77. package/funcs/modelsCreateModel.d.ts.map +1 -0
  78. package/funcs/modelsCreateModel.js +101 -0
  79. package/funcs/modelsCreateModel.js.map +1 -0
  80. package/funcs/modelsDeleteModelById.d.ts +15 -0
  81. package/funcs/modelsDeleteModelById.d.ts.map +1 -0
  82. package/funcs/modelsDeleteModelById.js +105 -0
  83. package/funcs/modelsDeleteModelById.js.map +1 -0
  84. package/funcs/modelsGetModelById.d.ts +15 -0
  85. package/funcs/modelsGetModelById.d.ts.map +1 -0
  86. package/funcs/modelsGetModelById.js +105 -0
  87. package/funcs/modelsGetModelById.js.map +1 -0
  88. package/funcs/modelsListPlatformModels.d.ts +15 -0
  89. package/funcs/modelsListPlatformModels.d.ts.map +1 -0
  90. package/funcs/modelsListPlatformModels.js +88 -0
  91. package/funcs/modelsListPlatformModels.js.map +1 -0
  92. package/funcs/motionCreateSVDMotionGeneration.d.ts +15 -0
  93. package/funcs/motionCreateSVDMotionGeneration.d.ts.map +1 -0
  94. package/funcs/motionCreateSVDMotionGeneration.js +99 -0
  95. package/funcs/motionCreateSVDMotionGeneration.js.map +1 -0
  96. package/funcs/pricingCalculatorPricingCalculator.d.ts +15 -0
  97. package/funcs/pricingCalculatorPricingCalculator.d.ts.map +1 -0
  98. package/funcs/pricingCalculatorPricingCalculator.js +99 -0
  99. package/funcs/pricingCalculatorPricingCalculator.js.map +1 -0
  100. package/funcs/promptPromptImprove.d.ts +15 -0
  101. package/funcs/promptPromptImprove.d.ts.map +1 -0
  102. package/funcs/promptPromptImprove.js +101 -0
  103. package/funcs/promptPromptImprove.js.map +1 -0
  104. package/funcs/promptPromptRandom.d.ts +15 -0
  105. package/funcs/promptPromptRandom.d.ts.map +1 -0
  106. package/funcs/promptPromptRandom.js +90 -0
  107. package/funcs/promptPromptRandom.js.map +1 -0
  108. package/funcs/realtimeCanvasCreateLCMGeneration.d.ts +15 -0
  109. package/funcs/realtimeCanvasCreateLCMGeneration.d.ts.map +1 -0
  110. package/funcs/realtimeCanvasCreateLCMGeneration.js +99 -0
  111. package/funcs/realtimeCanvasCreateLCMGeneration.js.map +1 -0
  112. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.d.ts +15 -0
  113. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.d.ts.map +1 -0
  114. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.js +99 -0
  115. package/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.js.map +1 -0
  116. package/funcs/realtimeCanvasPerformInpaintingLCM.d.ts +15 -0
  117. package/funcs/realtimeCanvasPerformInpaintingLCM.d.ts.map +1 -0
  118. package/funcs/realtimeCanvasPerformInpaintingLCM.js +99 -0
  119. package/funcs/realtimeCanvasPerformInpaintingLCM.js.map +1 -0
  120. package/funcs/realtimeCanvasPerformInstantRefine.d.ts +15 -0
  121. package/funcs/realtimeCanvasPerformInstantRefine.d.ts.map +1 -0
  122. package/funcs/realtimeCanvasPerformInstantRefine.js +99 -0
  123. package/funcs/realtimeCanvasPerformInstantRefine.js.map +1 -0
  124. package/funcs/textureCreateTextureGeneration.d.ts +15 -0
  125. package/funcs/textureCreateTextureGeneration.d.ts.map +1 -0
  126. package/funcs/textureCreateTextureGeneration.js +99 -0
  127. package/funcs/textureCreateTextureGeneration.js.map +1 -0
  128. package/funcs/textureDeleteTextureGenerationById.d.ts +15 -0
  129. package/funcs/textureDeleteTextureGenerationById.d.ts.map +1 -0
  130. package/funcs/textureDeleteTextureGenerationById.js +107 -0
  131. package/funcs/textureDeleteTextureGenerationById.js.map +1 -0
  132. package/funcs/threeDModelAssetsDelete3DModelById.d.ts +15 -0
  133. package/funcs/threeDModelAssetsDelete3DModelById.d.ts.map +1 -0
  134. package/funcs/threeDModelAssetsDelete3DModelById.js +105 -0
  135. package/funcs/threeDModelAssetsDelete3DModelById.js.map +1 -0
  136. package/funcs/threeDModelAssetsUploadModelAsset.d.ts +15 -0
  137. package/funcs/threeDModelAssetsUploadModelAsset.d.ts.map +1 -0
  138. package/funcs/threeDModelAssetsUploadModelAsset.js +99 -0
  139. package/funcs/threeDModelAssetsUploadModelAsset.js.map +1 -0
  140. package/funcs/userGetUserSelf.d.ts +15 -0
  141. package/funcs/userGetUserSelf.d.ts.map +1 -0
  142. package/funcs/userGetUserSelf.js +90 -0
  143. package/funcs/userGetUserSelf.js.map +1 -0
  144. package/funcs/variationCreateUniversalUpscalerJob.d.ts +15 -0
  145. package/funcs/variationCreateUniversalUpscalerJob.d.ts.map +1 -0
  146. package/funcs/variationCreateUniversalUpscalerJob.js +99 -0
  147. package/funcs/variationCreateUniversalUpscalerJob.js.map +1 -0
  148. package/funcs/variationCreateVariationNoBG.d.ts +15 -0
  149. package/funcs/variationCreateVariationNoBG.d.ts.map +1 -0
  150. package/funcs/variationCreateVariationNoBG.js +99 -0
  151. package/funcs/variationCreateVariationNoBG.js.map +1 -0
  152. package/funcs/variationCreateVariationUnzoom.d.ts +15 -0
  153. package/funcs/variationCreateVariationUnzoom.d.ts.map +1 -0
  154. package/funcs/variationCreateVariationUnzoom.js +99 -0
  155. package/funcs/variationCreateVariationUnzoom.js.map +1 -0
  156. package/funcs/variationCreateVariationUpscale.d.ts +15 -0
  157. package/funcs/variationCreateVariationUpscale.d.ts.map +1 -0
  158. package/funcs/variationCreateVariationUpscale.js +99 -0
  159. package/funcs/variationCreateVariationUpscale.js.map +1 -0
  160. package/funcs/variationGetVariationById.d.ts +15 -0
  161. package/funcs/variationGetVariationById.d.ts.map +1 -0
  162. package/funcs/variationGetVariationById.js +103 -0
  163. package/funcs/variationGetVariationById.js.map +1 -0
  164. package/index.d.ts +1 -0
  165. package/index.d.ts.map +1 -1
  166. package/index.js +14 -0
  167. package/index.js.map +1 -1
  168. package/lib/config.d.ts +5 -3
  169. package/lib/config.d.ts.map +1 -1
  170. package/lib/config.js +3 -3
  171. package/lib/config.js.map +1 -1
  172. package/lib/dlv.d.ts +14 -0
  173. package/lib/dlv.d.ts.map +1 -0
  174. package/lib/dlv.js +50 -0
  175. package/lib/dlv.js.map +1 -0
  176. package/lib/files.d.ts +12 -0
  177. package/lib/files.d.ts.map +1 -0
  178. package/lib/files.js +52 -0
  179. package/lib/files.js.map +1 -0
  180. package/lib/http.d.ts +11 -52
  181. package/lib/http.d.ts.map +1 -1
  182. package/lib/http.js +49 -173
  183. package/lib/http.js.map +1 -1
  184. package/lib/logger.d.ts +6 -0
  185. package/lib/logger.d.ts.map +1 -0
  186. package/lib/logger.js +6 -0
  187. package/lib/logger.js.map +1 -0
  188. package/lib/matchers.d.ts +64 -0
  189. package/lib/matchers.d.ts.map +1 -0
  190. package/lib/matchers.js +206 -0
  191. package/lib/matchers.js.map +1 -0
  192. package/lib/retries.d.ts.map +1 -1
  193. package/lib/retries.js +2 -28
  194. package/lib/retries.js.map +1 -1
  195. package/lib/schemas.d.ts +8 -0
  196. package/lib/schemas.d.ts.map +1 -1
  197. package/lib/schemas.js +16 -1
  198. package/lib/schemas.js.map +1 -1
  199. package/lib/sdks.d.ts +14 -16
  200. package/lib/sdks.d.ts.map +1 -1
  201. package/lib/sdks.js +144 -27
  202. package/lib/sdks.js.map +1 -1
  203. package/lib/security.d.ts +7 -1
  204. package/lib/security.d.ts.map +1 -1
  205. package/lib/security.js +13 -1
  206. package/lib/security.js.map +1 -1
  207. package/package.json +2 -1
  208. package/sdk/dataset.d.ts +0 -3
  209. package/sdk/dataset.d.ts.map +1 -1
  210. package/sdk/dataset.js +11 -332
  211. package/sdk/dataset.js.map +1 -1
  212. package/sdk/elements.d.ts +0 -3
  213. package/sdk/elements.d.ts.map +1 -1
  214. package/sdk/elements.js +3 -93
  215. package/sdk/elements.js.map +1 -1
  216. package/sdk/image.d.ts +0 -3
  217. package/sdk/image.d.ts.map +1 -1
  218. package/sdk/image.js +9 -273
  219. package/sdk/image.js.map +1 -1
  220. package/sdk/initimages.d.ts +0 -3
  221. package/sdk/initimages.d.ts.map +1 -1
  222. package/sdk/initimages.js +9 -261
  223. package/sdk/initimages.js.map +1 -1
  224. package/sdk/models/errors/httpclienterrors.d.ts +44 -0
  225. package/sdk/models/errors/httpclienterrors.d.ts.map +1 -0
  226. package/sdk/models/errors/httpclienterrors.js +78 -0
  227. package/sdk/models/errors/httpclienterrors.js.map +1 -0
  228. package/sdk/models/errors/index.d.ts +1 -0
  229. package/sdk/models/errors/index.d.ts.map +1 -1
  230. package/sdk/models/errors/index.js +1 -0
  231. package/sdk/models/errors/index.js.map +1 -1
  232. package/sdk/models/errors/sdkvalidationerror.d.ts +4 -1
  233. package/sdk/models/errors/sdkvalidationerror.d.ts.map +1 -1
  234. package/sdk/models/errors/sdkvalidationerror.js +3 -5
  235. package/sdk/models/errors/sdkvalidationerror.js.map +1 -1
  236. package/sdk/models/operations/pricingcalculator.d.ts +5 -0
  237. package/sdk/models/operations/pricingcalculator.d.ts.map +1 -1
  238. package/sdk/models/operations/pricingcalculator.js +2 -0
  239. package/sdk/models/operations/pricingcalculator.js.map +1 -1
  240. package/sdk/models.d.ts +0 -3
  241. package/sdk/models.d.ts.map +1 -1
  242. package/sdk/models.js +9 -256
  243. package/sdk/models.js.map +1 -1
  244. package/sdk/motion.d.ts +0 -3
  245. package/sdk/motion.d.ts.map +1 -1
  246. package/sdk/motion.js +3 -102
  247. package/sdk/motion.js.map +1 -1
  248. package/sdk/pricingcalculator.d.ts +0 -3
  249. package/sdk/pricingcalculator.d.ts.map +1 -1
  250. package/sdk/pricingcalculator.js +3 -100
  251. package/sdk/pricingcalculator.js.map +1 -1
  252. package/sdk/prompt.d.ts +0 -3
  253. package/sdk/prompt.d.ts.map +1 -1
  254. package/sdk/prompt.js +5 -146
  255. package/sdk/prompt.js.map +1 -1
  256. package/sdk/realtimecanvas.d.ts +0 -3
  257. package/sdk/realtimecanvas.d.ts.map +1 -1
  258. package/sdk/realtimecanvas.js +9 -253
  259. package/sdk/realtimecanvas.js.map +1 -1
  260. package/sdk/sdk.d.ts +0 -3
  261. package/sdk/sdk.d.ts.map +1 -1
  262. package/sdk/sdk.js +0 -23
  263. package/sdk/sdk.js.map +1 -1
  264. package/sdk/texture.d.ts +0 -3
  265. package/sdk/texture.d.ts.map +1 -1
  266. package/sdk/texture.js +5 -159
  267. package/sdk/texture.js.map +1 -1
  268. package/sdk/threedmodelassets.d.ts +0 -3
  269. package/sdk/threedmodelassets.d.ts.map +1 -1
  270. package/sdk/threedmodelassets.js +5 -157
  271. package/sdk/threedmodelassets.js.map +1 -1
  272. package/sdk/types/constdatetime.d.ts +3 -0
  273. package/sdk/types/constdatetime.d.ts.map +1 -0
  274. package/sdk/types/constdatetime.js +37 -0
  275. package/sdk/types/constdatetime.js.map +1 -0
  276. package/sdk/types/fp.d.ts +31 -0
  277. package/sdk/types/fp.d.ts.map +1 -0
  278. package/sdk/types/fp.js +38 -0
  279. package/sdk/types/fp.js.map +1 -0
  280. package/sdk/types/index.d.ts +1 -0
  281. package/sdk/types/index.d.ts.map +1 -1
  282. package/sdk/types/operations.d.ts +22 -8
  283. package/sdk/types/operations.d.ts.map +1 -1
  284. package/sdk/types/operations.js +64 -2
  285. package/sdk/types/operations.js.map +1 -1
  286. package/sdk/types/streams.d.ts +2 -0
  287. package/sdk/types/streams.d.ts.map +1 -0
  288. package/sdk/types/streams.js +19 -0
  289. package/sdk/types/streams.js.map +1 -0
  290. package/sdk/user.d.ts +0 -3
  291. package/sdk/user.d.ts.map +1 -1
  292. package/sdk/user.js +3 -93
  293. package/sdk/user.js.map +1 -1
  294. package/sdk/variation.d.ts +0 -3
  295. package/sdk/variation.d.ts.map +1 -1
  296. package/sdk/variation.js +11 -310
  297. package/sdk/variation.js.map +1 -1
  298. package/src/core.ts +13 -0
  299. package/src/funcs/datasetCreateDataset.ts +127 -0
  300. package/src/funcs/datasetDeleteDatasetById.ts +133 -0
  301. package/src/funcs/datasetGetDatasetById.ts +132 -0
  302. package/src/funcs/datasetUploadDatasetImage.ts +139 -0
  303. package/src/funcs/datasetUploadDatasetImageFromGen.ts +139 -0
  304. package/src/funcs/elementsListElements.ts +109 -0
  305. package/src/funcs/imageCreateGeneration.ts +128 -0
  306. package/src/funcs/imageDeleteGenerationById.ts +133 -0
  307. package/src/funcs/imageGetGenerationById.ts +133 -0
  308. package/src/funcs/imageGetGenerationsByUserId.ts +149 -0
  309. package/src/funcs/initImagesDeleteInitImageById.ts +133 -0
  310. package/src/funcs/initImagesGetInitImageById.ts +133 -0
  311. package/src/funcs/initImagesUploadCanvasInitImage.ts +128 -0
  312. package/src/funcs/initImagesUploadInitImage.ts +127 -0
  313. package/src/funcs/modelsCreateModel.ts +127 -0
  314. package/src/funcs/modelsDeleteModelById.ts +132 -0
  315. package/src/funcs/modelsGetModelById.ts +132 -0
  316. package/src/funcs/modelsListPlatformModels.ts +110 -0
  317. package/src/funcs/motionCreateSVDMotionGeneration.ts +129 -0
  318. package/src/funcs/pricingCalculatorPricingCalculator.ts +128 -0
  319. package/src/funcs/promptPromptImprove.ts +127 -0
  320. package/src/funcs/promptPromptRandom.ts +109 -0
  321. package/src/funcs/realtimeCanvasCreateLCMGeneration.ts +129 -0
  322. package/src/funcs/realtimeCanvasPerformAlchemyUpscaleLCM.ts +129 -0
  323. package/src/funcs/realtimeCanvasPerformInpaintingLCM.ts +129 -0
  324. package/src/funcs/realtimeCanvasPerformInstantRefine.ts +129 -0
  325. package/src/funcs/textureCreateTextureGeneration.ts +129 -0
  326. package/src/funcs/textureDeleteTextureGenerationById.ts +137 -0
  327. package/src/funcs/threeDModelAssetsDelete3DModelById.ts +136 -0
  328. package/src/funcs/threeDModelAssetsUploadModelAsset.ts +128 -0
  329. package/src/funcs/userGetUserSelf.ts +109 -0
  330. package/src/funcs/variationCreateUniversalUpscalerJob.ts +128 -0
  331. package/src/funcs/variationCreateVariationNoBG.ts +128 -0
  332. package/src/funcs/variationCreateVariationUnzoom.ts +129 -0
  333. package/src/funcs/variationCreateVariationUpscale.ts +129 -0
  334. package/src/funcs/variationGetVariationById.ts +133 -0
  335. package/src/index.ts +1 -0
  336. package/src/lib/config.ts +5 -3
  337. package/src/lib/dlv.ts +53 -0
  338. package/src/lib/files.ts +58 -0
  339. package/src/lib/http.ts +255 -438
  340. package/src/lib/logger.ts +9 -0
  341. package/src/lib/matchers.ts +305 -0
  342. package/src/lib/retries.ts +2 -41
  343. package/src/lib/schemas.ts +18 -0
  344. package/src/lib/sdks.ts +194 -35
  345. package/src/lib/security.ts +22 -1
  346. package/src/sdk/dataset.ts +11 -389
  347. package/src/sdk/elements.ts +3 -84
  348. package/src/sdk/image.ts +9 -319
  349. package/src/sdk/initimages.ts +9 -303
  350. package/src/sdk/models/errors/httpclienterrors.ts +62 -0
  351. package/src/sdk/models/errors/index.ts +1 -0
  352. package/src/sdk/models/errors/sdkvalidationerror.ts +8 -6
  353. package/src/sdk/models/operations/pricingcalculator.ts +7 -0
  354. package/src/sdk/models.ts +9 -292
  355. package/src/sdk/motion.ts +3 -103
  356. package/src/sdk/pricingcalculator.ts +3 -99
  357. package/src/sdk/prompt.ts +5 -152
  358. package/src/sdk/realtimecanvas.ts +9 -305
  359. package/src/sdk/sdk.ts +0 -29
  360. package/src/sdk/texture.ts +5 -175
  361. package/src/sdk/threedmodelassets.ts +5 -171
  362. package/src/sdk/types/constdatetime.ts +15 -0
  363. package/src/sdk/types/fp.ts +50 -0
  364. package/src/sdk/types/index.ts +1 -0
  365. package/src/sdk/types/operations.ts +81 -7
  366. package/src/sdk/types/streams.ts +21 -0
  367. package/src/sdk/user.ts +3 -84
  368. package/src/sdk/variation.ts +11 -374
package/src/lib/sdks.ts CHANGED
@@ -2,15 +2,30 @@
2
2
  * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
3
  */
4
4
 
5
- import { ResponseMatcher, HTTPClient, matchStatusCode } from "./http.js";
6
- import { SecurityState, resolveSecurity, resolveGlobalSecurity } from "./security.js";
5
+ import {
6
+ HTTPClient,
7
+ matchContentType,
8
+ matchStatusCode,
9
+ isAbortError,
10
+ isTimeoutError,
11
+ isConnectionError,
12
+ } from "./http.js";
13
+ import { SecurityState } from "./security.js";
7
14
  import { retry, RetryConfig } from "./retries.js";
8
- import { pathToFunc } from "./url.js";
15
+ import { Logger } from "./logger.js";
9
16
  import { encodeForm } from "./encodings.js";
10
17
  import { stringToBase64 } from "./base64.js";
11
- import { SDK_METADATA } from "./config.js";
18
+ import { SDKOptions, SDK_METADATA, serverURLFromOptions } from "./config.js";
12
19
  import { SDKHooks } from "../hooks/hooks.js";
13
20
  import { HookContext } from "../hooks/types.js";
21
+ import {
22
+ ConnectionError,
23
+ InvalidRequestError,
24
+ RequestAbortedError,
25
+ RequestTimeoutError,
26
+ UnexpectedClientError,
27
+ } from "../sdk/models/errors/httpclienterrors.js";
28
+ import { ERR, OK, Result } from "../sdk/types/fp.js";
14
29
 
15
30
  export type RequestOptions = {
16
31
  /**
@@ -58,32 +73,49 @@ const isBrowserLike =
58
73
  (typeof window === "object" && typeof window.document !== "undefined");
59
74
 
60
75
  export class ClientSDK {
61
- private readonly client: HTTPClient;
76
+ private readonly httpClient: HTTPClient;
62
77
  protected readonly baseURL: URL | null;
63
78
  protected readonly hooks$: SDKHooks;
79
+ protected readonly logger?: Logger | undefined;
80
+ public readonly options$: SDKOptions & { hooks?: SDKHooks };
64
81
 
65
- constructor(init: { client: HTTPClient; baseURL: URL | null; hooks: SDKHooks }) {
66
- const url = init.baseURL;
82
+ constructor(options: SDKOptions = {}) {
83
+ const opt = options as unknown;
84
+ if (
85
+ typeof opt === "object" &&
86
+ opt != null &&
87
+ "hooks" in opt &&
88
+ opt.hooks instanceof SDKHooks
89
+ ) {
90
+ this.hooks$ = opt.hooks;
91
+ } else {
92
+ this.hooks$ = new SDKHooks();
93
+ }
94
+ this.options$ = { ...options, hooks: this.hooks$ };
95
+
96
+ const url = serverURLFromOptions(options);
67
97
  if (url) {
68
98
  url.pathname = url.pathname.replace(/\/+$/, "") + "/";
69
99
  }
70
-
71
- this.hooks$ = init.hooks;
72
- const { baseURL, client } = this.hooks$.sdkInit({ baseURL: url, client: init.client });
100
+ const { baseURL, client } = this.hooks$.sdkInit({
101
+ baseURL: url,
102
+ client: options.httpClient || new HTTPClient(),
103
+ });
73
104
  this.baseURL = baseURL;
74
- this.client = client;
105
+ this.httpClient = client;
106
+ this.logger = options.debugLogger;
75
107
  }
76
108
 
77
- protected createRequest$(
109
+ public createRequest$(
78
110
  context: HookContext,
79
111
  conf: RequestConfig,
80
112
  options?: RequestOptions
81
- ): Request {
113
+ ): Result<Request, InvalidRequestError | UnexpectedClientError> {
82
114
  const { method, path, query, headers: opHeaders, security } = conf;
83
115
 
84
116
  const base = conf.baseURL ?? this.baseURL;
85
117
  if (!base) {
86
- throw new TypeError("No base URL provided for operation");
118
+ return ERR(new InvalidRequestError("No base URL provided for operation"));
87
119
  }
88
120
  const reqURL = new URL(base);
89
121
  const inputURL = new URL(path, reqURL);
@@ -149,20 +181,39 @@ export class ClientSDK {
149
181
  }
150
182
  }
151
183
 
152
- const input = this.hooks$.beforeCreateRequest(context, {
153
- url: reqURL,
154
- options: {
155
- ...fetchOptions,
156
- body: conf.body ?? null,
157
- headers,
158
- method,
159
- },
160
- });
184
+ if (conf.body instanceof ReadableStream) {
185
+ if (!fetchOptions) {
186
+ fetchOptions = {
187
+ // @ts-expect-error see https://github.com/node-fetch/node-fetch/issues/1769
188
+ duplex: "half",
189
+ };
190
+ } else {
191
+ // @ts-expect-error see https://github.com/node-fetch/node-fetch/issues/1769
192
+ fetchOptions.duplex = "half";
193
+ }
194
+ }
161
195
 
162
- return new Request(input.url, input.options);
196
+ let input;
197
+ try {
198
+ input = this.hooks$.beforeCreateRequest(context, {
199
+ url: reqURL,
200
+ options: {
201
+ ...fetchOptions,
202
+ body: conf.body ?? null,
203
+ headers,
204
+ method,
205
+ },
206
+ });
207
+ } catch (err: unknown) {
208
+ return ERR(
209
+ new UnexpectedClientError("Create request hook failed to execute", { cause: err })
210
+ );
211
+ }
212
+
213
+ return OK(new Request(input.url, input.options));
163
214
  }
164
215
 
165
- protected async do$(
216
+ public async do$(
166
217
  request: Request,
167
218
  options: {
168
219
  context: HookContext;
@@ -170,19 +221,25 @@ export class ClientSDK {
170
221
  retryConfig?: RetryConfig | undefined;
171
222
  retryCodes?: string[] | undefined;
172
223
  }
173
- ): Promise<Response> {
224
+ ): Promise<
225
+ Result<
226
+ Response,
227
+ RequestAbortedError | RequestTimeoutError | ConnectionError | UnexpectedClientError
228
+ >
229
+ > {
174
230
  const { context, errorCodes } = options;
175
231
  const retryConfig = options.retryConfig || { strategy: "none" };
176
232
  const retryCodes = options.retryCodes || [];
177
233
 
178
234
  return retry(
179
235
  async () => {
180
- const req = request.clone();
181
-
182
- let response = await this.client.request(
183
- await this.hooks$.beforeRequest(context, req)
236
+ const req = await this.hooks$.beforeRequest(context, request.clone());
237
+ await logRequest(this.logger, req).catch((e) =>
238
+ this.logger?.log("Failed to log request:", e)
184
239
  );
185
240
 
241
+ let response = await this.httpClient.request(req);
242
+
186
243
  if (matchStatusCode(response, errorCodes)) {
187
244
  const result = await this.hooks$.afterError(context, response, null);
188
245
  if (result.error) {
@@ -193,18 +250,120 @@ export class ClientSDK {
193
250
  response = await this.hooks$.afterSuccess(context, response);
194
251
  }
195
252
 
253
+ await logResponse(this.logger, response, req).catch((e) =>
254
+ this.logger?.log("Failed to log response:", e)
255
+ );
256
+
196
257
  return response;
197
258
  },
198
259
  { config: retryConfig, statusCodes: retryCodes }
260
+ ).then(
261
+ (r) => OK(r),
262
+ (err) => {
263
+ switch (true) {
264
+ case isAbortError(err):
265
+ return ERR(
266
+ new RequestAbortedError("Request aborted by client", { cause: err })
267
+ );
268
+ case isTimeoutError(err):
269
+ return ERR(new RequestTimeoutError("Request timed out", { cause: err }));
270
+ case isConnectionError(err):
271
+ return ERR(new ConnectionError("Unable to make request", { cause: err }));
272
+ default:
273
+ return ERR(
274
+ new UnexpectedClientError("Unexpected HTTP client error", {
275
+ cause: err,
276
+ })
277
+ );
278
+ }
279
+ }
199
280
  );
200
281
  }
282
+ }
283
+
284
+ const jsonLikeContentTypeRE = /^application\/(?:.{0,100}\+)?json/;
285
+ async function logRequest(logger: Logger | undefined, req: Request) {
286
+ if (!logger) {
287
+ return;
288
+ }
289
+
290
+ const contentType = req.headers.get("content-type");
291
+ const ct = contentType?.split(";")[0] || "";
292
+
293
+ logger.group(`> Request: ${req.method} ${req.url}`);
294
+
295
+ logger.group("Headers:");
296
+ for (const [k, v] of req.headers.entries()) {
297
+ logger.log(`${k}: ${v}`);
298
+ }
299
+ logger.groupEnd();
201
300
 
202
- protected matcher<Result>(): ResponseMatcher<Result> {
203
- return new ResponseMatcher<Result>();
301
+ logger.group("Body:");
302
+ switch (true) {
303
+ case jsonLikeContentTypeRE.test(ct):
304
+ logger.log(await req.clone().json());
305
+ break;
306
+ case ct.startsWith("text/"):
307
+ logger.log(await req.clone().text());
308
+ break;
309
+ case ct === "multipart/form-data": {
310
+ const body = await req.clone().formData();
311
+ for (const [k, v] of body) {
312
+ const vlabel = v instanceof Blob ? "<Blob>" : v;
313
+ logger.log(`${k}: ${vlabel}`);
314
+ }
315
+ break;
316
+ }
317
+ default:
318
+ logger.log(`<${contentType}>`);
319
+ break;
204
320
  }
321
+ logger.groupEnd();
322
+
323
+ logger.groupEnd();
324
+ }
205
325
 
206
- protected templateURLComponent = pathToFunc;
326
+ async function logResponse(logger: Logger | undefined, res: Response, req: Request) {
327
+ if (!logger) {
328
+ return;
329
+ }
330
+
331
+ const contentType = res.headers.get("content-type");
332
+ const ct = contentType?.split(";")[0] || "";
333
+
334
+ logger.group(`< Response: ${req.method} ${req.url}`);
335
+ logger.log("Status Code:", res.status, res.statusText);
336
+
337
+ logger.group("Headers:");
338
+ for (const [k, v] of res.headers.entries()) {
339
+ logger.log(`${k}: ${v}`);
340
+ }
341
+ logger.groupEnd();
342
+
343
+ logger.group("Body:");
344
+ switch (true) {
345
+ case matchContentType(res, "application/json") || jsonLikeContentTypeRE.test(ct):
346
+ logger.log(await res.clone().json());
347
+ break;
348
+ case matchContentType(res, "text/event-stream"):
349
+ logger.log(`<${contentType}>`);
350
+ break;
351
+ case matchContentType(res, "text/*"):
352
+ logger.log(await res.clone().text());
353
+ break;
354
+ case matchContentType(res, "multipart/form-data"): {
355
+ const body = await res.clone().formData();
356
+ for (const [k, v] of body) {
357
+ const vlabel = v instanceof Blob ? "<Blob>" : v;
358
+ logger.log(`${k}: ${vlabel}`);
359
+ }
360
+ break;
361
+ }
362
+ default:
363
+ logger.log(`<${contentType}>`);
364
+ break;
365
+ }
366
+ logger.groupEnd();
207
367
 
208
- protected resolveSecurity = resolveSecurity;
209
- protected resolveGlobalSecurity = resolveGlobalSecurity;
368
+ logger.groupEnd();
210
369
  }
@@ -71,13 +71,20 @@ type SecurityInputOAuth2ClientCredentials = {
71
71
  fieldName: string;
72
72
  };
73
73
 
74
+ type SecurityInputCustom = {
75
+ type: "http:custom";
76
+ value: any | null | undefined;
77
+ fieldName: string;
78
+ };
79
+
74
80
  export type SecurityInput =
75
81
  | SecurityInputBasic
76
82
  | SecurityInputBearer
77
83
  | SecurityInputAPIKey
78
84
  | SecurityInputOAuth2
79
85
  | SecurityInputOAuth2ClientCredentials
80
- | SecurityInputOIDC;
86
+ | SecurityInputOIDC
87
+ | SecurityInputCustom;
81
88
 
82
89
  export function resolveSecurity(...options: SecurityInput[][]): SecurityState | null {
83
90
  const state: SecurityState = {
@@ -93,6 +100,8 @@ export function resolveSecurity(...options: SecurityInput[][]): SecurityState |
93
100
  return false;
94
101
  } else if (o.type === "http:basic") {
95
102
  return o.value.username != null || o.value.password != null;
103
+ } else if (o.type === "http:custom") {
104
+ return null;
96
105
  } else if (typeof o.value === "string") {
97
106
  return !!o.value;
98
107
  } else {
@@ -126,6 +135,8 @@ export function resolveSecurity(...options: SecurityInput[][]): SecurityState |
126
135
  case "http:basic":
127
136
  applyBasic(state, spec);
128
137
  break;
138
+ case "http:custom":
139
+ break;
129
140
  case "http:bearer":
130
141
  applyBearer(state, spec);
131
142
  break;
@@ -180,3 +191,13 @@ export function resolveGlobalSecurity(
180
191
  },
181
192
  ]);
182
193
  }
194
+
195
+ export async function extractSecurity<T extends string | Record<string, unknown>>(
196
+ sec: T | (() => Promise<T>) | undefined
197
+ ): Promise<T | undefined> {
198
+ if (sec == null) {
199
+ return;
200
+ }
201
+
202
+ return typeof sec === "function" ? sec() : sec;
203
+ }