@piwitests/server 0.19.0 → 0.20.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/{eptP4pGv.js → -f7BAm1H.js} +1 -1
- package/.output/public/_nuxt/{Bti38m-M.js → 4gYNA-d4.js} +1 -1
- package/.output/public/_nuxt/{CHEFCN8Q.js → 5A6ITZXj.js} +1 -1
- package/.output/public/_nuxt/{DoUy4UHi.js → 8PUUncmO.js} +2 -2
- package/.output/public/_nuxt/{DS636elg.js → A1pj0VnG.js} +1 -1
- package/.output/public/_nuxt/{B9WhzpKO.js → AbmKWFQQ.js} +1 -1
- package/.output/public/_nuxt/{rWNTSFD6.js → B3obW6cw.js} +3 -3
- package/.output/public/_nuxt/{Bu2aaVIY.js → B7FTvFWq.js} +1 -1
- package/.output/public/_nuxt/{CpjgB2aY.js → B8zkOmwo.js} +1 -1
- package/.output/public/_nuxt/B96M2gdj.js +1 -0
- package/.output/public/_nuxt/{FUXhyidq.js → B99fbi73.js} +1 -1
- package/.output/public/_nuxt/{DslPMqfa.js → B9OLmp0f.js} +1 -1
- package/.output/public/_nuxt/{BccXfBfI.js → BKkF4pPD.js} +1 -1
- package/.output/public/_nuxt/{DP8hfJ9h.js → BT3wGCTI.js} +1 -1
- package/.output/public/_nuxt/{B3B9Ii2A.js → BUa0V0Ly.js} +1 -1
- package/.output/public/_nuxt/{B3HO8kuh.js → BUkim3TM.js} +1 -1
- package/.output/public/_nuxt/{BVaxh6Nl.js → BVc14Ncz.js} +3 -3
- package/.output/public/_nuxt/{DW0xl3I6.js → BY0HxR3t.js} +1 -1
- package/.output/public/_nuxt/B_xAMWQS.js +2 -0
- package/.output/public/_nuxt/{C2_3mdPC.js → BdQoBaOv.js} +1 -1
- package/.output/public/_nuxt/{DT53RWbC.js → BdfhYr-u.js} +1 -1
- package/.output/public/_nuxt/{CtQBsNUb.js → BgRu_3tT.js} +1 -1
- package/.output/public/_nuxt/{SlIRLREZ.js → BiO7RBWb.js} +1 -1
- package/.output/public/_nuxt/BicAJ6U8.js +1 -0
- package/.output/public/_nuxt/{C7P1UCO2.js → Bm62iDV5.js} +1 -1
- package/.output/public/_nuxt/{CZfMdzfk.js → BmUfSNMV.js} +1 -1
- package/.output/public/_nuxt/{tvgqrYDd.js → Bnxf8nbZ.js} +1 -1
- package/.output/public/_nuxt/{ndShiWE8.js → Bow4tTR0.js} +1 -1
- package/.output/public/_nuxt/{D0HNloZ9.js → BrQEE053.js} +1 -1
- package/.output/public/_nuxt/{CV9-fTmY.js → BzRRzmwm.js} +1 -1
- package/.output/public/_nuxt/{DprVVyUQ.js → C0_yH0N7.js} +1 -1
- package/.output/public/_nuxt/{DLSrtpsA.js → C1gTN4Q8.js} +1 -1
- package/.output/public/_nuxt/{ClOqkAcc.js → C2hkrSey.js} +1 -1
- package/.output/public/_nuxt/{ZFiQCMUB.js → C8e1EbJI.js} +1 -1
- package/.output/public/_nuxt/{nv9-6vBK.js → CA9B2HE5.js} +1 -1
- package/.output/public/_nuxt/{KnfsST6Y.js → CAAwCT7H.js} +1 -1
- package/.output/public/_nuxt/{ybDYeNxd.js → CAvY22RE.js} +1 -1
- package/.output/public/_nuxt/{C5iG7O4O.js → CEfS4-oS.js} +1 -1
- package/.output/public/_nuxt/{Bp5ELvx9.js → CIoSMkpp.js} +1 -1
- package/.output/public/_nuxt/{C95YAaJq.js → CIrFl3MW.js} +1 -1
- package/.output/public/_nuxt/{DiOLdHBC.js → CJFtzlQ4.js} +1 -1
- package/.output/public/_nuxt/{BX9ZXe98.js → CNyV9YpI.js} +1 -1
- package/.output/public/_nuxt/CSJ-eOQM.js +1 -0
- package/.output/public/_nuxt/{fVcG504p.js → CTU1mrhq.js} +1 -1
- package/.output/public/_nuxt/{279D2RYp.js → CXEH9OPk.js} +1 -1
- package/.output/public/_nuxt/CahpB9Z2.js +5 -0
- package/.output/public/_nuxt/{B7NBP1C-.js → Cbh--1MW.js} +1 -1
- package/.output/public/_nuxt/CeG9pBAD.js +1 -0
- package/.output/public/_nuxt/{D55D4EYo.js → CeW8v31b.js} +1 -1
- package/.output/public/_nuxt/{BuMC3WjZ.js → CjPfj7ya.js} +1 -1
- package/.output/public/_nuxt/{HXerICAi.js → Cnsmicv2.js} +1 -1
- package/.output/public/_nuxt/{DgE2YE3R.js → CsLojMwR.js} +1 -1
- package/.output/public/_nuxt/{C9_jrmk9.js → Cus22Ud3.js} +2 -2
- package/.output/public/_nuxt/{DX-MDGb3.js → CwGWJbiy.js} +1 -1
- package/.output/public/_nuxt/{BJ0XQElc.js → Cx6gc2VW.js} +1 -1
- package/.output/public/_nuxt/{cHAnlQbv.js → CxyAzHr3.js} +1 -1
- package/.output/public/_nuxt/{BxCKKeYs.js → CzAPFPpL.js} +1 -1
- package/.output/public/_nuxt/{B33iXw77.js → D--H4jLI.js} +1 -1
- package/.output/public/_nuxt/D1POo6S4.js +10 -0
- package/.output/public/_nuxt/{BDicZ1gQ.js → D5tke0B5.js} +1 -1
- package/.output/public/_nuxt/D8nkF-OO.js +3 -0
- package/.output/public/_nuxt/{CzGyac8q.js → DA25RkyK.js} +1 -1
- package/.output/public/_nuxt/{CUtJobDm.js → DIB-5fUJ.js} +1 -1
- package/.output/public/_nuxt/{BPRffDuo.js → DJmoLeVt.js} +1 -1
- package/.output/public/_nuxt/{DGfAxLHV.js → DJxlKFGb.js} +1 -1
- package/.output/public/_nuxt/{81InBX9v.js → DMec-OLo.js} +1 -1
- package/.output/public/_nuxt/{CK_2LZBS.js → DPCxhHri.js} +1 -1
- package/.output/public/_nuxt/{Bn0YQDyy.js → DSqHUrvO.js} +1 -1
- package/.output/public/_nuxt/{BqV0l12c.js → DabzhQB1.js} +1 -1
- package/.output/public/_nuxt/{BfTuX0wq.js → DdwHkKfV.js} +1 -1
- package/.output/public/_nuxt/{C-elpgyr.js → DeY2JkR2.js} +1 -1
- package/.output/public/_nuxt/{DEFEpYzn.js → DfgOx_ou.js} +1 -1
- package/.output/public/_nuxt/DmkUdSS4.js +1 -0
- package/.output/public/_nuxt/{Ar3IelOY.js → DoIREDVb.js} +1 -1
- package/.output/public/_nuxt/DpZ1r1HA.js +1 -0
- package/.output/public/_nuxt/{Jo8kRmHz.js → Dpd16JVI.js} +1 -1
- package/.output/public/_nuxt/{BSIxhGsh.js → DqcKngf3.js} +1 -1
- package/.output/public/_nuxt/{BMvCSA6h.js → DrfE8IY0.js} +1 -1
- package/.output/public/_nuxt/{eaVkJRSa.js → DsesNydr.js} +1 -1
- package/.output/public/_nuxt/{zQyPuvV1.js → DtHJgCS8.js} +1 -1
- package/.output/public/_nuxt/Dtd4rC58.js +9 -0
- package/.output/public/_nuxt/{NQikbhmK.js → Du2W7Jne.js} +37 -36
- package/.output/public/_nuxt/{CDk0q2hV.js → DuwtTfO8.js} +1 -1
- package/.output/public/_nuxt/{B44A4LSJ.js → Dy-TJ0Mt.js} +1 -1
- package/.output/public/_nuxt/{-09h6CA9.js → Dy86h-7P.js} +1 -1
- package/.output/public/_nuxt/{Cdff9XNh.js → Dyeqn3aG.js} +1 -1
- package/.output/public/_nuxt/{Dnpkl-1q.js → FaFoMVKo.js} +1 -1
- package/.output/public/_nuxt/GPNI1ffD.js +4 -0
- package/.output/public/_nuxt/{BCMuIgP5.js → H94BMf3L.js} +1 -1
- package/.output/public/_nuxt/HPNQD6v3.js +1 -0
- package/.output/public/_nuxt/HXadJrHu.js +2 -0
- package/.output/public/_nuxt/{YVN7WG7q.js → KyA_4Ks-.js} +1 -1
- package/.output/public/_nuxt/{CYsTqbBS.js → L3kAWB2a.js} +1 -1
- package/.output/public/_nuxt/{Dk9fwOCm.js → McL25vkx.js} +2 -2
- package/.output/public/_nuxt/Nn93e_Mz.js +1 -0
- package/.output/public/_nuxt/UdR3DBPS.js +1 -0
- package/.output/public/_nuxt/{SfMRXW25.js → Und3xXFc.js} +1 -1
- package/.output/public/_nuxt/_mj6CfPa.js +1 -0
- package/.output/public/_nuxt/{BPQoBGg5.js → b-GYfcrQ.js} +1 -1
- package/.output/public/_nuxt/{DHDtnj7p.js → bLcjFslv.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +1 -0
- package/.output/public/_nuxt/entry.DmptwB51.css +1 -0
- package/.output/public/_nuxt/{y17lMTFy.js → hC_z4G8p.js} +1 -1
- package/.output/public/_nuxt/{CTxDO9fB.js → hNh4CIL0.js} +1 -1
- package/.output/public/_nuxt/{CGNkHojN.js → l5WKbU4h.js} +1 -1
- package/.output/public/_nuxt/{DcmZRa_F.js → oAClCn_h.js} +1 -1
- package/.output/public/_nuxt/{IvQlbZk6.js → pQqGiNch.js} +1 -1
- package/.output/public/_nuxt/ryMzSDUj.js +2 -0
- 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/_/users.mjs +1 -1
- package/.output/server/chunks/build/{BrowserBadge-D33lqUcj.mjs → BrowserBadge-MFvBwxmD.mjs} +66 -6
- package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-DvUBGagc.mjs → Checkbox-4Q5d0fa0.mjs} +4 -4
- package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +1 -0
- package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs +1492 -0
- package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +1 -0
- package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs +1 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs +1 -1
- package/.output/server/chunks/build/{DiagnosisPanel-B646dK4p.mjs → DiagnosisPanel-CALyEmcJ.mjs} +3 -3
- package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.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-BBHWssHH.mjs} +4 -4
- package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-Bg3FSiU1.mjs → EnvManagedBadge-UwD2b9v2.mjs} +2 -2
- package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.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/{OpenInIdeLink-C4MXA8ya.mjs → OpenInIdeLink-CQWKKChd.mjs} +3 -3
- package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs.map → OpenInIdeLink-CQWKKChd.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs → ProjectTestCasesTable-Bo61P5K1.mjs} +8 -8
- package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs.map → ProjectTestCasesTable-Bo61P5K1.mjs.map} +1 -1
- 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 +1 -1
- package/.output/server/chunks/build/{Select-CUqj50wi.mjs → Select-5DK9frQ7.mjs} +3 -3
- package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs → SelectMenu-D-2FSqBU.mjs} +939 -7
- package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs.map → SelectMenu-D-2FSqBU.mjs.map} +1 -1
- package/.output/server/chunks/build/{SettingsField-D6iEYbEc.mjs → SettingsField-BZfx4ma1.mjs} +2 -2
- package/.output/server/chunks/build/SettingsField-BZfx4ma1.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/{Switch-CgUioOYB.mjs → Switch-B5Fp8ULt.mjs} +2 -2
- package/.output/server/chunks/build/Switch-B5Fp8ULt.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-CSi64vVA.mjs} +5 -5
- package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-j6h2Jp6A.mjs → TestStatusBar-DX3EhlyP.mjs} +2 -2
- package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.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_-BdG37K7s.mjs} +12 -12
- package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-BHh65pfg.mjs → _id_-BdJs7BJZ.mjs} +57 -33
- package/.output/server/chunks/build/{_id_-BHh65pfg.mjs.map → _id_-BdJs7BJZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-B78ky13D.mjs → _id_-BxA6IgWr.mjs} +96 -73
- package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs → _id_-C_uSBiyU.mjs} +22 -23
- package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs.map → _id_-C_uSBiyU.mjs.map} +1 -1
- package/.output/server/chunks/build/{about-CvSP73Ug.mjs → about-BE0UV-8-.mjs} +365 -18
- package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs → ai-Cn05ch0u.mjs} +9 -9
- package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs.map → ai-Cn05ch0u.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-CJPC6t4L.mjs → analytics-Bo_B_jko.mjs} +20 -21
- package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-zvbFgDJG.mjs → default-CbNHaFsy.mjs} +603 -71
- package/.output/server/chunks/build/default-CbNHaFsy.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs → docs-B_llWMxx.mjs} +6 -6
- package/.output/server/chunks/build/{docs-DyuVEgtB.mjs.map → docs-B_llWMxx.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-CFR5g2Qf.mjs → edit-J0asTFg8.mjs} +4 -5
- package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +1 -0
- package/.output/server/chunks/build/fetch-B4FwBOzu.mjs +1 -1
- package/.output/server/chunks/build/{import-CZo3djDi.mjs → import-CS9oylTN.mjs} +4 -4
- package/.output/server/chunks/build/import-CS9oylTN.mjs.map +1 -0
- package/.output/server/chunks/build/{index-Stqw0dEI.mjs → index-DE45ycdZ.mjs} +9 -9
- package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +1 -0
- package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs → index-e9skCi-V.mjs} +10 -11
- package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs.map → index-e9skCi-V.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-D7fe97l3.mjs → index-hGHlmyxj.mjs} +299 -91
- package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +1 -0
- package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
- package/.output/server/chunks/build/login-Da4u1IlW.mjs +1 -1
- package/.output/server/chunks/build/{mcp-B3IUvRgD.mjs → mcp-uhVCCwQM.mjs} +339 -10
- package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-abDv0id8.mjs → notifications-fx_qnKGA.mjs} +4 -4
- package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-DjZID6q-.mjs → pr-feedback-X6-70iF0.mjs} +3 -3
- package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +24 -24
- package/.output/server/chunks/build/{settings-Du7YqF8i.mjs → settings-CCYe7rsc.mjs} +3 -3
- package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-B4vzxd8G.mjs → storage-CJEmviCD.mjs} +5 -5
- package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-DUvaO1He.mjs → test-cases-thBbAykw.mjs} +9 -9
- package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-CWvIo32Q.mjs → useAiStatus-CxjMmDDY.mjs} +8 -8
- package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-BemRsKgv.mjs → useCopyRich-RJKhWoyj.mjs} +74 -44
- package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopDownload-D49JRQSw.mjs → useDesktopDownload-BepjqxOt.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-4GFf-kdi.mjs → useOpenInIde-BbTnPhFA.mjs} +2 -2
- package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-C3O866KC.mjs → useSettingsNav-DnQKacz8.mjs} +4 -4
- package/.output/server/chunks/build/useSettingsNav-DnQKacz8.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/{wasted-time-lYkx5YO4.mjs → wasted-time-BNTPIyrC.mjs} +4 -4
- package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +3471 -2802
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +88 -0
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +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 +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +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 +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 +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +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 +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +5 -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 +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -2
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +4 -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 +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +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 +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/BYDaY0Z7.js +0 -1
- package/.output/public/_nuxt/Bc8mOoz9.js +0 -4
- package/.output/public/_nuxt/BeLWlVK0.js +0 -1
- package/.output/public/_nuxt/BpUaY9nH.js +0 -2
- 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/CrwJAwhk.js +0 -1
- package/.output/public/_nuxt/CuSVQEkS.js +0 -3
- package/.output/public/_nuxt/CylWPruw.js +0 -1
- package/.output/public/_nuxt/DDDpCFpF.js +0 -1
- package/.output/public/_nuxt/DVDXJYq2.js +0 -2
- package/.output/public/_nuxt/Dgf5N4Ng.js +0 -1
- package/.output/public/_nuxt/DiZyJYez.js +0 -1
- package/.output/public/_nuxt/OSduWzyz.js +0 -1
- 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/server/chunks/_/import-runs.mjs +0 -351
- package/.output/server/chunks/_/import-runs.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-D33lqUcj.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/DiagnosisPanel-B646dK4p.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/Modal-Ck2XLt8d.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.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/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/TestStatusBar-j6h2Jp6A.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_-z5N6HPyC.mjs.map +0 -1
- package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +0 -1
- package/.output/server/chunks/build/analytics-CJPC6t4L.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/import-CZo3djDi.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/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/settings-Du7YqF8i.mjs.map +0 -1
- package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-CWvIo32Q.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/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,7 +1,6 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth,
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { f as findImportedRun, i as importTraceRun, a as importBlobReportRun, t as toBytes } from '../../../_/import-runs.mjs';
|
|
1
|
+
import { e as eventHandler, f as requireAuth, a9 as resolveMaxUploadBytes, aK as getRequestHeader, i as createError, aa as formatBytes, c7 as readMultipartFormData, ac as sanitizeFilename, ab as importArchive } from '../../../nitro/nitro.mjs';
|
|
2
|
+
import 'node:crypto';
|
|
3
|
+
import 'drizzle-orm';
|
|
5
4
|
import 'path';
|
|
6
5
|
import 'fs/promises';
|
|
7
6
|
import 'zlib';
|
|
@@ -71,131 +70,8 @@ const import_post = eventHandler(async (event) => {
|
|
|
71
70
|
if (!projectName || !archive) {
|
|
72
71
|
throw createError({ statusCode: 400, message: "Missing required fields: projectName, archive" });
|
|
73
72
|
}
|
|
74
|
-
|
|
75
|
-
throw createError({ statusCode: 400, message: "The uploaded archive is empty" });
|
|
76
|
-
}
|
|
77
|
-
if (archive.data.length > maxUploadBytes) {
|
|
78
|
-
throw createError({ statusCode: 413, message: `Archive too large (max ${formatBytes(maxUploadBytes)})` });
|
|
79
|
-
}
|
|
80
|
-
const importHash = createHash("sha256").update(archive.data).digest("hex");
|
|
81
|
-
const db = await getDatabase();
|
|
82
|
-
const scope = await getProjectScope(db, user);
|
|
83
|
-
const existingProjects = await db.select().from(projects).where(eq(projects.name, projectName));
|
|
84
|
-
let project = existingProjects[0];
|
|
85
|
-
if (project) {
|
|
86
|
-
if (!scopeAllows(scope, project.id)) {
|
|
87
|
-
throw createError({ statusCode: 403, message: "No access to this project" });
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
if (scope !== "all") {
|
|
91
|
-
throw createError({ statusCode: 403, message: "Cannot create a new project \u2014 no global access" });
|
|
92
|
-
}
|
|
93
|
-
const created = await db.insert(projects).values({ name: projectName }).returning();
|
|
94
|
-
project = created[0];
|
|
95
|
-
}
|
|
96
|
-
if (!project) throw createError({ statusCode: 500, message: "Failed to create or retrieve project" });
|
|
97
|
-
const duplicate = await findImportedRun(db, project.id, importHash);
|
|
98
|
-
if (duplicate) return duplicate;
|
|
99
|
-
let opened;
|
|
100
|
-
try {
|
|
101
|
-
opened = openArchive(archive.data);
|
|
102
|
-
} catch (error) {
|
|
103
|
-
if (error instanceof ArchiveError) throw createError({ statusCode: 400, message: error.message });
|
|
104
|
-
throw error;
|
|
105
|
-
}
|
|
106
|
-
const { entryNames, readEntry } = opened;
|
|
107
|
-
const port = createServerImportPort();
|
|
108
|
-
await getStorage().mkdir(`project-${project.id}`);
|
|
109
|
-
try {
|
|
110
|
-
if (!entryNames.includes("report.jsonl")) {
|
|
111
|
-
if (!looksLikeTrace(entryNames)) {
|
|
112
|
-
throw createError({
|
|
113
|
-
statusCode: 400,
|
|
114
|
-
message: "Unrecognised archive: expected a Playwright blob report (blob-report/report-*.zip) or a trace file (trace.zip)."
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
const parsed2 = await parseTraceArchive(entryNames, readEntry);
|
|
118
|
-
const result2 = await importTraceRun(db, port, {
|
|
119
|
-
projectId: project.id,
|
|
120
|
-
parsed: parsed2,
|
|
121
|
-
bytes: archive.data,
|
|
122
|
-
importHash,
|
|
123
|
-
importGroup,
|
|
124
|
-
source: importGroup ? "trace files" : archive.filename,
|
|
125
|
-
environment,
|
|
126
|
-
label
|
|
127
|
-
});
|
|
128
|
-
console.log(`[Import] Trace "${parsed2.case.title}" imported into run #${result2.testRunId}`);
|
|
129
|
-
return result2;
|
|
130
|
-
}
|
|
131
|
-
const parsed = await parseBlobReport(readEntry);
|
|
132
|
-
if (parsed.cases.length === 0) {
|
|
133
|
-
throw createError({ statusCode: 400, message: "The archive contains no test results" });
|
|
134
|
-
}
|
|
135
|
-
const result = await importBlobReportRun(db, port, {
|
|
136
|
-
projectId: project.id,
|
|
137
|
-
parsed,
|
|
138
|
-
readEntry,
|
|
139
|
-
importHash,
|
|
140
|
-
source: archive.filename,
|
|
141
|
-
environment,
|
|
142
|
-
label
|
|
143
|
-
});
|
|
144
|
-
console.log(
|
|
145
|
-
`[Import] Run #${result.testRunId} imported from ${archive.filename}: ${result.totalTests} executions, ${result.traceCount} traces, ${result.attachmentCount} attachments`
|
|
146
|
-
);
|
|
147
|
-
return result;
|
|
148
|
-
} catch (error) {
|
|
149
|
-
if (error instanceof BlobReportError || error instanceof TraceImportError) {
|
|
150
|
-
throw createError({ statusCode: 400, message: error.message });
|
|
151
|
-
}
|
|
152
|
-
throw error;
|
|
153
|
-
}
|
|
73
|
+
return importArchive({ user, projectName, archive, environment, label, importGroup });
|
|
154
74
|
});
|
|
155
|
-
function createServerImportPort() {
|
|
156
|
-
const storage = getStorage();
|
|
157
|
-
return {
|
|
158
|
-
persistRunCases: (db, projectId, testRunId, cases) => persistRunCases(db, projectId, testRunId, cases),
|
|
159
|
-
async storeFile({
|
|
160
|
-
projectId,
|
|
161
|
-
testRunId,
|
|
162
|
-
testRunsCaseId,
|
|
163
|
-
kind,
|
|
164
|
-
entryName,
|
|
165
|
-
bytes,
|
|
166
|
-
digest
|
|
167
|
-
}) {
|
|
168
|
-
const raw = await toBytes(bytes);
|
|
169
|
-
const data = Buffer.from(raw.buffer, raw.byteOffset, raw.byteLength);
|
|
170
|
-
try {
|
|
171
|
-
if (kind === "trace") {
|
|
172
|
-
const hash = digest != null ? digest : createHash("sha256").update(data).digest("hex");
|
|
173
|
-
const blob = await upsertTraceBlob(projectId, hash, data);
|
|
174
|
-
return { path: blob.path.replace(/\\/g, "/"), size: blob.size, blobId: blob.id };
|
|
175
|
-
}
|
|
176
|
-
const dir = `project-${projectId}/run-${testRunId}/${testRunsCaseId}`;
|
|
177
|
-
await storage.mkdir(dir);
|
|
178
|
-
const path = `${dir}/${sanitizeFilename(entryName.split("/").pop() || "attachment")}`;
|
|
179
|
-
await storage.writeFile(path, data);
|
|
180
|
-
return { path: path.replace(/\\/g, "/"), size: data.length };
|
|
181
|
-
} catch (error) {
|
|
182
|
-
console.error(`[Import] Failed to store ${kind} ${entryName}: ${error}`);
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
async readTraceConsole(bytes, startedAt) {
|
|
187
|
-
try {
|
|
188
|
-
const data = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
189
|
-
return consoleLogsFromTrace(await parseTraceEvents(data), startedAt);
|
|
190
|
-
} catch {
|
|
191
|
-
return null;
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
parseErrorContext: (markdown, declLine) => parseErrorContext(markdown, { declLine }),
|
|
195
|
-
publishRunSubmitted: (payload) => runEventBus.publishGlobal({ type: "run-submitted", ...payload }),
|
|
196
|
-
warn: (message) => console.warn(`[Import] ${message}`)
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
75
|
|
|
200
76
|
export { import_post as default };
|
|
201
77
|
//# sourceMappingURL=import.post.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.post.mjs","sources":["../../../../../../server/api/test-runs/import.post.ts"],"names":[
|
|
1
|
+
{"version":3,"file":"import.post.mjs","sources":["../../../../../../server/api/test-runs/import.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,oBAAA,YAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,KAAA,CAAA;AAEA,EAAA,MAAA,iBAAA,qBAAA,EAAA;AACA,EAAA,MAAA,aAAA,GAAA,UAAA,EAAA,GAAA,gBAAA,CAAA,KAAA,EAAA,gBAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,KAAA,EAAA,CAAA;AACA,EAAA,IAAA,gBAAA,cAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,0BAAA,WAAA,CAAA,cAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,QAAA,GAAA,MAAA,qBAAA,CAAA,KAAA,CAAA;AACA,EAAA,IAAA,CAAA,UAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,CAAA;AAEA,EAAA,IAAA,WAAA;AACA,EAAA,IAAA,WAAA,GAAA,IAAA;AACA,EAAA,IAAA,KAAA,GAAA,IAAA;AACA,EAAA,IAAA,WAAA,GAAA,IAAA;AACA,EAAA,IAAA,OAAA;AAEA,EAAA,KAAA,MAAA,QAAA,QAAA,EAAA;AACA,IAAA,IAAA,IAAA,CAAA,SAAA,aAAA,EAAA,WAAA,GAAA,KAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA,IAAA,EAAA;AAAA,SAAA,IACA,IAAA,CAAA,IAAA,KAAA,aAAA,EAAA,WAAA,GAAA,IAAA,CAAA,KAAA,QAAA,CAAA,OAAA,CAAA,CAAA,IAAA,EAAA,IAAA,IAAA;AAAA,SAAA,IACA,IAAA,CAAA,IAAA,KAAA,OAAA,EAAA,KAAA,GAAA,IAAA,CAAA,KAAA,QAAA,CAAA,OAAA,CAAA,CAAA,IAAA,EAAA,IAAA,IAAA;AAAA,SAAA,IACA,IAAA,CAAA,SAAA,aAAA,EAAA;AACA,MAAA,MAAA,KAAA,GAAA,KAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA,IAAA,GAAA,WAAA,EAAA;AACA,MAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,KAAA,CAAA,EAAA,WAAA,GAAA,KAAA;AAAA,IACA,CAAA,MAAA,IAAA,IAAA,CAAA,IAAA,KAAA,SAAA,IAAA,KAAA,QAAA,EAAA;AACA,MAAA,OAAA,GAAA,EAAA,UAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA;AAAA,IACA;AAAA,EACA;AAEA,EAAA,IAAA,CAAA,WAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,iDAAA,CAAA;AAAA,EACA;AAEA,EAAA,OAAA,aAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,SAAA,WAAA,EAAA,KAAA,EAAA,aAAA,CAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, g as getDatabase, B as getProjectScope,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, g as getDatabase, B as getProjectScope, cG as getRecentTestRuns } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import 'node:crypto';
|
|
3
3
|
import 'drizzle-orm';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects, cD as scopeAllows, t as testRuns, aZ as runEventBus, c6 as persistShardToken, c4 as cancelInstanceRuns } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { randomBytes } from 'node:crypto';
|
|
3
3
|
import { eq, and } from 'drizzle-orm';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects, cD as scopeAllows, t as testRuns, aZ as runEventBus, c6 as persistShardToken, c4 as cancelInstanceRuns, c5 as sanitizeMetadata } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { randomBytes } from 'node:crypto';
|
|
3
3
|
import { eq, and, or } from 'drizzle-orm';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, B as getProjectScope, n as projects, cD as scopeAllows, t as testRuns, ct as sumFailedAndTimedOut, c9 as parseLocation, co as persistRunCases, cs as durationStats, aZ as runEventBus, c4 as cancelInstanceRuns, c5 as sanitizeMetadata, cw as autoDiagnoseRun, cx as emitRunNotifications, cy as postRunPrFeedbackInBackground } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq, and, or, sql } from 'drizzle-orm';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, a9 as resolveMaxUploadBytes, aK as getRequestHeader, i as createError, aa as formatBytes, c7 as readMultipartFormData, ac as sanitizeFilename, g as getDatabase, B as getProjectScope, k as getStorage, t as testRuns, n as projects, cD as scopeAllows, c5 as sanitizeMetadata, ct as sumFailedAndTimedOut, aZ as runEventBus, b_ as files, cv as computeRegressionSignals, cw as autoDiagnoseRun, cy as postRunPrFeedbackInBackground, c9 as parseLocation, co as persistRunCases, cb as upsertTraceBlob, cc as findTraceBlob, cs as durationStats, cH as decompressDirectory, cI as uploadDirectory } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import { tmpdir } from 'os';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, i as createError, g as getDatabase, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, i as createError, g as getDatabase, n as projects, a$ as deleteProject, o as tags, q as projectTags } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { inArray, like, eq } from 'drizzle-orm';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'path';
|
|
@@ -65,6 +65,8 @@ const PROJECT = {
|
|
|
65
65
|
DASHBOARD_PERF: "dashboard-perf-tracking",
|
|
66
66
|
DEFAULT_PROJECT: "default-project",
|
|
67
67
|
DELETE_TEST: "delete-test-project",
|
|
68
|
+
DESKTOP_LOCAL_IMPORT: "desktop-local-import-test",
|
|
69
|
+
DESKTOP_LOCAL_RUN: "desktop-local-run-test",
|
|
68
70
|
DIAGNOSE_STREAM: "diagnose-stream-test",
|
|
69
71
|
DOWNLOAD_TEST: "download-test-project",
|
|
70
72
|
DUP_UI: "dup-ui-project",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.delete.mjs","sources":["../../../../../../shared/test-project-names.ts","../../../../../../server/api/tests/cleanup.delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,OAAA,GAAU;AAAA,EACrB,cAAA,EAAgB,wBAAA;AAAA,EAChB,WAAA,EAAa,qBAAA;AAAA,EACb,cAAA,EAAgB,qBAAA;AAAA,EAChB,gBAAA,EAAkB,uBAAA;AAAA,EAClB,SAAA,EAAW,mBAAA;AAAA,EACX,OAAA,EAAS,sBAAA;AAAA,EACT,YAAA,EAAc,mBAAA;AAAA,EACd,qBAAA,EAAuB,4BAAA;AAAA,EACvB,cAAA,EAAgB,qBAAA;AAAA,EAChB,eAAA,EAAiB,sBAAA;AAAA,EACjB,aAAA,EAAe,oBAAA;AAAA,EACf,cAAA,EAAgB,qBAAA;AAAA,EAChB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,eAAA,EAAiB,sBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB,kBAAA,EAAoB,yBAAA;AAAA,EACpB,cAAA,EAAgB,yBAAA;AAAA,EAChB,eAAA,EAAiB,iBAAA;AAAA,EACjB,WAAA,EAAa,qBAAA;AAAA,EACb,eAAA,EAAiB,sBAAA;AAAA,EACjB,aAAA,EAAe,uBAAA;AAAA,EACf,MAAA,EAAQ,gBAAA;AAAA,EACR,SAAA,EAAW,mBAAA;AAAA,EACX,SAAA,EAAW,mBAAA;AAAA,EACX,cAAA,EAAgB,qBAAA;AAAA,EAChB,aAAA,EAAe,eAAA;AAAA,EACf,OAAA,EAAS,cAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,cAAA,EAAgB,oBAAA;AAAA,EAChB,SAAA,EAAW,gBAAA;AAAA,EACX,QAAA,EAAU,eAAA;AAAA,EACV,aAAA,EAAe,oBAAA;AAAA,EACf,SAAA,EAAW,gBAAA;AAAA,EACX,gBAAA,EAAkB,uBAAA;AAAA,EAClB,MAAA,EAAQ,aAAA;AAAA,EACR,UAAA,EAAY,iBAAA;AAAA,EACZ,cAAA,EAAgB,qBAAA;AAAA,EAChB,YAAA,EAAc,mBAAA;AAAA,EACd,aAAA,EAAe,oBAAA;AAAA,EACf,gBAAA,EAAkB,uBAAA;AAAA,EAClB,QAAA,EAAU,eAAA;AAAA,EACV,gBAAA,EAAkB,uBAAA;AAAA,EAClB,WAAA,EAAa,kBAAA;AAAA,EACb,WAAA,EAAa,kBAAA;AAAA,EACb,SAAA,EAAW,gBAAA;AAAA,EACX,UAAA,EAAY,yBAAA;AAAA,EACZ,SAAA,EAAW,mBAAA;AAAA,EACX,cAAA,EAAgB,gBAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,WAAA,EAAa,kBAAA;AAAA,EACb,cAAA,EAAgB,qBAAA;AAAA,EAChB,YAAA,EAAc,mBAAA;AAAA,EACd,kBAAA,EAAoB,yBAAA;AAAA,EACpB,kBAAA,EAAoB,yBAAA;AAAA,EACpB,UAAA,EAAY,oBAAA;AAAA,EACZ,WAAA,EAAa,kBAAA;AAAA,EACb,oBAAA,EAAsB,2BAAA;AAAA,EACtB,WAAA,EAAa,kBAAA;AAAA,EACb,YAAA,EAAc,mBAAA;AAAA,EACd,cAAA,EAAgB,wBAAA;AAAA,EAChB,eAAA,EAAiB,iBAAA;AAAA,EACjB,YAAA,EAAc,sBAAA;AAAA,EACd,SAAA,EAAW,mBAAA;AAAA,EACX,QAAA,EAAU,kBAAA;AAAA,EACV,kBAAA,EAAoB,yBAAA;AAAA,EACpB,aAAA,EAAe,uBAAA;AAAA,EACf,OAAA,EAAS,iBAAA;AAAA,EACT,qBAAA,EAAuB,4BAAA;AAAA,EACvB,YAAA,EAAc,sBAAA;AAAA,EACd,QAAA,EAAU,kBAAA;AAAA,EACV,WAAA,EAAa,kBAAA;AAAA,EACb,UAAA,EAAY,YAAA;AAAA,EACZ,SAAA,EAAW,mBAAA;AAAA,EACX,aAAA,EAAe,uBAAA;AAAA,EACf,OAAA,EAAS,iBAAA;AAAA,EACT,eAAA,EAAiB,sBAAA;AAAA,EACjB,UAAA,EAAY,iBAAA;AAAA,EACZ,kBAAA,EAAoB,yBAAA;AAAA,EACpB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,iBAAA,EAAmB,wBAAA;AAAA,EACnB,aAAA,EAAe,oBAAA;AAAA,EACf,kBAAA,EAAoB,yBAAA;AAAA,EACpB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,gBAAA,EAAkB,uBAAA;AAAA,EAClB,eAAA,EAAiB,yBAAA;AAAA,EACjB,WAAA,EAAa,kBAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAW,gBAAA;AAAA,EACX,gBAAA,EAAkB,kBAAA;AAAA,EAClB,aAAA,EAAe,eAAA;AAAA,EACf,UAAA,EAAY,oBAAA;AAAA,EACZ,YAAA,EAAc,mBAAA;AAAA,EACd,YAAA,EAAc,sBAAA;AAAA,EACd,kBAAA,EAAoB,yBAAA;AAAA,EACpB,eAAA,EAAiB,sBAAA;AAAA,EACjB,cAAA,EAAgB,wBAAA;AAAA,EAChB,cAAA,EAAgB,6BAAA;AAAA,EAChB,QAAA,EAAU,kBAAA;AAAA,EACV,kBAAA,EAAoB,yBAAA;AAAA,EACpB,UAAA,EAAY,oBAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EACd,kBAAA,EAAoB,yBAAA;AAAA,EACpB,SAAA,EAAW,yBAAA;AAAA,EACX,WAAA,EAAa,kBAAA;AAAA,EACb,cAAA,EAAgB,qBAAA;AAAA,EAChB,eAAA,EAAiB,sBAAA;AAAA,EACjB,eAAA,EAAiB,sBAAA;AAAA,EACjB,UAAA,EAAY,iBAAA;AAAA,EACZ,UAAA,EAAY,YAAA;AAAA,EACZ,OAAA,EAAS,iBAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,WAAA,EAAa;AACf,CAAA;AAIO,MAAM,kBAAA,GAAqC,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA;;
|
|
1
|
+
{"version":3,"file":"cleanup.delete.mjs","sources":["../../../../../../shared/test-project-names.ts","../../../../../../server/api/tests/cleanup.delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, h as readBody, i as createError, g as getDatabase, n as projects, cJ as checkExistingBlobs } from '../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, _ as Role, h as readBody,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, _ as Role, h as readBody, cL as generateApiKey, g as getDatabase } from '../../../../nitro/nitro.mjs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { c as createUserApiKeyRecord } from '../../../../_/users.mjs';
|
|
4
4
|
import 'node:crypto';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, g as getDatabase, D as users, I as isEmailConfigured, J as mintAccountToken,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, g as getDatabase, D as users, I as isEmailConfigured, J as mintAccountToken, cM as renderInviteEmail, L as sendEmail } from '../../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, g as getDatabase, D as users, _ as Role,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, g as getDatabase, D as users, _ as Role, cN as getUserAssignments } from '../../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'path';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, h as readBody, g as getDatabase, D as users, _ as Role, n as projects,
|
|
1
|
+
import { e as eventHandler, f as requireAuth, A as getRouterParam, i as createError, h as readBody, g as getDatabase, D as users, _ as Role, n as projects, cO as setUserAssignments } from '../../../../nitro/nitro.mjs';
|
|
2
2
|
import { eq, inArray } from 'drizzle-orm';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import 'node:crypto';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as eventHandler,
|
|
1
|
+
import { e as eventHandler, aq as setResponseHeaders, aL as setResponseStatus, f as requireAuth, g as getDatabase, B as getProjectScope, cR as RPC, h as readBody, aj as setResponseHeader, cS as rpcErr, cT as ok, cU as toContent, cV as MCP_TOOLS, cW as MCP_SERVER_INFO, cX as negotiateProtocolVersion } from '../nitro/nitro.mjs';
|
|
2
2
|
import 'node:crypto';
|
|
3
3
|
import 'drizzle-orm';
|
|
4
4
|
import 'path';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { cY as buildAssetsURL, cZ as publicAssetsURL, bp as useRuntimeConfig, c_ as encodePath, c$ as defineRenderHandler, C as getQuery, i as createError, d0 as destr, d1 as getRouteRules, d2 as getResponseStatusText, d3 as getResponseStatus, d4 as useNitroApp } from '../nitro/nitro.mjs';
|
|
3
3
|
import { renderToString } from 'vue/server-renderer';
|
|
4
4
|
import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server';
|
|
5
5
|
import { stringify, uneval } from 'devalue';
|
package/.output/server/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import process from 'node:process';globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http';
|
|
2
2
|
import 'node:https';
|
|
3
|
-
export {
|
|
3
|
+
export { dK as default } from './chunks/nitro/nitro.mjs';
|
|
4
4
|
import 'node:crypto';
|
|
5
5
|
import 'drizzle-orm';
|
|
6
6
|
import 'path';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as m,H as h,o as n,f as o,W as p,bH as g,bb as E,h as d,c as f,v as B,F as y,y as V}from"./NQikbhmK.js";var k=m({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,{primitiveElement:s,currentElement:l}=E(),t=d(()=>e.checked??e.value);return h(t,(r,a)=>{if(!l.value)return;const u=l.value,b=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(b,"value").set;if(v&&r!==a){const _=new Event("input",{bubbles:!0}),q=new Event("change",{bubbles:!0});v.call(u,r),u.dispatchEvent(_),u.dispatchEvent(q)}}),(r,a)=>(n(),o(g,p({ref_key:"primitiveElement",ref:s},{...e,...r.$attrs},{as:"input"}),null,16))}}),c=k,A=m({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,s=d(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),l=d(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,r)=>typeof t=="object"?Object.entries(t).map(([a,u])=>({name:`${e.name}[${r}][${a}]`,value:u})):{name:`${e.name}[${r}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,r])=>({name:`${e.name}[${t}]`,value:r})):[]);return(t,r)=>(n(),f(y,null,[B(" We render single input if it's required "),s.value?(n(),o(c,p({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(n(!0),f(y,{key:1},V(l.value,a=>(n(),o(c,p({key:a.name},{ref_for:!0},{...e,...t.$attrs},{name:a.name,value:a.value}),null,16,["name","value"]))),128))],2112))}}),I=A;export{I as V};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{_ as ra}from"./D0HNloZ9.js";import{aK as oa,d as oe,Z as Ve,Y as Re,U as pe,o as i,c as y,j as s,g as o,V as M,k as e,W as J,C as ze,X as ge,f as w,v as k,F as re,h as K,az as ia,aG as na,$ as Pe,aL as qe,S as da,r as b,aM as ua,aC as ca,a2 as pa,a3 as ma,a5 as fa,a6 as va,a7 as ya,aN as ba,aO as ha,i as d,q as D,m as V,t as _,y as je,ag as $e,a8 as ga,aH as be,w as _a,b as ka,N as wa,B as Ca,R as xa,al as Aa,_ as qa,s as $a,p as Ua,I as Ia,l as he,L as Va,A as Ra}from"./NQikbhmK.js";import{_ as za}from"./C9_jrmk9.js";import{_ as Pa}from"./DiOLdHBC.js";import{_ as ja}from"./DprVVyUQ.js";import{_ as Sa}from"./B9WhzpKO.js";import{_ as Ka}from"./DS636elg.js";import{o as Da,s as ue,l as Ue,a as Ea,u as Fa,_ as Ba}from"./C5iG7O4O.js";import{_ as Ga}from"./B3HO8kuh.js";import{_ as Ma}from"./C7P1UCO2.js";import{_ as Oa}from"./rWNTSFD6.js";import{L as Ie}from"./CYsTqbBS.js";import{u as Se}from"./g26aVPxc.js";import{V as Ke}from"./BYDaY0Z7.js";import{u as De}from"./CNFYDQmj.js";import{R as Ta}from"./IvQlbZk6.js";import{_ as La}from"./DiZyJYez.js";import{p as ce,i as le}from"./CDk0q2hV.js";import{u as Na}from"./CpjgB2aY.js";import{u as Ha}from"./Bn0YQDyy.js";import"./FUXhyidq.js";import"./eptP4pGv.js";import"./BjaRappk.js";import"./BeLWlVK0.js";const Wa="radio.select";function Ya(S,A,u){oa(Wa,u,{originalEvent:S,value:A})}var Xa=oe({inheritAttrs:!1,__name:"Radio",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},checked:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:checked","select"],setup(S,{emit:A}){const u=S,h=A,g=Ve(u,"checked",h,{passive:u.checked===void 0}),{value:l}=Re(u),{forwardRef:I,currentElement:x}=pe(),R=Se(x),C=De(),z=K(()=>u.id&&x.value?document.querySelector(`[for="${u.id}"]`)?.innerText??u.value:void 0);function q(p){u.disabled||Ya(p,u.value,P=>{h("select",P),!P?.defaultPrevented&&(g.value=!0,R.value&&P.stopPropagation())})}return(p,P)=>(i(),y(re,null,[s(e(ge),J({id:p.id,ref:e(I),role:"radio",type:p.as==="button"?"button":void 0,as:p.as,"aria-checked":e(g)??!1,"aria-label":z.value,"as-child":p.asChild,disabled:p.disabled?"":void 0,"data-state":e(g)?"checked":"unchecked","data-disabled":p.disabled?"":void 0,value:e(l),required:p.required,name:p.name},{...e(C),...p.$attrs},{onClick:ze(q,["stop"])}),{default:o(()=>[M(p.$slots,"default",{checked:e(g)})]),_:3},16,["id","type","as","aria-checked","aria-label","as-child","disabled","data-state","data-disabled","value","required","name"]),e(R)&&p.name?(i(),w(e(Ke),J({key:0,type:"radio",tabindex:"-1",value:e(l),checked:!!e(g),name:p.name,disabled:p.disabled,required:p.required},e(C)),null,16,["value","checked","name","disabled","required"])):k("v-if",!0)],64))}}),Za=Xa;const[Ja,Qa]=Pe("RadioGroupRoot");var et=oe({__name:"RadioGroupRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1,default:!1}},emits:["update:modelValue"],setup(S,{emit:A}){const u=S,h=A,{forwardRef:g,currentElement:l}=pe(),I=Ve(u,"modelValue",h,{defaultValue:u.defaultValue,passive:u.modelValue===void 0}),{disabled:x,loop:R,orientation:C,name:z,required:q,dir:p}=Re(u),P=ia(p),$=Se(l);return Qa({modelValue:I,changeModelValue:m=>{I.value=m},disabled:x,loop:R,orientation:C,name:z?.value,required:q}),(m,c)=>(i(),w(e(na),{"as-child":"",orientation:e(C),dir:e(P),loop:e(R)},{default:o(()=>[s(e(ge),{ref:e(g),role:"radiogroup","data-disabled":e(x)?"":void 0,"as-child":m.asChild,as:m.as,"aria-orientation":e(C),"aria-required":e(q),dir:e(P)},{default:o(()=>[M(m.$slots,"default",{modelValue:e(I)}),e($)&&e(z)?(i(),w(e(Ke),{key:0,required:e(q),disabled:e(x),value:e(I),name:e(z)},null,8,["required","disabled","value","name"])):k("v-if",!0)]),_:3},8,["data-disabled","as-child","as","aria-orientation","aria-required","dir"])]),_:3},8,["orientation","dir","loop"]))}}),at=et;const[tt,st]=Pe("RadioGroupItem");var lt=oe({inheritAttrs:!1,__name:"RadioGroupItem",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["select"],setup(S,{emit:A}){const u=S,h=A,{forwardRef:g,currentElement:l}=pe(),I=Ja(),x=K(()=>I.disabled.value||u.disabled),R=K(()=>I.required.value||u.required),C=K(()=>ua(I.modelValue?.value,u.value));st({disabled:x,checked:C});const z=b(!1),q=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];qe("keydown",$=>{q.includes($.key)&&(z.value=!0)}),qe("keyup",()=>{z.value=!1});function p(){setTimeout(()=>{z.value&&l.value?.click()},0)}const P=De();return($,m)=>(i(),w(e(Ta),{checked:C.value,disabled:x.value,"as-child":"",focusable:!x.value,active:C.value},{default:o(()=>[s(Za,J({...e(P),...$.$attrs,...u},{ref:e(g),checked:C.value,required:R.value,disabled:x.value,"onUpdate:checked":m[0]||(m[0]=c=>e(I).changeModelValue($.value)),onSelect:m[1]||(m[1]=c=>h("select",c)),onKeydown:m[2]||(m[2]=da(ze(()=>{},["prevent"]),["enter"])),onFocus:p}),{default:o(()=>[M($.$slots,"default",{checked:C.value,required:R.value,disabled:x.value})]),_:3},16,["checked","required","disabled"])]),_:3},8,["checked","disabled","focusable","active"]))}}),rt=lt,ot=oe({__name:"RadioGroupIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(S){const{forwardRef:A}=pe(),u=tt();return(h,g)=>(i(),w(e(ca),{present:h.forceMount||e(u).checked.value},{default:o(()=>[s(e(ge),J({ref:e(A),"data-state":e(u).checked.value?"checked":"unchecked","data-disabled":e(u).disabled.value?"":void 0,"as-child":h.asChild,as:h.as},h.$attrs),{default:o(()=>[M(h.$slots,"default")]),_:3},16,["data-state","data-disabled","as-child","as"])]),_:3},8,["present"]))}}),it=ot;const nt={slots:{root:"relative",fieldset:"flex gap-x-2",legend:"mb-1 block font-medium text-default",item:"flex items-start",container:"flex items-center",base:"rounded-full ring ring-inset ring-accented overflow-hidden focus-visible:outline-3",indicator:"flex items-center justify-center size-full after:bg-default after:rounded-full",wrapper:"w-full",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"outline-primary/25 focus-visible:ring-primary",indicator:"bg-primary"},secondary:{base:"outline-secondary/25 focus-visible:ring-secondary",indicator:"bg-secondary"},success:{base:"outline-success/25 focus-visible:ring-success",indicator:"bg-success"},info:{base:"outline-info/25 focus-visible:ring-info",indicator:"bg-info"},warning:{base:"outline-warning/25 focus-visible:ring-warning",indicator:"bg-warning"},error:{base:"outline-error/25 focus-visible:ring-error",indicator:"bg-error"},neutral:{base:"outline-inverted/25 focus-visible:ring-inverted",indicator:"bg-inverted"}},variant:{list:{item:""},card:{item:"border border-muted rounded-lg"},table:{item:"border border-muted"}},orientation:{horizontal:{fieldset:"flex-row"},vertical:{fieldset:"flex-col"}},indicator:{start:{item:"flex-row",wrapper:"ms-2"},end:{item:"flex-row-reverse",wrapper:"me-2"},hidden:{base:"sr-only",wrapper:"text-center"}},size:{xs:{fieldset:"gap-y-0.5",legend:"text-xs",base:"size-3",item:"text-xs",container:"h-4",indicator:"after:size-1"},sm:{fieldset:"gap-y-0.5",legend:"text-xs",base:"size-3.5",item:"text-xs",container:"h-4",indicator:"after:size-1"},md:{fieldset:"gap-y-1",legend:"text-sm",base:"size-4",item:"text-sm",container:"h-5",indicator:"after:size-1.5"},lg:{fieldset:"gap-y-1",legend:"text-sm",base:"size-4.5",item:"text-sm",container:"h-5",indicator:"after:size-1.5"},xl:{fieldset:"gap-y-1.5",legend:"text-base",base:"size-5",item:"text-base",container:"h-6",indicator:"after:size-2"}},highlight:{true:""},disabled:{true:{item:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}},required:{true:{legend:"after:content-['*'] after:ms-0.5 after:text-error"}}},compoundVariants:[{size:"xs",variant:["card","table"],class:{item:"p-2.5"}},{size:"sm",variant:["card","table"],class:{item:"p-3"}},{size:"md",variant:["card","table"],class:{item:"p-3.5"}},{size:"lg",variant:["card","table"],class:{item:"p-4"}},{size:"xl",variant:["card","table"],class:{item:"p-4.5"}},{orientation:"horizontal",variant:"table",class:{item:"first-of-type:rounded-s-lg last-of-type:rounded-e-lg",fieldset:"gap-0 -space-x-px"}},{orientation:"vertical",variant:"table",class:{item:"first-of-type:rounded-t-lg last-of-type:rounded-b-lg",fieldset:"gap-0 -space-y-px"}},{color:"primary",variant:"card",class:{item:"has-data-[state=checked]:border-primary"}},{color:"secondary",variant:"card",class:{item:"has-data-[state=checked]:border-secondary"}},{color:"success",variant:"card",class:{item:"has-data-[state=checked]:border-success"}},{color:"info",variant:"card",class:{item:"has-data-[state=checked]:border-info"}},{color:"warning",variant:"card",class:{item:"has-data-[state=checked]:border-warning"}},{color:"error",variant:"card",class:{item:"has-data-[state=checked]:border-error"}},{color:"neutral",variant:"card",class:{item:"has-data-[state=checked]:border-inverted"}},{color:"primary",variant:"table",class:{item:"has-data-[state=checked]:bg-primary/10 has-data-[state=checked]:border-primary/50 has-data-[state=checked]:z-[1]"}},{color:"secondary",variant:"table",class:{item:"has-data-[state=checked]:bg-secondary/10 has-data-[state=checked]:border-secondary/50 has-data-[state=checked]:z-[1]"}},{color:"success",variant:"table",class:{item:"has-data-[state=checked]:bg-success/10 has-data-[state=checked]:border-success/50 has-data-[state=checked]:z-[1]"}},{color:"info",variant:"table",class:{item:"has-data-[state=checked]:bg-info/10 has-data-[state=checked]:border-info/50 has-data-[state=checked]:z-[1]"}},{color:"warning",variant:"table",class:{item:"has-data-[state=checked]:bg-warning/10 has-data-[state=checked]:border-warning/50 has-data-[state=checked]:z-[1]"}},{color:"error",variant:"table",class:{item:"has-data-[state=checked]:bg-error/10 has-data-[state=checked]:border-error/50 has-data-[state=checked]:z-[1]"}},{color:"neutral",variant:"table",class:{item:"has-data-[state=checked]:bg-elevated has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:z-[1]"}},{variant:["card","table"],disabled:!0,class:{item:"cursor-not-allowed"}},{color:"primary",highlight:!0,class:{base:"ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring-success"}},{color:"info",highlight:!0,class:{base:"ring-info"}},{color:"warning",highlight:!0,class:{base:"ring-warning"}},{color:"error",highlight:!0,class:{base:"ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring-inverted"}}],defaultVariants:{size:"md",color:"primary",variant:"list",indicator:"start"}},dt={__name:"URadioGroup",props:{as:{type:null,required:!1},legend:{type:String,required:!1},valueKey:{type:null,required:!1,default:"value"},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},size:{type:null,required:!1},variant:{type:null,required:!1},color:{type:null,required:!1},highlight:{type:Boolean,required:!1},orientation:{type:null,required:!1,default:"vertical"},indicator:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["change","update:modelValue"],setup(S,{emit:A}){const u=S,h=A,g=pa(),l=ma("radioGroup",u),I=fa(),x=va(ya(l,"as","loop","required"),h),{emitFormChange:R,emitFormInput:C,color:z,name:q,size:p,highlight:P,id:$,disabled:m,ariaAttrs:c}=ba(u,{bind:!1}),O=$.value??ha(),j=K(()=>ga({extend:nt,...I.ui?.radioGroup||{}})({size:p.value??l.size,color:z.value??l.color,highlight:P.value??l.highlight,disabled:m.value,required:l.required,orientation:l.orientation,variant:l.variant,indicator:l.indicator}));function me(f){if(f===null)return{id:`${O}:null`,value:void 0,label:void 0};if(typeof f=="string"||typeof f=="number"||typeof f=="bigint")return{id:`${O}:${f}`,value:String(f),label:String(f)};const G=be(f,l.valueKey),n=be(f,l.labelKey),T=be(f,l.descriptionKey);return{...f,value:G,label:n,description:T,id:`${O}:${G}`}}const fe=K(()=>l.items?l.items.map(me):[]);function B(f){const G=new Event("change",{target:{value:f}});h("change",G),R(),C()}return(f,G)=>(i(),w(e(at),J({id:e(O)},e(x),{"model-value":e(l).modelValue,"default-value":e(l).defaultValue,orientation:e(l).orientation,name:e(q),disabled:e(m),"data-slot":"root",class:j.value.root({class:[e(l).ui?.root,e(l).class]}),"onUpdate:modelValue":B}),{default:o(()=>[d("fieldset",J({"data-slot":"fieldset",class:j.value.fieldset({class:e(l).ui?.fieldset})},e(c)),[e(l).legend||g.legend?(i(),y("legend",{key:0,"data-slot":"legend",class:D(j.value.legend({class:e(l).ui?.legend}))},[M(f.$slots,"legend",{},()=>[V(_(e(l).legend),1)])],2)):k("",!0),(i(!0),y(re,null,je(fe.value,n=>(i(),w($e(!e(l).variant||e(l).variant==="list"?"div":e(Ie)),{key:n.value,"data-slot":"item",class:D(j.value.item({class:[e(l).ui?.item,n.ui?.item,n.class],disabled:n.disabled||e(m)}))},{default:o(()=>[d("div",{"data-slot":"container",class:D(j.value.container({class:[e(l).ui?.container,n.ui?.container]}))},[s(e(rt),{id:n.id,value:n.value,disabled:n.disabled||e(m),"data-slot":"base",class:D(j.value.base({class:[e(l).ui?.base,n.ui?.base],disabled:n.disabled||e(m)}))},{default:o(()=>[s(e(it),{"data-slot":"indicator",class:D(j.value.indicator({class:[e(l).ui?.indicator,n.ui?.indicator]}))},null,8,["class"])]),_:2},1032,["id","value","disabled","class"])],2),n.label||g.label||n.description||g.description?(i(),y("div",{key:0,"data-slot":"wrapper",class:D(j.value.wrapper({class:[e(l).ui?.wrapper,n.ui?.wrapper]}))},[n.label||g.label?(i(),w($e(!e(l).variant||e(l).variant==="list"?e(Ie):"p"),{key:0,for:n.id,"data-slot":"label",class:D(j.value.label({class:[e(l).ui?.label,n.ui?.label],disabled:n.disabled||e(m)}))},{default:o(()=>[M(f.$slots,"label",{item:n,modelValue:e(l).modelValue},()=>[V(_(n.label),1)])]),_:2},1032,["for","class"])):k("",!0),n.description||g.description?(i(),y("p",{key:1,"data-slot":"description",class:D(j.value.description({class:[e(l).ui?.description,n.ui?.description],disabled:n.disabled||e(m)}))},[M(f.$slots,"description",{item:n,modelValue:e(l).modelValue},()=>[V(_(n.description),1)])],2)):k("",!0)],2)):k("",!0)]),_:2},1032,["class"]))),128))],16)]),_:3},16,["id","model-value","default-value","orientation","name","disabled","class"]))}},ut={class:"space-y-6"},ct={class:"text-muted"},pt={key:0,class:"flex items-center gap-1 text-sm"},mt={key:1,class:"text-muted"},ft={class:"text-sm text-muted"},vt={class:"flex items-center gap-1 justify-end"},yt={class:"text-center py-12"},bt={class:"flex justify-center mb-4"},ht={class:"flex w-full justify-end gap-2"},gt={class:"inline-flex items-center gap-1"},_t={class:"space-y-4"},kt={key:0,class:"rounded-lg border border-primary/30 bg-primary/5 p-4 space-y-4"},wt={key:0,class:"space-y-4"},Ct={class:"rounded-lg bg-elevated p-3 font-mono text-sm break-all select-all"},xt={class:"flex gap-2"},At={key:1,class:"space-y-3"},qt={class:"flex gap-2"},$t={key:1,class:"space-y-2"},Ut={class:"flex-1 min-w-0"},It={class:"flex items-center gap-2"},Vt={class:"font-medium truncate"},Rt={class:"text-xs text-muted mt-1 flex flex-wrap gap-x-4"},zt={class:"font-mono"},Pt={key:0},jt={key:1,class:"italic"},St={key:2,class:"text-center text-muted py-6 text-sm"},Kt={class:"inline-flex items-center gap-1"},Dt={class:"space-y-6"},Et={key:0,class:"text-[var(--ui-text-muted)]"},Ft={key:1},us=oe({__name:"users",async setup(S){let A,u;const{data:h,refresh:g}=([A,u]=_a(()=>Na("/api/users","$0NE568_-ln")),A=await A,u(),A),l=ka(),{copy:I}=Ha(),{authState:x}=wa(),R=Ra(),C=K(()=>h.value?.users||[]),z=K(()=>h.value?.authEnabled||!1),q=K(()=>R.public.authEnabled?x.value.user?.role==="administrator":!0),p=K(()=>x.value.user?.id??null),P=[{accessorKey:"username",header:le("Username")},{accessorKey:"name",header:le("Name")},{accessorKey:"email",header:le("Email")},{accessorKey:"role",header:le("Role")},{accessorKey:"createdAt",header:le("Created")},{accessorKey:"actions",header:""}],$=b(!1),m=Da({username:ue().min(3,"Username must be at least 3 characters"),password:Fa([ue().min(6,"Password must be at least 6 characters"),Ue("").transform(()=>{})]).optional(),role:Ea(["administrator","reporter","user"]),name:ue().optional(),email:ue().email().optional().or(Ue(""))}),c=Va({username:"",password:"",role:"user",name:"",email:""}),O=[{label:"Administrator",value:"administrator"},{label:"Reporter",value:"reporter"},{label:"User",value:"user"}];async function j(){try{const r={...c,password:c.password||void 0};await $fetch("/api/users",{method:"POST",body:r}),l.add({title:"User created",description:`User ${c.username} has been created successfully`,color:"success"}),$.value=!1,c.username="",c.password="",c.role="user",c.name="",c.email="",await g()}catch(r){const a=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;l.add({title:"Failed to create user",description:a||"An error occurred",color:"error"})}}async function me(r){f.value=r,B.value=!0}async function fe(){const r=f.value;if(r){B.value=!1,f.value=null;try{await $fetch(`/api/users/${r.id}`,{method:"DELETE"}),l.add({title:"User deleted",description:`User ${r.username} has been deleted`,color:"success"}),await g()}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to delete user",description:U||"An error occurred",color:"error"})}}}const B=b(!1),f=b(null);function G(r){switch(r){case"administrator":return"primary";case"reporter":return"info";case"user":return"neutral";default:return"neutral"}}const n=b(null),T=b(!1),ie=b([]);async function Ee(r){n.value=r,T.value=!0,await _e(r.id)}async function _e(r){try{const a=await $fetch(`/api/users/${r}/api-keys`);ie.value=a.apiKeys}catch{ie.value=[]}}async function ke(){n.value&&await _e(n.value.id)}const L=b(!1),N=b(""),H=b(""),E=b(null),we=b("http://localhost:3000");Ca(()=>{we.value=window.location.origin});const Fe=K(()=>`['@piwitests/reporter', {
|
|
2
|
-
serverUrl: '${we.value}',
|
|
3
|
-
apiKey: '${E.value??""}', // or set PIWI_API_KEY and use apiKey: process.env.PIWI_API_KEY
|
|
4
|
-
}]`);function Be(){N.value="",H.value="",E.value=null,L.value=!0}function Ce(){L.value=!1,E.value=null}async function Ge(){if(n.value)try{const r={name:N.value};H.value&&(r.expiresAt=new Date(H.value).toISOString());const a=await $fetch(`/api/users/${n.value.id}/api-keys`,{method:"POST",body:r});E.value=a.key,await ke()}catch(r){const a=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;l.add({title:"Failed to create API key",description:a||"An error occurred",color:"error"})}}function Me(){I(E.value,{toast:"API key copied to clipboard"})}function Oe(){E.value=null,L.value=!1}const Q=b(!1),ee=b(null);function Te(r){ee.value=r,Q.value=!0}async function Le(){if(!n.value||!ee.value)return;const r=ee.value;Q.value=!1,ee.value=null;try{await $fetch(`/api/users/${n.value.id}/api-keys/${r.id}`,{method:"DELETE"}),l.add({title:"API key revoked",description:`Key "${r.name}" has been revoked`,color:"success"}),await ke()}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to revoke API key",description:U||"An error occurred",color:"error"})}}function Ne(r){return R.public.authEnabled?q.value||p.value===r.id:!0}const ne=b(null),ae=b(!1),W=b(!1),Y=b([]),X=b([]);async function He(r){ne.value=r,ae.value=!0;try{const a=await $fetch("/api/projects/menu");X.value=a.map(U=>({...U,label:U.label||U.name}))}catch{X.value=[]}try{const a=await $fetch(`/api/users/${r.id}/projects`);W.value=a.global,Y.value=X.value.filter(U=>a.projectIds.includes(U.id))}catch{W.value=!1,Y.value=[]}}async function We(){const r=ne.value;if(r)try{await $fetch(`/api/users/${r.id}/projects`,{method:"PUT",body:{global:W.value,projectIds:Y.value.map(a=>a.id)}}),l.add({title:"Project access updated",description:`Access for ${r.username} has been updated`,color:"success"}),ae.value=!1}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to update project access",description:U||"An error occurred",color:"error"})}}const ve=b(null);async function Ye(r){if(!r.email){l.add({title:"No email address",description:"Set an email address for this user first.",color:"error"});return}ve.value=r.id;try{await $fetch(`/api/users/${r.id}/invite`,{method:"POST"}),l.add({title:"Invite sent",description:`Invitation sent to ${r.email}`,color:"success"})}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to send invite",description:U||"An error occurred",color:"error"})}finally{ve.value=null}}return(r,a)=>{const U=ra,v=qa,ye=Ua,Xe=$a,Ze=za,Je=Pa,xe=ja,Z=Ia,F=Sa,Qe=Ka,ea=Ba,te=Ga,se=xa,Ae=Ma,aa=Oa,ta=dt,sa=Aa("UDivider"),la=La;return i(),y(re,null,[d("div",ut,[e(z)?k("",!0):(i(),w(U,{key:0,icon:"i-lucide-info",color:"primary",variant:"subtle",title:"Authentication is disabled",description:"Authentication is currently disabled. You can manage users here, but they will only be used when authentication is enabled via the PIWI_AUTH_ENABLED environment variable."})),e(C).length>0?(i(),w(xe,{key:1,title:"Users",count:e(C).length,help:"settings.users"},{actions:o(()=>[e(q)?(i(),w(v,{key:0,label:"Add user",icon:"i-lucide-user-plus",size:"sm",onClick:a[0]||(a[0]=t=>$.value=!0)})):k("",!0)]),default:o(()=>[s(Je,{"min-width":"44rem",bleed:!1},{default:o(()=>[s(Ze,{data:e(C),columns:P,sticky:"",class:"max-h-[32rem]"},{"username-cell":o(({row:t})=>[V(_(t.original.username),1)]),"name-cell":o(({row:t})=>[d("span",ct,_(t.original.name||"-"),1)]),"email-cell":o(({row:t})=>[t.original.email?(i(),y("span",pt,[V(_(t.original.email)+" ",1),t.original.emailVerified?(i(),w(ye,{key:0,name:"i-lucide-circle-check-big",class:"size-3.5 text-success-500",title:"Email verified"})):k("",!0)])):(i(),y("span",mt,"—"))]),"role-cell":o(({row:t})=>[s(Xe,{color:G(t.original.role),variant:"subtle"},{default:o(()=>[V(_(t.original.role),1)]),_:2},1032,["color"])]),"createdAt-cell":o(({row:t})=>[d("span",ft,_(("prettyDateFormat"in r?r.prettyDateFormat:e(ce))(t.original.createdAt,{dateOnly:!0})),1)]),"actions-cell":o(({row:t})=>[d("div",vt,[e(q)&&t.original.email&&!t.original.oauthProvider?(i(),w(v,{key:0,icon:"i-lucide-send",color:"neutral",variant:"ghost",size:"sm",title:"Send invite email","aria-label":"Send invite email",loading:e(ve)===t.original.id,onClick:de=>Ye(t.original)},null,8,["loading","onClick"])):k("",!0),e(q)&&t.original.role!=="administrator"?(i(),w(v,{key:1,icon:"i-lucide-folder-lock",color:"neutral",variant:"ghost",size:"sm",title:"Project access","aria-label":"Project access",onClick:de=>He(t.original)},null,8,["onClick"])):k("",!0),Ne(t.original)?(i(),w(v,{key:2,icon:"i-lucide-key",color:"neutral",variant:"ghost",size:"sm",title:"Manage API keys","aria-label":"Manage API keys",onClick:de=>Ee(t.original)},null,8,["onClick"])):k("",!0),e(q)?(i(),w(v,{key:3,icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Delete user","aria-label":"Delete user",onClick:de=>me(t.original)},null,8,["onClick"])):k("",!0)])]),_:1},8,["data"])]),_:1})]),_:1},8,["count"])):(i(),w(xe,{key:2,title:"Users",count:0,help:"settings.users"},{default:o(()=>[d("div",yt,[d("div",bt,[s(ye,{name:"i-lucide-users",class:"text-4xl text-muted"})]),a[21]||(a[21]=d("h3",{class:"text-lg font-semibold mb-2"},"No users yet",-1)),a[22]||(a[22]=d("p",{class:"text-muted mb-4"},"Create your first user to get started with authentication",-1)),e(q)?(i(),w(v,{key:0,label:"Add user",icon:"i-lucide-user-plus",onClick:a[1]||(a[1]=t=>$.value=!0)})):k("",!0)])]),_:1}))]),s(se,null,{default:o(()=>[s(te,{open:e($),title:"Add new user","onUpdate:open":a[8]||(a[8]=t=>$.value=t)},{body:o(()=>[s(ea,{schema:e(m),state:e(c),class:"space-y-5"},{default:o(()=>[s(F,{label:"Username",name:"username",required:""},{default:o(()=>[s(Z,{modelValue:e(c).username,"onUpdate:modelValue":a[2]||(a[2]=t=>e(c).username=t),placeholder:"Enter username",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Password",name:"password",description:"Leave blank to let the user set their own password via invite email"},{default:o(()=>[s(Z,{modelValue:e(c).password,"onUpdate:modelValue":a[3]||(a[3]=t=>e(c).password=t),type:"password",placeholder:"Leave blank to send invite",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Display name",name:"name"},{default:o(()=>[s(Z,{modelValue:e(c).name,"onUpdate:modelValue":a[4]||(a[4]=t=>e(c).name=t),placeholder:"Enter display name (optional)",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Email",name:"email",description:"Optional — needed for invites and notifications"},{default:o(()=>[s(Z,{modelValue:e(c).email,"onUpdate:modelValue":a[5]||(a[5]=t=>e(c).email=t),type:"email",placeholder:"user@example.com (optional)",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Role",name:"role",required:""},{default:o(()=>[s(Qe,{modelValue:e(c).role,"onUpdate:modelValue":a[6]||(a[6]=t=>e(c).role=t),items:O,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1},8,["schema","state"])]),footer:o(()=>[d("div",ht,[s(v,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:a[7]||(a[7]=t=>$.value=!1)}),s(v,{type:"submit",label:"Create user",icon:"i-lucide-user-plus",onClick:j})])]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(T),title:`API keys – ${e(n)?.username}`,size:"xl","onUpdate:open":a[12]||(a[12]=t=>{T.value=t,t||Ce()})},{title:o(()=>[d("span",gt,[V(" API keys – "+_(e(n)?.username)+" ",1),s(Ae,{topic:"settings.api-keys"})])]),body:o(()=>[d("div",_t,[a[26]||(a[26]=d("p",{class:"text-sm text-muted"},[V(" API keys allow the Playwright reporter (and other CI tools) to submit test results without a username/password login. Each key is shown "),d("strong",null,"only once"),V(" at creation time — store it in a CI secret immediately. ")],-1)),e(L)?(i(),y("div",kt,[e(E)?(i(),y("div",wt,[s(U,{icon:"i-lucide-triangle-alert",color:"warning",variant:"subtle",title:"Save your API key now",description:"This key will never be shown again. Copy it and store it in your CI secret manager immediately."}),d("div",Ct,_(e(E)),1),d("div",xt,[s(v,{label:"Copy to clipboard",icon:"i-lucide-clipboard",color:"primary",size:"sm",onClick:Me}),s(v,{label:"Done",variant:"ghost",size:"sm",onClick:Oe})]),d("div",null,[a[23]||(a[23]=d("p",{class:"text-xs font-semibold uppercase tracking-wide text-muted mb-2"}," Use it in your reporter config ",-1)),s(aa,{code:e(Fe),lang:"typescript"},null,8,["code"])])])):(i(),y("div",At,[a[24]||(a[24]=d("h4",{class:"font-medium text-sm"},"Create new API key",-1)),s(F,{label:"Key name",name:"name",required:""},{default:o(()=>[s(Z,{modelValue:e(N),"onUpdate:modelValue":a[9]||(a[9]=t=>he(N)?N.value=t:null),placeholder:"e.g. GitHub Actions CI",size:"sm"},null,8,["modelValue"])]),_:1}),s(F,{label:"Expires at (optional)",name:"expiresAt"},{default:o(()=>[s(Z,{modelValue:e(H),"onUpdate:modelValue":a[10]||(a[10]=t=>he(H)?H.value=t:null),type:"date",size:"sm",min:new Date().toISOString().split("T")[0]},null,8,["modelValue","min"])]),_:1}),d("div",qt,[s(v,{label:"Generate key",icon:"i-lucide-key",size:"sm",disabled:!e(N).trim(),onClick:Ge},null,8,["disabled"]),s(v,{color:"neutral",variant:"ghost",label:"Cancel",size:"sm",onClick:Ce})])]))])):k("",!0),e(ie).length>0?(i(),y("div",$t,[(i(!0),y(re,null,je(e(ie),t=>(i(),y("div",{key:t.id,class:"flex items-center justify-between rounded-lg border border-default px-4 py-3"},[d("div",Ut,[d("div",It,[s(ye,{name:"i-lucide-key",class:"text-muted shrink-0"}),d("span",Vt,_(t.name),1)]),d("div",Rt,[d("span",null,[a[25]||(a[25]=V("Prefix: ",-1)),d("code",zt,"pd_"+_(t.keyPrefix)+"…",1)]),d("span",null,"Created: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ce))(t.createdAt,{dateOnly:!0})),1),t.lastUsedAt?(i(),y("span",Pt,"Last used: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ce))(t.lastUsedAt,{dateOnly:!0})),1)):(i(),y("span",jt,"Never used")),t.expiresAt?(i(),y("span",{key:2,class:D(new Date(t.expiresAt)<new Date?"text-error":"")}," Expires: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ce))(t.expiresAt,{dateOnly:!0})),3)):k("",!0)])]),s(v,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Revoke key",onClick:de=>Te(t)},null,8,["onClick"])]))),128))])):e(L)?k("",!0):(i(),y("div",St," No API keys yet. Create one to allow CI access. "))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Close",onClick:a[11]||(a[11]=t=>T.value=!1)}),e(L)?k("",!0):(i(),w(v,{key:0,label:"Create API key",icon:"i-lucide-plus",onClick:Be}))]),_:1},8,["open","title"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(B),title:"Delete user","onUpdate:open":a[14]||(a[14]=t=>B.value=t)},{body:o(()=>[d("p",null,[a[27]||(a[27]=V(" Are you sure you want to delete user ",-1)),d("strong",null,_(e(f)?.username),1),a[28]||(a[28]=V("? This action cannot be undone. ",-1))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[13]||(a[13]=t=>B.value=!1)}),s(v,{color:"error",label:"Delete user",icon:"i-lucide-trash-2",onClick:fe})]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(Q),title:"Revoke API key","onUpdate:open":a[16]||(a[16]=t=>Q.value=t)},{body:o(()=>[d("p",null,[a[29]||(a[29]=V(" Revoke API key ",-1)),d("strong",null,'"'+_(e(ee)?.name)+'"',1),a[30]||(a[30]=V("? Any CI pipeline using it will stop working immediately. ",-1))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[15]||(a[15]=t=>Q.value=!1)}),s(v,{color:"error",label:"Revoke",icon:"i-lucide-trash-2",onClick:Le})]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(ae),title:`Project access – ${e(ne)?.username}`,size:"xl","onUpdate:open":a[20]||(a[20]=t=>ae.value=t)},{title:o(()=>[d("span",Kt,[V(" Project access – "+_(e(ne)?.username)+" ",1),s(Ae,{topic:"project.members"})])]),body:o(()=>[d("div",Dt,[a[31]||(a[31]=d("p",{class:"text-sm text-muted"}," Control which projects this user can access. Users without any project access will see no projects. ",-1)),s(ta,{"model-value":e(W)?"global":"specific",items:[{value:"global",label:"Global access",description:"Access to all projects (current and future)"},{value:"specific",label:"Specific projects",description:"Access only to selected projects"}],"onUpdate:modelValue":a[17]||(a[17]=t=>W.value=t==="global")},null,8,["model-value"]),e(W)?k("",!0):(i(),y(re,{key:0},[s(sa),s(F,{label:"Specific projects",description:`Select from ${e(X).length>0?e(X).length:"0"} available projects`},{default:o(()=>[s(la,{modelValue:e(Y),"onUpdate:modelValue":a[18]||(a[18]=t=>he(Y)?Y.value=t:null),items:e(X),by:"id",multiple:"",searchable:"",class:"w-full",placeholder:"Search and select projects…"},{default:o(({modelValue:t})=>[t.length===0?(i(),y("span",Et,"Select projects…")):(i(),y("span",Ft,_(t.length)+" project(s) selected",1))]),_:1},8,["modelValue","items"])]),_:1},8,["description"])],64))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[19]||(a[19]=t=>ae.value=!1)}),s(v,{label:"Save",icon:"i-lucide-check",onClick:We})]),_:1},8,["open","title"])]),_:1})],64)}}});export{us as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aM as J,$ as ee,d as B,Y as Ie,b6 as U,bX as Se,az as qe,Z as fe,H as Ke,o as w,f as K,g as L,V as D,k as n,v as ve,K as z,X as P,bb as pe,r as S,bc as Z,b7 as Le,bU as Ve,bT as me,j as he,S as O,C as ge,c7 as Te,B as He,ad as Be,h as H,bp as Re,aA as ye,W as te,U as be,bq as De,aK as Pe,a2 as Me,c8 as Ne,c9 as ze,bj as Oe,ca as $e,c as re,F as ue,y as Ue,ag as We,Q as Ge,cb as je,aH as Xe}from"./NQikbhmK.js";import{u as Ye}from"./g26aVPxc.js";import{V as Qe}from"./BYDaY0Z7.js";import{u as Ze}from"./FUXhyidq.js";function $(o,a,i){const t=o.findIndex(p=>J(p,a)),v=o.findIndex(p=>J(p,i));if(t===-1||v===-1)return[];const[d,g]=[t,v].sort((p,m)=>p-m);return o.slice(d,g+1)}function Je(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function de(o){return o?.querySelector("[data-state=checked]")}function et(o,a,i){return o===void 0?!1:Array.isArray(o)?o.some(t=>q(t,a,i)):q(o,a,i)}function q(o,a,i){return o===void 0||a===void 0?!1:typeof o=="string"?o===a:typeof i=="function"?i(o,a):typeof i=="string"?o?.[i]===a?.[i]:J(o,a)}const[W,tt]=ee("ListboxRoot");var at=B({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(o,{expose:a,emit:i}){const t=o,v=i,{multiple:d,highlightOnHover:g,orientation:p,disabled:m,selectionBehavior:A,dir:E}=Ie(t),{getItems:x}=U({isProvider:!0}),{handleTypeaheadSearch:l}=Se(),{primitiveElement:u,currentElement:c}=pe(),r=Je(),_=qe(E),h=Ye(c),k=S(),V=S(!1),T=S(!0),y=fe(t,"modelValue",v,{defaultValue:t.defaultValue??(d.value?[]:void 0),passive:t.modelValue===void 0,deep:!0});function xe(e){if(V.value=!0,t.multiple){const s=Array.isArray(y.value)?[...y.value]:[],f=s.findIndex(b=>q(b,e,t.by));t.selectionBehavior==="toggle"?(f===-1?s.push(e):s.splice(f,1),y.value=s):(y.value=[e],k.value=e)}else t.selectionBehavior==="toggle"&&q(y.value,e,t.by)?y.value=void 0:y.value=e;setTimeout(()=>{V.value=!1},1)}const C=S(null),G=S(null),R=S(!1),j=S(!1),ae=Z(),X=Z(),ie=Z();function Y(){return x().map(e=>e.ref).filter(e=>e.dataset.disabled!=="")}function I(e,s=!0,f){if(!e)return;C.value=e,(f??T.value)&&C.value.focus(),s&&C.value.scrollIntoView({block:"nearest"});const b=x().find(F=>F.ref===e);v("highlight",b)}function _e(e){if(R.value)ie.trigger(e);else{const s=x().find(f=>q(f.value,e,t.by));s&&(C.value=s.ref,I(s.ref))}}function Ce(e){if(C.value&&C.value.isConnected){if(e.ctrlKey||e.metaKey||e.altKey)return;e.preventDefault(),e.stopPropagation(),j.value||C.value.click()}}function Ee(e){if(T.value){if(V.value=!0,R.value)X.trigger(e);else{const s=e.altKey||e.ctrlKey||e.metaKey;if(s&&e.key==="a"&&d.value){const f=x(),b=f.map(M=>M.value);y.value=[...b],e.preventDefault();const F=f.at(-1);F&&I(F.ref)}else if(!s){const f=l(e.key,x());f&&I(f)}}setTimeout(()=>{V.value=!1},1)}}function Fe(){j.value=!0}function Ae(){z(()=>{j.value=!1})}function ne(){z(()=>{const e=new KeyboardEvent("keydown",{key:"PageUp"});oe(e)})}function Q(e){const s=C.value;s?.isConnected&&(G.value=s),C.value=null,v("leave",e)}function ke(e){const s=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(e.currentTarget?.dispatchEvent(s),v("entryFocus",s),!s.defaultPrevented)if(G.value)I(G.value);else{const f=Y()?.[0];I(f)}}function oe(e){const s=Le(e,p.value,_.value);if(!s)return;let f=Y();if(C.value){if(s==="last")f.reverse();else if(s==="prev"||s==="next"){s==="prev"&&f.reverse();const b=f.indexOf(C.value);f=f.slice(b+1)}we(e,f[0])}if(f.length){const b=!C.value&&s==="prev"?f.length-1:0;I(f[b])}if(R.value)return X.trigger(e)}function we(e,s){if(!(R.value||t.selectionBehavior!=="replace"||!d.value||!Array.isArray(y.value)||(e.altKey||e.ctrlKey||e.metaKey)&&!e.shiftKey)&&e.shiftKey){const b=x().filter(N=>N.ref.dataset.disabled!=="");let F=b.find(N=>N.ref===s)?.value;if(e.key===r.END?F=b.at(-1)?.value:e.key===r.HOME&&(F=b[0]?.value),!F||!k.value)return;const M=$(b.map(N=>N.value),k.value,F);y.value=M}}async function le(e,s=!0){if(Ve)if(await z(),R.value)ae.trigger({event:e,scroll:s});else{const f=Y(),b=f.find(M=>M.dataset.state==="checked"),F=s?void 0:!1;b?I(b,s,F):f.length&&I(f[0],s,F)}}let se=!1;return Ke(y,()=>{if(!V.value){const e=se;se=!0,z(()=>{le(void 0,e)})}},{immediate:!0,deep:!0}),a({highlightedElement:C,highlightItem:_e,highlightFirstItem:ne,highlightSelected:le,getItems:x}),tt({modelValue:y,onValueChange:xe,multiple:d,orientation:p,dir:_,disabled:m,highlightOnHover:g,highlightedElement:C,isVirtual:R,virtualFocusHook:ae,virtualKeydownHook:X,virtualHighlightHook:ie,by:t.by,firstValue:k,selectionBehavior:A,focusable:T,onLeave:Q,onEnter:ke,changeHighlight:I,onKeydownEnter:Ce,onKeydownNavigation:oe,onKeydownTypeAhead:Ee,onCompositionStart:Fe,onCompositionEnd:Ae,highlightFirstItem:ne}),(e,s)=>(w(),K(n(P),{ref_key:"primitiveElement",ref:u,as:e.as,"as-child":e.asChild,dir:n(_),"data-disabled":n(m)?"":void 0,onPointerleave:Q,onFocusout:s[0]||(s[0]=async f=>{const b=f.relatedTarget||f.target;await z(),C.value&&n(c)&&!n(c).contains(b)&&Q(f)})},{default:L(()=>[D(e.$slots,"default",{modelValue:n(y)}),n(h)&&e.name?(w(),K(n(Qe),{key:0,name:e.name,value:n(y),disabled:n(m),required:e.required},null,8,["name","value","disabled","required"])):ve("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),yt=at,it=B({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(o){const{CollectionSlot:a}=U(),i=W(),t=me(!1,10);return(v,d)=>(w(),K(n(a),null,{default:L(()=>[he(n(P),{role:"listbox",as:v.as,"as-child":v.asChild,tabindex:n(i).focusable.value?n(i).highlightedElement.value?"-1":"0":"-1","aria-orientation":n(i).orientation.value,"aria-multiselectable":!!n(i).multiple.value,"data-orientation":n(i).orientation.value,onMousedown:d[0]||(d[0]=ge(g=>t.value=!0,["left"])),onFocus:d[1]||(d[1]=g=>{n(t)||n(i).onEnter(g)}),onKeydown:[d[2]||(d[2]=O(g=>{n(i).orientation.value==="vertical"&&(g.key==="ArrowLeft"||g.key==="ArrowRight")||n(i).orientation.value==="horizontal"&&(g.key==="ArrowUp"||g.key==="ArrowDown")||(g.preventDefault(),n(i).focusable.value&&n(i).onKeydownNavigation(g))},["down","up","left","right","home","end"])),O(n(i).onKeydownEnter,["enter"]),n(i).onKeydownTypeAhead]},{default:L(()=>[D(v.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),bt=it,nt=B({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(o,{emit:a}){const i=o,v=fe(i,"modelValue",a,{defaultValue:"",passive:i.modelValue===void 0}),d=W(),{primitiveElement:g,currentElement:p}=pe(),m=H(()=>i.disabled||d.disabled.value||!1),A=S();Te(()=>A.value=d.highlightedElement.value?.id),He(()=>{d.focusable.value=!1,setTimeout(()=>{i.autoFocus&&p.value?.focus()},1)}),Be(()=>{d.focusable.value=!0});const{isComposing:E,handleCompositionStart:x,handleCompositionEnd:l}=Re(h=>{v.value=h.target.value,d.onCompositionEnd(),d.highlightFirstItem()});function u(){d.onCompositionStart(),x()}function c(h){E.value||(v.value=h.target.value,d.highlightFirstItem())}function r(h){E.value||(h.preventDefault(),d.onKeydownNavigation(h))}function _(h){E.value||d.onKeydownEnter(h)}return(h,k)=>(w(),K(n(P),{ref_key:"primitiveElement",ref:g,as:h.as,"as-child":h.asChild,value:n(v),disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"aria-disabled":m.value??void 0,"aria-activedescendant":A.value,type:"text",onKeydown:[O(r,["down","up","home","end"]),O(_,["enter"])],onInput:c,onCompositionstart:u,onCompositionend:n(l)},{default:L(()=>[D(h.$slots,"default",{modelValue:n(v)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),xt=nt;const[_t,ot]=ee("ListboxGroup");var lt=B({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(o){const a=o,i=ye(void 0,"reka-listbox-group");return ot({id:i}),(t,v)=>(w(),K(n(P),te({role:"group"},a,{"aria-labelledby":n(i)}),{default:L(()=>[D(t.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),Ct=lt;const st="listbox.select",[rt,ut]=ee("ListboxItem");var dt=B({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(o,{emit:a}){const i=o,t=a,v=ye(void 0,"reka-listbox-item"),{CollectionItem:d}=U(),{forwardRef:g,currentElement:p}=be(),m=W(),A=H(()=>p.value!=null&&p.value===m.highlightedElement.value),E=H(()=>et(m.modelValue.value,i.value,m.by)),x=H(()=>m.disabled.value||i.disabled);async function l(c){t("select",c),!c?.defaultPrevented&&!x.value&&c&&(m.onValueChange(i.value),m.changeHighlight(p.value))}function u(c){const r={originalEvent:c,value:i.value};Pe(st,l,r)}return ut({isSelected:E}),(c,r)=>(w(),K(n(d),{value:c.value},{default:L(()=>[De([A.value,E.value,x.value,n(m).focusable.value],()=>he(n(P),te({id:n(v)},c.$attrs,{ref:n(g),role:"option",tabindex:n(m).focusable.value?A.value?"0":"-1":-1,"aria-selected":E.value,as:c.as,"as-child":c.asChild,disabled:x.value?"":void 0,"data-disabled":x.value?"":void 0,"data-highlighted":A.value?"":void 0,"data-state":E.value?"checked":"unchecked",onClick:u,onKeydown:O(ge(u,["prevent"]),["space"]),onPointermove:r[0]||(r[0]=()=>{n(m).highlightedElement.value!==n(p)&&n(m).highlightOnHover.value&&n(m).changeHighlight(n(p),!1,!1)})}),{default:L(()=>[D(c.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),r,1)]),_:3},8,["value"]))}}),Et=dt,ct=B({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(o){const a=o;be();const i=rt();return(t,v)=>n(i).isSelected.value?(w(),K(n(P),te({key:0,"aria-hidden":"true"},a),{default:L(()=>[D(t.$slots,"default")]),_:3},16)):ve("v-if",!0)}}),Ft=ct,ft=B({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(o){const a=o,i=Me(),t=W(),v=Ne(),{getItems:d}=U();t.isVirtual.value=!0;const g=H(()=>{const l=v.value;if(l){const u=window.getComputedStyle(l);return{start:Number.parseFloat(u.paddingBlockStart||u.paddingTop),end:Number.parseFloat(u.paddingBlockEnd||u.paddingBottom)}}else return{start:0,end:0}}),p=Ze({get scrollPaddingStart(){return g.value.start},get scrollPaddingEnd(){return g.value.end},get count(){return a.options.length},get horizontal(){return t.orientation.value==="horizontal"},estimateSize(l){return typeof a.estimateSize=="function"?a.estimateSize(l):a.estimateSize??28},getScrollElement(){return v.value},overscan:a.overscan??12}),m=H(()=>p.value.getVirtualItems().map(l=>{const u=i.default({option:a.options[l.index],virtualizer:p.value,virtualItem:l})[0],c=u.type===ue&&Array.isArray(u.children)?u.children.find(r=>typeof r.type!="symbol"):u;return{item:l,is:je(c,{key:`${l.key}`,"data-index":l.index,"aria-setsize":a.options.length,"aria-posinset":l.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${l.start}px)`,overflowAnchor:"none"}})}}));t.virtualFocusHook.on(({event:l,scroll:u})=>{const c=a.options.findIndex(r=>Array.isArray(t.modelValue.value)?q(r,t.modelValue.value[0],t.by):q(r,t.modelValue.value,t.by));c!==-1?(l?.preventDefault(),p.value.scrollToIndex(c,{align:"start"}),requestAnimationFrame(()=>{const r=de(v.value);r&&(t.changeHighlight(r,u,u?void 0:!1),l&&r?.focus())})):u?t.highlightFirstItem():requestAnimationFrame(()=>{const r=d().find(_=>_.ref.dataset.disabled!=="")?.ref;r&&t.changeHighlight(r,!1,!1)})}),t.virtualHighlightHook.on(l=>{const u=a.options.findIndex(c=>q(c,l,t.by));p.value.scrollToIndex(u,{align:"start"}),requestAnimationFrame(()=>{const c=de(v.value);c&&t.changeHighlight(c)})});const A=me("",1e3),E=H(()=>{const l=u=>a.textContent?a.textContent(u):u?.toString().toLowerCase();return a.options.map((u,c)=>({index:c,textContent:l(u)}))});function x(l,u){if(!t.firstValue?.value||!t.multiple.value||!Array.isArray(t.modelValue.value))return;const r=d().filter(h=>h.ref.dataset.disabled!=="").find(h=>h.ref===t.highlightedElement.value)?.value;if(!r)return;let _=null;switch(u){case"prev":case"next":{_=$(a.options,t.firstValue.value,r);break}case"first":{_=$(a.options,t.firstValue.value,a.options?.[0]);break}case"last":{_=$(a.options,t.firstValue.value,a.options.at(-1));break}}t.modelValue.value=_}return t.virtualKeydownHook.on(l=>{const u=l.altKey||l.ctrlKey||l.metaKey;if(l.key==="Tab"&&!u)return;let r=ze[l.key];if(u&&l.key==="a"&&t.multiple.value?(l.preventDefault(),t.modelValue.value=[...a.options],r="last"):l.shiftKey&&r&&x(l,r),["first","last"].includes(r)){l.preventDefault();const _=r==="first"?0:a.options.length-1;p.value.scrollToIndex(_),requestAnimationFrame(()=>{const h=d(),k=r==="first"?h[0]:h.at(-1);k&&t.changeHighlight(k.ref)})}else if(!r&&!u){A.value+=l.key;const _=Number(Oe()?.getAttribute("data-index")),h=E.value[_].textContent,k=E.value.map(y=>y.textContent??""),V=$e(k,A.value,h),T=E.value.find(y=>y.textContent===V);T&&(p.value.scrollToIndex(T.index,{align:"start"}),requestAnimationFrame(()=>{const y=v.value.querySelector(`[data-index="${T.index}"]`);y instanceof HTMLElement&&t.changeHighlight(y)}))}}),(l,u)=>(w(),re("div",{"data-reka-virtualizer":"",style:Ge({position:"relative",width:"100%",height:`${n(p).getTotalSize()}px`})},[(w(!0),re(ue,null,Ue(m.value,({is:c,item:r})=>(w(),K(We(c),{key:r.index}))),128))],4))}}),At=ft;function vt(o,a){if(typeof o!="object"||o===null)return!1;const i=Xe(o,a);return i!=null&&i!==""}function ce(o,a){return a?{xs:44,sm:48,md:52,lg:56,xl:60}[o]:{xs:24,sm:28,md:32,lg:36,xl:40}[o]}function kt(o,a,i,t){const v=ce(a,!0),d=ce(a,!1);return t?()=>v:i?g=>vt(o[g],i)?v:d:()=>d}export{yt as L,bt as a,Ct as b,xt as c,Et as d,Ft as e,At as f,kt as g,_t as h,W as i};
|