@selvajs/selva 4.0.0 → 4.2.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/assets/0.vgCL98o5.css +1 -0
- package/build/client/_app/immutable/assets/0.vgCL98o5.css.br +0 -0
- package/build/client/_app/immutable/assets/0.vgCL98o5.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DGr_EUx4.js → 2n-qzJg2.js} +1 -1
- package/build/client/_app/immutable/chunks/2n-qzJg2.js.br +0 -0
- package/build/client/_app/immutable/chunks/2n-qzJg2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DT5O4b-_.js → BQ0arxbK.js} +1 -1
- package/build/client/_app/immutable/chunks/BQ0arxbK.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQ0arxbK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{7DlWX6a_.js → C1kpvSgW.js} +1 -1
- package/build/client/_app/immutable/chunks/C1kpvSgW.js.br +0 -0
- package/build/client/_app/immutable/chunks/C1kpvSgW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C_pyGEAV.js → C98bdhQ5.js} +1 -1
- package/build/client/_app/immutable/chunks/C98bdhQ5.js.br +0 -0
- package/build/client/_app/immutable/chunks/C98bdhQ5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-Fls4-N.js +1 -0
- package/build/client/_app/immutable/chunks/D-Fls4-N.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-Fls4-N.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{7OGPJeUM.js → D37hHIb0.js} +1 -1
- package/build/client/_app/immutable/chunks/D37hHIb0.js.br +0 -0
- package/build/client/_app/immutable/chunks/D37hHIb0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D0kO1GS0.js → DNu_no60.js} +1 -1
- package/build/client/_app/immutable/chunks/DNu_no60.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNu_no60.js.gz +0 -0
- package/build/client/_app/immutable/chunks/snZK0J5H.js +1 -0
- package/build/client/_app/immutable/chunks/snZK0J5H.js.br +0 -0
- package/build/client/_app/immutable/chunks/snZK0J5H.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.1YljYqLj.js +2 -0
- package/build/client/_app/immutable/entry/app.1YljYqLj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.1YljYqLj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C41rnrMx.js +1 -0
- package/build/client/_app/immutable/entry/start.C41rnrMx.js.br +0 -0
- package/build/client/_app/immutable/entry/start.C41rnrMx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.NC0eJqYH.js → 1.5JE3G8iG.js} +1 -1
- package/build/client/_app/immutable/nodes/1.5JE3G8iG.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.5JE3G8iG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.Co2EmpEg.js +2 -0
- package/build/client/_app/immutable/nodes/11.Co2EmpEg.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.Co2EmpEg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{13.DoCSNk6B.js → 13.D5OdE_HH.js} +1 -1
- package/build/client/_app/immutable/nodes/13.D5OdE_HH.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.D5OdE_HH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{14.CGaF6W-i.js → 14.UGx5pLUS.js} +1 -1
- package/build/client/_app/immutable/nodes/14.UGx5pLUS.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.UGx5pLUS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.czhLtsoD.js +13 -0
- package/build/client/_app/immutable/nodes/15.czhLtsoD.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.czhLtsoD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{16.CK0W0845.js → 16.CqZNgdz-.js} +1 -1
- package/build/client/_app/immutable/nodes/16.CqZNgdz-.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.CqZNgdz-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{17.BLCtgsLP.js → 17.B1PHOW1Y.js} +1 -1
- package/build/client/_app/immutable/nodes/17.B1PHOW1Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.B1PHOW1Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{19.Dx5b18Qv.js → 19.ClB_k0uw.js} +1 -1
- package/build/client/_app/immutable/nodes/19.ClB_k0uw.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.ClB_k0uw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BxDq9fgp.js → 2.uPLLf3gR.js} +1 -1
- package/build/client/_app/immutable/nodes/2.uPLLf3gR.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.uPLLf3gR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{20.Q9tlws_F.js → 20.C5BF7igP.js} +1 -1
- package/build/client/_app/immutable/nodes/20.C5BF7igP.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.C5BF7igP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{21.Bbzr4DP5.js → 21.B1xX86Nz.js} +1 -1
- package/build/client/_app/immutable/nodes/21.B1xX86Nz.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.B1xX86Nz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.BWuAu45o.js +16 -0
- package/build/client/_app/immutable/nodes/23.BWuAu45o.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.BWuAu45o.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{24.B-_Qylvh.js → 24.DSWGE_q2.js} +1 -1
- package/build/client/_app/immutable/nodes/24.DSWGE_q2.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.DSWGE_q2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{27.CKQ1fXCy.js → 27.CjlEhW_1.js} +1 -1
- package/build/client/_app/immutable/nodes/27.CjlEhW_1.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.CjlEhW_1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{28.COTXtjAd.js → 28.U-BnDxlP.js} +1 -1
- package/build/client/_app/immutable/nodes/28.U-BnDxlP.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.U-BnDxlP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{29.C1uWJrpk.js → 29.cl9udKxV.js} +1 -1
- package/build/client/_app/immutable/nodes/29.cl9udKxV.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.cl9udKxV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.D5k6nFAD.js → 3.UKn7Q9OQ.js} +1 -1
- package/build/client/_app/immutable/nodes/3.UKn7Q9OQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.UKn7Q9OQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{30.iBr8WuRu.js → 30.DPqPYAg4.js} +1 -1
- package/build/client/_app/immutable/nodes/30.DPqPYAg4.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.DPqPYAg4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.BNy6hwdy.js → 5.CbYguvwB.js} +1 -1
- package/build/client/_app/immutable/nodes/5.CbYguvwB.js.br +2 -0
- package/build/client/_app/immutable/nodes/5.CbYguvwB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.CaYtdaf2.js → 6.DZgUvAex.js} +1 -1
- package/build/client/_app/immutable/nodes/6.DZgUvAex.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DZgUvAex.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.C1W_YRKU.js → 7.Cv7r8DBm.js} +1 -1
- package/build/client/_app/immutable/nodes/7.Cv7r8DBm.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Cv7r8DBm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.B9sIt6MS.js → 8.zr3bqaC_.js} +1 -1
- package/build/client/_app/immutable/nodes/8.zr3bqaC_.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.zr3bqaC_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.B2PU0xej.js +1 -0
- package/build/client/_app/immutable/nodes/9.B2PU0xej.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.B2PU0xej.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-RraSrE7U.js → 0-v49L2HZX.js} +3 -3
- package/build/server/chunks/{0-RraSrE7U.js.map → 0-v49L2HZX.js.map} +1 -1
- package/build/server/chunks/{1-C99xqG8L.js → 1-B8xC9fBg.js} +2 -2
- package/build/server/chunks/{1-C99xqG8L.js.map → 1-B8xC9fBg.js.map} +1 -1
- package/build/server/chunks/{10-CpPov-q6.js → 10-BowWygfm.js} +4 -3
- package/build/server/chunks/{10-CpPov-q6.js.map → 10-BowWygfm.js.map} +1 -1
- package/build/server/chunks/{11-CgEVkMbf.js → 11-BLjiJpX4.js} +5 -5
- package/build/server/chunks/11-BLjiJpX4.js.map +1 -0
- package/build/server/chunks/{13-BsoV45dx.js → 13-CZeQX-Gk.js} +2 -2
- package/build/server/chunks/{13-BsoV45dx.js.map → 13-CZeQX-Gk.js.map} +1 -1
- package/build/server/chunks/{14-B3BJJIn3.js → 14-VgzSpObZ.js} +2 -2
- package/build/server/chunks/{14-B3BJJIn3.js.map → 14-VgzSpObZ.js.map} +1 -1
- package/build/server/chunks/{15-BqYjEVaA.js → 15-CKqEgZmF.js} +6 -5
- package/build/server/chunks/15-CKqEgZmF.js.map +1 -0
- package/build/server/chunks/{16-CQEqybxD.js → 16-9hO-6bzO.js} +5 -4
- package/build/server/chunks/{16-CQEqybxD.js.map → 16-9hO-6bzO.js.map} +1 -1
- package/build/server/chunks/{17-DPHGdRIj.js → 17-B9Aw6HdC.js} +2 -2
- package/build/server/chunks/{17-DPHGdRIj.js.map → 17-B9Aw6HdC.js.map} +1 -1
- package/build/server/chunks/{19-CkJN0M4_.js → 19-C9FaW__N.js} +2 -2
- package/build/server/chunks/{19-CkJN0M4_.js.map → 19-C9FaW__N.js.map} +1 -1
- package/build/server/chunks/{2-BJb8QIPX.js → 2-CwQhh3Hg.js} +5 -4
- package/build/server/chunks/{2-BJb8QIPX.js.map → 2-CwQhh3Hg.js.map} +1 -1
- package/build/server/chunks/{20-DGeV-MBL.js → 20-52YCUMK3.js} +6 -7
- package/build/server/chunks/20-52YCUMK3.js.map +1 -0
- package/build/server/chunks/{21-BQWXIChZ.js → 21-Dcz_2iKy.js} +2 -2
- package/build/server/chunks/{21-BQWXIChZ.js.map → 21-Dcz_2iKy.js.map} +1 -1
- package/build/server/chunks/{23-BmGaVmjO.js → 23-C-gTGofY.js} +5 -5
- package/build/server/chunks/{23-BmGaVmjO.js.map → 23-C-gTGofY.js.map} +1 -1
- package/build/server/chunks/{24-DC5Qi8Sm.js → 24-ukwP0nYw.js} +2 -2
- package/build/server/chunks/{24-DC5Qi8Sm.js.map → 24-ukwP0nYw.js.map} +1 -1
- package/build/server/chunks/{27-CJsZbiCR.js → 27-C9kRY1qj.js} +2 -2
- package/build/server/chunks/{27-CJsZbiCR.js.map → 27-C9kRY1qj.js.map} +1 -1
- package/build/server/chunks/{28-D6UoeYd3.js → 28-X583jLPJ.js} +2 -2
- package/build/server/chunks/{28-D6UoeYd3.js.map → 28-X583jLPJ.js.map} +1 -1
- package/build/server/chunks/{29-DZgNMmXD.js → 29-PJhSN-Wu.js} +2 -2
- package/build/server/chunks/{29-DZgNMmXD.js.map → 29-PJhSN-Wu.js.map} +1 -1
- package/build/server/chunks/{3-OhWAE0Wx.js → 3-DZiroZZA.js} +2 -2
- package/build/server/chunks/{3-OhWAE0Wx.js.map → 3-DZiroZZA.js.map} +1 -1
- package/build/server/chunks/{30-B_GStKPy.js → 30-DvqVphAd.js} +2 -2
- package/build/server/chunks/{30-B_GStKPy.js.map → 30-DvqVphAd.js.map} +1 -1
- package/build/server/chunks/{5-DLhfWemT.js → 5-QlPeCe4d.js} +2 -2
- package/build/server/chunks/{5-DLhfWemT.js.map → 5-QlPeCe4d.js.map} +1 -1
- package/build/server/chunks/{6-DnjCwAlp.js → 6-3t8NszBJ.js} +2 -2
- package/build/server/chunks/{6-DnjCwAlp.js.map → 6-3t8NszBJ.js.map} +1 -1
- package/build/server/chunks/{7-leNovc1s.js → 7-DgFxSLWj.js} +2 -2
- package/build/server/chunks/{7-leNovc1s.js.map → 7-DgFxSLWj.js.map} +1 -1
- package/build/server/chunks/{8-CAx64_UW.js → 8-BKivPkMd.js} +2 -2
- package/build/server/chunks/{8-CAx64_UW.js.map → 8-BKivPkMd.js.map} +1 -1
- package/build/server/chunks/{9-Dq-RLXVq.js → 9-COv3kpjW.js} +3 -3
- package/build/server/chunks/{9-Dq-RLXVq.js.map → 9-COv3kpjW.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DAu2h8jG.js → _page.svelte-CSZEgmHp.js} +5 -5
- package/build/server/chunks/_page.svelte-CSZEgmHp.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DFgszLSu.js → _page.svelte-DSPm244d.js} +32 -11
- package/build/server/chunks/_page.svelte-DSPm244d.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BXyLutv1.js → _page.svelte-DSYaUquf.js} +4 -17
- package/build/server/chunks/_page.svelte-DSYaUquf.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Dz-6_oW1.js → _page.svelte-DlnKE8Z9.js} +382 -35
- package/build/server/chunks/_page.svelte-DlnKE8Z9.js.map +1 -0
- package/build/server/chunks/{_server.ts-aUFaewu4.js → _server.ts-17aVSHOa.js} +4 -3
- package/build/server/chunks/{_server.ts-aUFaewu4.js.map → _server.ts-17aVSHOa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BLC5g2H_.js → _server.ts-4eVxyBg6.js} +4 -3
- package/build/server/chunks/{_server.ts-BLC5g2H_.js.map → _server.ts-4eVxyBg6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BeyEUs6I.js → _server.ts-8ahOmk_6.js} +4 -3
- package/build/server/chunks/{_server.ts-BeyEUs6I.js.map → _server.ts-8ahOmk_6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXqr0BIr.js → _server.ts-B0qq-nxh.js} +3 -3
- package/build/server/chunks/{_server.ts-DXqr0BIr.js.map → _server.ts-B0qq-nxh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTWwyruR.js → _server.ts-B7X5-4kS.js} +4 -3
- package/build/server/chunks/{_server.ts-BTWwyruR.js.map → _server.ts-B7X5-4kS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CqCIfPI0.js → _server.ts-B7Z1RMy4.js} +4 -3
- package/build/server/chunks/{_server.ts-CqCIfPI0.js.map → _server.ts-B7Z1RMy4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CnVtonm0.js → _server.ts-BL7-YPnc.js} +4 -3
- package/build/server/chunks/{_server.ts-CnVtonm0.js.map → _server.ts-BL7-YPnc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-1avpfE.js → _server.ts-BRjl7H1o.js} +4 -3
- package/build/server/chunks/{_server.ts-B-1avpfE.js.map → _server.ts-BRjl7H1o.js.map} +1 -1
- package/build/server/chunks/{_server.ts-k9Y_t-wX.js → _server.ts-B_KQteIy.js} +4 -3
- package/build/server/chunks/{_server.ts-k9Y_t-wX.js.map → _server.ts-B_KQteIy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bkr-33U0.js → _server.ts-BiJbME_l.js} +3 -4
- package/build/server/chunks/_server.ts-BiJbME_l.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dw630Jb2.js → _server.ts-Bq2BT6_L.js} +3 -4
- package/build/server/chunks/_server.ts-Bq2BT6_L.js.map +1 -0
- package/build/server/chunks/{_server.ts-C3CKmKpW.js → _server.ts-BqsgEogJ.js} +4 -3
- package/build/server/chunks/{_server.ts-C3CKmKpW.js.map → _server.ts-BqsgEogJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C2A_Oiwe.js → _server.ts-BtXdHfbr.js} +4 -3
- package/build/server/chunks/{_server.ts-C2A_Oiwe.js.map → _server.ts-BtXdHfbr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-EOYMi5x8.js → _server.ts-C-8S5O0H.js} +4 -3
- package/build/server/chunks/{_server.ts-EOYMi5x8.js.map → _server.ts-C-8S5O0H.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BUEUSAPc.js → _server.ts-C3sOwl5l.js} +4 -3
- package/build/server/chunks/{_server.ts-BUEUSAPc.js.map → _server.ts-C3sOwl5l.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BHizTPVg.js → _server.ts-CKvfxWeo.js} +4 -3
- package/build/server/chunks/{_server.ts-BHizTPVg.js.map → _server.ts-CKvfxWeo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D9iabXf8.js → _server.ts-CMKxt34Z.js} +4 -3
- package/build/server/chunks/{_server.ts-D9iabXf8.js.map → _server.ts-CMKxt34Z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C-w9ogA2.js → _server.ts-COWH7HN8.js} +4 -3
- package/build/server/chunks/{_server.ts-C-w9ogA2.js.map → _server.ts-COWH7HN8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dp3_io85.js → _server.ts-CUcFObAP.js} +4 -3
- package/build/server/chunks/{_server.ts-Dp3_io85.js.map → _server.ts-CUcFObAP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bm14E-bx.js → _server.ts-CW_1VZGk.js} +4 -3
- package/build/server/chunks/{_server.ts-Bm14E-bx.js.map → _server.ts-CW_1VZGk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DWAwxfXk.js → _server.ts-CXYPZtry.js} +4 -3
- package/build/server/chunks/{_server.ts-DWAwxfXk.js.map → _server.ts-CXYPZtry.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C52CTPlo.js → _server.ts-Cbe4naEr.js} +4 -3
- package/build/server/chunks/{_server.ts-C52CTPlo.js.map → _server.ts-Cbe4naEr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BIQdiZfW.js → _server.ts-D4mOhrFH.js} +4 -3
- package/build/server/chunks/{_server.ts-BIQdiZfW.js.map → _server.ts-D4mOhrFH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DzG1eKRC.js → _server.ts-DK7t4rlY.js} +4 -3
- package/build/server/chunks/{_server.ts-DzG1eKRC.js.map → _server.ts-DK7t4rlY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BXJAFFdr.js → _server.ts-DMnMoi_a.js} +4 -3
- package/build/server/chunks/{_server.ts-BXJAFFdr.js.map → _server.ts-DMnMoi_a.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTSLBiLL.js → _server.ts-DgTNMZbG.js} +3 -3
- package/build/server/chunks/{_server.ts-BTSLBiLL.js.map → _server.ts-DgTNMZbG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DiJ2px88.js → _server.ts-DpkIJe-d.js} +4 -3
- package/build/server/chunks/{_server.ts-DiJ2px88.js.map → _server.ts-DpkIJe-d.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CpC3cdzG.js → _server.ts-DsFj_8lL.js} +4 -3
- package/build/server/chunks/{_server.ts-CpC3cdzG.js.map → _server.ts-DsFj_8lL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DcRwP_gQ.js → _server.ts-Dsoq_gsI.js} +3 -3
- package/build/server/chunks/{_server.ts-DcRwP_gQ.js.map → _server.ts-Dsoq_gsI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BKtKkHZS.js → _server.ts-Du-NpBy4.js} +11 -6
- package/build/server/chunks/_server.ts-Du-NpBy4.js.map +1 -0
- package/build/server/chunks/{_server.ts-DuC2r20u.js → _server.ts-EnuOtr_j.js} +8 -6
- package/build/server/chunks/_server.ts-EnuOtr_j.js.map +1 -0
- package/build/server/chunks/_server.ts-ODEutN30.js +75 -0
- package/build/server/chunks/_server.ts-ODEutN30.js.map +1 -0
- package/build/server/chunks/{_server.ts-BOCvzY_U.js → _server.ts-bONEWPMV.js} +4 -3
- package/build/server/chunks/{_server.ts-BOCvzY_U.js.map → _server.ts-bONEWPMV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CJ8oDVHC.js → _server.ts-t9_veBtJ.js} +3 -2
- package/build/server/chunks/{_server.ts-CJ8oDVHC.js.map → _server.ts-t9_veBtJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDHHklcd.js → _server.ts-vURDyV-V.js} +4 -3
- package/build/server/chunks/{_server.ts-DDHHklcd.js.map → _server.ts-vURDyV-V.js.map} +1 -1
- package/build/server/chunks/{access.server-CGwRj2TY.js → access.server-BBglojso.js} +3 -2
- package/build/server/chunks/{access.server-CGwRj2TY.js.map → access.server-BBglojso.js.map} +1 -1
- package/build/server/chunks/{api-errors-b2AR_m1A.js → api-errors-agQVBoep.js} +21 -3
- package/build/server/chunks/api-errors-agQVBoep.js.map +1 -0
- package/build/server/chunks/refresh-cw-CiiW6Kvx.js +22 -0
- package/build/server/chunks/refresh-cw-CiiW6Kvx.js.map +1 -0
- package/build/server/chunks/{resolve.server2-BXKCfGfg.js → resolve.server-BXKCfGfg.js} +1 -1
- package/build/server/chunks/resolve.server-BXKCfGfg.js.map +1 -0
- package/build/server/chunks/triangle-alert-DuaFagu6.js +20 -0
- package/build/server/chunks/triangle-alert-DuaFagu6.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +67 -60
- package/build/server/manifest.js.map +1 -1
- package/package.json +5 -5
- package/build/client/_app/immutable/assets/0.D882LCPK.css +0 -1
- package/build/client/_app/immutable/assets/0.D882LCPK.css.br +0 -0
- package/build/client/_app/immutable/assets/0.D882LCPK.css.gz +0 -0
- package/build/client/_app/immutable/chunks/7DlWX6a_.js.br +0 -0
- package/build/client/_app/immutable/chunks/7DlWX6a_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/7OGPJeUM.js.br +0 -0
- package/build/client/_app/immutable/chunks/7OGPJeUM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C_pyGEAV.js.br +0 -0
- package/build/client/_app/immutable/chunks/C_pyGEAV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0kO1GS0.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0kO1GS0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DGr_EUx4.js.br +0 -0
- package/build/client/_app/immutable/chunks/DGr_EUx4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DT5O4b-_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DT5O4b-_.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DFWfpqb0.js +0 -2
- package/build/client/_app/immutable/entry/app.DFWfpqb0.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DFWfpqb0.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.-fCdkvY6.js +0 -1
- package/build/client/_app/immutable/entry/start.-fCdkvY6.js.br +0 -2
- package/build/client/_app/immutable/entry/start.-fCdkvY6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.NC0eJqYH.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.NC0eJqYH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.DegwSwS4.js +0 -2
- package/build/client/_app/immutable/nodes/11.DegwSwS4.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.DegwSwS4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.DoCSNk6B.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.DoCSNk6B.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.CGaF6W-i.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.CGaF6W-i.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.CCL52sqQ.js +0 -16
- package/build/client/_app/immutable/nodes/15.CCL52sqQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.CCL52sqQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.CK0W0845.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.CK0W0845.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.BLCtgsLP.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.BLCtgsLP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.Dx5b18Qv.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.Dx5b18Qv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BxDq9fgp.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BxDq9fgp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.Q9tlws_F.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.Q9tlws_F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/21.Bbzr4DP5.js.br +0 -0
- package/build/client/_app/immutable/nodes/21.Bbzr4DP5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/23.fhNJrKbS.js +0 -16
- package/build/client/_app/immutable/nodes/23.fhNJrKbS.js.br +0 -0
- package/build/client/_app/immutable/nodes/23.fhNJrKbS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/24.B-_Qylvh.js.br +0 -0
- package/build/client/_app/immutable/nodes/24.B-_Qylvh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/27.CKQ1fXCy.js.br +0 -0
- package/build/client/_app/immutable/nodes/27.CKQ1fXCy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/28.COTXtjAd.js.br +0 -0
- package/build/client/_app/immutable/nodes/28.COTXtjAd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/29.C1uWJrpk.js.br +0 -0
- package/build/client/_app/immutable/nodes/29.C1uWJrpk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D5k6nFAD.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D5k6nFAD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/30.iBr8WuRu.js.br +0 -0
- package/build/client/_app/immutable/nodes/30.iBr8WuRu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BNy6hwdy.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BNy6hwdy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CaYtdaf2.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CaYtdaf2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.C1W_YRKU.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.C1W_YRKU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.B9sIt6MS.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.B9sIt6MS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.K1-nNvYh.js +0 -1
- package/build/client/_app/immutable/nodes/9.K1-nNvYh.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.K1-nNvYh.js.gz +0 -0
- package/build/server/chunks/11-CgEVkMbf.js.map +0 -1
- package/build/server/chunks/15-BqYjEVaA.js.map +0 -1
- package/build/server/chunks/20-DGeV-MBL.js.map +0 -1
- package/build/server/chunks/_page.svelte-BXyLutv1.js.map +0 -1
- package/build/server/chunks/_page.svelte-DAu2h8jG.js.map +0 -1
- package/build/server/chunks/_page.svelte-DFgszLSu.js.map +0 -1
- package/build/server/chunks/_page.svelte-Dz-6_oW1.js.map +0 -1
- package/build/server/chunks/_server.ts-BKtKkHZS.js.map +0 -1
- package/build/server/chunks/_server.ts-Bkr-33U0.js.map +0 -1
- package/build/server/chunks/_server.ts-DuC2r20u.js.map +0 -1
- package/build/server/chunks/_server.ts-Dw630Jb2.js.map +0 -1
- package/build/server/chunks/api-errors-b2AR_m1A.js.map +0 -1
- package/build/server/chunks/resolve.server-C5wZnxS_.js +0 -11
- package/build/server/chunks/resolve.server-C5wZnxS_.js.map +0 -1
- package/build/server/chunks/resolve.server2-BXKCfGfg.js.map +0 -1
- /package/build/client/_app/immutable/nodes/{0.kNRjuE1r.js → 0.Y-xP5pet.js} +0 -0
- /package/build/client/_app/immutable/nodes/{0.kNRjuE1r.js.br → 0.Y-xP5pet.js.br} +0 -0
- /package/build/client/_app/immutable/nodes/{0.kNRjuE1r.js.gz → 0.Y-xP5pet.js.gz} +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { a3 as head, T as escape_html, n as attr_class, aD as stringify, Q as ensure_array_like, aA as spread_props } from './renderer-x4cX3Aau.js';
|
|
1
|
+
import { a3 as head, T as escape_html, n as attr_class, aD as stringify, m as attr, Q as ensure_array_like, I as derived, aA as spread_props } from './renderer-x4cX3Aau.js';
|
|
2
2
|
import { C as Card, a as Card_content } from './card-content-CLRedGcu.js';
|
|
3
3
|
import { C as Card_header, a as Card_title } from './card-title-f3nMy4Cc.js';
|
|
4
4
|
import { C as Card_description } from './card-description-Cvz9Nl_J.js';
|
|
5
5
|
import { B as Button } from './button-1GF48U_O.js';
|
|
6
|
+
import { R as Refresh_cw } from './refresh-cw-CiiW6Kvx.js';
|
|
6
7
|
import { I as Icon } from './Icon2-DbkwAOkZ.js';
|
|
8
|
+
import { T as Triangle_alert } from './triangle-alert-DuaFagu6.js';
|
|
7
9
|
import { R as Root, b as Alert_dialog_content, e as Alert_dialog_header, d as Alert_dialog_footer, f as Alert_dialog_title, c as Alert_dialog_description, a as Alert_dialog_cancel, A as Alert_dialog_action } from './index4-DSWKKOFB.js';
|
|
8
10
|
import { S as SectionHeader } from './SectionHeader-CjuQsFLx.js';
|
|
9
11
|
import 'clsx';
|
|
@@ -17,21 +19,148 @@ import './index-server-DMc-UvjC.js';
|
|
|
17
19
|
import './scroll-lock-BVxv0Dsn.js';
|
|
18
20
|
import './events-qfxQNxtp.js';
|
|
19
21
|
|
|
20
|
-
function
|
|
22
|
+
function Circle_check($$renderer, $$props) {
|
|
21
23
|
let { $$slots, $$events, ...props } = $$props;
|
|
22
24
|
const iconNode = [
|
|
25
|
+
["circle", { "cx": "12", "cy": "12", "r": "10" }],
|
|
26
|
+
["path", { "d": "m9 12 2 2 4-4" }]
|
|
27
|
+
];
|
|
28
|
+
Icon($$renderer, spread_props([{ name: "circle-check" }, props, { iconNode }]));
|
|
29
|
+
}
|
|
30
|
+
function Circle_x($$renderer, $$props) {
|
|
31
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
32
|
+
const iconNode = [
|
|
33
|
+
["circle", { "cx": "12", "cy": "12", "r": "10" }],
|
|
34
|
+
["path", { "d": "m15 9-6 6" }],
|
|
35
|
+
["path", { "d": "m9 9 6 6" }]
|
|
36
|
+
];
|
|
37
|
+
Icon($$renderer, spread_props([{ name: "circle-x" }, props, { iconNode }]));
|
|
38
|
+
}
|
|
39
|
+
function Info($$renderer, $$props) {
|
|
40
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
41
|
+
const iconNode = [
|
|
42
|
+
["circle", { "cx": "12", "cy": "12", "r": "10" }],
|
|
43
|
+
["path", { "d": "M12 16v-4" }],
|
|
44
|
+
["path", { "d": "M12 8h.01" }]
|
|
45
|
+
];
|
|
46
|
+
Icon($$renderer, spread_props([{ name: "info" }, props, { iconNode }]));
|
|
47
|
+
}
|
|
48
|
+
function Minus($$renderer, $$props) {
|
|
49
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
50
|
+
const iconNode = [["path", { "d": "M5 12h14" }]];
|
|
51
|
+
Icon($$renderer, spread_props([{ name: "minus" }, props, { iconNode }]));
|
|
52
|
+
}
|
|
53
|
+
function Stethoscope($$renderer, $$props) {
|
|
54
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
55
|
+
const iconNode = [
|
|
56
|
+
["path", { "d": "M11 2v2" }],
|
|
57
|
+
["path", { "d": "M5 2v2" }],
|
|
23
58
|
[
|
|
24
59
|
"path",
|
|
25
|
-
{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
[
|
|
29
|
-
"path",
|
|
30
|
-
{ "d": "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }
|
|
60
|
+
{
|
|
61
|
+
"d": "M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1"
|
|
62
|
+
}
|
|
31
63
|
],
|
|
32
|
-
["path", { "d": "M8
|
|
64
|
+
["path", { "d": "M8 15a6 6 0 0 0 12 0v-3" }],
|
|
65
|
+
["circle", { "cx": "20", "cy": "10", "r": "2" }]
|
|
33
66
|
];
|
|
34
|
-
Icon($$renderer, spread_props([{ name: "
|
|
67
|
+
Icon($$renderer, spread_props([{ name: "stethoscope" }, props, { iconNode }]));
|
|
68
|
+
}
|
|
69
|
+
function firstMatch(logs, re) {
|
|
70
|
+
const m = re.exec(logs);
|
|
71
|
+
return m ? m[1] : void 0;
|
|
72
|
+
}
|
|
73
|
+
function parseVersions(logs) {
|
|
74
|
+
const avail = /Available:\s*(\d+\.\d+\.\d+[^\s]*)\s*(?:→|->)\s*(\d+\.\d+\.\d+[^\s]*)/.exec(logs);
|
|
75
|
+
if (avail) return { from: avail[1], to: avail[2] };
|
|
76
|
+
const from = firstMatch(logs, /Current @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/);
|
|
77
|
+
const to = firstMatch(logs, /New @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/);
|
|
78
|
+
return { from, to };
|
|
79
|
+
}
|
|
80
|
+
function has(logs, needle) {
|
|
81
|
+
return logs.includes(needle);
|
|
82
|
+
}
|
|
83
|
+
function deriveOutcome(exitCode, logs) {
|
|
84
|
+
const { from, to } = parseVersions(logs);
|
|
85
|
+
if (exitCode === null) {
|
|
86
|
+
return { severity: "pending", title: "Update in progress…" };
|
|
87
|
+
}
|
|
88
|
+
if (exitCode === 6 || has(logs, "Manual recovery required") || has(logs, "manual intervention required")) {
|
|
89
|
+
return {
|
|
90
|
+
severity: "critical",
|
|
91
|
+
title: "Update failed AND rollback failed — the app may be OFFLINE",
|
|
92
|
+
detail: "Both the new version and the rollback failed their health check. SSH into the server and run: `pm2 logs selva-compute`, then `pm2 start ecosystem.config.cjs` from the deployment directory.",
|
|
93
|
+
from,
|
|
94
|
+
to
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (exitCode === -2) {
|
|
98
|
+
return {
|
|
99
|
+
severity: "critical",
|
|
100
|
+
title: "App did not come back online within 5 minutes",
|
|
101
|
+
detail: "The update may still be finishing in the background, or the new process is crash-looping. Check `pm2 logs selva-compute`. Do not re-run the update until you have confirmed the current state.",
|
|
102
|
+
from,
|
|
103
|
+
to
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (exitCode === 5 || has(logs, "Rolled back")) {
|
|
107
|
+
return {
|
|
108
|
+
severity: "warning",
|
|
109
|
+
title: `Update failed — safely rolled back${from ? ` to ${from}` : ""}. The app is online.`,
|
|
110
|
+
detail: "The new version failed its health check, so the previous version was restored and is serving normally. Review the log below for why the new version failed before retrying.",
|
|
111
|
+
from,
|
|
112
|
+
to
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (has(logs, "npm cache may be stale") || has(logs, "No version change")) {
|
|
116
|
+
return {
|
|
117
|
+
severity: "warning",
|
|
118
|
+
title: "No version change — npm installed the same version.",
|
|
119
|
+
detail: "Your npm cache may be stale. On the server: `npm cache clean --force`, remove node_modules + package-lock.json, then `npm install --prefer-online`.",
|
|
120
|
+
from,
|
|
121
|
+
to
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (exitCode === 0) {
|
|
125
|
+
if (has(logs, "Already on the latest version") || has(logs, "Nothing to do")) {
|
|
126
|
+
return {
|
|
127
|
+
severity: "info",
|
|
128
|
+
title: `Already up to date${from ? ` (${from})` : ""} — nothing to install.`,
|
|
129
|
+
detail: "No changes were made and the app was not restarted.",
|
|
130
|
+
from,
|
|
131
|
+
to
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (from && to && from !== to) {
|
|
135
|
+
return {
|
|
136
|
+
severity: "success",
|
|
137
|
+
title: `Updated ${from} → ${to}. The app is back online.`,
|
|
138
|
+
from,
|
|
139
|
+
to
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (to) {
|
|
143
|
+
return {
|
|
144
|
+
severity: "success",
|
|
145
|
+
title: `Update complete — now on ${to}. The app is back online.`,
|
|
146
|
+
from,
|
|
147
|
+
to
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
severity: "success",
|
|
152
|
+
title: "Update completed and the app is back online.",
|
|
153
|
+
from,
|
|
154
|
+
to
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
severity: "critical",
|
|
159
|
+
title: `Update failed (exit code ${exitCode}).`,
|
|
160
|
+
detail: "The update did not complete cleanly. Review the log below, and check `pm2 logs selva-compute` to confirm whether the app is currently online.",
|
|
161
|
+
from,
|
|
162
|
+
to
|
|
163
|
+
};
|
|
35
164
|
}
|
|
36
165
|
function UpdateSection($$renderer, $$props) {
|
|
37
166
|
$$renderer.component(($$renderer2) => {
|
|
@@ -44,23 +173,44 @@ function UpdateSection($$renderer, $$props) {
|
|
|
44
173
|
onRun
|
|
45
174
|
} = $$props;
|
|
46
175
|
let showRunConfirm = false;
|
|
176
|
+
let outcome = derived(() => exitCode === null ? null : deriveOutcome(exitCode, logs));
|
|
177
|
+
const severityStyles = {
|
|
178
|
+
success: {
|
|
179
|
+
text: "text-success",
|
|
180
|
+
border: "border-success/40",
|
|
181
|
+
bg: "bg-success/10",
|
|
182
|
+
icon: Circle_check
|
|
183
|
+
},
|
|
184
|
+
info: {
|
|
185
|
+
text: "text-foreground",
|
|
186
|
+
border: "border-border",
|
|
187
|
+
bg: "bg-muted/50",
|
|
188
|
+
icon: Info
|
|
189
|
+
},
|
|
190
|
+
warning: {
|
|
191
|
+
text: "text-warning",
|
|
192
|
+
border: "border-warning/40",
|
|
193
|
+
bg: "bg-warning/10",
|
|
194
|
+
icon: Triangle_alert
|
|
195
|
+
},
|
|
196
|
+
critical: {
|
|
197
|
+
text: "text-destructive",
|
|
198
|
+
border: "border-destructive/40",
|
|
199
|
+
bg: "bg-destructive/10",
|
|
200
|
+
icon: Circle_x
|
|
201
|
+
},
|
|
202
|
+
pending: {
|
|
203
|
+
text: "text-muted-foreground",
|
|
204
|
+
border: "border-border",
|
|
205
|
+
bg: "bg-muted/50",
|
|
206
|
+
icon: Refresh_cw
|
|
207
|
+
}
|
|
208
|
+
};
|
|
47
209
|
function buttonLabel() {
|
|
48
210
|
if (isRestarting) return "Restarting & verifying…";
|
|
49
211
|
if (isRunning) return "Running…";
|
|
50
212
|
return "Run Update";
|
|
51
213
|
}
|
|
52
|
-
function statusMessage() {
|
|
53
|
-
if (exitCode === null) return null;
|
|
54
|
-
if (exitCode === 0) return { text: "✓ Update completed successfully", tone: "success" };
|
|
55
|
-
if (exitCode === -2) return {
|
|
56
|
-
text: "⚠ App did not respond within 5 minutes after restart — check PM2 logs",
|
|
57
|
-
tone: "destructive"
|
|
58
|
-
};
|
|
59
|
-
return {
|
|
60
|
-
text: `Update failed (exit code ${exitCode})`,
|
|
61
|
-
tone: "destructive"
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
214
|
function handleRunClick() {
|
|
65
215
|
showRunConfirm = true;
|
|
66
216
|
}
|
|
@@ -150,17 +300,41 @@ function UpdateSection($$renderer, $$props) {
|
|
|
150
300
|
$$renderer4.push("<!--[-1-->");
|
|
151
301
|
}
|
|
152
302
|
$$renderer4.push(`<!--]--> `);
|
|
153
|
-
if (
|
|
303
|
+
if (outcome()) {
|
|
154
304
|
$$renderer4.push("<!--[0-->");
|
|
155
|
-
|
|
156
|
-
|
|
305
|
+
const style = severityStyles[outcome().severity];
|
|
306
|
+
const Icon2 = style.icon;
|
|
307
|
+
$$renderer4.push(`<div${attr_class(`flex items-start gap-3 rounded-md border px-3 py-3 ${stringify(style.border)} ${stringify(style.bg)}`)}${attr("role", outcome().severity === "critical" ? "alert" : "status")}${attr("aria-live", outcome().severity === "critical" ? "assertive" : "polite")}>`);
|
|
308
|
+
if (Icon2) {
|
|
309
|
+
$$renderer4.push("<!--[-->");
|
|
310
|
+
Icon2($$renderer4, { class: `mt-0.5 h-5 w-5 shrink-0 ${stringify(style.text)}` });
|
|
311
|
+
$$renderer4.push("<!--]-->");
|
|
312
|
+
} else {
|
|
313
|
+
$$renderer4.push("<!--[!-->");
|
|
314
|
+
$$renderer4.push("<!--]-->");
|
|
315
|
+
}
|
|
316
|
+
$$renderer4.push(` <div class="min-w-0 space-y-1"><p${attr_class(`text-sm font-medium ${stringify(style.text)}`)}>${escape_html(outcome().title)}</p> `);
|
|
317
|
+
if (outcome().from && outcome().to && outcome().from !== outcome().to) {
|
|
157
318
|
$$renderer4.push("<!--[0-->");
|
|
158
|
-
|
|
159
|
-
$$renderer4.push(`<p${attr_class(`text-sm font-medium ${stringify(msg.tone === "success" ? "text-success" : msg.tone === "destructive" ? "text-destructive" : "text-muted-foreground")}`)}>${escape_html(msg.text)}</p>`);
|
|
319
|
+
$$renderer4.push(`<p class="text-muted-foreground font-mono text-xs">${escape_html(outcome().from)} → ${escape_html(outcome().to)}</p>`);
|
|
160
320
|
} else {
|
|
161
321
|
$$renderer4.push("<!--[-1-->");
|
|
162
322
|
}
|
|
163
|
-
$$renderer4.push(`<!--]
|
|
323
|
+
$$renderer4.push(`<!--]--> `);
|
|
324
|
+
if (outcome().detail) {
|
|
325
|
+
$$renderer4.push("<!--[0-->");
|
|
326
|
+
$$renderer4.push(`<p class="text-muted-foreground text-xs whitespace-pre-line">${escape_html(outcome().detail)}</p>`);
|
|
327
|
+
} else {
|
|
328
|
+
$$renderer4.push("<!--[-1-->");
|
|
329
|
+
}
|
|
330
|
+
$$renderer4.push(`<!--]--></div></div>`);
|
|
331
|
+
} else {
|
|
332
|
+
$$renderer4.push("<!--[-1-->");
|
|
333
|
+
}
|
|
334
|
+
$$renderer4.push(`<!--]--> `);
|
|
335
|
+
if (logs) {
|
|
336
|
+
$$renderer4.push("<!--[0-->");
|
|
337
|
+
$$renderer4.push(`<div class="space-y-2"><h4 class="text-sm font-medium">Update Logs</h4> <pre class="bg-muted text-foreground max-h-96 overflow-auto rounded-md p-4 font-mono text-xs">${escape_html(logs)}</pre></div>`);
|
|
164
338
|
} else {
|
|
165
339
|
$$renderer4.push("<!--[-1-->");
|
|
166
340
|
}
|
|
@@ -292,6 +466,168 @@ function UpdateSection($$renderer, $$props) {
|
|
|
292
466
|
}
|
|
293
467
|
});
|
|
294
468
|
}
|
|
469
|
+
function HealthSection($$renderer, $$props) {
|
|
470
|
+
$$renderer.component(($$renderer2) => {
|
|
471
|
+
let running = false;
|
|
472
|
+
let report = null;
|
|
473
|
+
let error = null;
|
|
474
|
+
const statusStyle = {
|
|
475
|
+
ok: { text: "text-success", icon: Circle_check, label: "OK" },
|
|
476
|
+
degraded: { text: "text-warning", icon: Triangle_alert, label: "Degraded" },
|
|
477
|
+
error: { text: "text-destructive", icon: Circle_x, label: "Error" },
|
|
478
|
+
not_applicable: { text: "text-muted-foreground", icon: Minus, label: "N/A" }
|
|
479
|
+
};
|
|
480
|
+
async function runCheck() {
|
|
481
|
+
running = true;
|
|
482
|
+
error = null;
|
|
483
|
+
try {
|
|
484
|
+
const res = await fetch("/admin/api/system/health", { cache: "no-store" });
|
|
485
|
+
if (!res.ok) {
|
|
486
|
+
error = `Health check request failed (HTTP ${res.status}).`;
|
|
487
|
+
report = null;
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
report = await res.json();
|
|
491
|
+
} catch (err) {
|
|
492
|
+
error = err instanceof Error ? err.message : "Health check request failed.";
|
|
493
|
+
report = null;
|
|
494
|
+
} finally {
|
|
495
|
+
running = false;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (Card) {
|
|
499
|
+
$$renderer2.push("<!--[-->");
|
|
500
|
+
Card($$renderer2, {
|
|
501
|
+
children: ($$renderer3) => {
|
|
502
|
+
if (Card_header) {
|
|
503
|
+
$$renderer3.push("<!--[-->");
|
|
504
|
+
Card_header($$renderer3, {
|
|
505
|
+
children: ($$renderer4) => {
|
|
506
|
+
if (Card_title) {
|
|
507
|
+
$$renderer4.push("<!--[-->");
|
|
508
|
+
Card_title($$renderer4, {
|
|
509
|
+
class: "text-sm font-medium",
|
|
510
|
+
children: ($$renderer5) => {
|
|
511
|
+
$$renderer5.push(`<!---->System health`);
|
|
512
|
+
},
|
|
513
|
+
$$slots: { default: true }
|
|
514
|
+
});
|
|
515
|
+
$$renderer4.push("<!--]-->");
|
|
516
|
+
} else {
|
|
517
|
+
$$renderer4.push("<!--[!-->");
|
|
518
|
+
$$renderer4.push("<!--]-->");
|
|
519
|
+
}
|
|
520
|
+
$$renderer4.push(` `);
|
|
521
|
+
if (Card_description) {
|
|
522
|
+
$$renderer4.push("<!--[-->");
|
|
523
|
+
Card_description($$renderer4, {
|
|
524
|
+
children: ($$renderer5) => {
|
|
525
|
+
$$renderer5.push(`<!---->Re-runs runtime integrity checks live (not the cached boot snapshot), so results reflect the
|
|
526
|
+
current state after any fix.`);
|
|
527
|
+
},
|
|
528
|
+
$$slots: { default: true }
|
|
529
|
+
});
|
|
530
|
+
$$renderer4.push("<!--]-->");
|
|
531
|
+
} else {
|
|
532
|
+
$$renderer4.push("<!--[!-->");
|
|
533
|
+
$$renderer4.push("<!--]-->");
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
$$slots: { default: true }
|
|
537
|
+
});
|
|
538
|
+
$$renderer3.push("<!--]-->");
|
|
539
|
+
} else {
|
|
540
|
+
$$renderer3.push("<!--[!-->");
|
|
541
|
+
$$renderer3.push("<!--]-->");
|
|
542
|
+
}
|
|
543
|
+
$$renderer3.push(` `);
|
|
544
|
+
if (Card_content) {
|
|
545
|
+
$$renderer3.push("<!--[-->");
|
|
546
|
+
Card_content($$renderer3, {
|
|
547
|
+
class: "space-y-4",
|
|
548
|
+
children: ($$renderer4) => {
|
|
549
|
+
Button($$renderer4, {
|
|
550
|
+
onclick: runCheck,
|
|
551
|
+
disabled: running,
|
|
552
|
+
variant: "outline",
|
|
553
|
+
children: ($$renderer5) => {
|
|
554
|
+
Stethoscope($$renderer5, {
|
|
555
|
+
class: `mr-2 h-4 w-4 ${stringify(running ? "animate-pulse" : "")}`
|
|
556
|
+
});
|
|
557
|
+
$$renderer5.push(`<!----> ${escape_html(running ? "Checking…" : "Run health check")}`);
|
|
558
|
+
},
|
|
559
|
+
$$slots: { default: true }
|
|
560
|
+
});
|
|
561
|
+
$$renderer4.push(`<!----> `);
|
|
562
|
+
if (error) {
|
|
563
|
+
$$renderer4.push("<!--[0-->");
|
|
564
|
+
$$renderer4.push(`<div class="border-destructive/40 bg-destructive/10 text-destructive flex items-start gap-2 rounded-md border px-3 py-2 text-sm" role="alert">`);
|
|
565
|
+
Circle_x($$renderer4, { class: "mt-0.5 h-4 w-4 shrink-0" });
|
|
566
|
+
$$renderer4.push(`<!----> <span>${escape_html(error)}</span></div>`);
|
|
567
|
+
} else {
|
|
568
|
+
$$renderer4.push("<!--[-1-->");
|
|
569
|
+
}
|
|
570
|
+
$$renderer4.push(`<!--]--> `);
|
|
571
|
+
if (report) {
|
|
572
|
+
$$renderer4.push("<!--[0-->");
|
|
573
|
+
const overall = statusStyle[report.overall];
|
|
574
|
+
const OverallIcon = overall.icon;
|
|
575
|
+
$$renderer4.push(`<div class="space-y-3"><div${attr_class(`flex items-center gap-2 text-sm font-medium ${stringify(overall.text)}`)}>`);
|
|
576
|
+
if (OverallIcon) {
|
|
577
|
+
$$renderer4.push("<!--[-->");
|
|
578
|
+
OverallIcon($$renderer4, { class: "h-5 w-5" });
|
|
579
|
+
$$renderer4.push("<!--]-->");
|
|
580
|
+
} else {
|
|
581
|
+
$$renderer4.push("<!--[!-->");
|
|
582
|
+
$$renderer4.push("<!--]-->");
|
|
583
|
+
}
|
|
584
|
+
$$renderer4.push(` <span>${escape_html(report.overall === "ok" ? "All checks passed" : report.overall === "degraded" ? "Attention needed" : report.overall === "error" ? "Check failed to run" : "No applicable checks")}</span> <span class="text-muted-foreground ml-auto text-xs font-normal">${escape_html(new Date(report.checkedAt).toLocaleTimeString())}</span></div> <div class="divide-y rounded-lg border"><!--[-->`);
|
|
585
|
+
const each_array = ensure_array_like(report.checks);
|
|
586
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
587
|
+
let check = each_array[$$index];
|
|
588
|
+
const style = statusStyle[check.status];
|
|
589
|
+
const Icon2 = style.icon;
|
|
590
|
+
$$renderer4.push(`<div class="flex items-start gap-3 px-4 py-3">`);
|
|
591
|
+
if (Icon2) {
|
|
592
|
+
$$renderer4.push("<!--[-->");
|
|
593
|
+
Icon2($$renderer4, { class: `mt-0.5 h-4 w-4 shrink-0 ${stringify(style.text)}` });
|
|
594
|
+
$$renderer4.push("<!--]-->");
|
|
595
|
+
} else {
|
|
596
|
+
$$renderer4.push("<!--[!-->");
|
|
597
|
+
$$renderer4.push("<!--]-->");
|
|
598
|
+
}
|
|
599
|
+
$$renderer4.push(` <div class="min-w-0 flex-1 space-y-1"><div class="flex items-center justify-between gap-2"><span class="text-sm font-medium">${escape_html(check.label)}</span> <span${attr_class(`rounded-full border px-2 py-0.5 font-mono text-[10px] tracking-wide uppercase ${stringify(style.text)}`)}>${escape_html(style.label)}</span></div> <p class="text-muted-foreground text-xs">${escape_html(check.summary)}</p> `);
|
|
600
|
+
if (check.remediation) {
|
|
601
|
+
$$renderer4.push("<!--[0-->");
|
|
602
|
+
$$renderer4.push(`<p class="text-foreground text-xs">${escape_html(check.remediation)}</p>`);
|
|
603
|
+
} else {
|
|
604
|
+
$$renderer4.push("<!--[-1-->");
|
|
605
|
+
}
|
|
606
|
+
$$renderer4.push(`<!--]--></div></div>`);
|
|
607
|
+
}
|
|
608
|
+
$$renderer4.push(`<!--]--></div></div>`);
|
|
609
|
+
} else {
|
|
610
|
+
$$renderer4.push("<!--[-1-->");
|
|
611
|
+
}
|
|
612
|
+
$$renderer4.push(`<!--]-->`);
|
|
613
|
+
},
|
|
614
|
+
$$slots: { default: true }
|
|
615
|
+
});
|
|
616
|
+
$$renderer3.push("<!--]-->");
|
|
617
|
+
} else {
|
|
618
|
+
$$renderer3.push("<!--[!-->");
|
|
619
|
+
$$renderer3.push("<!--]-->");
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
$$slots: { default: true }
|
|
623
|
+
});
|
|
624
|
+
$$renderer2.push("<!--]-->");
|
|
625
|
+
} else {
|
|
626
|
+
$$renderer2.push("<!--[!-->");
|
|
627
|
+
$$renderer2.push("<!--]-->");
|
|
628
|
+
}
|
|
629
|
+
});
|
|
630
|
+
}
|
|
295
631
|
function _page($$renderer, $$props) {
|
|
296
632
|
$$renderer.component(($$renderer2) => {
|
|
297
633
|
let { data } = $$props;
|
|
@@ -324,6 +660,14 @@ function _page($$renderer, $$props) {
|
|
|
324
660
|
return null;
|
|
325
661
|
}
|
|
326
662
|
}
|
|
663
|
+
function exitCodeFromLog(log) {
|
|
664
|
+
if (/\bManual recovery required\b/.test(log)) return 6;
|
|
665
|
+
if (/\bRolled back to .* — previous version is online\b/.test(log)) return 5;
|
|
666
|
+
if (/New process failed health check/.test(log) && !/Rolled back/.test(log)) return 3;
|
|
667
|
+
if (/\[FATAL\]/.test(log) && !/\[DONE\]/.test(log)) return 1;
|
|
668
|
+
if (/\[DONE\]/.test(log)) return 0;
|
|
669
|
+
return null;
|
|
670
|
+
}
|
|
327
671
|
async function waitForAppRestart(previousCommit) {
|
|
328
672
|
updateLogs += "\nWaiting for app to come back online…\n";
|
|
329
673
|
await new Promise((r) => setTimeout(r, 2e3));
|
|
@@ -337,10 +681,7 @@ function _page($$renderer, $$props) {
|
|
|
337
681
|
if (health) {
|
|
338
682
|
if (previousCommit && health.commit) {
|
|
339
683
|
if (health.commit !== previousCommit) {
|
|
340
|
-
updateLogs
|
|
341
|
-
✓ App is back online on new commit ${health.commit.slice(0, 7)}
|
|
342
|
-
`;
|
|
343
|
-
updateExitCode = 0;
|
|
684
|
+
updateExitCode = exitCodeFromLog(updateLogs) ?? 0;
|
|
344
685
|
updateRunning = false;
|
|
345
686
|
updateRestarting = false;
|
|
346
687
|
return;
|
|
@@ -349,8 +690,7 @@ function _page($$renderer, $$props) {
|
|
|
349
690
|
} else {
|
|
350
691
|
consecutiveOk += 1;
|
|
351
692
|
if (consecutiveOk >= 2) {
|
|
352
|
-
|
|
353
|
-
updateExitCode = 0;
|
|
693
|
+
updateExitCode = exitCodeFromLog(updateLogs) ?? 0;
|
|
354
694
|
updateRunning = false;
|
|
355
695
|
updateRestarting = false;
|
|
356
696
|
return;
|
|
@@ -526,6 +866,13 @@ function _page($$renderer, $$props) {
|
|
|
526
866
|
$$renderer2.push("<!--]-->");
|
|
527
867
|
}
|
|
528
868
|
$$renderer2.push(` `);
|
|
869
|
+
if (data.isInstanceAdmin) {
|
|
870
|
+
$$renderer2.push("<!--[0-->");
|
|
871
|
+
HealthSection($$renderer2);
|
|
872
|
+
} else {
|
|
873
|
+
$$renderer2.push("<!--[-1-->");
|
|
874
|
+
}
|
|
875
|
+
$$renderer2.push(`<!--]--> `);
|
|
529
876
|
if (data.canManageUpdates) {
|
|
530
877
|
$$renderer2.push("<!--[0-->");
|
|
531
878
|
UpdateSection($$renderer2, {
|
|
@@ -544,4 +891,4 @@ function _page($$renderer, $$props) {
|
|
|
544
891
|
}
|
|
545
892
|
|
|
546
893
|
export { _page as default };
|
|
547
|
-
//# sourceMappingURL=_page.svelte-
|
|
894
|
+
//# sourceMappingURL=_page.svelte-DlnKE8Z9.js.map
|