@nodaro/sdk 2.29.0 → 2.32.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.
- package/README.md +31 -0
- package/dist/chunk-2DZWWIJ4.cjs +32 -0
- package/dist/chunk-2DZWWIJ4.cjs.map +1 -0
- package/dist/chunk-34PU2DAT.cjs +118 -0
- package/dist/chunk-34PU2DAT.cjs.map +1 -0
- package/dist/chunk-37Y5QAVA.js +3 -0
- package/dist/chunk-37Y5QAVA.js.map +1 -0
- package/dist/chunk-37YCKZX4.cjs +4 -0
- package/dist/chunk-37YCKZX4.cjs.map +1 -0
- package/dist/chunk-3B47IHB3.cjs +65 -0
- package/dist/chunk-3B47IHB3.cjs.map +1 -0
- package/dist/chunk-3BELHJBN.cjs +4 -0
- package/dist/chunk-3BELHJBN.cjs.map +1 -0
- package/dist/chunk-3PPSGM5X.js +3 -0
- package/dist/chunk-3PPSGM5X.js.map +1 -0
- package/dist/chunk-3QBH2VE2.cjs +80 -0
- package/dist/chunk-3QBH2VE2.cjs.map +1 -0
- package/dist/chunk-3QFTP5P5.js +102 -0
- package/dist/chunk-3QFTP5P5.js.map +1 -0
- package/dist/chunk-43FVH6LJ.cjs +123 -0
- package/dist/chunk-43FVH6LJ.cjs.map +1 -0
- package/dist/chunk-43NO4SGC.cjs +4 -0
- package/dist/chunk-43NO4SGC.cjs.map +1 -0
- package/dist/chunk-45CK55BH.cjs +4 -0
- package/dist/chunk-45CK55BH.cjs.map +1 -0
- package/dist/chunk-4CXB7RA6.js +104 -0
- package/dist/chunk-4CXB7RA6.js.map +1 -0
- package/dist/chunk-4NLVBYMW.js +280 -0
- package/dist/chunk-4NLVBYMW.js.map +1 -0
- package/dist/chunk-4WRDR4GN.js +102 -0
- package/dist/chunk-4WRDR4GN.js.map +1 -0
- package/dist/chunk-4WWSHV5G.cjs +4 -0
- package/dist/chunk-4WWSHV5G.cjs.map +1 -0
- package/dist/chunk-53SXNN3A.js +80 -0
- package/dist/chunk-53SXNN3A.js.map +1 -0
- package/dist/chunk-5ALNFATQ.cjs +27 -0
- package/dist/chunk-5ALNFATQ.cjs.map +1 -0
- package/dist/chunk-5UQNMNUE.cjs +4 -0
- package/dist/chunk-5UQNMNUE.cjs.map +1 -0
- package/dist/chunk-65E3JBFZ.js +52 -0
- package/dist/chunk-65E3JBFZ.js.map +1 -0
- package/dist/chunk-6ECW23GA.js +214 -0
- package/dist/chunk-6ECW23GA.js.map +1 -0
- package/dist/chunk-6JFNBAKV.js +3 -0
- package/dist/chunk-6JFNBAKV.js.map +1 -0
- package/dist/chunk-6OC6OKLY.cjs +4 -0
- package/dist/chunk-6OC6OKLY.cjs.map +1 -0
- package/dist/chunk-6OGGJQVA.js +25 -0
- package/dist/chunk-6OGGJQVA.js.map +1 -0
- package/dist/chunk-7A7HYFGM.js +3 -0
- package/dist/chunk-7A7HYFGM.js.map +1 -0
- package/dist/chunk-7CK6I4CT.cjs +16 -0
- package/dist/chunk-7CK6I4CT.cjs.map +1 -0
- package/dist/chunk-7LSFG2AF.js +194 -0
- package/dist/chunk-7LSFG2AF.js.map +1 -0
- package/dist/chunk-7MYKT2L4.cjs +4 -0
- package/dist/chunk-7MYKT2L4.cjs.map +1 -0
- package/dist/chunk-7QOCWJKD.cjs +25 -0
- package/dist/chunk-7QOCWJKD.cjs.map +1 -0
- package/dist/chunk-A2ZAFAWC.cjs +4 -0
- package/dist/chunk-A2ZAFAWC.cjs.map +1 -0
- package/dist/chunk-A3S55XGF.cjs +54 -0
- package/dist/chunk-A3S55XGF.cjs.map +1 -0
- package/dist/chunk-A3THLBFG.js +3 -0
- package/dist/chunk-A3THLBFG.js.map +1 -0
- package/dist/chunk-AJVSMNPZ.js +78 -0
- package/dist/chunk-AJVSMNPZ.js.map +1 -0
- package/dist/chunk-ALSLZG3U.js +124 -0
- package/dist/chunk-ALSLZG3U.js.map +1 -0
- package/dist/chunk-ALUUBPDG.cjs +4 -0
- package/dist/chunk-ALUUBPDG.cjs.map +1 -0
- package/dist/chunk-AO3W45LT.cjs +4 -0
- package/dist/chunk-AO3W45LT.cjs.map +1 -0
- package/dist/chunk-AUDHV3OE.js +3 -0
- package/dist/chunk-AUDHV3OE.js.map +1 -0
- package/dist/chunk-B7RG6AUQ.cjs +216 -0
- package/dist/chunk-B7RG6AUQ.cjs.map +1 -0
- package/dist/chunk-BAL576G2.cjs +4 -0
- package/dist/chunk-BAL576G2.cjs.map +1 -0
- package/dist/chunk-BKP6F2IX.js +3 -0
- package/dist/chunk-BKP6F2IX.js.map +1 -0
- package/dist/chunk-BLA44UCM.js +32 -0
- package/dist/chunk-BLA44UCM.js.map +1 -0
- package/dist/chunk-BPWUWUZ3.cjs +20 -0
- package/dist/chunk-BPWUWUZ3.cjs.map +1 -0
- package/dist/chunk-BRV7Z4GD.cjs +17 -0
- package/dist/chunk-BRV7Z4GD.cjs.map +1 -0
- package/dist/chunk-BU5A6K4C.js +122 -0
- package/dist/chunk-BU5A6K4C.js.map +1 -0
- package/dist/chunk-C22RJDW3.js +3 -0
- package/dist/chunk-C22RJDW3.js.map +1 -0
- package/dist/chunk-CGNVHN4V.js +3 -0
- package/dist/chunk-CGNVHN4V.js.map +1 -0
- package/dist/chunk-CJFIOVBA.js +3 -0
- package/dist/chunk-CJFIOVBA.js.map +1 -0
- package/dist/chunk-CJLLIVSB.cjs +4 -0
- package/dist/chunk-CJLLIVSB.cjs.map +1 -0
- package/dist/chunk-CK3AMMSC.js +194 -0
- package/dist/chunk-CK3AMMSC.js.map +1 -0
- package/dist/chunk-COCKKMNP.cjs +205 -0
- package/dist/chunk-COCKKMNP.cjs.map +1 -0
- package/dist/chunk-CR5E2SF3.cjs +212 -0
- package/dist/chunk-CR5E2SF3.cjs.map +1 -0
- package/dist/chunk-CRCPRZFN.js +3 -0
- package/dist/chunk-CRCPRZFN.js.map +1 -0
- package/dist/chunk-CYRFD6KR.cjs +4 -0
- package/dist/chunk-CYRFD6KR.cjs.map +1 -0
- package/dist/chunk-D3PW7AHZ.js +3 -0
- package/dist/chunk-D3PW7AHZ.js.map +1 -0
- package/dist/chunk-DKEYSJCE.cjs +82 -0
- package/dist/chunk-DKEYSJCE.cjs.map +1 -0
- package/dist/chunk-DPSMVOM3.js +15 -0
- package/dist/chunk-DPSMVOM3.js.map +1 -0
- package/dist/chunk-E2ZXHS6E.js +20 -0
- package/dist/chunk-E2ZXHS6E.js.map +1 -0
- package/dist/chunk-E37CVHWW.js +33 -0
- package/dist/chunk-E37CVHWW.js.map +1 -0
- package/dist/chunk-E5BM4BLO.js +78 -0
- package/dist/chunk-E5BM4BLO.js.map +1 -0
- package/dist/chunk-EHRWTYGR.cjs +4 -0
- package/dist/chunk-EHRWTYGR.cjs.map +1 -0
- package/dist/chunk-EJSGJDZY.js +212 -0
- package/dist/chunk-EJSGJDZY.js.map +1 -0
- package/dist/chunk-ELSOVJPF.js +3 -0
- package/dist/chunk-ELSOVJPF.js.map +1 -0
- package/dist/chunk-ERLXU47J.js +29 -0
- package/dist/chunk-ERLXU47J.js.map +1 -0
- package/dist/chunk-ES2E65HT.js +3 -0
- package/dist/chunk-ES2E65HT.js.map +1 -0
- package/dist/chunk-EXLAHZKF.js +3 -0
- package/dist/chunk-EXLAHZKF.js.map +1 -0
- package/dist/chunk-FB3S2FON.cjs +233 -0
- package/dist/chunk-FB3S2FON.cjs.map +1 -0
- package/dist/chunk-FHEYAW5H.js +3 -0
- package/dist/chunk-FHEYAW5H.js.map +1 -0
- package/dist/chunk-GA4LZZKQ.cjs +104 -0
- package/dist/chunk-GA4LZZKQ.cjs.map +1 -0
- package/dist/chunk-GAZJ2PA3.js +3 -0
- package/dist/chunk-GAZJ2PA3.js.map +1 -0
- package/dist/chunk-GB6C5OEZ.cjs +32 -0
- package/dist/chunk-GB6C5OEZ.cjs.map +1 -0
- package/dist/chunk-GB724HW2.cjs +106 -0
- package/dist/chunk-GB724HW2.cjs.map +1 -0
- package/dist/chunk-GD24ZRFD.js +3 -0
- package/dist/chunk-GD24ZRFD.js.map +1 -0
- package/dist/chunk-GI7LROLL.cjs +4 -0
- package/dist/chunk-GI7LROLL.cjs.map +1 -0
- package/dist/chunk-GRFLPEM2.cjs +16 -0
- package/dist/chunk-GRFLPEM2.cjs.map +1 -0
- package/dist/chunk-GVIFLUYZ.cjs +40 -0
- package/dist/chunk-GVIFLUYZ.cjs.map +1 -0
- package/dist/chunk-GWCOKNST.js +228 -0
- package/dist/chunk-GWCOKNST.js.map +1 -0
- package/dist/chunk-H7VQTG4M.js +35 -0
- package/dist/chunk-H7VQTG4M.js.map +1 -0
- package/dist/chunk-HAKYPZLB.cjs +242 -0
- package/dist/chunk-HAKYPZLB.cjs.map +1 -0
- package/dist/chunk-HFBR6G36.js +3 -0
- package/dist/chunk-HFBR6G36.js.map +1 -0
- package/dist/chunk-HGCVWOGK.cjs +209 -0
- package/dist/chunk-HGCVWOGK.cjs.map +1 -0
- package/dist/chunk-HLHR3R4P.js +3 -0
- package/dist/chunk-HLHR3R4P.js.map +1 -0
- package/dist/chunk-HRXXGGSJ.js +3 -0
- package/dist/chunk-HRXXGGSJ.js.map +1 -0
- package/dist/chunk-I3TYBAOX.js +3 -0
- package/dist/chunk-I3TYBAOX.js.map +1 -0
- package/dist/chunk-I4A5VJRL.js +352 -0
- package/dist/chunk-I4A5VJRL.js.map +1 -0
- package/dist/chunk-I6CXC345.js +102 -0
- package/dist/chunk-I6CXC345.js.map +1 -0
- package/dist/chunk-IGOPUMEX.cjs +4 -0
- package/dist/chunk-IGOPUMEX.cjs.map +1 -0
- package/dist/chunk-IHKIYVZQ.js +30 -0
- package/dist/chunk-IHKIYVZQ.js.map +1 -0
- package/dist/chunk-IMC2M5YM.cjs +12 -0
- package/dist/chunk-IMC2M5YM.cjs.map +1 -0
- package/dist/chunk-IQ6KWSXP.js +3 -0
- package/dist/chunk-IQ6KWSXP.js.map +1 -0
- package/dist/chunk-IS26FJO7.cjs +4 -0
- package/dist/chunk-IS26FJO7.cjs.map +1 -0
- package/dist/chunk-J4WFSKY6.js +50 -0
- package/dist/chunk-J4WFSKY6.js.map +1 -0
- package/dist/chunk-J5LGGCAS.cjs +126 -0
- package/dist/chunk-J5LGGCAS.cjs.map +1 -0
- package/dist/chunk-JDEZHITT.js +43 -0
- package/dist/chunk-JDEZHITT.js.map +1 -0
- package/dist/chunk-JGS6YBDW.js +260 -0
- package/dist/chunk-JGS6YBDW.js.map +1 -0
- package/dist/chunk-JMOKD6ZP.js +46 -0
- package/dist/chunk-JMOKD6ZP.js.map +1 -0
- package/dist/chunk-JOX5BJ6K.cjs +4 -0
- package/dist/chunk-JOX5BJ6K.cjs.map +1 -0
- package/dist/chunk-JTAW54UM.js +116 -0
- package/dist/chunk-JTAW54UM.js.map +1 -0
- package/dist/chunk-K4RQOSJH.js +203 -0
- package/dist/chunk-K4RQOSJH.js.map +1 -0
- package/dist/chunk-KAIE6WJB.cjs +4 -0
- package/dist/chunk-KAIE6WJB.cjs.map +1 -0
- package/dist/chunk-KEDPGWIK.cjs +4 -0
- package/dist/chunk-KEDPGWIK.cjs.map +1 -0
- package/dist/chunk-KG4R454Z.js +18 -0
- package/dist/chunk-KG4R454Z.js.map +1 -0
- package/dist/chunk-KGKCAGRD.cjs +22 -0
- package/dist/chunk-KGKCAGRD.cjs.map +1 -0
- package/dist/chunk-KNMW722T.cjs +48 -0
- package/dist/chunk-KNMW722T.cjs.map +1 -0
- package/dist/chunk-KTTL7BND.cjs +4 -0
- package/dist/chunk-KTTL7BND.cjs.map +1 -0
- package/dist/chunk-KXEWTYS4.cjs +80 -0
- package/dist/chunk-KXEWTYS4.cjs.map +1 -0
- package/dist/chunk-KZQKFBRN.js +3 -0
- package/dist/chunk-KZQKFBRN.js.map +1 -0
- package/dist/chunk-LAWYFC4G.cjs +37 -0
- package/dist/chunk-LAWYFC4G.cjs.map +1 -0
- package/dist/chunk-LHRQXWI5.js +3 -0
- package/dist/chunk-LHRQXWI5.js.map +1 -0
- package/dist/chunk-LKH5M44B.cjs +114 -0
- package/dist/chunk-LKH5M44B.cjs.map +1 -0
- package/dist/chunk-LLNNHLCE.cjs +4 -0
- package/dist/chunk-LLNNHLCE.cjs.map +1 -0
- package/dist/chunk-LWZLWSXD.cjs +4 -0
- package/dist/chunk-LWZLWSXD.cjs.map +1 -0
- package/dist/chunk-M6Y5TOYE.js +3 -0
- package/dist/chunk-M6Y5TOYE.js.map +1 -0
- package/dist/chunk-MBFUMWI5.cjs +31 -0
- package/dist/chunk-MBFUMWI5.cjs.map +1 -0
- package/dist/chunk-MEKI37WI.js +3 -0
- package/dist/chunk-MEKI37WI.js.map +1 -0
- package/dist/chunk-MQ74AKA2.cjs +200 -0
- package/dist/chunk-MQ74AKA2.cjs.map +1 -0
- package/dist/chunk-N6GLZOE4.cjs +282 -0
- package/dist/chunk-N6GLZOE4.cjs.map +1 -0
- package/dist/chunk-NBVARNVA.cjs +38 -0
- package/dist/chunk-NBVARNVA.cjs.map +1 -0
- package/dist/chunk-NCCBS6GU.js +42 -0
- package/dist/chunk-NCCBS6GU.js.map +1 -0
- package/dist/chunk-NGKODS3J.cjs +52 -0
- package/dist/chunk-NGKODS3J.cjs.map +1 -0
- package/dist/chunk-NJVSKUL2.cjs +4 -0
- package/dist/chunk-NJVSKUL2.cjs.map +1 -0
- package/dist/chunk-NLQQHJ25.cjs +104 -0
- package/dist/chunk-NLQQHJ25.cjs.map +1 -0
- package/dist/chunk-NNHWH7ER.js +181 -0
- package/dist/chunk-NNHWH7ER.js.map +1 -0
- package/dist/chunk-NX67YIF3.js +3 -0
- package/dist/chunk-NX67YIF3.js.map +1 -0
- package/dist/chunk-OA6FWYZF.cjs +4 -0
- package/dist/chunk-OA6FWYZF.cjs.map +1 -0
- package/dist/chunk-OJDBSKC2.js +3 -0
- package/dist/chunk-OJDBSKC2.js.map +1 -0
- package/dist/chunk-OLPA44QJ.js +3 -0
- package/dist/chunk-OLPA44QJ.js.map +1 -0
- package/dist/chunk-OMH7ATOQ.js +3 -0
- package/dist/chunk-OMH7ATOQ.js.map +1 -0
- package/dist/chunk-OPR4TULG.js +3 -0
- package/dist/chunk-OPR4TULG.js.map +1 -0
- package/dist/chunk-OSX2GVZ2.cjs +34 -0
- package/dist/chunk-OSX2GVZ2.cjs.map +1 -0
- package/dist/chunk-OXQKE5EG.cjs +282 -0
- package/dist/chunk-OXQKE5EG.cjs.map +1 -0
- package/dist/chunk-P6E4QDJN.js +30 -0
- package/dist/chunk-P6E4QDJN.js.map +1 -0
- package/dist/chunk-PEMLIAPZ.cjs +64 -0
- package/dist/chunk-PEMLIAPZ.cjs.map +1 -0
- package/dist/chunk-PGYQ754I.js +3 -0
- package/dist/chunk-PGYQ754I.js.map +1 -0
- package/dist/chunk-PHEA6FVQ.js +184 -0
- package/dist/chunk-PHEA6FVQ.js.map +1 -0
- package/dist/chunk-PMTM26LL.js +3 -0
- package/dist/chunk-PMTM26LL.js.map +1 -0
- package/dist/chunk-PY4OEKNX.cjs +4 -0
- package/dist/chunk-PY4OEKNX.cjs.map +1 -0
- package/dist/chunk-PZS2EXDR.cjs +4 -0
- package/dist/chunk-PZS2EXDR.cjs.map +1 -0
- package/dist/chunk-QRHJEITQ.cjs +4 -0
- package/dist/chunk-QRHJEITQ.cjs.map +1 -0
- package/dist/chunk-QUFU5RJ7.cjs +4 -0
- package/dist/chunk-QUFU5RJ7.cjs.map +1 -0
- package/dist/chunk-QVQCKOBM.js +3 -0
- package/dist/chunk-QVQCKOBM.js.map +1 -0
- package/dist/chunk-R63TTR35.cjs +200 -0
- package/dist/chunk-R63TTR35.cjs.map +1 -0
- package/dist/chunk-RA42NMWV.cjs +4 -0
- package/dist/chunk-RA42NMWV.cjs.map +1 -0
- package/dist/chunk-RAZN6C5R.cjs +12 -0
- package/dist/chunk-RAZN6C5R.cjs.map +1 -0
- package/dist/chunk-RHETJOUM.cjs +4 -0
- package/dist/chunk-RHETJOUM.cjs.map +1 -0
- package/dist/chunk-RJIJVVXS.js +3 -0
- package/dist/chunk-RJIJVVXS.js.map +1 -0
- package/dist/chunk-RKVRCNMB.js +3 -0
- package/dist/chunk-RKVRCNMB.js.map +1 -0
- package/dist/chunk-S7JQKNVT.cjs +187 -0
- package/dist/chunk-S7JQKNVT.cjs.map +1 -0
- package/dist/chunk-SBV5MWEL.cjs +53 -0
- package/dist/chunk-SBV5MWEL.cjs.map +1 -0
- package/dist/chunk-SFB4YLCS.js +121 -0
- package/dist/chunk-SFB4YLCS.js.map +1 -0
- package/dist/chunk-SLPD47SR.js +3 -0
- package/dist/chunk-SLPD47SR.js.map +1 -0
- package/dist/chunk-SS3B6PHT.cjs +35 -0
- package/dist/chunk-SS3B6PHT.cjs.map +1 -0
- package/dist/chunk-SUCHGNYT.js +3 -0
- package/dist/chunk-SUCHGNYT.js.map +1 -0
- package/dist/chunk-SYVNY3AH.cjs +44 -0
- package/dist/chunk-SYVNY3AH.cjs.map +1 -0
- package/dist/chunk-T3SYREY4.js +29 -0
- package/dist/chunk-T3SYREY4.js.map +1 -0
- package/dist/chunk-T7N7DFQJ.js +198 -0
- package/dist/chunk-T7N7DFQJ.js.map +1 -0
- package/dist/chunk-TRCENAIY.cjs +4 -0
- package/dist/chunk-TRCENAIY.cjs.map +1 -0
- package/dist/chunk-TVENC6PH.js +186 -0
- package/dist/chunk-TVENC6PH.js.map +1 -0
- package/dist/chunk-U4T3Z3K7.cjs +325 -0
- package/dist/chunk-U4T3Z3K7.cjs.map +1 -0
- package/dist/chunk-UIFFNTUX.js +3 -0
- package/dist/chunk-UIFFNTUX.js.map +1 -0
- package/dist/chunk-V4GPQ6Y2.js +3 -0
- package/dist/chunk-V4GPQ6Y2.js.map +1 -0
- package/dist/chunk-VGTRKXF2.js +93 -0
- package/dist/chunk-VGTRKXF2.js.map +1 -0
- package/dist/chunk-VGWOIWRQ.cjs +202 -0
- package/dist/chunk-VGWOIWRQ.cjs.map +1 -0
- package/dist/chunk-VLCNNA76.cjs +4 -0
- package/dist/chunk-VLCNNA76.cjs.map +1 -0
- package/dist/chunk-VPAUN75Q.js +3 -0
- package/dist/chunk-VPAUN75Q.js.map +1 -0
- package/dist/chunk-VT237QF2.js +3 -0
- package/dist/chunk-VT237QF2.js.map +1 -0
- package/dist/chunk-VV4TZG5S.js +321 -0
- package/dist/chunk-VV4TZG5S.js.map +1 -0
- package/dist/chunk-VYK6MBL4.cjs +4 -0
- package/dist/chunk-VYK6MBL4.cjs.map +1 -0
- package/dist/chunk-W33CKW6Q.cjs +4 -0
- package/dist/chunk-W33CKW6Q.cjs.map +1 -0
- package/dist/chunk-W5VHATSR.cjs +31 -0
- package/dist/chunk-W5VHATSR.cjs.map +1 -0
- package/dist/chunk-WEQWU2IC.js +34 -0
- package/dist/chunk-WEQWU2IC.js.map +1 -0
- package/dist/chunk-WK4VXPPZ.cjs +104 -0
- package/dist/chunk-WK4VXPPZ.cjs.map +1 -0
- package/dist/chunk-WSA4LMWR.cjs +96 -0
- package/dist/chunk-WSA4LMWR.cjs.map +1 -0
- package/dist/chunk-WUIEZ6Z4.cjs +360 -0
- package/dist/chunk-WUIEZ6Z4.cjs.map +1 -0
- package/dist/chunk-WUKIJJG2.cjs +45 -0
- package/dist/chunk-WUKIJJG2.cjs.map +1 -0
- package/dist/chunk-WVFAQBS7.js +29 -0
- package/dist/chunk-WVFAQBS7.js.map +1 -0
- package/dist/chunk-X7RDNMN7.js +3 -0
- package/dist/chunk-X7RDNMN7.js.map +1 -0
- package/dist/chunk-X7XP5WBP.cjs +4 -0
- package/dist/chunk-X7XP5WBP.cjs.map +1 -0
- package/dist/chunk-XWKNE6DH.cjs +4 -0
- package/dist/chunk-XWKNE6DH.cjs.map +1 -0
- package/dist/chunk-Y6V6CBY5.js +23 -0
- package/dist/chunk-Y6V6CBY5.js.map +1 -0
- package/dist/chunk-Y6VDCZPB.js +62 -0
- package/dist/chunk-Y6VDCZPB.js.map +1 -0
- package/dist/chunk-YDRXBRW2.cjs +184 -0
- package/dist/chunk-YDRXBRW2.cjs.map +1 -0
- package/dist/chunk-YFS2LMG4.cjs +124 -0
- package/dist/chunk-YFS2LMG4.cjs.map +1 -0
- package/dist/chunk-YN6CBIIB.js +63 -0
- package/dist/chunk-YN6CBIIB.js.map +1 -0
- package/dist/chunk-YOJ2XNQX.cjs +4 -0
- package/dist/chunk-YOJ2XNQX.cjs.map +1 -0
- package/dist/chunk-YOOZB4RL.js +3 -0
- package/dist/chunk-YOOZB4RL.js.map +1 -0
- package/dist/chunk-YVU2M7MI.js +34 -0
- package/dist/chunk-YVU2M7MI.js.map +1 -0
- package/dist/chunk-YXBZRB5H.cjs +4 -0
- package/dist/chunk-YXBZRB5H.cjs.map +1 -0
- package/dist/chunk-Z3ZKFI2M.js +43 -0
- package/dist/chunk-Z3ZKFI2M.js.map +1 -0
- package/dist/chunk-Z5GLY4R3.js +112 -0
- package/dist/chunk-Z5GLY4R3.js.map +1 -0
- package/dist/chunk-Z5OMWAQX.js +3 -0
- package/dist/chunk-Z5OMWAQX.js.map +1 -0
- package/dist/chunk-Z7LGWNI7.js +38 -0
- package/dist/chunk-Z7LGWNI7.js.map +1 -0
- package/dist/chunk-ZCWKX4V6.cjs +38 -0
- package/dist/chunk-ZCWKX4V6.cjs.map +1 -0
- package/dist/chunk-ZE5RISBZ.cjs +4 -0
- package/dist/chunk-ZE5RISBZ.cjs.map +1 -0
- package/dist/chunk-ZH4F2P2G.js +3 -0
- package/dist/chunk-ZH4F2P2G.js.map +1 -0
- package/dist/chunk-ZJGFLJ2Z.cjs +4 -0
- package/dist/chunk-ZJGFLJ2Z.cjs.map +1 -0
- package/dist/chunk-ZKBHD27K.cjs +4 -0
- package/dist/chunk-ZKBHD27K.cjs.map +1 -0
- package/dist/chunk-ZQPLRNKX.cjs +4 -0
- package/dist/chunk-ZQPLRNKX.cjs.map +1 -0
- package/dist/chunk-ZQQABQMH.cjs +31 -0
- package/dist/chunk-ZQQABQMH.cjs.map +1 -0
- package/dist/chunk-ZXJQSFIA.js +200 -0
- package/dist/chunk-ZXJQSFIA.js.map +1 -0
- package/dist/chunk-ZYPH2FPT.js +3 -0
- package/dist/chunk-ZYPH2FPT.js.map +1 -0
- package/dist/developer-apps-zSQXWmEG.d.cts +294 -0
- package/dist/developer-apps-zSQXWmEG.d.ts +294 -0
- package/dist/entries/apps.cjs +13 -0
- package/dist/entries/apps.cjs.map +1 -0
- package/dist/entries/apps.d.cts +300 -0
- package/dist/entries/apps.d.ts +300 -0
- package/dist/entries/apps.js +4 -0
- package/dist/entries/apps.js.map +1 -0
- package/dist/entries/audio.cjs +13 -0
- package/dist/entries/audio.cjs.map +1 -0
- package/dist/entries/audio.d.cts +200 -0
- package/dist/entries/audio.d.ts +200 -0
- package/dist/entries/audio.js +4 -0
- package/dist/entries/audio.js.map +1 -0
- package/dist/entries/billing.cjs +13 -0
- package/dist/entries/billing.cjs.map +1 -0
- package/dist/entries/billing.d.cts +208 -0
- package/dist/entries/billing.d.ts +208 -0
- package/dist/entries/billing.js +4 -0
- package/dist/entries/billing.js.map +1 -0
- package/dist/entries/catalogs.cjs +13 -0
- package/dist/entries/catalogs.cjs.map +1 -0
- package/dist/entries/catalogs.d.cts +82 -0
- package/dist/entries/catalogs.d.ts +82 -0
- package/dist/entries/catalogs.js +4 -0
- package/dist/entries/catalogs.js.map +1 -0
- package/dist/entries/characters.cjs +45 -0
- package/dist/entries/characters.cjs.map +1 -0
- package/dist/entries/characters.d.cts +741 -0
- package/dist/entries/characters.d.ts +741 -0
- package/dist/entries/characters.js +4 -0
- package/dist/entries/characters.js.map +1 -0
- package/dist/entries/client.cjs +78 -0
- package/dist/entries/client.cjs.map +1 -0
- package/dist/entries/client.d.cts +147 -0
- package/dist/entries/client.d.ts +147 -0
- package/dist/entries/client.js +53 -0
- package/dist/entries/client.js.map +1 -0
- package/dist/entries/collections.cjs +13 -0
- package/dist/entries/collections.cjs.map +1 -0
- package/dist/entries/collections.d.cts +77 -0
- package/dist/entries/collections.d.ts +77 -0
- package/dist/entries/collections.js +4 -0
- package/dist/entries/collections.js.map +1 -0
- package/dist/entries/community.cjs +13 -0
- package/dist/entries/community.cjs.map +1 -0
- package/dist/entries/community.d.cts +87 -0
- package/dist/entries/community.d.ts +87 -0
- package/dist/entries/community.js +4 -0
- package/dist/entries/community.js.map +1 -0
- package/dist/entries/competitors.cjs +13 -0
- package/dist/entries/competitors.cjs.map +1 -0
- package/dist/entries/competitors.d.cts +96 -0
- package/dist/entries/competitors.d.ts +96 -0
- package/dist/entries/competitors.js +4 -0
- package/dist/entries/competitors.js.map +1 -0
- package/dist/entries/copilot.cjs +15 -0
- package/dist/entries/copilot.cjs.map +1 -0
- package/dist/entries/copilot.d.cts +296 -0
- package/dist/entries/copilot.d.ts +296 -0
- package/dist/entries/copilot.js +6 -0
- package/dist/entries/copilot.js.map +1 -0
- package/dist/entries/core.cjs +26 -0
- package/dist/entries/core.cjs.map +1 -0
- package/dist/entries/core.d.cts +3 -0
- package/dist/entries/core.d.ts +3 -0
- package/dist/entries/core.js +5 -0
- package/dist/entries/core.js.map +1 -0
- package/dist/entries/creatures.cjs +29 -0
- package/dist/entries/creatures.cjs.map +1 -0
- package/dist/entries/creatures.d.cts +594 -0
- package/dist/entries/creatures.d.ts +594 -0
- package/dist/entries/creatures.js +4 -0
- package/dist/entries/creatures.js.map +1 -0
- package/dist/entries/credits.cjs +13 -0
- package/dist/entries/credits.cjs.map +1 -0
- package/dist/entries/credits.d.cts +237 -0
- package/dist/entries/credits.d.ts +237 -0
- package/dist/entries/credits.js +4 -0
- package/dist/entries/credits.js.map +1 -0
- package/dist/entries/developer-apps.cjs +13 -0
- package/dist/entries/developer-apps.cjs.map +1 -0
- package/dist/entries/developer-apps.d.cts +3 -0
- package/dist/entries/developer-apps.d.ts +3 -0
- package/dist/entries/developer-apps.js +4 -0
- package/dist/entries/developer-apps.js.map +1 -0
- package/dist/entries/edit.cjs +34 -0
- package/dist/entries/edit.cjs.map +1 -0
- package/dist/entries/edit.d.cts +705 -0
- package/dist/entries/edit.d.ts +705 -0
- package/dist/entries/edit.js +5 -0
- package/dist/entries/edit.js.map +1 -0
- package/dist/entries/errors.cjs +93 -0
- package/dist/entries/errors.cjs.map +1 -0
- package/dist/entries/errors.d.cts +338 -0
- package/dist/entries/errors.d.ts +338 -0
- package/dist/entries/errors.js +4 -0
- package/dist/entries/errors.js.map +1 -0
- package/dist/entries/executions.cjs +21 -0
- package/dist/entries/executions.cjs.map +1 -0
- package/dist/entries/executions.d.cts +120 -0
- package/dist/entries/executions.d.ts +120 -0
- package/dist/entries/executions.js +4 -0
- package/dist/entries/executions.js.map +1 -0
- package/dist/entries/gallery.cjs +13 -0
- package/dist/entries/gallery.cjs.map +1 -0
- package/dist/entries/gallery.d.cts +85 -0
- package/dist/entries/gallery.d.ts +85 -0
- package/dist/entries/gallery.js +4 -0
- package/dist/entries/gallery.js.map +1 -0
- package/dist/entries/jobs.cjs +13 -0
- package/dist/entries/jobs.cjs.map +1 -0
- package/dist/entries/jobs.d.cts +252 -0
- package/dist/entries/jobs.d.ts +252 -0
- package/dist/entries/jobs.js +4 -0
- package/dist/entries/jobs.js.map +1 -0
- package/dist/entries/library.cjs +13 -0
- package/dist/entries/library.cjs.map +1 -0
- package/dist/entries/library.d.cts +109 -0
- package/dist/entries/library.d.ts +109 -0
- package/dist/entries/library.js +4 -0
- package/dist/entries/library.js.map +1 -0
- package/dist/entries/llm.cjs +13 -0
- package/dist/entries/llm.cjs.map +1 -0
- package/dist/entries/llm.d.cts +98 -0
- package/dist/entries/llm.d.ts +98 -0
- package/dist/entries/llm.js +4 -0
- package/dist/entries/llm.js.map +1 -0
- package/dist/entries/locations.cjs +25 -0
- package/dist/entries/locations.cjs.map +1 -0
- package/dist/entries/locations.d.cts +573 -0
- package/dist/entries/locations.d.ts +573 -0
- package/dist/entries/locations.js +4 -0
- package/dist/entries/locations.js.map +1 -0
- package/dist/entries/media.cjs +15 -0
- package/dist/entries/media.cjs.map +1 -0
- package/dist/entries/media.d.cts +548 -0
- package/dist/entries/media.d.ts +548 -0
- package/dist/entries/media.js +6 -0
- package/dist/entries/media.js.map +1 -0
- package/dist/entries/models.cjs +13 -0
- package/dist/entries/models.cjs.map +1 -0
- package/dist/entries/models.d.cts +92 -0
- package/dist/entries/models.d.ts +92 -0
- package/dist/entries/models.js +4 -0
- package/dist/entries/models.js.map +1 -0
- package/dist/entries/moodboards.cjs +21 -0
- package/dist/entries/moodboards.cjs.map +1 -0
- package/dist/entries/moodboards.d.cts +77 -0
- package/dist/entries/moodboards.d.ts +77 -0
- package/dist/entries/moodboards.js +4 -0
- package/dist/entries/moodboards.js.map +1 -0
- package/dist/entries/node-presets.cjs +13 -0
- package/dist/entries/node-presets.cjs.map +1 -0
- package/dist/entries/node-presets.d.cts +217 -0
- package/dist/entries/node-presets.d.ts +217 -0
- package/dist/entries/node-presets.js +4 -0
- package/dist/entries/node-presets.js.map +1 -0
- package/dist/entries/nodes.cjs +22 -0
- package/dist/entries/nodes.cjs.map +1 -0
- package/dist/entries/nodes.d.cts +18 -0
- package/dist/entries/nodes.d.ts +18 -0
- package/dist/entries/nodes.js +5 -0
- package/dist/entries/nodes.js.map +1 -0
- package/dist/entries/oauth.cjs +13 -0
- package/dist/entries/oauth.cjs.map +1 -0
- package/dist/entries/oauth.d.cts +69 -0
- package/dist/entries/oauth.d.ts +69 -0
- package/dist/entries/oauth.js +4 -0
- package/dist/entries/oauth.js.map +1 -0
- package/dist/entries/objects.cjs +29 -0
- package/dist/entries/objects.cjs.map +1 -0
- package/dist/entries/objects.d.cts +544 -0
- package/dist/entries/objects.d.ts +544 -0
- package/dist/entries/objects.js +4 -0
- package/dist/entries/objects.js.map +1 -0
- package/dist/entries/organizations.cjs +21 -0
- package/dist/entries/organizations.cjs.map +1 -0
- package/dist/entries/organizations.d.cts +164 -0
- package/dist/entries/organizations.d.ts +164 -0
- package/dist/entries/organizations.js +4 -0
- package/dist/entries/organizations.js.map +1 -0
- package/dist/entries/palettes.cjs +21 -0
- package/dist/entries/palettes.cjs.map +1 -0
- package/dist/entries/palettes.d.cts +69 -0
- package/dist/entries/palettes.d.ts +69 -0
- package/dist/entries/palettes.js +4 -0
- package/dist/entries/palettes.js.map +1 -0
- package/dist/entries/picker-catalogs.cjs +13 -0
- package/dist/entries/picker-catalogs.cjs.map +1 -0
- package/dist/entries/picker-catalogs.d.cts +148 -0
- package/dist/entries/picker-catalogs.d.ts +148 -0
- package/dist/entries/picker-catalogs.js +4 -0
- package/dist/entries/picker-catalogs.js.map +1 -0
- package/dist/entries/pipelines.cjs +13 -0
- package/dist/entries/pipelines.cjs.map +1 -0
- package/dist/entries/pipelines.d.cts +255 -0
- package/dist/entries/pipelines.d.ts +255 -0
- package/dist/entries/pipelines.js +4 -0
- package/dist/entries/pipelines.js.map +1 -0
- package/dist/entries/projects.cjs +13 -0
- package/dist/entries/projects.cjs.map +1 -0
- package/dist/entries/projects.d.cts +49 -0
- package/dist/entries/projects.d.ts +49 -0
- package/dist/entries/projects.js +4 -0
- package/dist/entries/projects.js.map +1 -0
- package/dist/entries/prompt-helper.cjs +13 -0
- package/dist/entries/prompt-helper.cjs.map +1 -0
- package/dist/entries/prompt-helper.d.cts +73 -0
- package/dist/entries/prompt-helper.d.ts +73 -0
- package/dist/entries/prompt-helper.js +4 -0
- package/dist/entries/prompt-helper.js.map +1 -0
- package/dist/entries/recast.cjs +17 -0
- package/dist/entries/recast.cjs.map +1 -0
- package/dist/entries/recast.d.cts +229 -0
- package/dist/entries/recast.d.ts +229 -0
- package/dist/entries/recast.js +4 -0
- package/dist/entries/recast.js.map +1 -0
- package/dist/entries/reduce.cjs +13 -0
- package/dist/entries/reduce.cjs.map +1 -0
- package/dist/entries/reduce.d.cts +56 -0
- package/dist/entries/reduce.d.ts +56 -0
- package/dist/entries/reduce.js +4 -0
- package/dist/entries/reduce.js.map +1 -0
- package/dist/entries/saved-posts.cjs +13 -0
- package/dist/entries/saved-posts.cjs.map +1 -0
- package/dist/entries/saved-posts.d.cts +33 -0
- package/dist/entries/saved-posts.d.ts +33 -0
- package/dist/entries/saved-posts.js +4 -0
- package/dist/entries/saved-posts.js.map +1 -0
- package/dist/entries/scene3d.cjs +17 -0
- package/dist/entries/scene3d.cjs.map +1 -0
- package/dist/entries/scene3d.d.cts +131 -0
- package/dist/entries/scene3d.d.ts +131 -0
- package/dist/entries/scene3d.js +4 -0
- package/dist/entries/scene3d.js.map +1 -0
- package/dist/entries/sessions.cjs +13 -0
- package/dist/entries/sessions.cjs.map +1 -0
- package/dist/entries/sessions.d.cts +122 -0
- package/dist/entries/sessions.d.ts +122 -0
- package/dist/entries/sessions.js +4 -0
- package/dist/entries/sessions.js.map +1 -0
- package/dist/entries/shots.cjs +13 -0
- package/dist/entries/shots.cjs.map +1 -0
- package/dist/entries/shots.d.cts +78 -0
- package/dist/entries/shots.d.ts +78 -0
- package/dist/entries/shots.js +4 -0
- package/dist/entries/shots.js.map +1 -0
- package/dist/entries/studio.cjs +22 -0
- package/dist/entries/studio.cjs.map +1 -0
- package/dist/entries/studio.d.cts +281 -0
- package/dist/entries/studio.d.ts +281 -0
- package/dist/entries/studio.js +5 -0
- package/dist/entries/studio.js.map +1 -0
- package/dist/entries/templates.cjs +13 -0
- package/dist/entries/templates.cjs.map +1 -0
- package/dist/entries/templates.d.cts +110 -0
- package/dist/entries/templates.d.ts +110 -0
- package/dist/entries/templates.js +4 -0
- package/dist/entries/templates.js.map +1 -0
- package/dist/entries/tutorials.cjs +13 -0
- package/dist/entries/tutorials.cjs.map +1 -0
- package/dist/entries/tutorials.d.cts +63 -0
- package/dist/entries/tutorials.d.ts +63 -0
- package/dist/entries/tutorials.js +4 -0
- package/dist/entries/tutorials.js.map +1 -0
- package/dist/entries/uploads.cjs +13 -0
- package/dist/entries/uploads.cjs.map +1 -0
- package/dist/entries/uploads.d.cts +44 -0
- package/dist/entries/uploads.d.ts +44 -0
- package/dist/entries/uploads.js +4 -0
- package/dist/entries/uploads.js.map +1 -0
- package/dist/entries/video-pro.cjs +13 -0
- package/dist/entries/video-pro.cjs.map +1 -0
- package/dist/entries/video-pro.d.cts +60 -0
- package/dist/entries/video-pro.d.ts +60 -0
- package/dist/entries/video-pro.js +4 -0
- package/dist/entries/video-pro.js.map +1 -0
- package/dist/entries/voices.cjs +13 -0
- package/dist/entries/voices.cjs.map +1 -0
- package/dist/entries/voices.d.cts +498 -0
- package/dist/entries/voices.d.ts +498 -0
- package/dist/entries/voices.js +4 -0
- package/dist/entries/voices.js.map +1 -0
- package/dist/entries/webhooks.cjs +21 -0
- package/dist/entries/webhooks.cjs.map +1 -0
- package/dist/entries/webhooks.d.cts +64 -0
- package/dist/entries/webhooks.d.ts +64 -0
- package/dist/entries/webhooks.js +4 -0
- package/dist/entries/webhooks.js.map +1 -0
- package/dist/entries/workflows.cjs +13 -0
- package/dist/entries/workflows.cjs.map +1 -0
- package/dist/entries/workflows.d.cts +393 -0
- package/dist/entries/workflows.d.ts +393 -0
- package/dist/entries/workflows.js +4 -0
- package/dist/entries/workflows.js.map +1 -0
- package/dist/entries/workspaces.cjs +13 -0
- package/dist/entries/workspaces.cjs.map +1 -0
- package/dist/entries/workspaces.d.cts +124 -0
- package/dist/entries/workspaces.d.ts +124 -0
- package/dist/entries/workspaces.js +4 -0
- package/dist/entries/workspaces.js.map +1 -0
- package/dist/index.cjs +501 -5192
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +67 -10895
- package/dist/index.d.ts +67 -10895
- package/dist/index.js +100 -5074
- package/dist/index.js.map +1 -1
- package/dist/nodes-C-wrO6Sg.d.ts +1364 -0
- package/dist/nodes-J8ByUN8z.d.cts +1364 -0
- package/dist/studio-productions-DUHvdSvk.d.cts +572 -0
- package/dist/studio-productions-vbCNSbtf.d.ts +572 -0
- package/dist/webhooks-BJawEIz8.d.ts +198 -0
- package/dist/webhooks-Dn_DtNTD.d.cts +198 -0
- package/package.json +253 -3
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/resources/community.ts
|
|
4
|
+
var CommunityResource = class {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
client;
|
|
9
|
+
/**
|
|
10
|
+
* `GET /v1/community/browse` → a page of public listings plus a `nextCursor`.
|
|
11
|
+
* Pass the returned `nextCursor` back as `cursor` to fetch the next page.
|
|
12
|
+
*/
|
|
13
|
+
browse(params = {}) {
|
|
14
|
+
const qs = new URLSearchParams();
|
|
15
|
+
if (params.entityType) qs.set("entityType", params.entityType);
|
|
16
|
+
if (params.q) qs.set("q", params.q);
|
|
17
|
+
if (params.category) qs.set("category", params.category);
|
|
18
|
+
if (params.sort) qs.set("sort", params.sort);
|
|
19
|
+
if (params.cursor) qs.set("cursor", params.cursor);
|
|
20
|
+
if (params.limit !== void 0) qs.set("limit", String(params.limit));
|
|
21
|
+
const query = qs.toString();
|
|
22
|
+
return this.client.request(
|
|
23
|
+
"GET",
|
|
24
|
+
`/v1/community/browse${query ? `?${query}` : ""}`
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
/** `GET /v1/community/detail/:slug` → a single listing by its slug. */
|
|
28
|
+
get(slug) {
|
|
29
|
+
return this.client.request(
|
|
30
|
+
"GET",
|
|
31
|
+
`/v1/community/detail/${encodeURIComponent(slug)}`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* `GET /v1/community/detail/:slug/full` → the full read-only detail (card
|
|
36
|
+
* identity + the stored public snapshot). Like {@link get}, but includes the
|
|
37
|
+
* snapshot asset/voice/text blob needed to render the full cross-user view.
|
|
38
|
+
*/
|
|
39
|
+
getFull(slug) {
|
|
40
|
+
return this.client.request(
|
|
41
|
+
"GET",
|
|
42
|
+
`/v1/community/detail/${encodeURIComponent(slug)}/full`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
/** `GET /v1/community/favorites` → the listings you've favorited. */
|
|
46
|
+
favorites() {
|
|
47
|
+
return this.client.request("GET", "/v1/community/favorites");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* `POST /v1/community/listings/:id/clone` → copy a listing into your library.
|
|
51
|
+
* Returns the new asset's `entityType` and `id`. Requires the `assets:write`
|
|
52
|
+
* scope when called with an OAuth app token.
|
|
53
|
+
*/
|
|
54
|
+
clone(id, entityType) {
|
|
55
|
+
return this.client.request(
|
|
56
|
+
"POST",
|
|
57
|
+
`/v1/community/listings/${encodeURIComponent(id)}/clone`,
|
|
58
|
+
{ body: { entityType } }
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `POST /v1/community/listings/:id/favorite` → toggle a favorite. Returns the
|
|
63
|
+
* resulting `favorited` state (`true` after adding, `false` after removing).
|
|
64
|
+
*/
|
|
65
|
+
favorite(id) {
|
|
66
|
+
return this.client.request(
|
|
67
|
+
"POST",
|
|
68
|
+
`/v1/community/listings/${encodeURIComponent(id)}/favorite`
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* `POST /v1/community/listings/:id/report` → flag a listing for moderation.
|
|
73
|
+
* `reason` must be one of {@link CommunityReportReason}.
|
|
74
|
+
*/
|
|
75
|
+
report(id, reason) {
|
|
76
|
+
return this.client.request(
|
|
77
|
+
"POST",
|
|
78
|
+
`/v1/community/listings/${encodeURIComponent(id)}/report`,
|
|
79
|
+
{ body: { reason } }
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `POST /v1/admin/community/:entityType/:id/publish` → share one of YOUR
|
|
84
|
+
* entities to the community, returning the new listing's `slug` + `id`.
|
|
85
|
+
*
|
|
86
|
+
* **Requires an admin token** (the route is `requireAdmin`) AND the caller
|
|
87
|
+
* must own the source entity. Personal/OAuth tokens without admin role get a
|
|
88
|
+
* 401. For `character` listings, `params.likenessAttestation` must be `true`.
|
|
89
|
+
*/
|
|
90
|
+
publish(entityType, entityId, params) {
|
|
91
|
+
return this.client.request(
|
|
92
|
+
"POST",
|
|
93
|
+
`/v1/admin/community/${encodeURIComponent(entityType)}/${encodeURIComponent(entityId)}/publish`,
|
|
94
|
+
{ body: params }
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* `DELETE /v1/admin/community/listings/:id` → unshare (deactivate) a listing
|
|
99
|
+
* you published. **Requires an admin token** (the route is `requireAdmin`).
|
|
100
|
+
*/
|
|
101
|
+
unpublish(listingId) {
|
|
102
|
+
return this.client.request(
|
|
103
|
+
"DELETE",
|
|
104
|
+
`/v1/admin/community/listings/${encodeURIComponent(listingId)}`
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* `GET /v1/admin/community/by-source/:entityType/:sourceId` → look up YOUR
|
|
109
|
+
* existing listing (if any) for a source entity. Returns `{ data: null }`
|
|
110
|
+
* when the entity hasn't been shared. **Requires an admin token** (the route
|
|
111
|
+
* is `requireAdmin`); only returns listings created by the caller.
|
|
112
|
+
*/
|
|
113
|
+
sharedListing(entityType, sourceId) {
|
|
114
|
+
return this.client.request(
|
|
115
|
+
"GET",
|
|
116
|
+
`/v1/admin/community/by-source/${encodeURIComponent(entityType)}/${encodeURIComponent(sourceId)}`
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
exports.CommunityResource = CommunityResource;
|
|
122
|
+
//# sourceMappingURL=chunk-43FVH6LJ.cjs.map
|
|
123
|
+
//# sourceMappingURL=chunk-43FVH6LJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/community.ts"],"names":[],"mappings":";;;AAmBO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpB,MAAA,CAAO,MAAA,GAAgC,EAAC,EAAmC;AACzE,IAAA,MAAM,EAAA,GAAK,IAAI,eAAA,EAAgB;AAC/B,IAAA,IAAI,OAAO,UAAA,EAAY,EAAA,CAAG,GAAA,CAAI,YAAA,EAAc,OAAO,UAAU,CAAA;AAC7D,IAAA,IAAI,OAAO,CAAA,EAAG,EAAA,CAAG,GAAA,CAAI,GAAA,EAAK,OAAO,CAAC,CAAA;AAClC,IAAA,IAAI,OAAO,QAAA,EAAU,EAAA,CAAG,GAAA,CAAI,UAAA,EAAY,OAAO,QAAQ,CAAA;AACvD,IAAA,IAAI,OAAO,IAAA,EAAM,EAAA,CAAG,GAAA,CAAI,MAAA,EAAQ,OAAO,IAAI,CAAA;AAC3C,IAAA,IAAI,OAAO,MAAA,EAAQ,EAAA,CAAG,GAAA,CAAI,QAAA,EAAU,OAAO,MAAM,CAAA;AACjD,IAAA,IAAI,MAAA,CAAO,UAAU,MAAA,EAAW,EAAA,CAAG,IAAI,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACpE,IAAA,MAAM,KAAA,GAAQ,GAAG,QAAA,EAAS;AAC1B,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,oBAAA,EAAuB,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAK,KAAK,EAAE,CAAA;AAAA,KACjD;AAAA,EACF;AAAA;AAAA,EAGA,IAAI,IAAA,EAAgD;AAClD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,qBAAA,EAAwB,kBAAA,CAAmB,IAAI,CAAC,CAAA;AAAA,KAClD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,IAAA,EAAsD;AAC5D,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,qBAAA,EAAwB,kBAAA,CAAmB,IAAI,CAAC,CAAA,KAAA;AAAA,KAClD;AAAA,EACF;AAAA;AAAA,EAGA,SAAA,GAAgD;AAC9C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,yBAAyB,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAA,CAAM,IAAY,UAAA,EAA8D;AAC9E,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,CAAA,uBAAA,EAA0B,kBAAA,CAAmB,EAAE,CAAC,CAAA,MAAA,CAAA;AAAA,MAChD,EAAE,IAAA,EAAM,EAAE,UAAA,EAAW;AAAE,KACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,EAAA,EAA4C;AACnD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,CAAA,uBAAA,EAA0B,kBAAA,CAAmB,EAAE,CAAC,CAAA,SAAA;AAAA,KAClD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAA,CAAO,IAAY,MAAA,EAA6D;AAC9E,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,CAAA,uBAAA,EAA0B,kBAAA,CAAmB,EAAE,CAAC,CAAA,OAAA,CAAA;AAAA,MAChD,EAAE,IAAA,EAAM,EAAE,MAAA,EAAO;AAAE,KACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAA,CACE,UAAA,EACA,QAAA,EACA,MAAA,EAC+B;AAC/B,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,uBAAuB,kBAAA,CAAmB,UAAU,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmB,QAAQ,CAAC,CAAA,QAAA,CAAA;AAAA,MACrF,EAAE,MAAM,MAAA;AAAO,KACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,SAAA,EAA6C;AACrD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,QAAA;AAAA,MACA,CAAA,6BAAA,EAAgC,kBAAA,CAAmB,SAAS,CAAC,CAAA;AAAA,KAC/D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAA,CACE,YACA,QAAA,EACyC;AACzC,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,iCAAiC,kBAAA,CAAmB,UAAU,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAAA,KACjG;AAAA,EACF;AACF","file":"chunk-43FVH6LJ.cjs","sourcesContent":["import type { CommunityEntityType, CommunitySort, CommunityReportReason, CommunityCard, CommunityFullDetail, BrowseCommunityParams, BrowseCommunityResult, CloneListingResult, FavoriteListingResult, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing } from \"@nodaro/shared/apps\"\nexport type { CommunityEntityType, CommunitySort, CommunityReportReason, CommunityCard, CommunityFullDetail, BrowseCommunityParams, BrowseCommunityResult, CloneListingResult, FavoriteListingResult, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing } from \"@nodaro/shared/apps\"\nimport type { NodaroClientCore } from \"../core.js\"\n\n/**\n * The community-listing types are the single source of truth in\n * `@nodaro/shared` (re-used by the backend, frontend, and CLI). Re-export them\n * here so SDK consumers don't have to add `@nodaro/shared` as a second\n * dependency just to typecheck `browse`/`clone`/`favorite`/`report`.\n */\n\n/**\n * Community — browse, favorite, clone, and report shared characters,\n * locations, and objects.\n *\n * Publishing is intentionally NOT exposed here: it is admin-only via the\n * editor, and the publish route rejects personal access tokens (which is what\n * the SDK uses).\n */\nexport class CommunityResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * `GET /v1/community/browse` → a page of public listings plus a `nextCursor`.\n * Pass the returned `nextCursor` back as `cursor` to fetch the next page.\n */\n browse(params: BrowseCommunityParams = {}): Promise<BrowseCommunityResult> {\n const qs = new URLSearchParams()\n if (params.entityType) qs.set(\"entityType\", params.entityType)\n if (params.q) qs.set(\"q\", params.q)\n if (params.category) qs.set(\"category\", params.category)\n if (params.sort) qs.set(\"sort\", params.sort)\n if (params.cursor) qs.set(\"cursor\", params.cursor)\n if (params.limit !== undefined) qs.set(\"limit\", String(params.limit))\n const query = qs.toString()\n return this.client.request(\n \"GET\",\n `/v1/community/browse${query ? `?${query}` : \"\"}`,\n )\n }\n\n /** `GET /v1/community/detail/:slug` → a single listing by its slug. */\n get(slug: string): Promise<{ data: CommunityCard }> {\n return this.client.request(\n \"GET\",\n `/v1/community/detail/${encodeURIComponent(slug)}`,\n )\n }\n\n /**\n * `GET /v1/community/detail/:slug/full` → the full read-only detail (card\n * identity + the stored public snapshot). Like {@link get}, but includes the\n * snapshot asset/voice/text blob needed to render the full cross-user view.\n */\n getFull(slug: string): Promise<{ data: CommunityFullDetail }> {\n return this.client.request(\n \"GET\",\n `/v1/community/detail/${encodeURIComponent(slug)}/full`,\n )\n }\n\n /** `GET /v1/community/favorites` → the listings you've favorited. */\n favorites(): Promise<{ data: CommunityCard[] }> {\n return this.client.request(\"GET\", \"/v1/community/favorites\")\n }\n\n /**\n * `POST /v1/community/listings/:id/clone` → copy a listing into your library.\n * Returns the new asset's `entityType` and `id`. Requires the `assets:write`\n * scope when called with an OAuth app token.\n */\n clone(id: string, entityType: CommunityEntityType): Promise<CloneListingResult> {\n return this.client.request(\n \"POST\",\n `/v1/community/listings/${encodeURIComponent(id)}/clone`,\n { body: { entityType } },\n )\n }\n\n /**\n * `POST /v1/community/listings/:id/favorite` → toggle a favorite. Returns the\n * resulting `favorited` state (`true` after adding, `false` after removing).\n */\n favorite(id: string): Promise<FavoriteListingResult> {\n return this.client.request(\n \"POST\",\n `/v1/community/listings/${encodeURIComponent(id)}/favorite`,\n )\n }\n\n /**\n * `POST /v1/community/listings/:id/report` → flag a listing for moderation.\n * `reason` must be one of {@link CommunityReportReason}.\n */\n report(id: string, reason: CommunityReportReason): Promise<ReportListingResult> {\n return this.client.request(\n \"POST\",\n `/v1/community/listings/${encodeURIComponent(id)}/report`,\n { body: { reason } },\n )\n }\n\n /**\n * `POST /v1/admin/community/:entityType/:id/publish` → share one of YOUR\n * entities to the community, returning the new listing's `slug` + `id`.\n *\n * **Requires an admin token** (the route is `requireAdmin`) AND the caller\n * must own the source entity. Personal/OAuth tokens without admin role get a\n * 401. For `character` listings, `params.likenessAttestation` must be `true`.\n */\n publish(\n entityType: CommunityEntityType,\n entityId: string,\n params: PublishListingParams,\n ): Promise<PublishListingResult> {\n return this.client.request(\n \"POST\",\n `/v1/admin/community/${encodeURIComponent(entityType)}/${encodeURIComponent(entityId)}/publish`,\n { body: params },\n )\n }\n\n /**\n * `DELETE /v1/admin/community/listings/:id` → unshare (deactivate) a listing\n * you published. **Requires an admin token** (the route is `requireAdmin`).\n */\n unpublish(listingId: string): Promise<{ ok: boolean }> {\n return this.client.request(\n \"DELETE\",\n `/v1/admin/community/listings/${encodeURIComponent(listingId)}`,\n )\n }\n\n /**\n * `GET /v1/admin/community/by-source/:entityType/:sourceId` → look up YOUR\n * existing listing (if any) for a source entity. Returns `{ data: null }`\n * when the entity hasn't been shared. **Requires an admin token** (the route\n * is `requireAdmin`); only returns listings created by the caller.\n */\n sharedListing(\n entityType: CommunityEntityType,\n sourceId: string,\n ): Promise<{ data: SharedListing | null }> {\n return this.client.request(\n \"GET\",\n `/v1/admin/community/by-source/${encodeURIComponent(entityType)}/${encodeURIComponent(sourceId)}`,\n )\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-43NO4SGC.cjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-45CK55BH.cjs"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// src/resources/credits.ts
|
|
2
|
+
var MODEL_COSTS_LIMIT = 50;
|
|
3
|
+
var CreditsResource = class {
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
client;
|
|
8
|
+
/**
|
|
9
|
+
* `GET /v1/user/credits` → the authenticated user's credit balance and tier
|
|
10
|
+
* info. Throws `UnauthorizedError` (401) when signed out, and the SDK's
|
|
11
|
+
* other typed errors on the usual statuses.
|
|
12
|
+
*/
|
|
13
|
+
async balance() {
|
|
14
|
+
const res = await this.client.request(
|
|
15
|
+
"GET",
|
|
16
|
+
"/v1/user/credits"
|
|
17
|
+
);
|
|
18
|
+
return res.data;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* `GET /v1/credits/transactions` → one page of the caller's credit
|
|
22
|
+
* transactions, newest first, with `nextCursor` for the next page (`null`
|
|
23
|
+
* at the end). Read `credits_charged` for what each run cost — it can be
|
|
24
|
+
* below the hold (`credits_reserved`) and is `null` while the hold is open.
|
|
25
|
+
* Cloud-only route: a self-hosted instance answers 404.
|
|
26
|
+
*/
|
|
27
|
+
transactions(options = {}) {
|
|
28
|
+
return this.client.request("GET", "/v1/credits/transactions", {
|
|
29
|
+
query: { limit: options.limit, cursor: options.cursor }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `POST /v1/credits/model-costs` → per-identifier credit cost, for editor
|
|
34
|
+
* cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers
|
|
35
|
+
* (the route's request limit). Preserves the `{ data, missing, errors }`
|
|
36
|
+
* fault-isolation shape verbatim (see {@link ModelCostsResult}).
|
|
37
|
+
*/
|
|
38
|
+
modelCosts(ids) {
|
|
39
|
+
return this.client.request("POST", "/v1/credits/model-costs", {
|
|
40
|
+
body: { models: ids.slice(0, MODEL_COSTS_LIMIT) }
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* `POST /v1/credits/claim-signup-grant` → claims the account's free signup
|
|
45
|
+
* grant, once, with the browser signals of the page making the claim.
|
|
46
|
+
*
|
|
47
|
+
* Call it once per page load as soon as the session is known, and never
|
|
48
|
+
* wait on it for rendering: it is idempotent (a decided account answers
|
|
49
|
+
* with its state and `granted: false`), it costs the user nothing when it
|
|
50
|
+
* fails (the next load asks again), and the signals are what make the
|
|
51
|
+
* claim worth sending — collect them with `collectSignupKeys()` from
|
|
52
|
+
* `@nodaro/sdk/signup-signals` and pass whatever came back, `{}` included.
|
|
53
|
+
* Cloud-only route: a self-hosted instance answers 404.
|
|
54
|
+
*/
|
|
55
|
+
claimSignupGrant(keys = {}) {
|
|
56
|
+
return this.client.request("POST", "/v1/credits/claim-signup-grant", {
|
|
57
|
+
body: keys
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* `POST /v1/credits/welcome-offer/claim` → the user's "yes" to the welcome
|
|
62
|
+
* offer, as ONE server action: the marketing-email consent is recorded,
|
|
63
|
+
* then the free signup grant is claimed with that consent. The abuse gate
|
|
64
|
+
* still decides — consent is necessary, not sufficient — so read `grant`:
|
|
65
|
+
* `"granted"` (the grant has landed: this call topped the subscription credits up to `credits` — not added on top — or it had landed before), `"withheld"` (refused), `"revoked"` (taken back earlier; nothing moves), `"unclaimed"` (nothing moved — treat as a failure and let the user retry).
|
|
66
|
+
* Pass the browser signals from `collectSignupKeys()` and your app's slug.
|
|
67
|
+
*
|
|
68
|
+
* **Browser session only.** Usable from a first-party web app signed in
|
|
69
|
+
* with a Supabase session (the consent is a person's choice in a browser);
|
|
70
|
+
* an API key or OAuth app token is refused with 403. 409
|
|
71
|
+
* `welcome_offer_disabled` while the deployment has the offer off — show
|
|
72
|
+
* it only when `balance().welcomeOffer` is present. Cloud-only route: a
|
|
73
|
+
* self-hosted instance answers 404.
|
|
74
|
+
*/
|
|
75
|
+
claimWelcomeOffer(input = {}) {
|
|
76
|
+
return this.client.request("POST", "/v1/credits/welcome-offer/claim", {
|
|
77
|
+
body: input
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* `POST /v1/credits/welcome-offer/seen` → records that the one-time welcome
|
|
82
|
+
* popup was shown, so `balance().welcomeOffer.popupSeen` turns true on every
|
|
83
|
+
* app. Idempotent (the first stamp wins); a failed call only means the popup
|
|
84
|
+
* may show once more, so callers usually ignore errors.
|
|
85
|
+
*
|
|
86
|
+
* **Browser session only**, like {@link claimWelcomeOffer}: 403 for an API
|
|
87
|
+
* key or OAuth app token, 409 `welcome_offer_disabled` while the offer is
|
|
88
|
+
* off, 404 on a self-hosted instance.
|
|
89
|
+
*/
|
|
90
|
+
markWelcomeOfferSeen() {
|
|
91
|
+
return this.client.request("POST", "/v1/credits/welcome-offer/seen");
|
|
92
|
+
}
|
|
93
|
+
// NOTE: no `estimate(...)` helper. The backend exposes
|
|
94
|
+
// `POST /v1/credits/estimate-workflow` (body `{ nodes }` → `{ data: {
|
|
95
|
+
// totalCredits, nodeCount } }`), but no consumer has a settled shape for it
|
|
96
|
+
// yet (studio pre-checks `balance >= Σ modelCosts` client-side rather than
|
|
97
|
+
// calling an estimate endpoint). Adding it now would be inventing an API
|
|
98
|
+
// surface ahead of a real caller, so it's deliberately omitted — add it when
|
|
99
|
+
// a consumer needs it, shaped to that need.
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export { CreditsResource };
|
|
103
|
+
//# sourceMappingURL=chunk-4CXB7RA6.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-4CXB7RA6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/credits.ts"],"names":[],"mappings":";AAmLA,IAAM,iBAAA,GAAoB,EAAA;AAEnB,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpB,MAAM,OAAA,GAAgC;AACpC,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAO,OAAA;AAAA,MAC5B,KAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAA,CAAa,OAAA,GAAqC,EAAC,EAAoC;AACrF,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAgC,KAAA,EAAO,0BAAA,EAA4B;AAAA,MACpF,OAAO,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,MAAA;AAAO,KACvD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WAAW,GAAA,EAA0C;AACnD,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAA0B,MAAA,EAAQ,yBAAA,EAA2B;AAAA,MAC9E,MAAM,EAAE,MAAA,EAAQ,IAAI,KAAA,CAAM,CAAA,EAAG,iBAAiB,CAAA;AAAE,KACjD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,gBAAA,CAAiB,IAAA,GAAmB,EAAC,EAAoC;AACvE,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAgC,MAAA,EAAQ,gCAAA,EAAkC;AAAA,MAC3F,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,iBAAA,CAAkB,KAAA,GAAgC,EAAC,EAAqC;AACtF,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAiC,MAAA,EAAQ,iCAAA,EAAmC;AAAA,MAC7F,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,oBAAA,GAAwD;AACtD,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAgC,MAAA,EAAQ,gCAAgC,CAAA;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASF","file":"chunk-4CXB7RA6.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\n\n/**\n * Authenticated user's credit balance — the shape of `GET /v1/user/credits`'s\n * `data` field. Mirrors the canonical `UserBalance` from the backend billing\n * module (`backend/src/ee/billing/credits.ts`), the source of truth: keep this\n * in sync if that interface changes.\n */\nexport interface UserBalance {\n total: number\n subscription: number\n topup: number\n dailySpent: number\n dailyLimit: number | null\n monthlyAllocation: number\n /** Stored billing tier. Display should prefer `effectiveTier`. */\n tier: string\n /** Derived entitlement tier: \"payg\" when stored-free with purchased credits. */\n effectiveTier: string\n features: Record<string, unknown>\n periodEnd: string | null\n /** Credits earned for app usage (free tier only — earned by running flows). */\n appCreditsAllowance: number\n /** Present when a deployment uses an external shared wallet. Raw credits;\n * null means unavailable. Do not substitute the personal `total` balance. */\n externalWallet?: { available: number | null }\n /**\n * Where the account's free signup grant stands. `\"withheld\"` means the\n * account works but the grant did not land — show the activation path.\n * Absent where the deployment has no signup grant.\n */\n freeGrantState?: FreeGrantState\n /**\n * Present only with `freeGrantState: \"withheld\"`, when the claim showed no\n * browser signals at all: the app may say \"free credits need a regular\n * browser — reload\", because a reload in one judges the account again.\n */\n freeGrantNotice?: \"browser_unmeasured\"\n /**\n * The welcome-credits opt-in. PRESENT only while the deployment has the\n * offer switched on — absent means \"no popup, no banner, no block\".\n */\n welcomeOffer?: WelcomeOfferState\n}\n\n/** Where an account's free signup grant stands. */\nexport type FreeGrantState = \"unclaimed\" | \"granted\" | \"withheld\" | \"revoked\"\n\n/** `UserBalance.welcomeOffer` — what an app needs to show the welcome offer. */\nexport interface WelcomeOfferState {\n /** The one-time popup was already shown (see `markWelcomeOfferSeen`). */\n popupSeen: boolean\n /**\n * The account already has its credits (granted elsewhere) but still owes\n * the email consent: the web apps block creation until it is given — the\n * claim records it.\n */\n consentPending: boolean\n /** The credits a claim grants. Name this figure in the offer; never hard-code it. */\n credits: number\n}\n\n/** What `claimWelcomeOffer` sends: the browser signals plus the app answering. */\nexport interface WelcomeOfferClaimInput extends SignupKeys {\n /**\n * The answering app's slug (lowercase letters, digits and `-`, up to 40\n * characters), recorded with the consent. A value outside that grammar is\n * stored as absent, never refused.\n */\n sourceApp?: string\n /**\n * The interface language the user answered in — the id of a language Nodaro\n * ships, such as `\"en\"`, `\"ja\"` or `\"pt-BR\"`. Matched exactly and\n * case-sensitively: `\"en-US\"` or `\"pt-br\"` is stored as absent, never refused.\n * Recorded with the consent as the language of the LATEST consent: a later\n * \"yes\" in another language replaces it.\n */\n locale?: string\n}\n\n/** The answer of `POST /v1/credits/welcome-offer/claim`. */\nexport interface WelcomeOfferClaimResult {\n /** The email consent is recorded. */\n consent: \"granted\"\n /** Where the free grant stands after the claim — `\"withheld\"` when the abuse gate refused it. */\n grant: FreeGrantState\n /** The grant's figure. A grant tops the subscription credits UP TO it (it is not added on top), so a claim that lands it leaves the subscription credits at no less than this. */\n credits: number\n}\n\n/** The answer of `POST /v1/credits/welcome-offer/seen`. */\nexport interface WelcomeOfferSeenResult {\n ok: true\n}\n\n/**\n * Result of `POST /v1/credits/model-costs` — a batch cost lookup for editor\n * cost previews. `data` maps each priced identifier → its credit cost.\n *\n * Per-model fault isolation (the route runs the lookups under\n * `Promise.allSettled`): identifiers with no pricing row are reported in\n * `missing` (undisplayable until an operator seeds a price) and lookup\n * failures in `errors`, instead of failing the whole batch. Callers typically\n * render `'—'` for any identifier that lands in `missing`. The hard-fail\n * policy still triggers at reservation time when the user actually runs the\n * node — this preview lookup is intentionally lenient.\n */\nexport interface ModelCostsResult {\n data: Record<string, number>\n missing: string[]\n errors: string[]\n}\n\n/**\n * The two browser signals a claim reports — SHA-256 hex digests computed by\n * `@nodaro/sdk/signup-signals` (`collectSignupKeys`). Either may be absent:\n * a browser that cannot be measured still claims, and the server treats the\n * absence as what it is. Any other value is stored as absent server-side.\n */\nexport interface SignupKeys {\n browserKey?: string\n deviceKey?: string\n}\n\n/** The answer of `POST /v1/credits/claim-signup-grant`. */\nexport interface SignupGrantClaimResult {\n /** Where the account's free grant stands after this call. */\n state: FreeGrantState\n /** True only when THIS call moved the credits — a repeat is `false` with the same state. */\n granted: boolean\n}\n\n/**\n * One row of `GET /v1/credits/transactions` — a run's reservation and how it\n * settled.\n *\n * Which amount to read: a run first HOLDS credits and is then settled — charged\n * all or part of the hold, the rest returned. `credits_charged` is what the run\n * cost (`null` while the hold is still open, `0` once refunded); sum it for\n * spend. `credits_reserved` is the hold, which never changes. `credits_used`\n * is the same hold under its original name, kept for existing integrations.\n */\nexport interface CreditTransaction {\n id: string\n /** ISO-8601. Also the paging cursor: pass the last row's value as `cursor`. */\n created_at: string\n /** Settled charge; `null` while `status` is `\"reserved\"`, `0` when refunded. */\n credits_charged: number | null\n /** The hold taken when the run was accepted. */\n credits_reserved: number | null\n /** The hold, under its original name. Prefer `credits_charged`. */\n credits_used: number | null\n /** The model or operation the credits were for. */\n action: string | null\n provider: string | null\n /** Reservation lifecycle: `\"reserved\"`, `\"committed\"` or `\"refunded\"`. */\n status: string | null\n /** The caller's own billing details for the run (model, which pool paid, …). */\n metadata: Record<string, unknown>\n /** `\"workspace\"` when a class or team budget paid, not your balance. */\n payer: \"user\" | \"workspace\"\n workspaceId: string | null\n}\n\n/** A page of {@link CreditTransaction}s, newest first. */\nexport interface CreditTransactionsPage {\n data: CreditTransaction[]\n /** Pass as `cursor` for the next page; `null` when there are no more rows. */\n nextCursor: string | null\n}\n\nexport interface CreditTransactionsOptions {\n /** Rows per page, 1–50 (server default 20). */\n limit?: number\n /** The `nextCursor` of the previous page. */\n cursor?: string\n}\n\n/** Max identifiers per `model-costs` batch — the route caps the request at 50. */\nconst MODEL_COSTS_LIMIT = 50\n\nexport class CreditsResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * `GET /v1/user/credits` → the authenticated user's credit balance and tier\n * info. Throws `UnauthorizedError` (401) when signed out, and the SDK's\n * other typed errors on the usual statuses.\n */\n async balance(): Promise<UserBalance> {\n const res = await this.client.request<{ data: UserBalance }>(\n \"GET\",\n \"/v1/user/credits\",\n )\n return res.data\n }\n\n /**\n * `GET /v1/credits/transactions` → one page of the caller's credit\n * transactions, newest first, with `nextCursor` for the next page (`null`\n * at the end). Read `credits_charged` for what each run cost — it can be\n * below the hold (`credits_reserved`) and is `null` while the hold is open.\n * Cloud-only route: a self-hosted instance answers 404.\n */\n transactions(options: CreditTransactionsOptions = {}): Promise<CreditTransactionsPage> {\n return this.client.request<CreditTransactionsPage>(\"GET\", \"/v1/credits/transactions\", {\n query: { limit: options.limit, cursor: options.cursor },\n })\n }\n\n /**\n * `POST /v1/credits/model-costs` → per-identifier credit cost, for editor\n * cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers\n * (the route's request limit). Preserves the `{ data, missing, errors }`\n * fault-isolation shape verbatim (see {@link ModelCostsResult}).\n */\n modelCosts(ids: string[]): Promise<ModelCostsResult> {\n return this.client.request<ModelCostsResult>(\"POST\", \"/v1/credits/model-costs\", {\n body: { models: ids.slice(0, MODEL_COSTS_LIMIT) },\n })\n }\n\n /**\n * `POST /v1/credits/claim-signup-grant` → claims the account's free signup\n * grant, once, with the browser signals of the page making the claim.\n *\n * Call it once per page load as soon as the session is known, and never\n * wait on it for rendering: it is idempotent (a decided account answers\n * with its state and `granted: false`), it costs the user nothing when it\n * fails (the next load asks again), and the signals are what make the\n * claim worth sending — collect them with `collectSignupKeys()` from\n * `@nodaro/sdk/signup-signals` and pass whatever came back, `{}` included.\n * Cloud-only route: a self-hosted instance answers 404.\n */\n claimSignupGrant(keys: SignupKeys = {}): Promise<SignupGrantClaimResult> {\n return this.client.request<SignupGrantClaimResult>(\"POST\", \"/v1/credits/claim-signup-grant\", {\n body: keys,\n })\n }\n\n /**\n * `POST /v1/credits/welcome-offer/claim` → the user's \"yes\" to the welcome\n * offer, as ONE server action: the marketing-email consent is recorded,\n * then the free signup grant is claimed with that consent. The abuse gate\n * still decides — consent is necessary, not sufficient — so read `grant`:\n * `\"granted\"` (the grant has landed: this call topped the subscription credits up to `credits` — not added on top — or it had landed before), `\"withheld\"` (refused), `\"revoked\"` (taken back earlier; nothing moves), `\"unclaimed\"` (nothing moved — treat as a failure and let the user retry).\n * Pass the browser signals from `collectSignupKeys()` and your app's slug.\n *\n * **Browser session only.** Usable from a first-party web app signed in\n * with a Supabase session (the consent is a person's choice in a browser);\n * an API key or OAuth app token is refused with 403. 409\n * `welcome_offer_disabled` while the deployment has the offer off — show\n * it only when `balance().welcomeOffer` is present. Cloud-only route: a\n * self-hosted instance answers 404.\n */\n claimWelcomeOffer(input: WelcomeOfferClaimInput = {}): Promise<WelcomeOfferClaimResult> {\n return this.client.request<WelcomeOfferClaimResult>(\"POST\", \"/v1/credits/welcome-offer/claim\", {\n body: input,\n })\n }\n\n /**\n * `POST /v1/credits/welcome-offer/seen` → records that the one-time welcome\n * popup was shown, so `balance().welcomeOffer.popupSeen` turns true on every\n * app. Idempotent (the first stamp wins); a failed call only means the popup\n * may show once more, so callers usually ignore errors.\n *\n * **Browser session only**, like {@link claimWelcomeOffer}: 403 for an API\n * key or OAuth app token, 409 `welcome_offer_disabled` while the offer is\n * off, 404 on a self-hosted instance.\n */\n markWelcomeOfferSeen(): Promise<WelcomeOfferSeenResult> {\n return this.client.request<WelcomeOfferSeenResult>(\"POST\", \"/v1/credits/welcome-offer/seen\")\n }\n\n // NOTE: no `estimate(...)` helper. The backend exposes\n // `POST /v1/credits/estimate-workflow` (body `{ nodes }` → `{ data: {\n // totalCredits, nodeCount } }`), but no consumer has a settled shape for it\n // yet (studio pre-checks `balance >= Σ modelCosts` client-side rather than\n // calling an estimate endpoint). Adding it now would be inventing an API\n // surface ahead of a real caller, so it's deliberately omitted — add it when\n // a consumer needs it, shaped to that need.\n}\n"]}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { readSseStream } from './chunk-JMOKD6ZP.js';
|
|
2
|
+
|
|
3
|
+
// src/resources/media.ts
|
|
4
|
+
var MediaResource = class {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
client;
|
|
9
|
+
/**
|
|
10
|
+
* Download a social video (YouTube / TikTok / Instagram / X / Facebook) into
|
|
11
|
+
* your storage (`POST /v1/download-video`). `maxHeight` caps the resolution
|
|
12
|
+
* (default "best"); `sectionStartSec` + `sectionEndSec` (both-or-neither) fetch
|
|
13
|
+
* ONLY that time range instead of the whole video. A download that arrives
|
|
14
|
+
* with no audio stream FAILS by default (it is usually a degraded source
|
|
15
|
+
* response, and is retried through other routes first); pass
|
|
16
|
+
* `requireAudio: false` to accept a clip that really has no sound. Returns a
|
|
17
|
+
* `downloadId`; progress streams from
|
|
18
|
+
* `GET /v1/download-video/progress/:downloadId` (server-sent events) and the
|
|
19
|
+
* finished file lands in your library.
|
|
20
|
+
*/
|
|
21
|
+
downloadVideo(input) {
|
|
22
|
+
return this.client.request("POST", "/v1/download-video", { body: input });
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Stream the live progress of a {@link MediaResource.downloadVideo} import
|
|
26
|
+
* (`GET /v1/download-video/progress/:downloadId`, server-sent events) as an
|
|
27
|
+
* async iterable. Yields a {@link DownloadVideoProgress} roughly every 500ms
|
|
28
|
+
* until the download reaches `completed` (its event carries the stored
|
|
29
|
+
* `videoUrl`) or `failed` (its event carries `error`), then ends. The progress
|
|
30
|
+
* state expires server-side shortly after the download starts existing, so
|
|
31
|
+
* start iterating promptly after `downloadVideo` returns.
|
|
32
|
+
*
|
|
33
|
+
* No request timeout is applied (a large import legitimately takes minutes) —
|
|
34
|
+
* pass an `AbortSignal` to cancel from the caller.
|
|
35
|
+
*/
|
|
36
|
+
async *downloadVideoProgress(downloadId, opts = {}) {
|
|
37
|
+
const url = `${this.client.baseUrl}/v1/download-video/progress/${encodeURIComponent(downloadId)}`;
|
|
38
|
+
const token = await this.client.auth.getToken();
|
|
39
|
+
const res = await this.client.fetch(url, {
|
|
40
|
+
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
41
|
+
signal: opts.signal
|
|
42
|
+
});
|
|
43
|
+
yield* readSseStream(res, { label: "progress stream" });
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Copy an external media URL into your Nodaro storage (`POST /v1/save-to-storage`)
|
|
47
|
+
* — a server-side fetch, so nothing round-trips through the client. Poll
|
|
48
|
+
* `jobs.get(jobId)`.
|
|
49
|
+
*/
|
|
50
|
+
saveToStorage(input) {
|
|
51
|
+
return this.client.request("POST", "/v1/save-to-storage", { body: input });
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Composite 2–30 images into ONE large 2K/4K collage (`POST /v1/image-collage`).
|
|
55
|
+
* `layout` `"smart"` (default — justified rows at each image's exact aspect
|
|
56
|
+
* ratio, no cropping; the output height floats) or `"grid"` (uniform,
|
|
57
|
+
* letterboxed cells). `imageSizes` is index-aligned with `imageUrls` and
|
|
58
|
+
* gives per-image RELATIVE size hints for the smart layout: `0` auto
|
|
59
|
+
* ("don't care", default), `1` big (~2× linear vs medium), `2` medium,
|
|
60
|
+
* `3` small (~½ linear). All-equal hints change nothing; grid ignores them.
|
|
61
|
+
* For storyboards, set `numbered` to stamp a 1-based sequence badge at each
|
|
62
|
+
* image's corner (top-left by default; `badgePosition: "top-right"` moves it;
|
|
63
|
+
* in `imageUrls` order) and pass `imageLabels`
|
|
64
|
+
* (index-aligned with `imageUrls`; `null`/`""`/omitted = no caption for that
|
|
65
|
+
* image) to caption images after the number, e.g. `3 · Close-up`. Badges are
|
|
66
|
+
* an overlay only — they never change the layout, the output size or the
|
|
67
|
+
* credit cost. Poll `jobs.get(jobId)` for the finished image.
|
|
68
|
+
*/
|
|
69
|
+
imageCollage(input) {
|
|
70
|
+
return this.client.request("POST", "/v1/image-collage", { body: input });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Place 1–12 layers — pictures, real text, QR codes, shapes — on a base image,
|
|
74
|
+
* pixel-exactly (`POST /v1/image-overlay`) — local, deterministic, no AI.
|
|
75
|
+
* Every layer position/size is a PERCENT of the base image: `anchor` (nine
|
|
76
|
+
* positions, default `"center"`), `x`/`y` (offset from the anchor in % of
|
|
77
|
+
* the base width/height; negative on a right/bottom anchor moves inward),
|
|
78
|
+
* `width` (% of the base width, default 25 — height follows the layer's
|
|
79
|
+
* aspect unless `height` is set). Plus `opacity` (0..1), `rotation`
|
|
80
|
+
* (degrees), `blend` (`"over"` | `"multiply"` | `"screen"`), `fit`,
|
|
81
|
+
* `shadow` and `roundedCorners`. The output keeps the base's pixel size
|
|
82
|
+
* unless `canvas` is set. Flat credit cost. Poll `jobs.get(jobId)` for the
|
|
83
|
+
* finished image.
|
|
84
|
+
*/
|
|
85
|
+
imageOverlay(input) {
|
|
86
|
+
return this.client.request("POST", "/v1/image-overlay", { body: input });
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Ask a vision model WHERE one overlay layer should sit on a base image
|
|
90
|
+
* (`POST /v1/image-overlay/suggest-placement`) — it reads the picture and
|
|
91
|
+
* keeps the element off the faces, the subject and the busiest texture.
|
|
92
|
+
* The answer comes back in {@link MediaResource.imageOverlay}'s own percent
|
|
93
|
+
* units — `anchor`, `x`/`y` offsets, `width` — so it drops straight onto a
|
|
94
|
+
* layer (`const { reason, ...box } = placement`), plus a one-sentence
|
|
95
|
+
* `reason` you can show a user. Nothing is composited here: apply the
|
|
96
|
+
* placement yourself.
|
|
97
|
+
*
|
|
98
|
+
* `layerAspect` is the element's width / height (1 = square, the default) so
|
|
99
|
+
* the proposed box stays in proportion; `intent` says what the element is
|
|
100
|
+
* ("a logo", "a price badge"); `safeArea` is the always-visible region as
|
|
101
|
+
* fractions of the canvas (a platform preset's safe area), which the
|
|
102
|
+
* placement is kept inside. Unlike the other media calls this one answers
|
|
103
|
+
* synchronously — there is nothing to poll; `jobId` is the billing record
|
|
104
|
+
* (one image-to-text call).
|
|
105
|
+
*/
|
|
106
|
+
suggestOverlayPlacement(input) {
|
|
107
|
+
return this.client.request(
|
|
108
|
+
"POST",
|
|
109
|
+
"/v1/image-overlay/suggest-placement",
|
|
110
|
+
{ body: input }
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Trim a video to a range (`POST /v1/trim-video`). Give the range in whichever
|
|
115
|
+
* unit fits: `startTime`/`endTime` seconds, `trim*Frames`, `trim*Seconds`, or
|
|
116
|
+
* `keepFirst`/`keepLastSeconds`. Poll `jobs.get(jobId)`.
|
|
117
|
+
*/
|
|
118
|
+
trimVideo(input) {
|
|
119
|
+
return this.client.request("POST", "/v1/trim-video", { body: input });
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Burn captions into a video (`POST /v1/add-captions`). Give the words as
|
|
123
|
+
* `text`, word-timed `captions[]`, or let it transcribe (`autoTranscribe`,
|
|
124
|
+
* the default when neither is set).
|
|
125
|
+
*
|
|
126
|
+
* `style: "subtitle"` renders statically (FFmpeg) UNLESS it carries a styling
|
|
127
|
+
* lever, in which case it — like the KINETIC styles (`word-highlight` /
|
|
128
|
+
* `karaoke` / `tiktok-words` / `word-pop` / `bouncy`) — renders via Remotion.
|
|
129
|
+
* `look` picks a preset — `outline` (Montserrat 900, UPPERCASE, black outline,
|
|
130
|
+
* yellow spoken word — the TikTok/Reels read) or `clean`; an UNSET look renders
|
|
131
|
+
* as `outline`. The explicit STYLING levers (`fontFamily`, `fontWeight`,
|
|
132
|
+
* `strokeColor`/`strokeWidth`, `uppercase`, `positionY`, `maxWordsPerLine`)
|
|
133
|
+
* override individual fields of it and now apply to `subtitle` too. Only
|
|
134
|
+
* `highlightColor` (the spoken-word cursor) and `animate` stay kinetic-only
|
|
135
|
+
* and are REJECTED on `subtitle`.
|
|
136
|
+
*
|
|
137
|
+
* `animate` (default true) freezes the per-word MOTION on the kinetic styles
|
|
138
|
+
* when set to false — the grouping, line-holding and spoken-word highlight
|
|
139
|
+
* stay; only the movement stops.
|
|
140
|
+
*
|
|
141
|
+
* `maxWordsPerLine` (1-20) caps how many words a line — or a `tiktok-words`
|
|
142
|
+
* page — may hold, on top of the width budget / sentence ends / pauses that
|
|
143
|
+
* already close one; it is inert on `word-pop`, which is always one word.
|
|
144
|
+
* Like every lever here it exists top-level AND per segment, and a segment
|
|
145
|
+
* that does not name its own inherits the top-level value.
|
|
146
|
+
*
|
|
147
|
+
* `segments[]` applies DIFFERENT treatments to non-overlapping time ranges in
|
|
148
|
+
* one call (e.g. a large top intro, then a small bottom body); a segment that
|
|
149
|
+
* names its own `look` starts fresh from that preset and does not inherit the
|
|
150
|
+
* top-level explicit levers. Poll `jobs.get(jobId)`.
|
|
151
|
+
*
|
|
152
|
+
* `word-highlight` shows ONE held line at a time and a word's
|
|
153
|
+
* `startMs`/`endMs` is its SPOKEN window (what times the highlight, not how
|
|
154
|
+
* long the text is on screen) — so `captions[]` can be handed over verbatim
|
|
155
|
+
* from an `audio.transcribe()` job's `output_data.words`, with
|
|
156
|
+
* `autoTranscribe: false`.
|
|
157
|
+
*/
|
|
158
|
+
addCaptions(input) {
|
|
159
|
+
const { autoTranscribe, transcribeProvider, ...rest } = input;
|
|
160
|
+
const body = {
|
|
161
|
+
...rest,
|
|
162
|
+
...autoTranscribe !== void 0 ? { auto_transcribe: autoTranscribe } : {},
|
|
163
|
+
...transcribeProvider !== void 0 ? { transcribe_provider: transcribeProvider } : {}
|
|
164
|
+
};
|
|
165
|
+
return this.client.request("POST", "/v1/add-captions", { body });
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Trim (and extract) audio from a video or audio source
|
|
169
|
+
* (`POST /v1/trim-audio`) to `[startTime, endTime]` seconds, in `audioFormat`
|
|
170
|
+
* (`mp3` default / `wav` / `aac`). Poll `jobs.get(jobId)`.
|
|
171
|
+
*/
|
|
172
|
+
trimAudio(input) {
|
|
173
|
+
return this.client.request("POST", "/v1/trim-audio", { body: input });
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Cut a video and/or an audio file into consecutive parts
|
|
177
|
+
* (`POST /v1/split-media`). Every part is at most `chunkDuration` seconds and
|
|
178
|
+
* at least `minPartDuration` (default 4, never above `chunkDuration`) — a
|
|
179
|
+
* short leftover is evened out with the parts before it. Video is cut on
|
|
180
|
+
* whole frames with each part's sound matching its picture; audio parts are
|
|
181
|
+
* sample-exact, in `audioFormat` (`mp3` default / `wav` / `aac`). With both
|
|
182
|
+
* sources each is split on its own. At most 200 parts per input. Poll
|
|
183
|
+
* `jobs.get(jobId)`; the parts are on the completed job's `output_data` —
|
|
184
|
+
* see {@link SplitMediaOutput}.
|
|
185
|
+
*/
|
|
186
|
+
splitMedia(input) {
|
|
187
|
+
return this.client.request("POST", "/v1/split-media", { body: input });
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Turn one still image + one audio track into an MP4
|
|
191
|
+
* (`POST /v1/still-to-video`) — locally rendered (FFmpeg), no AI model,
|
|
192
|
+
* zero credits. The output duration IS the audio's duration; there is no
|
|
193
|
+
* duration field. Optional `motion` animates the still (zoom / pan /
|
|
194
|
+
* ken-burns) at `intensity` 1–10. `fit: "contain"` letterboxes with
|
|
195
|
+
* `padColor` instead of cropping. Poll `jobs.get(jobId)`.
|
|
196
|
+
*/
|
|
197
|
+
stillToVideo(input) {
|
|
198
|
+
return this.client.request("POST", "/v1/still-to-video", { body: input });
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Turn 2–100 images + one optional audio track into an MP4 slideshow
|
|
202
|
+
* (`POST /v1/slideshow`) — locally rendered (FFmpeg), zero credits. With
|
|
203
|
+
* audio, the output duration IS the audio's duration (equal split unless
|
|
204
|
+
* `imageDurations` pins rows — null entries = auto; mismatched pinned sums
|
|
205
|
+
* scale proportionally and the factor is disclosed in the job output).
|
|
206
|
+
* Without audio: N × `perImageDuration`, silent output. Transitions
|
|
207
|
+
* consume the outgoing slide, so totals stay exact. For a single image use
|
|
208
|
+
* `stillToVideo`. Poll `jobs.get(jobId)`.
|
|
209
|
+
*/
|
|
210
|
+
slideshow(input) {
|
|
211
|
+
return this.client.request("POST", "/v1/slideshow", { body: input });
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Place 1–20 timed image layers over a video (`POST /v1/video-overlay`) —
|
|
215
|
+
* rendered locally (FFmpeg) in one pass, no AI; the base audio is kept
|
|
216
|
+
* untouched. Each layer has an `imageUrl`, a `start` and an optional `end`
|
|
217
|
+
* in seconds (no `end` = to the end of the video) and a placement: a
|
|
218
|
+
* `preset` (`"card"`, `"corner-badge"` with a `corner`, `"full-frame"`) or
|
|
219
|
+
* an explicit box in {@link MediaResource.imageOverlay}'s percent vocabulary
|
|
220
|
+
* (`anchor`, `x`, `y`, `width`, `height`, `fit`) — an explicit box field
|
|
221
|
+
* overrides the preset, and a layer with neither is a corner badge
|
|
222
|
+
* (bottom-right, or the `corner` it names). `outputAspect` renders onto a
|
|
223
|
+
* 16:9 / 9:16 / 1:1 / 4:5 canvas
|
|
224
|
+
* (`baseFit` cover by default; `backgroundColor` pads `contain`). Poll
|
|
225
|
+
* `jobs.get(jobId)`: the output carries `videoUrl`, `thumbnailUrl`, `width`,
|
|
226
|
+
* `height`, `durationSec` and `warnings[]` (a layer clipped or skipped at the
|
|
227
|
+
* video's end, an animated image's first frame, re-encoded audio).
|
|
228
|
+
*/
|
|
229
|
+
videoOverlay(input) {
|
|
230
|
+
return this.client.request("POST", "/v1/video-overlay", { body: input });
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Track a subject described in plain text through a video and get a
|
|
234
|
+
* black-and-white MASK VIDEO back (`POST /v1/video-mask`, SAM 3.1 by default,
|
|
235
|
+
* or `provider: "sam-3"` at half the price) — white = the subject. Clips up
|
|
236
|
+
* to 5 minutes at 30 fps (a faster clip counts
|
|
237
|
+
* proportionally longer), priced by the clip's length. Poll
|
|
238
|
+
* `jobs.get(jobId)`: the output carries `videoUrl` (the mask), `width`,
|
|
239
|
+
* `height`, `frames` and `coverage` (the fraction of pixels selected). Feed
|
|
240
|
+
* the mask to {@link MediaResource.maskComposite}.
|
|
241
|
+
*/
|
|
242
|
+
videoMask(input) {
|
|
243
|
+
return this.client.request("POST", "/v1/video-mask", { body: input });
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Place a foreground video over a background video through a mask video
|
|
247
|
+
* (`POST /v1/mask-composite`; white = foreground) — local FFmpeg, no AI.
|
|
248
|
+
* The result follows the foreground's size, frame rate and length; the
|
|
249
|
+
* background is fitted (`backgroundFit`, default cover) and loops when
|
|
250
|
+
* shorter; the mask holds its last frame when shorter. Optional
|
|
251
|
+
* `invertMask`, `feather` (0–20 px), `grow` (−10–10 px) and `audioSource`
|
|
252
|
+
* (foreground / background / mix / none). Priced per started 5 seconds of
|
|
253
|
+
* the result (foreground up to 300 s). Poll `jobs.get(jobId)` for `videoUrl`.
|
|
254
|
+
*/
|
|
255
|
+
maskComposite(input) {
|
|
256
|
+
return this.client.request("POST", "/v1/mask-composite", { body: input });
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Probe a social video's metadata (`POST /v1/video-metadata`) — duration,
|
|
260
|
+
* dimensions, title, live status — WITHOUT downloading it. A direct read, not a
|
|
261
|
+
* job. Use it to decide whether to trim before importing.
|
|
262
|
+
*/
|
|
263
|
+
videoMetadata(input) {
|
|
264
|
+
return this.client.request("POST", "/v1/video-metadata", { body: input });
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Cut or crop a stored file (`POST /v1/media/process`) — synchronous and
|
|
268
|
+
* free, the source-preparation sibling of the priced `trimVideo` node.
|
|
269
|
+
* `trim` is `[startTime, endTime]` in seconds; `deleteSource: true` removes
|
|
270
|
+
* the source object afterwards when it is yours and nothing else references
|
|
271
|
+
* it ("the cut replaces the original"). Answers the stored file.
|
|
272
|
+
*/
|
|
273
|
+
process(input) {
|
|
274
|
+
return this.client.request("POST", "/v1/media/process", { body: input });
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
export { MediaResource };
|
|
279
|
+
//# sourceMappingURL=chunk-4NLVBYMW.js.map
|
|
280
|
+
//# sourceMappingURL=chunk-4NLVBYMW.js.map
|