@selvajs/selva 4.20.0-beta.13 → 4.20.0-beta.14
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/1XP9mPh6.js +1 -0
- package/build/client/_app/immutable/chunks/1XP9mPh6.js.br +0 -0
- package/build/client/_app/immutable/chunks/1XP9mPh6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPeQB-N1.js +1 -0
- package/build/client/_app/immutable/chunks/BPeQB-N1.js.br +1 -0
- package/build/client/_app/immutable/chunks/BPeQB-N1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CaReqmG-.js +1 -0
- package/build/client/_app/immutable/chunks/CaReqmG-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CaReqmG-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cd7PUBAe.js +1 -0
- package/build/client/_app/immutable/chunks/Cd7PUBAe.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cd7PUBAe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DDIgcaP1.js +1 -0
- package/build/client/_app/immutable/chunks/DDIgcaP1.js.br +2 -0
- package/build/client/_app/immutable/chunks/DDIgcaP1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DEjZ2Xq_.js +5668 -0
- package/build/client/_app/immutable/chunks/DEjZ2Xq_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DEjZ2Xq_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Mc0Lifi0.js +1 -0
- package/build/client/_app/immutable/chunks/Mc0Lifi0.js.br +1 -0
- package/build/client/_app/immutable/chunks/Mc0Lifi0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/RLIzEY_h.js +1 -0
- package/build/client/_app/immutable/chunks/RLIzEY_h.js.br +0 -0
- package/build/client/_app/immutable/chunks/RLIzEY_h.js.gz +0 -0
- package/build/client/_app/immutable/chunks/T2IMcJcx.js +2 -0
- package/build/client/_app/immutable/chunks/T2IMcJcx.js.br +0 -0
- package/build/client/_app/immutable/chunks/T2IMcJcx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Vb6iWNh-.js +1 -0
- package/build/client/_app/immutable/chunks/Vb6iWNh-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Vb6iWNh-.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BxlG4D6v.js +2 -0
- package/build/client/_app/immutable/entry/app.BxlG4D6v.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BxlG4D6v.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BdQOmgbe.js +1 -0
- package/build/client/_app/immutable/entry/start.BdQOmgbe.js.br +1 -0
- package/build/client/_app/immutable/entry/start.BdQOmgbe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BnoMaMbT.js +1 -0
- package/build/client/_app/immutable/nodes/1.BnoMaMbT.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BnoMaMbT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.Bf5JPk5c.js +3 -0
- package/build/client/_app/immutable/nodes/11.Bf5JPk5c.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.Bf5JPk5c.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.8WOI_Rny.js +2 -0
- package/build/client/_app/immutable/nodes/13.8WOI_Rny.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.8WOI_Rny.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.BIEikz7T.js +2 -0
- package/build/client/_app/immutable/nodes/14.BIEikz7T.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.BIEikz7T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.wtJxaZEU.js +28 -0
- package/build/client/_app/immutable/nodes/15.wtJxaZEU.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.wtJxaZEU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.DlJ0NfFV.js +5 -0
- package/build/client/_app/immutable/nodes/16.DlJ0NfFV.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.DlJ0NfFV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.DoKtyWVA.js +2 -0
- package/build/client/_app/immutable/nodes/17.DoKtyWVA.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.DoKtyWVA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.D1GC6b46.js +7 -0
- package/build/client/_app/immutable/nodes/19.D1GC6b46.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.D1GC6b46.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BoOsgbEN.js +1 -0
- package/build/client/_app/immutable/nodes/2.BoOsgbEN.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BoOsgbEN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.BvEc3BRn.js +2 -0
- package/build/client/_app/immutable/nodes/20.BvEc3BRn.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.BvEc3BRn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.CwUymu96.js +1 -0
- package/build/client/_app/immutable/nodes/21.CwUymu96.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.CwUymu96.js.gz +0 -0
- package/build/client/_app/immutable/nodes/22.UiyBrpx4.js +6 -0
- package/build/client/_app/immutable/nodes/22.UiyBrpx4.js.br +0 -0
- package/build/client/_app/immutable/nodes/22.UiyBrpx4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.Cf7f4Dk4.js +3 -0
- package/build/client/_app/immutable/nodes/24.Cf7f4Dk4.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.Cf7f4Dk4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/25.BGrOKfHq.js +16 -0
- package/build/client/_app/immutable/nodes/25.BGrOKfHq.js.br +0 -0
- package/build/client/_app/immutable/nodes/25.BGrOKfHq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/26.CXajQRFk.js +6 -0
- package/build/client/_app/immutable/nodes/26.CXajQRFk.js.br +0 -0
- package/build/client/_app/immutable/nodes/26.CXajQRFk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.BMMCB4MR.js +4 -0
- package/build/client/_app/immutable/nodes/29.BMMCB4MR.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.BMMCB4MR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.B5RsIbc5.js +1 -0
- package/build/client/_app/immutable/nodes/3.B5RsIbc5.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.B5RsIbc5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.BSbx9NvB.js +6 -0
- package/build/client/_app/immutable/nodes/30.BSbx9NvB.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.BSbx9NvB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/31.CHh6ichW.js +2 -0
- package/build/client/_app/immutable/nodes/31.CHh6ichW.js.br +0 -0
- package/build/client/_app/immutable/nodes/31.CHh6ichW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/32.DYlZfSfy.js +2 -0
- package/build/client/_app/immutable/nodes/32.DYlZfSfy.js.br +0 -0
- package/build/client/_app/immutable/nodes/32.DYlZfSfy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/34.BFmAh534.js +1 -0
- package/build/client/_app/immutable/nodes/34.BFmAh534.js.br +0 -0
- package/build/client/_app/immutable/nodes/34.BFmAh534.js.gz +0 -0
- package/build/client/_app/immutable/nodes/35.DHp9Oq2h.js +2 -0
- package/build/client/_app/immutable/nodes/35.DHp9Oq2h.js.br +0 -0
- package/build/client/_app/immutable/nodes/35.DHp9Oq2h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Qz5m15ys.js +1 -0
- package/build/client/_app/immutable/nodes/5.Qz5m15ys.js.br +1 -0
- package/build/client/_app/immutable/nodes/5.Qz5m15ys.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DHRda_iS.js +1 -0
- package/build/client/_app/immutable/nodes/6.DHRda_iS.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DHRda_iS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CtyhQ_s_.js +1 -0
- package/build/client/_app/immutable/nodes/7.CtyhQ_s_.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CtyhQ_s_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BVv9Nt3U.js +3 -0
- package/build/client/_app/immutable/nodes/8.BVv9Nt3U.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BVv9Nt3U.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.B5FjGjtL.js +1 -0
- package/build/client/_app/immutable/nodes/9.B5FjGjtL.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.B5FjGjtL.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/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/AppHeader.js-C6ROq5Qm.js +315 -0
- package/build/server/chunks/chunks/AppHeader.js-C6ROq5Qm.js.map +1 -0
- package/build/server/chunks/chunks/SettingsMenu.js-CjM22Nav.js +2642 -0
- package/build/server/chunks/chunks/SettingsMenu.js-CjM22Nav.js.map +1 -0
- package/build/server/chunks/chunks/SideNav.js-B-U6drKT.js +194 -0
- package/build/server/chunks/chunks/SideNav.js-B-U6drKT.js.map +1 -0
- package/build/server/chunks/chunks/access.server.js-DyEho9RH.js +15 -0
- package/build/server/chunks/chunks/access.server.js-DyEho9RH.js.map +1 -0
- package/build/server/chunks/chunks/access2.server.js-CGK2l9hh.js +63 -0
- package/build/server/chunks/chunks/access2.server.js-CGK2l9hh.js.map +1 -0
- package/build/server/chunks/chunks/admin-auth.server.js-Df9QJc2P.js +352 -0
- package/build/server/chunks/chunks/admin-auth.server.js-Df9QJc2P.js.map +1 -0
- package/build/server/chunks/chunks/api-errors.js-Byazqvy4.js +57 -0
- package/build/server/chunks/chunks/api-errors.js-Byazqvy4.js.map +1 -0
- package/build/server/chunks/chunks/api.js-CWQeuHWw.js +1165 -0
- package/build/server/chunks/chunks/api.js-CWQeuHWw.js.map +1 -0
- package/build/server/chunks/chunks/auth-bootstrap.server.js-MKkcsRfh.js +152 -0
- package/build/server/chunks/chunks/auth-bootstrap.server.js-MKkcsRfh.js.map +1 -0
- package/build/server/chunks/chunks/bootHealth.server.js-C87XV-z4.js +90 -0
- package/build/server/chunks/chunks/bootHealth.server.js-C87XV-z4.js.map +1 -0
- package/build/server/chunks/chunks/client.js-D26R0bt6.js +58 -0
- package/build/server/chunks/chunks/client.js-D26R0bt6.js.map +1 -0
- package/build/server/chunks/chunks/computeLimits.js-CQyJFKqu.js +44 -0
- package/build/server/chunks/chunks/computeLimits.js-CQyJFKqu.js.map +1 -0
- package/build/server/chunks/chunks/computeRateLimit.server.js-DnvPu8b5.js +31 -0
- package/build/server/chunks/chunks/computeRateLimit.server.js-DnvPu8b5.js.map +1 -0
- package/build/server/chunks/chunks/definitions.js-B_LZcC8G.js +387 -0
- package/build/server/chunks/chunks/definitions.js-B_LZcC8G.js.map +1 -0
- package/build/server/chunks/chunks/engine.server.js-BaQbE4CG.js +584 -0
- package/build/server/chunks/chunks/engine.server.js-BaQbE4CG.js.map +1 -0
- package/build/server/chunks/chunks/forms.js-CCPK1Yl5.js +2 -0
- package/build/server/chunks/chunks/forms.js-CCPK1Yl5.js.map +1 -0
- package/build/server/chunks/chunks/grasshopper.js-CdYz2gPd.js +2655 -0
- package/build/server/chunks/chunks/grasshopper.js-CdYz2gPd.js.map +1 -0
- package/build/server/chunks/chunks/handlers.js-BpDAlScc.js +1590 -0
- package/build/server/chunks/chunks/handlers.js-BpDAlScc.js.map +1 -0
- package/build/server/chunks/chunks/http.js-BNvBCntZ.js +60 -0
- package/build/server/chunks/chunks/http.js-BNvBCntZ.js.map +1 -0
- package/build/server/chunks/chunks/instanceAdmins.server.js-DxkF1Z8y.js +24 -0
- package/build/server/chunks/chunks/instanceAdmins.server.js-DxkF1Z8y.js.map +1 -0
- package/build/server/chunks/chunks/internal.js-BFfHHam5.js.map +1 -1
- package/build/server/chunks/chunks/internal2.js-Dx1x8Dv4.js +219 -0
- package/build/server/chunks/chunks/internal2.js-Dx1x8Dv4.js.map +1 -0
- package/build/server/chunks/chunks/navigation.js-CCPK1Yl5.js +2 -0
- package/build/server/chunks/chunks/navigation.js-CCPK1Yl5.js.map +1 -0
- package/build/server/chunks/chunks/oauth.js-WZFWOYa1.js +415 -0
- package/build/server/chunks/chunks/oauth.js-WZFWOYa1.js.map +1 -0
- package/build/server/chunks/chunks/openapi.js-g360-BRe.js +61 -0
- package/build/server/chunks/chunks/openapi.js-g360-BRe.js.map +1 -0
- package/build/server/chunks/chunks/package.js-B8ojgJpE.js +85 -0
- package/build/server/chunks/chunks/package.js-B8ojgJpE.js.map +1 -0
- package/build/server/chunks/chunks/paths.js-KeZkYLzj.js +19 -0
- package/build/server/chunks/chunks/paths.js-KeZkYLzj.js.map +1 -0
- package/build/server/chunks/chunks/permissions.server.js-B5seqY1O.js +24 -0
- package/build/server/chunks/chunks/permissions.server.js-B5seqY1O.js.map +1 -0
- package/build/server/chunks/chunks/presets.server.js-DvBaWEr5.js +21 -0
- package/build/server/chunks/chunks/presets.server.js-DvBaWEr5.js.map +1 -0
- package/build/server/chunks/chunks/providers.server.js-DbrdtkJK.js +6337 -0
- package/build/server/chunks/chunks/providers.server.js-DbrdtkJK.js.map +1 -0
- package/build/server/chunks/chunks/registry.js-C2zKBHg3.js +656 -0
- package/build/server/chunks/chunks/registry.js-C2zKBHg3.js.map +1 -0
- package/build/server/chunks/chunks/resolve.server.js-B04dvujb.js +59 -0
- package/build/server/chunks/chunks/resolve.server.js-B04dvujb.js.map +1 -0
- package/build/server/chunks/chunks/schema-extraction.js-DxFeK69H.js +141 -0
- package/build/server/chunks/chunks/schema-extraction.js-DxFeK69H.js.map +1 -0
- package/build/server/chunks/chunks/selfUpdate.server.js-DDD13rVB.js +144 -0
- package/build/server/chunks/chunks/selfUpdate.server.js-DDD13rVB.js.map +1 -0
- package/build/server/chunks/chunks/server2.js-BvOT__v3.js +103 -0
- package/build/server/chunks/chunks/server2.js-BvOT__v3.js.map +1 -0
- package/build/server/chunks/chunks/server3.js-Zec4zH4z.js +20753 -0
- package/build/server/chunks/chunks/server3.js-Zec4zH4z.js.map +1 -0
- package/build/server/chunks/chunks/solve.server.js-DvmmuTYF.js +315 -0
- package/build/server/chunks/chunks/solve.server.js-DvmmuTYF.js.map +1 -0
- package/build/server/chunks/chunks/state.js-DaNGuhKE.js +74 -0
- package/build/server/chunks/chunks/state.js-DaNGuhKE.js.map +1 -0
- package/build/server/chunks/chunks/stores.js-BAFlDJra.js +35 -0
- package/build/server/chunks/chunks/stores.js-BAFlDJra.js.map +1 -0
- package/build/server/chunks/chunks/sveltekit.js-CwkcUXXi.js +102 -0
- package/build/server/chunks/chunks/sveltekit.js-CwkcUXXi.js.map +1 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BxOaGAKh.js +18 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BxOaGAKh.js.map +1 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-DIxEFeXu.js +18 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-DIxEFeXu.js.map +1 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-1kMLbj9B.js +18 -0
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-1kMLbj9B.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-DCscdvEV.js +98 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-DCscdvEV.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-0Mj_mcJt.js +87 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-0Mj_mcJt.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-DLYgk9sQ.js +98 -0
- package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-DLYgk9sQ.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-wP88tWFd.js +47 -0
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-wP88tWFd.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-DigenazL.js +70 -0
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-DigenazL.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-DIh4cPwS.js +63 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-DIh4cPwS.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-llcZQfj0.js +35 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-llcZQfj0.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-C3mOC3fF.js +66 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-C3mOC3fF.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-C-MftkJL.js +81 -0
- package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-C-MftkJL.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-Bs5H8axR.js +366 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-Bs5H8axR.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-Bah8G82h.js +87 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-Bah8G82h.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-Dteez7Cv.js +610 -0
- package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-Dteez7Cv.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-ClKfsbNv.js +59 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-ClKfsbNv.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-CQqSb0fT.js +77 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-CQqSb0fT.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-o-X8J9FJ.js +84 -0
- package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-o-X8J9FJ.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-3RODCsN1.js +64 -0
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-3RODCsN1.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-DcpGuVwa.js +95 -0
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-DcpGuVwa.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BU-ZKLU7.js +62 -0
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BU-ZKLU7.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-h7cVEhJP.js +65 -0
- package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-h7cVEhJP.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-D1ku_J7c.js +94 -0
- package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-D1ku_J7c.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-ChQW_QNl.js +79 -0
- package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-ChQW_QNl.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-BKePykE0.js +49 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-BKePykE0.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-CHG-ElNV.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-CHG-ElNV.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-X-qJvWpy.js +50 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-X-qJvWpy.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-Cp5s2PJY.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-Cp5s2PJY.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-NPTY3bc-.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-NPTY3bc-.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-9KOm0qBe.js +51 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-9KOm0qBe.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-B6xk07be.js +98 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-B6xk07be.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-B4Q3VhGH.js +52 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-B4Q3VhGH.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-BYdFz8uv.js +48 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-BYdFz8uv.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-ClkMh71D.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-ClkMh71D.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CQ7MWiDU.js +50 -0
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CQ7MWiDU.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-UFnJTA69.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-UFnJTA69.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DEi4iWdw.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DEi4iWdw.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-v3-TzqWz.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-v3-TzqWz.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/openapi.json/_server.ts.js-BQaOmPav.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/openapi.json/_server.ts.js-BQaOmPav.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-hbeX5VQf.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-hbeX5VQf.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Ho6gZUbD.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Ho6gZUbD.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-R9DF-QVO.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-R9DF-QVO.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-J_7u9_KN.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-J_7u9_KN.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Dsqk-mkR.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Dsqk-mkR.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-BmGEfDxn.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-BmGEfDxn.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CIuO-a_b.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CIuO-a_b.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-DlFtEkDG.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-DlFtEkDG.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BFgCmiOg.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BFgCmiOg.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-DVZxyTje.js +46 -0
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-DVZxyTje.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-C_SQsTm4.js +49 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-C_SQsTm4.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-7n3xjWS8.js +48 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-7n3xjWS8.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-DtD7ztOa.js +48 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-DtD7ztOa.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-DU1zIks1.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-DU1zIks1.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-CZp_uEF7.js +47 -0
- package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-CZp_uEF7.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve/_solveId_/cancel/_server.ts.js-18Z61Qvh.js +49 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve/_solveId_/cancel/_server.ts.js-18Z61Qvh.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_server.ts.js-Sv3CtyRZ.js +109 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_server.ts.js-Sv3CtyRZ.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-COl6nqRv.js +67 -0
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-COl6nqRv.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BIQtmwhS.js +55 -0
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BIQtmwhS.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-zOe_S-al.js +61 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-zOe_S-al.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-6-slNAw_.js +66 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-6-slNAw_.js.map +1 -0
- package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DKNjGBRy.js +28 -0
- package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DKNjGBRy.js.map +1 -0
- package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-S_S09lGo.js +29 -0
- package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-S_S09lGo.js.map +1 -0
- package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-HqZfcLWV.js +32 -0
- package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-HqZfcLWV.js.map +1 -0
- package/build/server/chunks/entries/hooks.server.js-BIZRBlZI.js +376 -0
- package/build/server/chunks/entries/hooks.server.js-BIZRBlZI.js.map +1 -0
- package/build/server/chunks/entries/pages/_error.svelte.js-CR3ZMzSv.js +38 -0
- package/build/server/chunks/entries/pages/_error.svelte.js-CR3ZMzSv.js.map +1 -0
- package/build/server/chunks/entries/pages/_layout.server.ts.js-BD_gDYVJ.js +37 -0
- package/build/server/chunks/entries/pages/_layout.server.ts.js-BD_gDYVJ.js.map +1 -0
- package/build/server/chunks/entries/pages/_page.server.ts.js-BwjbAhOA.js +56 -0
- package/build/server/chunks/entries/pages/_page.server.ts.js-BwjbAhOA.js.map +1 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-DeW0z6uB.js +160 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-DeW0z6uB.js.map +1 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-BG63dUmh.js +180 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-BG63dUmh.js.map +1 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-8p3P5tRV.js +135 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-8p3P5tRV.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-K13l_c7B.js +40 -0
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-K13l_c7B.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CzYxoMn4.js +31 -0
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CzYxoMn4.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-CtCF11Mx.js +123 -0
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-CtCF11Mx.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-k8xyK-0r.js +76 -0
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-k8xyK-0r.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-CHb4pbbG.js +396 -0
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-CHb4pbbG.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-DmbG-JDV.js +269 -0
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-DmbG-JDV.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-BpynPgSW.js +74 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-BpynPgSW.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-2EyONotW.js +841 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-2EyONotW.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-By_wlwvD.js +35 -0
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-By_wlwvD.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CxcLfOOB.js +86 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CxcLfOOB.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DJollvmK.js +639 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DJollvmK.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DAQ9tm4R.js +42 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DAQ9tm4R.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-D7IYFtKB.js +286 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-D7IYFtKB.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-XVGE4_SA.js +87 -0
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-XVGE4_SA.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-D5CFBrZl.js +1389 -0
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-D5CFBrZl.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-CEQCsHhA.js +79 -0
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-CEQCsHhA.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-B9r69hfP.js +636 -0
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-B9r69hfP.js.map +1 -0
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-Dk8pTxVa.js +46 -0
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-Dk8pTxVa.js.map +1 -0
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DqfD9TXW.js +62 -0
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DqfD9TXW.js.map +1 -0
- package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-FybPSZ7O.js +62 -0
- package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-FybPSZ7O.js.map +1 -0
- package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-aorD3DQs.js +85 -0
- package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-aorD3DQs.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-CXkNtj9Q.js +119 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-CXkNtj9Q.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-uQpR3GHm.js +14439 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-uQpR3GHm.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-B2c2vX6l.js +51 -0
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-B2c2vX6l.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_page.svelte.js-CqOdymIO.js +301 -0
- package/build/server/chunks/entries/pages/library/_page.svelte.js-CqOdymIO.js.map +1 -0
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-DIgVeHOJ.js +101 -0
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-DIgVeHOJ.js.map +1 -0
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DrUgnKb0.js +214 -0
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DrUgnKb0.js.map +1 -0
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-DBfzDyQO.js +19 -0
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-DBfzDyQO.js.map +1 -0
- package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-BYm9z99H.js +103 -0
- package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-BYm9z99H.js.map +1 -0
- package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-Y_pwq4PL.js +133 -0
- package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-Y_pwq4PL.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-pzcP1UHQ.js +50 -0
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-pzcP1UHQ.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-9bIgSAoI.js +93 -0
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-9bIgSAoI.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-QeRk767A.js +3635 -0
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-QeRk767A.js.map +1 -0
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DTVXv4_5.js +116 -0
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DTVXv4_5.js.map +1 -0
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CH8fkvVN.js +249 -0
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CH8fkvVN.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CVc9agc3.js +28 -0
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CVc9agc3.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-BFipXO9z.js +176 -0
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-BFipXO9z.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-BKsGPBu7.js +35 -0
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-BKsGPBu7.js.map +1 -0
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-nJ5oUEdJ.js +42 -0
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-nJ5oUEdJ.js.map +1 -0
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-HvTh1Vab.js +616 -0
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-HvTh1Vab.js.map +1 -0
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-DG45szX9.js +62 -0
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-DG45szX9.js.map +1 -0
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-CociwG1M.js +807 -0
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-CociwG1M.js.map +1 -0
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CkjHotCp.js +60 -0
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CkjHotCp.js.map +1 -0
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DjN7l3UT.js +424 -0
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DjN7l3UT.js.map +1 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-BcOmEaIB.js +67 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-BcOmEaIB.js.map +1 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-DyW7kVAk.js +266 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-DyW7kVAk.js.map +1 -0
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-5fhbiXJW.js +34 -0
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-5fhbiXJW.js.map +1 -0
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-COEiWSTf.js +29 -0
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-COEiWSTf.js.map +1 -0
- package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-DsJl3T7V.js +314 -0
- package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-DsJl3T7V.js.map +1 -0
- package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cv-jmBVK.js +65 -0
- package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cv-jmBVK.js.map +1 -0
- package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BXR5pHwv.js +736 -0
- package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BXR5pHwv.js.map +1 -0
- package/build/server/chunks/handler-BVJg1IbX.js +1206 -0
- package/build/server/chunks/handler-BVJg1IbX.js.map +1 -0
- package/build/server/chunks/index.js-CrJG7a-_.js +3743 -0
- package/build/server/chunks/index.js-CrJG7a-_.js.map +1 -0
- package/build/server/chunks/manifest.js-9CYdbyKr.js +719 -0
- package/build/server/chunks/manifest.js-9CYdbyKr.js.map +1 -0
- package/build/server/chunks/nodes/0.js-3pmtvMZq.js +54 -0
- package/build/server/chunks/nodes/0.js-3pmtvMZq.js.map +1 -0
- package/build/server/chunks/nodes/1.js-Cj0DPEY2.js +9 -0
- package/build/server/chunks/nodes/1.js-Cj0DPEY2.js.map +1 -0
- package/build/server/chunks/nodes/10.js-DjJqD8cC.js +34 -0
- package/build/server/chunks/nodes/10.js-DjJqD8cC.js.map +1 -0
- package/build/server/chunks/nodes/11.js-CXJhGhH3.js +38 -0
- package/build/server/chunks/nodes/11.js-CXJhGhH3.js.map +1 -0
- package/build/server/chunks/nodes/12.js-BhEuW4Gs.js +31 -0
- package/build/server/chunks/nodes/12.js-BhEuW4Gs.js.map +1 -0
- package/build/server/chunks/nodes/13.js-BV8SZoKH.js +31 -0
- package/build/server/chunks/nodes/13.js-BV8SZoKH.js.map +1 -0
- package/build/server/chunks/nodes/14.js-DwKbOIK2.js +31 -0
- package/build/server/chunks/nodes/14.js-DwKbOIK2.js.map +1 -0
- package/build/server/chunks/nodes/15.js-EuOVmGiZ.js +39 -0
- package/build/server/chunks/nodes/15.js-EuOVmGiZ.js.map +1 -0
- package/build/server/chunks/nodes/16.js-DIp1sACa.js +34 -0
- package/build/server/chunks/nodes/16.js-DIp1sACa.js.map +1 -0
- package/build/server/chunks/nodes/17.js-8oTQG_-2.js +9 -0
- package/build/server/chunks/nodes/17.js-8oTQG_-2.js.map +1 -0
- package/build/server/chunks/nodes/18.js-BXLHGlSH.js +40 -0
- package/build/server/chunks/nodes/18.js-BXLHGlSH.js.map +1 -0
- package/build/server/chunks/nodes/19.js-BlFIJsgl.js +25 -0
- package/build/server/chunks/nodes/19.js-BlFIJsgl.js.map +1 -0
- package/build/server/chunks/nodes/2.js-KGh3WMtg.js +34 -0
- package/build/server/chunks/nodes/2.js-KGh3WMtg.js.map +1 -0
- package/build/server/chunks/nodes/20.js-DPBpuWGP.js +24 -0
- package/build/server/chunks/nodes/20.js-DPBpuWGP.js.map +1 -0
- package/build/server/chunks/nodes/21.js-rCVkOJ5W.js +41 -0
- package/build/server/chunks/nodes/21.js-rCVkOJ5W.js.map +1 -0
- package/build/server/chunks/nodes/22.js-XqaqffTZ.js +40 -0
- package/build/server/chunks/nodes/22.js-XqaqffTZ.js.map +1 -0
- package/build/server/chunks/nodes/23.js-BaYXe7NW.js +37 -0
- package/build/server/chunks/nodes/23.js-BaYXe7NW.js.map +1 -0
- package/build/server/chunks/nodes/24.js-Bz0uTBJa.js +53 -0
- package/build/server/chunks/nodes/24.js-Bz0uTBJa.js.map +1 -0
- package/build/server/chunks/nodes/25.js-BWX6nfsg.js +33 -0
- package/build/server/chunks/nodes/25.js-BWX6nfsg.js.map +1 -0
- package/build/server/chunks/nodes/26.js-Dup_ter0.js +40 -0
- package/build/server/chunks/nodes/26.js-Dup_ter0.js.map +1 -0
- package/build/server/chunks/nodes/27.js-BEUAmtL6.js +31 -0
- package/build/server/chunks/nodes/27.js-BEUAmtL6.js.map +1 -0
- package/build/server/chunks/nodes/29.js-hVNcerml.js +31 -0
- package/build/server/chunks/nodes/29.js-hVNcerml.js.map +1 -0
- package/build/server/chunks/nodes/3.js-CJRnGuBX.js +9 -0
- package/build/server/chunks/nodes/3.js-CJRnGuBX.js.map +1 -0
- package/build/server/chunks/nodes/30.js-CrpIx0yO.js +31 -0
- package/build/server/chunks/nodes/30.js-CrpIx0yO.js.map +1 -0
- package/build/server/chunks/nodes/31.js-CfatoH1-.js +34 -0
- package/build/server/chunks/nodes/31.js-CfatoH1-.js.map +1 -0
- package/build/server/chunks/nodes/32.js-u84xoe5E.js +31 -0
- package/build/server/chunks/nodes/32.js-u84xoe5E.js.map +1 -0
- package/build/server/chunks/nodes/33.js-DiC1927s.js +31 -0
- package/build/server/chunks/nodes/33.js-DiC1927s.js.map +1 -0
- package/build/server/chunks/nodes/34.js-cPddK-8A.js +31 -0
- package/build/server/chunks/nodes/34.js-cPddK-8A.js.map +1 -0
- package/build/server/chunks/nodes/35.js-RpNpvUFE.js +54 -0
- package/build/server/chunks/nodes/35.js-RpNpvUFE.js.map +1 -0
- package/build/server/chunks/nodes/5.js-WjwWIk7-.js +15 -0
- package/build/server/chunks/nodes/5.js-WjwWIk7-.js.map +1 -0
- package/build/server/chunks/nodes/6.js-6mJBLIGs.js +31 -0
- package/build/server/chunks/nodes/6.js-6mJBLIGs.js.map +1 -0
- package/build/server/chunks/nodes/7.js-BjHeLfau.js +24 -0
- package/build/server/chunks/nodes/7.js-BjHeLfau.js.map +1 -0
- package/build/server/chunks/nodes/8.js-eiZc7Xpf.js +41 -0
- package/build/server/chunks/nodes/8.js-eiZc7Xpf.js.map +1 -0
- package/build/server/chunks/nodes/9.js-DwjqUHv3.js +31 -0
- package/build/server/chunks/nodes/9.js-DwjqUHv3.js.map +1 -0
- package/package.json +6 -6
- package/build/client/_app/immutable/chunks/B-zMhBrs.js +0 -1
- package/build/client/_app/immutable/chunks/B-zMhBrs.js.br +0 -2
- package/build/client/_app/immutable/chunks/B-zMhBrs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDGHeNOh.js +0 -1
- package/build/client/_app/immutable/chunks/BDGHeNOh.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDGHeNOh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BH52uY8w.js +0 -1
- package/build/client/_app/immutable/chunks/BH52uY8w.js.br +0 -2
- package/build/client/_app/immutable/chunks/BH52uY8w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BtQ4fxq9.js +0 -1
- package/build/client/_app/immutable/chunks/BtQ4fxq9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BtQ4fxq9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BwLnxyAF.js +0 -1
- package/build/client/_app/immutable/chunks/BwLnxyAF.js.br +0 -1
- package/build/client/_app/immutable/chunks/BwLnxyAF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzLb2Z1B.js +0 -1
- package/build/client/_app/immutable/chunks/CzLb2Z1B.js.br +0 -0
- package/build/client/_app/immutable/chunks/CzLb2Z1B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJPHiuwU.js +0 -1
- package/build/client/_app/immutable/chunks/DJPHiuwU.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJPHiuwU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DbpvvJF4.js +0 -2
- package/build/client/_app/immutable/chunks/DbpvvJF4.js.br +0 -0
- package/build/client/_app/immutable/chunks/DbpvvJF4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/WPnKa7rX.js +0 -5668
- package/build/client/_app/immutable/chunks/WPnKa7rX.js.br +0 -0
- package/build/client/_app/immutable/chunks/WPnKa7rX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/t2AjkGt1.js +0 -1
- package/build/client/_app/immutable/chunks/t2AjkGt1.js.br +0 -0
- package/build/client/_app/immutable/chunks/t2AjkGt1.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CPDP9L-f.js +0 -2
- package/build/client/_app/immutable/entry/app.CPDP9L-f.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CPDP9L-f.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DSTH0Fid.js +0 -1
- package/build/client/_app/immutable/entry/start.DSTH0Fid.js.br +0 -1
- package/build/client/_app/immutable/entry/start.DSTH0Fid.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1._UcMSb3F.js +0 -1
- package/build/client/_app/immutable/nodes/1._UcMSb3F.js.br +0 -0
- package/build/client/_app/immutable/nodes/1._UcMSb3F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CijlvPMO.js +0 -3
- package/build/client/_app/immutable/nodes/11.CijlvPMO.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.CijlvPMO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.qmgDQRZV.js +0 -2
- package/build/client/_app/immutable/nodes/13.qmgDQRZV.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.qmgDQRZV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.ClNQFBf3.js +0 -2
- package/build/client/_app/immutable/nodes/14.ClNQFBf3.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.ClNQFBf3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DnoOuPG8.js +0 -28
- package/build/client/_app/immutable/nodes/15.DnoOuPG8.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DnoOuPG8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.BUl5Yql1.js +0 -5
- package/build/client/_app/immutable/nodes/16.BUl5Yql1.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.BUl5Yql1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.V5So7J6L.js +0 -2
- package/build/client/_app/immutable/nodes/17.V5So7J6L.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.V5So7J6L.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.BDKcKkFj.js +0 -7
- package/build/client/_app/immutable/nodes/19.BDKcKkFj.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.BDKcKkFj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.2v3IHaFe.js +0 -1
- package/build/client/_app/immutable/nodes/2.2v3IHaFe.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.2v3IHaFe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js +0 -2
- package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.D36SNSeq.js +0 -1
- package/build/client/_app/immutable/nodes/21.D36SNSeq.js.br +0 -1
- package/build/client/_app/immutable/nodes/21.D36SNSeq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/22.BXARockJ.js +0 -6
- package/build/client/_app/immutable/nodes/22.BXARockJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/22.BXARockJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js +0 -3
- package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/25.BBG-xZ47.js +0 -16
- package/build/client/_app/immutable/nodes/25.BBG-xZ47.js.br +0 -0
- package/build/client/_app/immutable/nodes/25.BBG-xZ47.js.gz +0 -0
- package/build/client/_app/immutable/nodes/26.uqR9HLtD.js +0 -6
- package/build/client/_app/immutable/nodes/26.uqR9HLtD.js.br +0 -0
- package/build/client/_app/immutable/nodes/26.uqR9HLtD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js +0 -4
- package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.Bod8L8YM.js +0 -1
- package/build/client/_app/immutable/nodes/3.Bod8L8YM.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Bod8L8YM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.DQSv6U5-.js +0 -6
- package/build/client/_app/immutable/nodes/30.DQSv6U5-.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.DQSv6U5-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/31.P95mZH4t.js +0 -2
- package/build/client/_app/immutable/nodes/31.P95mZH4t.js.br +0 -0
- package/build/client/_app/immutable/nodes/31.P95mZH4t.js.gz +0 -0
- package/build/client/_app/immutable/nodes/32.DE7UTiKI.js +0 -2
- package/build/client/_app/immutable/nodes/32.DE7UTiKI.js.br +0 -0
- package/build/client/_app/immutable/nodes/32.DE7UTiKI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/34.BqEVkxy2.js +0 -1
- package/build/client/_app/immutable/nodes/34.BqEVkxy2.js.br +0 -0
- package/build/client/_app/immutable/nodes/34.BqEVkxy2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/35.ff_N8TmL.js +0 -2
- package/build/client/_app/immutable/nodes/35.ff_N8TmL.js.br +0 -0
- package/build/client/_app/immutable/nodes/35.ff_N8TmL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D4jyogT_.js +0 -1
- package/build/client/_app/immutable/nodes/5.D4jyogT_.js.br +0 -1
- package/build/client/_app/immutable/nodes/5.D4jyogT_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.w9mUqeNu.js +0 -1
- package/build/client/_app/immutable/nodes/6.w9mUqeNu.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.w9mUqeNu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js +0 -1
- package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js +0 -3
- package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js +0 -1
- package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js.gz +0 -0
- package/build/server/chunks/chunks/AppHeader.js-Abbseujn.js +0 -315
- package/build/server/chunks/chunks/AppHeader.js-Abbseujn.js.map +0 -1
- package/build/server/chunks/chunks/SettingsMenu.js-DWwdC5RG.js +0 -2642
- package/build/server/chunks/chunks/SettingsMenu.js-DWwdC5RG.js.map +0 -1
- package/build/server/chunks/chunks/SideNav.js-DZDQqLfS.js +0 -194
- package/build/server/chunks/chunks/SideNav.js-DZDQqLfS.js.map +0 -1
- package/build/server/chunks/chunks/access.server.js-DhZLZ_XT.js +0 -14
- package/build/server/chunks/chunks/access.server.js-DhZLZ_XT.js.map +0 -1
- package/build/server/chunks/chunks/access2.server.js-Bd_36Xkf.js +0 -63
- package/build/server/chunks/chunks/access2.server.js-Bd_36Xkf.js.map +0 -1
- package/build/server/chunks/chunks/admin-auth.server.js-CoIg7Zop.js +0 -352
- package/build/server/chunks/chunks/admin-auth.server.js-CoIg7Zop.js.map +0 -1
- package/build/server/chunks/chunks/api-errors.js-Bm_QEOn1.js +0 -57
- package/build/server/chunks/chunks/api-errors.js-Bm_QEOn1.js.map +0 -1
- package/build/server/chunks/chunks/api.js-BPQNKNcW.js +0 -1020
- package/build/server/chunks/chunks/api.js-BPQNKNcW.js.map +0 -1
- package/build/server/chunks/chunks/auth-bootstrap.server.js-CmXdZkFH.js +0 -152
- package/build/server/chunks/chunks/auth-bootstrap.server.js-CmXdZkFH.js.map +0 -1
- package/build/server/chunks/chunks/bootHealth.server.js-CcAjMX3G.js +0 -90
- package/build/server/chunks/chunks/bootHealth.server.js-CcAjMX3G.js.map +0 -1
- package/build/server/chunks/chunks/client.js-C8E6Qrko.js +0 -58
- package/build/server/chunks/chunks/client.js-C8E6Qrko.js.map +0 -1
- package/build/server/chunks/chunks/computeLimits.js-Bm6rd23g.js +0 -44
- package/build/server/chunks/chunks/computeLimits.js-Bm6rd23g.js.map +0 -1
- package/build/server/chunks/chunks/computeRateLimit.server.js-CZrK5Z1p.js +0 -31
- package/build/server/chunks/chunks/computeRateLimit.server.js-CZrK5Z1p.js.map +0 -1
- package/build/server/chunks/chunks/definitions.js-B3KKmPQd.js +0 -387
- package/build/server/chunks/chunks/definitions.js-B3KKmPQd.js.map +0 -1
- package/build/server/chunks/chunks/engine.server.js-CWoRi_z0.js +0 -584
- package/build/server/chunks/chunks/engine.server.js-CWoRi_z0.js.map +0 -1
- package/build/server/chunks/chunks/forms.js-Dg5gzuB5.js +0 -2
- package/build/server/chunks/chunks/forms.js-Dg5gzuB5.js.map +0 -1
- package/build/server/chunks/chunks/grasshopper.js-DB9sr3wP.js +0 -2655
- package/build/server/chunks/chunks/grasshopper.js-DB9sr3wP.js.map +0 -1
- package/build/server/chunks/chunks/handlers.js-BjiKmPjC.js +0 -1590
- package/build/server/chunks/chunks/handlers.js-BjiKmPjC.js.map +0 -1
- package/build/server/chunks/chunks/http.js-Bbwf8Fav.js +0 -60
- package/build/server/chunks/chunks/http.js-Bbwf8Fav.js.map +0 -1
- package/build/server/chunks/chunks/instanceAdmins.server.js-DjriGEGN.js +0 -24
- package/build/server/chunks/chunks/instanceAdmins.server.js-DjriGEGN.js.map +0 -1
- package/build/server/chunks/chunks/internal2.js-DD9XVJa8.js +0 -219
- package/build/server/chunks/chunks/internal2.js-DD9XVJa8.js.map +0 -1
- package/build/server/chunks/chunks/navigation.js-Dg5gzuB5.js +0 -2
- package/build/server/chunks/chunks/navigation.js-Dg5gzuB5.js.map +0 -1
- package/build/server/chunks/chunks/oauth.js-BQQQPw3V.js +0 -415
- package/build/server/chunks/chunks/oauth.js-BQQQPw3V.js.map +0 -1
- package/build/server/chunks/chunks/openapi.js-B2z-mLRN.js +0 -61
- package/build/server/chunks/chunks/openapi.js-B2z-mLRN.js.map +0 -1
- package/build/server/chunks/chunks/package.js-dBjH1edM.js +0 -85
- package/build/server/chunks/chunks/package.js-dBjH1edM.js.map +0 -1
- package/build/server/chunks/chunks/paths.js-E7XOh9UY.js +0 -19
- package/build/server/chunks/chunks/paths.js-E7XOh9UY.js.map +0 -1
- package/build/server/chunks/chunks/permissions.server.js-gbSRvX5y.js +0 -24
- package/build/server/chunks/chunks/permissions.server.js-gbSRvX5y.js.map +0 -1
- package/build/server/chunks/chunks/presets.server.js-DCkR-h3r.js +0 -21
- package/build/server/chunks/chunks/presets.server.js-DCkR-h3r.js.map +0 -1
- package/build/server/chunks/chunks/providers.server.js-DkEGnykl.js +0 -6337
- package/build/server/chunks/chunks/providers.server.js-DkEGnykl.js.map +0 -1
- package/build/server/chunks/chunks/registry.js-CJHdVPbv.js +0 -656
- package/build/server/chunks/chunks/registry.js-CJHdVPbv.js.map +0 -1
- package/build/server/chunks/chunks/request.js-I-exgA0e.js +0 -119
- package/build/server/chunks/chunks/request.js-I-exgA0e.js.map +0 -1
- package/build/server/chunks/chunks/resolve.server.js-BWYJQNGw.js +0 -59
- package/build/server/chunks/chunks/resolve.server.js-BWYJQNGw.js.map +0 -1
- package/build/server/chunks/chunks/schema-extraction.js-BbRGn45E.js +0 -141
- package/build/server/chunks/chunks/schema-extraction.js-BbRGn45E.js.map +0 -1
- package/build/server/chunks/chunks/selfUpdate.server.js-CRKGfxzn.js +0 -144
- package/build/server/chunks/chunks/selfUpdate.server.js-CRKGfxzn.js.map +0 -1
- package/build/server/chunks/chunks/server2.js-C2WwvMlU.js +0 -98
- package/build/server/chunks/chunks/server2.js-C2WwvMlU.js.map +0 -1
- package/build/server/chunks/chunks/server3.js-g63fGksF.js +0 -20731
- package/build/server/chunks/chunks/server3.js-g63fGksF.js.map +0 -1
- package/build/server/chunks/chunks/solve.server.js-Dx9T8AVC.js +0 -315
- package/build/server/chunks/chunks/solve.server.js-Dx9T8AVC.js.map +0 -1
- package/build/server/chunks/chunks/state.js-DUDWVFo9.js +0 -74
- package/build/server/chunks/chunks/state.js-DUDWVFo9.js.map +0 -1
- package/build/server/chunks/chunks/stores.js-MbQQwrsF.js +0 -35
- package/build/server/chunks/chunks/stores.js-MbQQwrsF.js.map +0 -1
- package/build/server/chunks/chunks/sveltekit.js-CbVs04xQ.js +0 -102
- package/build/server/chunks/chunks/sveltekit.js-CbVs04xQ.js.map +0 -1
- package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BpMnVHeu.js +0 -18
- package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BpMnVHeu.js.map +0 -1
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-BYo_zjAf.js +0 -18
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-BYo_zjAf.js.map +0 -1
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-e1JF6I9H.js +0 -18
- package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-e1JF6I9H.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-D4eVloUx.js +0 -98
- package/build/server/chunks/entries/endpoints/api/admin/compute/_server.ts.js-D4eVloUx.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-okYhq2IM.js +0 -87
- package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-okYhq2IM.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-BcNmf5o7.js +0 -98
- package/build/server/chunks/entries/endpoints/api/admin/compute/status/_server.ts.js-BcNmf5o7.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-CbJgXmaD.js +0 -48
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_id_/_server.ts.js-CbJgXmaD.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-zh3ixoay.js +0 -71
- package/build/server/chunks/entries/endpoints/api/admin/orgs/_server.ts.js-zh3ixoay.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-Crt-Z5w4.js +0 -64
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/_server.ts.js-Crt-Z5w4.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-IXoRUnmz.js +0 -36
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_grantId_/_server.ts.js-IXoRUnmz.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-B9w1GSY6.js +0 -67
- package/build/server/chunks/entries/endpoints/api/admin/projects/_id_/grants/_server.ts.js-B9w1GSY6.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-CFHPOJFJ.js +0 -82
- package/build/server/chunks/entries/endpoints/api/admin/projects/_server.ts.js-CFHPOJFJ.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-CdnNwzkF.js +0 -366
- package/build/server/chunks/entries/endpoints/api/admin/system/health/_server.ts.js-CdnNwzkF.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-CKrhL1UA.js +0 -87
- package/build/server/chunks/entries/endpoints/api/admin/system/throughput/_server.ts.js-CKrhL1UA.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-ktKHXlWg.js +0 -610
- package/build/server/chunks/entries/endpoints/api/admin/system/update/_server.ts.js-ktKHXlWg.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-RAuKUDcV.js +0 -60
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/_server.ts.js-RAuKUDcV.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-DorXcNXG.js +0 -78
- package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-DorXcNXG.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-D_Ju6wyq.js +0 -85
- package/build/server/chunks/entries/endpoints/api/admin/users/_server.ts.js-D_Ju6wyq.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-CvusMz5O.js +0 -64
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-CvusMz5O.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-CbEiSDY8.js +0 -95
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-CbEiSDY8.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BFD-Sx4x.js +0 -62
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BFD-Sx4x.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-CvxB71Sp.js +0 -65
- package/build/server/chunks/entries/endpoints/api/health/ready/_server.ts.js-CvxB71Sp.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-Bm5saFIn.js +0 -94
- package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-Bm5saFIn.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-C19wOytv.js +0 -79
- package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-C19wOytv.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-0SswZnIs.js +0 -50
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-0SswZnIs.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-BVHHK9Rk.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-BVHHK9Rk.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-laJ35u6I.js +0 -51
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-laJ35u6I.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C5vTK72Y.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C5vTK72Y.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-CbyU4_zs.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-CbyU4_zs.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DDVnrR0I.js +0 -52
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DDVnrR0I.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-uIfKZZ0c.js +0 -99
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-uIfKZZ0c.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js--r2g8CUk.js +0 -53
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js--r2g8CUk.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-DkB8bmS-.js +0 -49
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-DkB8bmS-.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-7XGSthmn.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-7XGSthmn.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CgAi2Eo0.js +0 -51
- package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CgAi2Eo0.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-iLUUcLrj.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-iLUUcLrj.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DO0EJhA9.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DO0EJhA9.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-BeD8wNVo.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-BeD8wNVo.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/openapi.json/_server.ts.js-DaBeAkia.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/openapi.json/_server.ts.js-DaBeAkia.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-bm0jwTEb.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-bm0jwTEb.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Bq2R9-Tl.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Bq2R9-Tl.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DqVv4A9x.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DqVv4A9x.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-CXutuyKH.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-CXutuyKH.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Btg7fWF-.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Btg7fWF-.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CWhfKht8.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CWhfKht8.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CAlLOCgR.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CAlLOCgR.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-BQY59qkv.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-BQY59qkv.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BlfJzy1a.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BlfJzy1a.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B9mG86SM.js +0 -47
- package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B9mG86SM.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-DWYa62QS.js +0 -50
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-DWYa62QS.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Cg3gq2Hp.js +0 -49
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Cg3gq2Hp.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BPKhKgMw.js +0 -49
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BPKhKgMw.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-CISk9Iw8.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-CISk9Iw8.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DG9WSmLg.js +0 -48
- package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DG9WSmLg.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/solve/_solveId_/cancel/_server.ts.js-BABkeqJq.js +0 -49
- package/build/server/chunks/entries/endpoints/api/v1/solve/_solveId_/cancel/_server.ts.js-BABkeqJq.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_server.ts.js-Dfsy_iYc.js +0 -109
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_server.ts.js-Dfsy_iYc.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-BK-lOawi.js +0 -67
- package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-BK-lOawi.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BJ2wuISH.js +0 -55
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BJ2wuISH.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-JVuVmA3s.js +0 -61
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-JVuVmA3s.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DrUKNc4F.js +0 -66
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-DrUKNc4F.js.map +0 -1
- package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DpU05U9_.js +0 -28
- package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DpU05U9_.js.map +0 -1
- package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-BeGiswan.js +0 -29
- package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-BeGiswan.js.map +0 -1
- package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-Cm5wZNFF.js +0 -32
- package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-Cm5wZNFF.js.map +0 -1
- package/build/server/chunks/entries/hooks.server.js-BwL4kkZ5.js +0 -376
- package/build/server/chunks/entries/hooks.server.js-BwL4kkZ5.js.map +0 -1
- package/build/server/chunks/entries/pages/_error.svelte.js-DD1a9TnH.js +0 -38
- package/build/server/chunks/entries/pages/_error.svelte.js-DD1a9TnH.js.map +0 -1
- package/build/server/chunks/entries/pages/_layout.server.ts.js-CoiPlHif.js +0 -37
- package/build/server/chunks/entries/pages/_layout.server.ts.js-CoiPlHif.js.map +0 -1
- package/build/server/chunks/entries/pages/_page.server.ts.js-CibcYANz.js +0 -56
- package/build/server/chunks/entries/pages/_page.server.ts.js-CibcYANz.js.map +0 -1
- package/build/server/chunks/entries/pages/_page.svelte.js-CZ31-bPT.js +0 -160
- package/build/server/chunks/entries/pages/_page.svelte.js-CZ31-bPT.js.map +0 -1
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CZKb5H0B.js +0 -180
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CZKb5H0B.js.map +0 -1
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-BpTbHMgN.js +0 -135
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-BpTbHMgN.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-C3iyAX7W.js +0 -40
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-C3iyAX7W.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-8GHtw2tk.js +0 -31
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-8GHtw2tk.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DE9tE8od.js +0 -123
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DE9tE8od.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BxsVAFMN.js +0 -76
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BxsVAFMN.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-D4gWhpSj.js +0 -396
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-D4gWhpSj.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-mjAQ2wxq.js +0 -269
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-mjAQ2wxq.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-CZnrxRxt.js +0 -74
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-CZnrxRxt.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-DbuhgX6q.js +0 -841
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-DbuhgX6q.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-8K71wcGq.js +0 -35
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-8K71wcGq.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CBJiQB5K.js +0 -86
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-CBJiQB5K.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-BsLAosAm.js +0 -639
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-BsLAosAm.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-CINq5OVZ.js +0 -42
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-CINq5OVZ.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DxxC3JfO.js +0 -286
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DxxC3JfO.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-Cy1gD5um.js +0 -87
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-Cy1gD5um.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DF3T-zLH.js +0 -1389
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DF3T-zLH.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-ndRmAUrK.js +0 -79
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-ndRmAUrK.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-4rk-NaOA.js +0 -636
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-4rk-NaOA.js.map +0 -1
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-mWVtT6qk.js +0 -46
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-mWVtT6qk.js.map +0 -1
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-BCPs0IiQ.js +0 -62
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-BCPs0IiQ.js.map +0 -1
- package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-YUxt6Fen.js +0 -62
- package/build/server/chunks/entries/pages/docs/api/_page.server.ts.js-YUxt6Fen.js.map +0 -1
- package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-BSjIf8IN.js +0 -85
- package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-BSjIf8IN.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-C3phiB21.js +0 -119
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-C3phiB21.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-CBB75dBy.js +0 -14439
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-CBB75dBy.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-fGBhC-1m.js +0 -51
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-fGBhC-1m.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_page.svelte.js-CsxydsOA.js +0 -301
- package/build/server/chunks/entries/pages/library/_page.svelte.js-CsxydsOA.js.map +0 -1
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bu3-iu45.js +0 -101
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bu3-iu45.js.map +0 -1
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DGzS34Cr.js +0 -214
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DGzS34Cr.js.map +0 -1
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BrkeB7N9.js +0 -19
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BrkeB7N9.js.map +0 -1
- package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-C0nU5I17.js +0 -103
- package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-C0nU5I17.js.map +0 -1
- package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-imRYafwU.js +0 -133
- package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-imRYafwU.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Cn156ZVY.js +0 -50
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Cn156ZVY.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-DH_pAliG.js +0 -93
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-DH_pAliG.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-BgfctG6a.js +0 -3635
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-BgfctG6a.js.map +0 -1
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-BDBnIot2.js +0 -116
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-BDBnIot2.js.map +0 -1
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-xmjhZXLK.js +0 -249
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-xmjhZXLK.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CPAY46Q7.js +0 -28
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-CPAY46Q7.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-CuQ6f6pa.js +0 -176
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-CuQ6f6pa.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-Dv1rcBq1.js +0 -35
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-Dv1rcBq1.js.map +0 -1
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-C8J0whNG.js +0 -42
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-C8J0whNG.js.map +0 -1
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CJVkUtO_.js +0 -616
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CJVkUtO_.js.map +0 -1
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-BKS_9BsM.js +0 -62
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-BKS_9BsM.js.map +0 -1
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-Lci10wUO.js +0 -807
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-Lci10wUO.js.map +0 -1
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-_8gisXVR.js +0 -60
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-_8gisXVR.js.map +0 -1
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DAekHwEW.js +0 -424
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DAekHwEW.js.map +0 -1
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-j6DdkcWl.js +0 -67
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-j6DdkcWl.js.map +0 -1
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-xnZvi193.js +0 -266
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-xnZvi193.js.map +0 -1
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-DRfzCAuZ.js +0 -34
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-DRfzCAuZ.js.map +0 -1
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-1jpcwNy4.js +0 -29
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-1jpcwNy4.js.map +0 -1
- package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CeUVZxE5.js +0 -314
- package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CeUVZxE5.js.map +0 -1
- package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cwe94QQk.js +0 -65
- package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cwe94QQk.js.map +0 -1
- package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BCh4sPkA.js +0 -736
- package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BCh4sPkA.js.map +0 -1
- package/build/server/chunks/handler-DPD6E0HW.js +0 -1206
- package/build/server/chunks/handler-DPD6E0HW.js.map +0 -1
- package/build/server/chunks/index.js-mP8egvH7.js +0 -3743
- package/build/server/chunks/index.js-mP8egvH7.js.map +0 -1
- package/build/server/chunks/manifest.js-F0BFjgKV.js +0 -719
- package/build/server/chunks/manifest.js-F0BFjgKV.js.map +0 -1
- package/build/server/chunks/nodes/0.js-hby1gvU7.js +0 -55
- package/build/server/chunks/nodes/0.js-hby1gvU7.js.map +0 -1
- package/build/server/chunks/nodes/1.js-CGxRC_dr.js +0 -9
- package/build/server/chunks/nodes/1.js-CGxRC_dr.js.map +0 -1
- package/build/server/chunks/nodes/10.js-CPdOlVdz.js +0 -34
- package/build/server/chunks/nodes/10.js-CPdOlVdz.js.map +0 -1
- package/build/server/chunks/nodes/11.js-CRbxXJIJ.js +0 -38
- package/build/server/chunks/nodes/11.js-CRbxXJIJ.js.map +0 -1
- package/build/server/chunks/nodes/12.js-BmANycAz.js +0 -31
- package/build/server/chunks/nodes/12.js-BmANycAz.js.map +0 -1
- package/build/server/chunks/nodes/13.js-DtgK-v-H.js +0 -31
- package/build/server/chunks/nodes/13.js-DtgK-v-H.js.map +0 -1
- package/build/server/chunks/nodes/14.js-BFSYq1ob.js +0 -31
- package/build/server/chunks/nodes/14.js-BFSYq1ob.js.map +0 -1
- package/build/server/chunks/nodes/15.js-DHEKbxro.js +0 -39
- package/build/server/chunks/nodes/15.js-DHEKbxro.js.map +0 -1
- package/build/server/chunks/nodes/16.js-Bo3bdPbV.js +0 -34
- package/build/server/chunks/nodes/16.js-Bo3bdPbV.js.map +0 -1
- package/build/server/chunks/nodes/17.js-CuNWIMY6.js +0 -9
- package/build/server/chunks/nodes/17.js-CuNWIMY6.js.map +0 -1
- package/build/server/chunks/nodes/18.js-BgsqMiC9.js +0 -40
- package/build/server/chunks/nodes/18.js-BgsqMiC9.js.map +0 -1
- package/build/server/chunks/nodes/19.js-D-I8yrwW.js +0 -25
- package/build/server/chunks/nodes/19.js-D-I8yrwW.js.map +0 -1
- package/build/server/chunks/nodes/2.js-BrPV65My.js +0 -34
- package/build/server/chunks/nodes/2.js-BrPV65My.js.map +0 -1
- package/build/server/chunks/nodes/20.js-CGP-M0l1.js +0 -24
- package/build/server/chunks/nodes/20.js-CGP-M0l1.js.map +0 -1
- package/build/server/chunks/nodes/21.js-CR3XXfQO.js +0 -41
- package/build/server/chunks/nodes/21.js-CR3XXfQO.js.map +0 -1
- package/build/server/chunks/nodes/22.js-BXUhm0Ez.js +0 -40
- package/build/server/chunks/nodes/22.js-BXUhm0Ez.js.map +0 -1
- package/build/server/chunks/nodes/23.js-BTyEcuLJ.js +0 -37
- package/build/server/chunks/nodes/23.js-BTyEcuLJ.js.map +0 -1
- package/build/server/chunks/nodes/24.js-BVMDFeLa.js +0 -54
- package/build/server/chunks/nodes/24.js-BVMDFeLa.js.map +0 -1
- package/build/server/chunks/nodes/25.js-BsGRBX4S.js +0 -33
- package/build/server/chunks/nodes/25.js-BsGRBX4S.js.map +0 -1
- package/build/server/chunks/nodes/26.js-x8tKzWDa.js +0 -40
- package/build/server/chunks/nodes/26.js-x8tKzWDa.js.map +0 -1
- package/build/server/chunks/nodes/27.js-DzrKJArj.js +0 -31
- package/build/server/chunks/nodes/27.js-DzrKJArj.js.map +0 -1
- package/build/server/chunks/nodes/29.js-By4tmIxY.js +0 -31
- package/build/server/chunks/nodes/29.js-By4tmIxY.js.map +0 -1
- package/build/server/chunks/nodes/3.js-Cb5zUXVI.js +0 -9
- package/build/server/chunks/nodes/3.js-Cb5zUXVI.js.map +0 -1
- package/build/server/chunks/nodes/30.js-CaM1emWs.js +0 -31
- package/build/server/chunks/nodes/30.js-CaM1emWs.js.map +0 -1
- package/build/server/chunks/nodes/31.js-BuZvh00X.js +0 -34
- package/build/server/chunks/nodes/31.js-BuZvh00X.js.map +0 -1
- package/build/server/chunks/nodes/32.js-fpi5ooiX.js +0 -31
- package/build/server/chunks/nodes/32.js-fpi5ooiX.js.map +0 -1
- package/build/server/chunks/nodes/33.js-BrmNq1Y7.js +0 -31
- package/build/server/chunks/nodes/33.js-BrmNq1Y7.js.map +0 -1
- package/build/server/chunks/nodes/34.js-Ch_DVPy_.js +0 -31
- package/build/server/chunks/nodes/34.js-Ch_DVPy_.js.map +0 -1
- package/build/server/chunks/nodes/35.js-L2knV6rn.js +0 -55
- package/build/server/chunks/nodes/35.js-L2knV6rn.js.map +0 -1
- package/build/server/chunks/nodes/5.js-BHrFEh9N.js +0 -15
- package/build/server/chunks/nodes/5.js-BHrFEh9N.js.map +0 -1
- package/build/server/chunks/nodes/6.js-C4nEfoTL.js +0 -31
- package/build/server/chunks/nodes/6.js-C4nEfoTL.js.map +0 -1
- package/build/server/chunks/nodes/7.js-BW_ESoVA.js +0 -24
- package/build/server/chunks/nodes/7.js-BW_ESoVA.js.map +0 -1
- package/build/server/chunks/nodes/8.js-CdYh19m9.js +0 -41
- package/build/server/chunks/nodes/8.js-CdYh19m9.js.map +0 -1
- package/build/server/chunks/nodes/9.js-ByOqICUl.js +0 -31
- package/build/server/chunks/nodes/9.js-ByOqICUl.js.map +0 -1
|
@@ -0,0 +1,1165 @@
|
|
|
1
|
+
import { e as ProjectVisibilitySchema, f as ProjectRoleSchema, g as PlatformPermissionSchema, O as OrgPermissionSchema, i as OrgRoleSchema, a as ALL_ORG_PERMISSIONS, j as API_TOKEN_LIFETIME_DAYS, k as ApiScopeStringSchema, s as scopeAllows, P as ProviderError, o as outsideTokenOrg } from './src.js-BQFsdJf3.js';
|
|
2
|
+
import { d as apiError, f as ApiError, A as ApiErrorCode, t as toErrorBody, g as isApiError, i as isFlagEnabled, h as readNonNegativeInt, j as readPositiveInt, C as ComputeServerUnconfiguredError, k as codeForStatus } from './access.js-DbWaEG7Y.js';
|
|
3
|
+
import { N as NoopEventSink, S as SchemaExtractionError } from './schema-extraction.js-DxFeK69H.js';
|
|
4
|
+
import { c as createComputeRateLimiter } from './rate-limit.js-Br3luBbc.js';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* `T` is whatever the caller replays. It must not be a `Response` — a body can
|
|
10
|
+
* only be read once, so the solve route stores a serialized snapshot instead.
|
|
11
|
+
*/
|
|
12
|
+
function createIdempotencyStore(config) {
|
|
13
|
+
const ttlMs = Math.max(0, Math.floor(config.ttlMs));
|
|
14
|
+
const maxKeys = Math.max(1, Math.floor(config.maxKeys ?? 1e4));
|
|
15
|
+
const sweepIntervalMs = Math.max(0, Math.floor(config.sweepIntervalMs ?? ttlMs));
|
|
16
|
+
const resolvedConfig = Object.freeze({
|
|
17
|
+
...config,
|
|
18
|
+
ttlMs,
|
|
19
|
+
maxKeys,
|
|
20
|
+
sweepIntervalMs
|
|
21
|
+
});
|
|
22
|
+
const entries = /* @__PURE__ */ new Map();
|
|
23
|
+
let nextSweepAt = Number.POSITIVE_INFINITY;
|
|
24
|
+
function maybeSweep(now, headroom = 0) {
|
|
25
|
+
const budget = Math.max(0, maxKeys - headroom);
|
|
26
|
+
if (!(sweepIntervalMs > 0 && now >= nextSweepAt) && entries.size <= budget) return;
|
|
27
|
+
for (const [key, entry] of entries) if (entry.expiresAt !== null && now > entry.expiresAt) entries.delete(key);
|
|
28
|
+
if (sweepIntervalMs > 0) nextSweepAt = now + sweepIntervalMs;
|
|
29
|
+
if (entries.size > budget) {
|
|
30
|
+
const byExpiryAsc = [...entries.entries()].sort((a, b) => (a[1].expiresAt ?? Infinity) - (b[1].expiresAt ?? Infinity));
|
|
31
|
+
for (let i = 0; i < byExpiryAsc.length - budget; i++) entries.delete(byExpiryAsc[i][0]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
config: resolvedConfig,
|
|
36
|
+
async run(key, fn) {
|
|
37
|
+
const now = Date.now();
|
|
38
|
+
const existing = entries.get(key);
|
|
39
|
+
if (existing && (existing.expiresAt === null || now <= existing.expiresAt)) return {
|
|
40
|
+
value: await existing.promise,
|
|
41
|
+
replayed: true
|
|
42
|
+
};
|
|
43
|
+
maybeSweep(now, entries.has(key) ? 0 : 1);
|
|
44
|
+
const promise = fn();
|
|
45
|
+
const entry = {
|
|
46
|
+
promise,
|
|
47
|
+
expiresAt: null
|
|
48
|
+
};
|
|
49
|
+
entries.set(key, entry);
|
|
50
|
+
if (sweepIntervalMs > 0 && nextSweepAt === Number.POSITIVE_INFINITY) nextSweepAt = now + sweepIntervalMs;
|
|
51
|
+
try {
|
|
52
|
+
const value = await promise;
|
|
53
|
+
entry.expiresAt = Date.now() + ttlMs;
|
|
54
|
+
return {
|
|
55
|
+
value,
|
|
56
|
+
replayed: false
|
|
57
|
+
};
|
|
58
|
+
} catch (err) {
|
|
59
|
+
if (entries.get(key) === entry) entries.delete(key);
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
reset() {
|
|
64
|
+
entries.clear();
|
|
65
|
+
nextSweepAt = Number.POSITIVE_INFINITY;
|
|
66
|
+
},
|
|
67
|
+
size() {
|
|
68
|
+
return entries.size;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// ../server/src/api/deps.ts
|
|
73
|
+
/**
|
|
74
|
+
* Everything an API handler talks to, as one injected value.
|
|
75
|
+
*
|
|
76
|
+
* Handlers used to reach module-global getters (`getProjectProvider()`,
|
|
77
|
+
* `getDefinitionService()`, …) from the Selva app's composition root — 77 call
|
|
78
|
+
* sites across the v1 routes. That welded them to one app's boot: a second app
|
|
79
|
+
* on a different provider set could not call them at all.
|
|
80
|
+
*
|
|
81
|
+
* Most fields are sub-stores of `IDataProvider`, so a host that already built a
|
|
82
|
+
* `SelvaConfig` gets them via `depsFromConfig`. `services` stays host-defined:
|
|
83
|
+
* `DefinitionService` and friends are composed rather than resolved, and a host
|
|
84
|
+
* may supply its own.
|
|
85
|
+
*/
|
|
86
|
+
/**
|
|
87
|
+
* Build deps from a resolved `SelvaConfig`, plus whatever services and token
|
|
88
|
+
* codecs the host composed on top. The hoisted fields are aliases into `data`,
|
|
89
|
+
* not copies.
|
|
90
|
+
*
|
|
91
|
+
* `services` stays positional — every existing caller passes it there — and
|
|
92
|
+
* `tokens` arrives in an options object rather than as a third positional, so
|
|
93
|
+
* the two composed bags cannot be swapped at a call site.
|
|
94
|
+
*/
|
|
95
|
+
function depsFromConfig(config, services = {}, { tokens = {}, uploadLimits, evictComputeClient = () => {}, notifications, instanceName = "Selva", apiTokenSettingsPath = "/settings/tokens", apiRateLimiter, idempotency } = {}) {
|
|
96
|
+
const { data } = config;
|
|
97
|
+
return {
|
|
98
|
+
auth: config.auth,
|
|
99
|
+
storage: config.storage,
|
|
100
|
+
data,
|
|
101
|
+
orgs: data.orgs,
|
|
102
|
+
projects: data.projects,
|
|
103
|
+
definitionMeta: data.definitions,
|
|
104
|
+
computeServer: data.computeServer,
|
|
105
|
+
userProfile: data.userProfile,
|
|
106
|
+
shareLinks: data.shareLinks,
|
|
107
|
+
invites: data.invites,
|
|
108
|
+
permissions: data.permissions,
|
|
109
|
+
platformProjectGrants: data.platformProjectGrants,
|
|
110
|
+
events: config.events ?? new NoopEventSink(),
|
|
111
|
+
flag: (name) => isFlagEnabled(config, name),
|
|
112
|
+
tokens,
|
|
113
|
+
uploadLimits: {
|
|
114
|
+
maxDefinitionFileSize: uploadLimits?.maxDefinitionFileSize ?? 52428800,
|
|
115
|
+
maxImageFileSize: uploadLimits?.maxImageFileSize ?? 10485760
|
|
116
|
+
},
|
|
117
|
+
evictComputeClient,
|
|
118
|
+
notifications,
|
|
119
|
+
instanceName,
|
|
120
|
+
apiTokenSettingsPath,
|
|
121
|
+
apiRateLimiter,
|
|
122
|
+
idempotency,
|
|
123
|
+
services
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// ../server/src/api/request.ts
|
|
127
|
+
/**
|
|
128
|
+
* The authenticated caller, or a 401.
|
|
129
|
+
*
|
|
130
|
+
* `ctx` and `user` are optional on `ApiRequest` because a host builds one for
|
|
131
|
+
* anonymous requests too (share-token solves reach handlers with a `ctx` and no
|
|
132
|
+
* `user`). Every handler that needs an identity narrows it here rather than
|
|
133
|
+
* asserting the fields non-null, so the unauthenticated path fails as a denial
|
|
134
|
+
* instead of a crash.
|
|
135
|
+
*/
|
|
136
|
+
function requireCaller(req) {
|
|
137
|
+
if (!req.ctx || !req.user) apiError(401, ApiErrorCode.UNAUTHORIZED, "Unauthorized");
|
|
138
|
+
return {
|
|
139
|
+
ctx: req.ctx,
|
|
140
|
+
user: req.user
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Fail with a Zod error's messages, one per field.
|
|
145
|
+
*
|
|
146
|
+
* The top-level `message` names the first problem so a human reading the
|
|
147
|
+
* response learns something without parsing `fields`.
|
|
148
|
+
*/
|
|
149
|
+
function throwZodError(err) {
|
|
150
|
+
const fields = {};
|
|
151
|
+
for (const issue of err.issues) {
|
|
152
|
+
const key = issue.path.length ? issue.path.join(".") : "_";
|
|
153
|
+
if (!(key in fields)) fields[key] = issue.message;
|
|
154
|
+
}
|
|
155
|
+
const first = err.issues[0];
|
|
156
|
+
const path = first.path.length ? `${first.path.join(".")}: ` : "";
|
|
157
|
+
apiError(400, ApiErrorCode.VALIDATION_FAILED, `${path}${first.message}`, fields);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Read required path params, 400ing on any that is missing or blank.
|
|
161
|
+
*
|
|
162
|
+
* A router types every param as `string`, but a route can be reached with an
|
|
163
|
+
* empty segment — this catches that instead of letting a stale non-null
|
|
164
|
+
* assertion paper over it.
|
|
165
|
+
*
|
|
166
|
+
* Does **not** validate format — a guid-shaped param still goes through a
|
|
167
|
+
* schema where the route cares. Replaces the `if (!id) apiError(...)` preamble,
|
|
168
|
+
* not the schema check.
|
|
169
|
+
*/
|
|
170
|
+
function requireParams(params, ...names) {
|
|
171
|
+
const out = {};
|
|
172
|
+
const missing = [];
|
|
173
|
+
for (const name of names) {
|
|
174
|
+
const value = params[name];
|
|
175
|
+
if (!value) {
|
|
176
|
+
missing.push(name);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
out[name] = value;
|
|
180
|
+
}
|
|
181
|
+
if (missing.length) apiError(400, ApiErrorCode.VALIDATION_FAILED, `Missing path parameter${missing.length > 1 ? "s" : ""}: ${missing.join(", ")}`);
|
|
182
|
+
return out;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Read a path param through a Zod schema, 400ing on a bad value.
|
|
186
|
+
*
|
|
187
|
+
* The format-checking counterpart to `requireParams` — for guids, enum-shaped
|
|
188
|
+
* segments, anything where "present" isn't the same as "valid".
|
|
189
|
+
*/
|
|
190
|
+
function parseParam(value, schema, name) {
|
|
191
|
+
const parsed = schema.safeParse(value);
|
|
192
|
+
if (!parsed.success) apiError(400, ApiErrorCode.VALIDATION_FAILED, `Invalid or missing ${name}`);
|
|
193
|
+
return parsed.data;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Parse and validate a JSON body. A malformed body becomes `null` rather than
|
|
197
|
+
* throwing, so it fails the schema as a validation error — broken JSON gets a
|
|
198
|
+
* 400 naming the problem, not a 500 from `request.json()`.
|
|
199
|
+
*
|
|
200
|
+
* `missingAs` covers endpoints whose fields are all optional: passing `{}` lets
|
|
201
|
+
* an empty body mean "no changes" instead of a validation failure.
|
|
202
|
+
*/
|
|
203
|
+
async function parseBody(request, schema, { missingAs } = {}) {
|
|
204
|
+
const raw = await request.json().catch(() => null);
|
|
205
|
+
const parsed = schema.safeParse(raw ?? missingAs ?? null);
|
|
206
|
+
if (!parsed.success) throwZodError(parsed.error);
|
|
207
|
+
return parsed.data;
|
|
208
|
+
}
|
|
209
|
+
var parsedForms = /* @__PURE__ */ new WeakMap();
|
|
210
|
+
/**
|
|
211
|
+
* The request's form body, parsed once: the idempotency fingerprint reads it
|
|
212
|
+
* before the handler does, and a definition upload is too large to buffer twice.
|
|
213
|
+
* On an idempotent route, `request.formData()` throws: the body is already used.
|
|
214
|
+
*/
|
|
215
|
+
function readForm(request) {
|
|
216
|
+
let form = parsedForms.get(request);
|
|
217
|
+
if (!form) parsedForms.set(request, form = request.formData());
|
|
218
|
+
return form;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Pull a required file out of a multipart body and check its size and, where
|
|
222
|
+
* given, its extension.
|
|
223
|
+
*
|
|
224
|
+
* A second line of defence, not the first: a host's body-size guard should
|
|
225
|
+
* reject an oversized request before it is buffered. This catches a file that
|
|
226
|
+
* is individually too large inside a request that isn't.
|
|
227
|
+
*
|
|
228
|
+
* Caps are passed in rather than read here — they are deployment config, and a
|
|
229
|
+
* package that resolved them would pin every host to one source of truth.
|
|
230
|
+
*/
|
|
231
|
+
function requireUpload(form, field, { maxBytes, extensions, contentTypes, label = "File" }) {
|
|
232
|
+
const file = form.get(field);
|
|
233
|
+
if (!(file instanceof File) || file.size === 0) apiError(400, ApiErrorCode.VALIDATION_FAILED, `A ${label.toLowerCase()} is required`);
|
|
234
|
+
const extension = file.name.slice(file.name.lastIndexOf(".")).toLowerCase();
|
|
235
|
+
if (extensions && !extensions.includes(extension)) apiError(400, ApiErrorCode.VALIDATION_FAILED, `File type not allowed. Allowed: ${extensions.join(", ")}`);
|
|
236
|
+
if (contentTypes && !contentTypes.allowed.has(file.type)) apiError(400, ApiErrorCode.VALIDATION_FAILED, contentTypes.message);
|
|
237
|
+
if (file.size > maxBytes) apiError(400, ApiErrorCode.VALIDATION_FAILED, `${label} too large. Max size: ${maxBytes / 1048576} MB`);
|
|
238
|
+
return {
|
|
239
|
+
file,
|
|
240
|
+
extension
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/** A multipart text field, trimmed and length-capped. Absent stays `undefined`. */
|
|
244
|
+
function formText(form, field, { maxLength } = {}) {
|
|
245
|
+
const raw = form.get(field);
|
|
246
|
+
if (typeof raw !== "string") return void 0;
|
|
247
|
+
const trimmed = raw.trim();
|
|
248
|
+
if (!trimmed) return void 0;
|
|
249
|
+
return maxLength ? trimmed.slice(0, maxLength) : trimmed;
|
|
250
|
+
}
|
|
251
|
+
// ../server/src/api/scope.ts
|
|
252
|
+
/** The default action for a method: reads are `read`, everything else `write`. */
|
|
253
|
+
function actionForMethod(method) {
|
|
254
|
+
return method === "GET" || method === "HEAD" ? "read" : "write";
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Refuse an API-token request its scopes don't cover, with 403 naming the
|
|
258
|
+
* scope that would have passed. Browser sessions always pass.
|
|
259
|
+
*
|
|
260
|
+
* `runHandler` calls this for every mounted route. A route that builds its own
|
|
261
|
+
* `Response` must call it itself.
|
|
262
|
+
*/
|
|
263
|
+
function assertScope(ctx, action, target) {
|
|
264
|
+
if (!ctx?.apiScope || scopeAllows(ctx, action, target)) return;
|
|
265
|
+
recordRefusal(ctx.apiScope.tokenId);
|
|
266
|
+
apiError(403, ApiErrorCode.FORBIDDEN, `This API token doesn't allow ${action} here.`, void 0, { requiredScope: requiredScope(ctx, action, target) });
|
|
267
|
+
}
|
|
268
|
+
var refusals = /* @__PURE__ */ new Map();
|
|
269
|
+
var utcDay = () => (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
270
|
+
function recordRefusal(tokenId) {
|
|
271
|
+
const day = utcDay();
|
|
272
|
+
const entry = refusals.get(tokenId);
|
|
273
|
+
if (entry?.day === day) entry.count++;
|
|
274
|
+
else refusals.set(tokenId, {
|
|
275
|
+
day,
|
|
276
|
+
count: 1
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/** Scope refusals for `tokenId` since midnight UTC, in this process. */
|
|
280
|
+
function scopeRefusalsToday(tokenId) {
|
|
281
|
+
const entry = refusals.get(tokenId);
|
|
282
|
+
return entry?.day === utcDay() ? entry.count : 0;
|
|
283
|
+
}
|
|
284
|
+
function requiredScope(ctx, action, target) {
|
|
285
|
+
if (target?.projectId) return `${action}:project:${target.projectId}`;
|
|
286
|
+
if (target?.definitionId) return `${action}:definition:${target.definitionId}`;
|
|
287
|
+
return `${action}:org:${ctx.actingOrgId}`;
|
|
288
|
+
}
|
|
289
|
+
/** Scope target for routes addressed by a project id param. */
|
|
290
|
+
function projectScopeTarget(param = "id") {
|
|
291
|
+
return (req) => ({ projectId: req.params[param] });
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Scope target for routes addressed by a definition guid param. Loads the
|
|
295
|
+
* record so a project-scoped key reaches the definitions inside its project.
|
|
296
|
+
*
|
|
297
|
+
* A definition outside the key's org resolves like a missing one: otherwise the
|
|
298
|
+
* 403 detail would confirm the guid exists and name its project.
|
|
299
|
+
*/
|
|
300
|
+
function definitionScopeTarget(param = "guid") {
|
|
301
|
+
return async (req) => {
|
|
302
|
+
const definitionId = req.params[param];
|
|
303
|
+
if (!definitionId || !req.ctx) return { definitionId };
|
|
304
|
+
const record = await req.deps.definitionMeta.get(req.ctx, definitionId);
|
|
305
|
+
const project = record ? await req.deps.projects.getProject(req.ctx, record.projectId) : null;
|
|
306
|
+
if (!project || outsideTokenOrg(req.ctx, project.orgId)) return { definitionId };
|
|
307
|
+
return {
|
|
308
|
+
definitionId,
|
|
309
|
+
projectId: project.id
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
// ../server/src/api/rate-limit.ts
|
|
314
|
+
var DEFAULT_API_RATE_LIMIT = Object.freeze({
|
|
315
|
+
windowMs: 6e4,
|
|
316
|
+
maxPerWindow: 600
|
|
317
|
+
});
|
|
318
|
+
/**
|
|
319
|
+
* Read `API_TOKEN_RATE_LIMIT_MAX` (requests per window, `0` = off) and
|
|
320
|
+
* `API_TOKEN_RATE_LIMIT_WINDOW_MS` from an injected env map.
|
|
321
|
+
*/
|
|
322
|
+
function resolveApiRateLimitConfig(env, logger) {
|
|
323
|
+
return {
|
|
324
|
+
windowMs: readPositiveInt(env, "API_TOKEN_RATE_LIMIT_WINDOW_MS", DEFAULT_API_RATE_LIMIT.windowMs, logger),
|
|
325
|
+
maxPerWindow: readNonNegativeInt(env, "API_TOKEN_RATE_LIMIT_MAX", DEFAULT_API_RATE_LIMIT.maxPerWindow, logger)
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
/** Process-local fixed-window limiter. Returns `null` when `maxPerWindow` is 0. */
|
|
329
|
+
function createApiRateLimiter(config = DEFAULT_API_RATE_LIMIT) {
|
|
330
|
+
if (config.maxPerWindow <= 0) return null;
|
|
331
|
+
const inner = createComputeRateLimiter(config);
|
|
332
|
+
const limit = config.maxPerWindow;
|
|
333
|
+
return { hit(key) {
|
|
334
|
+
const result = inner.check(key);
|
|
335
|
+
return {
|
|
336
|
+
allowed: result.allowed,
|
|
337
|
+
limit,
|
|
338
|
+
remaining: Math.max(0, limit - inner.count(key)),
|
|
339
|
+
retryAfter: result.retryAfter
|
|
340
|
+
};
|
|
341
|
+
} };
|
|
342
|
+
}
|
|
343
|
+
var sharedDefault$1;
|
|
344
|
+
/**
|
|
345
|
+
* The limiter `depsFromConfig` wires when the host passes none. One per
|
|
346
|
+
* process: deps are rebuilt per request, and a limiter per request counts
|
|
347
|
+
* nothing.
|
|
348
|
+
*/
|
|
349
|
+
function defaultApiRateLimiter() {
|
|
350
|
+
if (sharedDefault$1 === void 0) sharedDefault$1 = createApiRateLimiter();
|
|
351
|
+
return sharedDefault$1;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Charge one request to the caller's token. `undefined` for a session caller
|
|
355
|
+
* or when no limiter is wired.
|
|
356
|
+
*/
|
|
357
|
+
async function chargeApiRateLimit(ctx, limiter) {
|
|
358
|
+
if (!ctx?.apiScope || !limiter) return void 0;
|
|
359
|
+
return limiter.hit(`token:${ctx.apiScope.tokenId}`);
|
|
360
|
+
}
|
|
361
|
+
function rateLimitHeaders(verdict) {
|
|
362
|
+
const headers = {
|
|
363
|
+
"RateLimit-Limit": String(verdict.limit),
|
|
364
|
+
"RateLimit-Remaining": String(verdict.remaining)
|
|
365
|
+
};
|
|
366
|
+
if (!verdict.allowed) headers["Retry-After"] = String(verdict.retryAfter ?? 1);
|
|
367
|
+
return headers;
|
|
368
|
+
}
|
|
369
|
+
/** The 429 envelope, with `Retry-After` and the `RateLimit-*` headers. */
|
|
370
|
+
function rateLimitedResponse(verdict, message = `Too many requests for this API token. Retry in ${verdict.retryAfter ?? 1}s.`) {
|
|
371
|
+
const retryAfter = String(verdict.retryAfter ?? 1);
|
|
372
|
+
const err = new ApiError(429, ApiErrorCode.RATE_LIMITED, message, void 0, { retryAfter });
|
|
373
|
+
return new Response(JSON.stringify(toErrorBody(err)), {
|
|
374
|
+
status: 429,
|
|
375
|
+
headers: {
|
|
376
|
+
"content-type": "application/json",
|
|
377
|
+
...rateLimitHeaders(verdict)
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
/** Stamp the `RateLimit-*` headers onto a response. No-op without a verdict. */
|
|
382
|
+
function withRateLimitHeaders(res, verdict) {
|
|
383
|
+
if (!verdict) return res;
|
|
384
|
+
const headers = rateLimitHeaders(verdict);
|
|
385
|
+
try {
|
|
386
|
+
for (const [k, v] of Object.entries(headers)) res.headers.set(k, v);
|
|
387
|
+
return res;
|
|
388
|
+
} catch {
|
|
389
|
+
const copy = new Headers(res.headers);
|
|
390
|
+
for (const [k, v] of Object.entries(headers)) copy.set(k, v);
|
|
391
|
+
return new Response(res.body, {
|
|
392
|
+
status: res.status,
|
|
393
|
+
statusText: res.statusText,
|
|
394
|
+
headers: copy
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// ../server/src/api/idempotency-http.ts
|
|
399
|
+
/**
|
|
400
|
+
* The HTTP layer over {@link createIdempotencyStore}: how a replayed response
|
|
401
|
+
* is keyed, snapshotted, and identified on the wire.
|
|
402
|
+
*
|
|
403
|
+
* The store itself is generic over `T` and knows nothing about requests. This
|
|
404
|
+
* is the part two hosts must agree on to implement the same `Idempotency-Key`
|
|
405
|
+
* contract, and the part each would otherwise reinvent:
|
|
406
|
+
*
|
|
407
|
+
* - **The key namespaces by caller.** `Idempotency-Key` is client-chosen, so
|
|
408
|
+
* two tenants can pick the same string. Without the caller in the key one
|
|
409
|
+
* would replay the other's result — that is the whole security property
|
|
410
|
+
* here, and a host that got it wrong would leak across tenants with
|
|
411
|
+
* nothing failing at build time.
|
|
412
|
+
* - **The response round-trips through a snapshot.** A `Response` body reads
|
|
413
|
+
* exactly once, so storing the object itself replays an empty body.
|
|
414
|
+
* - **A replay says so**, via `Idempotency-Replayed`. A client that cannot
|
|
415
|
+
* tell a replay from a fresh run cannot tell a successful retry from a
|
|
416
|
+
* second execution.
|
|
417
|
+
*
|
|
418
|
+
* How long a response stays replayable is *not* here: that trades a client's
|
|
419
|
+
* retry window against serving a stale result after the underlying resource
|
|
420
|
+
* moves, and only the host knows its own deadlines.
|
|
421
|
+
*/
|
|
422
|
+
/** Header stamped on a replayed response, so a client can distinguish one. */
|
|
423
|
+
var IDEMPOTENCY_REPLAYED_HEADER = "Idempotency-Replayed";
|
|
424
|
+
/**
|
|
425
|
+
* Namespace a client-chosen key by its caller.
|
|
426
|
+
*
|
|
427
|
+
* `callerId` should be the narrowest identity available — a token id rather
|
|
428
|
+
* than a user id where the host issues per-token credentials, so two tokens
|
|
429
|
+
* held by one user do not share replays.
|
|
430
|
+
*/
|
|
431
|
+
function idempotencyKey(callerId, clientKey) {
|
|
432
|
+
return `${callerId} ${clientKey}`;
|
|
433
|
+
}
|
|
434
|
+
/** Flatten a response so it can be replayed. Consumes the body. */
|
|
435
|
+
async function toStoredResponse(res) {
|
|
436
|
+
return {
|
|
437
|
+
status: res.status,
|
|
438
|
+
headers: [...res.headers.entries()],
|
|
439
|
+
body: await res.arrayBuffer()
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
/** Rebuild a live `Response` from a snapshot, marking it when it is a replay. */
|
|
443
|
+
function fromStoredResponse(stored, replayed) {
|
|
444
|
+
const headers = new Headers(stored.headers);
|
|
445
|
+
if (replayed) headers.set(IDEMPOTENCY_REPLAYED_HEADER, "true");
|
|
446
|
+
return new Response(stored.body, {
|
|
447
|
+
status: stored.status,
|
|
448
|
+
headers
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
// ../server/src/api/idempotency.ts
|
|
452
|
+
/**
|
|
453
|
+
* `Idempotency-Key` for mounted routes that opt in with `idempotent: true`.
|
|
454
|
+
*
|
|
455
|
+
* Built on the generic store (`../compute/idempotency.ts`) and the wire
|
|
456
|
+
* contract (`./idempotency-http.ts`). The store absorbs in-flight and near-term
|
|
457
|
+
* retries in this process; it is not a durable record. A create that must never duplicate also needs the key on
|
|
458
|
+
* the created row under a unique constraint, written in the same transaction.
|
|
459
|
+
*
|
|
460
|
+
* Each entry carries a fingerprint of method, path, query and body, so a client that
|
|
461
|
+
* reuses a key for a different request gets 422 instead of someone else's
|
|
462
|
+
* replay. Only responses below 400 are kept: a failed attempt frees the key so
|
|
463
|
+
* a corrected retry can run.
|
|
464
|
+
*/
|
|
465
|
+
var IDEMPOTENCY_KEY_HEADER = "Idempotency-Key";
|
|
466
|
+
/** Covers a client's retry-on-timeout window without turning into a result cache. */
|
|
467
|
+
var DEFAULT_API_IDEMPOTENCY_TTL_MS = 3e5;
|
|
468
|
+
function createApiIdempotencyStore(ttlMs = DEFAULT_API_IDEMPOTENCY_TTL_MS) {
|
|
469
|
+
return createIdempotencyStore({ ttlMs });
|
|
470
|
+
}
|
|
471
|
+
var sharedDefault;
|
|
472
|
+
/** The store `depsFromConfig` wires when the host passes none. One per process. */
|
|
473
|
+
function defaultApiIdempotencyStore() {
|
|
474
|
+
return sharedDefault ??= createApiIdempotencyStore();
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* The narrowest identity a key is namespaced by: the token for a token
|
|
478
|
+
* request, so two keys of one user never share replays, else the user.
|
|
479
|
+
*/
|
|
480
|
+
function idempotencyCallerId(ctx) {
|
|
481
|
+
return ctx.apiScope ? `token:${ctx.apiScope.tokenId}` : `user:${ctx.userId}`;
|
|
482
|
+
}
|
|
483
|
+
/** Read and validate the client's key. `null` when the header is absent. */
|
|
484
|
+
function readIdempotencyKey(request) {
|
|
485
|
+
const key = request.headers.get(IDEMPOTENCY_KEY_HEADER);
|
|
486
|
+
if (key === null) return null;
|
|
487
|
+
if (key.length === 0 || key.length > 255) apiError(400, ApiErrorCode.VALIDATION_FAILED, `${IDEMPOTENCY_KEY_HEADER} must be 1 to 255 characters.`);
|
|
488
|
+
return key;
|
|
489
|
+
}
|
|
490
|
+
async function sha256Hex(bytes) {
|
|
491
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
492
|
+
return Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, "0")).join("");
|
|
493
|
+
}
|
|
494
|
+
/** SHA-256 over method, path with query, and body, hex. */
|
|
495
|
+
async function requestFingerprint(method, url, body) {
|
|
496
|
+
const head = new TextEncoder().encode(`${method.toUpperCase()} ${url.pathname}${url.search}\n`);
|
|
497
|
+
const tail = typeof body === "string" ? new TextEncoder().encode(body) : new Uint8Array(body);
|
|
498
|
+
const bytes = new Uint8Array(head.length + tail.length);
|
|
499
|
+
bytes.set(head);
|
|
500
|
+
bytes.set(tail, head.length);
|
|
501
|
+
return sha256Hex(bytes);
|
|
502
|
+
}
|
|
503
|
+
async function fileSha256Hex(file) {
|
|
504
|
+
const hash = createHash("sha256");
|
|
505
|
+
for await (const chunk of file.stream()) hash.update(chunk);
|
|
506
|
+
return hash.digest("hex");
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* The body `requestFingerprint` should hash. The handler can still read it: a
|
|
510
|
+
* JSON body comes from a clone, a form through `readForm`, which parses it once
|
|
511
|
+
* for both.
|
|
512
|
+
*
|
|
513
|
+
* Multipart is canonicalized to its fields and file contents: clients pick a
|
|
514
|
+
* fresh random boundary per request, so the raw bytes of an identical retry
|
|
515
|
+
* never match.
|
|
516
|
+
*/
|
|
517
|
+
async function fingerprintBody(request) {
|
|
518
|
+
if (!(request.headers.get("content-type") ?? "").toLowerCase().startsWith("multipart/form-data")) return request.clone().arrayBuffer();
|
|
519
|
+
let form;
|
|
520
|
+
try {
|
|
521
|
+
form = await readForm(request);
|
|
522
|
+
} catch {
|
|
523
|
+
return "malformed multipart";
|
|
524
|
+
}
|
|
525
|
+
const parts = [];
|
|
526
|
+
for (const [name, value] of form) parts.push([name, typeof value === "string" ? value : {
|
|
527
|
+
file: value.name,
|
|
528
|
+
type: value.type,
|
|
529
|
+
sha256: await fileSha256Hex(value)
|
|
530
|
+
}]);
|
|
531
|
+
return JSON.stringify(parts);
|
|
532
|
+
}
|
|
533
|
+
var NotReplayable = class {
|
|
534
|
+
fingerprint;
|
|
535
|
+
response;
|
|
536
|
+
constructor(fingerprint, response) {
|
|
537
|
+
this.fingerprint = fingerprint;
|
|
538
|
+
this.response = response;
|
|
539
|
+
}
|
|
540
|
+
};
|
|
541
|
+
function assertSameRequest(stored, fingerprint) {
|
|
542
|
+
if (stored !== fingerprint) apiError(422, ApiErrorCode.UNPROCESSABLE, `This ${IDEMPOTENCY_KEY_HEADER} was already used for a different request.`);
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Run `fn` once per `(callerId, clientKey)`, replaying its response to repeats
|
|
546
|
+
* with `Idempotency-Replayed: true`. Throws 422 when the key was used for a
|
|
547
|
+
* different request. Errors `fn` throws propagate and free the key.
|
|
548
|
+
*/
|
|
549
|
+
async function runIdempotent({ store, callerId, clientKey, fingerprint }, fn) {
|
|
550
|
+
let outcome;
|
|
551
|
+
try {
|
|
552
|
+
outcome = await store.run(idempotencyKey(callerId, clientKey), async () => {
|
|
553
|
+
const res = await fn();
|
|
554
|
+
const response = await toStoredResponse(res);
|
|
555
|
+
if (res.status >= 400) throw new NotReplayable(fingerprint, response);
|
|
556
|
+
return {
|
|
557
|
+
fingerprint,
|
|
558
|
+
response
|
|
559
|
+
};
|
|
560
|
+
});
|
|
561
|
+
} catch (err) {
|
|
562
|
+
if (!(err instanceof NotReplayable)) throw err;
|
|
563
|
+
assertSameRequest(err.fingerprint, fingerprint);
|
|
564
|
+
return fromStoredResponse(err.response, false);
|
|
565
|
+
}
|
|
566
|
+
assertSameRequest(outcome.value.fingerprint, fingerprint);
|
|
567
|
+
return fromStoredResponse(outcome.value.response, outcome.replayed);
|
|
568
|
+
}
|
|
569
|
+
// ../server/src/api/respond.ts
|
|
570
|
+
/**
|
|
571
|
+
* Turn a handler result — or a thrown `ApiError` — into a web-standard
|
|
572
|
+
* `Response`.
|
|
573
|
+
*
|
|
574
|
+
* This is the whole serialization boundary. A host framework that speaks
|
|
575
|
+
* `Request`/`Response` (SvelteKit, Next route handlers, Hono, Remix) needs only
|
|
576
|
+
* to build an `ApiRequest` and call `runHandler`; one that does not can reuse
|
|
577
|
+
* `toErrorBody` and serialize itself.
|
|
578
|
+
*/
|
|
579
|
+
function toResponse(result) {
|
|
580
|
+
if (result instanceof Response) return result;
|
|
581
|
+
const { status, body, headers } = result;
|
|
582
|
+
if (body === void 0) return new Response(null, {
|
|
583
|
+
status: status ?? 204,
|
|
584
|
+
headers
|
|
585
|
+
});
|
|
586
|
+
return new Response(JSON.stringify(body), {
|
|
587
|
+
status: status ?? 200,
|
|
588
|
+
headers: {
|
|
589
|
+
"content-type": "application/json",
|
|
590
|
+
...headers
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
/** Run a handler and serialize whatever comes out, including failures. */
|
|
595
|
+
async function runHandler(handler, req, { fallback, mapError, action, scopeTarget, anyScope, idempotent }) {
|
|
596
|
+
const fail = (err) => {
|
|
597
|
+
if (isApiError(err)) return toResponse({
|
|
598
|
+
status: err.status,
|
|
599
|
+
body: toErrorBody(err)
|
|
600
|
+
});
|
|
601
|
+
const mapped = mapError?.(err);
|
|
602
|
+
if (mapped) return toResponse({
|
|
603
|
+
status: mapped.status,
|
|
604
|
+
body: toErrorBody(mapped)
|
|
605
|
+
});
|
|
606
|
+
req.log.error(`[API] ${fallback}`, {
|
|
607
|
+
component: "api",
|
|
608
|
+
err: err instanceof Error ? err.stack ?? err.message : String(err)
|
|
609
|
+
});
|
|
610
|
+
return toResponse({
|
|
611
|
+
status: 500,
|
|
612
|
+
body: {
|
|
613
|
+
message: fallback,
|
|
614
|
+
code: ApiErrorCode.INTERNAL
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
};
|
|
618
|
+
let verdict;
|
|
619
|
+
try {
|
|
620
|
+
const limiter = req.deps.apiRateLimiter === void 0 ? defaultApiRateLimiter() : req.deps.apiRateLimiter;
|
|
621
|
+
verdict = await chargeApiRateLimit(req.ctx, limiter);
|
|
622
|
+
if (verdict && !verdict.allowed) return rateLimitedResponse(verdict);
|
|
623
|
+
} catch (err) {
|
|
624
|
+
return fail(err);
|
|
625
|
+
}
|
|
626
|
+
let res;
|
|
627
|
+
try {
|
|
628
|
+
if (req.ctx?.apiScope && !anyScope) assertScope(req.ctx, action ?? actionForMethod(req.request.method), scopeTarget ? await scopeTarget(req) : void 0);
|
|
629
|
+
const run = async () => {
|
|
630
|
+
try {
|
|
631
|
+
return toResponse(await handler(req));
|
|
632
|
+
} catch (err) {
|
|
633
|
+
return fail(err);
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
const clientKey = idempotent && req.ctx ? readIdempotencyKey(req.request) : null;
|
|
637
|
+
if (clientKey && req.ctx) {
|
|
638
|
+
const fingerprint = await requestFingerprint(req.request.method, req.url, await fingerprintBody(req.request));
|
|
639
|
+
res = await runIdempotent({
|
|
640
|
+
store: req.deps.idempotency ?? defaultApiIdempotencyStore(),
|
|
641
|
+
callerId: idempotencyCallerId(req.ctx),
|
|
642
|
+
clientKey,
|
|
643
|
+
fingerprint
|
|
644
|
+
}, run);
|
|
645
|
+
} else res = await run();
|
|
646
|
+
} catch (err) {
|
|
647
|
+
res = fail(err);
|
|
648
|
+
}
|
|
649
|
+
return withRateLimitHeaders(res, verdict);
|
|
650
|
+
}
|
|
651
|
+
// ../server/src/api/map-core-error.ts
|
|
652
|
+
/**
|
|
653
|
+
* The domain errors this package's own handlers raise, folded into the envelope.
|
|
654
|
+
*
|
|
655
|
+
* A host's `mapError` should call this first and add only its own error types.
|
|
656
|
+
* These rules cannot live solely in a host: the handler that throws them ships
|
|
657
|
+
* from here, so a host that forgot one would serve 500 where every other host
|
|
658
|
+
* serves 503 — the same API answering differently depending on who mounted it.
|
|
659
|
+
*
|
|
660
|
+
* Postgres surfaces a unique-constraint name verbatim, which is useless to an
|
|
661
|
+
* end user, so the constraints this package's handlers can trip are translated
|
|
662
|
+
* here rather than left to each host.
|
|
663
|
+
*/
|
|
664
|
+
var UNIQUE_CONSTRAINT_MESSAGES = {
|
|
665
|
+
projects_org_name_unique: "A project with that name already exists in this organization.",
|
|
666
|
+
projects_org_id_slug_key: "A project with that name already exists in this organization.",
|
|
667
|
+
orgs_slug_key: "An organization with that slug already exists.",
|
|
668
|
+
definitions_pkey: "A definition with that ID already exists."
|
|
669
|
+
};
|
|
670
|
+
function friendlyConstraintMessage(raw) {
|
|
671
|
+
for (const [name, msg] of Object.entries(UNIQUE_CONSTRAINT_MESSAGES)) if (raw.includes(name)) return msg;
|
|
672
|
+
return null;
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Compute unreachable or serving an unreadable schema is operator-side (503); a
|
|
676
|
+
* schema the parser cannot read is the caller's file (422).
|
|
677
|
+
*/
|
|
678
|
+
function mapCoreError(err) {
|
|
679
|
+
if (err instanceof SchemaExtractionError) return err.kind === "unreachable" || err.kind === "malformed" ? new ApiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message) : new ApiError(422, ApiErrorCode.UNPROCESSABLE, err.message);
|
|
680
|
+
if (err instanceof ComputeServerUnconfiguredError) return new ApiError(503, ApiErrorCode.COMPUTE_UNAVAILABLE, err.message);
|
|
681
|
+
if (err instanceof ProviderError) {
|
|
682
|
+
const friendly = friendlyConstraintMessage(err.message);
|
|
683
|
+
return new ApiError(err.statusCode, codeForStatus(err.statusCode), friendly ?? err.message);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
// ../server/src/api/openapi.ts
|
|
687
|
+
/**
|
|
688
|
+
* Builds an OpenAPI 3.1 document for a host's `/api/v1` from its route registry.
|
|
689
|
+
*
|
|
690
|
+
* Shared so every host publishes the same shape: `@selvajs/mcp` reads
|
|
691
|
+
* `operationId`, `x-scope`, `x-internal` and the `Idempotency-Key` parameter
|
|
692
|
+
* from it, and nothing else.
|
|
693
|
+
*
|
|
694
|
+
* Request schemas come from `z.toJSONSchema` over the actual validators, so a
|
|
695
|
+
* renamed body field changes the spec on the next generate. Response schemas
|
|
696
|
+
* are not derived: handlers build payloads from store records with no Zod
|
|
697
|
+
* validator on the way out. They're described structurally (pagination
|
|
698
|
+
* envelope, error envelope) and resource bodies stay open; `returns` adds prose.
|
|
699
|
+
*/
|
|
700
|
+
var DEFAULT_ERROR_DESCRIPTIONS = {
|
|
701
|
+
400: "Validation failed.",
|
|
702
|
+
401: "Missing or invalid credentials.",
|
|
703
|
+
403: "Authenticated, but not permitted to perform this action. For an API token, `details.requiredScope` names the scope that would have passed.",
|
|
704
|
+
404: "No such resource, or the caller cannot see it.",
|
|
705
|
+
409: "The request conflicts with the current state.",
|
|
706
|
+
422: "Well-formed but not processable.",
|
|
707
|
+
429: "Rate limited. Retry after the interval in `Retry-After`.",
|
|
708
|
+
500: "Unexpected server error.",
|
|
709
|
+
503: "A dependency is unconfigured or unreachable. Retry later."
|
|
710
|
+
};
|
|
711
|
+
var DEFAULT_IDEMPOTENCY_KEY_DESCRIPTION = "A client-chosen key, 1 to 255 characters. Repeating the request with the same key within the retention window replays the first successful response instead of running it again; the replay carries `Idempotency-Replayed: true`. Keys are scoped to the calling token (or user, for a browser session). Reusing a key with a different method, path or body returns `422`. A failed attempt is not kept, so a corrected retry runs. The store is per-process and in-memory: it absorbs retries, does not survive a restart, and is not shared between app instances.";
|
|
712
|
+
function requestBodySchema(schema) {
|
|
713
|
+
const json = z.toJSONSchema(schema, {
|
|
714
|
+
io: "input",
|
|
715
|
+
target: "draft-2020-12"
|
|
716
|
+
});
|
|
717
|
+
delete json.$schema;
|
|
718
|
+
return json;
|
|
719
|
+
}
|
|
720
|
+
function multipartSchema(fields) {
|
|
721
|
+
const properties = {};
|
|
722
|
+
const required = [];
|
|
723
|
+
for (const f of fields) {
|
|
724
|
+
properties[f.field] = {
|
|
725
|
+
type: "string",
|
|
726
|
+
description: f.description
|
|
727
|
+
};
|
|
728
|
+
if (f.required) required.push(f.field);
|
|
729
|
+
}
|
|
730
|
+
return required.length ? {
|
|
731
|
+
type: "object",
|
|
732
|
+
properties,
|
|
733
|
+
required
|
|
734
|
+
} : {
|
|
735
|
+
type: "object",
|
|
736
|
+
properties
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
function responseFor(ep) {
|
|
740
|
+
if (ep.response === "empty") return { "204": { description: ep.returns ?? "Success. No content." } };
|
|
741
|
+
const status = String(ep.status ?? 200);
|
|
742
|
+
if (ep.response === "collection") return { [status]: {
|
|
743
|
+
description: ep.returns ?? "A page of results.",
|
|
744
|
+
content: { "application/json": { schema: { $ref: "#/components/schemas/Page" } } }
|
|
745
|
+
} };
|
|
746
|
+
if (ep.response === "binary") return { [status]: {
|
|
747
|
+
description: ep.returns ?? "Binary payload.",
|
|
748
|
+
content: { [ep.contentType ?? "application/octet-stream"]: { schema: {
|
|
749
|
+
type: "string",
|
|
750
|
+
format: "binary"
|
|
751
|
+
} } }
|
|
752
|
+
} };
|
|
753
|
+
return { [status]: {
|
|
754
|
+
description: ep.returns ?? "Success.",
|
|
755
|
+
content: { "application/json": { schema: { type: "object" } } }
|
|
756
|
+
} };
|
|
757
|
+
}
|
|
758
|
+
function parametersFor(ep) {
|
|
759
|
+
const params = [];
|
|
760
|
+
for (const name of ep.path.matchAll(/\{(\w+)\}/g)) params.push({
|
|
761
|
+
name: name[1],
|
|
762
|
+
in: "path",
|
|
763
|
+
required: true,
|
|
764
|
+
schema: { type: "string" }
|
|
765
|
+
});
|
|
766
|
+
if (ep.response === "collection") params.push({ $ref: "#/components/parameters/limit" }, { $ref: "#/components/parameters/cursor" }, { $ref: "#/components/parameters/orderBy" }, { $ref: "#/components/parameters/orderDir" });
|
|
767
|
+
for (const q of ep.query ?? []) params.push({
|
|
768
|
+
name: q.name,
|
|
769
|
+
in: "query",
|
|
770
|
+
required: false,
|
|
771
|
+
description: q.description,
|
|
772
|
+
schema: { type: "string" }
|
|
773
|
+
});
|
|
774
|
+
if (ep.idempotent) params.push({ $ref: "#/components/parameters/idempotencyKey" });
|
|
775
|
+
return params;
|
|
776
|
+
}
|
|
777
|
+
function operationFor(ep, errorDescriptions, alwaysErrors) {
|
|
778
|
+
const op = {
|
|
779
|
+
summary: ep.summary,
|
|
780
|
+
operationId: operationId(ep),
|
|
781
|
+
tags: [tagFor(ep.path)],
|
|
782
|
+
"x-scope": ep.scope
|
|
783
|
+
};
|
|
784
|
+
if (ep.internal) op["x-internal"] = true;
|
|
785
|
+
const params = parametersFor(ep);
|
|
786
|
+
if (params.length) op.parameters = params;
|
|
787
|
+
if (ep.requestBody) op.requestBody = {
|
|
788
|
+
required: true,
|
|
789
|
+
content: { "application/json": { schema: requestBodySchema(ep.requestBody) } }
|
|
790
|
+
};
|
|
791
|
+
else if (ep.multipart) op.requestBody = {
|
|
792
|
+
required: true,
|
|
793
|
+
content: { "multipart/form-data": { schema: multipartSchema(ep.multipart) } }
|
|
794
|
+
};
|
|
795
|
+
const responses = responseFor(ep);
|
|
796
|
+
const statuses = /* @__PURE__ */ new Set([...ep.errors ?? [], ...alwaysErrors]);
|
|
797
|
+
if (ep.idempotent) statuses.add(422);
|
|
798
|
+
for (const status of [...statuses].sort((a, b) => a - b)) responses[String(status)] = {
|
|
799
|
+
description: errorDescriptions[status] ?? "Error.",
|
|
800
|
+
content: { "application/json": { schema: { $ref: "#/components/schemas/Error" } } }
|
|
801
|
+
};
|
|
802
|
+
op.responses = responses;
|
|
803
|
+
return op;
|
|
804
|
+
}
|
|
805
|
+
var cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
806
|
+
var stem = (s) => s.replace(/\..*$/, "");
|
|
807
|
+
function tagFor(path) {
|
|
808
|
+
return cap(stem(path.split("/")[1] ?? "root"));
|
|
809
|
+
}
|
|
810
|
+
/** `PATCH /jobs/{id}` → `patchJobsById`. Public contract: clients and MCP tools call by it. */
|
|
811
|
+
function operationId(ep) {
|
|
812
|
+
const segments = ep.path.split("/").filter(Boolean).map((s) => s.startsWith("{") ? `By${cap(s.slice(1, -1))}` : cap(stem(s)));
|
|
813
|
+
return ep.method.toLowerCase() + segments.join("");
|
|
814
|
+
}
|
|
815
|
+
function buildOpenApiDocument(endpoints, options) {
|
|
816
|
+
const errorDescriptions = {
|
|
817
|
+
...DEFAULT_ERROR_DESCRIPTIONS,
|
|
818
|
+
...options.errorDescriptions
|
|
819
|
+
};
|
|
820
|
+
const alwaysErrors = options.alwaysErrors ?? [
|
|
821
|
+
401,
|
|
822
|
+
403,
|
|
823
|
+
429,
|
|
824
|
+
500
|
|
825
|
+
];
|
|
826
|
+
const paths = {};
|
|
827
|
+
for (const ep of endpoints) {
|
|
828
|
+
const path = `${options.basePath}${ep.path}`;
|
|
829
|
+
(paths[path] ??= {})[ep.method.toLowerCase()] = operationFor(ep, errorDescriptions, alwaysErrors);
|
|
830
|
+
}
|
|
831
|
+
const paginated = endpoints.some((ep) => ep.response === "collection");
|
|
832
|
+
const parameters = {};
|
|
833
|
+
if (paginated) {
|
|
834
|
+
parameters.limit = {
|
|
835
|
+
name: "limit",
|
|
836
|
+
in: "query",
|
|
837
|
+
required: false,
|
|
838
|
+
description: `Page size. Out-of-range values clamp rather than fail, so a client walking a cursor is never stopped by pagination plumbing. Default 50.`,
|
|
839
|
+
schema: {
|
|
840
|
+
type: "integer",
|
|
841
|
+
minimum: 1,
|
|
842
|
+
maximum: 200
|
|
843
|
+
}
|
|
844
|
+
};
|
|
845
|
+
parameters.cursor = {
|
|
846
|
+
name: "cursor",
|
|
847
|
+
in: "query",
|
|
848
|
+
required: false,
|
|
849
|
+
description: "An opaque cursor from a previous response's `nextCursor`. Do not construct or parse one.",
|
|
850
|
+
schema: { type: "string" }
|
|
851
|
+
};
|
|
852
|
+
parameters.orderBy = {
|
|
853
|
+
name: "orderBy",
|
|
854
|
+
in: "query",
|
|
855
|
+
required: false,
|
|
856
|
+
schema: {
|
|
857
|
+
type: "string",
|
|
858
|
+
enum: [
|
|
859
|
+
"createdAt",
|
|
860
|
+
"updatedAt",
|
|
861
|
+
"name"
|
|
862
|
+
]
|
|
863
|
+
}
|
|
864
|
+
};
|
|
865
|
+
parameters.orderDir = {
|
|
866
|
+
name: "orderDir",
|
|
867
|
+
in: "query",
|
|
868
|
+
required: false,
|
|
869
|
+
schema: {
|
|
870
|
+
type: "string",
|
|
871
|
+
enum: ["asc", "desc"]
|
|
872
|
+
}
|
|
873
|
+
};
|
|
874
|
+
}
|
|
875
|
+
if (endpoints.some((ep) => ep.idempotent)) parameters.idempotencyKey = {
|
|
876
|
+
name: "Idempotency-Key",
|
|
877
|
+
in: "header",
|
|
878
|
+
required: false,
|
|
879
|
+
description: options.idempotencyKeyDescription ?? DEFAULT_IDEMPOTENCY_KEY_DESCRIPTION,
|
|
880
|
+
schema: {
|
|
881
|
+
type: "string",
|
|
882
|
+
minLength: 1,
|
|
883
|
+
maxLength: 255
|
|
884
|
+
}
|
|
885
|
+
};
|
|
886
|
+
const schemas = {};
|
|
887
|
+
if (paginated) schemas.Page = {
|
|
888
|
+
type: "object",
|
|
889
|
+
description: "The envelope every collection returns. `nextCursor` is absent on the last page.",
|
|
890
|
+
properties: {
|
|
891
|
+
items: {
|
|
892
|
+
type: "array",
|
|
893
|
+
items: { type: "object" }
|
|
894
|
+
},
|
|
895
|
+
nextCursor: { type: "string" }
|
|
896
|
+
},
|
|
897
|
+
required: ["items"]
|
|
898
|
+
};
|
|
899
|
+
schemas.Error = {
|
|
900
|
+
type: "object",
|
|
901
|
+
description: "Every failure carries this shape. Branch on `code`, not on the human-readable `message`.",
|
|
902
|
+
properties: {
|
|
903
|
+
message: { type: "string" },
|
|
904
|
+
code: {
|
|
905
|
+
type: "string",
|
|
906
|
+
enum: Object.values(ApiErrorCode)
|
|
907
|
+
},
|
|
908
|
+
fields: {
|
|
909
|
+
type: "object",
|
|
910
|
+
description: "Per-field messages, keyed by dotted path. Present on validation failures.",
|
|
911
|
+
additionalProperties: { type: "string" }
|
|
912
|
+
},
|
|
913
|
+
details: {
|
|
914
|
+
type: "object",
|
|
915
|
+
description: "Machine-readable context. A scope refusal carries `requiredScope`, e.g. `write:org:<id>`.",
|
|
916
|
+
additionalProperties: { type: "string" }
|
|
917
|
+
}
|
|
918
|
+
},
|
|
919
|
+
required: ["message", "code"]
|
|
920
|
+
};
|
|
921
|
+
Object.assign(schemas, options.schemas);
|
|
922
|
+
const components = { securitySchemes: options.securitySchemes };
|
|
923
|
+
if (Object.keys(parameters).length) components.parameters = parameters;
|
|
924
|
+
components.schemas = schemas;
|
|
925
|
+
return {
|
|
926
|
+
openapi: "3.1.0",
|
|
927
|
+
info: options.info,
|
|
928
|
+
servers: [{
|
|
929
|
+
url: "/",
|
|
930
|
+
description: "The instance serving this document."
|
|
931
|
+
}],
|
|
932
|
+
security: options.security,
|
|
933
|
+
components,
|
|
934
|
+
paths
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
// ../server/src/api/pagination.ts
|
|
938
|
+
/**
|
|
939
|
+
* Query-param parsing for the list pagination contract:
|
|
940
|
+
* `?limit=&cursor=&orderBy=&orderDir=` → `{ items, nextCursor? }`.
|
|
941
|
+
*
|
|
942
|
+
* Every list endpoint parses these identically, so the clamping lives here
|
|
943
|
+
* rather than inline per handler — a handler that clamps differently publishes
|
|
944
|
+
* a different contract under the same documented one, and nothing fails at
|
|
945
|
+
* build time.
|
|
946
|
+
*/
|
|
947
|
+
/**
|
|
948
|
+
* An unparseable or out-of-range `limit` clamps rather than 400s: pagination
|
|
949
|
+
* params are plumbing, and failing a read over one is hostile to clients
|
|
950
|
+
* walking a cursor.
|
|
951
|
+
*/
|
|
952
|
+
function parseListOptions(url) {
|
|
953
|
+
const raw = Number(url.searchParams.get("limit") ?? 50);
|
|
954
|
+
const limit = Number.isFinite(raw) ? Math.min(Math.max(Math.trunc(raw), 1), 200) : 50;
|
|
955
|
+
const orderByRaw = url.searchParams.get("orderBy");
|
|
956
|
+
const orderBy = orderByRaw === "createdAt" || orderByRaw === "updatedAt" || orderByRaw === "name" ? orderByRaw : void 0;
|
|
957
|
+
return {
|
|
958
|
+
limit,
|
|
959
|
+
cursor: url.searchParams.get("cursor") ?? void 0,
|
|
960
|
+
orderBy,
|
|
961
|
+
orderDir: url.searchParams.get("orderDir") === "asc" ? "asc" : void 0
|
|
962
|
+
};
|
|
963
|
+
}
|
|
964
|
+
/** `parseListOptions` plus the definition-only `solveCount` ordering. */
|
|
965
|
+
function parseDefinitionListOptions(url) {
|
|
966
|
+
const base = parseListOptions(url);
|
|
967
|
+
if (url.searchParams.get("orderBy") === "solveCount") return {
|
|
968
|
+
...base,
|
|
969
|
+
orderBy: "solveCount"
|
|
970
|
+
};
|
|
971
|
+
return base;
|
|
972
|
+
}
|
|
973
|
+
// ../server/src/api/bodies.ts
|
|
974
|
+
/**
|
|
975
|
+
* Request-body validators for the API routes that take JSON.
|
|
976
|
+
*
|
|
977
|
+
* They live apart from their handlers so a spec generator can import them
|
|
978
|
+
* without loading a host's route module — in Selva's case a `+server.ts` imports
|
|
979
|
+
* `./$types`, which only resolves inside a SvelteKit build.
|
|
980
|
+
*
|
|
981
|
+
* **A JSON body accepted by an API route belongs in this file.** Adding one
|
|
982
|
+
* inline is invisible to the generator, so the endpoint documents an empty body.
|
|
983
|
+
* Multipart handlers are the exception — `FormData` has no Zod schema to derive
|
|
984
|
+
* from, so their fields are described in the spec directly.
|
|
985
|
+
*/
|
|
986
|
+
var SolveBodySchema = z.object({
|
|
987
|
+
inputs: z.array(z.unknown()).default([]),
|
|
988
|
+
values: z.record(z.string(), z.unknown()).default({}),
|
|
989
|
+
channel: z.enum(["live", "draft"]).default("live"),
|
|
990
|
+
versionId: z.string().optional(),
|
|
991
|
+
/** Must name this same definition, or the route 400s instead of solving a different one. */
|
|
992
|
+
definitionUrl: z.string().optional()
|
|
993
|
+
});
|
|
994
|
+
var CreateProjectBodySchema = z.object({
|
|
995
|
+
name: z.string().min(1, "Project name is required").max(128).trim(),
|
|
996
|
+
description: z.string().max(2e3).optional(),
|
|
997
|
+
visibility: ProjectVisibilitySchema.default("private"),
|
|
998
|
+
autoJoinOnUpload: z.boolean().optional()
|
|
999
|
+
});
|
|
1000
|
+
var UpdateProjectBodySchema = z.object({
|
|
1001
|
+
name: z.string().min(1).max(128).trim(),
|
|
1002
|
+
description: z.string().max(2e3).nullish(),
|
|
1003
|
+
visibility: ProjectVisibilitySchema,
|
|
1004
|
+
autoJoinOnUpload: z.boolean()
|
|
1005
|
+
}).partial();
|
|
1006
|
+
var AddProjectMemberBodySchema = z.object({
|
|
1007
|
+
userId: z.string().min(1, "userId is required"),
|
|
1008
|
+
role: ProjectRoleSchema
|
|
1009
|
+
});
|
|
1010
|
+
var UpdateProjectMemberBodySchema = z.object({ role: ProjectRoleSchema });
|
|
1011
|
+
/** Platform-scope entries are dropped downstream — an invite only grants org rights. */
|
|
1012
|
+
var FlatPermissionSchema = z.union([PlatformPermissionSchema, OrgPermissionSchema]);
|
|
1013
|
+
var CreateInviteBodySchema = z.object({
|
|
1014
|
+
email: z.email("Valid email is required").transform((s) => s.toLowerCase().trim()),
|
|
1015
|
+
orgRole: OrgRoleSchema.default("member"),
|
|
1016
|
+
permissions: z.array(FlatPermissionSchema).default([])
|
|
1017
|
+
});
|
|
1018
|
+
/**
|
|
1019
|
+
* `apiKey` is tri-state: **omitted** keeps the stored key, **null** clears it, a
|
|
1020
|
+
* string replaces it. `.optional().nullable()` — not `.nullish()` — because the
|
|
1021
|
+
* two must stay distinguishable after parsing, or a request that just omits the
|
|
1022
|
+
* field would silently wipe the stored credential.
|
|
1023
|
+
*/
|
|
1024
|
+
var IncomingComputeServerSchema = z.object({
|
|
1025
|
+
id: z.string().min(1),
|
|
1026
|
+
label: z.string().min(1),
|
|
1027
|
+
serverUrl: z.string().min(1),
|
|
1028
|
+
apiKey: z.string().nullable().optional(),
|
|
1029
|
+
timeoutMs: z.number().optional(),
|
|
1030
|
+
retryCount: z.number().optional()
|
|
1031
|
+
});
|
|
1032
|
+
var OrgComputePatchBodySchema = z.object({
|
|
1033
|
+
servers: z.array(IncomingComputeServerSchema),
|
|
1034
|
+
/** May name any server visible to the org. `null` clears the override; omitted leaves it untouched. */
|
|
1035
|
+
defaultServerId: z.string().nullable().optional()
|
|
1036
|
+
});
|
|
1037
|
+
var UpdateOrgMemberBodySchema = z.object({
|
|
1038
|
+
role: OrgRoleSchema.optional(),
|
|
1039
|
+
permissions: z.array(z.enum(ALL_ORG_PERMISSIONS)).optional()
|
|
1040
|
+
}).refine((b) => b.role !== void 0 || b.permissions !== void 0, { message: "Provide at least one of role, permissions" });
|
|
1041
|
+
var CreateApiTokenBodySchema = z.object({
|
|
1042
|
+
name: z.string().trim().min(1, "Name is required").max(100),
|
|
1043
|
+
scopes: z.array(ApiScopeStringSchema).min(1, "Pick at least one scope").max(20),
|
|
1044
|
+
expiresInDays: z.union(API_TOKEN_LIFETIME_DAYS.map((d) => z.literal(d)))
|
|
1045
|
+
});
|
|
1046
|
+
// ../server/src/api/responses-schema.ts
|
|
1047
|
+
/**
|
|
1048
|
+
* Response schemas for the v1 payloads that must not carry a stored secret.
|
|
1049
|
+
*
|
|
1050
|
+
* Four store types hold a credential next to fields a client legitimately
|
|
1051
|
+
* reads: `ShareLink.tokenHash`, `Invite.tokenHash` and `ApiToken.tokenHash` are HMACs of a token,
|
|
1052
|
+
* `ComputeServerCommon.apiKey` is a live Rhino.Compute key. Handlers used to
|
|
1053
|
+
* strip them by destructuring — `const { tokenHash: _omit, ...rest } = invite`
|
|
1054
|
+
* — which works until someone adds a field to the stored type or edits the line
|
|
1055
|
+
* away. Nothing fails at build time; the credential just starts appearing in a
|
|
1056
|
+
* response.
|
|
1057
|
+
*
|
|
1058
|
+
* Parsing through these schemas inverts the default: the response carries only
|
|
1059
|
+
* what the schema names, so a new field on the stored type is invisible to
|
|
1060
|
+
* clients until added here on purpose. Use them via `shaped`/`shapedCollection`
|
|
1061
|
+
* in `./route.ts`.
|
|
1062
|
+
*
|
|
1063
|
+
* These describe **responses**, not stored records — where the two differ (an
|
|
1064
|
+
* invite's one-time `acceptUrl`, a share link's `hasToken` sentinel) the
|
|
1065
|
+
* response is the authority.
|
|
1066
|
+
*/
|
|
1067
|
+
var ShareLinkResponseSchema = z.object({
|
|
1068
|
+
id: z.string(),
|
|
1069
|
+
definitionId: z.string(),
|
|
1070
|
+
channel: z.enum(["live", "draft"]),
|
|
1071
|
+
name: z.string().optional(),
|
|
1072
|
+
createdBy: z.string(),
|
|
1073
|
+
createdAt: z.string(),
|
|
1074
|
+
expiresAt: z.string().nullish(),
|
|
1075
|
+
revokedAt: z.string().nullish(),
|
|
1076
|
+
allowSolve: z.boolean(),
|
|
1077
|
+
maxSolves: z.number().nullish(),
|
|
1078
|
+
solveCount: z.number(),
|
|
1079
|
+
/** Sentinel replacing `tokenHash`: a token exists, its hash is not yours. */
|
|
1080
|
+
hasToken: z.literal(true)
|
|
1081
|
+
});
|
|
1082
|
+
/** The mint response. `token` is the plaintext, returned exactly once. */
|
|
1083
|
+
var CreatedShareLinkResponseSchema = z.object({
|
|
1084
|
+
link: ShareLinkResponseSchema,
|
|
1085
|
+
token: z.string()
|
|
1086
|
+
});
|
|
1087
|
+
var InviteResponseSchema = z.object({
|
|
1088
|
+
id: z.string(),
|
|
1089
|
+
email: z.string(),
|
|
1090
|
+
orgId: z.string(),
|
|
1091
|
+
orgRole: z.string(),
|
|
1092
|
+
orgPermissions: z.array(z.string()),
|
|
1093
|
+
platformPermissions: z.array(z.string()).default([]),
|
|
1094
|
+
invitedBy: z.string(),
|
|
1095
|
+
createdAt: z.string(),
|
|
1096
|
+
expiresAt: z.string(),
|
|
1097
|
+
acceptedAt: z.string().optional(),
|
|
1098
|
+
acceptedByUserId: z.string().optional()
|
|
1099
|
+
});
|
|
1100
|
+
/**
|
|
1101
|
+
* The create response: the invite plus the link to send, built per request.
|
|
1102
|
+
*
|
|
1103
|
+
* `acceptUrl` is returned whatever `delivery` says — mail is best-effort, and
|
|
1104
|
+
* manual sharing is the fallback when it is off or the send failed.
|
|
1105
|
+
*/
|
|
1106
|
+
var CreatedInviteResponseSchema = InviteResponseSchema.extend({
|
|
1107
|
+
acceptUrl: z.string(),
|
|
1108
|
+
delivery: z.enum([
|
|
1109
|
+
"sent",
|
|
1110
|
+
"not-configured",
|
|
1111
|
+
"failed"
|
|
1112
|
+
])
|
|
1113
|
+
});
|
|
1114
|
+
/**
|
|
1115
|
+
* An org-owned compute server. `apiKey` is replaced by `hasApiKey`, so a picker
|
|
1116
|
+
* can render "key set" without any store decrypting a secret to throw away.
|
|
1117
|
+
*/
|
|
1118
|
+
var OrgComputeServerResponseSchema = z.object({
|
|
1119
|
+
id: z.string(),
|
|
1120
|
+
label: z.string(),
|
|
1121
|
+
serverUrl: z.string(),
|
|
1122
|
+
scope: z.literal("org"),
|
|
1123
|
+
ownerOrgId: z.string(),
|
|
1124
|
+
timeoutMs: z.number().optional(),
|
|
1125
|
+
retryCount: z.number().optional(),
|
|
1126
|
+
hasApiKey: z.boolean()
|
|
1127
|
+
});
|
|
1128
|
+
/** A server this org may select but not edit. Never carries a key either. */
|
|
1129
|
+
var ComputeCatalogEntrySchema = z.object({
|
|
1130
|
+
id: z.string(),
|
|
1131
|
+
label: z.string(),
|
|
1132
|
+
serverUrl: z.string(),
|
|
1133
|
+
scope: z.enum(["platform", "org"]),
|
|
1134
|
+
source: z.enum(["platform", "org"]),
|
|
1135
|
+
timeoutMs: z.number().optional(),
|
|
1136
|
+
retryCount: z.number().optional()
|
|
1137
|
+
});
|
|
1138
|
+
var OrgComputeResponseSchema = z.object({
|
|
1139
|
+
servers: z.array(OrgComputeServerResponseSchema),
|
|
1140
|
+
defaultServerId: z.string().nullish(),
|
|
1141
|
+
globalDefaultServerId: z.string().nullish(),
|
|
1142
|
+
catalog: z.array(ComputeCatalogEntrySchema)
|
|
1143
|
+
});
|
|
1144
|
+
var ApiTokenResponseSchema = z.object({
|
|
1145
|
+
id: z.string(),
|
|
1146
|
+
userId: z.string(),
|
|
1147
|
+
createdBy: z.string().nullable(),
|
|
1148
|
+
orgId: z.string(),
|
|
1149
|
+
name: z.string(),
|
|
1150
|
+
scopes: z.array(z.string()),
|
|
1151
|
+
createdAt: z.string(),
|
|
1152
|
+
expiresAt: z.string(),
|
|
1153
|
+
lastUsedAt: z.string().nullable(),
|
|
1154
|
+
revokedAt: z.string().nullable(),
|
|
1155
|
+
/** Scope refusals since midnight UTC, counted in this process only. */
|
|
1156
|
+
refusedToday: z.number()
|
|
1157
|
+
});
|
|
1158
|
+
/** The mint response. `secret` is the raw key, returned exactly once. */
|
|
1159
|
+
var CreatedApiTokenResponseSchema = z.object({
|
|
1160
|
+
token: ApiTokenResponseSchema,
|
|
1161
|
+
secret: z.string()
|
|
1162
|
+
});
|
|
1163
|
+
|
|
1164
|
+
export { AddProjectMemberBodySchema as A, rateLimitedResponse as B, CreateProjectBodySchema as C, withRateLimitHeaders as D, runHandler as E, depsFromConfig as F, mapCoreError as G, definitionScopeTarget as H, InviteResponseSchema as I, readIdempotencyKey as J, runIdempotent as K, requestFingerprint as L, idempotencyCallerId as M, createApiIdempotencyStore as N, OrgComputePatchBodySchema as O, projectScopeTarget as P, SolveBodySchema as S, UpdateProjectBodySchema as U, UpdateProjectMemberBodySchema as a, UpdateOrgMemberBodySchema as b, CreateInviteBodySchema as c, CreateApiTokenBodySchema as d, buildOpenApiDocument as e, readForm as f, requireUpload as g, formText as h, parseParam as i, parseBody as j, assertScope as k, parseListOptions as l, ShareLinkResponseSchema as m, CreatedShareLinkResponseSchema as n, requireParams as o, parseDefinitionListOptions as p, OrgComputeResponseSchema as q, requireCaller as r, scopeRefusalsToday as s, throwZodError as t, CreatedInviteResponseSchema as u, ApiTokenResponseSchema as v, CreatedApiTokenResponseSchema as w, createApiRateLimiter as x, resolveApiRateLimitConfig as y, chargeApiRateLimit as z };
|
|
1165
|
+
//# sourceMappingURL=api.js-CWQeuHWw.js.map
|