@selvajs/selva 4.4.0 → 4.5.1
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/build/client/_app/immutable/chunks/{D7wuDTx2.js → BYBRW46Q.js} +1 -1
- package/build/client/_app/immutable/chunks/BYBRW46Q.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYBRW46Q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B-fj8b7K.js → BfWZCn9D.js} +2 -2
- package/build/client/_app/immutable/chunks/BfWZCn9D.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfWZCn9D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D-jj-Uww.js → BoelBenK.js} +1 -1
- package/build/client/_app/immutable/chunks/BoelBenK.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoelBenK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{j-UbJSFZ.js → BuvUOrz-.js} +1 -1
- package/build/client/_app/immutable/chunks/BuvUOrz-.js.br +0 -0
- package/build/client/_app/immutable/chunks/BuvUOrz-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CdGNQgyw.js → CQjJB6sZ.js} +1 -1
- package/build/client/_app/immutable/chunks/CQjJB6sZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQjJB6sZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/jJihnyaB.js +3 -0
- package/build/client/_app/immutable/chunks/jJihnyaB.js.br +0 -0
- package/build/client/_app/immutable/chunks/jJihnyaB.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CsJrZk_i.js → app.CUlU8Xgx.js} +2 -2
- package/build/client/_app/immutable/entry/app.CUlU8Xgx.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CUlU8Xgx.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.yXH7NuOH.js +1 -0
- package/build/client/_app/immutable/entry/start.yXH7NuOH.js.br +2 -0
- package/build/client/_app/immutable/entry/start.yXH7NuOH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.wSjQD-9E.js → 1.ntriGXw3.js} +1 -1
- package/build/client/_app/immutable/nodes/1.ntriGXw3.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.ntriGXw3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.BBxGjNus.js +4 -0
- package/build/client/_app/immutable/nodes/11.BBxGjNus.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BBxGjNus.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{13.CZxapN5I.js → 13.BOOSKgNQ.js} +1 -1
- package/build/client/_app/immutable/nodes/13.BOOSKgNQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BOOSKgNQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{14.ChDvrNjp.js → 14.st6sThI5.js} +1 -1
- package/build/client/_app/immutable/nodes/14.st6sThI5.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.st6sThI5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{16.Cewxge5m.js → 16.fAXfHZXp.js} +1 -1
- package/build/client/_app/immutable/nodes/16.fAXfHZXp.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.fAXfHZXp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{17.NlvAvTSP.js → 17.BL_btSTd.js} +1 -1
- package/build/client/_app/immutable/nodes/17.BL_btSTd.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.BL_btSTd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{19.qNGlcD7l.js → 19.D4mkSjY9.js} +1 -1
- package/build/client/_app/immutable/nodes/19.D4mkSjY9.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.D4mkSjY9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CgydK0lI.js → 2.CNkzjKpD.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CNkzjKpD.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CNkzjKpD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.93bCfNGI.js +5021 -0
- package/build/client/_app/immutable/nodes/20.93bCfNGI.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.93bCfNGI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{21.CdZLvQ68.js → 21.ClzCdrlw.js} +1 -1
- package/build/client/_app/immutable/nodes/21.ClzCdrlw.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.ClzCdrlw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{23.CmSUvEas.js → 23.DJerRiZ2.js} +1 -1
- package/build/client/_app/immutable/nodes/23.DJerRiZ2.js.br +0 -0
- package/build/client/_app/immutable/nodes/{23.CmSUvEas.js.gz → 23.DJerRiZ2.js.gz} +0 -0
- package/build/client/_app/immutable/nodes/{24.BLrWFvpH.js → 24.DOHyLmBO.js} +1 -1
- package/build/client/_app/immutable/nodes/24.DOHyLmBO.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.DOHyLmBO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{27.DF8_FNgX.js → 27.CkzNBFns.js} +1 -1
- package/build/client/_app/immutable/nodes/27.CkzNBFns.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.CkzNBFns.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{28.u-nHYDMp.js → 28.BGNl-6WV.js} +1 -1
- package/build/client/_app/immutable/nodes/28.BGNl-6WV.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.BGNl-6WV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{29.zcWmCBtG.js → 29.BF0JasWQ.js} +1 -1
- package/build/client/_app/immutable/nodes/29.BF0JasWQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.BF0JasWQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.CGYG-fBC.js → 3.BLNJLcvR.js} +1 -1
- package/build/client/_app/immutable/nodes/3.BLNJLcvR.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BLNJLcvR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{30.CFRFw3XM.js → 30.C33KvKLy.js} +1 -1
- package/build/client/_app/immutable/nodes/30.C33KvKLy.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.C33KvKLy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.BIDVFrKz.js → 5.DcViAFBY.js} +1 -1
- package/build/client/_app/immutable/nodes/5.DcViAFBY.js.br +1 -0
- package/build/client/_app/immutable/nodes/5.DcViAFBY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.G8VTWVfQ.js → 6.Jpw_unqM.js} +1 -1
- package/build/client/_app/immutable/nodes/6.Jpw_unqM.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.Jpw_unqM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DaJ_YKCW.js → 7.DI4lv1qr.js} +1 -1
- package/build/client/_app/immutable/nodes/7.DI4lv1qr.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DI4lv1qr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.c3ONIRmr.js → 8.BJeZ3Zka.js} +1 -1
- package/build/client/_app/immutable/nodes/8.BJeZ3Zka.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BJeZ3Zka.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.BucDMSoZ.js → 9.BS42pKml.js} +1 -1
- package/build/client/_app/immutable/nodes/9.BS42pKml.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BS42pKml.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-DIp1vX-0.js → 0-DhT7yxre.js} +2 -2
- package/build/server/chunks/{0-DIp1vX-0.js.map → 0-DhT7yxre.js.map} +1 -1
- package/build/server/chunks/{1-2fHcSF9r.js → 1-CCtIB9oC.js} +2 -2
- package/build/server/chunks/{1-2fHcSF9r.js.map → 1-CCtIB9oC.js.map} +1 -1
- package/build/server/chunks/{10-D4slAhbl.js → 10-Cj20BodR.js} +5 -5
- package/build/server/chunks/{10-D4slAhbl.js.map → 10-Cj20BodR.js.map} +1 -1
- package/build/server/chunks/{11-BIn4AcHz.js → 11-C-goGrGx.js} +7 -7
- package/build/server/chunks/{11-BIn4AcHz.js.map → 11-C-goGrGx.js.map} +1 -1
- package/build/server/chunks/{12-BTFEd1df.js → 12-Bra8rAOu.js} +2 -2
- package/build/server/chunks/{12-BTFEd1df.js.map → 12-Bra8rAOu.js.map} +1 -1
- package/build/server/chunks/{13-DoxggNWI.js → 13-DN-4EHom.js} +3 -3
- package/build/server/chunks/{13-DoxggNWI.js.map → 13-DN-4EHom.js.map} +1 -1
- package/build/server/chunks/{14-dn1AxT2y.js → 14-j22gtg6q.js} +3 -3
- package/build/server/chunks/{14-dn1AxT2y.js.map → 14-j22gtg6q.js.map} +1 -1
- package/build/server/chunks/{15-CwlxfscS.js → 15-CJJTHKeq.js} +3 -3
- package/build/server/chunks/{15-CwlxfscS.js.map → 15-CJJTHKeq.js.map} +1 -1
- package/build/server/chunks/{16-CYmJwOTN.js → 16-CPVRxJfK.js} +6 -6
- package/build/server/chunks/{16-CYmJwOTN.js.map → 16-CPVRxJfK.js.map} +1 -1
- package/build/server/chunks/{17-2g3z6ge8.js → 17-CEs6NSIj.js} +2 -2
- package/build/server/chunks/{17-2g3z6ge8.js.map → 17-CEs6NSIj.js.map} +1 -1
- package/build/server/chunks/{18-DS1IDuFS.js → 18-Lwe4TEuf.js} +2 -2
- package/build/server/chunks/{18-DS1IDuFS.js.map → 18-Lwe4TEuf.js.map} +1 -1
- package/build/server/chunks/{19-D7P-oKm4.js → 19-BK_uDFHq.js} +4 -4
- package/build/server/chunks/{19-D7P-oKm4.js.map → 19-BK_uDFHq.js.map} +1 -1
- package/build/server/chunks/{2-x36H91MM.js → 2-BBFUEdIk.js} +7 -7
- package/build/server/chunks/{2-x36H91MM.js.map → 2-BBFUEdIk.js.map} +1 -1
- package/build/server/chunks/{20-Cb9g4A7Q.js → 20-TgvBHCqT.js} +10 -10
- package/build/server/chunks/{20-Cb9g4A7Q.js.map → 20-TgvBHCqT.js.map} +1 -1
- package/build/server/chunks/{21-CpI2moj3.js → 21-CpVgaOZP.js} +3 -3
- package/build/server/chunks/{21-CpI2moj3.js.map → 21-CpVgaOZP.js.map} +1 -1
- package/build/server/chunks/{23-cbMfA5sY.js → 23-DpZ-VAmj.js} +6 -6
- package/build/server/chunks/{23-cbMfA5sY.js.map → 23-DpZ-VAmj.js.map} +1 -1
- package/build/server/chunks/{24-CA3DPT0t.js → 24-IG8oF3LR.js} +4 -4
- package/build/server/chunks/{24-CA3DPT0t.js.map → 24-IG8oF3LR.js.map} +1 -1
- package/build/server/chunks/{25-DludrCpg.js → 25-DL8VLuLg.js} +2 -2
- package/build/server/chunks/{25-DludrCpg.js.map → 25-DL8VLuLg.js.map} +1 -1
- package/build/server/chunks/{27-BDtKZzPl.js → 27-BNuVmBlC.js} +4 -4
- package/build/server/chunks/{27-BDtKZzPl.js.map → 27-BNuVmBlC.js.map} +1 -1
- package/build/server/chunks/{28-Dvh0YyMK.js → 28-O2gMewvR.js} +3 -3
- package/build/server/chunks/{28-Dvh0YyMK.js.map → 28-O2gMewvR.js.map} +1 -1
- package/build/server/chunks/{29-OZbtFuyd.js → 29-DeHI_lg6.js} +3 -3
- package/build/server/chunks/{29-OZbtFuyd.js.map → 29-DeHI_lg6.js.map} +1 -1
- package/build/server/chunks/{3-BFx3bdEz.js → 3-_z4ofaYa.js} +2 -2
- package/build/server/chunks/{3-BFx3bdEz.js.map → 3-_z4ofaYa.js.map} +1 -1
- package/build/server/chunks/{30-BuoO_cIR.js → 30-B8zrsGBW.js} +3 -3
- package/build/server/chunks/{30-BuoO_cIR.js.map → 30-B8zrsGBW.js.map} +1 -1
- package/build/server/chunks/{31-Dzl1y1lc.js → 31-DJIq1bRM.js} +2 -2
- package/build/server/chunks/{31-Dzl1y1lc.js.map → 31-DJIq1bRM.js.map} +1 -1
- package/build/server/chunks/{32-DEYwWtss.js → 32-fvzIyQyk.js} +2 -2
- package/build/server/chunks/{32-DEYwWtss.js.map → 32-fvzIyQyk.js.map} +1 -1
- package/build/server/chunks/{5-BNfM-tOw.js → 5-jUoewty6.js} +3 -3
- package/build/server/chunks/{5-BNfM-tOw.js.map → 5-jUoewty6.js.map} +1 -1
- package/build/server/chunks/{6-CEx1JO4m.js → 6-Da49O-RB.js} +4 -4
- package/build/server/chunks/{6-CEx1JO4m.js.map → 6-Da49O-RB.js.map} +1 -1
- package/build/server/chunks/{7-Cz-fnTMA.js → 7-C4TEFQmD.js} +3 -3
- package/build/server/chunks/{7-Cz-fnTMA.js.map → 7-C4TEFQmD.js.map} +1 -1
- package/build/server/chunks/{8-CFNvkchb.js → 8-6Lblm8Bu.js} +3 -3
- package/build/server/chunks/{8-CFNvkchb.js.map → 8-6Lblm8Bu.js.map} +1 -1
- package/build/server/chunks/{9-DrF9Yg9r.js → 9-bV3k1piX.js} +4 -4
- package/build/server/chunks/{9-DrF9Yg9r.js.map → 9-bV3k1piX.js.map} +1 -1
- package/build/server/chunks/{AppHeader-vae2Doza.js → AppHeader-C76PLheq.js} +2 -2
- package/build/server/chunks/{AppHeader-vae2Doza.js.map → AppHeader-C76PLheq.js.map} +1 -1
- package/build/server/chunks/{UserChip-BPLEgzMp.js → UserChip-i0_3jHOb.js} +8 -3
- package/build/server/chunks/UserChip-i0_3jHOb.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-D5GiNGr6.js → _layout.svelte-B-tWsdy4.js} +3 -3
- package/build/server/chunks/{_layout.svelte-D5GiNGr6.js.map → _layout.svelte-B-tWsdy4.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-_enyp5QE.js → _layout.svelte-B2RbgABg.js} +3 -3
- package/build/server/chunks/{_layout.svelte-_enyp5QE.js.map → _layout.svelte-B2RbgABg.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-aflz8r6I.js → _layout.svelte-DUeER8oS.js} +3 -3
- package/build/server/chunks/{_layout.svelte-aflz8r6I.js.map → _layout.svelte-DUeER8oS.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-By_vYfbZ.js → _page.svelte-0KErHswo.js} +94 -4
- package/build/server/chunks/_page.svelte-0KErHswo.js.map +1 -0
- package/build/server/chunks/{_page.svelte-ZxjqrKH8.js → _page.svelte-BSHEM3UY.js} +3 -3
- package/build/server/chunks/{_page.svelte-ZxjqrKH8.js.map → _page.svelte-BSHEM3UY.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-FDFRMnmB.js → _page.svelte-CDEfhXLp.js} +3 -3
- package/build/server/chunks/{_page.svelte-FDFRMnmB.js.map → _page.svelte-CDEfhXLp.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-wUV5pt7K.js → _page.svelte-DDzV91b5.js} +305 -54
- package/build/server/chunks/_page.svelte-DDzV91b5.js.map +1 -0
- package/build/server/chunks/{_server.ts-CYnQlbaG.js → _server.ts-3LBSaM7L.js} +26 -14
- package/build/server/chunks/_server.ts-3LBSaM7L.js.map +1 -0
- package/build/server/chunks/{_server.ts-C4BxZ2rC.js → _server.ts-B-un1ZTf.js} +5 -5
- package/build/server/chunks/{_server.ts-C4BxZ2rC.js.map → _server.ts-B-un1ZTf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-aJ-1nqR3.js → _server.ts-B6gtWjZd.js} +9 -9
- package/build/server/chunks/_server.ts-B6gtWjZd.js.map +1 -0
- package/build/server/chunks/{_server.ts-A5TZCqa5.js → _server.ts-B9Fdut8P.js} +16 -12
- package/build/server/chunks/_server.ts-B9Fdut8P.js.map +1 -0
- package/build/server/chunks/{_server.ts-Ck8MaVCN.js → _server.ts-BJEEQ8tH.js} +17 -13
- package/build/server/chunks/_server.ts-BJEEQ8tH.js.map +1 -0
- package/build/server/chunks/{_server.ts-pUwXCS2e.js → _server.ts-BKPaoj3Y.js} +16 -11
- package/build/server/chunks/_server.ts-BKPaoj3Y.js.map +1 -0
- package/build/server/chunks/{_server.ts-CVgSO8yh.js → _server.ts-BVpHuRup.js} +10 -10
- package/build/server/chunks/_server.ts-BVpHuRup.js.map +1 -0
- package/build/server/chunks/{_server.ts-Ctmv-46q.js → _server.ts-BplW_hNF.js} +9 -9
- package/build/server/chunks/_server.ts-BplW_hNF.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dsn1xqkb.js → _server.ts-Bv-G75Ze.js} +9 -9
- package/build/server/chunks/_server.ts-Bv-G75Ze.js.map +1 -0
- package/build/server/chunks/{_server.ts-DzoHhw3c.js → _server.ts-C5fD6gFa.js} +12 -12
- package/build/server/chunks/_server.ts-C5fD6gFa.js.map +1 -0
- package/build/server/chunks/{_server.ts-jICcnrLz.js → _server.ts-C6rUlJpJ.js} +14 -7
- package/build/server/chunks/_server.ts-C6rUlJpJ.js.map +1 -0
- package/build/server/chunks/_server.ts-CLku3Kgz.js +66 -0
- package/build/server/chunks/_server.ts-CLku3Kgz.js.map +1 -0
- package/build/server/chunks/{_server.ts-CmB_7_VV.js → _server.ts-CNRwBoMm.js} +5 -5
- package/build/server/chunks/{_server.ts-CmB_7_VV.js.map → _server.ts-CNRwBoMm.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DOepVbAV.js → _server.ts-COuXITb8.js} +11 -11
- package/build/server/chunks/_server.ts-COuXITb8.js.map +1 -0
- package/build/server/chunks/{_server.ts-vGCP86Du.js → _server.ts-CT1KXbVK.js} +79 -26
- package/build/server/chunks/_server.ts-CT1KXbVK.js.map +1 -0
- package/build/server/chunks/{_server.ts-BBenjXRj.js → _server.ts-CTXCbdsb.js} +12 -11
- package/build/server/chunks/_server.ts-CTXCbdsb.js.map +1 -0
- package/build/server/chunks/{_server.ts-CvjBKoOG.js → _server.ts-CXEl8kvu.js} +15 -14
- package/build/server/chunks/_server.ts-CXEl8kvu.js.map +1 -0
- package/build/server/chunks/{_server.ts-DCmcZ1Gb.js → _server.ts-CZ9lwb1J.js} +7 -7
- package/build/server/chunks/_server.ts-CZ9lwb1J.js.map +1 -0
- package/build/server/chunks/{_server.ts-Drk8mhhT.js → _server.ts-CaytsdFp.js} +9 -9
- package/build/server/chunks/_server.ts-CaytsdFp.js.map +1 -0
- package/build/server/chunks/{_server.ts-C8hNi-NM.js → _server.ts-Cd6dVQ2J.js} +19 -11
- package/build/server/chunks/_server.ts-Cd6dVQ2J.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bel_bV82.js → _server.ts-CgRuMyJ9.js} +10 -10
- package/build/server/chunks/_server.ts-CgRuMyJ9.js.map +1 -0
- package/build/server/chunks/{_server.ts-TGu9dCIM.js → _server.ts-CmCeYB9h.js} +28 -18
- package/build/server/chunks/_server.ts-CmCeYB9h.js.map +1 -0
- package/build/server/chunks/{_server.ts-Mywogv28.js → _server.ts-Codg_zX0.js} +10 -9
- package/build/server/chunks/_server.ts-Codg_zX0.js.map +1 -0
- package/build/server/chunks/{_server.ts-Cu7fT_h2.js → _server.ts-D-WjMJlD.js} +12 -8
- package/build/server/chunks/_server.ts-D-WjMJlD.js.map +1 -0
- package/build/server/chunks/{_server.ts-BnV_32U5.js → _server.ts-D4z7bYT1.js} +25 -12
- package/build/server/chunks/_server.ts-D4z7bYT1.js.map +1 -0
- package/build/server/chunks/{_server.ts-BDVOe9oZ.js → _server.ts-D7URpGBv.js} +15 -11
- package/build/server/chunks/_server.ts-D7URpGBv.js.map +1 -0
- package/build/server/chunks/{_server.ts-CtwHDS7C.js → _server.ts-DMwrtYEK.js} +14 -14
- package/build/server/chunks/_server.ts-DMwrtYEK.js.map +1 -0
- package/build/server/chunks/{_server.ts-DgbeoluB.js → _server.ts-DSVtVVVK.js} +18 -12
- package/build/server/chunks/_server.ts-DSVtVVVK.js.map +1 -0
- package/build/server/chunks/{_server.ts-CXvixtRW.js → _server.ts-Df72lBuz.js} +25 -16
- package/build/server/chunks/_server.ts-Df72lBuz.js.map +1 -0
- package/build/server/chunks/{_server.ts-_nasPzxH.js → _server.ts-DlN3WSBT.js} +3 -3
- package/build/server/chunks/{_server.ts-_nasPzxH.js.map → _server.ts-DlN3WSBT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BNSHTRhw.js → _server.ts-DsXq-KLm.js} +27 -18
- package/build/server/chunks/_server.ts-DsXq-KLm.js.map +1 -0
- package/build/server/chunks/{_server.ts-eAeNUEse.js → _server.ts-OQ5_sYi3.js} +32 -19
- package/build/server/chunks/_server.ts-OQ5_sYi3.js.map +1 -0
- package/build/server/chunks/{_server.ts-CoZrqfhl.js → _server.ts-UYOqhuxS.js} +13 -9
- package/build/server/chunks/_server.ts-UYOqhuxS.js.map +1 -0
- package/build/server/chunks/{_server.ts-C4lve0n9.js → _server.ts-Xt4gRfAl.js} +18 -12
- package/build/server/chunks/_server.ts-Xt4gRfAl.js.map +1 -0
- package/build/server/chunks/{_server.ts-CFmfnLGv.js → _server.ts-ZtjukIa0.js} +17 -14
- package/build/server/chunks/_server.ts-ZtjukIa0.js.map +1 -0
- package/build/server/chunks/_server.ts-bR98vjY2.js +47 -0
- package/build/server/chunks/_server.ts-bR98vjY2.js.map +1 -0
- package/build/server/chunks/{_server.ts-DgjIv5VO.js → _server.ts-deI69oUs.js} +9 -9
- package/build/server/chunks/_server.ts-deI69oUs.js.map +1 -0
- package/build/server/chunks/{_server.ts-DaL0WEpS.js → _server.ts-fxzTH5KH.js} +8 -8
- package/build/server/chunks/_server.ts-fxzTH5KH.js.map +1 -0
- package/build/server/chunks/{_server.ts-DQdxI18h.js → _server.ts-mFb6RwID.js} +8 -8
- package/build/server/chunks/_server.ts-mFb6RwID.js.map +1 -0
- package/build/server/chunks/{_server.ts-y7PjdP_H.js → _server.ts-sdl64bpd.js} +12 -9
- package/build/server/chunks/_server.ts-sdl64bpd.js.map +1 -0
- package/build/server/chunks/{access.server-BueyYEoY.js → access.server-Rd56k7vs.js} +4 -4
- package/build/server/chunks/{access.server-BueyYEoY.js.map → access.server-Rd56k7vs.js.map} +1 -1
- package/build/server/chunks/{api-errors-BckwXK7Q.js → api-errors-BrqxD-El.js} +54 -15
- package/build/server/chunks/api-errors-BrqxD-El.js.map +1 -0
- package/build/server/chunks/{auth-bootstrap.server-BOTw9HkY.js → auth-bootstrap.server-DKc9-3PR.js} +2 -2
- package/build/server/chunks/{auth-bootstrap.server-BOTw9HkY.js.map → auth-bootstrap.server-DKc9-3PR.js.map} +1 -1
- package/build/server/chunks/{bootHealth.server-BwEi-Qp8.js → bootHealth.server-IPXOSqqQ.js} +2 -2
- package/build/server/chunks/{bootHealth.server-BwEi-Qp8.js.map → bootHealth.server-IPXOSqqQ.js.map} +1 -1
- package/build/server/chunks/{computeLimits-DPO6NbLd.js → computeLimits-DnJ77wR9.js} +3 -3
- package/build/server/chunks/computeLimits-DnJ77wR9.js.map +1 -0
- package/build/server/chunks/{hooks.server-BHmZpgdz.js → hooks.server-BZKLAgww.js} +10 -9
- package/build/server/chunks/hooks.server-BZKLAgww.js.map +1 -0
- package/build/server/chunks/{package-CGdqH7nx.js → package-K5EkWw87.js} +2 -2
- package/build/server/chunks/{package-CGdqH7nx.js.map → package-K5EkWw87.js.map} +1 -1
- package/build/server/chunks/{permissions.server-D1KUdeD1.js → permissions.server-zs4XAJCp.js} +2 -2
- package/build/server/chunks/{permissions.server-D1KUdeD1.js.map → permissions.server-zs4XAJCp.js.map} +1 -1
- package/build/server/chunks/{providers.server-BYk2ehLM.js → providers.server-C3fQ7ZdV.js} +78 -21
- package/build/server/chunks/providers.server-C3fQ7ZdV.js.map +1 -0
- package/build/server/chunks/{resolve.server-D79ZavTd.js → resolve.server-t1UmqtsG.js} +2 -2
- package/build/server/chunks/{resolve.server-D79ZavTd.js.map → resolve.server-t1UmqtsG.js.map} +1 -1
- package/build/server/chunks/{utils2-UQQTHTw-.js → utils2-BqfluBM6.js} +2 -2
- package/build/server/chunks/{utils2-UQQTHTw-.js.map → utils2-BqfluBM6.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +77 -70
- package/build/server/manifest.js.map +1 -1
- package/package.json +7 -7
- package/templates/.env.example +14 -5
- package/build/client/_app/immutable/chunks/B-fj8b7K.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-fj8b7K.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BU70HLVx.js +0 -3
- package/build/client/_app/immutable/chunks/BU70HLVx.js.br +0 -0
- package/build/client/_app/immutable/chunks/BU70HLVx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CdGNQgyw.js.br +0 -0
- package/build/client/_app/immutable/chunks/CdGNQgyw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-jj-Uww.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-jj-Uww.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D7wuDTx2.js.br +0 -0
- package/build/client/_app/immutable/chunks/D7wuDTx2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/j-UbJSFZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/j-UbJSFZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CsJrZk_i.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CsJrZk_i.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.vCkjGHiU.js +0 -1
- package/build/client/_app/immutable/entry/start.vCkjGHiU.js.br +0 -2
- package/build/client/_app/immutable/entry/start.vCkjGHiU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.wSjQD-9E.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.wSjQD-9E.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.cZPocN3B.js +0 -2
- package/build/client/_app/immutable/nodes/11.cZPocN3B.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.cZPocN3B.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.CZxapN5I.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.CZxapN5I.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.ChDvrNjp.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.ChDvrNjp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.Cewxge5m.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.Cewxge5m.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.NlvAvTSP.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.NlvAvTSP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.qNGlcD7l.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.qNGlcD7l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CgydK0lI.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CgydK0lI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.CoGCSB-X.js +0 -5021
- package/build/client/_app/immutable/nodes/20.CoGCSB-X.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.CoGCSB-X.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.CdZLvQ68.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.CdZLvQ68.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.CmSUvEas.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.BLrWFvpH.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.BLrWFvpH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.DF8_FNgX.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.DF8_FNgX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.u-nHYDMp.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.u-nHYDMp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.zcWmCBtG.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.zcWmCBtG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CGYG-fBC.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CGYG-fBC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.CFRFw3XM.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.CFRFw3XM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BIDVFrKz.js.br +0 -2
- package/build/client/_app/immutable/nodes/5.BIDVFrKz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.G8VTWVfQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.G8VTWVfQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DaJ_YKCW.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DaJ_YKCW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.c3ONIRmr.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.c3ONIRmr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BucDMSoZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BucDMSoZ.js.gz +0 -0
- package/build/server/chunks/UserChip-BPLEgzMp.js.map +0 -1
- package/build/server/chunks/_page.svelte-By_vYfbZ.js.map +0 -1
- package/build/server/chunks/_page.svelte-wUV5pt7K.js.map +0 -1
- package/build/server/chunks/_server.ts-A5TZCqa5.js.map +0 -1
- package/build/server/chunks/_server.ts-BBenjXRj.js.map +0 -1
- package/build/server/chunks/_server.ts-BDVOe9oZ.js.map +0 -1
- package/build/server/chunks/_server.ts-BNSHTRhw.js.map +0 -1
- package/build/server/chunks/_server.ts-Bel_bV82.js.map +0 -1
- package/build/server/chunks/_server.ts-BnV_32U5.js.map +0 -1
- package/build/server/chunks/_server.ts-C4lve0n9.js.map +0 -1
- package/build/server/chunks/_server.ts-C8hNi-NM.js.map +0 -1
- package/build/server/chunks/_server.ts-CFmfnLGv.js.map +0 -1
- package/build/server/chunks/_server.ts-CVgSO8yh.js.map +0 -1
- package/build/server/chunks/_server.ts-CXvixtRW.js.map +0 -1
- package/build/server/chunks/_server.ts-CYnQlbaG.js.map +0 -1
- package/build/server/chunks/_server.ts-Ck8MaVCN.js.map +0 -1
- package/build/server/chunks/_server.ts-CoZrqfhl.js.map +0 -1
- package/build/server/chunks/_server.ts-Ctmv-46q.js.map +0 -1
- package/build/server/chunks/_server.ts-CtwHDS7C.js.map +0 -1
- package/build/server/chunks/_server.ts-Cu7fT_h2.js.map +0 -1
- package/build/server/chunks/_server.ts-CvjBKoOG.js.map +0 -1
- package/build/server/chunks/_server.ts-DCmcZ1Gb.js.map +0 -1
- package/build/server/chunks/_server.ts-DOepVbAV.js.map +0 -1
- package/build/server/chunks/_server.ts-DQdxI18h.js.map +0 -1
- package/build/server/chunks/_server.ts-DaL0WEpS.js.map +0 -1
- package/build/server/chunks/_server.ts-DbcwlSqy.js +0 -65
- package/build/server/chunks/_server.ts-DbcwlSqy.js.map +0 -1
- package/build/server/chunks/_server.ts-DgbeoluB.js.map +0 -1
- package/build/server/chunks/_server.ts-DgjIv5VO.js.map +0 -1
- package/build/server/chunks/_server.ts-Drk8mhhT.js.map +0 -1
- package/build/server/chunks/_server.ts-Dsn1xqkb.js.map +0 -1
- package/build/server/chunks/_server.ts-DzoHhw3c.js.map +0 -1
- package/build/server/chunks/_server.ts-Mywogv28.js.map +0 -1
- package/build/server/chunks/_server.ts-TGu9dCIM.js.map +0 -1
- package/build/server/chunks/_server.ts-aJ-1nqR3.js.map +0 -1
- package/build/server/chunks/_server.ts-eAeNUEse.js.map +0 -1
- package/build/server/chunks/_server.ts-jICcnrLz.js.map +0 -1
- package/build/server/chunks/_server.ts-pUwXCS2e.js.map +0 -1
- package/build/server/chunks/_server.ts-vGCP86Du.js.map +0 -1
- package/build/server/chunks/_server.ts-y7PjdP_H.js.map +0 -1
- package/build/server/chunks/api-errors-BckwXK7Q.js.map +0 -1
- package/build/server/chunks/computeLimits-DPO6NbLd.js.map +0 -1
- package/build/server/chunks/hooks.server-BHmZpgdz.js.map +0 -1
- package/build/server/chunks/providers.server-BYk2ehLM.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Cd6dVQ2J.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/projects/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { n as getProjectProvider, P as ProviderError } from \"../../../../chunks/providers.server.js\";\nimport { j as requireCanCreateProject } from \"../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } 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) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"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) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"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 apiError(400, ApiErrorCode.VALIDATION_FAILED, \"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 apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"A project with that name already exists in this organization.\"\n );\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create project\");\n }\n }\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Could not pick a unique project slug after several attempts.\"\n );\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { k as getOrganizationProvider, P as ProviderError } from './providers.server-
|
|
3
|
-
import { u as requireInstanceAdmin } from './access.server-
|
|
4
|
-
import { h as handleApiError, t as throwZodError } from './api-errors-
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
|
+
import { k as getOrganizationProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.js';
|
|
3
|
+
import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
|
|
4
|
+
import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
5
5
|
import { i as UpdateOrgSchema } from './context-BJnJL8ES.js';
|
|
6
6
|
import './shared-server-C3WdcJCQ.js';
|
|
7
7
|
import 'node:url';
|
|
@@ -12,12 +12,12 @@ import 'node:fs/promises';
|
|
|
12
12
|
import '@supabase/supabase-js';
|
|
13
13
|
import 'zod';
|
|
14
14
|
import '@selvajs/compute/core';
|
|
15
|
-
import './utils2-
|
|
15
|
+
import './utils2-BqfluBM6.js';
|
|
16
16
|
|
|
17
17
|
const PATCH = async ({ params, request, locals }) => {
|
|
18
18
|
requireInstanceAdmin(locals);
|
|
19
19
|
const { id } = params;
|
|
20
|
-
if (!id)
|
|
20
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing org ID");
|
|
21
21
|
const ctx = locals.ctx;
|
|
22
22
|
const body = await request.json().catch(() => null);
|
|
23
23
|
const parsed = UpdateOrgSchema.safeParse(body);
|
|
@@ -28,7 +28,7 @@ const PATCH = async ({ params, request, locals }) => {
|
|
|
28
28
|
return json(updated);
|
|
29
29
|
} catch (err) {
|
|
30
30
|
if (err instanceof ProviderError && err.statusCode === 409) {
|
|
31
|
-
|
|
31
|
+
apiError(409, ApiErrorCode.CONFLICT, err.message);
|
|
32
32
|
}
|
|
33
33
|
handleApiError(err, "Failed to update org");
|
|
34
34
|
}
|
|
@@ -36,15 +36,15 @@ const PATCH = async ({ params, request, locals }) => {
|
|
|
36
36
|
const DELETE = async ({ params, locals }) => {
|
|
37
37
|
requireInstanceAdmin(locals);
|
|
38
38
|
const { id } = params;
|
|
39
|
-
if (!id)
|
|
39
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing org ID");
|
|
40
40
|
const ctx = locals.ctx;
|
|
41
41
|
try {
|
|
42
42
|
await getOrganizationProvider().deleteOrg(ctx, id);
|
|
43
|
-
return
|
|
43
|
+
return new Response(null, { status: 204 });
|
|
44
44
|
} catch (err) {
|
|
45
45
|
handleApiError(err, "Failed to delete org");
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
export { DELETE, PATCH };
|
|
50
|
-
//# sourceMappingURL=_server.ts-
|
|
50
|
+
//# sourceMappingURL=_server.ts-CgRuMyJ9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CgRuMyJ9.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/orgs/_id_/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { k as getOrganizationProvider, P as ProviderError } from \"../../../../../../chunks/providers.server.js\";\nimport { u as requireInstanceAdmin } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { i as UpdateOrgSchema } from \"../../../../../../chunks/context.js\";\nconst PATCH = async ({ params, request, locals }) => {\n requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing org ID\");\n const ctx = locals.ctx;\n const body = await request.json().catch(() => null);\n const parsed = UpdateOrgSchema.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n try {\n await getOrganizationProvider().updateOrg(ctx, id, parsed.data);\n const updated = await getOrganizationProvider().getOrg(ctx, id);\n return json(updated);\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 409) {\n apiError(409, ApiErrorCode.CONFLICT, err.message);\n }\n handleApiError(err, \"Failed to update org\");\n }\n};\nconst DELETE = async ({ params, locals }) => {\n requireInstanceAdmin(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing org ID\");\n const ctx = locals.ctx;\n try {\n await getOrganizationProvider().deleteOrg(ctx, id);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to delete org\");\n }\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKK,MAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AACrD,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,EAAE,IAAI;AACN,IAAI,MAAM,uBAAuB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACnE,IAAI,MAAM,OAAO,GAAG,MAAM,uBAAuB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AAChE,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AACvD,IAAI;AACJ,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAC/C,EAAE;AACF;AACK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AACvB,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AACxB,EAAE,IAAI;AACN,IAAI,MAAM,uBAAuB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC;AACtD,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,CAAC;AAC/C,EAAE;AACF;;;;"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { error, json } from '@sveltejs/kit';
|
|
2
1
|
import { z } from 'zod';
|
|
3
|
-
import { l as getPermissionStore, a as getAuthProvider, e as getDataProvider, k as getOrganizationProvider } from './providers.server-
|
|
4
|
-
import { w as requireManageInstanceUsers } from './access.server-
|
|
5
|
-
import { t as throwZodError } from './api-errors-
|
|
2
|
+
import { l as getPermissionStore, a as getAuthProvider, e as getDataProvider, k as getOrganizationProvider } from './providers.server-C3fQ7ZdV.js';
|
|
3
|
+
import { w as requireManageInstanceUsers } from './access.server-Rd56k7vs.js';
|
|
4
|
+
import { a as apiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
6
5
|
import { S as SYSTEM_CONTEXT, j as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS, P as PlatformPermissionSchema, d as OrgPermissionSchema } from './context-BJnJL8ES.js';
|
|
7
6
|
import { s as splitFlatPermissions } from './permissions-compat.server-G174xsh6.js';
|
|
8
|
-
import { s as setUserPlatformPermissions } from './permissions.server-
|
|
7
|
+
import { s as setUserPlatformPermissions } from './permissions.server-zs4XAJCp.js';
|
|
9
8
|
import './shared-server-C3WdcJCQ.js';
|
|
10
9
|
import 'node:url';
|
|
11
10
|
import 'node:path';
|
|
@@ -13,8 +12,9 @@ import 'node:fs';
|
|
|
13
12
|
import 'node:crypto';
|
|
14
13
|
import 'node:fs/promises';
|
|
15
14
|
import '@supabase/supabase-js';
|
|
15
|
+
import '@sveltejs/kit';
|
|
16
16
|
import '@selvajs/compute/core';
|
|
17
|
-
import './utils2-
|
|
17
|
+
import './utils2-BqfluBM6.js';
|
|
18
18
|
|
|
19
19
|
const FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);
|
|
20
20
|
const UpdatePermissionsBody = z.object({
|
|
@@ -23,7 +23,7 @@ const UpdatePermissionsBody = z.object({
|
|
|
23
23
|
const PATCH = async ({ params, request, locals }) => {
|
|
24
24
|
requireManageInstanceUsers(locals);
|
|
25
25
|
const { id } = params;
|
|
26
|
-
if (!id)
|
|
26
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing user ID");
|
|
27
27
|
const body = await request.json().catch(() => null);
|
|
28
28
|
const parsed = UpdatePermissionsBody.safeParse(body);
|
|
29
29
|
if (!parsed.success) throwZodError(parsed.error);
|
|
@@ -31,15 +31,24 @@ const PATCH = async ({ params, request, locals }) => {
|
|
|
31
31
|
const existingPlatform = await getPermissionStore().getFor(locals.ctx, id);
|
|
32
32
|
const platformChanged = platform.length !== existingPlatform.length || platform.some((p) => !existingPlatform.includes(p)) || existingPlatform.some((p) => !platform.includes(p));
|
|
33
33
|
if (platformChanged && !hasPermission(locals.ctx, "instance_admin")) {
|
|
34
|
-
|
|
34
|
+
apiError(
|
|
35
|
+
403,
|
|
36
|
+
ApiErrorCode.FORBIDDEN,
|
|
37
|
+
"Only a platform admin can change platform-scope permissions"
|
|
38
|
+
);
|
|
35
39
|
}
|
|
36
40
|
const platformResult = await setUserPlatformPermissions(locals.ctx, id, platform);
|
|
37
|
-
if (platformResult === "not_found")
|
|
41
|
+
if (platformResult === "not_found") apiError(404, ApiErrorCode.NOT_FOUND, "User not found");
|
|
38
42
|
if (platformResult === "not_supported")
|
|
39
|
-
|
|
43
|
+
apiError(
|
|
44
|
+
501,
|
|
45
|
+
ApiErrorCode.INTERNAL,
|
|
46
|
+
"Platform permission updates not supported by this auth provider"
|
|
47
|
+
);
|
|
40
48
|
if (platformResult === "last_admin")
|
|
41
|
-
|
|
49
|
+
apiError(
|
|
42
50
|
409,
|
|
51
|
+
ApiErrorCode.CONFLICT,
|
|
43
52
|
"Cannot remove the last instance admin. Promote another user to instance admin first."
|
|
44
53
|
);
|
|
45
54
|
const orgId = locals.ctx?.actingOrgId;
|
|
@@ -68,29 +77,30 @@ const PATCH = async ({ params, request, locals }) => {
|
|
|
68
77
|
});
|
|
69
78
|
}
|
|
70
79
|
}
|
|
71
|
-
return
|
|
80
|
+
return new Response(null, { status: 204 });
|
|
72
81
|
};
|
|
73
82
|
const DELETE = async ({ params, locals }) => {
|
|
74
83
|
requireManageInstanceUsers(locals);
|
|
75
84
|
const { id } = params;
|
|
76
|
-
if (!id)
|
|
85
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing user ID");
|
|
77
86
|
const targetPerms = await getPermissionStore().getFor(locals.ctx, id);
|
|
78
87
|
if (targetPerms.includes("instance_admin")) {
|
|
79
88
|
const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);
|
|
80
89
|
if (others === 0) {
|
|
81
|
-
|
|
90
|
+
apiError(
|
|
82
91
|
409,
|
|
92
|
+
ApiErrorCode.CONFLICT,
|
|
83
93
|
"Cannot delete the last instance admin. Promote another user to instance admin first."
|
|
84
94
|
);
|
|
85
95
|
}
|
|
86
96
|
}
|
|
87
97
|
const result = await getAuthProvider().deleteUser(id);
|
|
88
|
-
if (result === "not_found")
|
|
98
|
+
if (result === "not_found") apiError(404, ApiErrorCode.NOT_FOUND, "User not found");
|
|
89
99
|
if (result === "not_supported")
|
|
90
|
-
|
|
100
|
+
apiError(501, ApiErrorCode.INTERNAL, "User deletion not supported by this auth provider");
|
|
91
101
|
await getDataProvider().onUserDeleted(SYSTEM_CONTEXT, id);
|
|
92
|
-
return
|
|
102
|
+
return new Response(null, { status: 204 });
|
|
93
103
|
};
|
|
94
104
|
|
|
95
105
|
export { DELETE, PATCH };
|
|
96
|
-
//# sourceMappingURL=_server.ts-
|
|
106
|
+
//# sourceMappingURL=_server.ts-CmCeYB9h.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CmCeYB9h.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/users/_id_/_server.ts.js"],"sourcesContent":["import { z } from \"zod\";\nimport { l as getPermissionStore, a as getAuthProvider, e as getDataProvider, k as getOrganizationProvider } from \"../../../../../../chunks/providers.server.js\";\nimport { w as requireManageInstanceUsers } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, t as throwZodError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { P as PlatformPermissionSchema, d as OrgPermissionSchema, S as SYSTEM_CONTEXT, j as hasPermission, D as DEFAULT_ORG_PERMISSIONS, M as MEMBER_ASSIGNABLE_PERMISSIONS } from \"../../../../../../chunks/context.js\";\nimport { s as splitFlatPermissions } from \"../../../../../../chunks/permissions-compat.server.js\";\nimport { s as setUserPlatformPermissions } from \"../../../../../../chunks/permissions.server.js\";\nconst FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);\nconst UpdatePermissionsBody = z.object({\n permissions: z.array(FlatPermissionSchema)\n});\nconst PATCH = async ({ params, request, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const body = await request.json().catch(() => null);\n const parsed = UpdatePermissionsBody.safeParse(body);\n if (!parsed.success) throwZodError(parsed.error);\n const { platform, org } = splitFlatPermissions(parsed.data.permissions);\n const existingPlatform = await getPermissionStore().getFor(locals.ctx, id);\n const platformChanged = platform.length !== existingPlatform.length || platform.some((p) => !existingPlatform.includes(p)) || existingPlatform.some((p) => !platform.includes(p));\n if (platformChanged && !hasPermission(locals.ctx, \"instance_admin\")) {\n apiError(\n 403,\n ApiErrorCode.FORBIDDEN,\n \"Only a platform admin can change platform-scope permissions\"\n );\n }\n const platformResult = await setUserPlatformPermissions(locals.ctx, id, platform);\n if (platformResult === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (platformResult === \"not_supported\")\n apiError(\n 501,\n ApiErrorCode.INTERNAL,\n \"Platform permission updates not supported by this auth provider\"\n );\n if (platformResult === \"last_admin\")\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot remove the last instance admin. Promote another user to instance admin first.\"\n );\n const orgId = locals.ctx?.actingOrgId;\n if (orgId) {\n const orgs = getOrganizationProvider();\n const existing = await orgs.getOrgMember(SYSTEM_CONTEXT, orgId, id);\n const resolvedPermissions = (role) => role === \"member\" ? org.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)) : [...DEFAULT_ORG_PERMISSIONS[role]];\n if (existing) {\n await orgs.updateOrgMemberPermissions(\n SYSTEM_CONTEXT,\n orgId,\n id,\n resolvedPermissions(existing.role)\n );\n } else {\n const joinedAt = (/* @__PURE__ */ new Date()).toISOString();\n await orgs.addOrgMember(SYSTEM_CONTEXT, {\n orgId,\n userId: id,\n role: \"member\",\n permissions: resolvedPermissions(\"member\"),\n joinedAt,\n updatedAt: joinedAt,\n updatedBy: locals.user?.id ?? id,\n deletedAt: null\n });\n }\n }\n return new Response(null, { status: 204 });\n};\nconst DELETE = async ({ params, locals }) => {\n requireManageInstanceUsers(locals);\n const { id } = params;\n if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing user ID\");\n const targetPerms = await getPermissionStore().getFor(locals.ctx, id);\n if (targetPerms.includes(\"instance_admin\")) {\n const others = await getPermissionStore().countInstanceAdminsExcluding(locals.ctx, id);\n if (others === 0) {\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Cannot delete the last instance admin. Promote another user to instance admin first.\"\n );\n }\n }\n const result = await getAuthProvider().deleteUser(id);\n if (result === \"not_found\") apiError(404, ApiErrorCode.NOT_FOUND, \"User not found\");\n if (result === \"not_supported\")\n apiError(501, ApiErrorCode.INTERNAL, \"User deletion not supported by this auth provider\");\n await getDataProvider().onUserDeleted(SYSTEM_CONTEXT, id);\n return new Response(null, { status: 204 });\n};\nexport {\n DELETE,\n PATCH\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { h as handleApiError } from './api-errors-BckwXK7Q.js';
|
|
1
|
+
import { i as getDefinitionService } from './providers.server-C3fQ7ZdV.js';
|
|
2
|
+
import { t as requireEditableDefinition } from './access.server-Rd56k7vs.js';
|
|
3
|
+
import { a as apiError, h as handleApiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
5
4
|
import { G as GuidSchema } from './context-BJnJL8ES.js';
|
|
6
5
|
import './shared-server-C3WdcJCQ.js';
|
|
7
6
|
import 'node:url';
|
|
@@ -10,23 +9,25 @@ import 'node:fs';
|
|
|
10
9
|
import 'node:crypto';
|
|
11
10
|
import 'node:fs/promises';
|
|
12
11
|
import '@supabase/supabase-js';
|
|
12
|
+
import '@sveltejs/kit';
|
|
13
13
|
import 'zod';
|
|
14
14
|
import '@selvajs/compute/core';
|
|
15
|
-
import './utils2-
|
|
15
|
+
import './utils2-BqfluBM6.js';
|
|
16
16
|
|
|
17
17
|
const DELETE = async ({ params, locals }) => {
|
|
18
18
|
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
19
|
-
if (!guidParsed.success)
|
|
19
|
+
if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing GUID");
|
|
20
20
|
const versionParsed = GuidSchema.safeParse(params.versionId);
|
|
21
|
-
if (!versionParsed.success)
|
|
21
|
+
if (!versionParsed.success)
|
|
22
|
+
apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid or missing version ID");
|
|
22
23
|
const { ctx } = await requireEditableDefinition(locals, guidParsed.data);
|
|
23
24
|
try {
|
|
24
25
|
await getDefinitionService().deleteVersion(ctx, guidParsed.data, versionParsed.data);
|
|
25
|
-
return
|
|
26
|
+
return new Response(null, { status: 204 });
|
|
26
27
|
} catch (err) {
|
|
27
28
|
handleApiError(err, "Failed to delete version");
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
export { DELETE };
|
|
32
|
-
//# sourceMappingURL=_server.ts-
|
|
33
|
+
//# sourceMappingURL=_server.ts-Codg_zX0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Codg_zX0.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js"],"sourcesContent":["import { i as getDefinitionService } from \"../../../../../../../chunks/providers.server.js\";\nimport { t as requireEditableDefinition } from \"../../../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, A as ApiErrorCode } from \"../../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema } from \"../../../../../../../chunks/context.js\";\nconst DELETE = async ({ params, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing GUID\");\n const versionParsed = GuidSchema.safeParse(params.versionId);\n if (!versionParsed.success)\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid or missing version ID\");\n const { ctx } = await requireEditableDefinition(locals, guidParsed.data);\n try {\n await getDefinitionService().deleteVersion(ctx, guidParsed.data, versionParsed.data);\n return new Response(null, { status: 204 });\n } catch (err) {\n handleApiError(err, \"Failed to delete version\");\n }\n};\nexport {\n DELETE\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIK,MAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAC7C,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;AACnG,EAAE,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9D,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;AAC5B,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;AAClF,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;AAC1E,EAAE,IAAI;AACN,IAAI,MAAM,oBAAoB,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;AACxF,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,0BAA0B,CAAC;AACnD,EAAE;AACF;;;;"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as
|
|
3
|
-
import {
|
|
1
|
+
import { redirect } from '@sveltejs/kit';
|
|
2
|
+
import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
3
|
+
import { a as getAuthProvider } from './providers.server-C3fQ7ZdV.js';
|
|
4
|
+
import { b as bootstrapUserSession } from './auth-bootstrap.server-DKc9-3PR.js';
|
|
4
5
|
import { h as setSessionCookie, f as setRefreshCookie, s as safeRedirectTarget } from './admin-auth.server-45kKyH82.js';
|
|
6
|
+
import './context-BJnJL8ES.js';
|
|
7
|
+
import 'zod';
|
|
8
|
+
import '@selvajs/compute/core';
|
|
9
|
+
import './utils2-BqfluBM6.js';
|
|
5
10
|
import './shared-server-C3WdcJCQ.js';
|
|
6
11
|
import 'node:url';
|
|
7
12
|
import 'node:path';
|
|
8
13
|
import 'node:fs';
|
|
9
|
-
import './context-BJnJL8ES.js';
|
|
10
|
-
import 'zod';
|
|
11
14
|
import 'node:crypto';
|
|
12
15
|
import 'node:fs/promises';
|
|
13
16
|
import '@supabase/supabase-js';
|
|
@@ -16,10 +19,11 @@ import './slug-BGuFQjqe.js';
|
|
|
16
19
|
const GET = async ({ url, cookies }) => {
|
|
17
20
|
const emailLink = getAuthProvider().emailLink;
|
|
18
21
|
if (!emailLink) {
|
|
19
|
-
|
|
22
|
+
apiError(501, ApiErrorCode.INTERNAL, "Email sign-in is not supported by this provider.");
|
|
20
23
|
}
|
|
21
24
|
const result = await emailLink.verifyMagicLink(url.toString());
|
|
22
|
-
if (!result)
|
|
25
|
+
if (!result)
|
|
26
|
+
apiError(401, ApiErrorCode.UNAUTHORIZED, "This sign-in link is invalid or has expired.");
|
|
23
27
|
await bootstrapUserSession(result.user);
|
|
24
28
|
setSessionCookie(cookies, result.sessionToken);
|
|
25
29
|
if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);
|
|
@@ -28,4 +32,4 @@ const GET = async ({ url, cookies }) => {
|
|
|
28
32
|
};
|
|
29
33
|
|
|
30
34
|
export { GET };
|
|
31
|
-
//# sourceMappingURL=_server.ts-
|
|
35
|
+
//# sourceMappingURL=_server.ts-D-WjMJlD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-D-WjMJlD.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/auth/email/callback/_server.ts.js"],"sourcesContent":["import { redirect } from \"@sveltejs/kit\";\nimport { a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { a as getAuthProvider } from \"../../../../../chunks/providers.server.js\";\nimport { b as bootstrapUserSession } from \"../../../../../chunks/auth-bootstrap.server.js\";\nimport { h as setSessionCookie, f as setRefreshCookie, s as safeRedirectTarget } from \"../../../../../chunks/admin-auth.server.js\";\nconst GET = async ({ url, cookies }) => {\n const emailLink = getAuthProvider().emailLink;\n if (!emailLink) {\n apiError(501, ApiErrorCode.INTERNAL, \"Email sign-in is not supported by this provider.\");\n }\n const result = await emailLink.verifyMagicLink(url.toString());\n if (!result)\n apiError(401, ApiErrorCode.UNAUTHORIZED, \"This sign-in link is invalid or has expired.\");\n await bootstrapUserSession(result.user);\n setSessionCookie(cookies, result.sessionToken);\n if (result.refreshToken) setRefreshCookie(cookies, result.refreshToken);\n const dest = safeRedirectTarget(url.searchParams.get(\"redirectTo\"), \"/library\");\n redirect(303, dest);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKK,MAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AACxC,EAAE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,SAAS;AAC/C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,kDAAkD,CAAC;AAC5F,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChE,EAAE,IAAI,CAAC,MAAM;AACb,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,8CAA8C,CAAC;AAC5F,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AAChD,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;AACjF,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { f as flag, k as getOrganizationProvider, n as getProjectProvider, P as ProviderError } from './providers.server-
|
|
5
|
-
import { u as requireInstanceAdmin } from './access.server-
|
|
6
|
-
import { h as handleApiError, t as throwZodError } from './api-errors-
|
|
4
|
+
import { f as flag, k as getOrganizationProvider, n as getProjectProvider, P as ProviderError } from './providers.server-C3fQ7ZdV.js';
|
|
5
|
+
import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
|
|
6
|
+
import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
7
7
|
import { s as slugify } from './slug-BGuFQjqe.js';
|
|
8
8
|
import { S as SYSTEM_CONTEXT } from './context-BJnJL8ES.js';
|
|
9
9
|
import './shared-server-C3WdcJCQ.js';
|
|
@@ -13,7 +13,7 @@ import 'node:fs';
|
|
|
13
13
|
import 'node:fs/promises';
|
|
14
14
|
import '@supabase/supabase-js';
|
|
15
15
|
import '@selvajs/compute/core';
|
|
16
|
-
import './utils2-
|
|
16
|
+
import './utils2-BqfluBM6.js';
|
|
17
17
|
|
|
18
18
|
const MAX_SLUG_ATTEMPTS = 25;
|
|
19
19
|
function isSlugConflict(err) {
|
|
@@ -36,7 +36,7 @@ const CreatePlatformProjectBody = z.object({
|
|
|
36
36
|
});
|
|
37
37
|
const GET = async ({ locals }) => {
|
|
38
38
|
requireInstanceAdmin(locals);
|
|
39
|
-
if (!flag("ENABLE_PLATFORM_PROJECTS"))
|
|
39
|
+
if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
|
|
40
40
|
try {
|
|
41
41
|
const orgs = await getOrganizationProvider().listOrgs(SYSTEM_CONTEXT, { limit: 1e3 });
|
|
42
42
|
const all = [];
|
|
@@ -55,17 +55,22 @@ const GET = async ({ locals }) => {
|
|
|
55
55
|
};
|
|
56
56
|
const POST = async ({ request, locals }) => {
|
|
57
57
|
const user = requireInstanceAdmin(locals);
|
|
58
|
-
if (!flag("ENABLE_PLATFORM_PROJECTS"))
|
|
58
|
+
if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
|
|
59
59
|
const ctx = locals.ctx;
|
|
60
60
|
const body = await request.json().catch(() => null);
|
|
61
61
|
const parsed = CreatePlatformProjectBody.safeParse(body);
|
|
62
62
|
if (!parsed.success) throwZodError(parsed.error);
|
|
63
63
|
const hostOrgId = parsed.data.orgId ?? ctx.actingOrgId;
|
|
64
64
|
if (!hostOrgId) {
|
|
65
|
-
|
|
65
|
+
apiError(
|
|
66
|
+
400,
|
|
67
|
+
ApiErrorCode.VALIDATION_FAILED,
|
|
68
|
+
"A host orgId is required (no active organization in context)."
|
|
69
|
+
);
|
|
66
70
|
}
|
|
67
71
|
const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);
|
|
68
|
-
if (!hostOrg)
|
|
72
|
+
if (!hostOrg)
|
|
73
|
+
apiError(400, ApiErrorCode.VALIDATION_FAILED, `Host organization '${hostOrgId}' not found.`);
|
|
69
74
|
const projectStore = getProjectProvider();
|
|
70
75
|
const baseSlug = slugify(parsed.data.name) || "platform-project";
|
|
71
76
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -92,14 +97,22 @@ const POST = async ({ request, locals }) => {
|
|
|
92
97
|
return json(project, { status: 201 });
|
|
93
98
|
} catch (err) {
|
|
94
99
|
if (isNameConflict(err)) {
|
|
95
|
-
|
|
100
|
+
apiError(
|
|
101
|
+
409,
|
|
102
|
+
ApiErrorCode.CONFLICT,
|
|
103
|
+
"A project with that name already exists in the host organization."
|
|
104
|
+
);
|
|
96
105
|
}
|
|
97
106
|
if (isSlugConflict(err)) continue;
|
|
98
107
|
handleApiError(err, "Failed to create platform project");
|
|
99
108
|
}
|
|
100
109
|
}
|
|
101
|
-
|
|
110
|
+
apiError(
|
|
111
|
+
409,
|
|
112
|
+
ApiErrorCode.CONFLICT,
|
|
113
|
+
"Could not pick a unique project slug after several attempts."
|
|
114
|
+
);
|
|
102
115
|
};
|
|
103
116
|
|
|
104
117
|
export { GET, POST };
|
|
105
|
-
//# sourceMappingURL=_server.ts-
|
|
118
|
+
//# sourceMappingURL=_server.ts-D4z7bYT1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-D4z7bYT1.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/api/projects/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { z } from \"zod\";\nimport { randomUUID } from \"node:crypto\";\nimport { f as flag, k as getOrganizationProvider, n as getProjectProvider, P as ProviderError } from \"../../../../../chunks/providers.server.js\";\nimport { u as requireInstanceAdmin } from \"../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } 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 if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) apiError(404, ApiErrorCode.NOT_FOUND, \"Not found\");\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 if (!flag(\"ENABLE_PLATFORM_PROJECTS\")) apiError(404, ApiErrorCode.NOT_FOUND, \"Not found\");\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 apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n \"A host orgId is required (no active organization in context).\"\n );\n }\n const hostOrg = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, hostOrgId);\n if (!hostOrg)\n apiError(400, ApiErrorCode.VALIDATION_FAILED, `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 apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"A project with that name already exists in the host organization.\"\n );\n }\n if (isSlugConflict(err)) continue;\n handleApiError(err, \"Failed to create platform project\");\n }\n }\n apiError(\n 409,\n ApiErrorCode.CONFLICT,\n \"Could not pick a unique project slug after several attempts.\"\n );\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as getDefinitionService } from './providers.server-
|
|
3
|
-
import { t as requireEditableDefinition } from './access.server-
|
|
4
|
-
import { h as handleApiError } from './api-errors-
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
|
+
import { i as getDefinitionService } from './providers.server-C3fQ7ZdV.js';
|
|
3
|
+
import { t as requireEditableDefinition } from './access.server-Rd56k7vs.js';
|
|
4
|
+
import { a as apiError, h as handleApiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
5
5
|
import { G as GuidSchema } from './context-BJnJL8ES.js';
|
|
6
|
-
import { b as MAX_IMAGE_FILE_SIZE } from './computeLimits-
|
|
6
|
+
import { b as MAX_IMAGE_FILE_SIZE } from './computeLimits-DnJ77wR9.js';
|
|
7
7
|
import './shared-server-C3WdcJCQ.js';
|
|
8
8
|
import 'node:url';
|
|
9
9
|
import 'node:path';
|
|
@@ -13,29 +13,33 @@ import 'node:fs/promises';
|
|
|
13
13
|
import '@supabase/supabase-js';
|
|
14
14
|
import 'zod';
|
|
15
15
|
import '@selvajs/compute/core';
|
|
16
|
-
import './utils2-
|
|
16
|
+
import './utils2-BqfluBM6.js';
|
|
17
17
|
|
|
18
18
|
const POST = async ({ params, request, locals }) => {
|
|
19
19
|
const guidParsed = GuidSchema.safeParse(params.guid);
|
|
20
|
-
if (!guidParsed.success)
|
|
20
|
+
if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid GUID");
|
|
21
21
|
const guid = guidParsed.data;
|
|
22
22
|
const { ctx } = await requireEditableDefinition(locals, guid);
|
|
23
23
|
const formData = await request.formData();
|
|
24
24
|
const file = formData.get("image");
|
|
25
25
|
if (!(file instanceof File) || file.size === 0) {
|
|
26
|
-
|
|
26
|
+
apiError(400, ApiErrorCode.VALIDATION_FAILED, "Image file is required");
|
|
27
27
|
}
|
|
28
28
|
if (file.size > MAX_IMAGE_FILE_SIZE) {
|
|
29
|
-
|
|
29
|
+
apiError(
|
|
30
|
+
400,
|
|
31
|
+
ApiErrorCode.VALIDATION_FAILED,
|
|
32
|
+
`Image too large. Max size: ${MAX_IMAGE_FILE_SIZE / (1024 * 1024)} MB`
|
|
33
|
+
);
|
|
30
34
|
}
|
|
31
35
|
try {
|
|
32
36
|
const imageData = new Uint8Array(await file.arrayBuffer());
|
|
33
37
|
const coverImage = await getDefinitionService().saveCoverImage(ctx, guid, imageData);
|
|
34
|
-
return json({
|
|
38
|
+
return json({ coverImage });
|
|
35
39
|
} catch (err) {
|
|
36
40
|
handleApiError(err, "Failed to upload image");
|
|
37
41
|
}
|
|
38
42
|
};
|
|
39
43
|
|
|
40
44
|
export { POST };
|
|
41
|
-
//# sourceMappingURL=_server.ts-
|
|
45
|
+
//# sourceMappingURL=_server.ts-D7URpGBv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-D7URpGBv.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/definitions/_guid_/image/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { i as getDefinitionService } from \"../../../../../../chunks/providers.server.js\";\nimport { t as requireEditableDefinition } from \"../../../../../../chunks/access.server.js\";\nimport { a as apiError, h as handleApiError, A as ApiErrorCode } from \"../../../../../../chunks/api-errors.js\";\nimport { G as GuidSchema } from \"../../../../../../chunks/context.js\";\nimport { b as MAX_IMAGE_FILE_SIZE } from \"../../../../../../chunks/computeLimits.js\";\nconst POST = async ({ params, request, locals }) => {\n const guidParsed = GuidSchema.safeParse(params.guid);\n if (!guidParsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Invalid GUID\");\n const guid = guidParsed.data;\n const { ctx } = await requireEditableDefinition(locals, guid);\n const formData = await request.formData();\n const file = formData.get(\"image\");\n if (!(file instanceof File) || file.size === 0) {\n apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Image file is required\");\n }\n if (file.size > MAX_IMAGE_FILE_SIZE) {\n apiError(\n 400,\n ApiErrorCode.VALIDATION_FAILED,\n `Image too large. Max size: ${MAX_IMAGE_FILE_SIZE / (1024 * 1024)} MB`\n );\n }\n try {\n const imageData = new Uint8Array(await file.arrayBuffer());\n const coverImage = await getDefinitionService().saveCoverImage(ctx, guid, imageData);\n return json({ coverImage });\n } catch (err) {\n handleApiError(err, \"Failed to upload image\");\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMK,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,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACxF,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;AAC9B,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/D,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC3C,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;AAClD,IAAI,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE;AACvC,IAAI,QAAQ;AACZ,MAAM,GAAG;AACT,MAAM,YAAY,CAAC,iBAAiB;AACpC,MAAM,CAAC,2BAA2B,EAAE,mBAAmB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG;AAC3E,KAAK;AACL,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9D,IAAI,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;AACxF,IAAI,OAAO,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;AAC/B,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,cAAc,CAAC,GAAG,EAAE,wBAAwB,CAAC;AACjD,EAAE;AACF;;;;"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { h as getDefinitionMeta, d as definitionPaths,
|
|
1
|
+
import { a as apiError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
2
|
+
import { h as getDefinitionMeta, d as definitionPaths, p as getStorageProvider } from './providers.server-C3fQ7ZdV.js';
|
|
3
3
|
import { G as GuidSchema } from './context-BJnJL8ES.js';
|
|
4
|
-
import { s as requireCanViewProject } from './access.server-
|
|
4
|
+
import { s as requireCanViewProject } from './access.server-Rd56k7vs.js';
|
|
5
|
+
import '@sveltejs/kit';
|
|
6
|
+
import '@selvajs/compute/core';
|
|
7
|
+
import './utils2-BqfluBM6.js';
|
|
5
8
|
import './shared-server-C3WdcJCQ.js';
|
|
6
9
|
import 'node:url';
|
|
7
10
|
import 'node:path';
|
|
@@ -10,9 +13,6 @@ import 'node:crypto';
|
|
|
10
13
|
import 'node:fs/promises';
|
|
11
14
|
import '@supabase/supabase-js';
|
|
12
15
|
import 'zod';
|
|
13
|
-
import './api-errors-BckwXK7Q.js';
|
|
14
|
-
import '@selvajs/compute/core';
|
|
15
|
-
import './utils2-UQQTHTw-.js';
|
|
16
16
|
|
|
17
17
|
const ALLOWED_EXTENSIONS = {
|
|
18
18
|
".webp": "image/webp",
|
|
@@ -24,21 +24,21 @@ const ALLOWED_EXTENSIONS = {
|
|
|
24
24
|
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;
|
|
25
25
|
const GET = async ({ params, locals }) => {
|
|
26
26
|
const storagePath = params.path;
|
|
27
|
-
if (!storagePath)
|
|
27
|
+
if (!storagePath) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing path");
|
|
28
28
|
const match = COVER_PATH_PATTERN.exec(storagePath);
|
|
29
|
-
if (!match)
|
|
29
|
+
if (!match) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
|
|
30
30
|
const [, guid, rawExt] = match;
|
|
31
31
|
const ext = `.${rawExt.toLowerCase()}`;
|
|
32
|
-
if (!ALLOWED_EXTENSIONS[ext])
|
|
32
|
+
if (!ALLOWED_EXTENSIONS[ext]) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
|
|
33
33
|
const guidParsed = GuidSchema.safeParse(guid);
|
|
34
|
-
if (!guidParsed.success)
|
|
35
|
-
if (!locals.ctx)
|
|
34
|
+
if (!guidParsed.success) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
|
|
35
|
+
if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, "Unauthorized");
|
|
36
36
|
const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);
|
|
37
|
-
if (!record)
|
|
37
|
+
if (!record) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
|
|
38
38
|
await requireCanViewProject(locals, record.projectId);
|
|
39
39
|
const canonicalPath = definitionPaths.image(guidParsed.data);
|
|
40
40
|
const bytes = await getStorageProvider().get(canonicalPath);
|
|
41
|
-
if (!bytes)
|
|
41
|
+
if (!bytes) apiError(404, ApiErrorCode.NOT_FOUND, "File not found");
|
|
42
42
|
return new Response(Buffer.from(bytes), {
|
|
43
43
|
headers: {
|
|
44
44
|
"Content-Type": ALLOWED_EXTENSIONS[ext],
|
|
@@ -48,4 +48,4 @@ const GET = async ({ params, locals }) => {
|
|
|
48
48
|
};
|
|
49
49
|
|
|
50
50
|
export { GET };
|
|
51
|
-
//# sourceMappingURL=_server.ts-
|
|
51
|
+
//# sourceMappingURL=_server.ts-DMwrtYEK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DMwrtYEK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/files/_...path_/_server.ts.js"],"sourcesContent":["import { a as apiError, A as ApiErrorCode } from \"../../../../../chunks/api-errors.js\";\nimport { h as getDefinitionMeta, d as definitionPaths, p as getStorageProvider } from \"../../../../../chunks/providers.server.js\";\nimport { G as GuidSchema } from \"../../../../../chunks/context.js\";\nimport { s 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) apiError(400, ApiErrorCode.VALIDATION_FAILED, \"Missing path\");\n const match = COVER_PATH_PATTERN.exec(storagePath);\n if (!match) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n const [, guid, rawExt] = match;\n const ext = `.${rawExt.toLowerCase()}`;\n if (!ALLOWED_EXTENSIONS[ext]) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n const guidParsed = GuidSchema.safeParse(guid);\n if (!guidParsed.success) apiError(404, ApiErrorCode.NOT_FOUND, \"File not found\");\n if (!locals.ctx) apiError(401, ApiErrorCode.UNAUTHORIZED, \"Unauthorized\");\n const record = await getDefinitionMeta().get(locals.ctx, guidParsed.data);\n if (!record) apiError(404, ApiErrorCode.NOT_FOUND, \"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) apiError(404, ApiErrorCode.NOT_FOUND, \"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,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACjF,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrE,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,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACvF,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAClF,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC;AAC3E,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACtE,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,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACrE,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;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { m as getPlatformProjectGrantStore, k as getOrganizationProvider,
|
|
5
|
-
import { u as requireInstanceAdmin } from './access.server-
|
|
6
|
-
import { h as handleApiError, t as throwZodError } from './api-errors-
|
|
4
|
+
import { m as getPlatformProjectGrantStore, k as getOrganizationProvider, r as getUserProfileStore, f as flag, n as getProjectProvider } from './providers.server-C3fQ7ZdV.js';
|
|
5
|
+
import { u as requireInstanceAdmin } from './access.server-Rd56k7vs.js';
|
|
6
|
+
import { a as apiError, h as handleApiError, t as throwZodError, A as ApiErrorCode } from './api-errors-BrqxD-El.js';
|
|
7
7
|
import { S as SYSTEM_CONTEXT } from './context-BJnJL8ES.js';
|
|
8
8
|
import './shared-server-C3WdcJCQ.js';
|
|
9
9
|
import 'node:url';
|
|
@@ -12,7 +12,7 @@ import 'node:fs';
|
|
|
12
12
|
import 'node:fs/promises';
|
|
13
13
|
import '@supabase/supabase-js';
|
|
14
14
|
import '@selvajs/compute/core';
|
|
15
|
-
import './utils2-
|
|
15
|
+
import './utils2-BqfluBM6.js';
|
|
16
16
|
|
|
17
17
|
const CreateGrantBody = z.object({
|
|
18
18
|
granteeType: z.enum(["org", "user"]),
|
|
@@ -20,17 +20,17 @@ const CreateGrantBody = z.object({
|
|
|
20
20
|
canSolve: z.boolean()
|
|
21
21
|
});
|
|
22
22
|
async function assertPlatformProject(id) {
|
|
23
|
-
if (!flag("ENABLE_PLATFORM_PROJECTS"))
|
|
23
|
+
if (!flag("ENABLE_PLATFORM_PROJECTS")) apiError(404, ApiErrorCode.NOT_FOUND, "Not found");
|
|
24
24
|
const project = await getProjectProvider().getProject(SYSTEM_CONTEXT, id);
|
|
25
25
|
if (!project || project.visibility !== "platform") {
|
|
26
|
-
|
|
26
|
+
apiError(404, ApiErrorCode.NOT_FOUND, "Platform project not found");
|
|
27
27
|
}
|
|
28
28
|
return project;
|
|
29
29
|
}
|
|
30
30
|
const GET = async ({ params, locals }) => {
|
|
31
31
|
requireInstanceAdmin(locals);
|
|
32
32
|
const { id } = params;
|
|
33
|
-
if (!id)
|
|
33
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing project ID");
|
|
34
34
|
try {
|
|
35
35
|
await assertPlatformProject(id);
|
|
36
36
|
const grants = await getPlatformProjectGrantStore().listByProject(SYSTEM_CONTEXT, id);
|
|
@@ -42,7 +42,7 @@ const GET = async ({ params, locals }) => {
|
|
|
42
42
|
const POST = async ({ params, request, locals }) => {
|
|
43
43
|
const user = requireInstanceAdmin(locals);
|
|
44
44
|
const { id } = params;
|
|
45
|
-
if (!id)
|
|
45
|
+
if (!id) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Missing project ID");
|
|
46
46
|
const body = await request.json().catch(() => null);
|
|
47
47
|
const parsed = CreateGrantBody.safeParse(body);
|
|
48
48
|
if (!parsed.success) throwZodError(parsed.error);
|
|
@@ -50,10 +50,16 @@ const POST = async ({ params, request, locals }) => {
|
|
|
50
50
|
await assertPlatformProject(id);
|
|
51
51
|
if (parsed.data.granteeType === "org") {
|
|
52
52
|
const org = await getOrganizationProvider().getOrg(SYSTEM_CONTEXT, parsed.data.granteeId);
|
|
53
|
-
if (!org)
|
|
53
|
+
if (!org)
|
|
54
|
+
apiError(
|
|
55
|
+
400,
|
|
56
|
+
ApiErrorCode.VALIDATION_FAILED,
|
|
57
|
+
`Organization '${parsed.data.granteeId}' not found`
|
|
58
|
+
);
|
|
54
59
|
} else {
|
|
55
60
|
const profile = await getUserProfileStore().getProfile(SYSTEM_CONTEXT, parsed.data.granteeId);
|
|
56
|
-
if (!profile)
|
|
61
|
+
if (!profile)
|
|
62
|
+
apiError(400, ApiErrorCode.VALIDATION_FAILED, `User '${parsed.data.granteeId}' not found`);
|
|
57
63
|
}
|
|
58
64
|
const grant = {
|
|
59
65
|
id: randomUUID(),
|
|
@@ -72,4 +78,4 @@ const POST = async ({ params, request, locals }) => {
|
|
|
72
78
|
};
|
|
73
79
|
|
|
74
80
|
export { GET, POST };
|
|
75
|
-
//# sourceMappingURL=_server.ts-
|
|
81
|
+
//# sourceMappingURL=_server.ts-DSVtVVVK.js.map
|