@piwitests/server 0.16.0 → 0.17.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/{DqnyWaSQ.js → -9tk1FrT.js} +1 -1
- package/.output/public/_nuxt/26ll_vBr.js +1 -0
- package/.output/public/_nuxt/{BR9H8k-L.js → 3QTorEhJ.js} +1 -1
- package/.output/public/_nuxt/{CgoAUz76.js → 3QTvYrZp.js} +1 -1
- package/.output/public/_nuxt/{l0gdGdar.js → 73aPL7Ir.js} +1 -1
- package/.output/public/_nuxt/{N3pCB6-m.js → 8jZmK2De.js} +1 -1
- package/.output/public/_nuxt/{B33X4zrC.js → 8xyZSRSO.js} +1 -1
- package/.output/public/_nuxt/{B3NbDoBP.js → 99tAfVF5.js} +1 -1
- package/.output/public/_nuxt/{ze9-Ill2.js → B1CUXGbl.js} +1 -1
- package/.output/public/_nuxt/{CQeMb57w.js → B6hPf4UR.js} +1 -1
- package/.output/public/_nuxt/{DL20rwkA.js → B6w76fJT.js} +1 -1
- package/.output/public/_nuxt/{Bvfmwzgw.js → BDcIWTTq.js} +1 -1
- package/.output/public/_nuxt/{DgYM3eyi.js → BE8ykmwr.js} +1 -1
- package/.output/public/_nuxt/{BY4oA2IH.js → BEsJE07U.js} +1 -1
- package/.output/public/_nuxt/{oNq5pd3r.js → BGZQONfm.js} +1 -1
- package/.output/public/_nuxt/{BZekCf_x.js → BRdhP5lm.js} +1 -1
- package/.output/public/_nuxt/{Br2K9yi_.js → BU6xjw05.js} +1 -1
- package/.output/public/_nuxt/{DjZKuUMz.js → BWFY2RuU.js} +1 -1
- package/.output/public/_nuxt/{CCRRqXez.js → B_QIrc7l.js} +1 -1
- package/.output/public/_nuxt/{BQrSEuzu.js → Ba4_ydKG.js} +1 -1
- package/.output/public/_nuxt/{Dz55UR7w.js → BcLXUmKT.js} +1 -1
- package/.output/public/_nuxt/{nCjfWTGm.js → BciovqwK.js} +1 -1
- package/.output/public/_nuxt/{JCFZINev.js → BgDEjrcz.js} +1 -1
- package/.output/public/_nuxt/{DCpmQ47_.js → BoRJdCd4.js} +1 -1
- package/.output/public/_nuxt/{C8RBRg7I.js → Bpha13F_.js} +1 -1
- package/.output/public/_nuxt/{BdFEUAlx.js → Bq0PQfQY.js} +1 -1
- package/.output/public/_nuxt/{BPKwYP2Q.js → BrT_Sys2.js} +2 -2
- package/.output/public/_nuxt/{CTdvGdc2.js → Bua_L6p4.js} +1 -1
- package/.output/public/_nuxt/{BIksQZfR.js → BwKwWgQe.js} +1 -1
- package/.output/public/_nuxt/{d5ZB3uxF.js → BxRsAYRS.js} +1 -1
- package/.output/public/_nuxt/{mGJLLqyN.js → ByoIgYX_.js} +1 -1
- package/.output/public/_nuxt/{CSYJwpXG.js → C7nwFokE.js} +1 -1
- package/.output/public/_nuxt/CEuVRSr0.js +3 -0
- package/.output/public/_nuxt/{2xvsvjLO.js → CHHqhAsw.js} +1 -1
- package/.output/public/_nuxt/{DhA17dqR.js → CHIbdzqp.js} +1 -1
- package/.output/public/_nuxt/{IFqRT_xJ.js → CMB-NkFa.js} +1 -1
- package/.output/public/_nuxt/{mfzslNx_.js → CNULGfLp.js} +1 -1
- package/.output/public/_nuxt/{CKB_doYB.js → COVRAesU.js} +1 -1
- package/.output/public/_nuxt/{Bzl2H_vl.js → CSAmL8XJ.js} +1 -1
- package/.output/public/_nuxt/{bAfTAihV.js → CWmQcueG.js} +1 -1
- package/.output/public/_nuxt/{BBdfPriC.js → CYuWAvXE.js} +1 -1
- package/.output/public/_nuxt/CbuWynGG.js +1 -0
- package/.output/public/_nuxt/{e1zUTrBb.js → Ce3tBrN7.js} +1 -1
- package/.output/public/_nuxt/{BGYbnqA7.js → Cf4h8qty.js} +1 -1
- package/.output/public/_nuxt/{Kc7La4sL.js → Cl96oI21.js} +1 -1
- package/.output/public/_nuxt/{DdbrJwT-.js → ClJkng9p.js} +1 -1
- package/.output/public/_nuxt/{B7yG1G_l.js → CoKEjZX7.js} +1 -1
- package/.output/public/_nuxt/CvtYJHkY.js +1 -0
- package/.output/public/_nuxt/{DszOHBMG.js → CxLN5Tmq.js} +1 -1
- package/.output/public/_nuxt/{B3sNtVnf.js → Cz2HhsB6.js} +1 -1
- package/.output/public/_nuxt/{C38aZbFJ.js → D0-HTQTD.js} +1 -1
- package/.output/public/_nuxt/{D2jhe9JK.js → D13ybpY3.js} +1 -1
- package/.output/public/_nuxt/{k-z_VVTK.js → D7P0ML0H.js} +1 -1
- package/.output/public/_nuxt/{BV83yObd.js → D811X8KM.js} +1 -1
- package/.output/public/_nuxt/DATh_1DQ.js +1 -0
- package/.output/public/_nuxt/{1AB111xL.js → DAeYmPfX.js} +1 -1
- package/.output/public/_nuxt/DCffDvxl.js +1 -0
- package/.output/public/_nuxt/DDPptydi.js +2 -0
- package/.output/public/_nuxt/{BpNqHxg2.js → DFM2jv9I.js} +1 -1
- package/.output/public/_nuxt/{BuZOa2M3.js → DJHNEqb7.js} +1 -1
- package/.output/public/_nuxt/{CMYQpoOI.js → DPSOtRoz.js} +1 -1
- package/.output/public/_nuxt/{BkDfdHFm.js → DRTxhZBV.js} +1 -1
- package/.output/public/_nuxt/{B2lYFco4.js → DS9yGVFL.js} +1 -1
- package/.output/public/_nuxt/{DfcAIbcX.js → DT5rhzhJ.js} +1 -1
- package/.output/public/_nuxt/{BpceIssd.js → DTH2lteW.js} +1 -1
- package/.output/public/_nuxt/DUe6xuKQ.js +1 -0
- package/.output/public/_nuxt/{DcCNnjKl.js → D_A6axXa.js} +1 -1
- package/.output/public/_nuxt/D_TbJDHY.js +1 -0
- package/.output/public/_nuxt/{DIkLLyR6.js → Df3QtbpW.js} +1 -1
- package/.output/public/_nuxt/{Dzz9_Z0u.js → DjRhouSr.js} +1 -1
- package/.output/public/_nuxt/{CuYYdFBL.js → Dn6cGVYB.js} +1 -1
- package/.output/public/_nuxt/{CoHGrO41.js → DpJrGwCr.js} +2 -2
- package/.output/public/_nuxt/DqsMiUoW.js +2 -0
- package/.output/public/_nuxt/{D33On6AX.js → Ds2Y3oms.js} +1 -1
- package/.output/public/_nuxt/Ds4Lb1vi.js +7 -0
- package/.output/public/_nuxt/{DuMv-ugy.js → DtXREpk_.js} +1 -1
- package/.output/public/_nuxt/{BRKa6EQR.js → DvC5Adg1.js} +1 -1
- package/.output/public/_nuxt/{BVW5qIDP.js → DvXvJzFP.js} +1 -1
- package/.output/public/_nuxt/{BIf1R_fu.js → Dvc1aWpA.js} +1 -1
- package/.output/public/_nuxt/{-KQO1A4C.js → DwZiG9xH.js} +1 -1
- package/.output/public/_nuxt/Dx1oCMgy.js +47 -0
- package/.output/public/_nuxt/{CpO-ABDW.js → DxQq_L07.js} +1 -1
- package/.output/public/_nuxt/{BoRFLTAO.js → Dym66h3p.js} +1 -1
- package/.output/public/_nuxt/{ABGJk0pu.js → Dz3Wbekz.js} +1 -1
- package/.output/public/_nuxt/{qzAP_nm7.js → HCK35QD8.js} +1 -1
- package/.output/public/_nuxt/{DuBBqqbF.js → L6HlmmEa.js} +1 -1
- package/.output/public/_nuxt/{BS0gKVuF.js → PxPbRVF-.js} +1 -1
- package/.output/public/_nuxt/{DbeHHTk-.js → QFMx1VKs.js} +1 -1
- package/.output/public/_nuxt/{C3r_Sv1p.js → Sgf5OLhm.js} +1 -1
- package/.output/public/_nuxt/US3YSX4T.js +1 -0
- package/.output/public/_nuxt/{xUrLy-Zn.js → Wfk1m0ni.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/05a2dd95-d1c1-4e3a-8625-ac6bfea83837.json +1 -0
- package/.output/public/_nuxt/{B43OGXzV.js → cBj9fai9.js} +1 -1
- package/.output/public/_nuxt/{BpIsBP5g.js → csqspBeX.js} +1 -1
- package/.output/public/_nuxt/entry.BaIGwMjT.css +1 -0
- package/.output/public/_nuxt/{CJFqA_QW.js → jlBi8Byu.js} +1 -1
- package/.output/public/_nuxt/{D4VpoHDP.js → lCkcEykv.js} +1 -1
- package/.output/public/_nuxt/{DOuoR2Pk.js → qYFZH4Z8.js} +1 -1
- package/.output/public/_nuxt/{uKeO2H7F.js → r9WApUfF.js} +1 -1
- package/.output/public/_nuxt/{DRtTLQri.js → rw7Hdll3.js} +1 -1
- package/.output/public/_nuxt/{C1K3r_fc.js → sMFaPAAR.js} +1 -1
- package/.output/public/_nuxt/{DAWn6Z7h.js → vzXhOO8R.js} +1 -1
- package/.output/public/_nuxt/{DJS3Bf50.js → yZ4LuI9d.js} +1 -1
- package/.output/public/_nuxt/{iwD5atI2.js → z7PmsnBG.js} +1 -1
- package/.output/public/_nuxt/{Bb64FEFL.js → za5M7BGh.js} +1 -1
- package/.output/public/sw.js +1 -1
- package/.output/server/chunks/build/{Checkbox-7ZiMz60w.mjs → Checkbox-cVOSIY93.mjs} +2 -2
- package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +1 -0
- package/.output/server/chunks/build/{CiEnvCard-DNxBVvx4.mjs → CiEnvCard-DXPOhdSG.mjs} +2 -2
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +1 -0
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs +102 -0
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +1 -0
- package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs +122 -0
- package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs.map +1 -0
- package/.output/server/chunks/build/{ProjectTestCasesTable-9418EI8J.mjs → ProjectTestCasesTable-9Ia825h8.mjs} +2 -2
- package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-COwTIQlV.mjs → Select-ppPz926C.mjs} +3 -2
- package/.output/server/chunks/build/Select-ppPz926C.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs → SelectMenu-799c_Ils.mjs} +2 -2
- package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs.map → SelectMenu-799c_Ils.mjs.map} +1 -1
- package/.output/server/chunks/build/{Switch-htSKgC38.mjs → Switch-xQQ3_ME1.mjs} +2 -2
- package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs → _id_-B2yirIuA.mjs} +5 -4
- package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs.map → _id_-B2yirIuA.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs → _id_-B4V5fop6.mjs} +5 -4
- package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs.map → _id_-B4V5fop6.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs → _id_-bWcP2xFl.mjs} +8 -7
- package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs.map → _id_-bWcP2xFl.mjs.map} +1 -1
- package/.output/server/chunks/build/about-TuEZ9n1Q.mjs +625 -0
- package/.output/server/chunks/build/about-TuEZ9n1Q.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-V3YOh3yx.mjs → ai-7jdaPOmj.mjs} +6 -5
- package/.output/server/chunks/build/{ai-V3YOh3yx.mjs.map → ai-7jdaPOmj.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs → analytics-B276WPeU.mjs} +7 -6
- package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs.map → analytics-B276WPeU.mjs.map} +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-BfMirIgG.mjs → default-BSzdkM_L.mjs} +9 -7
- package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DtNcJCyb.mjs → docs-EXhN3sqC.mjs} +4 -3
- package/.output/server/chunks/build/{docs-DtNcJCyb.mjs.map → docs-EXhN3sqC.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-Dsf11mL5.mjs → edit-C9Z7oZeu.mjs} +5 -4
- package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +1 -0
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs +13 -0
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs.map +1 -0
- package/.output/server/chunks/build/{index-DzEgjHlB.mjs → index-BK9PTRpd.mjs} +24 -8
- package/.output/server/chunks/build/{index-DzEgjHlB.mjs.map → index-BK9PTRpd.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-BgpEKTSq.mjs → index-DVUtBexc.mjs} +9 -8
- package/.output/server/chunks/build/{index-BgpEKTSq.mjs.map → index-DVUtBexc.mjs.map} +1 -1
- package/.output/server/chunks/build/{mcp-CXwa3xU3.mjs → mcp-CQ-21rwc.mjs} +132 -25
- package/.output/server/chunks/build/mcp-CQ-21rwc.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-hJj8tbAT.mjs → notifications-Dzm9c0u_.mjs} +4 -3
- package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +17 -17
- package/.output/server/chunks/build/{settings-metadata-Cp0dx0vm.mjs → settings-metadata-B0wo5R-W.mjs} +3 -1
- package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-Ci_7EXYQ.mjs → settings-pNyPBXVa.mjs} +4 -3
- package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-CM-Pd-9E.mjs → storage-XelzuyPy.mjs} +16 -182
- package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-DkGQB027.mjs → test-cases-pmOxi-AN.mjs} +5 -4
- package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +1 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs +9 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +1 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs +9 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-D2knPCqF.mjs → useSettingsNav-NjI2seBy.mjs} +5 -3
- package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +1 -0
- package/.output/server/chunks/build/{virtualizer-0-UBy7xl.mjs → virtualizer-ZaqK4guJ.mjs} +3 -2
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-L4kBV5Nh.mjs → wasted-time-CguAF9zc.mjs} +2 -2
- package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +703 -681
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/B6Jp7fpa.js +0 -46
- package/.output/public/_nuxt/BP_SWi7S.js +0 -1
- package/.output/public/_nuxt/Bf62wdzp.js +0 -1
- package/.output/public/_nuxt/C219JuBV.js +0 -1
- package/.output/public/_nuxt/CX1dcT4v.js +0 -1
- package/.output/public/_nuxt/CdME81ij.js +0 -2
- package/.output/public/_nuxt/Dsk4Ic18.js +0 -7
- package/.output/public/_nuxt/HoKG9cc2.js +0 -1
- package/.output/public/_nuxt/WctJXszi.js +0 -3
- package/.output/public/_nuxt/builds/meta/5182c9fb-56a6-4df2-9685-4020a08ce7a5.json +0 -1
- package/.output/public/_nuxt/entry.BsmKRJzR.css +0 -1
- package/.output/public/_nuxt/jIF87ALb.js +0 -1
- package/.output/server/chunks/build/Checkbox-7ZiMz60w.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-DNxBVvx4.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-9418EI8J.mjs.map +0 -1
- package/.output/server/chunks/build/Select-COwTIQlV.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-htSKgC38.mjs.map +0 -1
- package/.output/server/chunks/build/about-FB9PYAHK.mjs +0 -313
- package/.output/server/chunks/build/about-FB9PYAHK.mjs.map +0 -1
- package/.output/server/chunks/build/default-BfMirIgG.mjs.map +0 -1
- package/.output/server/chunks/build/edit-Dsf11mL5.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-CXwa3xU3.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-hJj8tbAT.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Ci_7EXYQ.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-Cp0dx0vm.mjs.map +0 -1
- package/.output/server/chunks/build/storage-CM-Pd-9E.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-DkGQB027.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs +0 -19
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-D2knPCqF.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-0-UBy7xl.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-L4kBV5Nh.mjs.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{ap as ot,d as lt,o as tn,c as sn,i as an,k as de,t as ut,q as gt,j as dt,_ as ft,r as ht,h as Et}from"./BPKwYP2Q.js";import{d as pt}from"./k-z_VVTK.js";import{u as bt}from"./DuMv-ugy.js";var $e,rn;function _t(){if(rn)return $e;rn=1;function a(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{const s=e[n],d=typeof s;(d==="object"||d==="function")&&!Object.isFrozen(s)&&a(s)}),e}class f{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function b(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function u(e,...n){const s=Object.create(null);for(const d in e)s[d]=e[d];return n.forEach(function(d){for(const O in d)s[O]=d[O]}),s}const w="</span>",F=e=>!!e.scope,y=(e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const s=e.split(".");return[`${n}${s.shift()}`,...s.map((d,O)=>`${d}${"_".repeat(O+1)}`)].join(" ")}return`${n}${e}`};class T{constructor(n,s){this.buffer="",this.classPrefix=s.classPrefix,n.walk(this)}addText(n){this.buffer+=b(n)}openNode(n){if(!F(n))return;const s=y(n.scope,{prefix:this.classPrefix});this.span(s)}closeNode(n){F(n)&&(this.buffer+=w)}value(){return this.buffer}span(n){this.buffer+=`<span class="${n}">`}}const P=(e={})=>{const n={children:[]};return Object.assign(n,e),n};class C{constructor(){this.rootNode=P(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(n){this.top.children.push(n)}openNode(n){const s=P({scope:n});this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(n){return this.constructor._walk(n,this.rootNode)}static _walk(n,s){return typeof s=="string"?n.addText(s):s.children&&(n.openNode(s),s.children.forEach(d=>this._walk(n,d)),n.closeNode(s)),n}static _collapse(n){typeof n!="string"&&n.children&&(n.children.every(s=>typeof s=="string")?n.children=[n.children.join("")]:n.children.forEach(s=>{C._collapse(s)}))}}class Z extends C{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,s){const d=n.root;s&&(d.scope=`language:${s}`),this.add(d)}toHTML(){return new T(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function L(e){return e?typeof e=="string"?e:e.source:null}function R(e){return m("(?=",e,")")}function K(e){return m("(?:",e,")*")}function W(e){return m("(?:",e,")?")}function m(...e){return e.map(s=>L(s)).join("")}function X(e){const n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function Q(...e){return"("+(X(e).capture?"":"?:")+e.map(d=>L(d)).join("|")+")"}function D(e){return new RegExp(e.toString()+"|").exec("").length-1}function Y(e,n){const s=e&&e.exec(n);return s&&s.index===0}const ee=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function $(e,{joinWith:n}){let s=0;return e.map(d=>{s+=1;const O=s;let M=L(d),c="";for(;M.length>0;){const r=ee.exec(M);if(!r){c+=M;break}c+=M.substring(0,r.index),M=M.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?c+="\\"+String(Number(r[1])+O):(c+=r[0],r[0]==="("&&s++)}return c}).map(d=>`(${d})`).join(n)}const H=/\b\B/,fe="[a-zA-Z]\\w*",ne="[a-zA-Z_]\\w*",he="\\b\\d+(\\.\\d+)?",Ee="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",pe="\\b(0b[01]+)",Ne="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Se=(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),u({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(s,d)=>{s.index!==0&&d.ignoreMatch()}},e)},te={begin:"\\\\[\\s\\S]",relevance:0},Ae={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[te]},oe={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[te]},ye={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},_=function(e,n,s={}){const d=u({scope:"comment",begin:e,end:n,contains:[]},s);d.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const O=Q("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return d.contains.push({begin:m(/[ ]+/,"(",O,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),d},U=_("//","$"),G=_("/\\*","\\*/"),j=_("#","$"),se={scope:"number",begin:he,relevance:0},le={scope:"number",begin:Ee,relevance:0},Nn={scope:"number",begin:pe,relevance:0},Sn={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[te,{begin:/\[/,end:/\]/,relevance:0,contains:[te]}]},An={scope:"title",begin:fe,relevance:0},yn={scope:"title",begin:ne,relevance:0},Tn={begin:"\\.\\s*"+ne,relevance:0};var me=Object.freeze({__proto__:null,APOS_STRING_MODE:Ae,BACKSLASH_ESCAPE:te,BINARY_NUMBER_MODE:Nn,BINARY_NUMBER_RE:pe,COMMENT:_,C_BLOCK_COMMENT_MODE:G,C_LINE_COMMENT_MODE:U,C_NUMBER_MODE:le,C_NUMBER_RE:Ee,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(n,s)=>{s.data._beginMatch=n[1]},"on:end":(n,s)=>{s.data._beginMatch!==n[1]&&s.ignoreMatch()}})},HASH_COMMENT_MODE:j,IDENT_RE:fe,MATCH_NOTHING_RE:H,METHOD_GUARD:Tn,NUMBER_MODE:se,NUMBER_RE:he,PHRASAL_WORDS_MODE:ye,QUOTE_STRING_MODE:oe,REGEXP_MODE:Sn,RE_STARTERS_RE:Ne,SHEBANG:Se,TITLE_MODE:An,UNDERSCORE_IDENT_RE:ne,UNDERSCORE_TITLE_MODE:yn});function mn(e,n){e.input[e.index-1]==="."&&n.ignoreMatch()}function Rn(e,n){e.className!==void 0&&(e.scope=e.className,delete e.className)}function On(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=mn,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Mn(e,n){Array.isArray(e.illegal)&&(e.illegal=Q(...e.illegal))}function wn(e,n){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function xn(e,n){e.relevance===void 0&&(e.relevance=1)}const In=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const s=Object.assign({},e);Object.keys(e).forEach(d=>{delete e[d]}),e.keywords=s.keywords,e.begin=m(s.beforeMatch,R(s.begin)),e.starts={relevance:0,contains:[Object.assign(s,{endsParent:!0})]},e.relevance=0,delete s.beforeMatch},Cn=["of","and","for","in","not","or","if","then","parent","list","value"],vn="keyword";function He(e,n,s=vn){const d=Object.create(null);return typeof e=="string"?O(s,e.split(" ")):Array.isArray(e)?O(s,e):Object.keys(e).forEach(function(M){Object.assign(d,He(e[M],n,M))}),d;function O(M,c){n&&(c=c.map(r=>r.toLowerCase())),c.forEach(function(r){const g=r.split("|");d[g[0]]=[M,kn(g[0],g[1])]})}}function kn(e,n){return n?Number(n):Ln(e)?0:1}function Ln(e){return Cn.includes(e.toLowerCase())}const Ge={},ue=e=>{console.error(e)},ze=(e,...n)=>{console.log(`WARN: ${e}`,...n)},be=(e,n)=>{Ge[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),Ge[`${e}/${n}`]=!0)},Re=new Error;function Fe(e,n,{key:s}){let d=0;const O=e[s],M={},c={};for(let r=1;r<=n.length;r++)c[r+d]=O[r],M[r+d]=!0,d+=D(n[r-1]);e[s]=c,e[s]._emit=M,e[s]._multi=!0}function Bn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw ue("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Re;if(typeof e.beginScope!="object"||e.beginScope===null)throw ue("beginScope must be object"),Re;Fe(e,e.begin,{key:"beginScope"}),e.begin=$(e.begin,{joinWith:""})}}function Dn(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw ue("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Re;if(typeof e.endScope!="object"||e.endScope===null)throw ue("endScope must be object"),Re;Fe(e,e.end,{key:"endScope"}),e.end=$(e.end,{joinWith:""})}}function Un(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Pn(e){Un(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Bn(e),Dn(e)}function $n(e){function n(c,r){return new RegExp(L(c),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class s{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,g){g.position=this.position++,this.matchIndexes[this.matchAt]=g,this.regexes.push([g,r]),this.matchAt+=D(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(g=>g[1]);this.matcherRe=n($(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const g=this.matcherRe.exec(r);if(!g)return null;const v=g.findIndex((Te,ke)=>ke>0&&Te!==void 0),x=this.matchIndexes[v];return g.splice(0,v),Object.assign(g,x)}}class d{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const g=new s;return this.rules.slice(r).forEach(([v,x])=>g.addRule(v,x)),g.compile(),this.multiRegexes[r]=g,g}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,g){this.rules.push([r,g]),g.type==="begin"&&this.count++}exec(r){const g=this.getMatcher(this.regexIndex);g.lastIndex=this.lastIndex;let v=g.exec(r);if(this.resumingScanAtSamePosition()&&!(v&&v.index===this.lastIndex)){const x=this.getMatcher(0);x.lastIndex=this.lastIndex+1,v=x.exec(r)}return v&&(this.regexIndex+=v.position+1,this.regexIndex===this.count&&this.considerAll()),v}}function O(c){const r=new d;return c.contains.forEach(g=>r.addRule(g.begin,{rule:g,type:"begin"})),c.terminatorEnd&&r.addRule(c.terminatorEnd,{type:"end"}),c.illegal&&r.addRule(c.illegal,{type:"illegal"}),r}function M(c,r){const g=c;if(c.isCompiled)return g;[Rn,wn,Pn,In].forEach(x=>x(c,r)),e.compilerExtensions.forEach(x=>x(c,r)),c.__beforeBegin=null,[On,Mn,xn].forEach(x=>x(c,r)),c.isCompiled=!0;let v=null;return typeof c.keywords=="object"&&c.keywords.$pattern&&(c.keywords=Object.assign({},c.keywords),v=c.keywords.$pattern,delete c.keywords.$pattern),v=v||/\w+/,c.keywords&&(c.keywords=He(c.keywords,e.case_insensitive)),g.keywordPatternRe=n(v,!0),r&&(c.begin||(c.begin=/\B|\b/),g.beginRe=n(g.begin),!c.end&&!c.endsWithParent&&(c.end=/\B|\b/),c.end&&(g.endRe=n(g.end)),g.terminatorEnd=L(g.end)||"",c.endsWithParent&&r.terminatorEnd&&(g.terminatorEnd+=(c.end?"|":"")+r.terminatorEnd)),c.illegal&&(g.illegalRe=n(c.illegal)),c.contains||(c.contains=[]),c.contains=[].concat(...c.contains.map(function(x){return Hn(x==="self"?c:x)})),c.contains.forEach(function(x){M(x,g)}),c.starts&&M(c.starts,r),g.matcher=O(g),g}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=u(e.classNameAliases||{}),M(e)}function Ze(e){return e?e.endsWithParent||Ze(e.starts):!1}function Hn(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(n){return u(e,{variants:null},n)})),e.cachedVariants?e.cachedVariants:Ze(e)?u(e,{starts:e.starts?u(e.starts):null}):Object.isFrozen(e)?u(e):e}var Gn="11.11.1";class zn extends Error{constructor(n,s){super(n),this.name="HTMLInjectionError",this.html=s}}const ve=b,Ke=u,We=Symbol("nomatch"),Fn=7,Xe=function(e){const n=Object.create(null),s=Object.create(null),d=[];let O=!0;const M="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Z};function g(t){return r.noHighlightRe.test(t)}function v(t){let l=t.className+" ";l+=t.parentNode?t.parentNode.className:"";const p=r.languageDetectRe.exec(l);if(p){const S=re(p[1]);return S||(ze(M.replace("{}",p[1])),ze("Falling back to no-highlight mode for this block.",t)),S?p[1]:"no-highlight"}return l.split(/\s+/).find(S=>g(S)||re(S))}function x(t,l,p){let S="",I="";typeof l=="object"?(S=t,p=l.ignoreIllegals,I=l.language):(be("10.7.0","highlight(lang, code, ...args) has been deprecated."),be("10.7.0",`Please use highlight(code, options) instead.
|
|
1
|
+
import{ap as ot,d as lt,o as tn,c as sn,i as an,k as de,t as ut,q as gt,j as dt,r as ft,h as ht,_ as Et}from"./BrT_Sys2.js";import{d as pt}from"./D7P0ML0H.js";import{u as bt}from"./DtXREpk_.js";var $e,rn;function _t(){if(rn)return $e;rn=1;function a(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{const s=e[n],d=typeof s;(d==="object"||d==="function")&&!Object.isFrozen(s)&&a(s)}),e}class f{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function b(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function u(e,...n){const s=Object.create(null);for(const d in e)s[d]=e[d];return n.forEach(function(d){for(const O in d)s[O]=d[O]}),s}const w="</span>",F=e=>!!e.scope,y=(e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const s=e.split(".");return[`${n}${s.shift()}`,...s.map((d,O)=>`${d}${"_".repeat(O+1)}`)].join(" ")}return`${n}${e}`};class T{constructor(n,s){this.buffer="",this.classPrefix=s.classPrefix,n.walk(this)}addText(n){this.buffer+=b(n)}openNode(n){if(!F(n))return;const s=y(n.scope,{prefix:this.classPrefix});this.span(s)}closeNode(n){F(n)&&(this.buffer+=w)}value(){return this.buffer}span(n){this.buffer+=`<span class="${n}">`}}const P=(e={})=>{const n={children:[]};return Object.assign(n,e),n};class C{constructor(){this.rootNode=P(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(n){this.top.children.push(n)}openNode(n){const s=P({scope:n});this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(n){return this.constructor._walk(n,this.rootNode)}static _walk(n,s){return typeof s=="string"?n.addText(s):s.children&&(n.openNode(s),s.children.forEach(d=>this._walk(n,d)),n.closeNode(s)),n}static _collapse(n){typeof n!="string"&&n.children&&(n.children.every(s=>typeof s=="string")?n.children=[n.children.join("")]:n.children.forEach(s=>{C._collapse(s)}))}}class Z extends C{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,s){const d=n.root;s&&(d.scope=`language:${s}`),this.add(d)}toHTML(){return new T(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function L(e){return e?typeof e=="string"?e:e.source:null}function R(e){return m("(?=",e,")")}function K(e){return m("(?:",e,")*")}function W(e){return m("(?:",e,")?")}function m(...e){return e.map(s=>L(s)).join("")}function X(e){const n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function Q(...e){return"("+(X(e).capture?"":"?:")+e.map(d=>L(d)).join("|")+")"}function D(e){return new RegExp(e.toString()+"|").exec("").length-1}function Y(e,n){const s=e&&e.exec(n);return s&&s.index===0}const ee=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function $(e,{joinWith:n}){let s=0;return e.map(d=>{s+=1;const O=s;let M=L(d),c="";for(;M.length>0;){const r=ee.exec(M);if(!r){c+=M;break}c+=M.substring(0,r.index),M=M.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?c+="\\"+String(Number(r[1])+O):(c+=r[0],r[0]==="("&&s++)}return c}).map(d=>`(${d})`).join(n)}const H=/\b\B/,fe="[a-zA-Z]\\w*",ne="[a-zA-Z_]\\w*",he="\\b\\d+(\\.\\d+)?",Ee="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",pe="\\b(0b[01]+)",Ne="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Se=(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),u({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(s,d)=>{s.index!==0&&d.ignoreMatch()}},e)},te={begin:"\\\\[\\s\\S]",relevance:0},Ae={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[te]},oe={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[te]},ye={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},_=function(e,n,s={}){const d=u({scope:"comment",begin:e,end:n,contains:[]},s);d.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const O=Q("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return d.contains.push({begin:m(/[ ]+/,"(",O,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),d},U=_("//","$"),G=_("/\\*","\\*/"),j=_("#","$"),se={scope:"number",begin:he,relevance:0},le={scope:"number",begin:Ee,relevance:0},Nn={scope:"number",begin:pe,relevance:0},Sn={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[te,{begin:/\[/,end:/\]/,relevance:0,contains:[te]}]},An={scope:"title",begin:fe,relevance:0},yn={scope:"title",begin:ne,relevance:0},Tn={begin:"\\.\\s*"+ne,relevance:0};var me=Object.freeze({__proto__:null,APOS_STRING_MODE:Ae,BACKSLASH_ESCAPE:te,BINARY_NUMBER_MODE:Nn,BINARY_NUMBER_RE:pe,COMMENT:_,C_BLOCK_COMMENT_MODE:G,C_LINE_COMMENT_MODE:U,C_NUMBER_MODE:le,C_NUMBER_RE:Ee,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(n,s)=>{s.data._beginMatch=n[1]},"on:end":(n,s)=>{s.data._beginMatch!==n[1]&&s.ignoreMatch()}})},HASH_COMMENT_MODE:j,IDENT_RE:fe,MATCH_NOTHING_RE:H,METHOD_GUARD:Tn,NUMBER_MODE:se,NUMBER_RE:he,PHRASAL_WORDS_MODE:ye,QUOTE_STRING_MODE:oe,REGEXP_MODE:Sn,RE_STARTERS_RE:Ne,SHEBANG:Se,TITLE_MODE:An,UNDERSCORE_IDENT_RE:ne,UNDERSCORE_TITLE_MODE:yn});function mn(e,n){e.input[e.index-1]==="."&&n.ignoreMatch()}function Rn(e,n){e.className!==void 0&&(e.scope=e.className,delete e.className)}function On(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=mn,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Mn(e,n){Array.isArray(e.illegal)&&(e.illegal=Q(...e.illegal))}function wn(e,n){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function xn(e,n){e.relevance===void 0&&(e.relevance=1)}const In=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const s=Object.assign({},e);Object.keys(e).forEach(d=>{delete e[d]}),e.keywords=s.keywords,e.begin=m(s.beforeMatch,R(s.begin)),e.starts={relevance:0,contains:[Object.assign(s,{endsParent:!0})]},e.relevance=0,delete s.beforeMatch},Cn=["of","and","for","in","not","or","if","then","parent","list","value"],vn="keyword";function He(e,n,s=vn){const d=Object.create(null);return typeof e=="string"?O(s,e.split(" ")):Array.isArray(e)?O(s,e):Object.keys(e).forEach(function(M){Object.assign(d,He(e[M],n,M))}),d;function O(M,c){n&&(c=c.map(r=>r.toLowerCase())),c.forEach(function(r){const g=r.split("|");d[g[0]]=[M,kn(g[0],g[1])]})}}function kn(e,n){return n?Number(n):Ln(e)?0:1}function Ln(e){return Cn.includes(e.toLowerCase())}const Ge={},ue=e=>{console.error(e)},ze=(e,...n)=>{console.log(`WARN: ${e}`,...n)},be=(e,n)=>{Ge[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),Ge[`${e}/${n}`]=!0)},Re=new Error;function Fe(e,n,{key:s}){let d=0;const O=e[s],M={},c={};for(let r=1;r<=n.length;r++)c[r+d]=O[r],M[r+d]=!0,d+=D(n[r-1]);e[s]=c,e[s]._emit=M,e[s]._multi=!0}function Bn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw ue("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Re;if(typeof e.beginScope!="object"||e.beginScope===null)throw ue("beginScope must be object"),Re;Fe(e,e.begin,{key:"beginScope"}),e.begin=$(e.begin,{joinWith:""})}}function Dn(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw ue("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Re;if(typeof e.endScope!="object"||e.endScope===null)throw ue("endScope must be object"),Re;Fe(e,e.end,{key:"endScope"}),e.end=$(e.end,{joinWith:""})}}function Un(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Pn(e){Un(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Bn(e),Dn(e)}function $n(e){function n(c,r){return new RegExp(L(c),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class s{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,g){g.position=this.position++,this.matchIndexes[this.matchAt]=g,this.regexes.push([g,r]),this.matchAt+=D(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(g=>g[1]);this.matcherRe=n($(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const g=this.matcherRe.exec(r);if(!g)return null;const v=g.findIndex((Te,ke)=>ke>0&&Te!==void 0),x=this.matchIndexes[v];return g.splice(0,v),Object.assign(g,x)}}class d{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const g=new s;return this.rules.slice(r).forEach(([v,x])=>g.addRule(v,x)),g.compile(),this.multiRegexes[r]=g,g}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,g){this.rules.push([r,g]),g.type==="begin"&&this.count++}exec(r){const g=this.getMatcher(this.regexIndex);g.lastIndex=this.lastIndex;let v=g.exec(r);if(this.resumingScanAtSamePosition()&&!(v&&v.index===this.lastIndex)){const x=this.getMatcher(0);x.lastIndex=this.lastIndex+1,v=x.exec(r)}return v&&(this.regexIndex+=v.position+1,this.regexIndex===this.count&&this.considerAll()),v}}function O(c){const r=new d;return c.contains.forEach(g=>r.addRule(g.begin,{rule:g,type:"begin"})),c.terminatorEnd&&r.addRule(c.terminatorEnd,{type:"end"}),c.illegal&&r.addRule(c.illegal,{type:"illegal"}),r}function M(c,r){const g=c;if(c.isCompiled)return g;[Rn,wn,Pn,In].forEach(x=>x(c,r)),e.compilerExtensions.forEach(x=>x(c,r)),c.__beforeBegin=null,[On,Mn,xn].forEach(x=>x(c,r)),c.isCompiled=!0;let v=null;return typeof c.keywords=="object"&&c.keywords.$pattern&&(c.keywords=Object.assign({},c.keywords),v=c.keywords.$pattern,delete c.keywords.$pattern),v=v||/\w+/,c.keywords&&(c.keywords=He(c.keywords,e.case_insensitive)),g.keywordPatternRe=n(v,!0),r&&(c.begin||(c.begin=/\B|\b/),g.beginRe=n(g.begin),!c.end&&!c.endsWithParent&&(c.end=/\B|\b/),c.end&&(g.endRe=n(g.end)),g.terminatorEnd=L(g.end)||"",c.endsWithParent&&r.terminatorEnd&&(g.terminatorEnd+=(c.end?"|":"")+r.terminatorEnd)),c.illegal&&(g.illegalRe=n(c.illegal)),c.contains||(c.contains=[]),c.contains=[].concat(...c.contains.map(function(x){return Hn(x==="self"?c:x)})),c.contains.forEach(function(x){M(x,g)}),c.starts&&M(c.starts,r),g.matcher=O(g),g}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=u(e.classNameAliases||{}),M(e)}function Ze(e){return e?e.endsWithParent||Ze(e.starts):!1}function Hn(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(n){return u(e,{variants:null},n)})),e.cachedVariants?e.cachedVariants:Ze(e)?u(e,{starts:e.starts?u(e.starts):null}):Object.isFrozen(e)?u(e):e}var Gn="11.11.1";class zn extends Error{constructor(n,s){super(n),this.name="HTMLInjectionError",this.html=s}}const ve=b,Ke=u,We=Symbol("nomatch"),Fn=7,Xe=function(e){const n=Object.create(null),s=Object.create(null),d=[];let O=!0;const M="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Z};function g(t){return r.noHighlightRe.test(t)}function v(t){let l=t.className+" ";l+=t.parentNode?t.parentNode.className:"";const p=r.languageDetectRe.exec(l);if(p){const S=re(p[1]);return S||(ze(M.replace("{}",p[1])),ze("Falling back to no-highlight mode for this block.",t)),S?p[1]:"no-highlight"}return l.split(/\s+/).find(S=>g(S)||re(S))}function x(t,l,p){let S="",I="";typeof l=="object"?(S=t,p=l.ignoreIllegals,I=l.language):(be("10.7.0","highlight(lang, code, ...args) has been deprecated."),be("10.7.0",`Please use highlight(code, options) instead.
|
|
2
2
|
https://github.com/highlightjs/highlight.js/issues/2277`),I=t,S=l),p===void 0&&(p=!0);const J={code:S,language:I};Me("before:highlight",J);const ce=J.result?J.result:Te(J.language,J.code,p);return ce.code=J.code,Me("after:highlight",ce),ce}function Te(t,l,p,S){const I=Object.create(null);function J(i,o){return i.keywords[o]}function ce(){if(!h.keywords){k.addText(A);return}let i=0;h.keywordPatternRe.lastIndex=0;let o=h.keywordPatternRe.exec(A),E="";for(;o;){E+=A.substring(i,o.index);const N=q.case_insensitive?o[0].toLowerCase():o[0],B=J(h,N);if(B){const[ie,rt]=B;if(k.addText(E),E="",I[N]=(I[N]||0)+1,I[N]<=Fn&&(Ie+=rt),ie.startsWith("_"))E+=o[0];else{const ct=q.classNameAliases[ie]||ie;V(o[0],ct)}}else E+=o[0];i=h.keywordPatternRe.lastIndex,o=h.keywordPatternRe.exec(A)}E+=A.substring(i),k.addText(E)}function we(){if(A==="")return;let i=null;if(typeof h.subLanguage=="string"){if(!n[h.subLanguage]){k.addText(A);return}i=Te(h.subLanguage,A,!0,nn[h.subLanguage]),nn[h.subLanguage]=i._top}else i=Le(A,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(Ie+=i.relevance),k.__addSublanguage(i._emitter,i.language)}function z(){h.subLanguage!=null?we():ce(),A=""}function V(i,o){i!==""&&(k.startScope(o),k.addText(i),k.endScope())}function Ve(i,o){let E=1;const N=o.length-1;for(;E<=N;){if(!i._emit[E]){E++;continue}const B=q.classNameAliases[i[E]]||i[E],ie=o[E];B?V(ie,B):(A=ie,ce(),A=""),E++}}function qe(i,o){return i.scope&&typeof i.scope=="string"&&k.openNode(q.classNameAliases[i.scope]||i.scope),i.beginScope&&(i.beginScope._wrap?(V(A,q.classNameAliases[i.beginScope._wrap]||i.beginScope._wrap),A=""):i.beginScope._multi&&(Ve(i.beginScope,o),A="")),h=Object.create(i,{parent:{value:h}}),h}function Qe(i,o,E){let N=Y(i.endRe,E);if(N){if(i["on:end"]){const B=new f(i);i["on:end"](o,B),B.isMatchIgnored&&(N=!1)}if(N){for(;i.endsParent&&i.parent;)i=i.parent;return i}}if(i.endsWithParent)return Qe(i.parent,o,E)}function nt(i){return h.matcher.regexIndex===0?(A+=i[0],1):(Pe=!0,0)}function tt(i){const o=i[0],E=i.rule,N=new f(E),B=[E.__beforeBegin,E["on:begin"]];for(const ie of B)if(ie&&(ie(i,N),N.isMatchIgnored))return nt(o);return E.skip?A+=o:(E.excludeBegin&&(A+=o),z(),!E.returnBegin&&!E.excludeBegin&&(A=o)),qe(E,i),E.returnBegin?0:o.length}function st(i){const o=i[0],E=l.substring(i.index),N=Qe(h,i,E);if(!N)return We;const B=h;h.endScope&&h.endScope._wrap?(z(),V(o,h.endScope._wrap)):h.endScope&&h.endScope._multi?(z(),Ve(h.endScope,i)):B.skip?A+=o:(B.returnEnd||B.excludeEnd||(A+=o),z(),B.excludeEnd&&(A=o));do h.scope&&k.closeNode(),!h.skip&&!h.subLanguage&&(Ie+=h.relevance),h=h.parent;while(h!==N.parent);return N.starts&&qe(N.starts,i),B.returnEnd?0:o.length}function it(){const i=[];for(let o=h;o!==q;o=o.parent)o.scope&&i.unshift(o.scope);i.forEach(o=>k.openNode(o))}let xe={};function en(i,o){const E=o&&o[0];if(A+=i,E==null)return z(),0;if(xe.type==="begin"&&o.type==="end"&&xe.index===o.index&&E===""){if(A+=l.slice(o.index,o.index+1),!O){const N=new Error(`0 width match regex (${t})`);throw N.languageName=t,N.badRule=xe.rule,N}return 1}if(xe=o,o.type==="begin")return tt(o);if(o.type==="illegal"&&!p){const N=new Error('Illegal lexeme "'+E+'" for mode "'+(h.scope||"<unnamed>")+'"');throw N.mode=h,N}else if(o.type==="end"){const N=st(o);if(N!==We)return N}if(o.type==="illegal"&&E==="")return A+=`
|
|
3
|
-
`,1;if(Ue>1e5&&Ue>o.index*3)throw new Error("potential infinite loop, way more iterations than matches");return A+=E,E.length}const q=re(t);if(!q)throw ue(M.replace("{}",t)),new Error('Unknown language: "'+t+'"');const at=$n(q);let De="",h=S||at;const nn={},k=new r.__emitter(r);it();let A="",Ie=0,ge=0,Ue=0,Pe=!1;try{if(q.__emitTokens)q.__emitTokens(l,k);else{for(h.matcher.considerAll();;){Ue++,Pe?Pe=!1:h.matcher.considerAll(),h.matcher.lastIndex=ge;const i=h.matcher.exec(l);if(!i)break;const o=l.substring(ge,i.index),E=en(o,i);ge=i.index+E}en(l.substring(ge))}return k.finalize(),De=k.toHTML(),{language:t,value:De,relevance:Ie,illegal:!1,_emitter:k,_top:h}}catch(i){if(i.message&&i.message.includes("Illegal"))return{language:t,value:ve(l),illegal:!0,relevance:0,_illegalBy:{message:i.message,index:ge,context:l.slice(ge-100,ge+100),mode:i.mode,resultSoFar:De},_emitter:k};if(O)return{language:t,value:ve(l),illegal:!1,relevance:0,errorRaised:i,_emitter:k,_top:h};throw i}}function ke(t){const l={value:ve(t),illegal:!1,relevance:0,_top:c,_emitter:new r.__emitter(r)};return l._emitter.addText(t),l}function Le(t,l){l=l||r.languages||Object.keys(n);const p=ke(t),S=l.filter(re).filter(Je).map(z=>Te(z,t,!1));S.unshift(p);const I=S.sort((z,V)=>{if(z.relevance!==V.relevance)return V.relevance-z.relevance;if(z.language&&V.language){if(re(z.language).supersetOf===V.language)return 1;if(re(V.language).supersetOf===z.language)return-1}return 0}),[J,ce]=I,we=J;return we.secondBest=ce,we}function Zn(t,l,p){const S=l&&s[l]||p;t.classList.add("hljs"),t.classList.add(`language-${S}`)}function Be(t){let l=null;const p=v(t);if(g(p))return;if(Me("before:highlightElement",{el:t,language:p}),t.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",t);return}if(t.children.length>0&&(r.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(t)),r.throwUnescapedHTML))throw new zn("One of your code blocks includes unescaped HTML.",t.innerHTML);l=t;const S=l.textContent,I=p?x(S,{language:p,ignoreIllegals:!0}):Le(S);t.innerHTML=I.value,t.dataset.highlighted="yes",Zn(t,p,I.language),t.result={language:I.language,re:I.relevance,relevance:I.relevance},I.secondBest&&(t.secondBest={language:I.secondBest.language,relevance:I.secondBest.relevance}),Me("after:highlightElement",{el:t,result:I,text:S})}function Kn(t){r=Ke(r,t)}const Wn=()=>{Oe(),be("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Xn(){Oe(),be("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Ye=!1;function Oe(){function t(){Oe()}if(document.readyState==="loading"){Ye||window.addEventListener("DOMContentLoaded",t,!1),Ye=!0;return}document.querySelectorAll(r.cssSelector).forEach(Be)}function Yn(t,l){let p=null;try{p=l(e)}catch(S){if(ue("Language definition for '{}' could not be registered.".replace("{}",t)),O)ue(S);else throw S;p=c}p.name||(p.name=t),n[t]=p,p.rawDefinition=l.bind(null,e),p.aliases&&je(p.aliases,{languageName:t})}function jn(t){delete n[t];for(const l of Object.keys(s))s[l]===t&&delete s[l]}function Jn(){return Object.keys(n)}function re(t){return t=(t||"").toLowerCase(),n[t]||n[s[t]]}function je(t,{languageName:l}){typeof t=="string"&&(t=[t]),t.forEach(p=>{s[p.toLowerCase()]=l})}function Je(t){const l=re(t);return l&&!l.disableAutodetect}function Vn(t){t["before:highlightBlock"]&&!t["before:highlightElement"]&&(t["before:highlightElement"]=l=>{t["before:highlightBlock"](Object.assign({block:l.el},l))}),t["after:highlightBlock"]&&!t["after:highlightElement"]&&(t["after:highlightElement"]=l=>{t["after:highlightBlock"](Object.assign({block:l.el},l))})}function qn(t){Vn(t),d.push(t)}function Qn(t){const l=d.indexOf(t);l!==-1&&d.splice(l,1)}function Me(t,l){const p=t;d.forEach(function(S){S[p]&&S[p](l)})}function et(t){return be("10.7.0","highlightBlock will be removed entirely in v12.0"),be("10.7.0","Please use highlightElement now."),Be(t)}Object.assign(e,{highlight:x,highlightAuto:Le,highlightAll:Oe,highlightElement:Be,highlightBlock:et,configure:Kn,initHighlighting:Wn,initHighlightingOnLoad:Xn,registerLanguage:Yn,unregisterLanguage:jn,listLanguages:Jn,getLanguage:re,registerAliases:je,autoDetection:Je,inherit:Ke,addPlugin:qn,removePlugin:Qn}),e.debugMode=function(){O=!1},e.safeMode=function(){O=!0},e.versionString=Gn,e.regex={concat:m,lookahead:R,either:Q,optional:W,anyNumberOfTimes:K};for(const t in me)typeof me[t]=="object"&&a(me[t]);return Object.assign(e,me),e},_e=Xe({});return _e.newInstance=()=>Xe({}),$e=_e,_e.HighlightJS=_e,_e.default=_e,$e}var Nt=_t();const ae=ot(Nt),Ce="[A-Za-z$_][0-9A-Za-z$_]*",ln=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],un=["true","false","null","undefined","NaN","Infinity"],gn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],dn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],hn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],En=[].concat(fn,gn,dn);function St(a){const f=a.regex,b=(_,{after:U})=>{const G="</"+_[0].slice(1);return _.input.indexOf(G,U)!==-1},u=Ce,w={begin:"<>",end:"</>"},F=/<[A-Za-z0-9\\._:-]+\s*\/>/,y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(_,U)=>{const G=_[0].length+_.index,j=_.input[G];if(j==="<"||j===","){U.ignoreMatch();return}j===">"&&(b(_,{after:G})||U.ignoreMatch());let se;const le=_.input.substring(G);if(se=le.match(/^\s*=/)){U.ignoreMatch();return}if((se=le.match(/^\s+extends\s+/))&&se.index===0){U.ignoreMatch();return}}},T={$pattern:Ce,keyword:ln,literal:un,built_in:En,"variable.language":hn},P="[0-9](_?[0-9])*",C=`\\.(${P})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",L={className:"number",variants:[{begin:`(\\b(${Z})((${C})|\\.)?|(${C}))[eE][+-]?(${P})\\b`},{begin:`\\b(${Z})\\b((${C})\\b|\\.)?|(${C})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},R={className:"subst",begin:"\\$\\{",end:"\\}",keywords:T,contains:[]},K={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"xml"}},W={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"graphql"}},X={className:"string",begin:"`",end:"`",contains:[a.BACKSLASH_ESCAPE,R]},D={className:"comment",variants:[a.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:u+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),a.C_BLOCK_COMMENT_MODE,a.C_LINE_COMMENT_MODE]},Y=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,{match:/\$\d+/},L];R.contains=Y.concat({begin:/\{/,end:/\}/,keywords:T,contains:["self"].concat(Y)});const ee=[].concat(D,R.contains),$=ee.concat([{begin:/(\s*)\(/,end:/\)/,keywords:T,contains:["self"].concat(ee)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$},fe={variants:[{match:[/class/,/\s+/,u,/\s+/,/extends/,/\s+/,f.concat(u,"(",f.concat(/\./,u),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,u],scope:{1:"keyword",3:"title.class"}}]},ne={relevance:0,match:f.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...gn,...dn]}},he={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ee={variants:[{match:[/function/,/\s+/,u,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},pe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Ne(_){return f.concat("(?!",_.join("|"),")")}const Se={match:f.concat(/\b/,Ne([...fn,"super","import"].map(_=>`${_}\\s*\\(`)),u,f.lookahead(/\s*\(/)),className:"title.function",relevance:0},te={begin:f.concat(/\./,f.lookahead(f.concat(u,/(?![0-9A-Za-z$_(])/))),end:u,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ae={match:[/get|set/,/\s+/,u,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},oe="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+a.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,u,/\s*/,/=\s*/,/(async\s*)?/,f.lookahead(oe)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:T,exports:{PARAMS_CONTAINS:$,CLASS_REFERENCE:ne},illegal:/#(?![$_A-z])/,contains:[a.SHEBANG({label:"shebang",binary:"node",relevance:5}),he,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,D,{match:/\$\d+/},L,ne,{scope:"attr",match:u+f.lookahead(":"),relevance:0},ye,{begin:"("+a.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[D,a.REGEXP_MODE,{className:"function",begin:oe,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:a.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:w.begin,end:w.end},{match:F},{begin:y.begin,"on:begin":y.isTrulyOpeningTag,end:y.end}],subLanguage:"xml",contains:[{begin:y.begin,end:y.end,skip:!0,contains:["self"]}]}]},Ee,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+a.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,a.inherit(a.TITLE_MODE,{begin:u,className:"title.function"})]},{match:/\.\.\./,relevance:0},te,{match:"\\$"+u,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},Se,pe,fe,Ae,{match:/\$[(.]/}]}}function At(a){const f=a.regex,b=St(a),u=Ce,w=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],F={begin:[/namespace/,/\s+/,a.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},y={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:w},contains:[b.exports.CLASS_REFERENCE]},T={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},P=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],C={$pattern:Ce,keyword:ln.concat(P),literal:un,built_in:En.concat(w),"variable.language":hn},Z={className:"meta",begin:"@"+u},L=(m,X,Q)=>{const D=m.contains.findIndex(Y=>Y.label===X);if(D===-1)throw new Error("can not find mode to replace");m.contains.splice(D,1,Q)};Object.assign(b.keywords,C),b.exports.PARAMS_CONTAINS.push(Z);const R=b.contains.find(m=>m.scope==="attr"),K=Object.assign({},R,{match:f.concat(u,f.lookahead(/\s*\?:/))});b.exports.PARAMS_CONTAINS.push([b.exports.CLASS_REFERENCE,R,K]),b.contains=b.contains.concat([Z,F,y,K]),L(b,"shebang",a.SHEBANG()),L(b,"use_strict",T);const W=b.contains.find(m=>m.label==="func.def");return W.relevance=0,Object.assign(b,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),b}const cn="[A-Za-z$_][0-9A-Za-z$_]*",yt=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Tt=["true","false","null","undefined","NaN","Infinity"],pn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],bn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],_n=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],mt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Rt=[].concat(_n,pn,bn);function Ot(a){const f=a.regex,b=(_,{after:U})=>{const G="</"+_[0].slice(1);return _.input.indexOf(G,U)!==-1},u=cn,w={begin:"<>",end:"</>"},F=/<[A-Za-z0-9\\._:-]+\s*\/>/,y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(_,U)=>{const G=_[0].length+_.index,j=_.input[G];if(j==="<"||j===","){U.ignoreMatch();return}j===">"&&(b(_,{after:G})||U.ignoreMatch());let se;const le=_.input.substring(G);if(se=le.match(/^\s*=/)){U.ignoreMatch();return}if((se=le.match(/^\s+extends\s+/))&&se.index===0){U.ignoreMatch();return}}},T={$pattern:cn,keyword:yt,literal:Tt,built_in:Rt,"variable.language":mt},P="[0-9](_?[0-9])*",C=`\\.(${P})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",L={className:"number",variants:[{begin:`(\\b(${Z})((${C})|\\.)?|(${C}))[eE][+-]?(${P})\\b`},{begin:`\\b(${Z})\\b((${C})\\b|\\.)?|(${C})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},R={className:"subst",begin:"\\$\\{",end:"\\}",keywords:T,contains:[]},K={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"xml"}},W={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"graphql"}},X={className:"string",begin:"`",end:"`",contains:[a.BACKSLASH_ESCAPE,R]},D={className:"comment",variants:[a.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:u+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),a.C_BLOCK_COMMENT_MODE,a.C_LINE_COMMENT_MODE]},Y=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,{match:/\$\d+/},L];R.contains=Y.concat({begin:/\{/,end:/\}/,keywords:T,contains:["self"].concat(Y)});const ee=[].concat(D,R.contains),$=ee.concat([{begin:/(\s*)\(/,end:/\)/,keywords:T,contains:["self"].concat(ee)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$},fe={variants:[{match:[/class/,/\s+/,u,/\s+/,/extends/,/\s+/,f.concat(u,"(",f.concat(/\./,u),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,u],scope:{1:"keyword",3:"title.class"}}]},ne={relevance:0,match:f.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...pn,...bn]}},he={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ee={variants:[{match:[/function/,/\s+/,u,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},pe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Ne(_){return f.concat("(?!",_.join("|"),")")}const Se={match:f.concat(/\b/,Ne([..._n,"super","import"].map(_=>`${_}\\s*\\(`)),u,f.lookahead(/\s*\(/)),className:"title.function",relevance:0},te={begin:f.concat(/\./,f.lookahead(f.concat(u,/(?![0-9A-Za-z$_(])/))),end:u,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ae={match:[/get|set/,/\s+/,u,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},oe="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+a.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,u,/\s*/,/=\s*/,/(async\s*)?/,f.lookahead(oe)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:T,exports:{PARAMS_CONTAINS:$,CLASS_REFERENCE:ne},illegal:/#(?![$_A-z])/,contains:[a.SHEBANG({label:"shebang",binary:"node",relevance:5}),he,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,D,{match:/\$\d+/},L,ne,{scope:"attr",match:u+f.lookahead(":"),relevance:0},ye,{begin:"("+a.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[D,a.REGEXP_MODE,{className:"function",begin:oe,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:a.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:w.begin,end:w.end},{match:F},{begin:y.begin,"on:begin":y.isTrulyOpeningTag,end:y.end}],subLanguage:"xml",contains:[{begin:y.begin,end:y.end,skip:!0,contains:["self"]}]}]},Ee,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+a.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,a.inherit(a.TITLE_MODE,{begin:u,className:"title.function"})]},{match:/\.\.\./,relevance:0},te,{match:"\\$"+u,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},Se,pe,fe,Ae,{match:/\$[(.]/}]}}function on(a){const f=a.regex,b={},u={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[b]}]};Object.assign(b,{className:"variable",variants:[{begin:f.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},u]});const w={className:"subst",begin:/\$\(/,end:/\)/,contains:[a.BACKSLASH_ESCAPE]},F=a.inherit(a.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),y={begin:/<<-?\s*(?=\w+)/,starts:{contains:[a.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},T={className:"string",begin:/"/,end:/"/,contains:[a.BACKSLASH_ESCAPE,b,w]};w.contains.push(T);const P={match:/\\"/},C={className:"string",begin:/'/,end:/'/},Z={match:/\\'/},L={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},a.NUMBER_MODE,b]},R=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],K=a.SHEBANG({binary:`(${R.join("|")})`,relevance:10}),W={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[a.inherit(a.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],X=["true","false"],Q={match:/(\/[a-z._-]+)+/},D=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],Y=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],ee=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],$=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:X,built_in:[...D,...Y,"set","shopt",...ee,...$]},contains:[K,a.SHEBANG(),W,L,F,y,Q,T,P,C,Z,b]}}function Mt(a){const f={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},b={match:/[{}[\],:]/,className:"punctuation",relevance:0},u=["true","false","null"],w={scope:"literal",beginKeywords:u.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:u},contains:[f,b,a.QUOTE_STRING_MODE,w,a.C_NUMBER_MODE,a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function wt(a){const f=a.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:f.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:f.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}const xt={class:"relative"},It={class:"bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-lg px-4 pt-8 pb-3 text-sm font-mono overflow-x-auto leading-relaxed"},Ct=["innerHTML"],vt={key:0,class:"absolute top-2 left-3 text-[10px] font-medium uppercase tracking-wide text-gray-400 dark:text-gray-500 select-none pointer-events-none"},kt=lt({__name:"CodeBlock",props:{code:{},lang:{}},setup(a){ae.registerLanguage("typescript",At),ae.registerLanguage("javascript",Ot),ae.registerLanguage("bash",on),ae.registerLanguage("sh",on),ae.registerLanguage("json",Mt),ae.registerLanguage("diff",wt);const f=a,{copy:b,copied:u}=bt(),w=ht(""),F=Et(()=>{if(f.lang&&ae.getLanguage(f.lang))return w.value=f.lang,ae.highlight(f.code,{language:f.lang}).value;const y=ae.highlightAuto(f.code);return w.value=y.language??"",y.value});return(y,T)=>{const P=ft;return tn(),sn("div",xt,[an("pre",It,[an("code",{class:"hljs !bg-transparent",innerHTML:de(F)},null,8,Ct)]),de(w)?(tn(),sn("span",vt,ut(de(w)),1)):gt("",!0),dt(P,{size:"xs",color:"neutral",variant:"ghost",icon:de(u)?"i-lucide-check":"i-lucide-clipboard",title:de(u)?"Copied!":("copyPreview"in y?y.copyPreview:de(pt))(a.code),class:"absolute top-1.5 right-1.5 opacity-40 hover:opacity-100 transition-opacity",onClick:T[0]||(T[0]=C=>de(b)(a.code,{toast:!0}))},null,8,["icon","title"])])}}}),Pt=Object.assign(kt,{__name:"CodeBlock"});export{ae as H,Pt as _,Mt as a,on as b,wt as d,Ot as j,At as t};
|
|
3
|
+
`,1;if(Ue>1e5&&Ue>o.index*3)throw new Error("potential infinite loop, way more iterations than matches");return A+=E,E.length}const q=re(t);if(!q)throw ue(M.replace("{}",t)),new Error('Unknown language: "'+t+'"');const at=$n(q);let De="",h=S||at;const nn={},k=new r.__emitter(r);it();let A="",Ie=0,ge=0,Ue=0,Pe=!1;try{if(q.__emitTokens)q.__emitTokens(l,k);else{for(h.matcher.considerAll();;){Ue++,Pe?Pe=!1:h.matcher.considerAll(),h.matcher.lastIndex=ge;const i=h.matcher.exec(l);if(!i)break;const o=l.substring(ge,i.index),E=en(o,i);ge=i.index+E}en(l.substring(ge))}return k.finalize(),De=k.toHTML(),{language:t,value:De,relevance:Ie,illegal:!1,_emitter:k,_top:h}}catch(i){if(i.message&&i.message.includes("Illegal"))return{language:t,value:ve(l),illegal:!0,relevance:0,_illegalBy:{message:i.message,index:ge,context:l.slice(ge-100,ge+100),mode:i.mode,resultSoFar:De},_emitter:k};if(O)return{language:t,value:ve(l),illegal:!1,relevance:0,errorRaised:i,_emitter:k,_top:h};throw i}}function ke(t){const l={value:ve(t),illegal:!1,relevance:0,_top:c,_emitter:new r.__emitter(r)};return l._emitter.addText(t),l}function Le(t,l){l=l||r.languages||Object.keys(n);const p=ke(t),S=l.filter(re).filter(Je).map(z=>Te(z,t,!1));S.unshift(p);const I=S.sort((z,V)=>{if(z.relevance!==V.relevance)return V.relevance-z.relevance;if(z.language&&V.language){if(re(z.language).supersetOf===V.language)return 1;if(re(V.language).supersetOf===z.language)return-1}return 0}),[J,ce]=I,we=J;return we.secondBest=ce,we}function Zn(t,l,p){const S=l&&s[l]||p;t.classList.add("hljs"),t.classList.add(`language-${S}`)}function Be(t){let l=null;const p=v(t);if(g(p))return;if(Me("before:highlightElement",{el:t,language:p}),t.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",t);return}if(t.children.length>0&&(r.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(t)),r.throwUnescapedHTML))throw new zn("One of your code blocks includes unescaped HTML.",t.innerHTML);l=t;const S=l.textContent,I=p?x(S,{language:p,ignoreIllegals:!0}):Le(S);t.innerHTML=I.value,t.dataset.highlighted="yes",Zn(t,p,I.language),t.result={language:I.language,re:I.relevance,relevance:I.relevance},I.secondBest&&(t.secondBest={language:I.secondBest.language,relevance:I.secondBest.relevance}),Me("after:highlightElement",{el:t,result:I,text:S})}function Kn(t){r=Ke(r,t)}const Wn=()=>{Oe(),be("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Xn(){Oe(),be("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Ye=!1;function Oe(){function t(){Oe()}if(document.readyState==="loading"){Ye||window.addEventListener("DOMContentLoaded",t,!1),Ye=!0;return}document.querySelectorAll(r.cssSelector).forEach(Be)}function Yn(t,l){let p=null;try{p=l(e)}catch(S){if(ue("Language definition for '{}' could not be registered.".replace("{}",t)),O)ue(S);else throw S;p=c}p.name||(p.name=t),n[t]=p,p.rawDefinition=l.bind(null,e),p.aliases&&je(p.aliases,{languageName:t})}function jn(t){delete n[t];for(const l of Object.keys(s))s[l]===t&&delete s[l]}function Jn(){return Object.keys(n)}function re(t){return t=(t||"").toLowerCase(),n[t]||n[s[t]]}function je(t,{languageName:l}){typeof t=="string"&&(t=[t]),t.forEach(p=>{s[p.toLowerCase()]=l})}function Je(t){const l=re(t);return l&&!l.disableAutodetect}function Vn(t){t["before:highlightBlock"]&&!t["before:highlightElement"]&&(t["before:highlightElement"]=l=>{t["before:highlightBlock"](Object.assign({block:l.el},l))}),t["after:highlightBlock"]&&!t["after:highlightElement"]&&(t["after:highlightElement"]=l=>{t["after:highlightBlock"](Object.assign({block:l.el},l))})}function qn(t){Vn(t),d.push(t)}function Qn(t){const l=d.indexOf(t);l!==-1&&d.splice(l,1)}function Me(t,l){const p=t;d.forEach(function(S){S[p]&&S[p](l)})}function et(t){return be("10.7.0","highlightBlock will be removed entirely in v12.0"),be("10.7.0","Please use highlightElement now."),Be(t)}Object.assign(e,{highlight:x,highlightAuto:Le,highlightAll:Oe,highlightElement:Be,highlightBlock:et,configure:Kn,initHighlighting:Wn,initHighlightingOnLoad:Xn,registerLanguage:Yn,unregisterLanguage:jn,listLanguages:Jn,getLanguage:re,registerAliases:je,autoDetection:Je,inherit:Ke,addPlugin:qn,removePlugin:Qn}),e.debugMode=function(){O=!1},e.safeMode=function(){O=!0},e.versionString=Gn,e.regex={concat:m,lookahead:R,either:Q,optional:W,anyNumberOfTimes:K};for(const t in me)typeof me[t]=="object"&&a(me[t]);return Object.assign(e,me),e},_e=Xe({});return _e.newInstance=()=>Xe({}),$e=_e,_e.HighlightJS=_e,_e.default=_e,$e}var Nt=_t();const ae=ot(Nt),Ce="[A-Za-z$_][0-9A-Za-z$_]*",ln=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],un=["true","false","null","undefined","NaN","Infinity"],gn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],dn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],hn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],En=[].concat(fn,gn,dn);function St(a){const f=a.regex,b=(_,{after:U})=>{const G="</"+_[0].slice(1);return _.input.indexOf(G,U)!==-1},u=Ce,w={begin:"<>",end:"</>"},F=/<[A-Za-z0-9\\._:-]+\s*\/>/,y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(_,U)=>{const G=_[0].length+_.index,j=_.input[G];if(j==="<"||j===","){U.ignoreMatch();return}j===">"&&(b(_,{after:G})||U.ignoreMatch());let se;const le=_.input.substring(G);if(se=le.match(/^\s*=/)){U.ignoreMatch();return}if((se=le.match(/^\s+extends\s+/))&&se.index===0){U.ignoreMatch();return}}},T={$pattern:Ce,keyword:ln,literal:un,built_in:En,"variable.language":hn},P="[0-9](_?[0-9])*",C=`\\.(${P})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",L={className:"number",variants:[{begin:`(\\b(${Z})((${C})|\\.)?|(${C}))[eE][+-]?(${P})\\b`},{begin:`\\b(${Z})\\b((${C})\\b|\\.)?|(${C})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},R={className:"subst",begin:"\\$\\{",end:"\\}",keywords:T,contains:[]},K={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"xml"}},W={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"graphql"}},X={className:"string",begin:"`",end:"`",contains:[a.BACKSLASH_ESCAPE,R]},D={className:"comment",variants:[a.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:u+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),a.C_BLOCK_COMMENT_MODE,a.C_LINE_COMMENT_MODE]},Y=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,{match:/\$\d+/},L];R.contains=Y.concat({begin:/\{/,end:/\}/,keywords:T,contains:["self"].concat(Y)});const ee=[].concat(D,R.contains),$=ee.concat([{begin:/(\s*)\(/,end:/\)/,keywords:T,contains:["self"].concat(ee)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$},fe={variants:[{match:[/class/,/\s+/,u,/\s+/,/extends/,/\s+/,f.concat(u,"(",f.concat(/\./,u),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,u],scope:{1:"keyword",3:"title.class"}}]},ne={relevance:0,match:f.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...gn,...dn]}},he={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ee={variants:[{match:[/function/,/\s+/,u,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},pe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Ne(_){return f.concat("(?!",_.join("|"),")")}const Se={match:f.concat(/\b/,Ne([...fn,"super","import"].map(_=>`${_}\\s*\\(`)),u,f.lookahead(/\s*\(/)),className:"title.function",relevance:0},te={begin:f.concat(/\./,f.lookahead(f.concat(u,/(?![0-9A-Za-z$_(])/))),end:u,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ae={match:[/get|set/,/\s+/,u,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},oe="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+a.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,u,/\s*/,/=\s*/,/(async\s*)?/,f.lookahead(oe)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:T,exports:{PARAMS_CONTAINS:$,CLASS_REFERENCE:ne},illegal:/#(?![$_A-z])/,contains:[a.SHEBANG({label:"shebang",binary:"node",relevance:5}),he,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,D,{match:/\$\d+/},L,ne,{scope:"attr",match:u+f.lookahead(":"),relevance:0},ye,{begin:"("+a.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[D,a.REGEXP_MODE,{className:"function",begin:oe,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:a.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:w.begin,end:w.end},{match:F},{begin:y.begin,"on:begin":y.isTrulyOpeningTag,end:y.end}],subLanguage:"xml",contains:[{begin:y.begin,end:y.end,skip:!0,contains:["self"]}]}]},Ee,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+a.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,a.inherit(a.TITLE_MODE,{begin:u,className:"title.function"})]},{match:/\.\.\./,relevance:0},te,{match:"\\$"+u,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},Se,pe,fe,Ae,{match:/\$[(.]/}]}}function At(a){const f=a.regex,b=St(a),u=Ce,w=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],F={begin:[/namespace/,/\s+/,a.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},y={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:w},contains:[b.exports.CLASS_REFERENCE]},T={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},P=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],C={$pattern:Ce,keyword:ln.concat(P),literal:un,built_in:En.concat(w),"variable.language":hn},Z={className:"meta",begin:"@"+u},L=(m,X,Q)=>{const D=m.contains.findIndex(Y=>Y.label===X);if(D===-1)throw new Error("can not find mode to replace");m.contains.splice(D,1,Q)};Object.assign(b.keywords,C),b.exports.PARAMS_CONTAINS.push(Z);const R=b.contains.find(m=>m.scope==="attr"),K=Object.assign({},R,{match:f.concat(u,f.lookahead(/\s*\?:/))});b.exports.PARAMS_CONTAINS.push([b.exports.CLASS_REFERENCE,R,K]),b.contains=b.contains.concat([Z,F,y,K]),L(b,"shebang",a.SHEBANG()),L(b,"use_strict",T);const W=b.contains.find(m=>m.label==="func.def");return W.relevance=0,Object.assign(b,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),b}const cn="[A-Za-z$_][0-9A-Za-z$_]*",yt=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Tt=["true","false","null","undefined","NaN","Infinity"],pn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],bn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],_n=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],mt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Rt=[].concat(_n,pn,bn);function Ot(a){const f=a.regex,b=(_,{after:U})=>{const G="</"+_[0].slice(1);return _.input.indexOf(G,U)!==-1},u=cn,w={begin:"<>",end:"</>"},F=/<[A-Za-z0-9\\._:-]+\s*\/>/,y={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(_,U)=>{const G=_[0].length+_.index,j=_.input[G];if(j==="<"||j===","){U.ignoreMatch();return}j===">"&&(b(_,{after:G})||U.ignoreMatch());let se;const le=_.input.substring(G);if(se=le.match(/^\s*=/)){U.ignoreMatch();return}if((se=le.match(/^\s+extends\s+/))&&se.index===0){U.ignoreMatch();return}}},T={$pattern:cn,keyword:yt,literal:Tt,built_in:Rt,"variable.language":mt},P="[0-9](_?[0-9])*",C=`\\.(${P})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",L={className:"number",variants:[{begin:`(\\b(${Z})((${C})|\\.)?|(${C}))[eE][+-]?(${P})\\b`},{begin:`\\b(${Z})\\b((${C})\\b|\\.)?|(${C})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},R={className:"subst",begin:"\\$\\{",end:"\\}",keywords:T,contains:[]},K={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"xml"}},W={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[a.BACKSLASH_ESCAPE,R],subLanguage:"graphql"}},X={className:"string",begin:"`",end:"`",contains:[a.BACKSLASH_ESCAPE,R]},D={className:"comment",variants:[a.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:u+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),a.C_BLOCK_COMMENT_MODE,a.C_LINE_COMMENT_MODE]},Y=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,{match:/\$\d+/},L];R.contains=Y.concat({begin:/\{/,end:/\}/,keywords:T,contains:["self"].concat(Y)});const ee=[].concat(D,R.contains),$=ee.concat([{begin:/(\s*)\(/,end:/\)/,keywords:T,contains:["self"].concat(ee)}]),H={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$},fe={variants:[{match:[/class/,/\s+/,u,/\s+/,/extends/,/\s+/,f.concat(u,"(",f.concat(/\./,u),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,u],scope:{1:"keyword",3:"title.class"}}]},ne={relevance:0,match:f.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...pn,...bn]}},he={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ee={variants:[{match:[/function/,/\s+/,u,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[H],illegal:/%/},pe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Ne(_){return f.concat("(?!",_.join("|"),")")}const Se={match:f.concat(/\b/,Ne([..._n,"super","import"].map(_=>`${_}\\s*\\(`)),u,f.lookahead(/\s*\(/)),className:"title.function",relevance:0},te={begin:f.concat(/\./,f.lookahead(f.concat(u,/(?![0-9A-Za-z$_(])/))),end:u,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ae={match:[/get|set/,/\s+/,u,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},H]},oe="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+a.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,u,/\s*/,/=\s*/,/(async\s*)?/,f.lookahead(oe)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[H]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:T,exports:{PARAMS_CONTAINS:$,CLASS_REFERENCE:ne},illegal:/#(?![$_A-z])/,contains:[a.SHEBANG({label:"shebang",binary:"node",relevance:5}),he,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,K,W,m,X,D,{match:/\$\d+/},L,ne,{scope:"attr",match:u+f.lookahead(":"),relevance:0},ye,{begin:"("+a.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[D,a.REGEXP_MODE,{className:"function",begin:oe,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:a.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:T,contains:$}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:w.begin,end:w.end},{match:F},{begin:y.begin,"on:begin":y.isTrulyOpeningTag,end:y.end}],subLanguage:"xml",contains:[{begin:y.begin,end:y.end,skip:!0,contains:["self"]}]}]},Ee,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+a.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[H,a.inherit(a.TITLE_MODE,{begin:u,className:"title.function"})]},{match:/\.\.\./,relevance:0},te,{match:"\\$"+u,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[H]},Se,pe,fe,Ae,{match:/\$[(.]/}]}}function on(a){const f=a.regex,b={},u={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[b]}]};Object.assign(b,{className:"variable",variants:[{begin:f.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},u]});const w={className:"subst",begin:/\$\(/,end:/\)/,contains:[a.BACKSLASH_ESCAPE]},F=a.inherit(a.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),y={begin:/<<-?\s*(?=\w+)/,starts:{contains:[a.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},T={className:"string",begin:/"/,end:/"/,contains:[a.BACKSLASH_ESCAPE,b,w]};w.contains.push(T);const P={match:/\\"/},C={className:"string",begin:/'/,end:/'/},Z={match:/\\'/},L={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},a.NUMBER_MODE,b]},R=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],K=a.SHEBANG({binary:`(${R.join("|")})`,relevance:10}),W={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[a.inherit(a.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],X=["true","false"],Q={match:/(\/[a-z._-]+)+/},D=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],Y=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],ee=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],$=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:X,built_in:[...D,...Y,"set","shopt",...ee,...$]},contains:[K,a.SHEBANG(),W,L,F,y,Q,T,P,C,Z,b]}}function Mt(a){const f={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},b={match:/[{}[\],:]/,className:"punctuation",relevance:0},u=["true","false","null"],w={scope:"literal",beginKeywords:u.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:u},contains:[f,b,a.QUOTE_STRING_MODE,w,a.C_NUMBER_MODE,a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function wt(a){const f=a.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:f.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:f.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}const xt={class:"relative"},It={class:"bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-lg px-4 pt-8 pb-3 text-sm font-mono overflow-x-auto leading-relaxed"},Ct=["innerHTML"],vt={key:0,class:"absolute top-2 left-3 text-[10px] font-medium uppercase tracking-wide text-gray-400 dark:text-gray-500 select-none pointer-events-none"},kt=lt({__name:"CodeBlock",props:{code:{},lang:{}},setup(a){ae.registerLanguage("typescript",At),ae.registerLanguage("javascript",Ot),ae.registerLanguage("bash",on),ae.registerLanguage("sh",on),ae.registerLanguage("json",Mt),ae.registerLanguage("diff",wt);const f=a,{copy:b,copied:u}=bt(),w=ft(""),F=ht(()=>{if(f.lang&&ae.getLanguage(f.lang))return w.value=f.lang,ae.highlight(f.code,{language:f.lang}).value;const y=ae.highlightAuto(f.code);return w.value=y.language??"",y.value});return(y,T)=>{const P=Et;return tn(),sn("div",xt,[an("pre",It,[an("code",{class:"hljs !bg-transparent",innerHTML:de(F)},null,8,Ct)]),de(w)?(tn(),sn("span",vt,ut(de(w)),1)):gt("",!0),dt(P,{size:"xs",color:"neutral",variant:"ghost",icon:de(u)?"i-lucide-check":"i-lucide-clipboard",title:de(u)?"Copied!":("copyPreview"in y?y.copyPreview:de(pt))(a.code),class:"absolute top-1.5 right-1.5 opacity-40 hover:opacity-100 transition-opacity",onClick:T[0]||(T[0]=C=>de(b)(a.code,{toast:!0}))},null,8,["icon","title"])])}}}),Pt=Object.assign(kt,{__name:"CodeBlock"});export{ae as H,Pt as _,Mt as a,on as b,wt as d,Ot as j,At as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as C,f as k,g as d,o as f,i as e,t as r,k as s,j as a,m as v,h as p,_ as h}from"./BrT_Sys2.js";import{_ as y}from"./DpJrGwCr.js";import{_ as g}from"./CHIbdzqp.js";import{u as b}from"./DtXREpk_.js";const B={class:"space-y-3 text-sm"},M={class:"space-y-1"},$={class:"flex items-start gap-2"},P={class:"text-xs break-all flex-1"},U={class:"space-y-1"},w={class:"flex items-start gap-2"},z={class:"text-xs break-all flex-1"},A={class:"space-y-1"},D=C({__name:"DesktopMcpCard",props:{url:{},token:{}},setup(o){const i=o,{copy:c}=b(),n=p(()=>`${i.url}/mcp`),u=p(()=>`claude mcp add --transport http piwi ${n.value} \\
|
|
2
|
+
--header "Authorization: Bearer ${i.token}"`);return(L,t)=>{const l=h,_=y,m=g;return f(),k(m,{icon:"i-lucide-plug",title:"Connect an AI assistant (MCP)"},{subtitle:d(()=>[...t[2]||(t[2]=[v(" This app exposes a local MCP endpoint. Point your client at the URL below and authenticate with the access token — it is the Bearer token, even though sign-in is off. ",-1)])]),default:d(()=>[e("div",B,[e("div",M,[t[3]||(t[3]=e("div",{class:"text-muted"},"MCP URL",-1)),e("div",$,[e("code",P,r(s(n)),1),a(l,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy MCP URL",onClick:t[0]||(t[0]=x=>s(c)(s(n),{toast:!0}))})])]),e("div",U,[t[4]||(t[4]=e("div",{class:"text-muted"},"Access token",-1)),e("div",w,[e("code",z,r(o.token),1),a(l,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy access token",onClick:t[1]||(t[1]=x=>s(c)(o.token,{toast:!0}))})])]),e("div",A,[t[5]||(t[5]=e("div",{class:"text-muted"},"Claude Code",-1)),a(_,{code:s(u),lang:"sh"},null,8,["code"])])])]),_:1})}}}),j=Object.assign(D,{__name:"DesktopMcpCard"});export{j as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as P,W as L,X as M,S as T,o as r,c as v,j as C,g as f,T as q,k as e,U as z,Q as H,H as O,V as I,f as u,q as h,F as j,h as w,Y as D,a0 as Q,a1 as W,a3 as X,a4 as Y,a5 as G,aM as J,aN as Z,aq as ee,i as ae,p as o,v as S,m as R,t as A,a6 as te}from"./
|
|
1
|
+
import{d as P,W as L,X as M,S as T,o as r,c as v,j as C,g as f,T as q,k as e,U as z,Q as H,H as O,V as I,f as u,q as h,F as j,h as w,Y as D,a0 as Q,a1 as W,a3 as X,a4 as Y,a5 as G,aM as J,aN as Z,aq as ee,i as ae,p as o,v as S,m as R,t as A,a6 as te}from"./BrT_Sys2.js";import{L as se}from"./rw7Hdll3.js";import{u as re}from"./26ll_vBr.js";import{u as le}from"./DATh_1DQ.js";import{V as ie}from"./ByoIgYX_.js";const[oe,ne]=D("SwitchRoot");var de=P({inheritAttrs:!1,__name:"SwitchRoot",props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,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:["update:modelValue"],setup(g,{emit:c}){const t=g,d=c,{disabled:n}=L(t),a=M(t,"modelValue",d,{defaultValue:t.defaultValue??t.falseValue,passive:t.modelValue===void 0}),i=w(()=>a.value===t.trueValue);function m(){n.value||(a.value=i.value?t.falseValue:t.trueValue)}const{forwardRef:V,currentElement:b}=T(),x=re(b),k=le(),_=w(()=>t.id&&b.value?document.querySelector(`[for="${t.id}"]`)?.innerText:void 0);return ne({checked:i,toggleCheck:m,disabled:n}),(s,B)=>(r(),v(j,null,[C(e(I),z({id:s.id,ref:e(V),role:"switch",type:s.as==="button"?"button":void 0,value:s.value,"aria-label":s.$attrs["aria-label"]||_.value,"aria-checked":i.value,"aria-required":s.required,"data-state":i.value?"checked":"unchecked","data-disabled":e(n)?"":void 0,"as-child":s.asChild,as:s.as,disabled:e(n)},{...e(k),...s.$attrs},{onClick:m,onKeydown:H(O(m,["prevent"]),["enter"])}),{default:f(()=>[q(s.$slots,"default",{modelValue:e(a),checked:i.value})]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]),e(x)&&s.name?(r(),u(e(ie),z({key:0,type:"checkbox",name:s.name,disabled:e(n),required:s.required,value:s.value,checked:i.value},e(k)),null,16,["name","disabled","required","value","checked"])):h("v-if",!0)],64))}}),ue=de,ce=P({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(g){const c=oe();return T(),(t,d)=>(r(),u(e(I),{"data-state":e(c).checked.value?"checked":"unchecked","data-disabled":e(c).disabled.value?"":void 0,"as-child":t.asChild,as:t.as},{default:f(()=>[q(t.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),pe=ce;const he={slots:{root:"relative flex items-start",base:["inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-3 data-[state=unchecked]:bg-accented","transition-[background] duration-200"],container:"flex items-center",thumb:"group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",icon:["absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12","transition-[color,opacity] duration-200"],wrapper:"ms-2",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"data-[state=checked]:bg-primary outline-primary/25",icon:"group-data-[state=checked]:text-primary"},secondary:{base:"data-[state=checked]:bg-secondary outline-secondary/25",icon:"group-data-[state=checked]:text-secondary"},success:{base:"data-[state=checked]:bg-success outline-success/25",icon:"group-data-[state=checked]:text-success"},info:{base:"data-[state=checked]:bg-info outline-info/25",icon:"group-data-[state=checked]:text-info"},warning:{base:"data-[state=checked]:bg-warning outline-warning/25",icon:"group-data-[state=checked]:text-warning"},error:{base:"data-[state=checked]:bg-error outline-error/25",icon:"group-data-[state=checked]:text-error"},neutral:{base:"data-[state=checked]:bg-inverted outline-inverted/25",icon:"group-data-[state=checked]:text-highlighted"}},size:{xs:{base:"w-7",container:"h-4",thumb:"size-3 data-[state=checked]:translate-x-3 data-[state=checked]:rtl:-translate-x-3",wrapper:"text-xs"},sm:{base:"w-8",container:"h-4",thumb:"size-3.5 data-[state=checked]:translate-x-3.5 data-[state=checked]:rtl:-translate-x-3.5",wrapper:"text-xs"},md:{base:"w-9",container:"h-5",thumb:"size-4 data-[state=checked]:translate-x-4 data-[state=checked]:rtl:-translate-x-4",wrapper:"text-sm"},lg:{base:"w-10",container:"h-5",thumb:"size-4.5 data-[state=checked]:translate-x-4.5 data-[state=checked]:rtl:-translate-x-4.5",wrapper:"text-sm"},xl:{base:"w-11",container:"h-6",thumb:"size-5 data-[state=checked]:translate-x-5 data-[state=checked]:rtl:-translate-x-5",wrapper:"text-base"}},checked:{true:{icon:"group-data-[state=checked]:opacity-100"}},unchecked:{true:{icon:"group-data-[state=unchecked]:opacity-100"}},loading:{true:{icon:"animate-spin"}},highlight:{true:""},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},disabled:{true:{root:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}}},compoundVariants:[{color:"primary",highlight:!0,class:{base:"ring ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring ring-success"}},{color:"info",highlight:!0,class:{base:"ring ring-info"}},{color:"warning",highlight:!0,class:{base:"ring ring-warning"}},{color:"error",highlight:!0,class:{base:"ring ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring ring-inverted"}}],defaultVariants:{color:"primary",size:"md"}},ye=Object.assign({inheritAttrs:!1},{__name:"USwitch",props:{as:{type:null,required:!1},color:{type:null,required:!1},size:{type:null,required:!1},highlight:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},checkedIcon:{type:null,required:!1},uncheckedIcon:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},value:{type:String,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},trueValue:{type:null,required:!1},falseValue:{type:null,required:!1}},emits:["change","update:modelValue"],setup(g,{emit:c}){const t=g,d=Q(),n=c,a=W("switch",t),i=X(),m=Y(G(a,"required","value","defaultValue","modelValue","trueValue","falseValue"),n),{id:V,emitFormChange:b,emitFormInput:x,size:k,color:_,highlight:s,name:B,disabled:F,ariaAttrs:N}=J(t),$=V.value??Z(),E=ee(),U=w(()=>{const{"data-state":p,...y}=E;return y}),l=w(()=>te({extend:he,...i.ui?.switch||{}})({size:k.value??a.size,color:_.value??a.color,highlight:s.value??a.highlight,required:a.required,loading:a.loading,disabled:F.value||a.loading}));function K(p){const y=new Event("change",{target:{value:p}});n("change",y),b(),x()}return(p,y)=>(r(),u(e(I),{as:e(a).as,"data-slot":p.$attrs["data-slot"]??"root",class:o(l.value.root({class:[e(a).ui?.root,e(a).class]}))},{default:f(()=>[ae("div",{"data-slot":"container",class:o(l.value.container({class:e(a).ui?.container}))},[C(e(ue),z({id:e($)},{...e(m),...U.value,...e(N)},{name:e(B),disabled:e(F)||e(a).loading,"data-slot":"base",class:l.value.base({class:e(a).ui?.base}),"onUpdate:modelValue":K}),{default:f(()=>[C(e(pe),{"data-slot":"thumb",class:o(l.value.thumb({class:e(a).ui?.thumb}))},{default:f(()=>[e(a).loading?(r(),u(S,{key:0,name:e(a).loadingIcon||e(i).ui.icons.loading,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0,unchecked:!0}))},null,8,["name","class"])):(r(),v(j,{key:1},[e(a).checkedIcon?(r(),u(S,{key:0,name:e(a).checkedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0}))},null,8,["name","class"])):h("",!0),e(a).uncheckedIcon?(r(),u(S,{key:1,name:e(a).uncheckedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,unchecked:!0}))},null,8,["name","class"])):h("",!0)],64))]),_:1},8,["class"])]),_:1},16,["id","name","disabled","class"])],2),e(a).label||d.label||e(a).description||d.description?(r(),v("div",{key:0,"data-slot":"wrapper",class:o(l.value.wrapper({class:e(a).ui?.wrapper}))},[e(a).label||d.label?(r(),u(e(se),{key:0,for:e($),"data-slot":"label",class:o(l.value.label({class:e(a).ui?.label}))},{default:f(()=>[q(p.$slots,"label",{label:e(a).label},()=>[R(A(e(a).label),1)])]),_:3},8,["for","class"])):h("",!0),e(a).description||d.description?(r(),v("p",{key:1,"data-slot":"description",class:o(l.value.description({class:e(a).ui?.description}))},[q(p.$slots,"description",{description:e(a).description},()=>[R(A(e(a).description),1)])],2)):h("",!0)],2)):h("",!0)]),_:3},8,["as","data-slot","class"]))}});export{ye as _};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{_ as K,a as W}from"./DS9yGVFL.js";import{_ as L}from"./CHIbdzqp.js";import{_ as G}from"./DCffDvxl.js";import{d as T,f as k,g as d,o as r,i as n,t as M,j as a,k as t,m as p,h as B,_ as z,b as Q,C as Y,c as $,v as A,r as C,w as I,F as H,q as y,K as J,aI as X}from"./BrT_Sys2.js";import{_ as Z}from"./DpJrGwCr.js";import{u as tt}from"./DtXREpk_.js";import{_ as et}from"./DqsMiUoW.js";import{_ as nt}from"./Ds2Y3oms.js";import{a as ot}from"./B6hPf4UR.js";import{f as st}from"./D7P0ML0H.js";import{u as at}from"./DUe6xuKQ.js";import{u as R}from"./Dvc1aWpA.js";import"./CoKEjZX7.js";import"./rw7Hdll3.js";import"./26ll_vBr.js";import"./DATh_1DQ.js";import"./ByoIgYX_.js";import"./r3SBLxtE.js";const it={class:"space-y-3 text-sm"},lt={class:"space-y-1"},rt={class:"flex items-start gap-2"},ct={class:"text-xs break-all flex-1"},ut={class:"space-y-1"},dt=T({__name:"DesktopReporterCard",props:{url:{},token:{}},setup(h){const o=h,{copy:c}=tt(),u=B(()=>`reporter: [
|
|
2
|
+
['@piwitests/reporter', {
|
|
3
|
+
serverUrl: '${o.url}',
|
|
4
|
+
projectName: 'my-project',
|
|
5
|
+
apiKey: '${o.token}',
|
|
6
|
+
}],
|
|
7
|
+
],`);return(_,s)=>{const m=z,i=Z,x=L;return r(),k(x,{icon:"i-lucide-upload",title:"Send results to this app"},{subtitle:d(()=>[...s[1]||(s[1]=[p(" Point the Playwright reporter at this desktop app. The access token is a local secret — prefer passing it via a ",-1),n("code",null,"PIWI_API_KEY",-1),p(" env var rather than committing it. ",-1)])]),default:d(()=>[n("div",it,[n("div",lt,[s[2]||(s[2]=n("div",{class:"text-muted"},"Access token",-1)),n("div",rt,[n("code",ct,M(h.token),1),a(m,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy access token",onClick:s[0]||(s[0]=v=>t(c)(h.token,{toast:!0}))})])]),n("div",ut,[s[3]||(s[3]=n("div",{class:"text-muted"},"playwright.config.ts",-1)),a(i,{code:t(u),lang:"typescript"},null,8,["code"])])])]),_:1})}}}),pt=Object.assign(dt,{__name:"DesktopReporterCard"}),_t={key:0,class:"flex items-center gap-2 text-sm text-muted"},mt={key:1,class:"space-y-4"},ft={class:"flex items-start justify-between gap-4"},kt={class:"flex items-start justify-between gap-4"},vt={key:2,class:"space-y-1 text-sm text-muted"},gt=T({__name:"DesktopServiceCard",setup(h){function o(){return globalThis.__TAURI__?.core??null}const c=Q(),u=C(!0),_=C(!1),s=C(!1),m=C(!1),i=C(!1);async function x(){const l=o();if(!l){_.value=!1,u.value=!1;return}try{const e=await l.invoke("desktop_get_service_settings");m.value=!!e.run_in_background,i.value=!!e.start_on_login,_.value=!0}catch{_.value=!1}finally{u.value=!1}}Y(x);async function v(l){const e=o();if(e){s.value=!0;try{await e.invoke("desktop_set_run_in_background",{enabled:l}),m.value=l}catch{c.add({title:'Could not update "Run in background"',color:"error"})}finally{s.value=!1}}}async function w(l){const e=o();if(e){s.value=!0;try{await e.invoke("desktop_set_start_on_login",{enabled:l}),i.value=l}catch{c.add({title:'Could not update "Start on login"',color:"error"})}finally{s.value=!1}}}return(l,e)=>{const S=A,D=nt,f=L;return r(),k(f,{icon:"i-lucide-monitor-cog",title:"Desktop app"},{subtitle:d(()=>[...e[0]||(e[0]=[p(" Keep Piwi running in the background and start it automatically when you log in. ",-1)])]),default:d(()=>[t(u)?(r(),$("div",_t,[a(S,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),e[1]||(e[1]=p(" Checking… ",-1))])):t(_)?(r(),$("div",mt,[n("div",ft,[e[2]||(e[2]=n("div",{class:"space-y-0.5"},[n("p",{class:"text-sm font-medium"},"Run in background"),n("p",{class:"text-xs text-muted"},"Closing the window keeps the server running in the tray instead of quitting.")],-1)),a(D,{"model-value":t(m),disabled:t(s),"onUpdate:modelValue":v},null,8,["model-value","disabled"])]),n("div",kt,[e[3]||(e[3]=n("div",{class:"space-y-0.5"},[n("p",{class:"text-sm font-medium"},"Start on login"),n("p",{class:"text-xs text-muted"}," Launch Piwi automatically (hidden in the tray) when you sign in to your computer. ")],-1)),a(D,{"model-value":t(i),disabled:t(s),"onUpdate:modelValue":w},null,8,["model-value","disabled"])])])):(r(),$("div",vt,[...e[4]||(e[4]=[n("p",null,"Manage these from the Piwi tray icon:",-1),n("p",{class:"text-xs"},[p(" Right-click the Piwi icon in your system tray for "),n("strong",null,"Run in background"),p(" and "),n("strong",null,"Start on login"),p(". On Windows the icon may be hidden under the “show hidden icons” arrow (▲) next to the clock — drag it onto the taskbar to keep it in view. ")],-1)])]))]),_:1})}}}),bt=Object.assign(gt,{__name:"DesktopServiceCard"}),yt={class:"space-y-6"},ht={class:"flex flex-wrap items-center gap-x-6 gap-y-3 text-sm"},Ot=T({__name:"about",async setup(h){let o,c;const u=J(),_=at(),{data:s}=([o,c]=I(()=>R("/api/version","$mIoGdvWYhF")),o=await o,c(),o),{data:m}=([o,c]=I(()=>R("/api/admin/stats",{immediate:_,default:()=>null},"$IuuLVEbWlE")),o=await o,c(),o),{data:i}=([o,c]=I(()=>R("/api/desktop/reporter-config",{immediate:_,default:()=>null},"$A4rSe7BAN_")),o=await o,c(),o),x=u.public.appVersion,v=u.public.buildSha,w=u.public.buildTime,l=u.public.nodeVersion,e=u.public.authEnabled,S=B(()=>v?v.slice(0,7):null),D=B(()=>{const f=s.value?.dbBackend;return f==="postgresql"?"PostgreSQL":f==="sqlite"?"SQLite":f??null});return(f,g)=>{const b=W,U=K,V=L,j=G,E=pt,N=et,O=bt,P=ot,q=A,F=X;return r(),$("div",yt,[a(V,{icon:"i-lucide-info",title:"Application"},{default:d(()=>[a(U,null,{default:d(()=>[a(b,{label:"Version",value:`v${t(x)}`},null,8,["value"]),t(S)?(r(),k(b,{key:0,label:"Build",value:t(S),hint:t(v)},null,8,["value","hint"])):y("",!0),t(w)?(r(),k(b,{key:1,label:"Built",value:("formatRelativeTime"in f?f.formatRelativeTime:t(st))(t(w)),hint:t(w)},null,8,["value","hint"])):y("",!0),a(b,{label:"Node.js",value:t(l)},null,8,["value"]),a(b,{label:"Database",value:t(D)},null,8,["value"]),a(b,{label:"Authentication",value:t(e)?"Enabled":"Disabled"},null,8,["value"])]),_:1})]),_:1}),t(_)?(r(),$(H,{key:0},[t(m)?(r(),k(j,{key:0,database:t(m).databaseLocation,storage:t(m).storageLocation},null,8,["database","storage"])):y("",!0),t(i)?(r(),k(E,{key:1,url:t(i).url,token:t(i).token},null,8,["url","token"])):y("",!0),t(i)?(r(),k(N,{key:2,url:t(i).url,token:t(i).token},null,8,["url","token"])):y("",!0),a(O)],64)):y("",!0),a(V,{icon:"i-lucide-book-open",title:"Resources"},{default:d(()=>[n("div",ht,[a(P,{to:""},{default:d(()=>[...g[0]||(g[0]=[p("Documentation",-1)])]),_:1}),a(P,{to:"api"},{default:d(()=>[...g[1]||(g[1]=[p("API reference",-1)])]),_:1}),a(F,{to:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:d(()=>[g[2]||(g[2]=p(" GitHub ",-1)),a(q,{name:"i-lucide-external-link",class:"w-3.5 h-3.5 shrink-0"})]),_:1})])]),_:1})])}}});export{Ot as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ch as u,b as n}from"./
|
|
1
|
+
import{ch as u,b as n}from"./BrT_Sys2.js";function d(c={}){const{copy:i,copied:r,isSupported:a}=u({copiedDuring:c.duration??2e3,legacy:!0}),e=n();async function s(t,o={}){if(t){try{await i(t)}catch{return}o.toast&&e.add({title:typeof o.toast=="string"?o.toast:"Copied to clipboard",icon:"i-lucide-check",color:"success",duration:2e3})}}return{copy:s,copied:r,isSupported:a}}export{d as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as Be}from"./Bvfmwzgw.js";import{_ as Le}from"./ze9-Ill2.js";import{d as ee,o as s,f as S,g as p,i as t,p as Y,k as e,j as c,c as l,t as o,q as m,s as ue,m as w,v as te,x as ye,F as L,y as Q,_ as ie,z as Pe,A as De,h as P,r as x,B as ne,C as Oe,l as J,D as ke,E as He,G as qe,H as fe,I as Ge,b as Ke,u as We,w as Je,e as Ze,J as Qe}from"./BPKwYP2Q.js";import{_ as be}from"./BpceIssd.js";import{_ as Xe,a as Ye}from"./IFqRT_xJ.js";import{_ as ge}from"./CQeMb57w.js";import{_ as et}from"./D2jhe9JK.js";import{_ as tt}from"./DhA17dqR.js";import{_ as $e}from"./ABGJk0pu.js";import{u as st,_ as nt,a as at,i as ot,b as lt,c as rt,s as ve,d as it}from"./Dz55UR7w.js";import{c as _e,f as ce,a as ct,b as Ce,s as pe,e as de,r as he,d as ut}from"./k-z_VVTK.js";import{_ as we,a as dt,b as mt,c as ft,d as pt,e as gt,f as xt,g as Se,h as vt,i as _t,j as ht,k as yt,l as kt}from"./B3sNtVnf.js";import{_ as xe}from"./BdFEUAlx.js";import{_ as bt}from"./DszOHBMG.js";import{_ as $t}from"./C3r_Sv1p.js";import{_ as Ct}from"./CgoAUz76.js";import{_ as wt}from"./CKB_doYB.js";import{_ as Te}from"./nCjfWTGm.js";import{u as St,p as Tt,_ as jt}from"./DjZKuUMz.js";import{b as It}from"./Bb64FEFL.js";import{u as Ut}from"./BIf1R_fu.js";import{u as zt}from"./DuMv-ugy.js";import"./iwD5atI2.js";import"./r3SBLxtE.js";import"./B7yG1G_l.js";import"./Br2K9yi_.js";import"./CoHGrO41.js";import"./DgYM3eyi.js";import"./C38aZbFJ.js";import"./CpO-ABDW.js";import"./jIF87ALb.js";import"./mGJLLqyN.js";import"./d5ZB3uxF.js";import"./B43OGXzV.js";const Rt={class:"flex items-center gap-3 flex-1 min-w-0 justify-between"},Et={class:"flex items-center gap-3 min-w-0"},At={class:"font-mono text-sm truncate text-gray-600 dark:text-gray-400 min-w-0"},Vt={class:"flex items-center gap-3 shrink-0 max-sm:hidden"},Mt={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Nt={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Ft={key:1,class:"text-xs text-gray-400 whitespace-nowrap"},Bt={class:"grid grid-cols-1 lg:grid-cols-12 gap-4"},Lt={class:"space-y-3"},Pt={key:0,class:"text-sm font-medium break-words text-gray-500 dark:text-gray-400"},Dt={class:"flex flex-wrap gap-2"},Ot={class:"text-sm text-gray-500"},Ht={class:"flex items-start gap-3"},qt={class:"flex flex-col gap-1 shrink-0"},Gt={class:"flex-1 min-w-0 space-y-1.5"},Kt={class:"flex justify-end"},Wt=ee({__name:"ClusterSummary",props:{cluster:{},triageStatus:{},triageNote:{},triageSaving:{type:Boolean},triageChanged:{type:Boolean}},emits:["update:triageStatus","update:triageNote","save-triage"],setup(a,{emit:U}){const u=U,{summaryColSpanClass:b}=st(()=>1),f=[{label:"Open",value:"open",color:"warning"},{label:"Resolved",value:"resolved",color:"success"},{label:"Ignored",value:"ignored",color:"neutral"}];return(g,n)=>{const d=ue,C=te,V=ge,E=ye,R=et,T=tt,h=ie,I=$e,v=nt;return s(),S(v,{"storage-key":"failure-cluster"},{folded:p(()=>[t("div",Rt,[t("div",Et,[c(d,{color:("clusterStatusColor"in g?g.clusterStatusColor:e(ct))(a.cluster.status),variant:"solid",size:"sm",class:"shrink-0 capitalize"},{default:p(()=>[w(o(a.cluster.status),1)]),_:1},8,["color"]),t("span",At,o(a.cluster.signature),1),a.cluster.errorType?(s(),S(d,{key:0,color:("clusterErrorTypeColor"in g?g.clusterErrorTypeColor:e(_e))(a.cluster.errorType),variant:"subtle",size:"sm"},{default:p(()=>[w(o(a.cluster.errorType),1)]),_:1},8,["color"])):m("",!0)]),t("div",Vt,[t("span",Mt,o(a.cluster.occurrences)+" occurrence"+o(a.cluster.occurrences===1?"":"s"),1),t("span",Nt,o(a.cluster.affectedTests)+" "+o(a.cluster.affectedTests===1?"test":"tests"),1),a.cluster.diagnosis?.status==="completed"&&a.cluster.diagnosis?.category?(s(),S(d,{key:0,color:"neutral",variant:"outline",size:"sm",class:"gap-1 whitespace-nowrap"},{default:p(()=>[c(C,{name:"i-lucide-sparkles",class:"size-3"}),w(" "+o(a.cluster.diagnosis.category),1)]),_:1})):m("",!0),a.cluster.lastSeenAt?(s(),l("span",Ft," last seen "+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.lastSeenAt)),1)):m("",!0)])])]),default:p(()=>[t("div",Bt,[t("div",{class:Y(e(b))},[c(T,{title:a.cluster.signature},{default:p(()=>[t("div",Lt,[a.cluster.title?(s(),l("p",Pt,o(a.cluster.title),1)):m("",!0),t("div",Dt,[a.cluster.errorType?(s(),S(d,{key:0,color:("clusterErrorTypeColor"in g?g.clusterErrorTypeColor:e(_e))(a.cluster.errorType),variant:"subtle"},{default:p(()=>[w(o(a.cluster.errorType),1)]),_:1},8,["color"])):m("",!0),c(d,{color:"neutral",variant:"subtle"},{default:p(()=>[w(o(a.cluster.occurrences)+" occurrence"+o(a.cluster.occurrences===1?"":"s"),1)]),_:1}),c(d,{color:"neutral",variant:"subtle"},{default:p(()=>[w(o(a.cluster.affectedTests)+" "+o(a.cluster.affectedTests===1?"test":"tests")+" affected ",1)]),_:1}),a.cluster.diagnosis?.status==="completed"&&a.cluster.diagnosis?.category?(s(),S(d,{key:1,color:"neutral",variant:"outline",class:"gap-1"},{default:p(()=>[c(C,{name:"i-lucide-sparkles",class:"size-3"}),w(" "+o(a.cluster.diagnosis.category),1)]),_:1})):m("",!0),c(V,{topic:"cluster.concept"})]),t("p",Ot,[n[2]||(n[2]=w(" First seen in ",-1)),c(E,{to:`/test-runs/${a.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:p(()=>[w(" run #"+o(a.cluster.firstSeenRunId),1)]),_:1},8,["to"]),a.cluster.firstSeenAt?(s(),l(L,{key:0},[w(" ("+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.firstSeenAt))+") ",1)],64)):m("",!0),n[3]||(n[3]=w(" · Last seen in ",-1)),c(E,{to:`/test-runs/${a.cluster.lastSeenRunId}`,class:"text-primary hover:underline"},{default:p(()=>[w(" run #"+o(a.cluster.lastSeenRunId),1)]),_:1},8,["to"]),a.cluster.lastSeenAt?(s(),l(L,{key:1},[w(" ("+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.lastSeenAt))+") ",1)],64)):m("",!0),a.cluster.lastSeenRunStatus?(s(),S(R,{key:2,status:a.cluster.lastSeenRunStatus,size:"sm",class:"ml-1 align-middle"},null,8,["status"])):m("",!0)])])]),_:1},8,["title"])],2),c(T,{class:"lg:col-span-3",icon:"i-lucide-triangle-alert","icon-class":"text-amber-500",title:"Triage",help:"cluster.triage"},{default:p(()=>[t("div",Ht,[t("div",qt,[(s(),l(L,null,Q(f,j=>c(h,{key:j.value,size:"xs",class:"justify-start",color:a.triageStatus===j.value?j.color:"neutral",variant:a.triageStatus===j.value?"solid":"outline",onClick:G=>u("update:triageStatus",j.value)},{default:p(()=>[w(o(j.label),1)]),_:2},1032,["color","variant","onClick"])),64))]),t("div",Gt,[c(I,{"model-value":a.triageNote,placeholder:"Optional note…",rows:3,class:"text-sm w-full","onUpdate:modelValue":n[0]||(n[0]=j=>u("update:triageNote",j))},null,8,["model-value"]),t("div",Kt,[a.triageChanged?(s(),S(h,{key:0,size:"xs",icon:"i-lucide-check",loading:a.triageSaving,onClick:n[1]||(n[1]=j=>u("save-triage"))},{default:p(()=>[...n[4]||(n[4]=[w(" Save ",-1)])]),_:1},8,["loading"])):m("",!0)])])])]),_:1})])]),_:1})}}}),Jt=Object.assign(Wt,{__name:"ClusterSummary"}),Zt={class:"divide-y divide-default"},Qt={class:"text-xs font-mono text-gray-700 dark:text-gray-300 break-all whitespace-pre-wrap"},Xt={class:"text-xs font-mono text-gray-600 dark:text-gray-400 truncate"},Yt=ee({__name:"TestEvidenceSignals",props:De({consoleLogs:{},networkRequests:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(a){const U=a,u=P(()=>Array.isArray(U.consoleLogs)?U.consoleLogs.filter(d=>d.type==="error"||d.type==="warning"):[]),b=P(()=>Array.isArray(U.networkRequests)?U.networkRequests.filter(d=>d.status&&d.status>=400):[]),f=P(()=>u.value.length>0||b.value.length>0),g=P(()=>{const d=[];return u.value.length&&d.push(`${u.value.length} console`),b.value.length&&d.push(`${b.value.length} network`),d.join(", ")}),n=Pe(a,"open");return(d,C)=>{const V=te,E=ue,R=we;return e(f)?(s(),S(R,{key:0,icon:"i-lucide-triangle-alert",label:`Signals (${e(g)})`,open:n.value,"onUpdate:open":C[0]||(C[0]=T=>n.value=T)},{default:p(()=>[t("div",Zt,[e(u).length>0?(s(),l(L,{key:0},[C[1]||(C[1]=t("div",{class:"px-3 py-1 bg-gray-50 dark:bg-gray-800/40"},[t("p",{class:"text-[10px] font-semibold text-gray-400 uppercase tracking-wide"},"Console")],-1)),(s(!0),l(L,null,Q(e(u),(T,h)=>(s(),l("div",{key:"log-"+h,class:"px-3 py-1.5 flex items-start gap-2"},[c(V,{name:T.type==="error"?"i-lucide-x-circle":"i-lucide-alert-triangle",class:Y(["size-3.5 mt-0.5 shrink-0",T.type==="error"?"text-red-500":"text-yellow-500"])},null,8,["name","class"]),t("p",Qt,o(T.text),1)]))),128))],64)):m("",!0),e(b).length>0?(s(),l(L,{key:1},[C[2]||(C[2]=t("div",{class:"px-3 py-1 bg-gray-50 dark:bg-gray-800/40"},[t("p",{class:"text-[10px] font-semibold text-gray-400 uppercase tracking-wide"},"Network")],-1)),(s(!0),l(L,null,Q(e(b),(T,h)=>(s(),l("div",{key:"req-"+h,class:"px-3 py-1.5 flex items-center gap-2"},[c(E,{color:T.status>=500?"error":"warning",variant:"subtle",size:"sm",class:"shrink-0 font-mono"},{default:p(()=>[w(o(T.status),1)]),_:2},1032,["color"]),t("p",Xt,o(T.url),1)]))),128))],64)):m("",!0)])]),_:1},8,["label","open"])):m("",!0)}}}),es=Object.assign(Yt,{__name:"TestEvidenceSignals"}),ts={class:"space-y-3"},ss={key:0,class:"flex gap-0 border-b border-default overflow-x-auto"},ns=["title","onClick"],as={key:0,class:"opacity-60 ml-1"},os={key:1,class:"flex items-start justify-between gap-2 flex-wrap"},ls={class:"min-w-0"},rs={class:"text-sm font-medium break-words"},is={key:2,class:"flex items-center justify-center py-10"},cs={key:0,class:"flex flex-wrap gap-1.5"},us={class:"divide-y divide-default"},ds={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ms={key:0,class:"text-xs font-mono text-red-500 whitespace-pre-wrap break-all"},fs={class:"overflow-x-auto max-h-72"},ps={class:"max-h-64 overflow-auto"},gs=ee({__name:"ClusterTestEvidence",props:{affectedTestCases:{},projectKey:{},projectName:{}},setup(a){const U=a,u=x(U.affectedTestCases[0]?.recentTestRunsCaseId??null),b=P(()=>U.affectedTestCases.find(r=>r.recentTestRunsCaseId===u.value)),f=x(null),g=x([]),n=x(!1),d=x(!1),C=x(!1),V=x(!1),E=x(!1),R=x(!1),T=x(!1),h=new Map;function I(){C.value=!1,V.value=!1,E.value=!1,R.value=!1,T.value=!1}async function v(r){I();const $=h.get(r);if($){f.value=$.detail,g.value=$.traces,n.value=!1,d.value=!1;return}n.value=!0,d.value=!0,f.value=null,g.value=[];const[B,H]=await Promise.allSettled([$fetch(`/api/test-run-cases/${r}`),$fetch(`/api/test-run-cases/${r}/traces`)]);B.status==="fulfilled"&&(f.value=B.value),n.value=!1,H.status==="fulfilled"&&(g.value=H.value),d.value=!1,B.status==="fulfilled"&&H.status==="fulfilled"&&h.set(r,{detail:B.value,traces:H.value})}const j=new Map,G=x(null),D=x("trace"),M=P(()=>G.value?.frames??[]);async function O(r){if(G.value=j.get(r)??null,j.has(r)||g.value.length===0)return;const $=f.value?.testRun?.id;if($)try{const B=await $fetch(`/api/test-runs/${$}/cases/${r}/trace-stacks`),H=B.status==="ok"&&B.frames?.length?B:null;j.set(r,H),u.value===r&&(G.value=H)}catch{j.set(r,null)}}ne([f,g],()=>{D.value="trace",u.value&&O(u.value)}),ne(u,r=>{r&&v(r)}),Oe(()=>{u.value&&v(u.value)});const A=P(()=>{const r=f.value?.steps;return Array.isArray(r)?r.filter($=>$.error):[]}),F=P(()=>f.value?.testSource?f.value.testSource.split(`
|
|
1
|
+
import{_ as Be}from"./BDcIWTTq.js";import{_ as Le}from"./B1CUXGbl.js";import{d as ee,o as s,f as S,g as p,i as t,p as Y,k as e,j as c,c as l,t as o,q as m,s as ue,m as w,v as te,x as ye,F as L,y as Q,_ as ie,z as Pe,A as De,h as P,r as x,B as ne,C as Oe,l as J,D as ke,E as He,G as qe,H as fe,I as Ge,b as Ke,u as We,w as Je,e as Ze,J as Qe}from"./BrT_Sys2.js";import{_ as be}from"./DTH2lteW.js";import{_ as Xe,a as Ye}from"./CMB-NkFa.js";import{_ as ge}from"./B6hPf4UR.js";import{_ as et}from"./D13ybpY3.js";import{_ as tt}from"./CHIbdzqp.js";import{_ as $e}from"./Dz3Wbekz.js";import{u as st,_ as nt,a as at,i as ot,b as lt,c as rt,s as ve,d as it}from"./BcLXUmKT.js";import{c as _e,f as ce,a as ct,b as Ce,s as pe,e as de,r as he,d as ut}from"./D7P0ML0H.js";import{_ as we,a as dt,b as mt,c as ft,d as pt,e as gt,f as xt,g as Se,h as vt,i as _t,j as ht,k as yt,l as kt}from"./Cz2HhsB6.js";import{_ as xe}from"./Bq0PQfQY.js";import{_ as bt}from"./CxLN5Tmq.js";import{_ as $t}from"./Sgf5OLhm.js";import{_ as Ct}from"./3QTvYrZp.js";import{_ as wt}from"./COVRAesU.js";import{_ as Te}from"./BciovqwK.js";import{u as St,p as Tt,_ as jt}from"./BWFY2RuU.js";import{b as It}from"./za5M7BGh.js";import{u as Ut}from"./Dvc1aWpA.js";import{u as zt}from"./DtXREpk_.js";import"./z7PmsnBG.js";import"./r3SBLxtE.js";import"./CoKEjZX7.js";import"./BU6xjw05.js";import"./DpJrGwCr.js";import"./BE8ykmwr.js";import"./D0-HTQTD.js";import"./DxQq_L07.js";import"./26ll_vBr.js";import"./ByoIgYX_.js";import"./BxRsAYRS.js";import"./cBj9fai9.js";const Rt={class:"flex items-center gap-3 flex-1 min-w-0 justify-between"},Et={class:"flex items-center gap-3 min-w-0"},At={class:"font-mono text-sm truncate text-gray-600 dark:text-gray-400 min-w-0"},Vt={class:"flex items-center gap-3 shrink-0 max-sm:hidden"},Mt={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Nt={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},Ft={key:1,class:"text-xs text-gray-400 whitespace-nowrap"},Bt={class:"grid grid-cols-1 lg:grid-cols-12 gap-4"},Lt={class:"space-y-3"},Pt={key:0,class:"text-sm font-medium break-words text-gray-500 dark:text-gray-400"},Dt={class:"flex flex-wrap gap-2"},Ot={class:"text-sm text-gray-500"},Ht={class:"flex items-start gap-3"},qt={class:"flex flex-col gap-1 shrink-0"},Gt={class:"flex-1 min-w-0 space-y-1.5"},Kt={class:"flex justify-end"},Wt=ee({__name:"ClusterSummary",props:{cluster:{},triageStatus:{},triageNote:{},triageSaving:{type:Boolean},triageChanged:{type:Boolean}},emits:["update:triageStatus","update:triageNote","save-triage"],setup(a,{emit:U}){const u=U,{summaryColSpanClass:b}=st(()=>1),f=[{label:"Open",value:"open",color:"warning"},{label:"Resolved",value:"resolved",color:"success"},{label:"Ignored",value:"ignored",color:"neutral"}];return(g,n)=>{const d=ue,C=te,V=ge,E=ye,R=et,T=tt,h=ie,I=$e,v=nt;return s(),S(v,{"storage-key":"failure-cluster"},{folded:p(()=>[t("div",Rt,[t("div",Et,[c(d,{color:("clusterStatusColor"in g?g.clusterStatusColor:e(ct))(a.cluster.status),variant:"solid",size:"sm",class:"shrink-0 capitalize"},{default:p(()=>[w(o(a.cluster.status),1)]),_:1},8,["color"]),t("span",At,o(a.cluster.signature),1),a.cluster.errorType?(s(),S(d,{key:0,color:("clusterErrorTypeColor"in g?g.clusterErrorTypeColor:e(_e))(a.cluster.errorType),variant:"subtle",size:"sm"},{default:p(()=>[w(o(a.cluster.errorType),1)]),_:1},8,["color"])):m("",!0)]),t("div",Vt,[t("span",Mt,o(a.cluster.occurrences)+" occurrence"+o(a.cluster.occurrences===1?"":"s"),1),t("span",Nt,o(a.cluster.affectedTests)+" "+o(a.cluster.affectedTests===1?"test":"tests"),1),a.cluster.diagnosis?.status==="completed"&&a.cluster.diagnosis?.category?(s(),S(d,{key:0,color:"neutral",variant:"outline",size:"sm",class:"gap-1 whitespace-nowrap"},{default:p(()=>[c(C,{name:"i-lucide-sparkles",class:"size-3"}),w(" "+o(a.cluster.diagnosis.category),1)]),_:1})):m("",!0),a.cluster.lastSeenAt?(s(),l("span",Ft," last seen "+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.lastSeenAt)),1)):m("",!0)])])]),default:p(()=>[t("div",Bt,[t("div",{class:Y(e(b))},[c(T,{title:a.cluster.signature},{default:p(()=>[t("div",Lt,[a.cluster.title?(s(),l("p",Pt,o(a.cluster.title),1)):m("",!0),t("div",Dt,[a.cluster.errorType?(s(),S(d,{key:0,color:("clusterErrorTypeColor"in g?g.clusterErrorTypeColor:e(_e))(a.cluster.errorType),variant:"subtle"},{default:p(()=>[w(o(a.cluster.errorType),1)]),_:1},8,["color"])):m("",!0),c(d,{color:"neutral",variant:"subtle"},{default:p(()=>[w(o(a.cluster.occurrences)+" occurrence"+o(a.cluster.occurrences===1?"":"s"),1)]),_:1}),c(d,{color:"neutral",variant:"subtle"},{default:p(()=>[w(o(a.cluster.affectedTests)+" "+o(a.cluster.affectedTests===1?"test":"tests")+" affected ",1)]),_:1}),a.cluster.diagnosis?.status==="completed"&&a.cluster.diagnosis?.category?(s(),S(d,{key:1,color:"neutral",variant:"outline",class:"gap-1"},{default:p(()=>[c(C,{name:"i-lucide-sparkles",class:"size-3"}),w(" "+o(a.cluster.diagnosis.category),1)]),_:1})):m("",!0),c(V,{topic:"cluster.concept"})]),t("p",Ot,[n[2]||(n[2]=w(" First seen in ",-1)),c(E,{to:`/test-runs/${a.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:p(()=>[w(" run #"+o(a.cluster.firstSeenRunId),1)]),_:1},8,["to"]),a.cluster.firstSeenAt?(s(),l(L,{key:0},[w(" ("+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.firstSeenAt))+") ",1)],64)):m("",!0),n[3]||(n[3]=w(" · Last seen in ",-1)),c(E,{to:`/test-runs/${a.cluster.lastSeenRunId}`,class:"text-primary hover:underline"},{default:p(()=>[w(" run #"+o(a.cluster.lastSeenRunId),1)]),_:1},8,["to"]),a.cluster.lastSeenAt?(s(),l(L,{key:1},[w(" ("+o(("formatRelativeTime"in g?g.formatRelativeTime:e(ce))(a.cluster.lastSeenAt))+") ",1)],64)):m("",!0),a.cluster.lastSeenRunStatus?(s(),S(R,{key:2,status:a.cluster.lastSeenRunStatus,size:"sm",class:"ml-1 align-middle"},null,8,["status"])):m("",!0)])])]),_:1},8,["title"])],2),c(T,{class:"lg:col-span-3",icon:"i-lucide-triangle-alert","icon-class":"text-amber-500",title:"Triage",help:"cluster.triage"},{default:p(()=>[t("div",Ht,[t("div",qt,[(s(),l(L,null,Q(f,j=>c(h,{key:j.value,size:"xs",class:"justify-start",color:a.triageStatus===j.value?j.color:"neutral",variant:a.triageStatus===j.value?"solid":"outline",onClick:G=>u("update:triageStatus",j.value)},{default:p(()=>[w(o(j.label),1)]),_:2},1032,["color","variant","onClick"])),64))]),t("div",Gt,[c(I,{"model-value":a.triageNote,placeholder:"Optional note…",rows:3,class:"text-sm w-full","onUpdate:modelValue":n[0]||(n[0]=j=>u("update:triageNote",j))},null,8,["model-value"]),t("div",Kt,[a.triageChanged?(s(),S(h,{key:0,size:"xs",icon:"i-lucide-check",loading:a.triageSaving,onClick:n[1]||(n[1]=j=>u("save-triage"))},{default:p(()=>[...n[4]||(n[4]=[w(" Save ",-1)])]),_:1},8,["loading"])):m("",!0)])])])]),_:1})])]),_:1})}}}),Jt=Object.assign(Wt,{__name:"ClusterSummary"}),Zt={class:"divide-y divide-default"},Qt={class:"text-xs font-mono text-gray-700 dark:text-gray-300 break-all whitespace-pre-wrap"},Xt={class:"text-xs font-mono text-gray-600 dark:text-gray-400 truncate"},Yt=ee({__name:"TestEvidenceSignals",props:De({consoleLogs:{},networkRequests:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(a){const U=a,u=P(()=>Array.isArray(U.consoleLogs)?U.consoleLogs.filter(d=>d.type==="error"||d.type==="warning"):[]),b=P(()=>Array.isArray(U.networkRequests)?U.networkRequests.filter(d=>d.status&&d.status>=400):[]),f=P(()=>u.value.length>0||b.value.length>0),g=P(()=>{const d=[];return u.value.length&&d.push(`${u.value.length} console`),b.value.length&&d.push(`${b.value.length} network`),d.join(", ")}),n=Pe(a,"open");return(d,C)=>{const V=te,E=ue,R=we;return e(f)?(s(),S(R,{key:0,icon:"i-lucide-triangle-alert",label:`Signals (${e(g)})`,open:n.value,"onUpdate:open":C[0]||(C[0]=T=>n.value=T)},{default:p(()=>[t("div",Zt,[e(u).length>0?(s(),l(L,{key:0},[C[1]||(C[1]=t("div",{class:"px-3 py-1 bg-gray-50 dark:bg-gray-800/40"},[t("p",{class:"text-[10px] font-semibold text-gray-400 uppercase tracking-wide"},"Console")],-1)),(s(!0),l(L,null,Q(e(u),(T,h)=>(s(),l("div",{key:"log-"+h,class:"px-3 py-1.5 flex items-start gap-2"},[c(V,{name:T.type==="error"?"i-lucide-x-circle":"i-lucide-alert-triangle",class:Y(["size-3.5 mt-0.5 shrink-0",T.type==="error"?"text-red-500":"text-yellow-500"])},null,8,["name","class"]),t("p",Qt,o(T.text),1)]))),128))],64)):m("",!0),e(b).length>0?(s(),l(L,{key:1},[C[2]||(C[2]=t("div",{class:"px-3 py-1 bg-gray-50 dark:bg-gray-800/40"},[t("p",{class:"text-[10px] font-semibold text-gray-400 uppercase tracking-wide"},"Network")],-1)),(s(!0),l(L,null,Q(e(b),(T,h)=>(s(),l("div",{key:"req-"+h,class:"px-3 py-1.5 flex items-center gap-2"},[c(E,{color:T.status>=500?"error":"warning",variant:"subtle",size:"sm",class:"shrink-0 font-mono"},{default:p(()=>[w(o(T.status),1)]),_:2},1032,["color"]),t("p",Xt,o(T.url),1)]))),128))],64)):m("",!0)])]),_:1},8,["label","open"])):m("",!0)}}}),es=Object.assign(Yt,{__name:"TestEvidenceSignals"}),ts={class:"space-y-3"},ss={key:0,class:"flex gap-0 border-b border-default overflow-x-auto"},ns=["title","onClick"],as={key:0,class:"opacity-60 ml-1"},os={key:1,class:"flex items-start justify-between gap-2 flex-wrap"},ls={class:"min-w-0"},rs={class:"text-sm font-medium break-words"},is={key:2,class:"flex items-center justify-center py-10"},cs={key:0,class:"flex flex-wrap gap-1.5"},us={class:"divide-y divide-default"},ds={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ms={key:0,class:"text-xs font-mono text-red-500 whitespace-pre-wrap break-all"},fs={class:"overflow-x-auto max-h-72"},ps={class:"max-h-64 overflow-auto"},gs=ee({__name:"ClusterTestEvidence",props:{affectedTestCases:{},projectKey:{},projectName:{}},setup(a){const U=a,u=x(U.affectedTestCases[0]?.recentTestRunsCaseId??null),b=P(()=>U.affectedTestCases.find(r=>r.recentTestRunsCaseId===u.value)),f=x(null),g=x([]),n=x(!1),d=x(!1),C=x(!1),V=x(!1),E=x(!1),R=x(!1),T=x(!1),h=new Map;function I(){C.value=!1,V.value=!1,E.value=!1,R.value=!1,T.value=!1}async function v(r){I();const $=h.get(r);if($){f.value=$.detail,g.value=$.traces,n.value=!1,d.value=!1;return}n.value=!0,d.value=!0,f.value=null,g.value=[];const[B,H]=await Promise.allSettled([$fetch(`/api/test-run-cases/${r}`),$fetch(`/api/test-run-cases/${r}/traces`)]);B.status==="fulfilled"&&(f.value=B.value),n.value=!1,H.status==="fulfilled"&&(g.value=H.value),d.value=!1,B.status==="fulfilled"&&H.status==="fulfilled"&&h.set(r,{detail:B.value,traces:H.value})}const j=new Map,G=x(null),D=x("trace"),M=P(()=>G.value?.frames??[]);async function O(r){if(G.value=j.get(r)??null,j.has(r)||g.value.length===0)return;const $=f.value?.testRun?.id;if($)try{const B=await $fetch(`/api/test-runs/${$}/cases/${r}/trace-stacks`),H=B.status==="ok"&&B.frames?.length?B:null;j.set(r,H),u.value===r&&(G.value=H)}catch{j.set(r,null)}}ne([f,g],()=>{D.value="trace",u.value&&O(u.value)}),ne(u,r=>{r&&v(r)}),Oe(()=>{u.value&&v(u.value)});const A=P(()=>{const r=f.value?.steps;return Array.isArray(r)?r.filter($=>$.error):[]}),F=P(()=>f.value?.testSource?f.value.testSource.split(`
|
|
2
2
|
`).length:0),z=P(()=>{const r=f.value;if(!r)return[];const $=r.attachments.filter(y=>ot(y.path,y.contentType)).length,B=r.attachments.filter(y=>lt(y.path,y.contentType)).length,H=Array.isArray(r.consoleLogs)?r.consoleLogs.filter(y=>y.type==="error"||y.type==="warning").length:0,X=Array.isArray(r.networkRequests)?r.networkRequests.filter(y=>(y.status??0)>=400).length:0;return[{icon:"i-lucide-image",label:"screenshots",count:$},{icon:"i-lucide-video",label:"videos",count:B},{icon:"i-lucide-bug-play",label:"traces",count:g.value.length},{icon:"i-lucide-list-checks",label:"failing steps",count:A.value.length},{icon:"i-lucide-triangle-alert",label:"signals",count:H+X},{icon:"i-lucide-code",label:"source",count:r.testSourceFrames?.length||(r.testSource?1:0)},{icon:"i-lucide-accessibility",label:"ARIA",count:r.ariaSnapshot?1:0}].filter(y=>y.count>0)});return(r,$)=>{const B=xe,H=ie,X=te,y=ue,i=dt,k=mt,N=ft,q=we,K=es,W=bt,Z=pt,ae=gt,se=at,oe=xt;return s(),l("div",ts,[a.affectedTestCases.length>1?(s(),l("div",ss,[(s(!0),l(L,null,Q(a.affectedTestCases,_=>(s(),l("button",{key:_.recentTestRunsCaseId,class:Y(["px-3 py-1.5 text-xs whitespace-nowrap border-b-2 -mb-px transition-colors",e(u)===_.recentTestRunsCaseId?"border-primary text-primary font-medium":"border-transparent text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"]),title:_.title,onClick:le=>u.value=_.recentTestRunsCaseId},[w(o(_.title.split(" › ").pop())+" ",1),_.runCount>1?(s(),l("span",as,o(_.runCount)+"×",1)):m("",!0)],10,ns))),128))])):m("",!0),e(b)?(s(),l("div",os,[t("div",ls,[t("p",rs,o(e(b).title),1),c(B,{"file-path":e(b).filePath,"project-key":a.projectKey,"project-name":a.projectName,class:"text-xs text-gray-400"},null,8,["file-path","project-key","project-name"])]),c(H,{to:`/test-run-cases/${e(b).recentTestRunsCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:p(()=>[...$[6]||($[6]=[w(" Open test run case ",-1)])]),_:1},8,["to"])])):m("",!0),e(n)?(s(),l("div",is,[c(X,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(f)?(s(),l(L,{key:3},[e(z).length?(s(),l("div",cs,[(s(!0),l(L,null,Q(e(z),_=>(s(),S(y,{key:_.label,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:p(()=>[c(X,{name:_.icon,class:"size-3"},null,8,["name"]),w(" "+o(_.count)+" "+o(_.label),1)]),_:2},1024))),128))])):m("",!0),c(i,{attachments:e(f).attachments},null,8,["attachments"]),c(k,{attachments:e(f).attachments},null,8,["attachments"]),c(N,{traces:e(g),loading:e(d)},null,8,["traces","loading"]),e(A).length>0?(s(),S(q,{key:1,icon:"i-lucide-list-checks",label:"Failing steps",count:e(A).length,open:e(C),"onUpdate:open":$[0]||($[0]=_=>J(C)?C.value=_:null)},{default:p(()=>[t("div",us,[(s(!0),l(L,null,Q(e(A),(_,le)=>(s(),l("div",{key:le,class:"px-3 py-2 space-y-0.5"},[t("p",ds,o(le+1)+". "+o(_.title),1),_.error?.message?(s(),l("p",ms,o(_.error.message),1)):m("",!0)]))),128))])]),_:1},8,["count","open"])):m("",!0),c(K,{"console-logs":e(f).consoleLogs,"network-requests":e(f).networkRequests,open:e(V),"onUpdate:open":$[1]||($[1]=_=>J(V)?V.value=_:null)},null,8,["console-logs","network-requests","open"]),e(f).testSourceFrames?.length||e(f).testSource||e(M).length?(s(),S(q,{key:2,icon:"i-lucide-code",label:"Test source",count:e(M).length||e(f).testSourceFrames?.length||e(F),open:e(E),"onUpdate:open":$[3]||($[3]=_=>J(E)?E.value=_:null)},{default:p(()=>[e(M).length&&(e(f).testSourceFrames?.length||e(f).testSource)?(s(),S(W,{key:0,modelValue:e(D),"onUpdate:modelValue":$[2]||($[2]=_=>J(D)?D.value=_:null),items:[{label:`Full stack (${e(M).length})`,value:"trace"},{label:`Captured (${e(f).testSourceFrames?.length||1})`,value:"captured"}],size:"xs",variant:"link",class:"mb-1.5",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])):m("",!0),t("div",fs,[e(D)==="trace"&&e(M).length?(s(),S(Z,{key:0,frames:e(M),"project-key":a.projectKey,"project-name":a.projectName},null,8,["frames","project-key","project-name"])):e(f).testSourceFrames?.length?(s(),S(ae,{key:1,frames:e(f).testSourceFrames,"project-key":a.projectKey,"project-name":a.projectName},null,8,["frames","project-key","project-name"])):e(f).testSource?(s(),S(se,{key:2,text:"```typescript\n"+e(f).testSource+"\n```"},null,8,["text"])):m("",!0)])]),_:1},8,["count","open"])):m("",!0),e(f).ariaSnapshot?(s(),S(q,{key:3,icon:"i-lucide-accessibility",label:"ARIA snapshot",open:e(R),"onUpdate:open":$[4]||($[4]=_=>J(R)?R.value=_:null)},{default:p(()=>[t("div",ps,[c(se,{text:"```yaml\n"+e(f).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},8,["open"])):m("",!0),e(f).pageState?(s(),S(q,{key:4,icon:"i-lucide-database",label:"App state",open:e(T),"onUpdate:open":$[5]||($[5]=_=>J(T)?T.value=_:null)},{default:p(()=>[c(oe,{"page-state":e(f).pageState,plain:""},null,8,["page-state"])]),_:1},8,["open"])):m("",!0)],64)):m("",!0)])}}}),xs=Object.assign(gs,{__name:"ClusterTestEvidence"}),vs={key:0,class:"flex items-center gap-1.5 overflow-hidden min-w-0"},_s={class:"text-primary shrink-0"},hs={class:"text-gray-500 truncate text-xs font-sans"},ys={key:1,class:"text-primary text-xs"},ks={key:2,class:"text-gray-400 font-sans text-xs"},bs={class:"w-96 p-2 space-y-2"},$s={class:"flex items-center gap-1"},Cs={class:"flex items-center gap-1"},ws={key:0,class:"flex items-center gap-2 px-2 py-1.5 text-xs rounded-md bg-primary/5 text-gray-600 dark:text-gray-300"},Ss={class:"font-medium text-green-600 dark:text-green-400"},Ts={class:"font-medium text-red-600 dark:text-red-400"},js={class:"text-gray-400"},Is={key:1,class:"flex items-center justify-center gap-2 py-6 text-gray-400"},Us={key:2,class:"py-4 text-center text-sm text-red-500"},zs={key:3,class:"flex items-start gap-2 px-2 py-2 text-xs text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded-md"},Rs={key:4,class:"max-h-80 overflow-y-auto space-y-px"},Es={class:"text-xs text-primary"},As={key:1,class:"py-4 text-center text-sm text-gray-400"},Vs=["onClick"],Ms={class:"text-xs text-primary shrink-0 w-14 pt-px"},Ns={class:"flex-1 min-w-0"},Fs={class:"text-xs font-medium leading-snug truncate"},Bs={class:"text-xs text-gray-400 leading-snug truncate"},Ls=ee({__name:"CommitPicker",props:{modelValue:{},clusterId:{}},emits:["update:modelValue"],setup(a,{emit:U}){const u=a,b=U,f=x(!1),g=x(""),n=x([]),d=x(null),C=x(null),V=x(!1),E=x(!1),R=x(null),T=x(null),h=x([]),I=x(!1),v=x(void 0),j=P(()=>{if(!u.modelValue)return null;const z=u.modelValue.trim();return n.value.find($=>$.sha===z||$.sha.startsWith(z))??{sha:z,shortSha:z.slice(0,7),message:"",author:"",date:""}});async function G(){if(!h.value.length){I.value=!0;try{const z=await $fetch(`/api/failure-clusters/${u.clusterId}/branches`);h.value=z.branches}catch{}finally{I.value=!1}}}async function D(){const z=u.modelValue||"";V.value=!0,E.value=!1,T.value=null;try{const r={};z&&(r.baseline=z),v.value&&(r.branch=v.value);const $=await $fetch(`/api/failure-clusters/${u.clusterId}/commits`,{query:r});n.value=$.commits,C.value=$.aggregate,d.value=$.error??null,T.value=z}catch{E.value=!0}finally{V.value=!1}}ne(v,()=>{n.value=[],T.value=null,D()}),ne(f,async z=>{if(z){await Promise.all([G(),D()]),await qe();const r=R.value?.$el?.querySelector("input")??R.value?.$el;r instanceof HTMLElement&&r.focus()}else g.value=""});const M=P(()=>Ce(n.value,g.value)),O=P(()=>{const z=g.value.trim();return!/^[0-9a-f]{7,40}$/i.test(z)||M.value.some(r=>r.sha.startsWith(z.toLowerCase()))?null:z});function A(z){b("update:modelValue",z),f.value=!1}function F(z){z.stopPropagation(),d.value=null,C.value=null,b("update:modelValue",""),f.value=!1}return(z,r)=>{const $=ie,B=te,H=$t,X=ke,y=He;return s(),S(y,{open:e(f),"onUpdate:open":r[4]||(r[4]=i=>J(f)?f.value=i:null)},{content:p(()=>[t("div",bs,[t("div",$s,[c(B,{name:"i-lucide-git-branch",class:"size-3.5 text-gray-400 shrink-0"}),c(H,{modelValue:e(v),"onUpdate:modelValue":r[0]||(r[0]=i=>J(v)?v.value=i:null),items:e(h),placeholder:"Default branch",size:"xs",class:"flex-1",loading:e(I),disabled:e(I)},null,8,["modelValue","items","loading","disabled"])]),t("div",Cs,[c(X,{ref_key:"searchInputRef",ref:R,modelValue:e(g),"onUpdate:modelValue":r[1]||(r[1]=i=>J(g)?g.value=i:null),placeholder:"Search message, author, SHA…",size:"xs",icon:"i-lucide-search",class:"flex-1"},null,8,["modelValue"]),a.modelValue?(s(),S($,{key:0,size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-x",title:"Clear baseline",onClick:r[2]||(r[2]=i=>F(i))})):m("",!0)]),e(C)&&a.modelValue&&!e(V)?(s(),l("div",ws,[c(B,{name:"i-lucide-git-compare-arrows",class:"size-3.5 shrink-0 text-primary"}),r[5]||(r[5]=t("span",null,"Since baseline:",-1)),t("span",Ss,"+"+o(e(C).linesAdded),1),t("span",Ts,"-"+o(e(C).linesRemoved),1),t("span",js,"across "+o(e(C).filesChanged)+" file"+o(e(C).filesChanged===1?"":"s"),1)])):m("",!0),e(V)?(s(),l("div",Is,[c(B,{name:"i-lucide-loader-2",class:"size-4 animate-spin"}),r[6]||(r[6]=t("span",{class:"text-sm"},"Loading commits…",-1))])):e(E)?(s(),l("div",Us," Failed to load commits — check your SCM token in Settings → AI ")):e(d)&&!e(V)&&e(n).length===0?(s(),l("div",zs,[c(B,{name:"i-lucide-triangle-alert",class:"size-3.5 shrink-0 mt-0.5"}),t("span",null,o(e(d)),1)])):(s(),l("div",Rs,[e(O)?(s(),l("button",{key:0,class:"w-full text-left px-2 py-1.5 rounded flex items-center gap-2 hover:bg-elevated transition-colors border border-dashed border-default",onClick:r[3]||(r[3]=i=>A(e(O)))},[c(B,{name:"i-lucide-git-commit-horizontal",class:"size-3.5 text-gray-400 shrink-0"}),r[7]||(r[7]=t("span",{class:"text-xs text-gray-500"},"Use commit",-1)),t("code",Es,o(e(O).slice(0,7)),1)])):m("",!0),e(M).length===0&&!e(O)?(s(),l("div",As,o(e(g)?"No commits match":"No commits available"),1)):m("",!0),(s(!0),l(L,null,Q(e(M),i=>(s(),l("button",{key:i.sha,class:Y(["w-full text-left px-2 py-1.5 rounded flex items-start gap-2 hover:bg-elevated transition-colors",a.modelValue===i.sha?"bg-primary/10 ring-1 ring-inset ring-primary/30":""]),onClick:k=>A(i.sha)},[t("code",Ms,o(i.shortSha),1),t("div",Ns,[t("p",Fs,o(i.message),1),t("p",Bs,[w(o(i.author),1),i.date?(s(),l(L,{key:0},[w(" · "+o(e(ce)(i.date)),1)],64)):m("",!0)])]),a.modelValue===i.sha?(s(),S(B,{key:0,name:"i-lucide-check",class:"size-3.5 text-primary shrink-0 mt-0.5"})):m("",!0)],10,Vs))),128))]))])]),default:p(()=>[c($,{size:"xs",color:"neutral",variant:"outline",icon:a.modelValue?"i-lucide-git-branch-plus":"i-lucide-git-branch","trailing-icon":"i-lucide-chevron-down",class:"min-w-36 max-w-48 font-mono"},{default:p(()=>[e(j)?.message?(s(),l("span",vs,[t("code",_s,o(e(j).shortSha),1),t("span",hs,o(e(j).message),1)])):a.modelValue?(s(),l("span",ys,o(a.modelValue.slice(0,7))+"…",1)):(s(),l("span",ks,"baseline commit…"))]),_:1},8,["icon"])]),_:1},8,["open"])}}}),Ps=Object.assign(Ls,{__name:"CommitPicker"}),Ds={class:"space-y-3"},Os={key:0,class:"space-y-1"},Hs={class:"text-xs font-semibold text-gray-500 uppercase tracking-wide px-1"},qs={class:"rounded-md border border-default overflow-hidden divide-y divide-default"},Gs={class:"text-xs text-gray-400 shrink-0"},Ks={class:"text-xs text-gray-700 dark:text-gray-300 truncate"},Ws={class:"space-y-1"},Js={class:"text-xs font-semibold text-gray-500 uppercase tracking-wide px-1"},Zs={key:0,class:"text-yellow-500 font-normal normal-case"},Qs={class:"rounded-md border border-default overflow-hidden divide-y divide-default"},Xs=["onClick"],Ys={class:"text-xs font-mono flex-1 truncate text-gray-700 dark:text-gray-300"},en={class:"text-xs text-gray-400 shrink-0 tabular-nums"},tn={key:0,class:"text-green-500"},sn={key:1,class:"text-gray-300 mx-0.5"},nn={key:2,class:"text-red-500"},an={key:0,class:"border-t border-default overflow-x-auto max-h-96"},on=ee({__name:"ScmChangesView",props:{changes:{}},setup(a){const U=x(new Set);function u(b){const f=new Set(U.value);f.has(b)?f.delete(b):f.add(b),U.value=f}return(b,f)=>{const g=te,n=Se;return s(),l("div",Ds,[a.changes.commits.length>0?(s(),l("div",Os,[t("p",Hs,o(a.changes.commits.length)+" commit"+o(a.changes.commits.length===1?"":"s"),1),t("div",qs,[(s(!0),l(L,null,Q(a.changes.commits,d=>(s(),l("div",{key:d.sha,class:"flex items-center gap-2 px-3 py-1.5"},[c(g,{name:"i-lucide-git-commit-horizontal",class:"size-3.5 text-gray-400 shrink-0"}),t("code",Gs,o(d.sha.slice(0,7)),1),t("span",Ks,o(d.message),1)]))),128))])])):m("",!0),t("div",Ws,[t("p",Js,[w(o(a.changes.files.length)+" file"+o(a.changes.files.length===1?"":"s")+" changed ",1),a.changes.patchesOmitted?(s(),l("span",Zs," — diff too large, file names only ")):m("",!0)]),t("div",Qs,[(s(!0),l(L,null,Q(a.changes.files,d=>(s(),l("div",{key:d.filename},[t("button",{class:Y(["w-full flex items-center gap-2 px-3 py-1.5 text-left hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors",d.patch?"cursor-pointer":"cursor-default"]),onClick:C=>d.patch&&u(d.filename)},[c(g,{name:("scmFileStatusMeta"in b?b.scmFileStatusMeta:e(pe))(d.status).icon,class:Y(["size-3.5 shrink-0",("scmFileStatusMeta"in b?b.scmFileStatusMeta:e(pe))(d.status).color])},null,8,["name","class"]),t("span",Ys,o(d.filename),1),t("span",en,[d.additions?(s(),l("span",tn,"+"+o(d.additions),1)):m("",!0),d.additions&&d.deletions?(s(),l("span",sn,"/")):m("",!0),d.deletions?(s(),l("span",nn,"-"+o(d.deletions),1)):m("",!0)]),d.patch?(s(),S(g,{key:0,name:e(U).has(d.filename)?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"size-3.5 text-gray-400 shrink-0"},null,8,["name"])):m("",!0)],10,Xs),d.patch&&e(U).has(d.filename)?(s(),l("div",an,[c(n,{patch:d.patch},null,8,["patch"])])):m("",!0)]))),128))])])])}}}),ln=Object.assign(on,{__name:"ScmChangesView"}),rn={class:"border border-default rounded-lg overflow-clip text-xs font-mono"},cn={class:"sticky top-0 z-10 flex items-center justify-between px-3 py-1.5 bg-elevated border-b border-default text-gray-600 dark:text-gray-300"},un={class:"font-medium truncate"},dn={class:"shrink-0 flex items-center gap-1.5 ml-2 text-[11px]"},mn={key:0,class:"text-green-600 dark:text-green-400"},fn={key:1,class:"text-red-600 dark:text-red-400"},pn={key:1,class:"px-3 py-2 text-gray-400 text-[11px]"},gn=ee({__name:"DiffFile",props:{file:{}},setup(a){return(U,u)=>{const b=ue,f=Se;return s(),l("div",rn,[t("div",cn,[t("span",un,o(a.file.filename),1),t("span",dn,[a.file.additions?(s(),l("span",mn,"+"+o(a.file.additions),1)):m("",!0),a.file.deletions?(s(),l("span",fn,"-"+o(a.file.deletions),1)):m("",!0),c(b,{label:a.file.status,size:"xs",variant:"subtle",color:("scmFileStatusMeta"in U?U.scmFileStatusMeta:e(pe))(a.file.status).badgeColor},null,8,["label","color"])])]),a.file.patch?(s(),S(f,{key:0,patch:a.file.patch},null,8,["patch"])):(s(),l("div",pn,"No patch available"))])}}}),xn=Object.assign(gn,{__name:"DiffFile"}),vn={class:"inline-flex items-center gap-1"},_n={class:"flex h-[72vh] overflow-hidden"},hn={class:"w-72 shrink-0 border-r border-default flex flex-col"},yn={class:"p-2 border-b border-default space-y-2 shrink-0"},kn={class:"flex items-center gap-2 text-xs text-gray-500"},bn={class:"ml-auto"},$n={key:2,class:"flex-1 overflow-y-auto flex flex-col"},Cn={key:0,class:"py-6 text-center text-sm text-gray-400 flex-1"},wn=["onClick"],Sn=["checked","onChange"],Tn={class:"flex-1 min-w-0"},jn={class:"text-xs font-medium leading-snug truncate"},In={class:"text-[10px] text-gray-400 leading-snug mt-0.5 flex items-center gap-1 min-w-0"},Un={class:"text-primary shrink-0"},zn={class:"truncate"},Rn={key:0,class:"shrink-0"},En={key:1,class:"p-2 shrink-0 space-y-1.5"},An={key:0,class:"flex items-center gap-1.5 text-xs text-red-500 px-1"},Vn={class:"flex-1 overflow-y-auto flex flex-col min-w-0"},Mn={key:0,class:"flex-1 flex items-center justify-center text-gray-400 text-sm"},Nn={key:2,class:"flex-1 p-4 space-y-3"},Fn={key:0,class:"space-y-0.5 pb-3 border-b border-default"},Bn={class:"flex items-center gap-2"},Ln={class:"text-xs font-mono text-primary"},Pn={class:"text-xs text-gray-400"},Dn={class:"text-sm font-semibold"},On={key:1,class:"text-sm text-gray-400 pt-2"},Hn={key:4,class:"flex-1 flex items-center justify-center text-sm text-gray-400"},qn={class:"flex items-center gap-3 w-full"},Gn={class:"flex-1 flex items-center gap-2 text-sm text-gray-500 min-w-0"},Kn={class:"font-medium text-gray-700 dark:text-gray-200 shrink-0"},Wn={class:"shrink-0"},Jn={class:"text-green-600 dark:text-green-400 shrink-0 font-medium"},Zn={class:"text-red-600 dark:text-red-400 shrink-0 font-medium"},Qn={key:1,class:"text-gray-400 text-xs shrink-0"},Xn={key:1},me=50,Yn=ee({__name:"CommitBrowserModal",props:{open:{type:Boolean},clusterId:{},initialSelected:{},autoSelectedShas:{}},emits:["update:open","confirm"],setup(a,{emit:U}){const u=a,b=P(()=>new Set(u.autoSelectedShas??[])),f=U,g=x(""),n=x([]),d=x(me),C=x(!1),V=x(!1),E=x(!1),R=x(null),T=x(null),h=x(new Set),I=x(null),v=Ge({}),j=x(null),G=x(!1),D=x(null),M=P(()=>n.value.find(y=>y.sha===I.value)??null),O=P(()=>Ce(n.value,g.value)),A=P(()=>{let y=0,i=0,k=0,N=0;for(const q of h.value){if(!(q in v)){N++;continue}const K=v[q];K&&(y+=K.files.length,i+=K.files.reduce((W,Z)=>W+Z.additions,0),k+=K.files.reduce((W,Z)=>W+Z.deletions,0))}return{files:y,linesAdded:i,linesRemoved:k,unreviewed:N}});async function F(y){y?(V.value=!0,R.value=null):(E.value=!0,T.value=null);try{const i=await $fetch(`/api/failure-clusters/${u.clusterId}/commits`,{query:{limit:d.value}});n.value=i.commits,C.value=i.hasMore??!1,i.error&&!i.commits.length&&(y?R.value=i.error:T.value=i.error),y&&i.commits[0]&&r(i.commits[0].sha)}catch(i){y?R.value=de(i):T.value=de(i)}finally{V.value=!1,E.value=!1}}async function z(){d.value+=me,await F(!1)}ne(()=>u.open,async y=>{if(y){if(h.value=new Set(u.initialSelected??[]),n.value.length){!I.value&&n.value[0]&&r(n.value[0].sha);return}d.value=me,await F(!0)}});async function r(y){if(I.value!==y){if(I.value=y,D.value=null,y in v){j.value=v[y],G.value=!1;return}j.value=null,G.value=!0;try{const i=await $fetch(`/api/failure-clusters/${u.clusterId}/commit-diff`,{query:{sha:y}});v[y]=i,I.value===y&&(j.value=i)}catch(i){I.value===y&&(D.value=de(i))}finally{I.value===y&&(G.value=!1)}}}function $(y){const i=new Set(h.value);i.has(y)?i.delete(y):i.add(y),h.value=i}function B(){h.value=new Set(O.value.map(y=>y.sha))}function H(){h.value=new Set}function X(){f("confirm",[...h.value]),f("update:open",!1)}return(y,i)=>{const k=ge,N=ke,q=Ct,K=ie,W=wt,Z=ue,ae=te,se=xn,oe=Te;return s(),S(oe,{open:a.open,title:"Browse commits",ui:{content:"max-w-6xl",body:"p-0 overflow-hidden"},"onUpdate:open":i[4]||(i[4]=_=>f("update:open",_))},{title:p(()=>[t("span",vn,[i[5]||(i[5]=w("Browse commits ",-1)),c(k,{topic:"cluster.commit-browser"})])]),body:p(()=>[t("div",_n,[t("div",hn,[t("div",yn,[c(N,{modelValue:e(g),"onUpdate:modelValue":i[0]||(i[0]=_=>J(g)?g.value=_:null),placeholder:"Search commits…",size:"xs",icon:"i-lucide-search"},null,8,["modelValue"]),t("div",kn,[t("button",{class:"hover:text-primary transition-colors",onClick:B},"All"),i[6]||(i[6]=t("span",null,"·",-1)),t("button",{class:"hover:text-primary transition-colors",onClick:H},"None"),t("span",bn,o(e(h).size>0?`${e(h).size} selected`:"none selected"),1)])]),e(V)?(s(),S(q,{key:0,text:"Loading…",padded:!1,class:"flex-1"})):e(R)?(s(),S(W,{key:1,text:e(R),padded:!1,class:"flex-1 p-4"},{action:p(()=>[c(K,{size:"xs",color:"neutral",variant:"outline",onClick:i[1]||(i[1]=_=>F(!0))},{default:p(()=>[...i[7]||(i[7]=[w(" Retry ",-1)])]),_:1})]),_:1},8,["text"])):(s(),l("div",$n,[e(O).length===0?(s(),l("div",Cn,o(e(g)?"No commits match":"No commits"),1)):m("",!0),(s(!0),l(L,null,Q(e(O),_=>(s(),l("button",{key:_.sha,class:Y(["w-full text-left px-2.5 py-2 flex items-start gap-2.5 hover:bg-elevated transition-colors border-b border-default/50 last:border-0 shrink-0",e(I)===_.sha?"bg-elevated":""]),onClick:le=>r(_.sha)},[t("input",{type:"checkbox",checked:e(h).has(_.sha),class:"mt-0.5 shrink-0 cursor-pointer accent-primary",onClick:i[2]||(i[2]=fe(()=>{},["stop"])),onChange:le=>$(_.sha)},null,40,Sn),t("div",Tn,[t("p",jn,o(_.message||"(no message)"),1),t("p",In,[t("code",Un,o(_.shortSha),1),t("span",zn,o(_.author),1),_.date?(s(),l("span",Rn,"· "+o(e(ce)(_.date)),1)):m("",!0),e(b).has(_.sha)?(s(),S(Z,{key:1,size:"xs",color:"info",variant:"soft",class:"shrink-0"},{default:p(()=>[...i[8]||(i[8]=[w(" auto ",-1)])]),_:1})):m("",!0)])])],10,wn))),128)),e(C)&&!e(g)?(s(),l("div",En,[e(T)?(s(),l("p",An,[c(ae,{name:"i-lucide-circle-alert",class:"size-3.5 shrink-0"}),w(" "+o(e(T)),1)])):m("",!0),c(K,{size:"xs",color:"neutral",variant:"outline",block:"",loading:e(E),onClick:z},{default:p(()=>[...i[9]||(i[9]=[w(" Load more ",-1)])]),_:1},8,["loading"])])):m("",!0)]))]),t("div",Vn,[e(I)?e(G)?(s(),S(q,{key:1,text:"Loading diff…",padded:!1,class:"flex-1"})):e(j)?(s(),l("div",Nn,[e(M)?(s(),l("div",Fn,[t("div",Bn,[t("code",Ln,o(e(M).shortSha),1),t("span",Pn,[w(o(e(M).author),1),e(M).date?(s(),l(L,{key:0},[w(" · "+o(e(ce)(e(M).date)),1)],64)):m("",!0)])]),t("p",Dn,o(e(M).message),1)])):m("",!0),e(j).files.length===0?(s(),l("div",On,"No file changes in this commit")):m("",!0),(s(!0),l(L,null,Q(e(j).files,_=>(s(),S(se,{key:_.filename,file:_},null,8,["file"]))),128))])):e(D)?(s(),S(W,{key:3,text:e(D),padded:!1,class:"flex-1 p-6"},{action:p(()=>[...i[10]||(i[10]=[t("p",{class:"text-xs text-gray-400"},"Click the commit again to retry",-1)])]),_:1},8,["text"])):(s(),l("div",Hn," Diff not available for this commit ")):(s(),l("div",Mn," Select a commit to view its diff "))])])]),footer:p(()=>[t("div",qn,[t("div",Gn,[e(h).size>0?(s(),l(L,{key:0},[t("span",Kn,o(e(h).size)+" commit"+o(e(h).size===1?"":"s"),1),e(A).files>0||e(A).linesAdded>0||e(A).linesRemoved>0?(s(),l(L,{key:0},[i[11]||(i[11]=t("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),t("span",Wn,o(e(A).files)+" file"+o(e(A).files===1?"":"s"),1),t("span",Jn,"+"+o(e(A).linesAdded),1),t("span",Zn,"-"+o(e(A).linesRemoved),1)],64)):m("",!0),e(A).unreviewed>0?(s(),l("span",Qn," ("+o(e(A).unreviewed)+" unreviewed) ",1)):m("",!0)],64)):(s(),l("span",Xn,"No commits selected"))]),c(K,{color:"neutral",variant:"ghost",onClick:i[3]||(i[3]=_=>f("update:open",!1))},{default:p(()=>[...i[12]||(i[12]=[w(" Cancel ",-1)])]),_:1}),c(K,{color:"primary",disabled:e(h).size===0,onClick:X},{default:p(()=>[...i[13]||(i[13]=[w(" Add to context ",-1)])]),_:1},8,["disabled"])])]),_:1},8,["open"])}}}),ea=Object.assign(Yn,{__name:"CommitBrowserModal"});function je(a){return{scmStatus:P(()=>{const u=a.value?.scm;if(!u)return{color:"text-gray-400",icon:"i-lucide-git-branch",text:"Git context unavailable",detail:""};if(u.baseCommitUsed){if(u.filesCount===0)return{color:"text-yellow-500",icon:"i-lucide-git-branch-plus",text:`Manual baseline ${u.baseCommitUsed.slice(0,7)} · fetch failed`,detail:"network error or missing SCM token (check AI settings)"};const g=u.patchesOmitted?", no patches (diff too large)":u.patchesTruncated?`, ${u.patchedFilesCount} with patches (some cut)`:`, ${u.patchedFilesCount} with patches`;return{color:"text-blue-500",icon:"i-lucide-git-branch-plus",text:`Manual baseline ${u.baseCommitUsed.slice(0,7)} · ${u.filesCount} files${g}`,detail:u.hasLastGreen?"overrides last passing run baseline":"no last passing run"}}if(!u.hasLastGreen)return{color:"text-gray-400",icon:"i-lucide-git-branch",text:"No last passing run",detail:"enter a baseline commit below to enable diff"};if(!u.hasCommitRange)return{color:"text-gray-400",icon:"i-lucide-git-branch",text:"No commit range",detail:"reporter did not send SCM metadata"};if(!u.provider)return{color:"text-yellow-500",icon:"i-lucide-git-branch",text:"Unsupported SCM host",detail:"only GitHub, GitLab and Bitbucket are supported"};if(u.filesCount===0)return{color:"text-yellow-500",icon:"i-lucide-git-branch",text:`${u.provider} · fetch failed`,detail:"network error or missing SCM token (check AI settings)"};if(u.patchesOmitted)return{color:"text-yellow-500",icon:"i-lucide-git-branch",text:`${u.provider} · ${u.filesCount} files`,detail:"diff too large — file list only, no patches"};const b=u.patchesTruncated?", some patches cut (budget)":"",f=u.commitsCount>0?` · ${u.commitsCount} commit${u.commitsCount>1?"s":""}`:"";return{color:"text-green-500",icon:"i-lucide-git-branch",text:`${u.provider} · ${u.filesCount} files · ${u.patchedFilesCount} with patches${b}${f}`,detail:""}})}}const ta={class:"space-y-3"},sa={class:"pb-2 border-b border-default"},na={class:"flex items-center gap-2 flex-wrap"},aa={class:"text-xs text-gray-500 font-medium shrink-0 inline-flex items-center gap-1"},oa={class:"flex items-center gap-1.5 ml-auto"},la={key:0,class:"flex items-center gap-1 px-2 py-0.5 rounded-full bg-primary/10 text-primary text-xs font-medium"},ra={key:0,class:"flex items-start gap-1.5 text-xs px-2 py-1.5 rounded-md bg-elevated border border-default"},ia={key:0,class:"text-gray-400 ml-1"},ca={key:1,class:"flex items-center justify-center py-6"},ua={key:3,class:"text-xs text-gray-400 text-center py-4"},da=ee({__name:"ClusterInvestigation",setup(a){const{clusterId:U,baseCommit:u,selectedCommitShas:b,autoSelectedCommits:f,baseCommitIsPinned:g,coverage:n,scmChanges:d,contextLoading:C,refreshContext:V}=St(),E=x(!1),{scmStatus:R}=je(n);return(T,h)=>{const I=ge,v=Ps,j=te,G=be,D=ie,M=ln,O=ea;return s(),l(L,null,[t("div",ta,[t("div",sa,[t("div",na,[t("span",aa,[h[5]||(h[5]=w(" Baseline ",-1)),c(I,{topic:"cluster.baseline"})]),c(v,{modelValue:e(u),"onUpdate:modelValue":h[0]||(h[0]=A=>J(u)?u.value=A:null),"cluster-id":e(U)},null,8,["modelValue","cluster-id"]),e(g)?(s(),S(G,{key:0,text:"Baseline commit pinned for this cluster"},{default:p(()=>[c(j,{name:"i-lucide-pin",class:"size-3.5 text-primary shrink-0"})]),_:1})):m("",!0),t("div",oa,[e(b).length?(s(),l("div",la,[c(j,{name:"i-lucide-git-commit-horizontal",class:"size-3"}),t("span",null,o(e(b).length)+" commit"+o(e(b).length===1?"":"s"),1),t("button",{class:"ml-0.5 hover:opacity-70 transition-opacity",onClick:h[1]||(h[1]=A=>b.value=[])},[c(j,{name:"i-lucide-x",class:"size-3"})])])):m("",!0),c(D,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-list",onClick:h[2]||(h[2]=A=>E.value=!0)},{default:p(()=>[...h[6]||(h[6]=[w(" Browse ",-1)])]),_:1}),c(D,{icon:"i-lucide-refresh-cw",size:"xs",color:"neutral",variant:"outline",loading:e(C),onClick:e(V)},null,8,["loading","onClick"])])])]),e(n)?(s(),l("div",ra,[c(j,{name:e(R).icon,class:Y(["size-3.5 mt-0.5 shrink-0",e(R).color])},null,8,["name","class"]),t("div",null,[t("span",{class:Y(e(R).color)},o(e(R).text),3),e(R).detail?(s(),l("span",ia,"— "+o(e(R).detail),1)):m("",!0)])])):m("",!0),e(C)&&!e(d)?(s(),l("div",ca,[c(j,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-gray-400"})])):e(d)?(s(),S(M,{key:2,changes:e(d)},null,8,["changes"])):e(n)&&!e(C)&&!e(d)?(s(),l("p",ua," No changes found in this range. ")):m("",!0)]),c(O,{open:e(E),"onUpdate:open":h[3]||(h[3]=A=>J(E)?E.value=A:null),"cluster-id":e(U),"initial-selected":e(b),"auto-selected-shas":e(f),onConfirm:h[4]||(h[4]=A=>b.value=A)},null,8,["open","cluster-id","initial-selected","auto-selected-shas"])],64)}}}),ma=Object.assign(da,{__name:"ClusterInvestigation"}),fa={class:"flex flex-col h-[60vh]"},pa={class:"flex items-center gap-3 px-4 py-2.5 border-b border-default text-sm shrink-0"},ga={key:0,class:"ml-auto text-xs text-gray-500"},xa={class:"flex-1 overflow-y-auto"},va={class:"w-full text-sm"},_a=["onClick"],ha={class:"px-4 py-2.5"},ya=["checked","onChange"],ka={class:"px-2 py-2.5 min-w-0"},ba={class:"truncate font-medium text-gray-800 dark:text-gray-200 max-w-[24rem]"},$a={class:"px-2 py-2.5 text-gray-500 text-xs max-w-[16rem] hidden sm:table-cell"},Ca={class:"px-2 py-2.5 text-right text-gray-500 text-xs"},wa={key:0},Sa={class:"shrink-0 border-t border-default px-4 py-3 space-y-1.5"},Ta={key:0,class:"shrink-0 px-4 pb-3 flex items-center gap-1.5 text-xs text-red-500"},ja={class:"flex items-center gap-3 w-full"},Ia=ee({__name:"ClusterExtractCasesModal",props:{open:{type:Boolean},clusterId:{},affectedTestCases:{},projectKey:{},projectName:{}},emits:["update:open","extracted"],setup(a,{emit:U}){const u=a,b=U,f=Ke(),g=x(new Set),n=x(""),d=x(!1),C=x(null);function V(){g.value=new Set(u.affectedTestCases.map(I=>I.testCaseId))}function E(){g.value=new Set}function R(I){const v=new Set(g.value);v.has(I)?v.delete(I):v.add(I),g.value=v}ne(()=>u.open,I=>{I&&(E(),n.value="",C.value=null)});const T=P(()=>g.value.size);async function h(){if(T.value!==0){d.value=!0,C.value=null;try{await $fetch(`/api/failure-clusters/${u.clusterId}/extract-cases`,{method:"POST",body:{testCaseIds:[...g.value],triageNote:n.value.trim()||void 0}}),f.add({title:`Extracted ${T.value} test ${T.value===1?"case":"cases"}`,color:"success"}),b("extracted"),b("update:open",!1)}catch(I){C.value=de(I)}finally{d.value=!1}}}return(I,v)=>{const j=ye,G=xe,D=$e,M=te,O=ie,A=Te;return s(),S(A,{open:a.open,title:"Extract test cases",ui:{content:"max-w-4xl",body:"p-0 flex flex-col overflow-hidden"},"onUpdate:open":v[4]||(v[4]=F=>b("update:open",F))},{body:p(()=>[t("div",fa,[t("div",pa,[t("button",{class:"text-xs font-medium text-primary hover:underline",onClick:V},"Select all"),v[5]||(v[5]=t("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),t("button",{class:"text-xs font-medium text-primary hover:underline",onClick:E},"Deselect all"),e(T)>0?(s(),l("span",ga,o(e(T))+" selected ",1)):m("",!0)]),t("div",xa,[t("table",va,[v[8]||(v[8]=t("thead",{class:"sticky top-0 bg-gray-50 dark:bg-gray-800 border-b border-default"},[t("tr",null,[t("th",{class:"w-10 px-4 py-2.5"}),t("th",{class:"text-left px-2 py-2.5 font-medium text-gray-500 text-xs uppercase tracking-wide"},"Test"),t("th",{class:"text-left px-2 py-2.5 font-medium text-gray-500 text-xs uppercase tracking-wide hidden sm:table-cell"}," File "),t("th",{class:"text-right px-2 py-2.5 font-medium text-gray-500 text-xs uppercase tracking-wide w-20"}," Occurrences ")])],-1)),t("tbody",null,[(s(!0),l(L,null,Q(a.affectedTestCases,F=>(s(),l("tr",{key:F.testCaseId,class:"border-b border-default/50 hover:bg-elevated transition-colors cursor-pointer",onClick:z=>R(F.testCaseId)},[t("td",ha,[t("input",{type:"checkbox",checked:e(g).has(F.testCaseId),class:"shrink-0 cursor-pointer accent-primary",onClick:v[0]||(v[0]=fe(()=>{},["stop"])),onChange:z=>R(F.testCaseId)},null,40,ya)]),t("td",ka,[t("p",ba,o(F.title),1),c(j,{to:`/test-cases/${F.testCaseId}`,class:"text-[10px] text-primary hover:underline mt-0.5 inline-block",onClick:v[1]||(v[1]=fe(()=>{},["stop"]))},{default:p(()=>[...v[6]||(v[6]=[w(" View details ",-1)])]),_:1},8,["to"])]),t("td",$a,[c(G,{"file-path":F.filePath,"project-key":a.projectKey,"project-name":a.projectName,class:"max-w-full"},null,8,["file-path","project-key","project-name"])]),t("td",Ca,o(F.runCount),1)],8,_a))),128)),a.affectedTestCases.length===0?(s(),l("tr",wa,[...v[7]||(v[7]=[t("td",{colspan:"4",class:"px-4 py-8 text-center text-gray-400 text-sm"},"No test cases in this cluster.",-1)])])):m("",!0)])])]),t("div",Sa,[v[9]||(v[9]=t("label",{class:"text-xs font-medium text-gray-500 uppercase tracking-wide"},"Triage note (optional)",-1)),c(D,{modelValue:e(n),"onUpdate:modelValue":v[2]||(v[2]=F=>J(n)?n.value=F:null),placeholder:"Add a note explaining why these tests were extracted…",rows:2,class:"text-sm w-full"},null,8,["modelValue"])]),e(C)?(s(),l("p",Ta,[c(M,{name:"i-lucide-circle-alert",class:"size-3.5 shrink-0"}),w(" "+o(e(C)),1)])):m("",!0)])]),footer:p(()=>[t("div",ja,[v[11]||(v[11]=t("div",{class:"flex-1"},null,-1)),c(O,{color:"neutral",variant:"ghost",disabled:e(d),onClick:v[3]||(v[3]=F=>b("update:open",!1))},{default:p(()=>[...v[10]||(v[10]=[w(" Cancel ",-1)])]),_:1},8,["disabled"]),c(O,{color:"warning",disabled:e(T)===0,loading:e(d),onClick:h},{default:p(()=>[w(" Extract"+o(e(T)>0?` ${e(T)}`:""),1)]),_:1},8,["disabled","loading"])])]),_:1},8,["open"])}}}),Ua=Object.assign(Ia,{__name:"ClusterExtractCasesModal"}),za={key:0,class:"flex flex-col h-full min-h-0 max-xl:overflow-y-auto xl:overflow-hidden"},Ra={class:"border-b border-default shrink-0"},Ea={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4 p-1 xl:flex-1 xl:min-h-0 xl:overflow-hidden"},Aa={class:"space-y-4 xl:overflow-y-auto"},Va={class:"font-mono text-xs"},Ma=["innerHTML"],Na={class:"inline-flex items-center gap-1.5"},Fa={class:"xl:overflow-y-auto"},Ba={key:1,class:"flex items-center justify-center h-64 text-gray-500"},ko=ee({__name:"[id]",async setup(a){let U,u;const b=We(),f=parseInt(String(b.params.id)),g=Tt(f),{data:n,refresh:d}=([U,u]=Je(()=>Ut(`/api/failure-clusters/${f}`,"$y4C0kntcH9")),U=await U,u(),U);Ze(P(()=>({title:`${n.value?.signature??"Failure cluster"} — Piwi Dashboard`})));const C=x(n.value?.status??"open"),V=x(n.value?.triageNote??""),E=x(!1);ne(()=>n.value?.status,k=>{k&&(C.value=k)}),ne(()=>n.value?.triageNote,k=>{V.value=k??""});const R=P(()=>C.value!==(n.value?.status??"open")||V.value.trim()!==(n.value?.triageNote??""));async function T(){E.value=!0;try{await $fetch(`/api/failure-clusters/${f}/status`,{method:"PATCH",body:{status:C.value,triageNote:V.value.trim()||null}}),d()}finally{E.value=!1}}const h=x(!1);function I(){h.value=!1,d()}const{copyRich:v,copied:j}=rt();function G(){const k=n.value;if(!k)return;const N=window.location.href,q=se=>se.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),K=[k.errorType,`${k.occurrences} occurrence${k.occurrences===1?"":"s"}`,`${k.affectedTests} test${k.affectedTests===1?"":"s"} affected`,k.status!=="open"?k.status:null].filter(Boolean).join(" · "),W=k.diagnosis?.status==="completed"&&k.diagnosis.summary?`AI diagnosis (${k.diagnosis.category??"unknown"}, ${k.diagnosis.confidence??"?"} confidence): ${k.diagnosis.summary}`:null,Z=[`❌ Failure cluster: ${k.signature}`,K,"",...k.sampleError?["Sample error:",ve(k.sampleError),""]:[],...W?[W,""]:[],`Cluster: ${N}`].join(`
|
|
3
3
|
`),ae=[`<p><strong>❌ Failure cluster</strong>: <code>${q(k.signature)}</code></p>`,`<p><em>${q(K)}</em></p>`,k.sampleError?`<p><strong>Sample error:</strong></p><pre>${he(k.sampleError)}</pre>`:"",W?`<p><strong>AI diagnosis</strong> (${q(k.diagnosis?.category??"unknown")}, ${q(k.diagnosis?.confidence??"?")} confidence):<br>${q(k.diagnosis.summary)}</p>`:"",`<p>🔗 <a href="${N}">View failure cluster</a></p>`].join("");v(Z,ae,{toast:"Failure cluster copied"})}const D=P(()=>{const k=n.value?.sampleError;return k?ve(k).split(`
|
|
4
4
|
`).find(N=>N.trim())??"":""}),{scmStatus:M}=je(g.coverage),O=P(()=>It((n.value?.affectedTestCases??[]).map(k=>({filePath:k.filePath,title:k.title,line:null,projectName:null})))),{copy:A,copied:F}=zt(),z=x(null),r=x(null),$=x(null),B=x(null),H=x(null),X=x(null),y={sampleError:()=>z.value,executionError:()=>z.value,environmentDiff:()=>B.value,visualDiff:()=>H.value,domSnapshot:()=>X.value,scmInvestigation:()=>$.value,selectedCommits:()=>$.value,topSuspectedCommit:()=>$.value,failingAction:()=>$.value,affectedTests:()=>r.value,testSource:()=>r.value,sourceFiles:()=>r.value,steps:()=>r.value,failingSteps:()=>r.value,console:()=>r.value,networkRequests:()=>r.value,serverTraces:()=>r.value,ariaSnapshot:()=>r.value,screenshots:()=>r.value,tracePointers:()=>r.value,artifacts:()=>r.value};Qe(it,{canLocate:k=>k in y,open:k=>y[k]?.()?.reveal()});const i=P(()=>[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...n.value?.project?[{label:n.value.project.label||n.value.project.name||"Project",to:`/projects/${n.value.project.id}?tab=failure-clusters`}]:[{label:"Project"}],{label:`Failure cluster #${f}`}]);return(k,N)=>{const q=Be,K=Le,W=ie,Z=be,ae=Ye,se=Jt,oe=vt,_=_t,le=ht,Ie=yt,Ue=kt,ze=xe,Re=ue,Ee=xs,Ae=te,Ve=ma,Me=jt,Ne=Xe,Fe=Ua;return s(),l(L,null,[c(Ne,{id:"failure-cluster-detail"},{header:p(()=>[c(ae,null,{leading:p(()=>[c(q),c(K,{items:e(i)},null,8,["items"])]),right:p(()=>[e(n)?(s(),S(Z,{key:0,text:e(j)?"Copied!":"Copy failure cluster"},{default:p(()=>[c(W,{size:"sm",variant:"ghost",color:"neutral",icon:e(j)?"i-lucide-check":"i-lucide-clipboard",onClick:G},null,8,["icon"])]),_:1},8,["text"])):m("",!0)]),_:1})]),body:p(()=>[e(n)?(s(),l("div",za,[t("div",Ra,[c(se,{cluster:e(n),"triage-status":e(C),"triage-note":e(V),"triage-saving":e(E),"triage-changed":e(R),"onUpdate:triageStatus":N[0]||(N[0]=re=>C.value=re),"onUpdate:triageNote":N[1]||(N[1]=re=>V.value=re),onSaveTriage:T},null,8,["cluster","triage-status","triage-note","triage-saving","triage-changed"])]),t("div",Ea,[t("div",Aa,[e(n).sampleError?(s(),S(oe,{key:0,ref_key:"errorSection",ref:z,"storage-key":"cluster-error",icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error message"},{folded:p(()=>[t("span",Va,o(e(D)),1)]),default:p(()=>[t("div",{class:"text-xs font-mono overflow-x-auto whitespace-pre-wrap",innerHTML:e(he)(e(n).sampleError)},null,8,Ma)]),_:1},512)):m("",!0),e(n).affectedTestCases?.length&&e(n).affectedTestCases[0]?.recentTestRunsCaseId?(s(),S(_,{key:1,ref:"locatorSection","storage-key":"cluster-locators","run-id":e(n).lastSeenRunId,"test-runs-case-id":e(n).affectedTestCases[0].recentTestRunsCaseId,"affected-count":e(n).affectedTestCases.length},null,8,["run-id","test-runs-case-id","affected-count"])):m("",!0),e(n).affectedTestCases?.length&&e(n).affectedTestCases[0]?.recentTestRunsCaseId?(s(),S(le,{key:2,ref_key:"envDiffSection",ref:B,"storage-key":"cluster-env-diff","run-id":e(n).lastSeenRunId,"test-runs-case-id":e(n).affectedTestCases[0].recentTestRunsCaseId},null,8,["run-id","test-runs-case-id"])):m("",!0),e(n).affectedTestCases?.length&&e(n).affectedTestCases[0]?.recentTestRunsCaseId?(s(),S(Ie,{key:3,ref_key:"visualDiffSection",ref:H,"storage-key":"cluster-visual-diff","run-id":e(n).lastSeenRunId,"test-runs-case-id":e(n).affectedTestCases[0].recentTestRunsCaseId},null,8,["run-id","test-runs-case-id"])):m("",!0),e(n).affectedTestCases?.length&&e(n).affectedTestCases[0]?.recentTestRunsCaseId?(s(),S(Ue,{key:4,ref_key:"domSnapshotSection",ref:X,"storage-key":"cluster-dom-snapshot","run-id":e(n).lastSeenRunId,"test-runs-case-id":e(n).affectedTestCases[0].recentTestRunsCaseId},null,8,["run-id","test-runs-case-id"])):m("",!0),e(n).affectedTestCases?.length?(s(),S(oe,{key:5,ref_key:"evidenceSection",ref:r,"storage-key":"cluster-evidence",icon:"i-lucide-flask-conical",title:"Test evidence",help:"cluster.evidence"},{folded:p(()=>[w(o(e(n).affectedTests)+" "+o(e(n).affectedTests===1?"test":"tests")+" · "+o(e(n).occurrences)+" occurrence"+o(e(n).occurrences===1?"":"s")+" · ",1),e(n).affectedTestCases[0]?.filePath?(s(),S(ze,{key:0,"file-path":e(n).affectedTestCases[0].filePath,"project-key":e(n).project?.id,"project-name":e(n).project?.name,class:"text-xs"},null,8,["file-path","project-key","project-name"])):m("",!0)]),actions:p(()=>[c(Re,{color:"neutral",variant:"subtle",size:"sm"},{default:p(()=>[w(o(e(n).affectedTestCases.length)+" "+o(e(n).affectedTestCases.length===1?"test":"tests"),1)]),_:1}),c(W,{size:"xs",variant:"outline",color:"neutral",icon:e(F)?"i-lucide-check":"i-lucide-play",title:e(F)?"Copied!":("copyPreview"in k?k.copyPreview:e(ut))(e(O)),onClick:N[2]||(N[2]=re=>e(A)(e(O),{toast:"Retry command copied"}))},{default:p(()=>[...N[5]||(N[5]=[w(" Copy retry command ",-1)])]),_:1},8,["icon","title"]),c(Z,{text:"Unlink incorrectly clustered test cases from this group"},{default:p(()=>[c(W,{size:"xs",color:"warning",variant:"outline",icon:"i-lucide-arrow-up-from-line",onClick:N[3]||(N[3]=re=>h.value=!0)},{default:p(()=>[...N[6]||(N[6]=[w(" Extract ",-1)])]),_:1})]),_:1})]),default:p(()=>[c(Ee,{"affected-test-cases":e(n).affectedTestCases,"project-key":e(n).project?.id,"project-name":e(n).project?.name},null,8,["affected-test-cases","project-key","project-name"])]),_:1},512)):m("",!0),c(oe,{ref_key:"scmSection",ref:$,"storage-key":"cluster-scm",icon:"i-lucide-git-compare-arrows",title:"What changed",help:"cluster.scm"},{folded:p(()=>[t("span",Na,[c(Ae,{name:e(M).icon,class:Y(["size-3.5 shrink-0",e(M).color])},null,8,["name","class"]),t("span",{class:Y(e(M).color)},o(e(M).text),3)])]),default:p(()=>[c(Ve)]),_:1},512)]),t("div",Fa,[c(Me,{"cluster-id":e(f),"last-seen-run-id":e(n)?.lastSeenRunId,"affected-test-cases":e(n)?.affectedTestCases??[]},null,8,["cluster-id","last-seen-run-id","affected-test-cases"])])])])):(s(),l("div",Ba,"Cluster not found."))]),_:1}),e(n)?(s(),S(Fe,{key:0,open:e(h),"cluster-id":e(f),"affected-test-cases":e(n).affectedTestCases??[],"project-key":e(n).project?.id,"project-name":e(n).project?.name,"onUpdate:open":N[4]||(N[4]=re=>h.value=re),onExtracted:I},null,8,["open","cluster-id","affected-test-cases","project-key","project-name"])):m("",!0)],64)}}});export{ko as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as u,o as f,c as m,t as g,O as d}from"./
|
|
1
|
+
import{d as u,o as f,c as m,t as g,O as d}from"./BrT_Sys2.js";const p=u({__name:"TagBadge",props:{text:{},color:{},variant:{}},setup(t){function s(n,o){const e=parseInt(n.slice(1,3),16),c=parseInt(n.slice(3,5),16),a=parseInt(n.slice(5,7),16);return`rgba(${e},${c},${a},${o})`}function l(n){const o=i=>{const r=i/255;return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)},e=o(parseInt(n.slice(1,3),16)),c=o(parseInt(n.slice(3,5),16)),a=o(parseInt(n.slice(5,7),16));return .2126*e+.7152*c+.0722*a>.179?"#1a1a1a":"#ffffff"}return(n,o)=>(f(),m("span",{class:"inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",style:d(t.variant==="outline"?{border:`1px solid ${t.color}`,color:t.color,backgroundColor:s(t.color,.08)}:{backgroundColor:t.color,color:l(t.color)})},g(t.text),5))}}),I=Object.assign(p,{__name:"TagBadge"});export{I as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cc as z,I as m,cd as E,ce as L,h as d,a9 as o,cf as i,cg as q}from"./
|
|
1
|
+
import{cc as z,I as m,cd as E,ce as L,h as d,a9 as o,cf as i,cg as q}from"./BrT_Sys2.js";function A(t){const s=[o(t.method)?.toUpperCase()||"GET",o(t.baseURL)];for(const e of[t.query||t.params]){const a=o(e);if(!a)continue;const n={};for(const[f,c]of Object.entries(a))n[o(f)]=o(c);s.push(n)}if(t.body){const e=o(t.body);if(!e)s.push(i(e));else if(e instanceof ArrayBuffer)s.push(i(Object.fromEntries([...new Uint8Array(e).entries()].map(([a,n])=>[a,n.toString()]))));else if(e instanceof FormData){const a=[];for(const n of e.entries()){const[f,c]=n;a.push([f,c instanceof File?`${c.name}:${c.size}:${c.lastModified}`:c])}s.push(i(a))}else if(q(e))s.push(i(m(e)));else try{s.push(i(e))}catch{console.warn("[useFetch] Failed to hash body",e)}}return s}const _=z({name:"createUseFetch",factory(t={}){function s(e,a,n){const[f={},c]=typeof a=="string"?[{},a]:[a,n],y=typeof t=="function"?t(f):t,{server:F,lazy:b,default:v,transform:g,pick:w,watch:h,immediate:O,getCachedData:$,deep:D,dedupe:U,timeout:k,...r}={...typeof t=="function"?{}:y,...f,...typeof t=="function"?y:{}},u=d(()=>o(e)),j=d(()=>o(r.key)||"$f"+i([c,typeof u.value=="string"?u.value:"",...A(r)]));if(!r.baseURL&&typeof u.value=="string"&&u.value[0]==="/"&&u.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const l=m({...E,...r,cache:typeof r.cache=="boolean"?void 0:r.cache}),p={server:F,lazy:b,default:v,transform:g,pick:w,immediate:O,getCachedData:$,deep:D,dedupe:U,timeout:k,watch:h===!1?[]:[...h||[],l]};return h===!1&&(p._keyTriggersExecute=!1),L(j,(S,{signal:x})=>(r.$fetch||globalThis.$fetch)(u.value,{signal:x,...l}),p)}return s}}),K=_.__nuxt_factory();_.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});export{K as u};
|