@selvajs/selva 2.0.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/LICENSE +21 -0
- package/README.md +9 -0
- package/build/client/_app/immutable/assets/0.B0phAlf7.css +1 -0
- package/build/client/_app/immutable/assets/0.B0phAlf7.css.br +0 -0
- package/build/client/_app/immutable/assets/0.B0phAlf7.css.gz +0 -0
- package/build/client/_app/immutable/assets/20.DzF5JyuX.css +1 -0
- package/build/client/_app/immutable/assets/20.DzF5JyuX.css.br +0 -0
- package/build/client/_app/immutable/assets/20.DzF5JyuX.css.gz +0 -0
- package/build/client/_app/immutable/assets/index.CV-KWLNP.css +1 -0
- package/build/client/_app/immutable/assets/index.CV-KWLNP.css.br +1 -0
- package/build/client/_app/immutable/assets/index.CV-KWLNP.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1s2jTHrf.js +1 -0
- package/build/client/_app/immutable/chunks/1s2jTHrf.js.br +0 -0
- package/build/client/_app/immutable/chunks/1s2jTHrf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/2XlIPTRw.js +1 -0
- package/build/client/_app/immutable/chunks/2XlIPTRw.js.br +1 -0
- package/build/client/_app/immutable/chunks/2XlIPTRw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/2_FEXmq1.js +9 -0
- package/build/client/_app/immutable/chunks/2_FEXmq1.js.br +0 -0
- package/build/client/_app/immutable/chunks/2_FEXmq1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/2dX6Wjni.js +1 -0
- package/build/client/_app/immutable/chunks/2dX6Wjni.js.br +0 -0
- package/build/client/_app/immutable/chunks/2dX6Wjni.js.gz +0 -0
- package/build/client/_app/immutable/chunks/4tskcAVN.js +1 -0
- package/build/client/_app/immutable/chunks/4tskcAVN.js.br +0 -0
- package/build/client/_app/immutable/chunks/4tskcAVN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/4y4xLOS_.js +1 -0
- package/build/client/_app/immutable/chunks/4y4xLOS_.js.br +0 -0
- package/build/client/_app/immutable/chunks/4y4xLOS_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/AEyooZaf.js +1 -0
- package/build/client/_app/immutable/chunks/AEyooZaf.js.br +0 -0
- package/build/client/_app/immutable/chunks/AEyooZaf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B1aRL9Hz.js +1 -0
- package/build/client/_app/immutable/chunks/B1aRL9Hz.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1aRL9Hz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8uG8z2c.js +1 -0
- package/build/client/_app/immutable/chunks/B8uG8z2c.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8uG8z2c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8zY50Bc.js +1 -0
- package/build/client/_app/immutable/chunks/B8zY50Bc.js.br +5 -0
- package/build/client/_app/immutable/chunks/B8zY50Bc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BCse3N0b.js +1 -0
- package/build/client/_app/immutable/chunks/BCse3N0b.js.br +0 -0
- package/build/client/_app/immutable/chunks/BCse3N0b.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BFXFuY-o.js +3 -0
- package/build/client/_app/immutable/chunks/BFXFuY-o.js.br +0 -0
- package/build/client/_app/immutable/chunks/BFXFuY-o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BGxzXVpM.js +1 -0
- package/build/client/_app/immutable/chunks/BGxzXVpM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BGxzXVpM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BM4_iXSA.js +1 -0
- package/build/client/_app/immutable/chunks/BM4_iXSA.js.br +0 -0
- package/build/client/_app/immutable/chunks/BM4_iXSA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BMGykAfL.js +2 -0
- package/build/client/_app/immutable/chunks/BMGykAfL.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMGykAfL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNScKugQ.js +1 -0
- package/build/client/_app/immutable/chunks/BNScKugQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNScKugQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNzEBMy8.js +1 -0
- package/build/client/_app/immutable/chunks/BNzEBMy8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNzEBMy8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BU9URCkw.js +1 -0
- package/build/client/_app/immutable/chunks/BU9URCkw.js.br +0 -0
- package/build/client/_app/immutable/chunks/BU9URCkw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BW4xleRz.js +1 -0
- package/build/client/_app/immutable/chunks/BW4xleRz.js.br +0 -0
- package/build/client/_app/immutable/chunks/BW4xleRz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BZmrLQwT.js +1 -0
- package/build/client/_app/immutable/chunks/BZmrLQwT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BZmrLQwT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_Lmgh7q.js +1 -0
- package/build/client/_app/immutable/chunks/B_Lmgh7q.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_Lmgh7q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BapAUJpM.js +1 -0
- package/build/client/_app/immutable/chunks/BapAUJpM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BapAUJpM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bb9xebuT.js +1 -0
- package/build/client/_app/immutable/chunks/Bb9xebuT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bb9xebuT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BjkQG7dw.js +1 -0
- package/build/client/_app/immutable/chunks/BjkQG7dw.js.br +0 -0
- package/build/client/_app/immutable/chunks/BjkQG7dw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bmz9gLBz.js +1 -0
- package/build/client/_app/immutable/chunks/Bmz9gLBz.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bmz9gLBz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bnpwcepm.js +1 -0
- package/build/client/_app/immutable/chunks/Bnpwcepm.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bnpwcepm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BoR6OKl6.js +1 -0
- package/build/client/_app/immutable/chunks/BoR6OKl6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoR6OKl6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Br5bpmJC.js +1 -0
- package/build/client/_app/immutable/chunks/Br5bpmJC.js.br +0 -0
- package/build/client/_app/immutable/chunks/Br5bpmJC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BxCHY0iG.js +1 -0
- package/build/client/_app/immutable/chunks/BxCHY0iG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxCHY0iG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C1Sz0rtw.js +1 -0
- package/build/client/_app/immutable/chunks/C1Sz0rtw.js.br +0 -0
- package/build/client/_app/immutable/chunks/C1Sz0rtw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C1aQuqo_.js +2 -0
- package/build/client/_app/immutable/chunks/C1aQuqo_.js.br +0 -0
- package/build/client/_app/immutable/chunks/C1aQuqo_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C26nmevH.js +1 -0
- package/build/client/_app/immutable/chunks/C26nmevH.js.br +0 -0
- package/build/client/_app/immutable/chunks/C26nmevH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8ko2SLk.js +1 -0
- package/build/client/_app/immutable/chunks/C8ko2SLk.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8ko2SLk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CAMhfNhW.js +1 -0
- package/build/client/_app/immutable/chunks/CAMhfNhW.js.br +0 -0
- package/build/client/_app/immutable/chunks/CAMhfNhW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CEnIp_6Y.js +1 -0
- package/build/client/_app/immutable/chunks/CEnIp_6Y.js.br +3 -0
- package/build/client/_app/immutable/chunks/CEnIp_6Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CMjc_m7Z.js +1 -0
- package/build/client/_app/immutable/chunks/CMjc_m7Z.js.br +0 -0
- package/build/client/_app/immutable/chunks/CMjc_m7Z.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CRRzXoPz.js +5 -0
- package/build/client/_app/immutable/chunks/CRRzXoPz.js.br +0 -0
- package/build/client/_app/immutable/chunks/CRRzXoPz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXh1ITwj.js +1 -0
- package/build/client/_app/immutable/chunks/CXh1ITwj.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXh1ITwj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZ1oTCKP.js +1 -0
- package/build/client/_app/immutable/chunks/CZ1oTCKP.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZ1oTCKP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cbu9Tg11.js +1 -0
- package/build/client/_app/immutable/chunks/Cbu9Tg11.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cbu9Tg11.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CcYNc8-G.js +1 -0
- package/build/client/_app/immutable/chunks/CcYNc8-G.js.br +0 -0
- package/build/client/_app/immutable/chunks/CcYNc8-G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cdcajer6.js +1 -0
- package/build/client/_app/immutable/chunks/Cdcajer6.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cdcajer6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ce2MupFq.js +1 -0
- package/build/client/_app/immutable/chunks/Ce2MupFq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ce2MupFq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CfP1DoGT.js +1 -0
- package/build/client/_app/immutable/chunks/CfP1DoGT.js.br +0 -0
- package/build/client/_app/immutable/chunks/CfP1DoGT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CfhPDo21.js +1 -0
- package/build/client/_app/immutable/chunks/CfhPDo21.js.br +1 -0
- package/build/client/_app/immutable/chunks/CfhPDo21.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ChSMnQMB.js +2 -0
- package/build/client/_app/immutable/chunks/ChSMnQMB.js.br +0 -0
- package/build/client/_app/immutable/chunks/ChSMnQMB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkW8YtSm.js +1 -0
- package/build/client/_app/immutable/chunks/CkW8YtSm.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkW8YtSm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CoR7xVWs.js +1 -0
- package/build/client/_app/immutable/chunks/CoR7xVWs.js.br +0 -0
- package/build/client/_app/immutable/chunks/CoR7xVWs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CpGv0MSX.js +1 -0
- package/build/client/_app/immutable/chunks/CpGv0MSX.js.br +0 -0
- package/build/client/_app/immutable/chunks/CpGv0MSX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cvr8AlQE.js +1 -0
- package/build/client/_app/immutable/chunks/Cvr8AlQE.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cvr8AlQE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0QMYypb.js +1 -0
- package/build/client/_app/immutable/chunks/D0QMYypb.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0QMYypb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D40b34QZ.js +1 -0
- package/build/client/_app/immutable/chunks/D40b34QZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/D40b34QZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6MI_dhi.js +1 -0
- package/build/client/_app/immutable/chunks/D6MI_dhi.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6MI_dhi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D7PHp8xb.js +1 -0
- package/build/client/_app/immutable/chunks/D7PHp8xb.js.br +0 -0
- package/build/client/_app/immutable/chunks/D7PHp8xb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D7l1JayF.js +1 -0
- package/build/client/_app/immutable/chunks/D7l1JayF.js.br +0 -0
- package/build/client/_app/immutable/chunks/D7l1JayF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D99uXqZb.js +1 -0
- package/build/client/_app/immutable/chunks/D99uXqZb.js.br +0 -0
- package/build/client/_app/immutable/chunks/D99uXqZb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DEBBEmC0.js +1 -0
- package/build/client/_app/immutable/chunks/DEBBEmC0.js.br +0 -0
- package/build/client/_app/immutable/chunks/DEBBEmC0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHWrMZkd.js +1 -0
- package/build/client/_app/immutable/chunks/DHWrMZkd.js.br +0 -0
- package/build/client/_app/immutable/chunks/DHWrMZkd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DNsLImlA.js +64 -0
- package/build/client/_app/immutable/chunks/DNsLImlA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNsLImlA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DRDjLZb3.js +1 -0
- package/build/client/_app/immutable/chunks/DRDjLZb3.js.br +3 -0
- package/build/client/_app/immutable/chunks/DRDjLZb3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DTJeGfAL.js +1 -0
- package/build/client/_app/immutable/chunks/DTJeGfAL.js.br +0 -0
- package/build/client/_app/immutable/chunks/DTJeGfAL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DZFqETAQ.js +1 -0
- package/build/client/_app/immutable/chunks/DZFqETAQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZFqETAQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D_wr-JLf.js +1 -0
- package/build/client/_app/immutable/chunks/D_wr-JLf.js.br +0 -0
- package/build/client/_app/immutable/chunks/D_wr-JLf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DdaJZmuM.js +1 -0
- package/build/client/_app/immutable/chunks/DdaJZmuM.js.br +0 -0
- package/build/client/_app/immutable/chunks/DdaJZmuM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dl4WTuMB.js +1 -0
- package/build/client/_app/immutable/chunks/Dl4WTuMB.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dl4WTuMB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Doks8ISn.js +1 -0
- package/build/client/_app/immutable/chunks/Doks8ISn.js.br +0 -0
- package/build/client/_app/immutable/chunks/Doks8ISn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js +1 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +2 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/E3yOQTT0.js +1 -0
- package/build/client/_app/immutable/chunks/E3yOQTT0.js.br +0 -0
- package/build/client/_app/immutable/chunks/E3yOQTT0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Gxlzmh6y.js +1 -0
- package/build/client/_app/immutable/chunks/Gxlzmh6y.js.br +0 -0
- package/build/client/_app/immutable/chunks/Gxlzmh6y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ib-7xmHT.js +1 -0
- package/build/client/_app/immutable/chunks/Ib-7xmHT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ib-7xmHT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/P4Np3c9O.js +1 -0
- package/build/client/_app/immutable/chunks/P4Np3c9O.js.br +0 -0
- package/build/client/_app/immutable/chunks/P4Np3c9O.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Zf7VV5ZB.js +1 -0
- package/build/client/_app/immutable/chunks/Zf7VV5ZB.js.br +0 -0
- package/build/client/_app/immutable/chunks/Zf7VV5ZB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_OLpdTiI.js +1 -0
- package/build/client/_app/immutable/chunks/_OLpdTiI.js.br +0 -0
- package/build/client/_app/immutable/chunks/_OLpdTiI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/azBeeLR0.js +1 -0
- package/build/client/_app/immutable/chunks/azBeeLR0.js.br +0 -0
- package/build/client/_app/immutable/chunks/azBeeLR0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/gMllmzma.js +1 -0
- package/build/client/_app/immutable/chunks/gMllmzma.js.br +0 -0
- package/build/client/_app/immutable/chunks/gMllmzma.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hRoV10UM.js +1 -0
- package/build/client/_app/immutable/chunks/hRoV10UM.js.br +0 -0
- package/build/client/_app/immutable/chunks/hRoV10UM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/iEBlyxZv.js +1 -0
- package/build/client/_app/immutable/chunks/iEBlyxZv.js.br +0 -0
- package/build/client/_app/immutable/chunks/iEBlyxZv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/jFKgkeON.js +1 -0
- package/build/client/_app/immutable/chunks/jFKgkeON.js.br +0 -0
- package/build/client/_app/immutable/chunks/jFKgkeON.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ooPBmYPj.js +1 -0
- package/build/client/_app/immutable/chunks/ooPBmYPj.js.br +0 -0
- package/build/client/_app/immutable/chunks/ooPBmYPj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pRg-f8xU.js +1 -0
- package/build/client/_app/immutable/chunks/pRg-f8xU.js.br +0 -0
- package/build/client/_app/immutable/chunks/pRg-f8xU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/uINs3xv3.js +1 -0
- package/build/client/_app/immutable/chunks/uINs3xv3.js.br +0 -0
- package/build/client/_app/immutable/chunks/uINs3xv3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wamM80bu.js +1 -0
- package/build/client/_app/immutable/chunks/wamM80bu.js.br +0 -0
- package/build/client/_app/immutable/chunks/wamM80bu.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CY1cyDxx.js +2 -0
- package/build/client/_app/immutable/entry/app.CY1cyDxx.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CY1cyDxx.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.ByTVZFMZ.js +1 -0
- package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.br +2 -0
- package/build/client/_app/immutable/entry/start.ByTVZFMZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CQbbSrko.js +1 -0
- package/build/client/_app/immutable/nodes/0.CQbbSrko.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CQbbSrko.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.WcE6FOcF.js +1 -0
- package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.WcE6FOcF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.Bl4yPogx.js +3 -0
- package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.Bl4yPogx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.kVvSmSNV.js +2 -0
- package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.kVvSmSNV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.BoPfAFdi.js +1 -0
- package/build/client/_app/immutable/nodes/12.BoPfAFdi.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.BoPfAFdi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.JyGUEsdb.js +2 -0
- package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.JyGUEsdb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.BbJglRXt.js +2 -0
- package/build/client/_app/immutable/nodes/14.BbJglRXt.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.BbJglRXt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.94-Zje0s.js +13 -0
- package/build/client/_app/immutable/nodes/15.94-Zje0s.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.94-Zje0s.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.DRADdurD.js +6 -0
- package/build/client/_app/immutable/nodes/16.DRADdurD.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.DRADdurD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.DOsqdwdd.js +2 -0
- package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.DOsqdwdd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.BpVlwZ30.js +1 -0
- package/build/client/_app/immutable/nodes/18.BpVlwZ30.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.BpVlwZ30.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.S2J54AdY.js +2 -0
- package/build/client/_app/immutable/nodes/19.S2J54AdY.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.S2J54AdY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js +1 -0
- package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CKVtP2Ky.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.BCasu2g4.js +4116 -0
- package/build/client/_app/immutable/nodes/20.BCasu2g4.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.BCasu2g4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.C1aTaoAB.js +3 -0
- package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.C1aTaoAB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.DP5Be3HR.js +16 -0
- package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.DP5Be3HR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.BB6fXxnh.js +6 -0
- package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.BB6fXxnh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/25.oeBaWIUn.js +1 -0
- package/build/client/_app/immutable/nodes/25.oeBaWIUn.js.br +0 -0
- package/build/client/_app/immutable/nodes/25.oeBaWIUn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/26.lPx5SjN1.js +3 -0
- package/build/client/_app/immutable/nodes/26.lPx5SjN1.js.br +0 -0
- package/build/client/_app/immutable/nodes/26.lPx5SjN1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.DB7PVQXo.js +4 -0
- package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.DB7PVQXo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js +4 -0
- package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.Cf2R7A3f.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.CyJS5sye.js +2 -0
- package/build/client/_app/immutable/nodes/29.CyJS5sye.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.CyJS5sye.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DWyky0UV.js +1 -0
- package/build/client/_app/immutable/nodes/3.DWyky0UV.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DWyky0UV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.BFpYKBJh.js +2 -0
- package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.BFpYKBJh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/31.DKnO7o1W.js +2 -0
- package/build/client/_app/immutable/nodes/31.DKnO7o1W.js.br +0 -0
- package/build/client/_app/immutable/nodes/31.DKnO7o1W.js.gz +0 -0
- package/build/client/_app/immutable/nodes/32.D4xYDWvG.js +3 -0
- package/build/client/_app/immutable/nodes/32.D4xYDWvG.js.br +0 -0
- package/build/client/_app/immutable/nodes/32.D4xYDWvG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.0a-qdY5B.js +1 -0
- package/build/client/_app/immutable/nodes/4.0a-qdY5B.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.0a-qdY5B.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BzQBSRbS.js +1 -0
- package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BzQBSRbS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js +1 -0
- package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.gJ2nhxWc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.tBTDolnc.js +1 -0
- package/build/client/_app/immutable/nodes/7.tBTDolnc.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.tBTDolnc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BJK9n85D.js +2 -0
- package/build/client/_app/immutable/nodes/8.BJK9n85D.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BJK9n85D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.un0j6nRP.js +1 -0
- package/build/client/_app/immutable/nodes/9.un0j6nRP.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.un0j6nRP.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +1 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/baseHDR.hdr +0 -0
- package/build/client/favicon/apple-touch-icon.png +0 -0
- package/build/client/favicon/favicon-96x96.png +0 -0
- package/build/client/favicon/favicon.ico +0 -0
- package/build/client/favicon/favicon.svg +1 -0
- package/build/client/favicon/favicon.svg.br +0 -0
- package/build/client/favicon/favicon.svg.gz +0 -0
- package/build/client/favicon/site.webmanifest +21 -0
- package/build/client/favicon/web-app-manifest-192x192.png +0 -0
- package/build/client/favicon/web-app-manifest-512x512.png +0 -0
- package/build/client/robots.txt +3 -0
- package/build/client/robots.txt.br +0 -0
- package/build/client/robots.txt.gz +0 -0
- package/build/env.js +94 -0
- package/build/handler.js +1494 -0
- package/build/index.js +345 -0
- package/build/server/chunks/0-BRU03dEw.js +55 -0
- package/build/server/chunks/0-BRU03dEw.js.map +1 -0
- package/build/server/chunks/1-m_oCIIXD.js +9 -0
- package/build/server/chunks/1-m_oCIIXD.js.map +1 -0
- package/build/server/chunks/10-J_ZMrbXX.js +220 -0
- package/build/server/chunks/10-J_ZMrbXX.js.map +1 -0
- package/build/server/chunks/11-Dz77N9MO.js +57 -0
- package/build/server/chunks/11-Dz77N9MO.js.map +1 -0
- package/build/server/chunks/12-CrOqT0Q5.js +52 -0
- package/build/server/chunks/12-CrOqT0Q5.js.map +1 -0
- package/build/server/chunks/13-DQGOyx8W.js +56 -0
- package/build/server/chunks/13-DQGOyx8W.js.map +1 -0
- package/build/server/chunks/14-Dl5jyPyO.js +99 -0
- package/build/server/chunks/14-Dl5jyPyO.js.map +1 -0
- package/build/server/chunks/15-CNzxJkd-.js +38 -0
- package/build/server/chunks/15-CNzxJkd-.js.map +1 -0
- package/build/server/chunks/16-5ZcnQNjK.js +83 -0
- package/build/server/chunks/16-5ZcnQNjK.js.map +1 -0
- package/build/server/chunks/17-C4Zpziyd.js +9 -0
- package/build/server/chunks/17-C4Zpziyd.js.map +1 -0
- package/build/server/chunks/18-DFxW4YE_.js +74 -0
- package/build/server/chunks/18-DFxW4YE_.js.map +1 -0
- package/build/server/chunks/19-C8RtlFzY.js +92 -0
- package/build/server/chunks/19-C8RtlFzY.js.map +1 -0
- package/build/server/chunks/2-tPIqsVg3.js +40 -0
- package/build/server/chunks/2-tPIqsVg3.js.map +1 -0
- package/build/server/chunks/20-DLtIYsB6.js +172 -0
- package/build/server/chunks/20-DLtIYsB6.js.map +1 -0
- package/build/server/chunks/21-Bs7WlXoO.js +74 -0
- package/build/server/chunks/21-Bs7WlXoO.js.map +1 -0
- package/build/server/chunks/22-Bweil5nd.js +23 -0
- package/build/server/chunks/22-Bweil5nd.js.map +1 -0
- package/build/server/chunks/23-dTtOINB8.js +136 -0
- package/build/server/chunks/23-dTtOINB8.js.map +1 -0
- package/build/server/chunks/24-DFoVUKXD.js +144 -0
- package/build/server/chunks/24-DFoVUKXD.js.map +1 -0
- package/build/server/chunks/25-DstWRI72.js +51 -0
- package/build/server/chunks/25-DstWRI72.js.map +1 -0
- package/build/server/chunks/26-CI8uo3hW.js +9 -0
- package/build/server/chunks/26-CI8uo3hW.js.map +1 -0
- package/build/server/chunks/27-CpQEotb7.js +57 -0
- package/build/server/chunks/27-CpQEotb7.js.map +1 -0
- package/build/server/chunks/28-B-G5uvxa.js +68 -0
- package/build/server/chunks/28-B-G5uvxa.js.map +1 -0
- package/build/server/chunks/29-BFo4HkLa.js +55 -0
- package/build/server/chunks/29-BFo4HkLa.js.map +1 -0
- package/build/server/chunks/3-BU-Ucrf8.js +9 -0
- package/build/server/chunks/3-BU-Ucrf8.js.map +1 -0
- package/build/server/chunks/30-zdVVQ-al.js +57 -0
- package/build/server/chunks/30-zdVVQ-al.js.map +1 -0
- package/build/server/chunks/31-Cba3pMW9.js +42 -0
- package/build/server/chunks/31-Cba3pMW9.js.map +1 -0
- package/build/server/chunks/32-BmfoNY4G.js +34 -0
- package/build/server/chunks/32-BmfoNY4G.js.map +1 -0
- package/build/server/chunks/4-rU40n2rV.js +9 -0
- package/build/server/chunks/4-rU40n2rV.js.map +1 -0
- package/build/server/chunks/5-CsoWfpGS.js +32 -0
- package/build/server/chunks/5-CsoWfpGS.js.map +1 -0
- package/build/server/chunks/6-D7wR-syA.js +40 -0
- package/build/server/chunks/6-D7wR-syA.js.map +1 -0
- package/build/server/chunks/7-uEz6AFkY.js +19 -0
- package/build/server/chunks/7-uEz6AFkY.js.map +1 -0
- package/build/server/chunks/8-BF-aCqND.js +130 -0
- package/build/server/chunks/8-BF-aCqND.js.map +1 -0
- package/build/server/chunks/9-BSxBuZbd.js +46 -0
- package/build/server/chunks/9-BSxBuZbd.js.map +1 -0
- package/build/server/chunks/AppHeader-BGs-cVxu.js +270 -0
- package/build/server/chunks/AppHeader-BGs-cVxu.js.map +1 -0
- package/build/server/chunks/DataTable-Calmth3f.js +26 -0
- package/build/server/chunks/DataTable-Calmth3f.js.map +1 -0
- package/build/server/chunks/DefinitionCard-p4VxRESg.js +257 -0
- package/build/server/chunks/DefinitionCard-p4VxRESg.js.map +1 -0
- package/build/server/chunks/EmptyState-Vs823elu.js +53 -0
- package/build/server/chunks/EmptyState-Vs823elu.js.map +1 -0
- package/build/server/chunks/ErrorScreen-Btv-WHiu.js +131 -0
- package/build/server/chunks/ErrorScreen-Btv-WHiu.js.map +1 -0
- package/build/server/chunks/FilterableDropdown-B2_HPO_D.js +61 -0
- package/build/server/chunks/FilterableDropdown-B2_HPO_D.js.map +1 -0
- package/build/server/chunks/SectionHeader-C1XxBz32.js +32 -0
- package/build/server/chunks/SectionHeader-C1XxBz32.js.map +1 -0
- package/build/server/chunks/SideNav-B8LeM-P_.js +87 -0
- package/build/server/chunks/SideNav-B8LeM-P_.js.map +1 -0
- package/build/server/chunks/StatCard--Plm6nsA.js +50 -0
- package/build/server/chunks/StatCard--Plm6nsA.js.map +1 -0
- package/build/server/chunks/UserAvatar-CaOe1AcR.js +13 -0
- package/build/server/chunks/UserAvatar-CaOe1AcR.js.map +1 -0
- package/build/server/chunks/UserChip-vdJXrk99.js +1113 -0
- package/build/server/chunks/UserChip-vdJXrk99.js.map +1 -0
- package/build/server/chunks/_error.svelte-Bifw6LEZ.js +27 -0
- package/build/server/chunks/_error.svelte-Bifw6LEZ.js.map +1 -0
- package/build/server/chunks/_error.svelte-C2KGldTD.js +29 -0
- package/build/server/chunks/_error.svelte-C2KGldTD.js.map +1 -0
- package/build/server/chunks/_layout.svelte-1of9r1N3.js +42 -0
- package/build/server/chunks/_layout.svelte-1of9r1N3.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CGIvkx7D.js +152 -0
- package/build/server/chunks/_layout.svelte-CGIvkx7D.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CyAPRqZR.js +10 -0
- package/build/server/chunks/_layout.svelte-CyAPRqZR.js.map +1 -0
- package/build/server/chunks/_layout.svelte-Czx3WsTK.js +795 -0
- package/build/server/chunks/_layout.svelte-Czx3WsTK.js.map +1 -0
- package/build/server/chunks/_layout.svelte-HGSVxA0R.js +105 -0
- package/build/server/chunks/_layout.svelte-HGSVxA0R.js.map +1 -0
- package/build/server/chunks/_page.svelte-4090fhI5.js +83 -0
- package/build/server/chunks/_page.svelte-4090fhI5.js.map +1 -0
- package/build/server/chunks/_page.svelte-5X2iRv32.js +711 -0
- package/build/server/chunks/_page.svelte-5X2iRv32.js.map +1 -0
- package/build/server/chunks/_page.svelte-BO2coOCw.js +10510 -0
- package/build/server/chunks/_page.svelte-BO2coOCw.js.map +1 -0
- package/build/server/chunks/_page.svelte-BfQQ6DpG.js +276 -0
- package/build/server/chunks/_page.svelte-BfQQ6DpG.js.map +1 -0
- package/build/server/chunks/_page.svelte-Br3YjZJA.js +595 -0
- package/build/server/chunks/_page.svelte-Br3YjZJA.js.map +1 -0
- package/build/server/chunks/_page.svelte-BvG__sle.js +119 -0
- package/build/server/chunks/_page.svelte-BvG__sle.js.map +1 -0
- package/build/server/chunks/_page.svelte-C2Pa9XCr.js +119 -0
- package/build/server/chunks/_page.svelte-C2Pa9XCr.js.map +1 -0
- package/build/server/chunks/_page.svelte-C48Yzxtt.js +330 -0
- package/build/server/chunks/_page.svelte-C48Yzxtt.js.map +1 -0
- package/build/server/chunks/_page.svelte-C4V_xDVU.js +329 -0
- package/build/server/chunks/_page.svelte-C4V_xDVU.js.map +1 -0
- package/build/server/chunks/_page.svelte-CFbpEr-L.js +249 -0
- package/build/server/chunks/_page.svelte-CFbpEr-L.js.map +1 -0
- package/build/server/chunks/_page.svelte-CGuEBnqj.js +168 -0
- package/build/server/chunks/_page.svelte-CGuEBnqj.js.map +1 -0
- package/build/server/chunks/_page.svelte-CWJ99QbZ.js +500 -0
- package/build/server/chunks/_page.svelte-CWJ99QbZ.js.map +1 -0
- package/build/server/chunks/_page.svelte-CX9DKxIH.js +520 -0
- package/build/server/chunks/_page.svelte-CX9DKxIH.js.map +1 -0
- package/build/server/chunks/_page.svelte-Cn6-gBTd.js +56 -0
- package/build/server/chunks/_page.svelte-Cn6-gBTd.js.map +1 -0
- package/build/server/chunks/_page.svelte-D2rnbrpK.js +423 -0
- package/build/server/chunks/_page.svelte-D2rnbrpK.js.map +1 -0
- package/build/server/chunks/_page.svelte-DIgP7KVt.js +549 -0
- package/build/server/chunks/_page.svelte-DIgP7KVt.js.map +1 -0
- package/build/server/chunks/_page.svelte-DMn46_VU.js +301 -0
- package/build/server/chunks/_page.svelte-DMn46_VU.js.map +1 -0
- package/build/server/chunks/_page.svelte-DQeDu6UN.js +146 -0
- package/build/server/chunks/_page.svelte-DQeDu6UN.js.map +1 -0
- package/build/server/chunks/_page.svelte-DSpONoJg.js +252 -0
- package/build/server/chunks/_page.svelte-DSpONoJg.js.map +1 -0
- package/build/server/chunks/_page.svelte-DciqGYJp.js +609 -0
- package/build/server/chunks/_page.svelte-DciqGYJp.js.map +1 -0
- package/build/server/chunks/_page.svelte-DfCFSzaO.js +3847 -0
- package/build/server/chunks/_page.svelte-DfCFSzaO.js.map +1 -0
- package/build/server/chunks/_page.svelte-DtUlWJaB.js +113 -0
- package/build/server/chunks/_page.svelte-DtUlWJaB.js.map +1 -0
- package/build/server/chunks/_page.svelte-KapMJV5_.js +452 -0
- package/build/server/chunks/_page.svelte-KapMJV5_.js.map +1 -0
- package/build/server/chunks/_page.svelte-wsvtYRRE.js +69 -0
- package/build/server/chunks/_page.svelte-wsvtYRRE.js.map +1 -0
- package/build/server/chunks/_page.svelte-zL7ihDzp.js +13 -0
- package/build/server/chunks/_page.svelte-zL7ihDzp.js.map +1 -0
- package/build/server/chunks/_server.ts-0ncRaWJ_.js +39 -0
- package/build/server/chunks/_server.ts-0ncRaWJ_.js.map +1 -0
- package/build/server/chunks/_server.ts-7hKc3tb_.js +28 -0
- package/build/server/chunks/_server.ts-7hKc3tb_.js.map +1 -0
- package/build/server/chunks/_server.ts-B0wiCYbB.js +36 -0
- package/build/server/chunks/_server.ts-B0wiCYbB.js.map +1 -0
- package/build/server/chunks/_server.ts-BJWFkEuu.js +94 -0
- package/build/server/chunks/_server.ts-BJWFkEuu.js.map +1 -0
- package/build/server/chunks/_server.ts-BLHjzdRp.js +30 -0
- package/build/server/chunks/_server.ts-BLHjzdRp.js.map +1 -0
- package/build/server/chunks/_server.ts-BUc1sqlR.js +58 -0
- package/build/server/chunks/_server.ts-BUc1sqlR.js.map +1 -0
- package/build/server/chunks/_server.ts-B_MVq_5r.js +72 -0
- package/build/server/chunks/_server.ts-B_MVq_5r.js.map +1 -0
- package/build/server/chunks/_server.ts-Bb3Kpo0Y.js +38 -0
- package/build/server/chunks/_server.ts-Bb3Kpo0Y.js.map +1 -0
- package/build/server/chunks/_server.ts-BemU6FO1.js +64 -0
- package/build/server/chunks/_server.ts-BemU6FO1.js.map +1 -0
- package/build/server/chunks/_server.ts-BkKg2yyC.js +75 -0
- package/build/server/chunks/_server.ts-BkKg2yyC.js.map +1 -0
- package/build/server/chunks/_server.ts-BpAINcOs.js +276 -0
- package/build/server/chunks/_server.ts-BpAINcOs.js.map +1 -0
- package/build/server/chunks/_server.ts-BpkR7TzP.js +30 -0
- package/build/server/chunks/_server.ts-BpkR7TzP.js.map +1 -0
- package/build/server/chunks/_server.ts-BrZXNFlK.js +78 -0
- package/build/server/chunks/_server.ts-BrZXNFlK.js.map +1 -0
- package/build/server/chunks/_server.ts-C-XniPo8.js +41 -0
- package/build/server/chunks/_server.ts-C-XniPo8.js.map +1 -0
- package/build/server/chunks/_server.ts-C0F30GT4.js +61 -0
- package/build/server/chunks/_server.ts-C0F30GT4.js.map +1 -0
- package/build/server/chunks/_server.ts-C4WRZSco.js +32 -0
- package/build/server/chunks/_server.ts-C4WRZSco.js.map +1 -0
- package/build/server/chunks/_server.ts-CAcgx11J.js +37 -0
- package/build/server/chunks/_server.ts-CAcgx11J.js.map +1 -0
- package/build/server/chunks/_server.ts-CFIgn6q6.js +293 -0
- package/build/server/chunks/_server.ts-CFIgn6q6.js.map +1 -0
- package/build/server/chunks/_server.ts-CaHe7mo6.js +81 -0
- package/build/server/chunks/_server.ts-CaHe7mo6.js.map +1 -0
- package/build/server/chunks/_server.ts-CcQbKaET.js +38 -0
- package/build/server/chunks/_server.ts-CcQbKaET.js.map +1 -0
- package/build/server/chunks/_server.ts-Ch_RLYHQ.js +48 -0
- package/build/server/chunks/_server.ts-Ch_RLYHQ.js.map +1 -0
- package/build/server/chunks/_server.ts-CkXnisqg.js +85 -0
- package/build/server/chunks/_server.ts-CkXnisqg.js.map +1 -0
- package/build/server/chunks/_server.ts-CmGWhrdf.js +110 -0
- package/build/server/chunks/_server.ts-CmGWhrdf.js.map +1 -0
- package/build/server/chunks/_server.ts-CmUr8pln.js +37 -0
- package/build/server/chunks/_server.ts-CmUr8pln.js.map +1 -0
- package/build/server/chunks/_server.ts-D-QkfF2o.js +106 -0
- package/build/server/chunks/_server.ts-D-QkfF2o.js.map +1 -0
- package/build/server/chunks/_server.ts-D1AD48e8.js +81 -0
- package/build/server/chunks/_server.ts-D1AD48e8.js.map +1 -0
- package/build/server/chunks/_server.ts-DBh0rJrm.js +86 -0
- package/build/server/chunks/_server.ts-DBh0rJrm.js.map +1 -0
- package/build/server/chunks/_server.ts-DJUYnHrj.js +49 -0
- package/build/server/chunks/_server.ts-DJUYnHrj.js.map +1 -0
- package/build/server/chunks/_server.ts-DNPb5zS6.js +76 -0
- package/build/server/chunks/_server.ts-DNPb5zS6.js.map +1 -0
- package/build/server/chunks/_server.ts-DXPhlUCi.js +101 -0
- package/build/server/chunks/_server.ts-DXPhlUCi.js.map +1 -0
- package/build/server/chunks/_server.ts-Dmo73WWA.js +42 -0
- package/build/server/chunks/_server.ts-Dmo73WWA.js.map +1 -0
- package/build/server/chunks/_server.ts-DxKERFAd.js +35 -0
- package/build/server/chunks/_server.ts-DxKERFAd.js.map +1 -0
- package/build/server/chunks/_server.ts-MOiQ4br_.js +31 -0
- package/build/server/chunks/_server.ts-MOiQ4br_.js.map +1 -0
- package/build/server/chunks/_server.ts-Z87uowZI.js +71 -0
- package/build/server/chunks/_server.ts-Z87uowZI.js.map +1 -0
- package/build/server/chunks/_server.ts-_NTv7i9z.js +94 -0
- package/build/server/chunks/_server.ts-_NTv7i9z.js.map +1 -0
- package/build/server/chunks/_server.ts-gic0t4mu.js +52 -0
- package/build/server/chunks/_server.ts-gic0t4mu.js.map +1 -0
- package/build/server/chunks/_server.ts-la-ySldK.js +39 -0
- package/build/server/chunks/_server.ts-la-ySldK.js.map +1 -0
- package/build/server/chunks/_server.ts-pDmNGXOa.js +70 -0
- package/build/server/chunks/_server.ts-pDmNGXOa.js.map +1 -0
- package/build/server/chunks/access.server-GvriCjXN.js +389 -0
- package/build/server/chunks/access.server-GvriCjXN.js.map +1 -0
- package/build/server/chunks/activity-5BrQjmZv.js +18 -0
- package/build/server/chunks/activity-5BrQjmZv.js.map +1 -0
- package/build/server/chunks/admin-auth.server-CdTfBMI5.js +78 -0
- package/build/server/chunks/admin-auth.server-CdTfBMI5.js.map +1 -0
- package/build/server/chunks/alert-description-CJHDA62x.js +59 -0
- package/build/server/chunks/alert-description-CJHDA62x.js.map +1 -0
- package/build/server/chunks/api-errors-Dk5z97zb.js +36 -0
- package/build/server/chunks/api-errors-Dk5z97zb.js.map +1 -0
- package/build/server/chunks/arrow-left-Bg-KTjhY.js +14 -0
- package/build/server/chunks/arrow-left-Bg-KTjhY.js.map +1 -0
- package/build/server/chunks/arrow-right-BvyjMBhI.js +14 -0
- package/build/server/chunks/arrow-right-BvyjMBhI.js.map +1 -0
- package/build/server/chunks/auth-bootstrap.server-CfD5CPTj.js +38 -0
- package/build/server/chunks/auth-bootstrap.server-CfD5CPTj.js.map +1 -0
- package/build/server/chunks/badge-DP8t-wkc.js +50 -0
- package/build/server/chunks/badge-DP8t-wkc.js.map +1 -0
- package/build/server/chunks/bootHealth.server-Bn7taneH.js +58 -0
- package/build/server/chunks/bootHealth.server-Bn7taneH.js.map +1 -0
- package/build/server/chunks/building-2-DzHZbdjX.js +22 -0
- package/build/server/chunks/building-2-DzHZbdjX.js.map +1 -0
- package/build/server/chunks/button-5YNnSoty.js +73 -0
- package/build/server/chunks/button-5YNnSoty.js.map +1 -0
- package/build/server/chunks/card-content-PfaaTs7O.js +46 -0
- package/build/server/chunks/card-content-PfaaTs7O.js.map +1 -0
- package/build/server/chunks/card-description-BfE_PWv4.js +26 -0
- package/build/server/chunks/card-description-BfE_PWv4.js.map +1 -0
- package/build/server/chunks/card-title-CV7CjSMp.js +46 -0
- package/build/server/chunks/card-title-CV7CjSMp.js.map +1 -0
- package/build/server/chunks/check-6xLpsphW.js +11 -0
- package/build/server/chunks/check-6xLpsphW.js.map +1 -0
- package/build/server/chunks/chevron-down-DdRkfYjQ.js +11 -0
- package/build/server/chunks/chevron-down-DdRkfYjQ.js.map +1 -0
- package/build/server/chunks/chevron-right-yB_oBTHp.js +11 -0
- package/build/server/chunks/chevron-right-yB_oBTHp.js.map +1 -0
- package/build/server/chunks/chevron-up-CskoDtlM.js +11 -0
- package/build/server/chunks/chevron-up-CskoDtlM.js.map +1 -0
- package/build/server/chunks/circle-CcD9wKGy.js +11 -0
- package/build/server/chunks/circle-CcD9wKGy.js.map +1 -0
- package/build/server/chunks/circle-alert-DKo6GQWU.js +18 -0
- package/build/server/chunks/circle-alert-DKo6GQWU.js.map +1 -0
- package/build/server/chunks/client-CUfa2kzY.js +39 -0
- package/build/server/chunks/client-CUfa2kzY.js.map +1 -0
- package/build/server/chunks/computeLimits-FIJ-Mzn4.js +26 -0
- package/build/server/chunks/computeLimits-FIJ-Mzn4.js.map +1 -0
- package/build/server/chunks/context-9tV9WxQ5.js +134 -0
- package/build/server/chunks/context-9tV9WxQ5.js.map +1 -0
- package/build/server/chunks/copy-B82RxBlo.js +29 -0
- package/build/server/chunks/copy-B82RxBlo.js.map +1 -0
- package/build/server/chunks/create-id-BYuAt6fp.js +653 -0
- package/build/server/chunks/create-id-BYuAt6fp.js.map +1 -0
- package/build/server/chunks/dialog-description-Cp1dB1if.js +523 -0
- package/build/server/chunks/dialog-description-Cp1dB1if.js.map +1 -0
- package/build/server/chunks/events-Dh5zddQQ.js +119 -0
- package/build/server/chunks/events-Dh5zddQQ.js.map +1 -0
- package/build/server/chunks/folder-kanban-srfqpNh0.js +21 -0
- package/build/server/chunks/folder-kanban-srfqpNh0.js.map +1 -0
- package/build/server/chunks/folder-open-LjMDYW2a.js +18 -0
- package/build/server/chunks/folder-open-LjMDYW2a.js.map +1 -0
- package/build/server/chunks/folders-BMeWz5-X.js +24 -0
- package/build/server/chunks/folders-BMeWz5-X.js.map +1 -0
- package/build/server/chunks/footerContext.svelte-QTotPOm_.js +523 -0
- package/build/server/chunks/footerContext.svelte-QTotPOm_.js.map +1 -0
- package/build/server/chunks/hooks.server-CMWyl1Gd.js +197 -0
- package/build/server/chunks/hooks.server-CMWyl1Gd.js.map +1 -0
- package/build/server/chunks/html-FW6Ia4bL.js +8 -0
- package/build/server/chunks/html-FW6Ia4bL.js.map +1 -0
- package/build/server/chunks/index-DwB9DMAB.js +28 -0
- package/build/server/chunks/index-DwB9DMAB.js.map +1 -0
- package/build/server/chunks/index-server-DMc-UvjC.js +19 -0
- package/build/server/chunks/index-server-DMc-UvjC.js.map +1 -0
- package/build/server/chunks/index2-olcdaqbX.js +4379 -0
- package/build/server/chunks/index2-olcdaqbX.js.map +1 -0
- package/build/server/chunks/index3-Ye-aF_FM.js +541 -0
- package/build/server/chunks/index3-Ye-aF_FM.js.map +1 -0
- package/build/server/chunks/input-BIyn3mzZ.js +53 -0
- package/build/server/chunks/input-BIyn3mzZ.js.map +1 -0
- package/build/server/chunks/label-CTvvOsnE.js +112 -0
- package/build/server/chunks/label-CTvvOsnE.js.map +1 -0
- package/build/server/chunks/link-2-DyFf_-Tu.js +15 -0
- package/build/server/chunks/link-2-DyFf_-Tu.js.map +1 -0
- package/build/server/chunks/mail-DS_q8hHt.js +17 -0
- package/build/server/chunks/mail-DS_q8hHt.js.map +1 -0
- package/build/server/chunks/noop-CzO8kTeB.js +138 -0
- package/build/server/chunks/noop-CzO8kTeB.js.map +1 -0
- package/build/server/chunks/permissions-compat.server-DSV7bClF.js +19 -0
- package/build/server/chunks/permissions-compat.server-DSV7bClF.js.map +1 -0
- package/build/server/chunks/permissions.server-Co6VKW9f.js +8 -0
- package/build/server/chunks/permissions.server-Co6VKW9f.js.map +1 -0
- package/build/server/chunks/plus-kUAGz2vQ.js +11 -0
- package/build/server/chunks/plus-kUAGz2vQ.js.map +1 -0
- package/build/server/chunks/providers.server-C32WKtDL.js +4486 -0
- package/build/server/chunks/providers.server-C32WKtDL.js.map +1 -0
- package/build/server/chunks/randomId-8gj3Lbuq.js +25 -0
- package/build/server/chunks/randomId-8gj3Lbuq.js.map +1 -0
- package/build/server/chunks/renderer-BFEBS3DQ.js +3757 -0
- package/build/server/chunks/renderer-BFEBS3DQ.js.map +1 -0
- package/build/server/chunks/resolve.server-DYsU4jL3.js +11 -0
- package/build/server/chunks/resolve.server-DYsU4jL3.js.map +1 -0
- package/build/server/chunks/resolve.server2-Co65XNMI.js +50 -0
- package/build/server/chunks/resolve.server2-Co65XNMI.js.map +1 -0
- package/build/server/chunks/root-DfWNVuNE.js +1134 -0
- package/build/server/chunks/root-DfWNVuNE.js.map +1 -0
- package/build/server/chunks/rotate-ccw-BhVSWSeP.js +17 -0
- package/build/server/chunks/rotate-ccw-BhVSWSeP.js.map +1 -0
- package/build/server/chunks/scroll-lock-BNv9iOMl.js +1558 -0
- package/build/server/chunks/scroll-lock-BNv9iOMl.js.map +1 -0
- package/build/server/chunks/scroll-text-DqHQWAWm.js +21 -0
- package/build/server/chunks/scroll-text-DqHQWAWm.js.map +1 -0
- package/build/server/chunks/server-CtTftue_.js +36 -0
- package/build/server/chunks/server-CtTftue_.js.map +1 -0
- package/build/server/chunks/settings-DUGFWkVU.js +19 -0
- package/build/server/chunks/settings-DUGFWkVU.js.map +1 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
- package/build/server/chunks/shield-DcFe9IEC.js +18 -0
- package/build/server/chunks/shield-DcFe9IEC.js.map +1 -0
- package/build/server/chunks/shield-check-BpiYOxKK.js +19 -0
- package/build/server/chunks/shield-check-BpiYOxKK.js.map +1 -0
- package/build/server/chunks/slug-BGuFQjqe.js +6 -0
- package/build/server/chunks/slug-BGuFQjqe.js.map +1 -0
- package/build/server/chunks/star-CyFkn9su.js +18 -0
- package/build/server/chunks/star-CyFkn9su.js.map +1 -0
- package/build/server/chunks/stores-r9x46ujW.js +31 -0
- package/build/server/chunks/stores-r9x46ujW.js.map +1 -0
- package/build/server/chunks/textarea-BCZD0juO.js +685 -0
- package/build/server/chunks/textarea-BCZD0juO.js.map +1 -0
- package/build/server/chunks/toast-state.svelte-CW-nObZ9.js +185 -0
- package/build/server/chunks/toast-state.svelte-CW-nObZ9.js.map +1 -0
- package/build/server/chunks/token.server-B8XVPI0F.js +25 -0
- package/build/server/chunks/token.server-B8XVPI0F.js.map +1 -0
- package/build/server/chunks/token.server2-D0Z99lBB.js +22 -0
- package/build/server/chunks/token.server2-D0Z99lBB.js.map +1 -0
- package/build/server/chunks/trash-2-DWN_oRG7.js +17 -0
- package/build/server/chunks/trash-2-DWN_oRG7.js.map +1 -0
- package/build/server/chunks/triangle-alert-DYYSX_Mf.js +444 -0
- package/build/server/chunks/triangle-alert-DYYSX_Mf.js.map +1 -0
- package/build/server/chunks/types-DxzJoaA4.js +11 -0
- package/build/server/chunks/types-DxzJoaA4.js.map +1 -0
- package/build/server/chunks/types2-DdHhYSMF.js +4 -0
- package/build/server/chunks/types2-DdHhYSMF.js.map +1 -0
- package/build/server/chunks/upload-DREoObmA.js +62 -0
- package/build/server/chunks/upload-DREoObmA.js.map +1 -0
- package/build/server/chunks/user-plus-Nb35DNnT.js +16 -0
- package/build/server/chunks/user-plus-Nb35DNnT.js.map +1 -0
- package/build/server/chunks/users-DMh0XDYp.js +16 -0
- package/build/server/chunks/users-DMh0XDYp.js.map +1 -0
- package/build/server/chunks/utils2-Sy-_rI-0.js +56 -0
- package/build/server/chunks/utils2-Sy-_rI-0.js.map +1 -0
- package/build/server/chunks/utils3-AZ8FPfBW.js +80 -0
- package/build/server/chunks/utils3-AZ8FPfBW.js.map +1 -0
- package/build/server/chunks/x-wRP5erhc.js +14 -0
- package/build/server/chunks/x-wRP5erhc.js.map +1 -0
- package/build/server/index.js +5380 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +517 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/package.json +57 -0
- package/templates/.env.example +339 -0
- package/templates/ecosystem.config.cjs +52 -0
- package/templates/selva.config.example.js +338 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BrZXNFlK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { randomUUID } from \"node:crypto\";\nimport { p as providers, m as flag } from \"../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema, d as CreateShareLinkInputSchema } from \"../../../../../../chunks/context.js\";\nimport { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from \"../../../../../../chunks/types2.js\";\nimport { m as mintRawToken, h as hashToken } from \"../../../../../../chunks/token.server.js\";\nfunction assertSharingEnabled() {\n if (!flag(\"ENABLE_SHARING\")) {\n throw error(404, \"Share links are disabled on this instance (ENABLE_SHARING).\");\n }\n}\nfunction strip(link) {\n const { tokenHash: _omit, ...rest } = link;\n return { ...rest, hasToken: true };\n}\nconst GET = async ({ params, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const page = await providers.data.shareLinks.listByDefinition(ctx, guidParsed.data, {\n limit: 200\n });\n return json({\n links: page.items.map(strip),\n nextCursor: page.nextCursor\n });\n } catch (err) {\n handleApiError(err, \"Failed to list share links\");\n }\n};\nconst POST = async ({ params, request, locals }) => {\n assertSharingEnabled();\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const body = await request.json().catch(() => ({}));\n const parsed = CreateShareLinkInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const raw = mintRawToken();\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const link = {\n id: randomUUID(),\n definitionId: guidParsed.data,\n channel: parsed.data.channel,\n tokenHash: hashToken(raw),\n name: parsed.data.name,\n createdBy: locals.user.id,\n createdAt: now,\n expiresAt: parsed.data.expiresAt ?? null,\n revokedAt: null,\n allowSolve: parsed.data.allowSolve,\n // Default applied only when the field is absent. `null` is a deliberate\n // \"uncap\" choice and is preserved.\n maxSolves: parsed.data.maxSolves === void 0 ? DEFAULT_SHARE_LINK_MAX_SOLVES : parsed.data.maxSolves,\n solveCount: 0\n };\n try {\n await providers.data.shareLinks.create(ctx, link);\n return json({ link: strip(link), token: raw }, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to create share link\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { d as getInviteStore } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { i as requireManageOrgMembers } from './access.server-GvriCjXN.js';
|
|
4
|
+
import { h as handleApiError } from './api-errors-Dk5z97zb.js';
|
|
5
|
+
import './shared-server-DaWdgxVh.js';
|
|
6
|
+
import 'node:url';
|
|
7
|
+
import 'node:path';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import './context-9tV9WxQ5.js';
|
|
10
|
+
import 'zod';
|
|
11
|
+
import 'node:crypto';
|
|
12
|
+
import 'node:fs/promises';
|
|
13
|
+
import '@supabase/supabase-js';
|
|
14
|
+
|
|
15
|
+
const DELETE = async ({ params, locals }) => {
|
|
16
|
+
requireManageOrgMembers(locals);
|
|
17
|
+
const ctx = locals.ctx;
|
|
18
|
+
if (!ctx.actingOrgId) throw error(400, "No active organization");
|
|
19
|
+
const id = params.id;
|
|
20
|
+
try {
|
|
21
|
+
const store = getInviteStore();
|
|
22
|
+
let cursor;
|
|
23
|
+
let found = false;
|
|
24
|
+
do {
|
|
25
|
+
const page = await store.listByOrg(ctx, ctx.actingOrgId, { limit: 200, cursor });
|
|
26
|
+
if (page.items.some((i) => i.id === id)) {
|
|
27
|
+
found = true;
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
cursor = page.nextCursor ?? void 0;
|
|
31
|
+
} while (cursor);
|
|
32
|
+
if (!found) throw error(404, "Invite not found");
|
|
33
|
+
await store.revoke(ctx, id);
|
|
34
|
+
return json({ success: true });
|
|
35
|
+
} catch (err) {
|
|
36
|
+
handleApiError(err, "Failed to revoke invite");
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { DELETE };
|
|
41
|
+
//# sourceMappingURL=_server.ts-C-XniPo8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-C-XniPo8.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/invites/_id_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { n as getInviteStore } from \"../../../../../chunks/providers.server.js\";\nimport { i as requireManageOrgMembers } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError } from \"../../../../../chunks/api-errors.js\";\nconst DELETE = async ({ params, locals }) => {\n requireManageOrgMembers(locals);\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) throw error(400, \"No active organization\");\n const id = params.id;\n try {\n const store = getInviteStore();\n let cursor;\n let found = false;\n do {\n const page = await store.listByOrg(ctx, ctx.actingOrgId, { limit: 200, cursor });\n if (page.items.some((i) => i.id === id)) {\n found = true;\n break;\n }\n cursor = page.nextCursor ?? void 0;\n } while (cursor);\n if (!found) throw error(404, \"Invite not found\");\n await store.revoke(ctx, id);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to revoke invite\");\n }\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,uBAAuB,CAAC,MAAM,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,wBAAwB,CAAC;AAClE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AACtB,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,cAAc,EAAE;AAClC,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,KAAK,GAAG,KAAK;AACrB,IAAI,GAAG;AACP,MAAM,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACtF,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAC/C,QAAQ,KAAK,GAAG,IAAI;AACpB,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;AACxC,IAAI,CAAC,QAAQ,MAAM;AACnB,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC;AACpD,IAAI,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC;AAClD,EAAE;AACF;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { h as getProjectProvider } from './providers.server-C32WKtDL.js';
|
|
4
|
+
import { o as requireCanManageMembers, p as requireTargetIsOrgMember } from './access.server-GvriCjXN.js';
|
|
5
|
+
import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
|
|
6
|
+
import { i as ProjectRoleSchema } from './context-9tV9WxQ5.js';
|
|
7
|
+
import './shared-server-DaWdgxVh.js';
|
|
8
|
+
import 'node:url';
|
|
9
|
+
import 'node:path';
|
|
10
|
+
import 'node:fs';
|
|
11
|
+
import 'node:crypto';
|
|
12
|
+
import 'node:fs/promises';
|
|
13
|
+
import '@supabase/supabase-js';
|
|
14
|
+
|
|
15
|
+
const AddMemberSchema = z.object({
|
|
16
|
+
userId: z.string().min(1, "userId is required"),
|
|
17
|
+
role: ProjectRoleSchema
|
|
18
|
+
});
|
|
19
|
+
const GET = async ({ params, locals }) => {
|
|
20
|
+
const { id } = params;
|
|
21
|
+
if (!id) throw error(400, "Missing project ID");
|
|
22
|
+
await requireCanManageMembers(locals, id);
|
|
23
|
+
const ctx = locals.ctx;
|
|
24
|
+
try {
|
|
25
|
+
const page = await getProjectProvider().listProjectMembers(ctx, id, { limit: 200 });
|
|
26
|
+
return json({ members: page.items });
|
|
27
|
+
} catch (err) {
|
|
28
|
+
handleApiError(err, "Failed to load members");
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const POST = async ({ params, request, locals }) => {
|
|
32
|
+
const { id } = params;
|
|
33
|
+
if (!id) throw error(400, "Missing project ID");
|
|
34
|
+
await requireCanManageMembers(locals, id);
|
|
35
|
+
const ctx = locals.ctx;
|
|
36
|
+
const body = await request.json().catch(() => null);
|
|
37
|
+
const parsed = AddMemberSchema.safeParse(body);
|
|
38
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
39
|
+
const project = await getProjectProvider().getProject(ctx, id);
|
|
40
|
+
if (!project) throw error(404, "Project not found");
|
|
41
|
+
await requireTargetIsOrgMember(locals, project.orgId, parsed.data.userId);
|
|
42
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
43
|
+
const member = {
|
|
44
|
+
projectId: id,
|
|
45
|
+
userId: parsed.data.userId,
|
|
46
|
+
role: parsed.data.role,
|
|
47
|
+
joinedAt: now,
|
|
48
|
+
updatedAt: now,
|
|
49
|
+
updatedBy: ctx.userId || parsed.data.userId,
|
|
50
|
+
deletedAt: null
|
|
51
|
+
};
|
|
52
|
+
try {
|
|
53
|
+
await getProjectProvider().addProjectMember(ctx, member);
|
|
54
|
+
return json(member, { status: 201 });
|
|
55
|
+
} catch (err) {
|
|
56
|
+
handleApiError(err, "Failed to add member");
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { GET, POST };
|
|
61
|
+
//# sourceMappingURL=_server.ts-C0F30GT4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-C0F30GT4.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/members/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { b as getProjectProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { o as requireCanManageMembers, p as requireTargetIsOrgMember } from \"../../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../../chunks/api-errors.js\";\nimport { i as ProjectRoleSchema } from \"../../../../../../chunks/context.js\";\nconst AddMemberSchema = z.object({\n userId: z.string().min(1, \"userId is required\"),\n role: ProjectRoleSchema\n});\nconst GET = async ({ params, locals }) => {\n const { id } = params;\n if (!id) throw error(400, \"Missing project ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n try {\n const page = await getProjectProvider().listProjectMembers(ctx, id, { limit: 200 });\n return json({ members: page.items });\n } catch (err) {\n handleApiError(err, \"Failed to load members\");\n }\n};\nconst POST = async ({ params, request, locals }) => {\n const { id } = params;\n if (!id) throw error(400, \"Missing project ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = AddMemberSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const project = await getProjectProvider().getProject(ctx, id);\n if (!project) throw error(404, \"Project not found\");\n await requireTargetIsOrgMember(locals, project.orgId, parsed.data.userId);\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const member = {\n projectId: id,\n userId: parsed.data.userId,\n role: parsed.data.role,\n joinedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || parsed.data.userId,\n deletedAt: null\n };\n try {\n await getProjectProvider().addProjectMember(ctx, member);\n return json(member, { status: 201 });\n } catch (err) {\n handleApiError(err, \"Failed to add member\");\n }\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { error, redirect } from '@sveltejs/kit';
|
|
2
|
+
import { g as getAuthProvider } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { b as bootstrapUserSession } from './auth-bootstrap.server-CfD5CPTj.js';
|
|
4
|
+
import { s as setSessionCookie, a as setRefreshCookie, d as safeRedirectTarget } from './admin-auth.server-CdTfBMI5.js';
|
|
5
|
+
import './shared-server-DaWdgxVh.js';
|
|
6
|
+
import 'node:url';
|
|
7
|
+
import 'node:path';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import './context-9tV9WxQ5.js';
|
|
10
|
+
import 'zod';
|
|
11
|
+
import 'node:crypto';
|
|
12
|
+
import 'node:fs/promises';
|
|
13
|
+
import '@supabase/supabase-js';
|
|
14
|
+
|
|
15
|
+
const GET = async ({ url, cookies }) => {
|
|
16
|
+
const code = url.searchParams.get("code");
|
|
17
|
+
if (!code) throw error(400, "Missing authorization code");
|
|
18
|
+
const oauth = getAuthProvider().oauth;
|
|
19
|
+
if (!oauth) {
|
|
20
|
+
throw error(501, "OAuth is not supported by the configured auth provider.");
|
|
21
|
+
}
|
|
22
|
+
const result = await oauth.exchangeOAuthCode(code);
|
|
23
|
+
if (!result) throw error(401, "OAuth exchange failed");
|
|
24
|
+
await bootstrapUserSession(result.user);
|
|
25
|
+
setSessionCookie(cookies, result.sessionToken);
|
|
26
|
+
setRefreshCookie(cookies, result.refreshToken);
|
|
27
|
+
const dest = safeRedirectTarget(url.searchParams.get("redirectTo"), "/library");
|
|
28
|
+
redirect(303, dest);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { GET };
|
|
32
|
+
//# sourceMappingURL=_server.ts-C4WRZSco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-C4WRZSco.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/supabase/callback/_server.ts.js"],"sourcesContent":["import { error, redirect } from \"@sveltejs/kit\";\nimport { e as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { s as setSessionCookie, a as setRefreshCookie, b as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const code = url.searchParams.get(\"code\");\n if (!code) throw error(400, \"Missing authorization code\");\n const oauth = getAuthProvider().oauth;\n if (!oauth) {\n throw error(501, \"OAuth is not supported by the configured auth provider.\");\n }\n const result = await oauth.exchangeOAuthCode(code);\n if (!result) throw error(401, \"OAuth exchange failed\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3C,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC;AAC3D,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,KAAK;AACvC,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,yDAAyD,CAAC;AAC/E,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpD,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACxD,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { l as getPermissionStore, g as getAuthProvider } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { c as requireManageInstanceUsers } from './access.server-GvriCjXN.js';
|
|
4
|
+
import './shared-server-DaWdgxVh.js';
|
|
5
|
+
import 'node:url';
|
|
6
|
+
import 'node:path';
|
|
7
|
+
import 'node:fs';
|
|
8
|
+
import './context-9tV9WxQ5.js';
|
|
9
|
+
import 'zod';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'node:fs/promises';
|
|
12
|
+
import '@supabase/supabase-js';
|
|
13
|
+
import './api-errors-Dk5z97zb.js';
|
|
14
|
+
|
|
15
|
+
const POST = async ({ params, locals }) => {
|
|
16
|
+
requireManageInstanceUsers(locals);
|
|
17
|
+
const { id } = params;
|
|
18
|
+
if (!id) throw error(400, "Missing user ID");
|
|
19
|
+
const targetPerms = await getPermissionStore().getFor(locals.ctx, id);
|
|
20
|
+
if (targetPerms.includes("instance_admin")) {
|
|
21
|
+
const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);
|
|
22
|
+
if (others === 0) {
|
|
23
|
+
throw error(
|
|
24
|
+
409,
|
|
25
|
+
"Cannot disable the last instance admin. Promote another user to instance admin first."
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const result = await getAuthProvider().disableUser(id);
|
|
30
|
+
if (result === "not_found") throw error(404, "User not found");
|
|
31
|
+
if (result === "not_supported")
|
|
32
|
+
throw error(501, "Disabling users is not supported by this auth provider");
|
|
33
|
+
return json({ success: true });
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { POST };
|
|
37
|
+
//# sourceMappingURL=_server.ts-CAcgx11J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CAcgx11J.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { f as getPermissionStore, e as getAuthProvider } from \"../../../../../../../chunks/providers.server.js\";\nimport { c as requireManageInstanceUsers } from \"../../../../../../../chunks/access.server.js\";\nconst POST = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) throw error(400, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n throw error(\n 409,\n \"Cannot disable the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().disableUser(id);\n if (result === \"not_found\") throw error(404, \"User not found\");\n if (result === \"not_supported\")\n throw error(501, \"Disabling users is not supported by this auth provider\");\n return json({ success: true });\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAGK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC3C,EAAE,0BAA0B,CAAC,MAAM,CAAC;AACpC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC;AAC9C,EAAE,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACvE,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1F,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACtB,MAAM,MAAM,KAAK;AACjB,QAAQ,GAAG;AACX,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,EAAE,IAAI,MAAM,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChE,EAAE,IAAI,MAAM,KAAK,eAAe;AAChC,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,wDAAwD,CAAC;AAC9E,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChC;;;;"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { TreeBuilder, GrasshopperClient } from '@selvajs/compute';
|
|
2
|
+
import { error, json, isHttpError } from '@sveltejs/kit';
|
|
3
|
+
import { r as resolveServerForOrg } from './resolve.server-DYsU4jL3.js';
|
|
4
|
+
import { M as MAX_SOLVE_DURATION_MS, D as DEFINITION_CACHE_TTL_MS, R as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, a as REMOTE_DEFINITION_MAX_BYTES, b as RATE_LIMIT_WINDOW_MS, c as RATE_LIMIT_MAX_REQUESTS, C as COMPUTE_REQUEST_MAX_BYTES } from './computeLimits-FIJ-Mzn4.js';
|
|
5
|
+
import { h as requireMaxBodySize } from './admin-auth.server-CdTfBMI5.js';
|
|
6
|
+
import { m as getStorageProvider, p as providers } from './providers.server-C32WKtDL.js';
|
|
7
|
+
import { d as requireCanEditDefinition, e as requireCanSolve } from './access.server-GvriCjXN.js';
|
|
8
|
+
import { t as tryResolveShareToken } from './resolve.server2-Co65XNMI.js';
|
|
9
|
+
import './context-9tV9WxQ5.js';
|
|
10
|
+
import 'zod';
|
|
11
|
+
import './utils2-Sy-_rI-0.js';
|
|
12
|
+
import './shared-server-DaWdgxVh.js';
|
|
13
|
+
import 'node:url';
|
|
14
|
+
import 'node:path';
|
|
15
|
+
import 'node:fs';
|
|
16
|
+
import 'node:crypto';
|
|
17
|
+
import 'node:fs/promises';
|
|
18
|
+
import '@supabase/supabase-js';
|
|
19
|
+
import './api-errors-Dk5z97zb.js';
|
|
20
|
+
import './token.server-B8XVPI0F.js';
|
|
21
|
+
|
|
22
|
+
function isSafeRemoteDefinitionUrl(raw) {
|
|
23
|
+
let parsed;
|
|
24
|
+
try {
|
|
25
|
+
parsed = new URL(raw);
|
|
26
|
+
} catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return false;
|
|
30
|
+
const host = parsed.hostname.toLowerCase();
|
|
31
|
+
if (!host) return false;
|
|
32
|
+
if (host === "localhost" || host === "0.0.0.0" || host.endsWith(".localhost")) return false;
|
|
33
|
+
if (host === "::1" || host === "[::1]") return false;
|
|
34
|
+
if (/^127\./.test(host)) return false;
|
|
35
|
+
if (/^10\./.test(host)) return false;
|
|
36
|
+
if (/^192\.168\./.test(host)) return false;
|
|
37
|
+
if (/^172\.(1[6-9]|2[0-9]|3[0-1])\./.test(host)) return false;
|
|
38
|
+
if (/^169\.254\./.test(host)) return false;
|
|
39
|
+
if (/^\[?(fc|fd)[0-9a-f]{2}:/i.test(host)) return false;
|
|
40
|
+
if (/^\[?fe[89ab][0-9a-f]:/i.test(host)) return false;
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const WINDOW_MS = RATE_LIMIT_WINDOW_MS;
|
|
44
|
+
const MAX_PER_WINDOW = RATE_LIMIT_MAX_REQUESTS;
|
|
45
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
46
|
+
function checkComputeRateLimit(key) {
|
|
47
|
+
const now = Date.now();
|
|
48
|
+
const entry = buckets.get(key);
|
|
49
|
+
if (!entry || now > entry.resetAt) {
|
|
50
|
+
buckets.set(key, { count: 1, resetAt: now + WINDOW_MS });
|
|
51
|
+
return { allowed: true };
|
|
52
|
+
}
|
|
53
|
+
if (entry.count >= MAX_PER_WINDOW) {
|
|
54
|
+
return { allowed: false, retryAfter: Math.ceil((entry.resetAt - now) / 1e3) };
|
|
55
|
+
}
|
|
56
|
+
entry.count += 1;
|
|
57
|
+
return { allowed: true };
|
|
58
|
+
}
|
|
59
|
+
const definitionCache = /* @__PURE__ */ new Map();
|
|
60
|
+
let cachedClient = null;
|
|
61
|
+
let cachedScheduler = null;
|
|
62
|
+
let cachedClientConfig = null;
|
|
63
|
+
async function getClient(serverConfig) {
|
|
64
|
+
const currentConfig = {
|
|
65
|
+
serverUrl: serverConfig.serverUrl,
|
|
66
|
+
apiKey: serverConfig.apiKey
|
|
67
|
+
};
|
|
68
|
+
if (cachedClient && cachedScheduler && cachedClientConfig && cachedClientConfig.serverUrl === currentConfig.serverUrl && cachedClientConfig.apiKey === currentConfig.apiKey) {
|
|
69
|
+
return { client: cachedClient, scheduler: cachedScheduler };
|
|
70
|
+
}
|
|
71
|
+
cachedScheduler?.dispose();
|
|
72
|
+
cachedClient = await GrasshopperClient.create({
|
|
73
|
+
serverUrl: currentConfig.serverUrl,
|
|
74
|
+
apiKey: currentConfig.apiKey
|
|
75
|
+
});
|
|
76
|
+
cachedScheduler = cachedClient.createScheduler({
|
|
77
|
+
mode: "queue",
|
|
78
|
+
timeoutMs: MAX_SOLVE_DURATION_MS,
|
|
79
|
+
cache: { maxEntries: 20, ttlMs: 5 * 6e4 }
|
|
80
|
+
});
|
|
81
|
+
cachedClientConfig = currentConfig;
|
|
82
|
+
return { client: cachedClient, scheduler: cachedScheduler };
|
|
83
|
+
}
|
|
84
|
+
async function loadRemoteDefinition(url) {
|
|
85
|
+
if (!isSafeRemoteDefinitionUrl(url)) {
|
|
86
|
+
throw new Error("Remote definition URL is not allowed");
|
|
87
|
+
}
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
const cached = definitionCache.get(url);
|
|
90
|
+
if (cached && now - cached.fetchedAt < DEFINITION_CACHE_TTL_MS) {
|
|
91
|
+
return cached.data;
|
|
92
|
+
}
|
|
93
|
+
const controller = new AbortController();
|
|
94
|
+
const timeout = setTimeout(() => controller.abort(), REMOTE_DEFINITION_FETCH_TIMEOUT_MS);
|
|
95
|
+
let data;
|
|
96
|
+
try {
|
|
97
|
+
const response = await fetch(url, {
|
|
98
|
+
signal: controller.signal,
|
|
99
|
+
redirect: "error"
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
103
|
+
}
|
|
104
|
+
const declared = Number(response.headers.get("content-length"));
|
|
105
|
+
if (Number.isFinite(declared) && declared > REMOTE_DEFINITION_MAX_BYTES) {
|
|
106
|
+
throw new Error("Remote definition exceeds size limit");
|
|
107
|
+
}
|
|
108
|
+
const buffer = await response.arrayBuffer();
|
|
109
|
+
if (buffer.byteLength > REMOTE_DEFINITION_MAX_BYTES) {
|
|
110
|
+
throw new Error("Remote definition exceeds size limit");
|
|
111
|
+
}
|
|
112
|
+
data = new Uint8Array(buffer);
|
|
113
|
+
} finally {
|
|
114
|
+
clearTimeout(timeout);
|
|
115
|
+
}
|
|
116
|
+
definitionCache.set(url, { data, fetchedAt: now });
|
|
117
|
+
if (definitionCache.size > 50) {
|
|
118
|
+
const entries = Array.from(definitionCache.entries());
|
|
119
|
+
entries.sort((a, b) => a[1].fetchedAt - b[1].fetchedAt);
|
|
120
|
+
for (let i = 0; i < 10; i++) {
|
|
121
|
+
definitionCache.delete(entries[i][0]);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return data;
|
|
125
|
+
}
|
|
126
|
+
function transformInputParameter(input, value) {
|
|
127
|
+
const base = {
|
|
128
|
+
description: input.description || "",
|
|
129
|
+
name: input.nickname,
|
|
130
|
+
nickname: input.nickname || null,
|
|
131
|
+
id: input.id
|
|
132
|
+
};
|
|
133
|
+
if (input.paramType === "number" || input.paramType === "integer") {
|
|
134
|
+
return {
|
|
135
|
+
...base,
|
|
136
|
+
paramType: input.paramType === "integer" ? "Integer" : "Number",
|
|
137
|
+
minimum: input.minimum,
|
|
138
|
+
maximum: input.maximum,
|
|
139
|
+
stepSize: input.paramType === "integer" ? 1 : input.stepSize,
|
|
140
|
+
default: value ?? input.default
|
|
141
|
+
};
|
|
142
|
+
} else if (input.paramType === "text") {
|
|
143
|
+
return {
|
|
144
|
+
...base,
|
|
145
|
+
paramType: "Text",
|
|
146
|
+
default: value ?? input.default ?? ""
|
|
147
|
+
};
|
|
148
|
+
} else if (input.paramType === "boolean") {
|
|
149
|
+
return {
|
|
150
|
+
...base,
|
|
151
|
+
paramType: "Boolean",
|
|
152
|
+
default: value ?? input.default ?? false
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
...base,
|
|
157
|
+
paramType: "Text",
|
|
158
|
+
default: value ?? ""
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const POST = async ({ request, locals, url }) => {
|
|
162
|
+
const storage = getStorageProvider();
|
|
163
|
+
requireMaxBodySize(request, COMPUTE_REQUEST_MAX_BYTES);
|
|
164
|
+
try {
|
|
165
|
+
const body = await request.json();
|
|
166
|
+
const { inputs, values } = body;
|
|
167
|
+
const definitionUrl = body.definitionUrl;
|
|
168
|
+
const channel = body.channel ?? "live";
|
|
169
|
+
if (!inputs || !values || !definitionUrl) {
|
|
170
|
+
throw error(400, "Missing required fields: inputs, values, or definitionUrl");
|
|
171
|
+
}
|
|
172
|
+
if (channel !== "live" && channel !== "draft") {
|
|
173
|
+
throw error(400, `Invalid channel: ${channel}. Must be 'live' or 'draft'.`);
|
|
174
|
+
}
|
|
175
|
+
let definitionSource;
|
|
176
|
+
let solveOrgId = null;
|
|
177
|
+
let definitionPin = null;
|
|
178
|
+
const isLocal = definitionUrl.startsWith("local:");
|
|
179
|
+
const guid = isLocal ? definitionUrl.substring(6) : null;
|
|
180
|
+
const sharedAccess = isLocal && guid ? await tryResolveShareToken(request, url, guid, channel, { requireSolve: true }) : null;
|
|
181
|
+
if (!sharedAccess && (!locals.ctx || !locals.user)) {
|
|
182
|
+
throw error(401, "Unauthorized");
|
|
183
|
+
}
|
|
184
|
+
const solveCtx = sharedAccess?.ctx ?? locals.ctx;
|
|
185
|
+
const rateLimitKey = sharedAccess ? `share:${sharedAccess.link.id}` : `user:${locals.user.id}`;
|
|
186
|
+
const rateLimit = checkComputeRateLimit(rateLimitKey);
|
|
187
|
+
if (!rateLimit.allowed) {
|
|
188
|
+
const retryAfter = rateLimit.retryAfter ?? 1;
|
|
189
|
+
return new Response(
|
|
190
|
+
JSON.stringify({
|
|
191
|
+
message: `Too many compute requests. Retry in ${retryAfter}s.`,
|
|
192
|
+
retryAfter
|
|
193
|
+
}),
|
|
194
|
+
{
|
|
195
|
+
status: 429,
|
|
196
|
+
headers: {
|
|
197
|
+
"Content-Type": "application/json",
|
|
198
|
+
"Retry-After": String(retryAfter)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
if (isLocal && guid) {
|
|
204
|
+
let record;
|
|
205
|
+
try {
|
|
206
|
+
record = await providers.data.definitions.get(solveCtx, guid);
|
|
207
|
+
} catch (err) {
|
|
208
|
+
console.error(`Failed to load local definition: ${guid}`, err);
|
|
209
|
+
throw error(404, `Definition '${guid}' not found`);
|
|
210
|
+
}
|
|
211
|
+
if (!record) throw error(404, `Definition '${guid}' not found`);
|
|
212
|
+
const project = await providers.data.projects.getProject(solveCtx, record.projectId);
|
|
213
|
+
solveOrgId = project?.orgId ?? null;
|
|
214
|
+
definitionPin = record.computeServerId ?? null;
|
|
215
|
+
if (!sharedAccess) {
|
|
216
|
+
if (channel === "draft") {
|
|
217
|
+
await requireCanEditDefinition(locals, record.projectId, guid);
|
|
218
|
+
} else {
|
|
219
|
+
await requireCanSolve(locals, record.projectId);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
const versionId = channel === "live" ? record.liveVersionId : record.draftVersionId;
|
|
223
|
+
if (!versionId) {
|
|
224
|
+
throw error(404, `Definition '${guid}' has no ${channel} version yet`);
|
|
225
|
+
}
|
|
226
|
+
const version = await providers.data.definitions.getVersion(solveCtx, versionId);
|
|
227
|
+
if (!version || version.definitionId !== guid) {
|
|
228
|
+
throw error(404, `Definition '${guid}' ${channel} version is missing`);
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
const bytes = await storage.get(version.fileKey);
|
|
232
|
+
if (!bytes) throw new Error(`Version blob missing: ${version.fileKey}`);
|
|
233
|
+
definitionSource = bytes;
|
|
234
|
+
} catch (err) {
|
|
235
|
+
console.error(`Failed to load local definition blob: ${guid}`, err);
|
|
236
|
+
throw error(404, `Definition '${guid}' not found`);
|
|
237
|
+
}
|
|
238
|
+
} else {
|
|
239
|
+
try {
|
|
240
|
+
definitionSource = await loadRemoteDefinition(definitionUrl);
|
|
241
|
+
} catch (err) {
|
|
242
|
+
console.error(`Failed to fetch definition from ${definitionUrl}:`, err);
|
|
243
|
+
throw error(
|
|
244
|
+
400,
|
|
245
|
+
`Failed to load definition: ${err instanceof Error ? err.message : String(err)}`
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const inputTree = TreeBuilder.fromInputParams(
|
|
250
|
+
inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, values[input.id]))
|
|
251
|
+
);
|
|
252
|
+
if (sharedAccess) {
|
|
253
|
+
const next = await providers.data.shareLinks.tryIncrementSolveCount(
|
|
254
|
+
solveCtx,
|
|
255
|
+
sharedAccess.link.id
|
|
256
|
+
);
|
|
257
|
+
if (next === null) {
|
|
258
|
+
throw error(429, "Share link solve cap reached.");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const serverConfig = await resolveServerForOrg(solveCtx, solveOrgId, { definitionPin });
|
|
262
|
+
const { scheduler } = await getClient(serverConfig);
|
|
263
|
+
let solvedDefinition;
|
|
264
|
+
try {
|
|
265
|
+
solvedDefinition = await scheduler.solve(definitionSource, inputTree, {
|
|
266
|
+
signal: request.signal
|
|
267
|
+
});
|
|
268
|
+
} catch (err) {
|
|
269
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
270
|
+
if (request.signal.aborted) {
|
|
271
|
+
throw error(499, "Client closed request");
|
|
272
|
+
}
|
|
273
|
+
throw error(
|
|
274
|
+
504,
|
|
275
|
+
`Solve exceeded the ${Math.round(MAX_SOLVE_DURATION_MS / 1e3)}s deadline.`
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
throw err;
|
|
279
|
+
}
|
|
280
|
+
return json(solvedDefinition);
|
|
281
|
+
} catch (err) {
|
|
282
|
+
if (isHttpError(err)) throw err;
|
|
283
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
284
|
+
console.error("[API/Compute] Error:", message);
|
|
285
|
+
if (err instanceof TypeError && message === "fetch failed") {
|
|
286
|
+
throw error(503, "Compute server is unreachable");
|
|
287
|
+
}
|
|
288
|
+
throw error(500, message);
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
export { POST };
|
|
293
|
+
//# sourceMappingURL=_server.ts-CFIgn6q6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CFIgn6q6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/compute/_server.ts.js"],"sourcesContent":["import { TreeBuilder, GrasshopperClient } from \"@selvajs/compute\";\nimport { error, json, isHttpError } from \"@sveltejs/kit\";\nimport { r as resolveServerForOrg } from \"../../../../chunks/resolve.server.js\";\nimport { R as RATE_LIMIT_WINDOW_MS, a as RATE_LIMIT_MAX_REQUESTS, M as MAX_SOLVE_DURATION_MS, D as DEFINITION_CACHE_TTL_MS, b as REMOTE_DEFINITION_FETCH_TIMEOUT_MS, c as REMOTE_DEFINITION_MAX_BYTES, C as COMPUTE_REQUEST_MAX_BYTES } from \"../../../../chunks/computeLimits.js\";\nimport { r as requireMaxBodySize } from \"../../../../chunks/admin-auth.server.js\";\nimport { i as getStorageProvider, p as providers } from \"../../../../chunks/providers.server.js\";\nimport { d as requireCanEditDefinition, e as requireCanSolve } from \"../../../../chunks/access.server.js\";\nimport { t as tryResolveShareToken } from \"../../../../chunks/resolve.server2.js\";\nfunction isSafeRemoteDefinitionUrl(raw) {\n let parsed;\n try {\n parsed = new URL(raw);\n } catch {\n return false;\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") return false;\n const host = parsed.hostname.toLowerCase();\n if (!host) return false;\n if (host === \"localhost\" || host === \"0.0.0.0\" || host.endsWith(\".localhost\")) return false;\n if (host === \"::1\" || host === \"[::1]\") return false;\n if (/^127\\./.test(host)) return false;\n if (/^10\\./.test(host)) return false;\n if (/^192\\.168\\./.test(host)) return false;\n if (/^172\\.(1[6-9]|2[0-9]|3[0-1])\\./.test(host)) return false;\n if (/^169\\.254\\./.test(host)) return false;\n if (/^\\[?(fc|fd)[0-9a-f]{2}:/i.test(host)) return false;\n if (/^\\[?fe[89ab][0-9a-f]:/i.test(host)) return false;\n return true;\n}\nconst WINDOW_MS = RATE_LIMIT_WINDOW_MS;\nconst MAX_PER_WINDOW = RATE_LIMIT_MAX_REQUESTS;\nconst buckets = /* @__PURE__ */ new Map();\nfunction checkComputeRateLimit(key) {\n const now = Date.now();\n const entry = buckets.get(key);\n if (!entry || now > entry.resetAt) {\n buckets.set(key, { count: 1, resetAt: now + WINDOW_MS });\n return { allowed: true };\n }\n if (entry.count >= MAX_PER_WINDOW) {\n return { allowed: false, retryAfter: Math.ceil((entry.resetAt - now) / 1e3) };\n }\n entry.count += 1;\n return { allowed: true };\n}\nconst definitionCache = /* @__PURE__ */ new Map();\nlet cachedClient = null;\nlet cachedScheduler = null;\nlet cachedClientConfig = null;\nasync function getClient(serverConfig) {\n const currentConfig = {\n serverUrl: serverConfig.serverUrl,\n apiKey: serverConfig.apiKey\n };\n if (cachedClient && cachedScheduler && cachedClientConfig && cachedClientConfig.serverUrl === currentConfig.serverUrl && cachedClientConfig.apiKey === currentConfig.apiKey) {\n return { client: cachedClient, scheduler: cachedScheduler };\n }\n cachedScheduler?.dispose();\n cachedClient = await GrasshopperClient.create({\n serverUrl: currentConfig.serverUrl,\n apiKey: currentConfig.apiKey\n });\n cachedScheduler = cachedClient.createScheduler({\n mode: \"queue\",\n timeoutMs: MAX_SOLVE_DURATION_MS,\n cache: { maxEntries: 20, ttlMs: 5 * 6e4 }\n });\n cachedClientConfig = currentConfig;\n return { client: cachedClient, scheduler: cachedScheduler };\n}\nasync function loadRemoteDefinition(url) {\n if (!isSafeRemoteDefinitionUrl(url)) {\n throw new Error(\"Remote definition URL is not allowed\");\n }\n const now = Date.now();\n const cached = definitionCache.get(url);\n if (cached && now - cached.fetchedAt < DEFINITION_CACHE_TTL_MS) {\n return cached.data;\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REMOTE_DEFINITION_FETCH_TIMEOUT_MS);\n let data;\n try {\n const response = await fetch(url, {\n signal: controller.signal,\n redirect: \"error\"\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n const declared = Number(response.headers.get(\"content-length\"));\n if (Number.isFinite(declared) && declared > REMOTE_DEFINITION_MAX_BYTES) {\n throw new Error(\"Remote definition exceeds size limit\");\n }\n const buffer = await response.arrayBuffer();\n if (buffer.byteLength > REMOTE_DEFINITION_MAX_BYTES) {\n throw new Error(\"Remote definition exceeds size limit\");\n }\n data = new Uint8Array(buffer);\n } finally {\n clearTimeout(timeout);\n }\n definitionCache.set(url, { data, fetchedAt: now });\n if (definitionCache.size > 50) {\n const entries = Array.from(definitionCache.entries());\n entries.sort((a, b) => a[1].fetchedAt - b[1].fetchedAt);\n for (let i = 0; i < 10; i++) {\n definitionCache.delete(entries[i][0]);\n }\n }\n return data;\n}\nfunction transformInputParameter(input, value) {\n const base = {\n description: input.description || \"\",\n name: input.nickname,\n nickname: input.nickname || null,\n id: input.id\n };\n if (input.paramType === \"number\" || input.paramType === \"integer\") {\n return {\n ...base,\n paramType: input.paramType === \"integer\" ? \"Integer\" : \"Number\",\n minimum: input.minimum,\n maximum: input.maximum,\n stepSize: input.paramType === \"integer\" ? 1 : input.stepSize,\n default: value ?? input.default\n };\n } else if (input.paramType === \"text\") {\n return {\n ...base,\n paramType: \"Text\",\n default: value ?? input.default ?? \"\"\n };\n } else if (input.paramType === \"boolean\") {\n return {\n ...base,\n paramType: \"Boolean\",\n default: value ?? input.default ?? false\n };\n }\n return {\n ...base,\n paramType: \"Text\",\n default: value ?? \"\"\n };\n}\nconst POST = async ({ request, locals, url }) => {\n const storage = getStorageProvider();\n requireMaxBodySize(request, COMPUTE_REQUEST_MAX_BYTES);\n try {\n const body = await request.json();\n const { inputs, values } = body;\n const definitionUrl = body.definitionUrl;\n const channel = body.channel ?? \"live\";\n if (!inputs || !values || !definitionUrl) {\n throw error(400, \"Missing required fields: inputs, values, or definitionUrl\");\n }\n if (channel !== \"live\" && channel !== \"draft\") {\n throw error(400, `Invalid channel: ${channel}. Must be 'live' or 'draft'.`);\n }\n let definitionSource;\n let solveOrgId = null;\n let definitionPin = null;\n const isLocal = definitionUrl.startsWith(\"local:\");\n const guid = isLocal ? definitionUrl.substring(6) : null;\n const sharedAccess = isLocal && guid ? await tryResolveShareToken(request, url, guid, channel, { requireSolve: true }) : null;\n if (!sharedAccess && (!locals.ctx || !locals.user)) {\n throw error(401, \"Unauthorized\");\n }\n const solveCtx = sharedAccess?.ctx ?? locals.ctx;\n const rateLimitKey = sharedAccess ? `share:${sharedAccess.link.id}` : `user:${locals.user.id}`;\n const rateLimit = checkComputeRateLimit(rateLimitKey);\n if (!rateLimit.allowed) {\n const retryAfter = rateLimit.retryAfter ?? 1;\n return new Response(\n JSON.stringify({\n message: `Too many compute requests. Retry in ${retryAfter}s.`,\n retryAfter\n }),\n {\n status: 429,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Retry-After\": String(retryAfter)\n }\n }\n );\n }\n if (isLocal && guid) {\n let record;\n try {\n record = await providers.data.definitions.get(solveCtx, guid);\n } catch (err) {\n console.error(`Failed to load local definition: ${guid}`, err);\n throw error(404, `Definition '${guid}' not found`);\n }\n if (!record) throw error(404, `Definition '${guid}' not found`);\n const project = await providers.data.projects.getProject(solveCtx, record.projectId);\n solveOrgId = project?.orgId ?? null;\n definitionPin = record.computeServerId ?? null;\n if (!sharedAccess) {\n if (channel === \"draft\") {\n await requireCanEditDefinition(locals, record.projectId, guid);\n } else {\n await requireCanSolve(locals, record.projectId);\n }\n }\n const versionId = channel === \"live\" ? record.liveVersionId : record.draftVersionId;\n if (!versionId) {\n throw error(404, `Definition '${guid}' has no ${channel} version yet`);\n }\n const version = await providers.data.definitions.getVersion(solveCtx, versionId);\n if (!version || version.definitionId !== guid) {\n throw error(404, `Definition '${guid}' ${channel} version is missing`);\n }\n try {\n const bytes = await storage.get(version.fileKey);\n if (!bytes) throw new Error(`Version blob missing: ${version.fileKey}`);\n definitionSource = bytes;\n } catch (err) {\n console.error(`Failed to load local definition blob: ${guid}`, err);\n throw error(404, `Definition '${guid}' not found`);\n }\n } else {\n try {\n definitionSource = await loadRemoteDefinition(definitionUrl);\n } catch (err) {\n console.error(`Failed to fetch definition from ${definitionUrl}:`, err);\n throw error(\n 400,\n `Failed to load definition: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n const inputTree = TreeBuilder.fromInputParams(\n inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, values[input.id]))\n );\n if (sharedAccess) {\n const next = await providers.data.shareLinks.tryIncrementSolveCount(\n solveCtx,\n sharedAccess.link.id\n );\n if (next === null) {\n throw error(429, \"Share link solve cap reached.\");\n }\n }\n const serverConfig = await resolveServerForOrg(solveCtx, solveOrgId, { definitionPin });\n const { scheduler } = await getClient(serverConfig);\n let solvedDefinition;\n try {\n solvedDefinition = await scheduler.solve(definitionSource, inputTree, {\n signal: request.signal\n });\n } catch (err) {\n if (err instanceof Error && err.name === \"AbortError\") {\n if (request.signal.aborted) {\n throw error(499, \"Client closed request\");\n }\n throw error(\n 504,\n `Solve exceeded the ${Math.round(MAX_SOLVE_DURATION_MS / 1e3)}s deadline.`\n );\n }\n throw err;\n }\n return json(solvedDefinition);\n } catch (err) {\n if (isHttpError(err)) throw err;\n const message = err instanceof Error ? err.message : \"Unknown error\";\n console.error(\"[API/Compute] Error:\", message);\n if (err instanceof TypeError && message === \"fetch failed\") {\n throw error(503, \"Compute server is unreachable\");\n }\n throw error(500, message);\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,SAAS,yBAAyB,CAAC,GAAG,EAAE;AACxC,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,OAAO,KAAK;AAC/E,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC5C,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACzB,EAAE,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK;AAC7F,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,OAAO,KAAK;AACtD,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AACvC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AACtC,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC5C,EAAE,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC/D,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC5C,EAAE,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AACzD,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AACvD,EAAE,OAAO,IAAI;AACb;AACA,MAAM,SAAS,GAAG,oBAAoB;AACtC,MAAM,cAAc,GAAG,uBAAuB;AAC9C,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AACzC,SAAS,qBAAqB,CAAC,GAAG,EAAE;AACpC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE;AACrC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC;AAC5D,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,cAAc,EAAE;AACrC,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE;AACjF,EAAE;AACF,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;AAClB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1B;AACA,MAAM,eAAe,mBAAmB,IAAI,GAAG,EAAE;AACjD,IAAI,YAAY,GAAG,IAAI;AACvB,IAAI,eAAe,GAAG,IAAI;AAC1B,IAAI,kBAAkB,GAAG,IAAI;AAC7B,eAAe,SAAS,CAAC,YAAY,EAAE;AACvC,EAAE,MAAM,aAAa,GAAG;AACxB,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS;AACrC,IAAI,MAAM,EAAE,YAAY,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,YAAY,IAAI,eAAe,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,IAAI,kBAAkB,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;AAC/K,IAAI,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE;AAC/D,EAAE;AACF,EAAE,eAAe,EAAE,OAAO,EAAE;AAC5B,EAAE,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;AAChD,IAAI,SAAS,EAAE,aAAa,CAAC,SAAS;AACtC,IAAI,MAAM,EAAE,aAAa,CAAC;AAC1B,GAAG,CAAC;AACJ,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;AACjD,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,SAAS,EAAE,qBAAqB;AACpC,IAAI,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG;AAC3C,GAAG,CAAC;AACJ,EAAE,kBAAkB,GAAG,aAAa;AACpC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE;AAC7D;AACA,eAAe,oBAAoB,CAAC,GAAG,EAAE;AACzC,EAAE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC3D,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACxB,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AACzC,EAAE,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,uBAAuB,EAAE;AAClE,IAAI,OAAO,MAAM,CAAC,IAAI;AACtB,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAC1C,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,kCAAkC,CAAC;AAC1F,EAAE,IAAI,IAAI;AACV,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AACtC,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM;AAC/B,MAAM,QAAQ,EAAE;AAChB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnE,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,2BAA2B,EAAE;AAC7E,MAAM,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC7D,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;AAC/C,IAAI,IAAI,MAAM,CAAC,UAAU,GAAG,2BAA2B,EAAE;AACzD,MAAM,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;AACjC,EAAE,CAAC,SAAS;AACZ,IAAI,YAAY,CAAC,OAAO,CAAC;AACzB,EAAE;AACF,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AACpD,EAAE,IAAI,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACzD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/C,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;AACxC,IAAI,IAAI,EAAE,KAAK,CAAC,QAAQ;AACxB,IAAI,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;AACpC,IAAI,EAAE,EAAE,KAAK,CAAC;AACd,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACrE,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,QAAQ;AACrE,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,OAAO,EAAE,KAAK,CAAC,OAAO;AAC5B,MAAM,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ;AAClE,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;AAC9B,KAAK;AACL,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AACzC,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,MAAM;AACvB,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI;AACzC,KAAK;AACL,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AAC5C,IAAI,OAAO;AACX,MAAM,GAAG,IAAI;AACb,MAAM,SAAS,EAAE,SAAS;AAC1B,MAAM,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI;AACzC,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,GAAG,IAAI;AACX,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,OAAO,EAAE,KAAK,IAAI;AACtB,GAAG;AACH;AACK,MAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACjD,EAAE,MAAM,OAAO,GAAG,kBAAkB,EAAE;AACtC,EAAE,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,CAAC;AACxD,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACnC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;AAC5C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM;AAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;AAC9C,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,2DAA2D,CAAC;AACnF,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE;AACnD,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,IAAI,gBAAgB;AACxB,IAAI,IAAI,UAAU,GAAG,IAAI;AACzB,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5D,IAAI,MAAM,YAAY,GAAG,OAAO,IAAI,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;AACjI,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG;AACpD,IAAI,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClG,IAAI,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC;AAClD,MAAM,OAAO,IAAI,QAAQ;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC;AACvB,UAAU,OAAO,EAAE,CAAC,oCAAoC,EAAE,UAAU,CAAC,EAAE,CAAC;AACxE,UAAU;AACV,SAAS,CAAC;AACV,QAAQ;AACR,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,OAAO,EAAE;AACnB,YAAY,cAAc,EAAE,kBAAkB;AAC9C,YAAY,aAAa,EAAE,MAAM,CAAC,UAAU;AAC5C;AACA;AACA,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,IAAI,MAAM;AAChB,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrE,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AACtE,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACrE,MAAM,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;AAC1F,MAAM,UAAU,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI;AACzC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI;AACpD,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,IAAI,OAAO,KAAK,OAAO,EAAE;AACjC,UAAU,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACxE,QAAQ,CAAC,MAAM;AACf,UAAU,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACzD,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc;AACzF,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9E,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;AACtF,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AACrD,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC9E,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACxD,QAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,QAAQ,gBAAgB,GAAG,KAAK;AAChC,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3E,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI;AACV,QAAQ,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC;AACpE,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,gCAAgC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/E,QAAQ,MAAM,KAAK;AACnB,UAAU,GAAG;AACb,UAAU,CAAC,2BAA2B,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzF,SAAS;AACT,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe;AACjD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB;AACzE,QAAQ,QAAQ;AAChB,QAAQ,YAAY,CAAC,IAAI,CAAC;AAC1B,OAAO;AACP,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC;AACzD,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC;AAC3F,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC;AACvD,IAAI,IAAI,gBAAgB;AACxB,IAAI,IAAI;AACR,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE;AAC5E,QAAQ,MAAM,EAAE,OAAO,CAAC;AACxB,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AAC7D,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;AACpC,UAAU,MAAM,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACnD,QAAQ;AACR,QAAQ,MAAM,KAAK;AACnB,UAAU,GAAG;AACb,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,WAAW;AACnF,SAAS;AACT,MAAM;AACN,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACjC,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG;AACnC,IAAI,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,eAAe;AACxE,IAAI,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,CAAC;AAClD,IAAI,IAAI,GAAG,YAAY,SAAS,IAAI,OAAO,KAAK,cAAc,EAAE;AAChE,MAAM,MAAM,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC;AACvD,IAAI;AACJ,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7B,EAAE;AACF;;;;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { h as getProjectProvider, c as getOrganizationProvider } from './providers.server-C32WKtDL.js';
|
|
4
|
+
import { l as requireCanManage, m as requireCanEditProjectSettings, w as withAdminBypass, n as canChangeVisibilityToPublic } from './access.server-GvriCjXN.js';
|
|
5
|
+
import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
|
|
6
|
+
import { s as slugify } from './slug-BGuFQjqe.js';
|
|
7
|
+
import { g as ProjectVisibilitySchema, v as validateProjectFlags } from './context-9tV9WxQ5.js';
|
|
8
|
+
import './shared-server-DaWdgxVh.js';
|
|
9
|
+
import 'node:url';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import 'node:fs';
|
|
12
|
+
import 'node:crypto';
|
|
13
|
+
import 'node:fs/promises';
|
|
14
|
+
import '@supabase/supabase-js';
|
|
15
|
+
|
|
16
|
+
const UpdateProjectBody = z.object({
|
|
17
|
+
name: z.string().min(1).max(128).trim(),
|
|
18
|
+
description: z.string().max(2e3).nullish(),
|
|
19
|
+
visibility: ProjectVisibilitySchema,
|
|
20
|
+
autoJoinOnUpload: z.boolean()
|
|
21
|
+
}).partial();
|
|
22
|
+
const PATCH = async ({ params, request, locals }) => {
|
|
23
|
+
const { id } = params;
|
|
24
|
+
if (!id) throw error(400, "Missing project ID");
|
|
25
|
+
const { ctx, project: existing } = await requireCanEditProjectSettings(locals, id);
|
|
26
|
+
const body = await request.json().catch(() => null);
|
|
27
|
+
const parsed = UpdateProjectBody.safeParse(body);
|
|
28
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
29
|
+
if (parsed.data.visibility !== void 0 && parsed.data.visibility === "public" && existing.visibility !== "public") {
|
|
30
|
+
const orgMember = await getOrganizationProvider().getOrgMember(ctx, existing.orgId, ctx.userId);
|
|
31
|
+
const passes = withAdminBypass(
|
|
32
|
+
ctx.platformPermissions,
|
|
33
|
+
() => canChangeVisibilityToPublic({ orgMember })
|
|
34
|
+
);
|
|
35
|
+
if (!passes) {
|
|
36
|
+
throw error(403, "Only org owners or admins can make a project public.");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const mergedVisibility = parsed.data.visibility ?? existing.visibility;
|
|
40
|
+
const mergedAutoJoin = parsed.data.autoJoinOnUpload ?? existing.autoJoinOnUpload;
|
|
41
|
+
const flagIssues = validateProjectFlags({
|
|
42
|
+
visibility: mergedVisibility,
|
|
43
|
+
autoJoinOnUpload: mergedAutoJoin
|
|
44
|
+
});
|
|
45
|
+
if (flagIssues.length > 0) {
|
|
46
|
+
throw error(400, flagIssues.map((i) => `${i.path}: ${i.message}`).join("; "));
|
|
47
|
+
}
|
|
48
|
+
const patch = {};
|
|
49
|
+
if (parsed.data.name !== void 0) {
|
|
50
|
+
patch.name = parsed.data.name;
|
|
51
|
+
patch.slug = slugify(parsed.data.name);
|
|
52
|
+
}
|
|
53
|
+
if (parsed.data.description !== void 0) {
|
|
54
|
+
patch.description = parsed.data.description ?? void 0;
|
|
55
|
+
}
|
|
56
|
+
if (parsed.data.visibility !== void 0) patch.visibility = parsed.data.visibility;
|
|
57
|
+
if (parsed.data.autoJoinOnUpload !== void 0) {
|
|
58
|
+
patch.autoJoinOnUpload = parsed.data.autoJoinOnUpload;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await getProjectProvider().updateProject(ctx, id, patch);
|
|
62
|
+
return json({ success: true });
|
|
63
|
+
} catch (err) {
|
|
64
|
+
handleApiError(err, "Failed to update project");
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const DELETE = async ({ params, locals }) => {
|
|
68
|
+
const { id } = params;
|
|
69
|
+
if (!id) throw error(400, "Missing project ID");
|
|
70
|
+
await requireCanManage(locals, id);
|
|
71
|
+
const ctx = locals.ctx;
|
|
72
|
+
try {
|
|
73
|
+
await getProjectProvider().deleteProject(ctx, id);
|
|
74
|
+
return json({ success: true });
|
|
75
|
+
} catch (err) {
|
|
76
|
+
handleApiError(err, "Failed to delete project");
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export { DELETE, PATCH };
|
|
81
|
+
//# sourceMappingURL=_server.ts-CaHe7mo6.js.map
|