@selvajs/selva 2.0.8 → 2.0.9
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/{BldLEHH8.js → 8jxh9FTC.js} +1 -1
- package/build/client/_app/immutable/chunks/8jxh9FTC.js.br +0 -0
- package/build/client/_app/immutable/chunks/8jxh9FTC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B0M-tm96.js → B1839-Qe.js} +1 -1
- package/build/client/_app/immutable/chunks/B1839-Qe.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1839-Qe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CyUe9WIm.js → BB7Ce_Ao.js} +1 -1
- package/build/client/_app/immutable/chunks/BB7Ce_Ao.js.br +0 -0
- package/build/client/_app/immutable/chunks/BB7Ce_Ao.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Ba2Ugq_t.js → BG4KYJxd.js} +1 -1
- package/build/client/_app/immutable/chunks/BG4KYJxd.js.br +0 -0
- package/build/client/_app/immutable/chunks/BG4KYJxd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLObdRkl.js +3 -0
- package/build/client/_app/immutable/chunks/BLObdRkl.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLObdRkl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BnGN4Ix-.js → Dx1NLq6A.js} +1 -1
- package/build/client/_app/immutable/chunks/Dx1NLq6A.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dx1NLq6A.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.R0cA7z-3.js → app.iSZ5n5at.js} +2 -2
- package/build/client/_app/immutable/entry/app.iSZ5n5at.js.br +0 -0
- package/build/client/_app/immutable/entry/app.iSZ5n5at.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DN1mprbr.js +1 -0
- package/build/client/_app/immutable/entry/start.DN1mprbr.js.br +2 -0
- package/build/client/_app/immutable/entry/start.DN1mprbr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.iTQblN3h.js → 1.B3iyxTLe.js} +1 -1
- package/build/client/_app/immutable/nodes/1.B3iyxTLe.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B3iyxTLe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{11.D7vQOfVW.js → 11.C0bOSA5Z.js} +1 -1
- package/build/client/_app/immutable/nodes/11.C0bOSA5Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.C0bOSA5Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{13.CEGRwaw5.js → 13.BBX4st-t.js} +1 -1
- package/build/client/_app/immutable/nodes/13.BBX4st-t.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BBX4st-t.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{14.DP0RHUIL.js → 14.S-GLVBVi.js} +1 -1
- package/build/client/_app/immutable/nodes/14.S-GLVBVi.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.S-GLVBVi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.CAs53i3e.js +16 -0
- package/build/client/_app/immutable/nodes/15.CAs53i3e.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.CAs53i3e.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{16.ChhIZf_i.js → 16.ukqcuKdq.js} +1 -1
- package/build/client/_app/immutable/nodes/16.ukqcuKdq.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.ukqcuKdq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{17.DL0oF7lP.js → 17.DsZpiT_T.js} +1 -1
- package/build/client/_app/immutable/nodes/17.DsZpiT_T.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.DsZpiT_T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{19.CCJMnv49.js → 19.De1qTu0Z.js} +1 -1
- package/build/client/_app/immutable/nodes/19.De1qTu0Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.De1qTu0Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.D9zIVWl1.js +1 -0
- package/build/client/_app/immutable/nodes/2.D9zIVWl1.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.D9zIVWl1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{20.De0vu3AF.js → 20.DxsctpJH.js} +1 -1
- package/build/client/_app/immutable/nodes/20.DxsctpJH.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.DxsctpJH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{21.DpNlPoKj.js → 21.-SL0S8PQ.js} +1 -1
- package/build/client/_app/immutable/nodes/21.-SL0S8PQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.-SL0S8PQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{23.CMmwabln.js → 23.VZ_boRL-.js} +1 -1
- package/build/client/_app/immutable/nodes/23.VZ_boRL-.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.VZ_boRL-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{24.CuYhfWpg.js → 24.B9kY2pb5.js} +1 -1
- package/build/client/_app/immutable/nodes/24.B9kY2pb5.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.B9kY2pb5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{27.xAPzIANf.js → 27.DZwrstUI.js} +1 -1
- package/build/client/_app/immutable/nodes/27.DZwrstUI.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.DZwrstUI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{28.DwzOZwKl.js → 28.MnyfwNy0.js} +1 -1
- package/build/client/_app/immutable/nodes/28.MnyfwNy0.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.MnyfwNy0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{29.8CK2Warj.js → 29.CNTJCITP.js} +1 -1
- package/build/client/_app/immutable/nodes/29.CNTJCITP.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.CNTJCITP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.CRsFANhR.js → 3.KI4lh69U.js} +1 -1
- package/build/client/_app/immutable/nodes/3.KI4lh69U.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.KI4lh69U.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{30.Cj-Aax_q.js → 30.Ct1smdjS.js} +1 -1
- package/build/client/_app/immutable/nodes/30.Ct1smdjS.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.Ct1smdjS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.CtPFMefZ.js → 5.BN9x0bOB.js} +1 -1
- package/build/client/_app/immutable/nodes/5.BN9x0bOB.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BN9x0bOB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.DpMqwqL2.js → 6.BU_SGWVX.js} +1 -1
- package/build/client/_app/immutable/nodes/6.BU_SGWVX.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BU_SGWVX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.B8Lrh4Sn.js → 7.9jzNcaAs.js} +1 -1
- package/build/client/_app/immutable/nodes/7.9jzNcaAs.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.9jzNcaAs.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.BpnmUNwu.js → 8.BvaBLt60.js} +1 -1
- package/build/client/_app/immutable/nodes/8.BvaBLt60.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BvaBLt60.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.-tjBCa1C.js → 9.CzG8ag1t.js} +1 -1
- package/build/client/_app/immutable/nodes/9.CzG8ag1t.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CzG8ag1t.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-wC8vebb2.js → 0-CybFR_P8.js} +2 -2
- package/build/server/chunks/{0-wC8vebb2.js.map → 0-CybFR_P8.js.map} +1 -1
- package/build/server/chunks/{1-CSxxdOGx.js → 1-CUP4tMEn.js} +2 -2
- package/build/server/chunks/{1-CSxxdOGx.js.map → 1-CUP4tMEn.js.map} +1 -1
- package/build/server/chunks/{10-8FzClb5u.js → 10-zdkaINz9.js} +4 -4
- package/build/server/chunks/{10-8FzClb5u.js.map → 10-zdkaINz9.js.map} +1 -1
- package/build/server/chunks/{11-DPGyzjwV.js → 11-DHKq5wgm.js} +6 -6
- package/build/server/chunks/{11-DPGyzjwV.js.map → 11-DHKq5wgm.js.map} +1 -1
- package/build/server/chunks/{12-C_P4jkDv.js → 12-XbcleGFd.js} +2 -2
- package/build/server/chunks/{12-C_P4jkDv.js.map → 12-XbcleGFd.js.map} +1 -1
- package/build/server/chunks/{13-BTAtM4vf.js → 13-D9eyZVCZ.js} +5 -4
- package/build/server/chunks/13-D9eyZVCZ.js.map +1 -0
- package/build/server/chunks/{14-x6FJT6Iw.js → 14-qYW-h0op.js} +4 -3
- package/build/server/chunks/14-qYW-h0op.js.map +1 -0
- package/build/server/chunks/{15-DGiz0g4w.js → 15-wi_onU5j.js} +6 -5
- package/build/server/chunks/15-wi_onU5j.js.map +1 -0
- package/build/server/chunks/{16-CuluBZaI.js → 16-BM4yvuKv.js} +5 -5
- package/build/server/chunks/{16-CuluBZaI.js.map → 16-BM4yvuKv.js.map} +1 -1
- package/build/server/chunks/{17-DZr92is3.js → 17-CexG3wap.js} +2 -2
- package/build/server/chunks/{17-DZr92is3.js.map → 17-CexG3wap.js.map} +1 -1
- package/build/server/chunks/{18-DeVS-pOT.js → 18-DbXlY9LE.js} +2 -2
- package/build/server/chunks/{18-DeVS-pOT.js.map → 18-DbXlY9LE.js.map} +1 -1
- package/build/server/chunks/{19-B0hG9_9r.js → 19-AX88i2oC.js} +5 -3
- package/build/server/chunks/19-AX88i2oC.js.map +1 -0
- package/build/server/chunks/{2-_zknF6gb.js → 2-BMbliYzg.js} +7 -6
- package/build/server/chunks/2-BMbliYzg.js.map +1 -0
- package/build/server/chunks/{20-Db0y8qIh.js → 20-S3QlkFoL.js} +9 -9
- package/build/server/chunks/{20-Db0y8qIh.js.map → 20-S3QlkFoL.js.map} +1 -1
- package/build/server/chunks/{21-CQ2mvrOt.js → 21-BAKPEyjQ.js} +3 -3
- package/build/server/chunks/{21-CQ2mvrOt.js.map → 21-BAKPEyjQ.js.map} +1 -1
- package/build/server/chunks/{23-CSrUCr2t.js → 23-DCiJWF0i.js} +6 -6
- package/build/server/chunks/{23-CSrUCr2t.js.map → 23-DCiJWF0i.js.map} +1 -1
- package/build/server/chunks/{24-D14nUSAR.js → 24-B3gXWNYD.js} +4 -4
- package/build/server/chunks/{24-D14nUSAR.js.map → 24-B3gXWNYD.js.map} +1 -1
- package/build/server/chunks/{25-ef6c33Ul.js → 25-9yYU1YBX.js} +2 -2
- package/build/server/chunks/{25-ef6c33Ul.js.map → 25-9yYU1YBX.js.map} +1 -1
- package/build/server/chunks/{27-PXKn2m8M.js → 27-GMsHFaaf.js} +4 -4
- package/build/server/chunks/{27-PXKn2m8M.js.map → 27-GMsHFaaf.js.map} +1 -1
- package/build/server/chunks/{28-DYuI_Cgr.js → 28-DnplSoj0.js} +3 -3
- package/build/server/chunks/{28-DYuI_Cgr.js.map → 28-DnplSoj0.js.map} +1 -1
- package/build/server/chunks/{29-CrDIu9-c.js → 29-orcjqU9J.js} +3 -3
- package/build/server/chunks/{29-CrDIu9-c.js.map → 29-orcjqU9J.js.map} +1 -1
- package/build/server/chunks/{3-Dk3O-ses.js → 3-B57IoxU7.js} +2 -2
- package/build/server/chunks/{3-Dk3O-ses.js.map → 3-B57IoxU7.js.map} +1 -1
- package/build/server/chunks/{30-ZXGKLYtR.js → 30-UoUq_V5A.js} +3 -3
- package/build/server/chunks/{30-ZXGKLYtR.js.map → 30-UoUq_V5A.js.map} +1 -1
- package/build/server/chunks/{31-CirH19D6.js → 31-BRqIoy8w.js} +2 -2
- package/build/server/chunks/{31-CirH19D6.js.map → 31-BRqIoy8w.js.map} +1 -1
- package/build/server/chunks/{32-CZojKYOy.js → 32-D1Mk43AX.js} +2 -2
- package/build/server/chunks/{32-CZojKYOy.js.map → 32-D1Mk43AX.js.map} +1 -1
- package/build/server/chunks/{5-DZF9fTQJ.js → 5-DMGFkyK4.js} +2 -2
- package/build/server/chunks/{5-DZF9fTQJ.js.map → 5-DMGFkyK4.js.map} +1 -1
- package/build/server/chunks/{6-Dv8dgI1X.js → 6-CYaPOOMj.js} +3 -3
- package/build/server/chunks/{6-Dv8dgI1X.js.map → 6-CYaPOOMj.js.map} +1 -1
- package/build/server/chunks/{7-Be6Wvhky.js → 7-Dk_VmXtf.js} +2 -2
- package/build/server/chunks/{7-Be6Wvhky.js.map → 7-Dk_VmXtf.js.map} +1 -1
- package/build/server/chunks/{8-CPaEsylT.js → 8-Ce8EjQtB.js} +3 -3
- package/build/server/chunks/{8-CPaEsylT.js.map → 8-Ce8EjQtB.js.map} +1 -1
- package/build/server/chunks/{9-DwCoeD2g.js → 9-DghkKEyM.js} +3 -3
- package/build/server/chunks/{9-DwCoeD2g.js.map → 9-DghkKEyM.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-HGSVxA0R.js → _layout.svelte-u5-cJLoF.js} +2 -2
- package/build/server/chunks/_layout.svelte-u5-cJLoF.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BptS1zpT.js → _page.svelte-CRZeKEsV.js} +2 -1
- package/build/server/chunks/_page.svelte-CRZeKEsV.js.map +1 -0
- package/build/server/chunks/{_server.ts-C2YLv0RS.js → _server.ts-07x4zjP2.js} +4 -4
- package/build/server/chunks/{_server.ts-C2YLv0RS.js.map → _server.ts-07x4zjP2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B0gZCMdj.js → _server.ts-7mF4ytYC.js} +4 -4
- package/build/server/chunks/{_server.ts-B0gZCMdj.js.map → _server.ts-7mF4ytYC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cjz2LZbt.js → _server.ts-B-LWyGZ8.js} +5 -4
- package/build/server/chunks/_server.ts-B-LWyGZ8.js.map +1 -0
- package/build/server/chunks/{_server.ts-CKHs57oZ.js → _server.ts-B2zQRDbu.js} +2 -2
- package/build/server/chunks/{_server.ts-CKHs57oZ.js.map → _server.ts-B2zQRDbu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BSoy1Ljl.js → _server.ts-B6Zmqwf5.js} +4 -4
- package/build/server/chunks/{_server.ts-BSoy1Ljl.js.map → _server.ts-B6Zmqwf5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C3Cn_AWJ.js → _server.ts-BDeXzj8U.js} +4 -4
- package/build/server/chunks/{_server.ts-C3Cn_AWJ.js.map → _server.ts-BDeXzj8U.js.map} +1 -1
- package/build/server/chunks/{_server.ts-I3zLnhsz.js → _server.ts-BEGEbcQ_.js} +4 -4
- package/build/server/chunks/{_server.ts-I3zLnhsz.js.map → _server.ts-BEGEbcQ_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CyhcRpfW.js → _server.ts-BEW1ndmL.js} +5 -5
- package/build/server/chunks/{_server.ts-CyhcRpfW.js.map → _server.ts-BEW1ndmL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-1nksAmT8.js → _server.ts-BSZknGSV.js} +4 -4
- package/build/server/chunks/{_server.ts-1nksAmT8.js.map → _server.ts-BSZknGSV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTi2idVf.js → _server.ts-BUI9hwVF.js} +4 -4
- package/build/server/chunks/{_server.ts-BTi2idVf.js.map → _server.ts-BUI9hwVF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CZW4ge6f.js → _server.ts-BX0JGorf.js} +4 -4
- package/build/server/chunks/{_server.ts-CZW4ge6f.js.map → _server.ts-BX0JGorf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BYlDwqEg.js → _server.ts-BXGCxm6J.js} +5 -5
- package/build/server/chunks/{_server.ts-BYlDwqEg.js.map → _server.ts-BXGCxm6J.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ByhZiyPJ.js → _server.ts-BYTe4ViD.js} +4 -4
- package/build/server/chunks/{_server.ts-ByhZiyPJ.js.map → _server.ts-BYTe4ViD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdKZ7aOG.js → _server.ts-BaHBgmBs.js} +4 -4
- package/build/server/chunks/{_server.ts-BdKZ7aOG.js.map → _server.ts-BaHBgmBs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C9ggXEGb.js → _server.ts-BbvHHiGq.js} +4 -4
- package/build/server/chunks/{_server.ts-C9ggXEGb.js.map → _server.ts-BbvHHiGq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-qFzkA4h-.js → _server.ts-C9SZ9y6W.js} +7 -7
- package/build/server/chunks/{_server.ts-qFzkA4h-.js.map → _server.ts-C9SZ9y6W.js.map} +1 -1
- package/build/server/chunks/{_server.ts-uQSc7PGB.js → _server.ts-CHvipMjS.js} +4 -4
- package/build/server/chunks/{_server.ts-uQSc7PGB.js.map → _server.ts-CHvipMjS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-1HIleN3S.js → _server.ts-CIAkL4VM.js} +4 -4
- package/build/server/chunks/{_server.ts-1HIleN3S.js.map → _server.ts-CIAkL4VM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-gCCprE5T.js → _server.ts-CKENL0Fr.js} +7 -5
- package/build/server/chunks/_server.ts-CKENL0Fr.js.map +1 -0
- package/build/server/chunks/{_server.ts-BbzbsVfr.js → _server.ts-CKtVrr5P.js} +4 -4
- package/build/server/chunks/{_server.ts-BbzbsVfr.js.map → _server.ts-CKtVrr5P.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CN851WSH.js → _server.ts-CS_06-Es.js} +4 -4
- package/build/server/chunks/{_server.ts-CN851WSH.js.map → _server.ts-CS_06-Es.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dnqx5-qU.js → _server.ts-D5nruaeK.js} +6 -6
- package/build/server/chunks/{_server.ts-Dnqx5-qU.js.map → _server.ts-D5nruaeK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_s5gcH-.js → _server.ts-DLHHpGFa.js} +3 -3
- package/build/server/chunks/{_server.ts-C_s5gcH-.js.map → _server.ts-DLHHpGFa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CbQpXSqd.js → _server.ts-DMSCxMRc.js} +4 -4
- package/build/server/chunks/{_server.ts-CbQpXSqd.js.map → _server.ts-DMSCxMRc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-k0TOB-E9.js → _server.ts-DOstgfdy.js} +4 -4
- package/build/server/chunks/{_server.ts-k0TOB-E9.js.map → _server.ts-DOstgfdy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DChqazjy.js → _server.ts-DahXKbZg.js} +3 -3
- package/build/server/chunks/{_server.ts-DChqazjy.js.map → _server.ts-DahXKbZg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DraBBcmz.js → _server.ts-DjEulrER.js} +4 -4
- package/build/server/chunks/{_server.ts-DraBBcmz.js.map → _server.ts-DjEulrER.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cb4DODkC.js → _server.ts-DmvmgVIf.js} +5 -5
- package/build/server/chunks/{_server.ts-Cb4DODkC.js.map → _server.ts-DmvmgVIf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CNPmzTy6.js → _server.ts-Du9sjt--.js} +4 -4
- package/build/server/chunks/{_server.ts-CNPmzTy6.js.map → _server.ts-Du9sjt--.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ch4yLIuo.js → _server.ts-Dx6fUVVo.js} +3 -3
- package/build/server/chunks/{_server.ts-Ch4yLIuo.js.map → _server.ts-Dx6fUVVo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-AE1drj36.js → _server.ts-MKn8v93k.js} +5 -4
- package/build/server/chunks/_server.ts-MKn8v93k.js.map +1 -0
- package/build/server/chunks/{_server.ts-CaERLUlr.js → _server.ts-MvJCHr1k.js} +3 -3
- package/build/server/chunks/{_server.ts-CaERLUlr.js.map → _server.ts-MvJCHr1k.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DWL7YPsQ.js → _server.ts-Njof323z.js} +5 -5
- package/build/server/chunks/{_server.ts-DWL7YPsQ.js.map → _server.ts-Njof323z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BnN8EQwQ.js → _server.ts-VbLWxdNH.js} +4 -4
- package/build/server/chunks/{_server.ts-BnN8EQwQ.js.map → _server.ts-VbLWxdNH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DnpbPKKN.js → _server.ts-WfRBOO6r.js} +4 -4
- package/build/server/chunks/{_server.ts-DnpbPKKN.js.map → _server.ts-WfRBOO6r.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DrYz0SSH.js → _server.ts-c9y4czsq.js} +4 -4
- package/build/server/chunks/{_server.ts-DrYz0SSH.js.map → _server.ts-c9y4czsq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzJ60KtY.js → _server.ts-hNeWcDQg.js} +5 -5
- package/build/server/chunks/{_server.ts-CzJ60KtY.js.map → _server.ts-hNeWcDQg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-v9eUA-cx.js → _server.ts-kUn8v9xq.js} +4 -4
- package/build/server/chunks/{_server.ts-v9eUA-cx.js.map → _server.ts-kUn8v9xq.js.map} +1 -1
- package/build/server/chunks/{access.server-DVG3xnR_.js → access.server-DGKSuoRH.js} +35 -13
- package/build/server/chunks/access.server-DGKSuoRH.js.map +1 -0
- package/build/server/chunks/{api-errors-DGHmIOGJ.js → api-errors-DSza0CJv.js} +2 -2
- package/build/server/chunks/{api-errors-DGHmIOGJ.js.map → api-errors-DSza0CJv.js.map} +1 -1
- package/build/server/chunks/{auth-bootstrap.server-dy8_QSAP.js → auth-bootstrap.server-YBvyz9i1.js} +2 -2
- package/build/server/chunks/{auth-bootstrap.server-dy8_QSAP.js.map → auth-bootstrap.server-YBvyz9i1.js.map} +1 -1
- package/build/server/chunks/{bootHealth.server-DQx_qsNh.js → bootHealth.server-DwPUi_JC.js} +2 -2
- package/build/server/chunks/{bootHealth.server-DQx_qsNh.js.map → bootHealth.server-DwPUi_JC.js.map} +1 -1
- package/build/server/chunks/{hooks.server-D5z2JKsD.js → hooks.server---blwhkE.js} +4 -4
- package/build/server/chunks/{hooks.server-D5z2JKsD.js.map → hooks.server---blwhkE.js.map} +1 -1
- package/build/server/chunks/{permissions.server-qrbshNHz.js → permissions.server-toUY36oB.js} +2 -2
- package/build/server/chunks/{permissions.server-qrbshNHz.js.map → permissions.server-toUY36oB.js.map} +1 -1
- package/build/server/chunks/{providers.server-Duyx-08B.js → providers.server-gJvnJT_K.js} +2 -1
- package/build/server/chunks/providers.server-gJvnJT_K.js.map +1 -0
- package/build/server/chunks/{resolve.server-BwfjDyaT.js → resolve.server-Ca9AsrIQ.js} +3 -3
- package/build/server/chunks/{resolve.server-BwfjDyaT.js.map → resolve.server-Ca9AsrIQ.js.map} +1 -1
- package/build/server/chunks/{resolve.server2-DjZg4oZg.js → resolve.server2-B0RMxSCk.js} +2 -2
- package/build/server/chunks/{resolve.server2-DjZg4oZg.js.map → resolve.server2-B0RMxSCk.js.map} +1 -1
- package/build/server/chunks/{utils2-QuTTpZq0.js → utils2-DfCIUv4X.js} +2 -2
- package/build/server/chunks/{utils2-QuTTpZq0.js.map → utils2-DfCIUv4X.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +69 -69
- package/build/server/manifest.js.map +1 -1
- package/package.json +5 -5
- package/templates/.env.example +8 -0
- package/build/client/_app/immutable/chunks/B0M-tm96.js.br +0 -0
- package/build/client/_app/immutable/chunks/B0M-tm96.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ba2Ugq_t.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ba2Ugq_t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BldLEHH8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BldLEHH8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnGN4Ix-.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnGN4Ix-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CnbBd0os.js +0 -3
- package/build/client/_app/immutable/chunks/CnbBd0os.js.br +0 -0
- package/build/client/_app/immutable/chunks/CnbBd0os.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CyUe9WIm.js.br +0 -0
- package/build/client/_app/immutable/chunks/CyUe9WIm.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.R0cA7z-3.js.br +0 -0
- package/build/client/_app/immutable/entry/app.R0cA7z-3.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DuuVgzCE.js +0 -1
- package/build/client/_app/immutable/entry/start.DuuVgzCE.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DuuVgzCE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.iTQblN3h.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.iTQblN3h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.D7vQOfVW.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.D7vQOfVW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.CEGRwaw5.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.CEGRwaw5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.DP0RHUIL.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.DP0RHUIL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.C5BZvt5A.js +0 -16
- package/build/client/_app/immutable/nodes/15.C5BZvt5A.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.C5BZvt5A.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.ChhIZf_i.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.ChhIZf_i.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.DL0oF7lP.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.DL0oF7lP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.CCJMnv49.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.CCJMnv49.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.wQUgS03u.js +0 -1
- package/build/client/_app/immutable/nodes/2.wQUgS03u.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.wQUgS03u.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.De0vu3AF.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.De0vu3AF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.DpNlPoKj.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.DpNlPoKj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.CMmwabln.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.CMmwabln.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.CuYhfWpg.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.CuYhfWpg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.xAPzIANf.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.xAPzIANf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.DwzOZwKl.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.DwzOZwKl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.8CK2Warj.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.8CK2Warj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CRsFANhR.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CRsFANhR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.Cj-Aax_q.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.Cj-Aax_q.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CtPFMefZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CtPFMefZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DpMqwqL2.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DpMqwqL2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.B8Lrh4Sn.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.B8Lrh4Sn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BpnmUNwu.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BpnmUNwu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.-tjBCa1C.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.-tjBCa1C.js.gz +0 -0
- package/build/server/chunks/13-BTAtM4vf.js.map +0 -1
- package/build/server/chunks/14-x6FJT6Iw.js.map +0 -1
- package/build/server/chunks/15-DGiz0g4w.js.map +0 -1
- package/build/server/chunks/19-B0hG9_9r.js.map +0 -1
- package/build/server/chunks/2-_zknF6gb.js.map +0 -1
- package/build/server/chunks/_layout.svelte-HGSVxA0R.js.map +0 -1
- package/build/server/chunks/_page.svelte-BptS1zpT.js.map +0 -1
- package/build/server/chunks/_server.ts-AE1drj36.js.map +0 -1
- package/build/server/chunks/_server.ts-Cjz2LZbt.js.map +0 -1
- package/build/server/chunks/_server.ts-gCCprE5T.js.map +0 -1
- package/build/server/chunks/access.server-DVG3xnR_.js.map +0 -1
- package/build/server/chunks/providers.server-Duyx-08B.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.server-gJvnJT_K.js","sources":["../../../.svelte-kit/adapter-node/chunks/providers.server.js"],"sourcesContent":["import { b as private_env } from \"./shared-server.js\";\nimport { pathToFileURL } from \"node:url\";\nimport * as path from \"node:path\";\nimport { resolve } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport { D as DEFAULT_ORG_PERMISSIONS, S as SYSTEM_CONTEXT, h as hasPermission, P as PlatformPermissionSchema } from \"./context.js\";\nimport * as crypto from \"node:crypto\";\nimport { createHmac, timingSafeEqual, randomUUID, createDecipheriv, randomBytes, createCipheriv } from \"node:crypto\";\nimport * as fs from \"node:fs/promises\";\nimport { createClient } from \"@supabase/supabase-js\";\nfunction assertSafeKey(value, label) {\n if (!value || !/^[A-Za-z0-9._-]+$/.test(value) || value === \".\" || value === \"..\") {\n throw new Error(`Unsafe ${label}: ${JSON.stringify(value)}`);\n }\n}\nconst definitionPaths = {\n version: (guid, versionNumber, ext) => {\n assertSafeKey(guid, \"guid\");\n if (!Number.isInteger(versionNumber) || versionNumber < 1) {\n throw new Error(`Unsafe versionNumber: ${versionNumber}`);\n }\n return `definitions/${guid}/versions/v${versionNumber}.${ext}`;\n },\n image: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/cover.webp`;\n },\n prefix: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/`;\n }\n};\nconst IMAGE_MAX_WIDTH = 1200;\nconst IMAGE_WEBP_QUALITY = 85;\nfunction isImageUpload(contentType, storagePath) {\n if (contentType?.startsWith(\"image/\"))\n return true;\n return /\\.(webp|png|jpe?g|gif|bmp|tif?f)$/i.test(storagePath);\n}\nfunction toWebpPath(storagePath) {\n return storagePath.replace(/\\.(png|jpe?g|gif|bmp|tif?f)$/i, \".webp\");\n}\nasync function transcodeImageIfNeeded(data, contentType, storagePath) {\n if (!isImageUpload(contentType, storagePath)) {\n return { data, contentType: contentType ?? \"application/octet-stream\", path: storagePath };\n }\n const sharp = await loadSharp();\n const compressed = await sharp(Buffer.from(data)).resize({ width: IMAGE_MAX_WIDTH, withoutEnlargement: true }).webp({ quality: IMAGE_WEBP_QUALITY }).toBuffer();\n return {\n data: new Uint8Array(compressed),\n contentType: \"image/webp\",\n path: toWebpPath(storagePath)\n };\n}\nlet cachedSharp = null;\nasync function loadSharp() {\n if (cachedSharp)\n return cachedSharp;\n try {\n const mod = await import(\"sharp\");\n cachedSharp = mod.default ?? mod;\n return cachedSharp;\n } catch (err) {\n throw new Error(\"Image transcoding requires `sharp` to be installed. Add it as a dependency in your provider package.\", { cause: err });\n }\n}\nfunction isPlatformServer(s) {\n return s.scope === \"platform\";\n}\nfunction isOrgServer(s) {\n return s.scope === \"org\";\n}\nfunction actorFrom(ctx) {\n return ctx.userId || \"system\";\n}\nclass NoopEventSink {\n async emit(_event) {\n }\n}\nconst nowIso = () => (/* @__PURE__ */ new Date()).toISOString();\nfunction auditUpdate(ctx, fallbackActor) {\n return {\n updatedAt: nowIso(),\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nfunction auditSoftDelete(ctx, fallbackActor) {\n const now = nowIso();\n return {\n deletedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 200;\nfunction isFlagEnabled(config, flag2) {\n return Boolean(config.flags?.[flag2]);\n}\nfunction defineConfig(config) {\n return config;\n}\nclass ProviderError extends Error {\n statusCode;\n constructor(message, statusCode = 400) {\n super(message);\n this.name = \"ProviderError\";\n this.statusCode = statusCode;\n }\n}\nconst DEFAULT_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nfunction signHmacToken(secret, userId, maxAgeMs = DEFAULT_MAX_AGE_MS) {\n const expiry = Date.now() + maxAgeMs;\n const payload = Buffer.from(`${userId}:${expiry}`).toString(\"base64url\");\n const sig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n return `${payload}.${sig}`;\n}\nfunction verifyHmacToken(token, secret) {\n const dot = token.lastIndexOf(\".\");\n if (dot === -1)\n return { userId: \"\", valid: false };\n const payload = token.slice(0, dot);\n const sig = token.slice(dot + 1);\n const expectedSig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n const a = Buffer.from(sig);\n const b = Buffer.from(expectedSig);\n if (a.length !== b.length || !timingSafeEqual(a, b))\n return { userId: \"\", valid: false };\n const decoded = Buffer.from(payload, \"base64url\").toString();\n const colon = decoded.lastIndexOf(\":\");\n if (colon === -1)\n return { userId: \"\", valid: false };\n const userId = decoded.slice(0, colon);\n const expiry = parseInt(decoded.slice(colon + 1), 10);\n if (!Number.isFinite(expiry) || Date.now() >= expiry)\n return { userId: \"\", valid: false };\n return { userId, valid: true };\n}\nasync function readJsonFile(filePath, fallback) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return fallback;\n throw err;\n }\n}\nasync function writeJsonFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nconst LAST_LOGIN_DEBOUNCE_MS$1 = 6e4;\nconst PBKDF2_ITERATIONS = 1e5;\nconst PBKDF2_KEYLEN = 32;\nconst PBKDF2_DIGEST = \"sha256\";\nasync function hashPassword(password) {\n const salt = crypto.randomBytes(16).toString(\"base64url\");\n const hash = await new Promise((resolve2, reject) => crypto.pbkdf2(password, salt, PBKDF2_ITERATIONS, PBKDF2_KEYLEN, PBKDF2_DIGEST, (err, key) => err ? reject(err) : resolve2(key)));\n return `pbkdf2:${PBKDF2_DIGEST}:${PBKDF2_ITERATIONS}:${salt}:${hash.toString(\"base64url\")}`;\n}\nasync function verifyPasswordHash(password, storedHash) {\n const parts = storedHash.split(\":\");\n if (parts.length !== 5 || parts[0] !== \"pbkdf2\")\n return false;\n const [, digest, iterStr, salt, expectedHashB64] = parts;\n const iterations = parseInt(iterStr, 10);\n if (!Number.isFinite(iterations) || iterations <= 0)\n return false;\n const expected = Buffer.from(expectedHashB64, \"base64url\");\n const actual = await new Promise((resolve2, reject) => crypto.pbkdf2(password, salt, iterations, PBKDF2_KEYLEN, digest, (err, key) => err ? reject(err) : resolve2(key)));\n if (actual.length !== expected.length)\n return false;\n return crypto.timingSafeEqual(actual, expected);\n}\nconst empty$5 = () => ({ users: [] });\nfunction createLocalAuthUserStore(usersFilePath) {\n return {\n async findByEmail(email) {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.find((u) => u.email.toLowerCase() === email.toLowerCase()) ?? null;\n },\n async findById(id) {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await readJsonFile(usersFilePath, empty$5());\n return users.map(({ passwordHash: _ph, ...rest }) => rest);\n },\n async createUser(email, password) {\n const file = await readJsonFile(usersFilePath, empty$5());\n if (file.users.some((u) => u.email.toLowerCase() === email.toLowerCase())) {\n throw new ProviderError(`User with email \"${email}\" already exists`, 409);\n }\n const user = {\n id: randomUUID(),\n email,\n passwordHash: password !== null ? await hashPassword(password) : null,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(user);\n await writeJsonFile(usersFilePath, file);\n return user;\n },\n async setDisabled(id, disabled) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const user = file.users.find((u) => u.id === id);\n if (!user)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await writeJsonFile(usersFilePath, file);\n },\n async touchLastLogin(id) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS$1)\n return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await writeJsonFile(usersFilePath, file);\n },\n async deleteUser(id) {\n const file = await readJsonFile(usersFilePath, empty$5());\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n await writeJsonFile(usersFilePath, file);\n }\n };\n}\nfunction paginate(items, opts) {\n const limit = Math.min(Math.max(1, opts?.limit ?? DEFAULT_PAGE_LIMIT), MAX_PAGE_LIMIT);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = items.slice(offset, offset + limit);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < items.length ? String(nextOffset) : void 0\n };\n}\nfunction applyOrder(items, opts, keyFn = (item, field) => item[field]) {\n const field = opts?.orderBy ?? \"createdAt\";\n const dir = opts?.orderDir ?? \"desc\";\n const mul = dir === \"asc\" ? 1 : -1;\n items.sort((a, b) => {\n const av = keyFn(a, field) ?? \"\";\n const bv = keyFn(b, field) ?? \"\";\n if (av < bv)\n return -1 * mul;\n if (av > bv)\n return 1 * mul;\n return 0;\n });\n return items;\n}\nconst SESSION_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nfunction toAuthUser$1(u) {\n return {\n id: u.id,\n email: u.email,\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass LocalPasswordAuth {\n users;\n mintToken;\n constructor(users, mintToken) {\n this.users = users;\n this.mintToken = mintToken;\n }\n async verifyLogin(email, password) {\n if (!this.users)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n const user = await this.users.findByEmail(email);\n if (!user)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n if (user.disabled)\n return { kind: \"failed\", reason: \"disabled\" };\n if (!user.passwordHash || !await verifyPasswordHash(password, user.passwordHash)) {\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n }\n await this.users.touchLastLogin(user.id).catch(() => {\n });\n const auth = toAuthUser$1(user);\n return { kind: \"success\", user: auth, sessionToken: this.mintToken(auth) };\n }\n async createUserWithPassword(email, password) {\n if (!this.users) {\n throw new ProviderError(\"createUserWithPassword requires a users.json backend (DATA_PATH)\", 500);\n }\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n async registerUser(email, password) {\n if (!this.users)\n return null;\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n}\nclass LocalAuthProvider {\n hmacSecret;\n users;\n name = \"Local\";\n passwordAuth;\n constructor(config) {\n this.hmacSecret = config.hmacSecret;\n if (config.usersFilePath) {\n this.users = createLocalAuthUserStore(config.usersFilePath);\n }\n this.passwordAuth = new LocalPasswordAuth(this.users, (user) => signHmacToken(this.hmacSecret, user.id, SESSION_MAX_AGE_MS));\n }\n static fromEnv(env) {\n const hmacSecret = env.SELVA_HMAC_KEY;\n if (!hmacSecret)\n throw new Error(\"Missing required env var: SELVA_HMAC_KEY\");\n return new LocalAuthProvider({\n hmacSecret,\n usersFilePath: env.DATA_PATH ? path.join(env.DATA_PATH, \"auth-users.json\") : void 0\n });\n }\n /** Verify an HMAC session token and return the live user record. */\n async verifyToken(token) {\n const { valid, userId } = verifyHmacToken(token, this.hmacSecret);\n if (!valid)\n return null;\n if (!this.users)\n return null;\n const u = await this.users.findById(userId);\n if (!u || u.disabled)\n return null;\n await this.users.touchLastLogin(u.id).catch(() => {\n });\n return toAuthUser$1(u);\n }\n async touchLastLogin(id) {\n if (!this.users)\n return;\n await this.users.touchLastLogin(id);\n }\n async getUser(id) {\n if (!this.users)\n return null;\n const u = await this.users.findById(id);\n return u ? toAuthUser$1(u) : null;\n }\n async listUsers(opts) {\n if (!this.users)\n return null;\n const users = await this.users.listUsers();\n return paginate(users.map(toAuthUser$1), opts);\n }\n async deleteUser(id) {\n if (!this.users)\n return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n if (!this.users)\n return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n}\nconst EMPTY$1 = { invites: [] };\nclass LocalInviteStore {\n events;\n filePath;\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalInviteStore(env.DATA_PATH, events);\n }\n constructor(dataPath, events = new NoopEventSink()) {\n this.events = events;\n this.filePath = path.join(dataPath, \"invites.json\");\n }\n async load() {\n return readJsonFile(this.filePath, EMPTY$1);\n }\n async save(file) {\n await writeJsonFile(this.filePath, file);\n }\n async create(ctx, invite) {\n const file = await this.load();\n file.invites.push(invite);\n await this.save(file);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { invites } = await this.load();\n const invite = invites.find((i) => i.tokenHash === tokenHash);\n if (!invite)\n return null;\n if (invite.acceptedAt)\n return null;\n if (Date.parse(invite.expiresAt) <= Date.now())\n return null;\n return invite;\n }\n async listByOrg(_ctx, orgId, opts) {\n const { invites } = await this.load();\n const filtered = invites.filter((i) => i.orgId === orgId);\n return paginate(applyOrder(filtered, opts), opts);\n }\n async markAccepted(ctx, id, userId) {\n const file = await this.load();\n const invite = file.invites.find((i) => i.id === id);\n if (!invite || invite.acceptedAt)\n return;\n invite.acceptedAt = (/* @__PURE__ */ new Date()).toISOString();\n invite.acceptedByUserId = userId;\n await this.save(file);\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: invite.id,\n orgId: invite.orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const file = await this.load();\n const target = file.invites.find((i) => i.id === id && !i.acceptedAt);\n if (!target)\n return;\n file.invites = file.invites.filter((i) => i.id !== id || i.acceptedAt);\n await this.save(file);\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: target.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(_ctx, orgId) {\n const file = await this.load();\n const before = file.invites.length;\n file.invites = file.invites.filter((i) => i.orgId !== orgId);\n if (file.invites.length === before)\n return;\n await this.save(file);\n }\n}\nconst ALGO = \"aes-256-gcm\";\nconst IV_BYTES = 12;\nconst TAG_BYTES = 16;\nconst PREFIX = \"enc:v1:\";\nfunction isEncryptedSecret(value) {\n return value.startsWith(PREFIX);\n}\nfunction encryptSecret(plaintext, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (isEncryptedSecret(plaintext)) {\n throw new Error(\"Refusing to encrypt a value that is already encrypted\");\n }\n const iv = randomBytes(IV_BYTES);\n const cipher = createCipheriv(ALGO, key, iv);\n const ciphertext = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n const tag = cipher.getAuthTag();\n return PREFIX + Buffer.concat([iv, tag, ciphertext]).toString(\"base64\");\n}\nfunction decryptSecret(envelope, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (!isEncryptedSecret(envelope)) {\n throw new Error(\"Value is not an encrypted secret envelope\");\n }\n const buf = Buffer.from(envelope.slice(PREFIX.length), \"base64\");\n const iv = buf.subarray(0, IV_BYTES);\n const tag = buf.subarray(IV_BYTES, IV_BYTES + TAG_BYTES);\n const ciphertext = buf.subarray(IV_BYTES + TAG_BYTES);\n const decipher = createDecipheriv(ALGO, key, iv);\n decipher.setAuthTag(tag);\n return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString(\"utf8\");\n}\nfunction decodeSecretKey(raw) {\n if (/^[0-9a-fA-F]{64}$/.test(raw))\n return Buffer.from(raw, \"hex\");\n const buf = Buffer.from(raw, \"base64\");\n if (buf.length === 32)\n return buf;\n throw new Error(`SELVA_AT_REST_KEY must be 32 bytes encoded as 64-char hex or base64. Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`);\n}\nconst EMPTY = { servers: [], orgDefaults: {} };\nclass LocalComputeServerStore {\n configFilePath;\n secretKey;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n if (!env.SELVA_AT_REST_KEY) {\n throw new Error(`Missing required env var: SELVA_AT_REST_KEY (32-byte hex or base64). Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`);\n }\n return new LocalComputeServerStore(path.join(env.DATA_PATH, \"compute.config.json\"), decodeSecretKey(env.SELVA_AT_REST_KEY));\n }\n constructor(configFilePath, secretKey) {\n this.configFilePath = configFilePath;\n this.secretKey = secretKey;\n }\n async readAll() {\n const raw = await readJsonFile(this.configFilePath, EMPTY);\n return {\n servers: raw.servers ?? [],\n defaultServerId: raw.defaultServerId,\n orgDefaults: raw.orgDefaults ?? {}\n };\n }\n /**\n * Per-row tolerant decrypt. A row whose ciphertext can't be authenticated\n * under the current `SELVA_AT_REST_KEY` is returned with `apiKey: undefined`\n * and a warning logged once. The page that loaded the config keeps\n * rendering; solves against that server will fail later when Rhino.Compute\n * rejects the missing key.\n *\n * Boot-time `verifySecrets()` is the strict counterpart — call that from\n * the app entrypoint to refuse to start when this state is detected.\n *\n * Plaintext-on-disk is still hard-fail. That state is never produced by\n * the store itself (every write goes through `encryptApiKeys`), so seeing\n * it means someone hand-edited the file with a real secret in plaintext —\n * which is a security issue we should surface loudly, not paper over.\n */\n decryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey)\n return s;\n if (!isEncryptedSecret(s.apiKey)) {\n throw new Error(`compute.config.json contains an unencrypted apiKey for server \"${s.label}\" (${s.id}). Re-enter the key via /admin/compute so it is stored encrypted.`);\n }\n try {\n return { ...s, apiKey: decryptSecret(s.apiKey, this.secretKey) };\n } catch (cause) {\n console.warn(`[selva] Could not decrypt apiKey for compute server \"${s.label}\" (${s.id}). The stored ciphertext does not match the current SELVA_AT_REST_KEY. This server will be returned without an apiKey; solves against it will fail. Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY. See docs/Troubleshooting.md.`, cause);\n return { ...s, apiKey: void 0 };\n }\n });\n }\n /**\n * Boot-time integrity check. Reads every server row and attempts to\n * decrypt each encrypted `apiKey`. Returns a structured report — does NOT\n * throw. The caller decides what to do (refuse boot, log + degrade, etc.).\n *\n * Use this from app startup (`hooks.server.ts`) so a key mismatch fails\n * loudly at deploy time instead of as a blank page when a user first hits\n * a route that loads compute config.\n */\n async verifySecrets() {\n const all = await this.readAll();\n const failures = [];\n let plaintextFound = false;\n for (const s of all.servers) {\n if (!s.apiKey)\n continue;\n if (!isEncryptedSecret(s.apiKey)) {\n plaintextFound = true;\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"plaintext_on_disk\"\n });\n continue;\n }\n try {\n decryptSecret(s.apiKey, this.secretKey);\n } catch (cause) {\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"key_mismatch\",\n cause: cause instanceof Error ? cause.message : String(cause)\n });\n }\n }\n return { ok: failures.length === 0, failures, plaintextFound };\n }\n encryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey)\n return s;\n if (isEncryptedSecret(s.apiKey))\n return s;\n return { ...s, apiKey: encryptSecret(s.apiKey, this.secretKey) };\n });\n }\n async getConfig(_ctx) {\n const all = await this.readAll();\n return {\n servers: this.decryptApiKeys(all.servers),\n defaultServerId: all.defaultServerId,\n orgDefaults: all.orgDefaults\n };\n }\n async savePlatformServers(_ctx, servers, defaultServerId) {\n const all = await this.readAll();\n const orgRows = all.servers.filter(isOrgServer);\n const platformRows = this.encryptApiKeys(servers.filter(isPlatformServer));\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...orgRows],\n defaultServerId,\n orgDefaults: all.orgDefaults\n });\n }\n async saveOrgServers(_ctx, orgId, servers, defaultServerId) {\n const all = await this.readAll();\n const platformRows = all.servers.filter(isPlatformServer);\n const otherOrgRows = all.servers.filter((s) => isOrgServer(s) && s.ownerOrgId !== orgId);\n const thisOrgRows = this.encryptApiKeys(servers.filter((_s) => true).map((s) => isOrgServer(s) ? { ...s, ownerOrgId: orgId } : (\n // Coerce — caller passed something with the wrong/missing scope.\n { ...s, scope: \"org\", ownerOrgId: orgId }\n )));\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (defaultServerId === null) {\n delete orgDefaults[orgId];\n } else if (typeof defaultServerId === \"string\") {\n orgDefaults[orgId] = defaultServerId;\n }\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...otherOrgRows, ...thisOrgRows],\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n async setOrgDefault(_ctx, orgId, serverId) {\n const all = await this.readAll();\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (serverId === null) {\n delete orgDefaults[orgId];\n } else {\n orgDefaults[orgId] = serverId;\n }\n await writeJsonFile(this.configFilePath, { ...all, orgDefaults });\n }\n async deleteByOrg(_ctx, orgId) {\n const all = await this.readAll();\n const remaining = all.servers.filter((s) => !(isOrgServer(s) && s.ownerOrgId === orgId));\n const cleaned = remaining.map((s) => {\n if (!isPlatformServer(s))\n return s;\n if (s.sharedWith === \"all\")\n return s;\n if (!s.sharedWith.includes(orgId))\n return s;\n const next = {\n ...s,\n sharedWith: s.sharedWith.filter((id) => id !== orgId)\n };\n return next;\n });\n const orgDefaults = { ...all.orgDefaults ?? {} };\n const hadDefault = orgId in orgDefaults;\n delete orgDefaults[orgId];\n const changed = cleaned.length !== all.servers.length || hadDefault || cleaned.some((c, i) => c !== all.servers[i]);\n if (!changed)\n return;\n await writeJsonFile(this.configFilePath, {\n servers: cleaned,\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n}\nconst empty$4 = () => ({ grants: [] });\nclass LocalPlatformProjectGrantStore {\n filePath;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformProjectGrantStore(path.join(env.DATA_PATH, \"platform-project-grants.json\"));\n }\n constructor(filePath) {\n this.filePath = filePath;\n }\n async read() {\n return readJsonFile(this.filePath, empty$4());\n }\n async write(data) {\n await writeJsonFile(this.filePath, data);\n }\n async listByProject(_ctx, projectId) {\n const { grants } = await this.read();\n return grants.filter((g) => g.projectId === projectId);\n }\n async create(_ctx, grant) {\n const data = await this.read();\n if (data.grants.some((g) => g.id === grant.id)) {\n throw new ProviderError(`Grant '${grant.id}' already exists`, 409);\n }\n const duplicate = data.grants.find((g) => g.projectId === grant.projectId && g.granteeType === grant.granteeType && g.granteeId === grant.granteeId);\n if (duplicate) {\n throw new ProviderError(`A grant for this ${grant.granteeType} already exists on this project`, 409);\n }\n data.grants.push(grant);\n await this.write(data);\n }\n async delete(_ctx, id) {\n const data = await this.read();\n const idx = data.grants.findIndex((g) => g.id === id);\n if (idx === -1)\n throw new ProviderError(`Grant '${id}' not found`, 404);\n data.grants.splice(idx, 1);\n await this.write(data);\n }\n async deleteByProject(_ctx, projectId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => g.projectId !== projectId);\n if (data.grants.length !== before)\n await this.write(data);\n }\n async deleteByGranteeOrg(_ctx, orgId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => !(g.granteeType === \"org\" && g.granteeId === orgId));\n if (data.grants.length !== before)\n await this.write(data);\n }\n}\nfunction isLive$1(row) {\n return row.deletedAt == null;\n}\nclass LocalOrgStoreLoader {\n storePath;\n store = null;\n loading = null;\n constructor(dataPath) {\n this.storePath = path.join(dataPath, \"local-org.json\");\n }\n async get() {\n if (this.store)\n return this.store;\n this.loading ??= readJsonFile(this.storePath, {\n orgs: [],\n projects: [],\n orgMembers: [],\n projectMembers: []\n }).then((data) => {\n this.store = data;\n this.loading = null;\n return data;\n });\n return this.loading;\n }\n async write(store) {\n this.store = store;\n await writeJsonFile(this.storePath, store);\n }\n}\nclass LocalOrgStore {\n loader;\n events;\n invites;\n computeServer;\n grants;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalOrgStore({\n loader: new LocalOrgStoreLoader(env.DATA_PATH),\n invites: LocalInviteStore.fromEnv(env),\n computeServer: LocalComputeServerStore.fromEnv(env),\n grants: LocalPlatformProjectGrantStore.fromEnv(env)\n });\n }\n constructor(opts) {\n this.loader = opts.loader;\n this.invites = opts.invites;\n this.computeServer = opts.computeServer;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n async listOrgs(_ctx, opts) {\n const { orgs } = await this.loader.get();\n return paginate(applyOrder(orgs.filter(isLive$1), opts), opts);\n }\n async getOrg(_ctx, id) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.id === id);\n return o && isLive$1(o) ? o : null;\n }\n async getOrgBySlug(_ctx, slug) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.slug === slug);\n return o && isLive$1(o) ? o : null;\n }\n async createOrg(ctx, org) {\n const store = await this.loader.get();\n if (store.orgs.some((o) => o.id === org.id && isLive$1(o))) {\n throw new ProviderError(`Org '${org.id}' already exists`, 409);\n }\n if (store.orgs.some((o) => o.slug === org.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${org.slug}' already in use`, 409);\n }\n store.orgs.push({ ...org, deletedAt: null });\n const now = (/* @__PURE__ */ new Date()).toISOString();\n store.orgMembers.push({\n orgId: org.id,\n userId: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joinedAt: now,\n ...auditUpdate(ctx, org.ownerId),\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1)\n throw new ProviderError(`Org '${id}' not found`, 404);\n if (patch.slug && patch.slug !== store.orgs[idx].slug) {\n if (store.orgs.some((o) => o.id !== id && o.slug === patch.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${patch.slug}' already in use`, 409);\n }\n }\n store.orgs[idx] = {\n ...store.orgs[idx],\n ...patch,\n ...auditUpdate(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId)\n };\n await this.loader.write(store);\n }\n async deleteOrg(ctx, id) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1)\n throw new ProviderError(`Org '${id}' not found`, 404);\n const stamp = auditSoftDelete(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId);\n store.orgs[idx] = { ...store.orgs[idx], ...stamp };\n store.orgMembers = store.orgMembers.map((m) => m.orgId === id && isLive$1(m) ? { ...m, ...stamp } : m);\n const orgProjectIds = new Set(store.projects.filter((p) => p.orgId === id && isLive$1(p)).map((p) => p.id));\n store.projects = store.projects.map((p) => p.orgId === id && isLive$1(p) ? { ...p, ...stamp } : p);\n store.projectMembers = store.projectMembers.map((m) => orgProjectIds.has(m.projectId) && isLive$1(m) ? { ...m, ...stamp } : m);\n await this.loader.write(store);\n await this.invites.deleteByOrg(ctx, id);\n await this.computeServer.deleteByOrg(ctx, id);\n for (const projectId of orgProjectIds) {\n await this.grants.deleteByProject(ctx, projectId);\n }\n await this.grants.deleteByGranteeOrg(ctx, id);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n async listOrgMembers(_ctx, orgId, opts) {\n const { orgMembers } = await this.loader.get();\n return paginate(orgMembers.filter((m) => m.orgId === orgId && isLive$1(m)), opts);\n }\n async getOrgMember(_ctx, orgId, userId) {\n const { orgMembers } = await this.loader.get();\n const m = orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId);\n return m && isLive$1(m) ? m : null;\n }\n async findUserMembership(_ctx, userId) {\n const store = await this.loader.get();\n const member = store.orgMembers.find((m) => m.userId === userId && isLive$1(m));\n if (!member)\n return null;\n const org = store.orgs.find((o) => o.id === member.orgId);\n if (!org || !isLive$1(org))\n return null;\n return { org, member };\n }\n async addOrgMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.orgMembers.find((m) => m.orgId === member.orgId && m.userId === member.userId);\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n store.orgMembers.push({ ...member, deletedAt: null });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.role = role;\n m.permissions = [...DEFAULT_ORG_PERMISSIONS[role]];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.permissions = [...permissions];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m)\n return;\n const stamp = auditSoftDelete(ctx, m.updatedBy);\n Object.assign(m, stamp);\n const projectIdsInOrg = new Set(store.projects.filter((p) => p.orgId === orgId).map((p) => p.id));\n store.projectMembers = store.projectMembers.map((pm) => pm.userId === userId && projectIdsInOrg.has(pm.projectId) && isLive$1(pm) ? { ...pm, ...stamp } : pm);\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction isLive(row) {\n return row.deletedAt == null;\n}\nclass LocalProjectStore {\n loader;\n events;\n grants;\n constructor(opts) {\n this.loader = opts.loader;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n async listProjects(_ctx, orgId, opts) {\n const { projects } = await this.loader.get();\n return paginate(applyOrder(projects.filter((p) => p.orgId === orgId && isLive(p)), opts), opts);\n }\n async getProject(_ctx, id) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.id === id);\n return p && isLive(p) ? p : null;\n }\n async getProjectBySlug(_ctx, orgId, slug) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.orgId === orgId && p2.slug === slug);\n return p && isLive(p) ? p : null;\n }\n async createProject(ctx, project) {\n const store = await this.loader.get();\n if (!store.orgs.some((o) => o.id === project.orgId && isLive(o))) {\n throw new ProviderError(`Org '${project.orgId}' not found`, 404);\n }\n if (store.projects.some((p) => p.id === project.id && isLive(p))) {\n throw new ProviderError(`Project '${project.id}' already exists`, 409);\n }\n const nameKey = project.name.toLowerCase();\n if (store.projects.some((p) => p.orgId === project.orgId && isLive(p) && p.name.toLowerCase() === nameKey)) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n if (store.projects.some((p) => p.orgId === project.orgId && isLive(p) && p.slug === project.slug)) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n store.projects.push({ ...project, deletedAt: null });\n store.projectMembers.push({\n projectId: project.id,\n userId: project.ownerId,\n role: \"owner\",\n joinedAt: project.createdAt,\n updatedAt: project.createdAt,\n updatedBy: project.ownerId,\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const current = store.projects[idx];\n if (patch.name && patch.name.toLowerCase() !== current.name.toLowerCase()) {\n const nameKey = patch.name.toLowerCase();\n if (store.projects.some((p) => p.orgId === current.orgId && p.id !== id && isLive(p) && p.name.toLowerCase() === nameKey)) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n }\n if (patch.slug && patch.slug !== current.slug) {\n if (store.projects.some((p) => p.orgId === current.orgId && p.slug === patch.slug && p.id !== id && isLive(p))) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n }\n store.projects[idx] = {\n ...current,\n ...patch,\n ...auditUpdate(ctx, current.updatedBy ?? current.ownerId)\n };\n await this.loader.write(store);\n }\n async deleteProject(ctx, id) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const stamp = auditSoftDelete(ctx, store.projects[idx].updatedBy ?? store.projects[idx].ownerId);\n store.projects[idx] = { ...store.projects[idx], ...stamp };\n store.projectMembers = store.projectMembers.map((m) => m.projectId === id && isLive(m) ? { ...m, ...stamp } : m);\n await this.loader.write(store);\n await this.grants.deleteByProject(ctx, id);\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n async listProjectMembers(_ctx, projectId, opts) {\n const { projectMembers } = await this.loader.get();\n return paginate(projectMembers.filter((m) => m.projectId === projectId && isLive(m)), opts);\n }\n async getProjectMember(_ctx, projectId, userId) {\n const { projectMembers } = await this.loader.get();\n const m = projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId);\n return m && isLive(m) ? m : null;\n }\n async addProjectMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.projectMembers.find((m) => m.projectId === member.projectId && m.userId === member.userId);\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n const stamp = auditUpdate(ctx, member.userId);\n store.projectMembers.push({\n ...member,\n updatedAt: member.updatedAt ?? stamp.updatedAt,\n updatedBy: member.updatedBy ?? stamp.updatedBy,\n deletedAt: null\n });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const store = await this.loader.get();\n const m = store.projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2));\n if (!m)\n throw new ProviderError(`Project member '${userId}' not found`, 404);\n m.role = role;\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const store = await this.loader.get();\n const m = store.projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2));\n if (!m)\n return;\n Object.assign(m, auditSoftDelete(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nconst empty$3 = () => ({ definitions: {}, definitionVersions: {} });\nclass LocalDefinitionStore {\n configPath;\n events;\n projectProvider;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalDefinitionStore(env.DATA_PATH);\n }\n constructor(definitionsPath, projectProvider, events = new NoopEventSink()) {\n this.configPath = path.join(definitionsPath, \"definitions-config.json\");\n this.projectProvider = projectProvider;\n this.events = events;\n }\n setProjectProvider(projectProvider) {\n this.projectProvider = projectProvider;\n }\n async readConfig() {\n return readJsonFile(this.configPath, empty$3());\n }\n live(record) {\n return Boolean(record && record.deletedAt == null);\n }\n async writeConfig(config) {\n await writeJsonFile(this.configPath, config);\n }\n sortedRecords(records, opts) {\n const defaulted = {\n ...opts,\n orderBy: opts?.orderBy ?? \"name\",\n orderDir: opts?.orderDir ?? \"asc\"\n };\n return applyOrder([...records], defaulted, (r, field) => {\n if (field === \"name\")\n return r.displayName.toLowerCase();\n if (field === \"solveCount\")\n return r.solveCount ?? 0;\n return r[field];\n });\n }\n visibleRecords(records, opts) {\n const filtered = records.filter((r) => r?.displayName && this.live(r));\n if (opts?.statuses?.length) {\n const allowed = new Set(opts.statuses);\n return filtered.filter((r) => allowed.has(r.status));\n }\n return filtered.filter((r) => {\n if (r.status === \"pending\" && !opts?.includePending)\n return false;\n if (r.status === \"archived\" && !opts?.includeArchived)\n return false;\n return true;\n });\n }\n async list(_ctx, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(Object.values(config.definitions), opts);\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listByProject(_ctx, projectId, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(Object.values(config.definitions).filter((r) => r?.projectId === projectId), opts);\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listPublic(ctx, opts) {\n if (!this.projectProvider) {\n return this.list(ctx, opts);\n }\n const config = await this.readConfig();\n const records = Object.values(config.definitions).filter((r) => Boolean(r?.displayName && this.live(r)));\n const projectIds = Array.from(new Set(records.map((r) => r.projectId)));\n const projects = await Promise.all(projectIds.map((id) => this.projectProvider.getProject(ctx, id)));\n const publicProjectIds = new Set(projects.filter((p) => p !== null && p.visibility === \"public\" && (!opts?.orgId || p.orgId === opts.orgId)).map((p) => p.id));\n const publicRecords = this.visibleRecords(records.filter((r) => publicProjectIds.has(r.projectId)), opts);\n return paginate(this.sortedRecords(publicRecords, opts), opts);\n }\n async get(_ctx, guid) {\n const config = await this.readConfig();\n const r = config.definitions[guid];\n return this.live(r) ? r : null;\n }\n async create(ctx, record) {\n const config = await this.readConfig();\n const actor = ctx.userId || record.ownerId;\n config.definitions[record.guid] = {\n ...record,\n createdBy: record.createdBy || actor,\n updatedBy: record.updatedBy || actor,\n liveVersionId: record.liveVersionId ?? null,\n draftVersionId: record.draftVersionId ?? null,\n deletedAt: null\n };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n throw new ProviderError(`Definition '${guid}' not found`, 404);\n const clearable = (v) => v === null ? void 0 : v;\n config.definitions[guid] = {\n ...existing,\n ...patch.displayName !== void 0 && { displayName: patch.displayName },\n ...patch.description !== void 0 && {\n description: clearable(patch.description)\n },\n ...patch.category !== void 0 && {\n category: clearable(patch.category)\n },\n ...patch.tags !== void 0 && { tags: clearable(patch.tags) },\n ...patch.coverImage !== void 0 && {\n coverImage: clearable(patch.coverImage)\n },\n ...patch.projectId !== void 0 && { projectId: patch.projectId },\n ...patch.computeServerId !== void 0 && {\n computeServerId: clearable(patch.computeServerId)\n },\n ...patch.status !== void 0 && { status: patch.status },\n ...patch.ownerId !== void 0 && { ownerId: patch.ownerId },\n ...auditUpdate(ctx, existing.updatedBy ?? existing.ownerId)\n };\n await this.writeConfig(config);\n }\n async delete(ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n return;\n Object.assign(existing, auditSoftDelete(ctx, existing.updatedBy ?? existing.ownerId));\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async incrementSolveCount(_ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing))\n return;\n existing.solveCount = (existing.solveCount ?? 0) + 1;\n existing.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeConfig(config);\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const config = await this.readConfig();\n const parent = config.definitions[version.definitionId];\n if (!this.live(parent)) {\n throw new ProviderError(`Definition '${version.definitionId}' not found`, 404);\n }\n if (config.definitionVersions[version.id]) {\n throw new ProviderError(`Version '${version.id}' already exists`, 409);\n }\n config.definitionVersions[version.id] = { ...version };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(_ctx, definitionId, opts) {\n const config = await this.readConfig();\n const parent = config.definitions[definitionId];\n if (!this.live(parent))\n return paginate([], opts);\n const rows = Object.values(config.definitionVersions).filter((v) => v.definitionId === definitionId).sort((a, b) => b.versionNumber - a.versionNumber);\n return paginate(rows, opts);\n }\n async getVersion(_ctx, versionId) {\n const config = await this.readConfig();\n return config.definitionVersions[versionId] ?? null;\n }\n async deleteVersion(ctx, versionId) {\n const config = await this.readConfig();\n const version = config.definitionVersions[versionId];\n if (!version)\n return;\n const parent = config.definitions[version.definitionId];\n if (parent && (parent.liveVersionId === versionId || parent.draftVersionId === versionId)) {\n throw new ProviderError(`Version '${versionId}' is referenced by liveVersionId or draftVersionId`, 409);\n }\n delete config.definitionVersions[versionId];\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repoint(\"live\", ctx, definitionId, versionId);\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repoint(\"draft\", ctx, definitionId, versionId);\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record))\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n record.liveVersionId = versionId;\n record.draftVersionId = versionId;\n record.status = \"draft\";\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n }\n async repoint(channel, ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record))\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n if (channel === \"live\")\n record.liveVersionId = versionId;\n else\n record.draftVersionId = versionId;\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n if (channel === \"live\") {\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n }\n}\nconst empty$2 = () => ({ links: {} });\nclass LocalShareLinkStore {\n definitionProvider;\n events;\n configFilePath;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalShareLinkStore({\n filePath: path.join(env.DATA_PATH, \"share-links.json\")\n });\n }\n constructor(opts) {\n this.configFilePath = opts.filePath;\n this.events = opts.events ?? new NoopEventSink();\n }\n /**\n * Wire the definition store so token resolution can check the parent\n * definition's `deletedAt` (Permissions.md §7 cascade contract). Mirrors\n * Supabase, which performs the equivalent JOIN. Optional: when unset, the\n * store falls back to the local-only revoke check; the route layer in\n * the selva app does the parent lookup as a safety net either way.\n */\n setDefinitionProvider(definitions) {\n this.definitionProvider = definitions;\n }\n async readAll() {\n return readJsonFile(this.configFilePath, empty$2());\n }\n async writeAll(data) {\n await writeJsonFile(this.configFilePath, data);\n }\n isLive(l) {\n return Boolean(l && l.revokedAt == null);\n }\n async create(ctx, link) {\n const all = await this.readAll();\n if (all.links[link.id]) {\n throw new ProviderError(`Share link '${link.id}' already exists`, 409);\n }\n all.links[link.id] = { ...link, revokedAt: null };\n await this.writeAll(all);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(_ctx, definitionId, opts) {\n const all = await this.readAll();\n const rows = Object.values(all.links).filter((l) => l.definitionId === definitionId && this.isLive(l)).sort((a, b) => b.createdAt.localeCompare(a.createdAt));\n return paginate(rows, opts);\n }\n async getById(_ctx, id) {\n const all = await this.readAll();\n return all.links[id] ?? null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const all = await this.readAll();\n const found = Object.values(all.links).find((l) => l.tokenHash === tokenHash);\n if (!this.isLive(found))\n return null;\n if (this.definitionProvider) {\n const parent = await this.definitionProvider.get(SYSTEM_CONTEXT, found.definitionId);\n if (!parent)\n return null;\n }\n return found;\n }\n async revoke(ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l))\n return;\n l.revokedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeAll(all);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l))\n return null;\n if (l.maxSolves != null && l.solveCount >= l.maxSolves)\n return null;\n l.solveCount += 1;\n await this.writeAll(all);\n return l.solveCount;\n }\n}\nconst MAX_RECENT_RUNS$1 = 20;\nconst empty$1 = () => ({ users: [] });\nfunction emptyRow(userId) {\n return {\n userId,\n platformPermissions: [],\n starredDefinitions: [],\n recentRuns: []\n };\n}\nfunction createLocalUserDataStore(filePath) {\n async function findOrThrow(userId) {\n const file = await readJsonFile(filePath, empty$1());\n const row = file.users.find((u) => u.userId === userId);\n if (!row)\n throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n return { file, row };\n }\n return {\n async ensure(userId) {\n const file = await readJsonFile(filePath, empty$1());\n if (file.users.some((u) => u.userId === userId))\n return;\n file.users.push(emptyRow(userId));\n await writeJsonFile(filePath, file);\n },\n async findById(userId) {\n const { users } = await readJsonFile(filePath, empty$1());\n return users.find((u) => u.userId === userId) ?? null;\n },\n async listAll() {\n const { users } = await readJsonFile(filePath, empty$1());\n return users;\n },\n async updatePermissions(userId, permissions) {\n const { file, row } = await findOrThrow(userId);\n row.platformPermissions = permissions;\n await writeJsonFile(filePath, file);\n },\n async updateDisplayName(userId, displayName) {\n const { file, row } = await findOrThrow(userId);\n if (displayName === void 0) {\n delete row.displayName;\n } else {\n row.displayName = displayName;\n }\n await writeJsonFile(filePath, file);\n },\n async starDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n if (!row.starredDefinitions.includes(definitionId)) {\n row.starredDefinitions.push(definitionId);\n await writeJsonFile(filePath, file);\n }\n },\n async unstarDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n row.starredDefinitions = row.starredDefinitions.filter((d) => d !== definitionId);\n await writeJsonFile(filePath, file);\n },\n async recordRun(userId, run) {\n const { file, row } = await findOrThrow(userId);\n row.recentRuns = [\n run,\n ...row.recentRuns.filter((r) => r.definitionId !== run.definitionId)\n ].slice(0, MAX_RECENT_RUNS$1);\n await writeJsonFile(filePath, file);\n },\n async deleteUser(userId) {\n const file = await readJsonFile(filePath, empty$1());\n const before = file.users.length;\n file.users = file.users.filter((u) => u.userId !== userId);\n if (file.users.length === before) {\n throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n }\n await writeJsonFile(filePath, file);\n }\n };\n}\nfunction toProfile(u) {\n return {\n userId: u.userId,\n displayName: u.displayName,\n starredDefinitions: u.starredDefinitions ?? [],\n recentRuns: u.recentRuns ?? []\n };\n}\nclass LocalUserProfileProvider {\n data;\n constructor(userDataFilePath) {\n this.data = createLocalUserDataStore(userDataFilePath);\n }\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalUserProfileProvider(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n async getProfile(ctx, userId) {\n assertCanAccess$1(ctx, userId);\n const u = await this.data.findById(userId);\n return u ? toProfile(u) : null;\n }\n async getProfiles(_ctx, userIds) {\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n return all.filter((u) => wanted.has(u.userId)).map(toProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess$1(ctx, userId);\n try {\n if (patch.displayName !== void 0) {\n await this.data.updateDisplayName(userId, patch.displayName);\n }\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.starDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.unstarDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.recordRun(userId, run);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n}\nfunction assertCanAccess$1(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nclass LocalPlatformPermissionStore {\n data;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformPermissionStore(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n constructor(userDataFilePath) {\n this.data = createLocalUserDataStore(userDataFilePath);\n }\n async getFor(ctx, userId) {\n assertCanRead$1(ctx, userId);\n const row = await this.data.findById(userId);\n return row?.platformPermissions ?? [];\n }\n async getForBatch(ctx, userIds) {\n assertCanReadBatch(ctx);\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n const out = /* @__PURE__ */ new Map();\n for (const u of all) {\n if (wanted.has(u.userId))\n out.set(u.userId, u.platformPermissions ?? []);\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin$1(ctx);\n const target = await this.data.findById(userId);\n if (!target)\n return \"not_found\";\n const wasAdmin = target.platformPermissions.includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherAdmins(userId);\n if (others === 0)\n return \"last_admin\";\n }\n try {\n await this.data.updatePermissions(userId, [...permissions]);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async hasInstanceAdmin(_ctx) {\n const all = await this.data.listAll();\n return all.some((u) => u.platformPermissions.includes(\"instance_admin\"));\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherAdmins(excludeUserId);\n }\n async countOtherAdmins(excludeUserId) {\n const all = await this.data.listAll();\n return all.filter((u) => u.userId !== excludeUserId && u.platformPermissions.includes(\"instance_admin\")).length;\n }\n}\nfunction assertCanRead$1(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin$1(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction assertCanReadBatch(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n if (hasPermission(ctx, \"manage_instance_users\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin or manage_instance_users required\", 403);\n}\nclass LocalDataProvider {\n orgs;\n projects;\n definitions;\n computeServer;\n invites;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n userData;\n constructor(stores, userData) {\n this.orgs = stores.orgs;\n this.projects = stores.projects;\n this.definitions = stores.definitions;\n this.computeServer = stores.computeServer;\n this.invites = stores.invites;\n this.shareLinks = stores.shareLinks;\n this.userProfile = stores.userProfile;\n this.permissions = stores.permissions;\n this.platformProjectGrants = stores.platformProjectGrants;\n this.userData = userData;\n }\n /**\n * Idempotently register a user in the data layer. Called from\n * `hooks.server.ts` on every authed request — the local equivalent of\n * Supabase's `handle_new_auth_user` trigger. After this completes the\n * user has an empty row in `user-data.json` that the permissions and\n * profile stores can read and update.\n *\n * `ctx` is unused — registration runs as a system operation regardless of\n * the calling user. Argument is kept for interface symmetry with adapters\n * that need it.\n */\n async ensureUser(_ctx, userId) {\n await this.userData.ensure(userId);\n }\n /**\n * Cascade hook called after the auth provider deletes a user. Removes the\n * matching `user-data.json` row so the data layer doesn't accumulate\n * orphans. Tolerates missing rows.\n */\n async onUserDeleted(_ctx, userId) {\n try {\n await this.userData.deleteUser(userId);\n } catch {\n }\n }\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n const dataPath = env.DATA_PATH;\n const userDataFilePath = path.join(dataPath, \"user-data.json\");\n const loader = new LocalOrgStoreLoader(dataPath);\n const platformProjectGrants = LocalPlatformProjectGrantStore.fromEnv(env);\n const invites = LocalInviteStore.fromEnv(env, events);\n const computeServer = LocalComputeServerStore.fromEnv(env);\n const projects = new LocalProjectStore({ loader, grants: platformProjectGrants, events });\n const definitions = new LocalDefinitionStore(dataPath, void 0, events);\n const shareLinks = new LocalShareLinkStore({\n filePath: path.join(dataPath, \"share-links.json\"),\n events\n });\n const orgs = new LocalOrgStore({\n loader,\n invites,\n computeServer,\n grants: platformProjectGrants,\n events\n });\n definitions.setProjectProvider(projects);\n shareLinks.setDefinitionProvider(definitions);\n const userData = createLocalUserDataStore(userDataFilePath);\n return new LocalDataProvider({\n orgs,\n projects,\n definitions,\n computeServer,\n invites,\n shareLinks,\n userProfile: new LocalUserProfileProvider(userDataFilePath),\n permissions: new LocalPlatformPermissionStore(userDataFilePath),\n platformProjectGrants\n }, userData);\n }\n}\nclass LocalStorageProvider {\n basePath;\n publicUrlBase;\n static fromEnv(env) {\n if (!env.DATA_PATH)\n throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalStorageProvider(env.DATA_PATH, \"/api/files\");\n }\n constructor(basePath, publicUrlBase = \"/api/files\") {\n this.basePath = basePath;\n this.publicUrlBase = publicUrlBase;\n }\n /**\n * Resolve a caller-provided path under basePath, rejecting anything that\n * would escape the root. Last line of defense against traversal — while\n * platform-side helpers (definitionPaths) also assert safe keys, this\n * adapter is reached by any IStorageProvider caller.\n */\n resolvePath(storagePath) {\n const base = path.resolve(this.basePath);\n const full = path.resolve(base, storagePath);\n if (full !== base && !full.startsWith(base + path.sep)) {\n throw new Error(`Path escapes base: ${storagePath}`);\n }\n return full;\n }\n async get(storagePath) {\n try {\n const buffer = await fs.readFile(this.resolvePath(storagePath));\n return new Uint8Array(buffer);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return null;\n throw err;\n }\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const fullPath = this.resolvePath(transcoded.path);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, Buffer.from(transcoded.data));\n }\n async delete(storagePath) {\n try {\n await fs.unlink(this.resolvePath(storagePath));\n } catch (err) {\n if (err.code !== \"ENOENT\")\n throw err;\n }\n }\n async deletePrefix(prefix) {\n const fullPath = this.resolvePath(prefix);\n await fs.rm(fullPath, { recursive: true, force: true });\n }\n getPublicUrl(storagePath) {\n return `${this.publicUrlBase}/${storagePath}`;\n }\n}\nclass SupabaseStorageProvider {\n client;\n publicBucket;\n privateBucket;\n publicBaseUrl;\n privateUrlPrefix;\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n return new SupabaseStorageProvider({\n supabaseUrl,\n serviceRoleKey,\n publicBucket: env.SUPABASE_PUBLIC_BUCKET,\n privateBucket: env.SUPABASE_PRIVATE_BUCKET,\n privateUrlPrefix: env.SUPABASE_PRIVATE_URL_PREFIX\n });\n }\n constructor(config) {\n this.client = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.publicBucket = config.publicBucket ?? \"selva-public\";\n this.privateBucket = config.privateBucket ?? \"selva-private\";\n this.publicBaseUrl = `${config.supabaseUrl.replace(/\\/$/, \"\")}/storage/v1/object/public/${this.publicBucket}`;\n this.privateUrlPrefix = (config.privateUrlPrefix ?? \"/api/files\").replace(/\\/$/, \"\");\n }\n /**\n * Route a storage path to a bucket. Any `.gh`/`.ghx` source file is\n * private — confidentiality is determined by extension, not location, so\n * a path-scheme rename (e.g. `definition.gh` → `versions/v1.gh`) can't\n * silently move source files into the public bucket. Everything else\n * (covers, archives, thumbnails) is public.\n */\n bucketFor(storagePath) {\n return /\\.(gh|ghx)$/i.test(storagePath) ? this.privateBucket : this.publicBucket;\n }\n async get(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { data, error } = await this.client.storage.from(bucket).download(storagePath);\n if (error) {\n const msg = error.message ?? \"\";\n if (/not found/i.test(msg) || /no such key/i.test(msg))\n return null;\n throw error;\n }\n const buffer = await data.arrayBuffer();\n return new Uint8Array(buffer);\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const bucket = this.bucketFor(transcoded.path);\n const { error } = await this.client.storage.from(bucket).upload(transcoded.path, transcoded.data, {\n contentType: transcoded.contentType,\n upsert: true\n });\n if (error)\n throw error;\n }\n async delete(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { error } = await this.client.storage.from(bucket).remove([storagePath]);\n if (error)\n throw error;\n }\n async deletePrefix(prefix) {\n await Promise.all([\n this.deletePrefixInBucket(this.publicBucket, prefix),\n this.deletePrefixInBucket(this.privateBucket, prefix)\n ]);\n }\n async deletePrefixInBucket(bucket, prefix) {\n const normalized = prefix.replace(/\\/+$/, \"\");\n const keys = await this.listAllKeys(bucket, normalized);\n if (keys.length === 0)\n return;\n for (let i = 0; i < keys.length; i += 1e3) {\n const slice = keys.slice(i, i + 1e3);\n const { error } = await this.client.storage.from(bucket).remove(slice);\n if (error)\n throw error;\n }\n }\n /**\n * Recursively list every key under a prefix. `storage-js`'s `list` API\n * only returns the immediate children of a \"folder\", so we DFS.\n */\n async listAllKeys(bucket, prefix) {\n const out = [];\n const stack = [prefix];\n while (stack.length > 0) {\n const dir = stack.pop();\n const { data, error } = await this.client.storage.from(bucket).list(dir, {\n limit: 1e3,\n sortBy: { column: \"name\", order: \"asc\" }\n });\n if (error)\n throw error;\n for (const entry of data ?? []) {\n const full = dir ? `${dir}/${entry.name}` : entry.name;\n if (entry.id === null) {\n stack.push(full);\n } else {\n out.push(full);\n }\n }\n }\n return out;\n }\n getPublicUrl(storagePath) {\n if (this.bucketFor(storagePath) === this.publicBucket) {\n return `${this.publicBaseUrl}/${storagePath}`;\n }\n return `${this.privateUrlPrefix}/${storagePath}`;\n }\n}\nfunction decodeCursor(cursor) {\n if (!cursor)\n return 0;\n const n = parseInt(cursor, 10);\n return Number.isFinite(n) && n >= 0 ? n : 0;\n}\nfunction encodeCursor(offset) {\n return String(offset);\n}\nfunction toRange(opts) {\n const limit = Math.min(Math.max(opts?.limit ?? DEFAULT_PAGE_LIMIT, 1), MAX_PAGE_LIMIT);\n const from = decodeCursor(opts?.cursor);\n return { from, to: from + limit - 1, limit };\n}\nfunction nextCursorFromRange(range, returnedCount, totalCount) {\n const consumed = range.from + returnedCount;\n if (totalCount != null) {\n return consumed < totalCount ? encodeCursor(consumed) : void 0;\n }\n return returnedCount >= range.limit ? encodeCursor(consumed) : void 0;\n}\nfunction orderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"name\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nclass SupabaseOrgStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async listOrgs(ctx, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\", { count: \"exact\" }).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$7(error);\n const items = (data ?? []).map(rowToOrg);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrg(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\").eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrg(data) : null;\n }\n async getOrgBySlug(ctx, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(\"*\").eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrg(data) : null;\n }\n async createOrg(ctx, org) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"orgs\").insert(orgToRow(org));\n if (error)\n throw mapError$7(error);\n const { error: memberError } = await client.from(\"org_members\").upsert({\n org_id: org.id,\n user_id: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n }, { onConflict: \"org_id,user_id\" });\n if (memberError)\n throw mapError$7(memberError);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0)\n row.name = patch.name;\n if (patch.slug !== void 0)\n row.slug = patch.slug;\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error, data } = await this.clients.forRequest(ctx).from(\"orgs\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org '${id}' not found`, 404);\n }\n async deleteOrg(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow$1(stamp);\n const { error: orgErr, data: orgData } = await client.from(\"orgs\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (orgErr)\n throw mapError$7(orgErr);\n if (!orgData || orgData.length === 0)\n throw new ProviderError(`Org '${id}' not found`, 404);\n const { error: omErr } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (omErr)\n throw mapError$7(omErr);\n const { data: orgProjects, error: projFetchErr } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projFetchErr)\n throw mapError$7(projFetchErr);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n const { error: projErr } = await client.from(\"projects\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projErr)\n throw mapError$7(projErr);\n if (projectIds.length > 0) {\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (pmErr)\n throw mapError$7(pmErr);\n const { error: defErr } = await client.from(\"definitions\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (defErr)\n throw mapError$7(defErr);\n }\n const { error: invErr } = await client.from(\"invites\").delete().eq(\"org_id\", id);\n if (invErr)\n throw mapError$7(invErr);\n const { error: cdErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", id);\n if (cdErr)\n throw mapError$7(cdErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", id);\n if (shErr)\n throw mapError$7(shErr);\n const { error: csErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", id);\n if (csErr)\n throw mapError$7(csErr);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n // ============================================================================\n // Org members\n // ============================================================================\n async listOrgMembers(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$7(error);\n const items = (data ?? []).map(rowToOrgMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrgMember(ctx, orgId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*\").eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$7(error);\n return data ? rowToOrgMember(data) : null;\n }\n async findUserMembership(ctx, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(\"*, org:orgs!inner(*)\").eq(\"user_id\", userId).is(\"deleted_at\", null).is(\"org.deleted_at\", null).order(\"joined_at\", { ascending: true }).limit(1).maybeSingle();\n if (error)\n throw mapError$7(error);\n if (!data)\n return null;\n const row = data;\n const orgRow = Array.isArray(row.org) ? row.org[0] : row.org;\n if (!orgRow)\n return null;\n const { org: _omit, ...memberRow } = row;\n return {\n org: rowToOrg(orgRow),\n member: rowToOrgMember(memberRow)\n };\n }\n async addOrgMember(ctx, member) {\n const row = {\n ...memberToRow(member),\n deleted_at: null\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error } = await this.clients.forRequest(ctx).from(\"org_members\").upsert(row, { onConflict: \"org_id,user_id\" });\n if (error)\n throw mapError$7(error);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const row = {\n role,\n permissions: [...DEFAULT_ORG_PERMISSIONS[role]]\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const row = { permissions: [...permissions] };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$7(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow$1(stamp);\n const { data: orgProjects, error: projError } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", orgId).is(\"deleted_at\", null);\n if (projError)\n throw mapError$7(projError);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n if (projectIds.length > 0) {\n const { error: pmError } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (pmError)\n throw mapError$7(pmError);\n }\n const { error } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error)\n throw mapError$7(error);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction stampToRow$1(stamp) {\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n return row;\n}\nfunction rowToOrg(row) {\n return {\n id: row.id,\n name: row.name,\n slug: row.slug,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction orgToRow(org) {\n return {\n id: org.id,\n name: org.name,\n slug: org.slug,\n owner_id: org.ownerId,\n created_by: org.createdBy,\n updated_by: org.updatedBy,\n created_at: org.createdAt,\n updated_at: org.updatedAt,\n deleted_at: org.deletedAt ?? null\n };\n}\nfunction rowToOrgMember(row) {\n return {\n orgId: row.org_id,\n userId: row.user_id,\n role: row.role,\n permissions: row.permissions ?? [],\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction memberToRow(m) {\n return {\n org_id: m.orgId,\n user_id: m.userId,\n role: m.role,\n permissions: m.permissions ?? [],\n joined_at: m.joinedAt\n };\n}\nfunction mapError$7(e) {\n const pg = e;\n if (pg?.code === \"23505\") {\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n }\n if (pg?.code === \"23503\") {\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n }\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseProjectStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async listProjects(ctx, orgId, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$6(error);\n const items = (data ?? []).map(rowToProject);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProject(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\").eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProject(data) : null;\n }\n async getProjectBySlug(ctx, orgId, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(\"*\").eq(\"org_id\", orgId).eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProject(data) : null;\n }\n async createProject(ctx, project) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"projects\").insert(projectToRow(project));\n if (error)\n throw mapError$6(error);\n const { error: memberError } = await client.from(\"project_members\").upsert({\n project_id: project.id,\n user_id: project.ownerId,\n role: \"owner\",\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n }, { onConflict: \"project_id,user_id\" });\n if (memberError)\n throw mapError$6(memberError);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0)\n row.name = patch.name;\n if (patch.slug !== void 0)\n row.slug = patch.slug;\n if (patch.description !== void 0)\n row.description = patch.description;\n if (patch.visibility !== void 0)\n row.visibility = patch.visibility;\n if (patch.autoJoinOnUpload !== void 0)\n row.auto_join_on_upload = patch.autoJoinOnUpload;\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project '${id}' not found`, 404);\n }\n async deleteProject(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const stampRow = stampToRow(stamp);\n const { data, error } = await client.from(\"projects\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project '${id}' not found`, 404);\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null);\n if (pmErr)\n throw mapError$6(pmErr);\n const { error: defErr } = await client.from(\"definitions\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null);\n if (defErr)\n throw mapError$6(defErr);\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n // ============================================================================\n // Project members\n // ============================================================================\n async listProjectMembers(ctx, projectId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"project_members\").select(\"*\", { count: \"exact\" }).eq(\"project_id\", projectId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$6(error);\n const items = (data ?? []).map(rowToProjectMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProjectMember(ctx, projectId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").select(\"*\").eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$6(error);\n return data ? rowToProjectMember(data) : null;\n }\n async addProjectMember(ctx, member) {\n const row = {\n ...projectMemberToRow(member),\n deleted_at: null\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").upsert(row, { onConflict: \"project_id,user_id\" });\n if (error)\n throw mapError$6(error);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const row = { role };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").update(row).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error)\n throw mapError$6(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").update(stampToRow(stamp)).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error)\n throw mapError$6(error);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction rowToProject(row) {\n return {\n id: row.id,\n orgId: row.org_id,\n name: row.name,\n slug: row.slug,\n description: row.description ?? void 0,\n visibility: row.visibility,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n autoJoinOnUpload: row.auto_join_on_upload ?? false,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectToRow(p) {\n return {\n id: p.id,\n org_id: p.orgId,\n name: p.name,\n slug: p.slug,\n description: p.description ?? null,\n visibility: p.visibility,\n owner_id: p.ownerId,\n created_by: p.createdBy,\n updated_by: p.updatedBy,\n auto_join_on_upload: p.autoJoinOnUpload,\n created_at: p.createdAt,\n updated_at: p.updatedAt,\n deleted_at: p.deletedAt ?? null\n };\n}\nfunction rowToProjectMember(row) {\n return {\n projectId: row.project_id,\n userId: row.user_id,\n role: row.role,\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectMemberToRow(m) {\n return {\n project_id: m.projectId,\n user_id: m.userId,\n role: m.role,\n joined_at: m.joinedAt\n };\n}\nfunction stampToRow(stamp) {\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n return row;\n}\nfunction mapError$6(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseDefinitionStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n // ============================================================================\n // Definitions\n // ============================================================================\n async list(ctx, opts) {\n return this.runList(ctx, void 0, opts);\n }\n async listByProject(ctx, projectId, opts) {\n return this.runList(ctx, { projectId }, opts);\n }\n async listPublic(ctx, opts) {\n return this.runList(ctx, { publicOnly: true, orgId: opts?.orgId }, opts);\n }\n async runList(ctx, filter, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n let query = this.clients.forRequest(ctx).from(\"definitions\").select(\"*\", { count: \"exact\" }).is(\"deleted_at\", null);\n if (filter?.projectId)\n query = query.eq(\"project_id\", filter.projectId);\n if (filter?.publicOnly) {\n query = this.clients.forRequest(ctx).from(\"definitions\").select(\"*, project:projects!inner(visibility, org_id)\", {\n count: \"exact\"\n }).is(\"deleted_at\", null).eq(\"project.visibility\", \"public\");\n if (filter.orgId)\n query = query.eq(\"project.org_id\", filter.orgId);\n if (filter.projectId)\n query = query.eq(\"project_id\", filter.projectId);\n }\n if (opts?.statuses?.length) {\n query = query.in(\"status\", opts.statuses);\n } else {\n const excluded = [];\n if (!opts?.includePending)\n excluded.push(\"pending\");\n if (!opts?.includeArchived)\n excluded.push(\"archived\");\n if (excluded.length) {\n query = query.not(\"status\", \"in\", `(${excluded.join(\",\")})`);\n }\n }\n query = query.order(definitionOrderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n const { data, error, count } = await query;\n if (error)\n throw mapError$5(error);\n const items = (data ?? []).map(rowToRecord);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async get(ctx, guid) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").select(\"*\").eq(\"guid\", guid).is(\"deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$5(error);\n return data ? rowToRecord(data) : null;\n }\n async create(ctx, record) {\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").insert(recordToRow(record));\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const row = patchToRow(patch);\n if (Object.keys(row).length === 0)\n return;\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").update(row).eq(\"guid\", guid).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Definition '${guid}' not found`, 404);\n }\n async delete(ctx, guid) {\n const stamp = auditSoftDelete(ctx, ctx.userId);\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy)\n row.updated_by = stamp.updatedBy;\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").update(row).eq(\"guid\", guid).is(\"deleted_at\", null);\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async incrementSolveCount(ctx, guid) {\n const { error } = await this.clients.forRequest(ctx).rpc(\"increment_run_count\", { g: guid });\n if (error)\n throw mapError$5(error);\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").insert(versionToRow(version));\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(\"*\", { count: \"exact\" }).eq(\"definition_guid\", definitionId).order(\"version_number\", { ascending: false }).range(range.from, range.to);\n if (error)\n throw mapError$5(error);\n const items = (data ?? []).map(rowToVersion);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getVersion(ctx, versionId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(\"*\").eq(\"id\", versionId).maybeSingle();\n if (error)\n throw mapError$5(error);\n return data ? rowToVersion(data) : null;\n }\n async deleteVersion(ctx, versionId) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").delete().eq(\"id\", versionId);\n if (error)\n throw mapError$5(error);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"live_version_id\");\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"draft_version_id\");\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError)\n throw mapError$5(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = {\n live_version_id: versionId,\n draft_version_id: versionId,\n status: \"draft\"\n };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n async repointChannel(ctx, definitionId, versionId, column) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError)\n throw mapError$5(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = { [column]: versionId };\n if (ctx.userId)\n row.updated_by = ctx.userId;\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error)\n throw mapError$5(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n}\nfunction rowToRecord(row) {\n return {\n guid: row.guid,\n projectId: row.project_id,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n liveVersionId: row.live_version_id,\n draftVersionId: row.draft_version_id,\n computeServerId: row.compute_server_id ?? void 0,\n displayName: row.display_name,\n description: row.description ?? void 0,\n category: row.category ?? void 0,\n tags: row.tags ?? void 0,\n coverImage: row.cover_image ?? void 0,\n status: row.status,\n solveCount: typeof row.run_count === \"string\" ? Number(row.run_count) : row.run_count,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction recordToRow(r) {\n const row = {\n guid: r.guid,\n project_id: r.projectId,\n owner_id: r.ownerId,\n created_by: r.createdBy,\n updated_by: r.updatedBy,\n live_version_id: r.liveVersionId,\n draft_version_id: r.draftVersionId,\n compute_server_id: r.computeServerId ?? null,\n display_name: r.displayName,\n description: r.description ?? null,\n category: r.category ?? null,\n cover_image: r.coverImage ?? null,\n status: r.status,\n run_count: r.solveCount,\n created_at: r.createdAt,\n updated_at: r.updatedAt,\n deleted_at: r.deletedAt ?? null\n };\n if (r.tags !== void 0)\n row.tags = r.tags;\n return row;\n}\nfunction patchToRow(patch) {\n const row = {};\n if (patch.displayName !== void 0)\n row.display_name = patch.displayName;\n if (patch.description !== void 0)\n row.description = patch.description;\n if (patch.category !== void 0)\n row.category = patch.category;\n if (patch.tags !== void 0)\n row.tags = patch.tags;\n if (patch.coverImage !== void 0)\n row.cover_image = patch.coverImage;\n if (patch.projectId !== void 0)\n row.project_id = patch.projectId;\n if (patch.computeServerId !== void 0)\n row.compute_server_id = patch.computeServerId;\n if (patch.status !== void 0)\n row.status = patch.status;\n if (patch.ownerId !== void 0)\n row.owner_id = patch.ownerId;\n return row;\n}\nfunction rowToVersion(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n versionNumber: row.version_number,\n fileExt: row.file_ext,\n fileKey: row.file_key,\n originalFilename: row.original_filename ?? void 0,\n uploadedBy: row.uploaded_by,\n uploadedAt: row.uploaded_at,\n changeNote: row.change_note ?? void 0\n };\n}\nfunction versionToRow(v) {\n const row = {\n id: v.id,\n definition_guid: v.definitionId,\n version_number: v.versionNumber,\n file_ext: v.fileExt,\n file_key: v.fileKey,\n original_filename: v.originalFilename ?? null,\n uploaded_by: v.uploadedBy,\n uploaded_at: v.uploadedAt\n };\n if (v.changeNote !== void 0)\n row.change_note = v.changeNote;\n return row;\n}\nfunction definitionOrderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"display_name\";\n case \"solveCount\":\n return \"run_count\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nfunction mapError$5(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nclass SupabaseInviteStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async create(ctx, invite) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").insert(inviteToRow(invite));\n if (error)\n throw mapError$4(error);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(ctx, tokenHash) {\n const { data, error } = await this.clients.forRequest(ctx).rpc(\"get_invite_by_token_hash\", { h: tokenHash });\n if (error)\n throw mapError$4(error);\n const row = Array.isArray(data) ? data[0] : data;\n return row ? rowToInvite(row) : null;\n }\n async listByOrg(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"invites\").select(\"*\", { count: \"exact\" }).eq(\"org_id\", orgId).order(\"created_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error)\n throw mapError$4(error);\n const items = (data ?? []).map(rowToInvite);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async markAccepted(ctx, id, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").update({ accepted_at: (/* @__PURE__ */ new Date()).toISOString(), accepted_by_user_id: userId }).eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error)\n throw mapError$4(error);\n const row = data?.[0];\n if (!row)\n return;\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: id,\n orgId: row.org_id,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error)\n throw mapError$4(error);\n const row = data?.[0];\n if (!row)\n return;\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: row.org_id,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(ctx, orgId) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"org_id\", orgId);\n if (error)\n throw mapError$4(error);\n }\n}\nfunction rowToInvite(row) {\n return {\n id: row.id,\n tokenHash: row.token_hash,\n email: row.email,\n orgId: row.org_id,\n orgRole: row.org_role,\n orgPermissions: row.org_permissions,\n invitedBy: row.invited_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n acceptedAt: row.accepted_at ?? void 0,\n acceptedByUserId: row.accepted_by_user_id ?? void 0\n };\n}\nfunction inviteToRow(i) {\n return {\n id: i.id,\n token_hash: i.tokenHash,\n email: i.email,\n org_id: i.orgId,\n org_role: i.orgRole,\n org_permissions: i.orgPermissions,\n invited_by: i.invitedBy,\n created_at: i.createdAt,\n expires_at: i.expiresAt,\n accepted_at: i.acceptedAt ?? null,\n accepted_by_user_id: i.acceptedByUserId ?? null\n };\n}\nfunction mapError$4(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabaseComputeServerStore {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async getConfig(ctx) {\n const client = this.clients.forRequest(ctx);\n const [serversRes, sharesRes, orgDefRes, platDefRes] = await Promise.all([\n client.from(\"compute_servers\").select(\"*\"),\n client.from(\"compute_server_shares\").select(\"*\"),\n client.from(\"compute_server_org_defaults\").select(\"*\"),\n client.from(\"compute_server_platform_default\").select(\"default_server_id\").eq(\"singleton\", true).maybeSingle()\n ]);\n if (serversRes.error)\n throw mapError$3(serversRes.error);\n if (sharesRes.error)\n throw mapError$3(sharesRes.error);\n if (orgDefRes.error)\n throw mapError$3(orgDefRes.error);\n if (platDefRes.error)\n throw mapError$3(platDefRes.error);\n const sharedByServer = /* @__PURE__ */ new Map();\n for (const row of sharesRes.data ?? []) {\n const list = sharedByServer.get(row.server_id) ?? [];\n list.push(row.org_id);\n sharedByServer.set(row.server_id, list);\n }\n const servers = (serversRes.data ?? []).map((row) => rowToServer(row, sharedByServer));\n const orgDefaults = {};\n for (const row of orgDefRes.data ?? []) {\n if (row.default_server_id)\n orgDefaults[row.org_id] = row.default_server_id;\n }\n return {\n servers,\n defaultServerId: platDefRes.data?.default_server_id ?? void 0,\n orgDefaults\n };\n }\n async savePlatformServers(ctx, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const platformOnly = servers.filter(isPlatformServer);\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"platform\");\n if (delErr)\n throw mapError$3(delErr);\n if (platformOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(platformOnly.map(serverToRow));\n if (insErr)\n throw mapError$3(insErr);\n const shareRows = platformOnly.flatMap((s) => s.sharedWith === \"all\" ? [] : s.sharedWith.map((orgId) => ({ server_id: s.id, org_id: orgId })));\n if (shareRows.length > 0) {\n const { error: shErr } = await client.from(\"compute_server_shares\").insert(shareRows);\n if (shErr)\n throw mapError$3(shErr);\n }\n }\n const { error: defErr } = await client.from(\"compute_server_platform_default\").update({ default_server_id: defaultServerId ?? null }).eq(\"singleton\", true);\n if (defErr)\n throw mapError$3(defErr);\n }\n async saveOrgServers(ctx, orgId, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const orgOnly = servers.filter(isOrgServer).map((s) => ({ ...s, ownerOrgId: orgId }));\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (delErr)\n throw mapError$3(delErr);\n if (orgOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(orgOnly.map(serverToRow));\n if (insErr)\n throw mapError$3(insErr);\n }\n if (defaultServerId === null) {\n const { error } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error)\n throw mapError$3(error);\n } else if (typeof defaultServerId === \"string\") {\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: defaultServerId });\n if (error)\n throw mapError$3(error);\n }\n }\n async setOrgDefault(ctx, orgId, serverId) {\n const client = this.clients.forRequest(ctx);\n if (serverId === null) {\n const { error: error2 } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error2)\n throw mapError$3(error2);\n return;\n }\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: serverId });\n if (error)\n throw mapError$3(error);\n }\n async deleteByOrg(ctx, orgId) {\n const client = this.clients.forRequest(ctx);\n const { error: defErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (defErr)\n throw mapError$3(defErr);\n const { error: srvErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (srvErr)\n throw mapError$3(srvErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", orgId);\n if (shErr)\n throw mapError$3(shErr);\n }\n}\nfunction rowToServer(row, sharedByServer) {\n const common = {\n id: row.id,\n label: row.label,\n serverUrl: row.server_url,\n apiKey: row.api_key ?? void 0,\n timeoutMs: row.timeout_ms ?? void 0,\n retryCount: row.retry_count ?? void 0\n };\n if (row.scope === \"platform\") {\n return {\n ...common,\n scope: \"platform\",\n sharedWith: row.shared_with_all ? \"all\" : sharedByServer.get(row.id) ?? []\n };\n }\n if (!row.owner_org_id) {\n throw new Error(`compute_servers row ${row.id} has scope='org' but null owner_org_id`);\n }\n return { ...common, scope: \"org\", ownerOrgId: row.owner_org_id };\n}\nfunction serverToRow(s) {\n const base = {\n id: s.id,\n label: s.label,\n server_url: s.serverUrl,\n api_key: s.apiKey ?? null,\n timeout_ms: s.timeoutMs ?? null,\n retry_count: s.retryCount ?? null\n };\n if (isPlatformServer(s)) {\n return {\n ...base,\n scope: \"platform\",\n owner_org_id: null,\n shared_with_all: s.sharedWith === \"all\"\n };\n }\n return {\n ...base,\n scope: \"org\",\n owner_org_id: s.ownerOrgId,\n shared_with_all: false\n };\n}\nfunction mapError$3(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabaseShareLinkStore {\n clients;\n events;\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n async create(ctx, link) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").insert(linkToRow(link));\n if (error)\n throw mapError$2(error);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"share_links\").select(\"*\", { count: \"exact\" }).eq(\"definition_guid\", definitionId).is(\"revoked_at\", null).order(\"created_at\", { ascending: false }).range(range.from, range.to);\n if (error)\n throw mapError$2(error);\n const items = (data ?? []).map(rowToLink);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getById(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"share_links\").select(\"*\").eq(\"id\", id).maybeSingle();\n if (error)\n throw mapError$2(error);\n return data ? rowToLink(data) : null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { data, error } = await this.clients.serviceClient.from(\"share_links\").select(\"*, definitions!inner(deleted_at)\").eq(\"token_hash\", tokenHash).is(\"revoked_at\", null).is(\"definitions.deleted_at\", null).maybeSingle();\n if (error)\n throw mapError$2(error);\n return data ? rowToLink(data) : null;\n }\n async revoke(ctx, id) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").update({ revoked_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"id\", id).is(\"revoked_at\", null);\n if (error)\n throw mapError$2(error);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const { data, error } = await this.clients.serviceClient.rpc(\"try_increment_share_link_solve_count\", { link_id: id });\n if (error)\n throw mapError$2(error);\n return typeof data === \"number\" ? data : null;\n }\n}\nfunction rowToLink(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n channel: row.channel,\n tokenHash: row.token_hash,\n name: row.name ?? void 0,\n createdBy: row.created_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n revokedAt: row.revoked_at,\n allowSolve: row.allow_solve,\n maxSolves: row.max_solves,\n solveCount: row.solve_count\n };\n}\nfunction linkToRow(l) {\n return {\n id: l.id,\n definition_guid: l.definitionId,\n channel: l.channel,\n token_hash: l.tokenHash,\n name: l.name ?? null,\n created_by: l.createdBy,\n created_at: l.createdAt,\n expires_at: l.expiresAt ?? null,\n revoked_at: l.revokedAt ?? null,\n allow_solve: l.allowSolve,\n max_solves: l.maxSolves ?? null,\n solve_count: l.solveCount\n };\n}\nfunction mapError$2(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nfunction buildClientBundle(opts) {\n const serviceClient = createClient(opts.supabaseUrl, opts.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n const anonClient = createClient(opts.supabaseUrl, opts.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n const perRequestCache = /* @__PURE__ */ new WeakMap();\n return {\n serviceClient,\n forRequest(ctx) {\n if (ctx.system)\n return serviceClient;\n const token = extractSessionToken(ctx.adapterContext);\n if (!token)\n return anonClient;\n const cached = perRequestCache.get(ctx);\n if (cached)\n return cached;\n const client = createClient(opts.supabaseUrl, opts.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false },\n global: {\n headers: { Authorization: `Bearer ${token}` }\n }\n });\n perRequestCache.set(ctx, client);\n return client;\n }\n };\n}\nfunction extractSessionToken(adapterContext) {\n if (!adapterContext || typeof adapterContext !== \"object\")\n return void 0;\n const maybe = adapterContext.sessionToken;\n return typeof maybe === \"string\" && maybe.length > 0 ? maybe : void 0;\n}\nclass SupabaseEventSink {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async emit(event) {\n try {\n const { error } = await this.clients.serviceClient.from(\"audit_events\").insert({\n type: event.type,\n actor_id: event.actorId,\n data: event\n });\n if (error) {\n console.error(\"[SupabaseEventSink] insert failed:\", error.message, { event });\n }\n } catch (err) {\n console.error(\"[SupabaseEventSink] unexpected error:\", err, { event });\n }\n }\n}\nconst MAX_LIMIT = 200;\nconst DEFAULT_LIMIT = 100;\nconst ISO_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})$/;\nconst UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\nclass SupabaseAuditQuery {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n async list(_ctx, filters) {\n const limit = clampLimit(filters.limit);\n let q = this.clients.serviceClient.from(\"audit_events\").select(\"id, type, actor_id, occurred_at, data\").order(\"occurred_at\", { ascending: false }).order(\"id\", { ascending: false }).limit(limit + 1);\n if (filters.types && filters.types.length > 0) {\n q = q.in(\"type\", [...filters.types]);\n }\n if (filters.actorId) {\n q = q.eq(\"actor_id\", filters.actorId);\n }\n if (filters.sinceIso) {\n q = q.gte(\"occurred_at\", filters.sinceIso);\n }\n if (filters.untilIso) {\n q = q.lte(\"occurred_at\", filters.untilIso);\n }\n if (filters.cursor) {\n const ts = filters.cursor.occurredAt;\n const id = filters.cursor.id;\n if (!ISO_RE.test(ts) || !UUID_RE.test(id)) {\n throw new Error(\"audit_events query: malformed cursor\");\n }\n q = q.or(`occurred_at.lt.${ts},and(occurred_at.eq.${ts},id.lt.${id})`);\n }\n const { data, error } = await q;\n if (error) {\n throw new Error(`audit_events query failed: ${error.message}`);\n }\n const fetched = data ?? [];\n const hasMore = fetched.length > limit;\n const page = hasMore ? fetched.slice(0, limit) : fetched;\n const last = page[page.length - 1];\n return {\n rows: page.map((r) => ({\n id: r.id,\n type: r.type,\n actorId: r.actor_id,\n occurredAt: r.occurred_at,\n data: r.data\n })),\n nextCursor: hasMore && last ? { occurredAt: last.occurred_at, id: last.id } : null\n };\n }\n}\nfunction clampLimit(requested) {\n if (!requested || requested <= 0)\n return DEFAULT_LIMIT;\n if (requested > MAX_LIMIT)\n return MAX_LIMIT;\n return Math.floor(requested);\n}\nconst MAX_RECENT_RUNS = 20;\nclass SupabaseUserProfileProvider {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n client() {\n return this.clients.serviceClient;\n }\n async getProfile(ctx, userId) {\n assertCanAccess(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").eq(\"user_id\", userId).maybeSingle();\n if (error)\n throw mapError$1(error);\n return data ? rowToProfile(data) : null;\n }\n async getProfiles(_ctx, userIds) {\n if (userIds.length === 0)\n return [];\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").in(\"user_id\", [...userIds]);\n if (error)\n throw mapError$1(error);\n return (data ?? []).map(rowToProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess(ctx, userId);\n const row = {};\n if (patch.displayName !== void 0)\n row.display_name = patch.displayName;\n if (Object.keys(row).length === 0)\n return \"ok\";\n const { data, error } = await this.client().from(\"user_profiles\").update(row).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n if (existing.starredDefinitions.includes(definitionId))\n return \"ok\";\n const next = [...existing.starredDefinitions, definitionId];\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n if (!existing.starredDefinitions.includes(definitionId))\n return \"ok\";\n const next = existing.starredDefinitions.filter((id) => id !== definitionId);\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing)\n return \"not_found\";\n const filtered = existing.recentRuns.filter((r) => r.definitionId !== run.definitionId);\n const next = [run, ...filtered].slice(0, MAX_RECENT_RUNS);\n const { data, error } = await this.client().from(\"user_profiles\").update({ recent_runs: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error)\n throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n}\nfunction assertCanAccess(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nfunction rowToProfile(row) {\n return {\n userId: row.user_id,\n displayName: row.display_name ?? void 0,\n starredDefinitions: row.starred_definitions ?? [],\n recentRuns: row.recent_runs ?? []\n };\n}\nfunction mapError$1(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabasePlatformPermissionStore {\n clients;\n constructor(clients) {\n this.clients = clients;\n }\n client() {\n return this.clients.serviceClient;\n }\n async getFor(ctx, userId) {\n assertCanRead(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (error)\n throw mapError(error);\n return filterValid(data?.platform_permissions ?? []);\n }\n async getForBatch(ctx, userIds) {\n assertAdmin(ctx);\n const out = /* @__PURE__ */ new Map();\n if (userIds.length === 0)\n return out;\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, platform_permissions\").in(\"user_id\", [...userIds]);\n if (error)\n throw mapError(error);\n for (const row of data ?? []) {\n out.set(row.user_id, filterValid(row.platform_permissions ?? []));\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin(ctx);\n const { data: existing, error: fetchError } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (fetchError)\n throw mapError(fetchError);\n if (!existing)\n return \"not_found\";\n const wasAdmin = (existing.platform_permissions ?? []).includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherEnabledAdmins(userId);\n if (others === 0)\n return \"last_admin\";\n }\n const { error } = await this.client().from(\"user_profiles\").update({ platform_permissions: [...permissions] }).eq(\"user_id\", userId);\n if (error)\n throw mapError(error);\n return \"ok\";\n }\n async hasInstanceAdmin(_ctx) {\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id\").contains(\"platform_permissions\", [\"instance_admin\"]);\n if (error)\n throw mapError(error);\n const candidates = (data ?? []).map((r) => r.user_id);\n if (candidates.length === 0)\n return false;\n for (const id of candidates) {\n const { data: authData } = await this.clients.serviceClient.auth.admin.getUserById(id);\n if (authData.user && authData.user.user_metadata?.disabled !== true)\n return true;\n }\n return false;\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherEnabledAdmins(excludeUserId);\n }\n async countOtherEnabledAdmins(excludeUserId) {\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id\").contains(\"platform_permissions\", [\"instance_admin\"]).neq(\"user_id\", excludeUserId);\n if (error)\n throw mapError(error);\n const candidates = (data ?? []).map((r) => r.user_id);\n if (candidates.length === 0)\n return 0;\n let count = 0;\n for (const id of candidates) {\n const { data: authData } = await this.clients.serviceClient.auth.admin.getUserById(id);\n if (authData.user && authData.user.user_metadata?.disabled !== true)\n count += 1;\n }\n return count;\n }\n}\nfunction filterValid(raw) {\n return raw.filter((p) => PlatformPermissionSchema.safeParse(p).success);\n}\nfunction assertCanRead(ctx, userId) {\n if (ctx.system)\n return;\n if (ctx.userId === userId)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin(ctx) {\n if (ctx.system)\n return;\n if (hasPermission(ctx, \"instance_admin\"))\n return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction mapError(e) {\n const pg = e;\n if (pg?.code === \"23505\")\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\")\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error)\n return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nconst NOT_IMPLEMENTED_MSG = \"Platform projects are not supported on this deployment yet.\";\nconst notImplementedGrantStore = {\n listByProject: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n create: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n delete: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n deleteByProject: async () => {\n },\n deleteByGranteeOrg: async () => {\n }\n};\nclass SupabaseDataProvider {\n clients;\n orgs;\n projects;\n definitions;\n invites;\n computeServer;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n auditQuery;\n constructor(clients, events) {\n this.clients = clients;\n this.orgs = new SupabaseOrgStore(clients, events);\n this.projects = new SupabaseProjectStore(clients, events);\n this.definitions = new SupabaseDefinitionStore(clients, events);\n this.invites = new SupabaseInviteStore(clients, events);\n this.computeServer = new SupabaseComputeServerStore(clients);\n this.shareLinks = new SupabaseShareLinkStore(clients, events);\n this.userProfile = new SupabaseUserProfileProvider(clients);\n this.permissions = new SupabasePlatformPermissionStore(clients);\n this.platformProjectGrants = notImplementedGrantStore;\n this.auditQuery = new SupabaseAuditQuery(clients);\n }\n static fromEnv(env, events) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey)\n throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n const bundle = buildClientBundle({ supabaseUrl, anonKey, serviceRoleKey });\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n static create(opts, events) {\n const bundle = buildClientBundle(opts);\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n /**\n * Build from a pre-existing `ClientBundle`. Useful for tests or advanced\n * cases that need to inject a custom event sink or share a bundle externally.\n */\n static fromBundle(bundle, events) {\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle));\n }\n /**\n * Expose the underlying bundle so other providers in the same package\n * (storage, user profile, auth) can share one set of clients per process.\n */\n getClientBundle() {\n return this.clients;\n }\n /**\n * No-op: `public.user_profiles` is auto-seeded by the `handle_new_auth_user`\n * trigger on every `auth.users` insert (see `0001_initial.sql`). The data\n * layer always has a row for any authenticated user without per-request work.\n */\n async ensureUser() {\n }\n /**\n * No-op: `public.user_profiles.user_id` references `auth.users(id)` with\n * `on delete cascade`. Deleting the auth user removes the profile row\n * automatically.\n */\n async onUserDeleted() {\n }\n}\nclass SupabaseAuthProvider {\n name = \"Supabase Auth\";\n passwordAuth;\n oauth;\n emailLink;\n admin;\n anon;\n anonKey;\n supabaseUrl;\n constructor(config) {\n this.supabaseUrl = config.supabaseUrl;\n this.anonKey = config.anonKey;\n this.admin = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.anon = createClient(config.supabaseUrl, config.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.passwordAuth = new SupabasePasswordAuth(this.admin, this.anon, (email, password) => this.signIn(email, password), config.enableSelfSignup ?? false, (user) => this.hydrate(user));\n this.oauth = new SupabaseOAuthAuth(this.anon, (user) => this.hydrate(user), config.oauthProviders ?? []);\n this.emailLink = new SupabaseEmailLinkAuth(this.anon, (user) => this.hydrate(user), config.allowEmailLinkSignup ?? true);\n }\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl)\n throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey)\n throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey)\n throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n const oauthProviders = (env.SUPABASE_OAUTH_PROVIDERS ?? \"\").split(\",\").map((p) => p.trim().toLowerCase()).filter((p) => p.length > 0);\n return new SupabaseAuthProvider({\n supabaseUrl,\n anonKey,\n serviceRoleKey,\n enableSelfSignup: env.SUPABASE_ENABLE_SELF_SIGNUP === \"true\",\n oauthProviders,\n // Default true; set SUPABASE_ALLOW_EMAIL_LINK_SIGNUP=false to lock down\n // to invite-only and reject magic-link signups for new addresses.\n allowEmailLinkSignup: env.SUPABASE_ALLOW_EMAIL_LINK_SIGNUP !== \"false\"\n });\n }\n async verifyToken(token) {\n if (!token)\n return null;\n const { data, error } = await this.anon.auth.getUser(token);\n if (error || !data.user)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return this.hydrate(data.user);\n }\n async getUser(id) {\n const { data, error } = await this.admin.auth.admin.getUserById(id);\n if (error || !data.user)\n return null;\n return this.hydrate(data.user);\n }\n async listUsers(opts) {\n const perPage = opts?.limit ?? 50;\n const page = opts?.cursor ? parseInt(opts.cursor, 10) : 1;\n const { data, error } = await this.admin.auth.admin.listUsers({\n page: Number.isFinite(page) && page >= 1 ? page : 1,\n perPage\n });\n if (error)\n throw error;\n const users = data.users;\n const hydrated = users.map((u) => this.hydrate(u));\n const nextCursor = users.length >= perPage ? String(page + 1) : void 0;\n return { items: hydrated, nextCursor };\n }\n async createUser(email) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n email_confirm: true\n });\n if (error)\n throw error;\n if (!data.user)\n throw new Error(\"createUser returned no user\");\n return this.hydrate(data.user);\n }\n async deleteUser(id) {\n const { error } = await this.admin.auth.admin.deleteUser(id);\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\"))\n return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async disableUser(id) {\n const { data: existing, error: fetchError } = await this.admin.auth.admin.getUserById(id);\n if (fetchError || !existing.user)\n return \"not_found\";\n const mergedMetadata = {\n ...existing.user.user_metadata ?? {},\n disabled: true\n };\n const { error } = await this.admin.auth.admin.updateUserById(id, {\n user_metadata: mergedMetadata\n });\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\"))\n return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async touchLastLogin(id) {\n const { data, error } = await this.admin.from(\"user_profiles\").select(\"last_login_at\").eq(\"user_id\", id).maybeSingle();\n if (error)\n return;\n if (data?.last_login_at) {\n const prev = Date.parse(data.last_login_at);\n if (Number.isFinite(prev) && Date.now() - prev < 6e4)\n return;\n }\n await this.admin.from(\"user_profiles\").update({ last_login_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"user_id\", id);\n }\n // OAuth lives on `this.oauth` (typed `IOAuthAuth`); see `SupabaseOAuthAuth`\n // below. Mirrors the `passwordAuth` capability split.\n // ============================================================================\n // Internals\n // ============================================================================\n /**\n * Sign in via GoTrue. Returns the access token string and the hydrated\n * user. Called by `SupabasePasswordAuth.verifyLogin` — kept on the\n * provider class so it has access to the hydrate helper without plumbing.\n */\n async signIn(email, password) {\n const { data, error } = await this.anon.auth.signInWithPassword({ email, password });\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return { user: this.hydrate(data.user), sessionToken: data.session.access_token };\n }\n /**\n * Map a GoTrue `User` to our identity-only `AuthUser`. Platform permissions\n * live on `IPlatformPermissionStore` and profile fields (displayName,\n * starred, recentRuns) on `IUserProfileStore` — neither is in AuthUser.\n */\n hydrate(user) {\n return {\n id: user.id,\n email: user.email ?? void 0,\n createdAt: user.created_at ?? void 0,\n lastLoginAt: user.last_sign_in_at ?? void 0,\n disabled: user.user_metadata?.disabled === true,\n metadata: user.user_metadata\n };\n }\n /**\n * Expose the anon URL + key so other code (e.g. the same process's\n * storage provider or per-request client factories) can build user-scoped\n * clients without requiring a second config read.\n */\n getAnonClientConfig() {\n return { supabaseUrl: this.supabaseUrl, anonKey: this.anonKey };\n }\n}\nclass SupabasePasswordAuth {\n admin;\n anon;\n signIn;\n enableSelfSignup;\n hydrate;\n constructor(admin, anon, signIn, enableSelfSignup, hydrate) {\n this.admin = admin;\n this.anon = anon;\n this.signIn = signIn;\n this.enableSelfSignup = enableSelfSignup;\n this.hydrate = hydrate;\n }\n async verifyLogin(email, password) {\n const result = await this.signIn(email, password);\n if (!result)\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n return { kind: \"success\", user: result.user, sessionToken: result.sessionToken };\n }\n async createUserWithPassword(email, password) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n password,\n email_confirm: true\n });\n if (error)\n throw error;\n if (!data.user)\n throw new Error(\"createUserWithPassword returned no user\");\n return this.hydrate(data.user);\n }\n async registerUser(email, password) {\n if (!this.enableSelfSignup)\n return null;\n const { data, error } = await this.anon.auth.signUp({ email, password });\n if (error || !data.user)\n return null;\n return this.hydrate(data.user);\n }\n}\nclass SupabaseOAuthAuth {\n anon;\n hydrate;\n providers;\n constructor(anon, hydrate, providers2) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.providers = providers2;\n }\n listProviders() {\n return this.providers;\n }\n async getOAuthAuthorizationUrl(provider, redirectTo) {\n const { data, error } = await this.anon.auth.signInWithOAuth({\n provider,\n options: { redirectTo, skipBrowserRedirect: true }\n });\n if (error || !data.url)\n throw error ?? new Error(\"signInWithOAuth returned no URL\");\n return data.url;\n }\n async exchangeOAuthCode(code) {\n const { data, error } = await this.anon.auth.exchangeCodeForSession(code);\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n async refreshSession(refreshToken) {\n const { data, error } = await this.anon.auth.refreshSession({ refresh_token: refreshToken });\n if (error || !data.session)\n return null;\n return {\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nclass SupabaseEmailLinkAuth {\n anon;\n hydrate;\n allowSignup;\n constructor(anon, hydrate, allowSignup) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.allowSignup = allowSignup;\n }\n async sendMagicLink(email, callbackUrl) {\n const { error } = await this.anon.auth.signInWithOtp({\n email,\n options: {\n emailRedirectTo: callbackUrl,\n shouldCreateUser: this.allowSignup\n }\n });\n if (!error)\n return { ok: true };\n const status = error.status;\n const code = error.code;\n const message = error.message ?? \"\";\n if (status === 429 || /rate.?limit/i.test(message))\n return { ok: false, reason: \"rate_limited\" };\n if (code === \"otp_disabled\" || code === \"signup_disabled\" || /signup.*disabled/i.test(message)) {\n return { ok: false, reason: \"signup_disabled\" };\n }\n if (code === \"validation_failed\" || /invalid.*email|email.*invalid/i.test(message)) {\n return { ok: false, reason: \"invalid_email\" };\n }\n throw error;\n }\n async verifyMagicLink(rawCallbackUrl) {\n const params = parseCallbackParams(rawCallbackUrl);\n if (!params)\n return null;\n const { tokenHash, type } = params;\n const { data, error } = await this.anon.auth.verifyOtp({\n token_hash: tokenHash,\n type\n });\n if (error || !data.user || !data.session)\n return null;\n if (data.user.user_metadata?.disabled === true)\n return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nfunction parseCallbackParams(raw) {\n let search;\n try {\n search = new URL(raw).searchParams;\n } catch {\n search = new URLSearchParams(raw.startsWith(\"?\") ? raw.slice(1) : raw);\n }\n const tokenHash = search.get(\"token_hash\");\n const type = search.get(\"type\");\n if (!tokenHash)\n return null;\n const allowed = /* @__PURE__ */ new Set([\"magiclink\", \"email\", \"signup\", \"invite\", \"recovery\"]);\n if (!type || !allowed.has(type))\n return null;\n return {\n tokenHash,\n type\n };\n}\nconst empty = () => ({ users: [] });\nconst LAST_LOGIN_DEBOUNCE_MS = 6e4;\nasync function readFile(filePath) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\")\n return empty();\n throw err;\n }\n}\nasync function writeFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nfunction createAllowlistStore(filePath) {\n const norm = (upn) => upn.trim().toLowerCase();\n return {\n async findByUpn(upn) {\n const { users } = await readFile(filePath);\n const key = norm(upn);\n return users.find((u) => u.upn === key) ?? null;\n },\n async findById(id) {\n const { users } = await readFile(filePath);\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await readFile(filePath);\n return users;\n },\n async createUser(upn) {\n const file = await readFile(filePath);\n const key = norm(upn);\n if (file.users.some((u) => u.upn === key)) {\n throw new ProviderError(`User with UPN \"${upn}\" already exists`, 409);\n }\n const entry = {\n id: randomUUID(),\n upn: key,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(entry);\n await writeFile(filePath, file);\n return entry;\n },\n async materializeFromHeaders(id, fields) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n let dirty = false;\n if (!user.email && fields.email) {\n user.email = fields.email;\n dirty = true;\n }\n if (!user.displayName && fields.displayName) {\n user.displayName = fields.displayName;\n dirty = true;\n }\n if (dirty)\n await writeFile(filePath, file);\n },\n async setDisabled(id, disabled) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await writeFile(filePath, file);\n },\n async touchLastLogin(id) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user)\n return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS)\n return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await writeFile(filePath, file);\n },\n async deleteUser(id) {\n const file = await readFile(filePath);\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before)\n throw new ProviderError(`User \"${id}\" not found`, 404);\n await writeFile(filePath, file);\n }\n };\n}\nconst DEFAULT_HEADERS = {\n upn: \"SELVA-UserPrincipalName\",\n email: \"SELVA-Email\",\n displayName: \"SELVA-DisplayName\"\n};\nfunction toAuthUser(u) {\n return {\n id: u.id,\n email: u.email,\n metadata: { upn: u.upn, displayName: u.displayName },\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass HeaderProxyAuth {\n users;\n headers;\n bootstrapPolicy;\n constructor(users, headers, bootstrapPolicy) {\n this.users = users;\n this.headers = headers;\n this.bootstrapPolicy = bootstrapPolicy;\n }\n setBootstrapPolicy(policy) {\n this.bootstrapPolicy = policy ?? void 0;\n }\n async identifyFromHeaders(headers) {\n const upn = headers.get(this.headers.upn);\n if (!upn || !upn.trim())\n return null;\n const email = headers.get(this.headers.email)?.trim() || void 0;\n const displayName = headers.get(this.headers.displayName)?.trim() || void 0;\n let entry = await this.users.findByUpn(upn);\n if (!entry && this.bootstrapPolicy) {\n const allowed = await this.bootstrapPolicy({ upn, email });\n if (allowed) {\n try {\n entry = await this.users.createUser(upn);\n } catch {\n entry = await this.users.findByUpn(upn);\n }\n }\n }\n if (!entry || entry.disabled)\n return null;\n if (!entry.email && email || !entry.displayName && displayName) {\n await this.users.materializeFromHeaders(entry.id, { email, displayName }).catch(() => {\n });\n if (email && !entry.email)\n entry.email = email;\n if (displayName && !entry.displayName)\n entry.displayName = displayName;\n }\n await this.users.touchLastLogin(entry.id).catch(() => {\n });\n return toAuthUser(entry);\n }\n}\nclass HeaderAuthProvider {\n users;\n headers;\n name = \"Header (Forward Auth)\";\n proxyAuth;\n constructor(config) {\n this.users = createAllowlistStore(config.allowlistFilePath);\n this.headers = { ...DEFAULT_HEADERS, ...config.headers };\n this.proxyAuth = new HeaderProxyAuth(this.users, this.headers, config.bootstrapAllowlistPolicy);\n }\n /**\n * Late-bind a bootstrap-allowlist policy. Useful when the policy needs\n * runtime state the platform layer owns (e.g. `hasInstanceAdmin`) and\n * therefore can't be wired up at provider construction time. Pass `null`\n * to clear.\n */\n setBootstrapAllowlistPolicy(policy) {\n this.proxyAuth.setBootstrapPolicy(policy);\n }\n static fromEnv(env) {\n const dir = env.HEADER_AUTH_DATA_DIR ?? env.DATA_PATH;\n if (!dir) {\n throw new Error(\"Missing required env var: HEADER_AUTH_DATA_DIR (or DATA_PATH as fallback). This directory holds header-allowlist.json — the pre-provisioned UPN list.\");\n }\n return new HeaderAuthProvider({\n allowlistFilePath: path.join(dir, \"header-allowlist.json\"),\n headers: {\n upn: env.HEADER_AUTH_UPN_HEADER ?? DEFAULT_HEADERS.upn,\n email: env.HEADER_AUTH_EMAIL_HEADER ?? DEFAULT_HEADERS.email,\n displayName: env.HEADER_AUTH_DISPLAY_NAME_HEADER ?? DEFAULT_HEADERS.displayName\n }\n });\n }\n /**\n * No tokens are issued by this provider — identity rides on every request\n * via the trusted-proxy headers. Always returns null; the hook layer\n * falls through to `proxyAuth.identifyFromHeaders`.\n */\n async verifyToken(_token) {\n return null;\n }\n async getUser(id) {\n const u = await this.users.findById(id);\n return u ? toAuthUser(u) : null;\n }\n async listUsers(opts) {\n const all = await this.users.listUsers();\n const limit = Math.min(Math.max(1, opts?.limit ?? 25), 200);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = all.slice(offset, offset + limit).map(toAuthUser);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < all.length ? String(nextOffset) : void 0\n };\n }\n /**\n * Allowlist a UPN. Admin POST `/admin/api/users` with `{ email }`; the\n * email IS the UPN for M365 / Entra deployments where they match. For\n * other IdPs, document the UPN format in your README/onboarding.\n */\n async createUser(upn) {\n return toAuthUser(await this.users.createUser(upn));\n }\n async deleteUser(id) {\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n const target = await this.users.findById(id);\n if (!target)\n return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404)\n return \"not_found\";\n throw err;\n }\n }\n async touchLastLogin(id) {\n await this.users.touchLastLogin(id);\n }\n}\nclass DefinitionService {\n constructor(data, storage) {\n this.data = data;\n this.storage = storage;\n }\n data;\n storage;\n async create(ctx, input, file) {\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || input.ownerId;\n const record = {\n guid: input.guid,\n projectId: input.projectId,\n ownerId: input.ownerId,\n createdBy: actor,\n updatedBy: actor,\n displayName: input.displayName,\n description: input.description,\n category: input.category,\n tags: input.tags,\n coverImage: input.coverImage,\n computeServerId: input.computeServerId,\n status: \"pending\",\n solveCount: 0,\n liveVersionId: null,\n draftVersionId: null,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await this.data.definitions.create(ctx, record);\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(input.guid, 1, input.fileExt);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const version = {\n id: versionId,\n definitionId: input.guid,\n versionNumber: 1,\n fileExt: input.fileExt,\n fileKey,\n originalFilename: input.originalFilename,\n uploadedBy: actor,\n uploadedAt: now\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.attachInitialVersion(ctx, input.guid, versionId);\n return {\n record: { ...record, status: \"draft\", liveVersionId: versionId, draftVersionId: versionId },\n version\n };\n }\n /**\n * Upload a new version of an existing definition. Writes the blob, inserts\n * the version row, and advances the draft pointer. `live` is unchanged —\n * use `publish` to promote.\n */\n async uploadVersion(ctx, guid, file, ext, originalName, changeNote) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const versions = await this.data.definitions.listVersions(ctx, guid, { limit: 1 });\n const next = (versions.items[0]?.versionNumber ?? 0) + 1;\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(guid, next, ext);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || existing.ownerId;\n const version = {\n id: versionId,\n definitionId: guid,\n versionNumber: next,\n fileExt: ext,\n fileKey,\n originalFilename: originalName,\n uploadedBy: actor,\n uploadedAt: now,\n changeNote: changeNote?.trim() || void 0\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.setDraftVersion(ctx, guid, versionId);\n return version;\n }\n /**\n * Advance the live channel. If `versionId` is omitted, promotes the\n * current draft. Pass an arbitrary version id to roll forward/back —\n * spec §6 makes rollback a first-class operation.\n */\n async publish(ctx, guid, versionId) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const target = versionId ?? existing.draftVersionId;\n if (!target) throw new ProviderError(\"No version to publish\", 400);\n const version = await this.data.definitions.getVersion(ctx, target);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${target}' not found for this definition`, 404);\n }\n await this.data.definitions.setLiveVersion(ctx, guid, target);\n if (existing.status === \"draft\" || existing.status === \"pending\") {\n await this.data.definitions.update(ctx, guid, { status: \"published\" });\n }\n return version;\n }\n async deleteVersion(ctx, guid, versionId) {\n const version = await this.data.definitions.getVersion(ctx, versionId);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n await this.data.definitions.deleteVersion(ctx, versionId);\n await this.storage.delete(version.fileKey);\n }\n async updateMeta(ctx, guid, patch) {\n await this.data.definitions.update(ctx, guid, patch);\n }\n async saveCoverImage(ctx, guid, imageData) {\n const path2 = definitionPaths.image(guid);\n await this.storage.put(path2, imageData, \"image/webp\");\n const url = this.storage.getPublicUrl(path2);\n await this.data.definitions.update(ctx, guid, { coverImage: url });\n return url;\n }\n async delete(ctx, guid) {\n await this.data.definitions.delete(ctx, guid);\n await this.storage.deletePrefix(definitionPaths.prefix(guid));\n }\n}\nfunction envBool(e, key) {\n const v = e[key]?.toLowerCase();\n return v === \"true\" || v === \"1\" || v === \"yes\";\n}\nfunction pickAuth(e) {\n const choice = (e.SELVA_AUTH_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalAuthProvider.fromEnv(e);\n case \"supabase\":\n return SupabaseAuthProvider.fromEnv(e);\n case \"header\":\n return HeaderAuthProvider.fromEnv(e);\n default:\n throw new Error(\n `Unknown SELVA_AUTH_PROVIDER=\"${choice}\". Expected: local | supabase | header.`\n );\n }\n}\nfunction pickData(e) {\n const choice = (e.SELVA_DATA_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalDataProvider.fromEnv(e);\n case \"supabase\":\n return SupabaseDataProvider.fromEnv(e);\n default:\n throw new Error(`Unknown SELVA_DATA_PROVIDER=\"${choice}\". Expected: local | supabase.`);\n }\n}\nfunction pickStorage(e) {\n const choice = (e.SELVA_STORAGE_PROVIDER ?? \"local\").toLowerCase();\n switch (choice) {\n case \"local\":\n return LocalStorageProvider.fromEnv(e);\n case \"supabase\":\n return SupabaseStorageProvider.fromEnv(e);\n default:\n throw new Error(`Unknown SELVA_STORAGE_PROVIDER=\"${choice}\". Expected: local | supabase.`);\n }\n}\nfunction pickTenancy(e) {\n const choice = (e.SELVA_TENANCY ?? \"single\").toLowerCase();\n if (choice !== \"single\" && choice !== \"multi\") {\n throw new Error(`Unknown SELVA_TENANCY=\"${choice}\". Expected: single | multi.`);\n }\n return choice;\n}\nconst defaultConfig = defineConfig((e) => ({\n tenancy: pickTenancy(e),\n flags: {\n ALLOW_CROSS_ORG_PUBLIC: envBool(e, \"SELVA_FLAG_ALLOW_CROSS_ORG_PUBLIC\"),\n ALLOW_ORG_COMPUTE_OVERRIDE: envBool(e, \"SELVA_FLAG_ALLOW_ORG_COMPUTE_OVERRIDE\"),\n ALLOW_ORG_CREATION: envBool(e, \"SELVA_FLAG_ALLOW_ORG_CREATION\"),\n ENABLE_PLATFORM_PROJECTS: envBool(e, \"SELVA_FLAG_ENABLE_PLATFORM_PROJECTS\"),\n ENABLE_SHARING: envBool(e, \"SELVA_FLAG_ENABLE_SHARING\")\n },\n branding: {\n name: e.SELVA_BRAND_NAME,\n copyrightName: e.SELVA_BRAND_COPYRIGHT_NAME,\n tagline: e.SELVA_BRAND_TAGLINE,\n description: e.SELVA_BRAND_DESCRIPTION\n },\n auth: pickAuth(e),\n data: pickData(e),\n storage: pickStorage(e)\n}));\nasync function loadRawConfig() {\n const override = private_env.SELVA_CONFIG_PATH;\n if (!override) {\n return defaultConfig;\n }\n const abs = resolve(process.cwd(), override);\n if (!existsSync(abs)) {\n throw new Error(`SELVA_CONFIG_PATH=${override} resolved to ${abs} which does not exist.`);\n }\n const mod = await import(\n /* @vite-ignore */\n pathToFileURL(abs).href\n );\n return mod.default;\n}\nconst _raw = await loadRawConfig();\nconst providers = typeof _raw === \"function\" ? _raw(private_env) : _raw;\nconst tenancy = providers.tenancy ?? \"single\";\nconsole.log(\n `[selva] providers wired: auth=${providers.auth.name} data=${providers.data.constructor.name} storage=${providers.storage.constructor.name} tenancy=${tenancy}` + (private_env.SELVA_CONFIG_PATH ? ` config=${private_env.SELVA_CONFIG_PATH}` : \"\")\n);\nconst _brand = providers.branding ?? {};\nconst _name = _brand.name?.trim() || \"Selva\";\nconst branding = {\n name: _name,\n copyrightName: _brand.copyrightName?.trim() || _name,\n tagline: _brand.tagline?.trim() || \"Turn Grasshopper definitions into tools anyone can use.\",\n description: _brand.description?.trim() || `Build and deploy interactive web applications powered by Grasshopper definitions with ${_name}.`\n};\nproviders.flags ?? {};\nfunction flag(name) {\n return isFlagEnabled(providers, name);\n}\nconst definitionService = new DefinitionService(providers.data, providers.storage);\nfunction getAuthProvider() {\n return providers.auth;\n}\nfunction getStorageProvider() {\n return providers.storage;\n}\nfunction getDataProvider() {\n return providers.data;\n}\nfunction getOrganizationProvider() {\n return providers.data.orgs;\n}\nfunction getProjectProvider() {\n return providers.data.projects;\n}\nfunction getDefinitionMeta() {\n return providers.data.definitions;\n}\nfunction getComputeServerConfigStore() {\n return providers.data.computeServer;\n}\nfunction getUserProfileStore() {\n return providers.data.userProfile;\n}\nfunction getInviteStore() {\n return providers.data.invites;\n}\nfunction getPermissionStore() {\n return providers.data.permissions;\n}\nfunction getPlatformProjectGrantStore() {\n return providers.data.platformProjectGrants;\n}\nfunction getAuditQuery() {\n return providers.data.auditQuery ?? null;\n}\nexport {\n LocalComputeServerStore as L,\n MAX_PAGE_LIMIT as M,\n ProviderError as P,\n getOrganizationProvider as a,\n getProjectProvider as b,\n getPlatformProjectGrantStore as c,\n getUserProfileStore as d,\n getAuthProvider as e,\n flag as f,\n getComputeServerConfigStore as g,\n getPermissionStore as h,\n getDataProvider as i,\n getStorageProvider as j,\n definitionService as k,\n getDefinitionMeta as l,\n definitionPaths as m,\n getInviteStore as n,\n isPlatformServer as o,\n providers as p,\n isOrgServer as q,\n branding as r,\n getAuditQuery as s,\n tenancy as t\n};\n"],"names":[],"mappings":"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"}
|