@selvajs/selva 4.7.0-beta.5 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/chunks/0M2DDHMf.js +2 -0
- package/build/client/_app/immutable/chunks/0M2DDHMf.js.br +0 -0
- package/build/client/_app/immutable/chunks/0M2DDHMf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BG2iwmg_.js +1 -0
- package/build/client/_app/immutable/chunks/BG2iwmg_.js.br +0 -0
- package/build/client/_app/immutable/chunks/BG2iwmg_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BHKDoXDm2.js +1 -0
- package/build/client/_app/immutable/chunks/BHKDoXDm2.js.br +2 -0
- package/build/client/_app/immutable/chunks/BHKDoXDm2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-eh-BYT2.js +1 -0
- package/build/client/_app/immutable/chunks/C-eh-BYT2.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-eh-BYT2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cg_4c8n32.js +1 -0
- package/build/client/_app/immutable/chunks/Cg_4c8n32.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cg_4c8n32.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuCezvy62.js +1 -0
- package/build/client/_app/immutable/chunks/CuCezvy62.js.br +0 -0
- package/build/client/_app/immutable/chunks/CuCezvy62.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9DFvnxj.js +1 -0
- package/build/client/_app/immutable/chunks/D9DFvnxj.js.br +3 -0
- package/build/client/_app/immutable/chunks/D9DFvnxj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DFsxVbse.js +1 -0
- package/build/client/_app/immutable/chunks/DFsxVbse.js.br +0 -0
- package/build/client/_app/immutable/chunks/DFsxVbse.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DxuIu10f.js +5462 -0
- package/build/client/_app/immutable/chunks/DxuIu10f.js.br +0 -0
- package/build/client/_app/immutable/chunks/DxuIu10f.js.gz +0 -0
- package/build/client/_app/immutable/chunks/qU0FhiPD.js +2 -0
- package/build/client/_app/immutable/chunks/qU0FhiPD.js.br +0 -0
- package/build/client/_app/immutable/chunks/qU0FhiPD.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.ChwO476H.js +2 -0
- package/build/client/_app/immutable/entry/app.ChwO476H.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ChwO476H.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CUuVPYpM.js +1 -0
- package/build/client/_app/immutable/entry/start.CUuVPYpM.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CUuVPYpM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BJ_E7jBc.js +1 -0
- package/build/client/_app/immutable/nodes/1.BJ_E7jBc.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BJ_E7jBc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.DUk5QCcO.js +2 -0
- package/build/client/_app/immutable/nodes/11.DUk5QCcO.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.DUk5QCcO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.BuZd04Lo.js +2 -0
- package/build/client/_app/immutable/nodes/13.BuZd04Lo.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BuZd04Lo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.BXK0gR3D.js +2 -0
- package/build/client/_app/immutable/nodes/14.BXK0gR3D.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.BXK0gR3D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DQnCVxPm.js +21 -0
- package/build/client/_app/immutable/nodes/15.DQnCVxPm.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DQnCVxPm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.SF5XHiBi.js +6 -0
- package/build/client/_app/immutable/nodes/16.SF5XHiBi.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.SF5XHiBi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.CkfBZYMU.js +2 -0
- package/build/client/_app/immutable/nodes/17.CkfBZYMU.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.CkfBZYMU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.lXobnwX1.js +2 -0
- package/build/client/_app/immutable/nodes/19.lXobnwX1.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.lXobnwX1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CRHtzkzt.js +1 -0
- package/build/client/_app/immutable/nodes/2.CRHtzkzt.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CRHtzkzt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.CzAIzrQM.js +12 -0
- package/build/client/_app/immutable/nodes/20.CzAIzrQM.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.CzAIzrQM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.x1LrYfez.js +6 -0
- package/build/client/_app/immutable/nodes/21.x1LrYfez.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.x1LrYfez.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.BtInHilP.js +16 -0
- package/build/client/_app/immutable/nodes/23.BtInHilP.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.BtInHilP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.Dqy8AH_J.js +6 -0
- package/build/client/_app/immutable/nodes/24.Dqy8AH_J.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.Dqy8AH_J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.BiurRrzb.js +4 -0
- package/build/client/_app/immutable/nodes/27.BiurRrzb.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.BiurRrzb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.TVh72E_-.js +4 -0
- package/build/client/_app/immutable/nodes/28.TVh72E_-.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.TVh72E_-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.KA_Czrio.js +2 -0
- package/build/client/_app/immutable/nodes/29.KA_Czrio.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.KA_Czrio.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.De6eJ76N.js +1 -0
- package/build/client/_app/immutable/nodes/3.De6eJ76N.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.De6eJ76N.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.BDN5YXAl.js +2 -0
- package/build/client/_app/immutable/nodes/30.BDN5YXAl.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.BDN5YXAl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.OMz0FTZb.js +1 -0
- package/build/client/_app/immutable/nodes/5.OMz0FTZb.js.br +3 -0
- package/build/client/_app/immutable/nodes/5.OMz0FTZb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CXaFpK04.js +1 -0
- package/build/client/_app/immutable/nodes/6.CXaFpK04.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CXaFpK04.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CYdy2UgN.js +1 -0
- package/build/client/_app/immutable/nodes/7.CYdy2UgN.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CYdy2UgN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bd7w36bu.js +2 -0
- package/build/client/_app/immutable/nodes/8.Bd7w36bu.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bd7w36bu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.B4uZJGIZ.js +1 -0
- package/build/client/_app/immutable/nodes/9.B4uZJGIZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.B4uZJGIZ.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-CCBy-F-z.js +281 -0
- package/build/server/chunks/chunks/AppHeader.js-CCBy-F-z.js.map +1 -0
- package/build/server/chunks/chunks/SideNav.js-BNI_NYXt.js +67 -0
- package/build/server/chunks/chunks/SideNav.js-BNI_NYXt.js.map +1 -0
- package/build/server/chunks/chunks/UserChip.js-CABWy9hQ.js +1163 -0
- package/build/server/chunks/chunks/UserChip.js-CABWy9hQ.js.map +1 -0
- package/build/server/chunks/chunks/access.server.js-55bmpUSo.js +453 -0
- package/build/server/chunks/chunks/access.server.js-55bmpUSo.js.map +1 -0
- package/build/server/chunks/chunks/access2.server.js-DOKxmHQB.js +20 -0
- package/build/server/chunks/chunks/access2.server.js-DOKxmHQB.js.map +1 -0
- package/build/server/chunks/chunks/admin-auth.server.js-BP5VABG_.js +180 -0
- package/build/server/chunks/chunks/admin-auth.server.js-BP5VABG_.js.map +1 -0
- package/build/server/chunks/chunks/admin-config.js-DgmGM6ot.js +3 -0
- package/build/server/chunks/chunks/admin-config.js-DgmGM6ot.js.map +1 -0
- package/build/server/chunks/chunks/api-errors.js-BdoYiwnt.js +141 -0
- package/build/server/chunks/chunks/api-errors.js-BdoYiwnt.js.map +1 -0
- package/build/server/chunks/chunks/auth-bootstrap.server.js-pwspdWCF.js +162 -0
- package/build/server/chunks/chunks/auth-bootstrap.server.js-pwspdWCF.js.map +1 -0
- package/build/server/chunks/chunks/auth.server.js-CiKOtWZ5.js +2 -0
- package/build/server/chunks/chunks/auth.server.js-CiKOtWZ5.js.map +1 -0
- package/build/server/chunks/chunks/bootHealth.server.js-s-jZ2KDW.js +91 -0
- package/build/server/chunks/chunks/bootHealth.server.js-s-jZ2KDW.js.map +1 -0
- package/build/server/chunks/chunks/chunk-N2WCSETE.js-CK2Q00_P.js +2953 -0
- package/build/server/chunks/chunks/chunk-N2WCSETE.js-CK2Q00_P.js.map +1 -0
- package/build/server/chunks/chunks/chunk-S3VUIIRE.js-CeBwYPAp.js +1502 -0
- package/build/server/chunks/chunks/chunk-S3VUIIRE.js-CeBwYPAp.js.map +1 -0
- package/build/server/chunks/chunks/client.js-ChMP-ADp.js +58 -0
- package/build/server/chunks/chunks/client.js-ChMP-ADp.js.map +1 -0
- package/build/server/chunks/chunks/clientCache.server.js-DOyqlBzg.js +195 -0
- package/build/server/chunks/chunks/clientCache.server.js-DOyqlBzg.js.map +1 -0
- package/build/server/chunks/chunks/compute.js-_N5R8pkI.js +747 -0
- package/build/server/chunks/chunks/compute.js-_N5R8pkI.js.map +1 -0
- package/build/server/chunks/chunks/computeLimits.js-Bv2Kbjk8.js +48 -0
- package/build/server/chunks/chunks/computeLimits.js-Bv2Kbjk8.js.map +1 -0
- package/build/server/chunks/chunks/evictChangedServers.js-BOiQY_IL.js +29 -0
- package/build/server/chunks/chunks/evictChangedServers.js-BOiQY_IL.js.map +1 -0
- package/build/server/chunks/chunks/forms.js-pYfsLUaH.js +2 -0
- package/build/server/chunks/chunks/forms.js-pYfsLUaH.js.map +1 -0
- package/build/server/chunks/chunks/internal.js-WBVEU67X.js.map +1 -1
- package/build/server/chunks/chunks/internal2.js-CRTtDh_a.js +224 -0
- package/build/server/chunks/chunks/internal2.js-CRTtDh_a.js.map +1 -0
- package/build/server/chunks/chunks/navigation.js-pYfsLUaH.js +2 -0
- package/build/server/chunks/chunks/navigation.js-pYfsLUaH.js.map +1 -0
- package/build/server/chunks/chunks/org-members.server.js-BlOWocal.js +35 -0
- package/build/server/chunks/chunks/org-members.server.js-BlOWocal.js.map +1 -0
- package/build/server/chunks/chunks/package.js-CzPJLFIP.js +76 -0
- package/build/server/chunks/chunks/package.js-CzPJLFIP.js.map +1 -0
- package/build/server/chunks/chunks/permissions.server.js-C-4T_yf-.js +15 -0
- package/build/server/chunks/chunks/permissions.server.js-C-4T_yf-.js.map +1 -0
- package/build/server/chunks/chunks/providers.server.js-BCmROUq1.js +6252 -0
- package/build/server/chunks/chunks/providers.server.js-BCmROUq1.js.map +1 -0
- package/build/server/chunks/chunks/resolve.server.js-ObCEn_tG.js +62 -0
- package/build/server/chunks/chunks/resolve.server.js-ObCEn_tG.js.map +1 -0
- package/build/server/chunks/chunks/selfUpdate.server.js-B0IhATul.js +152 -0
- package/build/server/chunks/chunks/selfUpdate.server.js-B0IhATul.js.map +1 -0
- package/build/server/chunks/chunks/state.js-CSskG5O4.js +64 -0
- package/build/server/chunks/chunks/state.js-CSskG5O4.js.map +1 -0
- package/build/server/chunks/chunks/stores.js-DHkf0lFO.js +35 -0
- package/build/server/chunks/chunks/stores.js-DHkf0lFO.js.map +1 -0
- package/build/server/chunks/chunks/utils2.js-V7yGq-Kd.js +62 -0
- package/build/server/chunks/chunks/utils2.js-V7yGq-Kd.js.map +1 -0
- package/build/server/chunks/chunks/visualization-HDBKPJGQ.js-CCyAXlVS.js +21 -0
- package/build/server/chunks/chunks/visualization-HDBKPJGQ.js-CCyAXlVS.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/_server.ts.js-ny6qg7b3.js +93 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/_server.ts.js-ny6qg7b3.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/actions/_server.ts.js-CIr-FMIO.js +53 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/actions/_server.ts.js-CIr-FMIO.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/status/_server.ts.js-h7EKtq-V.js +79 -0
- package/build/server/chunks/entries/endpoints/admin/api/compute/status/_server.ts.js-h7EKtq-V.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/_server.ts.js-DDyPMdU4.js +50 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/_server.ts.js-DDyPMdU4.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/_server.ts.js-Bre1-6Si.js +86 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/_server.ts.js-Bre1-6Si.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_server.ts.js-BAGRN9q-.js +72 -0
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_server.ts.js-BAGRN9q-.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/_server.ts.js-DjIbDzDD.js +74 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/_server.ts.js-DjIbDzDD.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/_server.ts.js-BV9YEqFI.js +34 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/_server.ts.js-BV9YEqFI.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_server.ts.js-xF_08qt2.js +71 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_server.ts.js-xF_08qt2.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_server.ts.js-CS6KQL0A.js +103 -0
- package/build/server/chunks/entries/endpoints/admin/api/projects/_server.ts.js-CS6KQL0A.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-VuOYrejT.js +208 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-VuOYrejT.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/throughput/_server.ts.js-V5NRs6as.js +90 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/throughput/_server.ts.js-V5NRs6as.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-_SPujsJW.js +403 -0
- package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-_SPujsJW.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/_server.ts.js-CYIpAhPx.js +76 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/_server.ts.js-CYIpAhPx.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js--FE-5A1u.js +46 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js--FE-5A1u.js.map +1 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_server.ts.js-DYFX69rD.js +86 -0
- package/build/server/chunks/entries/endpoints/admin/api/users/_server.ts.js-DYFX69rD.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-Dzn1VE28.js +0 -0
- package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-Dzn1VE28.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/compute/schema/_server.ts.js-CEfiTeNA.js +68 -0
- package/build/server/chunks/entries/endpoints/api/compute/schema/_server.ts.js-CEfiTeNA.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/_server.ts.js-2okm_O3E.js +75 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/_server.ts.js-2okm_O3E.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js-BQGJqa_y.js +46 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js-BQGJqa_y.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_server.ts.js-BxSN3roq.js +44 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_server.ts.js-BxSN3roq.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js-BaDepDiY.js +40 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js-BaDepDiY.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js-BBxUhG6I.js +46 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js-BBxUhG6I.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js-B2anGcET.js +84 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js-B2anGcET.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js-CxxJA6un.js +47 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js-CxxJA6un.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js-DbJbMiPZ.js +40 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js-DbJbMiPZ.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_server.ts.js-Dojg7QIG.js +94 -0
- package/build/server/chunks/entries/endpoints/api/definitions/_server.ts.js-Dojg7QIG.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-B74eCnn7.js +59 -0
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-B74eCnn7.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-BzclyMf8.js +89 -0
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-BzclyMf8.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-A00t9oxG.js +56 -0
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-A00t9oxG.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/invites/_id_/_server.ts.js-D_xEGLcw.js +49 -0
- package/build/server/chunks/entries/endpoints/api/invites/_id_/_server.ts.js-D_xEGLcw.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/invites/_server.ts.js-Dgx1PidW.js +77 -0
- package/build/server/chunks/entries/endpoints/api/invites/_server.ts.js-Dgx1PidW.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/_server.ts.js-B__-qCZA.js +45 -0
- package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/_server.ts.js-B__-qCZA.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-BWqlr7Hd.js +110 -0
- package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-BWqlr7Hd.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/_server.ts.js-B3QCGoJy.js +79 -0
- package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/_server.ts.js-B3QCGoJy.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/_server.ts.js-6F-0PFlm.js +71 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/_server.ts.js-6F-0PFlm.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_server.ts.js-BFmaq97W.js +65 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_server.ts.js-BFmaq97W.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/_server.ts.js-DTlokUo_.js +64 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/_server.ts.js-DTlokUo_.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js-BvqrCqZV.js +48 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js-BvqrCqZV.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projects/_server.ts.js-leU_84Nx.js +85 -0
- package/build/server/chunks/entries/endpoints/api/projects/_server.ts.js-leU_84Nx.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-CW4BLamb.js +48 -0
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-CW4BLamb.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-Cn9baLry.js +52 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-Cn9baLry.js.map +1 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-YxiD2iVO.js +51 -0
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-YxiD2iVO.js.map +1 -0
- package/build/server/chunks/entries/hooks.server.js-bN3sgEaQ.js +341 -0
- package/build/server/chunks/entries/hooks.server.js-bN3sgEaQ.js.map +1 -0
- package/build/server/chunks/entries/pages/_error.svelte.js-BPgus5uY.js +35 -0
- package/build/server/chunks/entries/pages/_error.svelte.js-BPgus5uY.js.map +1 -0
- package/build/server/chunks/entries/pages/_layout.server.ts.js-i5sNzfgp.js +34 -0
- package/build/server/chunks/entries/pages/_layout.server.ts.js-i5sNzfgp.js.map +1 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-C3CdYJ8Y.js +76 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-C3CdYJ8Y.js.map +1 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-D92N4MfM.js +109 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-D92N4MfM.js.map +1 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-Bw4mDBgj.js +148 -0
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-Bw4mDBgj.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-DiYtKa0_.js +36 -0
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-DiYtKa0_.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CfMnIH9f.js +31 -0
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-CfMnIH9f.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-D_-AZdM0.js +121 -0
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-D_-AZdM0.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-CmMD4AwU.js +75 -0
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-CmMD4AwU.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-Dn97wpia.js +359 -0
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-Dn97wpia.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-CHrfPCF5.js +245 -0
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-CHrfPCF5.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-CuXWmYGp.js +45 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-CuXWmYGp.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-3VheJpBQ.js +612 -0
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-3VheJpBQ.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-DY5J4mc_.js +35 -0
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-DY5J4mc_.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-B2axmFCj.js +86 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-B2axmFCj.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DonYN1Ds.js +616 -0
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DonYN1Ds.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-BTxvr6mI.js +42 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-BTxvr6mI.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-BM5A0rkN.js +282 -0
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-BM5A0rkN.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-ClTMrj80.js +79 -0
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-ClTMrj80.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DR1hipue.js +1363 -0
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DR1hipue.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-DYzUydL1.js +70 -0
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-DYzUydL1.js.map +1 -0
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-BucX_9sF.js +681 -0
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-BucX_9sF.js.map +1 -0
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-Dx3cCf3T.js +62 -0
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-Dx3cCf3T.js.map +1 -0
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DnfZ3Mmf.js +62 -0
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-DnfZ3Mmf.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-DGYJ32pv.js +124 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-DGYJ32pv.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DHN53ehq.js +12096 -0
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DHN53ehq.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-BjiPxbmt.js +73 -0
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-BjiPxbmt.js.map +1 -0
- package/build/server/chunks/entries/pages/library/_page.svelte.js-1gntWlkk.js +328 -0
- package/build/server/chunks/entries/pages/library/_page.svelte.js-1gntWlkk.js.map +1 -0
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-DMGOwB2E.js +76 -0
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-DMGOwB2E.js.map +1 -0
- package/build/server/chunks/entries/pages/login/_page.svelte.js-CQqtzw2V.js +256 -0
- package/build/server/chunks/entries/pages/login/_page.svelte.js-CQqtzw2V.js.map +1 -0
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BzJqFWUU.js +16 -0
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BzJqFWUU.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-bZZHqRUq.js +49 -0
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-bZZHqRUq.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-CGAQADjp.js +101 -0
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-CGAQADjp.js.map +1 -0
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-DuYt1pGa.js +3745 -0
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-DuYt1pGa.js.map +1 -0
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-Cht_e3W1.js +113 -0
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-Cht_e3W1.js.map +1 -0
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CkRPD2-y.js +321 -0
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CkRPD2-y.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-C6ydG0ba.js +28 -0
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-C6ydG0ba.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-C10q4GW6.js +162 -0
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-C10q4GW6.js.map +1 -0
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-Dm0BcY_1.js +35 -0
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-Dm0BcY_1.js.map +1 -0
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-B7_0-uNx.js +42 -0
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-B7_0-uNx.js.map +1 -0
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CSfa36i0.js +593 -0
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CSfa36i0.js.map +1 -0
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B1J9PbcB.js +58 -0
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B1J9PbcB.js.map +1 -0
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-ByLm7nMt.js +539 -0
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-ByLm7nMt.js.map +1 -0
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-DwfdGrm_.js +42 -0
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-DwfdGrm_.js.map +1 -0
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-HSAAn-DI.js +436 -0
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-HSAAn-DI.js.map +1 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-CQt9n8zT.js +50 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-CQt9n8zT.js.map +1 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-C8udTojx.js +262 -0
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-C8udTojx.js.map +1 -0
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-D3fQdI4F.js +32 -0
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-D3fQdI4F.js.map +1 -0
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-Wx1gYCuo.js +16 -0
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-Wx1gYCuo.js.map +1 -0
- package/build/server/chunks/handler-C_oBT0th.js +1206 -0
- package/build/server/chunks/handler-C_oBT0th.js.map +1 -0
- package/build/server/chunks/index.js-B-RhTrwV.js +3747 -0
- package/build/server/chunks/index.js-B-RhTrwV.js.map +1 -0
- package/build/server/chunks/manifest.js-DbaT8xLo.js +548 -0
- package/build/server/chunks/manifest.js-DbaT8xLo.js.map +1 -0
- package/build/server/chunks/nodes/0.js-CEpLefNw.js +25 -0
- package/build/server/chunks/nodes/0.js-CEpLefNw.js.map +1 -0
- package/build/server/chunks/nodes/1.js-DgRzBm1_.js +9 -0
- package/build/server/chunks/nodes/1.js-DgRzBm1_.js.map +1 -0
- package/build/server/chunks/nodes/10.js-DdhhLQJt.js +27 -0
- package/build/server/chunks/nodes/10.js-DdhhLQJt.js.map +1 -0
- package/build/server/chunks/nodes/11.js-Dn1bMnHV.js +28 -0
- package/build/server/chunks/nodes/11.js-Dn1bMnHV.js.map +1 -0
- package/build/server/chunks/nodes/12.js-pdOO2q2s.js +26 -0
- package/build/server/chunks/nodes/12.js-pdOO2q2s.js.map +1 -0
- package/build/server/chunks/nodes/13.js-D0HebxbI.js +26 -0
- package/build/server/chunks/nodes/13.js-D0HebxbI.js.map +1 -0
- package/build/server/chunks/nodes/14.js-CqSx1wax.js +26 -0
- package/build/server/chunks/nodes/14.js-CqSx1wax.js.map +1 -0
- package/build/server/chunks/nodes/15.js-CVKsi7kp.js +38 -0
- package/build/server/chunks/nodes/15.js-CVKsi7kp.js.map +1 -0
- package/build/server/chunks/nodes/16.js-Q_Bu1thc.js +29 -0
- package/build/server/chunks/nodes/16.js-Q_Bu1thc.js.map +1 -0
- package/build/server/chunks/nodes/17.js-CZ8hiAKX.js +9 -0
- package/build/server/chunks/nodes/17.js-CZ8hiAKX.js.map +1 -0
- package/build/server/chunks/nodes/18.js-7XdBdlyl.js +34 -0
- package/build/server/chunks/nodes/18.js-7XdBdlyl.js.map +1 -0
- package/build/server/chunks/nodes/19.js--QTqW8Rg.js +27 -0
- package/build/server/chunks/nodes/19.js--QTqW8Rg.js.map +1 -0
- package/build/server/chunks/nodes/2.js-DlRr_y1E.js +27 -0
- package/build/server/chunks/nodes/2.js-DlRr_y1E.js.map +1 -0
- package/build/server/chunks/nodes/20.js-DuurViiQ.js +40 -0
- package/build/server/chunks/nodes/20.js-DuurViiQ.js.map +1 -0
- package/build/server/chunks/nodes/21.js-DLPsGBUe.js +34 -0
- package/build/server/chunks/nodes/21.js-DLPsGBUe.js.map +1 -0
- package/build/server/chunks/nodes/22.js-iFX0FYlU.js +24 -0
- package/build/server/chunks/nodes/22.js-iFX0FYlU.js.map +1 -0
- package/build/server/chunks/nodes/23.js-DeF7i6MK.js +28 -0
- package/build/server/chunks/nodes/23.js-DeF7i6MK.js.map +1 -0
- package/build/server/chunks/nodes/24.js-IGhSaU-_.js +34 -0
- package/build/server/chunks/nodes/24.js-IGhSaU-_.js.map +1 -0
- package/build/server/chunks/nodes/25.js-DfgGSsw1.js +26 -0
- package/build/server/chunks/nodes/25.js-DfgGSsw1.js.map +1 -0
- package/build/server/chunks/nodes/27.js-C5yOaHre.js +27 -0
- package/build/server/chunks/nodes/27.js-C5yOaHre.js.map +1 -0
- package/build/server/chunks/nodes/28.js-DRt6k5eX.js +26 -0
- package/build/server/chunks/nodes/28.js-DRt6k5eX.js.map +1 -0
- package/build/server/chunks/nodes/29.js-BpciAAsH.js +26 -0
- package/build/server/chunks/nodes/29.js-BpciAAsH.js.map +1 -0
- package/build/server/chunks/nodes/3.js-D2dw1aIG.js +9 -0
- package/build/server/chunks/nodes/3.js-D2dw1aIG.js.map +1 -0
- package/build/server/chunks/nodes/30.js-B19f3CLv.js +26 -0
- package/build/server/chunks/nodes/30.js-B19f3CLv.js.map +1 -0
- package/build/server/chunks/nodes/31.js-DIaImYmw.js +26 -0
- package/build/server/chunks/nodes/31.js-DIaImYmw.js.map +1 -0
- package/build/server/chunks/nodes/32.js-Btz0fZDj.js +26 -0
- package/build/server/chunks/nodes/32.js-Btz0fZDj.js.map +1 -0
- package/build/server/chunks/nodes/5.js-BjxuAVp4.js +15 -0
- package/build/server/chunks/nodes/5.js-BjxuAVp4.js.map +1 -0
- package/build/server/chunks/nodes/6.js-BqjMGg59.js +26 -0
- package/build/server/chunks/nodes/6.js-BqjMGg59.js.map +1 -0
- package/build/server/chunks/nodes/7.js-BLQSVoBK.js +12 -0
- package/build/server/chunks/nodes/7.js-BLQSVoBK.js.map +1 -0
- package/build/server/chunks/nodes/8.js-BEznbukO.js +35 -0
- package/build/server/chunks/nodes/8.js-BEznbukO.js.map +1 -0
- package/build/server/chunks/nodes/9.js-yf_0hC1V.js +26 -0
- package/build/server/chunks/nodes/9.js-yf_0hC1V.js.map +1 -0
- package/package.json +11 -11
- package/build/client/_app/immutable/chunks/2OVL58yC2.js +0 -1
- package/build/client/_app/immutable/chunks/2OVL58yC2.js.br +0 -0
- package/build/client/_app/immutable/chunks/2OVL58yC2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPtz4qQZ2.js +0 -1
- package/build/client/_app/immutable/chunks/BPtz4qQZ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPtz4qQZ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BdRVK1vu.js +0 -2
- package/build/client/_app/immutable/chunks/BdRVK1vu.js.br +0 -0
- package/build/client/_app/immutable/chunks/BdRVK1vu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJcPjHsg.js +0 -1
- package/build/client/_app/immutable/chunks/DJcPjHsg.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJcPjHsg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXTlR_fj.js +0 -5462
- package/build/client/_app/immutable/chunks/DXTlR_fj.js.br +0 -0
- package/build/client/_app/immutable/chunks/DXTlR_fj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UkolJKa32.js +0 -1
- package/build/client/_app/immutable/chunks/UkolJKa32.js.br +0 -2
- package/build/client/_app/immutable/chunks/UkolJKa32.js.gz +0 -0
- package/build/client/_app/immutable/chunks/baw9jva62.js +0 -1
- package/build/client/_app/immutable/chunks/baw9jva62.js.br +0 -0
- package/build/client/_app/immutable/chunks/baw9jva62.js.gz +0 -0
- package/build/client/_app/immutable/chunks/e_P2-3vc.js +0 -2
- package/build/client/_app/immutable/chunks/e_P2-3vc.js.br +0 -0
- package/build/client/_app/immutable/chunks/e_P2-3vc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/fPi7CIcX.js +0 -1
- package/build/client/_app/immutable/chunks/fPi7CIcX.js.br +0 -0
- package/build/client/_app/immutable/chunks/fPi7CIcX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kf9gY1So.js +0 -1
- package/build/client/_app/immutable/chunks/kf9gY1So.js.br +0 -2
- package/build/client/_app/immutable/chunks/kf9gY1So.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.oKZsHOIr.js +0 -2
- package/build/client/_app/immutable/entry/app.oKZsHOIr.js.br +0 -0
- package/build/client/_app/immutable/entry/app.oKZsHOIr.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DTm8KofL.js +0 -1
- package/build/client/_app/immutable/entry/start.DTm8KofL.js.br +0 -1
- package/build/client/_app/immutable/entry/start.DTm8KofL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.C-w54CfF.js +0 -1
- package/build/client/_app/immutable/nodes/1.C-w54CfF.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.C-w54CfF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CDSdxC2l.js +0 -2
- package/build/client/_app/immutable/nodes/11.CDSdxC2l.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.CDSdxC2l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.JZ7vM7DT.js +0 -2
- package/build/client/_app/immutable/nodes/13.JZ7vM7DT.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.JZ7vM7DT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.DORKykCg.js +0 -2
- package/build/client/_app/immutable/nodes/14.DORKykCg.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.DORKykCg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DdRH9qLZ.js +0 -21
- package/build/client/_app/immutable/nodes/15.DdRH9qLZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DdRH9qLZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.VpU9ur-W.js +0 -6
- package/build/client/_app/immutable/nodes/16.VpU9ur-W.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.VpU9ur-W.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.DOkFzPv8.js +0 -2
- package/build/client/_app/immutable/nodes/17.DOkFzPv8.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.DOkFzPv8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.DLY-0xju.js +0 -2
- package/build/client/_app/immutable/nodes/19.DLY-0xju.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.DLY-0xju.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B2Ht-eXC.js +0 -1
- package/build/client/_app/immutable/nodes/2.B2Ht-eXC.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B2Ht-eXC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.zW7P9yAA.js +0 -12
- package/build/client/_app/immutable/nodes/20.zW7P9yAA.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.zW7P9yAA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.Dgw38XUG.js +0 -6
- package/build/client/_app/immutable/nodes/21.Dgw38XUG.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.Dgw38XUG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.BTrCHZNB.js +0 -16
- package/build/client/_app/immutable/nodes/23.BTrCHZNB.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.BTrCHZNB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.oXfUAIu3.js +0 -6
- package/build/client/_app/immutable/nodes/24.oXfUAIu3.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.oXfUAIu3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.X40UvD1F.js +0 -4
- package/build/client/_app/immutable/nodes/27.X40UvD1F.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.X40UvD1F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.Dr7lOdry.js +0 -4
- package/build/client/_app/immutable/nodes/28.Dr7lOdry.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.Dr7lOdry.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.D2AMWuOp.js +0 -2
- package/build/client/_app/immutable/nodes/29.D2AMWuOp.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.D2AMWuOp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DNBRM1XV.js +0 -1
- package/build/client/_app/immutable/nodes/3.DNBRM1XV.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DNBRM1XV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.65jXD6Hx.js +0 -2
- package/build/client/_app/immutable/nodes/30.65jXD6Hx.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.65jXD6Hx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CSplf0ao.js +0 -1
- package/build/client/_app/immutable/nodes/5.CSplf0ao.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CSplf0ao.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.Cr2hG_wc.js +0 -1
- package/build/client/_app/immutable/nodes/6.Cr2hG_wc.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.Cr2hG_wc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CEZkW_Tr.js +0 -1
- package/build/client/_app/immutable/nodes/7.CEZkW_Tr.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CEZkW_Tr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.C1Yta3H5.js +0 -2
- package/build/client/_app/immutable/nodes/8.C1Yta3H5.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C1Yta3H5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DizAGKkF.js +0 -1
- package/build/client/_app/immutable/nodes/9.DizAGKkF.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DizAGKkF.js.gz +0 -0
- package/build/server/chunks/chunks/AppHeader.js-AYAN3F5z.js +0 -281
- package/build/server/chunks/chunks/AppHeader.js-AYAN3F5z.js.map +0 -1
- package/build/server/chunks/chunks/SideNav.js-DKHpQjuu.js +0 -67
- package/build/server/chunks/chunks/SideNav.js-DKHpQjuu.js.map +0 -1
- package/build/server/chunks/chunks/UserChip.js-C-6376Q0.js +0 -1163
- package/build/server/chunks/chunks/UserChip.js-C-6376Q0.js.map +0 -1
- package/build/server/chunks/chunks/access.server.js-DTk8L9Xm.js +0 -453
- package/build/server/chunks/chunks/access.server.js-DTk8L9Xm.js.map +0 -1
- package/build/server/chunks/chunks/access2.server.js-snT285fJ.js +0 -20
- package/build/server/chunks/chunks/access2.server.js-snT285fJ.js.map +0 -1
- package/build/server/chunks/chunks/admin-auth.server.js-CWv707EC.js +0 -180
- package/build/server/chunks/chunks/admin-auth.server.js-CWv707EC.js.map +0 -1
- package/build/server/chunks/chunks/admin-config.js-DdCBspOh.js +0 -3
- package/build/server/chunks/chunks/admin-config.js-DdCBspOh.js.map +0 -1
- package/build/server/chunks/chunks/api-errors.js-BXNSPeAn.js +0 -141
- package/build/server/chunks/chunks/api-errors.js-BXNSPeAn.js.map +0 -1
- package/build/server/chunks/chunks/auth-bootstrap.server.js-DRbumHNf.js +0 -162
- package/build/server/chunks/chunks/auth-bootstrap.server.js-DRbumHNf.js.map +0 -1
- package/build/server/chunks/chunks/auth.server.js-D2zzXC2B.js +0 -2
- package/build/server/chunks/chunks/auth.server.js-D2zzXC2B.js.map +0 -1
- package/build/server/chunks/chunks/bootHealth.server.js-uYPUvUjO.js +0 -91
- package/build/server/chunks/chunks/bootHealth.server.js-uYPUvUjO.js.map +0 -1
- package/build/server/chunks/chunks/chunk-6TMSTNHN.js-3Bz2KNTb.js +0 -1502
- package/build/server/chunks/chunks/chunk-6TMSTNHN.js-3Bz2KNTb.js.map +0 -1
- package/build/server/chunks/chunks/chunk-NVMSD4CC.js-BgY8vvUs.js +0 -2919
- package/build/server/chunks/chunks/chunk-NVMSD4CC.js-BgY8vvUs.js.map +0 -1
- package/build/server/chunks/chunks/client.js-P-TdOF79.js +0 -58
- package/build/server/chunks/chunks/client.js-P-TdOF79.js.map +0 -1
- package/build/server/chunks/chunks/clientCache.server.js-D5qWksO1.js +0 -195
- package/build/server/chunks/chunks/clientCache.server.js-D5qWksO1.js.map +0 -1
- package/build/server/chunks/chunks/compute.js-DJMNVamB.js +0 -747
- package/build/server/chunks/chunks/compute.js-DJMNVamB.js.map +0 -1
- package/build/server/chunks/chunks/computeLimits.js-BvAV5j60.js +0 -48
- package/build/server/chunks/chunks/computeLimits.js-BvAV5j60.js.map +0 -1
- package/build/server/chunks/chunks/evictChangedServers.js-ClNIxVww.js +0 -29
- package/build/server/chunks/chunks/evictChangedServers.js-ClNIxVww.js.map +0 -1
- package/build/server/chunks/chunks/forms.js-2QtFofqz.js +0 -2
- package/build/server/chunks/chunks/forms.js-2QtFofqz.js.map +0 -1
- package/build/server/chunks/chunks/internal2.js-DEN8UhZO.js +0 -224
- package/build/server/chunks/chunks/internal2.js-DEN8UhZO.js.map +0 -1
- package/build/server/chunks/chunks/navigation.js-2QtFofqz.js +0 -2
- package/build/server/chunks/chunks/navigation.js-2QtFofqz.js.map +0 -1
- package/build/server/chunks/chunks/org-members.server.js-YlJjV8_t.js +0 -35
- package/build/server/chunks/chunks/org-members.server.js-YlJjV8_t.js.map +0 -1
- package/build/server/chunks/chunks/package.js-CaaoNObv.js +0 -76
- package/build/server/chunks/chunks/package.js-CaaoNObv.js.map +0 -1
- package/build/server/chunks/chunks/permissions.server.js-BR0B8hVZ.js +0 -15
- package/build/server/chunks/chunks/permissions.server.js-BR0B8hVZ.js.map +0 -1
- package/build/server/chunks/chunks/providers.server.js-DVrVQ227.js +0 -6247
- package/build/server/chunks/chunks/providers.server.js-DVrVQ227.js.map +0 -1
- package/build/server/chunks/chunks/resolve.server.js-CsO79Ncd.js +0 -62
- package/build/server/chunks/chunks/resolve.server.js-CsO79Ncd.js.map +0 -1
- package/build/server/chunks/chunks/selfUpdate.server.js-BZsKx2kH.js +0 -152
- package/build/server/chunks/chunks/selfUpdate.server.js-BZsKx2kH.js.map +0 -1
- package/build/server/chunks/chunks/state.js-F5ep4mVz.js +0 -64
- package/build/server/chunks/chunks/state.js-F5ep4mVz.js.map +0 -1
- package/build/server/chunks/chunks/stores.js-D23nyPLC.js +0 -35
- package/build/server/chunks/chunks/stores.js-D23nyPLC.js.map +0 -1
- package/build/server/chunks/chunks/utils2.js-BeHcWGXn.js +0 -62
- package/build/server/chunks/chunks/utils2.js-BeHcWGXn.js.map +0 -1
- package/build/server/chunks/chunks/visualization-BIHTM2KJ.js-tLehqRSm.js +0 -21
- package/build/server/chunks/chunks/visualization-BIHTM2KJ.js-tLehqRSm.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/compute/_server.ts.js-wVuDvrFy.js +0 -93
- package/build/server/chunks/entries/endpoints/admin/api/compute/_server.ts.js-wVuDvrFy.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/compute/actions/_server.ts.js-cD2vCXHV.js +0 -53
- package/build/server/chunks/entries/endpoints/admin/api/compute/actions/_server.ts.js-cD2vCXHV.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/compute/status/_server.ts.js-GP1jx9qX.js +0 -79
- package/build/server/chunks/entries/endpoints/admin/api/compute/status/_server.ts.js-GP1jx9qX.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/_server.ts.js-D6Y4KbYK.js +0 -50
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/_server.ts.js-D6Y4KbYK.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/_server.ts.js-DZJjpxc2.js +0 -86
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/_server.ts.js-DZJjpxc2.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_server.ts.js-CS4Qz_XQ.js +0 -72
- package/build/server/chunks/entries/endpoints/admin/api/orgs/_server.ts.js-CS4Qz_XQ.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/_server.ts.js-3Ebkx09z.js +0 -74
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/_server.ts.js-3Ebkx09z.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/_server.ts.js-DOhMfJyf.js +0 -34
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/_server.ts.js-DOhMfJyf.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_server.ts.js-BrLIt3Jh.js +0 -71
- package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_server.ts.js-BrLIt3Jh.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/projects/_server.ts.js-CYVWpcid.js +0 -103
- package/build/server/chunks/entries/endpoints/admin/api/projects/_server.ts.js-CYVWpcid.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-DeiqLieq.js +0 -208
- package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-DeiqLieq.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/system/throughput/_server.ts.js-Dq4mvpeu.js +0 -90
- package/build/server/chunks/entries/endpoints/admin/api/system/throughput/_server.ts.js-Dq4mvpeu.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-DfWo6sH-.js +0 -403
- package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-DfWo6sH-.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/_server.ts.js-BjF6nnTY.js +0 -76
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/_server.ts.js-BjF6nnTY.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js-VTxX1cJJ.js +0 -46
- package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/_server.ts.js-VTxX1cJJ.js.map +0 -1
- package/build/server/chunks/entries/endpoints/admin/api/users/_server.ts.js-BrV4UzaJ.js +0 -86
- package/build/server/chunks/entries/endpoints/admin/api/users/_server.ts.js-BrV4UzaJ.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-BWpyFqnS.js +0 -0
- package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-BWpyFqnS.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/compute/schema/_server.ts.js-Bim33O-D.js +0 -64
- package/build/server/chunks/entries/endpoints/api/compute/schema/_server.ts.js-Bim33O-D.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/_server.ts.js-B81Y_gEm.js +0 -75
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/_server.ts.js-B81Y_gEm.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js-Zf1Tcfe8.js +0 -46
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/_server.ts.js-Zf1Tcfe8.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_server.ts.js-arAfVsw-.js +0 -44
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_server.ts.js-arAfVsw-.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js-CUjzFtk_.js +0 -40
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/_server.ts.js-CUjzFtk_.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js-BKAgaQh9.js +0 -46
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/_server.ts.js-BKAgaQh9.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js-iMpHd7MR.js +0 -84
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_server.ts.js-iMpHd7MR.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js-DJ6mSPwT.js +0 -47
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_server.ts.js-DJ6mSPwT.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js-KkfSAaKU.js +0 -40
- package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/_server.ts.js-KkfSAaKU.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/definitions/_server.ts.js-fc6Xi8vt.js +0 -94
- package/build/server/chunks/entries/endpoints/api/definitions/_server.ts.js-fc6Xi8vt.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-Buqf5yUC.js +0 -59
- package/build/server/chunks/entries/endpoints/api/diag/throughput/_server.ts.js-Buqf5yUC.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-BVmQ7dkH.js +0 -89
- package/build/server/chunks/entries/endpoints/api/files/_...path_/_server.ts.js-BVmQ7dkH.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-DCNRkHyf.js +0 -56
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-DCNRkHyf.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/invites/_id_/_server.ts.js-7pTpOKW0.js +0 -49
- package/build/server/chunks/entries/endpoints/api/invites/_id_/_server.ts.js-7pTpOKW0.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/invites/_server.ts.js-g93YLTLU.js +0 -77
- package/build/server/chunks/entries/endpoints/api/invites/_server.ts.js-g93YLTLU.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/_server.ts.js-CEExfukq.js +0 -45
- package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/_server.ts.js-CEExfukq.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-DbDWz9gf.js +0 -110
- package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-DbDWz9gf.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/_server.ts.js-DAEkbq9O.js +0 -79
- package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/_server.ts.js-DAEkbq9O.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/projects/_id_/_server.ts.js-DFCbEjiK.js +0 -71
- package/build/server/chunks/entries/endpoints/api/projects/_id_/_server.ts.js-DFCbEjiK.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_server.ts.js-BPj5goxx.js +0 -65
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_server.ts.js-BPj5goxx.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/_server.ts.js-B475Pa8T.js +0 -64
- package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/_server.ts.js-B475Pa8T.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js-Cc1nlfHR.js +0 -48
- package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/_server.ts.js-Cc1nlfHR.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/projects/_server.ts.js-eb-kwNJ0.js +0 -85
- package/build/server/chunks/entries/endpoints/api/projects/_server.ts.js-eb-kwNJ0.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-tvYDn2S7.js +0 -48
- package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-tvYDn2S7.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-C4mvL4p5.js +0 -52
- package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-C4mvL4p5.js.map +0 -1
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-D7hQjRs_.js +0 -51
- package/build/server/chunks/entries/endpoints/auth/supabase/start/_server.ts.js-D7hQjRs_.js.map +0 -1
- package/build/server/chunks/entries/hooks.server.js-xCzuEP4L.js +0 -341
- package/build/server/chunks/entries/hooks.server.js-xCzuEP4L.js.map +0 -1
- package/build/server/chunks/entries/pages/_error.svelte.js-CxXvoX2l.js +0 -35
- package/build/server/chunks/entries/pages/_error.svelte.js-CxXvoX2l.js.map +0 -1
- package/build/server/chunks/entries/pages/_layout.server.ts.js-CBN-MFPt.js +0 -34
- package/build/server/chunks/entries/pages/_layout.server.ts.js-CBN-MFPt.js.map +0 -1
- package/build/server/chunks/entries/pages/_page.svelte.js-BayTh-oz.js +0 -76
- package/build/server/chunks/entries/pages/_page.svelte.js-BayTh-oz.js.map +0 -1
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CqEE42rK.js +0 -109
- package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CqEE42rK.js.map +0 -1
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CzQ_a18S.js +0 -148
- package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-CzQ_a18S.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-DuflaaU8.js +0 -36
- package/build/server/chunks/entries/pages/admin/_error.svelte.js-DuflaaU8.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-BX-PJtTN.js +0 -31
- package/build/server/chunks/entries/pages/admin/_layout.server.ts.js-BX-PJtTN.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-Blxit_Pi.js +0 -121
- package/build/server/chunks/entries/pages/admin/_layout.svelte.js-Blxit_Pi.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-V33ek5uk.js +0 -75
- package/build/server/chunks/entries/pages/admin/_page.server.ts.js-V33ek5uk.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-DCz01DT4.js +0 -359
- package/build/server/chunks/entries/pages/admin/_page.svelte.js-DCz01DT4.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-CB_j-5nN.js +0 -245
- package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-CB_j-5nN.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-D716GE03.js +0 -45
- package/build/server/chunks/entries/pages/admin/compute/_page.server.ts.js-D716GE03.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-C_roaqwN.js +0 -612
- package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-C_roaqwN.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-BLAT_3BT.js +0 -35
- package/build/server/chunks/entries/pages/admin/organizations/_page.server.ts.js-BLAT_3BT.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-LItiLsTO.js +0 -86
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-LItiLsTO.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-CD7GzJ0a.js +0 -616
- package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-CD7GzJ0a.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DHQ1SMC8.js +0 -42
- package/build/server/chunks/entries/pages/admin/projects/_page.server.ts.js-DHQ1SMC8.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-PEVVD1hz.js +0 -282
- package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-PEVVD1hz.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-7xxEcfbl.js +0 -79
- package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-7xxEcfbl.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DV29U8ML.js +0 -1363
- package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DV29U8ML.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-D-nx2W_5.js +0 -70
- package/build/server/chunks/entries/pages/admin/users/_page.server.ts.js-D-nx2W_5.js.map +0 -1
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-IdZ3AdQd.js +0 -681
- package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-IdZ3AdQd.js.map +0 -1
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-4YV39zo1.js +0 -62
- package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-4YV39zo1.js.map +0 -1
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-CeWL1Qk4.js +0 -62
- package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-CeWL1Qk4.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-DhFb3NaU.js +0 -124
- package/build/server/chunks/entries/pages/library/_guid_/_page.server.ts.js-DhFb3NaU.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-BsffxeXd.js +0 -12096
- package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-BsffxeXd.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-BkMeXS9O.js +0 -73
- package/build/server/chunks/entries/pages/library/_page.server.ts.js-BkMeXS9O.js.map +0 -1
- package/build/server/chunks/entries/pages/library/_page.svelte.js-blnmEQ-o.js +0 -328
- package/build/server/chunks/entries/pages/library/_page.svelte.js-blnmEQ-o.js.map +0 -1
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bw-a30vh.js +0 -76
- package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bw-a30vh.js.map +0 -1
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DSXMr75X.js +0 -256
- package/build/server/chunks/entries/pages/login/_page.svelte.js-DSXMr75X.js.map +0 -1
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-DgEnEaqK.js +0 -16
- package/build/server/chunks/entries/pages/logout/_page.server.ts.js-DgEnEaqK.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Bv9GVGMV.js +0 -49
- package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Bv9GVGMV.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-BUxZcCVz.js +0 -101
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-BUxZcCVz.js.map +0 -1
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-O8Sd-6bV.js +0 -3745
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-O8Sd-6bV.js.map +0 -1
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DoCznQ0-.js +0 -113
- package/build/server/chunks/entries/pages/setup/_page.server.ts.js-DoCznQ0-.js.map +0 -1
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CCPZU4QX.js +0 -321
- package/build/server/chunks/entries/pages/setup/_page.svelte.js-CCPZU4QX.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-D1j-DbQg.js +0 -28
- package/build/server/chunks/entries/pages/team/_layout.server.ts.js-D1j-DbQg.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-Dk2pFA0B.js +0 -162
- package/build/server/chunks/entries/pages/team/_layout.svelte.js-Dk2pFA0B.js.map +0 -1
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-B2OdV_29.js +0 -35
- package/build/server/chunks/entries/pages/team/_page.server.ts.js-B2OdV_29.js.map +0 -1
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-BlCuggyX.js +0 -42
- package/build/server/chunks/entries/pages/team/compute/_page.server.ts.js-BlCuggyX.js.map +0 -1
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-DYNE5ABk.js +0 -593
- package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-DYNE5ABk.js.map +0 -1
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B4b3SZOP.js +0 -58
- package/build/server/chunks/entries/pages/team/members/_page.server.ts.js-B4b3SZOP.js.map +0 -1
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-CHd4CN0C.js +0 -539
- package/build/server/chunks/entries/pages/team/members/_page.svelte.js-CHd4CN0C.js.map +0 -1
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-NFDW3PWw.js +0 -42
- package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-NFDW3PWw.js.map +0 -1
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-BFU_On_5.js +0 -436
- package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-BFU_On_5.js.map +0 -1
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-C-ZrYWBh.js +0 -50
- package/build/server/chunks/entries/pages/team/reclaim/_page.server.ts.js-C-ZrYWBh.js.map +0 -1
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-yqHcDyMF.js +0 -262
- package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-yqHcDyMF.js.map +0 -1
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-D4Qjk1fq.js +0 -32
- package/build/server/chunks/entries/pages/team/settings/_page.server.ts.js-D4Qjk1fq.js.map +0 -1
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-C0GnGxkp.js +0 -16
- package/build/server/chunks/entries/pages/team/shares/_page.server.ts.js-C0GnGxkp.js.map +0 -1
- package/build/server/chunks/handler-C1wPoG6z.js +0 -1206
- package/build/server/chunks/handler-C1wPoG6z.js.map +0 -1
- package/build/server/chunks/index.js-CcGY6Xru.js +0 -3747
- package/build/server/chunks/index.js-CcGY6Xru.js.map +0 -1
- package/build/server/chunks/manifest.js-4zIU5_xF.js +0 -548
- package/build/server/chunks/manifest.js-4zIU5_xF.js.map +0 -1
- package/build/server/chunks/nodes/0.js-B_6GhKJ8.js +0 -25
- package/build/server/chunks/nodes/0.js-B_6GhKJ8.js.map +0 -1
- package/build/server/chunks/nodes/1.js-w6iNuu_p.js +0 -9
- package/build/server/chunks/nodes/1.js-w6iNuu_p.js.map +0 -1
- package/build/server/chunks/nodes/10.js-B1qCAcpJ.js +0 -27
- package/build/server/chunks/nodes/10.js-B1qCAcpJ.js.map +0 -1
- package/build/server/chunks/nodes/11.js-O6PJlINw.js +0 -28
- package/build/server/chunks/nodes/11.js-O6PJlINw.js.map +0 -1
- package/build/server/chunks/nodes/12.js-CUbufUon.js +0 -26
- package/build/server/chunks/nodes/12.js-CUbufUon.js.map +0 -1
- package/build/server/chunks/nodes/13.js-HhzOjujZ.js +0 -26
- package/build/server/chunks/nodes/13.js-HhzOjujZ.js.map +0 -1
- package/build/server/chunks/nodes/14.js-CNftKGUy.js +0 -26
- package/build/server/chunks/nodes/14.js-CNftKGUy.js.map +0 -1
- package/build/server/chunks/nodes/15.js-iS2sMPAh.js +0 -38
- package/build/server/chunks/nodes/15.js-iS2sMPAh.js.map +0 -1
- package/build/server/chunks/nodes/16.js-BLW2wpqY.js +0 -29
- package/build/server/chunks/nodes/16.js-BLW2wpqY.js.map +0 -1
- package/build/server/chunks/nodes/17.js-BXU0IoJo.js +0 -9
- package/build/server/chunks/nodes/17.js-BXU0IoJo.js.map +0 -1
- package/build/server/chunks/nodes/18.js-DGns1zZz.js +0 -34
- package/build/server/chunks/nodes/18.js-DGns1zZz.js.map +0 -1
- package/build/server/chunks/nodes/19.js-viNBXeh7.js +0 -27
- package/build/server/chunks/nodes/19.js-viNBXeh7.js.map +0 -1
- package/build/server/chunks/nodes/2.js-D4shsDuL.js +0 -27
- package/build/server/chunks/nodes/2.js-D4shsDuL.js.map +0 -1
- package/build/server/chunks/nodes/20.js-Cy3-jXnw.js +0 -40
- package/build/server/chunks/nodes/20.js-Cy3-jXnw.js.map +0 -1
- package/build/server/chunks/nodes/21.js-BG1ajoFp.js +0 -34
- package/build/server/chunks/nodes/21.js-BG1ajoFp.js.map +0 -1
- package/build/server/chunks/nodes/22.js-BJsw1K0_.js +0 -24
- package/build/server/chunks/nodes/22.js-BJsw1K0_.js.map +0 -1
- package/build/server/chunks/nodes/23.js-BYM4G85N.js +0 -28
- package/build/server/chunks/nodes/23.js-BYM4G85N.js.map +0 -1
- package/build/server/chunks/nodes/24.js-BqgIDvwz.js +0 -34
- package/build/server/chunks/nodes/24.js-BqgIDvwz.js.map +0 -1
- package/build/server/chunks/nodes/25.js-DWhdYf2C.js +0 -26
- package/build/server/chunks/nodes/25.js-DWhdYf2C.js.map +0 -1
- package/build/server/chunks/nodes/27.js-Bz-IRtAq.js +0 -27
- package/build/server/chunks/nodes/27.js-Bz-IRtAq.js.map +0 -1
- package/build/server/chunks/nodes/28.js-BEawWTlr.js +0 -26
- package/build/server/chunks/nodes/28.js-BEawWTlr.js.map +0 -1
- package/build/server/chunks/nodes/29.js-KJTwD08r.js +0 -26
- package/build/server/chunks/nodes/29.js-KJTwD08r.js.map +0 -1
- package/build/server/chunks/nodes/3.js-CtTwes7V.js +0 -9
- package/build/server/chunks/nodes/3.js-CtTwes7V.js.map +0 -1
- package/build/server/chunks/nodes/30.js-iD-GalAT.js +0 -26
- package/build/server/chunks/nodes/30.js-iD-GalAT.js.map +0 -1
- package/build/server/chunks/nodes/31.js-BKsO_tnZ.js +0 -26
- package/build/server/chunks/nodes/31.js-BKsO_tnZ.js.map +0 -1
- package/build/server/chunks/nodes/32.js-yb1lQm_m.js +0 -26
- package/build/server/chunks/nodes/32.js-yb1lQm_m.js.map +0 -1
- package/build/server/chunks/nodes/5.js-B09SDkNw.js +0 -15
- package/build/server/chunks/nodes/5.js-B09SDkNw.js.map +0 -1
- package/build/server/chunks/nodes/6.js--SQ6F4Vx.js +0 -26
- package/build/server/chunks/nodes/6.js--SQ6F4Vx.js.map +0 -1
- package/build/server/chunks/nodes/7.js-BYGZJ3r0.js +0 -12
- package/build/server/chunks/nodes/7.js-BYGZJ3r0.js.map +0 -1
- package/build/server/chunks/nodes/8.js-DylKEQoi.js +0 -35
- package/build/server/chunks/nodes/8.js-DylKEQoi.js.map +0 -1
- package/build/server/chunks/nodes/9.js-U2TxkMWR.js +0 -26
- package/build/server/chunks/nodes/9.js-U2TxkMWR.js.map +0 -1
|
@@ -1,747 +0,0 @@
|
|
|
1
|
-
import './src.js-C5mUn1eC.js';
|
|
2
|
-
import { N as NoopLogger } from './limits.js-BniDP5VZ.js';
|
|
3
|
-
import { p, l } from './chunk-Y3M7P3BW.js-qwxSY5dh.js';
|
|
4
|
-
import { B, k as ke, $ } from './chunk-6TMSTNHN.js-3Bz2KNTb.js';
|
|
5
|
-
import { createHash } from 'node:crypto';
|
|
6
|
-
import { gzip, gunzipSync } from 'node:zlib';
|
|
7
|
-
import { promisify } from 'node:util';
|
|
8
|
-
import { lookup } from 'node:dns/promises';
|
|
9
|
-
import { isIP } from 'node:net';
|
|
10
|
-
|
|
11
|
-
//#region ../server/src/compute/transform-input.ts
|
|
12
|
-
/**
|
|
13
|
-
* Adapt a persisted `SchemaInput` (plus the user's chosen value) into the package's
|
|
14
|
-
* raw `InputParamSchema`, then let `@selvajs/compute`'s own `processInput` produce the
|
|
15
|
-
* typed `InputParam`. The package handles every paramType (Number/Integer/Text/Boolean/
|
|
16
|
-
* ValueList/Geometry/File/Color), normalizes the lowercase UI paramType to its
|
|
17
|
-
* PascalCase form, and falls back gracefully on underspecified inputs — so we no longer
|
|
18
|
-
* maintain a parallel hand-rolled transform that silently coerced valueList/file/color
|
|
19
|
-
* to Text and drifted from the package (whose consumers already delegate here).
|
|
20
|
-
* `values`/`acceptedFormats` are absent on `SchemaInput` (they live on the layout
|
|
21
|
-
* item's config), so valueList/file inputs fall back to carrying the selected value with
|
|
22
|
-
* no option list — the same value that reaches Grasshopper.
|
|
23
|
-
*/
|
|
24
|
-
function transformInputParameter(input, value) {
|
|
25
|
-
const processed = ke({
|
|
26
|
-
id: input.id,
|
|
27
|
-
name: input.nickname,
|
|
28
|
-
nickname: input.nickname || null,
|
|
29
|
-
description: input.description || "",
|
|
30
|
-
paramType: input.paramType === "dynamicValueList" ? "valueList" : input.paramType,
|
|
31
|
-
treeAccess: input.inputStructure === "tree",
|
|
32
|
-
minimum: input.minimum ?? null,
|
|
33
|
-
maximum: input.maximum ?? null,
|
|
34
|
-
atLeast: 1,
|
|
35
|
-
atMost: 1,
|
|
36
|
-
stepSize: input.stepSize,
|
|
37
|
-
default: value ?? input.default
|
|
38
|
-
});
|
|
39
|
-
const effective = value ?? input.default;
|
|
40
|
-
if (processed.default == null && effective != null) {
|
|
41
|
-
if (Array.isArray(effective)) processed.default = effective;
|
|
42
|
-
else if (processed.paramType === "ValueList" && typeof effective !== "object") processed.default = effective;
|
|
43
|
-
}
|
|
44
|
-
return processed;
|
|
45
|
-
}
|
|
46
|
-
//#endregion
|
|
47
|
-
//#region ../server/src/compute/solve-cache-envelope.ts
|
|
48
|
-
/**
|
|
49
|
-
* L2 cache entry format (R6). An entry is the gzipped response body plus a tiny
|
|
50
|
-
* metadata header, so a hit is near-CPU-free: no `JSON.stringify`, no re-solve —
|
|
51
|
-
* gzip clients get the stored bytes verbatim, and the header carries just enough
|
|
52
|
-
* to rebuild the `ok` outcome (error/warning counts for the metric, uncompressed
|
|
53
|
-
* length for the `Content-Length` on a gunzip fallback).
|
|
54
|
-
*
|
|
55
|
-
* Wire layout (opaque to the `ISolveResultCache` backend, which sees only bytes):
|
|
56
|
-
*
|
|
57
|
-
* [ 4 bytes: header length N, big-endian uint32 ]
|
|
58
|
-
* [ N bytes: UTF-8 JSON EnvelopeHeader ]
|
|
59
|
-
* [ rest: gzipped JSON response body ]
|
|
60
|
-
*
|
|
61
|
-
* The `algo` echo (M3) is already stripped at the source in the package's
|
|
62
|
-
* `runSolve`, so the body never carries the base64 definition — entries stay
|
|
63
|
-
* small without a strip step here.
|
|
64
|
-
*/
|
|
65
|
-
/**
|
|
66
|
-
* Encode a cache entry from the gzipped body + header. The body MUST already be
|
|
67
|
-
* gzipped (the pipeline gzips before storing so every hit serves compressed
|
|
68
|
-
* bytes; a rare non-gzip client gunzips on read).
|
|
69
|
-
*/
|
|
70
|
-
function encodeSolveCacheEntry(header, gzippedBody) {
|
|
71
|
-
const headerJson = Buffer.from(JSON.stringify(header), "utf8");
|
|
72
|
-
const out = Buffer.allocUnsafe(4 + headerJson.byteLength + gzippedBody.byteLength);
|
|
73
|
-
out.writeUInt32BE(headerJson.byteLength, 0);
|
|
74
|
-
headerJson.copy(out, 4);
|
|
75
|
-
Buffer.from(gzippedBody.buffer, gzippedBody.byteOffset, gzippedBody.byteLength).copy(out, 4 + headerJson.byteLength);
|
|
76
|
-
return out;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Decode a cache entry. Returns `null` on any malformed input (truncated, bad
|
|
80
|
-
* length prefix, non-JSON header) — a corrupt entry is treated as a miss, never
|
|
81
|
-
* an error, matching the best-effort cache contract.
|
|
82
|
-
*/
|
|
83
|
-
function decodeSolveCacheEntry(bytes) {
|
|
84
|
-
if (bytes.byteLength < 4) return null;
|
|
85
|
-
const buf = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
86
|
-
const headerEnd = 4 + buf.readUInt32BE(0);
|
|
87
|
-
if (headerEnd > buf.byteLength) return null;
|
|
88
|
-
let header;
|
|
89
|
-
try {
|
|
90
|
-
header = JSON.parse(buf.toString("utf8", 4, headerEnd));
|
|
91
|
-
} catch {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
if (typeof header?.errorCount !== "number" || typeof header?.warningCount !== "number" || typeof header?.serializedBytes !== "number" || typeof header?.inputHash !== "string") return null;
|
|
95
|
-
const gzippedBody = new Uint8Array(bytes.buffer, bytes.byteOffset + headerEnd, bytes.byteLength - headerEnd);
|
|
96
|
-
return {
|
|
97
|
-
header,
|
|
98
|
-
gzippedBody
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
/** Gunzip a stored body back to the JSON string, for a non-gzip client (rare). */
|
|
102
|
-
function gunzipEntryBody(gzippedBody) {
|
|
103
|
-
return gunzipSync(gzippedBody).toString("utf8");
|
|
104
|
-
}
|
|
105
|
-
//#endregion
|
|
106
|
-
//#region ../server/src/compute/solve-pipeline.ts
|
|
107
|
-
/**
|
|
108
|
-
* Transport-agnostic solve pipeline — the callable core lifted out of the app's
|
|
109
|
-
* `/api/compute` route (embeddable-server-layer plan, K3).
|
|
110
|
-
*
|
|
111
|
-
* Given an already-resolved solve context — the `.gh` bytes, the input params +
|
|
112
|
-
* user values, and a warm `SolveScheduler` (from `createClientCache`) — this
|
|
113
|
-
* runs the framework-free half of a solve:
|
|
114
|
-
*
|
|
115
|
-
* input tree build → scheduler.solve (with abort/timeout classification) →
|
|
116
|
-
* JSON serialize (size-guarded) → optional gzip → Server-Timing envelope.
|
|
117
|
-
*
|
|
118
|
-
* It returns a discriminated {@link SolveOutcome}: `ok` carries the ready-to-send
|
|
119
|
-
* {@link SolveEnvelope} (body + headers + phase metrics), while the error
|
|
120
|
-
* variants (`timeout`, `client_abort`, `too_large`, `compute_error`) name a
|
|
121
|
-
* failure the transport maps to its own status code. Nothing here throws for an
|
|
122
|
-
* expected failure and nothing here touches auth, the database, share tokens,
|
|
123
|
-
* rate limits, or metric sinks — those stay app policy in the route.
|
|
124
|
-
*
|
|
125
|
-
* The Server-Timing string it emits IS the versioned wire contract (audit D5):
|
|
126
|
-
* see {@link COMPUTE_CONTRACT_VERSION} and {@link COMPUTE_VERSION_HEADER}.
|
|
127
|
-
*/
|
|
128
|
-
/** Async gzip (audit B8) — off the event loop, unlike the old `gzipSync`. */
|
|
129
|
-
var gzipAsync = promisify(gzip);
|
|
130
|
-
/** Response header carrying {@link COMPUTE_CONTRACT_VERSION}. */
|
|
131
|
-
var COMPUTE_VERSION_HEADER = "X-Selva-Compute-Version";
|
|
132
|
-
/**
|
|
133
|
-
* Run the framework-free half of a solve and produce a typed outcome. See the
|
|
134
|
-
* module doc for the phase sequence and the app/library boundary.
|
|
135
|
-
*/
|
|
136
|
-
async function runSolvePipeline(args) {
|
|
137
|
-
const { client, signal } = args;
|
|
138
|
-
const treeBuildStart = performance.now();
|
|
139
|
-
const inputTree = B.fromInputParams(args.inputs.filter((input) => input.paramType).map((input) => transformInputParameter(input, args.values[input.id])));
|
|
140
|
-
const treeBuildMs = performance.now() - treeBuildStart;
|
|
141
|
-
let inputKey = null;
|
|
142
|
-
if (args.solveCache) {
|
|
143
|
-
inputKey = deriveSolveCacheInputKey(inputTree, args.solveCache.configSubset).hash;
|
|
144
|
-
let stored = null;
|
|
145
|
-
try {
|
|
146
|
-
stored = await args.solveCache.lookup(inputKey);
|
|
147
|
-
} catch {
|
|
148
|
-
stored = null;
|
|
149
|
-
}
|
|
150
|
-
if (stored) {
|
|
151
|
-
const hit = buildEnvelopeFromCacheEntry(stored, inputKey, args);
|
|
152
|
-
if (hit) return hit;
|
|
153
|
-
(args.logger ?? new NoopLogger()).warn("Discarding corrupt or hash-mismatched L2 cache entry, solving fresh", {
|
|
154
|
-
component: "Compute/l2-cache",
|
|
155
|
-
inputKeyPrefix: inputKey.slice(0, 16)
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const settleSeqBefore = client.solveMeta.seq;
|
|
160
|
-
const rhinoSeqBefore = client.rhinoTiming.seq;
|
|
161
|
-
let result;
|
|
162
|
-
const solveStart = performance.now();
|
|
163
|
-
try {
|
|
164
|
-
result = await client.scheduler.solve(args.definitionSource, inputTree, { signal });
|
|
165
|
-
} catch (err) {
|
|
166
|
-
const durationMs = performance.now() - solveStart;
|
|
167
|
-
if (err instanceof Error && err.name === "AbortError") {
|
|
168
|
-
if (signal.aborted) return {
|
|
169
|
-
kind: "client_abort",
|
|
170
|
-
durationMs
|
|
171
|
-
};
|
|
172
|
-
return {
|
|
173
|
-
kind: "timeout",
|
|
174
|
-
durationMs,
|
|
175
|
-
message: `Solve exceeded the ${Math.round(args.maxSolveDurationMs / 1e3)}s deadline.`
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
if (err instanceof p) {
|
|
179
|
-
if (err.code === l.QUEUE_FULL) return {
|
|
180
|
-
kind: "shed",
|
|
181
|
-
durationMs,
|
|
182
|
-
reason: "queue_full",
|
|
183
|
-
retryAfterSeconds: 1,
|
|
184
|
-
message: "Compute server is at capacity. Retry shortly."
|
|
185
|
-
};
|
|
186
|
-
if (err.code === l.QUEUE_TIMEOUT) return {
|
|
187
|
-
kind: "shed",
|
|
188
|
-
durationMs,
|
|
189
|
-
reason: "queue_timeout",
|
|
190
|
-
retryAfterSeconds: 1,
|
|
191
|
-
message: "Compute request waited too long in the queue. Retry shortly."
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
return {
|
|
195
|
-
kind: "compute_error",
|
|
196
|
-
durationMs,
|
|
197
|
-
error: err
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
const solveMs = performance.now() - solveStart;
|
|
201
|
-
const serializeStart = performance.now();
|
|
202
|
-
let serialized;
|
|
203
|
-
try {
|
|
204
|
-
serialized = JSON.stringify(result);
|
|
205
|
-
} catch (err) {
|
|
206
|
-
if (err instanceof RangeError) return { kind: "too_large" };
|
|
207
|
-
throw err;
|
|
208
|
-
}
|
|
209
|
-
if (serialized.length > args.responseMaxBytes) return { kind: "too_large" };
|
|
210
|
-
const serializeMs = performance.now() - serializeStart;
|
|
211
|
-
const worthSendingGzip = /\bgzip\b/i.test(args.acceptEncoding) && serialized.length > 1024;
|
|
212
|
-
const willCache = args.solveCache != null;
|
|
213
|
-
let compressed = null;
|
|
214
|
-
let gzipMs = 0;
|
|
215
|
-
if (worthSendingGzip || willCache) {
|
|
216
|
-
const gzipStart = performance.now();
|
|
217
|
-
compressed = await gzipAsync(Buffer.from(serialized));
|
|
218
|
-
gzipMs = performance.now() - gzipStart;
|
|
219
|
-
}
|
|
220
|
-
if (args.solveCache && inputKey && compressed) {
|
|
221
|
-
const entry = encodeSolveCacheEntry({
|
|
222
|
-
errorCount: result.errors?.length ?? 0,
|
|
223
|
-
warningCount: result.warnings?.length ?? 0,
|
|
224
|
-
serializedBytes: serialized.length,
|
|
225
|
-
inputHash: inputKey
|
|
226
|
-
}, new Uint8Array(compressed));
|
|
227
|
-
args.solveCache.store(inputKey, entry);
|
|
228
|
-
}
|
|
229
|
-
const serverTotalMs = performance.now() - args.loadStartMs;
|
|
230
|
-
const settle = client.solveMeta.seq === settleSeqBefore + 1 ? client.solveMeta.last : null;
|
|
231
|
-
const rhino = settle && !settle.fromCache && client.rhinoTiming.seq === rhinoSeqBefore + 1 ? client.rhinoTiming.last : null;
|
|
232
|
-
const sendCompressed = compressed && worthSendingGzip ? compressed : null;
|
|
233
|
-
const headers = {
|
|
234
|
-
"Content-Type": "application/json",
|
|
235
|
-
"Server-Timing": buildServerTiming({
|
|
236
|
-
defLoadMs: args.defLoadMs,
|
|
237
|
-
treeBuildMs,
|
|
238
|
-
solveMs,
|
|
239
|
-
serializeMs,
|
|
240
|
-
gzipMs,
|
|
241
|
-
serverTotalMs,
|
|
242
|
-
rhino,
|
|
243
|
-
settle,
|
|
244
|
-
byteRefOutcome: args.byteRefOutcome,
|
|
245
|
-
l2CacheHit: args.solveCache ? false : null,
|
|
246
|
-
prepMarks: args.prepMarks ?? []
|
|
247
|
-
}),
|
|
248
|
-
[COMPUTE_VERSION_HEADER]: String(1),
|
|
249
|
-
Vary: "Accept-Encoding"
|
|
250
|
-
};
|
|
251
|
-
const metrics = {
|
|
252
|
-
treeBuildMs,
|
|
253
|
-
solveMs,
|
|
254
|
-
serializeMs,
|
|
255
|
-
gzipMs,
|
|
256
|
-
serverTotalMs,
|
|
257
|
-
serializedBytes: serialized.length,
|
|
258
|
-
compressedBytes: sendCompressed?.byteLength ?? null,
|
|
259
|
-
l2CacheHit: args.solveCache ? false : null
|
|
260
|
-
};
|
|
261
|
-
let envelope;
|
|
262
|
-
if (sendCompressed) {
|
|
263
|
-
headers["Content-Encoding"] = "gzip";
|
|
264
|
-
headers["Content-Length"] = String(sendCompressed.byteLength);
|
|
265
|
-
envelope = {
|
|
266
|
-
body: new Uint8Array(sendCompressed),
|
|
267
|
-
encoding: "gzip",
|
|
268
|
-
headers,
|
|
269
|
-
result,
|
|
270
|
-
metrics
|
|
271
|
-
};
|
|
272
|
-
} else {
|
|
273
|
-
headers["Content-Length"] = String(Buffer.byteLength(serialized));
|
|
274
|
-
envelope = {
|
|
275
|
-
body: serialized,
|
|
276
|
-
headers,
|
|
277
|
-
result,
|
|
278
|
-
metrics
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
return {
|
|
282
|
-
kind: "ok",
|
|
283
|
-
envelope,
|
|
284
|
-
solveMs,
|
|
285
|
-
errorCount: result.errors?.length ?? 0,
|
|
286
|
-
warningCount: result.warnings?.length ?? 0
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Re-key a coalesced envelope to a single waiter's `Accept-Encoding` (audit C5).
|
|
291
|
-
*
|
|
292
|
-
* The single-flight coalescer (R4) runs ONE pipeline execution for N identical
|
|
293
|
-
* concurrent solves and hands every waiter the same {@link SolveEnvelope}. That
|
|
294
|
-
* envelope's wire form — gzip body + `Content-Encoding: gzip`, or the plain JSON
|
|
295
|
-
* string — is baked from the FIRST caller's `Accept-Encoding`. A later waiter
|
|
296
|
-
* with a different `Accept-Encoding` would otherwise receive a body labelled with
|
|
297
|
-
* the wrong encoding: a non-gzip client joining a gzip flight gets gzip bytes it
|
|
298
|
-
* cannot decode (`Vary` can't help — this is one object shared across waiters,
|
|
299
|
-
* not a cache lookup). Encoding is not in the coalesce key by design, so mixed
|
|
300
|
-
* clients still coalesce; this adapts the shared result to each waiter instead.
|
|
301
|
-
*
|
|
302
|
-
* Returns the body + headers to send THIS waiter. Only the correctness-critical
|
|
303
|
-
* direction is adapted — a gzip envelope served to a non-gzip waiter is gunzipped
|
|
304
|
-
* back to JSON. The reverse (a plain-JSON envelope to a gzip-capable waiter) is
|
|
305
|
-
* left uncompressed: gzip is an optimisation the client advertises, never a
|
|
306
|
-
* requirement, so sending it plain is correct, just not maximally small. The
|
|
307
|
-
* common all-gzip case returns the envelope's own body/headers untouched.
|
|
308
|
-
*/
|
|
309
|
-
function adaptEnvelopeToEncoding(envelope, acceptEncoding) {
|
|
310
|
-
const waiterWantsGzip = /\bgzip\b/i.test(acceptEncoding);
|
|
311
|
-
if (envelope.encoding === "gzip" && !waiterWantsGzip) {
|
|
312
|
-
const json = gunzipSync(envelope.body instanceof Uint8Array ? envelope.body : Buffer.from(envelope.body)).toString("utf8");
|
|
313
|
-
const headers = { ...envelope.headers };
|
|
314
|
-
delete headers["Content-Encoding"];
|
|
315
|
-
headers["Content-Length"] = String(Buffer.byteLength(json));
|
|
316
|
-
return {
|
|
317
|
-
body: json,
|
|
318
|
-
headers
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
return {
|
|
322
|
-
body: envelope.body,
|
|
323
|
-
headers: envelope.headers
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Build the `ok` outcome from a stored L2 entry — the near-CPU-free hit path (no
|
|
328
|
-
* solve, no `JSON.stringify`, no gzip). Returns `null` when the entry is corrupt
|
|
329
|
-
* or its stored `inputHash` doesn't match the requesting key (defense-in-depth
|
|
330
|
-
* against a wide-hash collision), so the caller falls through and solves.
|
|
331
|
-
*/
|
|
332
|
-
function buildEnvelopeFromCacheEntry(entryBytes, inputKey, args) {
|
|
333
|
-
const decoded = decodeSolveCacheEntry(entryBytes);
|
|
334
|
-
if (!decoded || decoded.header.inputHash !== inputKey) return null;
|
|
335
|
-
const { header, gzippedBody } = decoded;
|
|
336
|
-
const clientWantsGzip = /\bgzip\b/i.test(args.acceptEncoding);
|
|
337
|
-
const serverTotalMs = performance.now() - args.loadStartMs;
|
|
338
|
-
const headers = {
|
|
339
|
-
"Content-Type": "application/json",
|
|
340
|
-
"Server-Timing": buildServerTiming({
|
|
341
|
-
defLoadMs: args.defLoadMs,
|
|
342
|
-
treeBuildMs: 0,
|
|
343
|
-
solveMs: 0,
|
|
344
|
-
serializeMs: 0,
|
|
345
|
-
gzipMs: 0,
|
|
346
|
-
serverTotalMs,
|
|
347
|
-
rhino: null,
|
|
348
|
-
settle: null,
|
|
349
|
-
byteRefOutcome: args.byteRefOutcome,
|
|
350
|
-
l2CacheHit: true,
|
|
351
|
-
prepMarks: args.prepMarks ?? []
|
|
352
|
-
}),
|
|
353
|
-
[COMPUTE_VERSION_HEADER]: String(1),
|
|
354
|
-
Vary: "Accept-Encoding"
|
|
355
|
-
};
|
|
356
|
-
const metrics = {
|
|
357
|
-
treeBuildMs: 0,
|
|
358
|
-
solveMs: 0,
|
|
359
|
-
serializeMs: 0,
|
|
360
|
-
gzipMs: 0,
|
|
361
|
-
serverTotalMs,
|
|
362
|
-
serializedBytes: header.serializedBytes,
|
|
363
|
-
compressedBytes: clientWantsGzip ? gzippedBody.byteLength : null,
|
|
364
|
-
l2CacheHit: true
|
|
365
|
-
};
|
|
366
|
-
let envelope;
|
|
367
|
-
if (clientWantsGzip) {
|
|
368
|
-
headers["Content-Encoding"] = "gzip";
|
|
369
|
-
headers["Content-Length"] = String(gzippedBody.byteLength);
|
|
370
|
-
envelope = {
|
|
371
|
-
body: new Uint8Array(gzippedBody),
|
|
372
|
-
encoding: "gzip",
|
|
373
|
-
headers,
|
|
374
|
-
metrics
|
|
375
|
-
};
|
|
376
|
-
} else {
|
|
377
|
-
const json = gunzipEntryBody(gzippedBody);
|
|
378
|
-
headers["Content-Length"] = String(Buffer.byteLength(json));
|
|
379
|
-
envelope = {
|
|
380
|
-
body: json,
|
|
381
|
-
headers,
|
|
382
|
-
metrics
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
return {
|
|
386
|
-
kind: "ok",
|
|
387
|
-
envelope,
|
|
388
|
-
solveMs: 0,
|
|
389
|
-
errorCount: header.errorCount,
|
|
390
|
-
warningCount: header.warningCount
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Assemble the `Server-Timing` header. The browser reads these to attribute its
|
|
395
|
-
* round-trip: `total` here == the server's headers-to-out wall time, so browser
|
|
396
|
-
* `ttfb − total` ≈ network+send latency. When the compute server reported its
|
|
397
|
-
* own decode/solve/encode (VektorNode fork), `rhino_*` is time ON the compute
|
|
398
|
-
* server and `compute_link` is everything between (network + queue wait). Prep
|
|
399
|
-
* sub-phases ride as `p_*`; cache verdicts as 0/1 `selva_cache`/`def_reupload`.
|
|
400
|
-
*/
|
|
401
|
-
function buildServerTiming(parts) {
|
|
402
|
-
let header = `load;dur=${parts.defLoadMs.toFixed(1)}, tree;dur=${parts.treeBuildMs.toFixed(1)}, solve;dur=${parts.solveMs.toFixed(1)}, serialize;dur=${parts.serializeMs.toFixed(1)}, gzip;dur=${parts.gzipMs.toFixed(1)}, total;dur=${parts.serverTotalMs.toFixed(1)}`;
|
|
403
|
-
const rhino = parts.rhino;
|
|
404
|
-
if (rhino) {
|
|
405
|
-
const onRhinoMs = rhino.decode + rhino.solve + rhino.encode;
|
|
406
|
-
const computeLinkMs = Math.max(0, parts.solveMs - onRhinoMs);
|
|
407
|
-
header += `, rhino_decode;dur=${rhino.decode.toFixed(1)}, rhino_solve;dur=${rhino.solve.toFixed(1)}, rhino_encode;dur=${rhino.encode.toFixed(1)}, compute_link;dur=${computeLinkMs.toFixed(1)}`;
|
|
408
|
-
}
|
|
409
|
-
for (const [label, ms] of parts.prepMarks) header += `, p_${label};dur=${ms.toFixed(1)}`;
|
|
410
|
-
const settle = parts.settle;
|
|
411
|
-
if (settle) {
|
|
412
|
-
header += `, selva_cache;dur=${settle.fromCache ? 1 : 0}`;
|
|
413
|
-
if (settle.definitionReuploaded !== void 0) header += `, def_reupload;dur=${settle.definitionReuploaded ? 1 : 0}`;
|
|
414
|
-
}
|
|
415
|
-
const byteRef = parts.byteRefOutcome;
|
|
416
|
-
if (byteRef) {
|
|
417
|
-
const verdict = !byteRef.loaded ? "skipped" : byteRef.fromCache ? "hit" : "miss";
|
|
418
|
-
header += `, def_bytes;desc=${verdict}`;
|
|
419
|
-
}
|
|
420
|
-
if (parts.l2CacheHit !== null) header += `, l2_cache;dur=${parts.l2CacheHit ? 1 : 0}`;
|
|
421
|
-
return header;
|
|
422
|
-
}
|
|
423
|
-
//#endregion
|
|
424
|
-
//#region ../server/src/compute/solve-cache-key.ts
|
|
425
|
-
/**
|
|
426
|
-
* Durable L2 cache-key derivation (H2 / R8 / R13).
|
|
427
|
-
*
|
|
428
|
-
* The in-process L1 cache keys on a 32-bit FNV hash — fine for a 20-entry Map,
|
|
429
|
-
* unsafe for a durable, cross-user cache where a collision serves user A's
|
|
430
|
-
* geometry to user B (CONTEXT.md L92–97 records exactly this bug shipping once).
|
|
431
|
-
* So the L2 key is a wide SHA-256 hash (SHA-256 collisions aren't a realistic
|
|
432
|
-
* threat, so hash-to-hash comparison at hit time is defense-in-depth enough —
|
|
433
|
-
* no byte-for-byte preimage comparison is done or needed).
|
|
434
|
-
*
|
|
435
|
-
* What goes into the key:
|
|
436
|
-
* - The **transformed** input tree (R13) — the exact tree handed to the
|
|
437
|
-
* scheduler, canonicalized with the package's exported `stableStringify` so
|
|
438
|
-
* the L2 key parity-matches the L1 canonicalization path.
|
|
439
|
-
* - A **config subset** (R8): everything OTHER than definition+inputs that
|
|
440
|
-
* changes a solve's result — model units, tolerances, `dataversion`, the
|
|
441
|
-
* compute contract version, and (when known) the Rhino server identity. A
|
|
442
|
-
* durable key of `(versionId, inputHash)` alone would collide across
|
|
443
|
-
* differing server configs or Rhino versions.
|
|
444
|
-
*
|
|
445
|
-
* `versionId`, `definitionId`, and `orgId` are NOT hashed in here — they're
|
|
446
|
-
* separate parts of the {@link SolveCacheKey} tuple so the backend can scope its
|
|
447
|
-
* keyspace (per-definition quota, per-org isolation) without unpacking the hash.
|
|
448
|
-
*/
|
|
449
|
-
/**
|
|
450
|
-
* Derive the durable `inputKey` from the transformed input tree and the solve
|
|
451
|
-
* config subset. Deterministic and stable across processes/instances: the same
|
|
452
|
-
* tree + config always produce the same hash, which is what lets a shared cache
|
|
453
|
-
* hit across app instances.
|
|
454
|
-
*
|
|
455
|
-
* @param transformedTree the tree AFTER `transformInputParameter`/`TreeBuilder`
|
|
456
|
-
* (R13) — the exact object handed to `scheduler.solve`.
|
|
457
|
-
* @param config solve-affecting config (R8); `COMPUTE_CONTRACT_VERSION` is folded
|
|
458
|
-
* in automatically so a wire-contract bump invalidates old entries for free.
|
|
459
|
-
*/
|
|
460
|
-
function deriveSolveCacheInputKey(transformedTree, config) {
|
|
461
|
-
const canonical = $({
|
|
462
|
-
v: 1,
|
|
463
|
-
tree: transformedTree,
|
|
464
|
-
config
|
|
465
|
-
});
|
|
466
|
-
return { hash: createHash("sha256").update(canonical).digest("hex") };
|
|
467
|
-
}
|
|
468
|
-
//#endregion
|
|
469
|
-
//#region ../server/src/compute/safe-url.ts
|
|
470
|
-
/**
|
|
471
|
-
* SSRF guard for `loadRemoteDefinition`. Without it an authenticated user could
|
|
472
|
-
* submit `http://169.254.169.254/...` (cloud metadata) or any intranet endpoint
|
|
473
|
-
* and the server would fetch it on their behalf.
|
|
474
|
-
*
|
|
475
|
-
* Two layers:
|
|
476
|
-
*
|
|
477
|
-
* 1. `isSafeRemoteDefinitionUrl` — synchronous literal pre-filter. Rejects
|
|
478
|
-
* protocol, hostname literals, and every IP *encoding* that maps to a
|
|
479
|
-
* blocked address (dotted-decimal, integer, octal, hex, short-form,
|
|
480
|
-
* IPv4-mapped IPv6). Fast and DNS-free; safe to call anywhere.
|
|
481
|
-
*
|
|
482
|
-
* 2. `assertSafeRemoteDefinitionUrl` — resolves the hostname via DNS and
|
|
483
|
-
* re-checks the *resolved* IP. This is the real defense: it catches a
|
|
484
|
-
* public name that resolves to a private IP, which the literal filter
|
|
485
|
-
* can't see. Still not bulletproof against rebinding (the IP can change
|
|
486
|
-
* between this lookup and fetch's own); for that the caller would have to
|
|
487
|
-
* connect to the resolved IP directly. Connecting by IP is a larger change
|
|
488
|
-
* — this closes the practical bypasses (literal encodings + a DNS record
|
|
489
|
-
* that points inward) which is what an attacker actually reaches for.
|
|
490
|
-
*/
|
|
491
|
-
/**
|
|
492
|
-
* True when `ip` (a normalized IPv4 or IPv6 literal from `isIP`/`dns.lookup`)
|
|
493
|
-
* is loopback, private, link-local, or otherwise must-not-fetch. IPv4-mapped
|
|
494
|
-
* IPv6 (`::ffff:a.b.c.d`) is unwrapped to its embedded IPv4 first so the v4
|
|
495
|
-
* rules apply.
|
|
496
|
-
*/
|
|
497
|
-
function isBlockedIp(ip) {
|
|
498
|
-
let addr = ip.toLowerCase();
|
|
499
|
-
const mappedDotted = /^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.exec(addr);
|
|
500
|
-
if (mappedDotted) addr = mappedDotted[1];
|
|
501
|
-
else {
|
|
502
|
-
const mappedHex = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(addr);
|
|
503
|
-
if (mappedHex) {
|
|
504
|
-
const hi = parseInt(mappedHex[1], 16);
|
|
505
|
-
const lo = parseInt(mappedHex[2], 16);
|
|
506
|
-
addr = [
|
|
507
|
-
hi >> 8 & 255,
|
|
508
|
-
hi & 255,
|
|
509
|
-
lo >> 8 & 255,
|
|
510
|
-
lo & 255
|
|
511
|
-
].join(".");
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
if (isIP(addr) === 4) {
|
|
515
|
-
const octets = addr.split(".").map(Number);
|
|
516
|
-
if (octets.length !== 4 || octets.some((o) => o > 255)) return true;
|
|
517
|
-
const [a, b] = octets;
|
|
518
|
-
if (a === 0) return true;
|
|
519
|
-
if (a === 127) return true;
|
|
520
|
-
if (a === 10) return true;
|
|
521
|
-
if (a === 192 && b === 168) return true;
|
|
522
|
-
if (a === 172 && b >= 16 && b <= 31) return true;
|
|
523
|
-
if (a === 169 && b === 254) return true;
|
|
524
|
-
return false;
|
|
525
|
-
}
|
|
526
|
-
if (addr === "::1" || addr === "::") return true;
|
|
527
|
-
if (/^(fc|fd)[0-9a-f]{0,2}:/.test(addr)) return true;
|
|
528
|
-
if (/^fe[89ab][0-9a-f]:/.test(addr)) return true;
|
|
529
|
-
return false;
|
|
530
|
-
}
|
|
531
|
-
/**
|
|
532
|
-
* Parse a bare-IPv4 hostname in any encoding browsers/glibc accept — integer
|
|
533
|
-
* (`2130706433`), octal (`0177.0.0.1`), hex (`0x7f000001`), and short forms
|
|
534
|
-
* (`127.1`) — into a canonical dotted-decimal string. Returns null when the
|
|
535
|
-
* host is not a numeric IPv4 literal (i.e. it's a real name or already-valid
|
|
536
|
-
* dotted-quad, which callers handle separately).
|
|
537
|
-
*/
|
|
538
|
-
function canonicalizeNumericIpv4(host) {
|
|
539
|
-
if (isIP(host) === 4) return host;
|
|
540
|
-
const rawParts = host.split(".");
|
|
541
|
-
if (rawParts.length === 0 || rawParts.length > 4) return null;
|
|
542
|
-
const parseUInt = (s) => {
|
|
543
|
-
if (s === "") return null;
|
|
544
|
-
let n;
|
|
545
|
-
if (/^0x[0-9a-f]+$/i.test(s)) n = parseInt(s, 16);
|
|
546
|
-
else if (/^0[0-7]+$/.test(s)) n = parseInt(s, 8);
|
|
547
|
-
else if (/^[0-9]+$/.test(s)) n = parseInt(s, 10);
|
|
548
|
-
else return null;
|
|
549
|
-
return Number.isFinite(n) ? n : null;
|
|
550
|
-
};
|
|
551
|
-
const nums = rawParts.map(parseUInt);
|
|
552
|
-
if (nums.some((n) => n === null)) return null;
|
|
553
|
-
const parts = nums;
|
|
554
|
-
let value;
|
|
555
|
-
switch (parts.length) {
|
|
556
|
-
case 1:
|
|
557
|
-
value = parts[0];
|
|
558
|
-
break;
|
|
559
|
-
case 2:
|
|
560
|
-
if (parts[0] > 255 || parts[1] > 16777215) return null;
|
|
561
|
-
value = parts[0] << 24 | parts[1];
|
|
562
|
-
break;
|
|
563
|
-
case 3:
|
|
564
|
-
if (parts[0] > 255 || parts[1] > 255 || parts[2] > 65535) return null;
|
|
565
|
-
value = parts[0] << 24 | parts[1] << 16 | parts[2];
|
|
566
|
-
break;
|
|
567
|
-
default:
|
|
568
|
-
if (parts.some((p) => p > 255)) return null;
|
|
569
|
-
value = parts[0] << 24 | parts[1] << 16 | parts[2] << 8 | parts[3];
|
|
570
|
-
}
|
|
571
|
-
value = value >>> 0;
|
|
572
|
-
if (value > 4294967295) return null;
|
|
573
|
-
return [
|
|
574
|
-
value >>> 24 & 255,
|
|
575
|
-
value >>> 16 & 255,
|
|
576
|
-
value >>> 8 & 255,
|
|
577
|
-
value & 255
|
|
578
|
-
].join(".");
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Synchronous literal pre-filter. Rejects bad schemes, loopback hostnames, and
|
|
582
|
-
* any IP literal (in any encoding) that resolves to a blocked address. Does NOT
|
|
583
|
-
* perform DNS — a public *name* that points at a private IP passes here and is
|
|
584
|
-
* caught by `assertSafeRemoteDefinitionUrl`.
|
|
585
|
-
*/
|
|
586
|
-
function isSafeRemoteDefinitionUrl(raw) {
|
|
587
|
-
let parsed;
|
|
588
|
-
try {
|
|
589
|
-
parsed = new URL(raw);
|
|
590
|
-
} catch {
|
|
591
|
-
return false;
|
|
592
|
-
}
|
|
593
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return false;
|
|
594
|
-
let host = parsed.hostname.toLowerCase();
|
|
595
|
-
if (!host) return false;
|
|
596
|
-
if (host === "localhost" || host.endsWith(".localhost")) return false;
|
|
597
|
-
if (host.startsWith("[") && host.endsWith("]")) host = host.slice(1, -1);
|
|
598
|
-
if (isIP(host) === 6) return !isBlockedIp(host);
|
|
599
|
-
const canonical = canonicalizeNumericIpv4(host);
|
|
600
|
-
if (canonical) return !isBlockedIp(canonical);
|
|
601
|
-
return true;
|
|
602
|
-
}
|
|
603
|
-
/**
|
|
604
|
-
* Full SSRF check: literal pre-filter, then resolve every A/AAAA record and
|
|
605
|
-
* reject if *any* resolved IP is blocked. Returns the original URL on success
|
|
606
|
-
* so callers can `await assertSafeRemoteDefinitionUrl(url)` inline. Throws on
|
|
607
|
-
* any rejection.
|
|
608
|
-
*/
|
|
609
|
-
async function assertSafeRemoteDefinitionUrl(raw, logger = new NoopLogger()) {
|
|
610
|
-
if (!isSafeRemoteDefinitionUrl(raw)) {
|
|
611
|
-
logger.warn("Blocked remote definition URL", {
|
|
612
|
-
component: "Compute/ssrf",
|
|
613
|
-
reason: "literal-filter",
|
|
614
|
-
host: hostOf(raw)
|
|
615
|
-
});
|
|
616
|
-
throw new Error("Remote definition URL is not allowed");
|
|
617
|
-
}
|
|
618
|
-
const host = new URL(raw).hostname.toLowerCase().replace(/^\[|\]$/g, "");
|
|
619
|
-
if (isIP(host) !== 0 || canonicalizeNumericIpv4(host)) return raw;
|
|
620
|
-
let resolved;
|
|
621
|
-
try {
|
|
622
|
-
resolved = await lookup(host, { all: true });
|
|
623
|
-
} catch {
|
|
624
|
-
logger.warn("Blocked remote definition URL", {
|
|
625
|
-
component: "Compute/ssrf",
|
|
626
|
-
reason: "dns-lookup-failed",
|
|
627
|
-
host
|
|
628
|
-
});
|
|
629
|
-
throw new Error("Remote definition URL is not allowed");
|
|
630
|
-
}
|
|
631
|
-
if (resolved.length === 0 || resolved.some((r) => isBlockedIp(r.address))) {
|
|
632
|
-
const blocked = resolved.filter((r) => isBlockedIp(r.address)).map((r) => r.address);
|
|
633
|
-
logger.warn("Blocked remote definition URL", {
|
|
634
|
-
component: "Compute/ssrf",
|
|
635
|
-
reason: "resolves-to-blocked-ip",
|
|
636
|
-
host,
|
|
637
|
-
blockedIps: blocked
|
|
638
|
-
});
|
|
639
|
-
throw new Error("Remote definition URL is not allowed");
|
|
640
|
-
}
|
|
641
|
-
return raw;
|
|
642
|
-
}
|
|
643
|
-
/** Best-effort hostname for logging; falls back to a truncated raw string. */
|
|
644
|
-
function hostOf(raw) {
|
|
645
|
-
try {
|
|
646
|
-
return new URL(raw).hostname;
|
|
647
|
-
} catch {
|
|
648
|
-
return raw.slice(0, 120);
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
//#endregion
|
|
652
|
-
//#region ../server/src/compute/remote-definition.ts
|
|
653
|
-
/**
|
|
654
|
-
* Remote-definition fetch: SSRF-guarded, size-capped, timed, and TTL-cached.
|
|
655
|
-
*
|
|
656
|
-
* A solve can reference its `.gh` by remote URL instead of a stored blob. That
|
|
657
|
-
* URL is attacker-controllable (a share-token caller supplies `definitionUrl`),
|
|
658
|
-
* so every fetch runs through {@link assertSafeRemoteDefinitionUrl} (literal +
|
|
659
|
-
* DNS host validation, blocking private/loopback/link-local targets and
|
|
660
|
-
* literal-encoding bypasses), streams the body with an early size cap, and
|
|
661
|
-
* bounds the wall time with a deadline.
|
|
662
|
-
*
|
|
663
|
-
* The TTL cache is a per-fetcher `Map<url, {data, fetchedAt}>` so repeated
|
|
664
|
-
* solves of the same remote definition skip the network. It's created by
|
|
665
|
-
* {@link createRemoteDefinitionFetcher} rather than being module-global, so a
|
|
666
|
-
* consuming app can hold one fetcher per process (the app binding does) or
|
|
667
|
-
* several isolated ones (tests) without shared state leaking across them.
|
|
668
|
-
*/
|
|
669
|
-
/** Once the cache exceeds this many entries, evict the oldest 10 by `fetchedAt`. */
|
|
670
|
-
var CACHE_MAX_ENTRIES = 50;
|
|
671
|
-
var CACHE_EVICT_BATCH = 10;
|
|
672
|
-
/**
|
|
673
|
-
* Read a response body into memory, aborting (and throwing) as soon as the
|
|
674
|
-
* running byte total exceeds `maxBytes`. Falls back to `arrayBuffer()` only when
|
|
675
|
-
* the body isn't a readable stream (older fetch impls). Exported for direct use
|
|
676
|
-
* and reuse; the fetcher below wraps it with SSRF + TTL.
|
|
677
|
-
*/
|
|
678
|
-
async function readBodyWithCap(response, maxBytes, controller) {
|
|
679
|
-
if (!response.body) {
|
|
680
|
-
const buffer = await response.arrayBuffer();
|
|
681
|
-
if (buffer.byteLength > maxBytes) throw new Error("Remote definition exceeds size limit");
|
|
682
|
-
return new Uint8Array(buffer);
|
|
683
|
-
}
|
|
684
|
-
const reader = response.body.getReader();
|
|
685
|
-
const chunks = [];
|
|
686
|
-
let total = 0;
|
|
687
|
-
while (true) {
|
|
688
|
-
const { done, value } = await reader.read();
|
|
689
|
-
if (done) break;
|
|
690
|
-
total += value.byteLength;
|
|
691
|
-
if (total > maxBytes) {
|
|
692
|
-
controller.abort();
|
|
693
|
-
throw new Error("Remote definition exceeds size limit");
|
|
694
|
-
}
|
|
695
|
-
chunks.push(value);
|
|
696
|
-
}
|
|
697
|
-
const out = new Uint8Array(total);
|
|
698
|
-
let offset = 0;
|
|
699
|
-
for (const chunk of chunks) {
|
|
700
|
-
out.set(chunk, offset);
|
|
701
|
-
offset += chunk.byteLength;
|
|
702
|
-
}
|
|
703
|
-
return out;
|
|
704
|
-
}
|
|
705
|
-
/**
|
|
706
|
-
* Build a remote-definition fetcher owning its own TTL cache. Each fetcher's
|
|
707
|
-
* cache is independent, so one per process shares warm bytes while test fetchers
|
|
708
|
-
* stay isolated.
|
|
709
|
-
*/
|
|
710
|
-
function createRemoteDefinitionFetcher(config) {
|
|
711
|
-
const cache = /* @__PURE__ */ new Map();
|
|
712
|
-
const logger = config.logger ?? new NoopLogger();
|
|
713
|
-
return { async load(url) {
|
|
714
|
-
await assertSafeRemoteDefinitionUrl(url, logger);
|
|
715
|
-
const now = config.now();
|
|
716
|
-
const cached = cache.get(url);
|
|
717
|
-
if (cached && now - cached.fetchedAt < config.cacheTtlMs) return cached.data;
|
|
718
|
-
const controller = new AbortController();
|
|
719
|
-
const timeout = setTimeout(() => controller.abort(), config.fetchTimeoutMs);
|
|
720
|
-
let data;
|
|
721
|
-
try {
|
|
722
|
-
const response = await fetch(url, {
|
|
723
|
-
signal: controller.signal,
|
|
724
|
-
redirect: "error"
|
|
725
|
-
});
|
|
726
|
-
if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
727
|
-
const declared = Number(response.headers.get("content-length"));
|
|
728
|
-
if (Number.isFinite(declared) && declared > config.maxBytes) throw new Error("Remote definition exceeds size limit");
|
|
729
|
-
data = await readBodyWithCap(response, config.maxBytes, controller);
|
|
730
|
-
} finally {
|
|
731
|
-
clearTimeout(timeout);
|
|
732
|
-
}
|
|
733
|
-
cache.set(url, {
|
|
734
|
-
data,
|
|
735
|
-
fetchedAt: now
|
|
736
|
-
});
|
|
737
|
-
if (cache.size > CACHE_MAX_ENTRIES) {
|
|
738
|
-
const entries = Array.from(cache.entries());
|
|
739
|
-
entries.sort((a, b) => a[1].fetchedAt - b[1].fetchedAt);
|
|
740
|
-
for (let i = 0; i < CACHE_EVICT_BATCH; i++) cache.delete(entries[i][0]);
|
|
741
|
-
}
|
|
742
|
-
return data;
|
|
743
|
-
} };
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
export { adaptEnvelopeToEncoding as a, createRemoteDefinitionFetcher as c, runSolvePipeline as r };
|
|
747
|
-
//# sourceMappingURL=compute.js-DJMNVamB.js.map
|