@piwitests/server 0.19.0 → 0.21.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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{279D2RYp.js → 9ti9eNH9.js} +1 -1
- package/.output/public/_nuxt/{DcmZRa_F.js → B-zdP-D4.js} +1 -1
- package/.output/public/_nuxt/{eaVkJRSa.js → B1RmmOsM.js} +1 -1
- package/.output/public/_nuxt/{DprVVyUQ.js → B3Fsod9X.js} +1 -1
- package/.output/public/_nuxt/{HXerICAi.js → B3rirOqU.js} +34 -34
- package/.output/public/_nuxt/B3zmIJYb.js +1 -0
- package/.output/public/_nuxt/{CDk0q2hV.js → BAKUqW95.js} +2 -2
- package/.output/public/_nuxt/BG0KKQiT.js +7 -0
- package/.output/public/_nuxt/BGL_V7Y4.js +1 -0
- package/.output/public/_nuxt/{Jo8kRmHz.js → BGusFAvZ.js} +1 -1
- package/.output/public/_nuxt/{CGNkHojN.js → BNurUTla.js} +3 -3
- package/.output/public/_nuxt/BR5cR2Ot.js +1 -0
- package/.output/public/_nuxt/BTCh_0zN.js +1 -0
- package/.output/public/_nuxt/{ZFiQCMUB.js → BTVqMsA3.js} +1 -1
- package/.output/public/_nuxt/{BqV0l12c.js → B_13C0GF.js} +1 -1
- package/.output/public/_nuxt/BeDIjhoR.js +44 -0
- package/.output/public/_nuxt/{BDicZ1gQ.js → BerCW7Ug.js} +1 -1
- package/.output/public/_nuxt/BfTNbVc_.js +1 -0
- package/.output/public/_nuxt/BnbSEpXX.js +1 -0
- package/.output/public/_nuxt/Bo_dxehb.js +1 -0
- package/.output/public/_nuxt/{ClOqkAcc.js → BpBHls4-.js} +1 -1
- package/.output/public/_nuxt/{C7P1UCO2.js → BpM6ZPIG.js} +1 -1
- package/.output/public/_nuxt/BqGumsDo.js +4 -0
- package/.output/public/_nuxt/{DS636elg.js → BrxtP_cN.js} +1 -1
- package/.output/public/_nuxt/{YVN7WG7q.js → C2hNxjjz.js} +1 -1
- package/.output/public/_nuxt/C5PSqfKi.js +2 -0
- package/.output/public/_nuxt/C5vsaU4G.js +1 -0
- package/.output/public/_nuxt/C9sdHaXd.js +1 -0
- package/.output/public/_nuxt/{SfMRXW25.js → CAxgBYIt.js} +2 -2
- package/.output/public/_nuxt/{CZfMdzfk.js → CES2i5Pl.js} +1 -1
- package/.output/public/_nuxt/{BX9ZXe98.js → CFEdRqaj.js} +1 -1
- package/.output/public/_nuxt/{B44A4LSJ.js → CFTZwazK.js} +1 -1
- package/.output/public/_nuxt/CIBS7ye6.js +1 -0
- package/.output/public/_nuxt/CIEceDOw.js +1 -0
- package/.output/public/_nuxt/{DHDtnj7p.js → CJBhojV6.js} +1 -1
- package/.output/public/_nuxt/{BPQoBGg5.js → CKYddHa6.js} +1 -1
- package/.output/public/_nuxt/{BccXfBfI.js → CLVWiCds.js} +1 -1
- package/.output/public/_nuxt/{DX-MDGb3.js → CMYAryzi.js} +1 -1
- package/.output/public/_nuxt/{BuMC3WjZ.js → COhdybDy.js} +1 -1
- package/.output/public/_nuxt/{Bu2aaVIY.js → CRBXM2d6.js} +2 -2
- package/.output/public/_nuxt/{BYDaY0Z7.js → CTD_pJ_v.js} +1 -1
- package/.output/public/_nuxt/{C9_jrmk9.js → CTP8Pw0-.js} +2 -2
- package/.output/public/_nuxt/{D55D4EYo.js → CV8iF2kG.js} +1 -1
- package/.output/public/_nuxt/{BCMuIgP5.js → CWKmbYlT.js} +1 -1
- package/.output/public/_nuxt/C_NfGMTd.js +9 -0
- package/.output/public/_nuxt/Cejoebel.js +6 -0
- package/.output/public/_nuxt/{Dnpkl-1q.js → Chpah_7l.js} +1 -1
- package/.output/public/_nuxt/Ci9d8YVV.js +1 -0
- package/.output/public/_nuxt/{C95YAaJq.js → CifRHVaR.js} +1 -1
- package/.output/public/_nuxt/{BMvCSA6h.js → Ckgsh9AT.js} +1 -1
- package/.output/public/_nuxt/{eptP4pGv.js → Cpsq-kYE.js} +1 -1
- package/.output/public/_nuxt/Cqc-DSTF.js +1 -0
- package/.output/public/_nuxt/{KnfsST6Y.js → CsHulb12.js} +1 -1
- package/.output/public/_nuxt/Ctb2CqUf.js +5 -0
- package/.output/public/_nuxt/CtstIQSh.js +1 -0
- package/.output/public/_nuxt/{DGfAxLHV.js → CvMzDKvu.js} +1 -1
- package/.output/public/_nuxt/{fVcG504p.js → D2pBhsH8.js} +1 -1
- package/.output/public/_nuxt/{rWNTSFD6.js → D8gX1Jde.js} +3 -3
- package/.output/public/_nuxt/D9knOn6D.js +1 -0
- package/.output/public/_nuxt/DAPTVdvA.js +1 -0
- package/.output/public/_nuxt/{NQikbhmK.js → DCFbQvIN.js} +44 -43
- package/.output/public/_nuxt/DCoJlz_q.js +1 -0
- package/.output/public/_nuxt/DGnQ69wW.js +64 -0
- package/.output/public/_nuxt/{CTxDO9fB.js → DHzij16p.js} +1 -1
- package/.output/public/_nuxt/DJMCXRuW.js +5 -0
- package/.output/public/_nuxt/DJXcGkJP.js +2 -0
- package/.output/public/_nuxt/{CK_2LZBS.js → DKFXZdWZ.js} +1 -1
- package/.output/public/_nuxt/{tvgqrYDd.js → DL24AjfW.js} +1 -1
- package/.output/public/_nuxt/DON74Yh6.js +1 -0
- package/.output/public/_nuxt/{CHEFCN8Q.js → DQM62mxB.js} +1 -1
- package/.output/public/_nuxt/DSe8DxMl.js +1 -0
- package/.output/public/_nuxt/DWwiVTZX.js +24 -0
- package/.output/public/_nuxt/DX4tAP78.js +1 -0
- package/.output/public/_nuxt/{DLSrtpsA.js → D_eDAIsT.js} +1 -1
- package/.output/public/_nuxt/Da8A92cF.js +1 -0
- package/.output/public/_nuxt/{BxCKKeYs.js → DdH3op4b.js} +1 -1
- package/.output/public/_nuxt/DepFDZO3.js +1 -0
- package/.output/public/_nuxt/{CV9-fTmY.js → DfSBKzrC.js} +1 -1
- package/.output/public/_nuxt/{DT53RWbC.js → DfnKh3dZ.js} +1 -1
- package/.output/public/_nuxt/{ndShiWE8.js → DhpTfeip.js} +1 -1
- package/.output/public/_nuxt/{ybDYeNxd.js → Dk9nD32g.js} +1 -1
- package/.output/public/_nuxt/{D0HNloZ9.js → DkT2nCqn.js} +1 -1
- package/.output/public/_nuxt/DlW85lQq.js +4 -0
- package/.output/public/_nuxt/DnNio-ut.js +1 -0
- package/.output/public/_nuxt/{BfTuX0wq.js → DnQv_hst.js} +1 -1
- package/.output/public/_nuxt/{FUXhyidq.js → DqEOMteW.js} +1 -1
- package/.output/public/_nuxt/{Bti38m-M.js → Dsvu7YJT.js} +1 -1
- package/.output/public/_nuxt/DvhCDBrR.js +2 -0
- package/.output/public/_nuxt/DwQaVMZR.js +1 -0
- package/.output/public/_nuxt/E-_n_6vi.js +1 -0
- package/.output/public/_nuxt/{DP8hfJ9h.js → Ebw5l7n8.js} +1 -1
- package/.output/public/_nuxt/{nv9-6vBK.js → IPePdbzl.js} +1 -1
- package/.output/public/_nuxt/{BPRffDuo.js → LHoUGrfi.js} +1 -1
- package/.output/public/_nuxt/{CYsTqbBS.js → NERLHpOL.js} +1 -1
- package/.output/public/_nuxt/RAdNGxcF.js +1 -0
- package/.output/public/_nuxt/Vxyo_mU9.js +1 -0
- package/.output/public/_nuxt/{IvQlbZk6.js → YE1kAkU9.js} +1 -1
- package/.output/public/_nuxt/{DgE2YE3R.js → YmT5WiN5.js} +1 -1
- package/.output/public/_nuxt/ZcAfCxWE.js +17 -0
- package/.output/public/_nuxt/{cHAnlQbv.js → _rglcvXN.js} +1 -1
- package/.output/public/_nuxt/bFU9Y1Vw.js +10 -0
- package/.output/public/_nuxt/bfecIH89.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/31ca2be4-a949-4df6-9818-773fc085557a.json +1 -0
- package/.output/public/_nuxt/entry.BAvBQY-h.css +1 -0
- package/.output/public/_nuxt/four-S1Y.js +1 -0
- package/.output/public/_nuxt/{DiOLdHBC.js → gV2U_Gqd.js} +1 -1
- package/.output/public/_nuxt/{C-elpgyr.js → lGC893pn.js} +1 -1
- package/.output/public/_nuxt/nOfj-ar8.js +1 -0
- package/.output/public/_nuxt/oKrbs1XK.js +1 -0
- package/.output/public/_nuxt/oSJFAC38.js +1 -0
- package/.output/public/_nuxt/rL4C0HV5.js +1 -0
- package/.output/public/_nuxt/{Cdff9XNh.js → tQoyVPCE.js} +1 -1
- package/.output/public/_nuxt/{DEFEpYzn.js → uSPCvASp.js} +1 -1
- package/.output/public/_nuxt/{y17lMTFy.js → wkz5-1SO.js} +1 -1
- package/.output/public/_nuxt/yYlVYKCz.js +34 -0
- package/.output/public/_nuxt/{B9WhzpKO.js → zv8WdMx0.js} +1 -1
- package/.output/server/chunks/_/collect.mjs +1 -1
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/quarantine.mjs +1 -1
- package/.output/server/chunks/_/scope.mjs +43 -27
- package/.output/server/chunks/_/scope.mjs.map +1 -1
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{Breadcrumb-Ak2Lg3oM.mjs → Breadcrumb-3itRZ1uz.mjs} +2 -2
- package/.output/server/chunks/build/Breadcrumb-3itRZ1uz.mjs.map +1 -0
- package/.output/server/chunks/build/{BreadcrumbNav-DO7I_z-n.mjs → BreadcrumbNav-GnjBvXuT.mjs} +2 -2
- package/.output/server/chunks/build/BreadcrumbNav-GnjBvXuT.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-D33lqUcj.mjs → BrowserBadge-DQqJS9CV.mjs} +66 -6
- package/.output/server/chunks/build/BrowserBadge-DQqJS9CV.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-Y1UKwMsf.mjs → ChartCard-D0rzMf-N.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-D0rzMf-N.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-DvUBGagc.mjs → Checkbox-DmRKG-0s.mjs} +5 -5
- package/.output/server/chunks/build/Checkbox-DmRKG-0s.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-BgE-NSmE.mjs → CodeBlock-DGhKVFad.mjs} +4 -4
- package/.output/server/chunks/build/CodeBlock-DGhKVFad.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-BHmMSPX7.mjs → DashboardNavbar-DCr10nxL.mjs} +2 -2
- package/.output/server/chunks/build/DashboardNavbar-DCr10nxL.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardSidebarToggle-DCTnHiIv.mjs → DashboardSidebarToggle-8EpBhX0R.mjs} +3 -3
- package/.output/server/chunks/build/DashboardSidebarToggle-8EpBhX0R.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-B_YHdzSz.mjs → DataLocationCard-rzS-pgCP.mjs} +5 -5
- package/.output/server/chunks/build/DataLocationCard-rzS-pgCP.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-B646dK4p.mjs → DiagnosisPanel-BWTpoCKy.mjs} +8 -7
- package/.output/server/chunks/build/DiagnosisPanel-BWTpoCKy.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-CWvIo32Q.mjs → DiagnosisResult-Br3qBLXe.mjs} +14 -36
- package/.output/server/chunks/build/DiagnosisResult-Br3qBLXe.mjs.map +1 -0
- package/.output/server/chunks/build/{DurationValue-D20oGbnc.mjs → DurationValue-CWKfjIF2.mjs} +2 -2
- package/.output/server/chunks/build/DurationValue-CWKfjIF2.mjs.map +1 -0
- package/.output/server/chunks/build/{EmptyState-Dtlab7S9.mjs → EmptyState-DC2q_7TD.mjs} +3 -3
- package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +1 -0
- package/.output/server/chunks/build/{EntityLinks-D3fp57pR.mjs → EntityLinks-CF0xG3Y8.mjs} +6 -6
- package/.output/server/chunks/build/EntityLinks-CF0xG3Y8.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-Bg3FSiU1.mjs → EnvManagedBadge-UwD2b9v2.mjs} +3 -3
- package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
- package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs +83 -0
- package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs.map +1 -0
- package/.output/server/chunks/build/{FormField-B0HKsdMd.mjs → FormField-e7OnSKPM.mjs} +2 -2
- package/.output/server/chunks/build/FormField-e7OnSKPM.mjs.map +1 -0
- package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs +510 -0
- package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-DrcIv-Oj.mjs → HelpHint-DjGrGFA7.mjs} +3 -3
- package/.output/server/chunks/build/HelpHint-DjGrGFA7.mjs.map +1 -0
- package/.output/server/chunks/build/{LoadingState-C3pBSuOO.mjs → LoadingState-B8v1nWJt.mjs} +3 -3
- package/.output/server/chunks/build/LoadingState-B8v1nWJt.mjs.map +1 -0
- package/.output/server/chunks/build/MetaStripGroup-dXXa_MzF.mjs +1205 -0
- package/.output/server/chunks/build/MetaStripGroup-dXXa_MzF.mjs.map +1 -0
- package/.output/server/chunks/build/{MiniRunBars-CZMugDrh.mjs → MiniRunBars-fgLMgRUp.mjs} +2 -2
- package/.output/server/chunks/build/MiniRunBars-fgLMgRUp.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-Ck2XLt8d.mjs → Modal-pSDlXzT3.mjs} +2 -2
- package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-C3O866KC.mjs → NavigationMenu-cqpt11Ce.mjs} +6 -29
- package/.output/server/chunks/build/NavigationMenu-cqpt11Ce.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs → OpenInIdeLink-B9wvQkhy.mjs} +5 -5
- package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs.map → OpenInIdeLink-B9wvQkhy.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs → ProjectTestCasesTable-BwHEtZTz.mjs} +19 -19
- package/.output/server/chunks/build/ProjectTestCasesTable-BwHEtZTz.mjs.map +1 -0
- package/.output/server/chunks/build/{RovingFocusItem-BJSzTBjy.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
- package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-DFLv51TX.mjs → RunReports-BDRIWn3o.mjs} +3 -3
- package/.output/server/chunks/build/RunReports-BDRIWn3o.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-FfGb6bkW.mjs → RunStatusBadge-CuTDknRJ.mjs} +2 -2
- package/.output/server/chunks/build/RunStatusBadge-CuTDknRJ.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-CN-v0FZ_.mjs → SectionCard-BW5Lynrr.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-BW5Lynrr.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-CUqj50wi.mjs → Select-CVctwpib.mjs} +3 -3
- package/.output/server/chunks/build/Select-CVctwpib.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs → SelectMenu-XLVBEa11.mjs} +939 -7
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs.map → SelectMenu-XLVBEa11.mjs.map} +1 -1
- package/.output/server/chunks/build/{SettingsField-D6iEYbEc.mjs → SettingsField-DvtRvI6O.mjs} +4 -4
- package/.output/server/chunks/build/SettingsField-DvtRvI6O.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-DgCa80mf.mjs → Slideover-D270EZZD.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
- package/.output/server/chunks/build/{StatTile-D61Vzo6e.mjs → StatTile-DpcVQFVI.mjs} +2 -26
- package/.output/server/chunks/build/StatTile-DpcVQFVI.mjs.map +1 -0
- package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs +30 -0
- package/.output/server/chunks/build/StatTileGrid-7zOFUQ6j.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-CgUioOYB.mjs → Switch-8zWfwI5B.mjs} +3 -3
- package/.output/server/chunks/build/Switch-8zWfwI5B.mjs.map +1 -0
- package/.output/server/chunks/build/Table-BRk04Hd2.mjs +1 -1
- package/.output/server/chunks/build/{Tabs-Bbsg9wag.mjs → Tabs-BkSOnbaB.mjs} +2 -2
- package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
- package/.output/server/chunks/build/{TestCaseHistoryChart-nMLPhdvD.mjs → TestCaseHistoryChart-C6t5RrCG.mjs} +6 -6
- package/.output/server/chunks/build/TestCaseHistoryChart-C6t5RrCG.mjs.map +1 -0
- package/.output/server/chunks/build/{TestMetaBadges-D5_yUtIP.mjs → TestMetaBadges-BlyKmfeP.mjs} +1 -1
- package/.output/server/chunks/build/TestMetaBadges-BlyKmfeP.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-j6h2Jp6A.mjs → TestStatusBar-DhbrM_rQ.mjs} +4 -4
- package/.output/server/chunks/build/TestStatusBar-DhbrM_rQ.mjs.map +1 -0
- package/.output/server/chunks/build/{Textarea-Dv2-lOvW.mjs → Textarea-vkMKVQTJ.mjs} +2 -2
- package/.output/server/chunks/build/Textarea-vkMKVQTJ.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-BOazooWP.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-D6kBJxVd.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-z5N6HPyC.mjs → _id_-2PMH6rl8.mjs} +26 -25
- package/.output/server/chunks/build/_id_-2PMH6rl8.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-BHh65pfg.mjs → _id_-8cGIgeg6.mjs} +1912 -1098
- package/.output/server/chunks/build/_id_-8cGIgeg6.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs → _id_-CUZ5S6y5.mjs} +43 -44
- package/.output/server/chunks/build/_id_-CUZ5S6y5.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B78ky13D.mjs → _id_-DMkgWSLZ.mjs} +956 -429
- package/.output/server/chunks/build/_id_-DMkgWSLZ.mjs.map +1 -0
- package/.output/server/chunks/build/about-D3WXTDro.mjs +696 -0
- package/.output/server/chunks/build/about-D3WXTDro.mjs.map +1 -0
- package/.output/server/chunks/build/{account-DAfvaD-F.mjs → account-BslDNCoo.mjs} +6 -6
- package/.output/server/chunks/build/account-BslDNCoo.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs → ai-C23R9l94.mjs} +18 -18
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs.map → ai-C23R9l94.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-CJPC6t4L.mjs → analytics-DQHeToK0.mjs} +106 -80
- package/.output/server/chunks/build/analytics-DQHeToK0.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/compare-RxHSOdsO.mjs +1 -0
- package/.output/server/chunks/build/{db.client-CQoVTYB9.mjs → db.client-D74DghqX.mjs} +38 -2
- package/.output/server/chunks/build/db.client-D74DghqX.mjs.map +1 -0
- package/.output/server/chunks/build/{default-zvbFgDJG.mjs → default-CeyePZ5I.mjs} +624 -79
- package/.output/server/chunks/build/default-CeyePZ5I.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs → docs-f_bnC75q.mjs} +17 -17
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs.map → docs-f_bnC75q.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-CFR5g2Qf.mjs → edit-BOC4zWuH.mjs} +13 -15
- package/.output/server/chunks/build/edit-BOC4zWuH.mjs.map +1 -0
- package/.output/server/chunks/build/{fetch-B4FwBOzu.mjs → fetch-BQg_fhX0.mjs} +32 -4
- package/.output/server/chunks/build/fetch-BQg_fhX0.mjs.map +1 -0
- package/.output/server/chunks/build/{forgot-password-CC__1OnV.mjs → forgot-password-CxuVbGWy.mjs} +4 -3
- package/.output/server/chunks/build/forgot-password-CxuVbGWy.mjs.map +1 -0
- package/.output/server/chunks/build/{import-CZo3djDi.mjs → import-CC27wEIu.mjs} +14 -14
- package/.output/server/chunks/build/import-CC27wEIu.mjs.map +1 -0
- package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs → index-B6PjfyTY.mjs} +44 -543
- package/.output/server/chunks/build/index-B6PjfyTY.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CU2nZhAa.mjs → index-BOK1aJk9.mjs} +2 -1
- package/.output/server/chunks/build/index-BOK1aJk9.mjs.map +1 -0
- package/.output/server/chunks/build/{index-D7fe97l3.mjs → index-BhS1DuCr.mjs} +400 -151
- package/.output/server/chunks/build/index-BhS1DuCr.mjs.map +1 -0
- package/.output/server/chunks/build/{index-Stqw0dEI.mjs → index-DUmjP3Gr.mjs} +18 -19
- package/.output/server/chunks/build/index-DUmjP3Gr.mjs.map +1 -0
- package/.output/server/chunks/build/index-jvF53f7_.mjs +91 -0
- package/.output/server/chunks/build/index-jvF53f7_.mjs.map +1 -0
- package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
- package/.output/server/chunks/build/{login-Da4u1IlW.mjs → login-CdpOhiP8.mjs} +8 -7
- package/.output/server/chunks/build/login-CdpOhiP8.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-B3IUvRgD.mjs → mcp-WTeO5WRo.mjs} +528 -16
- package/.output/server/chunks/build/mcp-WTeO5WRo.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-abDv0id8.mjs → notifications-yY6ik-fi.mjs} +11 -11
- package/.output/server/chunks/build/notifications-yY6ik-fi.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-DjZID6q-.mjs → pr-feedback-Hv2Ydh_6.mjs} +8 -8
- package/.output/server/chunks/build/pr-feedback-Hv2Ydh_6.mjs.map +1 -0
- package/.output/server/chunks/build/{reset-password-BmrUS4ZD.mjs → reset-password-CFtO8A6n.mjs} +4 -3
- package/.output/server/chunks/build/reset-password-CFtO8A6n.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +51 -34
- package/.output/server/chunks/build/{settings-Du7YqF8i.mjs → settings-DIpvnY8_.mjs} +11 -9
- package/.output/server/chunks/build/settings-DIpvnY8_.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-DrEqWcW-.mjs → settings-metadata-DRv9VveS.mjs} +32 -2
- package/.output/server/chunks/build/settings-metadata-DRv9VveS.mjs.map +1 -0
- package/.output/server/chunks/build/setup-Di0UMyWx.mjs +1116 -0
- package/.output/server/chunks/build/setup-Di0UMyWx.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-B4vzxd8G.mjs → storage-gAbY1KbQ.mjs} +13 -13
- package/.output/server/chunks/build/storage-gAbY1KbQ.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-DauTe_F-.mjs → tags-DJ80wCqt.mjs} +6 -7
- package/.output/server/chunks/build/tags-DJ80wCqt.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-DUvaO1He.mjs → test-cases-YP83YlnL.mjs} +21 -21
- package/.output/server/chunks/build/test-cases-YP83YlnL.mjs.map +1 -0
- package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs +550 -0
- package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs.map +1 -0
- package/.output/server/chunks/build/{timeout-hygiene-CbnSaVbK.mjs → timeout-hygiene-RpXDjXTX.mjs} +6 -6
- package/.output/server/chunks/build/timeout-hygiene-RpXDjXTX.mjs.map +1 -0
- package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs +9 -0
- package/.output/server/chunks/build/useAiStatus-UR8x-feE.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-BemRsKgv.mjs → useCopyRich-Cd5Yj_Wy.mjs} +721 -239
- package/.output/server/chunks/build/useCopyRich-Cd5Yj_Wy.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopDownload-D49JRQSw.mjs → useDesktopDownload-BmR6ouz2.mjs} +3 -3
- package/.output/server/chunks/build/useDesktopDownload-BmR6ouz2.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-4GFf-kdi.mjs → useOpenInIde-DolN3bZ5.mjs} +2 -2
- package/.output/server/chunks/build/useOpenInIde-DolN3bZ5.mjs.map +1 -0
- package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs +19 -0
- package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs.map +1 -0
- package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs +11 -0
- package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs.map +1 -0
- package/.output/server/chunks/build/{users-CTUqXyGh.mjs → users-I2K7HXS2.mjs} +6 -7
- package/.output/server/chunks/build/users-I2K7HXS2.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-lYkx5YO4.mjs → wasted-time-DyIk0olc.mjs} +11 -11
- package/.output/server/chunks/build/wasted-time-DyIk0olc.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +3124 -1782
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +2 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/admin/stats.get.mjs +1 -0
- package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -0
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -0
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +89 -0
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +1 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +2 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +2 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +2 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +76 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +66 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +53 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +67 -0
- package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +2 -1
- package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +2 -1
- package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +1 -0
- package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +2 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/setup-status.get.mjs +99 -0
- package/.output/server/chunks/routes/api/setup-status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/stream.get.mjs +2 -1
- package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +60 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +69 -0
- package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +6 -3
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +2 -2
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +5 -128
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +4 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +2 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +2 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +2 -1
- package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +41 -11
- package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/tasks/sweep.mjs +1 -0
- package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
- package/.output/server/chunks/tasks/sweep2.mjs +1 -0
- package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
- package/.output/server/database/migrations/0043_watery_dragon_lord.sql +22 -0
- package/.output/server/database/migrations/meta/0043_snapshot.json +3764 -0
- package/.output/server/database/migrations/meta/_journal.json +7 -0
- package/.output/server/database/migrations-pg/0044_dark_triathlon.sql +22 -0
- package/.output/server/database/migrations-pg/meta/0044_snapshot.json +4473 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
- package/.output/server/index.mjs +2 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/-09h6CA9.js +0 -1
- package/.output/public/_nuxt/81InBX9v.js +0 -1
- package/.output/public/_nuxt/Ar3IelOY.js +0 -1
- package/.output/public/_nuxt/B33iXw77.js +0 -1
- package/.output/public/_nuxt/B3B9Ii2A.js +0 -1
- package/.output/public/_nuxt/B3HO8kuh.js +0 -1
- package/.output/public/_nuxt/B7NBP1C-.js +0 -1
- package/.output/public/_nuxt/BJ0XQElc.js +0 -1
- package/.output/public/_nuxt/BSIxhGsh.js +0 -1
- package/.output/public/_nuxt/BVaxh6Nl.js +0 -4
- package/.output/public/_nuxt/Bc8mOoz9.js +0 -4
- package/.output/public/_nuxt/BeLWlVK0.js +0 -1
- package/.output/public/_nuxt/Bn0YQDyy.js +0 -1
- package/.output/public/_nuxt/Bp5ELvx9.js +0 -1
- package/.output/public/_nuxt/BpUaY9nH.js +0 -2
- package/.output/public/_nuxt/C2_3mdPC.js +0 -1
- package/.output/public/_nuxt/C5iG7O4O.js +0 -64
- package/.output/public/_nuxt/CHNwfU1y.js +0 -1
- package/.output/public/_nuxt/CNFYDQmj.js +0 -1
- package/.output/public/_nuxt/CU5S9GCh.js +0 -1
- package/.output/public/_nuxt/CUtJobDm.js +0 -1
- package/.output/public/_nuxt/CpjgB2aY.js +0 -1
- package/.output/public/_nuxt/CrwJAwhk.js +0 -1
- package/.output/public/_nuxt/CtQBsNUb.js +0 -1
- package/.output/public/_nuxt/CuSVQEkS.js +0 -3
- package/.output/public/_nuxt/CylWPruw.js +0 -1
- package/.output/public/_nuxt/CzGyac8q.js +0 -1
- package/.output/public/_nuxt/DDDpCFpF.js +0 -1
- package/.output/public/_nuxt/DVDXJYq2.js +0 -2
- package/.output/public/_nuxt/DW0xl3I6.js +0 -17
- package/.output/public/_nuxt/Dgf5N4Ng.js +0 -1
- package/.output/public/_nuxt/DiZyJYez.js +0 -1
- package/.output/public/_nuxt/Dk9fwOCm.js +0 -34
- package/.output/public/_nuxt/DoUy4UHi.js +0 -44
- package/.output/public/_nuxt/DslPMqfa.js +0 -1
- package/.output/public/_nuxt/OSduWzyz.js +0 -1
- package/.output/public/_nuxt/SlIRLREZ.js +0 -6
- package/.output/public/_nuxt/WsxFTEFq.js +0 -10
- package/.output/public/_nuxt/aQgs_c6e.js +0 -9
- package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +0 -1
- package/.output/public/_nuxt/dYCKgE-3.js +0 -5
- package/.output/public/_nuxt/entry.CPhW41mh.css +0 -1
- package/.output/public/_nuxt/g26aVPxc.js +0 -1
- package/.output/public/_nuxt/zQyPuvV1.js +0 -1
- package/.output/server/chunks/_/import-runs.mjs +0 -351
- package/.output/server/chunks/_/import-runs.mjs.map +0 -1
- package/.output/server/chunks/build/Breadcrumb-Ak2Lg3oM.mjs.map +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-DO7I_z-n.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-Y1UKwMsf.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs +0 -631
- package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-BHmMSPX7.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-B_YHdzSz.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +0 -1
- package/.output/server/chunks/build/DurationValue-D20oGbnc.mjs.map +0 -1
- package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +0 -1
- package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +0 -1
- package/.output/server/chunks/build/FormField-B0HKsdMd.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-DrcIv-Oj.mjs.map +0 -1
- package/.output/server/chunks/build/LoadingState-C3pBSuOO.mjs.map +0 -1
- package/.output/server/chunks/build/MiniRunBars-CZMugDrh.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-CxfQ5wtN.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-DFLv51TX.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-FfGb6bkW.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-CN-v0FZ_.mjs.map +0 -1
- package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +0 -1
- package/.output/server/chunks/build/StatTile-D61Vzo6e.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +0 -1
- package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +0 -1
- package/.output/server/chunks/build/TestMetaBadges-D5_yUtIP.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +0 -1
- package/.output/server/chunks/build/Textarea-Dv2-lOvW.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-BHh65pfg.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-Rzkqx55x.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +0 -1
- package/.output/server/chunks/build/about-CvSP73Ug.mjs +0 -781
- package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +0 -1
- package/.output/server/chunks/build/account-DAfvaD-F.mjs.map +0 -1
- package/.output/server/chunks/build/analytics-CJPC6t4L.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-CQoVTYB9.mjs.map +0 -1
- package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +0 -1
- package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +0 -1
- package/.output/server/chunks/build/fetch-B4FwBOzu.mjs.map +0 -1
- package/.output/server/chunks/build/forgot-password-CC__1OnV.mjs.map +0 -1
- package/.output/server/chunks/build/import-CZo3djDi.mjs.map +0 -1
- package/.output/server/chunks/build/index-CU2nZhAa.mjs.map +0 -1
- package/.output/server/chunks/build/index-D7fe97l3.mjs.map +0 -1
- package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +0 -1
- package/.output/server/chunks/build/index-gCw_y4ZJ.mjs.map +0 -1
- package/.output/server/chunks/build/index-tR6owKzj.mjs +0 -167
- package/.output/server/chunks/build/index-tR6owKzj.mjs.map +0 -1
- package/.output/server/chunks/build/login-Da4u1IlW.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +0 -1
- package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +0 -1
- package/.output/server/chunks/build/reset-password-BmrUS4ZD.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-DrEqWcW-.mjs.map +0 -1
- package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +0 -1
- package/.output/server/chunks/build/tags-DauTe_F-.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +0 -1
- package/.output/server/chunks/build/timeout-hygiene-CbnSaVbK.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +0 -1
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs +0 -33
- package/.output/server/chunks/build/useCopy-CeKWgHyT.mjs.map +0 -1
- package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +0 -1
- package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-C3O866KC.mjs.map +0 -1
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +0 -7
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +0 -1
- package/.output/server/chunks/build/users-CTUqXyGh.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs +0 -940
- package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import{a3 as Jt,a5 as Lt,aO as xt,aP as Mt,an as Ue,aQ as Fe,aR as Je,B as Le,K as Wt,ad as Vt,r as ee,L as we,h as te,aS as ce,o as Bt,f as Kt,g as qt,V as Gt,C as Xt,q as Ht,k as q,ag as Yt,aT as Qt,a8 as en,M as G,aU as tn,aV as nn,aW as rn,aX as on}from"./NQikbhmK.js";function sn(e){return"schema"in e&&typeof e.coercer=="function"&&typeof e.validator=="function"&&typeof e.refiner=="function"}function an(e){return"~standard"in e}async function cn(e,t){const n=await t["~standard"].validate(e);return n.issues?{errors:n.issues?.map(r=>({name:r.path?.map(o=>typeof o=="object"?o.key:o).join(".")||"",message:r.message}))||[],result:null}:{errors:null,result:n.value}}async function un(e,t){const[n,r]=t.validate(e);return n?{errors:n.failures().map(i=>({message:i.message,name:i.path.join(".")})),result:null}:{errors:null,result:r}}function fn(e,t){if(an(t))return cn(e,t);if(sn(t))return un(e,t);throw new Error("Form validation failed: Unsupported form schema")}function ln(e,t){return t?t.split(".").reduce((r,o)=>r?.[o],e):e}function dn(e,t,n){if(!t)return Object.assign(e,n);if(!e)return e;const r=t.split(".");let o=e;for(let s=0;s<r.length-1;s++){const a=r[s];(o[a]===void 0||o[a]===null)&&(s+1<r.length&&!Number.isNaN(Number(r[s+1]))?o[a]=[]:o[a]={}),o=o[a]}const i=r[r.length-1];return o[i]=n,e}class re extends Error{formId;errors;constructor(t,n){super("Form validation exception"),this.formId=t,this.errors=n,Object.setPrototypeOf(this,re.prototype)}}const pn={base:""},Ui={__name:"UForm",props:{id:{type:[String,Number],required:!1},schema:{type:null,required:!1},state:{type:null,required:!1},validate:{type:Function,required:!1},validateOn:{type:Array,required:!1,default(){return["input","blur","change"]}},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},validateOnInputDelay:{type:Number,required:!1,default:300},transform:{type:null,required:!1,default:()=>!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},onSubmit:{type:Function,required:!1}},emits:["submit","error"],setup(e,{expose:t,emit:n}){const r=e,o=n,i=Jt("form",r),s=Lt(),a=te(()=>en({extend:pn,...s.ui?.form||{}})),c=i.id??xt(),f=Mt("formRef"),d=Qt(`form-${c}`),g=i.nested===!0&&Ue(Fe,void 0),_=i.nested===!0?Ue(Je,void 0):void 0,h=te(()=>_?.value?i.name?ln(_.value,i.name):_.value:i.state);G(Fe,d),G(Je,h);const v=ee(new Map);Le(async()=>{g&&(await Wt(),g.emit({type:"attach",validate:J,formId:c,name:i.name,api:Ne}))}),Vt(()=>{d.reset(),g&&g.emit({type:"detach",formId:c})}),Le(async()=>{d.on(async l=>{l.type==="attach"?v.value.set(l.formId,{validate:l.validate,name:l.name,api:l.api}):l.type==="detach"?v.value.delete(l.formId):i.validateOn?.includes(l.type)&&!U.value&&(l.type!=="input"?await J({name:l.name,silent:!0,nested:!1}):(l.eager||j.has(l.name))&&await J({name:l.name,silent:!0,nested:!1})),l.type==="blur"&&j.add(l.name),(l.type==="change"||l.type==="input"||l.type==="blur"||l.type==="focus")&&ie.add(l.name),(l.type==="change"||l.type==="input")&&F.add(l.name)})});const S=ee([]);G(tn,S);const k=ee({});G(nn,k);const F=we(new Set),ie=we(new Set),j=we(new Set);function z(l){return l.map(p=>({...p,id:p?.name?k.value[p.name]?.id:void 0}))}const Z=ee(null);async function ae(){let l=i.validate?await i.validate(h.value)??[]:[];if(i.schema){const{errors:p,result:y}=await fn(h.value,i.schema);p?l=l.concat(p):Z.value=y}return z(l)}async function J(l={silent:!1,nested:!1,transform:!1}){const p=l.name&&!Array.isArray(l.name)?[l.name]:l.name;let y=[],O=[];if(!p&&l.nested){const L=Array.from(v.value.values()).map(D=>jt(D,l)),C=await Promise.all(L);O=C.filter(D=>D.error).flatMap(D=>D.error.errors.map(Ft=>At(Ft,D.name))),y=C.filter(D=>D.output!==void 0)}const K=[...await ae(),...O];if(p?S.value=Nt(K,p):S.value=K,S.value?.length){if(l.silent)return!1;throw new re(c,S.value)}return l.transform?(y.forEach(L=>{L.name?dn(Z.value,L.name,L.output):Object.assign(Z.value,L.output)}),Z.value??h.value):h.value}const U=ee(!1);G(rn,ce(U));async function je(l){U.value=!!i.loadingAuto;const p=l;try{p.data=await J({nested:!0,transform:i.transform}),await i.onSubmit?.(p),F.clear()}catch(y){if(!(y instanceof re))throw y;const O={...p,errors:y.errors};o("error",O)}finally{U.value=!1}}const Ae=te(()=>i.disabled||U.value);G(on,te(()=>({disabled:Ae.value,validateOnInputDelay:i.validateOnInputDelay})));async function jt(l,p){try{const y=await l.validate({...p,silent:!1});return{name:l.name,output:y}}catch(y){if(!(y instanceof re))throw y;return{name:l.name,error:y}}}function At(l,p){return!p||!l.name?l:{...l,name:p+"."+l.name}}function Rt(l,p){const y=p+".",O=l?.name?.startsWith(y)?l.name.substring(y.length):l.name;return{...l,name:O}}function Ct(l,p){return p?l.filter(y=>y?.name?.startsWith(p+".")).map(y=>Rt(y,p)):l}function Re(l){return l.api.getErrors().map(p=>l.name?{...p,name:l.name+"."+p.name}:p)}function Ce(l,p){return!l||!p?!0:l instanceof RegExp?l.test(p):p===l||typeof l=="string"&&l.startsWith(p+".")}function Dt(l,p){if(!l||l instanceof RegExp)return l;if(p!==l)return typeof l=="string"&&l.startsWith(p+".")?l.substring(p.length+1):l}function Nt(l,p){const y=new Set(p),O=p.map(C=>k.value?.[C]?.pattern).filter(Boolean),R=C=>C.name?y.has(C.name)?!0:O.some(D=>D.test(C.name)):!1,K=S.value.filter(C=>!R(C)),L=l.filter(R);return[...K,...L]}function Ut(l,p){return l.filter(y=>p instanceof RegExp?!(y.name&&p.test(y.name)):!y.name||y.name!==p)}function De(l){return!l.name||!!k.value[l.name]}const Ne={validate:J,errors:S,setErrors(l,p){const y=z(l.filter(De)),O=[];for(const R of v.value.values())if(Ce(p,R.name)){const K=Ct(l,R.name);R.api.setErrors(K,Dt(p,R.name||"")),O.push(...Re(R))}if(p){const R=Ut(S.value,p);S.value=[...R,...y,...O]}else S.value=[...y,...O]},async submit(){f.value instanceof HTMLFormElement&&f.value.reportValidity()===!1||await je(new Event("submit"))},getErrors(l){return l?S.value.filter(p=>l instanceof RegExp?p.name&&l.test(p.name):p.name===l):S.value},clear(l){const p=l?S.value.filter(O=>De(O)&&(l instanceof RegExp?!(O.name&&l.test(O.name)):O.name!==l)):[],y=[];for(const O of v.value.values())Ce(l,O.name)&&O.api.clear(),y.push(...Re(O));S.value=[...p,...y]},disabled:Ae,loading:U,dirty:te(()=>!!F.size),dirtyFields:ce(F),blurredFields:ce(j),touchedFields:ce(ie)};return t(Ne),(l,p)=>(Bt(),Kt(Yt(q(g)?"div":"form"),{id:q(c),ref_key:"formRef",ref:f,name:q(g)?void 0:q(i).name,method:"post",class:Ht(a.value({class:[q(i).ui?.base,q(i).class]})),onSubmit:Xt(je,["prevent"])},{default:qt(()=>[Gt(l.$slots,"default",{errors:S.value,loading:U.value})]),_:3},40,["id","name","class"]))}};var xe;function u(e,t,n){function r(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const f=s.prototype,d=Object.keys(f);for(let g=0;g<d.length;g++){const _=d[g];_ in a||(a[_]=f[_].bind(a))}}const o=n?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;const f=n?.Parent?new i:this;r(f,a),(c=f._zod).deferred??(c.deferred=[]);for(const d of f._zod.deferred)d();return f}return Object.defineProperty(s,"init",{value:r}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}class H extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ct extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}(xe=globalThis).__zod_globalConfig??(xe.__zod_globalConfig={});const $e=globalThis.__zod_globalConfig;function W(e){return $e}function ut(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function ze(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Se(e){return e==null}function Oe(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const Me=Symbol("evaluating");function w(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==Me)return r===void 0&&(r=Me,r=n()),r},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function B(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function x(...e){const t={};for(const n of e){const r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function We(e){return JSON.stringify(e)}function hn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const ft="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const mn=Ze(()=>{if($e.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function oe(e){if(de(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(de(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function lt(e){return oe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const _n=new Set(["string","number","symbol"]);function Y(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function M(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function m(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function gn(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function vn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(s[a]=n.shape[a])}return B(this,"shape",s),s},checks:[]});return M(e,i)}function yn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={...e._zod.def.shape};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete s[a]}return B(this,"shape",s),s},checks:[]});return M(e,i)}function wn(e,t){if(!oe(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const i=e._zod.def.shape;for(const s in t)if(Object.getOwnPropertyDescriptor(i,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=x(e._zod.def,{get shape(){const i={...e._zod.def.shape,...t};return B(this,"shape",i),i}});return M(e,o)}function zn(e,t){if(!oe(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return B(this,"shape",r),r}});return M(e,n)}function bn(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return B(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return M(e,n)}function kn(e,t,n){const o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const s=x(t._zod.def,{get shape(){const a=t._zod.def.shape,c={...a};if(n)for(const f in n){if(!(f in a))throw new Error(`Unrecognized key: "${f}"`);n[f]&&(c[f]=e?new e({type:"optional",innerType:a[f]}):a[f])}else for(const f in a)c[f]=e?new e({type:"optional",innerType:a[f]}):a[f];return B(this,"shape",c),c},checks:[]});return M(t,s)}function $n(e,t,n){const r=x(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(n)for(const s in n){if(!(s in i))throw new Error(`Unrecognized key: "${s}"`);n[s]&&(i[s]=new e({type:"nonoptional",innerType:o[s]}))}else for(const s in o)i[s]=new e({type:"nonoptional",innerType:o[s]});return B(this,"shape",i),i}});return M(t,r)}function X(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Zn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function dt(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function ue(e){return typeof e=="string"?e:e?.message}function V(e,t,n){const r=e.message?e.message:ue(e.inst?._zod.def?.error?.(e))??ue(t?.error?.(e))??ue(n.customError?.(e))??ue(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...a}=e;return a.path??(a.path=[]),a.message=r,t?.reportInput&&(a.input=s),a}function Ee(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function se(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}const pt=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ze,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},ht=u("$ZodError",pt),mt=u("$ZodError",pt,{Parent:Error});function Sn(e,t=n=>n.message){const n={},r=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):r.push(t(o));return{formErrors:r,fieldErrors:n}}function On(e,t=n=>n.message){const n={_errors:[]},r=(o,i=[])=>{for(const s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>r({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")r({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")r({issues:s.issues},[...i,...s.path]);else{const a=[...i,...s.path];if(a.length===0)n._errors.push(t(s));else{let c=n,f=0;for(;f<a.length;){const d=a[f];f===a.length-1?(c[d]=c[d]||{_errors:[]},c[d]._errors.push(t(s))):c[d]=c[d]||{_errors:[]},c=c[d],f++}}}};return r(e),n}const Pe=e=>(t,n,r,o)=>{const i=r?{...r,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new H;if(s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},Ie=e=>async(t,n,r,o)=>{const i=r?{...r,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},_e=e=>(t,n,r)=>{const o=r?{...r,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new H;return i.issues.length?{success:!1,error:new(e??ht)(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},En=_e(mt),ge=e=>async(t,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},Pn=ge(mt),In=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Pe(e)(t,n,o)},Tn=e=>(t,n,r)=>Pe(e)(t,n,r),jn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Ie(e)(t,n,o)},An=e=>async(t,n,r)=>Ie(e)(t,n,r),Rn=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return _e(e)(t,n,o)},Cn=e=>(t,n,r)=>_e(e)(t,n,r),Dn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return ge(e)(t,n,o)},Nn=e=>async(t,n,r)=>ge(e)(t,n,r),Un=/^[cC][0-9a-z]{6,}$/,Fn=/^[0-9a-z]+$/,Jn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ln=/^[0-9a-vA-V]{20}$/,xn=/^[A-Za-z0-9]{27}$/,Mn=/^[a-zA-Z0-9_-]{21}$/,Wn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Vn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ve=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Bn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Kn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function qn(){return new RegExp(Kn,"u")}const Gn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Xn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Hn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Yn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Qn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,_t=/^[A-Za-z0-9_-]*$/,er=/^https?$/,tr=/^\+[1-9]\d{6,14}$/,gt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",nr=new RegExp(`^${gt}$`);function vt(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function rr(e){return new RegExp(`^${vt(e)}$`)}function or(e){const t=vt({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${t}(?:${n.join("|")})`;return new RegExp(`^${gt}T(?:${r})$`)}const sr=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},ir=/^[^A-Z]*$/,ar=/^[^a-z]*$/,N=u("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),cr=u("$ZodCheckMaxLength",(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(r._zod.bag.maximum=t.maximum)}),e._zod.check=r=>{const o=r.value;if(o.length<=t.maximum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ur=u("$ZodCheckMinLength",(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(r._zod.bag.minimum=t.minimum)}),e._zod.check=r=>{const o=r.value;if(o.length>=t.minimum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),fr=u("$ZodCheckLengthEquals",(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=r=>{const o=r.value,i=o.length;if(i===t.length)return;const s=Ee(o),a=i>t.length;r.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),ve=u("$ZodCheckStringFormat",(e,t)=>{var n,r;N.init(e,t),e._zod.onattach.push(o=>{const i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),lr=u("$ZodCheckRegex",(e,t)=>{ve.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),dr=u("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ir),ve.init(e,t)}),pr=u("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ar),ve.init(e,t)}),hr=u("$ZodCheckIncludes",(e,t)=>{N.init(e,t);const n=Y(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(o=>{const i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mr=u("$ZodCheckStartsWith",(e,t)=>{N.init(e,t);const n=new RegExp(`^${Y(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),_r=u("$ZodCheckEndsWith",(e,t)=>{N.init(e,t);const n=new RegExp(`.*${Y(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}}),gr=u("$ZodCheckOverwrite",(e,t)=>{N.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class vr{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const r=t.split(`
|
|
2
|
-
`).filter(s=>s),o=Math.min(...r.map(s=>s.length-s.trimStart().length)),i=r.map(s=>s.slice(o)).map(s=>" ".repeat(this.indent*2)+s);for(const s of i)this.content.push(s)}compile(){const t=Function,n=this?.args,o=[...(this?.content??[""]).map(i=>` ${i}`)];return new t(...n,o.join(`
|
|
3
|
-
`))}}const yr={major:4,minor:4,patch:3},E=u("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=yr;const r=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&r.unshift(e);for(const o of r)for(const i of o._zod.onattach)i(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const o=(s,a,c)=>{let f=X(s),d;for(const g of a){if(g._zod.def.when){if(Zn(s)||!g._zod.def.when(s))continue}else if(f)continue;const _=s.issues.length,h=g._zod.check(s);if(h instanceof Promise&&c?.async===!1)throw new H;if(d||h instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await h,s.issues.length!==_&&(f||(f=X(s,_)))});else{if(s.issues.length===_)continue;f||(f=X(s,_))}}return d?d.then(()=>s):s},i=(s,a,c)=>{if(X(s))return s.aborted=!0,s;const f=o(a,r,c);if(f instanceof Promise){if(c.async===!1)throw new H;return f.then(d=>e._zod.parse(d,c))}return e._zod.parse(f,c)};e._zod.run=(s,a)=>{if(a.skipChecks)return e._zod.parse(s,a);if(a.direction==="backward"){const f=e._zod.parse({value:s.value,issues:[]},{...a,skipChecks:!0});return f instanceof Promise?f.then(d=>i(d,s,a)):i(f,s,a)}const c=e._zod.parse(s,a);if(c instanceof Promise){if(a.async===!1)throw new H;return c.then(f=>o(f,r,a))}return o(c,r,a)}}w(e,"~standard",()=>({validate:o=>{try{const i=En(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return Pn(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),Te=u("$ZodString",(e,t)=>{E.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??sr(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value=="string"||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),b=u("$ZodStringFormat",(e,t)=>{ve.init(e,t),Te.init(e,t)}),wr=u("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Vn),b.init(e,t)}),zr=u("$ZodUUID",(e,t)=>{if(t.version){const r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Ve(r))}else t.pattern??(t.pattern=Ve());b.init(e,t)}),br=u("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Bn),b.init(e,t)}),kr=u("$ZodURL",(e,t)=>{b.init(e,t),e._zod.check=n=>{try{const r=n.value.trim();if(!t.normalize&&t.protocol?.source===er.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});return}const o=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=o.href:n.value=r;return}catch{n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),$r=u("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=qn()),b.init(e,t)}),Zr=u("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Mn),b.init(e,t)}),Sr=u("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Un),b.init(e,t)}),Or=u("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Fn),b.init(e,t)}),Er=u("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Jn),b.init(e,t)}),Pr=u("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Ln),b.init(e,t)}),Ir=u("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=xn),b.init(e,t)}),Tr=u("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=or(t)),b.init(e,t)}),jr=u("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=nr),b.init(e,t)}),Ar=u("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=rr(t)),b.init(e,t)}),Rr=u("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Wn),b.init(e,t)}),Cr=u("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Gn),b.init(e,t),e._zod.bag.format="ipv4"}),Dr=u("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Xn),b.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),Nr=u("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Hn),b.init(e,t)}),Ur=u("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Yn),b.init(e,t),e._zod.check=n=>{const r=n.value.split("/");try{if(r.length!==2)throw new Error;const[o,i]=r;if(!i)throw new Error;const s=Number(i);if(`${s}`!==i)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${o}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function yt(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const Fr=u("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Qn),b.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{yt(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function Jr(e){if(!_t.test(e))return!1;const t=e.replace(/[-_]/g,r=>r==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return yt(n)}const Lr=u("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=_t),b.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{Jr(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),xr=u("$ZodE164",(e,t)=>{t.pattern??(t.pattern=tr),b.init(e,t)});function Mr(e,t=null){try{const n=e.split(".");if(n.length!==3)return!1;const[r]=n;if(!r)return!1;const o=JSON.parse(atob(r));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}const Wr=u("$ZodJWT",(e,t)=>{b.init(e,t),e._zod.check=n=>{Mr(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),Vr=u("$ZodUnknown",(e,t)=>{E.init(e,t),e._zod.parse=n=>n}),Br=u("$ZodNever",(e,t)=>{E.init(e,t),e._zod.parse=(n,r)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function Be(e,t,n){e.issues.length&&t.issues.push(...dt(n,e.issues)),t.value[n]=e.value}const Kr=u("$ZodArray",(e,t)=>{E.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let s=0;s<o.length;s++){const a=o[s],c=t.element._zod.run({value:a,issues:[]},r);c instanceof Promise?i.push(c.then(f=>Be(f,n,s))):Be(c,n,s)}return i.length?Promise.all(i).then(()=>n):n}});function pe(e,t,n,r,o,i){const s=n in r;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...dt(n,e.issues))}if(!s&&!o){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}e.value===void 0?s&&(t.value[n]=void 0):t.value[n]=e.value}function wt(e){const t=Object.keys(e.shape);for(const r of t)if(!e.shape?.[r]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${r}": expected a Zod schema`);const n=gn(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function zt(e,t,n,r,o,i){const s=[],a=o.keySet,c=o.catchall._zod,f=c.def.type,d=c.optin==="optional",g=c.optout==="optional";for(const _ in t){if(_==="__proto__"||a.has(_))continue;if(f==="never"){s.push(_);continue}const h=c.run({value:t[_],issues:[]},r);h instanceof Promise?e.push(h.then(v=>pe(v,n,_,t,d,g))):pe(h,n,_,t,d,g)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}const qr=u("$ZodObject",(e,t)=>{if(E.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const a=t.shape;Object.defineProperty(t,"shape",{get:()=>{const c={...a};return Object.defineProperty(t,"shape",{value:c}),c}})}const r=Ze(()=>wt(t));w(e._zod,"propValues",()=>{const a=t.shape,c={};for(const f in a){const d=a[f]._zod;if(d.values){c[f]??(c[f]=new Set);for(const g of d.values)c[f].add(g)}}return c});const o=de,i=t.catchall;let s;e._zod.parse=(a,c)=>{s??(s=r.value);const f=a.value;if(!o(f))return a.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),a;a.value={};const d=[],g=s.shape;for(const _ of s.keys){const h=g[_],v=h._zod.optin==="optional",S=h._zod.optout==="optional",k=h._zod.run({value:f[_],issues:[]},c);k instanceof Promise?d.push(k.then(F=>pe(F,a,_,f,v,S))):pe(k,a,_,f,v,S)}return i?zt(d,f,a,c,r.value,e):d.length?Promise.all(d).then(()=>a):a}}),Gr=u("$ZodObjectJIT",(e,t)=>{qr.init(e,t);const n=e._zod.parse,r=Ze(()=>wt(t)),o=_=>{const h=new vr(["shape","payload","ctx"]),v=r.value,S=j=>{const z=We(j);return`shape[${z}]._zod.run({ value: input[${z}], issues: [] }, ctx)`};h.write("const input = payload.value;");const k=Object.create(null);let F=0;for(const j of v.keys)k[j]=`key_${F++}`;h.write("const newResult = {};");for(const j of v.keys){const z=k[j],Z=We(j),ae=_[j],J=ae?._zod?.optin==="optional",U=ae?._zod?.optout==="optional";h.write(`const ${z} = ${S(j)};`),J&&U?h.write(`
|
|
4
|
-
if (${z}.issues.length) {
|
|
5
|
-
if (${Z} in input) {
|
|
6
|
-
payload.issues = payload.issues.concat(${z}.issues.map(iss => ({
|
|
7
|
-
...iss,
|
|
8
|
-
path: iss.path ? [${Z}, ...iss.path] : [${Z}]
|
|
9
|
-
})));
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (${z}.value === undefined) {
|
|
14
|
-
if (${Z} in input) {
|
|
15
|
-
newResult[${Z}] = undefined;
|
|
16
|
-
}
|
|
17
|
-
} else {
|
|
18
|
-
newResult[${Z}] = ${z}.value;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
`):J?h.write(`
|
|
22
|
-
if (${z}.issues.length) {
|
|
23
|
-
payload.issues = payload.issues.concat(${z}.issues.map(iss => ({
|
|
24
|
-
...iss,
|
|
25
|
-
path: iss.path ? [${Z}, ...iss.path] : [${Z}]
|
|
26
|
-
})));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (${z}.value === undefined) {
|
|
30
|
-
if (${Z} in input) {
|
|
31
|
-
newResult[${Z}] = undefined;
|
|
32
|
-
}
|
|
33
|
-
} else {
|
|
34
|
-
newResult[${Z}] = ${z}.value;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
`):h.write(`
|
|
38
|
-
const ${z}_present = ${Z} in input;
|
|
39
|
-
if (${z}.issues.length) {
|
|
40
|
-
payload.issues = payload.issues.concat(${z}.issues.map(iss => ({
|
|
41
|
-
...iss,
|
|
42
|
-
path: iss.path ? [${Z}, ...iss.path] : [${Z}]
|
|
43
|
-
})));
|
|
44
|
-
}
|
|
45
|
-
if (!${z}_present && !${z}.issues.length) {
|
|
46
|
-
payload.issues.push({
|
|
47
|
-
code: "invalid_type",
|
|
48
|
-
expected: "nonoptional",
|
|
49
|
-
input: undefined,
|
|
50
|
-
path: [${Z}]
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (${z}_present) {
|
|
55
|
-
if (${z}.value === undefined) {
|
|
56
|
-
newResult[${Z}] = undefined;
|
|
57
|
-
} else {
|
|
58
|
-
newResult[${Z}] = ${z}.value;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
`)}h.write("payload.value = newResult;"),h.write("return payload;");const ie=h.compile();return(j,z)=>ie(_,j,z)};let i;const s=de,a=!$e.jitless,f=a&&mn.value,d=t.catchall;let g;e._zod.parse=(_,h)=>{g??(g=r.value);const v=_.value;return s(v)?a&&f&&h?.async===!1&&h.jitless!==!0?(i||(i=o(t.shape)),_=i(_,h),d?zt([],v,_,h,g,e):_):n(_,h):(_.issues.push({expected:"object",code:"invalid_type",input:v,inst:e}),_)}});function Ke(e,t,n,r){for(const i of e)if(i.issues.length===0)return t.value=i.value,t;const o=e.filter(i=>!X(i));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(i=>i.issues.map(s=>V(s,r,W())))}),t)}const Xr=u("$ZodUnion",(e,t)=>{E.init(e,t),w(e._zod,"optin",()=>t.options.some(r=>r._zod.optin==="optional")?"optional":void 0),w(e._zod,"optout",()=>t.options.some(r=>r._zod.optout==="optional")?"optional":void 0),w(e._zod,"values",()=>{if(t.options.every(r=>r._zod.values))return new Set(t.options.flatMap(r=>Array.from(r._zod.values)))}),w(e._zod,"pattern",()=>{if(t.options.every(r=>r._zod.pattern)){const r=t.options.map(o=>o._zod.pattern);return new RegExp(`^(${r.map(o=>Oe(o.source)).join("|")})$`)}});const n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,o)=>{if(n)return n(r,o);let i=!1;const s=[];for(const a of t.options){const c=a._zod.run({value:r.value,issues:[]},o);if(c instanceof Promise)s.push(c),i=!0;else{if(c.issues.length===0)return c;s.push(c)}}return i?Promise.all(s).then(a=>Ke(a,r,e,o)):Ke(s,r,e,o)}}),Hr=u("$ZodIntersection",(e,t)=>{E.init(e,t),e._zod.parse=(n,r)=>{const o=n.value,i=t.left._zod.run({value:o,issues:[]},r),s=t.right._zod.run({value:o,issues:[]},r);return i instanceof Promise||s instanceof Promise?Promise.all([i,s]).then(([c,f])=>qe(n,c,f)):qe(n,i,s)}});function be(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(oe(e)&&oe(t)){const n=Object.keys(t),r=Object.keys(e).filter(i=>n.indexOf(i)!==-1),o={...e,...t};for(const i of r){const s=be(e[i],t[i]);if(!s.valid)return{valid:!1,mergeErrorPath:[i,...s.mergeErrorPath]};o[i]=s.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;r<e.length;r++){const o=e[r],i=t[r],s=be(o,i);if(!s.valid)return{valid:!1,mergeErrorPath:[r,...s.mergeErrorPath]};n.push(s.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function qe(e,t,n){const r=new Map;let o;for(const a of t.issues)if(a.code==="unrecognized_keys"){o??(o=a);for(const c of a.keys)r.has(c)||r.set(c,{}),r.get(c).l=!0}else e.issues.push(a);for(const a of n.issues)if(a.code==="unrecognized_keys")for(const c of a.keys)r.has(c)||r.set(c,{}),r.get(c).r=!0;else e.issues.push(a);const i=[...r].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(i.length&&o&&e.issues.push({...o,keys:i}),X(e))return e;const s=be(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}const Yr=u("$ZodEnum",(e,t)=>{E.init(e,t);const n=ut(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=new RegExp(`^(${n.filter(o=>_n.has(typeof o)).map(o=>typeof o=="string"?Y(o):o.toString()).join("|")})$`),e._zod.parse=(o,i)=>{const s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:n,input:s,inst:e}),o}}),Qr=u("$ZodLiteral",(e,t)=>{if(E.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");const n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map(r=>typeof r=="string"?Y(r):r?Y(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,o)=>{const i=r.value;return n.has(i)||r.issues.push({code:"invalid_value",values:t.values,input:i,inst:e}),r}}),eo=u("$ZodTransform",(e,t)=>{E.init(e,t),e._zod.optin="optional",e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new ct(e.constructor.name);const o=t.transform(n.value,n);if(r.async)return(o instanceof Promise?o:Promise.resolve(o)).then(s=>(n.value=s,n.fallback=!0,n));if(o instanceof Promise)throw new H;return n.value=o,n.fallback=!0,n}});function Ge(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}const bt=u("$ZodOptional",(e,t)=>{E.init(e,t),e._zod.optin="optional",e._zod.optout="optional",w(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),w(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${Oe(n.source)})?$`):void 0}),e._zod.parse=(n,r)=>{if(t.innerType._zod.optin==="optional"){const o=n.value,i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(s=>Ge(s,o)):Ge(i,o)}return n.value===void 0?n:t.innerType._zod.run(n,r)}}),to=u("$ZodExactOptional",(e,t)=>{bt.init(e,t),w(e._zod,"values",()=>t.innerType._zod.values),w(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(n,r)=>t.innerType._zod.run(n,r)}),no=u("$ZodNullable",(e,t)=>{E.init(e,t),w(e._zod,"optin",()=>t.innerType._zod.optin),w(e._zod,"optout",()=>t.innerType._zod.optout),w(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${Oe(n.source)}|null)$`):void 0}),w(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,r)=>n.value===null?n:t.innerType._zod.run(n,r)}),ro=u("$ZodDefault",(e,t)=>{E.init(e,t),e._zod.optin="optional",w(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)return n.value=t.defaultValue,n;const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(i=>Xe(i,t)):Xe(o,t)}});function Xe(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const oo=u("$ZodPrefault",(e,t)=>{E.init(e,t),e._zod.optin="optional",w(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>(r.direction==="backward"||n.value===void 0&&(n.value=t.defaultValue),t.innerType._zod.run(n,r))}),so=u("$ZodNonOptional",(e,t)=>{E.init(e,t),w(e._zod,"values",()=>{const n=t.innerType._zod.values;return n?new Set([...n].filter(r=>r!==void 0)):void 0}),e._zod.parse=(n,r)=>{const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(i=>He(i,e)):He(o,e)}});function He(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const io=u("$ZodCatch",(e,t)=>{E.init(e,t),e._zod.optin="optional",w(e._zod,"optout",()=>t.innerType._zod.optout),w(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(i=>(n.value=i.value,i.issues.length&&(n.value=t.catchValue({...n,error:{issues:i.issues.map(s=>V(s,r,W()))},input:n.value}),n.issues=[],n.fallback=!0),n)):(n.value=o.value,o.issues.length&&(n.value=t.catchValue({...n,error:{issues:o.issues.map(i=>V(i,r,W()))},input:n.value}),n.issues=[],n.fallback=!0),n)}}),ao=u("$ZodPipe",(e,t)=>{E.init(e,t),w(e._zod,"values",()=>t.in._zod.values),w(e._zod,"optin",()=>t.in._zod.optin),w(e._zod,"optout",()=>t.out._zod.optout),w(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,r)=>{if(r.direction==="backward"){const i=t.out._zod.run(n,r);return i instanceof Promise?i.then(s=>fe(s,t.in,r)):fe(i,t.in,r)}const o=t.in._zod.run(n,r);return o instanceof Promise?o.then(i=>fe(i,t.out,r)):fe(o,t.out,r)}});function fe(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}const co=u("$ZodReadonly",(e,t)=>{E.init(e,t),w(e._zod,"propValues",()=>t.innerType._zod.propValues),w(e._zod,"values",()=>t.innerType._zod.values),w(e._zod,"optin",()=>t.innerType?._zod?.optin),w(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(Ye):Ye(o)}});function Ye(e){return e.value=Object.freeze(e.value),e}const uo=u("$ZodCustom",(e,t)=>{N.init(e,t),E.init(e,t),e._zod.parse=(n,r)=>n,e._zod.check=n=>{const r=n.value,o=t.fn(r);if(o instanceof Promise)return o.then(i=>Qe(i,n,r,e));Qe(o,n,r,e)}});function Qe(e,t,n,r){if(!e){const o={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),t.issues.push(se(o))}}var et;class fo{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...n){const r=n[0];return this._map.set(t,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const n=this._map.get(t);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(t),this}get(t){const n=t._zod.parent;if(n){const r={...this.get(n)??{}};delete r.id;const o={...r,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function lo(){return new fo}(et=globalThis).__zod_globalRegistry??(et.__zod_globalRegistry=lo());const ne=globalThis.__zod_globalRegistry;function po(e,t){return new e({type:"string",...m(t)})}function ho(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...m(t)})}function tt(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...m(t)})}function mo(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...m(t)})}function _o(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...m(t)})}function go(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...m(t)})}function vo(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...m(t)})}function yo(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...m(t)})}function wo(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...m(t)})}function zo(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...m(t)})}function bo(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...m(t)})}function ko(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...m(t)})}function $o(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...m(t)})}function Zo(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...m(t)})}function So(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...m(t)})}function Oo(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...m(t)})}function Eo(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...m(t)})}function Po(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...m(t)})}function Io(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...m(t)})}function To(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...m(t)})}function jo(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...m(t)})}function Ao(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...m(t)})}function Ro(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...m(t)})}function Co(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...m(t)})}function Do(e,t){return new e({type:"string",format:"date",check:"string_format",...m(t)})}function No(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...m(t)})}function Uo(e,t){return new e({type:"string",format:"duration",check:"string_format",...m(t)})}function Fo(e){return new e({type:"unknown"})}function Jo(e,t){return new e({type:"never",...m(t)})}function kt(e,t){return new cr({check:"max_length",...m(t),maximum:e})}function he(e,t){return new ur({check:"min_length",...m(t),minimum:e})}function $t(e,t){return new fr({check:"length_equals",...m(t),length:e})}function Lo(e,t){return new lr({check:"string_format",format:"regex",...m(t),pattern:e})}function xo(e){return new dr({check:"string_format",format:"lowercase",...m(e)})}function Mo(e){return new pr({check:"string_format",format:"uppercase",...m(e)})}function Wo(e,t){return new hr({check:"string_format",format:"includes",...m(t),includes:e})}function Vo(e,t){return new mr({check:"string_format",format:"starts_with",...m(t),prefix:e})}function Bo(e,t){return new _r({check:"string_format",format:"ends_with",...m(t),suffix:e})}function Q(e){return new gr({check:"overwrite",tx:e})}function Ko(e){return Q(t=>t.normalize(e))}function qo(){return Q(e=>e.trim())}function Go(){return Q(e=>e.toLowerCase())}function Xo(){return Q(e=>e.toUpperCase())}function Ho(){return Q(e=>hn(e))}function Yo(e,t,n){return new e({type:"array",element:t,...m(n)})}function Qo(e,t,n){return new e({type:"custom",check:"custom",fn:t,...m(n)})}function es(e,t){const n=ts(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(se(o,r.value,n._zod.def));else{const i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=r.value),i.inst??(i.inst=n),i.continue??(i.continue=!n._zod.def.abort),r.issues.push(se(i))}},e(r.value,r)),t);return n}function ts(e,t){const n=new N({check:"custom",...m(t)});return n._zod.check=e,n}function Zt(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ne,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function I(e,t,n={path:[],schemaPath:[]}){var r;const o=e._zod.def,i=t.seen.get(e);if(i)return i.count++,n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema;const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const a=e._zod.toJSONSchema?.();if(a)s.schema=a;else{const d={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,d);else{const _=s.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,_,d)}const g=e._zod.parent;g&&(s.ref||(s.ref=g),I(g,t,d),t.seen.get(g).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(s.schema,c),t.io==="input"&&T(e)&&(delete s.schema.examples,delete s.schema.default),t.io==="input"&&"_prefault"in s.schema&&((r=s.schema).default??(r.default=s.schema._prefault)),delete s.schema._prefault,t.seen.get(e).schema}function St(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const s of e.seen.entries()){const a=e.metadataRegistry.get(s[0])?.id;if(a){const c=r.get(a);if(c&&c!==s[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(a,s[0])}}const o=s=>{const a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const g=e.external.registry.get(s[0])?.id,_=e.external.uri??(v=>v);if(g)return{ref:_(g)};const h=s[1].defId??s[1].schema.id??`schema${e.counter++}`;return s[1].defId=h,{defId:h,ref:`${_("__shared")}#/${a}/${h}`}}if(s[1]===n)return{ref:"#"};const f=`#/${a}/`,d=s[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:f+d}},i=s=>{if(s[1].schema.$ref)return;const a=s[1],{ref:c,defId:f}=o(s);a.def={...a.schema},f&&(a.defId=f);const d=a.schema;for(const g in d)delete d[g];d.$ref=c};if(e.cycles==="throw")for(const s of e.seen.entries()){const a=s[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
63
|
-
|
|
64
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const s of e.seen.entries()){const a=s[1];if(t===s[0]){i(s);continue}if(e.external){const f=e.external.registry.get(s[0])?.id;if(t!==s[0]&&f){i(s);continue}}if(e.metadataRegistry.get(s[0])?.id){i(s);continue}if(a.cycle){i(s);continue}if(a.count>1&&e.reused==="ref"){i(s);continue}}}function Ot(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=a=>{const c=e.seen.get(a);if(c.ref===null)return;const f=c.def??c.schema,d={...f},g=c.ref;if(c.ref=null,g){r(g);const h=e.seen.get(g),v=h.schema;if(v.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(f.allOf=f.allOf??[],f.allOf.push(v)):Object.assign(f,v),Object.assign(f,d),a._zod.parent===g)for(const k in f)k==="$ref"||k==="allOf"||k in d||delete f[k];if(v.$ref&&h.def)for(const k in f)k==="$ref"||k==="allOf"||k in h.def&&JSON.stringify(f[k])===JSON.stringify(h.def[k])&&delete f[k]}const _=a._zod.parent;if(_&&_!==g){r(_);const h=e.seen.get(_);if(h?.schema.$ref&&(f.$ref=h.schema.$ref,h.def))for(const v in f)v==="$ref"||v==="allOf"||v in h.def&&JSON.stringify(f[v])===JSON.stringify(h.def[v])&&delete f[v]}e.override({zodSchema:a,jsonSchema:f,path:c.path??[]})};for(const a of[...e.seen.entries()].reverse())r(a[0]);const o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const a=e.external.registry.get(t)?.id;if(!a)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(a)}Object.assign(o,n.def??n.schema);const i=e.metadataRegistry.get(t)?.id;i!==void 0&&o.id===i&&delete o.id;const s=e.external?.defs??{};for(const a of e.seen.entries()){const c=a[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,s[c.defId]=c.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{const a=JSON.parse(JSON.stringify(o));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:me(t,"input",e.processors),output:me(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function T(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return T(r.element,n);if(r.type==="set")return T(r.valueType,n);if(r.type==="lazy")return T(r.getter(),n);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return T(r.innerType,n);if(r.type==="intersection")return T(r.left,n)||T(r.right,n);if(r.type==="record"||r.type==="map")return T(r.keyType,n)||T(r.valueType,n);if(r.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:T(r.in,n)||T(r.out,n);if(r.type==="object"){for(const o in r.shape)if(T(r.shape[o],n))return!0;return!1}if(r.type==="union"){for(const o of r.options)if(T(o,n))return!0;return!1}if(r.type==="tuple"){for(const o of r.items)if(T(o,n))return!0;return!!(r.rest&&T(r.rest,n))}return!1}const ns=(e,t={})=>n=>{const r=Zt({...n,processors:t});return I(e,r),St(r,e),Ot(r,e)},me=(e,t,n={})=>r=>{const{libraryOptions:o,target:i}=r??{},s=Zt({...o??{},target:i,io:t,processors:n});return I(e,s),St(s,e),Ot(s,e)},rs={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},os=(e,t,n,r)=>{const o=n;o.type="string";const{minimum:i,maximum:s,format:a,patterns:c,contentEncoding:f}=e._zod.bag;if(typeof i=="number"&&(o.minLength=i),typeof s=="number"&&(o.maxLength=s),a&&(o.format=rs[a]??a,o.format===""&&delete o.format,a==="time"&&delete o.format),f&&(o.contentEncoding=f),c&&c.size>0){const d=[...c];d.length===1?o.pattern=d[0].source:d.length>1&&(o.allOf=[...d.map(g=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},ss=(e,t,n,r)=>{n.not={}},is=(e,t,n,r)=>{},as=(e,t,n,r)=>{const o=e._zod.def,i=ut(o.entries);i.every(s=>typeof s=="number")&&(n.type="number"),i.every(s=>typeof s=="string")&&(n.type="string"),n.enum=i},cs=(e,t,n,r)=>{const o=e._zod.def,i=[];for(const s of o.values)if(s===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof s=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");i.push(Number(s))}else i.push(s);if(i.length!==0)if(i.length===1){const s=i[0];n.type=s===null?"null":typeof s,t.target==="draft-04"||t.target==="openapi-3.0"?n.enum=[s]:n.const=s}else i.every(s=>typeof s=="number")&&(n.type="number"),i.every(s=>typeof s=="string")&&(n.type="string"),i.every(s=>typeof s=="boolean")&&(n.type="boolean"),i.every(s=>s===null)&&(n.type="null"),n.enum=i},us=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},fs=(e,t,n,r)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},ls=(e,t,n,r)=>{const o=n,i=e._zod.def,{minimum:s,maximum:a}=e._zod.bag;typeof s=="number"&&(o.minItems=s),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=I(i.element,t,{...r,path:[...r.path,"items"]})},ds=(e,t,n,r)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const f in s)o.properties[f]=I(s[f],t,{...r,path:[...r.path,"properties",f]});const a=new Set(Object.keys(s)),c=new Set([...a].filter(f=>{const d=i.shape[f]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));c.size>0&&(o.required=Array.from(c)),i.catchall?._zod.def.type==="never"?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=I(i.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},ps=(e,t,n,r)=>{const o=e._zod.def,i=o.inclusive===!1,s=o.options.map((a,c)=>I(a,t,{...r,path:[...r.path,i?"oneOf":"anyOf",c]}));i?n.oneOf=s:n.anyOf=s},hs=(e,t,n,r)=>{const o=e._zod.def,i=I(o.left,t,{...r,path:[...r.path,"allOf",0]}),s=I(o.right,t,{...r,path:[...r.path,"allOf",1]}),a=f=>"allOf"in f&&Object.keys(f).length===1,c=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];n.allOf=c},ms=(e,t,n,r)=>{const o=e._zod.def,i=I(o.innerType,t,r),s=t.seen.get(e);t.target==="openapi-3.0"?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]},_s=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType},gs=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))},vs=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},ys=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType;let s;try{s=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=s},ws=(e,t,n,r)=>{const o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s=t.io==="input"?i?o.out:o.in:o.out;I(s,t,r);const a=t.seen.get(e);a.ref=s},zs=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType,n.readOnly=!0},Et=(e,t,n,r)=>{const o=e._zod.def;I(o.innerType,t,r);const i=t.seen.get(e);i.ref=o.innerType},bs=u("ZodISODateTime",(e,t)=>{Tr.init(e,t),$.init(e,t)});function ks(e){return Co(bs,e)}const $s=u("ZodISODate",(e,t)=>{jr.init(e,t),$.init(e,t)});function Zs(e){return Do($s,e)}const Ss=u("ZodISOTime",(e,t)=>{Ar.init(e,t),$.init(e,t)});function Os(e){return No(Ss,e)}const Es=u("ZodISODuration",(e,t)=>{Rr.init(e,t),$.init(e,t)});function Ps(e){return Uo(Es,e)}const Is=(e,t)=>{ht.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>On(e,n)},flatten:{value:n=>Sn(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,ze,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,ze,2)}},isEmpty:{get(){return e.issues.length===0}}})},A=u("ZodError",Is,{Parent:Error}),Ts=Pe(A),js=Ie(A),As=_e(A),Rs=ge(A),Cs=In(A),Ds=Tn(A),Ns=jn(A),Us=An(A),Fs=Rn(A),Js=Cn(A),Ls=Dn(A),xs=Nn(A),nt=new WeakMap;function ye(e,t,n){const r=Object.getPrototypeOf(e);let o=nt.get(r);if(o||(o=new Set,nt.set(r,o)),!o.has(t)){o.add(t);for(const i in n){const s=n[i];Object.defineProperty(r,i,{configurable:!0,enumerable:!1,get(){const a=s.bind(this);return Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:a}),a},set(a){Object.defineProperty(this,i,{configurable:!0,writable:!0,enumerable:!0,value:a})}})}}}const P=u("ZodType",(e,t)=>(E.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:me(e,"input"),output:me(e,"output")}}),e.toJSONSchema=ns(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(n,r)=>Ts(e,n,r,{callee:e.parse}),e.safeParse=(n,r)=>As(e,n,r),e.parseAsync=async(n,r)=>js(e,n,r,{callee:e.parseAsync}),e.safeParseAsync=async(n,r)=>Rs(e,n,r),e.spa=e.safeParseAsync,e.encode=(n,r)=>Cs(e,n,r),e.decode=(n,r)=>Ds(e,n,r),e.encodeAsync=async(n,r)=>Ns(e,n,r),e.decodeAsync=async(n,r)=>Us(e,n,r),e.safeEncode=(n,r)=>Fs(e,n,r),e.safeDecode=(n,r)=>Js(e,n,r),e.safeEncodeAsync=async(n,r)=>Ls(e,n,r),e.safeDecodeAsync=async(n,r)=>xs(e,n,r),ye(e,"ZodType",{check(...n){const r=this.def;return this.clone(x(r,{checks:[...r.checks??[],...n.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0})},with(...n){return this.check(...n)},clone(n,r){return M(this,n,r)},brand(){return this},register(n,r){return n.add(this,r),this},refine(n,r){return this.check(Ci(n,r))},superRefine(n,r){return this.check(Di(n,r))},overwrite(n){return this.check(Q(n))},optional(){return st(this)},exactOptional(){return bi(this)},nullable(){return it(this)},nullish(){return st(it(this))},nonoptional(n){return Ei(this,n)},array(){return li(this)},or(n){return hi([this,n])},and(n){return _i(this,n)},transform(n){return at(this,wi(n))},default(n){return Zi(this,n)},prefault(n){return Oi(this,n)},catch(n){return Ii(this,n)},pipe(n){return at(this,n)},readonly(){return Ai(this)},describe(n){const r=this.clone();return ne.add(r,{description:n}),r},meta(...n){if(n.length===0)return ne.get(this);const r=this.clone();return ne.add(r,n[0]),r},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(n){return n(this)}}),Object.defineProperty(e,"description",{get(){return ne.get(e)?.description},configurable:!0}),e)),Pt=u("_ZodString",(e,t)=>{Te.init(e,t),P.init(e,t),e._zod.processJSONSchema=(r,o,i)=>os(e,r,o);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,ye(e,"_ZodString",{regex(...r){return this.check(Lo(...r))},includes(...r){return this.check(Wo(...r))},startsWith(...r){return this.check(Vo(...r))},endsWith(...r){return this.check(Bo(...r))},min(...r){return this.check(he(...r))},max(...r){return this.check(kt(...r))},length(...r){return this.check($t(...r))},nonempty(...r){return this.check(he(1,...r))},lowercase(r){return this.check(xo(r))},uppercase(r){return this.check(Mo(r))},trim(){return this.check(qo())},normalize(...r){return this.check(Ko(...r))},toLowerCase(){return this.check(Go())},toUpperCase(){return this.check(Xo())},slugify(){return this.check(Ho())}})}),Ms=u("ZodString",(e,t)=>{Te.init(e,t),Pt.init(e,t),e.email=n=>e.check(ho(Ws,n)),e.url=n=>e.check(yo(Vs,n)),e.jwt=n=>e.check(Ro(ii,n)),e.emoji=n=>e.check(wo(Bs,n)),e.guid=n=>e.check(tt(rt,n)),e.uuid=n=>e.check(mo(le,n)),e.uuidv4=n=>e.check(_o(le,n)),e.uuidv6=n=>e.check(go(le,n)),e.uuidv7=n=>e.check(vo(le,n)),e.nanoid=n=>e.check(zo(Ks,n)),e.guid=n=>e.check(tt(rt,n)),e.cuid=n=>e.check(bo(qs,n)),e.cuid2=n=>e.check(ko(Gs,n)),e.ulid=n=>e.check($o(Xs,n)),e.base64=n=>e.check(To(ri,n)),e.base64url=n=>e.check(jo(oi,n)),e.xid=n=>e.check(Zo(Hs,n)),e.ksuid=n=>e.check(So(Ys,n)),e.ipv4=n=>e.check(Oo(Qs,n)),e.ipv6=n=>e.check(Eo(ei,n)),e.cidrv4=n=>e.check(Po(ti,n)),e.cidrv6=n=>e.check(Io(ni,n)),e.e164=n=>e.check(Ao(si,n)),e.datetime=n=>e.check(ks(n)),e.date=n=>e.check(Zs(n)),e.time=n=>e.check(Os(n)),e.duration=n=>e.check(Ps(n))});function Fi(e){return po(Ms,e)}const $=u("ZodStringFormat",(e,t)=>{b.init(e,t),Pt.init(e,t)}),Ws=u("ZodEmail",(e,t)=>{br.init(e,t),$.init(e,t)}),rt=u("ZodGUID",(e,t)=>{wr.init(e,t),$.init(e,t)}),le=u("ZodUUID",(e,t)=>{zr.init(e,t),$.init(e,t)}),Vs=u("ZodURL",(e,t)=>{kr.init(e,t),$.init(e,t)}),Bs=u("ZodEmoji",(e,t)=>{$r.init(e,t),$.init(e,t)}),Ks=u("ZodNanoID",(e,t)=>{Zr.init(e,t),$.init(e,t)}),qs=u("ZodCUID",(e,t)=>{Sr.init(e,t),$.init(e,t)}),Gs=u("ZodCUID2",(e,t)=>{Or.init(e,t),$.init(e,t)}),Xs=u("ZodULID",(e,t)=>{Er.init(e,t),$.init(e,t)}),Hs=u("ZodXID",(e,t)=>{Pr.init(e,t),$.init(e,t)}),Ys=u("ZodKSUID",(e,t)=>{Ir.init(e,t),$.init(e,t)}),Qs=u("ZodIPv4",(e,t)=>{Cr.init(e,t),$.init(e,t)}),ei=u("ZodIPv6",(e,t)=>{Dr.init(e,t),$.init(e,t)}),ti=u("ZodCIDRv4",(e,t)=>{Nr.init(e,t),$.init(e,t)}),ni=u("ZodCIDRv6",(e,t)=>{Ur.init(e,t),$.init(e,t)}),ri=u("ZodBase64",(e,t)=>{Fr.init(e,t),$.init(e,t)}),oi=u("ZodBase64URL",(e,t)=>{Lr.init(e,t),$.init(e,t)}),si=u("ZodE164",(e,t)=>{xr.init(e,t),$.init(e,t)}),ii=u("ZodJWT",(e,t)=>{Wr.init(e,t),$.init(e,t)}),ai=u("ZodUnknown",(e,t)=>{Vr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>is()});function ot(){return Fo(ai)}const ci=u("ZodNever",(e,t)=>{Br.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ss(e,n,r)});function ui(e){return Jo(ci,e)}const fi=u("ZodArray",(e,t)=>{Kr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ls(e,n,r,o),e.element=t.element,ye(e,"ZodArray",{min(n,r){return this.check(he(n,r))},nonempty(n){return this.check(he(1,n))},max(n,r){return this.check(kt(n,r))},length(n,r){return this.check($t(n,r))},unwrap(){return this.element}})});function li(e,t){return Yo(fi,e,t)}const di=u("ZodObject",(e,t)=>{Gr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ds(e,n,r,o),w(e,"shape",()=>t.shape),ye(e,"ZodObject",{keyof(){return gi(Object.keys(this._zod.def.shape))},catchall(n){return this.clone({...this._zod.def,catchall:n})},passthrough(){return this.clone({...this._zod.def,catchall:ot()})},loose(){return this.clone({...this._zod.def,catchall:ot()})},strict(){return this.clone({...this._zod.def,catchall:ui()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(n){return wn(this,n)},safeExtend(n){return zn(this,n)},merge(n){return bn(this,n)},pick(n){return vn(this,n)},omit(n){return yn(this,n)},partial(...n){return kn(It,this,n[0])},required(...n){return $n(Tt,this,n[0])}})});function Ji(e,t){const n={type:"object",shape:e??{},...m(t)};return new di(n)}const pi=u("ZodUnion",(e,t)=>{Xr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ps(e,n,r,o),e.options=t.options});function hi(e,t){return new pi({type:"union",options:e,...m(t)})}const mi=u("ZodIntersection",(e,t)=>{Hr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>hs(e,n,r,o)});function _i(e,t){return new mi({type:"intersection",left:e,right:t})}const ke=u("ZodEnum",(e,t)=>{Yr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(r,o,i)=>as(e,r,o),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(r,o)=>{const i={};for(const s of r)if(n.has(s))i[s]=t.entries[s];else throw new Error(`Key ${s} not found in enum`);return new ke({...t,checks:[],...m(o),entries:i})},e.exclude=(r,o)=>{const i={...t.entries};for(const s of r)if(n.has(s))delete i[s];else throw new Error(`Key ${s} not found in enum`);return new ke({...t,checks:[],...m(o),entries:i})}});function gi(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new ke({type:"enum",entries:n,...m(t)})}const vi=u("ZodLiteral",(e,t)=>{Qr.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>cs(e,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Li(e,t){return new vi({type:"literal",values:Array.isArray(e)?e:[e],...m(t)})}const yi=u("ZodTransform",(e,t)=>{eo.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>fs(e,n),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new ct(e.constructor.name);n.addIssue=i=>{if(typeof i=="string")n.issues.push(se(i,n.value,t));else{const s=i;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=n.value),s.inst??(s.inst=e),n.issues.push(se(s))}};const o=t.transform(n.value,n);return o instanceof Promise?o.then(i=>(n.value=i,n.fallback=!0,n)):(n.value=o,n.fallback=!0,n)}});function wi(e){return new yi({type:"transform",transform:e})}const It=u("ZodOptional",(e,t)=>{bt.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Et(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function st(e){return new It({type:"optional",innerType:e})}const zi=u("ZodExactOptional",(e,t)=>{to.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Et(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function bi(e){return new zi({type:"optional",innerType:e})}const ki=u("ZodNullable",(e,t)=>{no.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ms(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function it(e){return new ki({type:"nullable",innerType:e})}const $i=u("ZodDefault",(e,t)=>{ro.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>gs(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Zi(e,t){return new $i({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Si=u("ZodPrefault",(e,t)=>{oo.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>vs(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function Oi(e,t){return new Si({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Tt=u("ZodNonOptional",(e,t)=>{so.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>_s(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function Ei(e,t){return new Tt({type:"nonoptional",innerType:e,...m(t)})}const Pi=u("ZodCatch",(e,t)=>{io.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ys(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Ii(e,t){return new Pi({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Ti=u("ZodPipe",(e,t)=>{ao.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ws(e,n,r,o),e.in=t.in,e.out=t.out});function at(e,t){return new Ti({type:"pipe",in:e,out:t})}const ji=u("ZodReadonly",(e,t)=>{co.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>zs(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function Ai(e){return new ji({type:"readonly",innerType:e})}const Ri=u("ZodCustom",(e,t)=>{uo.init(e,t),P.init(e,t),e._zod.processJSONSchema=(n,r,o)=>us(e,n)});function Ci(e,t={}){return Qo(Ri,e,t)}function Di(e,t){return es(e,t)}export{Ui as _,gi as a,Li as l,Ji as o,Fi as s,hi as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./NQikbhmK.js";function n(){const t=o();return String(t.public.desktop)==="true"}export{n as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as o}from"./NQikbhmK.js";function t(){const e=o()?.vnode?.scopeId;return e?{[e]:""}:{}}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as R}from"./279D2RYp.js";import{_ as V}from"./BqV0l12c.js";import{_ as O,a as q}from"./CHEFCN8Q.js";import{_ as z}from"./CK_2LZBS.js";import{d as A,u as L,a as G,b as J,w as T,e as K,r as g,f as M,g as i,h as f,o as Q,i as l,j as r,k as o,l as W,_ as X,m as b,t as Y}from"./NQikbhmK.js";import{o as Z,s as u,_ as tt}from"./C5iG7O4O.js";import{_ as ot}from"./eptP4pGv.js";import{u as h}from"./CpjgB2aY.js";import"./YVN7WG7q.js";import"./B9WhzpKO.js";import"./CYsTqbBS.js";import"./eaVkJRSa.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./Bn0YQDyy.js";import"./DcmZRa_F.js";import"./DiZyJYez.js";import"./BeLWlVK0.js";import"./g26aVPxc.js";import"./BYDaY0Z7.js";import"./FUXhyidq.js";import"./CDk0q2hV.js";const st={class:"p-4 space-y-4"},et={class:"text-sm text-gray-600 mt-1"},at={class:"font-medium"},nt={class:"flex justify-end gap-2 pt-2"},Ct=A({__name:"edit",async setup(it){let n,d;const $=L(),v=G(),j=J(),c=$.params.id,{data:e}=([n,d]=T(()=>h(`/api/projects/${c}`,"$HHkdnHL3hB")),n=await n,d(),n),{data:y,refresh:x}=([n,d]=T(()=>h("/api/tags","$DPtjOd0zOq")),n=await n,d(),n);K(f(()=>({title:`Edit ${e.value?.label||e.value?.name||"Project"} — Piwi Dashboard`})));const I=f(()=>y.value?.tags||[]),U=f(()=>!!e.value?.hasScmToken),s=g({label:e.value?.label||"",description:e.value?.description||"",diagnosisInstructions:e.value?.diagnosisInstructions||"",scmToken:""}),p=g(e.value?.tags||[]),P=Z({label:u().optional(),description:u().optional(),diagnosisInstructions:u().optional(),scmToken:u().optional()}),_=g(!1);async function C(){try{_.value=!0,await $fetch(`/api/projects/${c}`,{method:"PUT",body:{label:s.value.label||null,description:s.value.description||null,diagnosisInstructions:s.value.diagnosisInstructions||null,scmToken:s.value.scmToken||null,tagIds:p.value.map(m=>m.id)}}),j.add({title:"Project updated",description:"Project settings have been saved successfully",color:"success"}),await v.push(`/projects/${c}`)}catch(m){console.error("Error updating project:",m),j.add({title:"Error",description:"Failed to update project",color:"error"})}finally{_.value=!1}}function w(){v.push(`/projects/${c}`)}return(m,t)=>{const B=R,D=V,N=q,E=z,k=X,F=tt,H=ot,S=O;return Q(),M(S,{id:"project-edit"},{header:i(()=>[r(N,null,{leading:i(()=>[r(B),r(D,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:o(e)?.label||o(e)?.name||"Project",to:`/projects/${o(c)}`},{label:"Edit"}]},null,8,["items"])]),_:1})]),body:i(()=>[l("div",st,[r(H,null,{header:i(()=>[t[7]||(t[7]=l("h2",null,"Edit project settings",-1)),l("p",et,[t[6]||(t[6]=b(" Project Name: ",-1)),l("span",at,Y(o(e)?.name),1)]),t[8]||(t[8]=l("p",{class:"text-xs text-gray-500 mt-1"}," Note: The project name is used to match test results from the reporter and cannot be changed. ",-1))]),default:i(()=>[r(F,{schema:o(P),state:o(s),class:"space-y-5",onSubmit:C},{default:i(()=>[r(E,{mode:"edit","has-token":o(U),label:o(s).label,"onUpdate:label":t[0]||(t[0]=a=>o(s).label=a),description:o(s).description,"onUpdate:description":t[1]||(t[1]=a=>o(s).description=a),diagnosisInstructions:o(s).diagnosisInstructions,"onUpdate:diagnosisInstructions":t[2]||(t[2]=a=>o(s).diagnosisInstructions=a),scmToken:o(s).scmToken,"onUpdate:scmToken":t[3]||(t[3]=a=>o(s).scmToken=a),tags:o(p),"onUpdate:tags":t[4]||(t[4]=a=>W(p)?p.value=a:null),"all-tags":o(I),onTagCreated:t[5]||(t[5]=a=>o(x)())},null,8,["has-token","label","description","diagnosisInstructions","scmToken","tags","all-tags"]),l("div",nt,[r(k,{variant:"ghost",color:"neutral",onClick:w},{default:i(()=>[...t[9]||(t[9]=[b(" Cancel ",-1)])]),_:1}),r(k,{type:"submit",icon:"i-lucide-check",loading:o(_)},{default:i(()=>[...t[10]||(t[10]=[b(" Save changes ",-1)])]),_:1},8,["loading"])])]),_:1},8,["schema","state"])]),_:1})])]),_:1})}}});export{Ct as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as j,b as F,w as R,au as T,c as y,j as l,g as r,o as _,i as m,F as $,y as S,k as i,I as U,_ as V,m as u,r as C,L as O}from"./NQikbhmK.js";import{_ as P}from"./B9WhzpKO.js";import{_ as A}from"./DprVVyUQ.js";import{u as B}from"./CpjgB2aY.js";import"./CYsTqbBS.js";import"./C7P1UCO2.js";import"./BjaRappk.js";import"./Bn0YQDyy.js";import"./eptP4pGv.js";const N={class:"space-y-6"},E={class:"grid grid-cols-1 gap-x-4 gap-y-3 sm:grid-cols-2"},L={class:"flex items-center justify-end gap-2"},X=j({__name:"timeout-hygiene",async setup(z){let d,p;const c=F(),{data:s,refresh:f}=([d,p]=R(()=>B("/api/settings/timeout-hygiene","$8Luq-s6QSj")),d=await d,p(),d),o=C(!1),n=O({minRuns:0,factor:0,floorMs:0,safety:0,recommendedFloorMs:0,slowStaleP95Ms:0});T(()=>{s.value&&Object.assign(n,s.value.thresholds)});const g=[{key:"minRuns",label:"Minimum runs",description:"Executions with a duration needed before a test is judged.",min:1,step:1},{key:"factor",label:"Oversize factor (×)",description:"Flag a timeout when it is at least this many times the test’s p95 duration.",min:1,step:.5},{key:"floorMs",label:"Minimum headroom (ms)",description:"Only flag when the timeout − p95 gap is at least this many ms.",min:0,step:1e3},{key:"safety",label:"Recommendation safety (×)",description:"Recommended timeout = p95 × this.",min:1,step:.5},{key:"recommendedFloorMs",label:"Recommendation floor (ms)",description:"Never recommend a timeout below this many ms.",min:0,step:1e3},{key:"slowStaleP95Ms",label:"Stale slow() p95 (ms)",description:"A test.slow() test is stale when its p95 duration stays under this.",min:0,step:1e3}];async function v(){o.value=!0;try{const e=await $fetch("/api/settings/timeout-hygiene",{method:"PUT",body:{thresholds:{...n}}});s.value=e,c.add({title:"Timeout-hygiene thresholds saved",color:"success"}),await f()}catch(e){const a=e&&typeof e=="object"&&"data"in e?e.data?.message:void 0;c.add({title:"Save failed",description:a||"An error occurred",color:"error"})}finally{o.value=!1}}async function b(){o.value=!0;try{const e=await $fetch("/api/settings/timeout-hygiene",{method:"PUT",body:{thresholds:null}});s.value=e,Object.assign(n,e.thresholds),c.add({title:"Reset to defaults",color:"success"}),await f()}catch{c.add({title:"Reset failed",color:"error"})}finally{o.value=!1}}return(e,a)=>{const w=U,k=P,h=V,x=A;return _(),y("div",N,[l(x,{icon:"i-lucide-scissors",title:"Timeout hygiene",help:"settings.timeout-hygiene"},{subtitle:r(()=>[...a[0]||(a[0]=[u(" Tune how timeout opportunities are detected — oversized per-test timeouts and stale ",-1),m("code",null,"test.slow()",-1),u(" marks — surfaced per project (Performance tab) and in Analytics. Opportunities are recomputed when viewed, so changes apply to existing runs immediately. ",-1)])]),footer:r(()=>[m("div",L,[l(h,{variant:"ghost",color:"neutral",disabled:i(o),label:"Reset to defaults",onClick:b},null,8,["disabled"]),l(h,{color:"primary",loading:i(o),icon:"i-lucide-save",onClick:v},{default:r(()=>[...a[1]||(a[1]=[u("Save",-1)])]),_:1},8,["loading"])])]),default:r(()=>[m("div",E,[(_(),y($,null,S(g,t=>l(k,{key:t.key,label:t.label,description:t.description,hint:`default ${i(s)?.defaults[t.key]??""}`},{default:r(()=>[l(w,{modelValue:i(n)[t.key],"onUpdate:modelValue":M=>i(n)[t.key]=M,modelModifiers:{number:!0},type:"number",min:t.min,step:t.step,placeholder:`default ${i(s)?.defaults[t.key]??""}`,class:"w-full"},null,8,["modelValue","onUpdate:modelValue","min","step","placeholder"])]),_:2},1032,["label","description","hint"])),64))])]),_:1})])}}});export{X as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{cd as L,L as m,ce as z,cf as E,h as d,ab as o,cg as i,ch as q}from"./NQikbhmK.js";function A(t){const s=[o(t.method)?.toUpperCase()||"GET",o(t.baseURL)];for(const e of[t.query||t.params]){const a=o(e);if(!a)continue;const n={};for(const[f,c]of Object.entries(a))n[o(f)]=o(c);s.push(n)}if(t.body){const e=o(t.body);if(!e)s.push(i(e));else if(e instanceof ArrayBuffer)s.push(i(Object.fromEntries([...new Uint8Array(e).entries()].map(([a,n])=>[a,n.toString()]))));else if(e instanceof FormData){const a=[];for(const n of e.entries()){const[f,c]=n;a.push([f,c instanceof File?`${c.name}:${c.size}:${c.lastModified}`:c])}s.push(i(a))}else if(q(e))s.push(i(m(e)));else try{s.push(i(e))}catch{console.warn("[useFetch] Failed to hash body",e)}}return s}const _=L({name:"createUseFetch",factory(t={}){function s(e,a,n){const[f={},c]=typeof a=="string"?[{},a]:[a,n],y=typeof t=="function"?t(f):t,{server:b,lazy:F,default:v,transform:g,pick:w,watch:h,immediate:O,getCachedData:$,deep:D,dedupe:U,timeout:k,...r}={...typeof t=="function"?{}:y,...f,...typeof t=="function"?y:{}},u=d(()=>o(e)),j=d(()=>o(r.key)||"$f"+i([c,typeof u.value=="string"?u.value:"",...A(r)]));if(!r.baseURL&&typeof u.value=="string"&&u.value[0]==="/"&&u.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const l=m({...z,...r,cache:typeof r.cache=="boolean"?void 0:r.cache}),p={server:b,lazy:F,default:v,transform:g,pick:w,immediate:O,getCachedData:$,deep:D,dedupe:U,timeout:k,watch:h===!1?[]:[...h||[],l]};return h===!1&&(p._keyTriggersExecute=!1),E(j,(S,{signal:x})=>(r.$fetch||globalThis.$fetch)(u.value,{signal:x,...l}),p)}return s}}),K=_.__nuxt_factory();_.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});export{K as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as As}from"./279D2RYp.js";import{_ as zs}from"./BqV0l12c.js";import{b as je,A as Tt,d as ce,N as Lt,w as be,H as ve,k as e,o as s,f,g as t,j as o,_ as $e,c as r,i as n,m as d,t as i,v as w,F as G,y as oe,p as qe,D as Me,l as W,O as Vt,P as Bt,q as ie,h as L,r as z,J as Us,Q as Kt,n as St,s as we,R as jt,I as Ot,L as Is,u as Ms,a as Fs,e as Es,C as Nt,S as Ps,T as Vs}from"./NQikbhmK.js";import{_ as Bs}from"./B44A4LSJ.js";import{_ as He,a as Ns}from"./C7P1UCO2.js";import{_ as Fe}from"./DS636elg.js";import{_ as qt}from"./B9WhzpKO.js";import{u as Ls}from"./KnfsST6Y.js";import{u as ke}from"./CpjgB2aY.js";import{_ as Ks}from"./BuMC3WjZ.js";import{_ as Os,a as qs}from"./CHEFCN8Q.js";import{_ as Ht}from"./DcmZRa_F.js";import{_ as Qt}from"./ZFiQCMUB.js";import{_ as Ce}from"./DLSrtpsA.js";import{C as Ct,w as Jt,O as lt,a as Gt,_ as Xt,u as Yt}from"./DX-MDGb3.js";import{N as Hs}from"./CGNkHojN.js";import{_ as Qs}from"./BX9ZXe98.js";import{_ as Js}from"./Jo8kRmHz.js";import{_ as Gs}from"./tvgqrYDd.js";import{_ as Wt}from"./DP8hfJ9h.js";import{_ as Xs}from"./BPQoBGg5.js";import{_ as Ys}from"./BSIxhGsh.js";import{_ as Ws}from"./CV9-fTmY.js";import{_ as Zs}from"./BccXfBfI.js";import{_ as Ee}from"./C9_jrmk9.js";import{_ as Qe}from"./eptP4pGv.js";import{_ as wt}from"./DprVVyUQ.js";import{_ as Je}from"./DiOLdHBC.js";import{f as Rt,b as en,c as tn,d as sn,i as V,t as nn,g as Zt,p as rt,j as nt}from"./CDk0q2hV.js";import{_ as es}from"./nv9-6vBK.js";import{_ as it}from"./BPRffDuo.js";import{_ as ct}from"./BxCKKeYs.js";import{_ as an}from"./DiZyJYez.js";import{_ as on}from"./fVcG504p.js";import{_ as ln}from"./ybDYeNxd.js";import{_ as rn,a as cn}from"./Ar3IelOY.js";import{_ as un}from"./BMvCSA6h.js";import{_ as dn}from"./Dnpkl-1q.js";import{_ as mn}from"./eaVkJRSa.js";import{_ as Dt}from"./B3HO8kuh.js";import{M as pn,D as kt,g as $t}from"./D7W_4Sqc.js";import{_ as gn}from"./cHAnlQbv.js";import{u as fn}from"./ClOqkAcc.js";import{u as _n}from"./BCMuIgP5.js";import"./YVN7WG7q.js";import"./BjaRappk.js";import"./Bn0YQDyy.js";import"./g26aVPxc.js";import"./CYsTqbBS.js";import"./CNFYDQmj.js";import"./BYDaY0Z7.js";import"./D-c8ZSws.js";import"./FUXhyidq.js";import"./CylWPruw.js";import"./BeLWlVK0.js";import"./Bti38m-M.js";import"./D0HNloZ9.js";import"./C-elpgyr.js";import"./DEFEpYzn.js";import"./IvQlbZk6.js";const vn=["run.finished","run.failed","run.failed.default_branch","cluster.new","flakiness.spike","perf.regression","diagnosis.completed"],at=new Map,ot=new Map;function yn(U,S){const k=[{event:"run.failed",scenario:{title:`Test run failed — ${U}`,description:"3 of 12 tests failed on main — checkout › applies discount code +2 more",icon:"i-lucide-circle-x",color:"error"}},{event:"run.failed.default_branch",scenario:{title:`Test run failed on main — ${U}`,description:"2 of 12 tests failed · main — auth › logs in with valid credentials +1 more",icon:"i-lucide-circle-x",color:"error"}},{event:"cluster.new",scenario:{title:`New failure cluster — ${U}`,description:"TimeoutError: locator.click: Timeout 30000ms exceeded",icon:"i-lucide-layers",color:"warning"}},{event:"flakiness.spike",scenario:{title:`Flakiness spike — ${U}`,description:"3 tests became flaky (8.3% rate)",icon:"i-lucide-shuffle",color:"warning"}},{event:"perf.regression",scenario:{title:`Performance regression — ${U}`,description:"p90 duration increased by 42% vs last week",icon:"i-lucide-trending-down",color:"warning"}},{event:"run.finished",scenario:{title:`Test run recovered — ${U}`,description:"All 12 tests passed on main",icon:"i-lucide-circle-check",color:"success"}},{event:"diagnosis.completed",scenario:{title:`Diagnosis complete — ${U}`,description:"Root cause: test bug — confidence: high",icon:"i-lucide-sparkles",color:"info"}}],D=k.filter(b=>S.length===0||S.includes(b.event)).map(b=>b.scenario);return D.length===0?[k[0].scenario,k[k.length-1].scenario]:D}function hn(){if(!Tt().public.demoMode)return null;const S=je();function k(b,p,c){D(b);const M=yn(p,c);ot.set(b,0);function B(){const A=(ot.get(b)??0)%M.length;ot.set(b,A+1);const y=M[A];S.add({title:y.title,description:y.description,icon:y.icon,color:y.color,duration:7e3});const h=25e3+Math.random()*1e4;at.set(b,setTimeout(B,h))}at.set(b,setTimeout(B,8e3))}function D(b){const p=at.get(b);p!==void 0&&(clearTimeout(p),at.delete(b)),ot.delete(b)}return{scheduleFor:k,cancelFor:D}}const xn={key:0,class:"p-3 space-y-3"},bn={key:0,class:"text-xs text-gray-500"},kn={key:1,class:"text-xs text-gray-500"},$n={key:2,class:"text-xs text-gray-500"},Cn={class:"space-y-1"},Tn=["checked","onChange"],Sn={key:1,class:"p-3 space-y-3"},jn={class:"flex items-center justify-between"},wn={class:"font-medium text-sm inline-flex items-center gap-1"},Rn={key:0,class:"text-xs text-muted bg-primary/5 rounded px-2 py-1.5"},Dn={key:1,class:"text-xs text-muted text-center py-2"},An={key:2,class:"space-y-1.5"},zn={key:0,class:"space-y-2 rounded border border-primary/30 bg-primary/5 px-2 py-2"},Un={class:"space-y-1"},In=["value"],Mn={class:"flex gap-1.5 justify-end"},Fn={class:"flex-1 font-medium truncate"},En={key:3,class:"text-xs text-muted text-center py-1"},Pn={key:4,class:"space-y-2 border-t border-default pt-2"},Vn={class:"space-y-1"},Bn=["value"],Nn={class:"flex gap-1.5 justify-end"},Ln=ce({__name:"SubscribeBell",props:{projectId:{},projectLabel:{}},async setup(U){let S,k;const D=U,b=Tt(),p=b.public.demoMode,c=L(()=>b.public.authEnabled),{authState:M}=Lt(),B=L(()=>M.value.authenticated),A=je(),y=z(!1),h=p?hn():null,x=!c.value&&!p?Ls():null,R=z("default"),m=L(()=>"Notification"in window);"Notification"in window&&(R.value=Notification.permission);const _=L(()=>x?.getProject(D.projectId).events??[]),F=L(()=>x?.isSubscribed(D.projectId)??!1);async function K(){!m.value||R.value!=="default"||(R.value=await Notification.requestPermission())}function T(N){return _.value.includes(N)}function g(N){x?.toggleEvent(D.projectId,N)}const $=p||c.value&&B.value,Q=p?{server:!1}:{},{data:j,refresh:H}=([S,k]=be(()=>ke(`/api/subscriptions?projectId=${D.projectId}`,{immediate:$,...Q},"$5zp4moJ-7_")),S=await S,k(),S),P=L(()=>j.value?.subscriptions??[]),ue=L(()=>P.value.length>0),{data:ge}=([S,k]=be(()=>ke("/api/channels",{immediate:$,...Q},"$vFApQ6eA2X")),S=await S,k(),S),v=L(()=>ge.value?.channels??[]),C=z(!1),q=z(void 0),de=z(["run.failed"]),Re=z(!1),me=z(null),ye=z(void 0),pe=z([]),Pe=z(!1);function ee(N){me.value=N,ye.value=N.channel.id,pe.value=[...N.events]}function ut(){me.value=null}async function dt(){if(!(!me.value||!ye.value||pe.value.length===0)){Pe.value=!0;try{await $fetch(`/api/subscriptions/${me.value.id}`,{method:"PATCH",body:{channelId:ye.value,events:pe.value}}),await H(),me.value=null}catch(N){A.add({title:"Update failed",description:String(N?.message??N),color:"error"})}finally{Pe.value=!1}}}const De=L(()=>v.value.map(N=>({label:N.type==="personal_email"?`${N.name} (${N.config.address})`:N.name,value:N.id}))),Ve=vn.map(N=>({label:N.replace(/\./g," › "),value:N}));ve(y,N=>{N?($&&H(),v.value.length>0&&!q.value&&(q.value=v.value[0].id)):(C.value=!1,me.value=null)});async function ae(){if(!(!q.value||de.value.length===0)){Re.value=!0;try{await $fetch("/api/subscriptions",{method:"POST",body:{channelId:q.value,projectId:D.projectId,events:de.value,mode:"realtime"}}),await H(),C.value=!1,A.add({title:"Subscribed",color:"success"}),p&&h?.scheduleFor(D.projectId,D.projectLabel||"this project",de.value)}catch(N){A.add({title:"Subscribe failed",description:String(N?.message??N),color:"error"})}finally{Re.value=!1}}}async function he(N){try{await $fetch(`/api/subscriptions/${N}`,{method:"DELETE"}),await H(),A.add({title:"Unsubscribed",color:"success"}),p&&P.value.length===0&&h?.cancelFor(D.projectId)}catch(I){A.add({title:"Failed",description:String(I?.message??I),color:"error"})}}async function Be(N){const I=N.mutedUntil&&new Date(N.mutedUntil)>new Date;try{await $fetch(`/api/subscriptions/${N.id}`,{method:"PATCH",body:{mutedUntil:I?null:new Date(Date.now()+10080*60*1e3).toISOString()}}),await H()}catch(X){A.add({title:"Failed",description:String(X?.message??X),color:"error"})}}function Ne(N){return N.mutedUntil&&new Date(N.mutedUntil)>new Date}function mt(N){return N==="personal_email"?"i-lucide-user-round":N==="email"?"i-lucide-mail":N==="slack"?"i-lucide-slack":"i-lucide-webhook"}const Le=L(()=>p||c.value&&B.value||x!=null),Ke=L(()=>p||c.value?ue.value:F.value);return(N,I)=>{const X=$e,pt=Bs,Ge=He,Ae=qe,Xe=Me,Ye=Fe,ze=qt,gt=Us;return e(Le)?(s(),f(gt,{key:0,open:e(y),"onUpdate:open":I[6]||(I[6]=O=>W(y)?y.value=O:null),ui:{content:"w-72"}},{content:t(()=>[e(x)?(s(),r("div",xn,[I[9]||(I[9]=n("div",{class:"flex items-center justify-between"},[n("span",{class:"font-medium text-sm"},"Browser notifications")],-1)),e(m)&&e(R)==="default"?(s(),r("p",bn,[o(X,{variant:"link",size:"xs",class:"p-0",onClick:K},{default:t(()=>[...I[7]||(I[7]=[d(" Allow notifications ",-1)])]),_:1}),I[8]||(I[8]=d(" "+i(" ")+"in your browser to get alerts for this project. ",-1))])):e(m)&&e(R)==="denied"?(s(),r("p",kn," Notifications are blocked. Check your browser settings to allow them. ")):e(m)?w("",!0):(s(),r("p",$n,"Notifications are not supported in this browser.")),e(m)&&e(R)==="granted"?(s(),r(G,{key:3},[o(pt),n("div",Cn,[(s(!0),r(G,null,oe(e(Ve),O=>(s(),r("label",{key:O.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[n("input",{type:"checkbox",checked:T(O.value),class:"accent-primary size-3",onChange:Y=>g(O.value)},null,40,Tn),d(" "+i(O.label),1)]))),128))])],64)):w("",!0)])):(s(),r("div",Sn,[n("div",jn,[n("span",wn,[I[10]||(I[10]=d(" Notifications ",-1)),o(Ge,{topic:"notifications.subscribe"})]),e(C)?w("",!0):(s(),f(X,{key:0,size:"xs",icon:"i-lucide-plus",variant:"ghost",color:"neutral",disabled:e(v).length===0,onClick:I[0]||(I[0]=O=>C.value=!0)},{default:t(()=>[...I[11]||(I[11]=[d(" Add ",-1)])]),_:1},8,["disabled"]))]),e(p)?(s(),r("div",Rn,[o(Ae,{name:"i-lucide-sparkles",class:"size-3 inline-block mr-1 text-primary"}),I[12]||(I[12]=d(" Demo — notifications will appear as toasts in ~8 s. ",-1))])):e(v).length===0?(s(),r("div",Dn,[I[14]||(I[14]=d(" No channels configured.",-1)),I[15]||(I[15]=n("br",null,null,-1)),o(Xe,{to:"/settings/notifications",class:"text-primary underline"},{default:t(()=>[...I[13]||(I[13]=[d("Add one in Settings",-1)])]),_:1})])):w("",!0),e(P).length>0?(s(),r("div",An,[(s(!0),r(G,null,oe(e(P),O=>(s(),r(G,{key:O.id},[e(me)?.id===O.id?(s(),r("div",zn,[o(ze,{label:"Channel",size:"xs"},{default:t(()=>[o(Ye,{modelValue:e(ye),"onUpdate:modelValue":I[1]||(I[1]=Y=>W(ye)?ye.value=Y:null),items:e(De),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),o(ze,{label:"Events",size:"xs"},{default:t(()=>[n("div",Un,[(s(!0),r(G,null,oe(e(Ve),Y=>(s(),r("label",{key:Y.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[Vt(n("input",{type:"checkbox",value:Y.value,"onUpdate:modelValue":I[2]||(I[2]=xe=>W(pe)?pe.value=xe:null),class:"accent-primary size-3"},null,8,In),[[Bt,e(pe)]]),d(" "+i(Y.label),1)]))),128))])]),_:1}),n("div",Mn,[o(X,{size:"xs",color:"neutral",variant:"ghost",onClick:ut},{default:t(()=>[...I[16]||(I[16]=[d("Cancel",-1)])]),_:1}),o(X,{size:"xs",color:"primary",loading:e(Pe),disabled:!e(ye)||e(pe).length===0,onClick:dt},{default:t(()=>[...I[17]||(I[17]=[d(" Save ",-1)])]),_:1},8,["loading","disabled"])])])):(s(),r("div",{key:1,class:ie(["flex items-center gap-2 rounded px-2 py-1.5 text-xs",Ne(O)?"opacity-60":""])},[o(Ae,{name:mt(O.channel.type),class:"size-3.5 text-muted shrink-0"},null,8,["name"]),n("span",Fn,i(O.channel.name),1),o(X,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",title:"Edit subscription",onClick:Y=>ee(O)},null,8,["onClick"]),o(X,{icon:Ne(O)?"i-lucide-bell":"i-lucide-bell-off",color:"neutral",variant:"ghost",size:"xs",title:Ne(O)?"Unmute":"Mute 7 days",onClick:Y=>Be(O)},null,8,["icon","title","onClick"]),o(X,{icon:"i-lucide-x",color:"error",variant:"ghost",size:"xs",title:"Unsubscribe",onClick:Y=>he(O.id)},null,8,["onClick"])],2))],64))),128))])):!e(C)&&e(v).length>0?(s(),r("div",En," Not subscribed to this project. ")):w("",!0),e(C)?(s(),r("div",Pn,[o(ze,{label:"Channel",size:"xs"},{default:t(()=>[o(Ye,{modelValue:e(q),"onUpdate:modelValue":I[3]||(I[3]=O=>W(q)?q.value=O:null),items:e(De),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),o(ze,{label:"Events",size:"xs"},{default:t(()=>[n("div",Vn,[(s(!0),r(G,null,oe(e(Ve),O=>(s(),r("label",{key:O.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[Vt(n("input",{type:"checkbox",value:O.value,"onUpdate:modelValue":I[4]||(I[4]=Y=>W(de)?de.value=Y:null),class:"accent-primary size-3"},null,8,Bn),[[Bt,e(de)]]),d(" "+i(O.label),1)]))),128))])]),_:1}),n("div",Nn,[o(X,{size:"xs",color:"neutral",variant:"ghost",onClick:I[5]||(I[5]=O=>C.value=!1)},{default:t(()=>[...I[18]||(I[18]=[d("Cancel",-1)])]),_:1}),o(X,{size:"xs",color:"primary",loading:e(Re),disabled:!e(q)||e(de).length===0,onClick:ae},{default:t(()=>[...I[19]||(I[19]=[d(" Subscribe ",-1)])]),_:1},8,["loading","disabled"])])])):w("",!0)]))]),default:t(()=>[o(X,{icon:e(Ke)?"i-lucide-bell-ring":"i-lucide-bell",size:"sm",color:e(Ke)?"primary":"neutral",variant:e(Ke)?"soft":"outline",title:"Notification subscriptions for this project"},null,8,["icon","color","variant"])]),_:1},8,["open"])):w("",!0)}}}),Kn=Object.assign(Ln,{__name:"SubscribeBell"}),On={class:"w-full relative"},qn={key:0},Hn={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},Qn={class:"font-semibold mb-1"},Jn={class:"capitalize mb-1"},Gn={class:"space-y-0.5"},Xn={class:"font-medium mt-1"},Yn=ce({__name:"TestRunsChart",props:{testRuns:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(U,{emit:S}){const k=U,D=S,b=L(()=>k.markers),p=L(()=>!k.testRuns||k.testRuns.length===0?[]:[...k.testRuns].sort(($,Q)=>new Date($.startTime).getTime()-new Date(Q.startTime).getTime()).slice(-30).map($=>({id:$.id,date:new Date($.startTime),passed:$.passedTests||0,failed:$.failedTests||0,skipped:$.skippedTests||0,flaky:$.flakyTests||0,total:$.totalTests||0,status:$.status}))),c=g=>g.date,M=g=>g.passed,B=g=>g.failed,A=g=>g.skipped,y=g=>g.flaky,h=["rgb(34, 197, 94)","rgb(239, 68, 68)","rgb(245, 158, 11)","rgb(147, 51, 234)"],x=z(null),{tooltipData:R,tooltipPos:m,markerTooltip:_,markerTooltipPos:F,onRenderComplete:K}=Yt(x,p,{x:g=>g.date,series:[{y:g=>g.passed,color:h[0]},{y:g=>g.failed,color:h[1]},{y:g=>g.skipped,color:h[2]},{y:g=>g.flaky,color:h[3]}],onClick:g=>St(`/test-runs/${g.id}`),markers:b,onMarkerClick:g=>D("marker-click",g.id)}),T=[{color:h[0],label:"Passed"},{color:h[1],label:"Failed"},{color:h[2],label:"Skipped"},{color:h[3],label:"Flaky"}];return(g,$)=>{const Q=Qt,j=Ce,H=Xt;return s(),r("div",On,[e(p).length>0?(s(),r("div",qn,[o(e(Gt),{ref_key:"xyContainerRef",ref:x,data:e(p),height:U.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(K)},{default:t(()=>[o(e(Hs),{x:c,y:[M,B,A,y],color:h,"curve-type":e(Ct).MonotoneX},null,8,["y","curve-type"]),o(e(Jt),{x:c,y:[M,B,A,y],color:h,"curve-type":e(Ct).MonotoneX,"line-width":2},null,8,["y","curve-type"]),o(e(lt),{type:"x","tick-format":P=>new Date(P).toLocaleDateString("en-US",{month:"short",day:"numeric"})},null,8,["tick-format"]),o(e(lt),{type:"y",label:"Tests","tick-format":P=>P.toString()},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(R)?(s(),r("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Kt({left:`${e(m).x}px`,top:`${e(m).y}px`})},[n("div",Hn,[n("div",Qn,i(new Date(e(R).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),n("div",Jn,"Status: "+i(e(R).status),1),n("div",Gn,[n("div",null,[$[0]||($[0]=n("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),d(" Passed: "+i(e(R).passed),1)]),n("div",null,[$[1]||($[1]=n("span",{class:"text-red-500 dark:text-red-400"},"●",-1)),d(" Failed: "+i(e(R).failed),1)]),n("div",null,[$[2]||($[2]=n("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),d(" Skipped: "+i(e(R).skipped),1)]),n("div",null,[$[3]||($[3]=n("span",{class:"text-purple-500 dark:text-purple-400"},"●",-1)),d(" Flaky: "+i(e(R).flaky),1)]),n("div",Xn,"Total: "+i(e(R).total),1)]),$[4]||($[4]=n("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):w("",!0),o(Q,{marker:e(_),pos:e(F)},null,8,["marker","pos"])])):(s(),f(j,{key:1,text:"No test run data available to display chart"})),o(H,{items:T})])}}}),Wn=Object.assign(Yn,{__name:"TestRunsChart"}),Zn={class:"space-y-3"},ea={class:"min-w-0 space-y-1"},ta={class:"flex items-center gap-2 flex-wrap text-sm"},sa={key:0,class:"text-gray-500"},na=["title"],aa=["title"],oa={key:0,class:"text-xs text-gray-500 italic"},la={class:"flex items-center gap-2 shrink-0"},ra=ce({__name:"ClusterMergeSuggestions",props:{projectId:{}},emits:["merged"],setup(U,{emit:S}){const k=U,D=S,b=je(),p=z([]),c=z(null);async function M(){try{p.value=await $fetch(`/api/projects/${k.projectId}/cluster-merge-suggestions`)}catch{p.value=[]}}ve(()=>k.projectId,M,{immediate:!0});async function B(y,h){c.value=y;try{await $fetch(`/api/cluster-merge-suggestions/${y}/${h}`,{method:"POST"}),b.add({title:h==="approve"?"Clusters merged":"Suggestion dismissed",color:"success"}),await M(),h==="approve"&&D("merged")}catch(x){b.add({title:"Action failed",description:String(x?.message??x),color:"error"})}finally{c.value=null}}const A=y=>y==null?"":`${Math.round(y*100)}% similar`;return(y,h)=>{const x=we,R=$e,m=wt;return e(p).length?(s(),f(m,{key:0,icon:"i-lucide-git-merge",title:"Suggested merges",count:e(p).length,class:"mb-4"},{subtitle:t(()=>[...h[0]||(h[0]=[d(" Likely-duplicate clusters found by semantic analysis. Approving merges them into the older cluster. ",-1)])]),default:t(()=>[n("div",Zn,[(s(!0),r(G,null,oe(e(p),_=>(s(),r("div",{key:_.id,class:"rounded-lg border border-default p-3 flex items-start justify-between gap-4"},[n("div",ea,[n("div",ta,[o(x,{color:_.method==="llm"?"primary":"neutral",variant:"subtle",size:"sm"},{default:t(()=>[d(i(_.method==="llm"?`AI · ${_.llmConfidence??""}`:"similarity"),1)]),_:2},1032,["color"]),A(_.score)?(s(),r("span",sa,i(A(_.score)),1)):w("",!0)]),n("p",{class:"text-sm truncate",title:_.clusterA?.signature||""},[h[1]||(h[1]=n("span",{class:"text-gray-400"},"A:",-1)),d(" "+i(_.clusterA?.signature||`#${_.id}`),1)],8,na),n("p",{class:"text-sm truncate",title:_.clusterB?.signature||""},[h[2]||(h[2]=n("span",{class:"text-gray-400"},"B:",-1)),d(" "+i(_.clusterB?.signature||""),1)],8,aa),_.llmReason?(s(),r("p",oa,i(_.llmReason),1)):w("",!0)]),n("div",la,[o(R,{size:"sm",color:"primary",icon:"i-lucide-git-merge",loading:e(c)===_.id,onClick:F=>B(_.id,"approve")},{default:t(()=>[...h[3]||(h[3]=[d(" Merge ",-1)])]),_:1},8,["loading","onClick"]),o(R,{size:"sm",color:"neutral",variant:"ghost",icon:"i-lucide-x",disabled:e(c)===_.id,onClick:F=>B(_.id,"reject")},{default:t(()=>[...h[4]||(h[4]=[d(" Dismiss ",-1)])]),_:1},8,["disabled","onClick"])])]))),128))])]),_:1},8,["count"])):w("",!0)}}}),ia=Object.assign(ra,{__name:"ClusterMergeSuggestions"}),ca={class:"flex items-center justify-between"},ua={class:"text-sm text-gray-500 inline-flex items-center gap-1"},da={class:"min-w-0 space-y-0.5"},ma={key:0,class:"text-xs text-gray-500 italic truncate"},pa={key:1,class:"text-gray-400 text-xs"},ga={class:"space-y-1"},fa={class:"text-sm tabular-nums"},_a={class:"text-sm tabular-nums"},va={key:1,class:"text-gray-400 text-xs"},ya={class:"text-sm text-gray-500 whitespace-nowrap"},ha={key:0,class:"ml-1 text-xs text-gray-400"},xa={class:"flex justify-end"},ba=ce({__name:"FailureClustersList",props:{projectId:{}},async setup(U){let S,k;const D=U,b=z(void 0),{data:p,pending:c}=([S,k]=be(()=>ke(()=>{const A=new URLSearchParams;b.value&&A.set("status",b.value);const y=A.toString();return`/api/projects/${D.projectId}/failure-clusters${y?`?${y}`:""}`},{lazy:!0,server:!1,watch:[b]},"$f7pDU1t-lL")),S=await S,k(),S),M=A=>sn(A.fixVerification),B=[{accessorKey:"signature",header:V("Signature")},{accessorKey:"errorType",header:V("Type")},{accessorKey:"status",header:V("Status")},{accessorKey:"affectedTests",header:V("Tests")},{accessorKey:"occurrences",header:V("Occurrences")},{accessorKey:"diagnosis",header:"AI"},{accessorKey:"lastSeenAt",header:V("Last seen")},{id:"actions",header:"Actions"}];return(A,y)=>{const h=He,x=Fe,R=Me,m=we,_=qe,F=Wt,K=$e,T=Ee,g=Je,$=Ce,Q=Qe;return s(),f(Q,null,{header:t(()=>[n("div",ca,[n("p",ua,[y[1]||(y[1]=d(" Ongoing failure signatures grouped by normalized error. ",-1)),o(h,{topic:"cluster.concept"})]),o(x,{modelValue:e(b),"onUpdate:modelValue":y[0]||(y[0]=j=>W(b)?b.value=j:null),items:[{label:"All",value:void 0},{label:"Open",value:"open"},{label:"Resolved",value:"resolved"},{label:"Ignored",value:"ignored"}],size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:t(()=>[o(g,{"min-width":"48rem",bleed:!1},{default:t(()=>[o(T,{data:e(p)??[],columns:B,loading:e(c)},{"actions-header":t(()=>[...y[2]||(y[2]=[n("div",{class:"text-right"},"Actions",-1)])]),"signature-cell":t(({row:j})=>[n("div",da,[o(R,{to:`/failure-clusters/${j.original.id}`,class:ie(["text-sm text-primary hover:underline truncate block",j.original.title?"":"font-mono"]),title:j.original.signature},{default:t(()=>[d(i(j.original.title||j.original.signature),1)]),_:2},1032,["to","class","title"]),j.original.triageNote?(s(),r("p",ma,i(j.original.triageNote),1)):w("",!0)])]),"errorType-cell":t(({row:j})=>[j.original.errorType?(s(),f(m,{key:0,color:("clusterErrorTypeColor"in A?A.clusterErrorTypeColor:e(tn))(j.original.errorType),variant:"subtle",size:"sm"},{default:t(()=>[d(i(j.original.errorType),1)]),_:2},1032,["color"])):(s(),r("span",pa,"—"))]),"status-cell":t(({row:j})=>[n("div",ga,[o(m,{color:("clusterStatusColor"in A?A.clusterStatusColor:e(en))(j.original.status),variant:"subtle",size:"sm"},{default:t(()=>[d(i(j.original.status),1)]),_:2},1032,["color"]),M(j.original)?(s(),f(F,{key:0,text:M(j.original).hint},{default:t(()=>[o(m,{color:M(j.original).color,variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[o(_,{name:M(j.original).icon,class:"size-3"},null,8,["name"]),d(" "+i(M(j.original).label),1)]),_:2},1032,["color"])]),_:2},1032,["text"])):w("",!0)])]),"affectedTests-cell":t(({row:j})=>[n("span",fa,i(j.original.affectedTests),1)]),"occurrences-cell":t(({row:j})=>[n("span",_a,i(j.original.occurrences),1)]),"diagnosis-cell":t(({row:j})=>[j.original.diagnosis?.status==="completed"&&j.original.diagnosis.category?(s(),f(m,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[o(_,{name:"i-lucide-sparkles",class:"size-3"}),d(" "+i(j.original.diagnosis.category),1)]),_:2},1024)):(s(),r("span",va,"—"))]),"lastSeenAt-cell":t(({row:j})=>[n("div",ya,[o(R,{to:`/test-runs/${j.original.lastSeenRunId}`,class:"text-primary hover:underline"},{default:t(()=>[d(" run #"+i(j.original.lastSeenRunId),1)]),_:2},1032,["to"]),j.original.lastSeenAt?(s(),r("span",ha," ("+i(("formatRelativeTime"in A?A.formatRelativeTime:e(Rt))(j.original.lastSeenAt))+") ",1)):w("",!0)])]),"actions-cell":t(({row:j})=>[n("div",xa,[o(K,{to:`/failure-clusters/${j.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:t(()=>[...y[3]||(y[3]=[d(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(c)&&e(p)&&e(p).length===0?(s(),f($,{key:0,text:"No failure clusters recorded for this project.",padded:!1,class:"py-4"})):w("",!0)]),_:1})}}}),ka=Object.assign(ba,{__name:"FailureClustersList"}),$a={class:"flex items-center justify-between"},Ca={class:"flex items-center gap-3"},Ta={class:"text-sm text-gray-500 inline-flex items-center gap-1"},Sa={class:"flex items-center gap-1.5"},ja={class:"min-w-0 space-y-0.5"},wa={class:"flex items-center gap-2"},Ra={class:"text-sm tabular-nums"},Da={class:"text-sm tabular-nums"},Aa={key:1,class:"text-gray-400 text-xs"},za={key:1,class:"text-gray-400 text-xs"},Ua={key:1,class:"text-gray-400 text-xs"},Ia={key:0,class:"text-sm text-gray-500"},Ma={key:1,class:"text-gray-400 text-xs"},Fa={class:"flex justify-end"},Ea={key:0,class:"text-sm text-gray-500 py-4 text-center"},Pa=ce({__name:"FlakyTestsList",props:{projectId:{},environment:{},projectName:{}},async setup(U){let S,k;const D=U,b=z(50),p=z([]),{data:c,pending:M}=([S,k]=be(()=>ke(()=>{const m=new URLSearchParams({runs:String(b.value)});return D.environment&&m.set("environment",D.environment),`/api/projects/${D.projectId}/flaky-tests?${m.toString()}`},{lazy:!0,server:!1,watch:[b,()=>D.environment]},"$qKoEnbecbI")),S=await S,k(),S),B=L(()=>p.value.length===0?c.value??[]:(c.value??[]).filter(m=>p.value.includes(m.rootCause??"")));function A(m){return m>=60?"error":m>=30?"warning":"neutral"}function y(m){switch(m){case"timing":return"amber";case"network":return"red";case"assertion":return"blue";case"environment":return"purple";default:return"gray"}}function h(m){p.value.indexOf(m)>=0?p.value=p.value.filter(F=>F!==m):p.value=[...p.value,m]}const x=[{label:"Timing",value:"timing"},{label:"Network",value:"network"},{label:"Assertion",value:"assertion"},{label:"Environment",value:"environment"},{label:"Other",value:"other"}],R=[{accessorKey:"title",header:V("Test")},{accessorKey:"impact",header:V("Impact")},{accessorKey:"score",header:V("Score")},{accessorKey:"failureRate",header:V("Failure rate")},{accessorKey:"retryPassRuns",header:V("Retry passes")},{accessorKey:"alternations",header:V("Flips")},{accessorKey:"rootCause",header:"Root cause"},{accessorKey:"lastFlakeAt",header:V("Last flake")},{id:"actions",header:"Actions"}];return(m,_)=>{const F=He,K=qe,T=we,g=$e,$=Fe,Q=Me,j=es,H=it,P=Ht,ue=Ee,ge=Je,v=Qe;return s(),f(v,null,{header:t(()=>[n("div",$a,[n("div",Ca,[n("p",Ta,[_[1]||(_[1]=d(" Tests that fail intermittently — detected by retry passes and status alternations ",-1)),o(F,{topic:"project.flaky-tests"})]),U.environment?(s(),f(T,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[o(K,{name:"i-lucide-layers",class:"size-3"}),d(" "+i(U.environment),1)]),_:1})):w("",!0),n("div",Sa,[(s(),r(G,null,oe(x,C=>o(g,{key:C.value,size:"xs",variant:e(p).includes(C.value)?"solid":"outline",color:(e(p).includes(C.value),"neutral"),onClick:q=>h(C.value)},{default:t(()=>[d(i(C.label),1)]),_:2},1032,["variant","color","onClick"])),64))])]),o($,{modelValue:e(b),"onUpdate:modelValue":_[0]||(_[0]=C=>W(b)?b.value=C:null),items:[{label:"Last 20 runs",value:20},{label:"Last 50 runs",value:50},{label:"Last 100 runs",value:100}],size:"xs",class:"w-36"},null,8,["modelValue"])])]),default:t(()=>[o(ge,{"min-width":"52rem",bleed:!1},{default:t(()=>[o(ue,{data:e(B),columns:R,loading:e(M),sticky:"",class:"max-h-[32rem]"},{"actions-header":t(()=>[..._[2]||(_[2]=[n("div",{class:"text-right"},"Actions",-1)])]),"title-cell":t(({row:C})=>[n("div",ja,[o(Q,{to:`/test-run-cases/${C.original.latestRunsCaseId}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:C.original.title},{default:t(()=>[d(i(C.original.title),1)]),_:2},1032,["to","title"]),o(j,{tags:C.original.tags,meta:{owner:C.original.owner??void 0,priority:("toTestPriority"in m?m.toTestPriority:e(nn))(C.original.priority)},"max-tags":3},null,8,["tags","meta"]),o(H,{"file-path":C.original.filePath,"project-key":U.projectId,"project-name":U.projectName,class:"text-xs text-gray-400"},null,8,["file-path","project-key","project-name"])])]),"impact-cell":t(({row:C})=>[n("div",wa,[n("span",{class:ie(["inline-block w-2 h-2 rounded-full shrink-0",{"bg-red-500":C.original.wastedCiMinutes>=30,"bg-amber-500":C.original.wastedCiMinutes>=5&&C.original.wastedCiMinutes<30,"bg-green-500":C.original.wastedCiMinutes>=0&&C.original.wastedCiMinutes<5}])},null,2),n("span",Ra,i(Math.round(C.original.wastedCiMinutes))+" min wasted",1)])]),"score-cell":t(({row:C})=>[o(T,{color:A(C.original.score),variant:"subtle",size:"sm"},{default:t(()=>[d(i(C.original.score),1)]),_:2},1032,["color"])]),"failureRate-cell":t(({row:C})=>[n("span",Da,i(Math.round(C.original.failureRate*100))+"%",1)]),"retryPassRuns-cell":t(({row:C})=>[C.original.retryPassRuns?(s(),f(T,{key:0,color:"warning",variant:"outline",size:"sm"},{default:t(()=>[d(i(C.original.retryPassRuns)+" run"+i(C.original.retryPassRuns===1?"":"s"),1)]),_:2},1024)):(s(),r("span",Aa,"—"))]),"alternations-cell":t(({row:C})=>[C.original.alternations>=2?(s(),f(T,{key:0,color:"neutral",variant:"outline",size:"sm"},{default:t(()=>[d(i(C.original.alternations),1)]),_:2},1024)):(s(),r("span",za,"—"))]),"rootCause-cell":t(({row:C})=>[C.original.rootCause?(s(),f(P,{key:0,text:C.original.rootCause,color:y(C.original.rootCause)},null,8,["text","color"])):(s(),r("span",Ua,"—"))]),"lastFlakeAt-cell":t(({row:C})=>[C.original.lastFlakeAt?(s(),r("span",Ia,i(("formatRelativeTime"in m?m.formatRelativeTime:e(Rt))(C.original.lastFlakeAt)),1)):(s(),r("span",Ma,"—"))]),"actions-cell":t(({row:C})=>[n("div",Fa,[o(g,{to:`/test-run-cases/${C.original.latestRunsCaseId}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:t(()=>[..._[3]||(_[3]=[d(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(M)&&e(B).length===0?(s(),r("p",Ea," No flaky tests detected in the last "+i(e(b))+" runs. ",1)):w("",!0)]),_:1})}}}),Va=Object.assign(Pa,{__name:"FlakyTestsList"}),Ba={class:"w-full relative"},Na={key:0},La={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},Ka={class:"font-semibold mb-1"},Oa={class:"capitalize mb-1"},qa={class:"space-y-0.5"},Ha={class:"mt-1"},Qa={key:0,class:"text-gray-400 dark:text-gray-500 text-xs"},Ja=ce({__name:"PerformanceTrendChart",props:{data:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(U,{emit:S}){const k=U,D=S,b=L(()=>k.markers),p=L(()=>!k.data||k.data.length===0?[]:k.data.map(T=>({id:T.id,date:new Date(T.startTime),duration:T.duration?Math.round(T.duration/1e3):null,avgTestDuration:T.avgTestDuration?Math.round(T.avgTestDuration/1e3):null,p90TestDuration:T.p90TestDuration?Math.round(T.p90TestDuration/1e3):null,commit:T.commit?T.commit.substring(0,7):null,status:T.status,totalTests:T.totalTests}))),c=T=>T.date,M=T=>T.duration??void 0,B=T=>T.avgTestDuration??void 0,A=T=>T.p90TestDuration??void 0,y=["rgb(59, 130, 246)","rgb(34, 197, 94)","rgb(249, 115, 22)"],h=z(null),{tooltipData:x,tooltipPos:R,markerTooltip:m,markerTooltipPos:_,onRenderComplete:F}=Yt(h,p,{x:T=>T.date,series:[{y:T=>T.duration,color:y[0]},{y:T=>T.avgTestDuration,color:y[1]},{y:T=>T.p90TestDuration,color:y[2]}],onClick:T=>St(`/test-runs/${T.id}`),markers:b,onMarkerClick:T=>D("marker-click",T.id)}),K=[{color:y[0],label:"Total Duration"},{color:y[1],label:"Avg Test Duration"},{color:y[2],label:"P90 Test Duration"}];return(T,g)=>{const $=Qt,Q=Ce,j=Xt;return s(),r("div",Ba,[e(p).length>0?(s(),r("div",Na,[o(e(Gt),{ref_key:"xyContainerRef",ref:h,data:e(p),height:U.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(F)},{default:t(()=>[o(e(Jt),{x:c,y:[M,B,A],color:y,"curve-type":e(Ct).MonotoneX,"line-width":2},null,8,["y","curve-type"]),o(e(lt),{type:"x","tick-format":H=>new Date(H).toLocaleDateString("en-US",{month:"short",day:"numeric"}),label:"Date"},null,8,["tick-format"]),o(e(lt),{type:"y",label:"Duration (s)","tick-format":H=>`${H}s`},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(x)?(s(),r("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Kt({left:`${e(R).x}px`,top:`${e(R).y}px`})},[n("div",La,[n("div",Ka,i(new Date(e(x).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),n("div",Oa,"Status: "+i(e(x).status),1),n("div",qa,[n("div",null,[g[0]||(g[0]=n("span",{class:"text-blue-500 dark:text-blue-400"},"●",-1)),d(" Total: "+i(e(x).duration??"-")+"s ",1)]),n("div",null,[g[1]||(g[1]=n("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),d(" Avg: "+i(e(x).avgTestDuration??"-")+"s ",1)]),n("div",null,[g[2]||(g[2]=n("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),d(" P90: "+i(e(x).p90TestDuration??"-")+"s ",1)]),n("div",Ha,"Tests: "+i(e(x).totalTests),1),e(x).commit?(s(),r("div",Qa," Commit: "+i(e(x).commit),1)):w("",!0)]),g[3]||(g[3]=n("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):w("",!0),o($,{marker:e(m),pos:e(_)},null,8,["marker","pos"])])):(s(),f(Q,{key:1,text:"No performance data available to display chart"})),o(j,{items:K})])}}}),Ga=Object.assign(Ja,{__name:"PerformanceTrendChart"}),Xa={class:"min-w-0"},Ya={class:"mt-1"},Wa={class:"tabular-nums"},Za={key:0,class:"ml-1 text-xs text-gray-500",title:"timeout ÷ p95"},eo={class:"tabular-nums text-gray-500"},to={key:0,class:"text-sm"},so={key:1,class:"tabular-nums"},no={class:"tabular-nums font-medium text-green-600 dark:text-green-400"},ao={class:"tabular-nums text-gray-500"},oo=ce({__name:"TimeoutOpportunitiesTable",props:{projectId:{},projectName:{}},async setup(U){let S,k;const D=U,{data:b,pending:p}=([S,k]=be(()=>ke(()=>`/api/projects/${D.projectId}/timeout-opportunities`,{lazy:!0,server:!1},"$tMBJjTyDol")),S=await S,k(),S),c=L(()=>b.value??[]);function M(A){return A==null?"—":A<1e3?`${A}ms`:`${(A/1e3).toFixed(1)}s`}const B=[{accessorKey:"title",header:V("Test case")},{accessorKey:"kind",header:"Type"},{accessorKey:"timeout",header:V("Timeout")},{accessorKey:"p95",header:V("p95")},{accessorKey:"recommendedTimeout",header:"Recommendation"},{accessorKey:"estimatedSavingMs",header:V("Est. saving / failure")},{accessorKey:"runCount",header:V("Runs")}];return(A,y)=>{const h=ct,x=Ce,R=Me,m=it,_=we,F=Ee,K=Je,T=Qe;return s(),f(T,null,{header:t(()=>[...y[0]||(y[0]=[n("h2",{class:"text-xl font-semibold"},"Timeout opportunities",-1),n("p",{class:"text-sm text-gray-600 mt-1"},[d(" Tests whose configured timeout far exceeds their real duration, or that still carry a stale "),n("code",{class:"text-xs"},"test.slow()"),d(" mark — tightening these makes failures surface sooner. ")],-1)])]),default:t(()=>[e(p)?(s(),f(h,{key:0})):e(c).length===0?(s(),f(x,{key:1,text:"No timeout opportunities",description:"No oversized timeouts or stale test.slow() marks were found for this project."})):(s(),f(K,{key:2,"min-width":"52rem",bleed:!1},{default:t(()=>[o(F,{data:e(c),columns:B,sticky:"",class:"max-h-[32rem]"},{"title-cell":t(({row:g})=>[n("div",Xa,[o(R,{to:`/test-cases/${g.original.testCaseId}`,class:"font-medium truncate block hover:text-primary hover:underline"},{default:t(()=>[d(i(g.original.title),1)]),_:2},1032,["to"]),n("div",Ya,[o(m,{"file-path":g.original.filePath,"project-key":U.projectId,"project-name":U.projectName,class:"text-xs"},null,8,["file-path","project-key","project-name"])])])]),"kind-cell":t(({row:g})=>[o(_,{color:g.original.kind==="oversized-timeout"?"warning":"info",variant:"subtle",size:"sm"},{default:t(()=>[d(i(g.original.kind==="oversized-timeout"?"Oversized timeout":"Stale test.slow()"),1)]),_:2},1032,["color"])]),"timeout-cell":t(({row:g})=>[n("span",Wa,i(M(g.original.timeout)),1),g.original.headroomRatio!=null?(s(),r("span",Za," ("+i(g.original.headroomRatio)+"×) ",1)):w("",!0)]),"p95-cell":t(({row:g})=>[n("span",eo,i(M(g.original.p95)),1)]),"recommendedTimeout-cell":t(({row:g})=>[g.original.kind==="stale-slow"?(s(),r("span",to,[...y[1]||(y[1]=[d("Remove ",-1),n("code",{class:"text-xs"},"test.slow()",-1)])])):(s(),r("span",so,"Lower to ~"+i(M(g.original.recommendedTimeout)),1))]),"estimatedSavingMs-cell":t(({row:g})=>[n("span",no,i(M(g.original.estimatedSavingMs)),1)]),"runCount-cell":t(({row:g})=>[n("span",ao,i(g.original.runCount),1)]),_:1},8,["data"])]),_:1}))]),_:1})}}}),lo=Object.assign(oo,{__name:"TimeoutOpportunitiesTable"}),ro={class:"flex items-center justify-between"},io={class:"text-sm text-gray-500 inline-flex items-center gap-1"},co={class:"truncate font-mono text-xs"},uo={class:"tabular-nums"},mo={class:"tabular-nums text-gray-500"},po={class:"tabular-nums text-gray-500"},go=ce({__name:"SpecHealthTable",props:{projectId:{}},async setup(U){let S,k;const D=U,b=z(30),{data:p,pending:c}=([S,k]=be(()=>ke(()=>`/api/projects/${D.projectId}/spec-health?days=${b.value}`,{lazy:!0,server:!1,watch:[b]},"$QL0nEFEG1b")),S=await S,k(),S),M=L(()=>p.value?.specs??[]);function B(m){return m>=.9?"bg-green-500":m>=.7?"bg-amber-500":m>0?"bg-red-500":"bg-gray-300 dark:bg-gray-600"}function A(m){return m>=.9?"text-green-600 dark:text-green-400":m>=.7?"text-amber-600 dark:text-amber-400":m>0?"text-red-600 dark:text-red-400":"text-gray-500"}function y(m){return`${Math.round(m*100)}%`}function h(m){return m<1e3?`${m}ms`:`${(m/1e3).toFixed(1)}s`}const x=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90}],R=[{accessorKey:"prefix",header:V("Spec prefix")},{accessorKey:"passRate",header:V("Pass rate")},{accessorKey:"flakyRate",header:V("Flaky")},{accessorKey:"failureCount",header:V("Failures")},{accessorKey:"testCount",header:V("Tests")},{accessorKey:"avgDuration",header:V("Avg time")}];return(m,_)=>{const F=He,K=Fe,T=ct,g=Ce,$=Me,Q=Ee,j=Je,H=Qe;return s(),f(H,null,{header:t(()=>[n("div",ro,[n("p",io,[_[1]||(_[1]=d(" Spec-file health overview — pass rate, flaky rate, and failure count per spec prefix ",-1)),o(F,{topic:"project.spec-health"})]),o(K,{modelValue:e(b),"onUpdate:modelValue":_[0]||(_[0]=P=>W(b)?b.value=P:null),items:x,size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:t(()=>[e(c)?(s(),f(T,{key:0})):e(M).length===0?(s(),f(g,{key:1,text:"No data",description:"No spec health data available for the selected period."})):(s(),f(j,{key:2,"min-width":"46rem",bleed:!1},{default:t(()=>[o(Q,{data:e(M),columns:R,sticky:"",class:"max-h-[32rem]"},{"prefix-cell":t(({row:P})=>[o($,{to:`/projects/${U.projectId}/test-cases?file=${encodeURIComponent(P.original.prefix)}`,class:"flex items-center gap-2 min-w-0 text-primary hover:underline",title:P.original.prefix},{default:t(()=>[n("span",{class:ie(["inline-block size-3 rounded shrink-0",B(P.original.passRate)])},null,2),n("span",co,i(P.original.prefix),1)]),_:2},1032,["to","title"])]),"passRate-cell":t(({row:P})=>[n("span",{class:ie(["font-medium tabular-nums",A(P.original.passRate)])},i(y(P.original.passRate)),3)]),"flakyRate-cell":t(({row:P})=>[n("span",uo,i(Math.round(P.original.flakyRate*100))+"%",1)]),"failureCount-cell":t(({row:P})=>[n("span",{class:ie(["tabular-nums",P.original.failureCount>0?"text-red-600 dark:text-red-400":""])},i(P.original.failureCount),3)]),"testCount-cell":t(({row:P})=>[n("span",mo,i(P.original.testCount),1)]),"avgDuration-cell":t(({row:P})=>[n("span",po,i(h(P.original.avgDuration)),1)]),_:1},8,["data"])]),_:1}))]),_:1})}}}),fo=Object.assign(go,{__name:"SpecHealthTable"}),_o={class:"space-y-6"},vo={class:"w-full text-sm"},yo={class:"px-3 py-2 min-w-0"},ho={class:"text-xs text-muted"},xo={class:"px-3 py-2 text-muted"},bo={class:"px-3 py-2 whitespace-nowrap"},ko={key:1,class:"text-xs text-muted"},$o={key:2,class:"text-xs"},Co={class:"px-3 py-2 whitespace-nowrap text-muted"},To={class:"px-3 py-2 text-right"},So={class:"w-full text-sm"},jo={class:"px-3 py-2 min-w-0"},wo={class:"text-xs text-muted"},Ro={class:"px-3 py-2 text-right whitespace-nowrap"},Do=ce({__name:"QuarantineTable",props:{projectId:{},projectName:{}},async setup(U){let S,k;const D=U,b=je(),p=z(null),{data:c,status:M,error:B,refresh:A}=([S,k]=be(()=>ke(()=>`/api/projects/${D.projectId}/quarantine`,"$9P2J7SsiYf")),S=await S,k(),S);function y(R){const m=Math.round(R/36e5);return m<48?`${Math.max(1,m)}h`:`${Math.round(m/24)}d`}async function h(R,m){p.value=R;try{await $fetch(`/api/projects/${D.projectId}/quarantine`,{method:"POST",body:{testCaseId:R,reason:m,source:"proposed"}}),b.add({title:"Quarantined",color:"success"}),await A()}catch{b.add({title:"Could not quarantine that test",color:"error"})}finally{p.value=null}}async function x(R){p.value=R;try{await $fetch(`/api/projects/${D.projectId}/quarantine/${R}`,{method:"DELETE"}),b.add({title:"Released",color:"success"}),await A()}catch{b.add({title:"Could not release that test",color:"error"})}finally{p.value=null}}return(R,m)=>{const _=ct,F=ln,K=cn,T=rn,g=Ce,$=Me,Q=es,j=it,H=we,P=$e,ue=Je,ge=wt;return s(),r("div",_o,[o(ge,{title:"Quarantine",icon:"i-lucide-shield-alert",count:e(c)?.debt.active,help:"project.quarantine"},{subtitle:t(()=>[...m[0]||(m[0]=[d(" A quarantined test keeps running and keeps reporting — it is excluded from the CI gate's verdict and nothing else. That is what lets it earn its way back out. ",-1)])]),default:t(()=>[e(M)==="pending"?(s(),f(_,{key:0})):e(B)?(s(),f(F,{key:1,text:String(e(B))},null,8,["text"])):(s(),r(G,{key:2},[e(c)&&e(c).debt.active>0?(s(),f(T,{key:0,class:"mb-4"},{default:t(()=>[o(K,{label:"Quarantined",value:e(c).debt.active},null,8,["value"]),o(K,{label:"Ready to release",value:e(c).debt.readyToRelease,"value-class":e(c).debt.readyToRelease>0?"text-green-600 dark:text-green-400":"",hint:"earned their way out"},null,8,["value","value-class"]),o(K,{label:"Still failing",value:e(c).debt.stillFailing,hint:"no passing streak"},null,8,["value"]),o(K,{label:"Oldest",value:y(e(c).debt.oldestAgeMs),size:"sm"},null,8,["value"])]),_:1})):w("",!0),!e(c)||e(c).entries.length===0?(s(),f(g,{key:1,icon:"i-lucide-shield-check",text:"Nothing quarantined. Tests you quarantine appear here with their progress back out."})):(s(),f(ue,{key:2},{default:t(()=>[n("table",vo,[m[2]||(m[2]=n("thead",{class:"text-left text-xs text-muted"},[n("tr",null,[n("th",{class:"px-3 py-2"},"Test"),n("th",{class:"px-3 py-2"},"Reason"),n("th",{class:"px-3 py-2 whitespace-nowrap"},"Streak"),n("th",{class:"px-3 py-2 whitespace-nowrap"},"Age"),n("th",{class:"px-3 py-2 text-right"},"Actions")])],-1)),n("tbody",null,[(s(!0),r(G,null,oe(e(c).entries,v=>(s(),r("tr",{key:v.id,class:"border-t border-default"},[n("td",yo,[o($,{to:`/test-cases/${v.testCaseId}`,class:"text-primary hover:underline font-medium"},{default:t(()=>[d(i(v.title),1)]),_:2},1032,["to"]),o(Q,{tags:v.tags,meta:{owner:v.owner??void 0},"max-tags":3,class:"ml-1"},null,8,["tags","meta"]),n("div",ho,[o(j,{"file-path":v.filePath,"project-key":U.projectId,"project-name":U.projectName},null,8,["file-path","project-key","project-name"])])]),n("td",xo,i(v.reason||"—"),1),n("td",bo,[v.releaseProposed?(s(),f(H,{key:0,color:"success",variant:"soft",size:"xs"},{default:t(()=>[d(i(v.consecutivePasses)+" green — ready ",1)]),_:2},1024)):v.runsSinceQuarantine===0?(s(),r("span",ko,"not run yet")):(s(),r("span",$o,i(v.consecutivePasses)+" / "+i(e(c).releaseAfterConsecutivePasses),1))]),n("td",Co,i(y(v.ageMs)),1),n("td",To,[o(P,{size:"xs",color:v.releaseProposed?"primary":"neutral",variant:"soft",loading:e(p)===v.testCaseId,onClick:C=>x(v.testCaseId)},{default:t(()=>[...m[1]||(m[1]=[d(" Release ",-1)])]),_:1},8,["color","loading","onClick"])])]))),128))])])]),_:1}))],64))]),_:1},8,["count"]),e(c)&&e(c).candidates.length>0?(s(),f(ge,{key:0,title:"Worth quarantining",icon:"i-lucide-lightbulb",count:e(c).candidates.length},{subtitle:t(()=>[...m[3]||(m[3]=[d(" Ranked by the CI minutes their flakiness wastes, not by how often they flake — a test that flakes constantly but finishes instantly costs nothing. ",-1)])]),default:t(()=>[o(ue,null,{default:t(()=>[n("table",So,[n("tbody",null,[(s(!0),r(G,null,oe(e(c).candidates,v=>(s(),r("tr",{key:v.testCaseId,class:"border-t border-default"},[n("td",jo,[o($,{to:`/test-cases/${v.testCaseId}`,class:"text-primary hover:underline font-medium"},{default:t(()=>[d(i(v.title),1)]),_:2},1032,["to"]),n("div",wo,i(v.rationale),1)]),n("td",Ro,[o(P,{size:"xs",color:"neutral",variant:"soft",loading:e(p)===v.testCaseId,onClick:C=>h(v.testCaseId,v.rationale)},{default:t(()=>[...m[4]||(m[4]=[d(" Quarantine ",-1)])]),_:1},8,["loading","onClick"])])]))),128))])])]),_:1})]),_:1},8,["count"])):w("",!0)])}}}),Ao=Object.assign(Do,{__name:"QuarantineTable"}),zo={class:"space-y-4"},Uo={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Io={id:"marker-environments"},Mo=["value"],Fo=ce({__name:"MarkerFormModal",props:{open:{type:Boolean},projectId:{},marker:{},environments:{}},emits:["update:open","saved"],setup(U,{emit:S}){const k=U,D=S,b=je(),p=pn.map(h=>({label:h.label,value:h.id,icon:h.icon})),c=Is({label:"",occurredAt:"",category:kt,environment:"",description:""}),M=L(()=>!!k.marker),B=z(!1);function A(h){const x=new Date(h),R=m=>String(m).padStart(2,"0");return`${x.getFullYear()}-${R(x.getMonth()+1)}-${R(x.getDate())}T${R(x.getHours())}:${R(x.getMinutes())}`}ve(()=>k.open,h=>{h&&(k.marker?(c.label=k.marker.label,c.occurredAt=A(k.marker.occurredAt),c.category=k.marker.category||kt,c.environment=k.marker.environment??"",c.description=k.marker.description??""):(c.label="",c.occurredAt=A(new Date),c.category=kt,c.environment="",c.description=""))});async function y(){if(!c.label.trim()){b.add({title:"Label is required",color:"error"});return}if(!c.occurredAt){b.add({title:"Date is required",color:"error"});return}B.value=!0;const h={label:c.label.trim(),occurredAt:new Date(c.occurredAt).toISOString(),category:c.category,environment:c.environment.trim()||null,description:c.description.trim()||null};try{k.marker?(await $fetch(`/api/markers/${k.marker.id}`,{method:"PUT",body:h}),b.add({title:"Marker updated",color:"success"})):(await $fetch(`/api/projects/${k.projectId}/markers`,{method:"POST",body:h}),b.add({title:"Marker created",color:"success"})),D("update:open",!1),D("saved")}catch(x){b.add({title:M.value?"Failed to update marker":"Failed to create marker",description:Zt(x),color:"error"})}finally{B.value=!1}}return(h,x)=>{const R=Ot,m=qt,_=Fe,F=mn,K=$e,T=Dt,g=jt;return s(),f(g,null,{default:t(()=>[o(T,{open:U.open,title:e(M)?"Edit marker":"Add marker","onUpdate:open":x[6]||(x[6]=$=>D("update:open",$))},{body:t(()=>[n("div",zo,[o(m,{label:"Label",name:"label",required:""},{default:t(()=>[o(R,{modelValue:e(c).label,"onUpdate:modelValue":x[0]||(x[0]=$=>e(c).label=$),placeholder:"e.g. Migrated CI to new runners",class:"w-full"},null,8,["modelValue"])]),_:1}),n("div",Uo,[o(m,{label:"Date & time",name:"occurredAt",required:""},{default:t(()=>[o(R,{modelValue:e(c).occurredAt,"onUpdate:modelValue":x[1]||(x[1]=$=>e(c).occurredAt=$),type:"datetime-local",class:"w-full"},null,8,["modelValue"])]),_:1}),o(m,{label:"Category",name:"category"},{default:t(()=>[o(_,{modelValue:e(c).category,"onUpdate:modelValue":x[2]||(x[2]=$=>e(c).category=$),items:e(p),class:"w-full"},null,8,["modelValue","items"])]),_:1})]),o(m,{label:"Environment",name:"environment",help:"Optional. Leave empty to apply to all environments."},{default:t(()=>[o(R,{modelValue:e(c).environment,"onUpdate:modelValue":x[3]||(x[3]=$=>e(c).environment=$),list:"marker-environments",placeholder:"e.g. production",class:"w-full"},null,8,["modelValue"]),n("datalist",Io,[(s(!0),r(G,null,oe(U.environments||[],$=>(s(),r("option",{key:$,value:$},null,8,Mo))),128))])]),_:1}),o(m,{label:"Description",name:"description"},{default:t(()=>[o(F,{modelValue:e(c).description,"onUpdate:modelValue":x[4]||(x[4]=$=>e(c).description=$),rows:3,placeholder:"Optional details",class:"w-full"},null,8,["modelValue"])]),_:1})])]),footer:t(()=>[o(K,{color:"neutral",variant:"ghost",label:"Cancel",onClick:x[5]||(x[5]=$=>D("update:open",!1))}),o(K,{label:e(M)?"Save changes":"Add marker",icon:e(M)?"i-lucide-check":"i-lucide-plus",loading:e(B),onClick:y},null,8,["label","icon","loading"])]),_:1},8,["open","title"])]),_:1})}}}),Eo=Object.assign(Fo,{__name:"MarkerFormModal"}),Po={class:"md:hidden space-y-3"},Vo={class:"flex items-start justify-between gap-2"},Bo={key:0,class:"flex gap-1 shrink-0"},No={class:"text-sm text-muted"},Lo={key:0,class:"text-xs"},Ko={key:1,class:"text-sm text-muted"},Oo={class:"whitespace-nowrap"},qo={class:"text-sm"},Ho={class:"text-xs text-muted"},Qo={class:"font-medium flex items-center gap-1"},Jo={key:0,class:"text-xs text-muted line-clamp-1"},Go={key:1,class:"text-xs text-muted"},Xo={key:0,class:"flex gap-1 justify-end"},Yo=ce({__name:"ProjectTimeline",props:{projectId:{},markers:{},environments:{},canEdit:{type:Boolean},focusMarkerId:{}},emits:["changed","clear-focus"],setup(U,{emit:S}){const k=U,D=S,b=je(),p=L(()=>[...k.markers].sort((_,F)=>+new Date(F.occurredAt)-+new Date(_.occurredAt))),c=[{accessorKey:"occurredAt",header:"When"},{accessorKey:"category",header:"Category"},{accessorKey:"label",header:"Label"},{accessorKey:"environment",header:"Environment"},{accessorKey:"actions",header:""}],M=z(!1),B=z(null);function A(){B.value=null,M.value=!0}function y(_){B.value=_,M.value=!0}ve(()=>k.focusMarkerId,_=>{if(_==null)return;const F=k.markers.find(K=>K.id===_);F&&y(F),D("clear-focus")},{immediate:!0});const h=z(!1),x=z(null);function R(_){x.value=_,h.value=!0}async function m(){const _=x.value;if(h.value=!1,x.value=null,!!_)try{await $fetch(`/api/markers/${_.id}`,{method:"DELETE"}),b.add({title:"Marker deleted",color:"success"}),D("changed")}catch(F){b.add({title:"Failed to delete marker",description:Zt(F),color:"error"})}}return(_,F)=>{const K=$e,T=Ce,g=dn,$=we,Q=qe,j=Ee,H=Eo,P=Dt,ue=jt,ge=wt;return s(),f(ge,{title:"Timeline markers",count:U.markers.length,icon:"i-lucide-milestone",help:"project.timeline",subtitle:"Dated events overlaid on the analytics charts"},{actions:t(()=>[U.canEdit?(s(),f(K,{key:0,label:"Add marker",icon:"i-lucide-plus",size:"sm",onClick:A})):w("",!0)]),default:t(()=>[U.markers.length===0?(s(),f(T,{key:0,icon:"i-lucide-milestone",text:"No markers yet. Add a deploy, config change, or incident to see it on the charts."})):(s(),r(G,{key:1},[n("div",Po,[(s(!0),r(G,null,oe(e(p),v=>(s(),r("div",{key:v.id,class:"rounded-lg border border-default p-3 space-y-2"},[n("div",Vo,[o(g,{marker:v},null,8,["marker"]),U.canEdit?(s(),r("div",Bo,[o(K,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",onClick:C=>y(v)},null,8,["onClick"]),o(K,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",onClick:C=>R(v)},null,8,["onClick"])])):w("",!0)]),n("div",No,i(("prettyDateFormat"in _?_.prettyDateFormat:e(rt))(v.occurredAt)),1),v.environment?(s(),r("div",Lo,[o($,{color:"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(i(v.environment),1)]),_:2},1024)])):w("",!0),v.description?(s(),r("p",Ko,i(v.description),1)):w("",!0)]))),128))]),o(j,{data:e(p),columns:c,class:"hidden md:block"},{"occurredAt-cell":t(({row:v})=>[n("div",Oo,[n("div",qo,i(("prettyDateFormat"in _?_.prettyDateFormat:e(rt))(v.original.occurredAt)),1),n("div",Ho,i(("formatRelativeTime"in _?_.formatRelativeTime:e(Rt))(v.original.occurredAt)),1)])]),"category-cell":t(({row:v})=>[o($,{color:e($t)(v.original.category).color,variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[o(Q,{name:e($t)(v.original.category).icon,class:"size-3"},null,8,["name"]),d(" "+i(e($t)(v.original.category).label),1)]),_:2},1032,["color"])]),"label-cell":t(({row:v})=>[n("div",null,[n("div",Qo,[d(i(v.original.label)+" ",1),v.original.source==="auto"?(s(),f(Q,{key:0,name:"i-lucide-sparkles",class:"size-3 text-muted",title:"Automatically detected"})):w("",!0)]),v.original.description?(s(),r("div",Jo,i(v.original.description),1)):w("",!0)])]),"environment-cell":t(({row:v})=>[v.original.environment?(s(),f($,{key:0,color:"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(i(v.original.environment),1)]),_:2},1024)):(s(),r("span",Go,"All"))]),"actions-cell":t(({row:v})=>[U.canEdit?(s(),r("div",Xo,[o(K,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm",onClick:C=>y(v.original)},null,8,["onClick"]),o(K,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",onClick:C=>R(v.original)},null,8,["onClick"])])):w("",!0)]),_:1},8,["data"])],64)),o(H,{open:e(M),"onUpdate:open":F[0]||(F[0]=v=>W(M)?M.value=v:null),"project-id":U.projectId,marker:e(B),environments:U.environments,onSaved:F[1]||(F[1]=v=>D("changed"))},null,8,["open","project-id","marker","environments"]),o(ue,null,{default:t(()=>[o(P,{open:e(h),title:"Delete marker","onUpdate:open":F[3]||(F[3]=v=>h.value=v)},{body:t(()=>[n("p",null,[F[4]||(F[4]=d(" Delete marker ",-1)),e(x)?(s(),f(g,{key:0,marker:e(x),class:"inline-flex align-middle"},null,8,["marker"])):w("",!0),F[5]||(F[5]=d("? This can't be undone. ",-1))])]),footer:t(()=>[o(K,{color:"neutral",variant:"ghost",label:"Cancel",onClick:F[2]||(F[2]=v=>h.value=!1)}),o(K,{color:"error",label:"Delete",icon:"i-lucide-trash-2",onClick:m})]),_:1},8,["open"])]),_:1})]),_:1},8,["count"])}}}),Wo=Object.assign(Yo,{__name:"ProjectTimeline"}),Zo={class:"flex flex-col h-full overflow-y-auto gap-4"},el={key:0,class:"pb-0 space-y-4"},tl={key:0,class:"text-gray-600"},sl={key:1,class:"flex flex-wrap gap-1 mt-2"},nl={class:"flex flex-wrap items-center gap-3 mb-4"},al={class:"inline-flex items-center gap-1"},ol=["onClick"],ll={key:0,class:"flex items-center gap-3 px-3 py-2 mb-3 rounded-lg bg-primary-50 dark:bg-primary-900/20 border border-primary-200 dark:border-primary-800"},rl={class:"text-sm text-primary-700 dark:text-primary-300"},il={key:1,class:"text-xs text-primary-500"},cl=["checked","onClick"],ul={class:"flex items-center gap-2"},dl=["href","onClick"],ml={key:0,class:"text-xs text-gray-500 dark:text-gray-400 truncate max-w-32"},pl={class:"inline-flex items-center gap-1"},gl={key:0,class:"flex items-center gap-1"},fl={class:"text-xs text-gray-600"},_l={key:0,class:"flex items-center gap-1 flex-wrap"},vl={key:0,class:"text-xs font-medium bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded"},yl={key:1,class:"text-xs text-gray-500"},hl={class:"space-y-1"},xl={class:"flex justify-end gap-2"},bl={key:2,class:"text-center py-8 text-gray-500"},kl={class:"text-xs text-gray-400 max-w-sm"},$l={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},Cl={class:"flex flex-wrap items-center gap-3"},Tl={class:"text-xl font-semibold inline-flex items-center gap-1"},Sl={class:"font-medium"},jl={class:"mt-1"},wl={key:0,class:"text-red-600 font-medium"},Rl={key:1,class:"text-green-600 font-medium"},Dl={key:2,class:"text-gray-500"},Al={key:2,class:"text-center py-8 text-red-500"},zl={key:3,class:"text-center py-8 text-gray-500"},Ul={class:"flex items-center justify-between"},Il={class:"text-xl font-semibold inline-flex items-center gap-1"},Ml={class:"space-y-4"},Fl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},El={key:0,class:"text-center py-4 text-gray-500"},Pl={key:1,class:"space-y-4"},Vl={class:"flex gap-4 text-sm"},Bl={key:0,class:"text-gray-400"},Nl={key:0,class:"text-gray-400"},Ll={key:1,class:"text-gray-400"},Kl={key:1,class:"text-gray-400"},Ol={key:0,class:"text-gray-400"},ql={key:0,class:"text-gray-400"},Hl={key:2,class:"text-center py-8 text-gray-500"},Ql={key:3,class:"text-center py-8 text-gray-500"},Jl={class:"flex items-center justify-between"},Gl={class:"text-sm text-gray-600 inline-flex items-center gap-1"},Xl={class:"space-y-4"},Yl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Wl={key:0,class:"text-center py-8 text-gray-500"},Zl={key:1,class:"space-y-4"},er={class:"space-y-2"},tr={class:"flex flex-wrap gap-4 text-sm"},sr={key:3,class:"text-sm text-gray-500"},nr={class:"flex flex-wrap gap-4 text-sm"},ar={key:0,class:"text-gray-400"},or={key:0,class:"text-gray-400"},lr={key:1,class:"text-gray-400"},rr={key:1,class:"text-gray-400"},ir={key:0,class:"text-gray-400"},cr={key:0,class:"text-gray-400"},ur={key:2,class:"text-center py-8 text-gray-500"},dr={key:3,class:"text-center py-8 text-gray-500"},mr={class:"flex items-center justify-between"},pr={class:"text-sm text-gray-600 inline-flex items-center gap-1"},gr={key:0,class:"space-y-2"},fr={class:"font-medium text-sm"},_r={class:"text-xs text-muted flex items-center gap-2"},vr={key:0,class:"italic"},yr={key:1,class:"text-xs text-muted italic"},hr={key:1,class:"text-center py-8 text-muted text-sm"},xr={class:"space-y-4"},br={class:"text-sm text-gray-600 dark:text-gray-400"},kr={class:"block text-sm font-medium mb-1"},$r={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},Di=ce({__name:"index",async setup(U){let S,k;const D=Ms(),b=Fs(),p=D.params.id,{data:c,refresh:M}=([S,k]=be(()=>ke(`/api/projects/${p}`,"$NX9Zy2qnH1")),S=await S,k(),S);Es(L(()=>({title:`${c.value?.label||c.value?.name||"Project"} — Piwi Dashboard`})));const B=je(),A=z(null),y=z(null),{isAdmin:h,isReporter:x}=Lt(),R=Tt(),m=L(()=>!R.public.authEnabled||h.value),_=m,F=z(!1),K=z(""),T=z(!1),g=L(()=>K.value===c.value?.name);async function $(){if(g.value){T.value=!0;try{await $fetch(`/api/projects/${p}`,{method:"DELETE"}),B.add({title:"Project deleted",color:"success"}),await Vs(),await b.push("/")}catch(u){const a=u&&typeof u=="object"&&"data"in u?u.data?.message:void 0;B.add({title:"Delete failed",description:a||"An error occurred",color:"error"}),T.value=!1}}}_n(M);async function Q(u){y.value=null,A.value=u;try{await $fetch(`/api/test-runs/${u}`,{method:"DELETE"}),B.add({title:"Test run deleted",color:"success"}),await M()}catch(a){const E=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;B.add({title:"Delete failed",description:E||"An error occurred",color:"error"})}finally{A.value=null}}const j=z([]),H=z([]),P=z([]),ue=L(()=>{const u=new Map(j.value.map(E=>[E.id,E])),a=[];for(const E of H.value){if(E.role==="administrator")continue;const J=u.get(E.id);a.push({id:E.id,username:E.username,name:E.name??null,role:E.role,global:J?.global??!1,hasAccess:!!J})}for(const E of j.value)E.role==="administrator"&&a.push({...E,hasAccess:!0});return a}),ge=L(()=>{const u=j.value.filter(E=>E.role!=="administrator"&&!E.global).map(E=>E.id).sort(),a=[...P.value].sort();return JSON.stringify(u)!==JSON.stringify(a)});ve(()=>c.value?.id,async u=>{if(!(!u||!h.value))try{const[a,E]=await Promise.all([$fetch(`/api/projects/${p}/members`),$fetch("/api/users")]);j.value=a.users,H.value=E.users,P.value=a.users.filter(J=>J.role!=="administrator"&&!J.global).map(J=>J.id)}catch{j.value=[],H.value=[],P.value=[]}},{immediate:!0});function v(u){const a=P.value.indexOf(u);a>=0?P.value.splice(a,1):P.value.push(u)}async function C(){try{await $fetch(`/api/projects/${p}/members`,{method:"PUT",body:{userIds:P.value}}),B.add({title:"Members updated",color:"success"});const u=await $fetch(`/api/projects/${p}/members`);j.value=u.users}catch(u){const a=u&&typeof u=="object"&&"data"in u?u.data?.message:void 0;B.add({title:"Update failed",description:a||"An error occurred",color:"error"})}}const q=z("test-runs"),de=z(0),Re=["test-runs","failure-clusters","flaky-tests","performance","test-cases","compare","spec-health","quarantine","timeline","members"],me=D.query.tab;typeof me=="string"&&Re.includes(me)&&(q.value=me),ve(q,u=>{D.query.tab!==u&&Re.includes(u)&&b.replace({query:{...D.query,tab:u}})});const ye=L(()=>c.value?.testRuns?.some(u=>u.failedTests>0)??!1),pe=L(()=>[{label:`Test runs (${Le.value.length})`,icon:"i-lucide-play-circle",value:"test-runs",slot:"test-runs"},...ye.value?[{label:"Failure clusters",icon:"i-lucide-layers",value:"failure-clusters",slot:"failure-clusters"}]:[],{label:"Flaky tests",icon:"i-lucide-shuffle",value:"flaky-tests",slot:"flaky-tests"},{label:"Performance",icon:"i-lucide-trending-up",value:"performance",slot:"performance"},{label:`Test cases${O.value!=null?` (${O.value})`:""}`,icon:"i-lucide-list-checks",value:"test-cases",slot:"test-cases"},{label:"Compare",icon:"i-lucide-git-compare-arrows",value:"compare",slot:"compare"},{label:"Spec health",icon:"i-lucide-table-2",value:"spec-health",slot:"spec-health"},{label:"Quarantine",icon:"i-lucide-shield-alert",value:"quarantine",slot:"quarantine"},{label:`Timeline${X.value.length?` (${X.value.length})`:""}`,icon:"i-lucide-milestone",value:"timeline",slot:"timeline"},...h.value?[{label:"Members",icon:"i-lucide-users",value:"members",slot:"members"}]:[]]),Pe=L(()=>pe.value.find(u=>u.value===q.value)?.icon),ee=z([]),ut=u=>ee.value.includes(u);function dt(u){const a=ee.value.indexOf(u);if(a>=0)ee.value.splice(a,1);else{if(ee.value.length>=2){B.add({title:"Maximum 2 runs",description:"Select at most 2 runs to compare. Deselect one first.",color:"warning"});return}ee.value.push(u)}}const De=z(null);function Ve(){ee.value.length===2&&(De.value=[ee.value[0],ee.value[1]],q.value="compare")}const ae=z([]),he=z(!0),Be=L(()=>{const u=new Set;for(const a of c.value?.testRuns||[])a.environment&&u.add(a.environment);return[...u].sort()});function Ne(u){const a=ae.value.indexOf(u);a===-1?ae.value.push(u):ae.value.splice(a,1)}function mt(u){return ae.value.includes(u)}const Le=L(()=>{let u=c.value?.testRuns||[];return he.value&&(u=u.filter(a=>a.isFullRun!==!1)),ae.value.length===0?u:u.filter(a=>a.environment&&ae.value.includes(a.environment))}),Ke=L(()=>ae.value.length===1?ae.value[0]:void 0),{data:N,refresh:I}=([S,k]=be(()=>ke(`/api/projects/${p}/markers`,{default:()=>({markers:[]})},"$3gm0grYTFL")),S=await S,k(),S),X=L(()=>N.value?.markers??[]),pt=L(()=>!R.public.authEnabled||h.value||x.value),Ge=L(()=>ae.value.length===0?X.value:X.value.filter(u=>u.environment==null||ae.value.includes(u.environment))),Ae=z(null);function Xe(u){Ae.value=u,q.value="timeline"}const Ye=L(()=>{const u=c.value?.testRuns||[];return he.value?u.filter(a=>a.isFullRun!==!1):u});function ze(u){if(u.isFullRun!==!1)return"Full run — the complete test suite ran";const a=[],E=u.filterDetails?.grep?.trim(),J=u.filterDetails?.grepInvert?.trim(),fe=u.filterDetails?.files;return E&&E!==".*"&&a.push(`grep: ${E}`),J&&a.push(`grep-invert: ${J}`),fe?.length&&a.push(`files: ${fe.join(", ")}`),a.length?`Partial run — ${a.join(" · ")}`:"Partial run — only a filtered subset of tests ran (grep, file, or line filter)"}const gt=[{accessorKey:"select",header:""},{accessorKey:"id",header:V("Run")},{accessorKey:"status",header:V("Status")},{accessorKey:"isFullRun",header:"Scope"},{id:"browsers",accessorFn:u=>u.browsers,header:""},{accessorKey:"startTime",header:V("Started")},{accessorKey:"environment",header:V("Environment")},{accessorKey:"metadata",header:"Branch / Commit"},{accessorKey:"duration",header:V("Test status / Dur.")},{accessorKey:"reports",header:"Reports"},{id:"actions",header:"Actions"}],O=z(null),Y=z(""),xe=z(""),ts=L(()=>{const u={};return Y.value&&(u.from=Y.value),xe.value&&(u.to=xe.value),u}),ft=z(null),_t=z(!1),Ue=z(null),vt=z(!1),We=z(!1),ss=L(()=>_t.value&&ft.value===null);ve([q,ts,he],async([u,a])=>{if(u!=="performance")return;_t.value=!0,Ue.value||(We.value=!0);const E=new URLSearchParams(a).toString(),J=he.value?`${E?"&":""}fullRunsOnly=true`:"",fe=E||J?`?${E}${J}`:"";ft.value=await $fetch(`/api/projects/${p}/performance${fe}`).catch(_e=>(console.warn("[PerformanceTab] Failed to fetch performance trend:",_e),null)),_t.value=!1,We.value&&(vt.value=!1,Ue.value=await $fetch(`/api/projects/${p}/slow-tests`).catch(_e=>(vt.value=!0,console.warn("[PerformanceTab] Failed to fetch slow tests:",_e),null)),We.value=!1)},{immediate:!0});const ns=[{accessorKey:"title",header:V("Test case")},{accessorKey:"avgDuration",header:V("Avg duration")},{accessorKey:"maxDuration",header:V("Max")},{accessorKey:"minDuration",header:V("Min")},{accessorKey:"latestDuration",header:V("Latest")},{accessorKey:"trend",header:V("Trend")},{accessorKey:"runCount",header:V("Runs")}];function as(u){const a=rt(u.startTime,{dateOnly:!0}),E=u.metadata?.scm?.commit?` (${u.metadata.scm.commit.substring(0,7)})`:"";return`Run #${u.id} — ${a}${E}`}const re=L(()=>c.value?.testRuns?[...c.value.testRuns].reverse().map(u=>({label:as(u),value:u.id})):[]),te=z(void 0),se=z(void 0),At=L(()=>D.query.runA?Number(D.query.runA):null),zt=L(()=>D.query.runB?Number(D.query.runB):null);ve(re,u=>{if(At.value){const a=u.find(E=>E.value===At.value);a&&(te.value=a)}if(zt.value){const a=u.find(E=>E.value===zt.value);a&&(se.value=a)}},{immediate:!0}),ve(De,u=>{if(u){const a=re.value.find(J=>J.value===u[0]),E=re.value.find(J=>J.value===u[1]);a&&(te.value=a),E&&(se.value=E),De.value=null}});function Ut(){re.value.length>=2&&(te.value=re.value[1],se.value=re.value[0])}const yt=z(null),ht=z(null),Ze=z(!1);async function os(){const u=te.value,a=se.value;if(!(!u?.value&&!a?.value)){Ze.value=!0;try{const E=[];u?.value&&E.push(u.value),a?.value&&E.push(a.value);const J=await Promise.all(E.map(_e=>$fetch(`/api/test-runs/${_e}/summary`))),fe=new Map;for(const _e of J)fe.set(_e.id,_e);yt.value=u?.value?fe.get(u.value)??null:null,ht.value=a?.value?fe.get(a.value)??null:null}catch{yt.value=null,ht.value=null}finally{Ze.value=!1}}}ve([te,se],()=>{os()});const{comparisonData:et,comparisonSummary:Z}=fn(yt,ht),It=[{accessorKey:"title",header:V("Test case")},{accessorKey:"statusA",header:V("Status A")},{accessorKey:"statusB",header:V("Status B")},{accessorKey:"durationA",header:V("Duration A")},{accessorKey:"durationB",header:V("Duration B")},{accessorKey:"delta",header:V("Delta")},{accessorKey:"percentChange",header:V("Change")}];return(u,a)=>{const E=As,J=zs,fe=Kn,_e=Ks,ls=qs,rs=Ht,is=Fe,cs=Wn,Mt=Qs,us=Js,Ie=He,le=$e,ds=Gs,xt=qe,ms=Wt,ps=Xs,ne=we,gs=Ys,Te=Ws,fs=Zs,tt=Ee,_s=Ns,vs=Ce,Oe=Qe,ys=ia,hs=ka,xs=Va,bt=Ot,Ft=ct,bs=Ga,ks=it,$s=lo,st=an,Cs=on,Ts=fo,Ss=Ao,js=un,ws=Wo,Rs=gn,Ds=Os,Et=Dt,Pt=jt;return s(),r(G,null,[o(Ds,{id:"project-detail"},{header:t(()=>[o(ls,null,{leading:t(()=>[o(E),o(J,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:e(c)?.label||e(c)?.name||"Project"}]},null,8,["items"])]),right:t(()=>[o(_e,{size:"sm",actions:[...e(m)?[{label:"Delete",icon:"i-lucide-trash-2",color:"error",variant:"ghost",onClick:()=>{K.value="",F.value=!0}}]:[],...e(_)?[{label:"Import",icon:"i-lucide-import",variant:"outline",to:`/projects/${e(p)}/import`}]:[],{label:"Edit",icon:"i-lucide-pencil",variant:"outline",to:`/projects/${e(p)}/edit`},{label:"Refresh",icon:"i-lucide-refresh-cw",variant:"outline",onClick:()=>e(M)()}]},{leading:t(()=>[o(fe,{"project-id":parseInt(e(p)),"project-label":e(c)?.label||e(c)?.name},null,8,["project-id","project-label"])]),_:1},8,["actions"])]),_:1})]),body:t(()=>[n("div",Zo,[e(c)?.description||e(c)?.tags&&e(c).tags.length>0?(s(),r("div",el,[e(c)?.description?(s(),r("p",tl,i(e(c).description),1)):w("",!0),e(c)?.tags&&e(c).tags.length>0?(s(),r("div",sl,[(s(!0),r(G,null,oe(e(c).tags,l=>(s(),f(rs,{key:l.id,text:l.text,color:l.color},null,8,["text","color"]))),128))])):w("",!0)])):w("",!0),o(is,{modelValue:e(q),"onUpdate:modelValue":a[0]||(a[0]=l=>W(q)?q.value=l:null),items:e(pe),icon:e(Pe),size:"md",class:"w-full mx-1 mb-1 sm:hidden"},null,8,["modelValue","items","icon"]),o(Rs,{modelValue:e(q),"onUpdate:modelValue":a[14]||(a[14]=l=>W(q)?q.value=l:null),items:e(pe),size:"sm",class:"p-1",ui:{list:"max-sm:hidden overflow-x-auto",trigger:"shrink-0"}},{"test-runs":t(()=>[e(c)?.testRuns&&e(c).testRuns.length>0?(s(),f(Mt,{key:0,title:"Run trend",subtitle:`Test run statistics over time for ${e(c)?.label||e(c)?.name}`,help:"project.runs-trend"},{default:t(()=>[o(cs,{"test-runs":e(Ye),height:200,markers:e(Ge),onMarkerClick:Xe},null,8,["test-runs","markers"])]),_:1},8,["subtitle"])):w("",!0),o(Oe,{class:"mt-4"},{default:t(()=>[n("div",nl,[n("div",al,[o(us,{modelValue:e(he),"onUpdate:modelValue":a[1]||(a[1]=l=>W(he)?he.value=l:null),label:"Full runs only",ui:{label:"text-sm"}},null,8,["modelValue"]),o(Ie,{topic:"project.run-scope"})]),e(Be).length>0?(s(),r(G,{key:0},[a[21]||(a[21]=n("span",{class:"text-sm text-muted shrink-0"},"Environment:",-1)),(s(!0),r(G,null,oe(e(Be),l=>(s(),r("button",{key:l,type:"button",class:ie(["text-xs font-medium px-2 py-1 rounded border cursor-pointer focus:outline-none transition-colors",mt(l)?"bg-blue-100 text-blue-700 border-blue-300 dark:bg-blue-900/40 dark:text-blue-300 dark:border-blue-700":"bg-zinc-100 text-zinc-500 border-zinc-200 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-400 dark:border-zinc-700 dark:hover:bg-zinc-700"]),onClick:Se=>Ne(l)},i(l),11,ol))),128)),e(ae).length>0?(s(),f(le,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear filter",onClick:a[2]||(a[2]=l=>ae.value=[])})):w("",!0)],64)):w("",!0)]),e(ee).length>0?(s(),r("div",ll,[n("span",rl,i(e(ee).length)+" run"+i(e(ee).length>1?"s":"")+" selected ",1),e(ee).length===2?(s(),f(le,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",color:"primary",label:"Compare selected runs",onClick:Ve})):(s(),r("span",il," Select another run to compare ")),o(le,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:a[3]||(a[3]=l=>ee.value=[])})])):w("",!0),e(Le).length>0?(s(),f(tt,{key:1,data:e(Le),columns:gt,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"select-cell":t(({row:l})=>[n("input",{type:"checkbox",checked:ut(l.original.id),class:"cursor-pointer size-4 accent-primary",onClick:Nt(Se=>dt(l.original.id),["stop"])},null,8,cl)]),"id-cell":t(({row:l})=>[n("div",ul,[n("a",{href:`/test-runs/${l.original.id}`,class:"text-primary hover:underline font-medium",onClick:Nt(Se=>("navigateTo"in u?u.navigateTo:e(St))(`/test-runs/${l.original.id}`),["prevent"])}," Run #"+i(l.original.id),9,dl),l.original.label?(s(),r("span",ml,i(l.original.label),1)):w("",!0)])]),"status-cell":t(({row:l})=>[o(ds,{status:l.original.status},null,8,["status"])]),"isFullRun-header":t(()=>[n("span",pl,[a[22]||(a[22]=d("Scope ",-1)),o(Ie,{topic:"run.partial"})])]),"isFullRun-cell":t(({row:l})=>[o(ms,{text:ze(l.original)},{default:t(()=>[o(xt,{name:l.original.isFullRun===!1?"i-lucide-list-filter":"i-lucide-list-checks",class:ie(["size-4 shrink-0 cursor-help",l.original.isFullRun===!1?"text-amber-500":"text-green-500"])},null,8,["name","class"])]),_:2},1032,["text"])]),"browsers-cell":t(({row:l})=>[l.original.browsers?.length?(s(),r("div",gl,[(s(!0),r(G,null,oe(l.original.browsers,Se=>(s(),f(ps,{key:Se,browser:{projectName:Se},size:"sm"},null,8,["browser"]))),128))])):w("",!0)]),"startTime-cell":t(({row:l})=>[n("span",fl,i(("prettyDateFormat"in u?u.prettyDateFormat:e(rt))(l.original.startTime)),1)]),"environment-cell":t(({row:l})=>[l.original.environment?(s(),f(ne,{key:0,color:"info",variant:"subtle",size:"sm"},{default:t(()=>[d(i(l.original.environment),1)]),_:2},1024)):w("",!0)]),"metadata-cell":t(({row:l})=>[l.original.metadata?.scm?(s(),r("div",_l,[l.original.metadata.scm.branch?(s(),r("span",vl,i(l.original.metadata.scm.branch),1)):w("",!0),l.original.metadata.scm.commit?(s(),r("code",yl,i(l.original.metadata.scm.commit.substring(0,7)),1)):w("",!0)])):w("",!0)]),"duration-cell":t(({row:l})=>[n("div",hl,[o(gs,{passed:l.original.passedTests,failed:l.original.failedTests,skipped:l.original.skippedTests,flaky:l.original.flakyTests,"did-not-run":l.original.didNotRunTests??0,total:l.original.totalTests},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),o(Te,{ms:l.original.duration,class:"text-xs text-gray-500"},null,8,["ms"])])]),"reports-cell":t(({row:l})=>[o(fs,{reports:l.original.reports},null,8,["reports"])]),"actions-header":t(()=>[...a[23]||(a[23]=[n("div",{class:"text-right"},"Actions",-1)])]),"actions-cell":t(({row:l})=>[n("div",xl,[o(le,{to:`/test-runs/${l.original.id}`,size:"sm",variant:"outline"},{default:t(()=>[...a[24]||(a[24]=[d(" View ",-1)])]),_:1},8,["to"]),o(le,{size:"sm",color:"error",variant:"soft",icon:"i-lucide-trash-2",loading:e(A)===l.original.id,onClick:Se=>y.value=l.original.id},{default:t(()=>[...a[25]||(a[25]=[d(" Delete ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data"])):e(c)?.testRuns&&e(c).testRuns.length>0?(s(),r("div",bl," No test runs match the selected environment filter. ")):(s(),f(vs,{key:3,icon:"i-lucide-rocket",text:"No test runs yet for this project."},{default:t(()=>[n("p",kl,[a[27]||(a[27]=d(" Point the reporter's ",-1)),a[28]||(a[28]=n("code",{class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},"projectName",-1)),a[29]||(a[29]=d(" at ",-1)),n("code",$l,i(e(c)?.name),1),a[30]||(a[30]=d(" to send results here — see the ",-1)),o(_s,{to:"reporter","no-icon":"",class:"text-primary hover:underline"},{default:t(()=>[...a[26]||(a[26]=[d("reporter docs",-1)])]),_:1}),a[31]||(a[31]=d(" for setup instructions. ",-1))])]),_:1}))]),_:1})]),"failure-clusters":t(()=>[e(q)==="failure-clusters"?(s(),r(G,{key:0},[(s(),f(ys,{key:`sug-${e(de)}`,"project-id":String(e(p)),onMerged:a[4]||(a[4]=l=>de.value++)},null,8,["project-id"])),(s(),f(hs,{key:e(de),"project-id":String(e(p))},null,8,["project-id"]))],64)):w("",!0)]),"flaky-tests":t(()=>[e(q)==="flaky-tests"?(s(),f(xs,{key:0,"project-id":String(e(p)),environment:e(Ke),"project-name":e(c)?.name},null,8,["project-id","environment","project-name"])):w("",!0)]),performance:t(()=>[n("div",Cl,[a[32]||(a[32]=n("span",{class:"text-sm text-muted shrink-0"},"Date range:",-1)),o(bt,{modelValue:e(Y),"onUpdate:modelValue":a[5]||(a[5]=l=>W(Y)?Y.value=l:null),type:"date",size:"sm",placeholder:"From",class:"w-40"},null,8,["modelValue"]),a[33]||(a[33]=n("span",{class:"text-sm text-muted"},"to",-1)),o(bt,{modelValue:e(xe),"onUpdate:modelValue":a[6]||(a[6]=l=>W(xe)?xe.value=l:null),type:"date",size:"sm",placeholder:"To",class:"w-40"},null,8,["modelValue"]),e(Y)||e(xe)?(s(),f(le,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:a[7]||(a[7]=l=>{Y.value="",xe.value=""})})):w("",!0)]),o(Mt,{title:"Performance trend",subtitle:"Duration metrics over time",help:"project.performance"},{default:t(()=>[e(ss)?(s(),f(Ft,{key:0,text:"Loading chart…"})):(s(),f(bs,{key:1,data:e(ft)||[],height:350,markers:e(Ge),onMarkerClick:Xe},null,8,["data","markers"]))]),_:1}),o(Oe,null,{header:t(()=>[n("h2",Tl,[a[34]||(a[34]=d(" Slowest tests ",-1)),o(Ie,{topic:"project.slowest-tests"})]),a[35]||(a[35]=n("p",{class:"text-sm text-gray-600 mt-1"},"Top 20 slowest test cases across recent runs",-1))]),default:t(()=>[e(We)&&e(Ue)===null?(s(),f(Ft,{key:0,text:"Loading…"})):e(Ue)&&e(Ue).length>0?(s(),f(tt,{key:1,data:e(Ue),columns:ns,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":t(({row:l})=>[n("div",null,[n("div",Sl,i(l.original.title),1),n("div",jl,[o(ks,{"file-path":l.original.filePath,"project-key":e(p),"project-name":e(c)?.name,class:"text-xs"},null,8,["file-path","project-key","project-name"])])])]),"trend-cell":t(({row:l})=>[l.original.trend==="slower"?(s(),r("span",wl,"▲ Slower")):l.original.trend==="faster"?(s(),r("span",Rl,"▼ Faster")):(s(),r("span",Dl,"— Stable"))]),_:1},8,["data"])):e(vt)?(s(),r("div",Al," Couldn't load the slowest tests — try refreshing. ")):(s(),r("div",zl,"No slow test data available yet."))]),_:1}),o($s,{"project-id":String(e(p)),"project-name":e(c)?.name},null,8,["project-id","project-name"]),o(Oe,null,{header:t(()=>[n("div",Ul,[n("div",null,[n("h2",Il,[a[36]||(a[36]=d(" Run comparison ",-1)),o(Ie,{topic:"project.run-compare"})]),a[37]||(a[37]=n("p",{class:"text-sm text-gray-600 mt-1"},"Compare duration changes between two runs",-1))]),e(re).length>=2?(s(),f(le,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Compare latest vs previous",onClick:Ut})):w("",!0)])]),default:t(()=>[n("div",Ml,[n("div",Fl,[n("div",null,[a[38]||(a[38]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),o(st,{modelValue:e(te),"onUpdate:modelValue":a[8]||(a[8]=l=>W(te)?te.value=l:null),items:e(re),placeholder:"Select run A..."},null,8,["modelValue","items"])]),n("div",null,[a[39]||(a[39]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),o(st,{modelValue:e(se),"onUpdate:modelValue":a[9]||(a[9]=l=>W(se)?se.value=l:null),items:e(re),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Ze)?(s(),r("div",El,[o(xt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),a[40]||(a[40]=d(" Loading run data… ",-1))])):e(te)&&e(se)&&e(et).length>0?(s(),r("div",Pl,[n("div",Vl,[o(ne,{color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).improved)+" improved",1)]),_:1}),o(ne,{color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).regressed)+" regressed",1)]),_:1}),o(ne,{color:"neutral",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).unchanged)+" unchanged",1)]),_:1})]),o(tt,{data:e(et),columns:It,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":t(({row:l})=>[l.original.statusA?(s(),f(ne,{key:1,color:("getStatusColor"in u?u.getStatusColor:e(nt))(l.original.statusA),variant:"subtle",class:"capitalize"},{default:t(()=>[d(i(l.original.statusA),1)]),_:2},1032,["color"])):(s(),r("span",Bl,"—"))]),"statusB-cell":t(({row:l})=>[l.original.statusB?(s(),f(ne,{key:1,color:("getStatusColor"in u?u.getStatusColor:e(nt))(l.original.statusB),variant:"subtle",class:"capitalize"},{default:t(()=>[d(i(l.original.statusB),1)]),_:2},1032,["color"])):(s(),r("span",Nl,"—"))]),"durationA-cell":t(({row:l})=>[l.original.durationA!==null?(s(),f(Te,{key:0,ms:l.original.durationA},null,8,["ms"])):(s(),r("span",Ll,"—"))]),"durationB-cell":t(({row:l})=>[l.original.durationB!==null?(s(),f(Te,{key:0,ms:l.original.durationB},null,8,["ms"])):(s(),r("span",Kl,"—"))]),"delta-cell":t(({row:l})=>[l.original.delta===null?(s(),r("span",Ol,"—")):(s(),r("span",{key:1,class:ie(l.original.delta>0?"text-red-600":l.original.delta<0?"text-green-600":"text-gray-500")},[d(i(l.original.delta>0?"+":""),1),o(Te,{ms:l.original.delta,"unit-class":"opacity-60"},null,8,["ms"])],2))]),"percentChange-cell":t(({row:l})=>[l.original.percentChange===null?(s(),r("span",ql,"—")):(s(),r("span",{key:1,class:ie(l.original.percentChange>10?"text-red-600 font-medium":l.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},i(l.original.percentChange>0?"+":"")+i(l.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(s(),r("div",Hl," Select two runs to compare their performance. ")):(s(),r("div",Ql," No overlapping test cases found between the selected runs. "))])]),_:1})]),"test-cases":t(()=>[o(Cs,{"project-id":e(p),"project-name":e(c)?.name,"sync-query":"",onTotal:a[10]||(a[10]=l=>O.value=l)},null,8,["project-id","project-name"])]),compare:t(()=>[o(Oe,null,{header:t(()=>[n("div",Jl,[n("p",Gl,[a[41]||(a[41]=d(" Compare two test runs side-by-side — status changes and duration deltas ",-1)),o(Ie,{topic:"project.compare"})]),e(re).length>=2?(s(),f(le,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Latest vs previous",onClick:Ut})):w("",!0)])]),default:t(()=>[n("div",Xl,[n("div",Yl,[n("div",null,[a[42]||(a[42]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),o(st,{modelValue:e(te),"onUpdate:modelValue":a[11]||(a[11]=l=>W(te)?te.value=l:null),items:e(re),placeholder:"Select run A..."},null,8,["modelValue","items"])]),n("div",null,[a[43]||(a[43]=n("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),o(st,{modelValue:e(se),"onUpdate:modelValue":a[12]||(a[12]=l=>W(se)?se.value=l:null),items:e(re),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Ze)?(s(),r("div",Wl,[o(xt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),a[44]||(a[44]=d(" Loading run data… ",-1))])):e(te)&&e(se)&&e(et).length>0?(s(),r("div",Zl,[n("div",er,[n("div",tr,[a[45]||(a[45]=n("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Status changes",-1)),e(Z).newFailures>0?(s(),f(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).newFailures)+" new failure"+i(e(Z).newFailures>1?"s":""),1)]),_:1})):w("",!0),e(Z).recovered>0?(s(),f(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).recovered)+" recovered ",1)]),_:1})):w("",!0),e(Z).stillFailing>0?(s(),f(ne,{key:2,color:"warning",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).stillFailing)+" still failing ",1)]),_:1})):w("",!0),e(Z).newFailures===0&&e(Z).recovered===0&&e(Z).stillFailing===0?(s(),r("span",sr,"No status changes")):w("",!0)]),n("div",nr,[a[46]||(a[46]=n("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Duration changes",-1)),e(Z).regressed>0?(s(),f(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).regressed)+" regressed ",1)]),_:1})):w("",!0),e(Z).improved>0?(s(),f(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).improved)+" improved ",1)]),_:1})):w("",!0),o(ne,{color:"neutral",variant:"soft",size:"lg"},{default:t(()=>[d(i(e(Z).unchanged)+" unchanged ",1)]),_:1})])]),o(tt,{data:e(et),columns:It,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":t(({row:l})=>[l.original.statusA?(s(),f(ne,{key:1,color:("getStatusColor"in u?u.getStatusColor:e(nt))(l.original.statusA),variant:"subtle",class:"capitalize"},{default:t(()=>[d(i(l.original.statusA),1)]),_:2},1032,["color"])):(s(),r("span",ar,"—"))]),"statusB-cell":t(({row:l})=>[l.original.statusB?(s(),f(ne,{key:1,color:("getStatusColor"in u?u.getStatusColor:e(nt))(l.original.statusB),variant:"subtle",class:"capitalize"},{default:t(()=>[d(i(l.original.statusB),1)]),_:2},1032,["color"])):(s(),r("span",or,"—"))]),"durationA-cell":t(({row:l})=>[l.original.durationA!==null?(s(),f(Te,{key:0,ms:l.original.durationA},null,8,["ms"])):(s(),r("span",lr,"—"))]),"durationB-cell":t(({row:l})=>[l.original.durationB!==null?(s(),f(Te,{key:0,ms:l.original.durationB},null,8,["ms"])):(s(),r("span",rr,"—"))]),"delta-cell":t(({row:l})=>[l.original.delta===null?(s(),r("span",ir,"—")):(s(),r("span",{key:1,class:ie(l.original.delta>0?"text-red-600":l.original.delta<0?"text-green-600":"text-gray-500")},[d(i(l.original.delta>0?"+":""),1),o(Te,{ms:l.original.delta,"unit-class":"opacity-60"},null,8,["ms"])],2))]),"percentChange-cell":t(({row:l})=>[l.original.percentChange===null?(s(),r("span",cr,"—")):(s(),r("span",{key:1,class:ie(l.original.percentChange>10?"text-red-600 font-medium":l.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},i(l.original.percentChange>0?"+":"")+i(l.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(s(),r("div",ur," Select two runs to compare test results. ")):(s(),r("div",dr," No overlapping test cases found between the selected runs. "))])]),_:1})]),"spec-health":t(()=>[o(Ts,{"project-id":String(e(p))},null,8,["project-id"])]),quarantine:t(()=>[o(Ss,{"project-id":String(e(p)),"project-name":e(c)?.name},null,8,["project-id","project-name"])]),members:t(()=>[o(Oe,null,{header:t(()=>[n("div",mr,[n("p",pr,[a[47]||(a[47]=d(" Users with access to this project ",-1)),o(Ie,{topic:"project.members"})]),o(le,{label:"Save changes",icon:"i-lucide-check",size:"sm",disabled:!e(ge),onClick:C},null,8,["disabled"])])]),default:t(()=>[e(ue).length>0?(s(),r("div",gr,[(s(!0),r(G,null,oe(e(ue),l=>(s(),r("div",{key:l.id,class:"flex items-center justify-between rounded-lg border border-default px-4 py-3"},[n("div",null,[n("div",fr,i(l.name||l.username),1),n("div",_r,[n("span",null,"@"+i(l.username),1),o(ne,{color:l.role==="administrator"?"primary":l.role==="reporter"?"info":"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(i(l.role),1)]),_:2},1032,["color"]),l.global?(s(),r("span",vr,"Global access")):w("",!0)])]),l.role!=="administrator"?(s(),f(js,{key:0,"model-value":e(P).includes(l.id),disabled:l.global,title:l.global?"Has global access — remove global assignment first":"",onChange:Se=>v(l.id)},null,8,["model-value","disabled","title","onChange"])):(s(),r("span",yr,"Admin"))]))),128))])):(s(),r("div",hr,"Loading members…"))]),_:1})]),timeline:t(()=>[o(ws,{"project-id":Number(e(p)),markers:e(X),environments:e(Be),"can-edit":e(pt),"focus-marker-id":e(Ae),onChanged:e(I),onClearFocus:a[13]||(a[13]=l=>Ae.value=null)},null,8,["project-id","markers","environments","can-edit","focus-marker-id","onChanged"])]),_:1},8,["modelValue","items"])])]),_:1}),o(Pt,null,{default:t(()=>[o(Et,{open:e(F),title:"Delete project","onUpdate:open":a[17]||(a[17]=l=>{l||(F.value=!1)})},{body:t(()=>[n("div",xr,[n("p",br,[a[48]||(a[48]=d(" This will permanently delete ",-1)),n("strong",null,i(e(c)?.label||e(c)?.name),1),a[49]||(a[49]=d(" and all its test runs, reports, traces, and failure clusters. This action cannot be undone. ",-1))]),n("div",null,[n("label",kr,[a[50]||(a[50]=d(" Type the project key ",-1)),n("code",$r,i(e(c)?.name),1),a[51]||(a[51]=d(" to confirm: ",-1))]),o(bt,{modelValue:e(K),"onUpdate:modelValue":a[15]||(a[15]=l=>W(K)?K.value=l:null),placeholder:e(c)?.name,autofocus:"",onKeydown:Ps($,["enter"])},null,8,["modelValue","placeholder"])])])]),footer:t(()=>[o(le,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[16]||(a[16]=l=>F.value=!1)}),o(le,{color:"error",label:"Delete project",icon:"i-lucide-trash-2",disabled:!e(g),loading:e(T),onClick:$},null,8,["disabled","loading"])]),_:1},8,["open"])]),_:1}),o(Pt,null,{default:t(()=>[o(Et,{open:e(y)!==null,title:"Delete test run","onUpdate:open":a[20]||(a[20]=l=>{l||(y.value=null)})},{body:t(()=>[n("p",null,[a[52]||(a[52]=d(" Are you sure you want to delete ",-1)),n("strong",null,"Run #"+i(e(y)),1),a[53]||(a[53]=d("? This will also remove all associated test results, reports, and traces. This action cannot be undone. ",-1))])]),footer:t(()=>[o(le,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[18]||(a[18]=l=>y.value=null)}),o(le,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:e(A)===e(y),onClick:a[19]||(a[19]=l=>Q(e(y)))},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{Di as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u}from"./CHNwfU1y.js";import{b as l,ax as f}from"./NQikbhmK.js";import{g as w}from"./CDk0q2hV.js";function p(a){let r="";for(let o=0;o<a.length;o+=32768)r+=String.fromCharCode(...a.subarray(o,o+32768));return btoa(r)}function y(){const a=u(),r=l();async function e(o,i,n={}){const s=f();if(!s){window.open(o,"_blank");return}try{const t=await fetch(o,{credentials:"include"});if(!t.ok)throw new Error(`Request failed (${t.status})`);const c=n.binary?p(new Uint8Array(await t.arrayBuffer())):await t.text(),d=await s.invoke("desktop_save_download",{filename:i,contents:c,encoding:n.binary?"base64":"utf8"});r.add({title:"Saved to Downloads",description:d,color:"success",icon:"i-lucide-download"})}catch(t){r.add({title:"Download failed",description:w(t),color:"error"})}}return{isDesktop:a,download:e}}export{y as u};
|