@preventive/triage 1.0.0-alpha.50 → 1.0.0-alpha.51

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.
Files changed (51) hide show
  1. package/common/managed/finding-detail.d.ts +2 -1
  2. package/common/managed/finding-detail.js +43 -9
  3. package/common/managed/npm-packages.d.ts +2 -0
  4. package/common/managed/npm-packages.js +18 -1
  5. package/common/managed/routes.js +19 -7
  6. package/common/managed/team-app.d.ts +1 -0
  7. package/common/managed/team-app.js +17 -1
  8. package/out/activity.js +4 -4
  9. package/out/{chunk-75YLHBCM.js → chunk-2K6UN3PC.js} +1 -1
  10. package/out/{chunk-2WDZPXVL.js → chunk-7JBSSRD7.js} +1 -1
  11. package/out/{chunk-4XMP7YVH.js → chunk-FMXWXDR4.js} +1 -1
  12. package/out/chunk-HT2SSA3V.js +1 -0
  13. package/out/chunk-IPAH4LKF.js +232 -0
  14. package/out/{chunk-FKBXNUW4.js → chunk-KOGNQDSJ.js} +1 -1
  15. package/out/{chunk-UK7RGJT6.js → chunk-VDRXHIHN.js} +2 -2
  16. package/out/{chunk-HTBYHSPG.js → chunk-WRAJVD35.js} +1 -1
  17. package/out/client-managed-import.js +1 -1
  18. package/out/client-managed.js +25 -25
  19. package/out/compare.js +14 -14
  20. package/out/dialogs.js +41 -41
  21. package/out/graph.js +1 -1
  22. package/out/index.html +6 -6
  23. package/out/scan.js +2 -2
  24. package/out/view.css +1 -1
  25. package/out/view.js +7 -7
  26. package/package.json +3 -1
  27. package/server-managed/agent-merges.ts +1 -1
  28. package/server-managed/app-agents.ts +4 -2
  29. package/server-managed/commit-lockfiles.ts +7 -4
  30. package/server-managed/comparison.ts +13 -2
  31. package/server-managed/db-neon.ts +13 -3
  32. package/server-managed/db.ts +2 -1
  33. package/server-managed/dependency-review-comments.ts +16 -18
  34. package/server-managed/dependency-reviews.ts +45 -27
  35. package/server-managed/github-app.ts +3 -42
  36. package/server-managed/github-requests.ts +97 -0
  37. package/server-managed/http.ts +249 -75
  38. package/server-managed/listed-activity.ts +39 -0
  39. package/server-managed/locked-packages.ts +28 -5
  40. package/server-managed/npm-kept.ts +14 -4
  41. package/server-managed/npm-patch.ts +325 -0
  42. package/server-managed/pull-dependencies.ts +9 -6
  43. package/server-managed/pull-dependency-reviews.ts +19 -13
  44. package/server-managed/repository-agents.ts +162 -69
  45. package/server-managed/repository-dependency-reviews.ts +6 -5
  46. package/server-managed/repository-pulls.ts +114 -58
  47. package/server-managed/repository-pulse.ts +1 -1
  48. package/server-managed/reviewed-dependencies.ts +4 -5
  49. package/server-managed/team-reports.ts +19 -7
  50. package/out/chunk-6S2U2UYG.js +0 -232
  51. package/out/chunk-FC65TPUB.js +0 -1
@@ -1,232 +0,0 @@
1
- import{b as e}from"./chunk-JCIIBLKR.js";import{a as t,b as n,c as r,m as i}from"./chunk-VH4XMZIW.js";import{a,b as o,c as s,e as c,f as l,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,q as b,r as ee,s as te,t as ne,u as re}from"./chunk-FKBXNUW4.js";import{$ as ie,A as ae,Aa as oe,B as se,Ba as ce,C as le,Ca as ue,Da as de,Ea as fe,Fa as pe,G as me,Ga as he,H as ge,Ha as _e,I as ve,Ia as ye,J as be,Ja as xe,K as Se,Ka as Ce,La as we,M as Te,Ma as Ee,Na as De,O as Oe,Oa as ke,P as Ae,Pa as je,Q as Me,Qa as Ne,R as Pe,S as Fe,Ta as Ie,U as Le,Ua as Re,V as ze,W as Be,X as Ve,Z as He,_ as Ue,a as We,aa as Ge,b as Ke,ba as qe,ca as Je,d as Ye,da as Xe,e as Ze,ea as Qe,f as $e,fa as et,g as tt,ga as nt,h as rt,ha as it,i as at,ia as ot,j as st,ja as ct,k as x,ka as lt,l as ut,la as dt,m as ft,ma as pt,na as mt,o as ht,oa as gt,p as _t,pa as vt,q as yt,qa as bt,r as xt,ra as St,sa as Ct,ta as wt,ua as Tt,va as Et,wa as Dt,xa as Ot,ya as kt,z as At,za as jt}from"./chunk-6LNQTKAV.js";import{a as Mt,b as Nt,c as Pt,e as Ft,f as It,g as Lt,h as Rt,i as zt,j as Bt,l as Vt,m as Ht,n as Ut,o as Wt,p as Gt,q as Kt,r as qt,s as Jt,t as Yt,u as Xt,v as Zt,w as Qt,x as $t}from"./chunk-7VAWINQF.js";import{a as en,b as tn,c as nn,d as rn,e as an,f as on,g as sn,h as cn,j as ln,k as un,l as dn,m as fn,p as pn,w as mn}from"./chunk-7BKKYVWR.js";import{a as hn,b as gn,c as _n,d as vn,e as yn,f as S,g as bn,h as xn,i as Sn}from"./chunk-7C7DWL7I.js";import{a as Cn,b as wn,c as Tn,d as En}from"./chunk-PNHBZGDD.js";import{A as Dn,B as On,C as kn,D as An,E as jn,F as Mn,G as Nn,H as Pn,I as Fn,J as In,L as Ln,M as Rn,N as zn,O as Bn,P as Vn,Q as Hn,R as Un,S as Wn,T as Gn,U as Kn,V as qn,W as Jn,X as Yn,Y as Xn,Z as Zn,_ as Qn,a as C,aa as $n,b as er,ba as tr,c as nr,ca as rr,d as w,da as ir,e as ar,ea as or,f as T,fa as sr,g as cr,ha as lr,ia as ur,ja as dr,k as fr,ka as pr,l as mr,la as hr,m as gr,ma as _r,n as vr,na as yr,o as br,p as xr,pa as Sr,q as Cr,qa as wr,r as Tr,ra as Er,s as Dr,sa as Or,t as kr,ta as Ar,ua as jr,v as Mr,va as Nr,w as Pr,x as Fr,xa as Ir,y as Lr,z as Rr}from"./chunk-4XMP7YVH.js";import{b as zr,c as Br,d as Vr,e as Hr,f as Ur,g as Wr}from"./chunk-75YLHBCM.js";import{a as Gr,b as Kr,e as qr}from"./chunk-WCPJDAYA.js";import{a as Jr,b as Yr,d as Xr,e as Zr}from"./chunk-IYPY47MC.js";import{a as E,b as Qr,d as D}from"./chunk-PWFUOLZK.js";import{a as $r,c as ei,d as ti,e as ni,g as ri,h as ii,i as ai,j as oi,k as si,l as ci,m as li,n as ui,o as di,p as fi,q as pi,r as mi}from"./chunk-FC65TPUB.js";import{A as hi,B as gi,C as _i,D as vi,E as yi,G as bi,H as xi,J as Si,K as Ci,L as wi,M as Ti,N as Ei,O as Di,a as Oi,f as ki,h as Ai,i as ji,j as Mi,k as Ni,l as Pi,m as O,n as Fi,o as Ii,p as Li,q as Ri,r as zi,t as Bi,u as Vi,v as Hi,w as Ui,x as Wi,y as Gi,z as Ki}from"./chunk-SXV2T5C4.js";import{A as qi,d as k,e as Ji,f as Yi,g as Xi,i as Zi,j as Qi,k as $i,o as ea,p as ta,q as na,r as ra,s as ia,t as aa,w as oa,y as sa,z as ca}from"./chunk-WFYLMF6Z.js";import{a as la,b as ua,c as da}from"./chunk-C4Z6ZBXV.js";import{a as fa,b as pa,c as A,d as j,f as ma,g as M,i as N,j as ha}from"./chunk-2XUEZHIP.js";import{a as ga,b as _a,c as va}from"./chunk-TUII34K2.js";var ya=new Uint8Array([68,86,69,49]),ba=12,xa=32,Sa=`deepview-passkey.v1.content-key`;function Ca(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function wa(){if(typeof PublicKeyCredential>`u`)return!1;let e=PublicKeyCredential.getClientCapabilities;if(typeof e!=`function`)return null;try{let t=await e.call(PublicKeyCredential);if(!t||typeof t!=`object`)return null;let n=t[`extension:prf`],r=t.prf;return n===!0||r===!0?!0:n===!1||r===!1?!1:null}catch{return null}}function Ta(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function Ea(e){if(e.length<32)throw Error(`PRF output too short (${e.length} bytes; need \u2265 32)`);let t=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),n=await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:new Uint8Array,info:ga(Sa)},t,xa*8);return new Uint8Array(n)}function Da(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Oa(e,t,n){let r=Ta(ba),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(ya.length+ba+i.length);return a.set(ya,0),a.set(r,ya.length),a.set(i,ya.length+ba),a}async function ka(e,t,n){if(!Aa(t))throw Error(`passkey: missing envelope magic`);if(t.length<ya.length+ba+16)throw Error(`passkey: envelope too short`);let r=t.subarray(ya.length,ya.length+ba),i=t.subarray(ya.length+ba);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Aa(e){if(e.length<ya.length)return!1;for(let t=0;t<ya.length;t++)if(e[t]!==ya[t])return!1;return!0}async function ja(e){if(!Ca())throw Error(`passkey: not supported in this environment`);let t=Ta(32),n=Ta(32),r=await navigator.credentials.create({publicKey:{challenge:t,rp:{name:e.rpName,id:e.rpId},user:{id:e.userId,name:e.userName,displayName:e.userName},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}],authenticatorSelection:{residentKey:`required`,userVerification:`required`},extensions:{prf:{eval:{first:n}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(r instanceof PublicKeyCredential))throw Error(`passkey: registration returned no credential`);let i=new Uint8Array(r.rawId).toBase64({alphabet:`base64url`,omitPadding:!0}),a=r.getClientExtensionResults().prf,o=a?.results?.first?new Uint8Array(a.results.first):null;return{credentialId:i,prfSalt:n.toBase64({alphabet:`base64url`,omitPadding:!0}),prfOutput:o}}async function Ma(e){if(!Ca())throw Error(`passkey: not supported in this environment`);let t=Ta(32),n=Uint8Array.fromBase64(e.credentialId,{alphabet:`base64url`}),r=Uint8Array.fromBase64(e.prfSalt,{alphabet:`base64url`}),i=await navigator.credentials.get({publicKey:{challenge:t,rpId:e.rpId,allowCredentials:[{type:`public-key`,id:n}],userVerification:`required`,extensions:{prf:{eval:{first:r}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(i instanceof PublicKeyCredential))throw Error(`passkey: assertion returned no credential`);let a=i.getClientExtensionResults().prf?.results?.first;if(!a)throw Error(`passkey: authenticator did not return PRF output (extension unsupported)`);return new Uint8Array(a)}var Na=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Pa=new Map,Fa=!1,Ia=new Map,La=new Map,Ra=new Set;function za(e){let t=()=>e();return Ra.add(t),Fa&&queueMicrotask(()=>{if(Ra.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ra.delete(t)}function Ba(){for(let e of Ra)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function Va(e){let t=wo()??``;return ga(`deepview.secure.v1|${t}|${e}`)}function Ha(e){try{let t=Uint8Array.fromBase64(e);if(Aa(t))return t}catch{}return null}function Ua(e){return Pa.get(e)??null}async function Wa(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(xo()&&!Eo())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(ho())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Pa.has(e),r=Pa.get(e);Pa.set(e,t),La.set(e,t);let i=Ia.get(e)??Promise.resolve(),a=()=>{La.get(e)===t&&La.delete(e)},o=i.catch(()=>{}).then(()=>Ka(e,t)).then(()=>a(),i=>{throw a(),Pa.get(e)===t&&(n?Pa.set(e,r):Pa.delete(e)),i});Ia.set(e,o.catch(()=>{})),await o}async function Ga(e){let t=Symbol(`secure-storage:removed`);Pa.delete(e),La.set(e,t);let n=Ia.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}La.get(e)===t&&(La.delete(e),Pa.delete(e))},i=n.catch(()=>{}).then(()=>r());Ia.set(e,i.catch(()=>{})),await i}async function Ka(e,t){let n=Eo();if(n){let r=await Oa(n,ga(t),Va(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function qa(){Fa||jo(()=>{qa().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),Fa=!0;for(let e of[...Pa.keys()])La.has(e)||Pa.delete(e);await Ya(Na,!0)}async function Ja(e){if(!Na.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return La.has(e)||Pa.delete(e),(await Ya([e],!1)).get(e)??null}async function Ya(e,t){let n=Eo(),r=[],i=new Map;for(let t of e){if(La.has(t)){i.set(t,Ua(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Ha(e);if(a){if(!n)continue;try{let e=await ka(n,a,Va(t));if(La.has(t)){i.set(t,Ua(t));continue}let r=va(e);Pa.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Pa.set(t,e),i.set(t,e),n&&xo()&&r.push([t,e])}return t&&Ba(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Pa.get(e)===t&&Wa(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function Xa(e,t){let n=(Ia.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(La.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(La.has(e)||(localStorage.setItem(e,r.storageValue),Pa.set(e,r.cacheValue)))});Ia.set(e,n.catch(()=>{})),await n}async function Za({seal:e}){for(let e of Na)await Xa(e,async t=>{if(Ha(t))return null;let n=Eo();return n?{storageValue:(await Oa(n,ga(t),Va(e))).toBase64(),cacheValue:t}:null})}async function Qa({open:e}){for(let t of Na)await Xa(t,async n=>{let r=Ha(n);if(!r)return null;let i=await e(r,Va(t)),a=va(i);return{storageValue:a,cacheValue:a}})}var $a=`deepview.secure.v1.mutate:`;function eo(e,t){return Na.includes(e)?navigator.locks.request($a+e,async()=>{let n=Ia.get(e);n&&await n.catch(()=>{}),await qa();let r=Ua(e),i=await t(r);if(i!=null&&i!==r){if(typeof i!=`string`)throw TypeError(`secure-storage: mutate updater for "${e}" must return a string`);await Wa(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function to(){await Promise.allSettled([...Ia.values()]),La.clear(),Ia.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!Fa||!e.key||!Na.includes(e.key)||qa().catch(()=>{})});var no=`deepview.passkey.v1`,ro=`deepview.passkey.userId`,io=`deepview.passkey.cleanDisable`,ao=`deepview.passkey.v1.write`,oo=`deepview.triage.v1|`,so=`deepview.opfs.v1|`,co=`deepview.bundle.v1|`,P=null,lo=null,uo=null,fo=0;function po(){return fo>0}var mo=0;function ho(){return mo>0}function go(){try{let e=localStorage.getItem(no);if(!e)return null;let t=JSON.parse(e);return t&&typeof t==`object`&&t.enabled===!0&&typeof t.credentialId==`string`&&t.credentialId.length>0&&typeof t.prfSalt==`string`&&t.prfSalt.length>0&&typeof t.userId==`string`&&t.userId.length>0?t:null}catch{return null}}function _o(e){localStorage.setItem(no,JSON.stringify(e))}function vo(){localStorage.removeItem(no)}function yo(){try{let e=localStorage.getItem(ro);if(e){let t=Uint8Array.fromBase64(e,{alphabet:`base64url`});if(t.length===16)return t}}catch{}let e=new Uint8Array(16);crypto.getRandomValues(e);try{localStorage.setItem(ro,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function bo(){return typeof location>`u`?``:location.hostname}function xo(){return go()!==null}function So(){return P!==null}function Co(){return!(!Ca()||typeof navigator>`u`||!navigator.locks?.request||!bo())}function wo(){return lo}function To(){if(go()!==null)return!1;try{return localStorage.getItem(io)!==`1`&&localStorage.getItem(ro)!==null}catch{return!1}}function Eo(){return P}function Do(){return ga(oo+(lo??``))}function Oo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return ga(so+(lo??``)+`|`+e)}function ko(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return ga(co+(lo??``)+`|`+e)}var Ao=new Set;function jo(e){return Ao.add(e),()=>Ao.delete(e)}function Mo(){for(let e of Ao)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function No({signal:e}={}){let t=go();if(!t)return!1;let n;try{n=await Ma({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??bo(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Po(e):e}if(!n||n.length<32)throw Po();let r=await Ea(n);return n.fill(0),navigator.locks.request(ao,async()=>{let e=go();if(!e||e.credentialId!==t.credentialId)throw r.fill(0),Error(`passkey: vault state changed during unlock (another tab wiped or re-enabled it). Reload this page and try again.`);return P=await Da(r),r.fill(0),lo=e.userId,uo=e.credentialId,Mo(),!0})}function Po(e){let t=Error(`Your browser or authenticator doesn't support passkey-derived encryption keys (the WebAuthn PRF extension). Try Chrome 116+, Safari 18+, or Firefox 130+ on a device with a platform authenticator (TouchID / Windows Hello).`);return e&&(t.cause=e),t}function Fo({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!Ca())throw Error(`passkey: WebAuthn unavailable in this environment`);if(To()&&!i)throw Error(`passkey: a previous vault exists on this device with no metadata. Any data encrypted under the old passkey will be unreadable after a new setup. Call enableEncryption({acknowledgeOrphan: true}) to proceed, or wipeAllVaultData() to start clean first.`);let a=bo();return navigator.locks.request(ao,async()=>{if(xo())throw Error(`passkey: encryption is already enabled`);if(await wa()===!1)throw Po();let i=yo(),o=await ja({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Ma({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Lo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(ro)}catch{}throw e&&e.message?.includes(`PRF`)?Po(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Lo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(ro)}catch{}throw Po()}let c=await Ea(s);s.fill(0);let l=await Da(c);c.fill(0);let u=i.toBase64({alphabet:`base64url`,omitPadding:!0}),d={enabled:!0,credentialId:o.credentialId,prfSalt:o.prfSalt,userId:u,rpId:a,createdAt:Date.now()};P=l,lo=u,uo=o.credentialId,_o(d),typeof e==`function`&&await e({seal:(e,t)=>Oa(l,e,t)});try{localStorage.removeItem(io)}catch{}return Mo(),!0})}async function Io({migrate:e}){if(!xo())return{disabled:!1,signalAttempted:!1};if(!So())throw Error(`passkey: must unlock before disabling encryption`);fo+=1;try{return await navigator.locks.request(ao,async()=>{let t=go();if(!t)return{disabled:!1,signalAttempted:!1};let n=P;if(!n)return{disabled:!1,signalAttempted:!1};if(vo(),P=null,uo=null,typeof e==`function`){let r=(e,t)=>ka(n,e,t);try{await e({open:r})}catch(e){throw _o(t),P=n,uo=t.credentialId,Mo(),e}}lo=null;try{localStorage.setItem(io,`1`)}catch{}let r=await Lo(t).catch(()=>!1);return Mo(),{disabled:!0,signalAttempted:r}})}finally{--fo}}async function Lo({credentialId:e,rpId:t,userId:n}){if(typeof PublicKeyCredential>`u`||!t)return!1;let r=PublicKeyCredential,i=!1;if(typeof r.signalUnknownCredential==`function`){i=!0;try{await r.signalUnknownCredential({rpId:t,credentialId:e})}catch{}}if(typeof r.signalAllAcceptedCredentials==`function`&&n){i=!0;try{await r.signalAllAcceptedCredentials({rpId:t,userId:n,allAcceptedCredentialIds:[]})}catch{}}return i}async function Ro(e,t){try{return await e.removeEntry(t,{recursive:!0}),null}catch(e){return e?.name===`NotFoundError`?null:`${t}: ${e?.message??String(e)}`}}async function zo(e){let t=[];if(typeof navigator>`u`||!navigator.storage?.getDirectory)return t;let n;try{n=await navigator.storage.getDirectory()}catch(e){return t.push(`storage root: ${e?.message??String(e)}`),t}for(let r of e){let e=await Ro(n,r);e&&t.push(e)}return t}async function Bo({refuseIfEnabled:e=!1}={}){fo+=1,mo+=1;try{return await navigator.locks.request(ao,async()=>{if(e&&xo())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await to();let t=go();if(t)try{await Lo({credentialId:t.credentialId,rpId:t.rpId??bo(),userId:t.userId})}catch{}try{localStorage.removeItem(no)}catch{}try{localStorage.removeItem(ro)}catch{}try{localStorage.removeItem(io)}catch{}for(let e of[`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`,`deepview.triage`,`deepview.triage.pending`,`deepview.passkey.firstImportPrompted`,`deepview.viewMode`])try{localStorage.removeItem(e)}catch{}try{let e=[];for(let t=0;t<localStorage.length;t+=1){let n=localStorage.key(t);n&&n.startsWith(`deepview.report:`)&&e.push(n)}for(let t of e)try{localStorage.removeItem(t)}catch{}}catch{}P=null,lo=null,uo=null,Mo();let n=await zo([`deepview-reports`,`deepview-bundles`]);if(n.length>0)throw Error(`passkey: wipe partially succeeded \u2014 localStorage cleared but the following OPFS paths could not be removed: ${n.join(`; `)}. Open DevTools \u2192 Application \u2192 Storage \u2192 Origin Private File System to inspect, or use the browser's site-data clear tool to finish.`)})}finally{--fo,--mo}}function Vo(e){return P?Oa(P,e,Do()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Ho(e){return P?ka(P,e,Do()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function Uo(e,t){return P?Oa(P,e,Oo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Wo(e,t){return P?ka(P,e,Oo(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function Go(e,t){return P?Oa(P,e,ko(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Ko(e,t){return P?ka(P,e,ko(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==no)return;let t=go();(!t&&P||t&&P&&t.credentialId!==uo)&&(P=null,lo=null,uo=null),Mo()});var qo=new WeakMap,Jo=Symbol(`iteration key`);function Yo(e){qo.set(e,new Map)}function Xo(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Jo);let i=qo.get(t),a=i.get(n);a||(a=new Set,i.set(n,a)),a.has(e)||(a.add(e),e.cleaners.push(a))}function Zo({target:e,key:t,type:n}){let r=qo.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{Qo(i,r,t)}):Qo(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&Qo(i,r,Array.isArray(e)?`length`:Jo),i}function Qo(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function $o(e){e.cleaners&&e.cleaners.forEach(es,e),e.cleaners=[]}function es(e){e.delete(this)}var ts=[],ns=!1;function rs(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if(ts.indexOf(e)===-1){$o(e);try{return ts.push(e),Reflect.apply(t,n,r)}finally{ts.pop()}}}function is(e){let t=ts[ts.length-1];t&&(ss(t,e),Xo(t,e))}function as(e){Zo(e).forEach(os,e)}function os(e){ss(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function ss(e,t){if(e.debugger&&!ns)try{ns=!0,e.debugger(t)}finally{ns=!1}}function cs(){return ts.length>0}var ls=Symbol(`is reaction`);function us(e,t={}){let n=e[ls]?e:function t(){return rs(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ls]=!0,t.lazy||n(),n}function ds(e){e.unobserved||(e.unobserved=!0,$o(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var fs=new WeakMap,ps=new WeakMap,ms=Object.prototype.hasOwnProperty;function hs(e){let t=ps.get(e);return cs()&&typeof e==`object`&&e?t||js(e):t||e}function gs(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=hs(i[1]):i=hs(i)),{done:r,value:i}},e}var _s={has(e){let t=fs.get(this),n=Reflect.getPrototypeOf(this);return is({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=fs.get(this),n=Reflect.getPrototypeOf(this);return is({target:t,key:e,type:`get`}),hs(n.get.apply(t,arguments))},add(e){let t=fs.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||as({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=fs.get(this),r=Reflect.getPrototypeOf(this),i=r.has.call(n,e),a=r.get.call(n,e),o=r.set.apply(n,arguments);return i?t!==a&&as({target:n,key:e,value:t,oldValue:a,type:`set`}):as({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=fs.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.get?n.get.call(t,e):void 0,a=n.delete.apply(t,arguments);return r&&as({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=fs.get(this),t=Reflect.getPrototypeOf(this),n=e.size!==0,r=e instanceof Map?new Map(e):new Set(e),i=t.clear.apply(e,arguments);return n&&as({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=fs.get(this),r=Reflect.getPrototypeOf(this);return is({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(hs(t),...n),...t)},keys(){let e=fs.get(this),t=Reflect.getPrototypeOf(this);return is({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=fs.get(this),t=Reflect.getPrototypeOf(this);return is({target:e,type:`iterate`}),gs(t.values.apply(e,arguments),!1)},entries(){let e=fs.get(this),t=Reflect.getPrototypeOf(this);return is({target:e,type:`iterate`}),gs(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=fs.get(this),t=Reflect.getPrototypeOf(this);return is({target:e,type:`iterate`}),gs(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=fs.get(this),t=Reflect.getPrototypeOf(this);return is({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},vs={get(e,t,n){return e=ms.call(_s,t)?_s:e,Reflect.get(e,t,n)}},ys=typeof window==`object`?window:Function(`return this`)(),bs=new Map([[Map,vs],[Set,vs],[WeakMap,vs],[WeakSet,vs],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function xs({constructor:e}){return!(typeof e==`function`&&e.name in ys&&ys[e.name]===e)||bs.has(e)}function Ss(e){return bs.get(e.constructor)}var Cs=Object.prototype.hasOwnProperty,ws=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function Ts(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&ws.has(t))return r;is({target:e,key:t,receiver:n,type:`get`});let i=ps.get(r);if(cs()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return js(r)}return i||r}function Es(e,t){let n=Reflect.has(e,t);return is({target:e,key:t,type:`has`}),n}function Ds(e){return is({target:e,type:`iterate`}),Reflect.ownKeys(e)}function Os(e,t,n,r){typeof n==`object`&&n&&(n=fs.get(n)||n);let i=Cs.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==fs.get(r)||(i?n!==a&&as({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):as({target:e,key:t,value:n,receiver:r,type:`add`})),o}function ks(e,t){let n=Cs.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&as({target:e,key:t,oldValue:r,type:`delete`}),i}var As={get:Ts,has:Es,ownKeys:Ds,set:Os,deleteProperty:ks};function js(e={}){return fs.has(e)||!xs(e)?e:ps.get(e)||Ms(e)}function Ms(e){let t=Ss(e)||As,n=new Proxy(e,t);return ps.set(e,n),fs.set(n,e),Yo(e),n}var Ns=js;function Ps(e){let t=!0,n=us(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw ds(n),e}return()=>ds(n)}var Fs=`deepview.viewMode`,Is=`deepview.severityMode`,Ls=`deepview.repoUrls`,Rs=`deepview.focusSplit`,zs=`deepview.kanbanDetailFullscreen`,Bs=`deepview.bundleSourceWrap`,Vs=new Set([`corrected`,`original`]),Hs=50,Us=20,Ws=80;try{localStorage.removeItem(Fs)}catch{}function Gs(){try{let e=localStorage.getItem(Is);return e!==null&&Vs.has(e)?e:null}catch{return null}}function Ks(){try{let e=localStorage.getItem(zs);return e===`true`||e!==`false`&&null}catch{return null}}function qs(){try{let e=localStorage.getItem(Bs);return e===`true`||e!==`false`&&null}catch{return null}}function Js(e){if(!Number.isFinite(e))return Hs;let t=Math.round(e*10)/10;return Math.min(Math.max(t,Us),Ws)}function Ys(){try{let e=localStorage.getItem(Rs);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Js(t):null}catch{return null}}function Xs(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function Zs(){return Xs(Ua(Ls))}function Qs(e){return e?Zs()[e]??``:``}var $s=new Set;function ec(e){return $s.add(e),()=>{$s.delete(e)}}function tc(e){for(let t of $s)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function nc(e,t){if(I()||!e)return;let n=Zs();t?n[e]=t:delete n[e],Wa(Ls,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),eo(Ls,n=>{let r=Xs(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),tc(e)}async function rc(e,t){await eo(Ls,n=>{let r=Xs(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),fc()}async function ic(e){if(!e||typeof e!=`object`)return[];let t=[];if(await eo(Ls,n=>{let r=Xs(n);t=[];for(let[n,i]of Object.entries(e))!n||typeof i!=`string`||!i||r[n]||(r[n]=i,t.push(n));return t.length===0?n:JSON.stringify(r)}),t.length===0)return t;fc();for(let e of t)tc(e);return t}async function ac(e,t){return!e||!t?!1:(await ic({[e]:t})).length>0}var oc=dn(),sc=on(oc?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,F=Ns({reports:[],workspaceMerges:[],currentFile:null,currentWorkspace:null,currentManagedTeam:null,currentManagedReport:null,currentReportWorkspace:null,currentView:`findings`,currentLinks:null,bundles:[],storedFiles:[],selectedBundle:null,selectedBundleWorkspace:null,scanSelection:null,bundleCreationRepoId:null,bundleDetails:null,bundleDetailsTab:`overview`,teamDependenciesTab:`pulls`,teamDependenciesSort:`newest`,selectedPackage:null,selectedPackageVersion:null,packageDetailsTab:`overview`,packageSlideTriage:null,packageSlideTransient:!1,packagesSearchQuery:``,packagesSortBy:`findings-desc`,expandedPackages:new Set,selectedRepository:null,repositoryDetailsTab:`overview`,repositorySlideTriage:null,repositorySlideTransient:!1,repositoriesSearchQuery:``,repositoriesSortBy:`findings-desc`,bundleSourceFile:null,bundleSourceFindingIdx:null,bundleSourceTargetLine:null,bundleSourceWrap:qs()??!0,bundleSourcePretty:!1,bundleCodeTerminal:!1,bundleSourceLockfile:!1,bundleCodeFileRequest:null,npmLookup:{input:``,error:null},npmOpening:null,repositoryCodeOpening:null,repositoryCodePending:null,profileLinkError:null,bundleCompare:null,bundleOverviewFilesSort:`name`,bundleOverviewPackagesSort:`size`,bundleCodeHistory:null,bundleCodeSearchMode:`files`,bundleCodeSearchQuery:``,bundleSearchQuery:``,bundleSearchRegex:!1,bundleSearchCase:!1,bundleSearchContext:!0,filterSeverities:new Set,filterColors:new Set,filterSources:new Set,filterAnalyzer:``,filterModel:``,filterRepo:``,filterRevalidate:``,filterPartial:``,showRevalidation:!0,revalidationDetailed:!1,upstreamOnly:!1,revalidateConflicts:new Map,codePreviews:new Set,filterConfMin:0,filterConfMax:10,filterInclude:``,filterIncludeNegate:!1,filterComment:``,filterFix:``,filterFlagged:``,filterDuplicates:``,filterCrossContext:``,filterAppStacked:``,filterSecurity:``,repoUrl:``,repoEditing:!1,sortBy:`severity`,viewMode:`kanban`,severityMode:Gs()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Ks()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:Ys()??Hs,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:sn(oc?.mode??`e2e`,sc),serverModeConfig:oc?.mode??null,serverModeSelection:sc,deepviewScanServer:null,githubNewIssueLabels:oc?.githubNewIssueLabels??``,localMode:!1,managed:oc?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function I(){return F.serverMode===`managed`&&!F.localMode}function cc(e){F.localMode=!!e}function lc(e,t=globalThis.location?.pathname??``){let n=on(e,t);n&&(F.serverModeSelection=`managed`),F.serverModeConfig=e,F.serverMode=sn(e,F.serverModeSelection),F.serverModeSelection!==F.serverMode&&(F.serverModeSelection=null),(n||F.serverMode===`e2e`||an(e))&&cc(!1)}function uc(){return an(F.serverModeConfig)?(F.serverModeSelection=F.serverMode===`managed`?`e2e`:`managed`,F.serverMode=F.serverModeSelection,cc(!1),!0):F.serverMode===`managed`&&(cc(!F.localMode),!0)}function dc(){return F.serverMode===`standalone`&&F.localMode?`local`:F.serverMode===`managed`?F.localMode?`local`:`managed`:F.serverMode}function fc(){I()||F.repoEditing||F.currentFile&&(F.repoUrl=Qs(F.currentFile))}za(()=>{fc()});var pc=`__meta__`,mc=`deepview-reports`,hc=`deepview-bundles`,gc=`deepview.report:`;function _c(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function vc(e,t,n){return _c(e,t,`shared`,n)}function yc(e,t,n){return _c(e,t,`exclusive`,()=>navigator.locks.request(ao,{mode:`shared`},n))}var bc=!1;async function xc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!bc&&(bc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function Sc(e,t){let n=await e.createWritable();try{await n.write(t),await n.close()}catch(e){try{await n.abort(e)}catch{}throw e}}async function Cc(e,t){if(!Aa(e))return e;if(!Eo())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Wo(e,t)}function wc(e){return e.length===0||e.length>=18&&e[0]===31&&e[1]===139&&e.at(-4)===0&&e.at(-3)===0&&e.at(-2)===0&&e.at(-1)===0}async function Tc(e,t){zc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(ao,{mode:`exclusive`},async()=>{if(zc(e)!==t)return;L(e),Lc(e);let n=await Oc();if(n)try{await n.removeEntry(e)}catch{}Ac(e),L(e),Hc(e,`delete`)}))}async function Ec(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function Dc(e,t,n,r,i=()=>{}){if(xo()&&!Eo())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=Eo(),o=a?await t(e,n):e;if(Eo()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Oc(){return xc(mc,{create:!0,warnOnce:!0})}function kc(e){try{return localStorage.getItem(gc+e)}catch{return null}}function Ac(e){try{localStorage.removeItem(gc+e)}catch{}}function jc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(gc)&&e.push(n.slice(gc.length))}return e}var Mc=67108864,Nc=new Map,Pc=0,Fc=new Map;function Ic(e,t){if(Lc(e),!(t.length>Mc)){Nc.set(e,t),Pc+=t.length;for(let e of Nc.keys()){if(Pc<=Mc)break;Lc(e)}}}function Lc(e){let t=Nc.get(e);t!==void 0&&(Nc.delete(e),Pc-=t.length)}var Rc=new Map;function L(e){Rc.set(e,(Rc.get(e)??0)+1)}function zc(e){return Rc.get(e)??0}var Bc=new Set;function Vc(e){return Bc.add(e),()=>Bc.delete(e)}function Hc(e,t){for(let n of Bc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function Uc(){let e=new Set(jc()),t=await Oc();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Wc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(t===``)throw Error(`Refusing to save empty report "${e}"`);return L(e),yc(`report`,e,async()=>{let n=await Oc();if(n){let r=await Cn(ga(t));r=await Dc(r,Uo,e,`"${e}"`,()=>L(e));let i=await n.getFileHandle(e,{create:!0}),a=await i.createWritable();try{await a.write(r),await a.close()}catch(t){Lc(e),L(e);try{await a.abort(t)}catch{}throw await Ec(n,i,e),t}Ic(e,t),L(e),Ac(e),Hc(e,`save`);return}let r=ga(t);r=await Cn(r),r=await Dc(r,Uo,e,`"${e}"`,()=>L(e));let i=r.toBase64();try{localStorage.setItem(gc+e,i),Ic(e,t),L(e),Hc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Gc(e,t){let n=kc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await Cc(r,e),wc(r))throw await Tc(e,t),Error(`File not found: ${e}`);return va(await wn(r))}async function Kc(e,{keep:t=!0}={}){let n=Nc.get(e);if(n!==void 0)return t&&(Nc.delete(e),Nc.set(e,n)),n;let r=Fc.get(e);if(r)return t&&(r.keep=!0),r.promise;let i=zc(e),a=(async()=>{let t=await Oc();if(t){let n;try{n=await t.getFileHandle(e)}catch(t){if(t instanceof DOMException&&t.name===`NotFoundError`){let t=await Gc(e,i);if(t!==null)return Wc(e,t).catch(t=>{console.warn(`storage: stranded-localStorage migration of "${e}" failed:`,t)}),t}throw t}let r=await n.getFile(),a=new Uint8Array(await r.arrayBuffer());if(a=await Cc(a,e),wc(a))throw await Tc(e,i),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await wn(a);return va(e)}let o=va(a);return Wc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let n=await Gc(e,i);if(n===null)throw Error(`File not found: ${e}`);return n})(),o={promise:a,keep:t};Fc.set(e,o);try{let t=await a;return o.keep&&zc(e)===i&&Ic(e,t),t}finally{Fc.delete(e)}}async function qc(e){let t=zc(e),n=await Oc(),r;if(n){let t=null;try{t=await n.getFileHandle(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw t;let n=kc(e);if(n===null)throw t;r=Uint8Array.fromBase64(n)}if(t){let e=await t.getFile();r=new Uint8Array(await e.arrayBuffer())}}else{let t=kc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await Cc(r,e),wc(r))throw await Tc(e,t),Error(`File not found: ${e}`);return r}async function Jc(e){let t=await qc(e),n=t[0]===31&&t[1]===139?await wn(t):t;return va(n)}async function Yc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(wc(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return L(e),Lc(e),yc(`report`,e,async()=>{let n=await Dc(t,Uo,e,`"${e}"`,()=>L(e)),r=await Oc();if(r){let t=await r.getFileHandle(e,{create:!0}),i=await t.createWritable();try{await i.write(n),await i.close()}catch(n){L(e);try{await i.abort(n)}catch{}throw await Ec(r,t,e),n}L(e),Ac(e),Hc(e,`save`);return}try{localStorage.setItem(gc+e,n.toBase64()),L(e),Hc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Xc(e){return L(e),Lc(e),Fc.delete(e),yc(`report`,e,async()=>{let t=await Oc();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw L(e),t}Ac(e),L(e),Hc(e,`delete`);return}localStorage.removeItem(gc+e),L(e),Hc(e,`delete`)})}var Zc=`_meta.json`,Qc=`.index-v1`,$c=new Set;function el(e){return $c.add(e),()=>$c.delete(e)}function tl(e,t){for(let n of $c)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function nl(){return xc(hc,{create:!0})}function rl(e){return e.replaceAll(`/`,`_`)}async function il(e){let t;try{let n=await(await e.getFileHandle(Zc)).getFile();t=new Uint8Array(await n.arrayBuffer())}catch(e){return e instanceof DOMException&&e.name===`NotFoundError`||console.warn(`readBundleMeta: failed to read _meta.json:`,e),[]}let n=t;if(Aa(t)){if(!Eo())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Ko(t,pc)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(va(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function al(e,t){let n=ga(JSON.stringify(t));n=await Dc(n,Go,pc,`bundle metadata`);try{await e.removeEntry(Zc)}catch{}await Sc(await e.getFileHandle(Zc,{create:!0}),n)}var ol=`${hc}/${Zc}`;function sl(e){return navigator.locks.request(ol,e)}async function cl(){let e=await nl();return e?[...await navigator.locks.request(ol,{mode:`shared`},()=>il(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function ll(){return dl(()=>!0)}function ul(){return dl((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function dl(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await xc(hc,{create:!1});if(!t)return!1;try{for await(let[n,r]of t.entries())if(e(n,r))return!0}catch{}return!1}async function fl(e,t){let n=await nl();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:ga(t),i=await Sn(r),a=rl(i),o=e.toLowerCase().endsWith(`.map`)?await Cn(r):r;return yc(`bundle`,i,async()=>{o=await Dc(o,Go,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await Sc(await n.getFileHandle(a,{create:!0}),o);try{await sl(async()=>{let t=await il(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await al(n,t)})}catch(e){try{await n.removeEntry(a),tl(i,`delete`)}catch{}throw e}return tl(i,`save`),{integrity:i,name:e}})}async function pl(e){let t=await nl();if(t)return yc(`bundle`,e,async()=>{try{await t.removeEntry(rl(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}tl(e,`delete`);try{await sl(async()=>{try{await t.removeEntry(rl(e)+Qc)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await il(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await al(t,r)})}finally{tl(e,`delete`)}})}async function ml(e){let t=await nl();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(rl(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Aa(r)){if(!Eo())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Ko(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await wn(r):r}async function hl(e){let t=await nl();if(!t||xo()&&!Eo())return null;try{let n=await t.getFileHandle(rl(e)+Qc),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Aa(r)&&(r=await Ko(r,e+Qc)),JSON.parse(va(await wn(r)))}catch{return null}}async function gl(e,t){let n=await Cn(ga(JSON.stringify(t)));return navigator.locks.request(ao,{mode:`shared`},()=>sl(async()=>{let t=await nl();if(!t)return;await t.getFileHandle(rl(e));let r=e+Qc,i=await Dc(n,Go,r,`bundle index`);await Sc(await t.getFileHandle(rl(r),{create:!0}),i)}))}async function _l(e,t){let n=await Oc();if(n){let r=null;try{r=await n.getFileHandle(e)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}if(r){let i=await r.getFile(),a=await t(new Uint8Array(await i.arrayBuffer()));if(a===null)return;Lc(e),Fc.delete(e),L(e);let o=await n.getFileHandle(e,{create:!0});try{await Sc(o,a)}catch(t){throw await Ec(n,o,e),t}L(e);return}}let r=kc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(Lc(e),Fc.delete(e),L(e),localStorage.setItem(gc+e,i.toBase64()),L(e))}function vl(e,t){return e.seal?n=>Aa(n)?null:e.seal(n,t):n=>Aa(n)?e.open(n,t):null}async function yl(e){let t=await Uc();for(let n of t)try{await _l(n,vl(e,Oo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var bl=({seal:e})=>yl({seal:e}),xl=({open:e})=>yl({open:e});async function Sl(){let e=await nl();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function Cl(e){return e===Zc?pc:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function wl(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await Sc(await e.getFileHandle(t,{create:!0}),i)}async function Tl(e){let{dir:t,keys:n}=await Sl();if(t)for(let r of n){let n=Cl(r);if(n!==null)try{await wl(t,r,vl(e,ko(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var El=({seal:e})=>Tl({seal:e}),Dl=({open:e})=>Tl({open:e});jo(()=>{Ol(),Fc.clear()});function Ol(){Nc.clear(),Pc=0}var kl=`deepview/workspace-id/v1
2
- `;async function Al(e){let t=Uint8Array.fromBase64(e),n=ga(kl),r=new Uint8Array(n.length+t.length);r.set(n,0),r.set(t,n.length);let i=new Uint8Array(await crypto.subtle.digest(`SHA-256`,r)),a=Array.from(i.subarray(0,16),e=>e.toString(16).padStart(2,`0`)).join(``).split(``);a[12]=`8`,a[16]=(parseInt(a[16],16)&3|8).toString(16);let o=a.join(``);return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20,32)}`}function jl(e){let t=new Set;function n(e){return t.add(e),()=>t.delete(e)}function r(n){for(let r of t)try{r(n)}catch(t){console.warn(`workspace ${e} listener failed:`,t)}}return{on:n,fire:r}}var Ml=jl(`create`),Nl=jl(`delete`),Pl=jl(`privateKey`),Fl=jl(`report-membership`),Il=jl(`bundle-membership`);Ml.on;var Ll=Nl.on,Rl=Pl.on,zl=Fl.on,Bl=Il.on,Vl=Ml.fire,Hl=Nl.fire,Ul=Pl.fire,Wl=Fl.fire,Gl=Il.fire,Kl=`deepview.workspaces`,ql=1;function Jl(){try{let e=Ua(Kl);if(!e)return[];let t=JSON.parse(e);return t&&typeof t==`object`&&Array.isArray(t.workspaces)?t.workspaces:Array.isArray(t)?t:[]}catch{return[]}}async function Yl(e){await Wa(Kl,JSON.stringify({version:ql,workspaces:e}))}var Xl=Kl;function Zl(e){return navigator.locks.request(Xl,async()=>{await qa();let t=Jl(),n=await e(t);if(n!==!1)return await Yl(t),n})}function Ql(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var $l=Jl().map(Ql);function eu(){$l=Jl().map(Ql)}function tu(e){$l=$l.filter(t=>t.id!==e.id),$l.push(Ql(e))}function nu(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=$l.find(t=>t.id===e.id);if(r){r[t]=n;return}$l.push(Ql(e))}function ru(e){$l=$l.filter(t=>t.id!==e)}function R(){let e=Jl();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var iu=200;function au(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,iu)||null}async function ou(e){let t=au(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Al(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await Zl(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?(tu(i),i):null}async function su(e){await Zl(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Hl(e),ru(e))}async function cu(e,t){let n=au(t);return!(!n||!await Zl(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function lu(e){let{next:t}=await Zl(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=au(e.name)??r?.name??`Workspace`,a=e.preserveBundles?Array.isArray(r?.bundles)?r.bundles:[]:Array.isArray(e.bundles)?e.bundles:[],o={id:e.id,name:i,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...new Set(e.reports)]:[],bundles:[...new Set(a)],createdAt:e.createdAt??Date.now()};return n>=0?t[n]=o:t.push(o),{previous:r,next:o}}),n=$l.find(e=>e.id===t.id)??null;return n==null?Vl(t.id):(n.privateKey!==t.privateKey&&Ul(t.id),du(n.reports,t.reports)||Wl(t.id),du(n.bundles,t.bundles)||Gl(t.id)),tu(t),t}async function uu({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await Zl(a=>{let o=au(t);if(!o)return i={status:`name-collision`,existing:null},!1;let s=a.find(t=>t.id===e)??null;if(s)return i={status:`already-attached`,workspace:s},!1;let c=a.find(e=>au(e.name)===o)??null;if(c)return i={status:`name-collision`,existing:c},!1;let l={id:e,name:o,privateKey:n,reports:[],bundles:[],createdAt:r??Date.now()};a.push(l),i={status:`attached`,workspace:l}}),i?.status===`attached`&&(Vl(i.workspace.id),tu(i.workspace)),i}function du(e,t){let n=new Set(e),r=new Set(t);if(n.size!==r.size)return!1;for(let e of n)if(!r.has(e))return!1;return!0}async function fu({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await Zl(r=>{if((r.find(t=>Array.isArray(t[n])&&t[n].includes(e))?.id??null)===(t??null))return!1;let o=null;if(t!=null&&(o=r.find(e=>e.id===t)??null,!o))return!1;let s=new Set;if(!i)for(let t of r)a!==void 0&&t.id!==a||(Array.isArray(t[n])||(t[n]=[]),t[n].includes(e)&&(t[n]=t[n].filter(t=>t!==e),s.add(t.id)));if(o&&(Array.isArray(o[n])||(o[n]=[]),o[n].includes(e)||(o[n].push(e),s.add(o.id))),s.size===0)return!1;let c=new Map;for(let e of s){let t=r.find(t=>t.id===e);t&&c.set(e,t)}return{affected:s,snapshot:c}});if(!o)return;let{affected:s,snapshot:c}=o;for(let e of s){r(e);let t=c.get(e);t&&nu(t,n)}}function pu(e,t){return{move:(n,r)=>fu({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>fu({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>fu({identifier:n,field:e,fire:t,from:r})}}var mu=pu(`reports`,Wl),hu=pu(`bundles`,Gl),gu=mu.move,_u=mu.add,vu=mu.remove,yu=hu.move,bu=hu.add,xu=hu.remove;function Su(){let e=Jl().map(Ql),t=new Map($l.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Hl(e);for(let[e,r]of n){let n=t.get(e);if(!n){Vl(e);continue}n.privateKey!==r.privateKey&&Ul(e),du(n.reports,r.reports)||Wl(e),du(n.bundles,r.bundles)||Gl(e)}$l=e}za(()=>{Su()});function Cu(e=[]){let t=new Map,n=(e,n)=>{t.has(e)||t.set(e,new Set),t.get(e).add(n)},r=e=>{for(let t of e.slice(1))n(e[0],t),n(t,e[0])};for(let t of e)r(t);return{add:r,linkedIds:e=>t.get(e)??[]}}function wu(e){let t=[];for(let n of e){let e=n?.revalidateInputs;n?.isApp!==!0||typeof n.id!=`string`||!Array.isArray(e)||t.push([n.id,...e.filter(e=>typeof e==`string`&&e!==``)])}return t}var Tu=null;function Eu(){Tu=null}function Du(){return I()&&Tu?.teamId===F.currentManagedTeam&&Tu?.userId===F.managedSession?.id&&Tu?.role===F.managedSession?.role?Tu:null}function Ou(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[];m(t.links??[],i);for(let e of t){let t=e.data;if(t.source===`links`&&Array.isArray(t.links)){a.push({id:e.id,name:e.filename,groups:t.links,skipped:0}),m(t.links,i);continue}let s=Si(t)??[],c=zr([{groups:[s.flat().filter(e=>e&&typeof e==`object`)],tree:t.tree,treeDependencies:t.treeDependencies}]);for(let[i,a]of s.entries()){let s=(Array.isArray(a)?a:[a]).filter(e=>e&&typeof e==`object`).map(n=>{let r={...n,_managedReportId:e.id,_reportName:e.filename,_repoFallback:e.repo.github,_repoDirectory:e.repo.directory,_source:n.source??t.source??null,_bundleHashes:t.bundleHashes??[],_depsDirectory:c};return _i(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Ri(r,r._source)),r}),l={report:e.filename,managedReportId:e.id,index:i,members:s};o.push(l);for(let e of s)n.has(e.id)||n.set(e.id,[]),n.get(e.id).push(l);for(let e of wu(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(l)}}Tu={teamId:e,userId:F.managedSession?.id,role:F.managedSession?.role,links:a,rows:o,byId:n,citedBy:r,duplicates:i},F.linksTick++,F.findingIndexTick++}function ku(e){let t=Du();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Au(e){let t=Du();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function ju(e){for(let t of ku([e])){let n=Hi(t.members.find(t=>t.id===e));if(n)return n}return``}var Mu=`deepview.fileCounts`,Nu=4,Pu=new Set([3,Nu]),Fu=null;function Iu(){if(Fu)return Fu;let e;try{e=JSON.parse(Ua(Mu)||`{}`)}catch{e={}}return Pu.has(e?.__v)?e.__v=Nu:e={__v:Nu},Fu=e,Fu}function Lu(){Wa(Mu,JSON.stringify(Fu)).catch(e=>console.warn(`counts persist:`,e))}function Ru(e){if(e===`__v`)return;let t=Iu()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function zu(e){return Ru(e)?.count}function Bu(e){return Ru(e)?.source}function Vu(e,t,n){let r=Iu();r[e]={count:t,source:n??null},Lu()}function Hu(e){let t=Iu();delete t[e],Lu()}function Uu(e){let t=f(e);return t?{count:p(t.groups),source:d,recognized:!0}:Ti(e)}var Wu=null,Gu=null,Ku=null;function qu(e,t){for(let{names:n,onUpdate:r}of Ku)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Ju(e,t){if(Wu){t&&Ku.push({names:new Set(e),onUpdate:t});for(let t of e)Gu.add(t);return Wu}return Gu=new Set(e),Ku=t?[{names:new Set(e),onUpdate:t}]:[],Wu=(async()=>{await Promise.resolve();try{let e=Iu();for(;Gu.size>0;){let t=Gu.values().next().value;if(Gu.delete(t),e[t]===void 0)try{let n=await Kc(t,{keep:!1});if(e[t]!==void 0)continue;let{count:r,source:i}=Uu(n);e[t]=i?{count:r,source:i}:{count:r},Lu(),qu(t,r)}catch{}}}finally{Wu=null,Gu=null,Ku=null}})(),Wu}var Yu=new Map,Xu=new Map,Zu=new Map,Qu=new Set,$u=null,ed=null,td=0,nd=!1,rd=!1;function id(){return I()||rd}function ad(e){return Qu.add(e),()=>Qu.delete(e)}function od(){for(let e of Qu)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function sd(){let e=new Map;for(let t of Yu.values())t&&m(t.groups,e);Xu=e}function cd(){if(I())return Du()?.links??[];let e=[];for(let[t,n]of Yu)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function ld(){return I()?!!Du()?.duplicates.size:Xu.size>0}function ud(e){if(I())return[...Du()?.duplicates.get(e)??[]];let t=Xu.get(e);return t?[...t]:[]}async function dd(e){if(Yu.has(e))return!1;let t=Zu.get(e)??0,n;try{n=await Kc(e,{keep:!1})}catch{return!1}if(n==null)return!1;if((Zu.get(e)??0)!==t)return nd=!0,!1;let r=f(n);if(Yu.set(e,r),r&&Bu(e)!==d)Vu(e,p(r.groups),d);else if(!r&&Bu(e)===d){let{count:t,source:r}=Uu(n);Vu(e,t,r)}return r!==null}function fd(){return I()?Promise.resolve():ed||(ed=(async()=>{try{let e,t;do{t=td,e=await Uc(),rd&&e.some(e=>!Yu.has(e))&&(rd=!1,od());let n=e.filter(e=>Bu(e)===d);(await Promise.all(n.map(e=>dd(e)))).some(Boolean)&&(sd(),od())}while(t!==td);return e}catch(e){throw rd&&(rd=!1,od()),e}finally{ed=null}})(),ed)}function pd(){return I()?Promise.resolve():$u||($u=(async()=>{try{do{nd=!1;let e=await fd(),t=!1;for(let n of e)await dd(n)&&(t=!0);let n=!nd&&e.every(e=>Yu.has(e)),r=rd!==n;rd=n,t&&sd(),(t||r)&&od()}while(nd)}catch(e){throw rd&&(rd=!1,od()),e}finally{$u=null}})(),$u)}Vc(e=>{let t=rd;rd=!1,td++,Zu.set(e,(Zu.get(e)??0)+1),nd=!0;let n=Yu.get(e)!=null;Yu.delete(e),n&&sd(),(n||t)&&od()});var md=()=>{};function hd(e){md=typeof e==`function`?e:()=>{}}var gd=()=>{};function _d(e){gd=typeof e==`function`?e:()=>{}}var vd=()=>{};function yd(e){vd=typeof e==`function`?e:()=>{}}var bd=`deepview.triage`,xd=`deepview.triage.pending`,Sd=/^\d+$/u;async function Cd(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function wd(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var Td=`deepview.triage.save`,Ed=0;function Dd(){return!I()&&c(F.triage,F.reports)}function Od(){Dd();let e={};for(let[t,n]of F.triage){if(Sd.test(t))continue;let r=yn(n);r&&(e[t]=r)}return e}function kd(){if(I())return gd(),Promise.resolve();let e=++Ed,t=Od(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(xd,r)}catch{}return navigator.locks.request(ao,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await Cd(ga(r));i=Eo(),t=(i?await Vo(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),md();return}await navigator.locks.request(Td,()=>{try{if(e!==Ed)return;if(r!=null&&Eo()!==i){queueMicrotask(()=>{kd()});return}if(n)localStorage.removeItem(bd),localStorage.removeItem(xd);else{localStorage.setItem(bd,t);try{localStorage.removeItem(xd)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),md()})}async function Ad(){let e=localStorage.getItem(xd);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(bd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Aa(n)){if(!Eo())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Ho(n)}let r=await wd(n);return JSON.parse(va(r))}function jd(e,{replace:t=!1}={}){let n=F.triage;if(t){let t=null,r=localStorage.getItem(xd);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(Sd.test(r))continue;let a=e?.[r],o=!e||!(r in e);!(i(r)&&t[r]?.color)&&(o||!a?.color)&&S(n,r,{color:void 0}),!(i(r)&&(t[r]?.triage||t[r]?.deleted))&&!hn(a)&&S(n,r,{triage:void 0}),!(i(r)&&t[r]?.comment)&&(o||typeof a?.comment!=`string`||!a.comment)&&S(n,r,{comment:void 0}),!(i(r)&&t[r]?.fix)&&(o||typeof a?.fix!=`string`||!a.fix)&&S(n,r,{fix:void 0}),!(i(r)&&t[r]?.flagged!==void 0)&&(o||a?.flagged===void 0)&&S(n,r,{flagged:void 0})}for(let r of[...n.keys()]){if(Sd.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!gn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){xn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&xn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=hn(r),i={};if(r&&r.color&&(i.color=r.color),e&&(i.triage=e),r&&typeof r.comment==`string`&&r.comment&&(i.comment=r.comment),r&&typeof r.fix==`string`&&r.fix&&(i.fix=r.fix),r&&typeof r.flagged==`boolean`&&(i.flagged=r.flagged),Object.keys(i).length>0&&S(n,t,i),gn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&xn(n,t,e,!0,vn(r,e))}}async function Md(){if(I())return!1;if(![...F.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await l(Object.fromEntries(F.triage),e=>vc(`report`,e,()=>Jc(e)));if(!I())return c(F.triage,e)}async function Nd(){if(!I())try{let e=await Ad();if(I())return;jd(e),await Md()&&await kd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Pd(){if(!I())try{let e=await Ad();if(I())return;jd(e,{replace:!0}),await Md()&&await kd(),vd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==bd&&e.key!==xd||Pd()});var Fd;function Id(){return I()?Promise.resolve():Fd??=Nd()}jo(()=>{Pd()}),jo(()=>{I()||Eo()&&localStorage.getItem(xd)&&kd()});async function Ld({seal:e}){try{localStorage.removeItem(xd)}catch{}let t=localStorage.getItem(bd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Aa(n))return;let r=await e(n,Do());localStorage.setItem(bd,r.toBase64())}async function Rd({open:e}){try{localStorage.removeItem(xd)}catch{}let t=localStorage.getItem(bd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Aa(n))return;let r=await e(n,Do());localStorage.setItem(bd,r.toBase64())}function zd(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Bd(e){if(typeof e!=`string`||!e)return null;if(e.startsWith(`r:`))try{let t=JSON.parse(e.slice(2));if(t&&typeof t.name==`string`&&t.name&&typeof t.workspaceId==`string`&&t.workspaceId)return{name:t.name,workspaceId:t.workspaceId}}catch{}return{name:e,workspaceId:null}}async function Vd({id:e,name:t,privateKeyBase64:n,password:r}){if(typeof e!=`string`||!e)throw TypeError(`encodeShareLink: id required`);if(typeof t!=`string`||!t)throw TypeError(`encodeShareLink: name required`);if(typeof n!=`string`||!n)throw TypeError(`encodeShareLink: privateKey required`);if(typeof r!=`string`||!r)throw TypeError(`encodeShareLink: password required`);let i=await Al(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await h(ga(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Hd({encoded:e,password:t}){if(typeof e!=`string`||!e)throw Error(`malformed share link`);if(typeof t!=`string`||!t)throw TypeError(`decodeShareLink: password required`);let n;try{n=Uint8Array.fromBase64(e,{alphabet:`base64url`})}catch{throw Error(`malformed share link`)}let r=await g(n,t,{malformedMsg:`malformed share link`,wrongPasswordMsg:`wrong password or corrupt link`});try{return await Ud(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function Ud(e){let t=JSON.parse(va(e));if(!t||typeof t!=`object`||typeof t.n!=`string`||typeof t.k!=`string`||!t.n||!t.k||t.i!==void 0&&(typeof t.i!=`string`||!t.i)||typeof t.i==`string`&&t.i.length>256||t.n.length>1024||Uint8Array.fromBase64(t.k).length!==32)throw Error(`shape`);return{id:typeof t.i==`string`?t.i:await Al(t.k),name:t.n,privateKeyBase64:t.k}}function Wd(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function Gd(e){let t=typeof e==`string`?e:typeof location>`u`?``:location.hash;if(!t)return null;let n=t.replace(/^#/u,``);if(!n)return null;for(let e of n.split(`&`)){let t=e.indexOf(`=`);if(!(t<0||e.slice(0,t)!==`share`))return e.slice(t+1)||null}return null}var Kd=new Map,qd=new Map,Jd=new Map;function Yd(e){return I()?[...new Set(ku([e]).map(e=>e.report))]:[...Kd.get(e)?.reports.keys()??[]]}function Xd(e){if(I())return ju(e);for(let{title:t}of Kd.get(e)?.reports.values()??[])if(t)return t;return``}function Zd(e){if(I())return ku(e);let t=new Set;for(let n of e)for(let e of Kd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function Qd(e){if(I())return Au(e);let t=new Set;for(let n of e)for(let e of qd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function $d(e){return Jd.has(e)||Jd.set(e,{ids:new Set,inputs:new Set}),Jd.get(e)}function ef(e,t){let n=!1;for(let r of t.members){let i=Kd.get(r.id);i||Kd.set(r.id,i={reports:new Map});let a=i.reports.get(e);if(a){a.rows.add(t);continue}i.reports.set(e,{title:Hi(r),rows:new Set([t])}),$d(e).ids.add(r.id),n=!0}for(let[,...n]of wu(t.members))for(let r of n){qd.has(r)||qd.set(r,new Map);let n=qd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),$d(e).inputs.add(r)}return n}function tf(e){let t=Jd.get(e);if(Jd.delete(e),!t)return!1;for(let n of t.ids){let t=Kd.get(n);t?.reports.delete(e),t?.reports.size===0&&Kd.delete(n)}for(let n of t.inputs){let t=qd.get(n);t?.delete(e),t?.size===0&&qd.delete(n)}return!0}var nf=`solidity-bundle`,rf=`0.0.0`;function af(e){if(e?.name!==nf)return!1;let t=e.version;return!t||t===rf}function of(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!af(t))return n;let r=e?.file;if(!r)return null;let i=/(?:^|\/)node_modules\/\.pnpm\/([^/]+)\/node_modules\//u.exec(r);if(!i)return null;let a=i[1],o=a.indexOf(`_`);o>0&&(a=a.slice(0,o));let s=a.lastIndexOf(`@`);return s<=0?null:a.slice(s+1)||null}function sf(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function cf(e,t,n,r){e.reports.add(n);let i=e._keyReports.get(t);i||e._keyReports.set(t,i=new Set);let a=!i.has(n);return i.add(n),e.keys.has(t)||(e.keys.add(t),e.findings.push(r),e.files.has(r.file)||e.files.set(r.file,[]),e.files.get(r.file).push(r)),a}function lf(e,t,n,r){e._keyReports.delete(t),e.keys.delete(t);let i=e.findings.findIndex(e=>r(e)===t);i>=0&&e.findings.splice(i,1);let a=e.files.get(n);if(!a)return;let o=a.findIndex(e=>r(e)===t);o>=0&&a.splice(o,1),a.length===0&&e.files.delete(n)}function uf(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function df(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=sf(),e.byVersion.set(t,a)),cf(a,r,i,n)}function ff(e,t,n,r,i,a){let o=e.byVersion.get(t);if(!o)return;let s=o._keyReports.get(n);if(s&&(s.delete(i),s.size===0&&lf(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}uf(o)}function pf(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=mf(e,`-`),[i,a=``]=mf(t,`-`),o=n.split(`.`),s=i.split(`.`),c=Math.max(o.length,s.length);for(let e=0;e<c;e++){let t=o[e]??`0`,n=s[e]??`0`,r=/^\d+$/u.test(t),i=/^\d+$/u.test(n);if(r&&i){let e=Number(n)-Number(t);if(e!==0)return e}else{let e=n.localeCompare(t);if(e!==0)return e}}return r===``&&a!==``?-1:r!==``&&a===``?1:a.localeCompare(r)}function mf(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var hf=new Map,gf=new Map,_f=new Map,vf=new Map;function yf(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!af(t))return t.name;if(!e?.file)return null;let n=/(?:^|\/)(?:node_modules|dependencies)\/(@[^/]+\/[^/]+|[^/]+)/gu,r;for(;(r=n.exec(e.file))!==null;)if(r[1]!==`.pnpm`)return r[1];return null}function bf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function xf(e,t){return typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:typeof t==`string`&&t?t:null}var Sf=new Set,Cf=new Set,wf=null,Tf=!1;function Ef(e){return Cf.add(e),()=>Cf.delete(e)}function Df(){for(let e of Cf)try{e()}catch{}}function Of(e){return hf.get(e)?.list??[]}function kf(){let e=0;for(let t of hf.values())e+=t.list.length;return e}function Af(){return gf}function jf(){return _f}function Mf(e,t){let n=hf.get(e);if(!n)return[];let r=n.reports.get(Ff(t));return r?[...r]:[]}function Nf(e,t){let n=gf.get(e);if(!n)return[];let r=n._keyReports.get(Ff(t));return r?[...r]:[]}function Pf(e,t){let n=_f.get(e);if(!n)return[];let r=n._keyReports.get(Ff(t));return r?[...r]:[]}function Ff(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,o(e)])}function If(e,t,n){let r=vf.get(e);r||(r={hash:[],pkg:[],repo:[]},vf.set(e,r)),r[t].push(n)}function Lf(e,t,n){let r=hf.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},hf.set(e.fileHash,r));let i=r.reports.get(t);i||(i=new Set,r.reports.set(t,i));let a=!i.has(n);return i.add(n),a&&If(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function Rf(e,t,n){let r=yf(e);if(!r)return!1;let i=of(e),a=gf.get(r);if(a||(a={...sf(),repos:new Set,byVersion:new Map,_repoReports:new Map},gf.set(r,a)),typeof e.repo?.github==`string`&&e.repo.github){a.repos.add(e.repo.github);let t=a._repoReports.get(e.repo.github);t||a._repoReports.set(e.repo.github,t=new Set),t.add(n)}df(a,i,e,t,n);let o=cf(a,t,n,e);return If(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function zf(e,t,n,r){if(bf(e))return!1;let i=xf(e,r);if(!i)return!1;let a=_f.get(i);a||(a=sf(),_f.set(i,a));let o=cf(a,t,n,e);return o&&If(n,`repo`,{repo:i,key:t,file:e.file}),o}function Bf(e){let t=vf.get(e);vf.delete(e),Sf.delete(e);let n=tf(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=hf.get(n);if(!t)continue;let a=t.reports.get(i);if(a){if(a.delete(e)&&(r=!0),a.size===0){t.reports.delete(i),t.keys.delete(i);let e=t.list.findIndex(e=>Ff(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&hf.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=gf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&lf(t,a,o,Ff),ff(t,s,a,o,e,Ff),!i.has(n)){i.add(n);for(let n of[...t._repoReports.keys()]){let i=t._repoReports.get(n);i?.delete(e)&&i.size===0&&(t._repoReports.delete(n),t.repos.delete(n),r=!0)}}t._keyReports.size===0?gf.delete(n):uf(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=_f.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&lf(t,i,a,Ff),t._keyReports.size===0?_f.delete(n):uf(t))}return r}async function Vf(e){if(Sf.has(e))return!1;Sf.add(e);try{let t=await Kc(e,{keep:!1}),n=await Di(t);if(!n)return!1;let{data:r,findings:i}=n;if(i.length===0)return!1;a(i,r),xi(Si(r).map(e=>Array.isArray(e)?e:[e]),{source:r.source});let o=vi(r)??``;if(!o)try{o=Qs(e)}catch{}let s=!1;for(let t of i){let n=Ff(t);t.fileHash&&Lf(t,n,e)&&(s=!0),t.file&&Rf(t,n,e)&&(s=!0),t.file&&zf(t,n,e,o)&&(s=!0)}for(let[t,n]of Si(r).entries()){let i=(Array.isArray(n)?n:[n]).filter(e=>e?.id);i.length!==0&&ef(e,{report:e,index:t,members:i.map(e=>{let t=e.source??r.source??null;return{id:e.id,title:Hi(e),source:t,revalidate:Li(e),isApp:e.isApp??Ri(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return Sf.has(e)?s:(Bf(e),Tf=!0,!1)}catch{return Sf.delete(e),!1}}function Hf(){return I()?Promise.resolve():wf||(wf=(async()=>{try{do{Tf=!1;let e=await Uc();for(let t of e)await Vf(t)&&Df()}while(Tf)}finally{wf=null}})(),wf)}function Uf(){return wf}Vc(e=>{Bf(e)&&Df()}),ec(e=>{Bf(e)&&Df(),Hf().catch(()=>{})});var Wf=new Map,Gf=new Map,Kf=new Map,qf=new Set;function Jf(e){return qf.add(e),()=>qf.delete(e)}function Yf(){for(let e of qf)try{e()}catch{}}function Xf(e,t){if(!e||!t)return!1;let n=!Gf.has(e);Gf.set(e,t),Kf.delete(e);for(let[n,r]of t){if(!r)continue;let t=Wf.get(r);t||(t=new Map,Wf.set(r,t)),t.set(e,n)}return n&&Yf(),n}function Zf(e){let t=Gf.get(e);if(Gf.delete(e),Kf.delete(e),t){for(let n of t.values()){let t=Wf.get(n);t&&(t.delete(e),t.size===0&&Wf.delete(n))}Yf()}}function Qf(e,t){let n=Gf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=ep(e,n).get($f(t));if(!r)return null;let i=t.startsWith(`/`)?t:`/${t}`,a=null;for(let e of r)if(e.endsWith(i)){if(a!==null)return null;a=e}return a}function $f(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function ep(e,t){let n=Kf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=$f(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Kf.set(e,n),n}function tp(e){if(!e)return[];let t=Wf.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function np(e){return Gf.has(e)}async function rp(e){if(!e)return null;let t=R(),n=(await Promise.all(t.map(e=>Br(`workspace`,e.id)))).indexOf(e);return n===-1?null:t[n]}async function ip(e){if(!e)return null;let t=await Uc(),n=(await Promise.all(t.map(e=>Br(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function ap(e,t){let n;try{n=await Kc(e)}catch{return!1}return n==null?!1:(await Di(n))?.findings.some(e=>e.id===t)??!1}async function op(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await Uc()).filter(e=>!n.has(e));for(let t of r)if(await ap(t,e))return t;return null}function sp(e){return e?R().filter(t=>t.reports.includes(e)):[]}function cp(e){if(!e)return``;for(let t of e.split(`
3
- `))if(t.trim())return t.trim();return``}function lp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of F.reports)for(let r of e.groups)for(let e of r){let r=e.id??String(e._id);if(t.has(r)&&!n.has(r)&&(n.set(r,{severity:e.severity,file:e.file,line:e.line,description:cp(e.description)}),n.size===t.size))return n}return n}var up=`deepview.lastFile`,dp=null;function fp(){return dp||(dp=pp(),dp.catch(()=>{dp=null})),dp}async function pp(){try{await Id()}catch{}let e=await Uc(),t=new Set(e),n=new Set(e),r=new Set;for(let n of e){if(!n.toLowerCase().endsWith(`.deepseek`))continue;let e=n.slice(0,-9)+`.md`;if(t.has(e))continue;let i;try{i=await Kc(n),await Wc(e,i),await Xc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=zu(n);if(Hu(n),a===void 0){let{count:t,source:n}=Uu(i);Vu(e,t,n)}else{let{source:t}=Uu(i);Vu(e,a,t)}let o=Qs(n);o&&(nc(n,``),nc(e,o));let s=!1;for(let[t,r]of[...F.triage])r.ignoredReports?.includes(n)&&(xn(F.triage,t,n,!1),xn(F.triage,t,e,!0,vn(r,n)),s=!0);s&&await kd();let c=Bd(Ua(up));if(c?.name===n)try{await Wa(up,zd(e,c.workspaceId))}catch{}}for(let e of R())for(let t of e.reports){if(!t.toLowerCase().endsWith(`.deepseek`)||!r.has(t)&&n.has(t))continue;let i=t.slice(0,-9)+`.md`;await vu(t,e.id),await _u(i,e.id)}}function mp(){return{...hp,hydrateKey:Ja,localContentSyncStatus:pn,readTriageBlob:async()=>(await u(await Ad(),e=>vc(`report`,e,()=>Jc(e)))).entries,reportSyncHash:e=>vc(`report`,e,async()=>mn(await qc(e)))}}var hp={hasStoredBundleBytes:ul,listBundles:cl,listFiles:Uc,onBundleMutated:el,onFileMutated:Vc,readBundle:ml,readFile:Jc,withStoredItem:vc,isEncryptionEnabled:xo,isUnlocked:So,onVaultStateChange:jo,unlockEncryption:No};function gp(e=hp){let t=()=>e.isEncryptionEnabled()&&!e.isUnlocked(),n=(n,r,i)=>{let a=!1,o=!1,s=e.onVaultStateChange(()=>{a=!0}),c=r===`report`?e.onFileMutated:e.onBundleMutated,l=i===void 0?null:c(e=>{e===i&&(o=!0)});return{check(){if(n?.throwIfAborted(),t()||a)throw Error(`Local data is locked or has changed. Unlock it and select the file again.`);if(o)throw Error(`This local ${r} changed. Select it again before importing.`)},unsubscribe(){s(),l?.()}}},r=async t=>t===`report`?(await e.listFiles()).map(e=>({value:e,label:e})):(await e.listBundles()).map(e=>({value:e.integrity,label:e.name,secondary:e.integrity}));return{get locked(){return t()},async hasData(n){return n===`report`?(await e.listFiles()).length>0:t()?e.hasStoredBundleBytes():(await e.listBundles()).length>0},async list(e){let t=n();try{t.check();let n=await r(e);return t.check(),n}finally{t.unsubscribe()}},unlock(t){return e.unlockEncryption(t)},subscribe(t){let n=e.onVaultStateChange(()=>t()),r=e.onFileMutated(e=>t({kind:`report`,value:e})),i=e.onBundleMutated(e=>t({kind:`bundle`,value:e}));return()=>{n(),r(),i()}},async importItem(t,i,a,{signal:o}={}){let s=n(o,t,i);try{s.check();let{result:n}=await e.withStoredItem(t,i,async()=>{s.check();let n=(await r(t)).find(e=>e.value===i);if(s.check(),!n)throw Error(`This file is no longer in local storage. Select another file.`);let o=t===`report`?await e.readFile(i):await e.readBundle(i);s.check();let c=new File([o],n.label,{type:t===`report`?`text/plain`:`application/octet-stream`});try{let e=Promise.resolve(a(c));return e.catch(()=>{}),{result:e}}finally{s.unsubscribe()}});return n}finally{s.unsubscribe()}}}}function _p(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function vp(){if(!_p()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function yp(){let e={supported:_p(),persisted:null,usage:null,quota:null};if(!e.supported)return e;if(typeof navigator.storage.persisted==`function`)try{e.persisted=await navigator.storage.persisted()}catch{}if(typeof navigator.storage.estimate==`function`)try{let t=await navigator.storage.estimate();typeof t?.usage==`number`&&(e.usage=t.usage),typeof t?.quota==`number`&&(e.quota=t.quota)}catch{}return e}var bp=`deepview.scan.access`,xp=new Set;function Sp(){for(let e of xp)e()}function Cp(){return Ua(bp)!=null}function wp(e){try{let t=JSON.parse(Ua(bp)),n=t?.provider===`moonshotai`?`moonshot`:t?.provider;return!e||t?.server!==e||typeof t.deepview!=`string`||!t.deepview.trim()||![null,`anthropic`,`openai`,`moonshot`,`openrouter`].includes(n)||typeof t.token!=`string`?null:{...t,provider:n}}catch{return null}}async function Tp({server:e,deepview:t,provider:n,token:r}){await Wa(bp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),Sp()}async function Ep(){await Ga(bp),Sp()}function Dp(e){xp.add(e);let t=za(e);return()=>{xp.delete(e),t()}}var Op=1;function kp(){let e=Od(),t=Zs();return{version:Op,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Ap(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function jp(){let e=kp();return{blob:new Blob([await Tn(JSON.stringify(e))]),filename:Ap()}}async function Mp(e){let t;try{t=await En(new Uint8Array(await e.arrayBuffer()))}catch(e){throw Error(`Failed to gunzip: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON: ${e.message}`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Invalid backup file (not an object)`);if(n.version!==Op)throw Error(`Unsupported backup version: ${n.version} (expected ${Op})`);if(!n.triage||typeof n.triage!=`object`)throw Error("Backup is missing the `triage` map");if(!n.repoUrls||typeof n.repoUrls!=`object`)throw Error("Backup is missing the `repoUrls` map");return n}async function Np(e,t){if(![`replace`,`prefer-imported`,`prefer-current`].includes(t))throw Error(`Unknown merge mode: ${t}`);if(!e||typeof e!=`object`)throw Error(`Invalid payload: not an object`);if(!e.triage||typeof e.triage!=`object`||Array.isArray(e.triage))throw Error("Invalid payload: missing or non-object `triage`");if(!e.repoUrls||typeof e.repoUrls!=`object`||Array.isArray(e.repoUrls))throw Error("Invalid payload: missing or non-object `repoUrls`");let n=e.triage,r=F.triage;if(t===`replace`)for(let e of[...r.keys()])Sd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(Sd.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&S(r,e,{color:t.color});let n=hn(t);if(n&&(!i||!hn(r.get(e)))&&S(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&S(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&S(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&S(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&gn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&xn(r,e,n,!0,vn(t,n))}await Md(),await kd();let a=0,o=null;try{await rc(e.repoUrls,t),a=Object.keys(e.repoUrls).length}catch(e){console.warn(`applyTriageImport: repo-URL import failed:`,e),o=e}return{triageEntries:Object.keys(n).length,repoUrls:a,repoUrlError:o}}function Pp(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Fp(e){let t=new Set;for(let n of e){let e;try{e=await Kc(n)}catch(e){if(Pp(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Di(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Ip(){let e=new Set;for(let t of F.triage.keys())Sd.test(t)||e.add(t);return e}async function Lp(e){let t=Ip();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Fp(e),r=new Set;for(let e of t)n.has(e)&&r.add(e);if(r.size===0)return{orphanedCount:0,sharedCount:0};let i=await Uc(),a=new Set(e),o=await Fp(i.filter(e=>!a.has(e))),s=0,c=0;for(let e of r)o.has(e)?c++:s++;return{orphanedCount:s,sharedCount:c}}async function Rp(){let e=new Set(F.triage.keys()),t=[];for(let[e,n]of F.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await Uc(),r=new Set(n),i=await Fp(n),a=!1;for(let t of e){if(Sd.test(t)||i.has(t))continue;let e=F.triage.get(t);!e||!(e.color||hn(e)||e.comment||e.fix||e.flagged!==void 0)||S(F.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)Sd.test(e)||i.has(e)&&r.has(n)||_n(F.triage,e,n)&&xn(F.triage,e,n,!1)&&(a=!0);a&&await kd()}var zp=1;async function Bp(e){let t=new Set,n=await Di(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function Vp(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Hp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await cl(),n=new Map(t.map(e=>[e.integrity,e.name])),r=[];for(let t of e){let e=n.get(t);if(!e)continue;let i;try{i=await ml(t)}catch(e){console.warn(`Workspace export: failed to read bundle ${t}: ${e?.message??e}`);continue}r.push({integrity:t,name:e,data:i.toBase64()})}return r}function Up(e){let t=Qs(e);return t?{github:t}:null}async function Wp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Kc(n)}catch(e){console.warn(`Workspace export: skipping ${n}: ${e?.message??e}`),(e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`))&&await gu(n,null);continue}let r=Up(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Gp(e,{includeBundleBytes:t=!1}={}){let n=await Wp(e),r=new Set;for(let e of n)for(let t of await Bp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of F.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=yn({...t,ignoredReports:n});o&&(a[e]=o)}let o={};for(let e of n)e.repo?.github&&(o[e.name]=e.repo.github);let s=(e.bundles??[]).filter(e=>typeof e==`string`&&e.length>0),c={version:zp,exportedAt:new Date().toISOString(),workspace:{id:e.id,name:e.name,privateKey:e.privateKey,createdAt:e.createdAt},reports:n,bundles:s,repoUrls:o,triage:a};if(t){let e=await Hp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Kp(e,{includeBundleBytes:t=!1}={}){let n=await Gp(e,{includeBundleBytes:t});return{blob:new Blob([await Tn(JSON.stringify(n))]),filename:`${Vp(e.name)}.deepview-workspace.json.gz`}}async function qp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Kp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await v(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${Vp(e.name)}.deepview-workspace.enc`}}async function Jp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await qp(e,t,{includeBundleBytes:n}):await Kp(e,{includeBundleBytes:n})}async function Yp(e){return{reports:await Wp(e)}}async function Xp(e){let t=await Yp(e);return{blob:new Blob([await Tn(JSON.stringify(t))]),filename:`${Vp(e.name)}.deepview-reports.json.gz`}}function Zp(e){return hn(e)??null}async function Qp(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Di(n.content);if(e)for(let n of e.findings)!n.id||t.has(n.id)||t.set(n.id,{severity:n.severity,file:n.file,line:n.line,description:cp(n.description)})}return t}async function $p(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=F.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&S(r,t,{color:a});let o=r.get(t)?.comment??``,s=typeof n.comment==`string`?n.comment:``;s&&o&&o!==s?i.push({id:t,property:`comment`,local:o,imported:s}):s&&s!==o&&S(r,t,{comment:s});let c=r.get(t)?.fix??``,l=typeof n.fix==`string`?n.fix:``;l&&c&&c!==l?i.push({id:t,property:`fix`,local:c,imported:l}):l&&l!==c&&S(r,t,{fix:l});let u=Zp(n),d=hn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&S(r,t,{triage:u,...u===`ignored`?{}:{ignoredReports:void 0}});let f=r.get(t)?.flagged,p=typeof n.flagged==`boolean`?n.flagged:void 0;p!==void 0&&f!==void 0&&f!==p?i.push({id:t,property:`flagged`,local:f?`flagged`:`not flagged`,imported:p?`flagged`:`not flagged`}):p!==void 0&&p!==f&&S(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(gn(r.get(t)))for(let e of m)typeof e==`string`&&xn(r,t,e,!0,vn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&em(i,e)}await kd()}function em(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&tm(n.id,n.property)===n.local&&(n.property===`color`?S(F.triage,n.id,{color:n.imported}):n.property===`comment`?S(F.triage,n.id,{comment:n.imported}):n.property===`fix`?S(F.triage,n.id,{fix:n.imported}):n.property===`triage`?S(F.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&S(F.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function tm(e,t){if(t===`color`)return F.triage.get(e)?.color;if(t===`triage`)return hn(F.triage.get(e))??null;if(t===`comment`)return F.triage.get(e)?.comment??``;if(t===`fix`)return F.triage.get(e)?.fix??``;if(t===`flagged`){let t=F.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function nm(e){if(Array.isArray(e))for(let t of e){let e;try{e=Uint8Array.fromBase64(t.data)}catch(e){console.warn(`Workspace import: failed to decode bundle ${t.integrity}: ${e?.message??e}`);continue}try{let n=await fl(t.name,e);n?.integrity!==t.integrity&&console.warn(`Workspace import: bundle ${t.name} integrity mismatch (claimed ${t.integrity}, computed ${n?.integrity})`)}catch(e){console.warn(`Workspace import: failed to save bundle ${t.name}: ${e?.message??e}`)}}}async function rm(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Wc(t.name,t.content);let{count:e,source:r}=Uu(t.content);Vu(t.name,e,r??Bu(t.name)),n.push(t.name)}catch(e){console.warn(`Workspace import: failed to save ${t.name}: ${e.message}`)}Array.isArray(e.bundleBlobs)&&e.bundleBlobs.length>0&&await nm(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await Qp(e.reports):new Map;await $p((await u(e.triage,t=>e.reports.find(e=>e.name===t)?.content)).entries,t,r);let i=Array.isArray(e.bundles),a=i?e.bundles.filter(e=>typeof e==`string`&&e.length>0):[],o=await lu({id:e.workspace.id,name:e.workspace.name,privateKey:e.workspace.privateKey,reports:n,bundles:i?a:void 0,preserveBundles:!i,createdAt:e.workspace.createdAt}),s=new Set(n),c=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!s.has(t)||typeof n!=`string`||!n||(c[t]=n);if(Object.keys(c).length>0)try{await ic(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function im(e){return!e||typeof e!=`object`||Array.isArray(e)?`payload is not an object`:e.version!==void 0||e.workspace!==void 0?`payload claims to be a workspace export`:Array.isArray(e.reports)?e.reports.length>y?`reports count (${e.reports.length}) exceeds cap (${y})`:null:`reports field must be an array`}function am(e){return im(e)===null}async function om(e){if(_(e))return{kind:`encrypted`};let t;try{t=await En(e)}catch(e){throw Error(`gzip decompression failed: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch{return{kind:`workspace`,text:t}}return am(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var sm=`deepview.workspaceApp`,cm=2,lm=new Set,um=new Set,dm=0,fm=0,pm=0,mm=new Map,hm=Promise.resolve(),gm=null;function _m(e=Ua(sm)){try{let t=JSON.parse(e);if(t?.version===cm&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:cm,revision:``,links:`[]`,entries:{}}}function vm(){for(let e of lm)e()}function ym(e){let t=hm.then(()=>eo(sm,t=>e(_m(t))));return hm=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function bm(e){return JSON.stringify(e.reports.toSorted())}function xm(){return JSON.stringify(cd().map(({name:e,groups:t})=>({name:e,groups:t})))}function Sm(e){return id()&&e.links===xm()}function Cm(e,t){return e.workspaceRevisions?.[t]??``}function wm(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(mm.get(t?.id)??0)&&n.workspaceRevision===Cm(e,t?.id)}function Tm(e,t,n){return n.reportEpoch===pm&&n.reportRevision===(e.reportRevision??e.revision)&&wm(e,t,n)}function Em(e,t){return Tm(_m(),e,t)}function Dm(e,t){if(dm||um.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==bm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Om(e){return Dm(e,_m())?.appMode??null}function km(e){let t=_m(),n=Dm(e,t);return!n||!Sm(t)?null:n}async function Am(e,t=null){let n;do n=hm,await n;while(n!==hm);let r=_m(),i=r.reportRevision??r.revision;return t&&(!Tm(r,e,t)||!Sm(r))?null:{epoch:fm,revision:r.revision,reportEpoch:pm,reportRevision:i,workspaceId:e?.id,workspaceEpoch:mm.get(e?.id)??0,workspaceRevision:Cm(r,e?.id)}}async function jm(e,t,n){let r=!1;return await ym(i=>{if(n.epoch!==fm||n.revision!==i.revision||!wm(i,e,n)||!Sm(i))return;let a=R().find(t=>t.id===e.id);if(a&&bm(a)===bm(e))return i.entries[e.id]={...t,reports:bm(e)},r=!0,JSON.stringify(i)}),r&&vm(),r}function Mm(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)fm++,t===void 0&&pm++,dm++;else for(let t of e)mm.set(t,(mm.get(t)??0)+1),um.add(t);return vm(),ym(n=>{if(n.reportRevision??=n.revision,e===null)n.revision=crypto.randomUUID(),t===void 0&&(n.reportRevision=n.revision),n.entries={};else{n.workspaceRevisions??={};for(let t of e)n.workspaceRevisions[t]=crypto.randomUUID(),delete n.entries[t]}return t!==void 0&&(n.links=t),JSON.stringify(n)}).finally(()=>{if(e===null)dm--;else for(let t of e)um.delete(t);vm()})}function Nm(e){return lm.add(e),()=>lm.delete(e)}za(()=>{let e=Ua(sm);e!==gm&&(gm=e,vm())}),zl(e=>{Mm([e]).catch(()=>{})}),Ll(e=>{Mm([e]).catch(()=>{})}),Vc(e=>{Mm(R().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),ad(()=>{if(!id()){vm();return}let e=xm();_m().links===e?vm():Mm(null,e).catch(()=>{})});var Pm=null,Fm=null;function Im(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function Lm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Rm(){if(`serviceWorker`in navigator)try{let e=await navigator.serviceWorker.getRegistrations();for(let t of e){let e=t.active?.scriptURL??t.installing?.scriptURL??t.waiting?.scriptURL;e&&e.endsWith(`/brotli-sw.js`)&&await t.unregister()}}catch{}}var zm=`./brotli-fallback.js`,Bm=Symbol(`brotli worker unavailable`),Vm=null,Hm=!1,Um=0,Wm=new Map;function Gm(){return Fm||(Fm=(async()=>await import(zm))(),Fm)}function Km(){Hm=!0,Vm&&=(Vm.terminate(),null);let e=[...Wm.values()];Wm.clear();for(let t of e)t.resolve(Bm)}function qm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Wm.get(t);i&&(Wm.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Jm(){if(Vm)return Vm;if(Hm||typeof Worker>`u`)return null;try{Vm=new Worker(nr(new URL(zm,import.meta.url)),{type:`module`})}catch{return Hm=!0,null}return Vm.addEventListener(`message`,qm),Vm.addEventListener(`error`,Km),Vm.addEventListener(`messageerror`,Km),Vm}function Ym(e){let t=Jm();return t?new Promise((n,r)=>{let i=++Um;Wm.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Wm.delete(i),Km(),n(Bm)}}):Promise.resolve(Bm)}async function Xm(){await Rm();let e=Im();return e?{kind:`native`,format:e}:{kind:`fallback`}}function Zm(){return Pm||(Pm=Xm(),Pm)}async function Qm(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await Zm();if(n(),r.kind===`native`)return Lm(r.format,e);let i=await Ym(e);return n(),i===Bm?(await Gm()).brotliDecompress(e):i}Zm().catch(()=>{});var $m=document.querySelector(`#drop-zone`),z=document.querySelector(`#report`),eh=document.querySelector(`app-sidebar`);function th(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,N(A`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function nh(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var rh={get state(){return F},listWorkspaces:R,addReportToWorkspace:_u,addBundleToWorkspace:bu,onReportMembershipChanged:zl,onBundleMembershipChanged:Bl,onWorkspaceDeleted:Ll,onWorkspacePrivateKeyChanged:Rl,analyzeContent:Uu,setCount:Vu,gunzipBytes:wn,listBundles:cl,listFiles:Uc,readBundle:ml,readFileBytes:qc,saveBundle:fl,saveFileBytes:Yc,onFileMutated:Vc,async saveTriage(){return await Md(),kd()},getSecureItem:Ua,setSecureItem:Wa,removeSecureItem:Ga,onSecureStorageHydrated:za};function ih(e){e.installSyncHost(rh),hd(()=>e.triageSync.notify())}var B=null,ah=null;function oh(){try{return Ua(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var sh=!1;function ch(e){sh=!!e}function lh(){if(sh||F.serverMode!==`e2e`)return!0;try{return dn()?.mode===`managed`}catch{return!1}}function uh(){return ah||(lh()&&!B?Promise.resolve(null):(ah=(async()=>{try{let e=await import(`./client-sync.js`);return ih(e),B=e,ph(),e}catch(e){throw ah=null,e}})(),ah))}var dh=[];function fh(e){B?e(B):dh.push(e)}function ph(){let e=dh.splice(0);for(let t of e)try{t(B)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function mh(e,t){let n={cancelled:!1,unsub:null};return fh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function hh(e,t){return B?B.isInRemote(e,t):!1}function gh(e,t){return B?B.isBundleInRemote(e,t):!1}var _h=`deepview.objstore-presence.`;function vh(e){try{let t=localStorage.getItem(_h+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function yh(e,t){if(B&&B.isInRemote(e,t))return!0;let n=vh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function bh(e,t){if(B&&B.isBundleInRemote(e,t))return!0;let n=vh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function xh(e){return B?B.remoteCount(e):0}function Sh(e){return B?B.differingReports(e):[]}function Ch(e){return mh(e,(e,t)=>e.onAutoDownloaded(t))}function wh(e){return mh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function Th(e){return mh(e,(e,t)=>e.onChange(t))}var Eh=null,Dh=null,Oh=null,kh=[];function Ah(e){if(B){B.setRedraw(e);return}Eh=e,fh(t=>{Eh===e&&t.setRedraw(e)})}function jh(e){if(B){B.setAuthenticationResolver(e);return}Dh=e,fh(t=>{Dh===e&&t.setAuthenticationResolver(e)})}function Mh(e){if(B){B.setHydrationConflictResolver(e);return}Oh=e,fh(t=>{Oh===e&&t.setHydrationConflictResolver(e)})}async function Nh(e,t){if(lh()||!oh()&&!B)return;let n=await uh();if(n&&!lh())return n[e](...t)}function Ph(...e){return Nh(`downloadFileFromRemote`,e)}function Fh(...e){return Nh(`fetchBundleFromRemote`,e)}function Ih(...e){return Nh(`putFile`,e)}function Lh(...e){return Nh(`holdLocalChangeChecks`,e)}function Rh(...e){return Nh(`putBundleToRemote`,e)}function zh(...e){return Nh(`deleteFromRemote`,e)}function Bh(...e){return Nh(`deleteBundleFromRemote`,e)}function Vh(...e){return Nh(`openWorkspace`,e)}async function Hh(...e){return(B??(ah?await ah:null))?.closeWorkspace(...e)}function Uh(...e){return Nh(`recheckRemoteStorage`,e)}function Wh(...e){return Nh(`resolveReportDifference`,e)}function Gh(e,t){if(B)return B.triageSync[e](...t);fh(n=>{n.triageSync[e](...t)})}var V={get status(){return B?B.triageSync.status:`off`},get openSessions(){return B?B.triageSync.openSessions:[]},get persistenceDegraded(){return B?B.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return B?B.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return lh()?Promise.resolve(null):uh().then(e=>{e.triageSync.setEnabled(!0);let t=kh;kh=[];for(let n of t)try{e.openWorkspace(n)}catch(e){console.warn(`client-sync: openWorkspace(${n}) failed during re-enable:`,e)}return null}).catch(e=>(console.warn(`client-sync: setEnabled load failed:`,e),null));if(B){kh=B.openWorkspaceIds();for(let e of kh)try{B.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}B.triageSync.setEnabled(!1);return}Gh(`setEnabled`,[e])},isEnabled(){return B?B.triageSync.isEnabled():oh()},openSession(e){Gh(`openSession`,[e])},closeSession(e){Gh(`closeSession`,[e])},refreshSession(e){Gh(`refreshSession`,[e])},dismissError(e){Gh(`dismissError`,[e])},setForcedOff(e){Gh(`setForcedOff`,[e])},setProtocolLocked(e){Gh(`setProtocolLocked`,[e])},setServerUrl(e){Gh(`setServerUrl`,[e])},getServerUrl(){return B?B.triageSync.getServerUrl():null},notify(){Gh(`notify`,[])},onStatusChange(e){return mh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return mh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return mh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return mh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Kh=class extends ha{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Ps(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Ps(n=>{if(!n){t(),this._dispose===t&&(this._dispose=null),this.updateComplete.then(()=>this.requestUpdate());return}e=this._render()});return this._dispose=t,e}),this._disposers.push(()=>this._dispose&&this._dispose())}disconnectedCallback(){for(super.disconnectedCallback();this._disposers.length>0;)this._disposers.pop()()}};function qh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Jh(e){let[t,n,r]=e.split(`/`);return r===void 0&&t!==void 0&&n!==void 0&&t.length<=39&&/^[a-zA-Z\d](?:-?[a-zA-Z\d])*$/u.test(t)&&n.length<=100&&n!==`.`&&n!==`..`&&/^[a-zA-Z\d._-]+$/u.test(n)}function Yh(e,t){if(typeof e!=`string`||e.length>2048)return null;let n;try{n=new URL(e)}catch{return null}if(n.href!==e||n.origin!==`https://github.com`||n.username||n.password)return null;let r=t.exec(n.pathname);if(!r)return null;let i=`${r[1]}/${r[2]}`,a=Number(r[3]);return!Jh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Xh(e){return Yh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function Zh(e){return Yh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function Qh(e){let t=Xh(e);if(t)return{...t,kind:`pull`};let n=Zh(e);return n?{...n,kind:`issue`}:null}function $h(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function eg(e){return I()&&F.currentManagedTeam&&F.managedSession&&!F.managedSession.publicShare?F.managedIssues.get(e?.id)??null:null}function tg(e){return eg(e)?.autoFix??``}function ng(e,t){return t?.fix||tg(e)||eg(e)?.url||``}function rg(e,t={},n){let r=!1;for(let i of e){if(n&&F.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=Zh(e?.url)?{url:e.url,autoFix:Xh(e.autoFix)?e.autoFix:null}:null,o=F.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix||(a?F.managedIssues.set(i,a):F.managedIssues.delete(i),r=!0)}return r}function ig(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function ag(e,t,n){let r=ig(t);if(!e._revalidationCopies){let t=ig(e);if(Object.keys(t).length===0&&Object.keys(r).length===0)return[];e._revalidationCopies=Object.keys(t).length>0?[{reportName:e._reportName??``,fields:t}]:[]}return Object.keys(r).length>0&&e._revalidationCopies.push({reportName:n,fields:r}),e._revalidationCopies}function og(e){let t=new Map,n=new Set(Ii);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Li(i)||String(a).trim().toLowerCase():String(a).trim();if(e===`revalidate`&&!o||e===`revalidate`&&!n.has(o))continue;t.has(e)||t.set(e,new Map);let s=t.get(e);s.has(o)||s.set(o,new Set),s.get(o).add(r)}return[...t].filter(([,e])=>e.size>1).map(([e,t])=>({field:e,variants:[...t].map(([e,t])=>({value:e,reports:[...t]}))}))}var sg=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function cg(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||sg.has(r)||i==null)continue;if(r===`revalidate`){let a=Li(t);if(!a)continue;let o=Li(e);o?o!==a&&(n=!0):e[r]=i;continue}let a=e[r];if(a==null){e[r]=i;continue}r.startsWith(`revalidate`)&&String(a).trim()!==String(i).trim()&&(n=!0)}return n}function lg(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:Ni(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:Ni(t),reason:t.correctedSeverityReason});let i=ag(e,t,n);(cg(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function ug(e,t=null){let n=t??e.filter(e=>e.isApp),r=e.filter(e=>!e.isApp);if(n.length===0||r.length===0||t&&e.some(e=>e.isApp)||r.some(e=>typeof e.id!=`string`||!e.id))return[e];let i=new Set(r.map(e=>e.id)),a=new Map,o=new Set;for(let t of n){let n=t.revalidateInputs===void 0?[]:t.revalidateInputs;if(!Array.isArray(n))return[e];for(let t of n){if(!i.has(t))return[e];o.add(t)}a.set(t,n)}if(o.size!==i.size)return[e];let s=new Map([...i].map(e=>[e,e])),c=e=>{let t=e;for(;s.get(t)!==t;)t=s.get(t);for(;s.get(e)!==t;){let n=s.get(e);s.set(e,t),e=n}return t};for(let e of a.values()){if(e.length===0)continue;let t=c(e[0]);for(let n of e)s.set(c(n),t)}let l=new Map;for(let t of e){let e=a.get(t),n=e?e.length>0?c(e[0]):t:c(t.id);l.has(n)||l.set(n,[]),l.get(n).push(t)}return l.size===1?[e]:[...l.values()]}function dg(e,{showRevalidation:t=!0,upstreamOnly:n=!1,hideRuledOut:r=!1,merges:i=[]}={}){let a=[],o=new Set;for(let i=0;i<e.length;i++){let s=e[i];for(let e of s.groups){for(let t of e)t.id&&[`refuted`,`unreachable`].includes(Li(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Li(e)!==`revalidation`).map(pg):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Li(e))):e:e.filter(e=>Li(e)!==`revalidation`).map(pg),l=c.length===e.length&&c.every((t,n)=>t===e[n])?e:c;l.length>0&&a.push({group:l,sourceGroup:e,reportIndex:i,reportName:s.fileName??``,hasApp:l.some(e=>e.isApp)})}}let s=a.map((e,t)=>t),c=a.map(e=>e.hasApp),l=e=>{let t=e;for(;s[t]!==t;)t=s[t];for(;s[e]!==t;){let n=s[e];s[e]=t,e=n}return t},u=(e,t)=>{e=l(e),t=l(t),e!==t&&(s[t]=e,c[e]||=c[t])},d=new Map;for(let e=0;e<a.length;e++)for(let t of a[e].group)t.id&&(d.has(t.id)||d.set(t.id,[]),d.get(t.id).push({index:e,app:t.isApp}));for(let e of d.values()){let t=new Map,n=e.find(e=>e.app);for(let{index:r}of e){n&&u(n.index,r);let e=a[r].reportIndex;t.has(e)?u(t.get(e),r):t.set(e,r)}}for(let e of d.values()){let t=null;for(let{index:n}of e)c[l(n)]||(t===null?t=n:u(t,n))}for(let e of i){let t=null;for(let n of e)for(let{index:e}of d.get(n)??[])t===null?t=e:u(t,e)}let f=new Map;for(let e=0;e<a.length;e++){let t=l(e);f.has(t)||f.set(t,[]),f.get(t).push(a[e])}let p=new Map,m=[];for(let r of f.values()){let a=r[0].group,o=a.map(e=>e.id).filter(Boolean);if(r.length===1&&new Set(o).size===o.length&&i.length===0){let i=e.length>1&&a.find(e=>e.isApp);if(i){let e=[...a];e.workspaceKey=i.id??String(i._id),m.push(...fg(r,e,t,n))}else m.push(...fg(r,a,t,n));continue}let s=new Map,c=new Map,l=[];for(let{group:e,reportName:t}of r)for(let n of e)if(n.id&&c.has(n.id))lg(c.get(n.id),n,t,s);else{let e={...n,_reportName:n._reportName??t};n.id&&c.set(n.id,e),l.push(e)}let u=new Set;for(let e of i)for(let t of e)c.has(t)&&u.add(t);for(let{group:e}of r)if(e.length>1)for(let t of e)t.id&&u.add(t.id);let d=[...u].map(e=>c.get(e));for(let e of l)u.has(e.id)||d.push(e);if(e.length>1){let e=d.find(e=>e.isApp);e&&(d.workspaceKey=e.id??String(e._id))}m.push(...fg(r,d,t,n));for(let[e,t]of s){let n=p.get(e);p.set(e,n?{finding:n.finding,copies:[...n.copies,...t.copies]}:t)}}return Object.defineProperty(m,"ruledOutIds",{value:o,configurable:!0}),{groups:m,conflicts:p}}function fg(e,t,n,r){if(n)return[t];if(r){let n=ug(e.flatMap(e=>e.sourceGroup));if(n.length===1)return[t];let r=[],i=new Set;for(let e of n){let n=new Set(e.filter(e=>!e.isApp&&e.id).map(e=>e.id)),a=t.filter(e=>n.has(e.id));if(a.length>0){r.push(a);for(let e of a)i.add(e.id)}}let a=new Set(t.map(e=>e.id).filter(Boolean));return i.size===a.size?r:[t]}return ug(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function pg(e){let t=Object.keys(e).filter(e=>e.startsWith(`revalidate`)||e===`_revalidationCopies`);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function mg(e,t=Zd){let n=Cu(wu(e.flat()));return{linkedIds:e=>[...ud(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...Qd(e)];for(let e of r)for(let t of wu(e.members))n.add(t);return r}}}var hg=null,gg=0;function _g(){return F.currentView===`links`&&hg?.owner===F.currentLinks?hg:null}function vg(){gg++,hg=null}async function yg(e,t,n,r){if(F.currentView!==`links`||!F.currentLinks)return;let i=Ns(F.currentLinks),a=++gg;hg={owner:i,id:e,reportName:t,group:null,error:``},F.focusCodeStack=[],F.focusCodeAt=0;let o=()=>a===gg&&F.currentView===`links`&&F.currentLinks===i;try{if(I()){let a=Zd([e]).find(e=>e.report===t&&(!r||e.managedReportId===r)&&(n==null||e.index===Number(n)));if(!a)throw Error(`This finding is no longer in the report.`);hg={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},F.activeTabByGroup.set(a.members[0].id,e);return}let a=await Di(await Kc(t));if(!o())return;let s=(Si(a?.data)??[]).map(e=>Array.isArray(e)?e:[e]),c=t=>t?.some(t=>String(t?.id)===e),l=c(s[n])?s[n]:s.find(c);if(!l)throw Error(`This finding is no longer in the report.`);let{data:u}=a,d=l.filter(e=>e?.id).map(e=>{let n={...e,_reportName:t,_repoFallback:vi(u)??Qs(t),_repoDirectory:yi(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return _i(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Ri(n,n._source)),n});if(await Promise.all([Id(),Br(`report`,t),...sp(t).map(e=>Br(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));xi([d],mg([d],e=>[...Zd(e),...F.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),hg.group=d,F.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(hg.error=e.message||`Unable to load this finding.`)}}function bg(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function H(e){return e.workspaceKey??T(e[0])}function xg(e){return Array.isArray(e)?e:[e]}function Sg(){return F.revalidationDetailed===!0}function Cg(e){return e?._reportName??``}var wg=null,Tg=!0;function Eg(){let e=F.reports;return!Array.isArray(e)||e.length===0||(e!==wg&&(wg=e,Tg=Mr(e)),Tg)}function Dg(e){return!e.isUpstream||F.showRevalidation===!1||F.upstreamOnly===!0||!Eg()}function Og(){let e=F.managedSession;return I()&&(e?.publicShare===!0||!tt(e?.role,`triage`))}function kg(e){return Dg(e)&&!Og()}function U(e){if(!Dg(e))return;let t=F.triage.get(T(e)),n=t?.triage===`ignored`&&o(e,kn())?{...t,triage:void 0}:t;if(!I())return n;let r=F.managedComments?.get(e.id)??[];return r.length===0&&!n?.comment?n:{...n,comment:r.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
4
-
5
- `)}}function Ag(e){return Dg(e)&&(s(e,F.triage.get(T(e)),kn())===`ignored`||o(e,kn())&&_n(F.triage,T(e),Cg(e)))}function jg(e,t=U(e)){if(Dg(e))return s(e,t,kn())??(Ag(e)?`ignored`:void 0)}function Mg(e){return _g()?.group===e?e:e.linkedTabs?e.linkedTabs:Sg()?e:Ng(e)}function Ng(e){return e.length<=1||!e.some(Fr)?e:e.filter(Fr)}function Pg(e){let t=Mg(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Fr(e),r=+!!Fr(t);if(n!==r)return r-n;let i=+!!U(e)?.color,a=+!!U(t)?.color;if(i!==a)return a-i;let o=ji[O(e,F.severityMode)]||0,s=ji[O(t,F.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Fg(e){return e.length===1?e[0]:Pg(e)[0]}function Ig(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function Lg(e){let t=U(e);return!!t?.comment||!!(t?.fix||tg(e))||t?.flagged===!0}function Rg(e){if(e.length===1)return e[0];let t=Pg(e);if(t.length===1)return t[0];let n=F.activeTabByGroup.get(H(e));if(n){let e=t.find(e=>T(e)===n);if(e)return e}let r=t;if(F.filterAnalyzer||F.filterModel){let e=t.filter(d_);e.length>0&&(r=e)}return r.find(Lg)??r[0]}function zg(e){return e?._repoFallback||F.repoUrl||``}function Bg(e){return{github:zg(e),directory:e?._repoDirectory??``}}function Vg(e){for(let t of Af().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||zg(e)||null}function Hg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Ug(e){let t=Hg(e),n=0,r=!1,i,a=!1,o=!1,s,c=!1,l=null,u=!1,d=!0;for(let e of t){let t=U(e),f=jg(e,t),p=t?.color;p===void 0&&f===void 0||(n++,p!==void 0&&(a?p!==i&&(r=!0):(a=!0,i=p)),c?f!==s&&(o=!0):(c=!0,s=f),f?(l===null&&(l=f),f===`ignored`&&t?.triage!==`ignored`?d=!1:u=!0):d=!1)}let f=r||o,p=!f&&a?i:null,m=n>0&&d,h=!f&&l!==null?l:null;return{hasConflict:f,commonColor:p,anyTriage:u,allTriaged:m,commonTriage:h,allIgnored:h===`ignored`&&n===t.length,isInProgress:h===`inprogress`,isFixed:h===`fixed`,isInvalid:h===`invalid`,isDeleted:h===`deleted`,isIgnored:h===`ignored`}}function Wg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(kg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Gg(e,r))}function Gg(e,t){if(!kg(e))return!1;let n=(U(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Kg(e,t){if(!kg(Rg(e)))return{targets:[],clearing:!1};let n=Ug(e);return{targets:qg(e,n),clearing:t===`restore`||Jg(e,n)===t}}function qg(e,t=Ug(e)){let n=Hg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Rg(e)]:n;return r.every(kg)?r:r.filter(kg)}function Jg(e,t=Ug(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&Hg(e)!==e||!t.hasConflict?t.commonTriage??null:jg(n??Rg(e))??null}function Yg(e){let t=Hg(e);if(t.length<2)return!1;let n=Ug(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>U(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!kg(e))continue;let t=T(e),i=F.triage.get(t);jg(e,i)!==n&&(n===`ignored`&&o(e,kn())||n!==`ignored`&&i?.ignoredReports?.length||S(F.triage,t,{triage:n})&&(r=!0))}return r}var Xg=null;function Zg(){Xg=null}function Qg(e,t=!1,n=!1){let r=F.reports,i=F.workspaceMerges,a=I();if(!Xg||Xg.reports.length!==r.length||Xg.reports.some((e,t)=>e!==r[t])||Xg.merges!==i||Xg.mergeCount!==i.length||Xg.securityLinksTick!==F.linksTick||Xg.findingIndexTick!==F.findingIndexTick||Xg.managed!==a){let e=r.flatMap(e=>e.groups??[]);xi(e,mg(e)),Xg={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:F.linksTick,findingIndexTick:F.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return Xg[o]||(Xg[o]=dg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),Xg[o]}function $g(){return Qg(F.showRevalidation!==!1).groups}function e_(){return Qg(!0).groups}function t_(){return Qg(!0,!1,!!F.currentWorkspace).conflicts}function n_(){let e=Qg(F.showRevalidation!==!1,F.upstreamOnly===!0,!!F.currentWorkspace),t=e.groups;if(F.showRevalidation===!1||F.upstreamOnly)return t;if(F.currentWorkspace){let n=Sg();return(!e.linkedGroups||e.linksTick!==F.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=bg(t,ud,Ng,Mg),e.linksTick=F.linksTick,e.linkedDetailed=n),e.linkedGroups}return Sg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Lr(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=H(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function r_(){let e=n_();if(F.viewMode===`kanban`)return e;let t=e.filter(e=>Ug(e).commonTriage===F.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function i_(e){if(F.showRevalidation||F.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(T)),n=new Map;for(let e of e_())for(let r of ug(e))if(r.some(e=>t.has(T(e))))for(let e of r)n.set(T(e),e);return n.size===e.length&&e.every(e=>n.get(T(e))===e)?e:n.size>0?[...n.values()]:e}function a_(e){let t=_g()?.group;if(t&&H(t)===e)return t;for(let t of n_())if(H(t)===e)return t;return null}function o_(){let e=new Set;if(F.currentWorkspace||!ld())return e;let t=F.currentFile??F.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of F.reports)if(e.fileName===t)for(let t of e.groups)for(let e of t)e.id!=null&&n.add(String(e.id));for(let r of n)ud(r).some(e=>!n.has(e)&&Yd(e).some(e=>e!==t))&&e.add(r);return e}var s_=`\0`,c_=`\x01`,l_=`\x02`;function u_(e){return zi(e.model)||null}function d_(e){let t=b_();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===s_?null:t.filterAnalyzer)||t.filterModel&&u_(e)!==(t.filterModel===l_?null:t.filterModel))}function f_(e){let t=typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:null;return e.isApp&&!(e._source??e.source)&&t?t:typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:t}function p_(e){let t=new Set;for(let n of e)for(let e of n)t.add(f_(e));return t}function m_(){F.filterSeverities=new Set,F.filterColors=new Set,F.filterSources=new Set,F.filterAnalyzer=``,F.filterModel=``,F.filterRepo=``,F.filterConfMin=0,F.filterConfMax=10,F.filterInclude=``,F.filterIncludeNegate=!1,F.filterComment=``,F.filterFix=``,F.filterFlagged=``,F.filterDuplicates=``,F.filterCrossContext=``,F.filterAppStacked=``,F.filterSecurity=``,F.filterRevalidate=``,F.filterPartial=``,F.sortBy=`severity`}var h_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function g_(){let e={};for(let t of h_){let n=F[t];e[t]=n instanceof Set?new Set(n):n}return e}var __=null;function v_(e){__=e}function y_(){__=null}function b_(){return __??F}function x_(e){return kr(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function S_(e){let t=fr(`confirmed`,``);return e.some(e=>t.includes(x_(e)))}function C_(e,t){let n=e.map(Mg).filter(e=>e.length>0);return xr(n,t,br(e,Mg,kr),kr)?`confirmed`:``}function w_(e,t=Mg){return vr(e,t)}function T_(e,{tabs:t=Mg,kindOf:n=kr,severityMode:r=F.severityMode}={}){return Cr(e,{tabs:t,kindOf:n,severityMode:r})}function E_(e){return F.showRevalidation===!1||F.upstreamOnly||Sg()?!1:T_(e)}function D_(e,{resetSort:t=!0}={}){F.filterConfMin=w_(e),F.filterConfMax=10,F.filterRevalidate=C_(e,F.filterConfMin),F.filterPartial=``,t&&(F.sortBy=O_(e)?`priority-desc`:`severity`)}function O_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(k_(e)===void 0)return!1;let t=e.filter(e=>e.isApp);if(t.length===0)return!0;let n=e.some(e=>e.priority!==void 0);return t.some(e=>e.priority!==void 0||!n&&Lr(e))})}function k_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Lr)?0:void 0}function A_(e){let t=b_();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&An(e.file)||!n&&!An(e.file))return!1}if(t.filterRevalidate){let n=fr(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(x_(e)))return!1}if(!t.filterRevalidate){let n=Rr(e)?0:mr(e);if(n===void 0){if(t.filterConfMin>0)return!1}else if(n<t.filterConfMin||t.filterConfMax<10&&n>t.filterConfMax)return!1}return!0}var j_={raw:``,inc:``,idWords:[]};function M_(e){if(j_.raw!==e){let t=e.toLowerCase();j_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return j_}function N_(e){if(!A_(e))return!1;let t=b_(),{inc:n,idWords:r}=M_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(O(e,F.severityMode)))return!1;if(t.filterColors.size>0){let n=U(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!d_(e)||t.filterRepo&&f_(e)!==(t.filterRepo===c_?null:t.filterRepo))return!1;if(n){let i=U(e),a=Pn(e).includes(n)||(i?.comment??``).toLowerCase().includes(n)||(i?.fix??``).toLowerCase().includes(n)||r.some(t=>e.id?.toLowerCase().includes(t));return t.filterIncludeNegate?!a:a}return!0}function P_(e){let t=b_();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(U(e)));if(t.filterComment){let e=n(e=>!!e?.comment);if(t.filterComment===`with`?!e:e)return!1}if(t.filterFix){let n=e.some(e=>!!(U(e)?.fix||tg(e)));if(t.filterFix===`with`?!n:n)return!1}if(t.filterFlagged){let e=n(e=>e?.flagged===!0);if(t.filterFlagged===`with`?!e:e)return!1}return!0}function F_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!af(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function I_(){return F.showRevalidation!==!1&&!F.upstreamOnly}function L_(e){if(I_())return!1;let t=Mg(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=f_(e);t&&n.add(t);let i=F_(e);i&&r.add(i)}return n.size>1||r.size>1}function R_(e){if(!I_()||Mg(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function z_(e){return e.some(e=>e.isSecurity===!0)}function B_(e){return e.some(z_)&&e.some(e=>!z_(e))}function V_(e){return e.filter(e=>e.some(A_)).map(Mg)}function H_(e){let t=!F.currentWorkspace&&b_().filterDuplicates,n=t?o_():null,r=b_().filterCrossContext,i=b_().filterAppStacked,a=b_().filterSecurity;return e.filter(e=>e.some(N_)&&P_(e)&&(!t||t===`with`===e.some(e=>n.has(T(e))))&&(!r||r===`with`===L_(e))&&(!i||i===`with`===R_(e))&&(!a||a===`with`===z_(e)))}function U_(e,t){let n=t===`desc`?-1:11;return(r,i)=>{let a=r[e]??n,o=i[e]??n;return(t===`desc`?o-a:a-o)||r.file.localeCompare(i.file)}}function W_(e){let t=e===`desc`?-1:11;return(n,r)=>{let i=n.confidence===void 0&&n.critical===!0,a=r.confidence===void 0&&r.critical===!0,o=n.confidence??(i?10:t),s=r.confidence??(a?10:t);return(e===`desc`?s-o:o-s)||(i===a?0:i?-1:1)||n.file.localeCompare(r.file)}}var G_=W_(`desc`),K_={severity:(e,t)=>(ji[O(t,F.severityMode)]||0)-(ji[O(e,F.severityMode)]||0)||G_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":G_,"confidence-asc":W_(`asc`),"priority-desc":U_(`priority`,`desc`),"priority-asc":U_(`priority`,`asc`)};function q_(e){let t=K_[F.sortBy];if(!t)return[...e];if(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`){let t=F.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:k_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Fg(e.g).file.localeCompare(Fg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Fg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var J_=Ai;function Y_(e){return e==null?`(none)`:J_[e]??e}function X_(e){return e??`(no model)`}var Z_=class extends Kh{static properties={analyzers:{attribute:!1},models:{attribute:!1},groups:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.analyzers=[],this.models=[],this.groups=[],this._open=!1}render(){let e=this.analyzers.length>1,t=this.models.length>1;if(!e&&!t)return M;let n=F.filterAnalyzer===``?void 0:F.filterAnalyzer===s_?null:F.filterAnalyzer,r=F.filterModel===``?void 0:F.filterModel===l_?null:F.filterModel,i=new Map,a=new Map;for(let e of this.groups){let t=new Set,o=new Set;for(let i of e){let e=i._analyzer??null,a=u_(i);(r===void 0||a===r)&&t.add(e),(n===void 0||e===n)&&o.add(a)}for(let e of t)i.set(e,(i.get(e)??0)+1);for(let e of o)a.set(e,(a.get(e)??0)+1)}let o=n===void 0?null:Y_(n),s=r===void 0?null:X_(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return A`<button type="button" class="${C({"analyzer-btn":!0,active:o!=null||s!=null})}" popovertarget="analyzer-select-menu" popovertargetaction="toggle" aria-label="${`Filter by analyzer / model: ${c}`}"><span class="analyzer-btn-label">${c}</span> <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="analyzer-select-menu" class="analyzer-menu" @beforetoggle="${this._onToggle}">${e?this._column({dim:`analyzer`,heading:`Analyzer`,allLabel:`All analyzers`,values:this.analyzers,sentinel:s_,labelOf:Y_,counts:i,current:F.filterAnalyzer}):M} ${e&&t?A`<div class="analyzer-menu-sep"></div>`:M} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:l_,labelOf:X_,counts:a,current:F.filterModel}):M}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return A`<div class="analyzer-menu-col" role="group" aria-label="${`Filter by ${e}`}"><div class="analyzer-menu-head">${t}</div><button type="button" aria-pressed="${String(s===``)}" class="${C({"analyzer-menu-item":!0,active:s===``})}" @click="${()=>this._pick(e,``)}"><span class="analyzer-menu-label">${n}</span></button> ${r.map(t=>{let n=t??i,r=o.get(t)??0,c=s===n;return A`<button type="button" aria-pressed="${String(c)}" class="${C({"analyzer-menu-item":!0,active:c,zero:r===0})}" @click="${()=>this._pick(e,n)}"><span class="analyzer-menu-label">${a(t)}</span><span class="analyzer-menu-count">${r}</span></button>`})}</div>`}_pick(e,t){let n=e===`analyzer`?F.filterAnalyzer:F.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:F.filterAnalyzer,model:e===`model`?r:F.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,Z_);var Q_=0,$_=new AbortController;function W(){return Q_}function ev(){return $_.signal}function tv(){return $_.abort(),$_=new AbortController,++Q_}var nv=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function rv(e,t=``){let n=e.map(e=>e.split(`/`)),r=[];for(;;){let e=r.length,t=new Set;for(let i of n)i.length>e+1&&r.every((e,t)=>i[t]===e)&&t.add(i[e]);if(t.size!==1)break;r.push(t.values().next().value)}let i=n.map(e=>{let n=0;for(;n<r.length&&e.length>n+1;)n++;let i=t+e.slice(0,n).map(e=>`${e}/`).join(``);return e.length>n+1?`${i}${e[n]}/`:`${i}*`});if(new Set(i).size>1){let t=new Map;i.forEach((e,r)=>{if(!e.endsWith(`*`))return;let i=t.get(e)??new Set;i.add(nv(n[r].at(-1))),t.set(e,i)});let r=e=>{let n=t.get(e);return n?.size===1&&!n.has(``)?`${e}${[...n][0]}`:e};return new Map(e.map((e,t)=>[e,r(i[t])]))}return new Map(e.map((e,t)=>{let r=nv(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var iv=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`add`,label:`add`,subtitle:`Manually added files`}];function av(e){let t=e.filter(e=>e.id!==`all`);if(t.length===0)return null;let n=new Map(t.map(e=>[String(e.id).replace(/^reason:/u,``),e]));return n.size!==t.length||[...n.keys()].some(e=>!iv.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...iv.filter(e=>n.has(e.key)).map(({key:e,...t})=>({...t,id:n.get(e).id,subtitle:e===`run`&&n.has(`metro`)?`Bundler and Node.js CLI`:t.subtitle}))]}var ov=class extends ha{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value=``,this.label=`Choose scope`}_select(e){this.dispatchEvent(new CustomEvent(`scope-change`,{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(e=>e.id!==`all`);if(e.length===0)return M;let t=av(e);if(!t)return A`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${Ue(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>A`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return A`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>A`<label class="scope-option"><input type="radio" name="scope" value="${e.id}" .checked="${n.id===e.id}" @change="${()=>this._select(e.id)}"><span>${e.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${n.subtitle}</span></div>`}static styles=pa`:host{display:block;min-width:0}*{box-sizing:border-box}.scope-toggle,.scope-field{cursor:default;user-select:none;-webkit-user-select:none}.scope-toggle{display:flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:.4rem .7rem;min-width:0;min-height:var(--scope-height, 2rem)}.scope-options{display:flex;flex-shrink:0;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden;background:var(--bg)}.scope-option{position:relative;flex:1 0 auto}.scope-option+.scope-option{border-left:1px solid var(--border)}.scope-option input{position:absolute;width:1px;height:1px;opacity:0}.scope-option span{display:grid;place-items:center;height:calc(var(--scope-height, 2rem) - 2px);padding:.3rem .55rem;color:var(--muted);font-size:.74rem;white-space:nowrap}.scope-option:hover span{color:var(--text);background:var(--surface-active)}.scope-option input:checked+span{color:var(--text);background:var(--surface-active);font-weight:500}.scope-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.scope-description{order:-1;min-width:0;color:var(--muted);font-size:.66rem;line-height:1rem;text-align:right}.scope-field{display:flex;align-items:center;justify-content:end;gap:.5rem;min-width:0;max-width:100%;margin-left:auto;color:var(--muted);font-size:.7rem}select{width:13rem;height:var(--scope-height, auto);min-width:0;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);color:var(--text);font:inherit;font-size:.76rem}:host([compact]) .scope-toggle{min-height:0;gap:.3rem .5rem}:host([compact]) .scope-option span{height:auto;padding:2px 8px;font-size:.68rem;line-height:1.2}:host([compact]) .scope-field{font-size:.68rem}:host([compact]) .scope-description{display:none}:host([compact]) select{width:auto;max-width:22ch;padding:2px 6px;font-size:.68rem;line-height:1.2}`};customElements.get(`bundle-scope-selector`)||customElements.define(`bundle-scope-selector`,ov);var sv=6,cv=14,lv=2,uv=24,dv=4,fv=1.5,pv=new Map,mv=new Map,hv=`treemap`,gv=``;function _v(e){let t=/^#?([0-9a-f]{6})$/iu.exec(e);if(!t)return`#fff`;let n=parseInt(t[1],16),r=n>>16&255,i=n>>8&255,a=n&255;return(.2126*r+.7152*i+.0722*a)/255>.6?`#1a1a1a`:`#fff`}function vv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function yv(e,t){let n=[],r=e.filter(e=>e.value>0),{x:i,y:a,w:o,h:s}=t;if(r.length===0||o<=0||s<=0)return n;let c=0;for(let e of r)c+=e.value;let l=o*s/c,u=0;for(;u<r.length&&o>.5&&s>.5;){let e=Math.min(o,s),t=u,c=0,d=0,f=1/0,p=1/0;for(;t<r.length;){let n=r[t].value*l,i=n>d?n:d,a=n<f?n:f,o=vv(i,a,c+n,e);if(t===u||o<=p)p=o,c+=n,d=i,f=a,t++;else break}let m=c/e;if(o>=s){let e=a;for(let o=u;o<t;o++){let c=o===t-1?a+s-e:r[o].value*l/m;n.push({node:r[o],x:i,y:e,w:m,h:c}),e+=c}i+=m,o-=m}else{let e=i;for(let s=u;s<t;s++){let c=s===t-1?i+o-e:r[s].value*l/m;n.push({node:r[s],x:e,y:a,w:c,h:m}),e+=c}a+=m,s-=m}u=t}return n}function bv(e){for(;e.children&&e.children.size===1;){let t=e.children.values().next().value;if(t.isFile)break;e.name=`${e.name}/${t.name}`,e.children=t.children}if(e.children)for(let t of e.children.values())bv(t)}function xv(e,t,n,r){if(e.path=e.name?t?`${t}/${e.name}`:e.name:t,e.parent=n,e.isFile)return e.count=1,e.value;r.set(e.path,e);let i=0,a=0,o,s;for(let t of e.children.values())i+=xv(t,e.path,e,r),a+=t.count,s===void 0?s=t.pkg:s!==t.pkg&&(s=null),o===void 0?o=t.group:o!==t.group&&(o=null);return e.value=i,e.count=a,e.pkg=s??null,e.group=o??null,i}function Sv(e,t,n,r){let i=new Set(e).size===1?rv(t,n):new Map,a=new Map;return t.forEach((e,t)=>{i.has(e)&&a.set(i.get(e),(a.get(i.get(e))??0)+Math.max(r[t]??0,0))}),{groups:i,ranks:new Map([...a].toSorted((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e],t)=>[e,t]))}}function Cv(e,t,n,r,i,a,o){if(r<dv||i<dv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<sv&&r>=uv&&i>=uv&&e.children.size>0)){o.push({kind:`agg`,node:e,x:t,y:n,w:r,h:i});return}o.push({kind:`dir`,node:e,x:t,y:n,w:r,h:i});let s=i>=cv+dv+lv?cv:0,c=t+lv,l=n+s,u=r-lv*2,d=i-s-lv;if(u<dv||d<dv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of yv(f,{x:c,y:l,w:u,h:d}))Cv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function wv(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function Tv(e,t){if(t<=0||e.isFile||!e.children||e.children.size===0)return 0;let n=1;for(let r of e.children.values()){if(n>=t)break;let e=1+Tv(r,t-1);e>n&&(n=e)}return n}function Ev(e,t,n,r,i,a){let o=Math.min(a-i,Math.PI*2-1e-4),s=i+o,c=+(o>Math.PI),l=Math.cos(i),u=Math.sin(i),d=Math.cos(s),f=Math.sin(s),p=e=>e.toFixed(2);return`M${p(e+r*l)} ${p(t+r*u)}A${p(r)} ${p(r)} 0 ${c} 1 ${p(e+r*d)} ${p(t+r*f)}L${p(e+n*d)} ${p(t+n*f)}A${p(n)} ${p(n)} 0 ${c} 0 ${p(e+n*l)} ${p(t+n*u)}Z`}function Dv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Ov=class extends ha{static properties={details:{attribute:!1},_w:{state:!0},_h:{state:!0},_focus:{state:!0},_mode:{state:!0},_reason:{state:!0},_kind:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.details=null,this._w=0,this._h=0,this._root=null,this._focus=[],this._mode=hv,this._reason=``,this._kind=gv,this._mixedKinds=!1,this._reasons=new Map,this._dirByPath=new Map,this._status=`loading`,this._meta={total:0,prefix:``},this._ro=null,this._plot=null,this._tooltip=null,this._ttCell=null}willUpdate(e){e.has(`details`)&&(this._reason=mv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;N(A`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?A`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${E({background:e.ttColor})}"></span> <span class="bundle-treemap-tt-pkg">${e.ttPkg}</span></div>`:``}<div class="bundle-treemap-tt-meta">${e.ttMeta}</div>`,this._tooltip)}this._positionTooltip(e.clientX,e.clientY)}_onPointerLeave(){this._hideTooltip()}_positionTooltip(e,t){let n=this._tooltip;if(!n||!this._plot)return;n.classList.add(`show`);let r=this._plot.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=i+12;o+n.offsetWidth>r.width-4&&(o=i-n.offsetWidth-12),o<4&&(o=4);let s=a+12;s+n.offsetHeight>r.height-4&&(s=a-n.offsetHeight-12),s<4&&(s=4),n.style.left=`${o}px`,n.style.top=`${s}px`}_hideTooltip(){this._ttCell=null,this._tooltip&&this._tooltip.classList.remove(`show`)}_rebuild(){if(this._root=null,this._focus=[],this._dirByPath=new Map,this._reasons=new Map,this._mixedKinds=!1,this._meta={total:0,prefix:``},this._hideTooltip(),!this.details){this._status=`loading`;return}let e=Vt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=Ce(this.details,t),this._reasons.has(this._reason)||(this._reason=``,mv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Wt(this.details),i=Ht(this.details),a=e=>i.get(e)===`resource`,o=t.filter(t=>e.get(t)>0);this._mixedKinds=o.some(a)&&!o.every(a);let s=this._mixedKinds?this._kind:``,{prefix:c,stripped:l}=Nn(t),u=t.map(e=>Yr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=Sv(u,l,c,t.map(t=>e.get(t))),p={name:``,children:new Map,value:0,isFile:!1},m=0;for(let r=0;r<t.length;r++){if(n&&!n.has(t[r])||s&&a(t[r])!==(s===`resources`))continue;let o=e.get(t[r]);if(o<=0)continue;let c=l[r].split(`/`),f=p,h=!1;for(let e=0;e<c.length-1;e++){let t=f.children.get(c[e]);if(t&&t.isFile){h=!0;break}t||(t={name:c[e],children:new Map,value:0,isFile:!1},f.children.set(c[e],t)),f=t}if(h)continue;let g=c.at(-1),_=f.children.get(g);_&&!_.isFile||(_||(_={name:g,isFile:!0,value:0,origPath:t[r],pkg:u[r],group:d.get(l[r])??null,resource:i.get(t[r])===`resource`||this.details.listedOnly===!0},f.children.set(g,_)),_.value+=o,m+=o)}if(m===0){this._status=`empty`;return}for(let e of p.children.values())bv(e);let h=new Map;xv(p,``,null,h),this._groupRanks=f,this._root=p,this._dirByPath=h,this._meta={total:m,prefix:c},this._status=`ok`;let g=this.details?.integrity?pv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):pv.delete(this.details.integrity)}}get _focusNode(){return this._focus.length>0?this._focus.at(-1):this._root}_chainTo(e){let t=[];for(let n=e;n&&n!==this._root;n=n.parent)t.push(n);return t.reverse(),t}_rememberFocus(){let e=this.details?.integrity;if(!e)return;let t=this._focus.at(-1)?.path;t?pv.set(e,t):pv.delete(e)}_drillInto(e){!e||e.isFile||!e.children||e.children.size===0||(this._focus=this._chainTo(e),this._rememberFocus(),this._hideTooltip())}_focusTo(e){let t=e<0?[]:this._focus.slice(0,e+1);t.length!==this._focus.length&&(this._focus=t,this._rememberFocus(),this._hideTooltip())}_toggleMode(){this._mode=this._mode===`sunburst`?`treemap`:`sunburst`,hv=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,gv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?mv.set(t,this._reason):mv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return A`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${C({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:Or(),label:null,named:!1}:{color:Er(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Yr(e.path);return{color:Ar(t),label:Zr(t),named:e.pkg!=null}}_cell(e){let t=wv(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return A`<div class="bundle-treemap-node bundle-treemap-dir" style="${E(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${Mn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-dirname">${e.node.name}</span></div>`;let{color:i,label:a}=this._paint(e.node),o=E({...n,background:i,color:_v(i)}),s=a??M;return e.kind===`agg`?A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-agg" style="${o}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Mn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-label">${e.node.name}/</span></div>`:A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?M:e.node.origPath}" data-tt-path="${e.node.path}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${Mn(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=wv(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??M;if(e.isFile)return j`<path
6
- class="bundle-treemap-node bundle-treemap-arc"
7
- d=${t}
8
- fill=${i}
9
- data-bundle-view-source=${e.resource?M:e.origPath}
10
- data-tt-path=${e.path}
11
- data-tt-pkg=${s}
12
- data-tt-color=${i}
13
- data-tt-meta=${`${Mn(e.value)} \xB7 ${r}% of bundle`}
14
- ></path>`;let c=`${e.count} ${e.count===1?`file`:`files`}`;return j`<path
15
- class="bundle-treemap-node bundle-treemap-arc"
16
- d=${t}
17
- fill=${i}
18
- data-treemap-into=${e.path}
19
- data-tt-path=${`${e.path}/`}
20
- data-tt-pkg=${o?s:M}
21
- data-tt-color=${o?i:M}
22
- data-tt-meta=${`${Mn(e.value)} \xB7 ${c} \xB7 ${r}%`}
23
- ></path>`}_renderSunburst(e){let t=this._w,n=this._h,r=t/2,i=n/2,a=Math.min(t,n)/2-6;if(a<30)return M;let o=Tv(e,sv),s=Math.min(Math.max(a*.18,26),a*.45),c=(a-s)/o,l=this._meta.total||1,u=[],d=(e,t,n,a)=>{let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value),p=n-t,m=t;for(let t of f){let n=p*(t.value/e.value),f=s+(a-1)*c,h=f+c;n*h>=fv&&(u.push(this._arc(t,Ev(r,i,f,h,m,m+n),l)),!t.isFile&&a<o&&t.children.size>0&&d(t,m,m+n,a+1)),m+=n}};d(e,-Math.PI/2,Math.PI*1.5,1);let f=this._focus.length>0,p=Math.max(s-4,10),m=f?j`<circle
24
- class="bundle-treemap-node bundle-treemap-center"
25
- cx=${r} cy=${i} r=${p}
26
- data-treemap-into=${e.parent.path}
27
- data-tt-path=${`${e.path}/`}
28
- data-tt-meta=${`${Mn(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${wv(e.value,l)}%`}
29
- ></circle>`:j`<circle class="bundle-treemap-center" cx=${r} cy=${i} r=${p}></circle>`,h=j`<text class="bundle-treemap-center-label" x=${r} y=${i} text-anchor="middle">
30
- ${f?j`<tspan x=${r} dy="-0.3em">${Dv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${Mn(e.value)}</tspan>`:j`<tspan x=${r} dy="0.35em">${Mn(e.value)}</tspan>`}
31
- </text>`;return A`<svg class="bundle-treemap-sunburst" width="${t}" height="${n}" viewBox="${`0 0 ${t} ${n}`}">${u}${m}${h}</svg>`}render(){let e=this._focusNode,t=this._mode===`sunburst`,n=this._status===`ok`&&e&&e.children&&this._w>0&&this._h>0,r=[];if(n&&!t){let t=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of yv(t,{x:0,y:0,w:this._w,h:this._h}))Cv(e.node,e.x,e.y,e.w,e.h,1,r)}let{prefix:i}=this._meta,a=e?e.count:0,o=e?e.value:0;return A`<header class="bundle-treemap-head">${this._renderCrumbs()} <span class="bundle-treemap-head-right"><span class="bundle-treemap-sub">${a} ${a===1?`file`:`files`} · ${Mn(o)}${i?A` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?A`<bundle-scope-selector compact="compact" .reasons="${[...this._reasons.keys()].map(e=>({id:`reason:${e}`,label:e}))}" .value="${this._reason?`reason:${this._reason}`:``}" label="Filter files" @scope-change="${this._changeReason}"></bundle-scope-selector>`:M} ${this._mixedKinds?A`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:M}<mode-switch compact="compact" label="Sunburst" .checked="${t}" accessible-label="Toggle sunburst view" @click="${this._toggleMode}"></mode-switch></span></header><div class="bundle-treemap-plot" @click="${this._onPlotClick}" @pointermove="${this._onPointerMove}" @pointerleave="${this._onPointerLeave}">${this._status===`loading`?A`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?A`<div class="bundle-treemap-empty">${!this._mixedKinds||!this._kind?`This bundle doesn't carry any source content.`:this._kind===`code`?`No code here, only resources.`:`No resources here, only code.`}</div>`:t?n?this._renderSunburst(e):M:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,Ov);function kv(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&kv(t.shadowRoot))return!0;return!1}var Av=`a{cursor:default}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,summary,select,label,legend,header h3,.section-title,.ui-hint,.hint,.note,.lwd-note,.lwd-empty,.empty:not(.error,[role=alert]),.empty-discussion,.history-state[role=status],.history-summary{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea,[contenteditable],pre,code,.mono{cursor:text;user-select:text;-webkit-user-select:text}dialog{margin-top:5rem;margin-inline:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--surface);color:var(--text);padding:1.1rem 1.25rem 1rem;max-width:480px;width:min(94vw,480px);box-shadow:0 20px 60px #00000059;&::backdrop{background:rgb(from var(--theme-bar) r g b / .55);backdrop-filter:blur(2px)}}header h3{margin:0 0 .6rem;font-size:1rem;font-weight:600}.nwd-input{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.88rem;&:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgb(from var(--accent) r g b / .18)}&::placeholder{color:var(--muted)}}.nwd-note{margin:.55rem 0 0;color:var(--muted);font-size:.74rem;line-height:1.45}.nwd-intro{margin:0 0 .8rem;color:var(--muted);font-size:.82rem;line-height:1.5}.nwd-actions{display:flex;align-items:center;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}.nwd-spacer{flex:1}.nwd-actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.35rem .9rem;font:inherit;font-size:.8rem;&:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent);&:hover:not(:disabled){color:var(--surface);filter:brightness(1.08)}}&.quiet{border-color:transparent;color:var(--muted);&:hover:not(:disabled){border-color:transparent}}&.danger{color:var(--critical, #f87171);border-color:var(--border);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--critical, #f87171)}}&:disabled{opacity:.5}}:host-context(body.theme-w95){& dialog{border:0;box-shadow:var(--w95-window);&:before{content:"";display:block;flex:none;height:20px}&::backdrop{background:none;backdrop-filter:none}}& header h3{position:absolute;top:3px;right:3px;left:3px;display:flex;align-items:center;gap:4px;height:18px;margin:0;padding:0 24px 0 4px;overflow:hidden;background:var(--w95-title);color:#fff;font-size:11px;font-weight:700;line-height:18px;white-space:nowrap;& svg{flex:none;width:14px;height:14px}}& button[aria-label^=Close]{position:absolute;top:5px;right:5px;z-index:1;display:grid;place-items:center;width:16px;height:14px;padding:0;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:13px;line-height:1;&:hover{background:var(--w95-face);color:#000}&:active{box-shadow:var(--w95-pressed)}}.nwd-actions button{min-width:75px;min-height:23px;border-color:transparent;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;&:hover:not(:disabled){border-color:transparent;color:#000}&:active:not(:disabled){box-shadow:var(--w95-pressed)}&:disabled{color:var(--w95-shadow);text-shadow:1px 1px #fff;opacity:1}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}&.primary,&.primary:hover:not(:disabled){box-shadow:var(--w95-default);color:#000;filter:none}&.primary:active:not(:disabled){box-shadow:inset 0 0 0 1px #000,inset 0 0 0 2px var(--w95-shadow)}&.quiet{box-shadow:none}&.danger,&.danger:hover:not(:disabled){color:var(--critical)}}.nwd-input{border-color:transparent;box-shadow:var(--w95-sunken);&:focus{border-color:transparent;box-shadow:var(--w95-sunken)}}}@media(display-mode:window-controls-overlay){dialog{-webkit-app-region:no-drag;app-region:no-drag}}:host-context(body.theme-w95) *{overscroll-behavior:none}
32
- `,jv=class extends ha{static styles=[fa(Av)];exclusive=!1;firstUpdated(){lr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&kv()){this._conflict(new DOMException(`Another modal dialog is already open`,`InvalidStateError`));return}try{e.showModal()}catch(e){this._conflict(e);return}this.focusInitial()}}_conflict(e){this._settled=!0,this.dispatchEvent(new CustomEvent(`modal-conflict`,{detail:{cause:e}}))}beforeOpen(){}focusInitial(){(this.renderRoot.querySelector(`input, textarea`)??this.renderRoot.querySelector(`button.primary`)??this.renderRoot.querySelector(`button`))?.focus()}_finish(e){this._settled||(this._settled=!0,this.renderRoot.querySelector(`dialog`)?.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e})))}_onClose=()=>this._finish(null);_onBackdrop=e=>{if(e.target!==e.currentTarget)return;let{left:t,right:n,top:r,bottom:i}=e.currentTarget.getBoundingClientRect();(e.clientX<t||e.clientX>n||e.clientY<r||e.clientY>i)&&this._onClose()}};function Mv(e,t={}){return new Promise(n=>{let r=document.createElement(e);Object.assign(r,t),r.addEventListener(`resolve`,e=>{r.remove(),n(e.detail)}),document.body.append(r)})}function Nv(e,t,n){return new Promise((r,i)=>{let a=document.createElement(e);Object.assign(a,t),a.exclusive=!0,a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{n(a),a.remove(),i(nh(e.detail?.cause))}),document.body.append(a)})}var Pv=`dialog{max-width:520px;width:min(94vw,520px)}.wsl-field{display:block;margin-top:.6rem;color:var(--text);font-size:.78rem;>span{display:block;margin-bottom:.25rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}}.wsl-ack{display:flex;align-items:flex-start;gap:.5rem;margin-top:.6rem;color:var(--text);font-size:.8rem;line-height:1.4;>input[type=checkbox]{flex:0 0 auto;margin-top:.15rem}>span{flex:1 1 auto}}.wsl-link{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.78rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;word-break:break-all}.wsl-error{margin:.55rem 0 0;color:var(--critical, #f87171);font-size:.74rem;line-height:1.4}.wsl-warning{padding:.55rem .65rem;border:1px solid var(--critical, #f87171);border-radius:var(--ui-radius, 6px);background:rgb(from var(--critical, #f87171) r g b / .08);>p+p{margin-top:.45rem}}.wsl-optout{display:flex;align-items:center;gap:.5rem;margin-top:.7rem;color:var(--text);font-size:.78rem}.nwd-input:disabled{opacity:.5}.nwd-actions button.primary.danger{background:var(--critical, #f87171);border-color:var(--critical, #f87171);color:var(--surface);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--surface);filter:brightness(1.08)}}
33
- `,Fv=class extends jv{static styles=[...jv.styles,fa(Pv)];static properties={_busy:{state:!0},_error:{state:!0}};constructor(){super(),this._busy=!1,this._error=``,this._abortController=null}_finish(e){if(!this._settled){if(this._abortController)try{this._abortController.abort()}catch{}super._finish(!!e)}}_onCancel=()=>this._finish(!1);_onUnlock=async()=>{if(!this._busy){this._busy=!0,this._error=``,this._abortController=new AbortController;try{if(await No({signal:this._abortController.signal})){this._finish(!0);return}this._error=``}catch(e){this._error=e?.message??String(e)}finally{this._busy=!1,this._abortController=null}}};render(){return A`<dialog @close="${this._onClose}"><header><h3>Unlock your data</h3></header><p class="nwd-note ui-hint">Your triage data and report files are encrypted with a passkey on this device. Unlock to load them.</p>${this._error?A`<p class="wsl-error">${this._error}</p>`:M}<footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">${this._busy?`Cancel`:`Later`}</button> <button type="button" class="primary" ?disabled="${this._busy}" @click="${this._onUnlock}">${this._busy?`Waiting…`:`Unlock with passkey`}</button></footer></dialog>`}};customElements.define(`passkey-unlock-dialog`,Fv);function Iv(){return Mv(`passkey-unlock-dialog`)}var Lv=`deepviewManagedNavigation`,Rv=`deepviewManagedLoginFinding`;function zv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Bv(e,t){return e?.bundleTab!==`code`||t?.bundleTab!==`code`||e.view!==t.view?!1:e.view===`npm`?e.packageName===t.packageName&&(e.packageSpec??null)===(t.packageSpec??null):e.view===`repository-code`?e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``):e.view===`bundles`&&(e.teamSlug??null)===(t.teamSlug??null)&&e.bundleSlug===t.bundleSlug}function Vv(e){let t=e.location.hash,n=We(t),r=!1,i=null,a=0,o=null,s=null,c=!1,l=null,u=null,d=null;function f(){return e.location.hash.startsWith(`#public=`)&&e.location.hash!==t}function p(e){let t=fi(e),n=t?.view===`home`?Wr(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Rv);if(e.sessionStorage?.removeItem(Rv),!t)return null;let n=new URL(t,e.location.origin),r=n.origin===e.location.origin?p(n):null;return r?.finding?r:null}catch{return null}}function h(){if(!r||!Wr(e.location.hash)||l===e.location.href||e.history.state?.[Lv]&&e.history.state[Lv]!==i)return;let t=l=e.location.href;_(p(new URL(t))??{view:`home`},{replace:!0}).finally(()=>{l===t&&(l=null)})}function g(t){f()||(t=Ye(t,n),e.history.replaceState(r?{[Lv]:i}:null,``,t),s=t)}async function _(t,{replace:c=!1,pop:l=!1}={}){if(!r||!o||f())return!1;t??={view:`home`};let d=si(t);if(d===null)return!1;let p=++a,m=u={route:t,path:d,push:!l&&!c,shown:!1,findingRoute:null,codeRoute:null},h=()=>r&&p===a&&!f(),_=!1;try{_=await o(t,h)}catch(e){console.warn(`managed: navigation failed:`,e)}return h()?_?(typeof _==`object`&&(d=si(_)??d),zv(m.findingRoute,typeof _==`object`?_:t)&&(d=si(m.findingRoute)),Bv(m.codeRoute,typeof _==`object`?_:t)&&(d=si(m.codeRoute)),u=null,l||c||m.shown?g(d):Ye(d,n)!==s&&(d=Ye(d,n),e.history.pushState({[Lv]:i},``,d),s=d),!0):(await o({view:`home`},h),h()&&(u=null,g(`/`)),!1):!1}function v(t){if(!f()){if(!r){t.state?.[Lv]&&g(`/`);return}if((!t.state?.[Lv]||t.state[Lv]===i)&&Wr(e.location.hash)){h();return}if(!t.state?.[Lv]){let t=p(new URL(e.location.href)),n=s==null?null:fi(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Bv(t,n)){g(si(t));return}}_((t.state?.[Lv]===i?p(new URL(e.location.href)):null)??{view:`home`},{pop:!0})}}function y(t){if(!r||t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let n=t.composedPath().find(e=>e.matches?.(`a.comment-self-ref[href]`));if(!n||n.hasAttribute(`download`)||n.target&&n.target!==`_self`)return;let i=new URL(n.href);if(i.origin!==e.location.origin)return;let a=p(i);if(a?.finding)return t.preventDefault(),_(a)}return{get active(){return r},rememberFinding(){let t=p(new URL(e.location.href));if(!t?.finding)return;let n=t.view===`home`?`/#${Hr(t.finding)}`:si(t);try{e.sessionStorage?.setItem(Rv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Lv]==`string`?e.history.state[Lv]:e.crypto.randomUUID(),c||=(e.addEventListener(`popstate`,v),e.addEventListener(`hashchange`,h),e.addEventListener(`click`,y),e.launchQueue?.setConsumer(({targetURL:t})=>{if(!r||!t)return;let n=new URL(t);if(n.origin!==e.location.origin)return;let i=p(n);i&&_(i)}),!0);let a=m(),s=p(new URL(e.location.href))??{view:`home`};return a&&s.view===`home`&&!s.finding&&(s=a),_(s,{replace:!0})},navigate:_,replaceFindingRoute(t){if(!r||t?.view!==`findings`||f())return;let i=si(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||zv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}zv(t,fi(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=si(t);if(i!=null){if(u){Bv(t,u.route)&&(u.codeRoute=t);return}Bv(t,fi(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},showing(t){let a=u;if(!r||f()||!a||a.route!==t||a.shown)return;a.shown=!0;let o=Ye(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Lv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=si(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=si(t);if(o==null)return;let c=u!==null;++a,u=null,o=Ye(o,n),o!==s&&(e.history.pushState({[Lv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Rv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var G=typeof window>`u`?null:Vv(window);function Hv(e){return I()&&!F.managedSession?.publicShare&&tt(F.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Uv(e){let t=e?.teams?.find(t=>t.id===e.teamId);return t?!t.cacheKey||!Array.isArray(t.reports)||t.reports.some(e=>!e.cacheKey)?e.teams:JSON.stringify([t.cacheKey,t.reports.map(e=>[e.id,e.cacheKey,e.visible!==!1]).toSorted()]):null}var Wv=class{constructor({context:e,fetchWorkspace:t,changed:n=()=>{},now:r=Date.now}){this.getContext=e,this.fetchWorkspace=t,this.changed=n,this.now=r,this.entries=new Map,this.required=new Set,this.expires=0,this.context=null,this.scope=null,this.timer=null,this.run=null}reset(){this.run?.abort(),this.run=null,clearTimeout(this.timer),this.timer=null,this.entries.clear(),this.required.clear(),this.expires=0,this.context=null,this.scope=null}syncContext(){let e=this.getContext();if(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||e?.teams!==this.context?.teams){let t=Uv(e);(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||t!==this.scope)&&this.reset(),this.context=e,this.scope=t}return this.scope===null?null:this.context}schedule(){!this.timer&&!this.run&&(this.timer=setTimeout(()=>{this.timer=null,this.flush()},0))}read(e,{refreshIfMissing:t=!1}={}){let n=this.syncContext()?.teamId&&Qh(e);if(!n)return null;let r=$h(n),i=this.entries.get(r)??null;return t&&!i&&(this.run?this.required.add(r):this.expires=0),this.expires<=this.now()&&this.schedule(),i}async flush(){let e=this.syncContext();if(!e?.teamId||this.run||this.expires>this.now())return;let t=this.run=new AbortController,n;try{n=await this.fetchWorkspace(e.teamId,t.signal,e.reportId)}catch{n=null}if(this.syncContext(),this.run!==t||t.signal.aborted)return;this.entries.clear();for(let e of Array.isArray(n)?n:[]){let t=Qh(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?qh(e.stateReason):null;this.entries.set($h(t),{title:e.title,description:typeof e.description==`string`?e.description:null,status:e.status,stateReason:n})}}this.expires=this.now()+6e4,this.run=null;let r=[...this.required].some(e=>!this.entries.has(e));this.required.clear(),r&&(this.expires=0,this.schedule()),this.changed()}},Gv=new Set,Kv=new Wv({context:()=>{let e=F.managedSession;return I()&&e?.id&&F.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:F.currentManagedTeam,reportId:F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,teams:F.managedTeams}:null},fetchWorkspace:lx,changed:()=>{for(let e of Gv)e()}});function qv(e){return Gv.add(e),()=>Gv.delete(e)}function Jv(){Kv.reset();for(let e of Gv)e()}function Yv(e){F.currentManagedTeam===e&&Jv()}function Xv(e,t,n){if(F.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:F.managedIssues.get(e)}));r.some(({id:e,issue:t})=>n.has(e)&&t?.url!==n.get(e).url)&&Yv(e);for(let{id:e,issue:t}of r)t?.url&&!n.has(e)&&Kv.read(t.url,{refreshIfMissing:!0}),t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Kv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Kv.read(i)}var Zv={claude:{name:`Claude`,mark:`anthropic`,accounts:[{id:81847,logins:[`claude`]},{logins:[`claude[bot]`]}],names:[`Claude`],emails:[`noreply@anthropic.com`]},codex:{name:`Codex`,mark:`openai`,accounts:[{id:199175422,logins:[`chatgpt-codex-connector`,`chatgpt-codex-connector[bot]`]}],names:[`Codex`],emails:[`codex@openai.com`]},neo:{name:`Neo`,avatar:`app-3115942`,accounts:[{id:274065190,logins:[]},{id:268952163,logins:[]}],names:[],prefix:`neo/`,fingerprint:`🤖 Generated with [Neo](`},copilot:{name:`Copilot`,mark:`github-copilot`,accounts:[{id:198982749,logins:[`Copilot`,`copilot-swe-agent`]},{id:175728472,logins:[`Copilot`,`copilot-pull-request-reviewer`,`copilot-pull-request-reviewer[bot]`]}],names:[`Copilot`],prefix:`copilot/`},dependabot:{name:`Dependabot`,avatar:`app-29110`,accounts:[{id:49699333,logins:[`dependabot`,`dependabot[bot]`]}],names:[`dependabot[bot]`],prefix:`dependabot/`},actions:{name:`GitHub Actions`,avatar:`app-15368`,accounts:[{id:41898282,logins:[`github-actions`,`github-actions[bot]`]}],names:[`github-actions[bot]`,`github-actions`,`GitHub Action`]},cursor:{name:`Cursor`,accounts:[],names:[`Cursor Agent`],emails:[`cursoragent@cursor.com`]}},Qv=Object.entries(Zv),$v=new Map;for(let[e,{accounts:t}]of Qv)for(let{id:n,logins:r}of t)for(let t of r)$v.set(t.toLowerCase(),{agent:e,ids:[...$v.get(t.toLowerCase())?.ids??[],n]});var ey=new Map(Qv.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),ty=new Map(Qv.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(Qv.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function ny(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?ty.get(n.trim().toLowerCase())??null:null;let r=$v.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:ey.get(t)??null}function ry(e,t){let n=new Set([...t].map(t=>ny(e,t)));return n.size===1&&!n.has(null)}var iy=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),ay=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,oy=8,sy=e=>Number.isSafeInteger(e)&&e>0?e:null;function cy(e){let t=new Map;ly(e,t,0);let n=new Map;for(let[e,r]of t)n.set(e.toLowerCase(),new Set([...n.get(e.toLowerCase())??[],...r]));return new Map([...t.keys()].map(e=>{let t=n.get(e.toLowerCase());return t.size<=1?[e,[...t][0]??null]:[e,ry(e,t)?null:`ambiguous`]}))}function ly(e,t,n){if(n>oy||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)ly(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=iy.get(e);if(a&&typeof i==`string`&&ay.test(i)){let e=sy(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else ly(i,t,n+1)}}var uy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M23.75 4.48c-.26-.12-.37.11-.51.24l-.14.13c-.37.4-.8.66-1.37.63a2.7 2.7 0 0 0-2.17.85 2 2 0 0 0-1.24-1.55c-.36-.16-.71-.31-.96-.65-.17-.24-.22-.51-.3-.78-.06-.16-.11-.32-.3-.35-.2-.03-.27.14-.35.28q-.46.87-.43 1.84a4 4 0 0 0 1.84 3.4q.2.12.13.32l-.26.83c-.06.18-.14.22-.33.14a6 6 0 0 1-1.74-1.18c-.86-.83-1.63-1.74-2.6-2.46l-.69-.47c-.98-.96.13-1.74.4-1.84.26-.1.09-.43-.79-.42-.87 0-1.67.3-2.68.68l-.47.14a10 10 0 0 0-2.88-.1 6.2 6.2 0 0 0-4.5 2.62 7.7 7.7 0 0 0-1.26 6.07 9.3 9.3 0 0 0 3.36 5.65 9 9 0 0 0 6.44 2.14 7.6 7.6 0 0 0 5-1.86c.46.24.96.33 1.77.4.63.06 1.24-.03 1.7-.13.74-.15.7-.84.43-.96-2.16-1-1.68-.6-2.11-.92 1.1-1.3 2.74-2.65 3.39-7 .05-.35 0-.57 0-.85 0-.17.03-.24.23-.26a4 4 0 0 0 1.54-.47c1.4-.77 1.96-2.02 2.1-3.52.02-.23 0-.47-.25-.59M11.58 18c-2.09-1.64-3.1-2.18-3.52-2.16-.4.02-.32.47-.23.76s.2.49.37.74c.11.17.19.42-.12.6-.67.42-1.84-.13-1.9-.16a8.7 8.7 0 0 1-3.3-3.3 10 10 0 0 1-1.3-4.5c-.01-.38.1-.51.48-.58a5 5 0 0 1 1.53-.04 9.6 9.6 0 0 1 5.47 2.77c.87.86 1.53 1.89 2.2 2.9a14 14 0 0 0 2.48 2.9q.51.45.9.68c-.8.1-2.15.11-3.06-.61m1-6.44a.3.3 0 0 1 .42-.29.3.3 0 0 1 .2.3.3.3 0 0 1-.31.3.3.3 0 0 1-.3-.31m3.11 1.6q-.3.13-.59.16a1.3 1.3 0 0 1-.8-.26c-.27-.23-.47-.36-.55-.76a2 2 0 0 1 .02-.58c.07-.33-.01-.54-.24-.73q-.3-.22-.69-.2l-.25-.08a.25.25 0 0 1-.12-.36 1 1 0 0 1 .2-.2c.35-.2.76-.14 1.14.01.35.14.62.4 1 .78.4.45.46.58.69.92q.27.38.44.84.1.3-.25.46"/></svg>`,dy=A`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`,fy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`,py=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M6.9 4c1.91 0 3.51.93 5.43 3.38L12.6 7q.28-.36.58-.7l.31-.36C14.6 4.8 15.8 4 17.23 4a5 5 0 0 1 3.49 1.52l.21.2c1.73 1.77 2.92 4.72 3.06 8.04v.39l.01.25q0 2.27-.82 3.7l-.14.23-.1.15q-.45.64-1.1 1l-.26.15-.08.04-.3.12a4 4 0 0 1-1.34.2q-.78 0-1.43-.2a4.4 4.4 0 0 1-1.73-1.12l-.23-.24a22 22 0 0 1-2.49-3.59l-1.43-2.4-.54-.9-1.77 3.13-.34.6C7.6 19.15 6.23 20 4.36 20c-1.21 0-2.2-.42-2.94-1.18l-.17-.19a5 5 0 0 1-1.04-2.18l-.07-.32a9 9 0 0 1-.13-1.3L0 14.48q0-1.13.17-2.23l.1-.58c.3-1.53.83-2.95 1.54-4.15l.2-.34C3.2 5.34 4.82 4.1 6.64 4zm-.04 2.62h-.2c-.83.09-1.6.68-2.25 1.58l-.14.2v.02a11 11 0 0 0-1.46 3.84v.03a13 13 0 0 0-.21 2.25v.19q0 .27.04.54l.04.29q.15.75.49 1.2l.11.14q.46.5 1.17.5c1.1 0 1.8-.68 3.7-3.64l2.17-3.4.46-.7-.14-.2C9.11 7.3 8.08 6.62 6.86 6.62m10.2-.56-.18.01q-.93.08-1.82.93l-.2.2q-.64.7-1.36 1.8l.27.4.55.86.29.48 1.4 2.33.7 1.12q.84 1.37 1.4 2.08l.21.26q.41.48.78.68l.1.05q.34.14.72.13.27 0 .52-.07.5-.16.81-.64l.1-.16.07-.16q.3-.7.3-1.79l-.01-.45c-.08-2.87-.94-5.37-2.2-6.8l-.18-.18a3.2 3.2 0 0 0-2.27-1.08"/></svg>`,my=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`,hy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m1.05 16.92 9.54 2.55a21 21 0 0 0 .06 2.03l5.96 1.6a12 12 0 0 1-5.59.86l-.18-.02h-.04l-.09-.01-.1-.01-.15-.02-.1-.01-.11-.02-.32-.05h-.05l-.07-.02-.1-.02-.08-.02-.1-.02-.07-.01-.1-.02-.09-.02-.1-.03-.06-.01-.09-.03-.09-.02-.1-.02-.08-.03-.1-.03-.07-.02-.08-.02-.1-.03-.1-.03-.06-.02-.08-.03-.09-.03-.06-.02-.05-.02-.06-.02-.1-.04-.06-.02-.08-.03-.09-.04-.09-.03-.08-.04-.1-.04-.05-.02-.07-.03-.04-.02-.06-.03-.1-.05-.06-.02-.1-.05-.06-.03-.08-.04-.09-.04-.1-.05-.04-.02-.1-.06-.06-.03-.06-.03-.05-.03-.1-.05-.05-.03-.05-.03-.07-.04-.09-.05-.09-.06-.05-.03-.08-.06-.07-.03-.07-.05-.07-.05-.06-.04-.05-.03-.05-.03-.04-.03-.04-.03-.06-.04-.07-.05-.07-.05-.08-.06-.05-.04-.08-.06-.07-.06-.09-.06-.04-.04-.07-.05-.07-.06-.1-.07-.04-.04-.04-.04-.05-.04-.04-.04-.06-.05-.07-.06-.07-.06-.06-.06-.07-.06-.05-.05-.1-.09-.09-.1-.03-.02-.04-.04-.07-.07-.05-.06-.05-.05-.17-.18-.08-.09-.06-.07-.07-.08-.04-.04-.05-.07-.06-.06-.05-.06-.03-.03-.04-.06-.07-.08-.04-.05-.05-.07-.02-.02a12 12 0 0 1-1.44-2.4m-1.02-5.8 11.36 3.04a21 21 0 0 0-.47 2.01l10.81 2.9a12 12 0 0 1-1.84 2L.66 15.92l-.02-.04-.03-.1-.05-.16-.01-.02-.2-.74-.04-.13-.02-.08-.02-.1-.02-.08-.01-.09-.02-.08-.02-.1-.07-.42-.02-.12v-.08l-.02-.1-.02-.17v-.04a12 12 0 0 1-.04-2.15m1.6-5.15 11.94 3.2q-.54.9-1 1.87l11.29 3.03q-.22 1.22-.67 2.36l-11.55-3.09L.12 10.26l.02-.1v-.05l.02-.07.01-.08.02-.1.09-.44.03-.13.02-.08.02-.1.07-.27.03-.1.02-.08.03-.1.03-.08.03-.1.02-.08.03-.1a12 12 0 0 1 1.01-2.23zm4.44-4.4L17.35 4.6a21 21 0 0 0-1.69 1.72l7.83 2.1q.4 1.28.51 2.66L2.1 5.2l.05-.06.03-.04.04-.06.04-.06.06-.08.05-.07.07-.09.05-.06.05-.07.06-.07.06-.08.05-.07.07-.07.05-.07.07-.08.05-.06.07-.08.06-.06.06-.07.06-.06.07-.08.06-.06.06-.07.17-.17.1-.1.06-.05.07-.07a12 12 0 0 1 2.28-1.68M12.02 0h.41l.08.01h.16l.09.01h.1l.15.02h.08l.05.01h.08l.08.02h.04l.1.01.06.01.1.01.09.01.04.01.06.01.2.03.08.01.06.02.14.02.1.02.1.02.05.01.08.02h.04l.06.02.04.01.07.02h.05l.07.02.1.03.1.03.12.03.11.03.05.02.07.02.08.02.07.02.05.02.05.01.08.03.1.03.1.04.05.02.06.02.1.03.1.04.12.05.1.04.05.02.06.02.04.02.06.03.04.01.06.03.1.05.1.04.08.04.08.03.06.03.09.05.09.04.1.06.05.02.05.03.05.02.06.04.04.02.05.03.1.05.1.06.08.05.06.03.05.03.1.06.09.06.1.06.03.02.07.05.08.05.04.03.06.04.06.04.03.02.16.11.08.06.07.05.05.05.09.06.08.06.04.03.05.05.09.06.07.07.09.07q1.07.9 1.9 2.03L7.23 1l.06-.02.07-.03.08-.04.09-.03q.15-.07.34-.13l.1-.04.09-.03.08-.03.1-.03.26-.09.1-.02.08-.03.1-.03.08-.02.1-.03.09-.02.09-.02.1-.02.09-.03.09-.02.1-.02.08-.02.1-.02.1-.01.1-.02.08-.02.1-.02h.1l.09-.02.1-.02.1-.01.08-.01.11-.01.09-.01.1-.01.29-.03h.1l.1-.01h.1l.1-.01h.29z"/></svg>`,gy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M10.21 8.98V7.62l.39-.02c3.6-.12 5.96 3.18 5.96 3.18s-2.55 3.65-5.28 3.65a3 3 0 0 1-1.07-.17v-4.11c1.4.17 1.68.8 2.52 2.25l1.88-1.62a5 5 0 0 0-3.67-1.85zm0-4.47v2.02l.39-.02c5-.17 8.26 4.23 8.26 4.23s-3.75 4.69-7.65 4.69q-.5 0-1-.1v1.25q.42.06.84.06c3.62 0 6.25-1.9 8.79-4.17.42.35 2.15 1.2 2.5 1.57-2.42 2.08-8.05 3.76-11.24 3.76q-.45 0-.9-.05v1.76H24v-15zm0 9.75v1.07c-3.36-.61-4.29-4.2-4.29-4.2a7.2 7.2 0 0 1 4.29-2.14v1.17a3.2 3.2 0 0 0-2.5 1.17s.6 2.28 2.5 2.94m-5.96-3.3a8.3 8.3 0 0 1 5.96-3.34v-1.1C5.8 6.9 2 10.72 2 10.72s2.16 6.43 8.21 7.02v-1.17c-4.44-.57-5.96-5.61-5.96-5.61"/></svg>`,_y=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`,vy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m12.6 1.34 1.18 2.08a.2.2 0 0 0 .15.09h5.56q.26 0 .44.32L21.4 6.4c.19.34.24.48.02.84l-.76 1.3-.37.66c-.1.2-.22.28-.04.51l2.66 4.64c.17.3.1.5-.05.77q-.65 1.17-1.33 2.34c-.16.27-.35.37-.68.37q-1.16-.03-2.33.01a.1.1 0 0 0-.08.05l-2.7 4.74c-.17.3-.38.37-.73.37h-3.02a.5.5 0 0 1-.46-.27l-1.34-2.32a.1.1 0 0 0-.08-.05H4.98q-.42.05-.8-.1l-1.6-2.77a.5.5 0 0 1 0-.54l1.2-2.12a.2.2 0 0 0 0-.2L1.9 11.38l-.79-1.4c-.16-.31-.17-.5.1-.96L2.6 6.57q.18-.34.58-.34h2.59a.1.1 0 0 0 .1-.06l2.81-4.9a.5.5 0 0 1 .42-.24h1.59L11.7 1c.35 0 .73.03.9.34m-3.43.4-.05.03L6.25 6.8a.2.2 0 0 1-.13.08H3.25q-.08 0-.04.07L9.02 17.1q.04.06-.03.06l-2.8.01a.2.2 0 0 0-.2.12L4.67 19.6q-.06.12.07.12h5.72q.06 0 .1.07l1.4 2.45q.08.12.14 0l5-8.76.8-1.38a.1.1 0 0 1 .09 0l1.42 2.53a.1.1 0 0 0 .1.06l2.77-.02.04-.02v-.04l-2.9-5.09a.1.1 0 0 1 0-.1l.29-.52 1.12-1.97q.03-.06-.04-.06H9.2q-.09 0-.04-.08l1.43-2.5a.1.1 0 0 0 0-.12l-1.37-2.4zm6.3 8.02q.06 0 .03.06l-.84 1.47-2.6 4.58-.06.03-.05-.03L8.5 9.84q-.03-.05.03-.05l.21-.02z"/></svg>`,yy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="#FF7764" d="M7.52 2a4.47 4.47 0 0 0 8.96 0h4.55A9 9 0 0 1 12 10.98 9 9 0 0 1 2.98 2z"/><path fill="#FF563F" d="M16.48 22a4.47 4.47 0 0 0-8.96 0H2.98A9 9 0 0 1 12 13.02 9 9 0 0 1 21.03 22z"/></svg>`,by=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`,xy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`,Sy=e=>A`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,Cy=Sy(Ji),wy=Sy(Yi),Ty={anthropic:Cy,deepseek:uy,"github-copilot":A`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Xi}"></path></svg>`,google:dy,meta:py,mistralai:my,moonshot:hy,moonshotai:hy,nvidia:gy,openai:wy,openrouter:_y,qwen:vy,unbiased:yy,xiaomi:by,"x-ai":fy,"z-ai":xy},Ey=A`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function Dy(e){return Object.hasOwn(Ty,e)?Ty[e]:Ey}var Oy=new Map,ky=new Map,Ay=new Set;function jy(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of cy(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&ky.has(n)&&ky.get(n)!==t&&!ry(e,[t,ky.get(n)])?Ay.add(n):t!==null&&ky.set(n,t),(!Object.hasOwn(r,e)||Ay.has(n))&&Oy.delete(n)}for(let[e,t]of Object.entries(r))Ay.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(Zv,t.agent)?Oy.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?Oy.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):Oy.delete(e.toLowerCase()));return e}var My=0;function Ny(){Oy.clear(),ky.clear(),Ay.clear(),zy.clear(),By.clear(),My++}async function Py(e){let t=My,n=Ry,r=await e();return t!==My||(jy(r),n!==Ry&&Hy(Ly.userId,Ly.profile)),r}var Fy=new Map;function Iy(e){globalThis.fetch(`/api/avatar/${encodeURIComponent(e)}`,{cache:`reload`,credentials:`same-origin`}).catch(()=>{})}var Ly=null,Ry=0,zy=new Set,By=new Set;function Vy(e,t,n=!1,r=null){n&&(Fy.set(e,(Fy.get(e)??0)+1),Iy(e)),r&&zy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&By.add(r.githubId),Ly={userId:e,profile:t},Ry++,Hy(e,t)}function Hy(e,t){for(let[n,r]of Oy)r.id===e&&((ky.has(n)?By.has(ky.get(n)):zy.has(n))?Oy.delete(n):Oy.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function Uy(e){let t=typeof e==`string`?Oy.get(e.toLowerCase()):null;return t?.id?t:null}var Wy=e=>Oy.get(e.toLowerCase())?.agent??null,Gy=e=>A`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Ky=e=>Gy(`/api/avatar/${encodeURIComponent(e.id)}${Fy.has(e.id)?`?v=${Fy.get(e.id)}`:``}`);function qy(e,t){let{name:n,mark:r,avatar:i}=Zv[e];return A`<span class="app-user" data-tooltip="${t}">${r||i?A`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?Dy(r):Gy(`/api/avatar/${i}`)}</span>`:A`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Jy(e){let t=typeof e==`string`?Wy(e):null;if(t)return Zv[t].name;let n=Uy(e);return n?n.name??n.login:e}function Yy(e,t=e){let n=typeof e==`string`?Wy(e):null;if(n)return qy(n,`@${e} on GitHub`);let r=Uy(e);return r?Xy(r,e):t}function Xy(e,t=e.login){return A`<span class="app-user" data-tooltip="${`@${t} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(e.name??e.login)[0].toUpperCase()}${Ky(e)}</span><span class="app-user-name">${e.name??e.login}</span></span>`}function Zy(e){let t=new Map;for(let n of e){let e=Wy(n),r=e?`agent:${e}`:Uy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function Qy(e,t=null){return typeof e==`string`?Wy(e):ny(null,null,t)}function $y(e,t=null,n=t??e??``){if(typeof e==`string`)return Yy(e,n);let r=Qy(null,t);return r?qy(r,t):n}function eb(e,t=null){if(typeof e==`string`)return Jy(e);let n=Qy(null,t);return n?Zv[n].name:t}var tb=3,nb=e=>typeof e==`string`&&Object.hasOwn(Zv,e)?e:null,rb=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function ib({login:e=null,name:t=null,agent:n=null}){let r=nb(n)??Qy(e,t);if(r){let{name:e,mark:t,avatar:n}=Zv[r];return A`<span class="${`commit-avatar is-${r}`}">${t?Dy(t):n?Gy(`/api/avatar/${n}`):e[0]}</span>`}let i=Uy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return A`<span class="commit-avatar">${a}${i?Ky(i):M}</span>`}function ab(e,t,n=null){return nb(n)&&t?t:typeof e==`string`&&(Uy(e)||Wy(e))?Jy(e):t??eb(e,t)??e??``}function ob(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,tb);if(r.length===0)return $y(e,t);let i=ab(e,t),a=r.map(e=>ab(e.login??null,e.name??null,e.agent));return A`<span class="app-user commit-authors" data-tooltip="${rb([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(ib)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${rb(a)}</span></span>`}var sb=null,cb=null;function lb(){return cb?.getPreviewRole()??null}function ub(){cb?.setPreviewRole(null)}function db(){Ny(),fb=null,cb?.resetManagedAppState()}var fb=null;function pb(e){let t=e?`${e.id}\0${e.role}`:null;t!==fb&&(Ny(),fb=t),cb?.setManagedAppSession(e)}function mb(e){return cb?.setManagedReportCatalog(e)??new Set}function hb(e,t=F.currentManagedTeam){return cb?.readReportSources(e,t)}function gb(){cb?.clearReportSources(),cb?.clearFindingHistory()}async function _b(e,t=F.currentManagedTeam){return(await K()).fetchReportSources(e,t)}function K(){return sb||(sb=(async()=>{try{return cb=await import(`./client-managed.js`),cb}catch(e){throw sb=null,e}})(),sb)}async function vb(e){return(await K()).probeSession(e)}async function yb(e){return(await K()).probeTeams(e)}async function bb(e){return(await K()).fetchManagedBundleCatalog(e)}async function xb(e,t,n){return(await K()).fetchNpmPackage(e,t,n)}async function Sb(e,t,n,r){return(await K()).fetchRepositoryCode(e,t,n,r)}async function Cb(e){return(await K()).fetchBrowsableRepositories(e)}async function wb(e,t){return(await K()).fetchRepositoryRefs(e,t)}async function Tb(e,t,n,r){return(await K()).fetchRepositoryContents(e,t,n,r)}function Eb(e,t,n,r){return Py(async()=>(await K()).fetchRepositoryHistory(e,t,n,r))}async function Db(e,t,n,r){return(await K()).fetchRepositoryChanges(e,t,n,r)}async function Ob(e,t,n,r){return(await K()).fetchRepositoryTree(e,t,n,r)}function kb(e,t){return Py(async()=>(await K()).fetchRepositoryAgents(e,t))}function Ab(e,t,n){return Py(async()=>(await K()).fetchRepositoryIssues(e,t,n))}function jb(e,t,n){return Py(async()=>(await K()).fetchRepositoryItem(e,t,n))}async function Mb(e,t,n){return(await K()).fetchPullDependencies(e,t,n)}async function Nb(e,t,n){return(await K()).fetchPullDependenciesOf(e,t,n)}async function Pb(e,t,n){return(await K()).fetchTeamDependencies(e,t,n)}async function Fb(e,t,n){return(await K()).fetchNpmDeltas(e,t,n)}function Ib(e,t,n){return Py(async()=>(await K()).fetchRepositoryPulse(e,t,n))}function Lb(e,t,n,r){return Py(async()=>(await K()).fetchRepositoryPulseItems(e,t,n,r))}async function Rb(e,t){return(await K()).fetchNpmVersions(e,t)}async function zb(e,t){return(await K()).fetchNpmStats(e,t)}async function Bb(e,t){return(await K()).fetchNpmAdvisories(e,t)}async function Vb(e,t,n){return(await K()).fetchNpmTags(e,t,n)}async function Hb(e,t,n,r){return(await K()).fetchNpmRisk(e,t,n,r)}async function Ub(e,t,n){return(await K()).fetchNpmSocket(e,t,n)}async function Wb(e,t,n){return(await K()).fetchNpmProvenance(e,t,n)}async function Gb(e,t,n,r){return(await K()).fetchPrettyBundleFile(e,t,n,r)}async function Kb(e,t,n,r){return(await K()).fetchPrettyNpmFiles(e,t,n,r)}async function qb(e,t,n,r,i){return(await K()).fetchPrettyNpmFile(e,t,n,r,i)}async function Jb(e,t,n,r){return(await K()).fetchPrettyBundleChanges(e,t,n,r)}async function Yb(e,t,n,r,i){return(await K()).fetchPrettyNpmChanges(e,t,n,r,i)}async function Xb(e,t,n,r){return(await K()).fetchBundleRenameDiff(e,t,n,r)}async function Zb(e,t,n,r,i){return(await K()).fetchNpmRenameDiff(e,t,n,r,i)}async function Qb(e,t,n,r){return(await K()).fetchBundleRenameDiffs(e,t,n,r)}async function $b(e,t,n,r,i){return(await K()).fetchNpmRenameDiffs(e,t,n,r,i)}async function ex(e,t,n,r){return(await K()).fetchBundleTypeOnly(e,t,n,r)}async function tx(e,t,n,r,i){return(await K()).fetchNpmTypeOnly(e,t,n,r,i)}async function nx(e,t,n){return(await K()).fetchBundleComparison(e,t,n)}async function rx(e,t,n,r){return(await K()).fetchNpmComparison(e,t,n,r)}async function ix(e){return(await K()).openManagedShareDialog(e,``,F.managedSession)}async function ax({render:e,...t}){let n=()=>F.managedSession?.id===t.session.id&&F.managedSession?.csrfToken===t.session.csrfToken&&F.currentManagedTeam===t.teamId,r=await K();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=F.managedIssues.get(i),o=rg([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});Yv(t.teamId),o&&e()}}):null}async function ox(e){if(!Hv(e))return null;let t=F.reports,n=F.managedSession,r=F.currentManagedTeam,i=()=>Hv(e)&&F.managedSession===n&&F.currentManagedTeam===r&&F.reports===t,a=await K();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function sx(e,t){return(await K()).fetchTeamAnnotations(e,t)}async function cx(e,t=F.currentManagedTeam,n){return(await K()).fetchReportTriage(e,t,n)}async function lx(e,t,n){return(await K()).fetchFixes(e,t,n)}async function ux(e,t=F.currentManagedTeam,n){return(await K()).fetchReportComments(e,t,n)}async function dx(e,t,n,r=F.currentManagedTeam){return(await K()).saveReportComment(e,t,n,r)}async function fx(e,t,n,r,i=F.currentManagedTeam){return(await K()).deleteReportComment(e,t,n,r,i)}async function px(e,t,n,r=F.currentManagedTeam){return(await K()).pushReportTriage(e,t,n,r)}async function mx(e){return e&&G?.rememberFinding(),(await K()).login(e)}async function hx(e){return(await K()).logout(e)}async function gx(e){return(await K()).stopViewing(e)}async function _x(e){return(await K()).fetchProfile(e)}async function vx(e,t,n){return(await K()).chooseProfileAccounts(e,t,n)}async function yx(e,t,n){return(await K()).unlinkGithubAccount(e,t,n)}async function bx(e,t){return(await K()).fetchBundleMetadata(e,t)}async function xx(e,t){return(await K()).fetchBundleContents(e,t)}async function Sx(e,t){return(await K()).fetchTeamReports(e,t)}async function Cx(e,t){return(await K()).fetchTeamTrees(e,t)}async function wx(e,t){return(await K()).watchTeamFeed(e,t)}async function Tx(e,t=F.currentManagedTeam,n=``,r=!1,i=!1){return(await K()).fetchBundleAdvisories(e,t,n,r,i)}async function Ex(...e){return(await K()).dependencyReviews(...e)}async function Dx(...e){return(await K()).myDependencyReviews(...e)}async function Ox(...e){return(await K()).teamDependencyReviews(...e)}async function kx(...e){return(await K()).discardDependencyReview(...e)}async function Ax(...e){return(await K()).latestDependencyReview(...e)}var jx=null,Mx=null,Nx=0;function Px(){return jx||(jx=document.createElement(`div`),jx.id=`app-toast`,jx.setAttribute(`role`,`status`),jx.setAttribute(`aria-live`,`polite`),document.body.append(jx),jx)}function Fx(e,{kind:t=`info`,duration:n=5200}={}){let r=Px(),i=++Nx;clearTimeout(Mx),Mx=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{Nx===i&&r.classList.add(`visible`)});let a=()=>{Nx===i&&Ix()};return n>0&&(Mx=setTimeout(a,n)),a}function Ix(){Nx++,jx&&(clearTimeout(Mx),Mx=null,jx.classList.remove(`visible`))}function Lx(e,t){let n=e.find(e=>e.integrity===t);return e.filter(e=>e.integrity!==t&&(n?.managedId?e.managedId&&n.repoId!=null&&e.repoId===n.repoId:!e.managedId))}function Rx(e){return{managedId:e.id,slug:e.slug,integrity:e.integrity,kind:e.kind,summary:e.summary,commitInfo:e.commitInfo??null,name:e.filename,size:e.byteSize,repoId:e.repoId,repoFullName:e.repoFullName,repoDirectory:e.repoDirectory??``}}function zx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Bx(e,t,n,r=`overview`,i=null,a=[t]){if(!t?.managedId)return null;let o=e.find(e=>e.id===n&&e.bundles?.some(e=>e.id===t.managedId));if(n!=null&&!o)return null;let s=[t,...a.filter(e=>e.managedId&&e.managedId===i?.compareId)];return mi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Vx(e,t=e.bundleDetailsTab){if(t!==`code`)return null;let n=e.bundleCodeFileRequest;if(n?.bundle===e.selectedBundle){if(n.file==null)return null;let{bundle:e,...t}=n;return t}if(!e.bundleSourceFile||e.bundleDetails?.integrity!==e.selectedBundle)return null;let r=Rt(It(e.bundleDetails)).numbers.get(e.bundleSourceFile);if(r==null)return null;let i=e.bundleSourceTargetLine;return i?.bundle!==e.selectedBundle||i.path!==e.bundleSourceFile?{file:r}:{file:r,line:i.line,...i.end>i.line?{endLine:i.end}:{}}}function Hx(e,t=e.bundleDetailsTab){let n=e.bundleCompare;if(t!==`compare`||!n?.target||n.bundle!==e.selectedBundle)return null;let r=e.bundles?.find(t=>t.integrity===e.selectedBundle);if(r?.npm)return{compareSpec:n.target,...ii(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ii(n.mode)}:null;let i=Lx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ii(n.mode)}:null}function Ux(e,t=e.bundleDetailsTab){let n=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm,r=e.npmReview?.bundle===e.selectedBundle?e.npmReview:null,i=e.bundleCompare?.bundle===e.selectedBundle?e.bundleCompare:null;if(n&&t===`review`&&e.bundleDetailsTab===`compare`&&i?.target&&!(r?.started&&r.user===e.managedSession?.id))return{reviewPackage:n.name,reviewSpec:i.target};if(n&&t===`compare`&&e.bundleDetailsTab===`review`&&r?.reviewPackage===n.name)return{compareSpec:r.reviewSpec,...ii(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Vx(e,t)??Hx(e,t)}function Wx(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=Ux(e,t);if(t===`review`&&(e.npmReview={...e.npmReview?.bundle===e.selectedBundle&&e.npmReview.started&&e.npmReview.user===e.managedSession?.id?e.npmReview:{bundle:e.selectedBundle,...i},resume:!0}),t!==`compare`)return;let a=e.npmReview?.bundle===e.selectedBundle&&e.npmReview.reviewPackage===r.name?e.npmReview:null,o=i?.compareSpec??a?.reviewSpec??n(r);o&&(e.bundleDetailsTab===`review`||!i?.compareSpec)&&(e.bundleCompare={bundle:e.selectedBundle,target:o,mode:i?.compareMode??`overview`})}function Gx(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Rx(e)])).values()]}function Kx(e,t,n){if(e.currentView!==`findings`&&e.currentView!==`files`&&e.currentView!==`links`||!e.currentManagedTeam)return!1;let r=t.find(t=>t.id===e.currentManagedTeam);if(n.has(`team:${e.currentManagedTeam}`)||!r||e.managedReports.some(e=>n.has(e.id)))return!0;let i=new Set(r.reports.filter(t=>e.currentManagedReport!==null||t.visible!==!1).map(e=>e.id));if(e.currentManagedReport!==null)return!i.has(e.currentManagedReport);let a=new Set(e.managedReports.map(e=>e.id));return i.size!==a.size||[...i].some(e=>!a.has(e))}async function qx(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=zx(e);if(!o||!r())return!0;let s=[`admin`,`manage`].includes(e.managedSession?.role),c,l=null;if(e.currentManagedTeam!=null||!s){let n=e=>e.bundles?.some(e=>e.id===o);l=t.find(t=>t.id===e.currentManagedTeam&&n(t))??t.find(n)}if(l)c=Gx(t);else if(s)try{c=(await n()).map(Rx)}catch(e){if(e.status!==401&&e.status!==403)throw e;c=[]}else c=[];if(!r())return!0;let u=c.find(e=>e.managedId===o);return u?(e.bundles=c,e.currentManagedTeam=l?.id??null,i(),a(Bx(t,u,e.currentManagedTeam,e.bundleDetailsTab,Ux(e),c)),!0):!1}var Jx={...at,[d]:na},Yx=new Set(Object.keys(Ai)),Xx={...Ai,default:`DeepView`};function Zx(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(st,t)?t:null}function Qx(e){return $x(e,Bu(e))}function $x(e,t){if(t===d)return d;if(t!==void 0)return Yx.has(t)?t:`default`;let n=e.toLowerCase();return n.endsWith(`.generic-md`)?`markdown-generic`:n.endsWith(`.codex`)?`codex-security`:n.endsWith(`.md`)?`claude-security`:`default`}function eS(e){return Bu(e)===d}var tS=`.conflict-sev{display:inline-block;padding:1px .4rem;border-radius:3px;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff;flex-shrink:0;&.sev-critical{background:var(--critical)}&.sev-high{background:var(--high)}&.sev-medium,&.sev-moderate{background:var(--medium)}&.sev-low{background:var(--low)}&.sev-high_bug{background:var(--high-bug)}&.sev-bug{background:var(--bug)}&.sev-informational,&.sev-info{background:var(--info)}&.sev-unrated{background:var(--low);color:var(--badge-low-text)}}
34
- `,nS=`dialog{max-width:720px;width:min(94vw,720px)}header h3{margin:0 0 .25rem}header p{margin:0 0 .75rem;color:var(--muted);font-size:.82rem}.bulk{display:flex;gap:.4rem;margin-bottom:.7rem;padding-bottom:.7rem;border-bottom:1px solid var(--border)}.bulk button,.actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.3rem .8rem;font:inherit;font-size:.78rem;&:hover{border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}&.primary:hover{filter:brightness(1.08)}}.list{list-style:none;margin:0;padding:0;max-height:60vh;overflow-y:auto;overscroll-behavior:none;-webkit-app-region:no-drag;app-region:no-drag;display:flex;flex-direction:column;gap:.5rem}.card{border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.55rem .7rem .6rem;background:rgb(from var(--text) r g b / .02)}.card-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.35rem}.loc{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;color:var(--muted);padding:1px .3rem;background:rgb(from var(--text) r g b / .05);border-radius:var(--ui-radius, 3px)}.desc{font-size:.78rem;color:var(--muted);margin-bottom:.55rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rows{display:flex;flex-direction:column;gap:.35rem}.row{display:grid;grid-template-columns:5rem 1fr 1fr;align-items:stretch;gap:.4rem}.row-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;align-self:center}.choice{position:relative;display:flex;flex-direction:column;gap:.15rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);min-width:0;&:has(input:checked){border-color:var(--accent);background:rgb(from var(--accent) r g b / .07)}&:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}}.choice input[type=radio]{position:absolute;opacity:0;pointer-events:none}.choice-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.choice:has(input:checked) .choice-label{color:var(--accent)}.choice-value{font-size:.82rem;min-width:0}.flag-badge{font-size:.82rem;color:var(--muted)}.flag-badge.on{color:var(--accent);font-weight:600}.color{display:inline-flex;align-items:center;gap:.35rem}.color-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .2);flex-shrink:0;&.marker-red{background:var(--marker-red)}&.marker-blue{background:var(--marker-blue)}&.marker-green{background:var(--marker-green)}&.marker-gray{background:var(--marker-gray)}}.color-name{text-transform:capitalize}.comment-text,.fix-text{cursor:text;user-select:text;-webkit-user-select:text}.comment-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;& em{color:var(--muted);font-style:italic}}.fix-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}
35
- `;function rS({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return A`<div class="dlg-tabs" role="tablist" @keydown="${i=>{if(i.key!==`ArrowLeft`&&i.key!==`ArrowRight`)return;i.preventDefault();let a=e[(e.findIndex(e=>e.id===t)+(i.key===`ArrowRight`?1:-1)+e.length)%e.length];if(!a||a.id===t)return;let o=i.currentTarget;r(a.id),requestAnimationFrame(()=>o.querySelector(`#${n}-tab-${a.id}`)?.focus())}}">${e.map(e=>A`<button type="button" role="tab" class="dlg-tab" id="${`${n}-tab-${e.id}`}" aria-controls="${`${n}-panel-${e.id}`}" aria-selected="${String(t===e.id)}" tabindex="${t===e.id?0:-1}" ?disabled="${i&&t!==e.id}" @click="${()=>r(e.id)}">${e.icon??M}${e.label}</button>`)}</div>`}function iS(e){if(!e)return M;let t=e.replaceAll(`_`,` `);return A`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function aS(e){return`bundle-${e.slice(7,19)}\u2026`}function oS(e){return e.kind===`bundle`?e.label??aS(e.identifier):e.identifier}function sS(e){return e.kind===`bundle`?`bundle`:eS(e.identifier)?`links file`:`report`}function cS(e){let t=e.length,n=t===1,r=new Set(e.map(sS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function lS(e){return A`<ul class="lwd-list">${e.map(e=>{let t=sS(e);return A`<li>${oS(e)}${t===`report`?M:A`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function uS(e){return e.length===0?M:A`<ul class="lwd-list" role="alert">${e.map(e=>A`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function dS(e){return e?A`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:A`<em>none</em>`}function fS(e){return A`<span class="comment-text">${e||A`<em>empty</em>`}</span>`}function pS(e){return e?gi(e)?A`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:A`<span class="fix-text">${e}</span>`:A`<span class="comment-text"><em>empty</em></span>`}function mS(e){return e?A`<span class="${`triage triage-${e}`}">${e}</span>`:A`<em>none</em>`}function hS(e){return e?A`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:A`<em>none</em>`}function gS(e,t){return e===`color`?dS(t):e===`comment`?fS(t):e===`fix`?pS(t):e===`triage`?mS(t):e===`flagged`?hS(t):A`${String(t)}`}function _S(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return A`<div class="card-head">${iS(e?.severity)} ${n?A`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:M} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?A`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:M}`}var vS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},yS={color:0,comment:1,fix:2,triage:3,flagged:4},bS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},xS=class extends jv{static styles=[...jv.styles,fa(tS),fa(nS)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...vS},this._settled=!1}focusInitial(){}_blockEscClose=e=>e.preventDefault();_onClick=e=>{let t=e.target.closest(`[data-bulk]`);if(!t)return;let n=t.dataset.bulk;for(let e of this.renderRoot.querySelectorAll(`input[type="radio"][value="${n}"]`))e.checked=!0};_onSubmit=e=>{e.preventDefault();let t={};for(let e of this.conflicts){let n=`${e.id}:${e.property}`,r=this.renderRoot.querySelector(`input[name="conflict-${CSS.escape(n)}"]:checked`);r&&(t[n]=r.value)}this._finish(t)};render(){let e=this.labels,t=new Map;for(let e of this.conflicts)t.has(e.id)||t.set(e.id,[]),t.get(e.id).push(e);for(let e of t.values())e.sort((e,t)=>(yS[e.property]??99)-(yS[t.property]??99));let n=this.conflicts.filter(e=>e.property===`color`).length,r=this.conflicts.filter(e=>e.property===`comment`).length,i=this.conflicts.filter(e=>e.property===`fix`).length,a=this.conflicts.filter(e=>e.property===`triage`).length,o=this.conflicts.filter(e=>e.property===`flagged`).length,s=[n?`${n} color${n===1?``:`s`}`:``,r?`${r} comment${r===1?``:`s`}`:``,i?`${i} fix${i===1?``:`es`}`:``,a?`${a} triage state${a===1?``:`s`}`:``,o?`${o} flag${o===1?``:`s`}`:``].filter(Boolean).join(`, `),c=`${t.size} finding${t.size===1?``:`s`}`;return A`<dialog @click="${this._onClick}" @cancel="${this._blockEscClose}" @close="${this._onClose}"><header><h3>${e.title}</h3><p>${c} ${e.intro} ${s}.${e.trailingNote?` ${e.trailingNote}`:``}</p><div class="bulk"><button type="button" data-bulk="local">Keep all current</button> <button type="button" data-bulk="imported">${e.importedSideLabel} (all)</button></div></header><form @submit="${this._onSubmit}"><ul class="list">${[...t.entries()].map(([t,n])=>A`<li class="card" data-id="${t}">${_S(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return A`<div class="row" data-key="${n}"><span class="row-label">${bS[t.property]??t.property}</span> <label class="choice"><input type="radio" name="${r}" value="local" required> <span class="choice-label">Keep current</span> <span class="choice-value">${gS(t.property,t.local)}</span></label> <label class="choice"><input type="radio" name="${r}" value="imported" required> <span class="choice-label">${e.importedSideLabel}</span> <span class="choice-value">${gS(t.property,t.imported)}</span></label></div>`})}</div></li>`)}</ul><footer class="actions"><button type="submit" class="primary">${e.applyButton}</button></footer></form></dialog>`}};customElements.define(`triage-conflict-dialog`,xS);function SS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...vS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(nh(e.detail?.cause))}),document.body.append(a)})}var CS=[`type`,`model`,`effort`,`exportsMode`],wS=[`security`,`correctness`],TS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],ES=[`list`,`isolate`];function DS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var OS={type:e=>e===`terminal`?wS.length+2:DS(wS,e),model:e=>+(e==null),effort:e=>DS(TS,e),exportsMode:e=>DS(ES,e)};function kS(e,t,n){for(let r of n){let n=OS[r],i=n(e[r])-n(t[r]);if(i!==0)return i;let a=String(e[r]??``).localeCompare(String(t[r]??``));if(a!==0)return a}return 0}function AS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function jS(e,t){let n=t.filter(e=>e!==`exportsMode`),r=[],i=new Map;for(let t of e){if(t.exportsMode==null){r.push({...t});continue}let e=n.map(e=>t[e]??``).join(`|`),a=i.get(e);if(a){a.exportsMode=`${a.exportsMode}+${t.exportsMode}`;continue}let o={...t};i.set(e,o),r.push(o)}return r}function MS(e,t=CS){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?zi(r.model)??null:r[n]??null;let i=t.map(t=>e[t]??``).join(`|`);n.has(i)||n.set(i,e)}let r=[...n.values()].toSorted((e,n)=>kS(e,n,t));if(r.length===0)return[];let i={};for(let e of t)i[e]=new Set(r.map(t=>t[e])).size===1;let a=t.filter(e=>!i[e]),o=a.includes(`exportsMode`)?jS(r,t):r,s=o.length>2&&a.includes(`type`)&&a.length>1,c=[`model`,`effort`].filter(e=>t.includes(e)&&i[e]),l=[...c,...t.filter(e=>!c.includes(e))],u=[],d=!1;for(let e of l)if(i[e]){let t=AS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>AS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function NS(e=!1,t=``){let n=new Set;return[`deepview`,...e?[`security`]:[],...t.split(`,`)].map(e=>e.trim()).filter(e=>{let t=e.toLowerCase();return!e||n.has(t)?!1:(n.add(t),!0)})}var PS=null;function FS(){return PS||(PS=(async()=>await import(`./prism.js`))(),PS)}var IS=1048576;function LS(e){return e.length<=IS&&_a(e)<=IS}var RS={__proto__:null,js:`javascript`,javascript:`javascript`,mjs:`javascript`,cjs:`javascript`,node:`javascript`,jsx:`jsx`,ts:`typescript`,typescript:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,json:`json`,css:`css`,html:`markup`,htm:`markup`,xml:`markup`,svg:`markup`,markup:`markup`,yaml:`yaml`,yml:`yaml`,sh:`bash`,bash:`bash`,shell:`bash`,zsh:`bash`,console:`bash`,md:`markdown`,markdown:`markdown`,sol:`solidity`,solidity:`solidity`,rs:`rust`,rust:`rust`,rb:`ruby`,ruby:`ruby`,py:`python`,python:`python`,py3:`python`,python3:`python`,php:`php`,phtml:`php`,java:`java`,cpp:`cpp`,"c++":`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,hxx:`cpp`,"h++":`cpp`,h:`cpp`,c:`c`,objc:`objectivec`,objectivec:`objectivec`,"objective-c":`objectivec`,m:`objectivec`,mm:`objectivec`};function zS(e){return typeof e==`string`?RS[e.toLowerCase()]??null:null}async function BS(e,t,n=null){if(!t||!LS(e))return null;try{return(await FS()).highlight(e,t,n)}catch{return null}}function VS(e){let t=[],n=[],r=``,i=0;for(;i<e.length;){let a=e.indexOf(`<`,i),o=(a===-1?e.slice(i):e.slice(i,a)).split(`
36
- `);r+=o[0];for(let e=1;e<o.length;e++){for(let e=n.length-1;e>=0;e--)r+=n[e].close;t.push(r),r=n.map(e=>e.open).join(``)+o[e]}if(a===-1)break;let s=e.indexOf(`>`,a);if(s===-1){r+=e.slice(a);break}let c=e.slice(a,s+1);c.startsWith(`</`)?n.pop():n.push({open:c,close:`</${/^<([a-zA-Z][^\s/>]*)/u.exec(c)?.[1]??`span`}>`}),r+=c,i=s+1}return t.push(r),t}var HS=new Map,US=new Set,WS=!1;function GS(){WS||(WS=!0,queueMicrotask(()=>{WS=!1,F.codeBlockTick++,X()}))}function KS(e,t){let n=zS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return HS.has(r)?HS.get(r):(US.has(r)||(US.add(r),(async()=>{let t=await BS(e,n);HS.set(r,t??null),US.delete(r),GS()})()),null)}var qS=new WeakMap,JS=new WeakMap;function YS(e){let t=/^([a-z][a-z\d+.-]*:\/\/[^/]*)(.*)$/iu.exec(e),n=t?.[1]??``,r=t?.[2]??e,i=r.startsWith(`/`),a=[];for(let e of r.split(`/`))if(e&&e!==`.`){if(e===`..`&&a.length>0&&a.at(-1)!==`..`)a.pop();else{if(e===`..`&&i&&a.length===0)return null;a.push(e)}}return n+(i?`/`:``)+a.join(`/`)}function XS(e){let t=new Map;for(let n of e.keys()){let e=YS(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function ZS(e,t,n,r){let i=YS(n);if(i===null)return null;let a=typeof r==`string`?YS(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=JS.get(e);for(s||(s=new Map,JS.set(e,s));;){if(o.endsWith(`node_modules/`))return null;let n=`${o}package.json`;if(t.has(n)){if(!s.has(n)){let r=e.get(t.get(n)),i=null;try{i=typeof r==`string`?JSON.parse(r.replace(/^\uFEFF/u,``))?.imports??null:null}catch{}s.set(n,i&&typeof i==`object`&&!Array.isArray(i)?i:null)}return{directory:o,imports:s.get(n)}}if(n===a||!o||o===`/`||o.endsWith(`../`)||/^[a-z][a-z\d+.-]*:\/\/[^/]*\/?$/iu.test(o))return null;let r=o.slice(0,-1);o=r.slice(0,r.lastIndexOf(`/`)+1)}}function QS(e,t){if(!e)return null;if(Object.hasOwn(e,t)&&!t.includes(`*`))return{value:e[t],wildcard:null};let n=null;for(let r of Object.keys(e)){let e=r.indexOf(`*`);if(!r.startsWith(`#`)||e===-1||r.indexOf(`*`,e+1)!==-1)continue;let i=r.slice(0,e),a=r.slice(e+1);t.length<=i.length+a.length||!t.startsWith(i)||!t.endsWith(a)||(!n||e>n.star||e===n.star&&r.length>n.pattern.length)&&(n={pattern:r,star:e,suffix:a})}return n?{value:e[n.pattern],wildcard:t.slice(n.star,t.length-n.suffix.length)}:null}function $S(e,t,n=0){return n>16?[null]:typeof e==`string`?[t===null?e:e.replaceAll(`*`,t)]:e&&typeof e==`object`?Object.values(e).flatMap(e=>$S(e,t,n+1)):[null]}function eC(e,t,n,r,i,a){if(typeof e!=`string`||/[\\\p{Cc}]/u.test(e)||/%2f|%5c/iu.test(e))return null;let o=e.startsWith(`./`),s=null;if(o){let n;try{n=decodeURIComponent(e.slice(2))}catch{return null}if(/[\\\p{Cc}]/u.test(n)||n.split(`/`).some(e=>[`.`,`..`,`node_modules`].includes(e.toLowerCase())))return null;s=YS(t.directory+n)}else if(e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`#`)||e.includes(`:`))return null;let c=new Set([e]);if(o)for(let e of i?.keys()??[])(e.startsWith(`./`)||e.startsWith(`../`))&&YS(a+e)===s&&c.add(e);let l=!1,u=null;for(let e of c){if(!i?.has(e))continue;let t=i.get(e);if(typeof t!=`string`||!n.has(t)||l&&t!==u)return null;l=!0,u=t}return l?u:o?r.get(s)??null:null}function tC(e,t,n,r,i,a){let o=QS(e?.imports,t);if(!o)return null;let s=$S(o.value,o.wildcard),c=null;for(let t of s){let o=eC(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function nC(e,t=It(e)){let n=new Map;if(e?.kind===`stasis`)for(let r of e.bundle?.imports?.values()??[])for(let[e,i]of r){if(!t.has(e))continue;n.has(e)||n.set(e,new Map);let r=n.get(e);for(let[e,n]of i){let i=typeof n==`string`&&t.has(n)?n:null;r.set(e,r.has(e)&&r.get(e)!==i?null:i)}}else if(e?.kind===`sourcemap`)for(let[r,i]of Ft(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function rC(e,t,n=null,r=e,i=null){let a=qS.get(e);a||(a=XS(e),qS.set(e,a));let o=qS.get(r);o||(o=XS(r),qS.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?ZS(r,o,t,i?.get(t)):null;return t=>{if(typeof t!=`string`||/\p{Cc}/u.test(t))return null;if(s?.has(t)){let n=s.get(t);return typeof n==`string`&&e.has(n)?n:null}if(t.startsWith(`#`))return tC(l,t,e,a,s,c);if(!t.startsWith(`./`)&&!t.startsWith(`../`))return null;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<=0||r===n.length-1?null:a.get(YS(c+t))??null}}var iC=new WeakMap;function aC(e,t){let n=It(e),r=iC.get(n);return r||(r={imports:nC(e,n),packageDirs:Wt(e)},iC.set(n,r)),rC(n,t,r.imports,Bt(e),r.packageDirs)}var oC=/[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u2800\u3000\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Default_Ignorable_Code_Point}]/u,sC=new RegExp(oC.source,`gu`),cC=new Map(`0000 NUL NULL
37
- 0001 SOH START OF HEADING
38
- 0002 STX START OF TEXT
39
- 0003 ETX END OF TEXT
40
- 0004 EOT END OF TRANSMISSION
41
- 0005 ENQ ENQUIRY
42
- 0006 ACK ACKNOWLEDGE
43
- 0007 BEL BELL
44
- 0008 BS BACKSPACE
45
- 000B VT LINE TABULATION
46
- 000C FF FORM FEED
47
- 000D CR CARRIAGE RETURN
48
- 000E SO SHIFT OUT
49
- 000F SI SHIFT IN
50
- 0010 DLE DATA LINK ESCAPE
51
- 0011 DC1 DEVICE CONTROL ONE
52
- 0012 DC2 DEVICE CONTROL TWO
53
- 0013 DC3 DEVICE CONTROL THREE
54
- 0014 DC4 DEVICE CONTROL FOUR
55
- 0015 NAK NEGATIVE ACKNOWLEDGE
56
- 0016 SYN SYNCHRONOUS IDLE
57
- 0017 ETB END OF TRANSMISSION BLOCK
58
- 0018 CAN CANCEL
59
- 0019 EM END OF MEDIUM
60
- 001A SUB SUBSTITUTE
61
- 001B ESC ESCAPE
62
- 001C FS FILE SEPARATOR
63
- 001D GS GROUP SEPARATOR
64
- 001E RS RECORD SEPARATOR
65
- 001F US UNIT SEPARATOR
66
- 007F DEL DELETE
67
- 0080 PAD PADDING CHARACTER
68
- 0081 HOP HIGH OCTET PRESET
69
- 0082 BPH BREAK PERMITTED HERE
70
- 0083 NBH NO BREAK HERE
71
- 0084 IND INDEX
72
- 0085 NEL NEXT LINE
73
- 0086 SSA START OF SELECTED AREA
74
- 0087 ESA END OF SELECTED AREA
75
- 0088 HTS CHARACTER TABULATION SET
76
- 0089 HTJ CHARACTER TABULATION WITH JUSTIFICATION
77
- 008A VTS LINE TABULATION SET
78
- 008B PLD PARTIAL LINE FORWARD
79
- 008C PLU PARTIAL LINE BACKWARD
80
- 008D RI REVERSE LINE FEED
81
- 008E SS2 SINGLE SHIFT TWO
82
- 008F SS3 SINGLE SHIFT THREE
83
- 0090 DCS DEVICE CONTROL STRING
84
- 0091 PU1 PRIVATE USE ONE
85
- 0092 PU2 PRIVATE USE TWO
86
- 0093 STS SET TRANSMIT STATE
87
- 0094 CCH CANCEL CHARACTER
88
- 0095 MW MESSAGE WAITING
89
- 0096 SPA START OF GUARDED AREA
90
- 0097 EPA END OF GUARDED AREA
91
- 0098 SOS START OF STRING
92
- 0099 SGC SINGLE GRAPHIC CHARACTER INTRODUCER
93
- 009A SCI SINGLE CHARACTER INTRODUCER
94
- 009B CSI CONTROL SEQUENCE INTRODUCER
95
- 009C ST STRING TERMINATOR
96
- 009D OSC OPERATING SYSTEM COMMAND
97
- 009E PM PRIVACY MESSAGE
98
- 009F APC APPLICATION PROGRAM COMMAND
99
- 00A0 NBSP NO-BREAK SPACE
100
- 00AD SHY SOFT HYPHEN
101
- 034F CGJ COMBINING GRAPHEME JOINER
102
- 061C ALM ARABIC LETTER MARK
103
- 115F HCF HANGUL CHOSEONG FILLER
104
- 1160 HJF HANGUL JUNGSEONG FILLER
105
- 1680 OSM OGHAM SPACE MARK
106
- 17B4 KIVAQ KHMER VOWEL INHERENT AQ
107
- 17B5 KIVAA KHMER VOWEL INHERENT AA
108
- 180E MVS MONGOLIAN VOWEL SEPARATOR
109
- 2000 NQSP EN QUAD
110
- 2001 MQSP EM QUAD
111
- 2002 ENSP EN SPACE
112
- 2003 EMSP EM SPACE
113
- 2004 3/MSP THREE-PER-EM SPACE
114
- 2005 4/MSP FOUR-PER-EM SPACE
115
- 2006 6/MSP SIX-PER-EM SPACE
116
- 2007 FSP FIGURE SPACE
117
- 2008 PSP PUNCTUATION SPACE
118
- 2009 THSP THIN SPACE
119
- 200A HSP HAIR SPACE
120
- 200B ZWSP ZERO WIDTH SPACE
121
- 200C ZWNJ ZERO WIDTH NON-JOINER
122
- 200D ZWJ ZERO WIDTH JOINER
123
- 200E LRM LEFT-TO-RIGHT MARK
124
- 200F RLM RIGHT-TO-LEFT MARK
125
- 2028 LS LINE SEPARATOR
126
- 2029 PS PARAGRAPH SEPARATOR
127
- 202A LRE LEFT-TO-RIGHT EMBEDDING
128
- 202B RLE RIGHT-TO-LEFT EMBEDDING
129
- 202C PDF POP DIRECTIONAL FORMATTING
130
- 202D LRO LEFT-TO-RIGHT OVERRIDE
131
- 202E RLO RIGHT-TO-LEFT OVERRIDE
132
- 202F NNBSP NARROW NO-BREAK SPACE
133
- 205F MMSP MEDIUM MATHEMATICAL SPACE
134
- 2060 WJ WORD JOINER
135
- 2061 FA FUNCTION APPLICATION
136
- 2062 IT INVISIBLE TIMES
137
- 2063 IS INVISIBLE SEPARATOR
138
- 2064 IP INVISIBLE PLUS
139
- 2066 LRI LEFT-TO-RIGHT ISOLATE
140
- 2067 RLI RIGHT-TO-LEFT ISOLATE
141
- 2068 FSI FIRST STRONG ISOLATE
142
- 2069 PDI POP DIRECTIONAL ISOLATE
143
- 2800 BLANK BRAILLE PATTERN BLANK
144
- 3000 IDSP IDEOGRAPHIC SPACE
145
- 3164 HF HANGUL FILLER
146
- FEFF BOM ZERO WIDTH NO-BREAK SPACE
147
- FFA0 HWHF HALFWIDTH HANGUL FILLER
148
- E0001 LANG LANGUAGE TAG
149
- E0020 SP TAG SPACE
150
- E007F CANCEL CANCEL TAG`.split(`
151
- `).map(e=>{let[,t,n,r]=/^(\S+) (\S+) (.+)$/u.exec(e);return[Number.parseInt(t,16),{label:n,name:r}]})),lC=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function uC(e){let t=cC.get(e);if(t)return{label:t.label,title:`${lC(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${lC(e)} TAG ${t}`}}let n=e>=65024&&e<=65039?e-65024+1:e>=917760&&e<=917999?e-917760+17:0;return n?{label:`VS${n}`,title:`${lC(e)} VARIATION SELECTOR-${n}`}:{label:lC(e),title:`${lC(e)} ${mC(e)}`}}var dC=/\p{Cf}/u,fC=/\p{Default_Ignorable_Code_Point}/u,pC=/\p{Cn}/u;function mC(e){if(e>=55296&&e<57344)return`lone surrogate`;if((e&65534)==65534||e>=64976&&e<=65007)return`noncharacter`;if(e>=57344&&e<=63743||e>=983040)return`private use character`;let t=String.fromCodePoint(e);return dC.test(t)?`format character`:fC.test(t)&&!pC.test(t)?`invisible character`:`unassigned code point`}function hC(e,t){let n=[];sC.lastIndex=0;for(let r=sC.exec(e);r;r=sC.exec(e)){let i=r[0].codePointAt(0),a=He(e,r.index,i,t);a===-1?n.push([r.index,i]):sC.lastIndex=a}return n}function gC(e){return oC.test(e)}var _C=e=>{let{label:t,title:n}=uC(e);return A`<span class="code-control" data-tooltip="${n}">${t}</span>`};function vC(e,t=!1){if(!gC(e))return[e];let n=[],r=0;for(let[i,a]of hC(e,t))i>r&&n.push(e.slice(r,i)),n.push(_C(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var yC=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`);function bC(e,t=!1){if(!gC(e))return e;let n=``,r=[];for(let t=0;t<e.length;){let i=e.indexOf(`<`,t),a=i===-1?e.length:i;if(a>t&&(r.push({text:n.length,markup:t}),n+=e.slice(t,a)),i===-1)break;let o=e.indexOf(`>`,i);t=o===-1?e.length:o+1}let i=``,a=0,o=0;for(let[s,c]of hC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=uC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${yC(l)}">${yC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function xC(e,t){return!!e&&!!t&&e.integrity===t.integrity&&e.file===t.file&&(e.range?.start??null)===(t.range?.start??null)&&(e.range?.end??null)===(t.range?.end??null)}var SC=[];function CC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!xC(e[0],n))return{stack:SC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function wC({stack:e,at:t,base:n},r){if(xC(e.length>0?e[t]:n,r))return null;let i=e.length>0?e.slice(0,t+1):[n];return{stack:[...i,r],at:i.length}}function TC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function EC(e,t){if(!e||!t||t.length===0)return;let n=e.getBoundingClientRect().top,r=t[0].getBoundingClientRect(),i=t.item(t.length-1).getBoundingClientRect(),a=r.top-n+e.scrollTop,o=a+(i.bottom-n+e.scrollTop-a)/2-e.clientHeight/2;e.scrollTo({top:Math.max(0,Math.min(o,a-r.height)),behavior:`instant`})}var DC=new Map,OC=new Map,kC=new Set,AC=new WeakMap,jC=new Set;function MC(e,t,n,r,i,a=OC,o=kC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Pt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await BS(n,c,i);a.set(s,typeof e==`string`?bC(e):null),o.delete(s),F.focusCodeTick++,queueMicrotask(X)})()}async function NC(e){let t=DC.get(e);if(t&&(t.loading||t.sources))return;let n=(F.bundles??[]).find(t=>t.integrity===e);if(n){DC.set(e,{sources:null,loading:!0,error:null});try{let t=await aq(e,n),r=It(t);DC.set(e,{sources:r,packageFiles:Bt(t),packageDirs:Wt(t),imports:nC(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){DC.set(e,{sources:null,loading:!1,error:t.message})}F.focusCodeTick++,queueMicrotask(X),queueMicrotask(PC)}}function PC(){let e=z.querySelectorAll(`.focus-code-line-active`);e.length!==0&&EC(e[0].closest(`.focus-code-body`),e)}function FC(e){if(I()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;F.focusCodeTick;let t=hb(e._managedReportId);if(t?.data===null||t?.error)return null;let n={integrity:t?.data?.integrity??null,reportId:e._managedReportId},r=[e,...Array.isArray(e.evidence)?e.evidence:[]];for(let e of r){let t=IC(n,e?.file);if(t)return{...n,file:t,line:e.line}}return null}let t=e?._bundleHashes;return!e?.fileHash||!Array.isArray(t)||t.length===0?null:tp(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function IC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return Qf(e.integrity,t);let n=hb(e.reportId);if(!n||n.data===void 0&&!n.error)return t;let r=n.data;return r?.paths.get(t)??(r?.sources.has(t)?t:null)}function LC(e,t,n){if(!I())return null;let r=hb(e);if(!r||r.data===void 0&&!r.error)return n&&!jC.has(e)&&(jC.add(e),_b(e).catch(()=>{}).finally(()=>{jC.delete(e),F.focusCodeTick++,queueMicrotask(X),queueMicrotask(PC)})),n?{loading:!0}:null;let i=r.data;if(!i)return null;t=i.paths.get(t)??t;let a=i.sources.get(t);if(typeof a!=`string`)return null;let o=AC.get(i);return o||(o={cache:new Map,pending:new Set},AC.set(i,o)),MC(i.integrity,t,a,i.formats?.get(t),rC(i.sources,t,i.imports,i.sources,i.packageDirs),o.cache,o.pending),{content:a,highlighted:o.cache.get(`${i.integrity}\0${t}`)??null,loading:!1}}function RC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return LC(r,t,n);if(I())return null;let i=DC.get(e);if(!i)return n?(NC(e),{loading:!0}):null;if(i.loading&&!n)return null;if(i.loading)return{loading:!0};if(!i.sources)return null;let a=i.sources.get(t);if(typeof a!=`string`)return null;MC(e,t,a,i.formats?.get(t),rC(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:OC.has(o)?OC.get(o):void 0,loading:!1}}function zC(e){let t=FC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Gn(t.reportId?t.line:e.line)}:null}function BC(e){return e?zC(Rg(e)):null}function VC(e){let t=BC(e);return t?{base:t,...CC(F.focusCodeStack,F.focusCodeAt,t)}:null}function HC(e){let t=zC(e);return t?CC(F.focusCodeStack,F.focusCodeAt,t).pos:null}function UC(e,t,n,r){let i=VC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=RC(t,r,{kick:!1,reportId:Rg(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function WC(e){let t=e&&Rg(e),n=FC(t);if(n?.reportId&&!n.integrity)return LC(n.reportId,n.file,!0);let r=VC(e);if(!r)return null;let{pos:i}=r,a=RC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function GC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=T(e);if(!ei(r))return null;if(I()){let i=t?null:n??(F.currentView===`links`?e._managedReportId:F.currentManagedReport),a=si(mi({view:`findings`,teamId:F.currentManagedTeam,reportId:i,finding:{id:r}},F.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||F.currentFile||``,a=F.currentWorkspace||KC(i);return Ur({id:r,report:F.currentWorkspace?null:Vr(`report`,i),workspace:Vr(`workspace`,a??``)})}function KC(e,t=F.currentReportWorkspace||F.currentWorkspace){let n=sp(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function qC(e){for(let t of[n_(),$g()])for(let n of t)for(let t of n)if(T(t)===e)return{group:n,finding:t};return null}function JC(e,t){F.currentView=`findings`,F.viewMode===`graph`&&(F.viewMode=`table`,ar());let n=Ug(e).commonTriage;if(F.viewMode===`kanban`){let e=n??`untriaged`;F.kanbanExpandedColumn!==null&&F.kanbanExpandedColumn!==e&&(F.kanbanExpandedColumn=null)}else n!==F.shownTriage&&(F.shownTriage=n);F.upstreamOnly&&!e.every(e=>e.isUpstream)&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly);let r=e.find(e=>T(e)===t);if(Lr(r)||E_(r_())&&!S_(e)||!Pg(e).some(e=>T(e)===t)){if(F.currentWorkspace){r?.isUpstream?F.upstreamOnly=!0:F.showRevalidation=!1,Tr(F.showRevalidation,F.upstreamOnly);let e=n_().find(e=>e.some(e=>T(e)===t));if(e)return JC(e,t)}else F.revalidationDetailed=!0}if(H_([e]).length===0){let e=F.sortBy;m_(),F.sortBy=e}let i=H(e);return e.length>1&&F.activeTabByGroup.set(i,t),F.viewMode===`table`?F.tableSelectedGid=i:F.viewMode===`focus`?F.focusGid=i:F.viewMode===`kanban`&&(F.kanbanPopoverGid=i),i}function YC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function XC(e,t){if(e.createdAt==null&&t.createdAt!=null)return-1;if(e.createdAt!=null&&t.createdAt==null)return 1;let n=(e.createdAt??0)-(t.createdAt??0);return n===0?e.id===t.id?0:e.id<t.id?-1:1:n}var ZC=new Map;function QC(e,t){ZC.has(e)||ZC.set(e,new Set);let n=ZC.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&ZC.delete(e)}}function $C(e,t){F.managedComments.set(e,t);for(let t of ZC.get(e)??[])t()}function ew(e){return I()?F.managedComments?.get(e?.id)??[]:[]}function tw(){return I()&&F.managedSession!=null&&tt(F.managedSession.role,`triage`)}function nw(e){return tw()&&YC(e,F.managedSession)}function rw(e){let t=F.reports,n=F.managedSession?.id;return()=>I()&&n!=null&&F.managedSession?.id===n&&F.reports===t&&F.managedReports.some(t=>t.id===e)}async function iw(e,{signal:t,readAnnotations:n}={}){let r=rw(e);if(!r())return!1;let i=new Set(F.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id)))),a=new Map([...i].map(e=>[e,F.managedComments.get(e)])),o=n?(await n(e))?.comments:await ux(e,F.currentManagedTeam,{signal:t});if(!r()||o==null||t?.aborted)return!1;let s=new Map([...i].map(e=>[e,[]]));for(let e of o)s.has(e.findingId)&&s.get(e.findingId).push(e);for(let[e,t]of s)F.managedComments.get(e)===a.get(e)&&!aw(a.get(e),t)&&$C(e,t);return!0}function aw(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function ow(e,t,n=null){let r=e?._managedReportId,i=rw(r);if(!i()||!tw()||n&&n.authorId!==F.managedSession.id)return{status:403};let a=await dx(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},F.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(F.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort(XC),$C(e.id,t)}return a}async function sw(e,t){let n=e?._managedReportId,r=rw(n);if(!r()||!nw(t))return 403;let i=await fx(n,t.id,t.version,F.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=F.managedComments.get(e.id)??[];$C(e.id,n.filter(e=>e.id!==t.id))}return i}function cw(e,t){return e?qr(e,A`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${Ke()?M:A`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):M}function lw(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return M;let r=new Date(n),i=[e.createdAt==null?``:`Posted ${new Date(e.createdAt).toLocaleString()}`,t?`Edited ${new Date(e.updatedAt).toLocaleString()}`:``].filter(Boolean).join(`
152
- `);return A`<time class="managed-comment-time" datetime="${r.toISOString()}" data-tooltip="${i}">${e.createdAt==null?`edited `:``}${r.toLocaleString(void 0,{dateStyle:`short`,timeStyle:`short`})}${t&&e.createdAt!=null?` (edited)`:``}</time>`}function uw(e,t,n=M){let r=lw(e);return A`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?A`<span class="managed-comment-author">${cw(e.authorId,e.authorLogin)} ${e.authorLogin?A`<strong>${e.authorLogin}</strong>`:M}</span>`:M}<div class="managed-comment-body">${t}</div>${r===M&&n===M?M:A`<div class="managed-comment-meta">${n===M?M:A`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function dw(e){return ir(e,{managed:I()}).map(e=>typeof e==`string`?e:e.self?A`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var fw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><rect x="3" y="2.5" width="8" height="10" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><rect x="5.5" y="5" width="8" height="9" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,pw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 3 5 8l5 5"/></svg>`,mw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3 11 8l-5 5"/></svg>`,hw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3.5h12M2 8h9a2.5 2.5 0 0 1 0 5H8.5M10 11.5 8.5 13l1.5 1.5M2 13h3.5"/></svg>`,gw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M5 2h8a1 1 0 0 1 1 1v8M3 5h7a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1ZM4.5 9.5h4"/></svg>`,_w=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><path d="m4.5 6 2 2-2 2M8.5 10h3"/></svg>`,vw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5Z"/></svg>`,yw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 4.5L2 8l3.5 3.5"/><path d="M10.5 4.5L14 8l-3.5 3.5"/></svg>`;function bw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function xw(e,{variant:t=`full`}={}){let n=F.severityMode,r=O(e,n),i=A`<span class="${`badge ${r}`}">${bw(r)}</span>`,a=Pi(e),o=t===`tab`?null:Fi(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${bw(t.severity)}`).join(`; `)}`:null,c=o?A`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:M;if(!a)return A`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=O(e,`original`),u=Ni(e),d=e.correctedSeverityReason,f=(ji[u]??0)>(ji[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${bw(l)}`:`Original severity \u2014 corrected ${p} to ${bw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${bw(r)}; ${h?`corrected ${p} from ${bw(l)}`:`original, corrected to ${bw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return A`<span class="badge-pair badge-pair-tab" data-tooltip="${g}" aria-label="${_}">${i}<span class="${`badge-corr-mark ${p}`}" aria-hidden="true">${m}</span></span>`;let v=h?l:u;return A`<span class="${`badge-pair badge-pair-${t}`}" data-tooltip="${g}" aria-label="${_}">${i}<span class="badge-orig-wrap"><span class="${`badge-arrow ${p}`}" aria-hidden="true">${m}</span>${h?A`<span class="badge-pre" aria-hidden="true">was</span>`:M}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${bw(v)}</span></span>${c}</span>`}var Sw=/\[[^\]\n]+\]\([^)\s]+\)|\*\*[^*\n]+\*\*|(?<![\p{L}\p{M}\p{N}_])_(?![\s_])(?:[^_\n]|(?<=[\p{L}\p{M}\p{N}])_(?=[\p{L}\p{M}\p{N}]))*?(?<!\s)_(?![\p{L}\p{M}\p{N}_])|"[^"\n]+"|`[^`\n]+`/gu;function Cw(e){let t=[],n=0;for(let r of e.matchAll(Sw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Xn(r[0]);t.push(e?A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(A`<strong>${Cw(r[0].slice(2,-2))}</strong>`):i===95?t.push(A`<em>${Cw(r[0].slice(1,-1))}</em>`):i===96?t.push(A`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(A`<span class="inline-quote">${r[0]}</span>`);n=r.index+r[0].length}return n===0?e:(n<e.length&&t.push(e.slice(n)),t)}function ww({lang:e,code:t}){F.codeBlockTick;let n=KS(t,e);return A`<div class="code-block" data-lang="${e||M}">${e?A`<div class="code-block-lang">${e}</div>`:M}<pre><code>${n?k(n):t}</code></pre></div>`}function Tw(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(Wn);return n.length<2&&typeof n[0]!=`object`?t?A`<div class="para">${Cw(e)}</div>`:Cw(e):n.map(e=>typeof e==`string`?A`<div class="para">${Cw(e)}</div>`:Ew(e))}function Ew({level:e,text:t,rule:n}){return n?A`<hr class="md-rule">`:A`<div class="md-heading" role="heading" aria-level="${e}">${Cw(t)}</div>`}var Dw=/^\[([ xX])\][ \t]+/u;function Ow({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=Dw.exec(e);return t?A`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${kw(e.slice(t[0].length))}</li>`:A`<li>${kw(e)}</li>`});return e?A`<ol class="md-list" start="${t>1?t:M}">${r}</ol>`:A`<ul class="md-list">${r}</ul>`}function kw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
153
- `,`
154
- `),r=t?Un(n):[n],i=r.length>1,a=e=>t?Tw(e,{wrap:i}):Cw(e),o=e=>{let t=Hn(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):ww(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):Ow(e))}function Aw(e){let t=new Set;for(let n of e)t.add(Qx(n));return[...t]}function jw(e){let t=Qx(e);return Xx[t]??t}function Mw(e,t){F.linksTick,F.findingIndexTick;let n=T(e),r=ei(n)?ud(n).filter(e=>!t.has(e)):[];return r.length===0?M:A`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=rr(e),n=Yd(e),r=F.currentView===`links`&&F.currentLinks?.managedId?Zd([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${x(e)} (${jw(e)})`).join(`, `)}`;return A`<a class="duplicate-ref" href="${I()?GC({id:e},{teamOnly:!0}):`#${Hr({id:e})}`}" data-links-preview="${r?e:M}" data-preview-report="${r?.report??M}" data-preview-row="${r?.index??M}" data-preview-managed-report="${r?.managedReportId??M}" data-tooltip="${`${t}${i}`}">${Aw(n).map(e=>k(Jx[e]??Jx.default))}<span class="duplicate-ref-id">${tr(e)??t}</span></a>`})}</div>`}function Nw(e){let t=Pr(e);return t?A`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:M}function Pw(e){let t=Dr()?Bi(e.revalidateVerdict,e):``;return t?A`<div class="revalidate-verdict">${kw(Vn(t))}</div>`:M}function Fw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?A`<div class="section-body">${kw(Vn(t))}</div>`:M;return!r||!t?A`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:A`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function Iw(e,t,n){let r=e?.integrity&&t?.file?IC(e,t.file):null;return r?A`<span class="evidence-ref" role="link" tabindex="0" data-code-nav-integrity="${e.integrity}" data-code-nav-file="${r}" data-code-nav-line="${t?.line??``}">${n}</span>`:A`<span class="evidence-ref">${n}</span>`}function Lw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return M;let r=Bg(e),i=FC(e),a=t===`focus`&&i!==null,o=a?HC(e):null;return A`<details class="evidence"><summary class="section-label">Evidence<span class="evidence-count">(${n.length})</span></summary><ol class="evidence-list">${n.map((t,n)=>{let s=Ki(t),c=Jn(t,e,r,n),l=hi(t),u=Xw(e,`ev${n}`,i,t?.file,t?.line),d=Gw(c),f=a&&xC(o,{integrity:i.integrity,file:IC(i,t?.file),range:Gn(t?.line)});return A`<li class="${C({current:f})}">${a?Iw(i,t,s):c?A`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:A`<span class="evidence-ref">${s}</span>`} ${u?.mark??M} ${d} ${u?.tip??M} ${l?A`<div class="evidence-note">${kw(Vn(l))}</div>`:M} ${u?.body??M}</li>`})}</ol></details>`}function Rw(e,t){let n=Ki(e);return t?A`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function zw(e,t){if(!t)return M;let n=t.slice(0,7),r=Qn(e,t);return r?A`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:A`<span data-tooltip="${t}">${n}</span>`}var Bw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Vw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Hw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"><path d="M6.2 11.2H4.8a3.2 3.2 0 0 1 0-6.4h1.4"/><path d="M9.8 4.8h1.4a3.2 3.2 0 0 1 0 6.4H9.8"/><path d="M5.6 8h4.8"/></g></svg>`,Uw=A`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.4 4.6 1.3 8l3.1 3.4"/><path d="m11.6 4.6 3.1 3.4-3.1 3.4"/><path d="M9.8 2.6 6.2 13.4"/></g></svg>`,Ww=k(oa);function Gw(e){let t=Bn(e);return t?A`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${Ww}</a>`:M}function Kw(e,t,n,r){return`${T(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var qw={key:null,host:null};function Jw(e,t){if(qw.key===e)return;let n=qw.host,r=e===null?null:t?.getRootNode?.()?.host??null;qw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function Yw(e,t,n){F.codeBlockTick;let{text:r,lines:i,startLine:a}=qn(e,t);if(i.length===0)return M;let o=n.lastIndexOf(`.`),s=KS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return A`<div class="code-preview" style="${E({"--lineno-width":`${String(c).length}ch`})}"><aside class="code-preview-gutter" aria-hidden="true">${i.map((e,n)=>{let r=a+n,i=!!t&&r>=t.start&&r<=t.end;return A`<div class="${C({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?k(s):r}</code></pre></div>`}function Xw(e,t,n,r,i){if(F.bundleHashTick,!n||!r)return null;let a=IC(n,r);if(!a)return null;let o=Gn(i),s=Kw(e,t,r,o),c=F.codePreviews.has(s);F.focusCodeTick;let l=A`<button type="button" class="${C({"code-preview-btn":!0,open:c})}" data-code-preview="${s}" aria-expanded="${String(c)}" aria-label="${c?`Hide the source at ${r}`:`Show the source at ${r}`}" @mouseenter="${e=>{Jw(s,e.currentTarget),RC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{qw.key===s&&Jw(null,e.currentTarget)}}" @focus="${e=>{Jw(s,e.currentTarget),RC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{qw.key===s&&Jw(null,e.currentTarget)}}">${Uw}</button>`;if(c){let e=RC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?A`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:Yw(e.content,o,a);return{mark:l,tip:M,body:t}}if(qw.key!==s)return{mark:l,tip:M,body:M};let u=RC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?A`<div class="code-preview-tip" role="tooltip">${Yw(u.content,o,a)}</div>`:M,body:M}}var Zw=A`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${Ji}"/></svg>`,Qw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.2"/><circle cx="8" cy="8" r="1.7" fill="currentColor"/></svg>`,$w=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`;function eT(e,t=!1){let n=U(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return A`<button type="button" class="${C({"mark-flag":!0,flagged:n})}" data-flag-toggle="${T(e)}" ?disabled="${!kg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${$w}${t?A`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:M}</button>`}function tT(e){let t=Hi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function nT(e){let t=zn(e,Bg(e)),n=Ki(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Yn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
155
-
156
- `)}function rT(e){if(!F.currentWorkspace)return M;let t=e._reportName;if(!t||I()&&!e._managedReportId)return M;let n=st[Qx(t)]??st.default,r=A`${k(n)}<span class="report-chip-label report-button-label">${x(t)}</span>`;if(I()){let t=GC(e,{reportId:e._managedReportId});if(t)return A`<a class="report-chip report-button comment-self-ref" href="${Ye(t)}">${r}</a>`}return A`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${T(e)}" data-managed-report="${I()?e._managedReportId:M}">${r}</button>`}function iT(e,t,n,r,i=null){let a=i===`table`?M:rT(r),o=U(r),s=!Dg(r),c=!kg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=I()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===M,h=I()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=A`<button type="button" ?disabled="${s}" class="${C({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!I()?f:M}" aria-label="${f}">${Bw}${m?A`<span class="mark-btn-label">${h}</span>`:M}</button>`,v=A`<button type="button" ?disabled="${c}" class="${C({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:M}" aria-label="${p}">${Vw}${m?A`<span class="mark-btn-label">${g}</span>`:M}</button>`,y=eT(r,m),b=A`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${fw}${m?A`<span class="mark-btn-label">Copy</span>`:M}</button>`,ee=GC(r)?A`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Hw}${m?A`<span class="mark-btn-label">Link</span>`:M}</button>`:M,te=I()?vi({repo:{github:r.repo?.github||r._repoFallback}}):Vg(r),ne=$n(te,{title:tT(r),body:nT(r),labels:NS(r.isSecurity===!0,F.githubNewIssueLabels)}),re=I()&&F.managedSession&&!F.managedSession.publicShare&&F.currentManagedTeam,ie=A`${Qw}${m?A`<span class="mark-btn-label">Issue</span>`:M}`,ae=eg(r)?M:ne?re?A`<button type="button" class="mark-issue" data-issue-form="${ne}" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</button>`:A`<a class="mark-issue" href="${ne}" target="_blank" rel="noopener" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</a>`:M,oe=A`<button type="button" class="mark-claude" data-tooltip="${m?M:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${Zw}${m?A`<span class="mark-btn-label">Claude</span>`:M}</button>`,se=A`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,ce=Hg(e)!==e,le=e.linkedTabs?`change triage state for linked findings`:ce?`change triage state for App and own-source findings`:n.hasConflict?`change triage state (colors mismatch — acts per-tab)`:t.length>1?`change triage state for the whole group`:`change triage state`;return A`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${ee}${ae}${oe}</span>${se}${oT(e,le,i,n,r)}</div></div>`}function aT(e){if(e.newState!==`open`)return;let t=e.currentTarget,n=t.getRootNode().querySelector?.(`[popovertarget="${t.id}"]`);if(!n)return;let r=n.getBoundingClientRect(),i=t.offsetWidth||110,a=t.offsetHeight||100,o=r.right-i;o<4&&(o=4),o+i>window.innerWidth-4&&(o=window.innerWidth-i-4);let s=r.bottom+4;s+a>window.innerHeight-4&&r.top>a+4&&(s=r.top-a-4),t.style.top=`${s}px`,t.style.left=`${o}px`}function oT(e,t,n,r,i){let a=H(e),o=!kg(i)||qg(e,r).length===0,s=o?null:Jg(e,r,i),c={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Deleted`,ignored:`Ignored`},l={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Delete`,ignored:`Ignore`},u=!!F.shownTriage,d=u?c[F.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==F.shownTriage).map(e=>({key:e,label:l[e]}))]:f.map(e=>({key:e,label:l[e]})),m=[`mark-triage-menu`];u&&m.push(`with-label`,`triage-state-${F.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return A`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?A`<span class="mark-triage-label">${d}</span>`:M} <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="${h}" class="triage-menu" data-gid="${a}" role="menu" @beforetoggle="${aT}">${p.map(e=>A`<button type="button" class="${C({"triage-menu-item":!0,[`triage-menu-${e.key}`]:!0,active:s===e.key})}" data-triage-action="${e.key}" ?disabled="${o}" role="menuitem">${e.label}</button>`)}</div></div>`}function sT(e,t){let n=!!e?.comment,r=!!(e?.fix||tg(t)),i=e?.flagged===!0;return!n&&!r&&!i?M:A`<span class="tab-marks">${n?A`<span class="has-comment" role="img" aria-label="Has a comment">${Bw}</span>`:M}${r?A`<span class="has-fix" role="img" aria-label="Has a fix link">${Vw}</span>`:M}${i?A`<span class="flagged" role="img" aria-label="Flagged">${$w}</span>`:M}</span>`}function cT(e,t,n){let{app:r,source:i}=Ig(e),a=e=>lT(e,T(e)===t,n);return A`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?A`<span class="tab-level-separator" aria-hidden="true">•</span>`:M} ${i.map(a)}</div>`}function lT(e,t,n){let r=T(e),i=U(e),a=i?.color,o=jg(e,i),s=[`tab`,`tab-severity-${O(e,F.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=Zx(e),l=c?st[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?A`<span class="tab-analyzer" role="img" aria-label="${Xx[c]}">${k(l)}</span>`:u?A`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:M;return A`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:M}"><span class="tab-label"><span class="tab-severity">${xw(e,{variant:`tab`})}</span><span class="tab-indicators">${sT(i,e)}</span></span>${d}</button>`}function uT(e){if(F.viewMode===`table`||F.viewMode===`focus`){let t=e.confidence*10;return A`<div class="${`conf-ring ${O(e,F.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${E({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return A`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var dT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function fT(e){if(af(e))return M;let t=e?.name;if(typeof t!=`string`||!dT.test(t))return M;let n=e?.version,r=typeof n==`string`&&n.length>0,i=r?`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`:`https://www.npmjs.com/package/${t}`,a=r?`${t}@${n}`:t;return A`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function pT(e,t,n,r,i,a){let o=T(e),s=U(e),c=s?.comment??``,l=s?.fix??``,u=tg(e),d=eg(e),f=zn(e,Bg(e)),p=Rw(e,f),m=Vi(e),h=FC(e),g=Xw(e,`loc`,h,e.file,e.line),_=Gw(f),v=A`<span class="line-num">${m?A`${p}, ${m}`:p}${g?.mark??M}${_}</span>`,y=In(e),b=String(e.discoveredIn??``).trim(),ee=b===String(e.file??``).trim()?``:b,te=i===`focus`?fT(e.package?.npm):M,ne=M;if(i!==`focus`&&I()&&g)ne=A`<button type="button" class="finding-code-btn" data-finding-code-report="${h.reportId}" data-finding-code-file="${e.file}" data-finding-code-line="${e.line??``}" aria-label="${`Open full source for ${e.file}`}">Code</button>`;else if(i!==`focus`&&!I()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){F.bundleHashTick;let t=new Set(e._bundleHashes),n=tp(e.fileHash).find(({integrity:e})=>t.has(e));n&&(ne=A`<button type="button" class="finding-code-btn" data-finding-code-bundle="${n.integrity}" data-finding-code-file="${n.file}" data-finding-code-line="${e.line??``}" data-tooltip="${`Open ${n.file} in bundle source viewer`}">Code</button>`)}let{title:re,body:ie}=Ui(e),ae=Gi(ie),oe=ae.findIndex(e=>e.label!==null),se=oe===-1?ae:ae.slice(0,oe),ce=oe===-1?[]:ae.slice(oe);return A`<div class="${C({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?A`<div class="print-case-label">${n+1} of ${r}</div>`:M}<div class="finding-left">${s?.color||s?.flagged===!0?A`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?A`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:M} ${s?.flagged===!0?A`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:M}</div>`:M} ${xw(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?M:uT(e)} ${Nw(e)} ${ne}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??M} ${te} ${ee?A`<span class="line-num discovered-in">(found analyzing ${ee})</span>`:M} ${y?A`<span class="run-meta">${y}</span>`:M}</div>${g?.body??M} ${re?A`<div class="desc-title">${Cw(re)}</div>`:M} ${se.map(e=>A`<div class="desc">${kw(Vn(e.body))}</div>`)} ${Lw(e,i)} ${ce.map(e=>e.label===null?A`<div class="desc">${kw(Vn(e.body))}</div>`:Fw(e.label,e.body))} ${e.impact?Fw(`Impact`,Bi(e.impact,e)):M} ${e.reproduction?Fw(`Reproduction`,Bi(e.reproduction,e),`section`,{collapsible:!0}):M} ${e.recommendation?Fw(`Recommendation`,Bi(e.recommendation,e),`recommendation`,{collapsible:!0}):M} ${e.confidenceReason?A`<div class="conf-reason">${kw(Bi(e.confidenceReason,e))}</div>`:M} ${Pw(e)} ${e.revalidateRecommendation&&Dr()?Fw(`Revalidation recommendation`,Bi(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):M} ${Pi(e)&&e.correctedSeverityReason?A`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${kw(e.correctedSeverityReason)}</div>`:M} ${Mw(e,a)} ${I()?ew(e).map(e=>A`<div class="comment-block">${uw(e,dw(e.body))}</div>`):c?A`<div class="comment-block"><span class="comment-label">Comment:</span> ${dw(c)}</div>`:M} ${d?A`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:M} ${l?A`<div class="fix-block"><span class="fix-label">Fix:</span> ${gi(l)?A`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:M} ${u&&u!==l?A`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:M}</div></div>`}function mT(e){let t=[`finding`,...gT(e)];return Pg(e).length>1&&t.push(`multi-case`),t}function hT(e,t={}){let{context:n=null}=t,r=Ug(e),i=Pg(e),a=new Set(i.map(T)),o=Rg(e),s=T(o),c=o.commitHash?A`<div class="commit-ref">introduced in ${zw(o.repo?.github,o.commitHash)}</div>`:M,l=F.currentWorkspace&&c!==M;return A`${i.map((e,t)=>pT(e,T(e)===s,t,i.length,n,a))} ${l?A`<div class="marks-commit-row">${c}</div>`:M}<div class="marks"><div class="marks-left">${l?M:c} ${i.length>1?cT(i,s,r):M}</div>${iT(e,i,r,o,n)}</div>`}function gT(e){let t=Ug(e),n=e.some(e=>e.critical||O(e,F.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),F.shownTriage&&r.push(`triage-${F.shownTriage}`),r}function _T(e){let t=Ug(e),n=Pg(e),r=Rg(e),i=T(r),a=r,o=Hi(a),s=In(a),c=Vi(a),l=c?`, ${c}`:``,u=zn(a,Bg(a));return A`<div class="row-score">${xw(a,{variant:`compact`})} ${a.confidence===void 0?M:A`<span class="row-conf"><strong>${a.confidence}</strong>/10</span>`}</div><div class="row-body"><div class="title-row"><span class="title">${o}</span> ${s?A`<span class="row-type">${s}</span>`:M}</div><div class="meta-row"><span class="row-loc">${Rw(a,u)}${l}</span> ${Gw(u)}<div class="marks">${iT(e,n,t,r,`table`)}</div></div>${n.length>1?A`<div class="tabs-row">${cT(n,i,t)}</div>`:M}</div>`}function vT(e){if(!e)return M;let t=tp(e)[0];return t?A`<button type="button" class="tree-code-btn" data-finding-code-bundle="${t.integrity}" data-finding-code-file="${t.file}" data-tooltip="${`Open ${t.file} in bundle source viewer`}">Code</button>`:M}function yT(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=xT(e),a=F.filesSearch.trim().toLowerCase(),o=a?n.filter((e,t)=>r[t].includes(a)):n,s=t=>e[t]?A`<a href="${`#${dr(t)}`}"><span class="name">${t}</span></a>`:A`<span class="name">${t}</span>`,c=e=>{let n=t.get(e);if(!n)return null;let r=Mi.filter(e=>(n[e]??0)>0);return r.length===0?null:A`<span class="tree-count-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},l=e=>{let n=t.get(e);return n?Mi.reduce((e,t)=>e+(n[t]??0),0):0},u=A`<div class="tree-toolbar"><view-mode-buttons modes="table,list" kind="files"></view-mode-buttons><div class="search-row"><toolbar-search kind="files"></toolbar-search><span class="result-count">${o.length} of ${n.length}</span></div></div>`;if(F.filesViewMode===`table`){let t=F.filesSelectedFile&&Object.hasOwn(e,F.filesSelectedFile)&&(!a||F.filesSelectedFile.toLowerCase().includes(a))?F.filesSelectedFile:null;return A`<div class="${t?`tree-view tree-view-table with-details`:`tree-view tree-view-table`}">${u}<div class="${t?`tree-table-layout open`:`tree-table-layout`}"><div class="tree-table-list">${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(n=>{let r=l(n),i=n===t,a=Mn(e[n].size);return A`<div class="${`tree-table-row${i?` selected`:``}${r===0?` clean`:``}`}" data-tree-select="${n}"><span class="tree-table-name" data-tooltip-truncated data-tooltip="${n}">${n}</span> ${c(n)??A`<span class="tree-table-clean-marker">—</span>`} ${a?A`<span class="tree-table-size">${a}</span>`:M}</div>`})}</div>${t?A`<aside class="tree-table-details" id="tree-table-details"><header class="tree-table-details-bar"><span class="tree-table-details-label">Details</span> <button type="button" class="tree-table-details-close" data-tree-deselect aria-label="Close details">×</button></header><div class="tree-table-details-body">${CT(e[t],t,i.get(t)??[],s)}</div></aside>`:M}</div></div>`}return A`<div class="tree-view">${u} ${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(t=>{let n=e[t],r=i.get(t)??[],a=Mn(n.size);return A`<section class="tree-file" id="${dr(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${c(t)} ${a?A`<span class="tree-file-size">${a}</span>`:M} ${vT(n.fileHash)}</div>${ST(n,r,s)}</section>`})}</div>`}var bT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function xT(e){if(bT.treeData===e)return bT;let t=Object.keys(e).toSorted(),n=new Map;for(let r of t)for(let t of e[r].imports??[]){let e=n.get(t)??[];e.push(r),n.set(t,e)}return bT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},bT}function ST(e,t,n){return A`${e.fileHash||e.treeHash?A`<div class="tree-hashes hashes">${e.fileHash?A`<div class="tree-hash">file: ${e.fileHash}</div>`:M} ${e.treeHash?A`<div class="tree-hash">tree: ${e.treeHash}</div>`:M}</div>`:M} ${e.imports?.length>0?A`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${t.length>0?A`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${e.exports?.length>0?A`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>A`<li><span class="name">${e}</span></li>`)}</ul></div>`:M}`}function CT(e,t,n,r){let i=Mn(e.size);return A`<div class="tree-detail-name"><span class="name">${t}</span> ${i?A`<span class="tree-detail-size">${i}</span>`:M} ${vT(e.fileHash)}</div>${ST(e,n,r)}`}var wT=null,TT=null;function ET(){return TT}function DT(){return wT||(wT=(async()=>{try{let e=await import(`./graph.js`);return TT=e,e}catch(e){throw wT=null,e}})(),wT)}async function OT(e,t,n,r,i){try{let a=await DT(),o=a.buildGraphFromPrep(t);N(A`<graph-layout .graph="${o}" .options="${n}"></graph-layout>`,e);let s=e.querySelector(`graph-layout`);return await s.updateComplete,r(),i(),a.attachGraph2Interaction(e,o,r,i),s}catch(t){return e.textContent=`Graph failed to load: ${t instanceof Error?t.message:String(t)}`,null}}var kT=null,AT=null;function jT(){AT=null}async function MT(){let e=await AT?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function NT(){return kT||(kT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw kT=null,e}})(),kT)}function PT(e){let t=new Map([...Bt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=Nn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function FT(e,t){let n=t?.integrity??``;(!AT||AT.integrity!==n||(t?.managedId||AT.managedId)&&AT.details!==t)&&(AT={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:IT(t,n)});try{let t=await AT.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return AT=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function IT(e,t){return(await NT()).createTerminalElement(PT(e),t)}var LT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},RT={},zT=ua(class extends da{constructor(){super(...arguments),this.ot=RT}render(e,t){return t()}update(e,[t,n]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((e,t)=>e===this.ot[t]))return ma}else if(this.ot===t)return ma;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),BT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),BT(e,t);return!0},VT=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},HT=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),GT(t)}};function UT(e){this._$AN===void 0?this._$AM=e:(VT(this),this._$AM=e,HT(this))}function WT(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0){if(t){if(Array.isArray(r))for(let e=n;e<r.length;e++)BT(r[e],!1),VT(r[e]);else r!=null&&(BT(r,!1),VT(r))}else BT(this,e)}}var GT=e=>{e.type==la.CHILD&&(e._$AP??=WT,e._$AQ??=UT)},KT=class extends da{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),HT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(BT(this,e),VT(this))}setValue(e){if(Qr(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},qT=new WeakMap,JT=ua(class extends KT{render(e){return M}update(e,[t]){let n=t!==this.G;return n&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),M}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=qT.get(t);n===void 0&&(n=new WeakMap,qT.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}}get lt(){return typeof this.G==`function`?qT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),YT=2**20,XT=Math.floor(2**25/15);function ZT(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+YT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function QT(e,t=!1){return e.length<=YT&&!gC(e)?e:vC(e,t).flatMap(e=>typeof e==`string`?ZT(e):[e])}var $T=class extends r{};function q(e,t,n){if(!e)throw new $T(typeof n==`function`?n():n,t.line)}var eE=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,tE=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,nE=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,rE=[31,28,31,30,31,30,31,31,30,31,30,31];function iE(e){let t=eE.exec(e);if(t===null)return;let[n,r,i,a,o,s]=[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[5]),Number(t[6]),Number(t[7])],c=n%4==0&&n%100!=0||n%400==0;if(r<1||r>12||i<1||i>(r===2&&c?29:rE[r-1])||a>23||o>59||s>60||t[10]!==void 0&&(Number(t[11])>23||Number(t[12])>59))return;let l=[];(t[4]===`t`||t[9]===`z`)&&l.push(`a date-time with a lower-case "t" or "z" is not supported`),n===0&&l.push(`the year 0000 is not supported`),s===60&&l.push(`a leap second is not supported`);let u=t[10]===void 0?0:(t[10]===`-`?-1:1)*(Number(t[11])*60+Number(t[12]));return{year:n,month:r,day:i,hour:a,minute:o,second:s,fraction:t[8]?.slice(1)??``,offset:u,unsupported:l}}var aE=class{constructor(e){if(typeof e!=`string`||iE(e)?.unsupported.length!==0)throw TypeError(`expected an RFC 3339 offset date-time`);this.text=e,Object.freeze(this)}toString(){return this.text}toJSON(){return this.text}toDate(){let{year:e,month:t,day:n,hour:r,minute:i,second:a,fraction:o,offset:s}=iE(this.text),c=new Date(0);return c.setUTCFullYear(e,t-1,n),c.setUTCHours(r,i-s,a,Number(o.padEnd(3,`0`).slice(0,3))),c}};function oE(e,t){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=iE(e);if(r?.unsupported.length===0)return new aE(e);throw q(!(/^\d{4}-\d\d-\d\d$/u.test(e)&&/^ \d\d:/u.test(t.text.slice(t.pos,t.pos+4))),t,`a date-time with a space in place of "T" is not supported`),q(!tE.test(e),t,()=>`local dates and times are not supported: ${n(e)}`),q(!nE.test(e),t,()=>`a date-time or a time without seconds is not supported: ${n(e)}`),q(r?.unsupported.length!==1,t,()=>`${r.unsupported[0]}: ${n(e)}`),new $T(`${n(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,t.line)}var sE=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,cE=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,lE=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,uE=2n**63n,dE=BigInt(2**53-1),fE={__proto__:null,x:16,o:21,b:63};function pE(e,t){let r=sE.test(e);if(!r&&!cE.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:fE[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return q(o!==void 0&&o>=-uE&&o<uE,t,()=>`integer out of range ${n(e)}`),o>=-dE&&o<=dE?Number(o):o}var mE={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function hE(e){if(typeof e!=`string`||!lE.test(e))return;if(e in mE)return mE[e];let t=Number(e.replaceAll(`_`,``)),n=!/[1-9]/u.test(e.split(/[Ee]/u)[0]);return Number.isFinite(t)&&(t!==0||n)?t:null}var gE=class{constructor(e){let t=hE(e);if(t==null)throw TypeError(`expected a TOML float that a double can hold`);this.text=e,this.value=t,Object.freeze(this)}valueOf(){return this.value}toString(){return this.text}toJSON(){return this.value}};function _E(e,t){let r=hE(e);if(r!==void 0)return q(r!==null,t,()=>`float out of range ${n(e)}`),new gE(e)}var vE=64;function yE(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function bE(e){if(e.pos>=e.text.length)return`the end of the text`;let t=/^[^\n]*/u.exec(e.text.slice(e.pos,e.pos+64+1))[0].replace(/\r$/u,``);return t===``?`the end of the line`:n(t)}var xE=`a carriage return must be followed by a line feed`;function SE(e,n,r){throw new $T(n===`\r`?xE:`${t(n)} is not allowed in ${r}`,e.line)}var CE=e=>e.pos>=e.text.length||e.text[e.pos]===`
157
- `||e.text.startsWith(`\r
158
- `,e.pos),wE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function TE(e){e.text[e.pos]===`#`&&(i(e,wE),CE(e)||SE(e,e.text[e.pos],`a comment`))}function EE(e){if(e.text[e.pos]===`
159
- `)e.pos+=1;else if(e.text.startsWith(`\r
160
- `,e.pos))e.pos+=2;else return!1;return e.line++,!0}function DE(e){do yE(e),TE(e);while(EE(e))}var OE={__proto__:null,b:`\b`,t:` `,n:`
161
- `,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},kE={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},AE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function jE(e){let t=e.text[e.pos];if(t in OE)return OE[e.text[e.pos++]];let r=i(e,AE);q(r!==null,e,()=>`unsupported escape ${n(`\\${t??``}`)}`);let a=Number.parseInt(r[1]??r[2],16);return q(a<=1114111&&(a<55296||a>57343),e,()=>`\\${r[0]} is not a Unicode scalar value`),String.fromCodePoint(a)}var ME=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function NE(e){let t=i(e,ME);return t===null?jE(e):(e.line+=t[0].split(`
162
- `).length-1,``)}var PE=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,FE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function IE(e,t){let n=PE(e,t),r=FE[n?t.repeat(3):t];e.pos+=n?3:1,n&&EE(e);let a=``;for(;;){if(a+=i(e,kE[t])[0],n&&EE(e)){a+=`
163
- `;continue}q(!CE(e),e,`unterminated string`);let o=i(e,r);if(o!==null)return a+o[0].slice(3);let s=e.text[e.pos++];s===t?a+=s:s===`\\`?a+=n?NE(e):jE(e):SE(e,s,`a string`)}}var LE=/[\w-]+/uy;function RE(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return q(!PE(e,t),e,`a multi-line string cannot be a key`),IE(e,t);let n=i(e,LE);return q(n!==null,e,()=>`expected a key, found ${bE(e)}`),n[0]}function zE(e){let t=[RE(e)];for(;;){if(yE(e),e.text[e.pos]!==`.`)return t;e.pos++,yE(e),t.push(RE(e)),q(t.length<=vE,e,`a key with too many parts`)}}var BE=/[\w+.:-]+/uy;function VE(e){let t=i(e,BE);q(t!==null,e,()=>`expected a value, found ${bE(e)}`);let r=t[0];if(r===`true`)return!0;if(r===`false`)return!1;let a=pE(r,e)??_E(r,e)??oE(r,e);return q(a!==void 0,e,()=>`expected a value, found ${n(r)}`),a}function HE(e,t,r,i){q(t[r]===void 0,e,()=>`duplicate key ${n(r)}`),t[r]=i}function UE(e,t){let n=zE(e);return q(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${bE(e)}`),e.pos++,yE(e),{header:!1,keys:n,value:QE(e,t)}}function WE(e,t){e.pos++;let n=[];for(DE(e);e.text[e.pos]!==`]`&&(n.push(QE(e,t+1)),DE(e),e.text[e.pos]!==`]`);DE(e))q(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${bE(e)}`),e.pos++;return e.pos++,n}var GE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,KE=new WeakSet;function qE(e,t,n,r,i,a){let o=t;for(let t of r.slice(0,-1)){t in o||n.add(o[t]=Object.create(null));let r=o[t];q(n.has(r),e,()=>a(t,r)),o=r}HE(e,o,r.at(-1),i)}var JE=e=>Array.isArray(e)?`an array`:GE(e)?`an inline table`:`a value`,YE=(e,t)=>`${n(e)} is ${JE(t)}, which a dotted key cannot add to`;function XE(e){yE(e),q(!CE(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function ZE(e,t){e.pos++;let n=Object.create(null);KE.add(n);let r=new Set;if(XE(e),e.text[e.pos]===`}`)e.pos++;else do{XE(e),q(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=UE(e,t+1);qE(e,n,r,i,a,YE),XE(e);let o=e.text[e.pos];q(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${bE(e)}`)}while(e.text[e.pos++]===`,`);return n}function QE(e,t){q(t<=vE,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?IE(e,n):n===`[`?WE(e,t):n===`{`?ZE(e,t):VE(e)}function $E(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,yE(e);let n=zE(e),r=t?`]]`:`]`;return q(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${bE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function eD(e){yE(e);let t=e.text[e.pos];if(t===`[`)return $E(e);if(!(t===`#`||t===`\r`||CE(e)))return UE(e,0)}function tD(e){if(yE(e),TE(e),!(EE(e)||e.pos===e.text.length))throw q(e.text[e.pos]!==`\r`,e,xE),new $T(`expected the end of the line, found ${bE(e)}`,e.line)}function nD(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:GE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var rD=e=>n(e.join(`.`));function iD(e,t,r){let i=e.root;for(let a of r){a in i||e.implicit.add(i[a]=Object.create(null));let r=e.arrays.has(i[a])?i[a].at(-1):i[a];q(GE(r)&&!e.fixed.has(r),t,()=>`${n(a)} is ${nD(e,r)}, which a header cannot add to`),i=r}return i}function aD(e,t,n,r){e.pending.clear();let i=iD(e,t,n.slice(0,-1)),a=n.at(-1);if(r){a in i||e.arrays.add(i[a]=[]),q(e.arrays.has(i[a]),t,()=>`${rD(n)} is ${nD(e,i[a])}, not an array of tables`),i[a].push(e.current=Object.create(null));return}a in i?q(e.implicit.delete(i[a]),t,()=>`${rD(n)} is ${nD(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function oD(e,t,r){return!GE(r)||e.fixed.has(r)?`${n(t)} is ${nD(e,r)}, which a dotted key cannot add to`:e.implicit.has(r)?`a dotted key through ${n(t)}, a table a header made on its way, is not supported`:`${n(t)} is a table declared elsewhere, which a dotted key cannot add to`}function sD(e,t,n,r){qE(t,e.current,e.pending,n,r,(t,n)=>oD(e,t,n)),GE(r)&&e.fixed.add(r)}var cD={__proto__:null,"":`a byte order mark is not read`,"�":`U+FFFD is not supported: a decoder puts it where bytes are not UTF-8`};function lD(e){if(typeof e!=`string`)throw TypeError(`expected a string`);let t=/\p{Cs}|^\uFEFF|\uFFFD/u.exec(e);if(t===null)return;let n=e.slice(0,t.index).split(`
164
- `).length-1;throw new $T(cD[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function uD(e){lD(e);let t=Object.create(null),n={text:e,pos:0,line:0},r={root:t,current:t,implicit:new Set,pending:new Set,arrays:new Set,fixed:new Set};for(;n.pos<e.length;){let e=eD(n);e?.header===!0?aD(r,n,e.keys,e.array):e!==void 0&&sD(r,n,e.keys,e.value),tD(n)}return t}function dD(e){if(typeof e!=`string`)return null;let t=/^(?:github:|(?:git\+)?(?:(?:https?|ssh|git):\/\/(?:[\w.~%!$&'()*+,;=:-]*@)?(?:www\.)?github\.com(?::\d+)?\/|ssh:\/\/(?:[\w.~%!$&'()*+,;=-]*@)?(?:www\.)?github\.com:|(?:[^@/:]+@)?(?:www\.)?github\.com:))?([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/iu.exec(e.trim().replace(/#.*$/su,``)),n=t&&`${t[1]}/${t[2]}`;return n&&Mt(`github`,n)?n:null}function fD(e,t){if(typeof e!=`string`)return;let n=/^https?:\/\/(?:www\.)?github\.com\/([^/]+\/[^/]+)\/tree\/[^/#?]+\/([^#?]+)/iu.exec(e.trim());if(n&&n[1].toLowerCase()===t.toLowerCase())try{return decodeURIComponent(n[2])}catch{return}}var pD=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function mD(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Mt(`directory`,n)?{directory:n}:{}}function hD(e){let t=e?.repository,n=dD(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=fD(e.homepage,n),r!==void 0&&pD(r)&&(r=void 0)),{github:n,...mD(r)}}function gD(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?uD(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function _D(e){let t=typeof e==`string`?e:e?.url;if(typeof t!=`string`)return null;let n=t.trim().replace(/#.*$/su,``).replace(/^github:/iu,``).replace(/^git\+/iu,``).replace(/^(?:ssh|git):\/\/(?:git@)?github\.com\//iu,`https://github.com/`).replace(/^git@github\.com:/iu,`https://github.com/`);return/^(?:https?:\/\/)?(?:www\.)?github\.com\//iu.test(n)?vi({repo:{github:n}}):null}function vD(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?gD(t?.files,`composer.json`):r===`cargo`?gD(t?.files,`Cargo.toml`)?.package:gD(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=vi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?hD(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>_D(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?Jr(t.repo.commit):null;return{ecosystem:r,name:a,version:typeof o==`string`?o:void 0,github:c?.github??null,...l===void 0?{}:{directory:l},...u?{commit:u}:{},fileCount:n}}var yD=new WeakMap;function bD(e,t){let n=yD.get(e);if(n||yD.set(e,n=new Map),!n.has(t)){let r=`${t}/`,i=0,a=0;for(let[t,n]of e)t.startsWith(r)&&(i+=_a(n),a+=Yt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var xD=new Set([`cargo`,`composer`,`soldeer`]);function SD(e,t,n){if(t?.ecosystem!==void 0)return t.ecosystem;if(!t?.name||/(?:^|\/)vendor\/([^/]+\/[^/]+)$/u.exec(e)?.[1]!==t.name)return;let r=Object.entries(t.files??{}).filter(([t,r])=>typeof r==`string`&&(!n||n.has(`${e}/${t}`)));return r.length>0&&r.every(([e])=>/\.(?:php|phtml)$/iu.test(e))?`composer`:void 0}function CD(e,t=e,n=null){let r={path:``,files:new Map,dirs:new Map};for(let n=0;n<e.length;n++){let i=e[n].split(`/`),a=r,o=t[n].split(`/`);for(let[e,t]of i.slice(0,-1).entries())a.dirs.has(t)||a.dirs.set(t,{path:i.slice(0,e+1).join(`/`),sourcePath:o.slice(0,-(i.length-e-1)).join(`/`),files:new Map,dirs:new Map}),a=a.dirs.get(t);a.files.set(i.at(-1),t[n])}TD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=vD(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function wD(e,t=null,n=null){let r=/(?:^|\/)node_modules\//u.exec(e),i=r?r.index+ +!!r[0].startsWith(`/`):e.length,a=n?new Set(n):null;for(let[n,r]of t??[]){let t=SD(n,r,a);if(!xD.has(t)||!r.name||n===`.`||!e.startsWith(`${n}/`)&&!n.startsWith(e))continue;let o=(t===`soldeer`?/(?:^|\/)dependencies\//u:/(?:^|\/)vendor\//u).exec(`${n}/`),s=o?o.index+ +!!o[0].startsWith(`/`):n.lastIndexOf(`/`)+1;i=Math.min(i,s)}return e.slice(0,i)}function TD(e,t,n){for(let r of e.dirs.values())TD(r,t,n);e.fileCount=e.files.size+[...e.dirs.values()].reduce((e,t)=>e+t.fileCount,0);let r=t?.get(e.sourcePath),i=SD(e.sourcePath,r,n);if(xD.has(i)&&r.name&&(e.boundary=!0,e.package={name:r.name,version:r.version,ecosystem:i},e.hideSrc=e.dirs.size===1&&e.dirs.has(`src`),e.hideSrc&&(e.srcNameConflicts=new Set([...e.dirs.get(`src`).files.keys()].filter(t=>e.files.has(t))))),/(?:^|\/)dependencies$/u.test(e.path)&&[...e.dirs.values()].some(e=>e.package?.ecosystem===`soldeer`)&&(e.boundary=!0),/(?:^|\/)vendor$/u.test(e.path)){let t=new Map;for(let[n,r]of e.dirs)if(!r.package&&r.files.size===0&&r.dirs.size>0&&[...r.dirs.values()].every(e=>e.package?.ecosystem===`composer`)){e.boundary=!0;for(let[e,i]of r.dirs)t.set(`${n}/${e}`,i)}else xD.has(r.package?.ecosystem)&&(e.boundary=!0),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs)if(r.boundary=!0,n.startsWith(`@`)&&r.files.size===0&&[...r.dirs.keys()].every(e=>!e.startsWith(`.`)&&!e.startsWith(`@`)))for(let[e,i]of r.dirs)i.boundary=!0,i.package??={name:`${n}/${e}`},t.set(`${n}/${e}`,i);else!n.startsWith(`.`)&&!n.startsWith(`@`)&&(r.package??={name:n}),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules\/\.pnpm$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs){if(r.boundary=!0,r.files.size>0||r.dirs.size!==1)continue;let i=r.dirs.get(`node_modules`);if(!i||i.files.size>0||i.dirs.size!==1)continue;let a=i.dirs.values().next().value;if(!a.package)continue;let o=`${a.package.name.replace(`/`,`+`)}@`;if(!n.startsWith(o))continue;let s=/^(\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?)([_(].*)?$/iu.exec(n.slice(o.length));if(!s)continue;a.package={...a.package,version:s[1]},e.dirs.set(n,a);let c=ED(n,a);t.has(c)||t.set(c,[]),t.get(c).push(a)}for(let e of t.values())if(!(e.length<2)){e.sort((e,t)=>e.path.localeCompare(t.path));for(let[t,n]of e.entries())n.package.variant=t+1}}return e}function ED(e,t){let n=t.package;return n?`${n.name}${n.version?`${xD.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function DD(e,t,n=``,r=null){let i=t.toLowerCase(),a=(e,t,o=null)=>{let s=new Map([...e.files].filter(([e,a])=>{let s=n&&a.startsWith(n)?a.slice(n.length):a,c=o?.srcNameConflicts.has(e)?`src/${e}`:e;return(!r||r(a))&&(s.toLowerCase().includes(i)||`${t}/${c}`.toLowerCase().includes(i))})),c=new Map;for(let[n,r]of e.dirs){let i=e.hideSrc&&n===`src`,o=a(r,i?t:`${t}/${ED(n,r)}`,i?e:null);o&&c.set(n,o)}return s.size>0||c.size>0?{...e,files:s,dirs:c}:null};return i||r?a(e,``):e}function OD(e,t,n){let r=[e];if(t.hideSrc&&t.dirs.has(`src`)){let e=t.dirs.get(`src`),n=new Map(t.files);for(let[r,i]of e.files)n.set(t.srcNameConflicts.has(r)?`src/${r}`:r,i);return{names:r,node:{...t,sourcePath:e.sourcePath,files:n,dirs:e.dirs}}}if(e===`node_modules`&&t.files.size===0&&t.dirs.size===1&&t.dirs.has(`.pnpm`))return{names:[`node_modules`,`.pnpm`],node:t.dirs.get(`.pnpm`)};let i=Math.max(12,24-Math.max(0,n-1)*2);for(;!t.boundary&&t.files.size===0&&t.dirs.size===1&&r.length<3;){let[e,n]=t.dirs.entries().next().value;if(n.boundary||[...r,e].join(`/`).length>i)break;r.push(e),t=n}return{names:r,node:t}}function kD(e){if(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.currentTarget,n=e.target.closest(`summary, .bundle-code-tree-link`);if(!n||!t.contains(n)||![`ArrowDown`,`ArrowUp`,`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;e.preventDefault(),e.stopPropagation();let r=[...t.querySelectorAll(`summary, .bundle-code-tree-link`)].filter(e=>{let t=e.parentElement;return e.tagName===`SUMMARY`&&(t=t.parentElement),!t.closest(`details:not([open])`)}),i=r.indexOf(n),a=n.tagName===`SUMMARY`?n.parentElement:null,o=n;e.key===`ArrowDown`&&(o=r[Math.min(i+1,r.length-1)]),e.key===`ArrowUp`&&(o=r[Math.max(i-1,0)]),e.key===`Home`&&(o=r[0]),e.key===`End`&&(o=r.at(-1)),e.key===`ArrowRight`&&a&&(a.open?o=r[i+1]??n:n.click()),e.key===`ArrowLeft`&&(a?.open?n.click():o=(a??n).parentElement.closest(`details`)?.querySelector(`summary`)??n),o?.focus()}function AD([e,t],[n,r]){return ED(e,t).localeCompare(ED(n,r))||t.path.localeCompare(r.path)}function jD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(AD))jD(OD(r,i,t).node,t+1,n);for(let[,t]of[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)))n.push(t);return n}function MD(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=Jr(r);return{href:`https://github.com/${e}/blob/${o??`HEAD`}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,github:e,path:a,commit:o,package:typeof i?.name==`string`&&i.name?{name:i.name,version:i.version,ecosystem:i.ecosystem}:null}}function ND(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=Jr(r.gitHead);return r.github?.github&&e?MD(r.github.github,yi({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return MD(i.repo,i.path,t,i.commit,null);if(e?.kind!==`stasis`)return null;let a=e.bundle,o=null;for(let[e,n]of a?.modules??[]){let r=e===`.`?t:t.startsWith(`${e}/`)?t.slice(e.length+1):null;if(r!==null&&Object.hasOwn(n.files,r)){o={dir:e,info:n,rel:r};break}}if(!o)return null;let{dir:s,info:c,rel:l}=o,u=s===`.`?void 0:SD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=vi(a),r=vi({repo:{github:n?.github}}),i=e??r;return i?MD(i,typeof a.repo?.directory==`string`?yi(a.repo):r?.toLowerCase()===i.toLowerCase()?yi({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=vD({name:c.name,ecosystem:u},c,0);return d.github?MD(d.github,d.directory??``,l,d.commit,d):null}function PD(e,t=null){return A`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??M}" data-tooltip-commit-info="${it(t,e.commit,e.github)??M}" data-tooltip-package="${e.package?.name??M}" data-tooltip-ecosystem="${e.package?.ecosystem??M}" data-tooltip-version="${e.package?.version??M}">${k(oa)}${e.package?A`<span hidden data-tooltip-package-icon>${Qe(e.package.ecosystem)}</span>`:M}</a>`}var FD=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,ID=new Map,LD=new WeakMap,RD=null;function zD(e){if(!e){queueMicrotask(BD);return}if(BD(),ID.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&zD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{LD.get(e)?.width!==VD(e)&&HD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>HD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),ID.set(e,()=>{n.disconnect(),r.disconnect()})}function BD(){for(let[e,t]of ID)e.isConnected||(t(),ID.delete(e))}function VD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`);if(!t||!n)return 0;let r=getComputedStyle(t);return e.parentElement.clientWidth-n.getBoundingClientRect().width-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight)}function HD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=VD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=LD.get(e)?.rows??new Map,o=null;for(let e of n.children)if((!o||(a.get(e)??1)<a.get(o))&&(o=e),!a.has(e))break;let{rows:s,toggles:c}=UD(t,r,i,o?parseFloat(getComputedStyle(o).height)/(a.get(o)??1):parseFloat(getComputedStyle(t).lineHeight)),l=new Map;for(let[e,t]of s){let r=n.children[e];if(!r)continue;let i=`"${`\\A `.repeat(t-1)} "`;r.style.getPropertyValue(`--wrap-breaks`)!==i&&r.style.setProperty(`--wrap-breaks`,i),l.set(r,t)}for(let e of a.keys())l.has(e)||e.style.removeProperty(`--wrap-breaks`);LD.set(e,{rows:l,width:r});let u=e.closest(FD)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function UD(e,t,n,r){let i=getComputedStyle(e);RD??=document.createElement(`canvas`).getContext(`2d`),RD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*RD.measureText(`0`).width),o=[],s=null,c=null,l=0,u=0,d=()=>{l>a&&c&&o.push({line:u,first:s,last:c}),u++,l=0,s=c=null},f=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=f.nextNode();e;e=f.nextNode()){let t=e.data;for(let n=0;n<t.length;){let r=t.indexOf(`
165
- `,n),i=r===-1?t.length:r;if(i>n){s??={node:e,from:n,to:n+(t.codePointAt(n)>65535?2:1)};let r=i;for(;r>n&&(t[r-1]===` `||t[r-1]===` `);)r--;r>n&&(c={node:e,from:r-(r-2>=n&&t.codePointAt(r-2)>65535?2:1),to:r}),l+=i-n}if(r===-1)break;d(),n=r+1}}d();let p=new Map,m=document.createRange(),h=({node:e,from:t,to:n})=>(m.setStart(e,t),m.setEnd(e,n),m.getBoundingClientRect()),g=e.getBoundingClientRect().left+e.clientLeft+parseFloat(i.paddingLeft),_=!1;for(let{line:e,first:i,last:a}of o){let o=!!i.node.parentElement.closest(`.bundle-source-long-line`);if(n||o){let t=Math.round((h(a).top-h(i).top)/r)+1;t>1&&p.set(e,t),t>1&&!o&&(_=!0)}else!_&&h(a).right-g>t+.5&&(_=!0)}return{rows:p,toggles:_}}function WD(e){let t=e.closest(FD)?.querySelector(`.bundle-source-code-wrap`),n=t?.querySelectorAll(`.bundle-source-lineno-row`);if(!n?.length)return()=>{};let r=t.getBoundingClientRect().top,i=n.length-1,a=0;for(;a<i;){let e=a+i>>1;n[e].getBoundingClientRect().bottom<=r?a=e+1:i=e}let o=n[a],s=o.getBoundingClientRect().top-r;return()=>{o.isConnected&&(t.scrollTop+=o.getBoundingClientRect().top-r-s)}}var GD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),KD=4194304;function qD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return GD.has(t)?t:null}function JD(e,t,n=()=>vt(e,t)){return qD(e)!==null&&_a(t)<=KD&&n().category===`minified`}var YD=e=>e.bundle??e.json??e,XD=/\\(?:x([\dA-Fa-f]{2})|u([\dA-Fa-f]{4})|u\{([\dA-Fa-f]{1,6})\}|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[\s\S]))/gu,ZD={b:`\b`,f:`\f`,n:`
166
- `,r:`\r`,t:` `,v:`\v`},QD=e=>e.replaceAll(XD,(e,t,n,r,i,a)=>{if(i!==void 0)return String.fromCodePoint(Number.parseInt(i,8));if(a!==void 0)return/^(?:\r\n|[\n\r\u2028\u2029])$/u.test(a)?``:ZD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),$D={i:`ı`,k:`K`,s:`ſ`},eO=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...$D[e.toLowerCase()]??``]);function tO(e){let t=String.raw`(?=[.\\${[...e].map(e=>String.raw`\u{${e.codePointAt(0).toString(16)}}`).join(``)}])`,n=e=>String.raw`${e}(?=${t}((?:[^${e}\\\n]|\\(?:\r\n|[\s\S]))*)${e})`;return new RegExp(String.raw`(?<=(?:^|[^\\])(?:\\\\)*)(?:${n(`"`)}|${n(`'`)}|\x60(?=${t}((?:[^\x60\\]|\\[\s\S])*)\x60))`,`gu`)}function nO(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[QD(t),t]:[QD(t)]:e==="`"&&t.includes("${")?[]:[t]}var rO=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,iO=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,aO=/[ \t]*[,)]/uy,oO=(e,t,n)=>(e.lastIndex=n,e.test(t)),sO=(e,t,n,r)=>t!=="`"&&oO(rO,e,n)||oO(iO,e,n)&&oO(aO,e,r),cO=/^\.\.?(?:\/|$)/u,lO=/\.(?:json|node)$/u,uO=[`.js`,`.json`,`.node`],dO=/(?:^|\/)\.{0,2}$/u,fO=/[^/.][^/]*\.[^/]*$/u;function pO(e,t){let n=[...e];for(let e of t.split(`/`)){if(e===`..`&&n.pop()===void 0)return null;e!==`..`&&e!==`.`&&e!==``&&n.push(e)}return n}var mO=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||SO(t[n])===e))?t.slice(e.length).join(`/`):null,hO=(e,t,n)=>mO(e,pO([...e,...t===``?[]:t.split(`/`)],n)),gO=e=>new Set([e,e.replaceAll(`\\`,`/`)]),_O=(e,t,n)=>[...gO(n)].filter(e=>cO.test(e)).map(n=>hO(e,t,n)),vO=/[%?#\\\t\n\r]|[\0- ]$/u;function yO(e,t,n){if(!cO.test(n))return null;if(!vO.test(n))return hO(e,t,n);try{let r=[...e,...t===``?[]:t.split(`/`)].map(e=>`${encodeURIComponent(e)}/`).join(``),{pathname:i}=new URL(n,`file:///${r}`);return/%(?:2f|5c)/iu.test(i)?null:mO(e,pO([],decodeURIComponent(i)))}catch{return null}}var bO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,xO=e=>typeof e==`string`&&bO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(SO):[],SO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function CO(e){let t=new Map,n=new Map,r=(e,t,n)=>e.has(t)?e.get(t).push(n):e.set(t,[n]);for(let i of e.keys()){let e=/(?:^|\/)\.gitignore$/u.test(i)?[i,i.replace(/\.gitignore$/u,`.npmignore`)]:[i];for(let a of e)r(n,SO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(SO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:SO}}}function wO(e){let t=[],n=[e];for(;n.length>0;){let e=n.pop();if(typeof e==`string`)t.push(e);else if(e&&typeof e==`object`)for(let t of Object.values(e))n.push(t)}return t}function TO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>wO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function EO(e){let t={name:null,main:null,targets:[],exports:[],hasExports:!1,imports:[]};if(typeof e!=`string`)return t;try{let{name:t,main:n,exports:r,imports:i}=JSON.parse(e.replace(/^\uFEFF/u,``)),a=TO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=TO(i,e=>e.startsWith(`#`)).filter(({key:e})=>e.startsWith(`#`)),s=[...a,...o.filter(({target:e})=>e.startsWith(`./`))];return{name:t,main:typeof n==`string`&&n!==``?n:null,targets:s,exports:a,hasExports:r!=null,imports:o}}catch{return t}}var DO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function OO(e,t,n,r,i){let a=yO(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=SO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=DO(o.join(`/`)),u=o.at(-1).replace(/^\/+/u,``),d=e=>e.includes(!0)&&e.includes(!1)?[``,`/`]:[``],f=d(o.slice(1).map(e=>e.startsWith(`/`))),p=d(o.slice(0,-1).map((e,t)=>e.endsWith(`/`)||t===0&&e===``)).flatMap(e=>f.map(t=>({after:t,at:DO(`${o[0]}${e}x`).length-1,before:e,length:DO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(fO.test(e)||pt.test(e))?!1:t===l||p.some(({after:e,at:n,before:r,length:i})=>{let a=(t.length-i)/s+1;if(!Number.isInteger(a)||a<=0)return!1;let c=o.join(`${r}${t.slice(n,n+a)}${e}`);return c===t||(c.includes(`//`)||c.startsWith(`/`))&&DO(c)===t})).map(([e])=>e)}var kO=65536,AO=Symbol(`every file`),jO=(e,t)=>e.flatMap(({dir:e,key:n,target:r})=>{let i=n.indexOf(`*`);if(i===-1?n!==t:i!==n.lastIndexOf(`*`)||t.length<n.length||!t.startsWith(n.slice(0,i))||!t.endsWith(n.slice(i+1)))return[];if(i===-1)return[{dir:e,target:r}];let a=t.slice(i,t.length-(n.length-i-1));return[{dir:e,target:(r.split(`*`).length-1)*a.length>kO?AO:r.replaceAll(`*`,a)}]}),MO=(e,{exports:t,hasExports:n},r)=>n?jO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===AO?AO:yO(e,``,t)):[yO(e,``,r)];function NO({named:e,fold:t},n,r){let i=n===``?null:t(n),a=i===null?void 0:r.find(t=>e(`${i}${t}`).length>0);return a===void 0?null:`${n}${a}`}var PO=(e,t)=>NO(e,t===``?`index`:`${t}/index`,uO);function FO(e,t,n,r,i){if(r===null)return[];let a=i?null:NO(t,r,[``,...uO]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>EO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...gO(e)].map(e=>hO(n,r,e))).filter(e=>e!==null).map(e=>NO(t,e,[``,...uO])??PO(t,e)).filter(e=>e!==null);return o.length>0?o:[PO(t,r)].filter(e=>e!==null)}var IO=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>EO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),LO=64,RO=new WeakMap;function zO(e){let t=RO.get(YD(e));if(t)return t;t=new Set;let n=Bt(e),{installed:r,cased:i,folding:a}=CO(n),o=[],s=EO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=xO(s.name),l=(e,t)=>!(t===`require`?lO:fO).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${SO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||ct(a,r)||r?.runnable===!1||!l(e,i)&&!l(a,i)||(t.add(a),typeof r==`string`&&o.push(a))}}},f=(e,t)=>{let r=FO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...FO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>EO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>LO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,SO(e)]):[];for(let[t,n,r]of p)for(let i of OO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)ct(e,t)&&o.push(e);let m=IO(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&SO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=tO([...c.length>0?eO(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>MO(c,s,e),y=!1,b=(e,t)=>{if(e!==AO)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},ee=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of jO(m,e)){let e=r===AO?[AO]:r.startsWith(`./`)?[yO(c,n,r)]:h(r)?v(`./${r.slice(s.name.length+1)}`):c.length>0&&r===s.name?v(`.`):[];for(let n of e)b(n,t)}}},te=(e,t,n)=>{if(e.startsWith(`#`))return ee(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!cO.test(i.replaceAll(`\\`,`/`)))return;let a=n()?`import`:`require`,o=`${a}\0${r}\0${i}`;if(!g.has(o)){if(g.add(o),h(e))for(let e of v(i))b(e,a);if(!(h(e)&&s.hasExports)){if(a===`require`)for(let e of _O(c,r,i))f(e,dO.test(i));d(yO(c,r,i),`import`)}}};for(let e=0;e<o.length;e++){let t=o[e],r=n.get(t),i=t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)):``;for(let{1:e,2:t,3:n,index:a}of r.matchAll(_)){let o=e??t??n,s=r[a];for(let e of nO(s,o))te(e,i,()=>sO(r,s,a,a+o.length+2))}}return RO.set(YD(e),t),t}var BO=new WeakMap;function VO(e,t){let n=BO.get(YD(e));if(n||BO.set(YD(e),n=new Map),!n.has(t)){let r=Bt(e).get(t);n.set(t,ue(t,typeof r==`string`?r:null,Vt(e).get(t),zO(e).has(t)))}return n.get(t)}var HO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,UO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:HO(n),exfiltration:HO(r),hosts:HO(i),readability:t&&{...t,controls:HO(t.controls,Number)}});function WO(e){switch(e.id){case`held-runs-code`:case`held-credentials`:case`held-exfiltration`:case`held-remote`:case`held-ip-lookup`:return{...e,files:e.files.map(e=>({...e,found:HO(e.found),...e.added?{added:HO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var GO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(WO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,UO(t)])),dependencies:e.dependencies,score:e.score??null}),KO=e=>e?.npm?e.risk?.()?.files??null:null,qO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function JO(e,t){return e?.npm?KO(e)?.get(t)??qO:VO(e,t)}var YO=({names:e,loop:t})=>[e>=mt&&`${e.toLocaleString(`en`)}${e===gt?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function XO(e,t,n){return n===Bt(e).get(t)&&typeof n==`string`?JO(e,t).readability:QO(e,t,n)}var ZO=new WeakMap;function QO(e,t,n){let r=ZO.get(e);r||ZO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=vt(t,n);return r.set(t,{text:n,read:a}),a}function $O(e,t){let n=Tt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${wt.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var ek=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${dt} characters, the longest ${t.toLocaleString(`en`)}`;function tk(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>ek(e);switch(n){case`binary`:return`Not UTF-8 text, or holding a NUL: there is no text to read`;case`map`:return`A source map`;case`inline-map`:return`Inline source map, ${Gr(i)}${r>0?`; minified: ${a()}`:``}`;case`minified`:return`Minified: ${r>0?a():`its lines of code ${t.toLocaleString(`en`)} characters long on average, strings and comments aside, with few spaces`}`;default:return M}}function nk(e,t=!1){if(!e)return M;let n=bt(e),{tag:r,short:i,mark:a}=wt.get(n);return A`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${tk({...e,category:n})}">${t?i??r:r}</span>`}function rk(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||bt(e)===t?M:nk({...e,category:t})}function ik(e,t=null){let n=e?St(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(Ct(e,n)))):[];if(n.length===0)return M;let r=t=>t===`long`?`${ek(e)}${e.category===`long`?`, among readable ones`:``}`:$O(e.controls,t);return n.map(t=>A`<span class="${`npm-flag-tag is-${Ct(e,t)}`}" data-tooltip="${r(t)}">${wt.get(t).tag}</span>`)}function ak(e){if(!e)return M;let t=bt(e);return t===`ascii`||t===`map`?ik(e):ok(e)}var ok=e=>e?A`${ik(e)}${nk(e)}`:M;function sk(e,t,n,r=!0){let{stamps:i,readability:a}=JO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?M:A`${o?A`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Gr(n)}, 256 KiB or more`}">Large</span>`:M}${s?A`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${YO(s)}`}">Obfuscated</span>`:M}`}var ck=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 2.5c-1.4 0-2 .6-2 2v1.6c0 .9-.5 1.6-1.5 1.9 1 .3 1.5 1 1.5 1.9v1.6c0 1.4.6 2 2 2M10.5 2.5c1.4 0 2 .6 2 2v1.6c0 .9.5 1.6 1.5 1.9-1 .3-1.5 1-1.5 1.9v1.6c0 1.4-.6 2-2 2"/></svg>`,lk=e=>e?.status===`loading`?`Pretty-printing…`:e?.status===`error`?`Couldn't pretty-print${e.of>1?` ${e.failed} of ${e.of} files`:``}: ${e.message}`:`Pretty-print`,uk=8,dk=4,fk=2,pk=30,mk=2,hk=`The server's copy is of another file than the one open.`,gk=`The server didn't pretty-print this file.`,_k=e=>!(e>=400&&e<500&&e!==429),vk=5e3,yk=3e5,bk=new Map;function xk(e,t,n,r){if(!t?.retry){bk.delete(e);return}let i=bk.get(e)??0;bk.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(vk*2**i,yk))?.unref?.()}var Sk=new Map,Ck=0,wk=()=>Ck,Tk=new Map,Ek=(e,t)=>`${e.integrity}\0${t}`,Dk=new Map,Ok=new Map,kk=new WeakMap;function Ak(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=kk.get(e);return i||kk.set(e,i=new Map),i.has(n)||i.set(n,JD(n,r,()=>QO(e,n,r))),i.get(n)}var jk=!1,Mk=new Set,Nk=new Set;function Pk(e,t){Sk.delete(e),Sk.set(e,t),jk||(jk=!0,Nk=Mk,Mk=new Set,setTimeout(()=>{jk=!1})),Mk.add(e),Fk()}function Fk(){for(let[e,t]of Sk){if(Sk.size<=uk)break;Mk.has(e)||Nk.has(e)||t.status===`loading`||(Sk.delete(e),Tk.delete(e))}}var Ik=0,Lk=[];async function Rk(e){Ik<mk?Ik++:await new Promise(e=>{Lk.push(e)});try{return await e()}finally{let e=Lk.shift();e?e():Ik--}}async function zk(e,t,n,r,i,a){let o;try{let e=a??await Oi(i),{text:t,source:s}=await Rk(()=>n.npm?qb(n.npm.name,n.npm.version,r,e):Gb(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Oi(t)}:{status:`error`,message:hk,retry:!0}}catch(n){if(n?.name===`AbortError`){Sk.get(e)===t&&(Sk.delete(e),Tk.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:_k(n?.status)}}if(Sk.get(e)!==t)return;Sk.set(e,o),Ck++;let s=Tk.get(e),c=o.status===`error`&&o.retry;c||Tk.delete(e),xk(`file ${e}`,c?o:null,()=>Sk.get(e)===o&&Sk.delete(e),()=>Tk.get(e)),s?.(),Fk()}function Bk(){for(let[e,t]of Dk){if(Dk.size<=dk)break;t.rest&&Dk.delete(e)}}function Vk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Hk(e,t,n,{npm:r}){let i=Bt(n),a;try{await Kb(r.name,r.version,async({path:e,source:n,text:r,status:a,message:o})=>{let s=i.get(e),c=typeof r==`string`&&typeof s==`string`&&n===await Oi(s)?{status:`ready`,text:r,hash:await Oi(r)}:typeof r==`string`?{status:`error`,message:hk,retry:!0}:{status:`error`,message:o,retry:_k(a)};t.copies.set(e,c),Ck++,Vk(t,e)}),a={status:`error`,message:gk,retry:!1}}catch(n){if(n?.name===`AbortError`){Dk.get(e)===t&&Dk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:_k(n?.status)}}t.rest=a,Ck++;for(let e of[...t.notifiers.keys()])Vk(t,e);Bk()}function Uk(e,t,n,r,i){let a=e.integrity,o=Dk.get(a);return Dk.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Hk(a,o,e,t)),Dk.set(a,o),Bk(),r===Bt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:hk,retry:!1}}function Wk(e,t,n,r,i){return F.bundleSourcePretty?t.npm?Uk(e,t,n,r,i):Gk(e,n,r,i,t):null}function Gk(e,t,n,r,i=e){let a=Ek(e,t),o=Sk.get(a),s=o??{status:`loading`};return Pk(a,s),(s.status===`loading`||s.retry)&&Tk.set(a,r),o||zk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Kk=new Set;function qk(e){e&&(Kk.size===0&&setTimeout(()=>{let e=[...Kk];Kk.clear();for(let t of e)t()},pk),Kk.add(e))}function Jk(){for(let[e,t]of Ok){if(Ok.size<=fk)break;t.ended&&Ok.delete(e)}}async function Yk(e,t,n,r){let i={base:n,other:r},a=null;try{let e=async({side:e,path:n,source:r,text:a,status:o,message:s})=>{if(typeof a!=`string`&&_k(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Bt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Oi(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Oi(a)}:typeof a==`string`?{status:`error`,message:hk,retry:!0}:{status:`error`,message:s,retry:_k(o)}),Ck++,qk(t.notify)};await(n.npm?Yb(n.npm.name,n.npm.version,r.npm.version,e):Jb(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){Ok.get(e)===t&&Ok.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:_k(n?.status)}}Object.assign(t,{ended:!0,rest:a}),Ck++,xk(`comparison ${e}`,a,()=>Ok.get(e)===t&&Ok.delete(e),()=>t.notify),qk(t.notify),Jk()}function Xk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=Ok.get(o);Ok.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},Yk(o,s,e,t)),Ok.set(o,s),Jk();let c=n===`base`?e:t;return i===Bt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?Gk(c,r,i,a):{status:`loading`})):{status:`error`,message:hk,retry:!1}}function Zk(){if(F.bundleSourcePretty=!F.bundleSourcePretty,!F.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of Sk)e(n)&&Sk.delete(t);for(let[t,n]of Dk)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&Dk.delete(t);for(let[t,n]of Ok)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&Ok.delete(t)}function Qk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function $k(e,t){if(e.files[e.at]===t)return e;let n=[...e.files.slice(0,e.at+1),t];return{...e,files:n,at:n.length-1}}function eA(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function tA(e){let t=e.slice(e.lastIndexOf(`/`)+1);return t===`package-lock.json`||t===`npm-shrinkwrap.json`?`npm`:t===`pnpm-lock.yaml`||/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:t===`yarn.lock`?`yarn`:null}var nA=4,rA=new Map;function iA(e,t,n,r,i){if(!F.bundleSourceLockfile)return null;let a=tA(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=rA.get(o)??{status:`loading`};rA.delete(o),rA.set(o,s);for(let e of rA.keys())rA.size>nA&&rA.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}package.json`);import(`./chunk-IZ7POWI3.js`).then(({readLockfile:t})=>Object.assign(s,{status:`ready`,lockfile:{id:o,...t(a,n,{manifest:e})}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function aA(){F.bundleSourceLockfile=!F.bundleSourceLockfile;for(let[e,t]of rA)t.status===`error`&&rA.delete(e)}var oA=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,sA=e=>`link:${e}`,cA=e=>e===`.`?`__own__`:e;function lA(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[sA(e),cA(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[sA(e),t]),...n]),a=e=>r.has(e)?e:e.startsWith(`link:`)&&r.has(e.slice(5))?e.slice(5):null,o=Object.create(null);for(let[e,{dependencies:t}]of i)o[e]={imports:[...new Set(t.map(a).filter(t=>t!==null&&t!==e))]};let s=[...i.keys()];if(s.length===0)return null;let c=[...new Set(t.map(([e])=>cA(e)))];return{treeData:o,files:s,ownCounts:new Map,transitiveCounts:null,severitySets:new Map,colorSets:new Map,fileFindings:new Map,options:{pkgOf:e=>r.get(e),packageInfoOf:e=>({version:i.get(e).version})},packagesOnly:!0,supportsLayers:!0,layerRoots:{roots:c,appImports:[]},ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>sA(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var uA=[`graph`,`matrix`,`dependencies`],dA=class extends ha{static properties={lockfile:{attribute:!1}};static styles=pa`:host{display:flex;flex-direction:column;min-height:0}.slot{display:flex;flex-direction:column;flex:1;min-height:0}graph-layout{flex:1;min-height:0;border:none;border-radius:0}.empty{color:var(--muted)}`;constructor(){super(),this.lockfile=null,this._prep=null,this._graphState=null,this._attachment=0,this._bundleLayout=null,this.addEventListener(`click`,e=>this._click(e)),this.addEventListener(`input`,e=>this._input(e))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this._prep&&this._attach()}disconnectedCallback(){super.disconnectedCallback(),this._detach()}willUpdate(e){e.has(`lockfile`)&&(this._prep=lA(this.lockfile),this._prep||this._detach(),w.selected=null,w.solo=null,w.focusedPkg=null)}render(){return this.lockfile?this._prep?A`<div class="slot"></div>`:A`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&w.graphState===this._graphState&&ar(),this._graphState=null,this._bundleLayout!==null&&(w.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=w.bundleLayout,w.bundleLayout=w.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await DT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:uA,hideAllFiles:!0};await OT(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=w.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){ET()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){ET()?.refreshTopPkgs(this._prep,this._host)}_click(e){let t=t=>e.composedPath().find(e=>e.matches?.(t)),n=t(`[data-g2-layout]`)?.dataset.g2Layout,r=t(`[data-g2-pkg]`)?.dataset.g2Pkg;if(n!==void 0)uA.includes(n)&&n!==w.bundleLayout&&(w.lockfileLayout=w.bundleLayout=n,w.selected=null,w.solo=null,w.layoutCache=null,ar(),this._attach());else if(r!==void 0)w.solo=w.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),w.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){w.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),w.graphState?.requestDraw?.()}else if(t(`#g2-fullscreen`))document.body.classList.toggle(`report-fullscreen`);else return;e.stopPropagation()}_input(e){let t=e.composedPath()[0];t?.id===`g2-path-filter`&&(w.pathFilter=t.value,w.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,dA);function fA({title:e,count:t,extra:n=M,tools:r=M,body:i,list:a=!1,className:o=``}){return A`<section class="${`bundles-overview-col ${o}`}"><header class="bundles-overview-col-head"><span class="bundles-overview-col-title">${e} <span class="bundles-overview-col-count">${t}</span>${n}</span>${r}</header><div class="${`bundles-overview-col-body${a?` bundles-overview-col-body--list`:``}`}">${i}</div></section>`}var pA=1024,mA=1024*pA,hA=[`tiny`,`small`,`medium`,`large`,`gigantic`],gA={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*pA,128*pA,mA,8*mA]};function _A(e,t){let n=gA[e].findIndex(e=>t<e);return hA[n===-1?hA.length-1:n]}function vA(e,t,n){return A`<span class="${`npm-sized is-${_A(e,t)}`}">${n}</span>`}var yA=[`preinstall`,`install`,`postinstall`];function bA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),yA.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function xA(e,t=[]){return bA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function SA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return bA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var CA=12096e5,wA=(e,{minimumReleaseAge:t=CA,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,TA=72,EA={top:6,right:0,bottom:18,left:40},DA=24,OA=4,kA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),AA=new Intl.NumberFormat(`en`),jA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,MA=jA({month:`short`,day:`numeric`}),NA=jA({month:`short`,day:`numeric`,year:`numeric`}),PA=jA({month:`short`,year:`numeric`}),FA=jA({month:`long`,year:`numeric`}),IA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,LA=(e,t)=>{let n=t&&ye(e);return A`<dd class="${`npm-downloads-tier ${n?`is-mid`:_e(e)}`}" data-tooltip="${n?t:M}">${IA(e)}</dd>`},RA={week:{label:`Weekly`,of:e=>fe(e).slice(-52),name:e=>`${MA(e.from)} \u2013 ${NA(e.to)}`},month:{label:`Monthly`,of:pe,name:e=>FA(e.from)}},zA=(e,t)=>`${AA.format(e)} downloads, ${t}`;function BA(e){let t=pe(e).at(-1);return t?VA(t):null}var VA=({total:e,from:t})=>({total:e,month:FA(t)});function HA(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));return[1,2,2.5,5,10].map(e=>e*t).find(t=>t>=e)}var UA=class extends ha{static properties={downloads:{attribute:!1},status:{},known:{attribute:!1},_width:{state:!0},_at:{state:!0},_unit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.downloads=null,this.status=`loading`,this.known=null,this._width=0,this._at=null,this._unit=`week`,this._resize=new ResizeObserver(([e])=>{this._width=Math.floor(e.contentRect.width)})}connectedCallback(){super.connectedCallback(),this._resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this._resize.disconnect()}_key(e){let t=this._periods.length-1,n={ArrowLeft:-1,ArrowRight:1,Home:-t-1,End:t+1};e.key in n&&(e.preventDefault(),this._at=Math.min(t,Math.max(0,(this._at??t)+n[e.key])))}willUpdate(e){let t=RA[this._unit],{downloads:n}=this;if((e.has(`downloads`)||e.has(`_unit`))&&(this._periods=t.of(n)),e.has(`downloads`)){this._latest=n==null?null:Object.fromEntries(Object.entries(RA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&zA(i.total,r(i))}]})),this._tier=he(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:zA(t,`${NA(de(n.start,n.days.length-e.length))} \u2013 ${NA(Date.parse(n.end))}`)}}(e.has(`downloads`)||e.has(`_unit`)||e.has(`_width`))&&(this._shape=this._shapeOf(t))}_shapeOf(e){let t=this._periods,n=this._width;if(t.length===0||n<=EA.left+EA.right)return null;let r=n-EA.left-EA.right,i=TA-EA.bottom,a=HA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-EA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>EA.left+(e+.5)*l:e=>EA.left+(t.length>1?e*l:r/2),d=t.length-1,f=e=>Math.min(d,Math.max(0,(c?Math.floor:Math.round)((e-EA.left)/l))),p=PA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(DA,l*.7)/2;h={bars:t.map(({total:t},n)=>{let[r,a,c]=[u(n)-e,u(n)+e,o(t)],l=Math.min(OA,e,i-c);return`M${s(r)},${i}V${s(c+l)}Q${s(r)},${s(c)} ${s(r+l)},${s(c)}H${s(a-l)}Q${s(a)},${s(c)} ${s(a)},${s(c+l)}V${i}Z`})}}else{let e=t.map((e,t)=>`${t===0?`M`:`L`}${s(u(t))},${s(o(e.total))}`).join(``);h={line:e,area:`${e}L${s(u(d))},${i}L${s(u(0))},${i}Z`}}return{x:u,y:o,bottom:i,indexAt:f,first:p,last:PA(m.to),...h,ticks:[[0,kA.format(0)],[a,kA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${PA(m.to)}; the latest ${this._unit}: ${zA(m.total,e.name(m))}.`}}_stat(e,t,n){return A`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||M}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return A`${e?kA.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return A`<div class="npm-stat"><dt class="sr-only">${RA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||M}">${Object.keys(RA).map(e=>A`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?M:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return A`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(RA).map(([e,{label:t}])=>A`<button type="button" aria-pressed="${String(this._unit===e)}" @click="${()=>{this._unit=e,this._at=null}}">${t}</button>`)} </span><span class="npm-downloads-readout" aria-live="polite">${e?A`<strong>${AA.format(e.total)}</strong> <span>${RA[this._unit].name(e)}</span>`:M}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return A`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?A`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${LA(this._tier,this.known)}</div>`:M}</dl>${e?this._controls(t):M}</div>${e?this._plot(t):M}`}_plot(e){let t=this._shape;if(!t)return A`<div class="npm-downloads-plot" style="${E({height:`${TA}px`})}"></div>`;let n=this._width;return A`<div class="npm-downloads-plot" style="${E({height:`${TA}px`})}" tabindex="0" role="img" aria-label="${t.label}" @pointermove="${e=>{this._at=t.indexAt(e.offsetX)}}" @pointerleave="${()=>{this._at=null}}" @keydown="${e=>this._key(e)}" @blur="${()=>{this._at=null}}"><svg width="${n}" height="${TA}" viewBox="0 0 ${n} ${TA}" aria-hidden="true">${t.ticks.map(([e,r])=>j`<line class="npm-downloads-grid" x1=${EA.left} x2=${n-EA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
167
- <text class="npm-downloads-tick" x=${EA.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>j`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):j`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${EA.left}" y="${TA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-EA.right}" y="${TA-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?j`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${EA.top} y2=${t.bottom}></line>
168
- <circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:M}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,UA);function WA(e,t){let n=GA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var GA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),KA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function qA(e,t){let n=t.filter(e=>KA.test(e)),r=e=>{let t=e.toLowerCase().match(/^[a-z]+/u)?.[0]??``;return n.find(e=>{let n=e.toLowerCase().match(/^licen[cs]e-([a-z]+)/u)?.[1];return n!==void 0&&t!==``&&(n.startsWith(t)||t.startsWith(n))})??(n.length===1?n[0]:null)};return e.split(/(\s+(?:OR|AND|WITH)\s+|[()])/u).filter(Boolean).map(e=>({text:e,file:/^[\w.+-]+$/u.test(e)&&!/^(?:OR|AND|WITH)$/u.test(e)?r(e):null}))}var JA=e=>e?.replace(/\.git$/u,``),YA=new Map([[`github`,{label:`GitHub`,domain:`github.com`,protocols:[`git:`,`http:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i,a]=e.split(`/`,5);return(!i||i===`tree`)&&n&&JA(r)?[n,JA(r),i?a:t.slice(1)]:null}}],[`bitbucket`,{label:`Bitbucket`,domain:`bitbucket.org`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`get`&&n&&JA(r)?[n,JA(r),t.slice(1)]:null}}],[`gitlab`,{label:`GitLab`,domain:`gitlab.com`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let n=e.slice(1),r=n.lastIndexOf(`/`);return n.includes(`/-/`)||n.includes(`/archive.tar.gz`)?null:n.slice(0,Math.max(r,0))&&JA(n.slice(r+1))?[n.slice(0,r),JA(n.slice(r+1)),t.slice(1)]:null}}],[`gist`,{label:`Gist`,domain:`gist.github.com`,protocols:[`git:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`raw`&&(n||r)?[r?n:null,JA(r||n),t.slice(1)]:null}}],[`sourcehut`,{label:`SourceHut`,domain:`git.sr.ht`,protocols:[`git+ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`archive`&&n&&JA(r)?[n,JA(r),t.slice(1)]:null}}]]),XA=new Map([...YA.values()].map(e=>[e.domain,e])),ZA=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...YA.keys()].map(e=>`${e}:`)]);function QA(e){let t=e.indexOf(`#`),n=e.indexOf(`/`);return n>0&&!e.startsWith(`.`)&&(t>-1?e[t-1]!==`/`:!e.endsWith(`/`))&&![/\s/u.exec(e)?.index??-1,e.indexOf(`@`),e.indexOf(`:`),e.indexOf(`/`,n+1)].some(e=>e>-1&&!(t>-1&&e>t))}var $A=e=>{try{return new URL(e)}catch{return null}};function ej(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=ZA.has(e.slice(0,n+1))||t>-1&&t<n?e:t>-1?`git+ssh://${e}`:e.indexOf(`//`)===n+1?e:`${e.slice(0,n+1)}//${e.slice(n+1)}`;if($A(r))return $A(r);let i=e=>{let t=r.indexOf(`#`);return r.lastIndexOf(e,t>-1?t:1/0)},a=i(`:`)>i(`@`)?`${r.slice(0,i(`:`))}/${r.slice(i(`:`)+1)}`:r;return a.lastIndexOf(`:`,a.indexOf(`#`)>-1?a.indexOf(`#`):1/0)===-1&&!a.includes(`//`)&&(a=`git+ssh://${a}`),$A(a)}function tj(e){if(!e)return null;let t=ej(QA(e)?`github:${e}`:e);if(!t)return null;let n=YA.get(t.protocol.slice(0,-1)),r=n??XA.get(t.hostname.replace(/^www\./u,``)),i=n?[t.pathname.replace(/^\/?[^@]*@|^\//u,``),t.hash.slice(1)]:r?.protocols.includes(t.protocol)&&r.repo(t);try{return i?(i.forEach(e=>e&&decodeURIComponent(e)),r):null}catch{return null}}function nj(e){let t=String(e??``).trim();if(/^(?:[.]|~\/|\/|[a-z]:|file:)/iu.test(t))return`path`;if(/^npm:/iu.test(t)||!/[/:]|[.](?:tgz|tar\.gz|tar)$/iu.test(t))return`registry`;let n=tj(t);if(n)return n.label;if(/^(?:git\+)?[a-z]+:/iu.test(t)){let e=/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#.*)?$/iu.exec(t);if(t.startsWith(`git+ssh:`)&&e&&!/:\d+(?:\/|$)/u.test(e[1]))return`git`;let n=$A(t)?.protocol;return/^(?:git|git\+(?:https?|rsync|ftp|file|ssh)):$/u.test(n)?`git`:/^https?:$/u.test(n)?`URL`:null}return/\/|[.](?:tgz|tar\.gz|tar)$/iu.test(t)?`path`:`registry`}function rj(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var ij=e=>nj(e)===`registry`,aj=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function oj(e){let t=[];for(let[n,r]of aj)for(let[i,a]of Object.entries(e?.[n]??{})){let e=rj(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ti(e)&&ij(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function sj(e,t){let n=e=>new Map(oj(e).map(e=>[`${e.kind??``}\0${e.name}`,e])),r=n(t),i=n(e),a=[],o=[],s=[];for(let[e,{name:t,kind:n,range:a,opens:c}]of i){let i=r.get(e);i?i.range!==a&&o.push({key:e,name:t,kind:n,from:a,to:i.range,opens:i.opens}):s.push({key:e,name:t,kind:n,range:a,opens:c})}for(let[e,{name:t,kind:n,range:o,opens:s}]of r)i.has(e)||a.push({key:e,name:t,kind:n,range:o,opens:s});return{removed:s,added:a,changed:o}}var cj=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>A`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function lj(e,t=null,n=void 0){let r=Aj(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Hb(e.name,e.version,t,{signal:n}),GO);return r.status===`ready`?r:null}function uj(e){return e.map(e=>{let t=e.format===`npm`?`npm`:[`sourcemap`,`sourcemaps`].includes(e.kind)||e.filename.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,n=t===`npm`?e.detail??``:t===`sourcemap`?`Sourcemap`:`Stasis`,r=[];if(e.date&&r.push(e.date),typeof e.size==`string`&&![``,`—`].includes(e.size)&&r.push(e.size),e.files){r.push(`${e.files.length.toLocaleString()} files`);let{lines:t}=Kr(e.files);t!=null&&r.push(`${t.toLocaleString()} LoC`)}else e.summary&&(Number.isSafeInteger(e.summary.files)&&e.summary.files>=0&&r.push(`${e.summary.files.toLocaleString()} files`),Number.isSafeInteger(e.summary.lines)&&e.summary.lines>=0&&r.push(`${e.summary.lines.toLocaleString()} LoC`));return{value:e.id,label:e.filename,displayLabel:e.displayLabel,detail:n,format:t,secondary:r.join(` · `),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var dj=e=>e.displayLabel??e.label,fj=class extends xe{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[xe.styles,pa`.bundle-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.05rem;width:1.05rem;height:1.05rem;color:var(--muted)}.bundle-icon img,.bundle-icon svg{display:block;width:100%;height:100%;opacity:1;color:inherit}.option{gap:.5rem;padding-block:.25rem}.option-copy{gap:0}.option .name{line-height:1.3}.option .bundle-icon{flex-basis:1.35rem;width:1.35rem;height:1.35rem;margin-right:.15rem}.secondary{line-height:1.25;font-variant-numeric:tabular-nums}:host([versions]) .group{display:grid;gap:.1rem;font-size:.76rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(max(var(--option-width, 6ch),var(--secondary-width, 0ch) * .76) + 1rem)),1fr))}:host([versions]) .secondary{font-size:.76em}:host([versions]) .option{flex-wrap:wrap;align-content:start;gap:0 .8rem;padding:.3rem .45rem;font-variant-numeric:tabular-nums}:host([versions]) .option>svg,:host([versions]) .option .bundle-icon{display:none}:host([versions]) .option-copy{flex:0 1 auto}:host([versions]) .option .detail{font-size:.62rem;line-height:1.6}:host([versions]) .trigger .name:has(+.detail){flex:0 1 auto}:host([versions]) .trigger .detail{flex:1 1 0%;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}`];constructor(){super(),this.bundles=null,this.noun=`bundle`,this.versions=!1,this.label=`Choose bundle`,this.placeholder=`Choose bundle`}get searchLabel(){return`Search ${this.noun}s`}get optionsLabel(){return`${this.noun[0].toUpperCase()}${this.noun.slice(1)}s`}get noMatchesLabel(){return`No matching ${this.noun}s`}get emptyLabel(){return this.noun===`bundle`?`No stored bundles`:`No other ${this.noun}s`}get changeEvent(){return`bundle-change`}get menuWidth(){return this.versions?500:super.menuWidth}willUpdate(e){if(e.has(`bundles`)&&this.bundles&&(this.options=uj(this.bundles)),e.has(`options`)&&this.versions){let e=e=>Math.min(Math.max(0,...this.options.map(t=>e(t)?.length??0)),28);this.style.setProperty(`--option-width`,`${e(dj)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return dj(e)}optionIcon(e){return e.format?A`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?k(Qi):e.format===`sourcemap`?k(Zi):A`<img src="./stasis.svg" alt="">`}</span>`:M}choices(){let e=this._query.normalize(`NFKC`).toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(t=>e.every(e=>`${t.label} ${t.detail}`.normalize(`NFKC`).toLocaleLowerCase().includes(e))),n=this.versions?t:t.toSorted((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`}));return{pinned:[],sections:[{label:null,options:n}],facets:[],showFacets:!1,count:n.length,total:this.options.length}}};customElements.get(`bundle-selector`)||customElements.define(`bundle-selector`,fj);var pj=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function mj(e){let t=String(e??``).trim(),n=pj.exec(t),r,i=null;if(n)try{[r,i]=[decodeURIComponent(n[1]),n[2]?decodeURIComponent(n[2]):null]}catch{return null}else{let e=t.indexOf(`@`,1);[r,i]=e===-1?[t,null]:[t.slice(0,e),t.slice(e+1)]}return!ti(r)||i!==null&&!ni(i)?null:{name:r,spec:i}}var hj=(e,t=null)=>t==null?e:`${e}@${t}`;function gj(e,t){let n=new Set(t),r=[];for(let t of[e?.main,e?.module,`index.js`]){if(typeof t!=`string`)continue;let e=WA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function _j(e){return{integrity:e.integrity,kind:`sourcemap`,name:`${e.name}@${e.version}`,size:e.tarballSize,npm:{name:e.name,version:e.version,private:e.private===!0,published:typeof e.published==`string`?e.published:null,manifest:e.manifest??{}}}}function vj(e,t){let n=zt(e,t.files);return{...n,npm:e.npm,npmEntries:gj(e.npm.manifest,n.json.sources),risk:()=>lj(e.npm)}}function yj(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:ci.has(t)?t:`overview`,...n}:null}var bj=3,xj=new Map,Sj=new Map,Cj=1e4,wj=3e5,Tj=null;function Ej(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==Tj&&(xj.clear(),Sj.clear(),Tj=e),xj}function Dj(e,t){let n=Ej();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>bj;)n.delete(n.keys().next().value)}async function Oj(e,t,n){let r=Ej().get(`${e}@${t}`);if(r)return Dj(r.entry,r.details),r;let i=await xb(e,t,n),a=_j(i),o=vj(a,i);return a.npm.private||Dj(a,o),kj(i),{entry:a,details:o}}function kj({name:e,version:t,known:n}){if(!n||typeof n!=`object`)return;let r={stats:e,advisories:e,tags:`${e}@${t}`,socket:`${e}@${t}`,provenance:`${e}@${t}`};for(let[e,t]of Object.entries(r)){let r=`${e}\0${t}`;n[e]&&Sj.get(r)?.status!==`ready`&&Sj.set(r,{status:`known`,data:n[e]})}}function Aj(e,t,n,r){Ej();let i=`${e}\0${t}`,a=Sj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return Sj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return Sj.set(i,o),n().then(e=>({status:`ready`,...r(e)}),e=>{if(e?.name===`AbortError`)return null;let t=o.failures+1,n=Math.min(Cj*2**(t-1),wj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>Sj.get(i)===o?e===null?(Sj.delete(i),null):(Sj.set(i,e),e.status===`error`&&setTimeout(()=>{Sj.get(i)===e&&X()},e.wait).unref?.(),Mj(),null):null).catch(()=>{}),o}var jj=!1;function Mj(){jj||(jj=!0,queueMicrotask(()=>{jj=!1,X()}))}function Nj(e,t=void 0){return Aj(`versions`,e,()=>Rb(e,{signal:t}),e=>({versions:e.versions??[],distTags:e.distTags??{},times:e.times??{},created:typeof e.created==`string`?e.created:null,private:e.private===!0,teamScoped:e.teamScoped===!0}))}function Pj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function Fj(e,t,n=Date.now()){let r=Pj(e.distTags);return(e.versions?.includes(t)?e.versions:[t,...e.versions??[]]).map(t=>{let i=e.times?.[t];return{id:t,detail:r.get(t)?.join(`, `)??``,...i&&{date:i.slice(0,10)},...i&&Ij(e,i,n)&&{age:Bj(i,n)}}})}function Ij(e,t,n=Date.now()){return e.status===`ready`&&wA(t,{minimumReleaseAge:e.teamScoped?0:CA,now:n})}var Lj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function Rj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?Lj.format(-n,`day`):n<730?Lj.format(-Math.floor(n/30.44),`month`):Lj.format(-Math.floor(n/365.25),`year`);return`${NA(Date.parse(e))} \xB7 ${r}`}var zj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function Bj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?zj.format(-n,`minute`):n<1440?zj.format(-Math.floor(n/60),`hour`):zj.format(-Math.floor(n/1440),`day`)}var Vj=e=>NA(Date.parse(e)),Hj=e=>`Published on ${Vj(e)}`;function Uj(e){let{name:t,version:n}=e.npm,r=Nj(t),i=Fj(r,n).map(({id:e,detail:n,date:r,age:i})=>({id:e,name:`${t}@${e}`,displayLabel:e,format:`npm`,detail:n,...r&&{date:r},...i&&{dateWarning:i}}));return{noun:`version`,base:n,widest:{name:`${t}@10.90.90`,detail:`latest`},pending:r.status===`loading`,error:r.status===`error`?`Couldn't list the versions of ${t}.`:null,options:i.filter(e=>e.id!==n),choices:i,name:r=>r===e.integrity||r===n?e.name:`${t}@${r}`,load:async e=>(await Oj(t,e)).details,dependencies:iM,openDependency:uM,open:(e,n,r)=>Wj(t,e,`compare`,n?{compareSpec:n,...ii(r)}:{})}}function Wj(e=null,t=null,n=`overview`,r={}){!I()||!G?.active||G.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function Gj(e,t=null){F.currentView=`npm`,F.npmLookup=e,F.npmOpening=t,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}var Kj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,qj=new Set([`overview`,`compare`]);async function Jj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return Gj({input:F.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=hj(r,i),s=F.currentView===`bundles`&&F.bundleDetails?.npm,c=s&&F.bundles?.[0]?.npm?.name===r&&F.bundles[0].npm.version===i?F.bundles[0]:null,l=c?F.bundleDetails:null;if(!c){let e=i!=null&&Ej().has(`${r}@${i}`);!s&&!e&&(Gj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;Nj(r,u.signal),i!=null&&Kj.test(i)&&qj.has(a)&&lj({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await Oj(r,i??`latest`,{signal:ev()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(Zj=null,Gj({input:o,error:e.message}),{view:`npm`})}if(!t()||!I())return u.abort(),!1}Zj?.name===r&&Zj.spec===i&&($j([o,...Qj().filter(e=>e!==o)]),Zj=null),ar();let u=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null;return a===`review`&&(F.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{}}),F.bundles=[c],oq(c.integrity,a),a===`code`&&e.file!=null&&(F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?F.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:ri(e.compareMode)}:u&&(F.bundleCompare=u),F.bundleDetails=l,F.npmLookup={input:c.name,error:null},F.npmOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),yj(c,F.bundleDetailsTab,Ux(F))}var Yj=10,Xj=()=>`deepview.npm.recent.${F.managedSession?.id??`anonymous`}`,Zj=null;function Qj(){try{let e=JSON.parse(localStorage.getItem(Xj())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&mj(e)):[]}catch{return[]}}function $j(e){try{localStorage.setItem(Xj(),JSON.stringify(e.slice(0,Yj)))}catch{}}function eM(e){$j(Qj().filter(t=>t!==e)),X()}function tM(e){let t=mj(e);if(!t){F.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}Zj=t,Wj(t.name,t.spec)}function nM(e){e.preventDefault(),tM(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function rM(){let e=F.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(F.managedSession?.role),n=Qj();return A`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${k(Qi)}</span><h1 id="npm-lookup-title">npm packages</h1></header><p class="npm-lookup-intro">Open a published version to read its files, as its tarball has them. ${t?M:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${nM}"><input name="package" type="text" aria-label="Package" autocomplete="off" spellcheck="false" maxlength="500" placeholder="lodash, @scope/name@1.2.3 or an npmjs.com link" .value="${e.input??``}"> <button type="submit">Open</button></form><div class="npm-lookup-message">${e.error?A`<p class="npm-lookup-error" role="alert">${e.error}</p>`:M}</div>${n.length>0?A`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>A`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>tM(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>eM(e)}">×</button></li>`)}</ul></section>`:M}</section>`}function iM(e,t){let n=sj(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?lj(t.npm,e.npm.version)?.dependencies:null,i=[e?.npm,t?.npm],a=(e,t)=>e.map(e=>({flags:[],...t?.find(({key:t})=>t===e.key),...e}));return{removed:n.removed,added:a(n.added,r?.added).map(e=>({...e,compared:i})),changed:a(n.changed,r?.changed)}}var aM=e=>{let t=lj(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},oM=({kind:e,name:t})=>`${e??``}\0${t}`,sM=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,cM=e=>sM.exec(rj(e)?.spec??e.trim())?.[1]??null,lM=e=>rj(e)?.name??null;function uM({opens:e,from:t,to:n}){if(!e)return;let r=n&&cM(n),i=t&&cM(t);!i||!r||i===r||lM(t)!==lM(n)?Wj(e):Wj(e,r,`compare`,{compareSpec:i})}function dM(e){let t=oj(e.npm.manifest);if(t.length===0)return M;let n=aM(e.npm);return fA({title:`Dependencies`,count:t.length,list:!0,body:A`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(oM(e))??[],s=A`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${cj(o)}</span> ${i?A`<span class="npm-dependency-kind">${i}</span>`:M} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return A`<li>${a?A`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>Wj(a)}">${s}</button>`:A`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var fM=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function pM(e){let t=aM(e),n=Map.groupBy(oj(e.manifest).flatMap(e=>(t.get(oM(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return fM.filter(([e])=>n.has(e)).map(([t,r,i])=>A`<span class="npm-extension is-warn npm-dependency-check" data-tooltip="${`${i(e.version)}: ${n.get(t).map(({name:e,range:t})=>`${e} ${t}`).join(`, `)}`}"><span>${r}</span><span class="npm-extension-count">${n.get(t).length}</span></span>`)}function mM(e,t){let{name:n,version:r}=e.npm,i=Aj(`tags`,`${n}@${r}`,()=>Vb(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?M:A`<span class="bundle-origin-tags">${i.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${nt(t,e)}" target="_blank" rel="noopener noreferrer">${k(qi)}<span>${e}</span></a>`)}</span>`}function hM(e,t,n=e){let r=n===e||n===`./${e}`?M:`./${e}`;return t?.has(e)?A`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function gM(e,t,n){let r=e.knownAccounts?.includes(t);return A`<a class="${`bundle-origin-link npm-account ${r?`is-known`:`is-unknown`}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(t)}`}" data-tooltip="${r?`Publishes one of npm's most downloaded packages`:`Unknown publisher`}" target="_blank" rel="noopener noreferrer"><span>${n}</span></a>`}var _M=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,vM=e=>e.replace(_M,`$1`);function yM(e,{prefix:t=``,githubFigures:n=M,provenance:r=M,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?ot({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=Nj(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return A`<dl class="bundles-detail-meta npm-facts">${e.npm.private?A`<dt>Access</dt><dd>Private</dd>`:M} ${o.deprecated?A`<dt>Deprecated</dt><dd class="npm-deprecated">${vM(o.deprecated)}</dd>`:M} ${o.description?A`<dt>Description</dt><dd>${o.description}</dd>`:M} ${o.license?A`<dt>License</dt><dd>${qA(o.license,[...a??[]]).map(({text:e,file:t})=>hM(t,a,e))}</dd>`:M} ${o.author?A`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?A`${gM(o,o.authorAccount,o.author)}${o.author===o.authorAccount?M:A`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:M} ${o.publisher&&o.publisher!==o.authorAccount?A`<dt>Publisher</dt><dd class="bundle-origin-row">${gM(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?A`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:M} ${u?A`<dt>Published</dt><dd>${Ij(l,u)?A`<span class="npm-recent">${Rj(u)}</span>`:Rj(u)}</dd>`:M} ${c?A`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${k(oa)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${c.commit.href}" data-tooltip="${c.commit.hash}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer">${k(sa)}<span>${c.commit.text}</span></a> ${mM(e,s)}`:A`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:M} ${r===M?M:A`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?A`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:M}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M}</dl>`}var bM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?hM(n,t,e):e});function xM(e,t=null,n=null){let{manifest:r}=e.npm,i=[`main`,`module`,`types`].filter(e=>typeof r[e]==`string`).map(e=>({label:`${e[0].toUpperCase()}${e.slice(1)}`,path:r[e],file:WA(r[e],t)??GA(r[e])})),a=i.find(e=>e.label===`Main`),o=i.find(e=>e.label===`Module`);a&&o&&a.file===o.file&&(a.label=`Main, Module`,i.splice(i.indexOf(o),1));let s=Object.keys(r.bin??{}),c=xA(r,t),l=oj(r).length;return A`${i.map(({label:e,path:r,file:i})=>A`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${qe(i,Ge(n,i))}${hM(i,t,r)}</span></dd>`)} ${r.type?A`<dt>Type</dt><dd class="mono">${r.type}</dd>`:M} ${s.length>0?A`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:M} ${r.engines?A`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:M} ${c.length>0||r.hasInstallScript?A`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>A`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${bM(n,t)}</code></div>`)}</dd>`:M}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${vA(`dependencies`,l,l===0?`None`:l)}${pM(e.npm)}</dd>`}var SM=class extends ha{static properties={name:{},version:{},tab:{},list:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.name=``,this.version=``,this.tab=`overview`,this.list=null}render(){let e=Fj(this.list?.status===`ready`?this.list:{versions:[],distTags:{}},this.version).map(({id:e,detail:t,date:n,age:r})=>({value:e,label:e,detail:t,secondary:n,...r&&{secondaryWarning:r}}));return A`<bundle-selector .options="${e}" .value="${this.version}" noun="version" versions label="${`Version of ${this.name}`}" placeholder="${this.version}" ?disabled="${e.length<=1}" aria-busy="${this.list?.status===`loading`?`true`:M}" @bundle-change="${e=>{e.detail.value!==this.version&&Wj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,SM);var CM=e=>A`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,wM=[[`commits`,`Commits`,CM(j`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,CM(j`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,CM(j`<circle cx="4" cy="3.5" r="1.75"/><circle cx="4" cy="12.5" r="1.75"/><circle cx="12" cy="12.5" r="1.75"/>
169
- <path d="M4 5.25v5.5M12 10.75V6.5a2 2 0 0 0-2-2H7.5M9 3 7.5 4.5 9 6"/>`)],[`agents`,`Agents`,CM(j`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
170
- <circle cx="5.75" cy="8.25" r="1.1" fill="currentColor" stroke="none"/><circle cx="10.25" cy="8.25" r="1.1" fill="currentColor" stroke="none"/>`)],[`pulse`,`Pulse`,CM(j`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,CM(j`<path d="M5 3.25v9.5L12.75 8z"/>`)]],TM=new Set(wM.map(([e])=>e)),EM=`commits`;function DM(e){return TM.has(e)&&(EM=e),EM}var OM=new Map,kM=new Set,AM=e=>OM.get(e)??null,jM=e=>OM.has(e)?{subtab:OM.get(e)}:{},MM=e=>{kM.add(e)};function NM(e,t){let n=di(e,t)?t:null;if(n!==AM(e)){n?OM.set(e,n):OM.delete(e);for(let t of kM)t(e)}}function PM({repoId:e,commit:t,path:n},r,i){NM(r,i),G?.pushRoute({view:`repository-code`,repoId:e,commit:t,path:n,bundleTab:r,...jM(r)})}var FM=e=>A`<div class="activity-views" role="group" aria-label="Activity">${wM.map(([t,n,r])=>A`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`,IM=/^[a-f\d]{40}$/iu,LM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),RM=({repo:e,path:t})=>t?`${e}/${t}`:e,zM=new Map,BM=new Map,VM=3e4,HM=null;function UM(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==HM&&(zM.clear(),BM.clear(),HM=e),zM}function WM(e,t){let n=UM(),r=n.get(e);if(r&&!r.stale&&!(r.status===`error`&&Date.now()>=r.retryAt))return r;let i=r?.stale?{status:`ready`,value:r.value}:{status:`loading`};return n.set(e,i),t().then(e=>({status:`ready`,value:e}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+VM}).then(t=>{if(n.get(e)!==i)return null;if(t?.status===`ready`||t&&i.status===`loading`)n.set(e,t);else if(i.status===`loading`)n.delete(e);else return null;return X(),null}).catch(()=>{}),i}function GM(e){let t=UM().get(e);t?.status===`ready`?UM().set(e,{...t,stale:!0}):UM().delete(e)}var KM=()=>WM(`repositories`,()=>Cb()),qM=e=>WM(`refs\0${e}`,()=>wb(e)),JM=({repoId:e,repo:t})=>t??KM().value?.find(t=>t.repoId===e)?.fullName??null,YM=(e,t)=>BM.get(`${e}\0${t}`)??null;function XM(e,t,n){UM(),n&&BM.set(`${e}\0${t}`,n)}function ZM(e,t=null){let{repoId:n,repo:r,commit:i,path:a}=e,o=Array.isArray(e.files)?e.files:[];return{integrity:`repository:${n}:${i}:${a}`,kind:`sourcemap`,name:`${RM({repo:r,path:a})}@${i.slice(0,7)}`,size:o.reduce((e,[,t])=>e+t,0),repository:{repoId:n,repo:r,commit:i,path:a,revision:t}}}var QM=/^readme(?:\.[^/]*)?$/iu;function $M(e,t=new Map){let n=e.filter(e=>QM.test(e)).toSorted((e,t)=>+!/\.md$/iu.test(e)-!/\.md$/iu.test(t)||e.localeCompare(t)),r=e.map(e=>({path:e,depth:e.split(`/`).length,size:t.get(e)??0})).toSorted((e,t)=>e.depth-t.depth||t.size-e.size||e.path.localeCompare(t.path)).map(({path:e})=>e);return[...new Set([...n,...e.filter(e=>e===`package.json`),...r])]}function eN(e,t){let n=zt(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:$M(r,n.fileSizes)}}function tN(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository,o=li.has(t)?t:`code`;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o,...jM(o),...n}}function nN({repoId:e,commit:t=null,ref:n=null,revision:r=void 0,path:i=``,repo:a=null,file:o=null,bundleTab:s=`code`,compare:c=null}){if(!I()||!G?.active)return;let l=c?.target?{...IM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ii(c.mode)}:{};G.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...jM(s),...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var rN=e=>e.commit??e.ref??``,iN=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function aN({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&IM.test(r.name)?r.name.toLowerCase():null;nN({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:iN(r),revision:r}})}function oN({repoId:e,repo:t,commit:n,revision:r},i,a){nN({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:iN(r),revision:r}})}function sN(e){F.currentView=`repository-code`,F.repositoryCodeOpening=e,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function cN(e){let t=F.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===W()?t.repository:null}var lN=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function uN(e,t){if(lN.has(t?.code))try{let t=await Tb(e.repoId,rN(e),e.path,{signal:ev()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));F.repositoryCodeOpening?.error&&LM(F.repositoryCodeOpening,e)&&n.length>0&&IM.test(t.commit)&&(F.repositoryCodeOpening={...F.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function dN(e){try{let t=await Tb(e.repoId,rN(e),``,{signal:ev()});F.repositoryCodeOpening===e&&IM.test(t?.commit??``)&&(F.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function fN({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){nN({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function pN(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=li.has(e.bundleTab)?e.bundleTab:`code`;NM(o,e.subtab);let s=e=>({view:`repository-code`,repoId:r,commit:e,path:a,bundleTab:o,...jM(o)});UM();let c=F.currentView===`bundles`&&F.bundles?.[0]?.repository&&F.bundleDetails?.integrity===F.bundles[0].integrity?F.bundles[0]:null,l=i&&c&&LM(c.repository,{repoId:r,commit:i,path:a})?c:null,u=l?F.bundleDetails:null,d=F.currentView===`repository-code`?F.repositoryCodeOpening:null;if(!l&&i&&d?.code===`directory-too-large`&&LM(d,{repoId:r,commit:i,path:a}))return sN({...d,tab:o}),s(i);if(!l&&ui.has(o)){let c=e.revision===void 0?i?BM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;GM(`refs\0${r}`);let l=KM().value?.find(e=>e.repoId===r)?.fullName,u={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??l??null,revision:c,error:null},d=i;if(!d){sN(u),G?.showing(e),n();try{let t=await Tb(r,rN(e),``,{signal:ev()});d=IM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(sN({...u,error:e.message,code:e?.code??null}),s(null))}if(!t())return!1;if(!d)return sN({...u,error:`The server answered with no commit.`}),s(null)}return c&&BM.set(`${r}\0${d}`,c),sN({...u,commit:d,ref:null,historyOnly:!0}),n(),s(d)}if(!l){let d=e.revision===void 0?i?BM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,f=KM().value?.find(e=>e.repoId===r)?.fullName,p={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??f??null,revision:d,error:null};GM(`refs\0${r}`);let m=o===`treemap`,h=c&&!m?{integrity:c.integrity,generation:W(),repository:{repoId:r,repo:p.repo,commit:i,path:a,revision:d}}:null;h?(F.repositoryCodePending=h,X({animate:!1})):(sN(p),n()),m&&!i&&dN(p),G?.showing(e);let g;try{if(g=await Sb(r,rN(e),a,{signal:ev()}),g?.repoId!==r||i&&g.commit!==i||g.path!==a||!IM.test(g.commit??``))throw Error(`The server answered with another directory.`)}catch(e){if(e?.name===`AbortError`||!t())return!1;let n=!i&&e?.code===`directory-too-large`&&IM.test(e.commit??``)?e.commit.toLowerCase():i,r={...p,commit:n,error:e.message,code:e?.code??null};return sN(r),uN(r,e),s(n)}finally{h&&F.repositoryCodePending===h&&(F.repositoryCodePending=null,F.currentView===`bundles`&&F.selectedBundle===h.integrity&&X({animate:!1}))}if(!t()||!I())return!1;d&&BM.set(`${r}\0${g.commit}`,d),l=ZM(g,d),u=eN(l,g)}ar();let f=F.bundleCompare?.bundle===l.integrity?F.bundleCompare:null,p=e.compareCommit??e.compareTarget??null;return F.bundles=[l],oq(l.integrity,o),o===`compare`&&p?F.bundleCompare={bundle:l.integrity,target:p,mode:ri(e.compareMode)}:f&&o!==`compare`&&(F.bundleCompare=f),o===`code`&&e.file!=null?F.bundleCodeFileRequest={bundle:l.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}:o===`code`&&typeof e.filePath==`string`&&(F.bundleCodeFileRequest={bundle:l.integrity,path:e.filePath}),F.bundleDetails=u,F.repositoryCodeOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),tN(l,F.bundleDetailsTab,Ux(F))}function mN({revision:e,commit:t},n){if(e?.name)return e;let r=n?.status===`ready`?n.value:null;if(e)return{kind:`branch`,name:r?.defaultBranch??``};let i=e=>(Array.isArray(r?.[e])?r[e]:[]).flatMap(e=>e?.sha===t&&typeof e.name==`string`?[e.name]:[]),a=t?i(`branchCommits`):[],o=a.includes(r?.defaultBranch)?r.defaultBranch:a[0],s=t?i(`tagCommits`)[0]:null;return o?{kind:`branch`,name:o}:s?{kind:`tag`,name:s}:{kind:`commit`,name:t??``}}var hN=new Set([`issues`,`pulls`,`agents`,`pulse`]);function gN({how:e,kind:t,name:n}){let r=n.trim();return e===`kind`||e===`input`||!r||t===`commit`&&!/^[a-f\d]{7,40}$/iu.test(r)?null:{kind:t,name:r}}var _N=class extends ha{static properties={repository:{attribute:!1},tab:{type:String},repos:{attribute:!1},refs:{attribute:!1},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.tab=`code`,this.repos=null,this.refs=null,this._edit=null,this._shownKey=null}willUpdate(){let{repoId:e,commit:t,path:n,revision:r}=this.repository??{},i=JSON.stringify([e,t,n,r]);i!==this._shownKey&&(this._shownKey=i,this._edit=null)}revisionChanged({detail:e}){let t=gN(e);this._edit=t??{kind:e.kind,name:e.name},t&&aN(this.repository,t,this.tab)}render(){if(!this.repository)return M;let{repoId:e,repo:t,commit:n,path:r}=this.repository,i=this.repos?.status===`ready`?this.repos.value:[],a=i.map(e=>({value:e.repoId,label:e.fullName}));i.some(t=>t.repoId===e)||a.unshift({value:e,label:t??`Repository ${e}`});let o=this._edit??mN(this.repository,this.refs),s=hN.has(this.tab),c=r&&!s?r.split(`/`):[],l=t??i.find(t=>t.repoId===e)?.fullName,u=l&&n?`https://github.com/${[...l.split(`/`),`tree`,n,...c].map(encodeURIComponent).join(`/`)}`:null;return A`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&nN({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?A`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>oN(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?A`<span aria-current="location">${e}</span>`:A`<button type="button" @click="${()=>oN(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:M} ${s?M:A`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>lr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?A`<a class="bundles-slide-commit" href="${u}" data-tooltip="${n}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer" aria-label="${`View this directory at commit ${n.slice(0,7)} on GitHub`}">${k(sa)}<span>${n.slice(0,7)}</span></a>`:M}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,_N);function vN(e){let{listing:t}=e;return t?A`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>A`<li><button type="button" class="repository-code-directory" @click="${()=>oN({...e,commit:t.commit},n.path,e.tab)}">${Je}<span>${n.name}</span></button></li>`)}</ul></div>`:M}var yN=new Map,bN=new Set,xN=null;function SN(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==xN&&(yN.clear(),xN=e),yN}var CN=()=>{for(let e of bN)e.requestUpdate()};function wN({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=SN().get(r);if(i)return i;let a={key:r,status:`loading`};return yN.set(r,a),Ob(e,n,t).then(e=>{if(e?.files===null)throw Error(`GitHub has no files at this commit.`);if(!Array.isArray(e?.files)||!Array.isArray(e.sizes)||e.sizes.length!==e.files.length)throw Error(`The server answered with no files.`);let t=new Map(e.files.map((t,n)=>[t,Number.isSafeInteger(e.sizes[n])&&e.sizes[n]>0?e.sizes[n]:0]));return yN.get(r)===a&&yN.set(r,{key:r,status:`ready`,cut:e.cut===!0,details:{integrity:`tree\0${r}`,kind:`tree`,metadataOnly:!0,listedOnly:!0,fileSizes:t}}),null}).catch(e=>{yN.get(r)===a&&(e?.name===`AbortError`?yN.delete(r):yN.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(CN),a}var TN=class extends ha{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),bN.add(this)}disconnectedCallback(){bN.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return M;let e=wN(this.repository);return e.status===`error`?A`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{yN.delete(e.key),CN()}}">Retry</button></div>`:e.status===`ready`?A`${e.cut?A`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:M}<bundle-treemap .details="${e.details}"></bundle-treemap>`:A`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,TN);function EN(e){let t=ut(e),n=!1,r=null;async function i(){n=!0;try{await t.load()}catch(e){r=String(e?.message??e)}n=!1,X()}return e=>t.module?e():r?A`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),A`<div class="bundles-slide-placeholder">Loading…</div>`)}var DN=EN(`./activity.js`),ON=A`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" aria-hidden="true" viewBox="0 75 405 400"><path fill="currentColor" d="m62 447.6 65.8-68.2c2.2-.9 22.7 12 28.2 14.1C295.4 446.8 399.2 263.6 285.1 172 184.3 91.1 41.1 191.5 82 315.6c3.9 12 10.8 21.7 15.4 33.2l-47.1 47C-32 294.9 7.4 142.3 126.3 91.3 241.3 42 374.4 112 398 234.5c29.4 152.7-116.5 274.9-262.7 223.6-15.9-5.6-17-10.6-34.9-10.6H62Z"/><path fill="#e02129" d="M190.1 181.8c128.8-15 141.2 170.8 26 182.6-126.4 12.9-137.9-169.5-26-182.6M209 236c-7.4 5.6-10.8-5.4-13-7.7-9.6-10.3-19.4-.8-14 1.7s9.5-.3 10.1 5.6-9 9.9-7.9 16.4c13.2-5.9 25.9-6.4 39.1 0 3.2-7.1-7.9-12.1-7.8-14.8.1-9.4 11.6-6.2 12.6-7.2 4.3-4.3-8.9-11.7-17.1-.6-1.3 1.8-1.4 6.3-1.9 6.6zm-7.6 14.3c-10.1-1.5-19.3 10-25 11.8s-23.2 1.5-14.9 16.3c3.9.8 5.1-13.1 13.3-9.4 1.9 13.1-2.8 8.7-9 12.2-10 5.7-8.1 20.2-1.3 12.8 2.7-3 1.5-9.6 10.3-7.7 1.3 15.9-.8 8.4-7.9 11.7-11.5 5.3-9 20.2-1.7 14.8s0-10.8 8.6-9.3c1 .2 5.8 10.8 12.4 14.5 13.7 7.9 35 5.5 44.8-7.6s1.6-6.5 1.8-6.7c4-3.1 11.3 4.6 11 9.2l5.5-1.5c2.2-3.1-1.6-8.2-3.9-10.3-7.6-6.8-13.5.9-11-14.8 9-2.6 8.4 8.7 9.4 9.4 6 4.2 8.4-7.8 1.5-13.2-7.4-5.8-13.2 3.6-10.9-13.4 7.4-1.3 8.3 3.2 9.4 9.4 8.3 1.4 6.9-7.2 3.1-11.8-4.5-5.5-10.5-2.6-15.7-4.7-1.3-.5-25.1-18.8-25.1-9.4v52.5c-1.5.6-4.7-1.4-4.7-2.3z"/><ellipse cx="206.6" cy="270" fill="#e02129" rx="74.6" ry="66.5"/><path fill="#fff" d="M200.6 250v55.5s.4 1 .5 1.1c1.1 1.8 3.7 1.8 4.9 0 .1-.2.5-1.1.5-1.3v-55.4a34 34 0 0 1 17.2 5.8c3.1 2.2 5.6 5.1 7.7 8.3 3.8.1 7.6-.5 11.3.8 5.2 1.8 9.6 7.5 9.6 13.1 0 4.2-5.8 5.3-7.3 1.5-.7-1.8-.3-3.2-1.7-5-.8-1-3-2.7-4.3-2.7h-4.5c1.1 4.1.8 8.4.8 12.6.1.1 1.7-.1 2-.1 7.3 0 13.9 6 14.4 13.5.3 5.3-6.3 6-7.5 1.8-.6-2.1-.3-3.5-2-5.3-.8-.9-2.9-2.2-4.2-2.2h-3c.2 1 .2 2.2.1 3.2 0 2.1-.4 4.3-.9 6.4-.2.9-.5 1.8-.7 2.6 5.5-.7 10.5.7 14.1 5 1.7 2 3.4 5.6 3.6 8.3.5 5.4-6.6 6.7-7.8 1.2-.5-2.3-.7-3.8-2.7-5.4-3.1-2.5-7-1.2-10.7-1.4-1.9 3.2-4.5 6.1-7.5 8.4-14.4 10.8-36.9 7.2-46.2-8.4-.4-.2-2.4 0-2.9 0-3.2 0-6-.6-8.4 2.1-1.6 1.8-1.5 3.2-2.1 5.3-1.2 4.5-7.9 3.6-7.7-1.4.3-5.5 4.9-11.3 10.1-13 1.7-.5 5.7-1 7.4-.6.1 0 .1.1.1-.1 0-1.1-.7-2.8-.9-4.1-.4-2.7-.6-5.4-.4-8.1-2.8-.1-5.3.2-7.2 2.5-1.4 1.7-1.3 2.9-1.8 4.9-1.1 4.4-7.9 3.8-7.6-1.5.2-4.1 2.9-8.7 6.3-11 3-2.1 6.5-2.7 10.1-2.6v-5.8c.2-2.2.3-4.5.9-6.6h-4.5c-1.8 0-4.2 2.2-4.9 3.7-1.1 2.3-.4 6-4.1 6.3-3.4.3-4.5-2.3-4.1-5.2.9-6.1 5.1-11 11.3-12.2 3.1-.6 6.2 0 9.3-.4 2.2-3.1 4.8-6 7.9-8.3 4.9-3.5 10.9-5.1 16.8-5.8Z"/><path fill="#fff" d="M197.3 235.1c4.1-.7 8.3-.9 12.4 0 1.1-7.6 7-14.6 15.2-14 3.3.2 5.7 3.1 3.6 6.1-1.5 2-4.1 1-6.2 1.7s-3.7 2.5-4.5 4.4c-.3.7-1.2 3.8-.9 4.3 0 .1 1.3 1 1.6 1.2 3.4 3.1 6.2 7.4 6.6 12 0 .6-.1 1.2.1 1.8-.1.1-2.6-1.5-2.9-1.8-10.5-6-27.5-5.7-37.9.4-.2.1-2.3 1.6-2.4 1.5-.2-5.5 2.8-10.5 6.8-14 .3-.3 1.3-.9 1.5-1.1.1-.1.1-.2.1-.3 0-.5-.3-1.8-.5-2.3-.9-3.3-3-6-6.6-6.3h-2.2c-4.2-.4-4.5-6.5-.2-7.4 2.3-.5 5.2 0 7.3 1 5.2 2.2 8.5 7.4 9.1 12.9Z"/></svg>`,kN=new Map([[`registry`,{label:`Source: npm registry`,icon:Xe}],[`repository`,{label:`Source: GitHub repository`,icon:k(oa)}],[`osv`,{label:`Source: OSV`,icon:ON}]]);function AN(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function jN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var MN=A`<svg class="external-link-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13L13 3"/><path d="M5 3h8v8"/></svg>`;function NN(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return A`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return A`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function PN(e,t){return A`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${AN(e)}</span> ${typeof t==`number`?A`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:M}</div>`}function FN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??jN(t)??(typeof e.id==`string`?e.id:null),r=kN.get(e.source);return!r&&!(n&&t)?M:A`<span class="bundle-advisory-reference">${r?A`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:M} ${n&&t?A`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${MN}</a>`:M}</span>`}function IN(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?A`<span class="bundle-advisory-cwes">${t.map((e,t)=>A`${t===0?``:`, `}${NN(e)}`)}</span>`:M}function LN(e,t=null){let n=typeof e.cvss?.vectorString==`string`?e.cvss.vectorString:``,r=typeof e.vulnerable_versions==`string`?e.vulnerable_versions:null,i=Array.isArray(e.versions)?e.versions.filter(e=>typeof e==`string`):[];return A`<li class="bundle-advisory-row">${PN(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?A`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:A`<span class="bundle-advisory-title">${e.title}</span>`} ${FN(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?A`<span>${e.informational}</span>`:M} ${r?A`<span>Affected <span class="mono">${r}</span></span>`:M} ${i.length>0?A`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:M} ${IN(e.cwe)}</div>${n?A`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:M}</div></div></li>`}var RN=(e,t)=>JO(e,t).runsCode,zN=(e,t=e.length>=lt)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,BN=/^[\w$.]+$/u,VN=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=jt.get(e);return t&&BN.test(t)?t:n})].map(([e,n])=>`${e} (${zN([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=lt))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),HN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},UN=(e,t)=>t===void 0?{path:M,line:M}:{path:e,line:t},WN=(e,t=null)=>[...e].map(([e,n])=>`${jt.get(e).name} (${zN(n)}${t?.has(e)?`, new`:``})`).join(`, `);function GN(e,t,n){return e?[...Map.groupBy(e,([e])=>jt.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=jt.get(r[0][0]),o=r.map(([e,t])=>[jt.get(e).name,zN(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>jt.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=UN(n,n===void 0?void 0:HN(r.map(([,e])=>e)));return A`<span data-bundle-view-source="${l.path}" data-bundle-view-line="${l.line}" class="${`npm-runs-code${a?` is-${a}`:``}`}" data-tooltip="${[`${i}: ${o.map(e=>e.join(`, `)).join(`; `)}`,c].filter(Boolean).join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?A`<div class="compare-tip-notice">${c}</div>`:M}</div>`}">${e}</span>`}):M}var KN=(e,t)=>JO(e,t).exfiltration,qN=e=>[...Dt].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),JN=(e,t)=>[...e].map(([e,n])=>`${Dt.get(e).name} (${zN(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),YN=new Map([[`Exfiltration`,`Names a host that catches what is sent to it, as malicious packages send what they take to`],[`Remote`,`Names a service malicious packages send what they take to, or fetch what they run from, though code may well use it`],[`IP lookup`,`Looks up the machine's public address, as malicious packages do before sending what they take`]]);function XN(e,t,n){return e?Ot(e).map(([e,r])=>{let i=UN(n,n===void 0?void 0:HN([...r.values()]));return A`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${kt(e,r,t)}`}" data-tooltip="${`${YN.get(e)}: ${JN(r,t)}`}">${e}</span>`}):M}var ZN=e=>e.toLowerCase().replaceAll(` `,`-`),QN=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),$N={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function eP(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function tP(e,t,n=[]){let r=Object.keys($N),i=new Set(n??[]),a=e.filter(e=>n!==null&&!i.has(e.file)&&r.includes(e.status)),o=r.findLast(e=>a.some(t=>t.status===e))??`accept`;if(t===null)return{coverage:null,checkedFiles:null,totalFiles:null,verdictLimit:o};let s=new Set(a.map(e=>e.file)),c=t.filter(e=>s.has(e)).length;return{coverage:c===t.length?`full`:`partial`,checkedFiles:c,totalFiles:t.length,verdictLimit:o}}function nP(e,t=`accept`){let n=Object.keys($N);return n.slice(Math.max(n.indexOf(t),n.indexOf(tP(e,null).verdictLimit)))}function rP({npm:{version:e,manifest:t={}}}){return(t.description===`security holding package`||t.github?.github?.toLowerCase()===`npm/security-holder`)&&(t.publisher===`npm`||/-security(?:\.\d+)?$/u.test(e))}function iP(e,t,n,r){if(!e)return`accept`;let i=t?.versions?.indexOf(e.version)??-1,a=i<0?[]:t.advisories.filter(e=>e.affected.includes(i)),o=e.private?[]:n?.alerts??[];return r?.findings?.some(e=>e.id===`malware`)||rP({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>QN(e)||e.id?.startsWith(`MAL-`)||/^Malicious package\b/iu.test(e.title??``))?`reject`:a.some(e=>e.severity===`critical`)||o.some(e=>e.type===`criticalCVE`)?`request-changes`:`accept`}function aP(e,t,n=[]){return tP(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys($N).includes(e.status)))}function oP(e){return e.replaceAll(/\r\n?/gu,`
171
- `).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var sP=[`critical`,`high`,`moderate`,`low`,`unknown`],cP=e=>sP.includes(e.severity)?e.severity:`unknown`,lP=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function uP(e){return Aj(`stats`,e,()=>zb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function dP(e){return Aj(`advisories`,e,()=>Bb(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function fP(e){let{name:t,version:n}=e.npm,r=(e,t)=>A`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${MN}</a>`;return A`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?M:r(pP(e),`socket.dev`)}</span>`}var pP=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function mP(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=Aj(`socket`,`${t}@${n}`,()=>Ub(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var hP=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],gP=50,_P=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,vP=e=>A`<svg class="npm-socket-gauge" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6" pathLength="100"></circle><circle class="npm-socket-gauge-fill" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="${`${e} 100`}"></circle></svg>`;function yP(e){let t=mP(e)?.scores;return t?A`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${hP.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return A`<li><a class="${`npm-extension npm-socket-score ${_P(a,i)}`}" href="${pP(e)}" target="_blank" rel="noopener noreferrer">${vP(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:M}var bP=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),xP=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),SP=new Map,CP=new WeakMap;function wP(e){let t=e?mP({npm:e}):null;return t?(CP.has(t)||CP.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),CP.get(t)):SP}var TP=(e=[])=>e.map(e=>{let t=bP.get(e.severity)??`low`;return A`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${xP(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${xP(e.type)}</span>`});function EP(e,t){return iP(e.npm,dP(e.npm.name),mP(e),lj(e.npm,t?t.npm?.version??`(empty)`:null))}function DP(e,t){let n=rP(e),r=n&&t!==null&&[...t].every(sI)?[]:mP(e)?.alerts??[];if(!n&&r.length===0)return M;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return A`<div class="npm-alerts">${n?A`<p class="npm-alert" role="note"><strong>Taken down by npm.</strong> npm's security team removed this package's versions, as it does for malicious code, and serves this placeholder in their place${i?A`: ${hM(i,t,`its readme`)}`:``}.</p>`:M} ${r.length>0?OP(e,r,t):M}</div>`}function OP(e,t,n){return A`<div class="npm-alert npm-socket-alerts" role="note"><span class="npm-socket-alerts-head"><strong>Socket raises ${t.length===1?`an alert`:`${t.length} alerts`} on this version</strong> <a class="npm-package-link" href="${pP(e)}" target="_blank" rel="noopener noreferrer">socket.dev${MN}</a></span><ul>${t.map(e=>{let t=bP.get(e.severity)??`info`;return A`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${xP(e.type)}</span> ${e.file?A`<span class="npm-socket-alert-file">in ${hM(e.file,n)}</span>`:M} ${e.note?A`<p class="npm-socket-alert-note">${e.note}</p>`:M}</li>`})}</ul></div>`}function kP(e,t,n=M){let r=uP(e.npm.name),i=JF(lj(e.npm)?.findings.find(({id:e})=>e===`popularity`));return A`<div class="npm-figures"><npm-downloads-chart role="region" aria-label="Downloads" .downloads="${r.downloads}" .status="${r.status}" .known="${i}"></npm-downloads-chart><div class="npm-figures-actions">${fP(e)}${t}</div>${n}</div>`}var AP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="m8 1.75 1.9 3.9 4.3.6-3.1 3 .75 4.25L8 11.5l-3.85 2 .75-4.25-3.1-3 4.3-.6Z"/></svg>`,jP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><circle cx="8" cy="8" r="1.25" fill="currentColor"/></svg>`,MP=k(ca),NP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><circle cx="4.5" cy="3.25" r="1.5"/><circle cx="11.5" cy="3.25" r="1.5"/><circle cx="8" cy="12.75" r="1.5"/><path d="M4.5 4.75v.75a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-.75M8 7.5v3.75"/></svg>`;function PP(e){if(!e.npm.manifest.github?.github)return M;let t=uP(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return M;let r=(e,t,r,i)=>A`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${et(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${kA.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return A`${r(AP,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(NP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(jP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?M:r(MP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?A`<span class="npm-github-archived">Archived</span>`:M}`}var FP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:Aj(`provenance`,`${e}@${t}`,()=>Wb(e,t),e=>({provenance:e.provenance??null}));function IP(e){let t=FP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function LP(e,t){return e?/^https:\/\/github\.com\/actions\/runner(?:\/github-hosted)?$/u.test(e)?`GitHub Actions`:e.startsWith(`https://github.com/actions/runner/`)?`GitHub Actions, self-hosted runner`:e.startsWith(`https://gitlab.com/`)||e.includes(`/-/runners/`)?t===`self-hosted`?`GitLab CI, self-hosted runner`:`GitLab CI`:new URL(e).host:null}var RP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function zP(e){if(e.npm.private)return M;let t=FP(e.npm);if(!t)return A`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return A`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return A`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return A`<span class="npm-provenance-warning" data-tooltip="npm lists provenance for this version, but no statement naming its tarball could be read">Listed, but none for this tarball</span>`;let{manifest:n}=e.npm,{repository:r,commit:i,workflow:a,ref:o,builder:s,run:c,logIndex:l,runner:u}=t.provenance,d=(e,t,n=M)=>A`<a class="bundle-origin-link" href="${e}" data-tooltip="${n}" target="_blank" rel="noopener noreferrer"><span>${t}</span></a>`,f=/^https:\/\/github\.com\/([^/]+\/[^/]+)$/u.exec(r)?.[1]??null,p=LP(s,u),m=p?.startsWith(`GitLab CI`),h=f??r.replace(/^https:\/\//u,``),g=n.github?.github??(n.gitlab?`gitlab.com/${n.gitlab}`:null),_=g&&g.toLowerCase()!==h.toLowerCase(),v=a?.split(`/`).at(-1),y=[a?f&&i?d(`${r}/blob/${i}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,v,a===v?M:a):A`<span class="mono" data-tooltip="${a===v?M:a}">${v}</span>`:M,c?d(c,`Run`):M,l===null?M:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==M);return A`<span class="npm-provenance"><span class="npm-provenance-line">${p?A`<span class="${RP(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:M} <span class="npm-provenance-sep">from</span> ${i?d(f?`${r}/commit/${i}`:m?`${r}/-/commit/${i}`:r,`${h}@${i.slice(0,7)}`,`${r} at ${i}${o?` (${o})`:``}`):d(r,h)} ${_?A`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:M}</span> ${y.length>0?A`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:A`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:M}</span>`}function BP(t,n,r){let i=t.affected.map(e=>n[e]).filter(Boolean);return i.includes(r)?`affects`:i.length>0&&i.every(t=>e(t,r)<0)?`fixed`:`later`}function VP(){let e=F.managedSession?.id;return()=>F.managedSession?.id===e}function HP(e,t){return LN({...e,title:e.title??e.id,severity:cP(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ft({heading:e,severity:n,markdown:r,isCurrent:t}))}function UP(e){let{name:t,version:n}=e.npm,r=dP(t),i=VP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>BP(e,r.versions,n)),c=lP.map(([e,t])=>({status:e,heading:t(n),advisories:o.filter((t,n)=>s[n]===e)})).filter(e=>e.advisories.length>0),l=s.filter(e=>e===`affects`).length,u=a&&r.keptAt?A`<p class="npm-advisories-note">GitHub's repository advisories are as of ${eI(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?A`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:M,d=r.status===`loading`?A`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?A`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?A`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:A`${u}${c.map(e=>A`<section class="${`npm-advisory-group is-${e.status}`}"><h4 class="npm-advisory-group-head">${e.heading} <span class="bundles-overview-col-count">${e.advisories.length}</span></h4><ul class="bundle-advisories-rows">${e.advisories.map(e=>HP(e,i))}</ul></section>`)}`;return fA({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?A`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:M})}var WP=[...wt].filter(([,{mark:e}])=>e!==null).map(([e])=>e),GP=[...wt].filter(([,{mark:e}])=>e===null).map(([e])=>e),KP=[null,`notice`,`warn`];function qP(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=St(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=Ct(i,r);KP.indexOf(e)>KP.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>wt.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var JP=new WeakMap;function YP(e){let t=e.npm?KO(e):e,n=JP.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,XO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=qP(a.values()),u=Xt(e),d=Vt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!sI(e)))o.has(e)||f.files++,f.lines+=u.get(e)??0,f.unpacked+=d.get(e)??0;n={of:t,paths:new Set(r),byPath:a,counts:s,marks:c,unreadable:l,sizes:d,extensions:new Map(r.map(e=>[e,iI(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:cI(r,d,u),content:f},JP.set(e,n)}return n}var XP={key:null,chip:null},ZP=e=>`${e.npm.name}@${e.npm.version}`,QP=e=>XP.key===ZP(e)?XP.chip:null;function $P(e){let t=QP(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{XP={key:null,chip:null},X()}}}function eF(e,t,n,r,{classes:i=``,tooltip:a=M}={}){let o=QP(e)?.id===t.id;return A`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{XP={key:ZP(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function tF(e,t,n){let{name:r}=wt.get(n),{byPath:i,counts:a,marks:o}=YP(t),s=o.get(n);return eF(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&St(i.get(e)).includes(n)},A`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function nF({counts:e,marks:t,unreadable:n},r,i,a){let o=WP.filter(t=>e.has(t));if(o.length===0)return M;let s=o.some(e=>t.get(e)===`warn`);return A`<div class="${`npm-readability-warning${s?` is-warn`:``}`}" role="note"><span class="npm-readability-warning-text"><strong>${n.toLocaleString(`en`)} of ${r.toLocaleString(`en`)} ${i}</strong> can be hard to review by reading them:</span><ul class="npm-extensions">${o.map(a)}</ul></div>`}function rF(e,t){return nF(YP(t),t.json.sources.length,`files`,n=>tF(e,t,n))}function iF(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=YP(e),o=n?t:void 0;return A`${GN(RN(e,t),void 0,o)}${XN(KN(e,t),aF(r),o)}${sk(e,t,a.get(t))}${ak(i.get(t))}`}var aF=e=>e===void 0||e?.details.npm&&!KO(e.details)?void 0:e&&KN(e.details,e.path);function oF(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=JO(e,t),o=aF(r),s=o===void 0?null:new Map(Ot(a).map(([e,t])=>[e,kt(e,t,o)]));return[...n.map(e=>({name:xP(e.type),severity:bP.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var sF=new WeakMap;function cF(e,t){let n=e&&t?.npm?lj(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!sF.has(n)){let t=new Map;for(let{host:r,places:i}of gF(n).get(`new-hosts`)?.hosts??[])for(let{path:n,line:a}of i)t.set(n,[...t.get(n)??[],{host:r,line:a,was:e.npm?.version??null}]);sF.set(n,t)}return sF.get(n)}function lF(e){if(!e?.length)return M;let t=e.length===1?`New host`:`New hosts`,{was:n}=e[0],r=`${n?`None of ${n}'s files`:`No file of the version compared with`} named ${e.length===1?`it`:`them`}`;return A`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">line ${t}</span>`)}</div><div class="compare-tip-note">${r}</div></div>`}">${t}</span>`}var uF={icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie)),alerts:e=>wP(e?.npm),alertTags:TP,newHosts:cF,newHostTag:lF,tag:(e,t,n)=>iF(e,t,!1,n),flags:(e,t,n)=>oF(e,t,[],n),warning(e,t){let{byPath:n}=YP(e),r=qP(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return nF(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=wt.get(e),n=a.get(e);return A`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},dF=new Map([[`malware`,`Malware`],[`deprecated`,`Deprecated`],[`publisher`,`Publisher`],[`provenance-lost`,`Provenance lost`],[`held-install-scripts`,`Install scripts`],[`held-non-registry-deps`,`Non-registry deps`],[`held-unused-deps`,`Unused deps`],[`held-runs-code`,`Runs code`],[`held-credentials`,`Credentials`],[`held-exfiltration`,`Exfiltration`],[`held-remote`,`Remote`],[`held-ip-lookup`,`IP lookup`],[`held-obfuscated`,`Obfuscated`],[`large-code`,`Large new code`],[`now-unreadable`,`Now unreadable`],[`binary-code`,`Binary code`],[`new-hosts`,`New hosts`],[`popularity`,`Few downloads`]]),fF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},pF=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function mF(e){let t=e?.score;if(!t)return M;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[dF.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${pF(a.days)}${a.tier===null?``:`, its package npm's ${IA(a.tier)} by downloads`}`:null,c=[`Risk ${n} of 100`,...o.length===0?[`Nothing found that calls for a look`]:o.map(([e,t])=>`${e}, ${t}`),...s?[s]:[]].join(`
172
- `);return A`<li><span class="${`npm-extension npm-risk-score ${fF[r]}`}" data-tooltip="${c}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?A`<span class="compare-tip-none">Nothing found that calls for a look</span>`:A`<div class="compare-tip-rows">${o.map(([e,t])=>A`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?A`<div class="compare-tip-note">${s}</div>`:M}</div>`}">${vP(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var hF=(e,t)=>[TF(t.get(`malware`)),EF(t.get(`deprecated`)),AF(e,t.get(`publisher`)),jF(e,t.get(`provenance-lost`)),MF(e,t.get(`held-install-scripts`)),...zF(e,t),...PF(e,t),FF(t.get(`new-hosts`)),BF(t.get(`too-new`))],gF=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function _F(e,t){if(!e||!t?.npm)return M;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=SF(n),i=lj(t.npm,e.npm?.version??`(empty)`),a=gF(i),o=[mF(i),...hF(n,a),VF(n,r),...KF(n,r,a.get(`malware`)),XF(t.npm.name,a.get(`popularity`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function vF(e){let{npm:t}=e,n=SF([t]),r=lj(t),i=gF(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[mF(r),...hF(a,i),VF([t],n),...KF([t],n,i.get(`malware`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function yF(e){let t=e?.files??[],n=t=>[`${t.was.toLocaleString(`en`)} \u2192 ${t.now.toLocaleString(`en`)} characters`,...t.rebuilt?[`its source map rebuilt with it`]:[],...e.major?[`in a major release`]:[]];return e?.severity===`critical`||!e?IF(`npm-compare-unreadable`,`Now unreadable`,t,n):LF(`${bF[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var bF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},xF=e=>[...Et.keys()].map(t=>{let n=e.get(`held-${ZN(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return LF(`${bF[n?.severity]} npm-held-file npm-files-${ZN(t)}`,t,r,e=>JN(e.found,i(e)),qN(r.map(e=>e.found)))});function SF(e){let t=dP(e.at(-1).name);return t.status===`loading`?null:e.map(({version:e})=>{let n=t.status===`ready`?t.versions.indexOf(e):-1;return n===-1?[]:t.advisories.filter(e=>e.affected.includes(n))})}var CF=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,wF=e=>sP.find(t=>e.some(e=>cP(e)===t));function TF(e){if(!e)return M;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return A`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
173
- `)}">Malware</span></li>`}function EF(e){return e?A`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${vM(e.message)}">Deprecated</span></li>`:M}var DF={critical:`is-from-known`,high:`is-to-unknown`},OF={known:`is-known`,maintainer:`is-maintainer`},kF={known:`one that publishes one of npm's most downloaded packages`,maintainer:`one of the package's maintainers`,new:`an unknown publisher, new to the package`,unknown:`an unknown publisher`};function AF([e,t],n){if(!n)return M;let{was:r,now:i,wasKnown:a,nowKnown:o,severity:s,major:c}=n,l=n.wasStanding??(a?`known`:`unknown`),u=n.nowStanding??(o?`known`:`unknown`),d=(e,t)=>A`<span class="${`npm-compare-account ${OF[t]??`is-unknown`}`}">~${e}</span>`,f=DF[s]??`is-to-known`,p=A`A different npm account published the open version,<br>${kF[u]},<br>after ${kF[l]}${c?A`<br>in a major release`:M}`;return A`<li><a class="${`npm-extension npm-compare-publisher ${f}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(i)}`}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Published by ~${r} (${e.version}), then ~${i} (${t.version})`}" .tooltipContent="${UF(`Published by`,[e,t],[d(r,l),d(i,u)],p)}"><span>Publisher</span><span class="npm-extension-count">${d(r,l)} → ${d(i,u)}</span></a></li>`}function jF([e,t],n){return n?A`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${UF(`npm provenance`,[e,t],[`Listed by npm`,A`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:M}function MF(e,t){if(!t)return M;let{scripts:n,flagged:r=[],was:i}=t,a=new Map(i??[]),o=i?e:e.slice(-1),s=i?[i,n]:[n],c=(e,t)=>e.length===0?A`<span class="compare-tip-none">None</span>`:HF(e.map(([e,n])=>[e,n,t.includes(e)])),l=n.map(([e])=>r.includes(e)?`${e} ${a.has(e)?`changed`:`added`}`:e).join(`, `);return A`<li><span class="npm-extension is-warn npm-compare-install" data-tooltip="${o.map(({version:e},t)=>`${e}: ${s[t].map(([e,t])=>`${e}: ${t}`).join(`; `)||`none`}`).join(` · `)}" .tooltipContent="${UF(`Install scripts`,o,s.map((e,t)=>c(e,t===s.length-1?r:[])))}"><span>${n.length===1?`Install script`:`Install scripts`}</span><span class="npm-extension-count">${l}</span></span></li>`}var NF=8;function PF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${bF[t.get(e)?.severity]} npm-held-file ${n}`;return[LF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>VN(e.found,e.added),oe(n(`held-runs-code`).map(e=>e.found)),null,!1),LF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>WN(e.found,e.added)),...xF(t),IF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Gr(e.bytes)),yF(t.get(`now-unreadable`)),LF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${YO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),IF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Gr(e.bytes)}, not UTF-8 or holding a NUL`)]}function FF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,NF).map(({path:e,line:t})=>`${e}, line ${t}`);return{path:e,at:t.length>n.length?[...n,`and ${(t.length-n.length).toLocaleString(`en`)} more files`]:n}}),[r]=t,i=t.length===1&&r.places.length===1?{path:r.path,line:r.line,query:r.host}:null;return LF(`is-warn npm-compare-hosts`,n.length===1?`New host`:`New hosts`,n,e=>e.at,n.length===1?n[0].path:null,i&&(e=>e.currentTarget.dispatchEvent(new CustomEvent(`compare-open-line`,{detail:i,bubbles:!0,composed:!0}))))}function IF(e,...t){return LF(`npm-compare-file ${e}`,...t)}function LF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return M;let s=n.slice(0,NF),c=n.length>s.length?`and ${(n.length-s.length).toLocaleString(`en`)} more`:null,l=e=>[r(e)].flat(),u=`${t}: ${[...s.map(e=>`${e.path} (${l(e).join(`; `)})`),...c?[c]:[]].join(`, `)}`,d=A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>A`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?A`<span class="compare-tip-lines">${l(e).map(e=>A`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?A`<div class="compare-tip-note">${c}</div>`:M}</div>`,f=A`${o?A`<span>${t}</span>`:A`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?A`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:M}`;return a?A`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:A`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var RF=(e,{created:t,gap:n,level:r,tier:i,installs:a,missing:o,was:s,severity:c})=>[c===`notice`?`no risk counted`:null,s===void 0?null:`was ${s}`,t?`new package, ${n>=0?`${eI(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${IA(i??1/0)}`:null,a?.scripts?`installs ${a.version}${a.latest&&a.latest!==a.version?` (its latest ${a.latest})`:``}${a.new?`, published since ${e[0].version}`:``}, running its install scripts`:null].filter(Boolean).join(`; `)||null;function zF(e,t){let{version:n}=e.at(-1),r=t.get(`held-non-registry-deps`)?.dependencies??[],i=t.get(`held-unused-deps`),a=i?.dependencies??[],o=t=>t.some(e=>e.added)?`; new since ${e[0].version}: ${t.filter(e=>e.added).map(({name:e})=>e).join(`, `)}`:``,s=[];if(r.length>0){let t=r.filter(e=>e.added).map(e=>`${e.name} was ${e.was??`none`}`);s.push(A`<li><span class="npm-extension is-warn npm-compare-registry" data-tooltip="${`From elsewhere than npm's registry: ${r.map(e=>`${e.name} ${e.now}`).join(`, `)}${o(r)}`}" .tooltipContent="${UF(`From elsewhere than npm's registry`,[e.at(-1)],[HF(r.map(e=>[e.name,e.now,e.added]))],t.length>0?`New since ${e[0].version}: ${t.join(`, `)}`:null)}"><span>Non-registry deps</span><span class="npm-extension-count">${r.length.toLocaleString(`en`)}</span></span></li>`)}if(a.length>0){let[t,r]=a.length===1?[`it`,`its`]:[`them`,`their`],c=e=>e.kind?`${e.name} (${e.kind})`:e.name;s.push(A`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:bF[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${RF(e,t)?` (${RF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${UF(`Nothing imports ${t}`,[e.at(-1)],[HF(a.map(t=>[[c(t),RF(e,t)].filter(Boolean).join(`, `),t.range,t.added]))],`No code file of ${n} names ${t} as an import would, nor does an install script; npm installs ${t} all the same, running ${r} install scripts`)}"><span>Unused deps</span><span class="npm-extension-count">${a.length.toLocaleString(`en`)}</span></span></li>`)}return s}function BF(e){return e?A`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Hj(e.published)}">${Bj(e.published)}</span></li>`:M}function VF(e,t){if(!t)return M;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return M;let i=n.length===0?`is-cleared`:`sev-${wF(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=UF(`Advisories affecting`,e,t.map(e=>e.length===0?A`<span class="compare-tip-none">none</span>`:A`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${sP.map(t=>[t,e.filter(e=>cP(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>A`<span class="${`compare-tip-severity sev-${e}`}">${t} ${e}</span>`)}</span>`),e.length>1?`${a} new \xB7 ${o} fixed`:null),c=`Advisories affecting ${e.map(({version:e},n)=>`${e}: ${t[n].length}`).join(`, `)}`,l=A`<span>Advisories</span><span class="npm-extension-count">${CF(r.length,n.length)}</span>`;return e.length>1?A`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>WF(e,t)}">${l}</button></li>`:A`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var HF=e=>A`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?A`<span class="compare-tip-none">${e}: none</span>`:A`<span class="${n?`is-flagged`:M}">${e}: <code>${t}</code></span>`)}</span>`,UF=(e,t,n,r=null)=>A`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>A`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?A`<div class="compare-tip-note">${r}</div>`:M}</div>`;function WF([e,t],[n,r]){let i=VP(),a=[[`new`,`New in ${t.version}`,r.filter(e=>!n.includes(e))],[`kept`,`Still affecting ${t.version}`,r.filter(e=>n.includes(e))],[`fixed`,`Fixed in ${t.version}`,n.filter(e=>!r.includes(e))]].filter(([,,e])=>e.length>0).map(([e,t,n])=>({status:e,heading:t,rows:n.map(e=>HP(e,i))}));ge({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function GF(e,t,n){if(e===null||e>=n)return!1;let r=wF(t);return r===void 0||sP.indexOf(e<=25?`critical`:`high`)<sP.indexOf(r)}function KF(e,t,n=null){let r=e.at(-1),i=e.map(e=>mP({npm:e})?.scores??null);return!i.at(-1)||n?[]:hP.flatMap(([n,a,o,s])=>{let c=i.map(e=>e?Math.round(e[n]*100):null),l=c.at(-1),u=e.length>1?c[0]:l;return l===null||l>=o||n===`vulnerability`&&!(t&&GF(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=gP?[]:[A`<li><a class="${`npm-extension npm-socket-score ${_P(l,s)}`}" href="${pP({npm:r})}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Socket's ${a.toLowerCase()} score: ${e.map(({version:e},t)=>`${c[t]??`none`} for ${e}`).join(`, `)}`}" .tooltipContent="${UF(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?A`<span class="compare-tip-none">none</span>`:A`<span class="${`compare-tip-score ${_P(e,s)}`}">${vP(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${vP(l)}<span>${a}</span><span class="npm-extension-count">${CF(u,l)}</span></a></li>`]})}var qF={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function JF({known:e,scope:t,account:n}={}){return e?n?`Published with provenance in ${t}, the scope of ~${n}, an account that publishes one of npm's most downloaded packages`:t?`Published with provenance in ${t}, the scope of one of npm's most downloaded packages, which only its owner publishes in`:`Published by an account that publishes one of npm's most downloaded packages`:null}function YF(e,t=null,n=!1){let{tier:r,level:i,severity:a}=e,o=t?.total.toLocaleString(`en`),s=n?`npm-extension npm-popularity npm-downloads-tier ${qF[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?JF(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return A`<span class="${s}" data-tooltip="${l||M}" .tooltipContent="${t||c?A`${t?A`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:M}${c?A`<div class="compare-tip-note">${c}</div>`:M}`:null}">${IA(r??1/0)}</span>`}function XF(e,t){let n=uP(e);return t?A`<li>${YF(t,n.status===`ready`&&n.downloads?BA(n.downloads):null,!0)}</li>`:M}var ZF=A`<span class="npm-downloads-tier is-unpopular" data-tooltip="No downloads counted by npm, which counts a package's from the day after it was first published">unpopular</span>`,QF=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),$F={minute:QF(`minute`),hour:QF(`hour`),day:QF(`day`),month:QF(`month`),year:QF(`year`)};function eI(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?$F.minute.format(t):t<1440?$F.hour.format(Math.floor(t/60)):n<60?$F.day.format(n):n<730?$F.month.format(Math.floor(n/30.44)):$F.year.format(Math.floor(n/365.25))}function tI({compared:e},{created:t,gap:n}){if(!t)return M;let[r,i]=e,a=eI(Math.abs(n)),o=[`First published on ${Vj(t)}`,`${a} ${n>=0?`before`:`after`} ${i.version} was`],s=`npm had no package by its name when ${n>=0?r.version:`either version`} was published`;return A`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>A`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function nI(e,t){let n=cj(e.flags);if(t!==`added`||!e.level)return[n,M];let r=e.month?VA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?ZF:YF(e,r),e.compared?tI(e,e):M]}function rI(e,t){let{counts:n}=YP(t),r=GP.filter(e=>n.has(e));return r.length===0?M:A`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>tF(e,t,n))}</ul>`}function iI(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=/\.d\.[cm]?ts$/iu.exec(t);if(n&&n.index>0)return n[0].toLowerCase();let r=t.lastIndexOf(`.`);return r>0?t.slice(r).toLowerCase():``}function aI(e,t,n=new Map){let r=new Map;for(let i of e){let e=iI(i),a=r.get(e)??{extension:e,files:0,bytes:0,lines:null};a.files++,a.bytes+=t.get(i)??0,n.has(i)&&(a.lines=(a.lines??0)+n.get(i)),r.set(e,a)}return[...r.values()].toSorted((e,t)=>t.files-e.files||e.extension.localeCompare(t.extension))}var oI=/^(?:package\.json|readme(?:\.md)?)$/iu,sI=e=>oI.test(e)||KA.test(e);function cI(e,t,n=new Map){let r=e.filter(sI),i=new Set(e.filter(e=>!sI(e)).map(iI)),{files:a,bytes:o,lines:s}=aI(r,t,n).reduce((e,t)=>({files:e.files+t.files,bytes:e.bytes+t.bytes,lines:t.lines===null?e.lines:(e.lines??0)+t.lines}),{files:0,bytes:0,lines:null});return{package:r.length>0?{files:a,bytes:o,lines:s}:null,extensions:aI(e,t,n).filter(e=>i.has(e.extension))}}var lI=({bytes:e,lines:t})=>t===null?Gr(e):`${Gr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function uI(e,t){let{types:n,extensions:r}=YP(t);return!n.package&&n.extensions.length===0?M:A`<ul class="npm-extensions" aria-label="File types">${n.package?eF(e,{id:`package`,label:`Package`,keeps:sI},A`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${lI(n.package)}`}):M} ${n.extensions.map(t=>eF(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},A`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:lI(t)}))}</ul>`}function dI(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,rI(e,n)],[`types`,`File types`,uI(e,n)],[`socket`,`Socket`,yP(e)]].filter(([,,e])=>e!==M);return r.length===0?M:A`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>A`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function fI(e,t){return e.size===0?M:fA({title:`Binary files`,count:e.size,list:!0,body:A`<ul class="bundles-sources-list">${[...e].map(e=>A`<li><div class="bundles-source-row is-resource">${qe(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?A`<span class="bundles-source-size">${Gr(t.get(e))}</span>`:M}</div></li>`)}</ul>`})}var pI=({severity:e})=>ce.indexOf(e),mI=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function hI(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>pI(e)-pI(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(pI(e.flags[0])-pI(t.flags[0])||t.flags.length-e.flags.length||mI(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function gI(e){return{...Uj(e),files:uF,badges:_F,dependencyTags:nI,reviewVerdictLimit:EP}}var _I=/^[a-f\d]{40}$/iu,vI={removed:[],added:[],changed:[]},yI=e=>e.kind===`commit`&&_I.test(e.name)?e.name.toLowerCase():iN(e);function bI(e,t,n){return mN({revision:_I.test(t)?YM(e,t)??{kind:`commit`,name:t}:t.startsWith(`heads/`)?{kind:`branch`,name:t.slice(6)}:t.startsWith(`tags/`)?{kind:`tag`,name:t.slice(5)}:{kind:`commit`,name:t},commit:t},n)}var xI=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function SI(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=qM(t),o=mN(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?xI(o,r):xI(bI(t,n,a),n),async load(e){let n=await Sb(t,e,i,{signal:ev()});if(n?.repoId!==t||n.path!==i||!_I.test(n.commit??``)||_I.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return _I.test(e)||XM(t,r,bI(t,e,null)),{...eN(ZM({...n,commit:r},YM(t,r)),n),compareId:r}},open:(e,r,a)=>nN({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},..._I.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:bI(t,e,null)}}),dependencies:()=>vI,files:{icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie))},select:(e,n)=>A`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:bI(t,e.value,a):null}" @revision-pick="${t=>e.pick(yI(t.detail))}"></repository-revision-pick>`}}var CI=class extends ha{static properties={refs:{attribute:!1},revision:{attribute:!1},label:{},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.refs=null,this.revision=null,this.label=``,this._edit=null,this._shownKey=null}willUpdate(){let e=JSON.stringify(this.revision);e!==this._shownKey&&(this._shownKey=e,this._edit=null)}changed({detail:e}){let t=gN(e);this._edit=t??{kind:e.kind,name:e.name},t&&this.dispatchEvent(new CustomEvent(`revision-pick`,{detail:t}))}render(){let e=this._edit??this.revision??{kind:`branch`,name:``};return A`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>lr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,CI);var wI=500,TI=14;function EI(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=hn(e);return n&&(t.triage=n),typeof e.fix==`string`&&e.fix&&(t.fix=e.fix),typeof e.flagged==`boolean`&&(t.flagged=e.flagged),Object.keys(t).length>0?t:null}function DI(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function OI(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var kI=e=>new TextEncoder().encode(e).length,AI=new Map,jI=new Set,MI=(e,t=F.currentManagedTeam)=>JSON.stringify([t,e]),NI=new Map,PI=null,FI=Promise.resolve();function II(){let e=new Set;for(let t of F.reports)for(let n of t.groups)for(let t of n)typeof t.id==`string`&&t.id&&e.add(t.id);return e}function LI(){return Array.isArray(F.managedReports)&&F.managedReports.length>0?F.managedReports:F.managedReport==null?[]:[F.managedReport]}function RI(e){let t=new Set,n=!1;for(let r of F.reports)if(r._managedReportId===e){n=!0;for(let e of r.groups??[])for(let n of e)typeof n.id==`string`&&n.id&&t.add(n.id)}return n||F.reports.length===0?t:new Set(II())}function zI(e){let t=LI();for(let n of F.reports)if(n._managedReportId!=null&&(n.groups??[]).some(t=>t.some(t=>t.id===e))){let e=t.find(e=>e.id===n._managedReportId);if(e)return e}return t[0]??null}function BI(){let e=F.managedSession;return F.serverMode===`managed`&&F.localMode!==!0&&e!=null&&tt(e.role,`triage`)}function VI(e){return e===403&&F.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function HI(e,t){let n=NI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},NI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function UI(e,t,n){if(!BI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=TI;for(;i<r.length&&s<200;){let t=r[i],n=kI(`${JSON.stringify(t)}:${JSON.stringify(e.changes.get(t))},`);if(s>0&&c+n>262144)break;o[t]=e.changes.get(t),c+=n,s++,i++}let l=await px(e.report.id,o,F.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!VI(l)){HI(e,r.slice(a));return}u||console.warn(`managed: the server refused a triage batch`,e.report.id,l,Object.keys(o)),!u&&l===403&&F.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=AI.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),AI.set(n,{key:DI(r),fix:a})}}}function WI(){PI!=null&&(clearTimeout(PI),PI=null);let e=[...NI.values()];if(NI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)FI=FI.then(()=>UI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});FI=FI.finally(()=>{for(let e of t)Yv(e);for(let e of n)ZI(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function GI(){if(LI().length!==0&&BI()&&jI.size!==0){for(let e of II()){let t=EI(F.triage.get(e)),n=DI(t);if((AI.get(e)?.key??``)===n)continue;if(!OI(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),AI.set(e,{key:n,fix:AI.get(e)?.fix??``});continue}let r=zI(e);if(r==null||!jI.has(MI(r.id)))continue;let i=F.currentManagedTeam,a=MI(r.id,i),o=NI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},NI.set(a,o)),o.changes.set(e,t)}NI.size!==0&&(PI!=null&&clearTimeout(PI),PI=setTimeout(WI,wI))}}var KI=!1;function qI(){KI||!BI()||(KI=!0,_d(GI))}function JI(){Eu(),F.managedComments?.clear(),F.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),PI!=null&&(clearTimeout(PI),PI=null),NI.clear(),jI.clear(),AI.clear()}async function YI(e,{renderView:t=!0,signal:n,readAnnotations:r}={}){let i=F.reports,a=F.currentManagedTeam,o=F.managedSession?.role,s=F.managedSession?.id,c=()=>!n?.aborted&&F.serverMode===`managed`&&F.localMode!==!0&&F.managedSession!=null&&F.managedSession.id===s&&F.managedSession.role===o&&F.reports===i&&F.currentManagedTeam===a&&LI().some(t=>t.id===e);if(!c()||(jI.delete(MI(e)),WI(),!await XI(n)||!c()))return!1;let l=new Map(F.managedIssues),u=r?await r(e):null,d=r?u?.entries:await cx(e,a,{signal:n});if(d==null||!c())return!1;let f=!1,p=RI(e),m=u&&rg(p,u.issues,l);for(let e of p){if(!Object.hasOwn(d,e)){AI.delete(e);continue}let t=EI(d[e]);AI.set(e,{key:DI(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(f=!0)}if(jI.add(MI(e)),u&&Xv(a,p,l),m&&!f&&t&&X(),f){if(await kd(),!c())return!1;t&&X()}return GI(),!0}function XI(e){return e?e.aborted?Promise.resolve(!1):new Promise(t=>{let n=n=>{e.removeEventListener(`abort`,r),t(n)},r=()=>n(!1);e.addEventListener(`abort`,r,{once:!0}),FI.then(()=>n(!0),()=>n(!1))}):FI.then(()=>!0)}async function ZI(e,{signal:t,readAnnotations:n}={}){let r=F.reports,i=F.currentManagedTeam,a=F.managedSession?.role,o=F.managedSession?.id,s=()=>!t?.aborted&&F.serverMode===`managed`&&!F.localMode&&F.reports===r&&F.currentManagedTeam===i&&F.managedSession?.id===o&&F.managedSession?.role===a&&jI.has(MI(e,i));if(!s()||(WI(),!await XI(t)||!s()))return!1;let c=RI(e),l=new Map([...c].map(e=>[e,AI.get(e)])),u=new Map(F.managedIssues),d=n?await n(e):null,f=n?d?.entries:await cx(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&rg(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=EI(F.triage.get(e));if(AI.get(e)!==t||DI(n)!==(t?.key??``))continue;let r=EI(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),AI.set(e,{key:DI(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&Yv(i),d&&Xv(i,c,u),p&&!m&&X(),m){if(await kd(),!s())return!1;X()}return!0}function QI(e,t){if(!e)return;let n=F.currentManagedReport;if(n!=null&&(F.managedReports.length!==1||F.managedReports[0].id!==n))return;let r=null,i,a=()=>i??=(async()=>{if(WI(),!await XI(t)||t?.aborted)return null;let i=await sx(e,{signal:t,reportId:n});return r=i?.revision??null,i})();return Object.assign(async e=>(await a())?.(e)??null,{start:()=>{a().catch(()=>{})},revision:()=>r})}async function $I(e){let t=await b(e),n=await om(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await Ve({tryPassword:e=>ee(t,e)}),!r)return null}else r=te(n.text);let i=await rm(r,{conflictResolver:async(t,n)=>{try{return await SS(t,n,{title:`Triage conflicts on import`,intro:`disagree with your local triage on`,trailingNote:`Reports and non-conflicting triage were already merged; pick which side to keep for these disagreements.`,importedSideLabel:`Apply imported`})}catch{let n=t.length;return alert(`Imported ${e.name}. Kept your local triage on ${n} conflicting entr${n===1?`y`:`ies`} because another dialog is open \u2014 re-drop the file to pick again.`),null}}});return(F.currentFile||F.currentWorkspace)&&X(),{kind:`workspace`,workspace:i}}var eL=`deepview.passkey.firstImportPrompted`;function tL(){try{return localStorage.getItem(eL)===`1`}catch{return!1}}function nL(){try{localStorage.setItem(eL,`1`)}catch{}}async function rL(){if(!(xo()||!Co()||tL())){if(!confirm(`Encrypt your DeepView data with a passkey?
174
-
175
- Your triage notes, workspaces, and report files are stored on this device. Encryption locks them under a passkey (TouchID, Windows Hello, security key) so scripts running here can't read them without the passkey.
176
-
177
- You can change this anytime from the lock icon in the sidebar header.`)){nL();return}await be(),xo()&&nL()}}var iL=null,aL=()=>Promise.resolve(!0);function oL(e){aL=e}function sL(){iL?.controller.abort(),iL=null}var cL=()=>iL?.live===!0&&iL.current(),lL=6e4,uL=null,dL=!1;function fL(){clearTimeout(uL),uL=null,globalThis.document?.hidden&&iL&&(uL=setTimeout(()=>{uL=null,globalThis.document?.hidden&&iL&&(sL(),dL=!0)},lL))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){fL();return}clearTimeout(uL),uL=null,dL&&(dL=!1,hL())});function pL(e,t,n){let{promise:r,resolve:i}=Promise.withResolvers(),a=!1,o=e=>{clearTimeout(l),t.removeEventListener(`abort`,s),i(e)},s=()=>o(!1),c=()=>(!a&&!t.aborted&&(a=!0,clearTimeout(l),Promise.resolve().then(()=>n()&&e(t)).then(e=>o(!!e&&n()),()=>o(!1))),r),l=setTimeout(c,1e3);return t.addEventListener(`abort`,s,{once:!0}),t.aborted&&s(),{promise:r,start:c}}function mL(e,t){return t.aborted?Promise.resolve(!1):new Promise(n=>{let r=e=>{t.removeEventListener(`abort`,i),n(e)},i=()=>r(!1);t.addEventListener(`abort`,i,{once:!0}),e.then(r,()=>r(!1))})}function hL({catalogOnly:e=!1,loading:t=!1,hydrate:n,annotations:r}={}){if(dL&&globalThis.document?.hidden&&!n)return;let i=F.managedSession,a=ev(),o=[`findings`,`files`,`links`].includes(F.currentView),s=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView),c=s||t||o&&(!e||iL?.teamId===F.currentManagedTeam&&!iL.signal.aborted)?F.currentManagedTeam:null,l=!c&&!n&&!i?.publicShare&&iL?.teamId&&cL()&&F.managedTeams?.some(e=>e.id===iL.teamId)?iL:null,u=l?l.teamId:c;if(!I()||!i||i.role===`none`||i.publicShare&&!u)return sL(),n?Promise.resolve(!1):void 0;if(l)return;let d=F.managedTeams?.find(e=>e.id===u)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,f=JSON.stringify([u,d,i.id,i.role,i.csrfToken,!!i.publicShare]);if(iL?.key!==f||iL.signal.aborted){sL();let e=new AbortController,t={key:f,controller:e,signal:e.signal,teamId:u,reportId:d,version:0,revision:null,target:null};t.current=(e=t.signal)=>!e.aborted&&!t.signal.aborted&&iL===t&&I()&&F.managedSession?.id===i.id&&F.managedSession?.role===i.role&&F.managedSession?.csrfToken===i.csrfToken&&!!F.managedSession?.publicShare==!!i.publicShare,iL=t,dL=!1,vL(t),globalThis.document?.hidden&&fL()}let p=iL;if(e||s||t||!u)return p.target?.ready;let m=Ns(F.reports),h=p.target;if(h?.view===a&&h.reports===m&&!h.signal.aborted)return h.ready;h?.controller.abort();let g=new AbortController,_=AbortSignal.any([g.signal,p.signal,a]),v=h?.reports===m,y={controller:g,signal:_,view:a,reports:m,version:v?h.version:0,revision:v?h.revision:null};return p.target=y,y.current=()=>p.current()&&!_.aborted&&p.target===y&&F.currentManagedTeam===u&&Ns(F.reports)===m,y.hydration=n?pL(async e=>{let t=r?r.subscription===p?r.version:0:p.version,i=r?.read??QI(p.teamId,e),a=await n(e,i);return a&&y.current()&&(y.version=t,y.revision=i?.revision()??null,y.version<p.version&&_L(p,y)),a},_,y.current):null,y.ready=y.hydration?.promise,y.hydration&&r?y.hydration.start():(p.version||p.finished)&&(y.hydration?y.hydration.start():y.version<p.version&&_L(p,y)),y.ready}function gL(e){hL({loading:!0});let t=QI(F.currentManagedTeam,e);if(t)return t.start(),{read:t,subscription:iL,version:iL?.version??0}}function _L(e,t){yL(e,t,e.signal).then(e=>(!e&&t.current()&&(sL(),hL()),e))}function vL(e){let{signal:t,controller:n,current:r}=e;wx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(t,n)=>{let i=()=>r(t);if(!i())return!1;let a=await aL(i,t,n)&&i();return a&&(e.live=!0),a},onUpdate:(t,n=null)=>r(t)?(e.revision=n,e.version++,yL(e,e.target,t)):!1,onClose:()=>{r()&&document.dispatchEvent(new Event(`managed-feed-closed`)),n.abort()},onDrop:()=>{e.live=!1}}).catch(e=>{r()&&console.warn(`managed: team feed failed`,e)}).finally(()=>{e.finished=!0,r()&&e.target?.hydration?.start()})}async function yL(e,t,n){if(!e.current(n))return!1;if(!t?.current())return!0;if(!t.refresh||t.refresh.controller.signal.aborted){let n=new AbortController,r={controller:n,promise:null},i=AbortSignal.any([n.signal,t.signal]);t.refresh=r,r.promise=bL(e,t,i).catch(()=>!1).finally(()=>{t.refresh===r&&(t.refresh=null)})}let r=t.refresh,i=AbortSignal.any([n,t.signal,r.controller.signal]),a=()=>r.controller.abort();n.addEventListener(`abort`,a,{once:!0});let o;try{o=await mL(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?yL(e,t,n):!0:!1:!0:!1}async function bL(e,t,n){if(t.hydration&&!await mL(t.hydration.start(),n))return!1;for(;t.current()&&!n.aborted&&t.version<e.version;){let r=e.version;if(e.revision!==null&&e.revision===t.revision){t.version=r;continue}let i=QI(e.teamId,n),a=F.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[ZI(e.id,{signal:n,readAnnotations:i}),iw(e.id,{signal:n,readAnnotations:i})]))).every(Boolean)||!t.current()||n.aborted)return!1;t.version=r,t.revision=i?.revision()??null}return!n.aborted&&t.current()}var xL=Object.freeze([`description`,`evidence`,`impact`,`reproduction`,`recommendation`,`confidenceReason`,`revalidateVerdict`,`revalidateRecommendation`,`fileHash`,`exportName`,`methodName`]);new Set(xL);var SL=null;function CL(){return SL===null||SL.reports!==Ns(F.reports)||SL.ok?null:SL.done?`failed`:`loading`}function wL(){return SL!==null&&SL.reports===Ns(F.reports)?SL.ready:Promise.resolve(!0)}function TL(e,t,n){let r=Ns(F.reports),i=SL={reports:r,done:!1,ok:!1,ready:null};i.ready=(async()=>{let a=await Promise.resolve(t).catch(()=>null);if(i.done=!0,Ns(F.reports)!==r)return!1;let o=a&&EL(r,a);return o?(o(),i.ok=!0,Ou(e,a),Zg(),F.revalidateConflicts=t_()):Fx(`Could not load finding details. Open the team again to retry.`),n(),i.ok})()}function EL(e,t){let n=new Map(t.map(e=>[e.id,e.data])),r=[];for(let t of e){let e=Si(n.get(t._managedReportId));if(!e)return null;let i=e.map(e=>Array.isArray(e)?e:[e]).filter(e=>e.length>0);if(i.length!==t.groups.length)return null;for(let[e,n]of t.groups.entries()){if(i[e].length!==n.length)return null;for(let[t,a]of n.entries()){let n=i[e][t];if(n?.id!==a.id)return null;r.push([a,n])}}}return()=>{for(let[e,t]of r){for(let n of xL)Object.hasOwn(t,n)&&(e[n]=t[n]);Fn(e)}}}function DL(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Li(e)===`revalidation`);return t.length>0?t:e}function OL(e){let t=e.map(DL).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Li(e)===``))}function kL(e,t=()=>[],{countFindings:n=!1}={}){let{groups:r,conflicts:i}=dg(e,{hideRuledOut:!0}),a=bg(r,t,DL),o=n?{appMode:!1,findings:a.length}:{appMode:!1};return i.size>0||!OL(a)&&!Cr(a,{tabs:DL,kindOf:Li,severityMode:`corrected`})?o:{appMode:!0,appFindings:a.filter(e=>DL(e).some(e=>e.isApp)).length}}var AL=null,jL=0;ad(()=>{jL++});function ML(e,t,n,{complete:r,isCurrent:i}){AL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function NL(e){return!AL||AL.id!==e.id||!AL.isCurrent()||AL.membership!==JSON.stringify(e.reports.toSorted())||!Em(e,AL.token)?null:(AL.linksRevision!==jL&&(AL.metadata=AL.complete?kL(AL.reports,ud):{appMode:!1},AL.linksRevision=jL),AL.metadata)}async function PL(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await pd(),!i()))return;let o=await Am(e,n);if(!o||!i())return;let s=r?kL(t,ud):{appMode:!1};await jm(e,s,o)&&i()&&await a(s)}var FL=`deepview.lastFile`;function IL(e,t=`overview`,{push:n=!1}={}){if(I()){let r=F.bundles.find(t=>t.integrity===e),i=r?.npm?yj(r,t,Ux(F,t)):r?.repository?tN(r,t,Ux(F,t)):Bx(F.managedTeams,r,F.currentManagedTeam,t,Ux(F,t),F.bundles);n?G.pushRoute(i):G.replaceRoute(i);return}Wa(FL,`b:${e}${t&&t!==`overview`&&$r.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==W();function LL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function RL(e){return await LL(),e!==null&&J(e)?!1:(X(),dq(F.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function zL(){w.selected=null,w.focusedPkg=null,w.layoutCache=null,w.solo=null,w.hidden.clear(),w.pathFilter=``,ar()}function BL(e){for(let t of V.openSessions)t&&!e.has(t.workspaceId)&&(V.closeSession(t.workspaceId),Hh(t.workspaceId))}function VL(){z.classList.remove(`active`),z.replaceChildren(),$m.classList.remove(`hidden`),document.title=`DeepView`}function HL(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function UL(e){let t=WL(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function WL(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function GL({name:e,content:t,existingNames:n}){if(!n.has(e))return await Wc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Kc(e)}catch(r){if(!HL(r))throw r;return await Wc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>yh(t.id,e)),a=await At({name:e,workspaceNames:i.map(e=>e.name),existingNames:n});if(a.action===`cancel`)return null;if(a.action===`rename`){let e=a.newName;return await Wc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await Lh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Wc(e,t),i.length>0&&await qL(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function KL(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await ac(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function qL(e,t){let n;try{n=await qc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await Vh(r.id);let t=await Ih(r.id,e,n);t&&t.ok===!1&&console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}): ${t.reason??`unknown`}`)}catch(t){console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}):`,t)}}async function JL(e){if(e=[...e],e.length===0||(await NX(),I())||(await rL(),I()))return;let t=null,n=null,r=new Set,i=new Set(await Uc()),a=[];for(let o of e)try{let e=WL(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await $I(o);if(e?.kind===`reports`)for(let n of e.reports){if(typeof n?.name!=`string`||!n.name||typeof n?.content!=`string`)continue;let e=Uu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await GL({name:n.name,content:n.content,existingNames:i});r&&(Vu(r.name,e.count,e.source),await KL(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Uc();i.clear();for(let t of e)i.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(UL(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await fl(o.name,e);n=t,r.add(t);continue}let s=await o.text(),c=Ie(s,o.name);if(c)for(let e of c){let{count:n,source:r}=Uu(e.content),a=await GL({...e,existingNames:i});a&&(Vu(a.name,n,r),t={name:a.name,content:a.content})}else if(Ci(s,e)===`codex`){let e=bi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Uu(a),c=await GL({name:e,content:a,existingNames:i});c&&(Vu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Uu(s);if(!e.recognized)throw Error(`not a recognized DeepView, DeepSec, Piolium, Claude Security, Codex, or Markdown (generic) report, and not a links file`);let n=await GL({name:o.name,content:s,existingNames:i});if(!n)continue;Vu(n.name,e.count,e.source),t={name:n.name,content:n.content}}}catch(e){alert(`Failed to load ${o.name}: ${e.message}`)}if(a.length>0){let e=a.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${a.join(`, `)}`)}await Q(),t?await YL(t.name,t.content):n&&(oq(n),IL(n,F.bundleDetailsTab),X(),await Q(),fq(n)),dq(r).catch(()=>{})}async function YL(e,t,{workspaceId:n}={}){if(I())return;let r=tv();F.currentManagedTeam=null,F.currentManagedReport=null,F.currentReportWorkspace=KC(e,n);let i=new Set(R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(BL(i),F.reports=[],Zg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=e,F.currentWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),F.repoUrl=Qs(e),F.repoEditing=!1,zL(),Wa(FL,zd(e,F.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Kc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Iv()&&!J(r)){await YL(e);return}J(r)||(F.currentFile=null,await Q());return}if(HL(t)){let t=R().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&yh(t.id,e));if(t)try{if(await Vh(t.id),J(r))return;let n=await Ae({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(J(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await YL(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),J(r))return}J(r)||(F.currentFile=null,await Q());return}alert(`Failed to read ${e}: ${t.message}`),F.currentFile=null,await Q();return}if(J(r))return}let a=f(t);if(a?(F.currentLinks={name:e,...a},F.currentView=`links`,X()):await sR(e,t,r),!J(r)){for(let e of i)V.openSession(e),V.refreshSession(e),Vh(e);return await Q(),!0}}function XL(e){return F.managedSession?.role===`admin`&&QL({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function ZL(e,t,{history:n=!0,tab:r=F.teamDependenciesTab}={}){let i=I();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?F.managedTeams.find(t=>t.id===e):R().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!oi.has(r)))return!1;if(i&&n&&G.active)return G.navigate(mi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},F.managedTeams));t===`dependencies`&&(F.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=tv();return BL(new Set),nR({forgetLastView:!1}),F.currentWorkspace=s,F.currentManagedTeam=i?e:null,F.currentView=a,i&&(F.bundles=Gx(F.managedTeams)),z.classList.add(`active`),$m.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Wa(FL,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function QL(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!I()||!e||!Array.isArray(e.reports))return!1;if(n&&G.active)return G.navigate(mi({view:`findings`,teamId:e.id,reportId:t},F.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=tv(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=ev(),s=t===null?null:e.reports.find(e=>e.id===t);BL(new Set),gb(),OK(t===null&&!r?e.id:null),z.classList.add(`active`),$m.classList.add(`hidden`),F.currentView=`findings`,F.reports=[],Zg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=s?.filename??null,F.currentWorkspace=t===null?`managed-team:${e.id}`:null,F.currentManagedTeam=e.id,F.currentManagedReport=t,F.managedReports=s&&!r&&s.analyzer!==d?[{id:s.id,filename:s.filename}]:[],F.managedComments.clear(),F.managedIssues.clear(),F.managedReport=null;let c=r?void 0:gL(o),l=r?null:Sx(e.id,{reportId:a?.id??null});Q();let u;try{u=r?await(await K()).fetchManagedLinkWorkspace(t,{signal:o}):await Sx(e.id,{reportId:a?.id??null,lite:!0})}catch(e){return J(i)||await $L(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(u===null||t!==null&&!u.some(e=>e.id===t))return await $L(`Could not load all team reports. Please try again.`),!1;let f=u.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),p=u.filter(e=>t===null||f||e.id===t),m=p.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));F.currentFile=t===null?null:u.find(e=>e.id===t).filename,Ou(e.id,u),F.managedReports=p.map(e=>({id:e.id,filename:e.filename})),F.managedReport=t===null?null:F.managedReports[0]??null,F.currentReportWorkspace=null,F.currentLinks=null,F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.repoUrl=``,F.repoEditing=!1,zL();for(let e of m)if(await sR(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo}),J(i))return!1;if(l&&TL(e.id,l,()=>X()),m.length>0){let e=async(e,t=QI(F.currentManagedTeam,e))=>(await Promise.all(m.flatMap(n=>[YI(n.id,{renderView:!1,signal:e,readAnnotations:t}),iw(n.id,{signal:e,readAnnotations:t})]))).every(Boolean)&&!e.aborted&&!J(i),t=r?await e(ev()):await hL({hydrate:e,annotations:f?void 0:c});if(J(i))return!1;if(!t)return await $L(`Could not load report annotations. Open the team or report again to retry.`),!1}if(f){if(F.currentView=`links`,F.currentLinks={name:f.filename,groups:f.data.links,skipped:0,...r?{managedId:t}:{}},!await RL(i))return!1}else if(m.length===0)kK();else if(D_(r_()),!await RL(i))return!1;return hL(),await Q(),!0}async function $L(e){await iR({history:!1}),Fx(e)}async function eR(e){if(I())return;F.currentManagedTeam=null,F.currentManagedReport=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear();let t=R().find(t=>t.id===e);if(!t)return;let n=tv();BL(new Set([e])),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),Br(`workspace`,e),F.reports=[],Zg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=null,F.currentWorkspace=e,F.currentReportWorkspace=null,F.currentLinks=null,F.repoUrl=``,F.repoEditing=!1,zL(),Wa(FL,`ws:${e}`).catch(()=>{}),t.reports.length===0&&VL();let r=await Am(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Kc(e).catch(()=>null)),o=0;for(let e=0;e<t.reports.length;e++){let r=await a[e];if(J(n))return;if(r===null){i=!1;continue}if(!f(r)&&(await sR(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&VL(),i&&km(t)?.appMode&&(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,qK());let s=F.reports.slice();ML(t,s,r,{complete:i,isCurrent:()=>!J(n)&&F.currentWorkspace===e&&[`findings`,`files`].includes(F.currentView)});let c=Q().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(D_(r_()),!await RL(n))return}else kK();let l=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`],u=l.map(e=>F[e]);PL(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||F.currentWorkspace!==e||![`findings`,`files`].includes(F.currentView)||l.some((e,t)=>F[e]!==u[t])||(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,qK(),D_(r_()),await RL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),V.openSession(e),V.refreshSession(e),Vh(e),await c}async function tR({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!F.currentFile)return;let n=tv(),r=F.currentFile;Hu(r),nc(r,``);for(let e of t)try{let t=await zh(e,r);if(J(n))return;t&&t.ok===!1&&t.reason!==`not-found`&&console.warn(`Failed to delete '${r}' from workspace ${e} remote: ${t.reason}`)}catch(t){console.warn(`Failed to delete '${r}' from workspace ${e} remote:`,t)}if(await Xc(r),!J(n)&&(await gu(r,null),!J(n))){if(e===`wipe`){try{await Rp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(nR(),await Q())}}function nR({forgetLastView:e=!0}={}){jT(),F.currentManagedTeam=null,F.currentManagedReport=null,F.currentFile=null,F.currentWorkspace=null,F.currentReportWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.bundleDetails=null,F.bundleDetailsTab=`overview`,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null,F.selectedPackage=null,F.selectedPackageVersion=null,F.packageDetailsTab=`overview`,F.packageSlideTriage=null,F.packageSlideTransient=!1,F.expandedPackages.clear(),F.selectedRepository=null,F.repositoryDetailsTab=`overview`,F.repositorySlideTriage=null,F.repositorySlideTransient=!1,F.filesSelectedFile=null,F.tableSelectedGid=null,F.kanbanPopoverGid=null,F.kanbanExpandedColumn=null,F.focusGid=null,F.activeTabByGroup.clear(),F.reports=[],Zg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.repoUrl=``,F.repoEditing=!1,F.shownTriage=null,F.currentView=`findings`,zL(),e&&Ga(FL),VL()}function rR(e){tv(),BL(new Set),nR(e)}async function iR({history:e=!0}={}){return e&&I()&&G.active?G.navigate({view:`home`}):(tv(),BL(new Set),nR({forgetLastView:!I()}),await Q(),!0)}async function aR({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!F.selectedBundle)return;let t=tv(),n=F.selectedBundle;for(let r of e)try{let e=await Bh(r,n);if(J(t))return;e&&e.ok===!1&&e.reason!==`not-found`&&console.warn(`Failed to delete bundle from workspace ${r} remote: ${e.reason}`)}catch(e){console.warn(`Failed to delete bundle from workspace ${r} remote:`,e)}if(await pl(n),J(t)||(await yu(n,null),J(t)))return;F.selectedBundle=null,F.selectedBundleWorkspace=null,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null;let r=Ua(FL);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ga(FL),Zf(n),F.bundles=await cl(),!J(t)&&(X(),await Q())}async function oR(e,t=`detach`,{triage:n=`keep`}={}){let r=R().find(t=>t.id===e);if(!r)return;tv();let i=Array.isArray(r.reports)?[...r.reports]:[];if(V.closeSession(e),Hh(e),t===`delete`){for(let e of i){try{await Xc(e)}catch{}Hu(e),nc(e,``)}if(n===`wipe`)try{await Rp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=F.currentWorkspace===e,o=t===`delete`&&F.currentFile!=null&&i.includes(F.currentFile);(a||o)&&nR(),await su(e),await Q()}async function sR(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null}={}){let o=()=>n!==null&&J(n);try{if(await Promise.all([Br(`report`,e),Br(`workspace`,F.currentWorkspace||F.currentReportWorkspace)]),o()||(await Id(),o()))return;let{data:s,reason:c}=i===null?I()?ne(t,e):wi(t):{data:structuredClone(t),reason:null};if(!s)throw Error(c);let l=F.reports.length===0,u=Si(s)??[],d=u.flatMap(xg);if(await Ei(d),o())return;let f=new Set(d.filter(cr).map(e=>e.source??s.source??null)),p=a??s?.repo,m=vi({repo:p}),h=m??(i==null?Qs(e):``),g=yi(p),_=zr([{groups:u.map(xg),tree:s.tree,treeDependencies:s.treeDependencies}]),v=[];for(let t of u){let n=xg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:F.nextFindingId++,_repoFallback:h,_repoDirectory:g,_reportName:e,_depsDirectory:_,_managedReportId:i,_bundleHashes:s.bundleHashes??[]};_i(n,s),n._source=n.source??s.source??null,`isApp`in n||(n.isApp=Ri(n,n._source)),n._sourcePass=f.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}v.push(r)}return xi(v),F.reports.push({type:s.type||`analysis`,source:s.source??null,fileName:e,_managedReportId:i,groups:v,repo:m,tree:s.tree??null,treeFiles:s.treeFiles??null,treeDependencies:s.treeDependencies??null,bundleHashes:s.bundleHashes??[]}),On(F.reports),jn(F.reports)&&Zg(),F.revalidateConflicts=t_(),qK(),l&&(m_(),D_(r_())),r&&await RL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>sR(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(F.filterSeverities=new Set(e)),t!==void 0&&(F.filterConfMin=t),X()},document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`report-fullscreen`)&&document.body.classList.remove(`report-fullscreen`)}),document.addEventListener(`dragover`,e=>e.preventDefault()),document.addEventListener(`drop`,e=>{e.preventDefault(),!e.target.closest(`#drop-zone`)&&JL(e.dataTransfer.files)}),$m.addEventListener(`dragover`,e=>{e.preventDefault(),I()||$m.classList.add(`hover`)}),$m.addEventListener(`dragleave`,()=>$m.classList.remove(`hover`)),$m.addEventListener(`drop`,e=>{e.preventDefault(),$m.classList.remove(`hover`),JL(e.dataTransfer.files)});var cR=null;function lR(){I()||(cR||(cR=document.createElement(`input`),cR.type=`file`,cR.multiple=!0,cR.hidden=!0,cR.addEventListener(`change`,()=>{let e=[...cR.files];e.length>0&&JL(e),cR.value=``}),document.body.append(cR)),cR.click())}$m.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){jX(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){mx(F.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=F.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&QL(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){eR(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&lR()});function uR({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?tn(i):tn(t)??(e===`127.0.0.1`?en:null)}function dR(){return uR({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:F.serverMode,localMode:F.localMode,deepviewScanServer:F.deepviewScanServer})}function fR(e){return I()?!!e.managedId&&[`admin`,`manage`].includes(F.managedSession?.role):!e.managedId&&!!dR()}async function pR(e=null,{mode:t}={}){let n=F.selectedBundleWorkspace,r=W();if(await NX(),r!==W()||e&&!fR(e))return;if(I()){e&&await jX(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!dR())return;let i=await Re().then(()=>!0,()=>!1);if(!dR()||r!==W())return;if(!i){Fx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=iR(),o=W();await a,dR()&&o===W()&&(F.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,F.currentView=`scan`,X(),Q())}function mR(){let e=document.querySelector(`#drop-zone`);if(!e)return;let t=e.querySelector(`.local-scan-button`);t||(t=document.createElement(`button`),t.type=`button`,t.className=`local-scan-button`,t.innerHTML=er(`${ra}<span>Scan</span>`),t.addEventListener(`click`,()=>{pR()}),e.append(t));let n=dR();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=F.bundles?.find(e=>e.integrity===F.selectedBundle);r&&(r.hidden=!i||!fR(i))}var hR=EN(`./compare.js`),gR=`@preventive/triage`;function _R(e,t){let n=e.toLowerCase(),r=``,i=n;if(n.startsWith(`@`)){let e=n.indexOf(`/`);e>0&&(r=n.slice(0,e),i=n.slice(e+1))}return`pkg:npm/${r?`${encodeURIComponent(r)}/`:``}${encodeURIComponent(i)}@${encodeURIComponent(t)}`}function vR(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function yR(e){let t=[];if(e?.kind!==`stasis`||!e.bundle?.modules)return t;let n=new Map;for(let[r,i]of e.bundle.modules){if(!i?.name||typeof i.version!=`string`||!i.version)continue;let e=`${i.name}@${i.version}`,a=n.get(e);if(a!==void 0){r===`.`&&(t[a].dir=`.`);continue}n.set(e,t.length),t.push({name:i.name,version:i.version,dir:r})}return t}function bR(e){if(e?.kind!==`stasis`||!e.bundle?.modules)return!1;for(let[,t]of e.bundle.modules)if(t?.name&&typeof t.version==`string`&&t.version)return!0;return!1}function xR(e,t){let n=e.find(e=>e.dir===`.`)??null,r=n?e.filter(e=>e!==n):e;return{root:n?{name:n.name,version:n.version,purl:_R(n.name,n.version)}:{name:vR(t?.name??`bundle`),version:null,purl:null},rest:r}}function SR(e){return e??globalThis.crypto.randomUUID()}function CR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=xR(yR(e),t),o={type:`application`,"bom-ref":i.purl??`application:${i.name}`,name:i.name};i.version&&(o.version=i.version),i.purl&&(o.purl=i.purl);let s={bomFormat:`CycloneDX`,specVersion:`1.5`,serialNumber:`urn:uuid:${SR(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:gR}]},component:o},components:a.map(e=>{let t=_R(e.name,e.version);return{type:`library`,"bom-ref":t,name:e.name,version:e.version,purl:t}})};return`${JSON.stringify(s,null,2)}
178
- `}function wR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function TR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=xR(yR(e),t),o=vR(t?.name??`bundle`),s=n.toISOString().replace(/\.\d{3}Z$/u,`Z`),c=(e,t,n,r)=>{let i={SPDXID:e,name:t,downloadLocation:`NOASSERTION`,filesAnalyzed:!1,licenseConcluded:`NOASSERTION`,licenseDeclared:`NOASSERTION`,copyrightText:`NOASSERTION`};return n&&(i.versionInfo=n),r&&(i.externalRefs=[wR(r)]),i},l=`SPDXRef-Package-root`,u=[c(l,i.name,i.version,i.purl)],d=[{spdxElementId:`SPDXRef-DOCUMENT`,relationshipType:`DESCRIBES`,relatedSpdxElement:l}];a.forEach((e,t)=>{let n=`SPDXRef-Package-${t+1}`;u.push(c(n,e.name,e.version,_R(e.name,e.version))),d.push({spdxElementId:l,relationshipType:`DEPENDS_ON`,relatedSpdxElement:n})});let f={spdxVersion:`SPDX-2.3`,dataLicense:`CC0-1.0`,SPDXID:`SPDXRef-DOCUMENT`,name:o,documentNamespace:`https://spdx.org/spdxdocs/${encodeURIComponent(o)}-${SR(r)}`,creationInfo:{created:s,creators:[`Tool: ${gR}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
179
- `}function ER(e,t){let n=t?`gu`:`giu`,r=t?`g`:`gi`;try{return{re:new RegExp(e,n)}}catch{try{return{re:new RegExp(e,r)}}catch(e){return{error:e.message}}}}function DR(e,t,n){if(t){let t=ER(e,n);if(t.error)return{error:t.error};let{re:r}=t;return{ranges(e){r.lastIndex=0;let t=[],n;for(;(n=r.exec(e))!==null;){if(n[0].length===0){r.lastIndex++;continue}if(t.push([n.index,n.index+n[0].length]),t.length>=50)break}return t}}}let r=n?e:e.toLowerCase(),i=r.length;return{ranges(e){let t=n?e:e.toLowerCase(),a=[],o=0,s;for(;(s=t.indexOf(r,o))!==-1&&(a.push([s,s+i]),o=s+i,!(a.length>=50)););return a}}}function OR(e,t,n){let r=[],i=0,a=!1;for(let o of n){let n=e.get(o);if(typeof n!=`string`)continue;let s=n.split(`
180
- `),c=[];for(let e=0;e<s.length;e++){let n=t.ranges(s[e]);if(n.length!==0&&(c.push({ln:e+1,ranges:n}),i++,i>=5e3)){a=!0;break}}if(c.length>0&&r.push({path:o,lines:s,hits:c}),a)break;if(r.length>=500){a=!0;break}}return{fileResults:r,totalHits:i,truncated:a}}function kR(e,t){let n=[],r=0;for(let{path:i,lines:a,hits:o}of e.fileResults){let e=[];for(let{ln:n}of o){let i=t.ranges(a[n-1]);i.length!==0&&(e.push({ln:n,ranges:i}),r++)}e.length>0&&n.push({path:i,lines:a,hits:e})}return{fileResults:n,totalHits:r,truncated:!1}}var AR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function jR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=DR(n,r,i);if(o.error)return{error:o.error};(AR.tag!==e||AR.useRegex!==r||AR.caseSensitive!==i)&&(AR.tag=e,AR.useRegex=r,AR.caseSensitive=i,AR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<AR.entries.length;e++){let t=AR.entries[e],n=s(t.query);if(n===c)return AR.entries.splice(e,1),AR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?kR(l,o):OR(t,o,a??[...t.keys()].toSorted());return AR.entries.unshift({query:n,result:d}),AR.entries.length>8&&AR.entries.pop(),d}var MR=200,NR=28,PR=12;function FR(e,t){let n=t.length>0?t[0][0]:0;return LR(e,t,n-(e.length-e.trimStart().length)>NR?n-PR:0,MR)}function IR(e,t){let n=FR(e,t);return A`${n.clipped?A`<span class="bundle-search-clip">…</span>`:M}${RR(n.text,n.ranges)}`}function LR(e,t,n,r){let i=e.slice(n,n+r);if(n===0)return{text:i,ranges:t,clipped:!1};let a=[];for(let[e,r]of t){let t=e-n,o=r-n;o<=0||t>=i.length||a.push([Math.max(0,t),Math.min(i.length,o)])}return{text:i,ranges:a,clipped:!0}}function RR(e,t){if(t.length===0)return e;let n=[],r=0;for(let[i,a]of t){let t=Math.max(r,Math.min(i,e.length)),o=Math.max(t,Math.min(a,e.length));o<=t||(t>r&&n.push(e.slice(r,t)),n.push(A`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function zR(e,t){let n=new Map(e.map(e=>[e,[...t.get(e)].map(([n,r])=>{let i=t.get(e),a=t.get(n),o=i.size<a.size?i:a,s=0,c=0;for(let e of o.keys())if(i.has(e)&&a.has(e)&&s++,++c===32)break;return{to:n,score:r*2+s}}).toSorted((e,n)=>n.score-e.score||t.get(e.to).size-t.get(n.to).size||e.to.localeCompare(n.to))])),r=[],i=new Set;for(let t of e){let e=[t];for(;e.length>0;){let t=e.pop();if(!i.has(t)){i.add(t),r.push(t);for(let{to:r}of n.get(t).toReversed())i.has(r)||e.push(r)}}}return r}function BR(e,t,n){let r=e.toSorted(),i=new Set(r),a=new Map,o=new Map(r.map(e=>[e,new Map]));for(let e of r){a.set(e,new Map);for(let n of t.get(e)??[])e===n||!i.has(n)||(a.get(e).set(n,{to:n,count:1}),o.get(e).set(n,(o.get(e).get(n)??0)+1),o.get(n).set(e,(o.get(n).get(e)??0)+1))}let s=jr(r,a),c=r.map((e,t)=>({col:t%n,row:Math.floor(t/n)})),l=c.map(({col:e,row:t})=>({col:t%2?n-e-1:e,row:t})),u=(e,t)=>Math.abs(e.col-t.col)+Math.abs(e.row-t.row),d=e=>r.reduce((t,n)=>t+[...o.get(n)].reduce((t,[r,i])=>t+i*u(e.get(n),e.get(r)),0),0),f=new Map(r.map((e,t)=>[e,c[t]])),p=d(f);for(let e of[s,zR(r,o)])for(let t of[c,l]){let n=new Map(e.map((e,n)=>[e,t[n]])),r=d(n);r<p&&(f=n,p=r)}let m=({col:e,row:t})=>`${e},${t}`,h=new Map([...f].map(([e,t])=>[m(t),e])),g=(e,t,n,r)=>{let i=0;for(let[a,s]of o.get(e))i+=s*u(t,a===n?r:f.get(a));return i};for(let e=0;e<8;e++){let e=!1;for(let t of r){let n=f.get(t),r=o.get(t),i=0,a=0,s=0;for(let[e,t]of r)i+=f.get(e).col*t,a+=f.get(e).row*t,s+=t;if(!s)continue;let c=new Set;for(let e of[n,{col:Math.round(i/s),row:Math.round(a/s)}])for(let n=-1;n<=1;n++)for(let r=-1;r<=1;r++){let i=h.get(`${e.col+n},${e.row+r}`);i!==void 0&&i!==t&&c.add(i)}let l=0,u=null;for(let e of c){let r=f.get(e),i=g(t,r,e,n)+g(e,n,t,r)-g(t,n,e,r)-g(e,r,t,n);i<l&&(l=i,u=e)}if(u!==null){let r=f.get(u);f.set(t,r),f.set(u,n),h.set(m(r),t),h.set(m(n),u),e=!0}}if(!e)break}return r.map(e=>({id:e,...f.get(e)})).toSorted((e,t)=>e.row-t.row||e.col-t.col)}var VR=216,HR=48,UR=32,WR=20,GR=24,KR=20,qR=10;function JR(e,t){let n=e=>e&&(e.collapsed||e.members.length===1),r=e.map((t,r)=>e.length>5&&n(t)&&n(e[r+1])),i=0,a=0;e.forEach((t,n)=>{r[n]?a+=t.width:i+=t.width+(n===e.length-1?0:WR)});let o=Math.min(t,VR*5+WR*4),s=a?Math.max(.3,Math.min(.9,(o-i)/a)):1,c=0;return{groups:e.map((t,n)=>{let i=t.width*(r[n]?s:1),a={...t,x:c,visibleWidth:i,stacked:!!(r[n]||r[n-1])};return c+=i+(r[n]||n===e.length-1?0:WR),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function YR(e){let t=`M${e[0].join(`,`)}`;for(let n=1;n<e.length-1;n++){let[r,i]=e[n],[a,o]=e[n-1],[s,c]=e[n+1],l=Math.hypot(s-r,c-i),u=Math.hypot(r-a,i-o);if(!u||!l)continue;let d=Math.min(6,u/2,l/2);t+=` L${r-(r-a)/u*d},${i-(i-o)/u*d} Q${r},${i} ${r+(s-r)/l*d},${i+(c-i)/l*d}`}return`${t} L${e.at(-1).join(`,`)}`}var XR=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function ZR(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=XR(r),o=n?e.y-12:e.rowBottom;if(e.members.length===1||e.collapsed){let t=e.x+e.visibleWidth/2+a;return[[t,n?e.y-5:e.y+e.height],[t,o]]}let s=e.x+i.x+(n?0:VR),c=e.y+i.y+HR/2+a/2,l=s+(n?-7-r.lane*6:3+r.lane*6);return[[s+(n?-4:0),c],[l,c],[l,o]]}function QR(e,t){let n=(t,n)=>{let r=e.get(t[n]),i=r.packages.find(e=>e.id===t[`${n}Package`]);return r.members.length===1||r.collapsed?[r.x+r.visibleWidth/2,r.y+r.height/2]:i?[r.x+i.x+VR/2,r.y+i.y+HR/2]:[r.x+r.width/2,r.y+r.height/2]},r=(r,i,a=e=>n(e,i))=>{let o=new Map,s=Map.groupBy(t,t=>{let n=e.get(t[r]);return n.collapsed?n:t[`${r}Package`]});for(let e of s.values())e.toSorted((e,t)=>{let[n,o]=a(e),[s,c]=a(t);return(e.bypassLane??n)-(t.bypassLane??s)||o-c||e[`${i}Package`].localeCompare(t[`${i}Package`])||e[`${r}Package`].localeCompare(t[`${r}Package`])}).forEach((t,n)=>o.set(t,{count:e.length,index:n}));for(let e of Map.groupBy(t,e=>e[r]).values())e.toSorted((e,t)=>{let[i,a]=n(e,r),[s,c]=n(t,r);return i-s||a-c||XR(o.get(e))-XR(o.get(t))}).forEach((t,n)=>{let i=n/Math.max(1,e.length-1);o.get(t).lane=r===`from`?1-i:i});return o},i=r(`from`,`to`),a=r(`to`,`from`,t=>{let n=ZR(e.get(t.from),t.fromPackage,!1,i.get(t));return[n.at(-1)[0],n[0][1]]}),o=t.map(t=>{let n=e.get(t.from),r=e.get(t.to),o=ZR(n,t.fromPackage,!1,i.get(t)),s=ZR(r,t.toPackage,!0,a.get(t));return{edge:t,end:s,start:o,rowBottom:n.rowBottom,x1:o.at(-1)[0],x2:t.bypassLane??s.at(-1)[0]}});for(let e of Map.groupBy(o,e=>e.rowBottom).values())for(let t of[!0,!1]){let n=e.filter(e=>e.x2<e.x1===t).toSorted((e,n)=>(t?1:-1)*(e.x1-n.x1||e.x2-n.x2));n.forEach((e,t)=>{e.bendY=e.rowBottom+9+12*t/Math.max(1,n.length-1)})}return o.map(({edge:e,end:t,start:n,x1:r,x2:i,bendY:a})=>{let o=[[r,a],[i,a]],{bypassLane:s,...c}=e;return s!==null&&o.push([i,t.at(-1)[1]]),{...c,path:YR([...n,...o,...t.toReversed()])}})}function $R(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=HR,a=VR;if(r===0&&Math.abs(t.x-e.x)===a+WR){let r=e.y+i/2-n*6;return`M${e.x+(n>0?a:0)},${r} L${t.x+(n>0?-4:a+4)},${r}`}if(n===0&&Math.abs(t.y-e.y)===i+GR){let n=e.x+a/2+r*8;return`M${n},${e.y+(r>0?i:0)} L${n},${t.y+(r>0?-4:i+4)}`}let o=n||r,s=e.x+(o>0?a:0),c=e.y+i/2,l=s+o*(WR/2-3),u=t.x+a/2+o*8,d=r>0||r===0&&n>0,f=t.y+(d?-10:i+10),p=t.y+(d?-4:i+4);return YR([[s,c],[l,c],[l,f],[u,f],[u,p]])}function ez(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:VR+qR*2,height:HR};let a=t.length>1,o=Math.max(1,Math.floor((r-qR*2+WR)/(VR+WR))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?qR:0,l=Math.ceil(t.length/s),u=a?KR:0,d=(a?BR(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(VR+WR),y:c+u+e.row*(HR+GR)})),f=new Map(d.map(e=>[e.id,e])),p=[];if(a)for(let e of t)for(let t of n.get(e)??[])e!==t&&f.has(t)&&p.push({from:e,to:t,path:$R(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*VR+(s-1)*WR+c*2,height:l*HR+(l-1)*GR+c*2+u}}function tz(e,t={}){let n=t.ecosystem??(/(?:^|\/)node_modules\//u.test(e)?`npm`:``);return{id:e,name:t.name||(e===`.`?`App`:e),ecosystem:n,version:t.version??``,own:e===`.`,root:!1,target:!1}}var nz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function rz(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=tz(t,n);return{packageKey:r.ecosystem?nz(r):r.name,packageGroup:Yr(``,{packageDir:t})}}function iz(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Wt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=Ce(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,tz(t,e.bundle.modules.get(t)));let f=(e,t)=>{e!==t&&(o.has(e)||o.set(e,new Set),a.has(t)||a.set(t,new Set),o.get(e).add(t),a.get(t).add(e))};for(let[t,n]of ke(e))if(d.has(t))for(let e of n){if(!d.has(e))continue;let n=c.get(t),r=c.get(e);if(Nr(t,e,r===`.`,n===`.`))f(n,r);else if(n!==r){let e=s.get(r);e.excludedImporters??=new Set,e.excludedImporters.add(n)}}let{roots:p,appImports:m}=Ne(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,tz(`.`));for(let e of m)f(`.`,e);for(let[e,t]of s){if(!(t.own||t.ecosystem===`npm`&&(t.name===`@babel/core`||t.name===`react-native`&&o.get(`.`)?.has(e))))continue;t.traceBoundary=!0;let n=a.get(e);for(let t of n??[])t!==`.`&&(n.delete(t),o.get(t).delete(e))}for(let e of p){let t=s.get(e===`__own__`?`.`:e);t&&(t.root=!0)}let h=[];for(let e of s.values()){let i=nz(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Yr(``,{packageDir:e.id})===n,o=e.ecosystem===`github`&&e.version===`.`?`0.0.0`:e.version;!e.own&&a&&(r===void 0||o===r)&&(e.target=!0,h.push(e.id))}let g=new Set(h),_=[...h];for(let e=0;e<_.length;e++)for(let t of a.get(_[e])??[])g.has(t)||(g.add(t),_.push(t));let v=e=>new Map([...g].map(t=>[t,new Set([...e.get(t)??[]].filter(e=>g.has(e)))]));return{nodes:new Map([...s].filter(([e])=>g.has(e))),imports:v(o),importedBy:v(a),targets:h}}function az(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Ir(r,e.imports),o=i.map(()=>new Set),s=[];for(let[t,n]of e.imports){let e=a.get(t);for(let r of n){let n=a.get(r);e!==n&&(o[e].add(n),s.push({from:e,to:n,fromPackage:t,toPackage:r}))}}let c=i.map(()=>0),l=i.map(()=>0);for(let e of o)for(let t of e)l[t]++;let u=i.flatMap((e,t)=>l[t]===0?[t]:[]);for(let e=0;e<u.length;e++){let t=u[e];for(let e of o[t])c[e]=Math.max(c[e],c[t]+1),--l[e]===0&&u.push(e)}let d=o.some((e,t)=>[...e].some(e=>c[e]!==c[t]+1)),f=t-UR-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...ez(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>JR(e,f)),m=p.reduce((e,t)=>Math.max(e,t.width+24),240),h=new Map,g=12;for(let{groups:e,width:t,height:n}of p){for(let r of e)h.set(r.id,{...r,x:r.x+(m-t)/2,y:g,rowBottom:g+n});g+=n+36}let _=0,v=QR(h,s.map(e=>{let t=c[e.to]===c[e.from]+1?null:m+8+_++%4*10;return{...e,bypassLane:t}}));return{boxes:[...h.values()],componentOf:a,edges:v,width:m+(_?56:0),height:Math.max(0,g-24)}}function oz(e,t){if(t===null)return null;let n=new Set,r=new Set([t]);for(let i of[!1,!0]){let a=new Map,o=[t],s=new Set([t]);for(let t of e.edges){let e=i?t.to:t.from,n=i?t.from:t.to;a.has(e)||a.set(e,[]),a.get(e).push(n)}for(let e=0;e<o.length;e++)for(let t of a.get(o[e])??[])s.has(t)||(s.add(t),r.add(t),o.push(t));for(let t of e.edges)s.has(t.from)&&s.has(t.to)&&n.add(t)}return{groups:r,edges:n}}var sz=new Map,cz=new Map,lz=[];function uz(e){if(!e?.managedId)return sz;let t=F.managedSession,n=F.managedTeams&&Ns(F.managedTeams),r=[t?.id,t?.role,t?.csrfToken,F.currentManagedTeam,n];return r.some((e,t)=>e!==lz[t])&&(lz=r,cz=new Map),cz}var dz=new WeakMap;function fz(e){return dz.has(e)||dz.set(e,{reasons:Ce(e),selected:``}),dz.get(e)}function pz(e,t=fz(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var mz=`deepview.advisories.proxyConsent`;function hz(){try{return localStorage.getItem(mz)===`1`}catch{return!1}}function gz(){try{localStorage.setItem(mz,`1`)}catch{}}function _z(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t.includes(`node_modules`)&&n?.name&&typeof n.version==`string`&&n.version)return!0;return!1}function vz(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t!==`.`&&typeof n?.name==`string`&&n.name&&typeof n.version==`string`&&n.version&&(n.ecosystem||/(?:^|\/)node_modules\//u.test(t)))return!0;return!1}function yz(e){if(e.bundle&&!vz(e))return!0;let t=uz(e).get(pz(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function bz(e,t,n=!1){return!e||e.managedId&&!Sz(e)||xz(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:UL(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||vz(t):_z(t):!1}function xz(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function Sz(e){let t=F.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?F.managedTeams.some(t=>(F.currentManagedTeam==null||t.id===F.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function Cz(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var wz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function Tz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function Ez(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(Tz),wz):new Map(Object.entries(e??{}));for(let[e,r]of n){let i=Array.isArray(r)?r.filter(e=>e&&typeof e.title==`string`&&typeof e.severity==`string`):[];i.length>0?n.set(e,t?i:i.map(e=>({...e,source:`registry`}))):n.delete(e)}return n}function Dz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function Oz(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(Cz(e))});if(!t.ok){let e=`HTTP ${t.status}`;try{let n=await t.json();typeof n?.error==`string`&&n.error&&(e=`${n.error} (HTTP ${t.status})`)}catch{}throw Error(e)}return t.json()}function kz(e,t){return jz(e,t)}function Az(e,t){return jz(e,t,!0)}async function jz(e,t,n=!1){if(!e?.integrity||!e.managedId&&!hz())return;let r=uz(e),i=pz(e),a=r.get(i);if(n){if(!Dz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=fz(e),c=e.managedId?new Map:Gt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await Tx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[wz(e),new Set(e.versions)])):new Map(Object.entries(r.packages).map(([e,t])=>[e,new Set(t)])),t=r.advisories,a=Array.isArray(r.skipped)?r.skipped:[]}else t=c.size>0?await Oz(c):{};r.set(i,{state:`ok`,byPackage:Ez(t),query:c,skipped:a})}catch(e){let t=e?.message??`fetch-failed`;r.set(i,n&&![401,403,404].includes(e?.status)?{...a,recheckingRepositories:!1,repositoryError:t}:{state:`error`,reason:t,query:c})}t()}async function Mz(e,t){if(!e?.integrity)return;let n=uz(e),r=pz(e);n.get(r)?.state===`error`&&(n.delete(r),await kz(e,t))}var Nz={critical:0,high:1,moderate:2,low:3,info:4};function Pz(e){return Nz[e]??999}function Fz(){let e=typeof window>`u`?``:window.location.host;return A`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function Iz(e,t=()=>{},n=null){let r=e?fz(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=Rz(e),o=!!e?.managedId&&!yz(e);return A`<div class="bundle-advisories-panel">${a!==M||i.length>0||o?A`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?A`<div class="bundle-advisories-scopes">${i.length>0?A`<bundle-scope-selector .reasons="${i}" .value="${r.selected?`reason:${r.selected}`:``}" label="Choose advisory scope" @scope-change="${n=>{let i=n.detail.value.replace(/^reason:/u,``);r.selected=r.reasons.has(i)?i:``;let a=kz(e,t);return t(),a}}"></bundle-scope-selector>`:M} ${o?Lz(e,t):M} ${o&&n?A`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${k(ra)}<span>Validate</span></button>`:M}</div>`:M}</div>`:M} ${Bz(e)}</div>`}function Lz(e,t){if(!e?.managedId)return M;let n=uz(e).get(pz(e)),r=!!n?.recheckingRepositories;return A`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!Dz(e,n)}" aria-busy="${String(r)}" @click="${()=>Az(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function Rz(e){if(!e||!e.managedId&&!hz())return M;let t=uz(e).get(pz(e));if(t?.state!==`ok`)return M;let n=t.query.size,r=t.byPackage.size;if(r===0)return M;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function zz(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?A`No packages could be audited.`:A`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${fz(e).selected?`this scope`:`this bundle`}.`}function Bz(e){if(!e)return A`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return A`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!hz())return Fz();let t=uz(e).get(pz(e));if(!t||t.state===`loading`)return A`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return A`<div class="bundle-advisories-empty is-error"><span>Failed to fetch advisories: ${t.reason}</span> <button type="button" class="bundle-advisories-retry" data-advisories-retry>Retry</button></div>`;let n=t.byPackage.size===0?A`<div class="bundle-advisories-empty"><span>${zz(e,t)}</span></div>`:M;if(t.byPackage.size===0&&t.skipped.length===0&&!t.repositoryError)return n;let r=[...t.byPackage.entries()].toSorted(([e,t],[n,r])=>{let i=Math.min(...t.map(e=>Pz(e.severity))),a=Math.min(...r.map(e=>Pz(e.severity)));return i===a?e.localeCompare(n):i-a});return A`${n}<div class="bundle-advisories">${t.repositoryError?A`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:M} ${t.skipped.length>0?A`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>A`<li><span class="mono">${wz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:M}<ul class="bundle-advisories-list">${r.map(([n,r])=>Vz(e,n,r,t.query.get(n),()=>uz(e).get(pz(e))?.byPackage===t.byPackage))}</ul></div>`}function Vz(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=Pz(e.severity)-Pz(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return A`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?A`<span class="bundle-advisories-section-versions">${o.map(n=>A`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>Le({details:e,packageKey:t,version:n,reason:fz(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:M}</div><ul class="bundle-advisories-rows">${a.map(e=>LN(e,({title:e,severity:t,details:n})=>ft({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var Hz=e=>I()?[]:Of(e),Uz=()=>I()?0:kf(),Wz=null,Gz=new WeakMap;function Kz(e){if(Gz.has(e))return Gz.get(e);let t=Ut(e),n=ke(e),r=[...t.keys()],{stripped:i}=Nn(r),a=new Map(r.map((e,t)=>[e,i[t]])),o={};for(let e of r){let r=a.get(e),i=n.get(e);o[r]={imports:i?[...i].map(e=>a.get(e)).filter(Boolean):[],size:t.get(e)}}let s={tree:o,origToStripped:a};return Gz.set(e,s),s}function qz(e,t=null){let n={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0};if(!e?.fileHashes)return n;let r=new Set;for(let[i,a]of e.fileHashes)if((!t||t.has(i))&&!r.has(a)){r.add(a);for(let e of Hz(a)){let t=s(e,F.triage.get(T(e)));t&&n[t]!==void 0&&n[t]++}}return n}function Jz(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=Hz(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===F.shownTriage});a.length!==0&&n.set(r,a)}return n}function Yz(e){let t=Kz(e),n=Ce(e,t.origToStripped.keys());w.bundleReasonFor!==e.integrity&&(w.bundleReasonFor=e.integrity,w.dependencyPackagesView=!1,w.bundleReason=null);let r=Zz(t,n,w.bundleReason),{tree:i,origToStripped:a,selected:o}=r;w.bundleReason=o;let s=r.files;if(s.length===0)return null;let c=null;if(e.fileHashes&&e.fileHashes.size>0){c=new Map;for(let[t,n]of e.fileHashes){let e=a.get(t);e!==void 0&&c.set(e,n)}}let l=Jz(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&Hz(n).length>0),d=u&&w.bundleIssues,f=new Map,p=new Map,m=new Map,h=new Map;for(let[e,t]of d?l:[]){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},r=new Set,i=new Set,a=[];for(let e of t){n[e.severity]=(n[e.severity]||0)+1,r.add(e.severity);let t=F.triage.get(T(e))?.color??`none`;i.add(t),a.push({severity:e.severity,color:t})}f.set(e,n),p.set(e,r),m.set(e,i),h.set(e,a)}let g=[`matrix`,`flow`].includes(w.bundleLayout)||f.size===0?null:_r(i,f),_=new Map;for(let[e,t]of a)_.set(t,e);let v=Wt(e),y=new Map(v?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),b=e=>{let t=_.get(e)??e;return Yr(t,{packageDir:v?.get(t)})},ee=s.filter(e=>b(e)===`__own__`),te=Ne(e,a,b,v,t.origToStripped),ne=new Set;for(let e of s)if(ne.add(b(e)),ne.size>=3)break;let re=ne.size>=3,ie=s;if(w.focusedPkg){r.focused.has(w.focusedPkg)||r.focused.set(w.focusedPkg,s.filter(e=>b(e)===w.focusedPkg));let e=r.focused.get(w.focusedPkg);e.length>0?ie=e:w.focusedPkg=null}return w.selected&&!Object.hasOwn(i,w.selected)&&(w.selected=null),{treeData:i,files:ie,ownCounts:f,transitiveCounts:g,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:b,packageInfoOf:e=>y.get(v?.get(_.get(e)??e))},strippedToOrig:_,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:w.bundleLayout===`flow`?je(e,a,t.origToStripped,v):void 0,ownSourcePackages:we(a,b,v),entryPackages:Ee(e,a,b),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var Xz=new WeakMap;function Zz(e,t,n){let r=t.has(n)?n:null;Xz.has(e)||Xz.set(e,new Map);let i=Xz.get(e);if(!i.has(r)){let n=De(e.tree,e.origToStripped,t,r);i.set(r,{...n,files:Object.keys(n.tree),focused:new Map})}return i.get(r)}function Qz(){if(!Wz)return;let e=ET();e&&e.refreshSidebar(Wz,{isBundleContext:!0,findingsJump:!I()})}function $z(){if(!Wz)return;let e=ET();e&&e.refreshTopPkgs(Wz)}function eB(e){Wz=e}function tB(e,t,n){let{totalByPkg:r,whyQueries:i,total:a}=e;if(a===0)return M;e.sorted.has(t)||e.sorted.set(t,[...r.entries()].toSorted((e,n)=>+(n[0]===`__own__`)-(e[0]===`__own__`)||(t===`size`?n[1]-e[1]:0)||Zr(e[0]).localeCompare(Zr(n[0]))||e[0].localeCompare(n[0])));let o=e.sorted.get(t);return A`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${D(o,([e])=>e,([e,t])=>A`<span class="bundles-dist-seg" style="${E({flexGrow:t,background:Ar(e)})}" data-tooltip="${e===`__own__`?M:`${e}: ${Gr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${D(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Zr(e),s=Ar(e),c=i.get(e);return A`<li><span class="bundles-dist-dot" style="${E({background:s})}"></span> ${c?A`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>nB(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:A`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?M:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${E({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Gr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function nB(e,t){let n=F.currentManagedTeam,r=F.currentWorkspace,i=F.managedSession&&Ns(F.managedSession);return Le({details:e,...t,isCurrent:()=>F.currentView===`bundles`&&F.selectedBundle===e.integrity&&(F.bundleDetails&&Ns(F.bundleDetails))===Ns(e)&&F.currentWorkspace===r&&F.currentManagedTeam===n&&(F.managedSession&&Ns(F.managedSession))===i})}var rB=new WeakMap;function iB(e,t,n,r){let i=rB.get(e);if(i&&i.packageDirs===n&&i.details===r&&i.sizes.length===t.length&&i.sizes.every((e,n)=>e===t[n]))return i;let{prefix:a,stripped:o}=Nn(e),s=t=>n?.get(e[t]),c=new Set;for(let t=0;t<o.length;t++)c.add(Yr(e[t],{packageDir:s(t)}));let l=o.map((e,t)=>t).toSorted((e,t)=>o[e].localeCompare(o[t])),u=o.map((e,t)=>t).toSorted((e,n)=>(t[n]??-1)-(t[e]??-1)||o[e].localeCompare(o[n])),d=aB(e.map((e,n)=>({path:e,size:t[n],pkgDir:s(n)})),r),f={sizes:[...t],packageDirs:n,details:r,prefix:a,stripped:o,packages:c,byName:l,bySize:u,dist:d};return rB.set(e,f),f}function aB(e,t){let n=new Map,r=new Map,i=0;for(let{path:a,size:o,pkgDir:s}of e){if(typeof o!=`number`||o<=0)continue;let e=Yr(a,{packageDir:s});n.set(e,(n.get(e)??0)+o),r.has(e)||r.set(e,rz(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function oB(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=M,summaryExtra:f=M,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let b=iB(n,r,i,l),{prefix:ee,stripped:te,packages:ne}=b,re=te.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),ie=e=>h?.(n[e])??[],ae=re.some(e=>ie(e).length>0),oe=F.bundleOverviewFilesSort===`flags`&&!ae?`name`:F.bundleOverviewFilesSort,se=oe===`size`?b.bySize:b.byName,ce=oe===`flags`?hI(re,ie,e=>te[e]):_?se.filter(e=>_.keeps(n[e])):se,le=F.bundleOverviewPackagesSort,ue=tB(b.dist,le,l),de=ue===M?A`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:ue,fe={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},pe=0,me=new Map;if(F.bundleDetails?.fileHashes){let e=Jz(F.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){fe[e.severity]!==void 0&&fe[e.severity]++,pe++;for(let t of Mf(e.fileHash,e))me.set(t,(me.get(t)??0)+1)}}let he=[...me.keys()].toSorted(),ge=Mi.filter(e=>fe[e]>0).map(e=>A`<span class="${`tree-count-chip ${e}`}">${fe[e]} ${e.replaceAll(`_`,` `)}</span>`),_e=n.length>0?A`<ul class="bundles-sources-list">${ce.map(e=>{let t=n[e],i=r[e],a=A`${m?m(t):M}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${te[e]}</span> ${p?p(t):M} ${i==null?M:A`<span class="bundles-source-size">${Gr(i)}</span>`}`;return A`<li>${c?.has(t)?A`<div class="bundles-source-row is-resource">${a}</div>`:A`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,ve=he.length>0?A`<ul class="bundles-reports-list">${he.map(e=>{let t=Jx[Qx(e)]??Jx.default,n=me.get(e)??0;return A`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ye=n.length-(c?.size??0);return A`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(ee)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ye,ye):A`${y(`files`,ye,`${ye} ${ye===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?M:A`<dt>Size</dt><dd>${Gr(o)}</dd>`} ${s==null?M:A`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Gr(s))}</dd>`} ${c?.size?A`<dt>Resources</dt><dd>${c.size}</dd>`:M}</dl>${a??M}</div>${pe>0?A`<div class="bundles-issue-summary tree-count-chips">${ge}</div>`:M} ${f}</div><div class="bundles-overview-columns">${u??fA({title:`Packages`,count:ne.size,body:de,tools:A`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(le===e)}" @click="${()=>{F.bundleOverviewPackagesSort=e,X()}}">${t}</button>`)}</span>`})} ${fA({title:`Files`,count:_?`${ce.length} of ${n.length}`:n.length,body:_e,list:!0,extra:_?A`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:M,tools:A`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ae?[[`flags`,`Flags`]]:[]].map(([e,t])=>A`<button type="button" aria-pressed="${String(oe===e)}" @click="${()=>{F.bundleOverviewFilesSort=e,X()}}">${t}</button>`)}</span>`})} ${he.length>0?fA({title:`Reports`,count:he.length,body:ve,list:!0}):M} ${d}</div></div>`}var sB=16,cB=new Map,lB=new Set,uB=()=>A`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${F.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${hw}</button>`;function dB(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${F.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="Pretty-print" data-tooltip="${lk(e)}">${ck}</button>`}function fB(e,t,n,r,i,a){let o=Ak(e,t,n,r),s=o?Wk(e,t,n,r,()=>{F.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?dB(s):M,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function pB(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${F.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="View lockfile" data-tooltip="${oA(e)}">${k(ea)}</button>`}var mB=null;function hB(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function gB(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function _B(e){for(let t of Mi)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var vB={content:``,parts:``};function yB(e){if(vB.content===e)return vB.parts;let t=e;if(e.length>YT||gC(e)){let n=e=>[QT(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
181
- `,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>XT&&(t.push(...n(e.slice(r,i)),A`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return vB={content:e,parts:t},t}function bB(e,t,n,r,i=null,a=!1,o=!1){let s=Lt(e),c=F.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Pt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!cB.has(p)&&!lB.has(p)&&(lB.add(p),(async()=>{let r=await BS(e,f,aC(n,t));cB.set(p,typeof r==`string`?bC(r):null),cB.size>sB&&cB.delete(cB.keys().next().value),lB.delete(p),F.bundleSourceFile===t&&X()})());let m=cB.get(p);cB.has(p)&&(cB.delete(p),cB.set(p,m));let h=F.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${_B(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return A`<div class="${C({"bundle-source-lines":!0,"is-wrapped":F.bundleSourceWrap})}" style="${E({"--lineno-width":`${d}ch`})}" ${JT(zD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${zT([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?_B(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return A`<div class="${C({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?A`<button type="button" class="${C({"bundle-source-dot":!0,[`sev-${s}`]:!0,active:c})}" data-bundle-source-finding="${o[0].idx}" data-tooltip="${`${o.length} ${o.length===1?`issue`:`issues`} on line ${n}`}" aria-label="${`${o.length} issues on line ${n}`}"></button>`:A`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:M}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?k(m):yB(e)}</code></pre></div>`}function xB(e){let t=F.bundleSourceFindingIdx;if(t==null)return M;let n=e[t];if(!n)return M;let r=n.fileHash?Mf(n.fileHash,n):[],i=s(n,F.triage.get(T(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=In(n),c=jV(n.line);return A`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${a?A`<span class="${`bundle-source-panel-triage triage-${i}`}">${a}</span>`:M} <button type="button" class="bundle-source-panel-close" data-action="bundle-source-panel-close" aria-label="Close finding details">×</button></header><div class="bundle-source-panel-body">${c||o?A`<div class="bundle-source-panel-line-row">${c?A`<span class="bundle-source-panel-line">${c}</span>`:M} ${o?A`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${o}">${o}</span>`:M}</div>`:M}<div class="bundle-source-panel-desc">${kw(Wi(n),{paragraphs:!1})}</div>${r.length>0?A`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=st[Qx(e)]??st.default;return A`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})}</div>`:M}</div></aside>`}function SB(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??Jz(e.fileHashes,`issues`)).get(t)??[];for(let e=0;e<n.length;e++){let t=n[e];i.push(t);let r=parseInt(t.line,10);Number.isFinite(r)&&r>0&&(a.has(r)||a.set(r,[]),a.get(r).push({f:t,idx:e}))}}return{fileFindings:i,lineFindings:a}}function CB(e,t=null,n=M){return A`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?iV(t):M} ${uB()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function wB(e,t,n,r,i,a=null,o=!1,s=!1){return A`<div class="bundle-source-code-wrap">${typeof t==`string`?bB(t,e,n,i,a,o,s):A`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${xB(r)}`}function TB(){let e=F.bundleSourceFile;if(!e||F.bundleDetailsTab===`code`||F.bundleDetailsTab===`search`)return M;let t=F.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=It(t),{fileFindings:a,lineFindings:o}=SB(t,e,i.get(e)),s=F.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:fB(t,s,e,i.get(e),a,o);return A`<div class="bundle-source-overlay"><div class="${C({"bundle-source-modal":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${CB(e,Qk(F.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?A`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?A`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:wB(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var EB=new Map,DB=null,OB=null,kB=0;function AB(e,t){let n=LB(e??``,t).split(`/`);for(let e=1;e<n.length;e++)EB.set(n.slice(0,e).join(`/`),!0);kB++}function jB(e,t){F.bundleCodeSearchMode=`files`,F.bundleCodeSearchQuery=``,AB(e,t),X(),hB()}function MB(e){let t=e=>{for(let n of e.dirs.values())EB.set(n.path,!1),t(n)};t(e),kB++,X()}function NB(e){F.bundleCodeTerminal=e,X(),e?MT():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function PB(){return A`<bundle-code-terminal-splitter role="separator" tabindex="0" aria-orientation="horizontal" aria-label="Resize terminal" data-tooltip="Drag to resize · double-click to reset"></bundle-code-terminal-splitter><section class="bundle-code-terminal" aria-label="Terminal"><header class="bundle-code-terminal-bar"><span class="bundle-code-rail-label">Terminal</span> <button type="button" class="bundle-code-rail-action" aria-label="Close terminal" @click="${()=>NB(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function FB(e,t){let n=0,r=null;if(!t||t.size===0)return{count:n,worst:r};let i=e=>{for(let i of e.files.values()){let e=t.get(i);if(!e||e.length===0)continue;n+=e.length;let a=_B(e);(r===null||(ji[a]??0)>(ji[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function IB(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>ED(e,t).localeCompare(ED(n,r))||t.path.localeCompare(r.path)),c=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),l=e=>{if(!t)return!1;for(let n of e.files.values())if(n===t)return!0;for(let t of e.dirs.values())if(l(t))return!0;return!1},u=(e,t)=>i?!0:EB.has(e)?EB.get(e):n===0||l(t),d=e=>t=>{EB.set(e,!t.currentTarget.parentElement.open)};return A`<ul class="${C({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:M}" @keydown="${n===0?kD:M}">${D(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=OD(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Qe(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
182
- Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=bD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Gr(t)})}:void 0,y=FB(s,r);return A`<li class="bundle-code-tree-dir"><details .open="${Ue(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??M}" data-tooltip-ecosystem="${g?.ecosystem??M}" data-tooltip-version="${g?.version??M}" data-tooltip-files="${g?.fileCount??M}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):M}" data-tooltip-commit="${g?.commit??M}" data-tooltip="${_?h:M}" data-tooltip-placement="${_?`right-start`:M}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:M} <span class="${C({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?M:h}">${f?A`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?A`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:M}`:l.names.map((e,t)=>A`${t>0?A`<span class="bundle-code-tree-separator">/</span>`:M}${e}`)} </span>${f?.variant?A`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:M} ${y.count>0?A`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:M}</summary>${IB(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${D(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?_B(i):null,s=i?.length??0;return A`<li class="bundle-code-tree-file"><button type="button" class="${C({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:M}">${qe(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?A`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:M}</button></li>`})}</ul>`}function LB(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var RB={tree:null,query:``,prefix:``,filtered:null};function zB(e,t,n,r,i=``,a=null,o=null){let s=RB;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(RB={tree:e,query:n,prefix:i,filtered:DD(e,n,i)});let c=n?RB.filtered:e;return zT([c,t,BB(r),a,o,kB],()=>c?IB(c,t,0,r,!!n,a,o):A`<div class="bundle-code-search-empty">No files match.</div>`)}function BB(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${_B(t)}`).join(`
183
- `)}var VB=new WeakMap;function HB(e,t){let n=VB.get(t);return n||(n=Xr([...t.keys()].toSorted(),Wt(e)),VB.set(t,n)),n}var UB=1e3,WB=new WeakMap;function GB(e,t,n,r,i=``){let a=Ut(e),o=WB.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),WB.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>LB(e,i).toLowerCase().includes(s)):o;if(c.length===0)return A`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>UB?c.slice(0,UB):c;return A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${D(l,e=>e,e=>A`<li><button type="button" class="${C({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:M}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${LB(e,i)}</span><span class="bundle-code-largest-size">${Gr(a.get(e))}</span></button></li>`)}</ul></div>`}var KB=20,qB=100,JB={sources:null,query:``,hits:null};function YB(e,t,n){let r=jR(e.integrity??``,t,n,!1,!1,HB(e,t));if(r.fileResults.length>qB||!r.truncated||r.totalHits<5e3||r.fileResults.length===qB&&r.fileResults.at(-1).hits.length>=KB){let e=r.fileResults.slice(0,qB).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,KB).map(({ln:e,ranges:n})=>({ln:e,text:t[e-1],ranges:n}))}));return{results:e,totalHits:e.reduce((e,{hits:t})=>e+t.length,0)}}if(JB.sources===t&&JB.query===n)return JB.hits;let i=DR(n,!1,!1),a=[],o=0;for(let n of HB(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],s=e.split(`
184
- `);for(let e=0;e<s.length;e++){let t=i.ranges(s[e]);if(t.length!==0&&(r.push({ln:e+1,text:s[e],ranges:t}),o++,r.length>=KB))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=qB)break}return JB={sources:t,query:n,hits:{results:a,totalHits:o}},JB.hits}function XB(e,t,n,r,i=``){if(!n)return A`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let{results:a,totalHits:o}=YB(e,t,n);return a.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o} ${o===1?`hit`:`hits`} in ${a.length} ${a.length===1?`file`:`files`}</div>${a.map(({path:e,hits:t})=>{let n=LB(e,i);return A`<div class="${C({"bundle-code-search-file":!0,current:e===r})}"><button type="button" class="bundle-code-search-file-name" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${n}</button><ul class="bundle-code-search-hits">${t.map(t=>A`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${IR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function ZB(e,t,n,r=``){if(!e.fileHashes)return A`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=Jz(e.fileHashes,`issues`);if(i.size===0)return A`<div class="bundle-code-search-empty">No issues match this bundle's files.</div>`;let a=t.toLowerCase(),o=[];for(let[e,t]of i)for(let n=0;n<t.length;n++){let r=t[n],i=r.description??``;a&&!e.toLowerCase().includes(a)&&!r.severity.includes(a)&&!r.severity.replaceAll(`_`,` `).includes(a)&&!i.toLowerCase().includes(a)||o.push({file:e,finding:r,fileIdx:n})}return o.sort((e,t)=>{let n=ji[e.finding.severity]??0,r=ji[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o.length} ${o.length===1?`issue`:`issues`}</div><ul class="bundle-code-search-issues">${o.map(({file:e,finding:t,fileIdx:i})=>{let a=t.severity,o=LB(e,r),s=e===n&&F.bundleSourceFindingIdx===i;return A`<li class="${C({"bundle-code-search-issue":!0,current:s})}"><button type="button" class="bundle-code-search-issue-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${i}" data-bundle-view-line="${t.line??``}"><div class="bundle-code-search-issue-row"><span class="${`bundle-code-search-issue-sev sev-${a}`}">${a.replaceAll(`_`,` `)}</span> <span class="bundle-code-search-issue-path mono" data-tooltip-truncated data-tooltip="${e}">${o}${t.line?`:${t.line}`:``}</span></div><div class="bundle-code-search-issue-desc">${kw(Wi(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var QB=new WeakMap;function $B(e,t){if(e.kind!==`stasis`)return t;if(QB.has(t))return QB.get(t);let n=Wt(e),r=new Map([...t].filter(([e])=>!/(?:^|\/)node_modules(?:\/|$)/u.test(e)&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n?.get(e)??e))),i=r.size>0?r:t;return QB.set(t,i),i}var eV=new WeakMap;function tV(e,t,n){let r=eV.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=wD(Nn(n).prefix,i,n);r={prefix:a,tree:CD(n.map(e=>LB(e,a)),n,i)},eV.set(t,r)}return r}function nV(e,t,n){let r=null,i=-1,a=0;for(let[e,o]of n){if(typeof t.get(e)!=`string`)continue;let n=ji[_B(o)]??0;(n>i||n===i&&o.length>a||n===i&&o.length===a&&(r===null||e.localeCompare(r)<0))&&(r=e,i=n,a=o.length)}if(r)return r;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;let o=null,s=-1;for(let[e,n]of t)typeof n==`string`&&n.length>s&&(o=e,s=n.length);return o}function rV(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;DB!==F.selectedBundle&&(EB.clear(),kB++,DB=F.selectedBundle,OB=null);let r=Rt(n).paths,{prefix:i,tree:a}=tV(e,n,r),o=e.fileHashes?Jz(e.fileHashes,`issues`):new Map,s=$B(e,n),c=()=>e.kind===`stasis`?new Map([...o].filter(([e])=>s.has(e))):o,l=F.bundleSourceFile,u=F.bundleCodeFileRequest;if(u?.bundle===F.selectedBundle){F.bundleCodeFileRequest=null;let t=u.path==null?r[u.file-1]:n.has(u.path)?u.path:null;if(t){l=t,F.bundleSourceFile=t,hB();let r=u.endLine??u.line;F.bundleSourceTargetLine=u.line&&r<=Lt(n.get(t))?{bundle:e.integrity,path:t,line:u.line,...r>u.line?{end:r}:{}}:null,F.bundleSourceTargetLine&&gB(u.line)}}if(mB&&(mB.bundle!==F.selectedBundle||l&&l!==mB.path)&&(mB=null),l){if(mB&&!mB.hadIssues&&o.size>0&&c().size>0){mB.hadIssues=!0;let t=nV(e,s,c());t&&t!==l&&(l=t,F.bundleSourceFile=t,F.bundleSourceFindingIdx=null,mB.path=t,hB())}}else{let t=c();l=nV(e,s,t),l&&(F.bundleSourceFile=l,mB={bundle:F.selectedBundle,path:l,hadIssues:t.size>0},hB())}l!==OB&&(AB(l,i),OB=l),l&&t?.managedId&&I()?G?.replaceCodeRoute(Bx(F.managedTeams,t,F.currentManagedTeam,`code`,Vx(F))):l&&t?.npm&&I()?G?.replaceCodeRoute(yj(t,`code`,Vx(F))):l&&t?.repository&&I()&&G?.replaceCodeRoute(tN(t,`code`,Vx(F)));let d=l?n.get(l):null,{fileFindings:f,lineFindings:p}=SB(e,l,d,o),m=o.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],h=m.includes(F.bundleCodeSearchMode)?F.bundleCodeSearchMode:`files`,g=F.bundleCodeSearchQuery;return A`<div class="bundle-code-view"><aside class="bundle-code-rail"><div class="bundle-code-rail-head"><span class="bundle-code-rail-label">Files</span> <span class="bundle-code-rail-count">${r.length}</span> <span class="bundle-code-rail-actions"><button type="button" class="bundle-code-rail-action" aria-label="Terminal" data-tooltip="Terminal" data-bundle-code-terminal-toggle aria-pressed="${F.bundleCodeTerminal?`true`:`false`}" @click="${()=>NB(!F.bundleCodeTerminal)}">${_w}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!l}" @click="${()=>jB(l,i)}"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="4.5"/><circle cx="8" cy="8" r="1.5"/><path d="M8 0v3m0 10v3M0 8h3m10 0h3"/></svg></button> <button type="button" class="bundle-code-rail-action" aria-label="Collapse directories" data-tooltip="Collapse directories" ?disabled="${h!==`files`||!!g||a.dirs.size===0}" @click="${()=>MB(a)}">${gw}</button></span></div>${i?A`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${i}">${i}</div>`:M}<bundle-code-search .modes="${m}"></bundle-code-search><div class="bundle-code-rail-body">${LT(h,[[`files`,()=>zB(a,l,g,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>XB(e,n,g,l,i)],[`issues`,()=>ZB(e,g,l,i)],[`largest`,()=>GB(e,n,g,l,i)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${C({"bundle-code-main":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${l?sV(e,l,d,f,p,t):A`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${F.bundleCodeTerminal?PB():M}</div></div>`}function iV(e){return A`<span class="bundle-code-file-nav"><button type="button" class="focus-code-nav-btn" data-bundle-code-history="back" aria-label="Back to the previously shown file" ?disabled="${e.at===0}">${pw}</button> <button type="button" class="focus-code-nav-btn" data-bundle-code-history="forward" aria-label="Forward to the next shown file" ?disabled="${e.at>=e.files.length-1}">${mw}</button></span>`}var aV=[];function oV(e){let t=aV.find(t=>t.text===e);if(t)return t.stats;let n=Lt(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Gr(_a(e))}`;return aV.unshift({text:e,stats:r}),aV.length=Math.min(aV.length,2),r}function sV(e,t,n,r,i,a=null){let o=Qk(F.bundleCodeHistory,e.integrity,t),s=fB(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&tA(t)!==null,p=f?iA(e,t,n,It(e),()=>{F.bundleSourceFile===t&&X()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=ND(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return A`<header class="bundle-code-main-bar">${iV(o)} ${qe(t,Ge(e,t))} <span class="bundle-code-main-path mono" data-tooltip-truncated data-tooltip="${t}">${t}</span> <button type="button" class="bundle-code-copy-path" data-copy-path="${t}" aria-label="Copy file path">${fw}</button> ${_?PD(_,a?.commitInfo):M} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?A`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${_B(u)}`}" data-tooltip="${`${u.length} ${u.length===1?`issue`:`issues`} in this file`}">${u.length}</span> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="-1" aria-label="Previous issue">‹</button> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="1" aria-label="Next issue">›</button></span>`:M} ${m?M:uB()} ${m?M:l} ${f?pB(p):M} ${typeof h==`string`?A`<span class="bundle-code-main-stats">${l===M?M:A`<span class="bundle-code-main-stats-room" aria-hidden="true">${oV(n)}</span>`}<span>${oV(h)}</span></span>`:M}</header><div class="bundle-code-main-body">${m?A`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:wB(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&I()&&!Ke(),c)}</div>`}var cV=400;function lV(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function uV(e,t,n){let r=[];for(let i of e){let e=Math.max(1,i.ln-n),a=Math.min(t,i.ln+n),o=r.at(-1);o&&e<=o.end+1?o.end=Math.max(o.end,a):r.push({start:e,end:a})}return r}function dV(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return LR(e,t,r>n-60?Math.max(0,r-60):0,n)}function fV(e,t,n){let r=dV(e,n??[],cV);return A`<div class="${C({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?A`<span class="bundle-search-clip">…</span>`:M}${RR(r.text,r.ranges)}</span></div>`}function pV(e,t,n,r,i){let{start:a,end:o}=n,s=a;for(let e=a;e<=o;e++)if(r.has(e)){s=e;break}let c=String(o).length,l=[];for(let e=a;e<=o;e++)l.push(fV(t[e-1]??``,e,r.get(e)??null));return A`${i?A`<div class="bundle-search-gap" aria-hidden="true"></div>`:M} <button type="button" class="bundle-search-snippet" style="${E({"--bundle-search-lineno-w":`${c}ch`})}" data-bundle-view-source="${e}" data-bundle-view-line="${s}" data-bundle-view-scroll-block="center">${l}</button>`}function mV(e,t,n){let{path:r,lines:i,hits:a}=e,o=LB(r,t),s=uV(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===F.bundleSourceFile;return A`<section class="${C({"bundle-search-file":!0,current:u})}"><header class="bundle-search-file-head"><button type="button" class="bundle-search-file-name mono" data-bundle-view-source="${r}" data-bundle-view-line="${l}" data-bundle-view-scroll-block="center" data-tooltip-truncated data-tooltip="${r}">${o}</button> <span class="bundle-search-file-count">${a.length} ${a.length===1?`match`:`matches`}</span></header><div class="bundle-search-snippets">${s.map((e,t)=>pV(r,i,e,c,t>0))}</div></section>`}function hV(e,t,n,r,i,a){if(!n)return A`<div class="bundle-search-results"><div class="bundle-search-hint">Search across every ${e.npm?`file of this version`:e.repository?`file of this directory`:`source in this bundle`}. Each match shows the surrounding lines for context — fewer matches get more context. Toggle <span class="bundle-search-hint-kbd">Aa</span> for case-sensitive and <span class="bundle-search-hint-kbd">.*</span> for regular-expression matching.</div></div>`;let o=jR(e.integrity??``,t,n,r,i,HB(e,t));if(o.error)return A`<div class="bundle-search-results"><div class="bundle-search-error"><span class="bundle-search-error-label">Invalid regular expression</span> <span class="bundle-search-error-msg mono">${o.error}</span></div></div>`;let{fileResults:s,totalHits:c,truncated:l}=o,u=_V(t);if(s.length===0)return A`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?lV(c):0,f=s.length;return A`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${f}${l?`+`:``} ${f===1?`file`:`files`}</span> ${u?A`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:M} ${l?A`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:M}</div>${D(s,e=>e.path,e=>mV(e,u,d))}</div>`}var gV=new WeakMap;function _V(e){return gV.has(e)||gV.set(e,Nn([...e.keys()].toSorted()).prefix),gV.get(e)}var vV={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function yV(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=vV;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=jR(e.integrity??``,t,r,i,a,HB(e,t));if(c.error)return null;let l;if(c.truncated){let e=DR(r,i,a);l=new Set;let t=o.split(`
185
- `);for(let n=0;n<t.length;n++)e.ranges(t[n]).length>0&&l.add(n+1)}else l=new Set(c.fileResults.find(e=>e.path===n)?.hits.map(({ln:e})=>e));return vV={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function bV(e,t,n,r){let i=F.bundleSourceFile;if(!i)return M;let a=t.get(i),{fileFindings:o,lineFindings:s}=SB(e,i,a),c=fB(e,r,i,a,o,s);return A`<aside class="bundle-search-side">${CB(i,null,c.toggle)}<div class="bundle-source-body">${wB(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function xV(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=F.bundleSearchQuery,i=F.bundleSearchRegex,a=F.bundleSearchCase,o=null;if(F.bundleSourceFile){let t=yV(e,n,F.bundleSourceFile,r,i,a);t&&t.size===0?(F.bundleSourceFile=null,F.bundleSourceFindingIdx=null):o=t}let s=F.bundleSearchContext;return A`<div class="bundle-search-view"><div class="bundle-search-bar-row"><bundle-search></bundle-search><mode-switch data-bundle-search-context label="Context" .checked="${s}" accessible-label="Toggle context lines"></mode-switch></div><div class="bundle-search-main">${hV(e,n,r,i,a,s)} ${bV(e,n,o,t)}</div></div>`}var SV=(e,t,n,r=!1,i=null)=>i?A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,CV=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...F.managedSession&&!F.managedSession.publicShare&&(F.managedSession.dependencyReview===!0||F.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],wV=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[DM(e),`Activity`]];function TV(e,t){return DN(()=>t===`commits`?A`<repository-history .repository="${e}" .repo="${JM(e)}" .refs="${qM(e.repoId)}"></repository-history>`:t===`agents`?A`<repository-agents .repository="${e}" .repo="${JM(e)}"></repository-agents>`:t===`pulse`?A`<repository-pulse .repository="${e}" .repo="${JM(e)}"></repository-pulse>`:t===`replay`?A`<repository-replay .repository="${e}" .repo="${JM(e)}"></repository-replay>`:A`<repository-issues .repository="${e}" .repo="${JM(e)}" .kind="${t}"></repository-issues>`)}function EV(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?cN(e):null,l=c??e.repository,u=!!c||a&&!!l&&!F.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:M;return A`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${I()&&e.managedId&&e.repoId==null?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-bundles`},bubbles:!0,composed:!0}))}">Bundles</button> <span aria-hidden="true">></span></span>`:M} ${s?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>Wj()}">npm</button> <span aria-hidden="true">></span></span>`:M} <span class="bundles-slide-icon" aria-hidden="true">${k(s?Qi:l?aa:Zi)}</span><div class="${C({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:Nj(s.name)}"></npm-version-select>`:l?A`<repository-code-source .repository="${l}" .tab="${t}" .repos="${KM()}" .refs="${qM(l.repoId)}"></repository-code-source>`:A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</div>`}</div><button type="button" class="bundles-download-btn bundles-scan-button" ?hidden="${!fR(e)}" @click="${()=>{pR(e)}}">${k(ra)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>SV(e,n,t,a||!!c,o))}</div>${u?A`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?RM(l):`the repository`}`}"></span>`:M}</header></bundle-slide-header><div class="${C({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:M}" @click="${d}">${r}</div></div>`}function DV({name:e,spec:t,tab:n}){return EV({npm:{name:e,version:t??`latest`}},n,CV(),A`<div class="bundles-slide-placeholder" role="status">Opening ${hj(e,t)}…</div>`,{opening:!0})}function OV(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?RM({repo:a,path:r}):r||`the repository`,d=n?` at ${n.slice(0,7)}`:``,f={repoId:t,repo:a,commit:n,path:r,revision:o},p=!!(n&&(l||s));return EV({repository:f},i,wV(i),p&&ui.has(i)?TV(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?A`<repository-treemap .repository="${f}"></repository-treemap>`:s?A`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${vN(e)}</div>`:A`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>fN(e,t):null})}function kV(e){let t=!!e.npm;t&&!ci.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!li.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`code`);let r=!t&&!n&&bz(e,F.bundleDetails,F.bundleDetailsTab===`advisories`);F.bundleDetailsTab===`advisories`&&!r&&(F.bundleDetailsTab=`overview`);let i=t||F.bundleDetailsTab===`compare`||Lx(F.bundles??[],F.selectedBundle).length>0,a=!I();F.bundleDetailsTab===`issues`&&!a&&!n&&(F.bundleDetailsTab=`overview`);let o=F.bundleDetailsTab,s=o===`overview`,c=F.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&qt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&kz(c,X).catch(()=>{}),EV(e,o,t?CV():n?wV(F.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?YV(e,c):u?LT(o,[[`terminal`,()=>A`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>A`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>A`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>rV(c,e)],[`search`,()=>xV(c,e)],[`commits`,()=>TV(e.repository,`commits`)],[`pulls`,()=>TV(e.repository,`pulls`)],[`agents`,()=>TV(e.repository,`agents`)],[`pulse`,()=>TV(e.repository,`pulse`)],[`replay`,()=>TV(e.repository,`replay`)],[`review`,()=>hR(()=>A`<npm-review .entry="${e}" .details="${c}" .request="${F.npmReview}" .session="${F.managedSession}" .source="${gI(e)}"></npm-review>`)],[`compare`,()=>hR(()=>A`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${F.bundleCompare}" .source="${t?gI(e):n?SI(e):null}"></bundle-compare>`)],[`issues`,()=>n?TV(e.repository,`issues`):NV(c)],[`advisories`,()=>Iz(c,X,fR(e)?()=>{pR(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?A`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?A`<div class="${C({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:A`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function AV(e,t={}){if(!e)return M;let n=[];if(e.fileHash&&(n=Mf(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=Nf(t.bucketKey,e):t.kind===`repository`&&(n=Pf(t.bucketKey,e))),n.length===0)return M;let r=n.slice(0,2),i=n.length-r.length;return A`<div class="bundle-issue-reports">${r.map(e=>{let t=st[Qx(e)]??st.default;return A`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})} ${i>0?A`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:M}</div>`}function jV(e){if(e==null||e===``)return``;let t=String(e),n=t.indexOf(`-`);if(n>0){let e=parseInt(t.slice(0,n),10),r=parseInt(t.slice(n+1),10);return Number.isFinite(e)&&Number.isFinite(r)&&r>e?`Lines ${e}-${r}`:Number.isFinite(e)?`Line ${e}`:``}let r=parseInt(t,10);return Number.isFinite(r)?`Line ${r}`:``}function MV(e,t){return A`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?A`<p class="bundle-issues-empty-hint">${t}</p>`:M}</div>`}function NV(e){if(e.managedId)return MV(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return MV(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return MV(`This bundle doesn't carry any source content.`,`Issues are matched by source-file hash, so a bundle without inline sources has nothing to match findings against.`);let t=Jz(e.fileHashes,`issues`);if(t.size===0){let t=Uz();if(t===0)return MV(`No issues match this bundle's files.`,`Issues are analyzer findings matched to this bundle by source-file hash. No hash-carrying findings are indexed yet — hash matching needs the analyzer's native JSON reports; drop one and any matches will appear here automatically.`);let n=0;for(let t of e.fileHashes.values())n+=Hz(t).length;return n>0?MV(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):MV(`No issues match this bundle's files.`,`None of the ${t.toLocaleString()} indexed ${t===1?`finding`:`findings`} reference a source file in this bundle \u2014 matching compares exact file hashes, so findings from a different build of the same project won't line up.`)}return PV(t,{kind:`bundle`})}function PV(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=Nn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=ji[_B(t)]??0,a=ji[_B(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?A`<span class="mono">${i}</span>`:M}</div><ul class="bundle-issues-list">${D(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=ji[e.severity]??0,r=ji[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return A`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?A`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?A`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:A`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${D(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=jV(i.line),l=s(i,F.triage.get(T(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=A`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?A`<span class="bundle-issues-finding-line">${c}</span>`:M} ${u?A`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:M} <span class="bundle-issues-finding-spacer"></span> ${AV(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${kw(Wi(i),{paragraphs:!1})}</div>`;return A`<li class="bundle-issues-finding">${t===`bundle`?A`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:A`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function FV(e){let t=F.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?kV(n):A`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var IV=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8"/><path d="m4.5 7 3.5 3.5L11.5 7"/><path d="M2.5 13h11"/></svg>`,LV=A`<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg>`,RV=Object.freeze({javascript:`#f1e05a`,jsx:`#f1e05a`,typescript:`#3178c6`,tsx:`#3178c6`,json:`#f1e05a`,css:`#663399`,markup:`#e34c26`,yaml:`#cb171e`,bash:`#89e051`,markdown:`#083fa1`,solidity:`#AA6746`,php:`#4F5D95`,rust:`#dea584`,ruby:`#701516`,java:`#b07219`,cpp:`#f34b7d`,c:`#555555`,objectivec:`#438eff`,python:`#3572A5`,go:`#00ADD8`,kotlin:`#A97BFF`,swift:`#F05138`,dart:`#00B4AB`,sql:`#e38c00`,lua:`#000080`,csharp:`#178600`,scala:`#DC322F`,vue:`#41B883`,svelte:`#FF3E00`}),zV=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function BV(e){if(RV[e])return RV[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return zV[(t>>>0)%zV.length]}function VV(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,or(t))}function HV(e){delete e.currentTarget.dataset.tooltip,sr()}var UV=e=>e.codeStats??=Kt(e.npm?new Map([...Xt(e)].filter(([e])=>!KA.test(e.slice(e.lastIndexOf(`/`)+1)))):Xt(e),Vt(e));function WV(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return M;let n=UV(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return M;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?A`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>A`<li><span class="bundles-languages-swatch" style="${E({background:BV(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:M;return A`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${VV}" @pointerleave="${HV}">${i.map(({key:e,label:t,lines:n})=>A`<span class="bundles-languages-segment" style="${E({flexGrow:n,background:BV(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function GV(e){try{await(await K()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function KV(e,t){let n=bR(t),r=WV(t);return A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?Ke()?A`<button type="button" class="bundles-download-btn" @click="${()=>{GV(e)}}">${IV}<span>Download bundle</span></button>`:A`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${IV}<span>Download bundle</span></a>`:A`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${IV}<span>Download bundle</span></button>`} ${n?A`<div class="bundles-export-pair"><button type="button" class="bundles-download-btn" data-bundle-export-sbom="cyclonedx" data-tooltip="Export a CycloneDX SBOM (.cdx.json)">CycloneDX</button> <button type="button" class="bundles-download-btn" data-bundle-export-sbom="spdx" data-tooltip="Export an SPDX SBOM (.spdx.json)">${LV}<span>SPDX</span></button></div>`:M}</div>${r}</div>`}function qV(e,t,{placeholder:n=M,overviewClass:r=``}={}){return A`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function JV(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function YV(e,t){if(e.npm)return QV(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>A`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?A`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?M:A`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:M} ${ot(i,t,e.commitInfo).map(t=>A`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?k(oa):M}<span>${t.text}</span></a> ${t.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${it(e.commitInfo,t.commit.hash)??M}" target="_blank" rel="noopener noreferrer">${k(sa)}<span>${t.commit.text}</span></a>`:M} ${t.commit?.tags?A`<span class="bundle-origin-tags">${t.commit.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${k(qi)}<span>${e.name}</span></a>`)}</span>`:M}</dd>`)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M} ${i?.entries?.size>0?A`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>A`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${LB(e,t)}</button></li>`)}</ul></dd>`:M} ${n&&Number.isSafeInteger(a)?A`<dt>Size</dt><dd>${Gr(a)}</dd>`:M}</dl>`,s=KV(e,t);if(!n)return qV(o(``,!0),s);if(t.error)return qV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Vt(t),r=e.sources??[...n.keys()],i=t.sourceSizes??(n.size===r.length?r.map(e=>n.get(e)??null):r.map((t,n)=>typeof e.sourcesContent?.[n]==`string`?_a(e.sourcesContent[n]):null));return oB(o,A`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?A`<dt>Output</dt><dd class="mono">${e.file}</dd>`:M} ${e.sourceRoot?A`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:M} ${e.names||t.namesCount!=null?A`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:M}`,r,i,null,s,{bundleSize:t.size,unpackedSize:JV(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Vt(t),{sourceNames:r,resources:i}=ZV(Ht(t)),a=new Set;for(let t of e.imports.keys()){let e=t.replace(/\s*\(with: .*\)\s*$/u,``);for(let t of e.split(`, `))a.add(t)}let c=[...a].toSorted(),l=r.map(e=>n.get(e));return oB(o,A`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?A`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:M}`,r,l,Wt(t),s,{bundleSize:t.size,unpackedSize:JV(l),resources:i,details:t})}return qV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var XV=new WeakMap;function ZV(e){if(!XV.has(e)){let t=[...e.keys()];XV.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return XV.get(e)}function QV(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=A`<a class="bundles-download-btn" href="${n}">${IV}<span>Tarball</span></a>`,i=A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${fP(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return qV(yM(e,{githubFigures:PP(e),provenance:zP(e),provenanceNamesBuilder:IP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Vt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=YP(t),d=wP(e.npm);return oB(t=>yM(e,{prefix:t,githubFigures:PP(e),provenance:zP(e),provenanceNamesBuilder:IP(e.npm),files:c}),xM(e,c,t),a,s,null,M,{bundleSize:t.size,unpackedSize:JV(s),resources:l,leadColumn:A`${dM(e)}${UP(e)}`,trailColumns:fI(l,o),summaryExtra:A`${DP(e,c)}${rF(e,t)}${dI(e,WV(t,{legend:!0}),t)}${kP(e,r,vF(e))}`,overviewClass:`npm-overview`,lines:UV(t).lines,sized:(e,t,n)=>vA(e,u[e],n),fileTag:e=>A`${TP(d.get(e))}${iF(t,e,!0)}`,fileFlags:e=>oF(t,e,d.get(e)),fileIcon:e=>qe(e,l.has(e)?`binary`:void 0),fileFilter:$P(e)})}function $V(){Hf().catch(()=>{});let e=Af(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,F.triage.get(T(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===F.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>pf(e,t)),n.push([r,{findings:a,files:o,reports:c,versions:e}]))}let r=F.selectedPackage,i=r?n.find(([e])=>e===r)??null:null,a=null;if(i){let e=i[1].versions,t=F.selectedPackageVersion;a=e.find(([e])=>e===t)??null,!a&&e.length===1&&(a=e[0])}let o=a?a[1]:i?i[1]:null;if(i&&F.packageDetailsTab===`issues`)return oH(i[0],o,a?a[0]:void 0);let c=F.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();iH(l,F.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?A`${n.length} ${n.length===1?`package`:`packages`}`:A`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?A`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:M}</div></div>${nH(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?A`<p style="${E({color:`var(--muted)`})}">No packages match "${F.packagesSearchQuery}".</p>`:A`<div class="${f}"><ul class="packages-list">${D(eH(l),tH,e=>sH(e,r,F.selectedPackageVersion))}</ul>${i?A`<aside class="packages-details" id="packages-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-package aria-label="Close details">×</button></header><div class="packages-details-body">${uH(i[0],o,a?a[0]:void 0)}</div></aside>`:M}</div>`}</div>`}function eH(e){let t=[];for(let[n,r]of e){let e=r.versions;if(e.length<=1){let[r,i]=e[0];t.push({kind:`single`,pkg:n,version:r,bucket:i,totalVersions:1});continue}let[i,a]=e[0],o=F.expandedPackages.has(n);if(t.push({kind:`latest`,pkg:n,version:i,bucket:a,totalVersions:e.length,expanded:o}),o)for(let r=1;r<e.length;r++){let[i,a]=e[r];t.push({kind:`other`,pkg:n,version:i,bucket:a,totalVersions:e.length})}}return t}function tH(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function nH(e){return A`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${rH}"></triage-selector></div>`}var rH=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function iH(e,t){let n=t===`name-asc`?(e,t)=>e[0].localeCompare(t[0]):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||e[0].localeCompare(t[0]):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||e[0].localeCompare(t[0]):(e,t)=>t[1].findings.length-e[1].findings.length||e[0].localeCompare(t[0]);e.sort(n)}function aH(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,F.triage.get(T(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function oH(e,t,n){let r=Af().get(e),i=aH(r,n),a=F.packageSlideTriage??`live`,o=r?dH(r,e,a,n):new Map,s=[...o.values()].reduce((e,t)=>e+t.length,0),c=a===`live`?s===1?`issue`:`issues`:s===1?`${a} issue`:`${a} issues`,l=a===`live`?`No live issues for this package.`:`No ${a} issues for this package.`,u=typeof n==`string`?` @ ${n}`:``;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="package-slide-back" aria-label="Back to packages">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${`${e}${u}`}">${e}${u}</div><div class="bundles-slide-integrity">${s} ${c} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="package" .counts="${i}"></slide-triage-tabs></header><div class="bundles-slide-body">${o.size===0?A`<div class="bundle-issues-empty">${l}</div>`:PV(o,{kind:`package`,bucketKey:e})}</div></div>`}function sH(e,t,n){let{kind:r,pkg:i,version:a,bucket:o}=e,s={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of o.findings){let t=O(e,F.severityMode);s[t]!==void 0&&s[t]++}let c=Mi.filter(e=>s[e]>0),l=Ar(i),u={selected:i===t&&cH(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return A`<li class="${C(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${E({background:l})}"></span><div class="packages-row-text"><div class="packages-name-line"><span class="packages-name" data-tooltip-truncated data-tooltip="${a===null?i:`${i}@${a}`}">${i}${a===null?M:A`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?lH(i,e.expanded,e.totalVersions-1):M}</div><span class="packages-row-meta">${o.findings.length} ${o.findings.length===1?`finding`:`findings`} · ${o.files.size} ${o.files.size===1?`file`:`files`} · ${o.reports.size} ${o.reports.size===1?`report`:`reports`}</span></div>${c.length>0?A`<div class="packages-row-chips">${c.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-package-row-issues="${i}" data-package-row-issues-version="${d}" aria-label="${f}">Issues →</button></li>`}function cH(e,t){return e.kind===`single`||e.version===t}function lH(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return A`<button type="button" class="${C({"packages-row-expand":!0,expanded:t})}" data-package-expand="${e}" aria-expanded="${String(t)}" aria-label="${t?`Hide older versions of ${e}`:`Show older versions of ${e}`}" data-tooltip="${t?`Hide older versions`:`Show older versions (${n})`}"><span class="packages-row-expand-chevron" aria-hidden="true"></span> <span class="packages-row-expand-label">${r}</span></button>`}function uH(e,t,n){let r=Af().get(e),i=[...(r?dH(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-package-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${i>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:M}</div>${fH(e,t,n)}`}function dH(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,F.triage.get(T(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=pH(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function fH(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Mi.filter(e=>r[e]>0),a=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),o=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),s=Af().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return A`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?A`<dt>Version</dt><dd class="mono">${n}</dd>`:M} ${l?A`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:M}<dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${i.length>0?A`<div class="packages-detail-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=Jx[Qx(e)]??Jx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=pH(e,t);return A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${t}">${r}</span> <span class="packages-detail-file-count">${n.length}</span></li>`})}</ul>`}function pH(e,t){for(let n of[`node_modules`,`dependencies`]){let r=`${n}/${e}/`,i=t.indexOf(r);if(i>=0)return t.slice(i+r.length)}return t.startsWith(`${e}/`)?t.slice(e.length+1):t}function mH(){Hf().catch(()=>{});let e=jf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,F.triage.get(T(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===F.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=F.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&F.repositoryDetailsTab===`issues`)return yH(i[0],i[1]);let a=F.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||Ln(e).toLowerCase().includes(a)):n.slice();_H(o,F.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?A`${n.length} ${n.length===1?`repository`:`repositories`}`:A`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?A`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:M}</div></div>${hH(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?A`<p style="${E({color:`var(--muted)`})}">No repositories match "${F.repositoriesSearchQuery}".</p>`:A`<div class="${u}"><ul class="packages-list">${D(o,([e])=>e,([e,t])=>bH(e,t,e===r))}</ul>${i?A`<aside class="packages-details" id="repositories-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-repository aria-label="Close details">×</button></header><div class="packages-details-body">${xH(i[0],i[1])}</div></aside>`:M}</div>`}</div>`}function hH(e){return A`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${gH}"></triage-selector></div>`}var gH=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function _H(e,t){let n=t===`name-asc`?(e,t)=>Ln(e[0]).localeCompare(Ln(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||Ln(e[0]).localeCompare(Ln(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||Ln(e[0]).localeCompare(Ln(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||Ln(e[0]).localeCompare(Ln(t[0]));e.sort(n)}function vH(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,F.triage.get(T(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function yH(e,t){let n=jf().get(e),r=vH(n),i=F.repositorySlideTriage??`live`,a=n?SH(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${Ln(e)}">${Ln(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?A`<div class="bundle-issues-empty">${c}</div>`:PV(a,{kind:`repository`,bucketKey:e})}</div></div>`}function bH(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Mi.filter(e=>r[e]>0),a=Ar(e),o=Ln(e);return A`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${E({background:a})}"></span><div class="packages-row-text"><span class="packages-name" data-tooltip-truncated data-tooltip="${o}">${o}</span> <span class="packages-row-meta">${t.findings.length} ${t.findings.length===1?`finding`:`findings`} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</span></div>${i.length>0?A`<div class="packages-row-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function xH(e,t){let n=jf().get(e),r=[...(n?SH(n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-repository-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${r>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:M}</div>${CH(e,t)}`}function SH(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`invalid`?n===`invalid`:t===`deleted`?n===`deleted`:n!==`invalid`&&n!==`deleted`});e.length>0&&n.set(r,e)}return n}function CH(e,t){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);n[t]!==void 0&&n[t]++}let r=Mi.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return A`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${Ln(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?A`<div class="packages-detail-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Jx[Qx(e)]??Jx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function wH(e,t){let n=new Set(e),r=new Set,i=new Map,a=new Map(e.map((e,t)=>[e,t]));for(let e of t){let t=[...new Map(e.members.map(e=>[JSON.stringify([e.id,o(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)r.add(e.id);let c=t.filter(e=>n.has(e.id)||e.isApp),l=JSON.stringify([t.map(e=>e.id).toSorted(),c.map(e=>[e.id,o(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=i.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>a.get(e.id)))},i.set(l,u)),u.reports.some(t=>t.name===e.report&&t.managedReportId===e.managedReportId)||u.reports.push({name:e.report,...e.managedReportId?{managedReportId:e.managedReportId}:{},findingId:s[0].id,rowIndex:e.index})}return{rows:[...i.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!r.has(e))}}function TH(e,t,n){return`${e} ${e===1?t:n}`}function EH(e,t){let n=s(e,F.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>_n(F.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return M;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:ki[i];return A`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>x(e)).join(`, `):M}">${c}</span>`}function DH(e,t=[],n=!0,r=M){let{id:i,title:a}=e,o=t[0]?.name,s=rr(i),c=tr(i)??s;return A`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?A`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??M}" data-preview-managed-report="${t[0].managedReportId??M}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:ei(i)?A`<a class="links-finding-id mono" href="${`#${Hr({id:i})}`}" data-tooltip="${s}">${c}</a>`:A`<span class="links-finding-id mono">${c}</span>`} ${a?A`<span class="links-finding-title">${a}</span>`:M} ${EH(e,t)} ${n?M:A`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function OH(e){let t=!!F.currentLinks?.managedId;return A`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>A`<button type="button" class="links-finding-report report-button" data-links-report="${t?M:e}" data-links-finding="${n}" data-managed-report="${r??M}" data-links-preview="${t?n:M}" data-preview-report="${t?e:M}" data-preview-row="${t?i:M}" data-preview-managed-report="${t?r:M}">${k(st[Qx(e)]??st.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${x(e)}">${x(e)}</span></button>`)}</div>`}function kH(e,t){let n=e.reports.toSorted((e,t)=>x(e.name).localeCompare(x(t.name)));if(e.members.length===1){let r=e.members[0];return A`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${DH(r,n,t.has(r.id),OH(n))}</ul></li>`}return A`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${TH(e.members.length,`finding`,`findings`)} in row</span> ${OH(n)}</div><ul class="links-row-members">${e.members.map(e=>DH(e,n,t.has(e.id)))}</ul></li>`}function AH(e,t){let{rows:n,missing:r}=wH(e,Zd(e)),i=new Set(e);return A`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${TH(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${D(n,e=>e.key,e=>kH(e,i))}</ul>${r.length>0?A`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>DH({id:e,title:Xd(e)}))}</ul></div>`:M}</li>`}function jH(e=M){let t=F.currentLinks;if(!t)return M;Hf().catch(()=>{});let{name:n,groups:r,skipped:i}=t,a=new Set,o=new Set,s=0;for(let e of r)for(let t of e){if(a.has(t))continue;a.add(t);let e=Yd(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return A`<div class="links-view">${t.managedId?A`<div class="meta-row"><button type="button" class="report-button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-deduplication`}}))}">‹ Deduplication</button></div>`:M}<header class="page-head"><div class="page-title"><h1>Links${e}</h1><div class="meta-row"><span class="links-file-name" data-tooltip-truncated data-tooltip="${n}">${k(Jx[Qx(n)]??Jx.default)}${x(n)}</span> <span>${TH(r.length,`link`,`links`)}</span> <span>${TH(a.size,`finding`,`findings`)}</span> ${o.size>0?A`<span>found in ${TH(o.size,`report`,`reports`)}</span>`:M}</div></div></header>${s<a.size?A`<p class="links-note">${TH(a.size-s,`linked finding is`,`linked findings are`)} not in any report you hold. Import the reports they came from and this page fills in.</p>`:M} ${i>0?A`<p class="links-note">${TH(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:M} ${r.length===0?A`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:A`<ol class="links-list">${D(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>AH(e,t))}</ol>`}</div>`}function MH(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function NH(){if(F.currentWorkspace){let e=R().find(e=>e.id===F.currentWorkspace),t=F.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:F.currentWorkspace,fileNames:e?MH(e.reports??[],F.storedFiles??[],t):t}}if(F.currentFile){let e=R().find(e=>Array.isArray(e.reports)&&e.reports.includes(F.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[F.currentFile]}:null}return null}var PH=1500;function FH({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>kv()}){let r=new Set,i=!1;function a(a,o,{onSync:s,retry:c}={}){!a||!Array.isArray(o)||o.length===0||i||r.has(a)||(i=!0,t(async()=>{let l;if(n())l={shown:!1,sync:!1};else try{l=await e([...o])}catch{l={shown:!1,sync:!1}}if(i=!1,!l.shown){typeof c==`function`&&t(c,PH);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function IH(e,t,n=0){let{viewMode:r,focusGid:i,tableSelectedGid:a,kanbanPopoverGid:o}=t,s=r===`focus`?i:r===`table`?a:r===`kanban`?o:null;return(s?e.find(e=>H(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function LH(e,t){if(t.currentView!==`findings`)return null;let n=mi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:T(Rg(e))}};return si(r)?r:n}function RH(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function zH(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Gr(e.byteSize)),t&&[t.files,t.lines].every(e=>Number.isSafeInteger(e)&&e>=0)&&n.push(`${t.files.toLocaleString()} files`,`${t.lines.toLocaleString()} LoC`),n.join(` · `)}function BH(e,t=``){let n=t.trim().toLowerCase(),r=e=>String(e??``).toLowerCase().includes(n);return(Array.isArray(e)?e:[]).flatMap(e=>{let t=(e.reports??[]).filter(e=>r(e.filename)||r(x(e.filename??``))),n=(e.bundles??[]).filter(e=>r(e.filename));return r(e.name)||t.length>0||n.length>0?[{team:e,reports:t,bundles:n}]:[]})}function VH(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function HH(e){return(e?.appMode?e.appFindings:e?.findings)??null}var UH=class{constructor(){this.expanded=new Map}sync(e,t=!1){let n=JSON.stringify([e.managedSession?.id,e.managedSession?.role,e.managedSession?.csrfToken]);n!==this.owner&&(this.expanded.clear(),this.focus=``,this.owner=n);let r=e.managedTeams??[];for(let e of this.expanded.keys())r.some(t=>t.id===e)||this.expanded.delete(e);let i=zx(e),a=[`findings`,`files`,`links`].includes(e.currentView)?e.currentManagedReport:null,o=i?`bundles`:`reports`,s=r.find(t=>t.id===e.currentManagedTeam&&(i?t.bundles?.some(e=>e.id===i):t.reports?.some(e=>e.id===a))),c=JSON.stringify([o,i||a,s?.id]);if((t||c!==this.focus)&&(this.focus=c,s)){let e=this.expanded.get(s.id)??new Set;e.add(o),this.expanded.set(s.id,e)}}toggle(e,t){let n=this.expanded.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),this.expanded.set(e,n)}shown(e,t,n,r){return!n||r||this.expanded.get(e)?.has(t)===!0}};function WH(e,t,n=()=>null){if(!e.currentWorkspace)return null;if(e.currentManagedTeam){let t=e.managedTeams.find(t=>t.id===e.currentManagedTeam);if(!t)return null;let n=(t.reports??[]).filter(e=>e.analyzer!==`links`).map(e=>({...e,managedId:e.id,name:e.filename,hidden:e.visible===!1,available:!0})),r=(t.bundles??[]).map(e=>({...Rx(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:HH(t.app),reports:n,bundles:r,repositories:GH(t.repos??[],n,r,rt(i)),dependencyReview:t.dependencyReview===!0}}let r=t.find(t=>t.id===e.currentWorkspace);if(!r)return null;let i=new Map(e.bundles.map(e=>[e.integrity,e])),a=new Set(e.storedFiles??[]);return{id:r.id,scope:`workspace`,title:`Workspace: ${r.name}`,reports:[...new Set(r.reports??[])].filter(e=>n(e)!==`links`).map(e=>({name:e,available:a.has(e)})),bundles:[...new Set(r.bundles??[])].map(e=>{let t=i.get(e);return t?{...t,available:!0}:{integrity:e,name:`${e.slice(0,24)}\u2026`,available:!1}})}}function GH(e,t,n,r){let i=new Map;for(let{repoId:t,fullName:n,path:a}of e){let e=i.get(t)??{repoId:t,name:n,paths:[],reports:0,bundles:0,available:r};a&&e.paths.push(a),i.set(t,e)}let a=new Map([...i.values()].map(e=>[e.name,e]));for(let e of t)a.has(e.repoFullName)&&a.get(e.repoFullName).reports++;for(let e of n)i.has(e.repoId)&&i.get(e.repoId).bundles++;return[...i.values()]}var KH=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],qH=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function JH(e,t,{findings:n=e.findings,statusBar:r=M}={}){let i=qH(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return A`<bundle-slide-header class="bundles-slide-header team-slide-header"><header class="bundles-slide-bar team-slide-bar"><h1 class="team-slide-name" data-tooltip-truncated data-tooltip="${e.title}">${e.title}</h1>${r}<div class="bundles-slide-tabs" role="tablist" aria-label="Team">${KH.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>A`<button type="button" class="${C({"bundles-tab":!0,"team-slide-tab":!0,active:i===e})}" role="tab" aria-selected="${String(i===e)}" data-action="${`workspace-${e}`}">${t}${a[e]==null?M:A`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function YH(e){return A`${e?.scope===`team`?JH(e,`findings`):M}<p class="triage-loading" role="status">Loading report triage…</p>`}function XH(e,t){return t===`findings`?e.title:A`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function ZH(e,t,n){if(!e)return M;let r=e[t].length;if(t===`bundles`&&r===0)return M;let i=n===`workspace-${t}`;return A`<button type="button" class="${`files-toggle-btn${i?` active`:``}`}" data-action="${`workspace-${t}`}" aria-pressed="${String(i)}">${`${r} ${r===1?t.slice(0,-1):t}`}</button>`}function QH(e,t){if(!(e>1))return M;let n=t===`files`;return A`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function $H(e){let t=[e.reports?`${e.reports.toLocaleString()} report${e.reports===1?``:`s`}`:null,e.bundles?`${e.bundles.toLocaleString()} bundle${e.bundles===1?``:`s`}`:null].filter(Boolean).join(` · `),n=A`<span class="workspace-content-icon">${k(aa)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?A`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:M} </span><span class="workspace-content-stats">${t}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}`;return A`<li>${e.available?A`<button type="button" class="workspace-content-row" data-workspace-repository="${e.repoId}" data-repository-name="${e.name}" data-repository-path="${e.paths.length===1?e.paths[0]:``}">${n}</button>`:A`<div class="workspace-content-row">${n}</div>`}</li>`}function eU(e,t){if(!e)return A`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return A`<section class="workspace-content-view">${JH(e,n)} ${e.dependencyReview?A`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:A`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return A`<section class="workspace-content-view">${e.scope===`team`?JH(e,n):A`<header class="page-head"><div class="page-title"><h1>${XH(e,n)}${ZH(e,`reports`,n)}${ZH(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?A`<ul class="workspace-content-list">${t===`repositories`?r.map($H):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Gr(e.size):null,Number.isFinite(e.summary?.files)?`${e.summary.files.toLocaleString()} files`:null,Number.isFinite(e.summary?.lines)?`${e.summary.lines.toLocaleString()} LoC`:null].filter(Boolean).join(` · `),r=e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:null;return A`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:M}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:M}" ?disabled="${!e.available}"><svg class="workspace-content-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="${t===`bundles`?`m12 3 9 5v8l-9 5-9-5V8zM3 8l9 5 9-5M12 13v8M7.5 5.5l9 5`:`M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 13h8M8 17h5`}/"></path></svg> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}${e.hidden?A`<span class="workspace-content-visibility">Hidden</span>`:M}</span> ${r?A`<span class="workspace-content-repo">${r}</span>`:M} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}</button></li>`})}</ul>`:A`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var tU=3e5,nU=3e4,rU=2,iU=20,aU=new Map,oU=[],sU=[],cU=new Map,lU=new Set,uU=null,dU=0;function fU(e){return lU.add(e),()=>lU.delete(e)}var pU=e=>{for(let t of lU)t(e)};function mU(){aU.clear(),oU.length=0,sU.length=0,cU.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{mU(),pU()});function hU(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==uU&&(mU(),uU=e),aU}var gU=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,_U=e=>Number.isSafeInteger(e)&&e>=0?e:null,vU=new Set([`git`,`tarball`,`integrity`]);function yU(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,reviewers:a,baseline:o,reviewed:s,unsupported:c,patched:l,...u}=e,d=xU(a);return[{...u,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...l===!0?{patched:l}:{},...vU.has(c)?{unsupported:c}:o===!0?{baseline:o}:s===!0?{reviewed:s}:_U(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},..._U(i)>0?{commented:i}:{},...d.length>0?{reviewers:d}:{}}}]}var bU=new Set([`accept`,`accept-with-nits`,`request-changes`,`reject`]),xU=e=>Array.isArray(e)?e.flatMap(e=>typeof e?.login==`string`&&bU.has(e.status)?[{login:e.login,status:e.status,...e.passes===!0?{passes:!0}:{},...e.comment===!0?{comment:!0}:{}}]:[]):[],SU=e=>Array.isArray(e)?e.flatMap(yU):[];function CU(e){if(!Array.isArray(e?.lockfiles))throw Error(`The server answered with no lockfiles.`);let t=e.lockfiles.filter(e=>Array.isArray(e?.paths)&&(Array.isArray(e.added)||typeof e.error==`string`)).map(e=>e.error?e:{...e,added:e.added.flatMap(yU),more:_U(e.more)??0,unreviewed:SU(e.unreviewed),moreUnreviewed:_U(e.moreUnreviewed)??0,unsupported:SU(e.unsupported),moreUnsupported:_U(e.moreUnsupported)??0,moreLocked:_U(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},..._U(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,..._U(n.toReview)===null?{}:{toReview:n.toReview},..._U(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},..._U(n.unsupported)===null?{}:{unsupported:n.unsupported},...Array.isArray(n.baselineUnread)&&n.baselineUnread.every(e=>typeof e==`string`)?{baselineUnread:n.baselineUnread}:{},...n.reviewedDependencies===!0?{reviewedDependencies:!0}:{},..._U(n.unasked)>0?{unasked:n.unasked}:{},..._U(n.commentReviews)>0?{commentReviews:n.commentReviews}:{},...n.commentsFailed===!0?{commentsFailed:!0}:{},...typeof n.baselineError==`string`?{baselineError:n.baselineError}:{},...[`exclude`,`include`].includes(n.lockfiles?.mode)&&Array.isArray(n.lockfiles.paths)&&n.lockfiles.paths.every(e=>typeof e==`string`)?{lockfiles:{mode:n.lockfiles.mode,paths:n.lockfiles.paths}}:{}}}:{}}}function wU(){for(;dU<rU&&oU.length+sU.length>0;){let e=oU.shift()??sU.shift(),t=[e];for(let n=0;e.background&&n<sU.length&&t.length<iU;){let r=sU[n];r.pull.repoId===e.pull.repoId&&r.review===e.review?t.push(...sU.splice(n,1)):n++}for(let e of t)cU.delete(e.key);dU++,EU(t).finally(()=>TU(t))}}function TU(e){dU--;for(let t of e)pU(t.pull);wU()}function EU(e){let[{pull:{repoId:t,number:n},review:r}]=e;return e.length===1?Mb(t,n,{review:r}).then(e[0].settle,e[0].settle):Nb(t,e.map(e=>e.pull.number),{review:r}).then(t=>{for(let n of e)n.settle(t.get(n.pull.number)??Error(`The server answered with none of it.`));return null},t=>{for(let n of e)n.settle(t)})}function DU(e,t,n=!1,{background:r=!1}={}){let i=hU(),a=`${e}\0${t}\0${n}`,o=i.get(a);if(o&&Date.now()<o.until){let e=cU.get(a);return!r&&e?.background&&(sU.splice(sU.indexOf(e),1),e.background=!1,oU.push(e)),o}let s=o?.status===`ready`?{...o,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};i.set(a,s);let c={key:a,background:r,review:n,pull:{repoId:e,number:t},settle:e=>{if(i.get(a)!==s)return;let t=OU(e,o);t?i.set(a,t):i.delete(a)}};return cU.set(a,c),(r?sU:oU).push(c),wU(),s}function OU(e,t){let n=e instanceof Error?e:null;if(!n)try{return{status:`ready`,until:Date.now()+tU,...CU(e)}}catch(e){n=e}return n?.name===`AbortError`?t?.status===`ready`?t:null:{status:`error`,until:Date.now()+nU,error:n?.message||`Its lockfiles could not be read.`}}function kU(e,t,n=!1){let r=hU();for(let[i,a]of t){let t=`${e}\0${i}\0${n}`,o=cU.get(t);if(o){let e=o.background?sU:oU;e.splice(e.indexOf(o),1),cU.delete(t)}let s=OU(a,null);s&&r.set(t,s),pU({repoId:e,number:i})}}function AU(e,t,n=!1){return hU().get(`${e}\0${t}\0${n}`)??null}var jU=new WeakMap;function MU(e,{lockfiles:t,review:n},r){let i=jU.get(t)??jU.set(t,new Map).get(t),a=i.get(e);if(a&&a.review===n)return a.value;let o=r();return i.set(e,{review:n,value:o}),o}function NU(e){return MU(`added`,e,()=>PU(e))}function PU({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=`${r.name}@${r.version??``}`,i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,patched:l,reviewers:u,...d}=i;n.set(e,{...d,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},...IU(i,r,t)})}let r=[...n.values()],i=r.filter(e=>!e.was);return{versions:[...i,...r.filter(e=>e.was)],fresh:i.length,updated:r.length-i.length,more:e.some(e=>e.more>0),toReview:t?.toReview??r.filter(e=>LU(e,t)===`wanted`).length}}var FU={unsupported:0,wanted:1,passed:2,baseline:3};function IU(e,t,n){let r=e=>FU[LU(e,n)]??4,{unsupported:i,baseline:a,reviewed:o,reviews:s,rejected:c,reviewers:l}=r(t)<r(e)||r(t)===r(e)&&(t.reviews??1/0)<(e.reviews??1/0)?t:e,u=Math.max(e.commented??0,t.commented??0);return{...e.patched||t.patched?{patched:!0}:{},...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...u>0?{commented:u}:{},...l?{reviewers:l}:{}}}}function LU(e,t){return t?e.unsupported?`unsupported`:e.baseline?`baseline`:e.reviewed?`passed`:e.reviews==null?null:e.reviews>=t.required&&!e.rejected?`passed`:`wanted`:null}function RU(e){return MU(`unreviewed`,e,()=>zU(e))}function zU({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=`${t.name}@${t.version??``}`;n.has(e)||n.set(e,t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function BU(e){return MU(e.cut?`failures-cut`:`failures`,e,()=>VU(e))}function VU({lockfiles:e,cut:t,review:n}){if(!n)return null;let r=new Map;for(let t of e.flatMap(e=>e.unsupported??[])){let e=`${t.source}\0${t.name}@${t.version??``}\0${t.from??``}`;r.has(e)||r.set(e,t)}let i=t=>e.reduce((e,n)=>e+(n[t]??0),0),a={versions:[...r.values()],count:n.unsupported??r.size+i(`moreUnsupported`),unread:e.filter(e=>e.error),unchecked:i(`moreLocked`),cut:t};return a.count>0||a.unread.length>0||a.unchecked>0||t?a:null}var Y=e=>A`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,HU=j`<circle cx="8" cy="8" r="6.25"/>`,UU=j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8"/><circle cx="11.5" cy="12.5" r="1.6"/>`,WU={issues:{open:Y(j`${HU}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(j`${HU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(j`${HU}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(j`${UU}<path d="M11.5 10.9V6.5a2 2 0 0 0-2-2H7.4M8.9 3 7.4 4.5 8.9 6"/>`),draft:Y(j`${UU}<path class="dotted" d="M11.5 10.9V4"/>`),merged:Y(j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8M4.5 5.1c0 2.4 2.4 3.4 5.4 3.4"/><circle cx="11.5" cy="8.5" r="1.6"/>`),closed:Y(j`${UU}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},GU=Y(j`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),KU={success:[`Checks passed`,Y(j`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,Y(j`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,Y(j`<circle class="fill" cx="8" cy="8" r="3"/>`)]},qU={approved:[`Approved`,Y(j`${HU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,Y(j`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,Y(j`<path d="M1.25 8S3.75 3.5 8 3.5 14.75 8 14.75 8 12.25 12.5 8 12.5 1.25 8 1.25 8z"/><circle cx="8" cy="8" r="2"/>`)]},JU=Y(j`<circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="12.5" r="1.5"/><path d="M4 5v6M12 11V6a2 2 0 0 0-2-2H7m1.5-1.5L7 4l1.5 1.5"/>`),YU=Y(j`<circle cx="4" cy="3" r="1.5"/><circle cx="4" cy="13" r="1.5"/><circle cx="12" cy="3" r="1.5"/><path d="M4 4.5v7m0-3h3a5 5 0 0 0 5-4"/>`),XU=Y(j`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),ZU=Y(j`<path d="M8 1.75 2.25 4.5v7L8 14.25l5.75-2.75v-7z"/><path d="M2.25 4.5 8 7.25l5.75-2.75M8 7.25v7"/>`);function QU(e,t){return e===`pulls`?t.state===`merged`?[`merged`,`Merged`]:t.state===`closed`?[`closed`,`Closed`]:t.draft?[`draft`,`Draft`]:[`open`,`Open`]:t.state===`open`?[`open`,`Open`]:t.reason===`not-planned`||t.reason===`duplicate`?[`not-planned`,t.reason===`duplicate`?`Closed as duplicate`:`Closed as not planned`]:[`completed`,`Closed`]}var $U={claude:A`<span class="agent-logo" aria-hidden="true">${Dy(`anthropic`)}</span>`,codex:A`<span class="agent-logo" aria-hidden="true">${Dy(`openai`)}</span>`,copilot:A`<span class="agent-logo" aria-hidden="true">${Dy(`github-copilot`)}</span>`},eW={claude:`Claude`,codex:`Codex`},tW=new Map;function nW(e){for(let t of e)tW.set(t.id,t)}var rW=e=>eW[e]??tW.get(e)?.name??e;function iW(e){if($U[e])return $U[e];let t=tW.get(e)?.avatar;return t?A`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:M}var aW=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function oW(e){return e.sessions[0]?`https://claude.ai/code/${e.sessions[0]}`:e.tasks[0]?`https://chatgpt.com/codex/tasks/${e.tasks[0]}`:null}function sW(e,t){return t?e.pulls[0]?`https://github.com/${t}/pull/${e.pulls[0].number}`:e.commits[0]?`https://github.com/${t}/commit/${e.commits[0].oid}`:e.branches[0]?cW(t,e.branches[0]):null:null}function cW(e,t){let[n,r]=t.includes(`:`)?[t.slice(0,t.indexOf(`:`)),t.slice(t.indexOf(`:`)+1)]:[null,t],i=r.split(`/`).map(encodeURIComponent).join(`/`);return n?`https://github.com/${encodeURIComponent(n)}/${encodeURIComponent(e.split(`/`)[1]??``)}/tree/${i}`:`https://github.com/${e}/tree/${i}`}var lW=(e,t)=>oW(e)??sW(e,t),uW=`100% 0px`,dW=new WeakMap,fW=new WeakMap,pW=[],mW=!1,hW=new WeakMap;function gW(e){let t=hW.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,hW.set(e,t)}return t}function _W(e){let t=e.parentNode;for(;t;){if(t.nodeType===Node.DOCUMENT_FRAGMENT_NODE){t=t.host??null;continue}if(t.nodeType!==Node.ELEMENT_NODE||t===document.documentElement)return null;if(gW(t))return t;t=t.parentNode}return null}function vW(e){for(let t of e)fW.get(t.target)?.cb(t.isIntersecting)}function yW(e){let t=e??document,n=dW.get(t);return n||(n=new IntersectionObserver(vW,{root:e,rootMargin:uW,threshold:0}),dW.set(t,n)),n}function bW(e,t){let n=fW.get(e);n?.io&&n.io.unobserve(e),fW.set(e,{cb:t,io:null}),pW.push(e),mW||(mW=!0,queueMicrotask(xW))}function xW(){mW=!1;let e=pW;pW=[];for(let t of e){let e=fW.get(t);!e||e.io||(e.io=yW(_W(t)),e.io.observe(t))}}function SW(e){let t=fW.get(e);t&&(t.io?.unobserve(e),fW.delete(e))}var CW=2,wW=50,TW=6e3,EW=6e4,DW=new Map,OW=new Map,kW=[],AW=new Set,jW=null,MW=0,NW=!1,PW=e=>{for(let t of AW)t(e)};function FW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==jW&&(DW.clear(),OW.clear(),kW.length=0,jW=e),DW}var IW=e=>Number.isSafeInteger(e)&&e>=0?e:null,LW=e=>IW(e?.additions)===null||IW(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions},RW=(e,t)=>({status:`ready`,until:1/0,...e,typeless:LW(t.typeless),binary:t.binary===!0}),zW=e=>({status:`error`,until:Date.now()+EW,error:e});function BW(e,t,n){let r=FW(),i=`${e}\0${t}\0${n}`,a=r.get(i);if(a&&Date.now()<a.until)return a;let o={status:`loading`,until:1/0};return r.set(i,o),OW.set(i,{asked:[e,t,n],loading:o}),NW||(NW=!0,globalThis.requestAnimationFrame?requestAnimationFrame(HW):setTimeout(HW,0)),o}function VW(e){let t=FW();for(let[n,r,i,a]of e){let e=LW(a),o=`${n}\0${r}\0${i}`;!e||t.get(o)?.status===`ready`||(OW.delete(o),t.set(o,RW(e,a)),PW(o))}}function HW(){NW=!1;let e=0,t=[];for(let[n,r]of OW){let i=encodeURIComponent(JSON.stringify(r.asked)).length+3;(t.length===wW||t.length>0&&e+i>TW)&&(kW.push(t),t=[],e=0),t.push({key:n,...r}),e+=i}t.length>0&&kW.push(t),OW.clear(),UW()}function UW(){for(;MW<CW&&kW.length>0;){let e=kW.shift().filter(({key:e,loading:t})=>DW.get(e)===t);e.length!==0&&(MW++,GW(e).finally(WW))}}function WW(){MW--,UW()}function GW(e){let t=DW,n=new Map(e.map(({key:e,loading:t})=>[e,t])),r=(e,r)=>{n.has(e)&&(t.get(e)===n.get(e)&&(r?t.set(e,r):t.delete(e)),n.delete(e),PW(e))};return Fb(e.map(e=>e.asked),e=>{let t=LW(e);r(`${e.name}\0${e.version}\0${e.otherVersion}`,typeof e.error==`string`?zW(e.error):t?RW(t,e):zW(`The server answered with no lines.`))}).then(()=>{for(let e of[...n.keys()])r(e,zW(`The server answered with none of it.`));return null},e=>{for(let t of[...n.keys()])r(t,e?.name===`AbortError`?null:zW(e?.message||`Its lines couldn’t be counted.`))})}var KW=e=>e.was?.find(t=>t!==e.version)??`(empty)`,qW=(e,t)=>A`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,JW=class extends ha{static properties={name:{attribute:!1},version:{attribute:!1},base:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this._near=!1,this._notify=e=>{this._near&&(!e||e===`${this.name}\0${this.version}\0${this.base??`(empty)`}`)&&this.requestUpdate()}}connectedCallback(){super.connectedCallback(),this._watch()}disconnectedCallback(){super.disconnectedCallback(),this._unwatch()}_watch(){AW.add(this._notify),!this._near&&bW(this,e=>{!e||this._near||(this._near=!0,SW(this),this.requestUpdate())})}_unwatch(){AW.delete(this._notify),SW(this)}render(){if(!this._near||!this.name||!this.version)return M;let e=BW(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;if(e.status===`loading`)return A`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`;if(e.status===`error`)return A`<span class="npm-delta is-error" data-tooltip="${e.error}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Lines not counted</div><div>${e.error}</div></div>`}">?</span>`;let n=A`<div class="compare-tip"><div class="compare-tip-head">Lines changed</div><div class="compare-tip-rows"><span class="compare-tip-label">Against</span><span>${this.base&&this.base!==`(empty)`?this.base:`none, the whole package`}</span> <span class="compare-tip-label">Added</span><span class="is-added">+${e.additions.toLocaleString(`en-US`)}</span> <span class="compare-tip-label">Removed</span><span class="is-deleted">−${e.deletions.toLocaleString(`en-US`)}</span> ${e.typeless?A`<span class="compare-tip-label">Types aside</span><span>${qW(e.typeless.additions,e.typeless.deletions)}</span>`:M}</div>${e.typeless?A`<div class="compare-tip-note">Types aside: leaving out the declaration files changed in types alone</div>`:M} ${e.binary?A`<div class="compare-tip-note">Binary files changed too, which no line counts</div>`:M}</div>`;return A`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}" .tooltipContent="${n}">${qW(e.additions,e.deletions)}${e.binary?A`<span class="npm-delta-binary">, binary</span>`:M}${e.typeless?A`<span class="npm-delta-typeless">(${qW(e.typeless.additions,e.typeless.deletions)} -types)</span>`:M}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,JW);var YW=class extends ha{static properties={text:{attribute:!1},label:{attribute:!1},_copied:{state:!0},_error:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.text=null,this.label=`Copy dependency review`}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this._timer)}async _copy(){if(this._copyable()){this._error=!1;try{await navigator.clipboard.writeText(this.text),this._copied=!0,clearTimeout(this._timer),this._timer=setTimeout(()=>{this._copied=!1},2e3)}catch{this._error=!0}}}_copyable(){return typeof this.text==`string`&&this.text.trim()!==``}render(){return this._copyable()?A`<button type="button" class="${`bundle-code-copy-path dependency-review-copy-button${this._copied?` copied`:``}`}" aria-label="${this.label}" data-tooltip="${this.label}" @click="${()=>this._copy()}">${fw}</button> ${this._error?A`<span role="alert">Could not copy to the clipboard.</span>`:M}`:M}};customElements.define(`dependency-review-copy`,YW);var XW=12e4,ZW=3e4,QW=3,$W=12,eG=48,tG=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],nG=(e,t)=>e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number,rG=e=>(t,n)=>(n.item[e]??0)-(t.item[e]??0)||nG(t,n),iG=(e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||nG(e,t),aG={newest:[`Newest`,rG(`createdAt`)],updated:[`Updated`,rG(`updatedAt`)],fewest:[`Fewest to review`,iG]},oG={status:`loading`,until:1/0},sG=new Map,cG=new Set,lG=new Map,uG=new Map,dG=null,fG=!1,pG=()=>{for(let e of cG)e()};function mG(){sG.clear();for(let e of lG.keys())e.abort();lG.clear()}function hG(){fG||(fG=!0,queueMicrotask(()=>{fG=!1;let e=new Set(uG.values());for(let[t,n]of lG)e.has(n)||t.abort()}))}globalThis.addEventListener?.(`dependency-review-changed`,()=>{mG(),pG()});function gG(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==dG&&(mG(),dG=e),sG}function _G(e,t){let n=gG(),r=[],i=t.map(e=>{let t=n.get(e);if(t&&Date.now()<t.until)return t;let i=t?.status===`ready`?{...t,until:1/0,telling:null,refreshing:!0}:{status:`loading`,until:1/0};return n.set(e,i),r.push(e),i});return r.length>0&&vG(e,r,r.length===t.length?null:r,QW),i}function vG(e,t,n,r){let i=sG,a=new Map(t.map(e=>[e,i.get(e)])),o=(e,t)=>{i.get(e)===a.get(e)&&i.set(e,t),i.get(e)===t&&t.telling?a.set(e,t):a.delete(e)},s=new AbortController;lG.set(s,e);let c=null;Pb(e,e=>{s.signal.aborted||(typeof e.done==`boolean`?c=e.done?[]:Array.isArray(e.unread)?e.unread:[]:a.has(e.repoId)&&(yG(e,a.get(e.repoId),t=>o(e.repoId,t)),pG()))},{repoIds:n,signal:s.signal}).then(()=>{let t=(c??[]).filter(e=>a.has(e)),n=t.length>0&&r>0;for(let[e,r]of[...a])n&&t.includes(e)||o(e,xG(e,r,c===null?`The server’s answer ended short.`:t.includes(e)?`Reading its pull requests took too long.`:null));return n&&vG(e,t,t,r-1),null},e=>{for(let[t,n]of[...a])e?.name===`AbortError`?i.get(t)===n&&(n.status===`ready`?i.set(t,{...n,until:0,telling:null}):i.delete(t)):o(t,xG(t,n,e?.message||`It couldn’t be read.`))}).finally(()=>{lG.delete(s),pG()})}function yG(e,t,n){if(Array.isArray(e.deltas)&&VW(e.deltas),typeof e.error==`string`)n({status:`error`,until:Date.now()+ZW,error:e.error});else if(e.branch===null)n({status:`ready`,until:Date.now()+XW,branch:null});else if(e.branch){let t;try{t=CU(e.branch)}catch(e){n({status:`error`,until:Date.now()+ZW,error:e.message});return}let r=(Array.isArray(e.pulls?.items)?e.pulls.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0);n(bG({status:`ready`,branch:t,pulls:{items:r,more:e.pulls?.more===!0}},new Set(r.filter(gU).map(e=>e.number))))}else e.dependencies instanceof Map&&t.telling&&(kU(e.repoId,e.dependencies,!0),n(bG(t,new Set([...t.telling].filter(t=>!e.dependencies.has(t))))))}var bG=(e,t)=>t.size>0?{...e,until:1/0,telling:t}:{...e,until:Date.now()+XW,telling:null};function xG(e,t,n){return t.telling?(kU(e,new Map([...t.telling].map(e=>[e,Error(n??`The server’s answer ended short.`)])),!0),{...t,until:Date.now()+ZW,telling:null}):n?{status:`error`,until:Date.now()+ZW,error:n}:{status:`ready`,until:Date.now()+XW,branch:null}}var SG=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,CG=e=>`${e.name}@${e.version??``}${e.patched?`+patch`:``}`,wG=({repo:e,item:t})=>`${e.name}#${t.number}`,TG={git:`From git, which isn’t reviewed`,tarball:`A tarball not npm’s registry’s of its version, which isn’t reviewed`,integrity:`Locked with no integrity, which its reviews are held to`};function EG(e,t){let n=LU(e,t);return n===`unsupported`?{label:`can’t review`,tint:`is-failed`,head:`Can’t be reviewed`,said:TG[e.unsupported]}:e.rejected?{label:`rejected`,tint:`is-failed`,head:`Rejected`,said:`A reviewer rejects it: it wants their newer accepting review`}:e.patched&&n===`wanted`?{label:`patched`,tint:`is-wanted`,head:`Patched`,said:`Reviews here pass no patch: the server’s reviewed dependencies, or reviews of its patch in the pull request’s comments, pass it`}:n===`wanted`?{label:`${e.reviews}/${t.required}`,tint:`is-wanted`,head:`Reviews`,said:`${SG(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${SG(e.commented,`reviewer`)} in its comments, which count here alone`:``}`,rows:[[`Passing`,`${e.reviews.toLocaleString(`en-US`)} of ${t.required} required`],...e.commented?[[`In its comments`,`${SG(e.commented,`reviewer`)}, counting here alone`]]:[]]}:null}function DG(e,t){let n=EG(e,t);if(!n)return M;let r=A`<div class="compare-tip"><div class="compare-tip-head">${n.head}</div>${n.rows?A`<div class="compare-tip-rows">${n.rows.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:A`<div>${n.said}</div>`}</div>`;return A`<span class="team-deps-review ${n.tint}" data-tooltip="${n.said??M}" .tooltipContent="${n.said?r:null}">${n.label}</span>`}var OG={accept:`accepts`,"accept-with-nits":`accepts with nits`,"request-changes":`requests changes`,reject:`rejects`},kG=new Set([`accept`,`accept-with-nits`]),AG=(e,t)=>({passed:`passes`,baseline:`needs none`})[LU(e,t)]??EG(e,t)?.label??null;function jG(e,t,{added:n,above:r,involved:i,here:a}){let o=EG(e,t),s=[n?[`Present`,e.was?.join(`, `)||`none, new`]:null,e.source!==`registry`&&e.from?[`From`,e.from]:null,o?[`Review`,o.said??o.label]:null,r?[`Listed`,`under ${r} above`]:null].filter(Boolean),c=new Map;for(let{name:t,pkg:n}of[{name:a,pkg:e},...e.patched?[]:i])for(let e of n.reviewers??[]){if(e.comment&&!t)continue;let n=e.comment?`${e.login}\0${t}`:e.login;c.has(n)||c.set(n,{...e,where:e.comment?t:null})}return A`<div class="compare-tip"><div class="team-deps-tip-name">${e.name}${e.version?`@${e.version}`:``}${e.patched?` (patched)`:``}</div>${s.length>0?A`<div class="compare-tip-rows">${s.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:M} ${i.length>0?A`<div class="compare-tip-head">Pull requests</div><div class="compare-tip-rows">${i.map(({name:e,adds:t,pkg:n,review:r})=>A`<span class="${e===a?`team-deps-tip-here`:M}">${e}</span> <span>${[t?`adds it`:`locks it`,AG(n,r)].filter(Boolean).join(`, `)}</span>`)}</div>`:M} ${c.size>0?A`<div class="compare-tip-head">Reviewed by</div><div class="compare-tip-rows">${[...c.values()].map(e=>A`<span>${e.login}</span> <span>${OG[e.status]}${kG.has(e.status)&&!e.passes?`, not counted`:``}${e.where?`, in ${e.where}\u2019s comments`:``}</span>`)}</div>`:M}</div>`}function MG(e,t,{others:n=[],adders:r=!1,elsewhere:i=[],above:a=null,added:o=!1,involved:s=[],here:c=null}={}){let l=e.source===`registry`&&e.version,u=e.was?.find(t=>t!==e.version),d=t?.canReview&&!e.patched&&LU(e,t)!==`unsupported`,f=l?si({view:`npm`,packageName:e.name,packageSpec:e.version,...d?{bundleTab:`review`,...u?{reviewPackage:e.name,reviewSpec:u}:{}}:{}}):null,p=`${e.name}${e.version?`@${e.version}`:``}`,m=jG(e,t,{added:o,above:a,involved:s,here:c}),h=r?n.filter(e=>!i.includes(e)):n,g=a!==null&&i.includes(a),_=g?i.filter(e=>e!==a):i,v=A`${ZU}<span class="team-deps-name">${e.name}${e.version?A`<span class="team-deps-version">@${e.version}</span>`:M}</span> ${l&&LU(e,t)===`wanted`?A`<npm-delta .name="${e.name}" .version="${e.version}" .base="${KW(e)}"></npm-delta>`:M} ${DG(e,t)} ${a?A`<span class="team-deps-above${g?` is-reviewed`:``}">${a}</span>`:M} ${_.length>0?A`<span class="team-deps-elsewhere">${_[0]}${_.length>1?` +${_.length-1}`:``}</span>`:M} ${h.length>0?A`<span class="team-deps-also">${r?`${h[0]}${h.length>1?` +${h.length-1}`:``}`:`+${n.length}`}</span>`:M}`;return A`<li>${f?A`<a class="team-deps-row" href="${f}" target="_blank" rel="noopener noreferrer" data-tooltip="${p}" .tooltipContent="${m}">${v}</a>`:A`<span class="team-deps-row" data-tooltip="${p}" .tooltipContent="${m}">${v}</span>`}</li>`}var NG=Y(j`<path d="m6 4 4 4-4 4"/>`),PG=class extends Kh{static properties={repositories:{attribute:!1},team:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repositories=[],this.team=null,this._open=new Set,this._notify=()=>this.requestUpdate()}pick(e,{push:t=!0}={}){F.teamDependenciesTab=e;let n=mi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},F.managedTeams);t?G?.pushRoute(n):G?.replaceRoute(n)}updated(){this._shown&&this._shown!==F.teamDependenciesTab&&this.pick(this._shown,{push:!1})}toggle(e){let t=new Set(this._open);t.delete(e)||t.add(e),this._open=t}connectedCallback(){super.connectedCallback(),cG.add(this._notify),this._unsubscribe=fU(this._notify),uG.set(this,this.team)}disconnectedCallback(){super.disconnectedCallback(),cG.delete(this._notify),this._unsubscribe?.(),uG.delete(this),hG()}open(e,{repo:t,item:n}){e.preventDefault(),Te({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=$W){if(t.length===0)return M;let i=this._open.has(e);return A`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?A`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${NG}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:M}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return A`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${NG}${t}</button> ${a?A`${this.rows(e,n,r,eG)}${i>0?A`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:M}`:M}</div>`}render(){this.isConnected&&uG.get(this)!==this.team&&(uG.has(this)&&hG(),uG.set(this,this.team));let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()],t=_G(this.team,e.map(e=>e.repoId)),n=e.map((e,n)=>({repo:e,read:t[n]})),r=n.filter(({read:e})=>e.status===`ready`&&e.branch),i=r.flatMap(({repo:e,read:t})=>t.pulls.items.filter(gU).map(t=>({repo:e,item:t,entry:AU(e.repoId,t.number,!0)??oG}))),a=i.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=NU(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(LU(t,e.entry.review))),n=t.filter(t=>LU(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:BU(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:RU(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted(iG),o=Object.hasOwn(aG,F.teamDependenciesSort)?F.teamDependenciesSort:`newest`,s=o===`fewest`?a:a.toSorted(aG[o][1]),c=r.filter(({read:e})=>e.pulls.more),l=new Map;for(let e of a)for(let t of e.wanted){let n=l.get(CG(t));n?n.pulls.push(e):l.set(CG(t),{pkg:t,pulls:[e]})}let u=n.some(({read:e})=>e.status===`loading`)||i.some(({entry:e})=>e.status===`loading`),d=[...n.filter(({read:e})=>e.status===`error`).map(({repo:e,read:t})=>[e.name,t.error]),...i.filter(({entry:e})=>e.status===`error`).map(e=>[wG(e),e.entry.error])],f=r.flatMap(({repo:e,read:t})=>{let{count:n}=RU(t.branch),r=BU(t.branch);return n>0||r?[{repo:e,read:t,count:n+(r?.count??0)}]:[]}),p=new Map;for(let e of i.filter(({entry:e})=>e.status===`ready`&&e.review))for(let[t,n]of[[!0,NU(e.entry).versions],[!1,RU(e.entry).versions]])for(let r of n){let n=p.get(CG(r))??p.set(CG(r),new Map).get(CG(r));n.has(wG(e))||n.set(wG(e),{pull:e,pkg:r,adds:t})}let m=new Set(n.filter(({read:e})=>e.status!==`ready`||e.branch).map(({repo:e})=>e.name.split(`/`)[0])).size===1?e=>e.slice(e.indexOf(`/`)+1):e=>e,h=e=>m(wG(e)),g={elsewhere:(e,t=null)=>e.patched?[]:[...p.get(CG(e))?.values()??[]].filter(e=>e.pkg.commented>0&&(!t||wG(e.pull)!==wG(t))).map(e=>h(e.pull)),named:h,shorten:m,among:e=>[...p.get(CG(e))?.values()??[]].map(({pull:e,pkg:t,adds:n})=>({name:h(e),adds:n,pkg:t,review:e.entry.review}))},_=d.map(([e,t])=>`${m(e)}: ${t}`),v=F.teamDependenciesTab,y=tG.filter(([e])=>e!==`branch`||f.length>0||u&&v===`branch`),b=y.some(([e])=>e===v)?v:`pulls`;this._shown=b;let ee={pulls:a.length,versions:l.size,branch:f.reduce((e,{count:t})=>e+t,0)};return A`<div class="team-deps">${rS({tabs:y.map(([e,t])=>({id:e,label:A`${t}${ee[e]==null||u&&ee[e]===0?M:A`<span class="team-deps-tab-n">${ee[e].toLocaleString(`en-US`)}</span>`}`})),current:b,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${b}`}" aria-labelledby="${`team-deps-tab-${b}`}">${b===`reviews`?hR(()=>A`<dependency-review-list .session="${F.managedSession}" .team="${this.team}"></dependency-review-list>`):A`${u?A`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:M} ${_.length===1?A`<p class="team-deps-quiet" role="alert">${_[0]}</p>`:_.length>1?A`<p class="team-deps-quiet" role="alert" data-tooltip="${_.join(`
186
- `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Couldn’t be read</div><div class="compare-tip-rows">${d.map(([e,t])=>A`<span>${m(e)}</span><span>${t}</span>`)}</div></div>`}">${SG(_.length,`repository or pull request`)} couldn’t be read.</p>`:M} ${!u&&n.length>0&&r.length===0&&d.length===0?A`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:M} ${b===`branch`?M:c.map(({repo:e,read:t})=>A`<p class="team-deps-quiet" role="alert">Only ${m(e.name)}’s ${SG(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${r.length===0?M:b===`pulls`?this.renderPulls(s,o,l,u,c.length>0,g):b===`versions`?this.renderVersions(l,u,g):f.map(({repo:e,read:t})=>this.renderBranch(e,t,g))}`}</div></div>`}renderPulls(e,t,n,r,i,{elsewhere:a,named:o,among:s}){if(e.length===0)return r?M:A`<p class="workspace-content-empty">No open pull request${i?` checked`:``} wants its dependencies reviewed.</p>`;let c=new Map,l=e=>t=>{let r=c.get(CG(t))===e?null:c.get(CG(t));return MG(t,e.entry.review,{others:(n.get(CG(t))?.pulls??[]).filter(t=>t!==e&&t!==r).map(o),elsewhere:a(t,e),above:r&&o(r),added:!0,involved:s(t),here:o(e)})};return A`${e.length>1?A`<div class="team-deps-sort"><span class="bundles-overview-sort" role="group" aria-label="Pull request order">${Object.entries(aG).map(([e,[n]])=>A`<button type="button" aria-pressed="${String(e===t)}" @click="${()=>{F.teamDependenciesSort=e}}">${n}</button>`)}</span></div>`:M}<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!c.has(CG(e))),n=e.wanted.filter(e=>c.has(CG(e)));for(let n of t)c.set(CG(n),e);let r=wG(e),i=RU(e.entry),u=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return A`<li class="team-deps-pull"><div class="team-deps-pull-top"><a class="team-deps-pull-head" href="${u}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${o(e)}</span><span class="team-deps-pull-title">${e.item.title||`(no title)`}</span> <span class="${`team-deps-count${e.failed?` is-failed`:``}`}">${e.failed?`review fails`:e.size>0?`${SG(e.toReview,`version`)} to review`:`${SG(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?A`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:M}</div>${this.rows(`${r}:own`,t,l(e))} ${e.untold>0?A`<p class="team-deps-quiet">and ${SG(e.untold,`more version`)} past those listed</p>`:M} ${n.length>0?A`<ul class="team-deps-versions is-above">${n.map(l(e))}</ul>`:M} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${SG(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${SG(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,i.versions,t=>MG(t,e.entry.review,{elsewhere:a(t,e),involved:s(t),here:o(e)}),e.others-i.versions.length):M}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r,among:i}){return e.size===0?t?M:A`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:A`<section class="team-deps-section" aria-label="Versions to review">${this.rows(`versions`,[...e.values()],({pkg:e,pulls:t})=>MG(e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e),added:!0,involved:i(e)}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r,among:i}){let{versions:a,count:o}=RU(t.branch),s=BU(t.branch),c=s?.unread.flatMap(e=>e.paths)??[],l=[...a,...s?.versions??[]];return A`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${SG(o,`version`)} unreviewed${s?.count?`, ${s.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${c.length>0?`, ${SG(c.length,`lockfile`)} unread`:``}</p>${c.length>0?A`<p class="team-deps-quiet" role="alert">Unread, so what ${c.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${c.map((e,t)=>A`${t>0?`, `:``}<code>${e}</code>`)}</p>`:M} ${this.rows(`branch:${e.repoId}`,l,e=>MG(e,t.branch.review,{elsewhere:n(e),involved:i(e)}),eG)} ${o>a.length?A`<p class="team-deps-quiet">and ${(o-a.length).toLocaleString(`en-US`)} more, not listed</p>`:M}</section>`}};customElements.define(`team-dependencies`,PG);var FG=null;function IG(e){let t=FG=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{FG===t&&(FG=null)}).catch(()=>{}),t}function LG(e){let t=null;return n=>{t!==null&&t!==n&&FG?.skipTransition(),t=n,e()}}var RG=null;function zG(e){return e.some(e=>e._managedReportId&&!e.tree&&e.treeFiles>0)}function BG(e){let t=Ns(F.reports),n=F.currentManagedTeam;return!n||!zG(t)?!1:RG===t||(RG=t,VG(t,n,F.managedTeams.find(e=>e.id===n)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,e),!0)}async function VG(e,t,n,r){let i=await Cx(t,{reportId:n});if(RG===e&&(RG=null),Ns(F.reports)===e&&F.currentManagedTeam===t){if(!i){Fx(`Could not load the report files. Please try again.`),r(!1);return}for(let t of e)t._managedReportId&&!t.tree&&t.treeFiles>0&&(t.tree=i.get(t._managedReportId)??{});r(!0)}}function HG(){z.classList.add(`active`),$m.classList.add(`hidden`)}function UG(){let e=hr(F.reports);if(!e)return null;let t=Object.keys(e),n=n_().filter(e=>Ug(e).commonTriage===F.shownTriage),r=pr(n,F.severityMode),i=_r(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=O(t,F.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=U(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return w.focusedPkg?(c=t.filter(e=>(Sr(e)??`__own__`)===w.focusedPkg),w.showAll||(c=c.filter(e=>yr(e,r,i)))):c=w.showAll?t:t.filter(e=>yr(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:wr(c)}}function WG(){let e=ET();if(!e)return;let t=UG();if(!t)return;let n=F.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&I())})}function GG(){let e=ET();if(!e)return;let t=UG();t&&e.refreshTopPkgs(t)}function KG(e){return`${Ai[e]??e} findings`}function qG(e,t,n){return n?A`<repo-chip url="${n}"></repo-chip>`:I()?M:F.currentWorkspace?t?A`<repo-chip url="${t}"></repo-chip>`:M:e?A`<repo-chip url="${F.repoUrl}" editable ?editing="${F.repoEditing}" ?empty="${!F.repoUrl}"></repo-chip>`:t?A`<repo-chip url="${t}"></repo-chip>`:M}function JG(e,t,n,r,i){let a=e.length,o=new Set(F.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=F.currentWorkspace?R().find(e=>e.id===F.currentWorkspace):null,l=WH(F,c?[c]:[],Bu),u=c?`Workspace: ${c.name}`:s?KG(s):`Findings`,d=s&&Jx[s]?s:`default`,f=k(Jx[d]),p=A`<svg class="file-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>`,m=M;if(l)m=ZH(l,`reports`,F.currentView);else if(t.length===1){let e=x(t[0]);m=A`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=A`<button type="button" class="file-chip" data-copy-report="${t.map(x).join(`
187
- `)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=F.currentWorkspace?[]:GK(!!s),_=M;if(a>0){let t={};for(let n of e){let e=O(Fg(n),F.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Mi.filter(e=>t[e]>0);n.length>0&&(_=A`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return A`<span class="${`status-seg sev-${e}`}" style="${E({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return JH(l,F.currentView,{findings:a,statusBar:_});let v=new Set(F.reports.map(e=>e.repo??null)),y=qG(n,r,v.size===1?[...v][0]:null),b=A`<span class="sep" aria-hidden="true"></span>`,ee=l?M:QH(i,F.currentView);return A`<header class="page-head"><div class="page-title"><h1>${l?XH(l,F.currentView):u}${m}${ZH(l,`bundles`,F.currentView)}${y}${ee}${ZG()}</h1><div class="meta-row"><span>${h}</span> ${_} ${g.length>0?A`${b}${g.map(e=>A`<span class="tag">${e}</span>`)}`:M}</div></div></header>`}var{suggestSync:YG}=FH({open:e=>Me({names:e})}),XG=new Set([`findings`,`files`,`links`]);function ZG(){if(V.status!==`online`||!XG.has(F.currentView))return M;let e=NH();if(!e)return M;let{workspaceId:t,fileNames:n,mode:r}=e,i=Sh(t);if(i.length>0&&YG(t,i,{onSync:()=>QG(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return $G({status:`differ`,label:`differs`,title:`Your copy of "${e}" doesn't match its cloud copy. Click to re-check and bring them in line.`,onClick:()=>QG(t,r,n)});let a=hh(t,e)?`cloud`:`local`;return $G({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>rK({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=R().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=xh(t),c=n.filter(e=>!hh(t,e)),l=o.filter(e=>!gh(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return M;let d=[s>0?`${s} in cloud`:null,u.length>0?`${u.length} local-only`:null,i.length>0?`${i.length} differ from the cloud`:null,s>0?`click "cloud" to re-check storage`:null,u.length>0?`click "local" to upload ${u.length}`:null].filter(Boolean).join(` — `),f=i.length===1?`Your copy of "${i[0]}" doesn't match its cloud copy. Click to re-check and bring them in line.`:`${i.length} reports don't match their cloud copies. Click to re-check and bring them in line.`,p=i.length===0?M:A`<button type="button" class="sync-badge-chunk differ" data-tooltip="${f}" aria-label="${`${i.length} report${i.length===1?``:`s`} differ from the cloud \u2014 re-check`}" @click="${e=>{e.stopPropagation(),QG(t,r,n)}}">${tK()}<span>${i.length} differ</span></button>`,m=s===0?M:A`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),ve({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${nK()}<span>${s} cloud</span></button>`,h=u.length===0?M:A`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),rK({workspaceId:t,items:u})}}">${eK()}<span>${u.length} local</span></button>`,g=A`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==M);return A`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:A`${g}${e}`)}</div>`}function QG(e,t,n){let r=R().find(t=>t.id===e),i=t===`single`?MH(r?.reports??[],F.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return ve({workspaceId:e,cloudCount:xh(e),localFileNames:i,localBundles:a,autoRun:!0})}function $G({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?nK():e===`differ`?tK():eK(),a=A`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?A`<button type="button" class="report-sync-badge report-sync-badge-clickable" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}" @click="${r}">${i}${a}</button>`:A`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function eK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="18" x2="6.01" y2="18"/><line x1="10" y1="18" x2="10.01" y2="18"/><path d="M6 14V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v10"/></svg>`}function tK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 4v14"/><path d="M3 14l4 4 4-4"/><path d="M17 20V6"/><path d="M13 10l4-4 4 4"/></svg>`}function nK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.5 19a4.5 4.5 0 1 0-1-8.9A6 6 0 0 0 5.07 13.5 4 4 0 0 0 6 21h11.5z"/></svg>`}async function rK({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await cl(),t=new Map(e.map(e=>[e.integrity,e.name]));for(let e of n){let n=t.get(e.identifier);n&&(e.label=n)}}await Pe({workspaceId:e,items:t})}function iK(e){return Object.values(e).some(e=>e>0)||F.filterSeverities.size>0?A`<severity-chips .counts="${e}"></severity-chips>`:M}function aK(e){return Object.values(e).some(e=>e>0)||F.filterColors.size>0?A`<triage-filter .counts="${e}"></triage-filter>`:M}function oK(e,t,n,r,i,a,o,s){let{showSource:c,showConfidence:l,showPriority:u,showGraphMode:d,showFileSort:f,kanbanMode:p,showRepo:m,hasComment:h,hasFix:g,hasFlagged:_,hasDuplicates:v,hasCrossContext:y,hasAppStacked:b,showSecurity:ee,showSeverityMode:te,revalidateOptions:ne,showPartial:re,canDropLayer:ie,canDetailLayer:ae,canUpstreamLens:oe,confirmedLocked:se}=a;return A`<div class="toolbar"><div class="toolbar-row"><view-mode-buttons modes="${d?`kanban,focus,table,list,grouped,graph`:`kanban,focus,table,list,grouped`}"></view-mode-buttons><findings-sort ?show-file="${f}" ?show-confidence="${l}" ?show-priority="${u}"></findings-sort>${c?A`<source-filter></source-filter>`:M} ${!se&&(l||ne.length>0)?A`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${ne}" ?has-partial="${re}"></conf-filter>`:M} ${h||g||_||F.filterComment||F.filterFix||F.filterFlagged?A`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:M} ${p?M:A`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!F.currentWorkspace&&(v||F.filterDuplicates)||y||b||ee||F.filterCrossContext||F.filterAppStacked?A`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${ee}"></annotation-filter>`:M} ${ie||F.revalidateConflicts.size>0?A`<revalidation-switch ?can-drop="${ie}" ?can-detail="${ae}" ?can-upstream="${oe&&ie}" .upstreamDisabled="${F.showRevalidation===!1&&ie}"></revalidation-switch>`:M}</div></div><div class="toolbar-row sev-row">${te?A`<severity-mode-switch></severity-mode-switch>`:M} ${iK(r)} ${o.analyzers.length>1||o.models.length>1?A`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:M} ${m&&s.length>1?A`<repo-filter .options="${s}"></repo-filter>`:M} ${aK(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function sK(e,t){return e.map(e=>({p:Fg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var cK=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),lK=null,uK=0,dK=null;function fK(e,t=!1,n=null,r=!1,i=!1){return A`<finding-card data-gid="${H(e)}" .group="${e}" ?in-group="${t}" context="${n??M}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var pK=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2H2v4M10 2h4v4M14 10v4h-4M6 14H2v-4"/></svg>`,mK=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2"/></svg>`,hK={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function gK(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??Ug(e),o=Rg(e),s=Hi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&F.currentWorkspace?Zx(o):null,d={"kanban-card":!0,"has-conflict":a.hasConflict,"focus-side-card":!c,"kanban-expanded-track-last":i,active:r};!a.hasConflict&&a.commonColor&&(d[`mark-${a.commonColor}`]=!0);let f=parseInt(o.line,10),p=Number.isFinite(f)?`:${f}`:``,m=O(o,F.severityMode),h=hK[m]??`?`,g=Pi(o)&&F.severityMode!==`original`,_=U(o),v=_?.flagged===!0,y=ng(o,_),b=_?.comment??``,ee=M;c&&y?ee=gi(y)?A`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${Vw}</managed-fix-link>`:kg(o)?A`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${Vw}</button>`:A`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${Vw}</span>`:c&&(b||I()&&Dg(o))&&(ee=A`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Bw}</comment-preview>`);let te=A`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${bw(m)} \u2014 corrected from ${bw(o.severity)}`:M}" aria-label="${g?`Severity ${bw(m)}, corrected from ${bw(o.severity)}`:`Severity ${bw(m)}`}">${h}${g?`*`:``}</span> ${v?A`<span class="kanban-flag" aria-label="Flagged">${$w}</span>`:M} ${ee}</div><span class="kanban-title">${s}</span><div class="kanban-meta"><span class="kanban-loc">${o.file}${p}</span> ${o.confidence===void 0||o.confidence===null?M:A`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?A`<span class="kanban-analyzer" role="img" data-tooltip="${Xx[u]}" aria-label="${Xx[u]}">${k(st[u])}</span>`:M}</div>`;return c?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-source draggable="${qg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${te}</div>`:l?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${te}</div>`:A`<div class="${C(d)}" data-gid="${H(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${te}</div>`}var _K={content:``,parts:``};function vK(e){return _K.content!==e&&(_K={content:e,parts:QT(e)}),_K.parts}function yK(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
188
- `).length,a=String(i).length;return A`<div class="focus-code-lines" style="${E({"--lineno-width":`${a}ch`})}"><aside class="focus-code-gutter" aria-hidden="true">${Array.from({length:i},(e,t)=>{let r=t+1,i={"focus-code-lineno":!0,"focus-code-line-active":!!n&&r>=n.start&&r<=n.end};return A`<div class="${C(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?k(r):vK(t)}</code></pre></div>`}function bK(e){return!e||!Hv(Rg(e))?M:A`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${H(e)}" aria-label="View issue history"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5"/></svg></button>`}function xK(e,t=M,n=!1){F.focusCodeTick;let r=WC(e),i=VC(e),a=r?`focus-main with-code`:`focus-main`,o=E({"--focus-split":String(F.focusSplit)});return A`<div class="${a}" style="${o}" data-gid="${H(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?M:bK(e)} ${fK(e,!1,`focus`,!1,n)}</div></div>${t} ${r?A`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${Us}" aria-valuemax="${Ws}" aria-valuenow="${Math.round(F.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??M}" data-focus-code-integrity="${r.integrity??M}">${r.loading?A`<div class="focus-code-empty">Loading source…</div>`:A`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?A`<span class="focus-code-line">:${Kn(r.range)}</span>`:M} ${(i?.stack.length??0)>1?A`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${pw}</button> <button type="button" class="focus-code-nav-btn" data-code-history="forward" ?disabled="${i.at===i.stack.length-1}" aria-label="Forward to the next shown file">${mw}</button></div>`:M}</header><div class="focus-code-body">${yK(r)}</div>`}</div>`:M}</div>`}function SK(e,t,n=[],r=null){if(!e&&!r)return M;let i=e?Ug(e):{},a=F.kanbanDetailFullscreen,o=e?CL():null,s={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},c=e?H(e):null,l=t?.items??[],u=l.findIndex(e=>H(e)===c),d=A`<div class="kanban-detail-actions">${bK(e)} <button type="button" class="kanban-detail-expand detail-action" data-kanban-detail-fullscreen aria-pressed="${a?`true`:`false`}" aria-label="${a?`Back to the readable width`:`Fill the available space`}">${a?mK:pK}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return A`<div class="${C({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${C(s)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?M:d}<div class="kanban-detail-body">${e&&!o?a?xK(e,d,!0):fK(e,!1,`kanban-detail`,!1,!0):A`<div class="links-preview-message" role="status">${r?.error||(o===`failed`?NK:`Loading finding…`)}</div>`}</div></div>${l.length===0?M:A`<aside class="kanban-detail-side" aria-label="${`${t.label} findings`}"><div class="kanban-detail-side-header"><span class="kanban-detail-side-pick"><select class="kanban-detail-side-select" data-kanban-column aria-label="Column to show">${n.map(e=>{let n=e.key===t.key,r=n?e.label:`${e.label} (${e.count})`;return A`<option value="${e.key}" data-gid="${e.firstGid}" .selected="${n}" ?disabled="${e.count===0}">${r}</option>`})}</select></span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-kanban-nav="prev" ?disabled="${u===0}" aria-label="Previous finding">${pw}</button> <span class="count">${u<0?l.length:`${u+1} / ${l.length}`}</span> <button type="button" class="focus-nav-btn" data-kanban-nav="next" ?disabled="${u===l.length-1}" aria-label="Next finding">${mw}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${l}" .activeKey="${c}" .keyOf="${H}" .renderItem="${e=>gK(e,{variant:`kanban-side`,active:H(e)===c})}"></kanban-rail></aside>`}</div>`}function CK(e,t,n=new Map){if(F.viewMode===`table`){let n=F.sortBy===`file`?sK(e,cK):e;return n.length===0?M:(lK=n,A`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?A`<aside class="findings-table-details" id="findings-table-details" aria-label="Finding details"><button type="button" class="findings-table-details-close" data-table-deselect aria-label="Close details">×</button><div class="findings-table-details-body">${fK(t)}</div></aside>`:M}</div>`)}if(F.viewMode===`focus`){if(e.length===0)return M;let n=e.indexOf(t);uK=n;let r=t,i=n===0,a=n===e.length-1;return A`<div class="focus-view">${xK(r)}<aside class="focus-sidebar" aria-label="Up next"><div class="focus-sidebar-header"><span class="label">Up next</span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-focus-nav="prev" ?disabled="${i}" aria-label="Previous finding">${pw}</button> <span class="count">${n+1} / ${e.length}</span> <button type="button" class="focus-nav-btn" data-focus-nav="next" ?disabled="${a}" aria-label="Next finding">${mw}</button></div></div><div class="focus-sidebar-body">${D(e,e=>H(e),e=>gK(e,{variant:`focus`,active:H(e)===H(r)}))}</div></aside></div>`}if(F.viewMode===`kanban`){let r=[{key:`untriaged`,label:`Untriaged`},{key:`inprogress`,label:`In progress`},{key:`fixed`,label:`Fixed`},{key:`invalid`,label:`Invalid`},{key:`deleted`,label:`Deleted`},{key:`ignored`,label:`Ignored`}],i=new Map(r.map(e=>[e.key,[]])),a=e=>{let t=n.get(e);return t||n.set(e,t=Ug(e)),t};for(let t of e){let e=a(t).commonTriage??`untriaged`,n=i.get(e);n&&n.push(t)}let o=r.some(e=>e.key===F.kanbanExpandedColumn)?F.kanbanExpandedColumn:null,s=o?r.filter(e=>e.key===o):r,c={"--kanban-cols":String(r.length)},l=t,u=l?r.find(e=>e.key===(a(l).commonTriage??`untriaged`)):null;return A`<div class="kanban-board" style="${E(c)}">${D(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return A`<div class="${`kanban-column kanban-column-${e.key}${n?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${n}" aria-label="${n?`Show all columns`:`Show only ${e.label}`}">${n?mK:pK}</button></div><div class="kanban-column-body">${t.length===0?A`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:D(t,e=>H(e),(e,t)=>gK(e,{active:H(e)===F.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${SK(l,u&&{key:u.key,label:u.label,items:i.get(u.key)},r.map(e=>{let t=i.get(e.key);return{key:e.key,label:e.label,count:t.length,firstGid:t.length>0?H(t[0]):``}}))}`}if(F.viewMode===`grouped`){let t=new Map;for(let n of e){let e=Fg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=F.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return A`${D(n,e=>e,e=>{let n=F.sortBy===`file`?sK(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Fg(n[0]);return A`<div class="file-group"><div class="file-header"><span>${Rn(r,Bg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${D(n,e=>H(e),e=>fK(e,!1,null,!0))}</div></div>`})}`}let r=F.sortBy===`file`?sK(e,cK):e;return A`${D(r,e=>H(e),e=>{let t=Rg(e),n=Zn(t,Bg(t)),r=In(t),i=Vi(t),a=e.length>1;return A`<div class="${C({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Rn(t,Bg(t))}</span> ${n===M?M:A`<span class="line-num">${n}</span>`} ${i?A`<span class="meta">${i}</span>`:M} ${r?A`<span class="run-meta">${r}</span>`:M}</div>${fK(e,!0,null,!0)}</div>`})}`}function wK(){F.bundleSourceFile&&pq().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&N(TB(),e)}var TK=LG(YK);function X(){TK(F.currentView)}var EK=e=>Object.assign(document.createElement(`div`),{id:e});function DK(e){let t=document.querySelector(`#${e}`);return(!t||!z.contains(t)||z.firstElementChild!==t)&&(t=EK(e),z.replaceChildren(t)),t}function OK(e=null){let t=e==null?null:F.managedTeams.find(t=>t.id===e),n=t?WH({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:F.managedTeams,managedSession:F.managedSession},[]):null;N(YH(n),DK(`triage-loading-slot`))}function kK(){let e=WH(F,R(),Bu);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=DK(`empty-workspace-slot`);t&&N(A`${JG([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),HG()}var AK={"manage-deduplication":{slot:`manage-deduplication-slot`,tag:`managed-admin-deduplication`,title:`DeepView — deduplication`},manage:{slot:`manage-slot`,tag:`managed-admin-home`,title:`DeepView — manage`},"admin-users":{slot:`admin-users-slot`,tag:`managed-admin-users`,title:`DeepView — users`},"manage-repos":{slot:`manage-repos-slot`,tag:`managed-admin-repos`,title:`DeepView — repositories`},"manage-repo-risk":{slot:`manage-repo-risk-slot`,tag:`managed-admin-repo-risk`,title:`DeepView — repository risk`},"manage-reports":{slot:`manage-reports-slot`,tag:`managed-admin-reports`,title:`DeepView — reports`},"manage-bundles":{slot:`manage-bundles-slot`,tag:`managed-admin-bundles`,title:`DeepView — bundles`},"manage-history":{slot:`manage-history-slot`,tag:`managed-admin-history`,title:`DeepView — history`},"manage-teams":{slot:`manage-teams-slot`,tag:`managed-admin-teams`,title:`DeepView — teams`},"manage-import":{slot:`manage-import-slot`,tag:`managed-admin-import`,title:`DeepView — import`},"manage-links":{slot:`manage-links-slot`,tag:`managed-admin-links`,title:`DeepView — links`},"manage-scans":{slot:`manage-scans-slot`,tag:`managed-admin-scans`,title:`DeepView — scans`}};function jK(){F.currentView===`files`&&(F.currentView=`findings`),F.viewMode===`graph`&&(F.viewMode=`kanban`)}var MK=e=>A`<p class="triage-loading" role="status">Loading ${e}…</p>`,NK=`Could not load finding details. Open the team again to retry.`,PK=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),FK=null;function IK(e){let t=[e,kn(),Dr()];if(FK?.key.every((e,n)=>e===t[n]))return FK;let n=O_(e),r=e.some(e=>e.some(e=>An(e.file))),i=e.some(e=>e.some(e=>!An(e.file))),a=!1,o=!1,s;e:for(let t of e)for(let e of t)if(!o)o=!0,s=e.file;else if(e.file!==s){a=!0;break e}let c=e.some(e=>e.some(e=>!e.repo?.github&&!An(e.file))),l=new Set;for(let t of e)for(let e of t)!An(e.file)&&e.repo?.github&&l.add(e.repo.github);let u=l.size===1?[...l][0]:null,d=new Set,f=new Set;for(let t of e)for(let e of t)d.add(e._analyzer??null),f.add(u_(e));let p=Object.keys(J_),m=e=>{if(e==null)return 1/0;let t=p.indexOf(e);return t===-1?p.length:t},h=[...d].toSorted((e,t)=>{let n=m(e),r=m(t);return n===r?String(e??``).localeCompare(String(t??``)):n-r}),g=[...f].toSorted(PK);return FK={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},FK}var LK=null;function RK(e,t){if(LK?.groups===e&&LK.workspace===t)return LK;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=Li(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return LK={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},LK}var zK=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),BK={reports:[],value:!1};function VK(){return zK(BK.reports,F.reports)||(BK={reports:[...F.reports],value:Mr(F.reports)}),BK.value}var HK={reports:[],depsDir:null,value:!1};function UK(){let e=kn();return(HK.depsDir!==e||!zK(HK.reports,F.reports))&&(jn(F.reports)&&Zg(),HK={reports:[...F.reports],depsDir:e,value:F.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),HK.value}var WK={reports:[],single:!1,tags:[]};function GK(e){if(WK.single!==e||!zK(WK.reports,F.reports)){let t=F.reports.flatMap(e=>e.groups.flat());WK={reports:[...F.reports],single:e,tags:MS(t,e?CS.filter(e=>e!==`type`):CS)}}return WK.tags}var KK=null;function qK(){let e=F.revalidateConflicts.size>0,t=!e&&VK();return e?F.showRevalidation!==!1&&(KK=F.showRevalidation,F.showRevalidation=!1):(KK!==null&&(F.showRevalidation=KK,KK=null),!t&&F.showRevalidation===!1&&(F.showRevalidation=!0)),F.upstreamOnly&&(!t||F.showRevalidation===!1||!UK())&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly),t}var JK=null;function YK(){_g()||vg(),wK(),On(F.reports),Dd()&&queueMicrotask(()=>{kd()});let e=UK(),t=qK(),n=e;if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)){let e=F.currentView.slice(10),t=WH(F,R(),Bu),n=DK(`workspace-content-slot`);n&&N(eU(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(F.currentView===`bundles`){if((F.bundles??[]).length===0)F.currentView=`findings`;else{qt(F.bundleDetailsTab,F.bundleSourceFile)&&pq().catch(()=>{});let e=DK(`bundles-slot`);e&&N(FV(F.bundles),e);let t=F.bundleDetails,n=F.selectedBundle&&t&&(t.json||t.bundle);if(n&&F.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=Yz(F.bundleDetails);if(n){eB(n);let r={hideAllFiles:!0,triageCounts:qz(F.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=JK,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===w.graphState&&i.details===t&&i.reason===w.bundleReason?a.options=r:(JK=null,OT(e,n,r,Qz,$z).then(e=>(e&&w.graphState&&(JK={state:w.graphState,details:t,reason:w.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(F.bundleDetailsTab===`terminal`||F.bundleDetailsTab===`code`&&F.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&FT(e,F.bundleDetails)}HG();let{npm:r,repository:i}=F.bundles.find(e=>e.integrity===F.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${RM(i)}`:`DeepView — bundles`;return}}if(F.currentView===`reviews`){let e=DK(`dependency-reviews-slot`);e&&N(hR(()=>A`<dependency-review-list .session="${F.managedSession}"></dependency-review-list>`),e),HG(),document.title=`DeepView — my reviews`;return}if(F.currentView===`profile`){let e=DK(`managed-profile-slot`);e&&N(A`<managed-profile .session="${F.managedSession}" .linkError="${F.profileLinkError}"></managed-profile>`,e),HG(),document.title=`DeepView — profile`;return}if(F.currentView===`npm`){let e=F.npmOpening,t=DK(e?`bundles-slot`:`npm-slot`);t&&N(e?DV(e):rM(),t),HG(),document.title=e?`DeepView \u2014 ${hj(e.name,e.spec)}`:`DeepView — npm packages`;return}if(F.currentView===`repository-code`){let e=F.repositoryCodeOpening,t=DK(`bundles-slot`);t&&e&&N(OV(e),t),HG(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(F.currentView===`packages`){let e=DK(`packages-slot`);e&&N($V(),e),HG(),document.title=`DeepView — packages`;return}if(F.currentView===`repositories`){let e=DK(`repositories-slot`);e&&N(mH(),e),HG(),document.title=`DeepView — repositories`;return}if(F.currentView===`links`){if(F.currentLinks){let e=DK(`links-slot`),t=_g();e&&N(A`${jH(ZG())}${t?SK(t.group,null,[],t):M}`,e),HG(),document.title=`DeepView \u2014 ${F.currentLinks.name}`;return}F.currentView=`findings`}if(F.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=DK(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=F.scanSelection,e.append(t),t.updateComplete.then(()=>lr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}HG(),document.title=`DeepView — scans`;return}let r=AK[F.currentView];if(r){let e=DK(r.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==F.managedSession?.id||t?.role!==F.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(r.tag),n=e=>lr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=gp(),F.currentView===`manage-import`&&(t.localDeps=mp(),t.promptPassword=Ve,t.resolveConflicts=SS,t.confirmTriageImport=le,t.confirmContentImport=se,t.showTriageComparison=Fe),t.session=F.managedSession,t.allowShare=F.managed?.allowShare===!0,F.currentView===`manage-scans`&&(t.selection=F.scanSelection),F.currentView===`manage-bundles`&&(t.createRepoId=F.bundleCreationRepoId,t.installTooltips=n),e.append(t),(async()=>{await customElements.whenDefined(r.tag),await t.updateComplete,n(t.renderRoot)})().catch(()=>{})}e?.firstElementChild&&(e.firstElementChild.session=F.managedSession,e.firstElementChild.allowShare=F.managed?.allowShare===!0),F.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=F.scanSelection),F.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=F.bundleCreationRepoId),HG(),document.title=r.title;return}if(F.reports.length===0){F.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&kK();return}let i=n_(),a=F.viewMode===`kanban`,o={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},s=[],c=new Map;for(let e of i){let t=Ug(e);c.set(e,t);let n=t.commonTriage;n&&o[n]++,(a||n===F.shownTriage)&&s.push(e)}Object.defineProperty(s,"ruledOutIds",{value:i.ruledOutIds});let l=!1,u=!1,d=!1,f=!1;for(let e of i)for(let t of e){Pi(t)&&(f=!0);let e=U(t);tg(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=o_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(F.filterDuplicates=``);let h=s.some(L_),g=s.some(R_);h||(F.filterCrossContext=``),g||(F.filterAppStacked=``);let _=B_(s);_||(F.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=kr(t);e&&v.add(e)}let{hasFoldedRows:y,hasPartialRow:b,hasRuledOutRow:ee}=RK(e_(),!!F.currentWorkspace),te=[...new Set(F.reports.map(e=>e.type))].join(`, `),ne=F.reports.map(e=>e.fileName),re=s.map(Mg).filter(e=>e.length>0),ie=re.length>0&&gr(re),{hasAnyPriority:ae,hasAnyModulesPath:oe,hasAnySourcePath:ce,hasMultipleFiles:ue,repoInputUseful:de,knownRepo:fe,analyzerSet:pe,modelSet:me,analyzerOptions:he,modelOptions:ge}=IK(i);if(F.filterAnalyzer){let e=F.filterAnalyzer===s_?null:F.filterAnalyzer;(!pe.has(e)||pe.size<2)&&(F.filterAnalyzer=``)}if(F.filterModel){let e=F.filterModel===l_?null:F.filterModel;(!me.has(e)||me.size<2)&&(F.filterModel=``)}let _e=Dn(v);F.filterRevalidate&&!_e.some(e=>e.value===F.filterRevalidate)&&(F.filterRevalidate=``);let ve=E_(s);ve&&(F.filterRevalidate=`confirmed`);let ye=v.has(`partial`)&&Sg();ye||(F.filterPartial=``);let be=t&&(y||b||!F.currentWorkspace&&ee),xe=!(t&&F.showRevalidation!==!1)&&!F.upstreamOnly&&oe&&ce;!xe&&F.filterSources.size>0&&F.filterSources.clear(),ie||(F.filterConfMin=0,F.filterConfMax=10,(F.sortBy===`confidence-desc`||F.sortBy===`confidence-asc`)&&(F.sortBy=`severity`)),!ae&&(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`)&&(F.sortBy=`severity`),!ue&&F.sortBy===`file`&&(F.sortBy=`severity`);let Se=V_(s),Ce={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},we={red:0,blue:0,green:0,gray:0,none:0};for(let e of Se){if(e.length===1){let t=O(e[0],F.severityMode);Ce[t]=(Ce[t]||0)+1;let n=U(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>O(e,F.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>U(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=p_(Se),Ee=[...Te].toSorted(PK);if(F.filterRepo){let e=F.filterRepo===c_?null:F.filterRepo;Te.has(e)||(F.filterRepo=``)}let De=q_(H_(s)),Oe=hr(F.reports),ke=Oe?Object.keys(Oe).length:F.reports.reduce((e,t)=>e+(t.treeFiles??0),0),Ae=ke>1&&!Oe&&(F.currentView===`files`||F.viewMode===`graph`)&&BG(e=>{e||jK(),X()}),je=ke>1,Me=F.viewMode===`kanban`?null:CL();(!je||!Oe&&!Ae)&&jK();let Ne=JG(i,ne,de,fe,ke);if(F.currentView===`files`){let e=pr(i,F.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!z.contains(t)||!z.contains(n))&&(t=EK(`header-slot`),n=EK(`tree-view-slot`),z.replaceChildren(t,n)),t&&N(Ne,t),n&&N(Oe?yT(Oe,e):MK(`files`),n),HG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`;return}let Pe=F.viewMode===`table`&&F.tableSelectedGid&&De.some(e=>H(e)===F.tableSelectedGid),Ie=null;F.viewMode===`graph`&&Oe&&!Me&&(Ie=UG(),Ie||(F.viewMode=`kanban`));let Le=!!Ie,Re=`findings-content`;Pe&&(Re+=` with-details`),Le&&(Re+=` with-graph`),a&&(Re+=` with-kanban`),F.viewMode===`focus`&&(Re+=` with-focus`);let ze=M,Be=M,He=M,Ue=IH(De,F,uK);lK=null,Le||(ze=oK(De.length,s.length,o,Ce,we,{showSource:xe,showConfidence:ie,showPriority:ae,showGraphMode:je,showFileSort:ue,kanbanMode:a,showRepo:!!F.currentWorkspace,hasComment:l,revalidateOptions:_e,showPartial:ye,canDropLayer:t,canDetailLayer:be,canUpstreamLens:n,confirmedLocked:ve,hasFix:u,hasFlagged:d,hasDuplicates:m,hasCrossContext:h,hasAppStacked:g,showSecurity:_,showSeverityMode:f||F.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),F.shownTriage&&s.length===0?Be=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No ${F.shownTriage} findings.</p>`:De.length===0&&s.length>0&&!a?Be=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(Be=i.length>0?A`<p style="${E({color:`var(--green)`})}">All ${te} issues triaged.</p>`:A`<p style="${E({color:`var(--green)`})}">No ${te} issues found.</p>`),He=Ae?MK(`graph`):Me===`loading`?MK(`findings`):Me?A`<p class="triage-loading" role="status">${NK}</p>`:CK(De,Ue,c));let We=document.querySelector(`#header-slot`),Ge=z.querySelector(`:scope > .findings-content`),Ke=Ge&&Ge.querySelector(`:scope > #findings-graph-slot`),qe=Ge&&Ge.querySelector(`:scope > #findings-body-slot`),Je=Ge&&(Ke?`graph`:qe?`body`:null)===(Le?`graph`:`body`);!We||!Ge||!z.contains(We)||!z.contains(Ge)||!Je?(We=EK(`header-slot`),Ge=Object.assign(document.createElement(`div`),{className:Re}),Ge.append(...Le?[EK(`findings-graph-slot`)]:[EK(`toolbar-slot`),EK(`empty-state-slot`),EK(`findings-body-slot`)]),z.replaceChildren(We,Ge)):Ge.className!==Re&&(Ge.className=Re),We&&N(Ne,We);let Ye=document.querySelector(`#toolbar-slot`);Ye&&N(ze,Ye);let Xe=document.querySelector(`#empty-state-slot`);Xe&&N(Be,Xe);let Ze=document.querySelector(`#findings-body-slot`);if(Ze&&N(He,Ze),Ie){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:A`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:o,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};OT(e,Ie,t,WG,GG)}}if(lK){let e=z.querySelector(`.finding-table-slot`);e&&(dK||=document.createElement(`finding-table`),dK.items=lK,dK.selectedGid=F.tableSelectedGid,dK.parentNode!==e&&e.append(dK))}HG(),document.title=`DeepView \u2014 ${te||`no analyzer`}`,I()&&G?.replaceFindingRoute(LH(Ue,F))}var XK=new Map,ZK=new Map,QK=new Map,$K=new WeakMap;async function eq(e){try{let t=await hl(e);return t?Qt(t,e):null}catch{return null}}var tq=null;function nq(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return tq=t.size>0?{bundles:t}:null,tq}function rq(e){tq===e&&(tq=null)}function iq(e,t=()=>!0){let n=tq?.bundles.get(e);return!n||!t(n)?null:(tq.bundles.delete(e),tq.bundles.size===0&&(tq=null),n)}function aq(e,t,{sources:n=!0}={}){if(!t.managedId&&I())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?XK:ZK,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=F.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=iq(e,e=>e.kind===i&&e.managedId===t.managedId&&(!n||!e.metadataOnly));if(o)return Promise.resolve(o);let s=`${t.managedId??`local`}:${e}:${i}`,c=t.managedId&&n?ev():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?$t(await xx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Qt(await bx(t.managedId),e);return r.managedId=t.managedId,r}catch(n){if(n.name===`AbortError`)throw n;return{integrity:e,kind:i,size:t.size,managedId:t.managedId,error:n.message}}if(!n){let n=await eq(e);return n?.kind===i&&!n.stale?n:aq(e,t)}let[r,a]=await Promise.all([cq(e,t),eq(e)]);if(!r.error){let t=a?.kind===r.kind&&!a.stale;t&&(r.fileHashes=a.fileHashes,r.fileSizes=a.fileSizes,r.lineCounts=a.lineCounts),t||Zt(r).then(t=>gl(e,t)).catch(()=>{})}return r})();return r.set(s,{job:u,signal:c}),u.finally(()=>{r.get(s)?.job===u&&r.delete(s)}).catch(()=>{}),u}function oq(e,t=F.currentView===`bundles`?F.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=F.bundleDetails,i=F.bundleCodeFileRequest,a=i?.bundle===F.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=F.currentView===`bundles`&&F.bundleDetailsTab===`code`&&t===`code`?F.bundleSourceFile??(a?i.path:null):null;tv(),F.currentView=`bundles`,F.selectedBundle=e,F.selectedBundleWorkspace=n,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleCodeHistory=null,F.bundleCodeFileRequest=o?{bundle:e,path:o}:null,F.bundleCompare=null,F.bundleSourceFindingIdx=null,F.bundleCodeSearchQuery=``,F.bundleCodeSearchMode=`files`,F.bundleSearchQuery=``,F.bundleSearchRegex=!1,F.bundleSearchCase=!1,F.bundleSearchContext=!0,F.bundleDetailsTab=t??`overview`,w.showAll=!0,F.shownTriage=null}function sq(e,{preserveSource:t=!1}={}){qt(F.bundleDetailsTab,F.bundleSourceFile)&&!qt(e,t?F.bundleSourceFile:null)&&tv(),F.bundleDetailsTab=e,F.bundleCodeFileRequest=null,t||(F.bundleSourceFile=null,F.bundleCodeHistory=null),F.bundleSourceFindingIdx=null}async function cq(e,t){try{let n=await ml(e);if(I())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return $t(va(n),{integrity:e,kind:i,size:n.byteLength});let t=va(await Qm(n,()=>!I())),a=Nt.parse(t);return{integrity:e,kind:i,size:n.byteLength,bundle:a}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,kind:i,size:n.byteLength,error:t.message}}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,error:t.message,size:0}}}function lq(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Xf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Jt(e);if(Xf(e.integrity,t),F.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function uq(e){if(np(e))return Promise.resolve();if(QK.has(e))return QK.get(e);let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await eq(e);if(t?.json||t?.bundle)try{Xf(e,await Jt(t))}catch{}})();return QK.set(e,n),n.finally(()=>{QK.get(e)===n&&QK.delete(e)}).catch(()=>{}),n}async function dq(e,t=()=>!0){let n=new Set(e);if(n.size!==0){await new Promise(e=>{let t=()=>setTimeout(e,0);typeof requestAnimationFrame==`function`?requestAnimationFrame(t):t()});for(let e of n){if(!t())return;await uq(e)}}}async function fq(e){let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await aq(e,t,{sources:qt(F.bundleDetailsTab,F.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}F.selectedBundle!==e||t.managedId&&!F.bundles.includes(t)||(F.bundleDetails=n,X(),lq(n),t.managedId||Hf().catch(()=>{}))}function pq(e=F.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?ev():void 0,n=$K.get(e);if(n&&n.signal===t)return n.job;let r=(F.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=aq(e.integrity,r).then(n=>(t?.throwIfAborted(),F.bundleDetails===e?n.error&&e.managedId?(e.sourceError=n.error,X(),null):(n.error||(n.fileHashes=e.fileHashes,n.fileSizes=e.fileSizes,n.lineCounts=e.lineCounts,n.codeStats=e.codeStats,e.edges&&(n.edges=e.edges)),F.bundleDetails=n,X(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return $K.set(e,{job:i,signal:t}),i.finally(()=>{$K.get(e)?.job===i&&$K.delete(e)}).catch(()=>{}),i}async function mq({bundleId:e,teamId:t,bundleTab:n,file:r,line:i,endLine:a,compareId:o,compareMode:s},c,l,u){let d=c.find(t=>t.managedId===e);if(!d||!l()||!I())return!1;let f=iq(d.integrity,t=>t.managedId===e),p=F.bundleDetails?.managedId===e&&F.bundleDetails.integrity===d.integrity&&!F.bundleDetails.error?F.bundleDetails:null;try{F.bundles=c,ar(),oq(d.integrity,n),n===`code`&&r!=null&&(F.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Lx(c,d.integrity).find(e=>e.managedId===o):null;e&&(F.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ri(s)}),F.bundleDetails=f??p,F.currentManagedTeam=t,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),u(),document.querySelector(`#main-content`)?.scrollTo({top:0})}catch(e){return l()&&e.name!==`AbortError`&&Fx(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=F.bundleDetails,h=()=>I()&&F.currentView===`bundles`&&F.selectedBundle===d.integrity&&F.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&F.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&Fx(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(F.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},X())),!1),_=W(),v;for(;;){let t=ev();try{v=await bx(e,{signal:t});break}catch(e){if(e?.name===`AbortError`&&t.aborted&&h())continue;return g(e,!1)}}try{if(v.integrity!==d.integrity)throw Error(`the metadata is for another version of this bundle`);if(h()){let t=Qt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,F.bundleDetails=n,X({animate:!1})}return l()&&_===W()&&F.bundleDetails?.managedId===e&&F.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function hq(e){let t=1/0,n=Date.now()+5e3;for(let r of e)for(let e of r.bundles??[])[`stasis`,`sourcemap`].includes(e.kind)&&e.summary==null&&(t=Math.min(t,Math.max(n,e.summaryRetryAt??0)));return t}function gq(e){let t=null,n=null,r=null;return async({generation:i,session:a,signal:o,reuse:s=!1,revision:c=null})=>{if(o.aborted)return null;let l=JSON.stringify([i,a?.id,a?.role,a?.csrfToken]);if(r!==l&&(t?.controller.abort(),t=null,n=null,r=l),n&&Date.now()<n.expiresAt&&(s||c!==null&&c===n.revision))return n.teams;if(!t||t.signal.aborted||c!==null&&t.revision!==c){t?.controller.abort(),n=null;let i=new AbortController,a=AbortSignal.any([o,i.signal]),s={controller:i,signal:a,promise:null,revision:c};t=s;let u=null;s.promise=e({fallback:null,signal:a,onRevision:e=>{u=e}}).then(e=>a.aborted||r!==l?null:(e!==null&&(n={teams:e,revision:u,expiresAt:hq(e)}),e)).finally(()=>{t===s&&(t=null)})}let u=t,d=()=>u.controller.abort();o.addEventListener(`abort`,d,{once:!0});try{let e=await u.promise;return o.aborted||u.signal.aborted?null:e}finally{o.removeEventListener(`abort`,d)}}}function _q(e){let t=String(e??``).split(/[\s\-_/.]+/u).filter(Boolean);if(t.length<2)return Array.from(t[0]??``).slice(0,2).join(``);let n=t.slice(0,2).map(e=>Array.from(e)[0]).join(``);return/^\p{Ll}/u.test(n)?n:n.toUpperCase()}var vq=`deepview-managed-session`,yq=null,bq=null,xq=null,Sq=0,Cq=0,wq=new Set;function Tq(){return!yq&&typeof BroadcastChannel==`function`&&(yq=new BroadcastChannel(vq),yq.addEventListener(`message`,e=>{let t=e.data?.mark;if(typeof t==`string`&&(xq=t,Sq++,bq!==null&&t!==bq))for(let e of wq)e()}),yq.unref?.()),yq}async function Eq(e){if(!e)return`signed-out`;let t=globalThis.crypto?.subtle;if(!t)return null;let n=JSON.stringify([e.id,e.role,e.viewer?.id??null,e.csrfToken??null]);return[...new Uint8Array(await t.digest(`SHA-256`,new TextEncoder().encode(n)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function Dq(e,t){if(e?.publicShare)return;let n=++Cq,r=await Eq(e);if(n!==Cq||r===null||!Tq())return;let i=bq===null,a=t===Sq&&xq!==null&&xq!==r;if((r!==bq||a)&&(bq=r,yq.postMessage({mark:r})),a)xq=r;else if(i&&xq!==null&&xq!==r)for(let e of wq)e()}function Oq(){return Sq}async function kq(e){return xq===null||e?.publicShare?!1:xq!==await Eq(e)}function Aq(e){return Tq(),wq.add(e),()=>{wq.delete(e)}}var jq=`*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:host{width:260px;flex-shrink:0;height:100%;background:var(--surface);backdrop-filter:var(--glass-blur);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease-out;overflow:hidden}:host(.collapsed){width:32px}:host([inert]) .brand-tag,:host([inert]) .sidebar-search,:host([inert]) .sidebar-actions,:host([inert]) #file-list,:host([inert]) #sidebar-toggle,:host([inert]) #sidebar-home,:host([inert]) #sidebar-rail,:host([inert]) #encryption-toggle,:host([inert]) #storage-status{visibility:hidden}:host(.collapsed) .brand,:host(.collapsed) .sidebar-search,:host(.collapsed) #encryption-toggle,:host(.collapsed) #file-list{display:none}:host(.collapsed) .sidebar-header{padding:.5rem 0;justify-content:center}:host(.collapsed) .sidebar-actions{padding:.35rem 0;flex-direction:column;justify-content:center}:host(.collapsed) sidebar-delete-current,:host(.collapsed) #storage-status,:host(.collapsed) #sync-status .sync-label{display:none}:host(.collapsed) #sync-status{padding:.25rem;border:0}:host(.collapsed) #view-as-status,:host(.collapsed) #public-status,:host(.collapsed) .auth-login{display:none}:host(.collapsed) #auth-status[data-authed="1"]{padding:.2rem}:host(.collapsed[data-view-as]) #auth-status .user-avatar{box-shadow:0 0 0 1.5px var(--surface),0 0 0 3px var(--accent)}#sidebar-home,#sidebar-rail{display:none}:host(.collapsed) #sidebar-home{display:grid;margin:0 auto;padding:.3rem 0}:host(.collapsed) #sidebar-rail{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.35rem 0;list-style:none;overflow-y:auto;overscroll-behavior:none;scrollbar-width:none}.rail-item{width:26px;padding:.25rem 0 .2rem;display:grid;justify-items:center;gap:.15rem;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);font:inherit;font-size:.58rem;font-weight:600;line-height:1;white-space:nowrap;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.current{color:var(--accent);background:rgb(from var(--text) r g b / .1)}&:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}:host([data-mode="managed"]:not([data-workspace-access])) .sidebar-search,:host([data-mode="managed"]:not([data-authenticated])) .sidebar-actions{display:none}.sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem .4rem;.brand{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;user-select:none}.brand-button{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;border-radius:var(--ui-radius, 4px);&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.brand-tag{padding:.08rem .25rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;font:inherit;font-size:.65rem;font-weight:500;color:var(--muted);text-transform:lowercase;letter-spacing:.02em;&[role=button]{cursor:default}&[role=button]:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}}@media(display-mode:window-controls-overlay){.sidebar-header{min-height:env(titlebar-area-height,0px);padding-left:max(.75rem,env(titlebar-area-x,0px));-webkit-app-region:drag;app-region:drag;.brand-button,.brand-tag,#encryption-toggle{-webkit-app-region:no-drag;app-region:no-drag}#sidebar-toggle{display:none}}}:host-context(body.theme-w95) .sidebar-header{position:fixed;z-index:1;top:calc(var(--w95-gap) + var(--w95-frame));right:calc(var(--w95-gap) + var(--w95-frame) + var(--wco-right-toolbar, 0px));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-title-height);min-height:0;justify-content:normal;gap:0;padding:0 20px 0 max(2px,env(titlebar-area-x,0px) - var(--w95-gap) - var(--w95-frame));background:var(--w95-title);color:#fff;.brand{display:flex;gap:4px;margin-right:4px;font-size:11px;letter-spacing:0;&:before{content:"";flex:none;width:16px;height:16px;background:url(./icon.svg) center / contain no-repeat}}.brand-button:focus-visible{outline:1px dotted #fff;outline-offset:1px}.brand-tag{padding:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;&:before{content:"- " / ""}&[role=button]:hover{color:inherit;background:none}&:focus-visible{outline:1px dotted #fff;outline-offset:1px}}:is(#encryption-toggle,#sidebar-toggle){display:grid;width:16px;height:14px;background:var(--w95-face);box-shadow:var(--w95-raised);-webkit-app-region:no-drag;app-region:no-drag;& svg{display:none}&:active{box-shadow:var(--w95-pressed)}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}}#sidebar-toggle{background:var(--w95-glyph-maximize),var(--w95-face)}#encryption-toggle{background:var(--w95-glyph-unlock),var(--w95-face)}#encryption-toggle:is(.encrypted,.locked-pending){background:var(--w95-glyph-lock),var(--w95-face)}}:host-context(body.theme-w95):host(.collapsed) .sidebar-header #sidebar-toggle{background:var(--w95-glyph-restore),var(--w95-face)}:host-context(body.theme-w95) .sidebar-actions{position:fixed;z-index:1;right:calc(var(--w95-gap) + var(--w95-frame));bottom:calc(var(--w95-gap) + var(--w95-frame));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-status-height);flex-direction:row;justify-content:normal;gap:2px;padding:0;border-top:0;& sidebar-delete-current{display:contents}:is(button,#sync-status,#auth-status,#manage-status,#public-status){display:inline-flex;align-items:center;gap:4px;width:auto;height:100%;max-width:none;padding:0 6px;border:0;background:none;color:var(--text);box-shadow:var(--w95-status);font-size:11px;&:hover{background:none;color:var(--text)}&:active{box-shadow:inset 1px 1px #000,inset -1px -1px #fff;opacity:1}&[hidden]{display:none}}:is(#sync-status,#auth-status){order:-1}#manage-status{order:2}&:after{content:"";flex:1;order:1;align-self:stretch;box-shadow:var(--w95-status)}#sync-status .sync-label{display:inline}}#sidebar-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}}#encryption-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&.encrypted{color:var(--accent)}&.locked-pending{color:light-dark(#b25b00,#f0a060);outline:1px dashed currentcolor;outline-offset:-2px}}#encryption-toggle[hidden]{display:none!important}.sidebar-search{display:flex;align-items:center;margin:0 .55rem .25rem;padding:0 .25rem 0 .55rem;background:rgb(from var(--bg) r g b / .45);border:1px solid var(--border);border-radius:var(--ui-radius, 7px);transition:background .12s,border-color .12s;-webkit-app-region:no-drag;app-region:no-drag;&:has(input:focus){border-color:var(--accent);background:rgb(from var(--text) r g b / .06)}.sidebar-search-icon{flex-shrink:0;color:var(--muted);pointer-events:none;margin-right:.4rem}& input{flex:1;min-width:0;padding:.3rem 0;background:transparent;color:var(--text);border:0;outline:none;font:inherit;font-size:.78rem;&::placeholder{color:var(--muted)}&:focus::placeholder{color:transparent}&::-webkit-search-cancel-button{display:none}}}sidebar-view-button{display:contents}sidebar-view-button[hidden]{display:none!important}.sidebar-view-btn{position:relative;flex-shrink:0;width:20px;height:20px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 3px);padding:0;margin-left:2px;transition:background .12s,color .12s;sidebar-view-button+sidebar-view-button>&{margin-left:.4rem}sidebar-view-button:last-of-type>&{margin-right:.1rem}& svg{width:14px;height:14px}&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.active{color:var(--accent);background:rgb(from var(--text) r g b / .1)}.view-btn-count{position:absolute;top:-4px;right:-4px;background:var(--bg);color:color-mix(in srgb,var(--muted),var(--text) 15%);font-size:8.5px;font-weight:600;border-radius:999px;padding:0 3px;min-width:11px;text-align:center;line-height:11px;font-variant-numeric:tabular-nums;pointer-events:none}&.active .view-btn-count{color:var(--accent)}}#file-list{list-style:none;flex:1;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable;-webkit-app-region:no-drag;app-region:no-drag;padding:0 .35rem .25rem 0;margin:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;&::-webkit-scrollbar{width:5px}&::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}}.file-group-header{display:flex;align-items:center;justify-content:space-between;padding:.45rem .35rem .2rem .55rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);user-select:none;&:first-child{padding-top:.25rem}}.file-group-header.workspace-header .workspace-header-actions{display:flex;align-items:center;gap:.35rem}.workspace-add{width:18px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);border-color:var(--accent)}}.file-item:is(.workspace-item,.team-item){display:block;border-radius:var(--ui-radius, 0 5px 5px 0)}.workspace-heading{display:flex;align-items:stretch;gap:.15rem}.workspace-meta{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:0 .3rem .2rem calc(2rem - 3px);color:var(--muted);font-size:.68rem;line-height:1.3;white-space:nowrap;user-select:none}.workspace-findings{min-width:0;overflow:hidden;text-overflow:ellipsis}.workspace-sections{display:inline-flex;flex-shrink:0;margin-left:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);overflow:hidden}.workspace-sections button{padding:.06rem .25rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.64rem;line-height:1.4;font-variant-numeric:tabular-nums;+button{border-left:1px solid var(--border)}&:hover:not(:disabled){background:var(--surface-active);color:var(--text)}&[aria-expanded=true]{background:rgb(from var(--accent) r g b / .1);color:var(--accent)}&:disabled{background:var(--surface-active);color:var(--muted)}}.workspace-share,.workspace-export,.workspace-leave{flex-shrink:0;width:22px;align-self:center;height:22px;display:none;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .06);border-color:var(--accent)}}.file-item.team-item:focus-within .workspace-share{display:grid}@media(hover:none){.file-item.team-item .workspace-share{display:grid}}.workspace-leave:hover:not(:disabled){color:var(--critical, #f87171);border-color:var(--critical, #f87171)}@media(hover:hover){.file-item.team-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-export,.file-item.workspace-item:hover .workspace-leave{display:grid}}.workspace-rename-input{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--ui-radius, 3px);padding:0 .25rem;margin:-1px 0;font:inherit;font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;outline:none}.file-item.team-item .team-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item>.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;background:none;border:0;padding:.2rem .3rem .2rem 1.3rem;font-family:inherit;font-size:.78rem;text-align:left}.file-item.team-bundle-item .file-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item .file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}.file-item{list-style:none;position:relative}.file-item.current:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:var(--ui-radius, 0 2px 2px 0);pointer-events:none}.file-item button.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;padding:.2rem .3rem .2rem .55rem;background:transparent;color:var(--text);border:1px solid transparent;border-radius:var(--ui-radius, 0 5px 5px 0);font-family:inherit;font-size:.78rem;text-align:left;&:hover{background:rgb(from var(--text) r g b / .04)}.file-icon{flex-shrink:0;color:var(--muted)}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}.file-item:is(.workspace-item,.team-item) button.file-name{flex:1;min-width:0;padding-left:calc(.55rem - 3px)}.file-item .file-count{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);opacity:.65;font-size:.68rem;font-weight:500;font-variant-numeric:tabular-nums}.file-item.current button.file-name{background:rgb(from var(--accent) r g b / .09);border-color:rgb(from var(--accent) r g b / .16);.file-icon,.file-count{color:var(--text)}}.file-item.content-hidden button.file-name .file-label{color:var(--muted)}.file-item:is(.workspace-item,.team-item):hover{background:rgb(from var(--text) r g b / .04)}.file-item:is(.workspace-item,.team-item) button.file-name:hover{background:transparent}.file-item:is(.workspace-item,.team-item).current{background:rgb(from var(--accent) r g b / .09);border-radius:var(--ui-radius, 0 5px 5px 0);box-shadow:inset 0 0 0 1px rgb(from var(--accent) r g b / .16)}.file-item:is(.workspace-item,.team-item).current button.file-name{background:transparent;border-color:transparent}:host-context(body.theme-paper) .file-item.current{background:transparent;box-shadow:none;& button.file-name{background:transparent;border-color:transparent}.file-name:after{content:"";position:absolute;inset:0;border:1px dashed var(--border);border-left:0;pointer-events:none}}:host-context(body.theme-w95){.sidebar-search{margin:2px 2px 4px;border:0;background:#fff;box-shadow:var(--w95-sunken);&:has(input:focus){background:#fff}& input{font-size:11px}}.file-group-header{padding-top:.35rem;font-size:11px;color:#000;text-transform:none;letter-spacing:0}.file-item button.file-name{font-size:11px}.file-item.indented:before{background:none;border-left:1px dotted var(--w95-shadow)}#storage-status{border-color:#000;background:var(--w95-tooltip);color:#000;&:hover{border-color:#000;background:var(--w95-tooltip)}}#file-list{padding-right:0;scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,#file-list::-webkit-scrollbar{width:16px;height:16px;background:var(--w95-dither)}::-webkit-scrollbar-thumb,#file-list::-webkit-scrollbar-thumb{background:var(--w95-face);border-radius:0;box-shadow:var(--w95-raised)}}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button{display:block;width:16px;height:16px;background:var(--w95-arrow-down),var(--w95-face);box-shadow:var(--w95-raised)}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button:vertical:decrement{background:var(--w95-arrow-up),var(--w95-face)}:host-context(body.theme-w95) .file-item.current{--text: #fff;--muted: var(--w95-light);&:after{display:none}&:is(.workspace-item,.team-item),&:not(.workspace-item,.team-item) button.file-name{background:var(--w95-title);border-color:transparent;box-shadow:none}}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(prefers-reduced-motion:reduce){:host,*,*:before,*:after{transition:none!important}}.file-item.indented button.file-name{padding-left:1.3rem}.file-item.indented:before{content:"";position:absolute;left:.85rem;top:0;bottom:0;width:1px;background:var(--border)}.file-item.bundle-missing>.file-name,.file-item.report-missing>.file-name{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem 1.4rem;color:var(--muted);font-size:.78rem;font-style:italic;cursor:default;.file-icon{flex-shrink:0;color:var(--muted);font-style:normal}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}:host-context(body.theme-pink) .workspace-rename-input,:host-context(body.theme-pink) .file-item button.file-name .file-label,:host-context(body.theme-pink) .file-item.bundle-missing .file-label,:host-context(body.theme-pink) .file-item.report-missing .file-label,:host-context(body.theme-w95) .workspace-rename-input,:host-context(body.theme-w95) .file-item button.file-name .file-label,:host-context(body.theme-w95) .file-item.bundle-missing .file-label,:host-context(body.theme-w95) .file-item.report-missing .file-label{font-family:inherit}.file-item.dragging button.file-name{opacity:.4}.file-item.workspace-item.drag-over button.file-name,.file-item.indented.drag-over button.file-name{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent)}.file-group-header.drag-over{background:rgb(from var(--accent) r g b / .12);border-radius:var(--ui-radius, 4px)}.sidebar-actions{padding:.35rem .55rem .45rem;border-top:1px solid var(--border);display:flex;gap:.35rem;align-items:center;justify-content:space-between;& button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 4px);padding:.2rem .5rem;font-size:.72rem;font-family:inherit;-webkit-app-region:no-drag;app-region:no-drag;&:hover{color:var(--text);border-color:var(--accent)}&.danger:hover{color:var(--critical);border-color:var(--critical)}&[disabled]{opacity:.4;border-color:var(--border)!important;color:var(--muted)!important}}}sidebar-delete-current{display:contents}sidebar-delete-current[hidden]{display:none!important}sidebar-delete-current button{display:inline-flex;align-items:center;gap:.35rem;.trash-icon{flex-shrink:0}}#sync-status{display:inline-flex;align-items:center;gap:.35rem;border-color:transparent;&:hover{border-color:var(--accent)}.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .15)}&[data-status=online] .sync-dot{background:var(--green)}&[data-status=connecting] .sync-dot{background:var(--medium)}&[data-status=offline] .sync-dot{background:var(--critical)}}#sync-status[data-proxy-auth] .sync-dot{box-shadow:0 0 0 2px var(--accent)}#sync-status[data-degraded] .sync-dot{box-shadow:0 0 0 2px var(--medium)}#sync-status[hidden]{display:none}#storage-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .55rem;background:rgb(from var(--medium) r g b / .12);border:1px solid rgb(from var(--medium) r g b / .3);border-radius:var(--ui-radius, 5px);color:light-dark(#b25b00,#f0a060);font-size:.72rem;font-family:inherit;cursor:default;text-align:left;-webkit-app-region:no-drag;app-region:no-drag;&:hover{background:rgb(from var(--medium) r g b / .18);border-color:rgb(from var(--medium) r g b / .5)}.storage-dot{width:7px;height:7px;border-radius:50%;background:var(--medium);flex-shrink:0}}#storage-status[hidden]{display:none}#view-as-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .3rem .3rem .55rem;background:rgb(from var(--accent) r g b / .12);border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 5px);color:var(--text);font-size:.72rem;user-select:none;-webkit-app-region:no-drag;app-region:no-drag;.view-as-label{flex:1;display:grid;gap:.05rem;min-width:0}.view-as-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-as-note{color:var(--muted);font-size:.66rem}.view-as-stop{flex-shrink:0;padding:.15rem .5rem;font:inherit;font-weight:500}}#view-as-status[hidden]{display:none}#auth-status[hidden],#manage-status[hidden]{display:none!important}#auth-status{display:inline-flex;align-items:center}#auth-status[data-authed="1"]{display:inline-flex;align-items:center;gap:.4rem;max-width:12rem;padding:.2rem .35rem;border-color:transparent;border-radius:var(--ui-radius, 5px)}#auth-status[data-authed="1"]:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#manage-status[hidden]{display:none}#manage-status{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;padding:.25rem;border-color:transparent;color:var(--muted)}#manage-status:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#public-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2rem 0;color:var(--muted);font-size:.72rem;user-select:none}#public-status[hidden]{display:none}.auth-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font:inherit;font-size:.72rem;font-weight:400}.user-avatar{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--accent);display:inline-grid;place-items:center;user-select:none}.user-avatar-lg{width:38px;height:38px}.user-avatar-fallback{font-size:.72rem;font-weight:600;line-height:1;color:var(--bg);text-transform:uppercase}.user-avatar-lg .user-avatar-fallback{font-size:1.05rem}.user-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.user-avatar img.broken{display:none}.user-menu[popover]{position:fixed;inset:auto;margin:0;min-width:11rem;flex-direction:column;gap:.1rem;background:var(--surface, var(--bg));border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.3rem;box-shadow:0 4px 14px #00000047}.user-menu[popover]:not(:popover-open){display:none}.user-menu[popover]:popover-open{display:flex}.user-card{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem .45rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.user-id{display:flex;flex-direction:column;min-width:0}.user-login{font-weight:600;font-size:.82rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-row{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--ui-radius, 4px);padding:.4rem .5rem;font:inherit;font-size:.82rem;color:var(--text)}.user-menu-row.logout-row{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem}.logout-row svg{flex:0 0 auto}.user-menu-row:hover{background:rgb(from var(--text) r g b / .08)}:host-context(body.theme-w95) *{overscroll-behavior:none}
189
- `,Mq=`:is(.file-icon,.report-logo){&.brand-deepview{--brand-bg: #2563eb;--brand-fg: #fff}&.brand-claude{--brand-bg: #d97757;--brand-fg: #fff}&.brand-codex{--brand-bg: #fff;--brand-fg: #000}&.brand-vercel{--brand-bg: #000;--brand-fg: #fff}&.brand-markdown{--brand-bg: #374151;--brand-fg: #fff}&.brand-piolium{--brand-bg: #fbb829;--brand-fg: #1c1b19}.bg{fill:var(--brand-bg)}.fg{fill:var(--brand-fg)}}.file-icon:is(.brand-codex,.brand-vercel) .bg{stroke:var(--brand-fg);stroke-width:.5}.report-logo{display:grid;place-items:center;align-self:stretch;flex:0 0 20px;background:var(--brand-bg);border-right:1px solid var(--border)}
190
- `,Nq=null,Pq=null,Fq=!1,Iq=!1,Lq=0;function Rq(){let e=navigator.userAgent;return/AppleWebKit/u.test(e)&&!/Chrome\/|Chromium|Edg\/|OPR\/|Android/u.test(e)?`webkit`:/Firefox\//u.test(e)?`firefox`:`chromium`}function zq(){return Rq()===`webkit`}function Bq(e){return e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(1)} MB`:e>=1e3?`${(e/1e3).toFixed(1)} kB`:`${e} B`}function Vq(){if(!Nq)return;if(I()||!Pq||Pq.persisted!==!1||!Fq){Nq.hidden=!0;return}Nq.hidden=!1;let e=Pq.usage===null||Pq.quota===null?``:` Using ${Bq(Pq.usage)} of ${Bq(Pq.quota)}.`;Nq.querySelector(`.storage-label`).textContent=`Storage at risk`,Nq.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(zq()?`Click for how to protect them (on Safari and iOS browsers this needs the app installed to the Home Screen or Dock).`:`Click to request persistent storage — if the browser declines, instructions for enabling it follow.`)+e}function Hq(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!zq()&&location.hostname===`localhost`?` Note: plain localhost can NEVER pass — Chromium keys site importance by registerable domain (IP literals excepted) and localhost has none; for local testing use 127.0.0.1 instead.`:``;console.info(`storage: persistent-storage request not granted${n} \u2014 `+(zq()?`Safari ties persistence to install state; add the app to the Home Screen / Dock.`:`Chromium-based browsers never prompt and silently deny origins they don't consider important; installing the app, bookmarking it, allowing notifications, or regular use flips the heuristic (re-evaluated on every request). Firefox shows a prompt instead.`)+r)}async function Uq(){if(await NX(),!Nq||I()){Vq();return}let[e,t]=await Promise.all([yp(),(async()=>{try{return(await Uc()).length>0||await ll()}catch{return!1}})()]);Pq=e,Fq=t,Vq()}function Wq(){!Nq||Lq||(Lq=setTimeout(()=>{Lq=0,Uq()},1e3))}async function Gq(){Iq||(await Uq(),I()||Pq?.persisted!==!1||!Fq||Iq)||(Iq=!0,Hq(await vp(),!1),await Uq())}async function Kq(){if(Pq&&Pq.persisted===!1){Iq=!0;let e=await vp();Hq(e,!0),e||await Oe()}await Uq()}function qq(e){Nq=e,Nq&&(Nq.addEventListener(`click`,()=>{Kq()}),Vc((e,t)=>{Wq(),t===`save`&&Gq()}),Gq())}function Jq(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);N(n.length>0?A`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${D(n,e=>e.id,e=>{let t=km(e),n=e.reports.filter(e=>Bu(e)!==d).length;return A`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${k($i)} <span class="landing-workspace-text"><span class="landing-workspace-name">${e.name}</span> <span class="landing-workspace-count">${t?.appMode?`${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`} \xB7 `:``}${n.toLocaleString()} report${n===1?``:`s`}</span></span></button>`})}</div></nav>`:M,t)}var Yq=null;function Xq(e){return{reports:e.reports.filter(e=>e?.analyzer!==`links`).length,bundles:e.bundles?.length??0,repositories:new Set((e.repos??[]).map(e=>e.repoId)).size}}function Zq(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=HH(e.app),{reports:r,bundles:i,repositories:a}=Xq(e);return[n==null?null:t(n,`finding`),r?t(r,`report`):null,i?t(i,`bundle`):null,a?t(a,`repository`,`repositories`):null].filter(Boolean).join(` · `)}function Qq(e){let{serverMode:t,session:n,sessionPending:r=!1,teamsPending:i=!1,teams:a=[],alternateMode:o=`local`,onSwitchMode:s}=e,c=document.querySelector(`#drop-zone`),l=c?.querySelector(`.managed-landing`);if(!l)return;let u=t===`managed`,d=t===`local`,f=u&&(n?n.role!==`none`&&i:r);f?Yq?Yq.options=e:Yq={options:e,elapsed:!1,timer:setTimeout(()=>{Yq.elapsed=!0,Qq(Yq.options)},1e3)}:(clearTimeout(Yq?.timer),Yq=null);let p=f&&!Yq.elapsed;c.dataset.serverMode=u?`managed`:`local`,c.setAttribute(`aria-label`,u?p?n?`Loading teams`:`Loading session`:n?.role===`none`?`No workspace access`:n?`Team findings`:`Log in`:`Drop reports here`);let m=c.querySelector(`.drop-local-copy`);if(m&&(m.textContent=d?`Review locally in your browser.`:`Review locally in your browser. Sync across devices when you need it.`),!u||p){N(M,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(Xq(e)).some(Boolean));if(Ke()&&!n){N(A`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}N(n==null?A`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?A`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:A`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?A`<nav class="managed-team-list" aria-label="Teams">${D(g,e=>e.id,e=>A`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${k($i)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${Zq(e)}</span> </span><svg class="managed-team-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 4 4 4-4 4"/></svg></button>`)}</nav>`:A`<p class="managed-landing-empty">No team reports are available yet.</p>`}<nav class="managed-content-links" aria-label="Content and activity">${[...h?[[`manage-bundles`,`Bundles`,Zi],[`manage-scans`,`Scans`,ra],[`manage-reports`,`Reports`,ia]]:[],[`npm`,`npm packages`,Qi]].map(([e,t,n])=>A`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${k(n)}</span> <span>${t}</span></button>`)}</nav>${h?A`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${k(ta)}</span><span>Manage</span></button></div>`:M}`,l)}var $q=!1,eJ=null;function tJ(){if(!$q){eJ=dc();return}Hf().catch(()=>{}),pd().catch(()=>{})}function nJ(){if($q)return;$q=!0;let e=eJ;eJ=null,e!==null&&e===dc()&&tJ()}async function rJ(e){await ze({workspace:e})}var iJ=class extends jv{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return A`<dialog @close="${this._onClose}"><header><h3>Sign in to keep syncing</h3></header><p class="nwd-intro ui-hint">Triage can't reach the sync server — the connection is being redirected to an <strong>authentication proxy</strong> (for example Cloudflare Access). This usually means your access session has expired.</p><p class="nwd-note ui-hint">Reload the page to sign in again. Your triage is saved on this device, so reloading won't lose anything — or keep working offline and reload later.</p><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onClose}">Not now</button> <button type="button" class="primary" @click="${this._onReload}">Reload page</button></footer></dialog>`}};customElements.define(`proxy-auth-dialog`,iJ);function aJ(){return new Promise(e=>{let t=document.createElement(`proxy-auth-dialog`);t.exclusive=!0;let n=(n,r)=>{t.remove(),e({shown:n,reload:r})};t.addEventListener(`resolve`,e=>n(!0,e.detail===`reload`)),t.addEventListener(`modal-conflict`,()=>n(!1,!1)),document.body.append(t)})}async function oJ(e,{openManagedReport:t,readTeam:n=Sx,isCurrent:r=()=>!0}){let i=F.managedSession,a=()=>r()&&I()&&F.managedSession?.id===i?.id&&F.managedSession?.role===i?.role,o=F.managedTeams;if(!a())return null;async function s(n,r){return!a()||(F.currentManagedTeam!==n.id||F.currentManagedReport!==r)&&!await t(n,r)||!a()||F.currentManagedTeam!==n.id||F.currentManagedReport!==r?null:qC(e.id)}if(e.teamId){let t=o.find(t=>t.id===e.teamId);return!t||e.reportId&&!t.reports.some(t=>t.id===e.reportId)?null:s(t,e.reportId??null)}let c=o.flatMap(e=>e.reports.map(t=>({team:e,report:t}))),l=new Set,u=new Map;async function d(t){for(let{team:r,report:i}of t){if(!a())return null;if(l.has(`${r.id}:${i.id}`))continue;l.add(`${r.id}:${i.id}`),u.has(r.id)||u.set(r.id,await n(r.id));let t=u.get(r.id)?.find(e=>e.id===i.id);if(!a())return null;if(t==null)continue;let o=await re(JSON.stringify(t.data),i.filename);if(!a())return null;if(o?.findings.some(t=>t.id===e.id))return s(r,i.id)}return null}if(e.report){let t=await Promise.all(c.map(({report:e})=>Br(`report`,e.filename))),n=await d(c.filter((n,r)=>t[r]===e.report));if(n||!a())return n}if(e.workspace){let t=o[(await Promise.all(o.map(e=>Br(`workspace`,`managed-team:${e.id}`)))).indexOf(e.workspace)];if(t){let e=await s(t,null);if(e||!a())return e}}if(!a())return null;let f=o.find(e=>e.id===F.currentManagedTeam);if(f&&(F.currentManagedReport==null||f.reports.some(e=>e.id===F.currentManagedReport))){let t=qC(e.id);if(t)return t}return d(c)}async function sJ(e,t,n,{openReport:r,openManagedReport:i}){if(I()){let e=F.managedTeams.find(e=>e.id===F.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(F.currentManagedReport!==n||F.currentWorkspace)&&!await i(e,n)||!I()||F.currentManagedTeam!==e.id||F.currentManagedReport!==n||F.currentWorkspace)return null}else if(n||((F.currentFile!==t||F.currentWorkspace)&&await r(t),I()||F.currentFile!==t||F.currentWorkspace))return null;return qC(e)}async function cJ(e,t){if(I())return oJ(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([ip(e.report),rp(e.workspace)]);async function o(t){let r=KC(t,a?.id);return(F.currentFile!==t||F.currentWorkspace||F.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),qC(e.id)}if(i){let e=await o(i);if(e)return e}if(a){F.currentWorkspace!==a.id&&await r(a.id);let t=qC(e.id);if(t)return t}let s=qC(e.id);if(s)return s;let c=F.reports.map(e=>e.fileName).filter(Boolean),l=await op(e.id,{skip:c});return l?await o(l):null}var lJ=1600,uJ=`link-target`,dJ=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,fJ=null,pJ=3,mJ=150,hJ=5;function gJ(e){fJ!==null&&clearTimeout(fJ);for(let e of document.querySelectorAll(`.${uJ}`))e.classList.remove(uJ);e.classList.add(uJ),fJ=setTimeout(()=>{e.classList.remove(uJ),fJ=null},lJ)}function _J(e){return new Promise(t=>{let n=null,r=0,i=0,a=()=>{let o=Math.round(e.getBoundingClientRect().top);r=o===n?r+1:0,n=o,r>=pJ||++i>=mJ?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function vJ(e){let t=0,n=window.innerHeight,r=_W(e);if(r){let e=r.getBoundingClientRect();t=Math.max(t,e.top),n=Math.min(n,e.bottom)}return{top:t,bottom:n}}function yJ(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=vJ(e);if(r<=n)return!1;let i=(n+r)/2;return t.top>=n&&t.bottom<=r||t.top<=i&&t.bottom>=i}async function bJ(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<hJ;t++){if(await _J(e),!e.isConnected||yJ(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function xJ(e){let t=CSS.escape(e);if(F.viewMode===`table`){let t=z.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&H(n.group)===e)return n}}if(F.viewMode===`kanban`){let e=z.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return z.querySelector(`finding-card[data-gid="${t}"]`)??z.querySelector(`[data-gid="${t}"]`)}async function SJ(e,t,n=()=>!0){let r=JC(e.group,t),i=a_(r);if(i&&Yg(i)&&queueMicrotask(kd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await xJ(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await bJ(a),n()?(gJ(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function CJ(e,{openManagedReport:t=QL,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await cJ(e,{openReport:YL,openWorkspace:eR,openManagedReport:t,isCurrent:n});return n()?r?await SJ(r,e.id,n):{ok:!1,reason:I()?`Couldn't find that finding in the team reports you can access.`:dJ}:{ok:!1}}async function wJ(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await sJ(e,t,n,{openReport:YL,openManagedReport:QL});return r?await SJ(r,e):{ok:!1,reason:n?`Could not open that finding in "${t}". Open the team and try again.`:`Couldn't find that finding in "${t}". It may have been re-imported since this links file was written.`}}var TJ=null,Z=null,EJ=null;function DJ(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}ur();function OJ(){return Af().size}function kJ(){return jf().size}var AJ=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,jJ=`application/x-deepview-report`,MJ=`application/x-deepview-source-ws`,NJ=`application/x-deepview-bundle`,PJ=!1,FJ=!1,IJ={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[d]:`Links`},LJ=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,d],RJ=``,zJ=!1,BJ=new Map,VJ=``,HJ=new UH;function UJ(e,t){let n=F.currentView===`bundles`?F.selectedBundle:null,r=[`findings`,`files`,`links`].includes(F.currentView)?F.currentFile:null,i=n?`bundles`:`reports`,a=r?KC(r):null,o=e.filter(e=>n?e.bundles.includes(n):e.id===a),s=JSON.stringify([i,n||r,o.map(e=>e.id)]);if(t||s!==VJ){VJ=s;for(let e of o){let t=BJ.get(e.id)??new Set;t.add(i),BJ.set(e.id,t)}}}function WJ(e,t={}){let n=`file-item${GJ(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=x(e),i=zu(e),a=Jx[Qx(e)]??Jx.default;return A`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${k(a)}<span class="file-label">${r}</span>${i===void 0?M:A`<span class="file-count">${i}</span>`}</button></li>`}function GJ(e,t){return e===F.currentFile&&t===KC(e)&&(F.currentView===`findings`||F.currentView===`files`||F.currentView===`links`)}function KJ(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return A`<li class="${n}" data-default-reports="${t.dropTarget?`true`:M}"><span class="group-label">${e}</span></li>`}var qJ=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8h9"/></svg>`,JJ=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.5H3.5v11H8M10 5l3 3-3 3M13 8H6"/></svg>`;function YJ(){return A`<li class="file-group-header workspace-header"><span class="group-label">Workspaces</span><span class="workspace-header-actions"><button type="button" class="workspace-add" data-action="new-workspace" aria-label="Create a new workspace">${qJ}</button></span></li>`}function XJ(){let e=BH(F.managedTeams,RJ);return e.length===0?M:A`${KJ(`Teams`)} ${D(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=VH(r,(e.reports??[]).filter(e=>e.analyzer!==d).length),a=HJ.shown(e.id,`reports`,i,zJ),o=HJ.shown(e.id,`bundles`,i,zJ),s=t.filter(e=>e.analyzer!==d).length,c=HH(r);return A`<li class="${`file-item team-item${eY(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{QL(e)}}">${pY}<span class="file-label">${e.name}</span></button> ${F.managed?.allowShare&&[`admin`,`manage`].includes(F.managedSession?.role)?A`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{ix(e)}}">${gY}</button>`:M}</div>${i?A`<div class="workspace-meta">${c===null?M:A`<span class="workspace-findings">${c.toLocaleString()} finding${c===1?``:`s`}</span>`} <span class="workspace-sections" role="group" aria-label="Team files"><button type="button" data-team-section="reports" aria-expanded="${String(a)}" ?disabled="${zJ}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?A`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${zJ}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:M}</span></div>`:M}</li>${a?D(t,e=>e.id,t=>rY(e,t)):M} ${o?D(n,e=>e.id,t=>aY(e,t)):M}`})}`}function ZJ(e,t,n,r){return A`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:M}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${_q(e)}</span></button></li>`}function QJ(){return D(F.managedTeams??[],e=>e.id,e=>ZJ(e.name,pY,eY(e)||(e.reports??[]).some(t=>tY(e,t))||(e.bundles??[]).some(t=>nY(e,t)),()=>{QL(e)}))}function $J(e){return D(e,e=>e.id,e=>ZJ(e.name,fY,_Y(e)||e.reports.some(t=>GJ(t,e.id))||e.bundles.some(t=>cY(t,e.id)),()=>wY(e.id)))}function eY(e){return F.currentManagedTeam===e.id&&!!F.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)}function tY(e,t){return F.currentManagedTeam===e.id&&F.currentManagedReport===t.id&&[`findings`,`links`].includes(F.currentView)}function nY(e,t){return F.currentManagedTeam===e.id&&zx(F)===t.id}function rY(e,t){let n=x(t.filename),r=tY(e,t);return A`<li class="${`file-item indented team-report-item${t.visible===!1?` content-hidden`:``}${r?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${n} (hidden from teams)`:M}" data-tooltip="${n}" data-tooltip-repo="${RH(t)||M}" data-tooltip-placement="right-start" @click="${()=>{iY(e,t)}}">${k(Jx[$x(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function iY(e,t){return QL(e,t.id)}function aY(e,t){let n=nY(e,t);return A`<li class="${`file-item indented team-bundle-item${t.visible===!1?` content-hidden`:``}${n?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${t.filename} (hidden from teams)`:M}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${RH(t)||M}" data-tooltip-bundle="${t.kind||M}" data-tooltip-built="${t.provenance===`build`?`true`:M}" data-tooltip-stats="${zH(t)||M}" data-tooltip-commit="${t.summary?.commit||M}" data-tooltip-commit-info="${it(t.commitInfo,t.summary?.commit,t.repoFullName)??M}" data-tooltip-placement="right-start">${sY}<span class="file-label">${t.filename}</span></button></li>`}function oY(){return A`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var sY=A`${k(Zi)}`;function cY(e,t){return F.selectedBundle===e&&F.currentView===`bundles`&&t===F.selectedBundleWorkspace}function lY(e,t={}){let{integrity:n,name:r}=e,i=cY(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return A`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
191
- ${n}`}">${sY}<span class="file-label">${r}</span></button></li>`}function uY(e,t){let n=e.slice(0,15);return A`<li class="file-item indented bundle-item bundle-missing" data-bundle-integrity="${e}" data-workspace-id="${t}" data-tooltip="Bundle bytes not on this device — drop the matching bundle to attach."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${n}…</em></span></span></li>`}function dY(e,t){return A`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${x(e)}</em></span></span></li>`}var fY=A`${k($i)}`,pY=A`<svg class="team-icon" viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M5.5 8a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm0 1C3.2 9 1.75 10.2 1.75 11.6V13h7.5v-1.4C9.25 10.2 7.8 9 5.5 9Zm5.25-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.25 1c-.43 0-.83.05-1.2.15.86.62 1.45 1.5 1.45 2.45V13h3.25v-1.3C14.5 10.1 13.15 9 11 9Z"/></svg>`,mY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8M5 7l3 3 3-3M3 13h10"/></svg>`,hY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 3H4v10h5"/><path d="M7 8h7M11 5l3 3-3 3"/></svg>`,gY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 9.5L9 7.5"/><path d="M9.5 5.5L10.5 4.5a2.1 2.1 0 1 1 3 3l-1 1"/><path d="M6.5 11.5L5.5 12.5a2.1 2.1 0 1 1-3-3l1-1"/></svg>`;function _Y(e){return F.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(F.currentView)}function vY(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${_Y(e)?` current`:``}`;return A`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${fY}<span class="file-label" .textContent="${e.name}"></span></button> <button type="button" class="workspace-share" data-action="share-workspace" aria-label="Share workspace by link">${gY}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${mY}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${hY}</button></div>${n?A`<div class="workspace-meta">${t?.appMode?A`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:M} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${zJ}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?A`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${zJ}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:M}</span></div>`:M}</li>`}function yY(e){return!RJ||x(e).toLowerCase().includes(RJ)}var bY=(e,t)=>x(e).localeCompare(x(t));async function Q({revealSelection:e=!1}={}){await NX();let t=dc();if(Qq({serverMode:t,session:F.managedSession,teams:F.managedTeams,sessionPending:nX,teamsPending:rX,alternateMode:an(F.serverModeConfig)?`e2e`:`local`,onSwitchMode:CY}),mR(),I()){if(HJ.sync(F,e),!nX&&!rX&&!tX&&!iX&&hL({catalogOnly:!0}),F.bundles=(F.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),F.storedFiles=[],Jq([]),!Z)return;N(A`${XJ()}`,EJ);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&N(QJ(),t),Z.querySelector(`sidebar-view-button[kind="packages"]`)?.setAttribute(`hidden`,``),Z.querySelector(`sidebar-view-button[kind="repositories"]`)?.setAttribute(`hidden`,``),Z.querySelector(`#storage-status`)?.setAttribute(`hidden`,``),LY();return}if(HJ.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await fp(),t!==dc()){await Q();return}tJ();let n=await Uc();if(t!==dc()){await Q();return}let r=R();UJ(r,e),Jq(r);let[i]=await Promise.all([cl(),...r.map(e=>Br(`workspace`,e.id))]);if(t!==dc()){await Q();return}if(F.bundles=i,F.storedFiles=n,Wq(),!Z)return;let a=new Set(n),o=new Set;for(let e of r)for(let t of e.reports)a.has(t)&&o.add(t);let s=new Map(i.map(e=>[e.integrity,e])),c=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&c.add(t);let l=new Map;for(let e of LJ)l.set(e,[]);for(let e of n){if(o.has(e)||!yY(e))continue;let t=Qx(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!RJ||e.name.toLowerCase().includes(RJ)||e.reports.some(e=>yY(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&yY(t.name)})),f=i.filter(e=>!c.has(e.integrity)&&yY(e.name));N(A`${YJ()} ${D(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)yY(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(bY),n.sort(bY);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!RJ||yY(e.name))&&r.push(e):RJ||i.push(t)}let o=NL(e)??km(e),c=o?.appMode??Om(e)===!0,l=BJ.get(e.id),u=!c||zJ||l?.has(`reports`)===!0,f=!c||zJ||l?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Bu(e)!==d).length,m=r.length+i.length;return A`${vY(e,{app:o,compact:c,reports:p,bundles:m,showReports:u,showBundles:f})} ${u?A`${t.map(t=>WJ(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>dY(t,e.id))}`:M} ${f?A`${r.map(t=>lY(t,{workspaceId:e.id}))}${i.map(t=>uY(t,e.id))}`:M}`})} ${LJ.map(e=>{let t=(l.get(e)??[]).toSorted(bY),n=e==="default";return t.length===0&&!(n&&PJ)?null:A`${KJ(IJ[e]??e,{dropTarget:n})} ${t.map(e=>WJ(e))}`})} ${f.length>0||FJ?oY():null} ${D(f,e=>e.integrity,e=>lY(e))}`,EJ);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&N($J(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=OJ());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=kJ()),LY(),Ju(n,SY)}var xY=!1;function SY(){xY||(xY=!0,requestAnimationFrame(()=>{xY=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}jo(()=>{Q()}),Nm(SY);async function CY(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),QY?await dX():uc()&&await lX()}function wY(e){let t=F.currentView===`findings`||F.currentView===`files`;(e!==F.currentWorkspace||!t)&&eR(e)}async function TY(e){let t=e.target.closest(`[data-team-section]`);if(t){if(zJ||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&HJ.toggle(e,t.dataset.teamSection),await Q();return}let n=e.target.closest(`.file-item.team-item[data-team-id]`);if(n){let t=e.target.closest(`button`)?null:F.managedTeams.find(e=>e.id===n.dataset.teamId);t&&QL(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(zJ||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=BJ.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),BJ.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await CY();return}if(e.target.closest(`[data-action="go-home"]`)){await iR();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){G.navigate(mi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:F.currentView===`bundles`?F.bundleDetailsTab:`overview`},F.managedTeams));return}let a=e.target.closest(`.file-item[data-bundle-integrity]`);if(a){if(a.classList.contains(`bundle-missing`))return;let e=a.dataset.bundleIntegrity,t=a.dataset.workspaceId??null;if(F.selectedBundle===e&&F.currentView===`bundles`&&F.selectedBundleWorkspace===t)return;oq(e,void 0,{workspaceId:t}),IL(e,F.bundleDetailsTab),X(),Q(),fq(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(F.currentView=e,X(),Q());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(I())return;let e=await me();e&&(await rL(),await ou(e),Q());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Be({id:t.id,name:t.name,privateKeyBase64:t.privateKey}).catch(e=>alert(`Failed to open share dialog: ${e.message}`));return}let c=e.target.closest(`[data-action="export-workspace"]`);if(c){let e=c.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&rJ(t).catch(e=>alert(`Failed to open export dialog: ${e.message}`));return}let l=e.target.closest(`[data-action="leave-workspace"]`);if(l){let e=l.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await Lp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await ae({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!R().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await oR(t.id,a,{triage:o})}catch(e){alert(`Failed to leave workspace: ${e.message}`)}return}let u=e.target.closest(`.file-item.workspace-item[data-workspace-id]`);if(u){let e=u.dataset.workspaceId;e&&wY(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=F.currentView===`findings`||F.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==F.currentFile||n!==F.currentReportWorkspace||!t)&&YL(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(F.currentView===`bundles`&&F.selectedBundle){let e=F.selectedBundle,t=(F.bundles??[]).find(t=>t.integrity===e)?.name??e,n=R().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>bh(t.id,e)).map(e=>e.id),{confirmed:r}=await ht({name:t,inRemote:n.length>0});if(!r)return;if(F.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await aR({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!F.currentFile)return;let e=F.currentFile,t;try{t=await Lp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>yh(t.id,e)).map(e=>e.id),r=n.length>0,i=eS(e)?`links file`:`report`,{confirmed:a,triage:o}=await _t({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(F.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await tR({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){V.status===`error`?V.dismissError():V.status===`off`?(!V.getServerUrl()&&AJ&&V.setServerUrl(AJ),V.setEnabled(!0)):V.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),jX(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),gx(F.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){hx(F.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){TJ.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,TJ.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var EY={placement:`right`,gate:e=>{if(e.dataset.tooltipRepo||e.dataset.tooltipBundle)return!0;let t=e.querySelector(`.file-label`);return!t||(e.dataset.tooltip??``)!==t.textContent||t.scrollWidth>t.clientWidth}};function DY(e){zJ=e.target.value.length>0,RJ=e.target.value.trim().toLowerCase(),Q()}var OY={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function kY(){return V.getServerUrl()||AJ?R().length>0:!1}function AY(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=F.managedSession;TJ?.toggleAttribute(`data-authenticated`,r!=null),TJ?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),jY(r);let i=Z?.querySelector(`#public-status`);if(i&&(i.hidden=!r?.publicShare),e.hidden=r==null||r.publicShare===!0,r==null){t&&(t.hidden=!0),e.dataset.authed=`0`,e.removeAttribute(`popovertarget`),e.removeAttribute(`aria-label`),N(M,e),n&&N(M,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&N(M,n);return}let a=(r.login[0]??`?`).toUpperCase(),o=typeof r.name==`string`&&/\s/u.test(r.name.trim())?r.name.trim():`@${r.login}`;e.dataset.authed=`1`,e.setAttribute(`popovertarget`,`user-menu`),e.setAttribute(`aria-label`,`Account: ${r.login}`),N(A`${NY(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!I()||r.role!==`admin`&&r.role!==`manage`),n&&N(A`<div class="user-card">${NY(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?A`<span class="user-name">${r.name}</span>`:M}</span></div>${r.viewer?A`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:M} ${r.role===`none`?M:A`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${an(F.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${JJ}<span>Log out</span></button>`,n)}function jY(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,TJ?.toggleAttribute(`data-view-as`,e?.viewer!=null),N(e?.viewer?A`<span class="view-as-label"><span>Viewing as <strong>@${e.login}</strong></span> <span class="view-as-note">Read only · changes are not saved</span></span> <button type="button" class="view-as-stop" data-action="view-as-stop" aria-label="${`Stop viewing as ${e.login}`}">Stop</button>`:M,t))}document.addEventListener(`managed-view-only`,()=>{let e=F.managedSession;e?.viewer&&Fx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var MY=0;document.addEventListener(`managed-profile-change`,e=>{let t=F.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&MY++,F.managedSession={...t,name:e.detail.name},pb(F.managedSession),AY())});function NY(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${MY?`?v=${MY}`:``}`;return A`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${lb()||F.managedSession?.role===`none`?M:A`<img alt="" src="${r}" @error="${PY}">`}</span>`}function PY(e){e.currentTarget.classList.add(`broken`)}function FY(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=F.serverMode===`managed`||an(F.serverModeConfig);e.textContent=dc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${dc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function IY(){TJ&&(TJ.dataset.mode=dc()),I()?(Z?.querySelector(`sidebar-delete-current`)?.setAttribute(`hidden`,``),Z?.querySelector(`#encryption-toggle`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.removeAttribute(`hidden`)):(Z?.querySelector(`sidebar-delete-current`)?.removeAttribute(`hidden`),Z?.querySelector(`#encryption-toggle`)?.removeAttribute(`hidden`),Z?.querySelector(`#manage-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#view-as-status`)?.setAttribute(`hidden`,``)),WX()}function LY(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(FY(),IY(),F.serverMode===`managed`&&F.localMode){t.hidden=!0,V.setForcedOff(!0);let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(I()){t.hidden=!0,V.setForcedOff(!0),AY();return}if(F.serverMode===`standalone`){t.hidden=!0;let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0);return}let n=Z?.querySelector(`#auth-status`);n&&(n.hidden=!0);let r=kY(),i=dn()!=null;if(r&&i&&V.isEnabled()&&uh().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!V.getServerUrl()&&AJ&&V.isEnabled()&&V.setServerUrl(AJ),V.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??V.status;t.dataset.status=a;let o=V.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=V.proxyAuthRequired;t.toggleAttribute(`data-proxy-auth`,s);let c=o?`Not saving to this browser right now (storage may be full, or another tab is on a newer version). Changes that haven’t synced could be lost on reload.`:s?`Can’t reach the sync server — the connection is being redirected to a sign-in proxy (e.g. Cloudflare Access). Reload the page to sign in again.`:``;c?t.dataset.tooltip=c:delete t.dataset.tooltip;let l=t.querySelector(`.sync-label`);l&&(l.textContent=OY[a]??``)}V.onStatusChange(LY);var RY=!1,zY=!1;async function BY(){if(!V.persistenceDegraded||zY||RY)return;RY=!0;let{shown:e,unloaded:t}=await Se().catch(()=>({shown:!1,unloaded:!0}));if(RY=!1,e){zY=!0;return}V.persistenceDegraded&&setTimeout(BY,t?3e4:1500)}V.onPersistenceDegraded(e=>{LY(),e?BY():zY=!1});var VY=!1,HY=!1;async function UY(){if(!V.proxyAuthRequired||HY||VY)return;VY=!0;let{shown:e,reload:t}=await aJ();if(VY=!1,!e){V.proxyAuthRequired&&setTimeout(UY,1500);return}HY=!0,t&&location.reload()}V.onProxyAuthRequired(e=>{LY(),e?UY():HY=!1});function WY(e){if(e.target.closest(`[data-workspace-section], [data-action]`))return;let t=e.target.closest(`.file-item.workspace-item`);if(!t)return;let n=t.querySelector(`.file-label`);if(!n||n.querySelector(`input`))return;let r=t.dataset.workspaceId,i=R().find(e=>e.id===r);if(!i)return;e.preventDefault();let a=document.createElement(`input`);a.type=`text`,a.value=i.name,a.className=`workspace-rename-input`,n.textContent=``,n.append(a),a.focus(),a.select();let o=!1,s=async e=>{if(!o){o=!0;try{e&&await cu(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=R().find(e=>e.id===r)?.name??i.name),Q()}}};a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),s(!0)):e.key===`Escape`&&(e.preventDefault(),s(!1))}),a.addEventListener(`blur`,()=>s(!0)),a.addEventListener(`click`,e=>e.stopPropagation()),a.addEventListener(`dblclick`,e=>e.stopPropagation())}function GY(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function KY(e){return e.dataTransfer.types.includes(jJ)||e.dataTransfer.types.includes(NJ)}function qY(e){let t=e.target.closest(`.file-item[data-bundle-integrity]`);if(t){if(t.classList.contains(`bundle-missing`)){e.preventDefault();return}let n=t.dataset.bundleIntegrity;e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(NJ,n),e.dataTransfer.setData(MJ,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),FJ=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(jJ,n.dataset.file),e.dataTransfer.setData(MJ,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),PJ=!0,Q())}function JY(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);GY(),(PJ||FJ)&&(PJ=!1,FJ=!1,Q())}function YY(e){if(!KY(e))return;e.preventDefault();let t=e.target.closest(`[data-workspace-id]`),n=Z.querySelector(`.dragging`)?.closest(`[data-workspace-id]`)?.dataset.workspaceId??null,r=t&&n&&t.dataset.workspaceId===n||!t&&!n;if(e.dataTransfer.dropEffect=r?`none`:`move`,GY(),!r){if(t){let e=t.dataset.workspaceId;for(let t of Z.querySelectorAll(`[data-workspace-id="${CSS.escape(e)}"]`))t.classList.contains(`dragging`)||t.classList.add(`drag-over`)}else{let t=e.dataTransfer.types.includes(NJ)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function XY(e){Z.contains(e.relatedTarget)||GY()}async function ZY(e){if(!KY(e))return;e.preventDefault(),e.stopPropagation(),GY();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(MJ)||null;if(e.dataTransfer.types.includes(NJ)){let t=e.dataTransfer.getData(NJ);if(!t)return;if(r&&r!==n&&bh(r,t)){let e=(F.bundles??[]).find(e=>e.integrity===t)?.name??t,n=R().find(e=>e.id===r),{confirmed:i}=await yt({name:e,workspaceName:n?.name??``});if(!i)return;try{await Bh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await bu(t,n),r&&r!==n&&await xu(t,r),Q();return}let i=e.dataTransfer.getData(jJ);if(i){if(r&&r!==n&&yh(r,i)){let e=R().find(e=>e.id===r),{confirmed:t}=await xt({name:i,workspaceName:e?.name??``});if(!t)return;try{await zh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await _u(i,n),r&&r!==n&&await vu(i,r),F.currentWorkspace&&(F.currentWorkspace===n||F.currentWorkspace===r)?await eR(F.currentWorkspace):Q()}}var QY=null,$Y=null,$=0,eX=0,tX=null,nX=!0,rX=!0,iX=!1,aX=null,oX=null,sX;function cX(){let e=sX;return sX=void 0,e}async function lX({forgetLastView:e=!0,resetNavigation:t=!0}={}){G.reset({force:t}),aX?.remove(),aX=null;let n=++$;if(rX=!0,iX=!1,db(),Jv(),sL(),JI(),ch(F.serverMode!==`e2e`),V.setForcedOff(!0),V.setProtocolLocked(F.serverMode!==`e2e`||!!QY),rR({forgetLastView:e}),F.triage.clear(),I()){let e=pX();if(lb()&&(await e,n!==$))return}else{if(F.managedSession=null,F.managedTeams=[],await qa(),n!==$||(await Pd(),n!==$))return;eu()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),mR(),FY(),LY(V.status),X(),await Q()}async function uX(e){if(e!==void 0&&!$e(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${Ze.join(`, `)}.`);if(await NX(),e===void 0&&(QY||I()))return;let t=$,n=e===void 0?null:await K();t===$&&(QY??={serverMode:F.serverMode,serverModeConfig:F.serverModeConfig,serverModeSelection:F.serverModeSelection,localMode:F.localMode,managed:F.managed},n&&n.setPreviewRole(e),F.serverMode=`managed`,cc(!1),F.managedSession=null,F.managedTeams=[],await lX({forgetLastView:!1}))}async function dX(){let e=QY,t=$Y;QY=null,$Y=null,ub(),Object.assign(F,e),await lX({forgetLastView:!1}),t&&fX(t)}function fX(e,{runtime:t=!0}={}){if(QY){$Y=e;return}DJ(!1);let n=dn()!=null,r=I(),i=F.serverMode;Ke()&&e.managed&&(F.serverModeSelection=`managed`),lc(e.mode),Ke()&&e.managed&&cc(!1),I()||(sX=void 0);let a=i!==F.serverMode;F.managed=e.managed;let o=t&&F.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(F.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(F.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),mR(),ch(F.serverMode!==`e2e`),V.setProtocolLocked(F.serverMode!==`e2e`),fn(e),r!==I()){lX({forgetLastView:!1,resetNavigation:n&&!Ke()&&!on(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}LY(V.status),a&&F.serverMode===`e2e`&&kY()&&V.isEnabled()&&uh().then(e=>{if(e&&F.serverMode===`e2e`)for(let t of e.triageSync.openSessions)e.openWorkspace(t.workspaceId)}).catch(e=>console.warn(`sync: resume failed`,e)),a&&Q(),o&&X({animate:!1}),I()&&pX()}function pX({keepTeams:e=!1,again:t=!1}={}){if(!t&&tX?.generation===$)return tX.promise;nX=!0;let n={generation:$,promise:null};return tX=n,n.promise=mX({keepTeams:e}).finally(()=>{tX===n&&(tX=null,Q())}),n.promise}async function mX({keepTeams:e=!1}={}){let t=$,n=++eX,r=()=>t===$&&n===eX&&I();try{let t=F.managedSession,n={},i=cX(),a=i===void 0?Oq():void 0,o=await vb({fallback:n,sent:i});if(!r())return;if(o===n&&await kq(t)){r()&&DX===null&&AX(0);return}let s=o===n?t:o;if(o!==n&&!lb()&&await Dq(s,a),!r())return;F.managedSession=s,nX=!1,(!t||t.id!==s?.id||t.role!==s?.role)&&(rX=!0),Q(),pb(s),t&&(t.id!==s?.id||t.role!==s?.role)?(F.managedTeams=[],F.bundles=[],sL(),JI(),G.reset(),iR({history:!1})):Object.hasOwn(ai,F.currentView)&&xX(F.currentView)&&X({animate:!1}),AY(),qI(),document.querySelector(`base`)||(aX=document.createElement(`base`),aX.href=`/`,document.head.prepend(aX));let c=e&&t?.id===s?.id&&t?.role===s?.role&&cL()?null:oX=vX(r,{signal:new AbortController().signal}).finally(()=>{oX===c&&(oX=null)}),l=G.active&&Object.hasOwn(ai,F.currentView)&&!xX(F.currentView)?G.navigate({view:xX(`manage`)?`manage`:`home`},{replace:!0}):s?G.start(wX,{onCancel:CX}):null;await Promise.all([c,l])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{r()&&(nX||rX)&&(nX=!1,rX=!1,Q())}}oL((e,t,n)=>vX(e,{strict:!0,signal:t,revision:n}));var hX=gq(yb);function gX(e){return oX??vX(e,{reuse:!0})}var _X=0;async function vX(e,{strict:t=!1,signal:n=ev(),reuse:r=!1,revision:i=null}={}){let a=$,o=F.managedSession,s=await hX({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:F.managedTeams);if(n.aborted||c===null||!e()||a!==$||!I())return!1;let l=F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.name,u=mb(c);F.managedTeams=c;let d=s===null?_X:++_X;rX=!1;let f=zx(F);if(s!==null&&f&&!iX){let t=W(),r=()=>e()&&!n.aborted&&!iX&&d===_X&&t===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&zx(F)===f,i;try{i=await qx(F,c,{fetchCatalog:()=>bb({signal:AbortSignal.any([n,ev()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>G.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&Fx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){bX=null;let t=iR({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}}if(Kx(F,c,u)){let n=c.find(e=>e.id===F.currentManagedTeam),r=n&&(F.currentManagedReport===null||n.reports.some(e=>e.id===F.currentManagedReport))?mi({view:F.currentView===`links`?`findings`:F.currentView,teamId:n.id,reportId:F.currentManagedReport},c):null;bX=null;let i=iR({history:!1}),s=W();if(await i,t)return s===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&await G.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!iX&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)&&!c.some(e=>e.id===F.currentManagedTeam)){let t=iR({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}return!iX&&(F.currentWorkspace||F.bundleDetails?.npm||l!==c.find(e=>e.id===F.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var yX=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),bX=null;function xX(e){let t=F.managedSession?.role;return e===`manage-links`&&!F.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!yX.has(e)||t===`admin`)}var SX=0;function CX(){++SX,iX=!1,tv();let e=$;gX(()=>e===$&&I())}async function wX(e,t){let n=++SX;iX=!0;try{return await TX(e,t)}finally{n===SX&&(iX=!1,Q())}}async function TX(e,t){let n=bX===W()?bX:null;if(tv(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await gX(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!xX(`manage-bundles`)||(r=await bb(),!t()||!I()))||(e=pi(e,F.managedTeams,r),!e))return!1;let i=n!==null&&bX===n&&F.currentManagedTeam===e.teamId&&F.currentManagedReport===e.reportId;if(!t()||!I()||e.view!==`home`&&(!F.managedSession||F.managedSession.role===`none`))return!1;if(e.finding){let n=await CJ({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>QL(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(bX=W(),hL(),mi({view:`findings`,teamId:F.currentManagedTeam,reportId:F.currentManagedReport,finding:{id:e.finding.id}},F.managedTeams)):(n.reason&&Fx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return ZL(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Rx):Gx(F.managedTeams);if(!await mq(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return mi({...o,bundleTab:F.bundleDetailsTab,...Hx(F)},F.managedTeams,r)}if(e.view===`home`)return iR({history:!1});if(e.view===`npm`)return Jj(e,t,Q);if(e.view===`repository-code`)return rt(F.managedSession)&&pN(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!F.managedSession.publicShare&&(ar(),F.currentView=e.view,F.profileLinkError=e.linkError??null,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return xX(e.view)&&await XL(e.linkId);if(Object.hasOwn(ai,e.view))return jX(e.view,{...e,history:!1});let a=F.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await QL(a,e.reportId,{history:!1})||!t()?!1:(F.currentView!==e.view&&ar(),F.currentView=F.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),bX=W(),hL(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),mi({...e,view:F.currentView===`links`?`findings`:F.currentView},F.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(I()&&typeof e.detail?.id==`string`){let t=Rx(e.detail),n=F.managedTeams,r=n.find(e=>e.id===F.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));G.navigate(Bx(n,t,r?.id,F.currentView===`bundles`?F.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{pX()});var EX=[5e3,15e3,45e3,6e4],DX=null,OX=0;async function kX(e=0){clearTimeout(DX),DX=null;let t=++OX;!I()||lb()||(await pX({again:!0}),t===OX&&await kq(F.managedSession)&&t===OX&&AX(e))}function AX(e){clearTimeout(DX),DX=setTimeout(()=>{kX(e+1)},EX[Math.min(e,EX.length-1)])}Aq(()=>{kX()}),document.addEventListener(`managed-feed-closed`,()=>{nX=!0,sL(),JI(),iR({history:!1}).then(()=>pX()),Fx(`Workspace access changed. Refreshing your session.`)});async function jX(e,t={}){if(t.history!==!1&&I()&&(G.active||await pX(),G.active))return G.navigate({view:e,...t.actor?{actor:t.actor}:{},...t.bundleId?{bundleId:t.bundleId}:{},...[`link`,`dependencies`].includes(t.scanMode)?{scanMode:t.scanMode}:{},...t.linkId?{linkId:t.linkId}:{}});if(!Object.hasOwn(ai,e)||!I()||!xX(e))return!1;let n=tv(),r=$;try{let t=await K();e===`manage-import`&&xX(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==W()||!I()||!xX(e)?!1:(F.currentView=e,F.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,F.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,X({animate:!1}),Q(),pX({keepTeams:!0}),document.querySelector(`#main-content`)?.scrollTo({top:0}),e===`manage-history`&&document.dispatchEvent(new CustomEvent(`managed-history-filter`,{detail:{actor:t.actor??``},bubbles:!0,composed:!0})),!0)}document.addEventListener(`managed-notice`,e=>Fx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&jX(t,{actor:n,scanMode:e.detail?.scanMode,linkId:e.detail?.linkId})}),document.addEventListener(`managed-repository-code-open`,e=>{let{repoId:t,repo:n=null,path:r=``}=e.detail??{};I()&&Number.isSafeInteger(t)&&t>0&&nN({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var MX;function NX(){return MX??=FX().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function PX(){let e=ln();return sX=un(e).then(e=>e?.session),e}async function FX(){let e=dn();if(e){lc(e.mode),F.managed=e.managed,PX().then(e=>{if(e&&e!==`standalone`)return fX(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}DJ(!nn());let t=PX(),n=await un(t,nn()?0:3e3),r=dn();if(r)return n&&n!==`standalone`?fX(n):fX(r,{runtime:!1});if(n&&n!==`standalone`)return fX(n);n===`standalone`&&rn(),F.serverMode=`standalone`,F.serverModeConfig=null,F.serverModeSelection=null,cc(n===null),ch(!0),DJ(!1),LY(V.status),Q(),n===null&&t.then(e=>{let t=dn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(rn(),QY){QY.serverMode=`standalone`,QY.serverModeConfig=null,QY.serverModeSelection=null,QY.localMode=!1;return}return cc(!1),LY(V.status),Q()}if(n)return fX(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function IX(){let e=Z?.querySelector(`#user-menu`),t=Z?.querySelector(`#auth-status`);!e||!t||e.addEventListener(`beforetoggle`,n=>{if(n.newState!==`open`)return;let r=t.getBoundingClientRect();e.style.left=`${Math.round(r.left)}px`,e.style.bottom=`${Math.round(window.innerHeight-r.top+6)}px`,e.style.top=`auto`,e.style.right=`auto`})}function LX(e){TJ=e,Z=e.renderRoot,EJ=Z.querySelector(`#file-list`),GX(Z.querySelector(`#encryption-toggle`)),qq(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,TY),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),TY(e))}),Z.addEventListener(`dblclick`,WY),Z.addEventListener(`dragstart`,qY),Z.addEventListener(`dragend`,JY),Z.addEventListener(`dragover`,YY),Z.addEventListener(`dragleave`,XY),Z.addEventListener(`drop`,ZY),lr(Z,EY),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,DY),IX(),LY(V.status),dn()||DJ(!nn()),Q(),V.onServerInfo(e=>{if(F.serverMode!==`e2e`)return;let t=dn(),n=t&&{...t,...F.deepviewScanServer?{deepviewScanServer:F.deepviewScanServer}:{}};return fX(cn(n,e))}),NX(),F.serverMode===`managed`&&pX()}var RX=class extends ha{static styles=[fa(Mq),fa(jq)];render(){return A`<div class="sidebar-header"><h2 class="brand"><button class="brand-button" type="button" data-action="go-home"><span class="brand-name">Triage</span></button> <span class="brand-tag" data-action="toggle-client-mode">${dc()}</span></h2><button id="encryption-toggle" type="button" hidden></button> <button id="sidebar-toggle" type="button" aria-label="toggle sidebar"><svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M2 4h12v1.5H2zM2 7.25h12v1.5H2zM2 10.5h12V12H2z"/></svg></button></div><button id="sidebar-home" class="rail-item" type="button" data-action="go-home" aria-label="Home" data-tooltip="Home"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 7.5 8 3l5.5 4.5M4 6.5V13h3V9.5h2V13h3V6.5"/></svg></button><div class="sidebar-search"><svg class="sidebar-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg> <input id="sidebar-search-input" type="search" placeholder="Search reports…" aria-label="Search reports" autocomplete="off"><sidebar-view-button kind="packages"></sidebar-view-button><sidebar-view-button kind="repositories"></sidebar-view-button></div><ul id="file-list"></ul><ul id="sidebar-rail"></ul><button id="storage-status" type="button" hidden><span class="storage-dot" aria-hidden="true"></span> <span class="storage-label"></span></button><div id="view-as-status" role="status" hidden></div><div class="sidebar-actions"><sidebar-delete-current></sidebar-delete-current><button id="sync-status" type="button" data-status="off"><span class="sync-dot" aria-hidden="true"></span> <span class="sync-label">Sync off</span></button> <button id="auth-status" type="button" hidden></button> <span id="public-status" hidden>Public access link · Read only</span> <button id="manage-status" type="button" hidden data-action="manage" aria-label="Manage">${k(ta)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){LX(this)}};customElements.define(`app-sidebar`,RX);var zX=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5.5a3 3 0 0 1 6 0V8"/></svg>`,BX=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5a3 3 0 0 1 6 -0.5"/></svg>`,VX=null;async function HX(){if(!VX)return;if(await NX(),I()){VX.hidden=!0;return}if(!Co()){VX.hidden=!0;return}let e=xo();VX.hidden=!1;let t=So();VX.classList.toggle(`encrypted`,e&&t),VX.classList.toggle(`locked-pending`,e&&!t),e&&t?(VX.dataset.tooltip=`Encryption on — click to disable`,VX.setAttribute(`aria-label`,`Disable encryption`),N(zX,VX)):e?(VX.dataset.tooltip=`Encryption on, locked — click to unlock`,VX.setAttribute(`aria-label`,`Unlock encrypted data`),N(zX,VX)):(VX.dataset.tooltip=`Encryption off — click to enable`,VX.setAttribute(`aria-label`,`Enable encryption`),N(BX,VX))}async function UX(){if(confirm(`Disable encryption?
192
-
193
- Your local triage and report data will be rewritten as plaintext.
194
-
195
- IMPORTANT: DeepView cannot directly delete your passkey. Most browsers / password managers require you to remove the entry manually after disabling. You can re-enable encryption later.`))try{(await Io({migrate:async({open:e})=>{await Qa({open:e}),await Rd({open:e}),await xl({open:e}),await Dl({open:e})}}))?.disabled&&alert(`Encryption disabled. Your data is now plaintext.
196
-
197
- To complete cleanup, remove the DeepView passkey from your password manager / OS settings:
198
- • macOS / iOS: Settings → Passwords
199
- • Windows: Settings → Accounts → Sign-in options → Passkeys
200
- • Chrome: chrome://settings/passkeys
201
- • Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function WX(){HX()}function GX(e){if(!e||e===VX)return;VX=e;let t=!1;VX.addEventListener(`click`,async()=>{if(await NX(),!I()&&!t){t=!0;try{if(!xo()){await be();return}if(!So()){await Iv();return}await UX()}finally{t=!1}}}),jo(HX),HX()}export{Ns as a,Ps as b,po as c,xo as d,So as e,Co as f,To as g,jo as h,No as i,Fo as j,Bo as k,Ua as l,qa as m,Za as n,Is as o,Rs as p,zs as q,Bs as r,Hs as s,Js as t,Qs as u,nc as v,F as w,I as x,Uc as y,Kc as z,qc as A,cl as B,ll as C,ml as D,bl as E,El as F,Ef as G,Uf as H,Jf as I,Bu as J,eu as K,R as L,au as M,uu as N,bu as O,lp as P,ad as Q,fd as R,yd as S,kd as T,Ld as U,Bd as V,vp as W,Cp as X,wp as Y,Tp as Z,Ep as _,Dp as $,jp as aa,Mp as ba,Np as ca,Jp as da,Xp as ea,Vd as fa,Hd as ga,Wd as ha,Gd as ia,G as ja,Hv as ka,Xh as la,Zh as ma,Kv as na,qv as oa,Zv as pa,Dy as qa,Vy as ra,Uy as sa,Jy as ta,Yy as ua,Xy as va,Zy as wa,Qy as xa,$y as ya,eb as za,ob as Aa,lb as Ba,hb as Ca,_b as Da,Eb as Ea,Db as Fa,Ob as Ga,kb as Ha,Ab as Ia,jb as Ja,Ib as Ka,Lb as La,Xb as Ma,Zb as Na,Qb as Oa,$b as Pa,ex as Qa,tx as Ra,nx as Sa,rx as Ta,ax as Ua,ox as Va,_x as Wa,vx as Xa,yx as Ya,Ex as Za,Dx as _a,Ox as $a,kx as ab,Ax as bb,bW as cb,SW as db,Jx as eb,Qx as fb,$m as gb,z as hb,eh as ib,th as jb,nh as kb,jv as lb,Mv as mb,Nv as nb,tS as ob,rS as pb,iS as qb,oS as rb,cS as sb,lS as tb,uS as ub,SS as vb,Ch as wb,wh as xb,Th as yb,Ah as zb,jh as Ab,Mh as Bb,Ph as Cb,Fh as Db,Ih as Eb,Rh as Fb,Uh as Gb,Wh as Hb,V as Ib,s_ as Jb,c_ as Kb,l_ as Lb,m_ as Mb,g_ as Nb,v_ as Ob,y_ as Pb,b_ as Qb,C_ as Rb,w_ as Sb,D_ as Tb,H_ as Ub,q_ as Vb,og as Wb,_g as Xb,vg as Yb,yg as Zb,H as _b,Sg as $b,Dg as ac,Og as bc,kg as cc,U as dc,Ag as ec,Pg as fc,Rg as gc,Bg as hc,Vg as ic,Ug as jc,Wg as kc,Gg as lc,Kg as mc,qg as nc,Yg as oc,n_ as pc,r_ as qc,i_ as rc,a_ as sc,Kh as tc,BS as uc,VS as vc,bC as wc,wC as xc,TC as yc,EC as zc,PC as Ac,VC as Bc,UC as Cc,GC as Dc,QC as Ec,ew as Fc,tw as Gc,nw as Hc,rw as Ic,iw as Jc,ow as Kc,sw as Lc,cw as Mc,uw as Nc,dw as Oc,fw as Pc,pw as Qc,mw as Rc,gw as Sc,vw as Tc,yw as Uc,kw as Vc,mT as Wc,hT as Xc,gT as Yc,_T as Zc,Lx as _c,Bx as $c,Vx as ad,Wx as bd,XT as cd,QT as dd,CD as ed,wD as fd,DD as gd,OD as hd,kD as id,AD as jd,jD as kd,ND as ld,PD as md,WD as nd,KD as od,qD as pd,XO as qd,QO as rd,nk as sd,rk as td,ik as ud,sk as vd,ck as wd,lk as xd,wk as yd,Ak as zd,Xk as Ad,Zk as Bd,Qk as Cd,$k as Dd,eA as Ed,aA as Fd,SA as Gd,WA as Hd,KA as Id,qA as Jd,lj as Kd,W as Ld,mj as Md,yj as Nd,Oj as Od,AM as Pd,MM as Qd,PM as Rd,FM as Sd,RN as Td,GN as Ud,KN as Vd,XN as Wd,$N as Xd,eP as Yd,tP as Zd,nP as _d,aP as $d,oP as ae,hI as be,gI as ce,Pv as de,Fx as ee,Ix as fe,Mq as ge,Rq as he,nJ as ie,CJ as je,wJ as ke,Q as le,uX as me,NX as ne,wL as oe,FL as pe,IL as qe,YL as re,ZL as se,QL as te,eR as ue,iR as ve,dR as we,vR as xe,CR as ye,TR as ze,DR as Ae,IR as Be,VR as Ce,HR as De,UR as Ee,iz as Fe,az as Ge,oz as He,gz as Ie,Mz as Je,Qz as Ke,$z as Le,hB as Me,fU as Ne,gU as Oe,DU as Pe,NU as Qe,LU as Re,RU as Se,BU as Te,Y as Ue,WU as Ve,GU as We,KU as Xe,qU as Ye,JU as Ze,YU as _e,XU as $e,ZU as af,QU as bf,nW as cf,rW as df,iW as ef,aW as ff,oW as gf,sW as hf,cW as if,lW as jf,IG as kf,WG as lf,GG as mf,X as nf,nq as of,rq as pf,iq as qf,aq as rf,oq as sf,sq as tf,uq as uf,fq as vf,pq as wf,nN as xf,mN as yf};
202
- /*! Bundled license information:
203
-
204
- lit-html/directives/map.js:
205
- lit-html/directives/choose.js:
206
- (**
207
- * @license
208
- * Copyright 2021 Google LLC
209
- * SPDX-License-Identifier: BSD-3-Clause
210
- *)
211
-
212
- lit-html/directives/guard.js:
213
- (**
214
- * @license
215
- * Copyright 2018 Google LLC
216
- * SPDX-License-Identifier: BSD-3-Clause
217
- *)
218
-
219
- lit-html/async-directive.js:
220
- (**
221
- * @license
222
- * Copyright 2017 Google LLC
223
- * SPDX-License-Identifier: BSD-3-Clause
224
- *)
225
-
226
- lit-html/directives/ref.js:
227
- (**
228
- * @license
229
- * Copyright 2020 Google LLC
230
- * SPDX-License-Identifier: BSD-3-Clause
231
- *)
232
- */