@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.
- package/README.md +130 -43
- package/docs/sdks/dataset/README.md +10 -5
- package/docs/sdks/{element → elements}/README.md +5 -4
- package/docs/sdks/{model → image}/README.md +32 -114
- package/docs/sdks/initimages/README.md +182 -0
- package/docs/sdks/models/README.md +180 -0
- package/docs/sdks/motion/README.md +50 -0
- package/docs/sdks/pricingcalculator/README.md +48 -0
- package/docs/sdks/prompt/README.md +4 -2
- package/docs/sdks/realtimecanvas/README.md +190 -0
- package/docs/sdks/texture/README.md +92 -0
- package/docs/sdks/{initimage → threedmodelassets}/README.md +17 -58
- package/docs/sdks/user/README.md +2 -1
- package/docs/sdks/variation/README.md +10 -5
- package/hooks/hooks.d.ts +2 -2
- package/hooks/hooks.d.ts.map +1 -1
- package/hooks/hooks.js +1 -1
- package/hooks/index.d.ts +2 -2
- package/hooks/index.d.ts.map +1 -1
- package/hooks/index.js +3 -3
- package/hooks/index.js.map +1 -1
- package/hooks/types.d.ts +1 -1
- package/hooks/types.d.ts.map +1 -1
- package/hooks/types.js +1 -1
- package/index.d.ts +2 -2
- package/index.d.ts.map +1 -1
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/lib/base64.js +1 -1
- package/lib/config.d.ts +6 -5
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +6 -6
- package/lib/config.js.map +1 -1
- package/lib/encodings.d.ts +16 -0
- package/lib/encodings.d.ts.map +1 -1
- package/lib/encodings.js +56 -24
- package/lib/encodings.js.map +1 -1
- package/lib/http.d.ts +56 -2
- package/lib/http.d.ts.map +1 -1
- package/lib/http.js +173 -4
- package/lib/http.js.map +1 -1
- package/lib/is-plain-object.d.ts +2 -0
- package/lib/is-plain-object.d.ts.map +1 -0
- package/lib/is-plain-object.js +42 -0
- package/lib/is-plain-object.js.map +1 -0
- package/lib/primitives.d.ts +16 -0
- package/lib/primitives.d.ts.map +1 -0
- package/lib/primitives.js +30 -0
- package/lib/primitives.js.map +1 -0
- package/lib/retries.js +1 -1
- package/lib/schemas.d.ts +4 -0
- package/lib/schemas.d.ts.map +1 -1
- package/lib/schemas.js +23 -27
- package/lib/schemas.js.map +1 -1
- package/lib/sdks.d.ts +30 -8
- package/lib/sdks.d.ts.map +1 -1
- package/lib/sdks.js +59 -29
- package/lib/sdks.js.map +1 -1
- package/lib/security.d.ts +1 -1
- package/lib/security.d.ts.map +1 -1
- package/lib/security.js +1 -1
- package/lib/url.js +1 -1
- package/package.json +2 -3
- package/sdk/dataset.d.ts +3 -3
- package/sdk/dataset.d.ts.map +1 -1
- package/sdk/dataset.js +100 -124
- package/sdk/dataset.js.map +1 -1
- package/sdk/{element.d.ts → elements.d.ts} +5 -5
- package/sdk/elements.d.ts.map +1 -0
- package/sdk/{element.js → elements.js} +28 -35
- package/sdk/elements.js.map +1 -0
- package/sdk/image.d.ts +36 -0
- package/sdk/image.d.ts.map +1 -0
- package/sdk/image.js +316 -0
- package/sdk/image.js.map +1 -0
- package/sdk/index.d.ts +1 -1
- package/sdk/index.d.ts.map +1 -1
- package/sdk/index.js +2 -2
- package/sdk/index.js.map +1 -1
- package/sdk/{initimage.d.ts → initimages.d.ts} +12 -5
- package/sdk/initimages.d.ts.map +1 -0
- package/sdk/initimages.js +304 -0
- package/sdk/initimages.js.map +1 -0
- package/sdk/models/errors/index.d.ts +2 -2
- package/sdk/models/errors/index.d.ts.map +1 -1
- package/sdk/models/errors/index.js +3 -3
- package/sdk/models/errors/index.js.map +1 -1
- package/sdk/models/errors/sdkerror.js +1 -1
- package/sdk/models/errors/sdkvalidationerror.js +1 -1
- package/sdk/models/operations/createdataset.d.ts +72 -40
- package/sdk/models/operations/createdataset.d.ts.map +1 -1
- package/sdk/models/operations/createdataset.js +101 -96
- package/sdk/models/operations/createdataset.js.map +1 -1
- package/sdk/models/operations/creategeneration.d.ts +155 -121
- package/sdk/models/operations/creategeneration.d.ts.map +1 -1
- package/sdk/models/operations/creategeneration.js +216 -280
- package/sdk/models/operations/creategeneration.js.map +1 -1
- package/sdk/models/operations/createlcmgeneration.d.ts +83 -61
- package/sdk/models/operations/createlcmgeneration.d.ts.map +1 -1
- package/sdk/models/operations/createlcmgeneration.js +110 -149
- package/sdk/models/operations/createlcmgeneration.js.map +1 -1
- package/sdk/models/operations/createmodel.d.ts +81 -57
- package/sdk/models/operations/createmodel.d.ts.map +1 -1
- package/sdk/models/operations/createmodel.js +120 -125
- package/sdk/models/operations/createmodel.js.map +1 -1
- package/sdk/models/operations/createsvdmotiongeneration.d.ts +76 -48
- package/sdk/models/operations/createsvdmotiongeneration.d.ts.map +1 -1
- package/sdk/models/operations/createsvdmotiongeneration.js +97 -116
- package/sdk/models/operations/createsvdmotiongeneration.js.map +1 -1
- package/sdk/models/operations/createtexturegeneration.d.ts +79 -54
- package/sdk/models/operations/createtexturegeneration.d.ts.map +1 -1
- package/sdk/models/operations/createtexturegeneration.js +125 -136
- package/sdk/models/operations/createtexturegeneration.js.map +1 -1
- package/sdk/models/operations/createuniversalupscalerjob.d.ts +79 -53
- package/sdk/models/operations/createuniversalupscalerjob.d.ts.map +1 -1
- package/sdk/models/operations/createuniversalupscalerjob.js +102 -125
- package/sdk/models/operations/createuniversalupscalerjob.js.map +1 -1
- package/sdk/models/operations/createvariationnobg.d.ts +73 -42
- package/sdk/models/operations/createvariationnobg.d.ts.map +1 -1
- package/sdk/models/operations/createvariationnobg.js +91 -96
- package/sdk/models/operations/createvariationnobg.js.map +1 -1
- package/sdk/models/operations/createvariationunzoom.d.ts +73 -42
- package/sdk/models/operations/createvariationunzoom.d.ts.map +1 -1
- package/sdk/models/operations/createvariationunzoom.js +91 -96
- package/sdk/models/operations/createvariationunzoom.js.map +1 -1
- package/sdk/models/operations/createvariationupscale.d.ts +72 -40
- package/sdk/models/operations/createvariationupscale.d.ts.map +1 -1
- package/sdk/models/operations/createvariationupscale.js +93 -96
- package/sdk/models/operations/createvariationupscale.js.map +1 -1
- package/sdk/models/operations/delete3dmodelbyid.d.ts +93 -52
- package/sdk/models/operations/delete3dmodelbyid.d.ts.map +1 -1
- package/sdk/models/operations/delete3dmodelbyid.js +128 -118
- package/sdk/models/operations/delete3dmodelbyid.js.map +1 -1
- package/sdk/models/operations/deletedatasetbyid.d.ts +71 -38
- package/sdk/models/operations/deletedatasetbyid.d.ts.map +1 -1
- package/sdk/models/operations/deletedatasetbyid.js +103 -96
- package/sdk/models/operations/deletedatasetbyid.js.map +1 -1
- package/sdk/models/operations/deletegenerationbyid.d.ts +71 -38
- package/sdk/models/operations/deletegenerationbyid.d.ts.map +1 -1
- package/sdk/models/operations/deletegenerationbyid.js +99 -94
- package/sdk/models/operations/deletegenerationbyid.js.map +1 -1
- package/sdk/models/operations/deleteinitimagebyid.d.ts +71 -38
- package/sdk/models/operations/deleteinitimagebyid.d.ts.map +1 -1
- package/sdk/models/operations/deleteinitimagebyid.js +99 -94
- package/sdk/models/operations/deleteinitimagebyid.js.map +1 -1
- package/sdk/models/operations/deletemodelbyid.d.ts +71 -38
- package/sdk/models/operations/deletemodelbyid.d.ts.map +1 -1
- package/sdk/models/operations/deletemodelbyid.js +99 -96
- package/sdk/models/operations/deletemodelbyid.js.map +1 -1
- package/sdk/models/operations/deletetexturegenerationbyid.d.ts +93 -52
- package/sdk/models/operations/deletetexturegenerationbyid.d.ts.map +1 -1
- package/sdk/models/operations/deletetexturegenerationbyid.js +132 -128
- package/sdk/models/operations/deletetexturegenerationbyid.js.map +1 -1
- package/sdk/models/operations/getdatasetbyid.d.ts +95 -60
- package/sdk/models/operations/getdatasetbyid.d.ts.map +1 -1
- package/sdk/models/operations/getdatasetbyid.js +140 -138
- package/sdk/models/operations/getdatasetbyid.js.map +1 -1
- package/sdk/models/operations/getgenerationbyid.d.ts +184 -159
- package/sdk/models/operations/getgenerationbyid.d.ts.map +1 -1
- package/sdk/models/operations/getgenerationbyid.js +284 -377
- package/sdk/models/operations/getgenerationbyid.js.map +1 -1
- package/sdk/models/operations/getgenerationsbyuserid.d.ts +186 -162
- package/sdk/models/operations/getgenerationsbyuserid.d.ts.map +1 -1
- package/sdk/models/operations/getgenerationsbyuserid.js +278 -381
- package/sdk/models/operations/getgenerationsbyuserid.js.map +1 -1
- package/sdk/models/operations/getinitimagebyid.d.ts +73 -42
- package/sdk/models/operations/getinitimagebyid.d.ts.map +1 -1
- package/sdk/models/operations/getinitimagebyid.js +107 -104
- package/sdk/models/operations/getinitimagebyid.js.map +1 -1
- package/sdk/models/operations/getmodelbyid.d.ts +83 -61
- package/sdk/models/operations/getmodelbyid.d.ts.map +1 -1
- package/sdk/models/operations/getmodelbyid.js +126 -141
- package/sdk/models/operations/getmodelbyid.js.map +1 -1
- package/sdk/models/operations/getuserself.d.ts +81 -58
- package/sdk/models/operations/getuserself.d.ts.map +1 -1
- package/sdk/models/operations/getuserself.js +119 -156
- package/sdk/models/operations/getuserself.js.map +1 -1
- package/sdk/models/operations/getvariationbyid.d.ts +76 -47
- package/sdk/models/operations/getvariationbyid.d.ts.map +1 -1
- package/sdk/models/operations/getvariationbyid.js +112 -113
- package/sdk/models/operations/getvariationbyid.js.map +1 -1
- package/sdk/models/operations/index.d.ts +36 -34
- package/sdk/models/operations/index.d.ts.map +1 -1
- package/sdk/models/operations/index.js +37 -35
- package/sdk/models/operations/index.js.map +1 -1
- package/sdk/models/operations/listelements.d.ts +63 -47
- package/sdk/models/operations/listelements.d.ts.map +1 -1
- package/sdk/models/operations/listelements.js +89 -103
- package/sdk/models/operations/listelements.js.map +1 -1
- package/sdk/models/operations/listplatformmodels.d.ts +77 -50
- package/sdk/models/operations/listplatformmodels.d.ts.map +1 -1
- package/sdk/models/operations/listplatformmodels.js +131 -122
- package/sdk/models/operations/listplatformmodels.js.map +1 -1
- package/sdk/models/operations/performalchemyupscalelcm.d.ts +88 -71
- package/sdk/models/operations/performalchemyupscalelcm.d.ts.map +1 -1
- package/sdk/models/operations/performalchemyupscalelcm.js +124 -175
- package/sdk/models/operations/performalchemyupscalelcm.js.map +1 -1
- package/sdk/models/operations/performinpaintinglcm.d.ts +84 -63
- package/sdk/models/operations/performinpaintinglcm.d.ts.map +1 -1
- package/sdk/models/operations/performinpaintinglcm.js +116 -153
- package/sdk/models/operations/performinpaintinglcm.js.map +1 -1
- package/sdk/models/operations/performinstantrefine.d.ts +83 -61
- package/sdk/models/operations/performinstantrefine.d.ts.map +1 -1
- package/sdk/models/operations/performinstantrefine.js +114 -149
- package/sdk/models/operations/performinstantrefine.js.map +1 -1
- package/sdk/models/operations/pricingcalculator.d.ts +476 -0
- package/sdk/models/operations/pricingcalculator.d.ts.map +1 -0
- package/sdk/models/operations/pricingcalculator.js +391 -0
- package/sdk/models/operations/pricingcalculator.js.map +1 -0
- package/sdk/models/operations/promptimprove.d.ts +72 -40
- package/sdk/models/operations/promptimprove.d.ts.map +1 -1
- package/sdk/models/operations/promptimprove.js +89 -96
- package/sdk/models/operations/promptimprove.js.map +1 -1
- package/sdk/models/operations/promptrandom.d.ts +55 -32
- package/sdk/models/operations/promptrandom.d.ts.map +1 -1
- package/sdk/models/operations/promptrandom.js +74 -82
- package/sdk/models/operations/promptrandom.js.map +1 -1
- package/sdk/models/operations/uploadcanvasinitimage.d.ts +140 -0
- package/sdk/models/operations/uploadcanvasinitimage.d.ts.map +1 -0
- package/sdk/models/operations/uploadcanvasinitimage.js +152 -0
- package/sdk/models/operations/uploadcanvasinitimage.js.map +1 -0
- package/sdk/models/operations/uploaddatasetimage.d.ts +92 -54
- package/sdk/models/operations/uploaddatasetimage.d.ts.map +1 -1
- package/sdk/models/operations/uploaddatasetimage.js +122 -130
- package/sdk/models/operations/uploaddatasetimage.js.map +1 -1
- package/sdk/models/operations/uploaddatasetimagefromgen.d.ts +89 -48
- package/sdk/models/operations/uploaddatasetimagefromgen.d.ts.map +1 -1
- package/sdk/models/operations/uploaddatasetimagefromgen.js +120 -118
- package/sdk/models/operations/uploaddatasetimagefromgen.js.map +1 -1
- package/sdk/models/operations/uploadinitimage.d.ts +74 -44
- package/sdk/models/operations/uploadinitimage.d.ts.map +1 -1
- package/sdk/models/operations/uploadinitimage.js +93 -108
- package/sdk/models/operations/uploadinitimage.js.map +1 -1
- package/sdk/models/operations/uploadmodelasset.d.ts +75 -46
- package/sdk/models/operations/uploadmodelasset.d.ts.map +1 -1
- package/sdk/models/operations/uploadmodelasset.js +95 -112
- package/sdk/models/operations/uploadmodelasset.js.map +1 -1
- package/sdk/models/shared/canvasrequesttype.d.ts +25 -0
- package/sdk/models/shared/canvasrequesttype.d.ts.map +1 -0
- package/sdk/models/shared/canvasrequesttype.js +56 -0
- package/sdk/models/shared/canvasrequesttype.js.map +1 -0
- package/sdk/models/shared/controlnetinput.d.ts +93 -0
- package/sdk/models/shared/controlnetinput.d.ts.map +1 -0
- package/sdk/models/shared/controlnetinput.js +107 -0
- package/sdk/models/shared/controlnetinput.js.map +1 -0
- package/sdk/models/shared/controlnettype.d.ts +16 -2
- package/sdk/models/shared/controlnettype.d.ts.map +1 -1
- package/sdk/models/shared/controlnettype.js +19 -4
- package/sdk/models/shared/controlnettype.js.map +1 -1
- package/sdk/models/shared/custommodeltype.d.ts +13 -1
- package/sdk/models/shared/custommodeltype.d.ts.map +1 -1
- package/sdk/models/shared/custommodeltype.js +16 -3
- package/sdk/models/shared/custommodeltype.js.map +1 -1
- package/sdk/models/shared/elementinput.d.ts +18 -10
- package/sdk/models/shared/elementinput.d.ts.map +1 -1
- package/sdk/models/shared/elementinput.js +19 -24
- package/sdk/models/shared/elementinput.js.map +1 -1
- package/sdk/models/shared/index.d.ts +15 -12
- package/sdk/models/shared/index.d.ts.map +1 -1
- package/sdk/models/shared/index.js +16 -13
- package/sdk/models/shared/index.js.map +1 -1
- package/sdk/models/shared/jobstatus.d.ts +13 -1
- package/sdk/models/shared/jobstatus.d.ts.map +1 -1
- package/sdk/models/shared/jobstatus.js +16 -3
- package/sdk/models/shared/jobstatus.js.map +1 -1
- package/sdk/models/shared/lcmgenerationstyle.d.ts +13 -1
- package/sdk/models/shared/lcmgenerationstyle.d.ts.map +1 -1
- package/sdk/models/shared/lcmgenerationstyle.js +16 -3
- package/sdk/models/shared/lcmgenerationstyle.js.map +1 -1
- package/sdk/models/shared/pricingcalculatorservices.d.ts +28 -0
- package/sdk/models/shared/pricingcalculatorservices.d.ts.map +1 -0
- package/sdk/models/shared/pricingcalculatorservices.js +59 -0
- package/sdk/models/shared/pricingcalculatorservices.js.map +1 -0
- package/sdk/models/shared/sdgenerationschedulers.d.ts +13 -1
- package/sdk/models/shared/sdgenerationschedulers.d.ts.map +1 -1
- package/sdk/models/shared/sdgenerationschedulers.js +16 -3
- package/sdk/models/shared/sdgenerationschedulers.js.map +1 -1
- package/sdk/models/shared/sdgenerationstyle.d.ts +13 -1
- package/sdk/models/shared/sdgenerationstyle.d.ts.map +1 -1
- package/sdk/models/shared/sdgenerationstyle.js +16 -3
- package/sdk/models/shared/sdgenerationstyle.js.map +1 -1
- package/sdk/models/shared/sdversions.d.ts +13 -1
- package/sdk/models/shared/sdversions.d.ts.map +1 -1
- package/sdk/models/shared/sdversions.js +16 -3
- package/sdk/models/shared/sdversions.js.map +1 -1
- package/sdk/models/shared/security.d.ts +17 -8
- package/sdk/models/shared/security.d.ts.map +1 -1
- package/sdk/models/shared/security.js +17 -20
- package/sdk/models/shared/security.js.map +1 -1
- package/sdk/models/shared/strength.d.ts +13 -1
- package/sdk/models/shared/strength.d.ts.map +1 -1
- package/sdk/models/shared/strength.js +16 -3
- package/sdk/models/shared/strength.js.map +1 -1
- package/sdk/models/shared/universalupscalerstyle.d.ts +13 -1
- package/sdk/models/shared/universalupscalerstyle.d.ts.map +1 -1
- package/sdk/models/shared/universalupscalerstyle.js +16 -3
- package/sdk/models/shared/universalupscalerstyle.js.map +1 -1
- package/sdk/models/shared/variationtype.d.ts +13 -1
- package/sdk/models/shared/variationtype.d.ts.map +1 -1
- package/sdk/models/shared/variationtype.js +16 -3
- package/sdk/models/shared/variationtype.js.map +1 -1
- package/sdk/{model.d.ts → models.d.ts} +5 -19
- package/sdk/models.d.ts.map +1 -0
- package/sdk/models.js +299 -0
- package/sdk/models.js.map +1 -0
- package/sdk/motion.d.ts +15 -0
- package/sdk/motion.d.ts.map +1 -0
- package/sdk/motion.js +121 -0
- package/sdk/motion.js.map +1 -0
- package/sdk/pricingcalculator.d.ts +15 -0
- package/sdk/pricingcalculator.d.ts.map +1 -0
- package/sdk/pricingcalculator.js +119 -0
- package/sdk/pricingcalculator.js.map +1 -0
- package/sdk/prompt.d.ts +3 -3
- package/sdk/prompt.d.ts.map +1 -1
- package/sdk/prompt.js +44 -55
- package/sdk/prompt.js.map +1 -1
- package/sdk/realtimecanvas.d.ts +36 -0
- package/sdk/realtimecanvas.d.ts.map +1 -0
- package/sdk/realtimecanvas.js +296 -0
- package/sdk/realtimecanvas.js.map +1 -0
- package/sdk/sdk.d.ts +33 -18
- package/sdk/sdk.d.ts.map +1 -1
- package/sdk/sdk.js +55 -30
- package/sdk/sdk.js.map +1 -1
- package/sdk/texture.d.ts +22 -0
- package/sdk/texture.d.ts.map +1 -0
- package/sdk/texture.js +186 -0
- package/sdk/texture.js.map +1 -0
- package/sdk/threedmodelassets.d.ts +22 -0
- package/sdk/threedmodelassets.d.ts.map +1 -0
- package/sdk/threedmodelassets.js +184 -0
- package/sdk/threedmodelassets.js.map +1 -0
- package/sdk/types/blobs.js +1 -1
- package/sdk/types/enums.d.ts +12 -0
- package/sdk/types/enums.d.ts.map +1 -0
- package/sdk/types/enums.js +11 -0
- package/sdk/types/enums.js.map +1 -0
- package/sdk/types/index.d.ts +6 -4
- package/sdk/types/index.d.ts.map +1 -1
- package/sdk/types/index.js +11 -9
- package/sdk/types/index.js.map +1 -1
- package/sdk/types/operations.js +1 -1
- package/sdk/types/rfcdate.js +1 -1
- package/sdk/user.d.ts +3 -3
- package/sdk/user.d.ts.map +1 -1
- package/sdk/user.js +25 -32
- package/sdk/user.js.map +1 -1
- package/sdk/variation.d.ts +3 -3
- package/sdk/variation.d.ts.map +1 -1
- package/sdk/variation.js +99 -127
- package/sdk/variation.js.map +1 -1
- package/src/hooks/hooks.ts +3 -3
- package/src/hooks/index.ts +3 -3
- package/src/hooks/types.ts +2 -2
- package/src/index.ts +3 -3
- package/src/lib/base64.ts +1 -1
- package/src/lib/config.ts +8 -7
- package/src/lib/encodings.ts +73 -14
- package/src/lib/http.ts +446 -203
- package/src/lib/is-plain-object.ts +43 -0
- package/src/lib/primitives.ts +40 -0
- package/src/lib/retries.ts +1 -1
- package/src/lib/schemas.ts +38 -4
- package/src/lib/sdks.ts +89 -27
- package/src/lib/security.ts +2 -2
- package/src/lib/url.ts +1 -1
- package/src/sdk/dataset.ts +105 -154
- package/src/sdk/{element.ts → elements.ts} +23 -36
- package/src/sdk/image.ts +377 -0
- package/src/sdk/index.ts +2 -2
- package/src/sdk/{initimage.ts → initimages.ts} +140 -93
- package/src/sdk/models/errors/index.ts +3 -3
- package/src/sdk/models/errors/sdkerror.ts +1 -1
- package/src/sdk/models/errors/sdkvalidationerror.ts +1 -1
- package/src/sdk/models/operations/createdataset.ts +161 -135
- package/src/sdk/models/operations/creategeneration.ts +351 -395
- package/src/sdk/models/operations/createlcmgeneration.ts +182 -209
- package/src/sdk/models/operations/createmodel.ts +186 -174
- package/src/sdk/models/operations/createsvdmotiongeneration.ts +163 -182
- package/src/sdk/models/operations/createtexturegeneration.ts +194 -205
- package/src/sdk/models/operations/createuniversalupscalerjob.ts +174 -199
- package/src/sdk/models/operations/createvariationnobg.ts +161 -145
- package/src/sdk/models/operations/createvariationunzoom.ts +158 -153
- package/src/sdk/models/operations/createvariationupscale.ts +162 -162
- package/src/sdk/models/operations/delete3dmodelbyid.ts +210 -169
- package/src/sdk/models/operations/deletedatasetbyid.ts +169 -134
- package/src/sdk/models/operations/deletegenerationbyid.ts +162 -137
- package/src/sdk/models/operations/deleteinitimagebyid.ts +159 -137
- package/src/sdk/models/operations/deletemodelbyid.ts +161 -133
- package/src/sdk/models/operations/deletetexturegenerationbyid.ts +214 -211
- package/src/sdk/models/operations/getdatasetbyid.ts +218 -189
- package/src/sdk/models/operations/getgenerationbyid.ts +460 -553
- package/src/sdk/models/operations/getgenerationsbyuserid.ts +458 -601
- package/src/sdk/models/operations/getinitimagebyid.ts +175 -145
- package/src/sdk/models/operations/getmodelbyid.ts +197 -194
- package/src/sdk/models/operations/getuserself.ts +177 -207
- package/src/sdk/models/operations/getvariationbyid.ts +182 -163
- package/src/sdk/models/operations/index.ts +37 -35
- package/src/sdk/models/operations/listelements.ts +140 -149
- package/src/sdk/models/operations/listplatformmodels.ts +201 -179
- package/src/sdk/models/operations/performalchemyupscalelcm.ts +202 -269
- package/src/sdk/models/operations/performinpaintinglcm.ts +189 -227
- package/src/sdk/models/operations/performinstantrefine.ts +186 -221
- package/src/sdk/models/operations/pricingcalculator.ts +883 -0
- package/src/sdk/models/operations/promptimprove.ts +158 -137
- package/src/sdk/models/operations/promptrandom.ts +126 -122
- package/src/sdk/models/operations/uploadcanvasinitimage.ts +256 -0
- package/src/sdk/models/operations/uploaddatasetimage.ts +201 -178
- package/src/sdk/models/operations/uploaddatasetimagefromgen.ts +197 -188
- package/src/sdk/models/operations/uploadinitimage.ts +164 -153
- package/src/sdk/models/operations/uploadmodelasset.ts +167 -159
- package/src/sdk/models/shared/canvasrequesttype.ts +34 -0
- package/src/sdk/models/shared/controlnetinput.ts +130 -0
- package/src/sdk/models/shared/controlnettype.ts +21 -3
- package/src/sdk/models/shared/custommodeltype.ts +17 -2
- package/src/sdk/models/shared/elementinput.ts +30 -32
- package/src/sdk/models/shared/index.ts +16 -13
- package/src/sdk/models/shared/jobstatus.ts +16 -2
- package/src/sdk/models/shared/lcmgenerationstyle.ts +17 -2
- package/src/sdk/models/shared/pricingcalculatorservices.ts +39 -0
- package/src/sdk/models/shared/sdgenerationschedulers.ts +17 -2
- package/src/sdk/models/shared/sdgenerationstyle.ts +17 -2
- package/src/sdk/models/shared/sdversions.ts +18 -2
- package/src/sdk/models/shared/security.ts +24 -26
- package/src/sdk/models/shared/strength.ts +16 -2
- package/src/sdk/models/shared/universalupscalerstyle.ts +17 -2
- package/src/sdk/models/shared/variationtype.ts +18 -2
- package/src/sdk/models.ts +347 -0
- package/src/sdk/motion.ts +123 -0
- package/src/sdk/pricingcalculator.ts +119 -0
- package/src/sdk/prompt.ts +43 -65
- package/src/sdk/realtimecanvas.ts +361 -0
- package/src/sdk/sdk.ts +55 -25
- package/src/sdk/texture.ts +208 -0
- package/src/sdk/threedmodelassets.ts +204 -0
- package/src/sdk/types/blobs.ts +1 -1
- package/src/sdk/types/enums.ts +16 -0
- package/src/sdk/types/index.ts +7 -5
- package/src/sdk/types/operations.ts +1 -1
- package/src/sdk/types/rfcdate.ts +1 -1
- package/src/sdk/user.ts +22 -35
- package/src/sdk/variation.ts +106 -157
- package/docs/sdks/generation/README.md +0 -485
- package/sdk/element.d.ts.map +0 -1
- package/sdk/element.js.map +0 -1
- package/sdk/generation.d.ts +0 -85
- package/sdk/generation.d.ts.map +0 -1
- package/sdk/generation.js +0 -799
- package/sdk/generation.js.map +0 -1
- package/sdk/initimage.d.ts.map +0 -1
- package/sdk/initimage.js +0 -261
- package/sdk/initimage.js.map +0 -1
- package/sdk/model.d.ts.map +0 -1
- package/sdk/model.js +0 -454
- package/sdk/model.js.map +0 -1
- package/src/sdk/generation.ts +0 -1057
- 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://
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
70
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
204
|
-
|
|
168
|
+
let contentType = response.headers.get("content-type")?.trim() || "application/octet-stream";
|
|
169
|
+
contentType = contentType.toLowerCase();
|
|
205
170
|
|
|
206
|
-
const
|
|
171
|
+
const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
|
|
172
|
+
const [wantType = "", ...wantParams] = wantParts;
|
|
207
173
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
219
|
-
const
|
|
178
|
+
const gotParts = contentType.split(mediaParamSeparator);
|
|
179
|
+
const [gotType = "", ...gotParams] = gotParts;
|
|
220
180
|
|
|
221
|
-
|
|
222
|
-
|
|
181
|
+
const [type = "", subtype = ""] = gotType.split("/");
|
|
182
|
+
if (!type || !subtype) {
|
|
183
|
+
return false;
|
|
223
184
|
}
|
|
224
185
|
|
|
225
|
-
if (
|
|
226
|
-
|
|
186
|
+
if (
|
|
187
|
+
wantType !== "*/*" &&
|
|
188
|
+
gotType !== wantType &&
|
|
189
|
+
`${type}/*` !== wantType &&
|
|
190
|
+
`*/${subtype}` !== wantType
|
|
191
|
+
) {
|
|
192
|
+
return false;
|
|
227
193
|
}
|
|
228
194
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
throw new Error("Invalid status code range");
|
|
195
|
+
if (gotParams.length < wantParams.length) {
|
|
196
|
+
return false;
|
|
232
197
|
}
|
|
233
198
|
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
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
|
|
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
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
response: Response,
|
|
245
|
+
code: StatusCodePredicate,
|
|
246
|
+
contentTypePattern: string
|
|
247
247
|
): boolean {
|
|
248
|
-
|
|
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
|
-
|
|
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
|
-
|
|
259
|
-
|
|
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
|
-
|
|
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
|
}
|