@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,86 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { h as getProjectProvider, P as ProviderError } from './providers.server-C32WKtDL.js';
|
|
5
|
+
import { k as requireCanCreateProject } from './access.server-GvriCjXN.js';
|
|
6
|
+
import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
|
|
7
|
+
import { s as slugify } from './slug-BGuFQjqe.js';
|
|
8
|
+
import { g as ProjectVisibilitySchema } from './context-9tV9WxQ5.js';
|
|
9
|
+
import './shared-server-DaWdgxVh.js';
|
|
10
|
+
import 'node:url';
|
|
11
|
+
import 'node:path';
|
|
12
|
+
import 'node:fs';
|
|
13
|
+
import 'node:fs/promises';
|
|
14
|
+
import '@supabase/supabase-js';
|
|
15
|
+
|
|
16
|
+
const MAX_SLUG_ATTEMPTS = 25;
|
|
17
|
+
function isSlugConflict(err) {
|
|
18
|
+
return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);
|
|
19
|
+
}
|
|
20
|
+
function isNameConflict(err) {
|
|
21
|
+
return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);
|
|
22
|
+
}
|
|
23
|
+
const CreateProjectBody = z.object({
|
|
24
|
+
name: z.string().min(1, "Project name is required").max(128).trim(),
|
|
25
|
+
description: z.string().max(2e3).optional(),
|
|
26
|
+
visibility: ProjectVisibilitySchema.default("private"),
|
|
27
|
+
autoJoinOnUpload: z.boolean().optional()
|
|
28
|
+
});
|
|
29
|
+
const GET = async ({ locals }) => {
|
|
30
|
+
const ctx = locals.ctx;
|
|
31
|
+
if (!ctx.actingOrgId) throw error(400, "No active organization");
|
|
32
|
+
try {
|
|
33
|
+
const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });
|
|
34
|
+
return json({ projects: page.items });
|
|
35
|
+
} catch (err) {
|
|
36
|
+
handleApiError(err, "Failed to load projects");
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const POST = async ({ request, locals }) => {
|
|
40
|
+
const ctx = locals.ctx;
|
|
41
|
+
if (!ctx.actingOrgId) throw error(400, "No active organization");
|
|
42
|
+
await requireCanCreateProject(locals, ctx.actingOrgId);
|
|
43
|
+
const body = await request.json().catch(() => null);
|
|
44
|
+
const parsed = CreateProjectBody.safeParse(body);
|
|
45
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
46
|
+
const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;
|
|
47
|
+
if (autoJoinOnUpload && parsed.data.visibility !== "public") {
|
|
48
|
+
throw error(400, "autoJoinOnUpload requires visibility=public");
|
|
49
|
+
}
|
|
50
|
+
const projectStore = getProjectProvider();
|
|
51
|
+
const baseSlug = slugify(parsed.data.name) || "project";
|
|
52
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
53
|
+
const projectId = randomUUID();
|
|
54
|
+
for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {
|
|
55
|
+
const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;
|
|
56
|
+
const project = {
|
|
57
|
+
id: projectId,
|
|
58
|
+
orgId: ctx.actingOrgId,
|
|
59
|
+
name: parsed.data.name,
|
|
60
|
+
slug,
|
|
61
|
+
description: parsed.data.description,
|
|
62
|
+
visibility: parsed.data.visibility,
|
|
63
|
+
ownerId: locals.user.id,
|
|
64
|
+
createdBy: locals.user.id,
|
|
65
|
+
updatedBy: locals.user.id,
|
|
66
|
+
autoJoinOnUpload,
|
|
67
|
+
createdAt: now,
|
|
68
|
+
updatedAt: now,
|
|
69
|
+
deletedAt: null
|
|
70
|
+
};
|
|
71
|
+
try {
|
|
72
|
+
await projectStore.createProject(ctx, project);
|
|
73
|
+
return json(project, { status: 201 });
|
|
74
|
+
} catch (err) {
|
|
75
|
+
if (isNameConflict(err)) {
|
|
76
|
+
throw error(409, "A project with that name already exists in this organization.");
|
|
77
|
+
}
|
|
78
|
+
if (isSlugConflict(err)) continue;
|
|
79
|
+
handleApiError(err, "Failed to create project");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
throw error(409, "Could not pick a unique project slug after several attempts.");
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export { GET, POST };
|
|
86
|
+
//# sourceMappingURL=_server.ts-DBh0rJrm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DBh0rJrm.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { b as getProjectProvider, P as ProviderError } from \"../../../../chunks/providers.server.js\";\nimport { k as requireCanCreateProject } from \"../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../chunks/slug.js\";\nimport { g as ProjectVisibilitySchema } from \"../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreateProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n visibility: ProjectVisibilitySchema.default(\"private\"),\n autoJoinOnUpload: z.boolean().optional()\n});\nconst GET = async ({ locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) throw error(400, \"No active organization\");\n try {\n const page = await getProjectProvider().listProjects(ctx, ctx.actingOrgId, { limit: 200 });\n return json({ projects: page.items });\n } catch (err) {\n handleApiError(err, \"Failed to load projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const ctx = locals.ctx;\n if (!ctx.actingOrgId) throw error(400, \"No active organization\");\n await requireCanCreateProject(locals, ctx.actingOrgId);\n const body = await request.json().catch(() => null);\n const parsed = CreateProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const autoJoinOnUpload = parsed.data.autoJoinOnUpload ?? false;\n if (autoJoinOnUpload && parsed.data.visibility !== \"public\") {\n throw error(400, \"autoJoinOnUpload requires visibility=public\");\n }\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: ctx.actingOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: parsed.data.visibility,\n ownerId: locals.user.id,\n createdBy: locals.user.id,\n updatedBy: locals.user.id,\n autoJoinOnUpload,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(ctx, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n throw error(409, \"A project with that name already exists in this organization.\");\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create project\");\n }\n }\n throw error(409, \"Could not pick a unique project slug after several attempts.\");\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { error } from '@sveltejs/kit';
|
|
2
|
+
import { i as getDefinitionMeta, s as definitionPaths, m as getStorageProvider } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { G as GuidSchema } from './context-9tV9WxQ5.js';
|
|
4
|
+
import { h as requireCanViewProject } from './access.server-GvriCjXN.js';
|
|
5
|
+
import './shared-server-DaWdgxVh.js';
|
|
6
|
+
import 'node:url';
|
|
7
|
+
import 'node:path';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import 'node:crypto';
|
|
10
|
+
import 'node:fs/promises';
|
|
11
|
+
import '@supabase/supabase-js';
|
|
12
|
+
import 'zod';
|
|
13
|
+
import './api-errors-Dk5z97zb.js';
|
|
14
|
+
|
|
15
|
+
const ALLOWED_EXTENSIONS = {
|
|
16
|
+
".webp": "image/webp",
|
|
17
|
+
".jpg": "image/jpeg",
|
|
18
|
+
".jpeg": "image/jpeg",
|
|
19
|
+
".png": "image/png",
|
|
20
|
+
".gif": "image/gif"
|
|
21
|
+
};
|
|
22
|
+
const COVER_PATH_PATTERN = /^definitions\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/cover\.([a-z]+)$/i;
|
|
23
|
+
const GET = async ({ params, locals }) => {
|
|
24
|
+
const storagePath = params.path;
|
|
25
|
+
if (!storagePath) throw error(400, "Missing path");
|
|
26
|
+
const match = COVER_PATH_PATTERN.exec(storagePath);
|
|
27
|
+
if (!match) throw error(404, "File not found");
|
|
28
|
+
const [, guid, rawExt] = match;
|
|
29
|
+
const ext = `.${rawExt.toLowerCase()}`;
|
|
30
|
+
if (!ALLOWED_EXTENSIONS[ext]) throw error(404, "File not found");
|
|
31
|
+
const guidParsed = GuidSchema.safeParse(guid);
|
|
32
|
+
if (!guidParsed.success) throw error(404, "File not found");
|
|
33
|
+
if (!locals.ctx) throw error(401, "Unauthorized");
|
|
34
|
+
const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
|
|
35
|
+
if (!record) throw error(404, "File not found");
|
|
36
|
+
await requireCanViewProject(locals, record.projectId);
|
|
37
|
+
const canonicalPath = definitionPaths.image(guidParsed.data);
|
|
38
|
+
const bytes = await getStorageProvider().get(canonicalPath);
|
|
39
|
+
if (!bytes) throw error(404, "File not found");
|
|
40
|
+
return new Response(Buffer.from(bytes), {
|
|
41
|
+
headers: {
|
|
42
|
+
"Content-Type": ALLOWED_EXTENSIONS[ext],
|
|
43
|
+
"Cache-Control": "private, max-age=3600"
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export { GET };
|
|
49
|
+
//# sourceMappingURL=_server.ts-DJUYnHrj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DJUYnHrj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, l as definitionPaths, i as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { h as requireCanViewProject } from \"../../../../../chunks/access.server.js\";\nconst ALLOWED_EXTENSIONS = {\n \".webp\": \"image/webp\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".gif\": \"image/gif\"\n};\nconst COVER_PATH_PATTERN = /^definitions\\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\/cover\\.([a-z]+)$/i;\nconst GET = async ({ params, locals }) => {\n const storagePath = params.path;\n if (!storagePath) throw error(400, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) throw error(404, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) throw error(404, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) throw error(404, \"File not found\");\n if (!locals.ctx) throw error(401, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) throw error(404, \"File not found\");\n await requireCanViewProject(locals, record.projectId);\n const canonicalPath = definitionPaths.image(guidParsed.data);\n const bytes = await getStorageProvider().get(canonicalPath);\n if (!bytes) throw error(404, \"File not found\");\n return new Response(Buffer.from(bytes), {\n headers: {\n \"Content-Type\": ALLOWED_EXTENSIONS[ext],\n \"Cache-Control\": \"private, max-age=3600\"\n }\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,MAAM,kBAAkB,GAAG;AAC3B,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,MAAM,EAAE,WAAW;AACrB,EAAE,MAAM,EAAE;AACV,CAAC;AACD,MAAM,kBAAkB,GAAG,iGAAiG;AACvH,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC1C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;AACjC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACpD,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK;AAChC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAClE,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAC7D,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AACjD,EAAE,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7D,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;AAChD,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,MAAM,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7C,MAAM,eAAe,EAAE;AACvB;AACA,GAAG,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { r as definitionService } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { g as requireEditableDefinition } from './access.server-GvriCjXN.js';
|
|
4
|
+
import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
|
|
5
|
+
import { G as GH_EXTENSIONS } from './types-DxzJoaA4.js';
|
|
6
|
+
import { G as GuidSchema, c as UpdateMetadataInputSchema } from './context-9tV9WxQ5.js';
|
|
7
|
+
import { d as MAX_GH_FILE_SIZE } from './computeLimits-FIJ-Mzn4.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
|
+
import 'zod';
|
|
16
|
+
|
|
17
|
+
const POST = async ({ params, request, locals }) => {
|
|
18
|
+
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
19
|
+
if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
|
|
20
|
+
const formData = await request.formData();
|
|
21
|
+
const file = formData.get("file");
|
|
22
|
+
if (!(file instanceof File)) throw error(400, "A Grasshopper (.gh or .ghx) file is required");
|
|
23
|
+
const changeNoteRaw = formData.get("changeNote");
|
|
24
|
+
const changeNote = typeof changeNoteRaw === "string" ? changeNoteRaw.slice(0, 1e3) : void 0;
|
|
25
|
+
const ext = file.name.slice(file.name.lastIndexOf(".")).toLowerCase();
|
|
26
|
+
if (!GH_EXTENSIONS.includes(ext)) {
|
|
27
|
+
throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(", ")}`);
|
|
28
|
+
}
|
|
29
|
+
if (file.size > MAX_GH_FILE_SIZE) {
|
|
30
|
+
throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);
|
|
31
|
+
}
|
|
32
|
+
const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
|
|
33
|
+
const fileExt = ext.slice(1);
|
|
34
|
+
try {
|
|
35
|
+
const data = new Uint8Array(await file.arrayBuffer());
|
|
36
|
+
const version = await definitionService.uploadVersion(
|
|
37
|
+
ctx,
|
|
38
|
+
guidParsed.data,
|
|
39
|
+
data,
|
|
40
|
+
fileExt,
|
|
41
|
+
file.name,
|
|
42
|
+
changeNote
|
|
43
|
+
);
|
|
44
|
+
return json({ success: true, version });
|
|
45
|
+
} catch (err) {
|
|
46
|
+
handleApiError(err, "Failed to upload definition version");
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const DELETE = async ({ params, locals }) => {
|
|
50
|
+
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
51
|
+
if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
|
|
52
|
+
const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
|
|
53
|
+
try {
|
|
54
|
+
await definitionService.delete(ctx, guidParsed.data);
|
|
55
|
+
return json({ success: true });
|
|
56
|
+
} catch (err) {
|
|
57
|
+
handleApiError(err, "Failed to delete definition");
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const PUT = async ({ params, request, locals }) => {
|
|
61
|
+
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
62
|
+
if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
|
|
63
|
+
const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
|
|
64
|
+
const body = await request.json().catch(() => null);
|
|
65
|
+
const parsed = UpdateMetadataInputSchema.safeParse(body);
|
|
66
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
67
|
+
try {
|
|
68
|
+
await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);
|
|
69
|
+
return json({ success: true });
|
|
70
|
+
} catch (err) {
|
|
71
|
+
handleApiError(err, "Failed to update definition");
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export { DELETE, POST, PUT };
|
|
76
|
+
//# sourceMappingURL=_server.ts-DNPb5zS6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DNPb5zS6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { j as definitionService } 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 GH_EXTENSIONS } from \"../../../../../chunks/types.js\";\nimport { G as GuidSchema, b as UpdateMetadataInputSchema } from \"../../../../../chunks/context.js\";\nimport { d as MAX_GH_FILE_SIZE } from \"../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const formData = await request.formData();\n const file = formData.get(\"file\");\n if (!(file instanceof File)) throw error(400, \"A Grasshopper (.gh or .ghx) file is required\");\n const changeNoteRaw = formData.get(\"changeNote\");\n const changeNote = typeof changeNoteRaw === \"string\" ? changeNoteRaw.slice(0, 1e3) : void 0;\n const ext = file.name.slice(file.name.lastIndexOf(\".\")).toLowerCase();\n if (!GH_EXTENSIONS.includes(ext)) {\n throw error(400, `File type not allowed. Allowed: ${GH_EXTENSIONS.join(\", \")}`);\n }\n if (file.size > MAX_GH_FILE_SIZE) {\n throw error(400, `File too large. Max size: ${MAX_GH_FILE_SIZE / (1024 * 1024)} MB`);\n }\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n const fileExt = ext.slice(1);\n try {\n const data = new Uint8Array(await file.arrayBuffer());\n const version = await definitionService.uploadVersion(\n ctx,\n guidParsed.data,\n data,\n fileExt,\n file.name,\n changeNote\n );\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to upload definition version\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\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 await definitionService.delete(ctx, guidParsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to delete definition\");\n }\n};\nconst PUT = async ({ params, request, locals }) => {\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(() => null);\n const parsed = UpdateMetadataInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await definitionService.updateMeta(ctx, guidParsed.data, parsed.data);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update definition\");\n }\n};\nexport {\n DELETE,\n POST,\n PUT\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { json, error } from '@sveltejs/kit';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { c as getOrganizationProvider, h as getProjectProvider, P as ProviderError } from './providers.server-C32WKtDL.js';
|
|
5
|
+
import { a as requireInstanceAdmin } from './access.server-GvriCjXN.js';
|
|
6
|
+
import { h as handleApiError, t as throwZodError } from './api-errors-Dk5z97zb.js';
|
|
7
|
+
import { s as slugify } from './slug-BGuFQjqe.js';
|
|
8
|
+
import { S as SYSTEM_CONTEXT } from './context-9tV9WxQ5.js';
|
|
9
|
+
import './shared-server-DaWdgxVh.js';
|
|
10
|
+
import 'node:url';
|
|
11
|
+
import 'node:path';
|
|
12
|
+
import 'node:fs';
|
|
13
|
+
import 'node:fs/promises';
|
|
14
|
+
import '@supabase/supabase-js';
|
|
15
|
+
|
|
16
|
+
const MAX_SLUG_ATTEMPTS = 25;
|
|
17
|
+
function isSlugConflict(err) {
|
|
18
|
+
return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);
|
|
19
|
+
}
|
|
20
|
+
function isNameConflict(err) {
|
|
21
|
+
return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);
|
|
22
|
+
}
|
|
23
|
+
const CreatePlatformProjectBody = z.object({
|
|
24
|
+
name: z.string().min(1, "Project name is required").max(128).trim(),
|
|
25
|
+
description: z.string().max(2e3).optional(),
|
|
26
|
+
/**
|
|
27
|
+
* Org that physically hosts the project. Storage routing and compute
|
|
28
|
+
* resolution use this — but org membership in this org does NOT grant
|
|
29
|
+
* access. Visibility = 'platform' overrides those defaults.
|
|
30
|
+
*
|
|
31
|
+
* If omitted, the platform admin's first available org is used.
|
|
32
|
+
*/
|
|
33
|
+
orgId: z.string().uuid().optional()
|
|
34
|
+
});
|
|
35
|
+
const GET = async ({ locals }) => {
|
|
36
|
+
requireInstanceAdmin(locals);
|
|
37
|
+
try {
|
|
38
|
+
const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });
|
|
39
|
+
const all = [];
|
|
40
|
+
for (const org of orgs.items) {
|
|
41
|
+
const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {
|
|
42
|
+
limit: 1e3
|
|
43
|
+
});
|
|
44
|
+
for (const p of page.items) {
|
|
45
|
+
if (p.visibility === "platform") all.push(p);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return json({ projects: all });
|
|
49
|
+
} catch (err) {
|
|
50
|
+
handleApiError(err, "Failed to list platform projects");
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const POST = async ({ request, locals }) => {
|
|
54
|
+
const user = requireInstanceAdmin(locals);
|
|
55
|
+
const ctx = locals.ctx;
|
|
56
|
+
const body = await request.json().catch(() => null);
|
|
57
|
+
const parsed = CreatePlatformProjectBody.safeParse(body);
|
|
58
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
59
|
+
const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;
|
|
60
|
+
if (!hostOrgId) {
|
|
61
|
+
throw error(400, "A host orgId is required (no active organization in context).");
|
|
62
|
+
}
|
|
63
|
+
const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);
|
|
64
|
+
if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);
|
|
65
|
+
const projectStore = getProjectProvider();
|
|
66
|
+
const baseSlug = slugify(parsed.data.name) || "platform-project";
|
|
67
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
68
|
+
const projectId = randomUUID();
|
|
69
|
+
for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {
|
|
70
|
+
const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;
|
|
71
|
+
const project = {
|
|
72
|
+
id: projectId,
|
|
73
|
+
orgId: hostOrgId,
|
|
74
|
+
name: parsed.data.name,
|
|
75
|
+
slug,
|
|
76
|
+
description: parsed.data.description,
|
|
77
|
+
visibility: "platform",
|
|
78
|
+
ownerId: user.id,
|
|
79
|
+
createdBy: user.id,
|
|
80
|
+
updatedBy: user.id,
|
|
81
|
+
autoJoinOnUpload: false,
|
|
82
|
+
createdAt: now,
|
|
83
|
+
updatedAt: now,
|
|
84
|
+
deletedAt: null
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
await projectStore.createProject(SYSTEM_CONTEXT, project);
|
|
88
|
+
return json(project, { status: 201 });
|
|
89
|
+
} catch (err) {
|
|
90
|
+
if (isNameConflict(err)) {
|
|
91
|
+
throw error(409, "A project with that name already exists in the host organization.");
|
|
92
|
+
}
|
|
93
|
+
if (isSlugConflict(err)) continue;
|
|
94
|
+
handleApiError(err, "Failed to create platform project");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
throw error(409, "Could not pick a unique project slug after several attempts.");
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export { GET, POST };
|
|
101
|
+
//# sourceMappingURL=_server.ts-DXPhlUCi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DXPhlUCi.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_server.ts.js"],"sourcesContent":["import { json, error } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { a as getOrganizationProvider, b as getProjectProvider, P as ProviderError } from \"../../../../../chunks/providers.server.js\";\nimport { a as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { h as handleApiError, t as throwZodError } from \"../../../../../chunks/api-errors.js\";\nimport { s as slugify } from \"../../../../../chunks/slug.js\";\nimport { S as SYSTEM_CONTEXT } from \"../../../../../chunks/context.js\";\nconst MAX_SLUG_ATTEMPTS = 25;\nfunction isSlugConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_id_slug_key/.test(err.message);\n}\nfunction isNameConflict(err) {\n return err instanceof ProviderError && err.statusCode === 409 && /projects_org_name_unique/.test(err.message);\n}\nconst CreatePlatformProjectBody = z.object({\n name: z.string().min(1, \"Project name is required\").max(128).trim(),\n description: z.string().max(2e3).optional(),\n /**\n * Org that physically hosts the project. Storage routing and compute\n * resolution use this — but org membership in this org does NOT grant\n * access. Visibility = 'platform' overrides those defaults.\n *\n * If omitted, the platform admin's first available org is used.\n */\n orgId: z.string().uuid().optional()\n});\nconst GET = async ({ locals }) => {\n requireInstanceAdmin(locals);\n try {\n const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });\n const all = [];\n for (const org of orgs.items) {\n const page = await getProjectProvider().listProjects(SYSTEM_CONTEXT, org.id, {\n limit: 1e3\n });\n for (const p of page.items) {\n if (p.visibility === \"platform\") all.push(p);\n }\n }\n return json({ projects: all });\n } catch (err) {\n handleApiError(err, \"Failed to list platform projects\");\n }\n};\nconst POST = async ({ request, locals }) => {\n const user = requireInstanceAdmin(locals);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = CreatePlatformProjectBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;\n if (!hostOrgId) {\n throw error(400, \"A host orgId is required (no active organization in context).\");\n }\n const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);\n if (!hostOrg) throw error(400, `Host organization '${hostOrgId}' not found.`);\n const projectStore = getProjectProvider();\n const baseSlug = slugify(parsed.data.name) || \"platform-project\";\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const projectId = randomUUID();\n for (let attempt = 0; attempt < MAX_SLUG_ATTEMPTS; attempt++) {\n const slug = attempt === 0 ? baseSlug : `${baseSlug}-${attempt + 1}`;\n const project = {\n id: projectId,\n orgId: hostOrgId,\n name: parsed.data.name,\n slug,\n description: parsed.data.description,\n visibility: \"platform\",\n ownerId: user.id,\n createdBy: user.id,\n updatedBy: user.id,\n autoJoinOnUpload: false,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n try {\n await projectStore.createProject(SYSTEM_CONTEXT, project);\n return json(project, { status: 201 });\n } catch (err) {\n if (isNameConflict(err)) {\n throw error(409, \"A project with that name already exists in the host organization.\");\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create platform project\");\n }\n }\n throw error(409, \"Could not pick a unique project slug after several attempts.\");\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { i as getDefinitionMeta, M as MAX_PAGE_LIMIT } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { h as handleApiError } from './api-errors-Dk5z97zb.js';
|
|
4
|
+
import { h as requireCanViewProject } from './access.server-GvriCjXN.js';
|
|
5
|
+
import { G as GuidSchema } from './context-9tV9WxQ5.js';
|
|
6
|
+
import './shared-server-DaWdgxVh.js';
|
|
7
|
+
import 'node:url';
|
|
8
|
+
import 'node:path';
|
|
9
|
+
import 'node:fs';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'node:fs/promises';
|
|
12
|
+
import '@supabase/supabase-js';
|
|
13
|
+
import 'zod';
|
|
14
|
+
|
|
15
|
+
const GET = async ({ params, locals, url }) => {
|
|
16
|
+
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
17
|
+
if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
|
|
18
|
+
if (!locals.ctx) throw error(401, "Unauthorized");
|
|
19
|
+
const rawLimit = Number(url.searchParams.get("limit") ?? 50);
|
|
20
|
+
const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 50;
|
|
21
|
+
const cursor = url.searchParams.get("cursor") ?? void 0;
|
|
22
|
+
try {
|
|
23
|
+
const def = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
|
|
24
|
+
if (!def) throw error(404, "Definition not found");
|
|
25
|
+
await requireCanViewProject(locals, def.projectId);
|
|
26
|
+
const page = await getDefinitionMeta().listVersions(locals.ctx, guidParsed.data, {
|
|
27
|
+
limit,
|
|
28
|
+
cursor
|
|
29
|
+
});
|
|
30
|
+
return json({
|
|
31
|
+
versions: page.items,
|
|
32
|
+
nextCursor: page.nextCursor,
|
|
33
|
+
liveVersionId: def.liveVersionId,
|
|
34
|
+
draftVersionId: def.draftVersionId
|
|
35
|
+
});
|
|
36
|
+
} catch (err) {
|
|
37
|
+
handleApiError(err, "Failed to list versions");
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { GET };
|
|
42
|
+
//# sourceMappingURL=_server.ts-Dmo73WWA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Dmo73WWA.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { k as getDefinitionMeta, M as MAX_PAGE_LIMIT } from \"../../../../../../chunks/providers.server.js\";\nimport { h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nimport { h as requireCanViewProject } from \"../../../../../../chunks/access.server.js\";\nimport { G as GuidSchema } from \"../../../../../../chunks/context.js\";\nconst GET = async ({ params, locals, url }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n if (!locals.ctx) throw error(401, \"Unauthorized\");\n const rawLimit = Number(url.searchParams.get(\"limit\") ?? 50);\n const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(rawLimit, 1), MAX_PAGE_LIMIT) : 50;\n const cursor = url.searchParams.get(\"cursor\") ?? void 0;\n try {\n const def = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!def) throw error(404, \"Definition not found\");\n await requireCanViewProject(locals, def.projectId);\n const page = await getDefinitionMeta().listVersions(locals.ctx, guidParsed.data, {\n limit,\n cursor\n });\n return json({\n versions: page.items,\n nextCursor: page.nextCursor,\n liveVersionId: def.liveVersionId,\n draftVersionId: def.draftVersionId\n });\n } catch (err) {\n handleApiError(err, \"Failed to list versions\");\n }\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAKK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AAC/C,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC;AACnD,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC9D,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE;AAChG,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM;AACzD,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,sBAAsB,CAAC;AACtD,IAAI,MAAM,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE;AACrF,MAAM,KAAK;AACX,MAAM;AACN,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,QAAQ,EAAE,IAAI,CAAC,KAAK;AAC1B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,aAAa,EAAE,GAAG,CAAC,aAAa;AACtC,MAAM,cAAc,EAAE,GAAG,CAAC;AAC1B,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC;AAClD,EAAE;AACF;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { g as getBootHealth, i as isDegraded } from './bootHealth.server-Bn7taneH.js';
|
|
4
|
+
import './context-9tV9WxQ5.js';
|
|
5
|
+
import 'zod';
|
|
6
|
+
import './providers.server-C32WKtDL.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 STARTUP_COMMIT = (() => {
|
|
16
|
+
try {
|
|
17
|
+
return execSync("git rev-parse HEAD", { encoding: "utf8" }).trim();
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
})();
|
|
22
|
+
const GET = async () => {
|
|
23
|
+
const boot = await getBootHealth();
|
|
24
|
+
const degraded = isDegraded(boot);
|
|
25
|
+
const body = {
|
|
26
|
+
status: degraded ? "degraded" : "ok",
|
|
27
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
28
|
+
commit: STARTUP_COMMIT,
|
|
29
|
+
boot
|
|
30
|
+
};
|
|
31
|
+
return json(body, { status: degraded ? 503 : 200 });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { GET };
|
|
35
|
+
//# sourceMappingURL=_server.ts-DxKERFAd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DxKERFAd.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { execSync } from \"child_process\";\nimport { g as getBootHealth, i as isDegraded } from \"../../../../chunks/bootHealth.server.js\";\nconst STARTUP_COMMIT = (() => {\n try {\n return execSync(\"git rev-parse HEAD\", { encoding: \"utf8\" }).trim();\n } catch {\n return null;\n }\n})();\nconst GET = async () => {\n const boot = await getBootHealth();\n const degraded = isDegraded(boot);\n const body = {\n status: degraded ? \"degraded\" : \"ok\",\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n commit: STARTUP_COMMIT,\n boot\n };\n return json(body, { status: degraded ? 503 : 200 });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,MAAM,cAAc,GAAG,CAAC,MAAM;AAC9B,EAAE,IAAI;AACN,IAAI,OAAO,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;AACtE,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI;AACf,EAAE;AACF,CAAC,GAAG;AACC,MAAC,GAAG,GAAG,YAAY;AACxB,EAAE,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;AACxC,IAAI,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACrD;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { error, json } from '@sveltejs/kit';
|
|
2
|
+
import { r as definitionService } from './providers.server-C32WKtDL.js';
|
|
3
|
+
import { g as requireEditableDefinition } from './access.server-GvriCjXN.js';
|
|
4
|
+
import { t as throwZodError, h as handleApiError } from './api-errors-Dk5z97zb.js';
|
|
5
|
+
import { G as GuidSchema, d as PublishVersionInputSchema } from './context-9tV9WxQ5.js';
|
|
6
|
+
import './shared-server-DaWdgxVh.js';
|
|
7
|
+
import 'node:url';
|
|
8
|
+
import 'node:path';
|
|
9
|
+
import 'node:fs';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'node:fs/promises';
|
|
12
|
+
import '@supabase/supabase-js';
|
|
13
|
+
import 'zod';
|
|
14
|
+
|
|
15
|
+
const POST = async ({ params, request, locals }) => {
|
|
16
|
+
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
17
|
+
if (!guidParsed.success) throw error(400, "Invalid or missing GUID");
|
|
18
|
+
const body = await request.json().catch(() => ({}));
|
|
19
|
+
const parsed = PublishVersionInputSchema.safeParse(body);
|
|
20
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
21
|
+
const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
|
|
22
|
+
try {
|
|
23
|
+
const version = await definitionService.publish(ctx, guidParsed.data, parsed.data.versionId);
|
|
24
|
+
return json({ success: true, version });
|
|
25
|
+
} catch (err) {
|
|
26
|
+
handleApiError(err, "Failed to publish version");
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { POST };
|
|
31
|
+
//# sourceMappingURL=_server.ts-MOiQ4br_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-MOiQ4br_.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js"],"sourcesContent":["import { error, json } from \"@sveltejs/kit\";\nimport { j as definitionService } from \"../../../../../../chunks/providers.server.js\";\nimport { g as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { t as throwZodError, h as handleApiError } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema, c as PublishVersionInputSchema } from \"../../../../../../chunks/context.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) throw error(400, \"Invalid or missing GUID\");\n const body = await request.json().catch(() => ({}));\n const parsed = PublishVersionInputSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n const version = await definitionService.publish(ctx, guidParsed.data, parsed.data.versionId);\n return json({ success: true, version });\n } catch (err) {\n handleApiError(err, \"Failed to publish version\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAKK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AACpD,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACtE,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1D,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAChG,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,2BAA2B,CAAC;AACpD,EAAE;AACF;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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, q as checkOwnerRemoval } 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 UpdateRoleSchema = z.object({ role: ProjectRoleSchema });
|
|
16
|
+
const PATCH = async ({ params, request, locals }) => {
|
|
17
|
+
const { id, userId } = params;
|
|
18
|
+
if (!id || !userId) throw error(400, "Missing project ID or user ID");
|
|
19
|
+
await requireCanManageMembers(locals, id);
|
|
20
|
+
const ctx = locals.ctx;
|
|
21
|
+
const body = await request.json().catch(() => null);
|
|
22
|
+
const parsed = UpdateRoleSchema.safeParse(body);
|
|
23
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
24
|
+
try {
|
|
25
|
+
await getProjectProvider().updateProjectMemberRole(ctx, id, userId, parsed.data.role);
|
|
26
|
+
return json({ success: true });
|
|
27
|
+
} catch (err) {
|
|
28
|
+
handleApiError(err, "Failed to update role");
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const DELETE = async ({ params, url, locals }) => {
|
|
32
|
+
const { id, userId } = params;
|
|
33
|
+
if (!id || !userId) throw error(400, "Missing project ID or user ID");
|
|
34
|
+
await requireCanManageMembers(locals, id);
|
|
35
|
+
const ctx = locals.ctx;
|
|
36
|
+
const confirmed = url.searchParams.get("confirm") === "true";
|
|
37
|
+
const projects = getProjectProvider();
|
|
38
|
+
const target = await projects.getProjectMember(ctx, id, userId);
|
|
39
|
+
if (!target) {
|
|
40
|
+
return json({ success: true });
|
|
41
|
+
}
|
|
42
|
+
if (target.role === "owner") {
|
|
43
|
+
const page = await projects.listProjectMembers(ctx, id, { limit: 200 });
|
|
44
|
+
const decision = checkOwnerRemoval({
|
|
45
|
+
target: { role: target.role },
|
|
46
|
+
allMembers: page.items.map((m) => ({ role: m.role })),
|
|
47
|
+
confirmed
|
|
48
|
+
});
|
|
49
|
+
if (decision === "sole_owner") {
|
|
50
|
+
throw error(
|
|
51
|
+
409,
|
|
52
|
+
"Cannot remove the sole owner of a project. Assign another owner first, or use reclaim to add a co-owner."
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
if (decision === "needs_confirm") {
|
|
56
|
+
throw error(
|
|
57
|
+
409,
|
|
58
|
+
"Removing another project owner requires explicit confirmation. Retry with ?confirm=true."
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
await projects.removeProjectMember(ctx, id, userId);
|
|
64
|
+
return json({ success: true });
|
|
65
|
+
} catch (err) {
|
|
66
|
+
handleApiError(err, "Failed to remove member");
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { DELETE, PATCH };
|
|
71
|
+
//# sourceMappingURL=_server.ts-Z87uowZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Z87uowZI.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_id_/members/_userId_/_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, q as checkOwnerRemoval } 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 UpdateRoleSchema = z.object({ role: ProjectRoleSchema });\nconst PATCH = async ({ params, request, locals }) => {\n const { id, userId } = params;\n if (!id || !userId) throw error(400, \"Missing project ID or user ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = UpdateRoleSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await getProjectProvider().updateProjectMemberRole(ctx, id, userId, parsed.data.role);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to update role\");\n }\n};\nconst DELETE = async ({ params, url, locals }) => {\n const { id, userId } = params;\n if (!id || !userId) throw error(400, \"Missing project ID or user ID\");\n await requireCanManageMembers(locals, id);\n const ctx = locals.ctx;\n const confirmed = url.searchParams.get(\"confirm\") === \"true\";\n const projects = getProjectProvider();\n const target = await projects.getProjectMember(ctx, id, userId);\n if (!target) {\n return json({ success: true });\n }\n if (target.role === \"owner\") {\n const page = await projects.listProjectMembers(ctx, id, { limit: 200 });\n const decision = checkOwnerRemoval({\n target: { role: target.role },\n allMembers: page.items.map((m) => ({ role: m.role })),\n confirmed\n });\n if (decision === \"sole_owner\") {\n throw error(\n 409,\n \"Cannot remove the sole owner of a project. Assign another owner first, or use reclaim to add a co-owner.\"\n );\n }\n if (decision === \"needs_confirm\") {\n throw error(\n 409,\n \"Removing another project owner requires explicit confirmation. Retry with ?confirm=true.\"\n );\n }\n }\n try {\n await projects.removeProjectMember(ctx, id, userId);\n return json({ success: true });\n } catch (err) {\n handleApiError(err, \"Failed to remove member\");\n }\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":"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"}
|