@preventive/triage 1.0.0-alpha.53 → 1.0.0-alpha.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/bundle-compare-diff.js +28 -9
- package/common/bundle-compare-inputs.d.ts +1 -0
- package/common/bundle-compare-inputs.js +91 -15
- package/common/bundle-comparison.js +14 -7
- package/common/default-scan-models.ts +3 -0
- package/common/dependency-reviews.d.ts +1 -1
- package/common/dependency-reviews.js +1 -1
- package/common/managed/finding-detail.d.ts +1 -1
- package/common/managed/finding-detail.js +7 -7
- package/common/managed/team-app.d.ts +7 -0
- package/common/managed/team-app.js +31 -7
- package/common/workspace-app.js +19 -7
- package/out/activity.js +4 -4
- package/out/chunk-4EMM6UCD.js +1 -0
- package/out/chunk-4ISO5F7Y.js +7 -0
- package/out/chunk-4XIH7YTX.js +1 -0
- package/out/chunk-6W5BMATD.js +1 -0
- package/out/{chunk-WFYLMF6Z.js → chunk-74AEKRES.js} +1 -1
- package/out/chunk-DEVAORP2.js +1 -0
- package/out/{chunk-KOGNQDSJ.js → chunk-DTM47KGS.js} +1 -1
- package/out/chunk-E3LFSUDJ.js +9 -0
- package/out/chunk-FHIVVVUA.js +6 -0
- package/out/chunk-G3LY2FV4.js +1 -0
- package/out/chunk-HAZKDK4M.js +4 -0
- package/out/chunk-HOB3YPS5.js +1 -0
- package/out/chunk-I47TYPXO.js +52 -0
- package/out/chunk-J7A5OSZE.js +244 -0
- package/out/chunk-JFL7WLRV.js +1 -0
- package/out/chunk-JMG5DXII.js +2 -0
- package/out/chunk-JOXLZXMI.js +1 -0
- package/out/chunk-L4CTEMRG.js +2 -0
- package/out/chunk-M37X4LCF.js +14 -0
- package/out/chunk-M3Y6SLC4.js +1 -0
- package/out/chunk-NXATZJQ2.js +1 -0
- package/out/{chunk-MYGJBYYJ.js → chunk-ORIP5INC.js} +1 -1
- package/out/chunk-PAD2JHZT.js +1 -0
- package/out/chunk-QMVOEBWC.js +13 -0
- package/out/{chunk-SXV2T5C4.js → chunk-QRKFPLA4.js} +1 -1
- package/out/chunk-RRBIJL2B.js +1 -0
- package/out/{chunk-GDPCLSOS.js → chunk-SYXT3SFP.js} +1 -1
- package/out/chunk-TOXMUOIW.js +5 -0
- package/out/chunk-UBOCLLF2.js +1 -0
- package/out/chunk-UCP3JRE2.js +1 -0
- package/out/{chunk-JEFZTVNX.js → chunk-VC72ZO3P.js} +1 -1
- package/out/chunk-VRX2APNA.js +9 -0
- package/out/{chunk-NE2UGKRJ.js → chunk-VZMELPVL.js} +4 -3
- package/out/{chunk-YA4ETCFU.js → chunk-WHVXTJHK.js} +1 -1
- package/out/chunk-WMFDQS2L.js +11 -0
- package/out/chunk-WNSVBOSO.js +41 -0
- package/out/chunk-WREU7JAG.js +1 -0
- package/out/chunk-Y5ZHFNBD.js +2 -0
- package/out/chunk-YF4M5OCI.js +1 -0
- package/out/chunk-Z667U2UJ.js +1 -0
- package/out/chunk-ZQHLECTI.js +1 -0
- package/out/client-managed-import.js +1 -1
- package/out/client-managed.js +27 -26
- package/out/compare.js +14 -14
- package/out/dialogs.js +36 -51
- package/out/graph.js +17 -15
- package/out/index.html +26 -10
- package/out/prism.js +1 -1
- package/out/scan.js +2 -2
- package/out/terminal.js +232 -232
- package/out/view.css +1 -1
- package/out/view.js +15 -15
- package/package.json +11 -7
- package/risk/actions/resolve.js +36 -5
- package/risk/index.d.ts +20 -2
- package/risk/npm/malware.js +6 -4
- package/risk/npm/registry.js +8 -6
- package/server-managed/bundle-advisories.ts +56 -74
- package/server-managed/bundle-build-worker.js +61 -4
- package/server-managed/bundle-build.ts +13 -4
- package/server-managed/bundle-dependency-reviews.ts +74 -0
- package/server-managed/bundle-validation.ts +32 -0
- package/server-managed/db-methods.ts +51 -16
- package/server-managed/db-neon.ts +18 -2
- package/server-managed/db.ts +11 -2
- package/server-managed/github-issue-links.ts +151 -47
- package/server-managed/github-pulls.ts +34 -15
- package/server-managed/http.ts +227 -12
- package/server-managed/index.ts +13 -1
- package/server-managed/managed-issues.ts +29 -15
- package/server-managed/npm-insights.ts +4 -3
- package/server-managed/npm-kept.ts +4 -0
- package/server-managed/package-entry-points.ts +37 -9
- package/server-managed/pretty-print.ts +7 -5
- package/server-managed/public-workspace.ts +2 -2
- package/server-managed/repository-actions.ts +7 -4
- package/server-managed/repository-browser.ts +11 -4
- package/server-managed/repository-risk-audit.ts +4 -5
- package/server-managed/repository-risk.ts +4 -4
- package/server-managed/sql.ts +2 -1
- package/server-managed/stasis-config.ts +46 -0
- package/server-managed/team-app-summaries.ts +54 -0
- package/server-managed/team-app.ts +52 -31
- package/server-managed/team-reports.ts +27 -7
- package/server-managed/upstream-cache.ts +41 -32
- package/server-managed/workspace-shares.ts +3 -1
- package/out/chunk-2ZDZWLFY.js +0 -1
- package/out/chunk-7VAWINQF.js +0 -6
- package/out/chunk-FMXWXDR4.js +0 -36
- package/out/chunk-IZ7POWI3.js +0 -18
- package/out/chunk-LJ7XRXFU.js +0 -52
- package/out/chunk-QB4CBOX2.js +0 -1
- package/out/chunk-TQJDYHVE.js +0 -2
- package/out/chunk-TSIFIFBX.js +0 -232
- package/out/chunk-VH4XMZIW.js +0 -2
- package/out/chunk-WYLQWYLA.js +0 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import{b as e}from"./chunk-JCIIBLKR.js";import{g as t}from"./chunk-E3LFSUDJ.js";import{a as n,b as r,c as i,e as a,f as o,g as s,h as c,i as l,j as u,k as d,l as f,m as p,n as m,o as h,p as g,q as _,r as v,s as y,t as b,u as x}from"./chunk-DTM47KGS.js";import{$ as ee,A as te,Aa as ne,B as re,Ba as ie,C as ae,Ca as oe,Da as se,Ea as ce,Fa as le,G as ue,Ga as de,H as fe,Ha as pe,I as me,Ia as he,J as ge,Ja as _e,K as ve,Ka as ye,La as be,M as xe,Ma as Se,Na as Ce,O as we,Oa as Te,P as Ee,Pa as De,Q as Oe,Qa as ke,R as Ae,S as je,Ta as Me,U as Ne,V as Pe,Va as Fe,W as Ie,X as Le,Z as Re,_ as ze,a as Be,aa as Ve,b as He,ba as Ue,ca as We,d as Ge,da as Ke,e as qe,ea as Je,f as Ye,fa as Xe,g as Ze,ga as Qe,h as $e,ha as et,i as tt,ia as nt,j as rt,ja as it,k as S,ka as at,l as ot,la as st,m as ct,ma as lt,na as ut,o as dt,oa as ft,p as pt,pa as mt,q as ht,qa as gt,r as _t,ra as vt,sa as yt,ta as bt,ua as xt,va as St,wa as Ct,xa as wt,ya as Tt,z as Et,za as Dt}from"./chunk-I47TYPXO.js";import{a as Ot,b as kt,c as At,d as jt,f as Mt,g as Nt,h as Pt,i as Ft,j as It,k as Lt,m as Rt,n as zt,o as Bt,p as Vt,q as Ht,r as Ut,s as Wt,t as Gt,u as Kt,v as qt,w as Jt,x as Yt,y as Xt}from"./chunk-FHIVVVUA.js";import{a as Zt,b as Qt,c as $t,d as en,e as tn,f as nn,g as rn,h as an,j as on,k as sn,l as cn,m as ln,p as un,w as dn}from"./chunk-7BKKYVWR.js";import{a as fn,b as pn,c as mn,d as hn,e as gn,f as C,g as _n,h as vn,i as yn}from"./chunk-7C7DWL7I.js";import{a as bn,b as xn,c as Sn,d as Cn}from"./chunk-PNHBZGDD.js";import{$ as wn,A as Tn,B as En,Ba as Dn,C as On,D as kn,E as An,F as jn,G as Mn,H as Nn,I as Pn,J as Fn,K as In,M as Ln,N as Rn,O as zn,P as Bn,Q as Vn,R as Hn,S as Un,T as Wn,U as Gn,V as Kn,W as qn,X as Jn,Y as Yn,Z as Xn,_ as Zn,a as w,aa as Qn,b as $n,ba as er,c as tr,ca as nr,d as rr,e as T,ea as ir,f as ar,fa as or,g as E,ga as sr,h as cr,ha as lr,ia as ur,ja as dr,l as fr,la as pr,m as mr,ma as hr,n as gr,na as _r,o as vr,oa as yr,p as br,pa as xr,q as Sr,qa as Cr,r as wr,ra as Tr,s as Er,t as Dr,ta as Or,u as kr,ua as Ar,va as jr,w as Mr,wa as Nr,x as Pr,xa as Fr,y as Ir,ya as Lr,z as Rr,za as zr}from"./chunk-WNSVBOSO.js";import{b as Br,c as Vr,d as Hr,e as Ur,f as Wr,g as Gr}from"./chunk-2K6UN3PC.js";import{a as Kr,b as qr,e as Jr}from"./chunk-WCPJDAYA.js";import{a as Yr,b as Xr,c as Zr,d as Qr,e as $r}from"./chunk-IYPY47MC.js";import{a as D,b as ei,d as O}from"./chunk-PWFUOLZK.js";import{a as ti,c as ni,d as ri,e as ii,f as ai,g as oi,i as si,j as ci,k as li,l as ui,m as di,n as fi,o as pi,p as mi,q as hi,r as gi,s as _i,t as vi}from"./chunk-HT2SSA3V.js";import{A as yi,B as bi,C as xi,D as Si,E as Ci,G as wi,H as Ti,J as Ei,K as Di,L as Oi,M as ki,N as Ai,O as ji,a as Mi,f as Ni,h as Pi,i as Fi,j as Ii,k as Li,l as Ri,m as k,n as zi,o as Bi,p as Vi,q as Hi,r as Ui,t as Wi,u as Gi,v as Ki,w as qi,x as Ji,y as Yi,z as Xi}from"./chunk-QRKFPLA4.js";import{A as Zi,B as Qi,d as A,e as $i,f as ea,g as ta,i as na,j as ra,k as ia,p as aa,q as oa,r as sa,s as ca,t as la,u as ua,x as da,z as fa}from"./chunk-74AEKRES.js";import{a as pa,b as ma,c as ha}from"./chunk-C4Z6ZBXV.js";import{a as ga,b as _a,c as j,d as M,f as va,g as N,i as P,j as ya}from"./chunk-2XUEZHIP.js";import{a as ba,b as xa,c as Sa}from"./chunk-TUII34K2.js";var Ca=new Uint8Array([68,86,69,49]),wa=12,Ta=32,Ea=`deepview-passkey.v1.content-key`;function Da(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function Oa(){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 ka(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function Aa(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:ba(Ea)},t,Ta*8);return new Uint8Array(n)}function ja(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Ma(e,t,n){let r=ka(wa),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(Ca.length+wa+i.length);return a.set(Ca,0),a.set(r,Ca.length),a.set(i,Ca.length+wa),a}async function Na(e,t,n){if(!Pa(t))throw Error(`passkey: missing envelope magic`);if(t.length<Ca.length+wa+16)throw Error(`passkey: envelope too short`);let r=t.subarray(Ca.length,Ca.length+wa),i=t.subarray(Ca.length+wa);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Pa(e){if(e.length<Ca.length)return!1;for(let t=0;t<Ca.length;t++)if(e[t]!==Ca[t])return!1;return!0}async function Fa(e){if(!Da())throw Error(`passkey: not supported in this environment`);let t=ka(32),n=ka(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 Ia(e){if(!Da())throw Error(`passkey: not supported in this environment`);let t=ka(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 La=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Ra=new Map,za=!1,Ba=new Map,Va=new Map,Ha=new Set;function Ua(e){let t=()=>e();return Ha.add(t),za&&queueMicrotask(()=>{if(Ha.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ha.delete(t)}function Wa(){for(let e of Ha)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function Ga(e){let t=Oo()??``;return ba(`deepview.secure.v1|${t}|${e}`)}function Ka(e){try{let t=Uint8Array.fromBase64(e);if(Pa(t))return t}catch{}return null}function qa(e){return Ra.get(e)??null}async function Ja(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(To()&&!Ao())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(yo())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Ra.has(e),r=Ra.get(e);Ra.set(e,t),Va.set(e,t);let i=Ba.get(e)??Promise.resolve(),a=()=>{Va.get(e)===t&&Va.delete(e)},o=i.catch(()=>{}).then(()=>Xa(e,t)).then(()=>a(),i=>{throw a(),Ra.get(e)===t&&(n?Ra.set(e,r):Ra.delete(e)),i});Ba.set(e,o.catch(()=>{})),await o}async function Ya(e){let t=Symbol(`secure-storage:removed`);Ra.delete(e),Va.set(e,t);let n=Ba.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}Va.get(e)===t&&(Va.delete(e),Ra.delete(e))},i=n.catch(()=>{}).then(()=>r());Ba.set(e,i.catch(()=>{})),await i}async function Xa(e,t){let n=Ao();if(n){let r=await Ma(n,ba(t),Ga(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function Za(){za||Fo(()=>{Za().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),za=!0;for(let e of[...Ra.keys()])Va.has(e)||Ra.delete(e);await $a(La,!0)}async function Qa(e){if(!La.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return Va.has(e)||Ra.delete(e),(await $a([e],!1)).get(e)??null}async function $a(e,t){let n=Ao(),r=[],i=new Map;for(let t of e){if(Va.has(t)){i.set(t,qa(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Ka(e);if(a){if(!n)continue;try{let e=await Na(n,a,Ga(t));if(Va.has(t)){i.set(t,qa(t));continue}let r=Sa(e);Ra.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Ra.set(t,e),i.set(t,e),n&&To()&&r.push([t,e])}return t&&Wa(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Ra.get(e)===t&&Ja(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function eo(e,t){let n=(Ba.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(Va.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(Va.has(e)||(localStorage.setItem(e,r.storageValue),Ra.set(e,r.cacheValue)))});Ba.set(e,n.catch(()=>{})),await n}async function to({seal:e}){for(let e of La)await eo(e,async t=>{if(Ka(t))return null;let n=Ao();return n?{storageValue:(await Ma(n,ba(t),Ga(e))).toBase64(),cacheValue:t}:null})}async function no({open:e}){for(let t of La)await eo(t,async n=>{let r=Ka(n);if(!r)return null;let i=await e(r,Ga(t)),a=Sa(i);return{storageValue:a,cacheValue:a}})}var ro=`deepview.secure.v1.mutate:`;function io(e,t){return La.includes(e)?navigator.locks.request(ro+e,async()=>{let n=Ba.get(e);n&&await n.catch(()=>{}),await Za();let r=qa(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 Ja(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function ao(){await Promise.allSettled([...Ba.values()]),Va.clear(),Ba.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!za||!e.key||!La.includes(e.key)||Za().catch(()=>{})});var oo=`deepview.passkey.v1`,so=`deepview.passkey.userId`,co=`deepview.passkey.cleanDisable`,lo=`deepview.passkey.v1.write`,uo=`deepview.triage.v1|`,fo=`deepview.opfs.v1|`,po=`deepview.bundle.v1|`,F=null,mo=null,ho=null,go=0;function _o(){return go>0}var vo=0;function yo(){return vo>0}function bo(){try{let e=localStorage.getItem(oo);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 xo(e){localStorage.setItem(oo,JSON.stringify(e))}function So(){localStorage.removeItem(oo)}function Co(){try{let e=localStorage.getItem(so);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(so,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function wo(){return typeof location>`u`?``:location.hostname}function To(){return bo()!==null}function Eo(){return F!==null}function Do(){return!(!Da()||typeof navigator>`u`||!navigator.locks?.request||!wo())}function Oo(){return mo}function ko(){if(bo()!==null)return!1;try{return localStorage.getItem(co)!==`1`&&localStorage.getItem(so)!==null}catch{return!1}}function Ao(){return F}function jo(){return ba(uo+(mo??``))}function Mo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return ba(fo+(mo??``)+`|`+e)}function No(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return ba(po+(mo??``)+`|`+e)}var Po=new Set;function Fo(e){return Po.add(e),()=>Po.delete(e)}function Io(){for(let e of Po)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function Lo({signal:e}={}){let t=bo();if(!t)return!1;let n;try{n=await Ia({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??wo(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Ro(e):e}if(!n||n.length<32)throw Ro();let r=await Aa(n);return n.fill(0),navigator.locks.request(lo,async()=>{let e=bo();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 F=await ja(r),r.fill(0),mo=e.userId,ho=e.credentialId,Io(),!0})}function Ro(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 zo({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!Da())throw Error(`passkey: WebAuthn unavailable in this environment`);if(ko()&&!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=wo();return navigator.locks.request(lo,async()=>{if(To())throw Error(`passkey: encryption is already enabled`);if(await Oa()===!1)throw Ro();let i=Co(),o=await Fa({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Ia({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Vo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(so)}catch{}throw e&&e.message?.includes(`PRF`)?Ro(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Vo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(so)}catch{}throw Ro()}let c=await Aa(s);s.fill(0);let l=await ja(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()};F=l,mo=u,ho=o.credentialId,xo(d),typeof e==`function`&&await e({seal:(e,t)=>Ma(l,e,t)});try{localStorage.removeItem(co)}catch{}return Io(),!0})}async function Bo({migrate:e}){if(!To())return{disabled:!1,signalAttempted:!1};if(!Eo())throw Error(`passkey: must unlock before disabling encryption`);go+=1;try{return await navigator.locks.request(lo,async()=>{let t=bo();if(!t)return{disabled:!1,signalAttempted:!1};let n=F;if(!n)return{disabled:!1,signalAttempted:!1};if(So(),F=null,ho=null,typeof e==`function`){let r=(e,t)=>Na(n,e,t);try{await e({open:r})}catch(e){throw xo(t),F=n,ho=t.credentialId,Io(),e}}mo=null;try{localStorage.setItem(co,`1`)}catch{}let r=await Vo(t).catch(()=>!1);return Io(),{disabled:!0,signalAttempted:r}})}finally{--go}}async function Vo({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 Ho(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 Uo(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 Ho(n,r);e&&t.push(e)}return t}async function Wo({refuseIfEnabled:e=!1}={}){go+=1,vo+=1;try{return await navigator.locks.request(lo,async()=>{if(e&&To())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await ao();let t=bo();if(t)try{await Vo({credentialId:t.credentialId,rpId:t.rpId??wo(),userId:t.userId})}catch{}try{localStorage.removeItem(oo)}catch{}try{localStorage.removeItem(so)}catch{}try{localStorage.removeItem(co)}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{}F=null,mo=null,ho=null,Io();let n=await Uo([`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{--go,--vo}}function Go(e){return F?Ma(F,e,jo()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Ko(e){return F?Na(F,e,jo()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function qo(e,t){return F?Ma(F,e,Mo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Jo(e,t){return F?Na(F,e,Mo(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function Yo(e,t){return F?Ma(F,e,No(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Xo(e,t){return F?Na(F,e,No(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==oo)return;let t=bo();(!t&&F||t&&F&&t.credentialId!==ho)&&(F=null,mo=null,ho=null),Io()});var Zo=new WeakMap,Qo=Symbol(`iteration key`);function $o(e){Zo.set(e,new Map)}function es(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Qo);let i=Zo.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 ts({target:e,key:t,type:n}){let r=Zo.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{ns(i,r,t)}):ns(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&ns(i,r,Array.isArray(e)?`length`:Qo),i}function ns(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function rs(e){e.cleaners&&e.cleaners.forEach(is,e),e.cleaners=[]}function is(e){e.delete(this)}var as=[],os=!1;function ss(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if(as.indexOf(e)===-1){rs(e);try{return as.push(e),Reflect.apply(t,n,r)}finally{as.pop()}}}function cs(e){let t=as[as.length-1];t&&(ds(t,e),es(t,e))}function ls(e){ts(e).forEach(us,e)}function us(e){ds(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function ds(e,t){if(e.debugger&&!os)try{os=!0,e.debugger(t)}finally{os=!1}}function fs(){return as.length>0}var ps=Symbol(`is reaction`);function ms(e,t={}){let n=e[ps]?e:function t(){return ss(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ps]=!0,t.lazy||n(),n}function hs(e){e.unobserved||(e.unobserved=!0,rs(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var gs=new WeakMap,_s=new WeakMap,vs=Object.prototype.hasOwnProperty;function ys(e){let t=_s.get(e);return fs()&&typeof e==`object`&&e?t||Fs(e):t||e}function bs(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=ys(i[1]):i=ys(i)),{done:r,value:i}},e}var xs={has(e){let t=gs.get(this),n=Reflect.getPrototypeOf(this);return cs({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=gs.get(this),n=Reflect.getPrototypeOf(this);return cs({target:t,key:e,type:`get`}),ys(n.get.apply(t,arguments))},add(e){let t=gs.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||ls({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=gs.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&&ls({target:n,key:e,value:t,oldValue:a,type:`set`}):ls({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=gs.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&&ls({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=gs.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&&ls({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=gs.get(this),r=Reflect.getPrototypeOf(this);return cs({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(ys(t),...n),...t)},keys(){let e=gs.get(this),t=Reflect.getPrototypeOf(this);return cs({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=gs.get(this),t=Reflect.getPrototypeOf(this);return cs({target:e,type:`iterate`}),bs(t.values.apply(e,arguments),!1)},entries(){let e=gs.get(this),t=Reflect.getPrototypeOf(this);return cs({target:e,type:`iterate`}),bs(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=gs.get(this),t=Reflect.getPrototypeOf(this);return cs({target:e,type:`iterate`}),bs(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=gs.get(this),t=Reflect.getPrototypeOf(this);return cs({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},Ss={get(e,t,n){return e=vs.call(xs,t)?xs:e,Reflect.get(e,t,n)}},Cs=typeof window==`object`?window:Function(`return this`)(),ws=new Map([[Map,Ss],[Set,Ss],[WeakMap,Ss],[WeakSet,Ss],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function Ts({constructor:e}){return!(typeof e==`function`&&e.name in Cs&&Cs[e.name]===e)||ws.has(e)}function Es(e){return ws.get(e.constructor)}var Ds=Object.prototype.hasOwnProperty,Os=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function ks(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&Os.has(t))return r;cs({target:e,key:t,receiver:n,type:`get`});let i=_s.get(r);if(fs()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return Fs(r)}return i||r}function As(e,t){let n=Reflect.has(e,t);return cs({target:e,key:t,type:`has`}),n}function js(e){return cs({target:e,type:`iterate`}),Reflect.ownKeys(e)}function Ms(e,t,n,r){typeof n==`object`&&n&&(n=gs.get(n)||n);let i=Ds.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==gs.get(r)||(i?n!==a&&ls({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):ls({target:e,key:t,value:n,receiver:r,type:`add`})),o}function Ns(e,t){let n=Ds.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&ls({target:e,key:t,oldValue:r,type:`delete`}),i}var Ps={get:ks,has:As,ownKeys:js,set:Ms,deleteProperty:Ns};function Fs(e={}){return gs.has(e)||!Ts(e)?e:_s.get(e)||Is(e)}function Is(e){let t=Es(e)||Ps,n=new Proxy(e,t);return _s.set(e,n),gs.set(n,e),$o(e),n}var Ls=Fs;function Rs(e){let t=!0,n=ms(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw hs(n),e}return()=>hs(n)}var zs=`deepview.viewMode`,Bs=`deepview.severityMode`,Vs=`deepview.repoUrls`,Hs=`deepview.focusSplit`,Us=`deepview.kanbanDetailFullscreen`,Ws=`deepview.bundleSourceWrap`,Gs=new Set([`corrected`,`original`]),Ks=50,qs=20,Js=80;try{localStorage.removeItem(zs)}catch{}function Ys(){try{let e=localStorage.getItem(Bs);return e!==null&&Gs.has(e)?e:null}catch{return null}}function Xs(){try{let e=localStorage.getItem(Us);return e===`true`||e!==`false`&&null}catch{return null}}function Zs(){try{let e=localStorage.getItem(Ws);return e===`true`||e!==`false`&&null}catch{return null}}function Qs(e){if(!Number.isFinite(e))return Ks;let t=Math.round(e*10)/10;return Math.min(Math.max(t,qs),Js)}function $s(){try{let e=localStorage.getItem(Hs);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Qs(t):null}catch{return null}}function ec(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function tc(){return ec(qa(Vs))}function nc(e){return e?tc()[e]??``:``}var rc=new Set;function ic(e){return rc.add(e),()=>{rc.delete(e)}}function ac(e){for(let t of rc)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function oc(e,t){if(L()||!e)return;let n=tc();t?n[e]=t:delete n[e],Ja(Vs,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),io(Vs,n=>{let r=ec(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),ac(e)}async function sc(e,t){await io(Vs,n=>{let r=ec(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),gc()}async function cc(e){if(!e||typeof e!=`object`)return[];let t=[];if(await io(Vs,n=>{let r=ec(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;gc();for(let e of t)ac(e);return t}async function lc(e,t){return!e||!t?!1:(await cc({[e]:t})).length>0}var uc=cn(),dc=nn(uc?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,I=Ls({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:Zs()??!0,bundleSourcePretty:!1,bundleCodeTerminal:!1,bundleSourceLockfile:!1,droppedLockfile:null,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:Ys()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Xs()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:$s()??Ks,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:rn(uc?.mode??`e2e`,dc),serverModeConfig:uc?.mode??null,serverModeSelection:dc,deepviewScanServer:null,githubNewIssueLabels:uc?.githubNewIssueLabels??``,localMode:!1,managed:uc?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function L(){return I.serverMode===`managed`&&!I.localMode}function fc(e){I.localMode=!!e}function pc(e,t=globalThis.location?.pathname??``){let n=nn(e,t);n&&(I.serverModeSelection=`managed`),I.serverModeConfig=e,I.serverMode=rn(e,I.serverModeSelection),I.serverModeSelection!==I.serverMode&&(I.serverModeSelection=null),(n||I.serverMode===`e2e`||tn(e))&&fc(!1)}function mc(){return tn(I.serverModeConfig)?(I.serverModeSelection=I.serverMode===`managed`?`e2e`:`managed`,I.serverMode=I.serverModeSelection,fc(!1),!0):I.serverMode===`managed`&&(fc(!I.localMode),!0)}function hc(){return I.serverMode===`standalone`&&I.localMode?`local`:I.serverMode===`managed`?I.localMode?`local`:`managed`:I.serverMode}function gc(){L()||I.repoEditing||I.currentFile&&(I.repoUrl=nc(I.currentFile))}Ua(()=>{gc()});var _c=`__meta__`,vc=`deepview-reports`,yc=`deepview-bundles`,bc=`deepview.report:`;function xc(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function Sc(e,t,n){return xc(e,t,`shared`,n)}function Cc(e,t,n){return xc(e,t,`exclusive`,()=>navigator.locks.request(lo,{mode:`shared`},n))}var wc=!1;async function Tc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!wc&&(wc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function Ec(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 Dc(e,t){if(!Pa(e))return e;if(!Ao())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Jo(e,t)}function Oc(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 kc(e,t){Uc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(lo,{mode:`exclusive`},async()=>{if(Uc(e)!==t)return;R(e),Vc(e);let n=await Mc();if(n)try{await n.removeEntry(e)}catch{}Pc(e),R(e),Kc(e,`delete`)}))}async function Ac(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function jc(e,t,n,r,i=()=>{}){if(To()&&!Ao())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=Ao(),o=a?await t(e,n):e;if(Ao()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Mc(){return Tc(vc,{create:!0,warnOnce:!0})}function Nc(e){try{return localStorage.getItem(bc+e)}catch{return null}}function Pc(e){try{localStorage.removeItem(bc+e)}catch{}}function Fc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(bc)&&e.push(n.slice(bc.length))}return e}var Ic=67108864,Lc=new Map,Rc=0,zc=new Map;function Bc(e,t){if(Vc(e),!(t.length>Ic)){Lc.set(e,t),Rc+=t.length;for(let e of Lc.keys()){if(Rc<=Ic)break;Vc(e)}}}function Vc(e){let t=Lc.get(e);t!==void 0&&(Lc.delete(e),Rc-=t.length)}var Hc=new Map;function R(e){Hc.set(e,(Hc.get(e)??0)+1)}function Uc(e){return Hc.get(e)??0}var Wc=new Set;function Gc(e){return Wc.add(e),()=>Wc.delete(e)}function Kc(e,t){for(let n of Wc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function qc(){let e=new Set(Fc()),t=await Mc();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Jc(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 R(e),Cc(`report`,e,async()=>{let n=await Mc();if(n){let r=await bn(ba(t));r=await jc(r,qo,e,`"${e}"`,()=>R(e));let i=await n.getFileHandle(e,{create:!0}),a=await i.createWritable();try{await a.write(r),await a.close()}catch(t){Vc(e),R(e);try{await a.abort(t)}catch{}throw await Ac(n,i,e),t}Bc(e,t),R(e),Pc(e),Kc(e,`save`);return}let r=ba(t);r=await bn(r),r=await jc(r,qo,e,`"${e}"`,()=>R(e));let i=r.toBase64();try{localStorage.setItem(bc+e,i),Bc(e,t),R(e),Kc(e,`save`)}catch(t){throw R(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Yc(e,t){let n=Nc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await Dc(r,e),Oc(r))throw await kc(e,t),Error(`File not found: ${e}`);return Sa(await xn(r))}async function Xc(e,{keep:t=!0}={}){let n=Lc.get(e);if(n!==void 0)return t&&(Lc.delete(e),Lc.set(e,n)),n;let r=zc.get(e);if(r)return t&&(r.keep=!0),r.promise;let i=Uc(e),a=(async()=>{let t=await Mc();if(t){let n;try{n=await t.getFileHandle(e)}catch(t){if(t instanceof DOMException&&t.name===`NotFoundError`){let t=await Yc(e,i);if(t!==null)return Jc(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 Dc(a,e),Oc(a))throw await kc(e,i),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await xn(a);return Sa(e)}let o=Sa(a);return Jc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let n=await Yc(e,i);if(n===null)throw Error(`File not found: ${e}`);return n})(),o={promise:a,keep:t};zc.set(e,o);try{let t=await a;return o.keep&&Uc(e)===i&&Bc(e,t),t}finally{zc.delete(e)}}async function Zc(e){let t=Uc(e),n=await Mc(),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=Nc(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=Nc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await Dc(r,e),Oc(r))throw await kc(e,t),Error(`File not found: ${e}`);return r}async function Qc(e){let t=await Zc(e),n=t[0]===31&&t[1]===139?await xn(t):t;return Sa(n)}async function $c(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(Oc(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return R(e),Vc(e),Cc(`report`,e,async()=>{let n=await jc(t,qo,e,`"${e}"`,()=>R(e)),r=await Mc();if(r){let t=await r.getFileHandle(e,{create:!0}),i=await t.createWritable();try{await i.write(n),await i.close()}catch(n){R(e);try{await i.abort(n)}catch{}throw await Ac(r,t,e),n}R(e),Pc(e),Kc(e,`save`);return}try{localStorage.setItem(bc+e,n.toBase64()),R(e),Kc(e,`save`)}catch(t){throw R(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function el(e){return R(e),Vc(e),zc.delete(e),Cc(`report`,e,async()=>{let t=await Mc();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw R(e),t}Pc(e),R(e),Kc(e,`delete`);return}localStorage.removeItem(bc+e),R(e),Kc(e,`delete`)})}var tl=`_meta.json`,nl=`.index-v1`,rl=new Set;function il(e){return rl.add(e),()=>rl.delete(e)}function al(e,t){for(let n of rl)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function ol(){return Tc(yc,{create:!0})}function sl(e){return e.replaceAll(`/`,`_`)}async function cl(e){let t;try{let n=await(await e.getFileHandle(tl)).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(Pa(t)){if(!Ao())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Xo(t,_c)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(Sa(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function ll(e,t){let n=ba(JSON.stringify(t));n=await jc(n,Yo,_c,`bundle metadata`);try{await e.removeEntry(tl)}catch{}await Ec(await e.getFileHandle(tl,{create:!0}),n)}var ul=`${yc}/${tl}`;function dl(e){return navigator.locks.request(ul,e)}async function fl(){let e=await ol();return e?[...await navigator.locks.request(ul,{mode:`shared`},()=>cl(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function pl(){return hl(()=>!0)}function ml(){return hl((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function hl(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await Tc(yc,{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 gl(e,t){let n=await ol();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:ba(t),i=await yn(r),a=sl(i),o=e.toLowerCase().endsWith(`.map`)?await bn(r):r;return Cc(`bundle`,i,async()=>{o=await jc(o,Yo,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await Ec(await n.getFileHandle(a,{create:!0}),o);try{await dl(async()=>{let t=await cl(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await ll(n,t)})}catch(e){try{await n.removeEntry(a),al(i,`delete`)}catch{}throw e}return al(i,`save`),{integrity:i,name:e}})}async function _l(e){let t=await ol();if(t)return Cc(`bundle`,e,async()=>{try{await t.removeEntry(sl(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}al(e,`delete`);try{await dl(async()=>{try{await t.removeEntry(sl(e)+nl)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await cl(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await ll(t,r)})}finally{al(e,`delete`)}})}async function vl(e){let t=await ol();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(sl(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Pa(r)){if(!Ao())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Xo(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await xn(r):r}async function yl(e){let t=await ol();if(!t||To()&&!Ao())return null;try{let n=await t.getFileHandle(sl(e)+nl),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Pa(r)&&(r=await Xo(r,e+nl)),JSON.parse(Sa(await xn(r)))}catch{return null}}async function bl(e,t){let n=await bn(ba(JSON.stringify(t)));return navigator.locks.request(lo,{mode:`shared`},()=>dl(async()=>{let t=await ol();if(!t)return;await t.getFileHandle(sl(e));let r=e+nl,i=await jc(n,Yo,r,`bundle index`);await Ec(await t.getFileHandle(sl(r),{create:!0}),i)}))}async function xl(e,t){let n=await Mc();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;Vc(e),zc.delete(e),R(e);let o=await n.getFileHandle(e,{create:!0});try{await Ec(o,a)}catch(t){throw await Ac(n,o,e),t}R(e);return}}let r=Nc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(Vc(e),zc.delete(e),R(e),localStorage.setItem(bc+e,i.toBase64()),R(e))}function Sl(e,t){return e.seal?n=>Pa(n)?null:e.seal(n,t):n=>Pa(n)?e.open(n,t):null}async function Cl(e){let t=await qc();for(let n of t)try{await xl(n,Sl(e,Mo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var wl=({seal:e})=>Cl({seal:e}),Tl=({open:e})=>Cl({open:e});async function El(){let e=await ol();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function Dl(e){return e===tl?_c:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function Ol(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await Ec(await e.getFileHandle(t,{create:!0}),i)}async function kl(e){let{dir:t,keys:n}=await El();if(t)for(let r of n){let n=Dl(r);if(n!==null)try{await Ol(t,r,Sl(e,No(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var Al=({seal:e})=>kl({seal:e}),jl=({open:e})=>kl({open:e});Fo(()=>{Ml(),zc.clear()});function Ml(){Lc.clear(),Rc=0}var Nl=`deepview/workspace-id/v1
|
|
2
|
+
`;async function Pl(e){let t=Uint8Array.fromBase64(e),n=ba(Nl),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 Fl(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 Il=Fl(`create`),Ll=Fl(`delete`),Rl=Fl(`privateKey`),zl=Fl(`report-membership`),Bl=Fl(`bundle-membership`);Il.on;var Vl=Ll.on,Hl=Rl.on,Ul=zl.on,Wl=Bl.on,Gl=Il.fire,Kl=Ll.fire,ql=Rl.fire,Jl=zl.fire,Yl=Bl.fire,Xl=`deepview.workspaces`,Zl=1;function Ql(){try{let e=qa(Xl);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 $l(e){await Ja(Xl,JSON.stringify({version:Zl,workspaces:e}))}var eu=Xl;function tu(e){return navigator.locks.request(eu,async()=>{await Za();let t=Ql(),n=await e(t);if(n!==!1)return await $l(t),n})}function nu(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var ru=Ql().map(nu);function iu(){ru=Ql().map(nu)}function au(e){ru=ru.filter(t=>t.id!==e.id),ru.push(nu(e))}function ou(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=ru.find(t=>t.id===e.id);if(r){r[t]=n;return}ru.push(nu(e))}function su(e){ru=ru.filter(t=>t.id!==e)}function z(){let e=Ql();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var cu=200;function lu(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,cu)||null}async function uu(e){let t=lu(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Pl(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await tu(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?(au(i),i):null}async function du(e){await tu(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Kl(e),su(e))}async function fu(e,t){let n=lu(t);return!(!n||!await tu(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function pu(e){let{next:t}=await tu(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=lu(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=ru.find(e=>e.id===t.id)??null;return n==null?Gl(t.id):(n.privateKey!==t.privateKey&&ql(t.id),hu(n.reports,t.reports)||Jl(t.id),hu(n.bundles,t.bundles)||Yl(t.id)),au(t),t}async function mu({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await tu(a=>{let o=lu(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=>lu(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`&&(Gl(i.workspace.id),au(i.workspace)),i}function hu(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 gu({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await tu(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&&ou(t,n)}}function _u(e,t){return{move:(n,r)=>gu({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>gu({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>gu({identifier:n,field:e,fire:t,from:r})}}var vu=_u(`reports`,Jl),yu=_u(`bundles`,Yl),bu=vu.move,xu=vu.add,Su=vu.remove,Cu=yu.move,wu=yu.add,Tu=yu.remove;function Eu(){let e=Ql().map(nu),t=new Map(ru.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Kl(e);for(let[e,r]of n){let n=t.get(e);if(!n){Gl(e);continue}n.privateKey!==r.privateKey&&ql(e),hu(n.reports,r.reports)||Jl(e),hu(n.bundles,r.bundles)||Yl(e)}ru=e}Ua(()=>{Eu()});function Du(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 Ou(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 ku=null;function Au(){ku=null}function ju(){return L()&&ku?.teamId===I.currentManagedTeam&&ku?.userId===I.managedSession?.id&&ku?.role===I.managedSession?.role?ku:null}function Mu(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[];d(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}),d(t.links,i);continue}let s=Ei(t)??[],c=$n(t,e.repo.github),l=Br([{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,_repoCommit:c,_source:n.source??t.source??null,_bundleHashes:t.bundleHashes??[],_depsDirectory:l};return xi(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Hi(r,r._source)),r}),u={report:e.filename,managedReportId:e.id,index:i,members:s};o.push(u);for(let e of s)n.has(e.id)||n.set(e.id,[]),n.get(e.id).push(u);for(let e of Ou(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(u)}}ku={teamId:e,userId:I.managedSession?.id,role:I.managedSession?.role,links:a,rows:o,byId:n,citedBy:r,duplicates:i},I.linksTick++,I.findingIndexTick++}function Nu(e){let t=ju();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Pu(e){let t=ju();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function Fu(e){for(let t of Nu([e])){let n=Ki(t.members.find(t=>t.id===e));if(n)return n}return``}var Iu=`deepview.fileCounts`,Lu=4,Ru=new Set([3,Lu]),zu=null;function Bu(){if(zu)return zu;let e;try{e=JSON.parse(qa(Iu)||`{}`)}catch{e={}}return Ru.has(e?.__v)?e.__v=Lu:e={__v:Lu},zu=e,zu}function Vu(){Ja(Iu,JSON.stringify(zu)).catch(e=>console.warn(`counts persist:`,e))}function Hu(e){if(e===`__v`)return;let t=Bu()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function Uu(e){return Hu(e)?.count}function Wu(e){return Hu(e)?.source}function Gu(e,t,n){let r=Bu();r[e]={count:t,source:n??null},Vu()}function Ku(e){let t=Bu();delete t[e],Vu()}function qu(e){let t=l(e);return t?{count:u(t.groups),source:c,recognized:!0}:ki(e)}var Ju=null,Yu=null,Xu=null;function Zu(e,t){for(let{names:n,onUpdate:r}of Xu)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Qu(e,t){if(Ju){t&&Xu.push({names:new Set(e),onUpdate:t});for(let t of e)Yu.add(t);return Ju}return Yu=new Set(e),Xu=t?[{names:new Set(e),onUpdate:t}]:[],Ju=(async()=>{await Promise.resolve();try{let e=Bu();for(;Yu.size>0;){let t=Yu.values().next().value;if(Yu.delete(t),e[t]===void 0)try{let n=await Xc(t,{keep:!1});if(e[t]!==void 0)continue;let{count:r,source:i}=qu(n);e[t]=i?{count:r,source:i}:{count:r},Vu(),Zu(t,r)}catch{}}}finally{Ju=null,Yu=null,Xu=null}})(),Ju}var $u=new Map,ed=new Map,td=new Map,nd=new Set,rd=null,id=null,ad=0,od=!1,sd=!1;function cd(){return L()||sd}function ld(e){return nd.add(e),()=>nd.delete(e)}function ud(){for(let e of nd)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function dd(){let e=new Map;for(let t of $u.values())t&&d(t.groups,e);ed=e}function fd(){if(L())return ju()?.links??[];let e=[];for(let[t,n]of $u)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function pd(){return L()?!!ju()?.duplicates.size:ed.size>0}function md(e){if(L())return[...ju()?.duplicates.get(e)??[]];let t=ed.get(e);return t?[...t]:[]}async function hd(e){if($u.has(e))return!1;let t=td.get(e)??0,n;try{n=await Xc(e,{keep:!1})}catch{return!1}if(n==null)return!1;if((td.get(e)??0)!==t)return od=!0,!1;let r=l(n);if($u.set(e,r),r&&Wu(e)!==c)Gu(e,u(r.groups),c);else if(!r&&Wu(e)===c){let{count:t,source:r}=qu(n);Gu(e,t,r)}return r!==null}function gd(){return L()?Promise.resolve():id||(id=(async()=>{try{let e,t;do{t=ad,e=await qc(),sd&&e.some(e=>!$u.has(e))&&(sd=!1,ud());let n=e.filter(e=>Wu(e)===c);(await Promise.all(n.map(e=>hd(e)))).some(Boolean)&&(dd(),ud())}while(t!==ad);return e}catch(e){throw sd&&(sd=!1,ud()),e}finally{id=null}})(),id)}function _d(){return L()?Promise.resolve():rd||(rd=(async()=>{try{do{od=!1;let e=await gd(),t=!1;for(let n of e)await hd(n)&&(t=!0);let n=!od&&e.every(e=>$u.has(e)),r=sd!==n;sd=n,t&&dd(),(t||r)&&ud()}while(od)}catch(e){throw sd&&(sd=!1,ud()),e}finally{rd=null}})(),rd)}Gc(e=>{let t=sd;sd=!1,ad++,td.set(e,(td.get(e)??0)+1),od=!0;let n=$u.get(e)!=null;$u.delete(e),n&&dd(),(n||t)&&ud()});var vd=()=>{};function yd(e){vd=typeof e==`function`?e:()=>{}}var bd=()=>{};function xd(e){bd=typeof e==`function`?e:()=>{}}var Sd=()=>{};function Cd(e){Sd=typeof e==`function`?e:()=>{}}var wd=`deepview.triage`,Td=`deepview.triage.pending`,Ed=/^\d+$/u;async function Dd(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Od(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var kd=`deepview.triage.save`,Ad=0;function jd(){return!L()&&a(I.triage,I.reports)}function Md(){jd();let e={};for(let[t,n]of I.triage){if(Ed.test(t))continue;let r=gn(n);r&&(e[t]=r)}return e}function Nd(){if(L())return bd(),Promise.resolve();let e=++Ad,t=Md(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(Td,r)}catch{}return navigator.locks.request(lo,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await Dd(ba(r));i=Ao(),t=(i?await Go(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),vd();return}await navigator.locks.request(kd,()=>{try{if(e!==Ad)return;if(r!=null&&Ao()!==i){queueMicrotask(()=>{Nd()});return}if(n)localStorage.removeItem(wd),localStorage.removeItem(Td);else{localStorage.setItem(wd,t);try{localStorage.removeItem(Td)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),vd()})}async function Pd(){let e=localStorage.getItem(Td);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(wd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Pa(n)){if(!Ao())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Ko(n)}let r=await Od(n);return JSON.parse(Sa(r))}function Fd(e,{replace:t=!1}={}){let n=I.triage;if(t){let t=null,r=localStorage.getItem(Td);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(Ed.test(r))continue;let a=e?.[r],o=!e||!(r in e);!(i(r)&&t[r]?.color)&&(o||!a?.color)&&C(n,r,{color:void 0}),!(i(r)&&(t[r]?.triage||t[r]?.deleted))&&!fn(a)&&C(n,r,{triage:void 0}),!(i(r)&&t[r]?.comment)&&(o||typeof a?.comment!=`string`||!a.comment)&&C(n,r,{comment:void 0}),!(i(r)&&t[r]?.fix)&&(o||typeof a?.fix!=`string`||!a.fix)&&C(n,r,{fix:void 0}),!(i(r)&&t[r]?.flagged!==void 0)&&(o||a?.flagged===void 0)&&C(n,r,{flagged:void 0})}for(let r of[...n.keys()]){if(Ed.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!pn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){vn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&vn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=fn(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&&C(n,t,i),pn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&vn(n,t,e,!0,hn(r,e))}}async function Id(){if(L())return!1;if(![...I.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await o(Object.fromEntries(I.triage),e=>Sc(`report`,e,()=>Qc(e)));if(!L())return a(I.triage,e)}async function Ld(){if(!L())try{let e=await Pd();if(L())return;Fd(e),await Id()&&await Nd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Rd(){if(!L())try{let e=await Pd();if(L())return;Fd(e,{replace:!0}),await Id()&&await Nd(),Sd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==wd&&e.key!==Td||Rd()});var zd;function Bd(){return L()?Promise.resolve():zd??=Ld()}Fo(()=>{Rd()}),Fo(()=>{L()||Ao()&&localStorage.getItem(Td)&&Nd()});async function Vd({seal:e}){try{localStorage.removeItem(Td)}catch{}let t=localStorage.getItem(wd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Pa(n))return;let r=await e(n,jo());localStorage.setItem(wd,r.toBase64())}async function Hd({open:e}){try{localStorage.removeItem(Td)}catch{}let t=localStorage.getItem(wd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Pa(n))return;let r=await e(n,jo());localStorage.setItem(wd,r.toBase64())}function Ud(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Wd(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 Gd({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 Pl(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await f(ba(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Kd({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 p(n,t,{malformedMsg:`malformed share link`,wrongPasswordMsg:`wrong password or corrupt link`});try{return await qd(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function qd(e){let t=JSON.parse(Sa(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 Pl(t.k),name:t.n,privateKeyBase64:t.k}}function Jd(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function Yd(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 Xd=new Map,Zd=new Map,Qd=new Map;function $d(e){return L()?[...new Set(Nu([e]).map(e=>e.report))]:[...Xd.get(e)?.reports.keys()??[]]}function ef(e){if(L())return Fu(e);for(let{title:t}of Xd.get(e)?.reports.values()??[])if(t)return t;return``}function tf(e){if(L())return Nu(e);let t=new Set;for(let n of e)for(let e of Xd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function nf(e){if(L())return Pu(e);let t=new Set;for(let n of e)for(let e of Zd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function rf(e){return Qd.has(e)||Qd.set(e,{ids:new Set,inputs:new Set}),Qd.get(e)}function af(e,t){let n=!1;for(let r of t.members){let i=Xd.get(r.id);i||Xd.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:Ki(r),rows:new Set([t])}),rf(e).ids.add(r.id),n=!0}for(let[,...n]of Ou(t.members))for(let r of n){Zd.has(r)||Zd.set(r,new Map);let n=Zd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),rf(e).inputs.add(r)}return n}function of(e){let t=Qd.get(e);if(Qd.delete(e),!t)return!1;for(let n of t.ids){let t=Xd.get(n);t?.reports.delete(e),t?.reports.size===0&&Xd.delete(n)}for(let n of t.inputs){let t=Zd.get(n);t?.delete(e),t?.size===0&&Zd.delete(n)}return!0}var sf=`solidity-bundle`,cf=`0.0.0`;function lf(e){if(e?.name!==sf)return!1;let t=e.version;return!t||t===cf}function uf(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!lf(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 df(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function ff(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 pf(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 mf(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function hf(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=df(),e.byVersion.set(t,a)),ff(a,r,i,n)}function gf(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&&pf(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}mf(o)}function _f(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=vf(e,`-`),[i,a=``]=vf(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 vf(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var yf=new Map,bf=new Map,xf=new Map,Sf=new Map;function Cf(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!lf(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 wf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function Tf(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 Ef=new Set,Df=new Set,Of=null,kf=!1;function Af(e){return Df.add(e),()=>Df.delete(e)}function jf(){for(let e of Df)try{e()}catch{}}function Mf(e){return yf.get(e)?.list??[]}function Nf(){let e=0;for(let t of yf.values())e+=t.list.length;return e}function Pf(){return bf}function Ff(){return xf}function If(e,t){let n=yf.get(e);if(!n)return[];let r=n.reports.get(zf(t));return r?[...r]:[]}function Lf(e,t){let n=bf.get(e);if(!n)return[];let r=n._keyReports.get(zf(t));return r?[...r]:[]}function Rf(e,t){let n=xf.get(e);if(!n)return[];let r=n._keyReports.get(zf(t));return r?[...r]:[]}function zf(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,r(e)])}function Bf(e,t,n){let r=Sf.get(e);r||(r={hash:[],pkg:[],repo:[]},Sf.set(e,r)),r[t].push(n)}function Vf(e,t,n){let r=yf.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},yf.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&&Bf(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function Hf(e,t,n){let r=Cf(e);if(!r)return!1;let i=uf(e),a=bf.get(r);if(a||(a={...df(),repos:new Set,byVersion:new Map,_repoReports:new Map},bf.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)}hf(a,i,e,t,n);let o=ff(a,t,n,e);return Bf(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function Uf(e,t,n,r){if(wf(e))return!1;let i=Tf(e,r);if(!i)return!1;let a=xf.get(i);a||(a=df(),xf.set(i,a));let o=ff(a,t,n,e);return o&&Bf(n,`repo`,{repo:i,key:t,file:e.file}),o}function Wf(e){let t=Sf.get(e);Sf.delete(e),Ef.delete(e);let n=of(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=yf.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=>zf(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&yf.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=bf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&pf(t,a,o,zf),gf(t,s,a,o,e,zf),!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?bf.delete(n):mf(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=xf.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&pf(t,i,a,zf),t._keyReports.size===0?xf.delete(n):mf(t))}return r}async function Gf(e){if(Ef.has(e))return!1;Ef.add(e);try{let t=await Xc(e,{keep:!1}),r=await ji(t);if(!r)return!1;let{data:i,findings:a}=r;if(a.length===0)return!1;n(a,i),Ti(Ei(i).map(e=>Array.isArray(e)?e:[e]),{source:i.source});let o=Si(i)??``;if(!o)try{o=nc(e)}catch{}let s=!1;for(let t of a){let n=zf(t);t.fileHash&&Vf(t,n,e)&&(s=!0),t.file&&Hf(t,n,e)&&(s=!0),t.file&&Uf(t,n,e,o)&&(s=!0)}for(let[t,n]of Ei(i).entries()){let r=(Array.isArray(n)?n:[n]).filter(e=>e?.id);r.length!==0&&af(e,{report:e,index:t,members:r.map(e=>{let t=e.source??i.source??null;return{id:e.id,title:Ki(e),source:t,revalidate:Vi(e),isApp:e.isApp??Hi(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return Ef.has(e)?s:(Wf(e),kf=!0,!1)}catch{return Ef.delete(e),!1}}function Kf(){return L()?Promise.resolve():Of||(Of=(async()=>{try{do{kf=!1;let e=await qc();for(let t of e)await Gf(t)&&jf()}while(kf)}finally{Of=null}})(),Of)}function qf(){return Of}Gc(e=>{Wf(e)&&jf()}),ic(e=>{Wf(e)&&jf(),Kf().catch(()=>{})});var Jf=new Map,Yf=new Map,Xf=new Map,Zf=new Set;function Qf(e){return Zf.add(e),()=>Zf.delete(e)}function $f(){for(let e of Zf)try{e()}catch{}}function ep(e,t){if(!e||!t)return!1;let n=!Yf.has(e);Yf.set(e,t),Xf.delete(e);for(let[n,r]of t){if(!r)continue;let t=Jf.get(r);t||(t=new Map,Jf.set(r,t)),t.set(e,n)}return n&&$f(),n}function tp(e){let t=Yf.get(e);if(Yf.delete(e),Xf.delete(e),t){for(let n of t.values()){let t=Jf.get(n);t&&(t.delete(e),t.size===0&&Jf.delete(n))}$f()}}function np(e,t){let n=Yf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=ip(e,n).get(rp(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 rp(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function ip(e,t){let n=Xf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=rp(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Xf.set(e,n),n}function ap(e){if(!e)return[];let t=Jf.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function op(e){return Yf.has(e)}async function sp(e){if(!e)return null;let t=z(),n=(await Promise.all(t.map(e=>Vr(`workspace`,e.id)))).indexOf(e);return n===-1?null:t[n]}async function cp(e){if(!e)return null;let t=await qc(),n=(await Promise.all(t.map(e=>Vr(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function lp(e,t){let n;try{n=await Xc(e)}catch{return!1}return n==null?!1:(await ji(n))?.findings.some(e=>e.id===t)??!1}async function up(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await qc()).filter(e=>!n.has(e));for(let t of r)if(await lp(t,e))return t;return null}function dp(e){return e?z().filter(t=>t.reports.includes(e)):[]}function fp(e){if(!e)return``;for(let t of e.split(`
|
|
3
|
+
`))if(t.trim())return t.trim();return``}function pp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of I.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:fp(e.description)}),n.size===t.size))return n}return n}var mp=`deepview.lastFile`,hp=null;function gp(){return hp||(hp=_p(),hp.catch(()=>{hp=null})),hp}async function _p(){try{await Bd()}catch{}let e=await qc(),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 Xc(n),await Jc(e,i),await el(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Uu(n);if(Ku(n),a===void 0){let{count:t,source:n}=qu(i);Gu(e,t,n)}else{let{source:t}=qu(i);Gu(e,a,t)}let o=nc(n);o&&(oc(n,``),oc(e,o));let s=!1;for(let[t,r]of[...I.triage])r.ignoredReports?.includes(n)&&(vn(I.triage,t,n,!1),vn(I.triage,t,e,!0,hn(r,n)),s=!0);s&&await Nd();let c=Wd(qa(mp));if(c?.name===n)try{await Ja(mp,Ud(e,c.workspaceId))}catch{}}for(let e of z())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 Su(t,e.id),await xu(i,e.id)}}function vp(){return{...yp,hydrateKey:Qa,localContentSyncStatus:un,readTriageBlob:async()=>(await s(await Pd(),e=>Sc(`report`,e,()=>Qc(e)))).entries,reportSyncHash:e=>Sc(`report`,e,async()=>dn(await Zc(e)))}}var yp={hasStoredBundleBytes:ml,listBundles:fl,listFiles:qc,onBundleMutated:il,onFileMutated:Gc,readBundle:vl,readFile:Qc,withStoredItem:Sc,isEncryptionEnabled:To,isUnlocked:Eo,onVaultStateChange:Fo,unlockEncryption:Lo};function bp(e=yp){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 xp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function Sp(){if(!xp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function Cp(){let e={supported:xp(),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 wp=`deepview.scan.access`,Tp=new Set;function Ep(){for(let e of Tp)e()}function Dp(){return qa(wp)!=null}function Op(e){try{let t=JSON.parse(qa(wp)),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 kp({server:e,deepview:t,provider:n,token:r}){await Ja(wp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),Ep()}async function Ap(){await Ya(wp),Ep()}function jp(e){Tp.add(e);let t=Ua(e);return()=>{Tp.delete(e),t()}}var Mp=1;function Np(){let e=Md(),t=tc();return{version:Mp,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Pp(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function Fp(){let e=Np();return{blob:new Blob([await Sn(JSON.stringify(e))]),filename:Pp()}}async function Ip(e){let t;try{t=await Cn(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!==Mp)throw Error(`Unsupported backup version: ${n.version} (expected ${Mp})`);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 Lp(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=I.triage;if(t===`replace`)for(let e of[...r.keys()])Ed.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(Ed.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&C(r,e,{color:t.color});let n=fn(t);if(n&&(!i||!fn(r.get(e)))&&C(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&C(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&C(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&C(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&pn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&vn(r,e,n,!0,hn(t,n))}await Id(),await Nd();let a=0,o=null;try{await sc(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 Rp(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function zp(e){let t=new Set;for(let n of e){let e;try{e=await Xc(n)}catch(e){if(Rp(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await ji(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Bp(){let e=new Set;for(let t of I.triage.keys())Ed.test(t)||e.add(t);return e}async function Vp(e){let t=Bp();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await zp(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 qc(),a=new Set(e),o=await zp(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 Hp(){let e=new Set(I.triage.keys()),t=[];for(let[e,n]of I.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await qc(),r=new Set(n),i=await zp(n),a=!1;for(let t of e){if(Ed.test(t)||i.has(t))continue;let e=I.triage.get(t);!e||!(e.color||fn(e)||e.comment||e.fix||e.flagged!==void 0)||C(I.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)Ed.test(e)||i.has(e)&&r.has(n)||mn(I.triage,e,n)&&vn(I.triage,e,n,!1)&&(a=!0);a&&await Nd()}var Up=1;async function Wp(e){let t=new Set,n=await ji(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function Gp(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Kp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await fl(),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 vl(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 qp(e){let t=nc(e);return t?{github:t}:null}async function Jp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Xc(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 bu(n,null);continue}let r=qp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Yp(e,{includeBundleBytes:t=!1}={}){let n=await Jp(e),r=new Set;for(let e of n)for(let t of await Wp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of I.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=gn({...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:Up,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 Kp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Xp(e,{includeBundleBytes:t=!1}={}){let n=await Yp(e,{includeBundleBytes:t});return{blob:new Blob([await Sn(JSON.stringify(n))]),filename:`${Gp(e.name)}.deepview-workspace.json.gz`}}async function Zp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Xp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await h(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${Gp(e.name)}.deepview-workspace.enc`}}async function Qp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await Zp(e,t,{includeBundleBytes:n}):await Xp(e,{includeBundleBytes:n})}async function $p(e){return{reports:await Jp(e)}}async function em(e){let t=await $p(e);return{blob:new Blob([await Sn(JSON.stringify(t))]),filename:`${Gp(e.name)}.deepview-reports.json.gz`}}function tm(e){return fn(e)??null}async function nm(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await ji(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:fp(n.description)})}return t}async function rm(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=I.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&&C(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&&C(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&&C(r,t,{fix:l});let u=tm(n),d=fn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&C(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&&C(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(pn(r.get(t)))for(let e of m)typeof e==`string`&&vn(r,t,e,!0,hn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&im(i,e)}await Nd()}function im(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&am(n.id,n.property)===n.local&&(n.property===`color`?C(I.triage,n.id,{color:n.imported}):n.property===`comment`?C(I.triage,n.id,{comment:n.imported}):n.property===`fix`?C(I.triage,n.id,{fix:n.imported}):n.property===`triage`?C(I.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&C(I.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function am(e,t){if(t===`color`)return I.triage.get(e)?.color;if(t===`triage`)return fn(I.triage.get(e))??null;if(t===`comment`)return I.triage.get(e)?.comment??``;if(t===`fix`)return I.triage.get(e)?.fix??``;if(t===`flagged`){let t=I.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function om(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 gl(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 sm(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Jc(t.name,t.content);let{count:e,source:r}=qu(t.content);Gu(t.name,e,r??Wu(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 om(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await nm(e.reports):new Map;await rm((await s(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 pu({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}),c=new Set(n),l=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!c.has(t)||typeof n!=`string`||!n||(l[t]=n);if(Object.keys(l).length>0)try{await cc(l)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function cm(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>g?`reports count (${e.reports.length}) exceeds cap (${g})`:null:`reports field must be an array`}function lm(e){return cm(e)===null}async function um(e){if(m(e))return{kind:`encrypted`};let t;try{t=await Cn(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 lm(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var dm=`deepview.workspaceApp`,fm=2,pm=new Set,mm=new Set,hm=0,gm=0,_m=0,vm=new Map,ym=Promise.resolve(),bm=null;function xm(e=qa(dm)){try{let t=JSON.parse(e);if(t?.version===fm&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:fm,revision:``,links:`[]`,entries:{}}}function Sm(){for(let e of pm)e()}function Cm(e){let t=ym.then(()=>io(dm,t=>e(xm(t))));return ym=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function wm(e){return JSON.stringify(e.reports.toSorted())}function Tm(){return JSON.stringify(fd().map(({name:e,groups:t})=>({name:e,groups:t})))}function Em(e){return cd()&&e.links===Tm()}function Dm(e,t){return e.workspaceRevisions?.[t]??``}function Om(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(vm.get(t?.id)??0)&&n.workspaceRevision===Dm(e,t?.id)}function km(e,t,n){return n.reportEpoch===_m&&n.reportRevision===(e.reportRevision??e.revision)&&Om(e,t,n)}function Am(e,t){return km(xm(),e,t)}function jm(e,t){if(hm||mm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==wm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Mm(e){return jm(e,xm())?.appMode??null}function Nm(e){let t=xm(),n=jm(e,t);return!n||!Em(t)?null:n}async function Pm(e,t=null){let n;do n=ym,await n;while(n!==ym);let r=xm(),i=r.reportRevision??r.revision;return t&&(!km(r,e,t)||!Em(r))?null:{epoch:gm,revision:r.revision,reportEpoch:_m,reportRevision:i,workspaceId:e?.id,workspaceEpoch:vm.get(e?.id)??0,workspaceRevision:Dm(r,e?.id)}}async function Fm(e,t,n){let r=!1;return await Cm(i=>{if(n.epoch!==gm||n.revision!==i.revision||!Om(i,e,n)||!Em(i))return;let a=z().find(t=>t.id===e.id);if(a&&wm(a)===wm(e))return i.entries[e.id]={...t,reports:wm(e)},r=!0,JSON.stringify(i)}),r&&Sm(),r}function Im(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)gm++,t===void 0&&_m++,hm++;else for(let t of e)vm.set(t,(vm.get(t)??0)+1),mm.add(t);return Sm(),Cm(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)hm--;else for(let t of e)mm.delete(t);Sm()})}function Lm(e){return pm.add(e),()=>pm.delete(e)}Ua(()=>{let e=qa(dm);e!==bm&&(bm=e,Sm())}),Ul(e=>{Im([e]).catch(()=>{})}),Vl(e=>{Im([e]).catch(()=>{})}),Gc(e=>{Im(z().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),ld(()=>{if(!cd()){Sm();return}let e=Tm();xm().links===e?Sm():Im(null,e).catch(()=>{})});var Rm=null,zm=null;function Bm(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function Vm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Hm(){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 Um=`./brotli-fallback.js`,Wm=Symbol(`brotli worker unavailable`),Gm=null,Km=!1,qm=0,Jm=new Map;function Ym(){return zm||(zm=(async()=>await import(Um))(),zm)}function Xm(){Km=!0,Gm&&=(Gm.terminate(),null);let e=[...Jm.values()];Jm.clear();for(let t of e)t.resolve(Wm)}function Zm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Jm.get(t);i&&(Jm.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Qm(){if(Gm)return Gm;if(Km||typeof Worker>`u`)return null;try{Gm=new Worker(rr(new URL(Um,import.meta.url)),{type:`module`})}catch{return Km=!0,null}return Gm.addEventListener(`message`,Zm),Gm.addEventListener(`error`,Xm),Gm.addEventListener(`messageerror`,Xm),Gm}function $m(e){let t=Qm();return t?new Promise((n,r)=>{let i=++qm;Jm.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Jm.delete(i),Xm(),n(Wm)}}):Promise.resolve(Wm)}async function eh(){await Hm();let e=Bm();return e?{kind:`native`,format:e}:{kind:`fallback`}}function th(){return Rm||(Rm=eh(),Rm)}async function nh(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await th();if(n(),r.kind===`native`)return Vm(r.format,e);let i=await $m(e);return n(),i===Wm?(await Ym()).brotliDecompress(e):i}th().catch(()=>{});var rh=document.querySelector(`#drop-zone`),B=document.querySelector(`#report`),ih=document.querySelector(`app-sidebar`);function ah(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,P(j`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function oh(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var sh={get state(){return I},listWorkspaces:z,addReportToWorkspace:xu,addBundleToWorkspace:wu,onReportMembershipChanged:Ul,onBundleMembershipChanged:Wl,onWorkspaceDeleted:Vl,onWorkspacePrivateKeyChanged:Hl,analyzeContent:qu,setCount:Gu,gunzipBytes:xn,listBundles:fl,listFiles:qc,readBundle:vl,readFileBytes:Zc,saveBundle:gl,saveFileBytes:$c,onFileMutated:Gc,async saveTriage(){return await Id(),Nd()},getSecureItem:qa,setSecureItem:Ja,removeSecureItem:Ya,onSecureStorageHydrated:Ua};function ch(e){e.installSyncHost(sh),yd(()=>e.triageSync.notify())}var V=null,lh=null;function uh(){try{return qa(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var dh=!1;function fh(e){dh=!!e}function ph(){if(dh||I.serverMode!==`e2e`)return!0;try{return cn()?.mode===`managed`}catch{return!1}}function mh(){return lh||(ph()&&!V?Promise.resolve(null):(lh=(async()=>{try{let e=await import(`./client-sync.js`);return ch(e),V=e,_h(),e}catch(e){throw lh=null,e}})(),lh))}var hh=[];function gh(e){V?e(V):hh.push(e)}function _h(){let e=hh.splice(0);for(let t of e)try{t(V)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function vh(e,t){let n={cancelled:!1,unsub:null};return gh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function yh(e,t){return V?V.isInRemote(e,t):!1}function bh(e,t){return V?V.isBundleInRemote(e,t):!1}var xh=`deepview.objstore-presence.`;function Sh(e){try{let t=localStorage.getItem(xh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function Ch(e,t){if(V&&V.isInRemote(e,t))return!0;let n=Sh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function wh(e,t){if(V&&V.isBundleInRemote(e,t))return!0;let n=Sh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function Th(e){return V?V.remoteCount(e):0}function Eh(e){return V?V.differingReports(e):[]}function Dh(e){return vh(e,(e,t)=>e.onAutoDownloaded(t))}function Oh(e){return vh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function kh(e){return vh(e,(e,t)=>e.onChange(t))}var Ah=null,jh=null,Mh=null,Nh=[];function Ph(e){if(V){V.setRedraw(e);return}Ah=e,gh(t=>{Ah===e&&t.setRedraw(e)})}function Fh(e){if(V){V.setAuthenticationResolver(e);return}jh=e,gh(t=>{jh===e&&t.setAuthenticationResolver(e)})}function Ih(e){if(V){V.setHydrationConflictResolver(e);return}Mh=e,gh(t=>{Mh===e&&t.setHydrationConflictResolver(e)})}async function Lh(e,t){if(ph()||!uh()&&!V)return;let n=await mh();if(n&&!ph())return n[e](...t)}function Rh(...e){return Lh(`downloadFileFromRemote`,e)}function zh(...e){return Lh(`fetchBundleFromRemote`,e)}function Bh(...e){return Lh(`putFile`,e)}function Vh(...e){return Lh(`holdLocalChangeChecks`,e)}function Hh(...e){return Lh(`putBundleToRemote`,e)}function Uh(...e){return Lh(`deleteFromRemote`,e)}function Wh(...e){return Lh(`deleteBundleFromRemote`,e)}function Gh(...e){return Lh(`openWorkspace`,e)}async function Kh(...e){return(V??(lh?await lh:null))?.closeWorkspace(...e)}function qh(...e){return Lh(`recheckRemoteStorage`,e)}function Jh(...e){return Lh(`resolveReportDifference`,e)}function Yh(e,t){if(V)return V.triageSync[e](...t);gh(n=>{n.triageSync[e](...t)})}var H={get status(){return V?V.triageSync.status:`off`},get openSessions(){return V?V.triageSync.openSessions:[]},get persistenceDegraded(){return V?V.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return V?V.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return ph()?Promise.resolve(null):mh().then(e=>{e.triageSync.setEnabled(!0);let t=Nh;Nh=[];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(V){Nh=V.openWorkspaceIds();for(let e of Nh)try{V.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}V.triageSync.setEnabled(!1);return}Yh(`setEnabled`,[e])},isEnabled(){return V?V.triageSync.isEnabled():uh()},openSession(e){Yh(`openSession`,[e])},closeSession(e){Yh(`closeSession`,[e])},refreshSession(e){Yh(`refreshSession`,[e])},dismissError(e){Yh(`dismissError`,[e])},setForcedOff(e){Yh(`setForcedOff`,[e])},setProtocolLocked(e){Yh(`setProtocolLocked`,[e])},setServerUrl(e){Yh(`setServerUrl`,[e])},getServerUrl(){return V?V.triageSync.getServerUrl():null},notify(){Yh(`notify`,[])},onStatusChange(e){return vh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return vh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return vh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return vh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Xh=class extends ya{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Rs(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Rs(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 Zh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Qh(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 $h(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!Qh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function eg(e){return $h(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function tg(e){return $h(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function ng(e){let t=eg(e);if(t)return{...t,kind:`pull`};let n=tg(e);return n?{...n,kind:`issue`}:null}function rg(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function ig(e){return L()&&I.currentManagedTeam&&I.managedSession&&!I.managedSession.publicShare?I.managedIssues.get(e?.id)??null:null}function ag(e){return ig(e)?.autoFix??``}function og(e,t){let n=ig(e);return t?.fix||n?.autoFix||n?.duplicateOf||n?.url||``}function sg(e,t={},n){let r=!1;for(let i of e){if(n&&I.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=tg(e?.url)?{url:e.url,autoFix:eg(e.autoFix)?e.autoFix:null,duplicateOf:tg(e.duplicateOf)?e.duplicateOf:null}:null,o=I.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix&&o?.duplicateOf===a?.duplicateOf||(a?I.managedIssues.set(i,a):I.managedIssues.delete(i),r=!0)}return r}function cg(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function lg(e,t,n){let r=cg(t);if(!e._revalidationCopies){let t=cg(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 ug(e){let t=new Map,n=new Set(Bi);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Vi(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 dg=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function fg(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||dg.has(r)||i==null)continue;if(r===`revalidate`){let a=Vi(t);if(!a)continue;let o=Vi(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 pg(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:Li(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:Li(t),reason:t.correctedSeverityReason});let i=lg(e,t,n);(fg(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function mg(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 hg(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(Vi(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Vi(e)!==`revalidation`).map(_g):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Vi(e))):e:e.filter(e=>Vi(e)!==`revalidation`).map(_g),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(...gg(r,e,t,n))}else m.push(...gg(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))pg(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(...gg(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 gg(e,t,n,r){if(n)return[t];if(r){let n=mg(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 mg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function _g(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 vg(e,t=tf){let n=Du(Ou(e.flat()));return{linkedIds:e=>[...md(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...nf(e)];for(let e of r)for(let t of Ou(e.members))n.add(t);return r}}}var yg=null,bg=0;function xg(){return I.currentView===`links`&&yg?.owner===I.currentLinks?yg:null}function Sg(){bg++,yg=null}async function Cg(e,t,n,r){if(I.currentView!==`links`||!I.currentLinks)return;let i=Ls(I.currentLinks),a=++bg;yg={owner:i,id:e,reportName:t,group:null,error:``},I.focusCodeStack=[],I.focusCodeAt=0;let o=()=>a===bg&&I.currentView===`links`&&I.currentLinks===i;try{if(L()){let a=tf([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.`);yg={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},I.activeTabByGroup.set(a.members[0].id,e);return}let a=await ji(await Xc(t));if(!o())return;let s=(Ei(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:Si(u)??nc(t),_repoDirectory:Ci(u?.repo),_repoCommit:$n(u,Si(u)),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return xi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Hi(n,n._source)),n});if(await Promise.all([Bd(),Vr(`report`,t),...dp(t).map(e=>Vr(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));Ti([d],vg([d],e=>[...tf(e),...I.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),yg.group=d,I.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(yg.error=e.message||`Unable to load this finding.`)}}function wg(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 U(e){return e.workspaceKey??E(e[0])}function Tg(e){return Array.isArray(e)?e:[e]}function Eg(){return I.revalidationDetailed===!0}function Dg(e){return e?._reportName??``}var Og=null,kg=!0;function Ag(){let e=I.reports;return!Array.isArray(e)||e.length===0||(e!==Og&&(Og=e,kg=Mr(e)),kg)}function jg(e){return!e.isUpstream||I.showRevalidation===!1||I.upstreamOnly===!0||!Ag()}function Mg(){let e=I.managedSession;return L()&&(e?.publicShare===!0||!Ze(e?.role,`triage`))}function Ng(e){return jg(e)&&!Mg()}function W(e){if(!jg(e))return;let t=I.triage.get(E(e)),n=t?.triage===`ignored`&&r(e,kn())?{...t,triage:void 0}:t;if(!L())return n;let i=I.managedComments?.get(e.id)??[];return i.length===0&&!n?.comment?n:{...n,comment:i.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
|
|
4
|
+
|
|
5
|
+
`)}}function Pg(e){return jg(e)&&(i(e,I.triage.get(E(e)),kn())===`ignored`||r(e,kn())&&mn(I.triage,E(e),Dg(e)))}function Fg(e,t=W(e)){if(jg(e))return i(e,t,kn())??(Pg(e)?`ignored`:void 0)}function Ig(e){return xg()?.group===e?e:e.linkedTabs?e.linkedTabs:Eg()?e:Lg(e)}function Lg(e){return e.length<=1||!e.some(Ir)?e:e.filter(Ir)}function Rg(e){let t=Ig(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Ir(e),r=+!!Ir(t);if(n!==r)return r-n;let i=+!!W(e)?.color,a=+!!W(t)?.color;if(i!==a)return a-i;let o=Fi[k(e,I.severityMode)]||0,s=Fi[k(t,I.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function zg(e){return e.length===1?e[0]:Rg(e)[0]}function Bg(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function Vg(e){let t=W(e);return!!t?.comment||!!(t?.fix||ag(e))||t?.flagged===!0}function Hg(e){if(e.length===1)return e[0];let t=Rg(e);if(t.length===1)return t[0];let n=I.activeTabByGroup.get(U(e));if(n){let e=t.find(e=>E(e)===n);if(e)return e}let r=t;if(I.filterAnalyzer||I.filterModel){let e=t.filter(h_);e.length>0&&(r=e)}return r.find(Vg)??r[0]}function Ug(e){return e?._repoFallback||I.repoUrl||``}function Wg(e){return{github:Ug(e),directory:e?._repoDirectory??``,commit:e?._repoCommit??``}}function Gg(e){for(let t of Pf().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||Ug(e)||null}function Kg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function qg(e){let t=Kg(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=W(e),f=Fg(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 Jg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(Ng);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Yg(e,r))}function Yg(e,t){if(!Ng(e))return!1;let n=(W(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Xg(e,t){if(!Ng(Hg(e)))return{targets:[],clearing:!1};let n=qg(e);return{targets:Zg(e,n),clearing:t===`restore`||Qg(e,n)===t}}function Zg(e,t=qg(e)){let n=Kg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Hg(e)]:n;return r.every(Ng)?r:r.filter(Ng)}function Qg(e,t=qg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&Kg(e)!==e||!t.hasConflict?t.commonTriage??null:Fg(n??Hg(e))??null}function $g(e){let t=Kg(e);if(t.length<2)return!1;let n=qg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>W(e)?.triage===`ignored`))return!1;let i=!1;for(let e of t){if(!Ng(e))continue;let t=E(e),a=I.triage.get(t);Fg(e,a)!==n&&(n===`ignored`&&r(e,kn())||n!==`ignored`&&a?.ignoredReports?.length||C(I.triage,t,{triage:n})&&(i=!0))}return i}var e_=null;function t_(){e_=null}function n_(e,t=!1,n=!1){let r=I.reports,i=I.workspaceMerges,a=L();if(!e_||e_.reports.length!==r.length||e_.reports.some((e,t)=>e!==r[t])||e_.merges!==i||e_.mergeCount!==i.length||e_.securityLinksTick!==I.linksTick||e_.findingIndexTick!==I.findingIndexTick||e_.managed!==a){let e=r.flatMap(e=>e.groups??[]);Ti(e,vg(e)),e_={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:I.linksTick,findingIndexTick:I.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return e_[o]||(e_[o]=hg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),e_[o]}function r_(){return n_(I.showRevalidation!==!1).groups}function i_(){return n_(!0).groups}function a_(){return n_(!0,!1,!!I.currentWorkspace).conflicts}function o_(){let e=n_(I.showRevalidation!==!1,I.upstreamOnly===!0,!!I.currentWorkspace),t=e.groups;if(I.showRevalidation===!1||I.upstreamOnly)return t;if(I.currentWorkspace){let n=Eg();return(!e.linkedGroups||e.linksTick!==I.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=wg(t,md,Lg,Ig),e.linksTick=I.linksTick,e.linkedDetailed=n),e.linkedGroups}return Eg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Rr(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=U(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function s_(){let e=o_();if(I.viewMode===`kanban`)return e;let t=e.filter(e=>qg(e).commonTriage===I.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function c_(e){if(I.showRevalidation||I.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(E)),n=new Map;for(let e of i_())for(let r of mg(e))if(r.some(e=>t.has(E(e))))for(let e of r)n.set(E(e),e);return n.size===e.length&&e.every(e=>n.get(E(e))===e)?e:n.size>0?[...n.values()]:e}function l_(e){let t=xg()?.group;if(t&&U(t)===e)return t;for(let t of o_())if(U(t)===e)return t;return null}function u_(){let e=new Set;if(I.currentWorkspace||!pd())return e;let t=I.currentFile??I.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of I.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)md(r).some(e=>!n.has(e)&&$d(e).some(e=>e!==t))&&e.add(r);return e}var d_=`\0`,f_=`\x01`,p_=`\x02`;function m_(e){return Ui(e.model)||null}function h_(e){let t=w_();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===d_?null:t.filterAnalyzer)||t.filterModel&&m_(e)!==(t.filterModel===p_?null:t.filterModel))}function g_(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 __(e){let t=new Set;for(let n of e)for(let e of n)t.add(g_(e));return t}function v_(){I.filterSeverities=new Set,I.filterColors=new Set,I.filterSources=new Set,I.filterAnalyzer=``,I.filterModel=``,I.filterRepo=``,I.filterConfMin=0,I.filterConfMax=10,I.filterInclude=``,I.filterIncludeNegate=!1,I.filterComment=``,I.filterFix=``,I.filterFlagged=``,I.filterDuplicates=``,I.filterCrossContext=``,I.filterAppStacked=``,I.filterSecurity=``,I.filterRevalidate=``,I.filterPartial=``,I.sortBy=`severity`}var y_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function b_(){let e={};for(let t of y_){let n=I[t];e[t]=n instanceof Set?new Set(n):n}return e}var x_=null;function S_(e){x_=e}function C_(){x_=null}function w_(){return x_??I}function T_(e){return kr(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function E_(e){let t=fr(`confirmed`,``);return e.some(e=>t.includes(T_(e)))}function D_(e,t){let n=e.map(Ig).filter(e=>e.length>0);return Sr(n,t,br(e,Ig,kr),kr)?`confirmed`:``}function O_(e,t=Ig){return vr(e,t)}function k_(e,{tabs:t=Ig,kindOf:n=kr,severityMode:r=I.severityMode}={}){return wr(e,{tabs:t,kindOf:n,severityMode:r})}function A_(e){return I.showRevalidation===!1||I.upstreamOnly||Eg()?!1:k_(e)}function j_(e,{resetSort:t=!0}={}){I.filterConfMin=O_(e),I.filterConfMax=10,I.filterRevalidate=D_(e,I.filterConfMin),I.filterPartial=``,t&&(I.sortBy=M_(e)?`priority-desc`:`severity`)}function M_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(N_(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&&Rr(e))})}function N_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Rr)?0:void 0}function P_(e){let t=w_();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(T_(e)))return!1}if(!t.filterRevalidate){let n=Tn(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 F_={raw:``,inc:``,idWords:[]};function I_(e){if(F_.raw!==e){let t=e.toLowerCase();F_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return F_}function L_(e){if(!P_(e))return!1;let t=w_(),{inc:n,idWords:r}=I_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(k(e,I.severityMode)))return!1;if(t.filterColors.size>0){let n=W(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!h_(e)||t.filterRepo&&g_(e)!==(t.filterRepo===f_?null:t.filterRepo))return!1;if(n){let i=W(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 R_(e){let t=w_();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(W(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=>!!(W(e)?.fix||ag(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 z_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!lf(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function B_(){return I.showRevalidation!==!1&&!I.upstreamOnly}function V_(e){if(B_())return!1;let t=Ig(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=g_(e);t&&n.add(t);let i=z_(e);i&&r.add(i)}return n.size>1||r.size>1}function H_(e){if(!B_()||Ig(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function U_(e){return e.some(e=>e.isSecurity===!0)}function W_(e){return e.some(U_)&&e.some(e=>!U_(e))}function G_(e){return e.filter(e=>e.some(P_)).map(Ig)}function K_(e){let t=!I.currentWorkspace&&w_().filterDuplicates,n=t?u_():null,r=w_().filterCrossContext,i=w_().filterAppStacked,a=w_().filterSecurity;return e.filter(e=>e.some(L_)&&R_(e)&&(!t||t===`with`===e.some(e=>n.has(E(e))))&&(!r||r===`with`===V_(e))&&(!i||i===`with`===H_(e))&&(!a||a===`with`===U_(e)))}function q_(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 J_(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 Y_=J_(`desc`),X_={severity:(e,t)=>(Fi[k(t,I.severityMode)]||0)-(Fi[k(e,I.severityMode)]||0)||Y_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":Y_,"confidence-asc":J_(`asc`),"priority-desc":q_(`priority`,`desc`),"priority-asc":q_(`priority`,`asc`)};function Z_(e){let t=X_[I.sortBy];if(!t)return[...e];if(I.sortBy===`priority-desc`||I.sortBy===`priority-asc`){let t=I.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:N_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||zg(e.g).file.localeCompare(zg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:zg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var Q_=Pi;function $_(e){return e==null?`(none)`:Q_[e]??e}function ev(e){return e??`(no model)`}var tv=class extends Xh{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 N;let n=I.filterAnalyzer===``?void 0:I.filterAnalyzer===d_?null:I.filterAnalyzer,r=I.filterModel===``?void 0:I.filterModel===p_?null:I.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=m_(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:$_(n),s=r===void 0?null:ev(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return j`<button type="button" class="${w({"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:d_,labelOf:$_,counts:i,current:I.filterAnalyzer}):N} ${e&&t?j`<div class="analyzer-menu-sep"></div>`:N} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:p_,labelOf:ev,counts:a,current:I.filterModel}):N}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return j`<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="${w({"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 j`<button type="button" aria-pressed="${String(c)}" class="${w({"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`?I.filterAnalyzer:I.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:I.filterAnalyzer,model:e===`model`?r:I.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`,tv);var nv=0,rv=new AbortController;function G(){return nv}function iv(){return rv.signal}function av(){return rv.abort(),rv=new AbortController,++nv}var ov=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function sv(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(ov(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=ov(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var cv=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`bundle:metro`,label:`bundle:metro`,subtitle:`Metro bundle contents (static)`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`bundle`,label:`bundle`,subtitle:`Static code bundle`},{key:`add`,label:`add`,subtitle:`Manually added files`},{key:`extra`,label:`extra`,subtitle:`Extra files`}];function lv(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=>!cv.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...cv.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 uv=class extends ya{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 N;let t=lv(e);if(!t)return j`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${ze(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>j`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return j`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>j`<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=_a`: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`,uv);var dv=6,fv=14,pv=2,mv=24,hv=4,gv=1.5,_v=new Map,vv=new Map,yv=`treemap`,bv=``;function xv(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 Sv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function Cv(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=Sv(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 wv(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())wv(t)}function Tv(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+=Tv(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 Ev(e,t,n,r){let i=new Set(e).size===1?sv(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 Dv(e,t,n,r,i,a,o){if(r<hv||i<hv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<dv&&r>=mv&&i>=mv&&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>=fv+hv+pv?fv:0,c=t+pv,l=n+s,u=r-pv*2,d=i-s-pv;if(u<hv||d<hv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of Cv(f,{x:c,y:l,w:u,h:d}))Dv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function Ov(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function kv(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+kv(r,t-1);e>n&&(n=e)}return n}function Av(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 jv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Mv=class extends ya{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=yv,this._reason=``,this._kind=bv,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=vv.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;P(j`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?j`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${D({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=Rt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=ye(this.details,t),this._reasons.has(this._reason)||(this._reason=``,vv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Vt(this.details),i=zt(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=>Xr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=Ev(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())wv(e);let h=new Map;Tv(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?_v.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):_v.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?_v.set(e,t):_v.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`,yv=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,bv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?vv.set(t,this._reason):vv.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 j`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${w({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>j`<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?j`<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:Nr(),label:null,named:!1}:{color:jr(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Xr(e.path);return{color:Fr(t),label:$r(t),named:e.pkg!=null}}_cell(e){let t=Ov(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 j`<div class="bundle-treemap-node bundle-treemap-dir" style="${D(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=D({...n,background:i,color:xv(i)}),s=a??N;return e.kind===`agg`?j`<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>`:j`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?N: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=Ov(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??N;if(e.isFile)return M`<path
|
|
6
|
+
class="bundle-treemap-node bundle-treemap-arc"
|
|
7
|
+
d=${t}
|
|
8
|
+
fill=${i}
|
|
9
|
+
data-bundle-view-source=${e.resource?N: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 M`<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:N}
|
|
21
|
+
data-tt-color=${o?i:N}
|
|
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 N;let o=kv(e,dv),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>=gv&&(u.push(this._arc(t,Av(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?M`<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 ${Ov(e.value,l)}%`}
|
|
29
|
+
></circle>`:M`<circle class="bundle-treemap-center" cx=${r} cy=${i} r=${p}></circle>`,h=M`<text class="bundle-treemap-center-label" x=${r} y=${i} text-anchor="middle">
|
|
30
|
+
${f?M`<tspan x=${r} dy="-0.3em">${jv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${Mn(e.value)}</tspan>`:M`<tspan x=${r} dy="0.35em">${Mn(e.value)}</tspan>`}
|
|
31
|
+
</text>`;return j`<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 Cv(t,{x:0,y:0,w:this._w,h:this._h}))Dv(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 j`<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?j` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?j`<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>`:N} ${this._mixedKinds?j`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>j`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:N}<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`?j`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?j`<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):N:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,Mv);function Nv(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&Nv(t.shadowRoot))return!0;return!1}var Pv=`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
|
+
`,Fv=class extends ya{static styles=[ga(Pv)];exclusive=!1;firstUpdated(){pr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&Nv()){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 Iv(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 Lv(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(oh(e.detail?.cause))}),document.body.append(a)})}var Rv=`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
|
+
`,zv=class extends Fv{static styles=[...Fv.styles,ga(Rv)];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 Lo({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 j`<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?j`<p class="wsl-error">${this._error}</p>`:N}<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`,zv);function Bv(){return Iv(`passkey-unlock-dialog`)}var Vv=`deepviewManagedNavigation`,Hv=`deepviewManagedLoginFinding`;function Uv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Wv(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 Gv(e){let t=e.location.hash,n=Be(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=gi(e),n=t?.view===`home`?Gr(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Hv);if(e.sessionStorage?.removeItem(Hv),!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||!Gr(e.location.hash)||l===e.location.href||e.history.state?.[Vv]&&e.history.state[Vv]!==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=Ge(t,n),e.history.replaceState(r?{[Vv]: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=di(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=di(_)??d),Uv(m.findingRoute,typeof _==`object`?_:t)&&(d=di(m.findingRoute)),Wv(m.codeRoute,typeof _==`object`?_:t)&&(d=di(m.codeRoute)),u=null,l||c||m.shown?g(d):Ge(d,n)!==s&&(d=Ge(d,n),e.history.pushState({[Vv]: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?.[Vv]&&g(`/`);return}if((!t.state?.[Vv]||t.state[Vv]===i)&&Gr(e.location.hash)){h();return}if(!t.state?.[Vv]){let t=p(new URL(e.location.href)),n=s==null?null:gi(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Wv(t,n)){g(di(t));return}}_((t.state?.[Vv]===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`?`/#${Ur(t.finding)}`:di(t);try{e.sessionStorage?.setItem(Hv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Vv]==`string`?e.history.state[Vv]: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=di(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||Uv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}Uv(t,gi(new URL(e.location.href)))&&Ge(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=di(t);if(i!=null){if(u){Wv(t,u.route)&&(u.codeRoute=t);return}Wv(t,gi(new URL(e.location.href)))&&Ge(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=Ge(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Vv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=di(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=di(t);if(o==null)return;let c=u!==null;++a,u=null,o=Ge(o,n),o!==s&&(e.history.pushState({[Vv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Hv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var K=typeof window>`u`?null:Gv(window);function Kv(e){return L()&&!I.managedSession?.publicShare&&Ze(I.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function qv(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 Jv=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=qv(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&&ng(e);if(!n)return null;let r=rg(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=ng(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?Zh(e.stateReason):null;this.entries.set(rg(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()}},Yv=new Set,Xv=new Jv({context:()=>{let e=I.managedSession;return L()&&e?.id&&I.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:I.currentManagedTeam,reportId:I.managedTeams.find(e=>e.id===I.currentManagedTeam)?.reports.find(e=>e.id===I.currentManagedReport&&e.visible===!1)?.id??null,teams:I.managedTeams}:null},fetchWorkspace:_x,changed:()=>{for(let e of Yv)e()}});function Zv(e){return Yv.add(e),()=>Yv.delete(e)}function Qv(){Xv.reset();for(let e of Yv)e()}function $v(e){I.currentManagedTeam===e&&Qv()}function ey(e,t,n){if(I.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:I.managedIssues.get(e)}));r.some(({id:e,issue:t})=>n.has(e)&&t?.url!==n.get(e).url)&&$v(e);for(let{id:e,issue:t}of r)t?.url&&!n.has(e)&&Xv.read(t.url,{refreshIfMissing:!0}),t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Xv.read(t.autoFix,{refreshIfMissing:!0}),t?.duplicateOf&&t.duplicateOf!==n.get(e)?.duplicateOf&&Xv.read(t.duplicateOf,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Xv.read(i)}var ty={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`]}},ny=Object.entries(ty),ry=new Map;for(let[e,{accounts:t}]of ny)for(let{id:n,logins:r}of t)for(let t of r)ry.set(t.toLowerCase(),{agent:e,ids:[...ry.get(t.toLowerCase())?.ids??[],n]});var iy=new Map(ny.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),ay=new Map(ny.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(ny.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function oy(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?ay.get(n.trim().toLowerCase())??null:null;let r=ry.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:iy.get(t)??null}function sy(e,t){let n=new Set([...t].map(t=>oy(e,t)));return n.size===1&&!n.has(null)}var cy=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),ly=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,uy=8,dy=e=>Number.isSafeInteger(e)&&e>0?e:null;function fy(e){let t=new Map;py(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,sy(e,t)?null:`ambiguous`]}))}function py(e,t,n){if(n>uy||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)py(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=cy.get(e);if(a&&typeof i==`string`&&ly.test(i)){let e=dy(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else py(i,t,n+1)}}var my=j`<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>`,hy=j`<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>`,gy=j`<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>`,_y=j`<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>`,vy=j`<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>`,yy=j`<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>`,by=j`<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>`,xy=j`<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>`,Sy=j`<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>`,Cy=j`<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>`,wy=j`<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>`,Ty=j`<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>`,Ey=e=>j`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,Dy=Ey($i),Oy=Ey(ea),ky={anthropic:Dy,deepseek:my,"github-copilot":j`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${ta}"></path></svg>`,google:hy,meta:_y,mistralai:vy,moonshot:yy,moonshotai:yy,nvidia:by,openai:Oy,openrouter:xy,qwen:Sy,unbiased:Cy,xiaomi:wy,"x-ai":gy,"z-ai":Ty},Ay=j`<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 jy(e){return Object.hasOwn(ky,e)?ky[e]:Ay}var My=new Map,Ny=new Map,Py=new Set;function Fy(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of fy(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&Ny.has(n)&&Ny.get(n)!==t&&!sy(e,[t,Ny.get(n)])?Py.add(n):t!==null&&Ny.set(n,t),(!Object.hasOwn(r,e)||Py.has(n))&&My.delete(n)}for(let[e,t]of Object.entries(r))Py.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(ty,t.agent)?My.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?My.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):My.delete(e.toLowerCase()));return e}var Iy=0;function Ly(){My.clear(),Ny.clear(),Py.clear(),Uy.clear(),Wy.clear(),Iy++}async function Ry(e){let t=Iy,n=Hy,r=await e();return t!==Iy||(Fy(r),n!==Hy&&Ky(Vy.userId,Vy.profile)),r}var zy=new Map;function By(e){globalThis.fetch(`/api/avatar/${encodeURIComponent(e)}`,{cache:`reload`,credentials:`same-origin`}).catch(()=>{})}var Vy=null,Hy=0,Uy=new Set,Wy=new Set;function Gy(e,t,n=!1,r=null){n&&(zy.set(e,(zy.get(e)??0)+1),By(e)),r&&Uy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Wy.add(r.githubId),Vy={userId:e,profile:t},Hy++,Ky(e,t)}function Ky(e,t){for(let[n,r]of My)r.id===e&&((Ny.has(n)?Wy.has(Ny.get(n)):Uy.has(n))?My.delete(n):My.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function qy(e){let t=typeof e==`string`?My.get(e.toLowerCase()):null;return t?.id?t:null}var Jy=e=>My.get(e.toLowerCase())?.agent??null,Yy=e=>j`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Xy=e=>Yy(`/api/avatar/${encodeURIComponent(e.id)}${zy.has(e.id)?`?v=${zy.get(e.id)}`:``}`);function Zy(e,t){let{name:n,mark:r,avatar:i}=ty[e];return j`<span class="app-user" data-tooltip="${t}">${r||i?j`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?jy(r):Yy(`/api/avatar/${i}`)}</span>`:j`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Qy(e){let t=typeof e==`string`?Jy(e):null;if(t)return ty[t].name;let n=qy(e);return n?n.name??n.login:e}function $y(e,t=e){let n=typeof e==`string`?Jy(e):null;if(n)return Zy(n,`@${e} on GitHub`);let r=qy(e);return r?eb(r,e):t}function eb(e,t=e.login){return j`<span class="app-user" data-tooltip="${`@${t} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(e.name??e.login)[0].toUpperCase()}${Xy(e)}</span><span class="app-user-name">${e.name??e.login}</span></span>`}function tb(e){let t=new Map;for(let n of e){let e=Jy(n),r=e?`agent:${e}`:qy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function nb(e,t=null){return typeof e==`string`?Jy(e):oy(null,null,t)}function rb(e,t=null,n=t??e??``){if(typeof e==`string`)return $y(e,n);let r=nb(null,t);return r?Zy(r,t):n}function ib(e,t=null){if(typeof e==`string`)return Qy(e);let n=nb(null,t);return n?ty[n].name:t}var ab=3,ob=e=>typeof e==`string`&&Object.hasOwn(ty,e)?e:null,sb=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function cb({login:e=null,name:t=null,agent:n=null}){let r=ob(n)??nb(e,t);if(r){let{name:e,mark:t,avatar:n}=ty[r];return j`<span class="${`commit-avatar is-${r}`}">${t?jy(t):n?Yy(`/api/avatar/${n}`):e[0]}</span>`}let i=qy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return j`<span class="commit-avatar">${a}${i?Xy(i):N}</span>`}function lb(e,t,n=null){return ob(n)&&t?t:typeof e==`string`&&(qy(e)||Jy(e))?Qy(e):t??ib(e,t)??e??``}function ub(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,ab);if(r.length===0)return rb(e,t);let i=lb(e,t),a=r.map(e=>lb(e.login??null,e.name??null,e.agent));return j`<span class="app-user commit-authors" data-tooltip="${sb([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(cb)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${sb(a)}</span></span>`}var db=null,fb=null;function pb(){return fb?.getPreviewRole()??null}function mb(){fb?.setPreviewRole(null)}function hb(){Ly(),gb=null,fb?.resetManagedAppState()}var gb=null;function _b(e){let t=e?`${e.id}\0${e.role}`:null;t!==gb&&(Ly(),gb=t),fb?.setManagedAppSession(e)}function vb(e){return fb?.setManagedReportCatalog(e)??new Set}function yb(e,t=I.currentManagedTeam){return fb?.readReportSources(e,t)}function bb(){fb?.clearReportSources(),fb?.clearFindingHistory()}async function xb(e,t=I.currentManagedTeam){return(await q()).fetchReportSources(e,t)}function q(){return db||(db=(async()=>{try{return fb=await import(`./client-managed.js`),fb}catch(e){throw db=null,e}})(),db)}async function Sb(e){return(await q()).probeSession(e)}async function Cb(e){return(await q()).probeTeams(e)}async function wb(e){return(await q()).fetchManagedBundleCatalog(e)}async function Tb(e,t,n){return(await q()).fetchNpmPackage(e,t,n)}async function Eb(e,t,n,r){return(await q()).fetchRepositoryCode(e,t,n,r)}async function Db(e){return(await q()).fetchBrowsableRepositories(e)}async function Ob(e,t){return(await q()).fetchRepositoryRefs(e,t)}async function kb(e,t,n,r){return(await q()).fetchRepositoryContents(e,t,n,r)}function Ab(e,t,n,r){return Ry(async()=>(await q()).fetchRepositoryHistory(e,t,n,r))}async function jb(e,t,n,r){return(await q()).fetchRepositoryChanges(e,t,n,r)}async function Mb(e,t,n,r){return(await q()).fetchRepositoryTree(e,t,n,r)}async function Nb(e,t,n){(await q()).prefetchActivity(e,t,n)}function Pb(e,t){return Ry(async()=>(await q()).fetchRepositoryAgents(e,t))}function Fb(e,t,n){return Ry(async()=>(await q()).fetchRepositoryIssues(e,t,n))}function Ib(e,t,n){return Ry(async()=>(await q()).fetchRepositoryItem(e,t,n))}async function Lb(e,t,n){return(await q()).fetchPullDependencies(e,t,n)}async function Rb(e,t,n){return(await q()).fetchPullDependenciesOf(e,t,n)}async function zb(e,t){return(await q()).fetchBundleDependencyReview(e,t)}async function Bb(e,t){return(await q()).fetchBundleValidation(e,t)}async function Vb(e,t,n){return(await q()).runBundleValidation(e,t,n)}async function Hb(e,t,n){return(await q()).fetchTeamDependencies(e,t,n)}async function Ub(e,t,n){return(await q()).fetchNpmDeltas(e,t,n)}function Wb(e,t,n){return Ry(async()=>(await q()).fetchRepositoryPulse(e,t,n))}function Gb(e,t,n,r){return Ry(async()=>(await q()).fetchRepositoryPulseItems(e,t,n,r))}async function Kb(e,t){return(await q()).fetchNpmVersions(e,t)}async function qb(e,t){return(await q()).fetchNpmStats(e,t)}async function Jb(e,t){return(await q()).fetchNpmAdvisories(e,t)}async function Yb(e,t,n){return(await q()).fetchNpmTags(e,t,n)}async function Xb(e,t,n,r){return(await q()).fetchNpmRisk(e,t,n,r)}async function Zb(e,t,n){return(await q()).fetchNpmSocket(e,t,n)}async function Qb(e,t,n){return(await q()).fetchNpmProvenance(e,t,n)}async function $b(e,t,n,r){return(await q()).fetchPrettyBundleFile(e,t,n,r)}async function ex(e,t,n,r){return(await q()).fetchPrettyNpmFiles(e,t,n,r)}async function tx(e,t,n,r,i){return(await q()).fetchPrettyNpmFile(e,t,n,r,i)}async function nx(e,t,n,r){return(await q()).fetchPrettyBundleChanges(e,t,n,r)}async function rx(e,t,n,r,i){return(await q()).fetchPrettyNpmChanges(e,t,n,r,i)}async function ix(e,t,n,r){return(await q()).fetchBundleRenameDiff(e,t,n,r)}async function ax(e,t,n,r,i){return(await q()).fetchNpmRenameDiff(e,t,n,r,i)}async function ox(e,t,n,r){return(await q()).fetchBundleRenameDiffs(e,t,n,r)}async function sx(e,t,n,r,i){return(await q()).fetchNpmRenameDiffs(e,t,n,r,i)}async function cx(e,t,n,r){return(await q()).fetchBundleTypeOnly(e,t,n,r)}async function lx(e,t,n,r,i){return(await q()).fetchNpmTypeOnly(e,t,n,r,i)}async function ux(e,t,n){return(await q()).fetchBundleComparison(e,t,n)}async function dx(e,t,n,r){return(await q()).fetchNpmComparison(e,t,n,r)}async function fx(e){return(await q()).openManagedShareDialog(e,``,I.managedSession)}async function px({render:e,...t}){let n=()=>I.managedSession?.id===t.session.id&&I.managedSession?.csrfToken===t.session.csrfToken&&I.currentManagedTeam===t.teamId,r=await q();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=I.managedIssues.get(i),o=sg([i],{[i]:a?.url===r?a:{url:r}});$v(t.teamId),o&&e()}}):null}async function mx(e){if(!Kv(e))return null;let t=I.reports,n=I.managedSession,r=I.currentManagedTeam,i=()=>Kv(e)&&I.managedSession===n&&I.currentManagedTeam===r&&I.reports===t,a=await q();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function hx(e,t){return(await q()).fetchTeamAnnotations(e,t)}async function gx(e,t=I.currentManagedTeam,n){return(await q()).fetchReportTriage(e,t,n)}async function _x(e,t,n){return(await q()).fetchFixes(e,t,n)}async function vx(e,t=I.currentManagedTeam,n){return(await q()).fetchReportComments(e,t,n)}async function yx(e,t,n,r=I.currentManagedTeam){return(await q()).saveReportComment(e,t,n,r)}async function bx(e,t,n,r,i=I.currentManagedTeam){return(await q()).deleteReportComment(e,t,n,r,i)}async function xx(e,t,n,r=I.currentManagedTeam){return(await q()).pushReportTriage(e,t,n,r)}async function Sx(e){return e&&K?.rememberFinding(),(await q()).login(e)}async function Cx(e){return(await q()).logout(e)}async function wx(e){return(await q()).stopViewing(e)}async function Tx(e){return(await q()).fetchProfile(e)}async function Ex(e,t,n){return(await q()).chooseProfileAccounts(e,t,n)}async function Dx(e,t,n){return(await q()).unlinkGithubAccount(e,t,n)}async function Ox(e,t){return(await q()).fetchBundleMetadata(e,t)}async function kx(e,t){return(await q()).fetchBundleContents(e,t)}async function Ax(e,t){return(await q()).fetchTeamReports(e,t)}async function jx(e,t){return(await q()).fetchTeamTrees(e,t)}async function Mx(e,t){return(await q()).watchTeamFeed(e,t)}async function Nx(e,t=I.currentManagedTeam,n=``,r=!1,i=!1){return(await q()).fetchBundleAdvisories(e,t,n,r,i)}async function Px(...e){return(await q()).dependencyReviews(...e)}async function Fx(...e){return(await q()).myDependencyReviews(...e)}async function Ix(...e){return(await q()).teamDependencyReviews(...e)}async function Lx(...e){return(await q()).discardDependencyReview(...e)}async function Rx(...e){return(await q()).latestDependencyReview(...e)}var zx=null,Bx=null,Vx=0;function Hx(){return zx||(zx=document.createElement(`div`),zx.id=`app-toast`,zx.setAttribute(`role`,`status`),zx.setAttribute(`aria-live`,`polite`),document.body.append(zx),zx)}function Ux(e,{kind:t=`info`,duration:n=5200}={}){let r=Hx(),i=++Vx;clearTimeout(Bx),Bx=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{Vx===i&&r.classList.add(`visible`)});let a=()=>{Vx===i&&Wx()};return n>0&&(Bx=setTimeout(a,n)),a}function Wx(){Vx++,zx&&(clearTimeout(Bx),Bx=null,zx.classList.remove(`visible`))}function Gx(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 Kx(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 qx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Jx(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 vi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Yx(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=Ft(Nt(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 Xx(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,...ci(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ci(n.mode)}:null;let i=Gx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ci(n.mode)}:null}function Zx(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,...ci(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Yx(e,t)??Xx(e,t)}function Qx(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=Zx(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 $x(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Kx(e)])).values()]}function eS(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 tS(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=qx(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=$x(t);else if(s)try{c=(await n()).map(Kx)}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(Jx(t,u,e.currentManagedTeam,e.bundleDetailsTab,Zx(e),c)),!0):!1}var nS={...tt,[c]:sa},rS=new Set(Object.keys(Pi)),iS={...Pi,default:`DeepView`};function aS(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(rt,t)?t:null}function oS(e){return sS(e,Wu(e))}function sS(e,t){if(t===c)return c;if(t!==void 0)return rS.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 cS(e){return Wu(e)===c}var lS=`.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
|
+
`,uS=`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 dS({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return j`<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=>j`<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??N}${e.label}</button>`)}</div>`}function fS(e){if(!e)return N;let t=e.replaceAll(`_`,` `);return j`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function pS(e){return`bundle-${e.slice(7,19)}\u2026`}function mS(e){return e.kind===`bundle`?e.label??pS(e.identifier):e.identifier}function hS(e){return e.kind===`bundle`?`bundle`:cS(e.identifier)?`links file`:`report`}function gS(e){let t=e.length,n=t===1,r=new Set(e.map(hS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function _S(e){return j`<ul class="lwd-list">${e.map(e=>{let t=hS(e);return j`<li>${mS(e)}${t===`report`?N:j`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function vS(e){return e.length===0?N:j`<ul class="lwd-list" role="alert">${e.map(e=>j`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function yS(e){return e?j`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:j`<em>none</em>`}function bS(e){return j`<span class="comment-text">${e||j`<em>empty</em>`}</span>`}function xS(e){return e?bi(e)?j`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:j`<span class="fix-text">${e}</span>`:j`<span class="comment-text"><em>empty</em></span>`}function SS(e){return e?j`<span class="${`triage triage-${e}`}">${e}</span>`:j`<em>none</em>`}function CS(e){return e?j`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:j`<em>none</em>`}function wS(e,t){return e===`color`?yS(t):e===`comment`?bS(t):e===`fix`?xS(t):e===`triage`?SS(t):e===`flagged`?CS(t):j`${String(t)}`}function TS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return j`<div class="card-head">${fS(e?.severity)} ${n?j`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:N} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?j`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:N}`}var ES={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},DS={color:0,comment:1,fix:2,triage:3,flagged:4},OS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},kS=class extends Fv{static styles=[...Fv.styles,ga(lS),ga(uS)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...ES},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)=>(DS[e.property]??99)-(DS[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 j`<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])=>j`<li class="card" data-id="${t}">${TS(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return j`<div class="row" data-key="${n}"><span class="row-label">${OS[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">${wS(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">${wS(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`,kS);function AS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...ES,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(oh(e.detail?.cause))}),document.body.append(a)})}var jS=[`type`,`model`,`effort`,`exportsMode`],MS=[`security`,`correctness`],NS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],PS=[`list`,`isolate`];function FS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var IS={type:e=>e===`terminal`?MS.length+2:FS(MS,e),model:e=>+(e==null),effort:e=>FS(NS,e),exportsMode:e=>FS(PS,e)};function LS(e,t,n){for(let r of n){let n=IS[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 RS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function zS(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 BS(e,t=jS){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Ui(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)=>LS(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`)?zS(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=RS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>RS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function VS(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 HS=null;function US(){return HS||(HS=(async()=>await import(`./prism.js`))(),HS)}var WS=1048576;function GS(e){return e.length<=WS&&xa(e)<=WS}var KS={__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 qS(e){return typeof e==`string`?KS[e.toLowerCase()]??null:null}async function JS(e,t,n=null){if(!t||!GS(e))return null;try{return(await US()).highlight(e,t,n)}catch{return null}}function YS(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 XS=new Map,ZS=new Set,QS=!1;function $S(){QS||(QS=!0,queueMicrotask(()=>{QS=!1,I.codeBlockTick++,X()}))}function eC(e,t){let n=qS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return XS.has(r)?XS.get(r):(ZS.has(r)||(ZS.add(r),(async()=>{let t=await JS(e,n);XS.set(r,t??null),ZS.delete(r),$S()})()),null)}var tC=new WeakMap,nC=new WeakMap;function rC(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 iC(e){let t=new Map;for(let n of e.keys()){let e=rC(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function aC(e,t,n,r){let i=rC(n);if(i===null)return null;let a=typeof r==`string`?rC(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=nC.get(e);for(s||(s=new Map,nC.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 oC(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 sC(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=>sC(e,t,n+1)):[null]}function cC(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=rC(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(`../`))&&rC(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 lC(e,t,n,r,i,a){let o=oC(e?.imports,t);if(!o)return null;let s=sC(o.value,o.wildcard),c=null;for(let t of s){let o=cC(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function uC(e,t=Nt(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 Mt(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function dC(e,t,n=null,r=e,i=null){let a=tC.get(e);a||(a=iC(e),tC.set(e,a));let o=tC.get(r);o||(o=iC(r),tC.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?aC(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 lC(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(rC(c+t))??null}}var fC=new WeakMap;function pC(e,t){let n=Nt(e),r=fC.get(n);return r||(r={imports:uC(e,n),packageDirs:Vt(e)},fC.set(n,r)),dC(n,t,r.imports,Lt(e),r.packageDirs)}var mC=/[\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,hC=new RegExp(mC.source,`gu`),gC=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}]})),_C=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function vC(e){let t=gC.get(e);if(t)return{label:t.label,title:`${_C(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${_C(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:`${_C(e)} VARIATION SELECTOR-${n}`}:{label:_C(e),title:`${_C(e)} ${SC(e)}`}}var yC=/\p{Cf}/u,bC=/\p{Default_Ignorable_Code_Point}/u,xC=/\p{Cn}/u;function SC(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 yC.test(t)?`format character`:bC.test(t)&&!xC.test(t)?`invisible character`:`unassigned code point`}function CC(e,t){let n=[];hC.lastIndex=0;for(let r=hC.exec(e);r;r=hC.exec(e)){let i=r[0].codePointAt(0),a=Re(e,r.index,i,t);a===-1?n.push([r.index,i]):hC.lastIndex=a}return n}function wC(e){return mC.test(e)}var TC=e=>{let{label:t,title:n}=vC(e);return j`<span class="code-control" data-tooltip="${n}">${t}</span>`};function EC(e,t=!1){if(!wC(e))return[e];let n=[],r=0;for(let[i,a]of CC(e,t))i>r&&n.push(e.slice(r,i)),n.push(TC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var DC=e=>e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`);function OC(e,t=!1){if(!wC(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 CC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=vC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${DC(l)}">${DC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function kC(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 AC=[];function jC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!kC(e[0],n))return{stack:AC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function MC({stack:e,at:t,base:n},r){if(kC(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 NC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function PC(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 FC=new Map,IC=new Map,LC=new Set,RC=new WeakMap,zC=new Set;function BC(e,t,n,r,i,a=IC,o=LC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=At(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await JS(n,c,i);a.set(s,typeof e==`string`?OC(e):null),o.delete(s),I.focusCodeTick++,queueMicrotask(X)})()}async function VC(e){let t=FC.get(e);if(t&&(t.loading||t.sources))return;let n=(I.bundles??[]).find(t=>t.integrity===e);if(n){FC.set(e,{sources:null,loading:!0,error:null});try{let t=await $q(e,n),r=Nt(t);FC.set(e,{sources:r,packageFiles:Lt(t),packageDirs:Vt(t),imports:uC(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){FC.set(e,{sources:null,loading:!1,error:t.message})}I.focusCodeTick++,queueMicrotask(X),queueMicrotask(HC)}}function HC(){let e=B.querySelectorAll(`.focus-code-line-active`);e.length!==0&&PC(e[0].closest(`.focus-code-body`),e)}function UC(e){if(L()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;I.focusCodeTick;let t=yb(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=WC(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:ap(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function WC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return np(e.integrity,t);let n=yb(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 GC(e,t,n){if(!L())return null;let r=yb(e);if(!r||r.data===void 0&&!r.error)return n&&!zC.has(e)&&(zC.add(e),xb(e).catch(()=>{}).finally(()=>{zC.delete(e),I.focusCodeTick++,queueMicrotask(X),queueMicrotask(HC)})),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=RC.get(i);return o||(o={cache:new Map,pending:new Set},RC.set(i,o)),BC(i.integrity,t,a,i.formats?.get(t),dC(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 KC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return GC(r,t,n);if(L())return null;let i=FC.get(e);if(!i)return n?(VC(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;BC(e,t,a,i.formats?.get(t),dC(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:IC.has(o)?IC.get(o):void 0,loading:!1}}function qC(e){let t=UC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Jn(t.reportId?t.line:e.line)}:null}function JC(e){return e?qC(Hg(e)):null}function YC(e){let t=JC(e);return t?{base:t,...jC(I.focusCodeStack,I.focusCodeAt,t)}:null}function XC(e){let t=qC(e);return t?jC(I.focusCodeStack,I.focusCodeAt,t).pos:null}function ZC(e,t,n,r){let i=YC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=KC(t,r,{kick:!1,reportId:Hg(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function QC(e){let t=e&&Hg(e),n=UC(t);if(n?.reportId&&!n.integrity)return GC(n.reportId,n.file,!0);let r=YC(e);if(!r)return null;let{pos:i}=r,a=KC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function $C(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=E(e);if(!ni(r))return null;if(L()){let i=t?null:n??(I.currentView===`links`?e._managedReportId:I.currentManagedReport),a=di(vi({view:`findings`,teamId:I.currentManagedTeam,reportId:i,finding:{id:r}},I.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||I.currentFile||``,a=I.currentWorkspace||ew(i);return Wr({id:r,report:I.currentWorkspace?null:Hr(`report`,i),workspace:Hr(`workspace`,a??``)})}function ew(e,t=I.currentReportWorkspace||I.currentWorkspace){let n=dp(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function tw(e){for(let t of[o_(),r_()])for(let n of t)for(let t of n)if(E(t)===e)return{group:n,finding:t};return null}function nw(e,t){I.currentView=`findings`,I.viewMode===`graph`&&(I.viewMode=`table`,ar());let n=qg(e).commonTriage;if(I.viewMode===`kanban`){let e=n??`untriaged`;I.kanbanExpandedColumn!==null&&I.kanbanExpandedColumn!==e&&(I.kanbanExpandedColumn=null)}else n!==I.shownTriage&&(I.shownTriage=n);I.upstreamOnly&&!e.every(e=>e.isUpstream)&&(I.upstreamOnly=!1),Er(I.showRevalidation,I.upstreamOnly);let r=e.find(e=>E(e)===t);if(Rr(r)||A_(s_())&&!E_(e)||!Rg(e).some(e=>E(e)===t)){if(I.currentWorkspace){r?.isUpstream?I.upstreamOnly=!0:I.showRevalidation=!1,Er(I.showRevalidation,I.upstreamOnly);let e=o_().find(e=>e.some(e=>E(e)===t));if(e)return nw(e,t)}else I.revalidationDetailed=!0}if(K_([e]).length===0){let e=I.sortBy;v_(),I.sortBy=e}let i=U(e);return e.length>1&&I.activeTabByGroup.set(i,t),I.viewMode===`table`?I.tableSelectedGid=i:I.viewMode===`focus`?I.focusGid=i:I.viewMode===`kanban`&&(I.kanbanPopoverGid=i),i}function rw(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function iw(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 aw=new Map;function ow(e,t){aw.has(e)||aw.set(e,new Set);let n=aw.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&aw.delete(e)}}function sw(e,t){I.managedComments.set(e,t);for(let t of aw.get(e)??[])t()}function cw(e){return L()?I.managedComments?.get(e?.id)??[]:[]}function lw(){return L()&&I.managedSession!=null&&Ze(I.managedSession.role,`triage`)}function uw(e){return lw()&&rw(e,I.managedSession)}function dw(e){let t=I.reports,n=I.managedSession?.id;return()=>L()&&n!=null&&I.managedSession?.id===n&&I.reports===t&&I.managedReports.some(t=>t.id===e)}async function fw(e,{signal:t,readAnnotations:n,except:r}={}){let i=dw(e);if(!i())return!1;let a=new Set(I.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id))).filter(e=>!r?.has(e))),o=new Map([...a].map(e=>[e,I.managedComments.get(e)])),s=n?(await n(e))?.comments:await vx(e,I.currentManagedTeam,{signal:t});if(!i()||s==null||t?.aborted)return!1;let c=new Map([...a].map(e=>[e,[]]));for(let e of s)c.has(e.findingId)&&c.get(e.findingId).push(e);for(let[e,t]of c)I.managedComments.get(e)===o.get(e)&&!pw(o.get(e),t)&&sw(e,t);return!0}function pw(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function mw(e,t,n=null){let r=e?._managedReportId,i=dw(r);if(!i()||!lw()||n&&n.authorId!==I.managedSession.id)return{status:403};let a=await yx(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},I.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(I.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort(iw),sw(e.id,t)}return a}async function hw(e,t){let n=e?._managedReportId,r=dw(n);if(!r()||!uw(t))return 403;let i=await bx(n,t.id,t.version,I.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=I.managedComments.get(e.id)??[];sw(e.id,n.filter(e=>e.id!==t.id))}return i}var gw=[[`impact`,`Impact`],[`evidence`,`Evidence`],[`reproduction`,`Reproduction`],[`recommendation`,`Recommendation`],[`confidenceReason`,`Confidence reason`],[`revalidateVerdict`,`Revalidation verdict`],[`revalidateRecommendation`,`Revalidation recommendation`]],_w=e=>e.toLowerCase().replaceAll(/[^\p{L}\p{N}]/gu,``),vw=new Map([...gw.map(([e,t])=>[_w(t),e]),[`reproductionsteps`,`reproduction`],[`recommendedfix`,`recommendation`]]),yw=65536,bw=e=>e.split(`
|
|
152
|
+
`).map(e=>e?`> ${e}`:`>`).join(`
|
|
153
|
+
`);function xw({id:e,label:t,parts:n},r){let i=`**${t}:**
|
|
154
|
+
${n.join(`
|
|
155
|
+
|
|
156
|
+
`)}`,a=e===`impact`?r.isSecurity===!0?`CAUTION`:`IMPORTANT`:e===`recommendation`?`TIP`:null;return a?`> [!${a}]
|
|
157
|
+
${bw(i)}`:i}function Sw(e,{sourceUrl:t,evidence:n=``,showRevalidation:r=!0,findingLink:i,allSections:a=!1}={}){let o=[],s=new Map,c=(e,t,n)=>{if(!n?.trim())return;let r=s.get(e)??{id:e,label:t,parts:[]};r.parts.includes(n.trim())||r.parts.push(n.trim()),s.set(e,r)},l=Xi(e);e.file&&o.push(`File: ${t?`[${l}](${t})`:l}`);let u=null;for(let t of Yi(Wi(e.description,e))){if(t.label!==null){let e=_w(t.label);u=[`description`,`details`,`summary`].includes(e)?null:{id:vw.get(e)??e,label:t.label}}u?c(u.id,u.label,t.body):o.push(t.label?`**${t.label}:** ${t.body}`:t.body)}e.confidence!=null&&o.push(`Confidence: ${e.confidence}/10`);for(let[t,i]of gw){if(t.startsWith(`revalidate`)&&!r){s.delete(t);continue}c(t,i,t===`evidence`?n.replace(/^\*\*Evidence:\*\*\n/u,``):Wi(e[t],e))}let d=[...gw.map(([e])=>s.get(e)).filter(Boolean),...[...s.values()].filter(e=>!gw.some(([t])=>t===e.id))],f={body:o.join(`
|
|
158
|
+
|
|
159
|
+
`),sections:d.map(t=>({id:t.id,label:t.label,text:xw(t,e),selected:!1,start:0,end:0})),footer:null},p=i?`Triage: ${i}`:``;f.body.length+2+p.length>yw&&(p=``);for(let{id:e}of f.sections){let t=a||e===`impact`?ww(f,e,!0):f;t.body.length+(p?p.length+2:0)<=yw&&(f=t)}if(p){let e=f.body.length+2;f={...f,body:`${f.body}
|
|
160
|
+
|
|
161
|
+
${p}`,footer:{start:e,end:e+p.length}}}return f}function Cw(e,t){let n=e.body;if(t===n)return e;let r=n.length,i=t.length,a=0;for(;a<r&&a<i&&n[a]===t[a];)a++;for(;r>a&&i>a&&n[r-1]===t[i-1];)r--,i--;let o=t.length-n.length,s=({start:e,end:t})=>a>=e&&r<=t?{start:e,end:t+o}:r<=e?{start:e+o,end:t+o}:a>=t?{start:e,end:t}:null;return{body:t,sections:e.sections.map(e=>{if(!e.selected)return e;let t=s(e);return t?{...e,...t}:{...e,text:n.slice(e.start,e.end),selected:!1,start:0,end:0}}),footer:e.footer?s(e.footer):null}}function ww(e,t,n){let r=e.sections.find(e=>e.id===t);if(!r||r.selected===n)return e;let i=e.footer??null;if(n){let t=i&&e.body.slice(0,i.start).endsWith(`
|
|
162
|
+
|
|
163
|
+
`)?i.start-2:e.body.length,a=e.body.slice(0,t),o=!a||a.endsWith(`
|
|
164
|
+
|
|
165
|
+
`)?``:a.endsWith(`
|
|
166
|
+
`)?`
|
|
167
|
+
`:`
|
|
168
|
+
|
|
169
|
+
`,s=t+o.length,c=s+r.text.length,l=c-t,u=e=>({...e,start:e.start+l,end:e.end+l}),d=e.sections.map(e=>e===r?{...e,selected:n,separator:o,start:s,end:c}:e.selected&&e.start>=t?u(e):e);return{body:a+o+r.text+e.body.slice(t),sections:d,footer:i&&i.start>=t?u(i):i}}let a=e.body.slice(r.start,r.end),o=r.separator??``,s=r.start-o.length,c=e.body.slice(s,r.start)===o&&!e.sections.some(e=>e!==r&&e.selected&&e.start<r.start&&e.end>s)?s:r.start,l=e.body.slice(0,c)+e.body.slice(r.end),u=c-r.end,d=e=>({...e,start:e.start+u,end:e.end+u});return{body:l,sections:e.sections.map(e=>e===r?{...e,text:a,selected:n,start:0,end:0}:e.selected&&e.start>=r.end?d(e):e),footer:i&&i.start>=r.end?d(i):i}}function Tw(e,t){return e?Jr(e,j`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${He()?N:j`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):N}function Ew(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return N;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(`
|
|
170
|
+
`);return j`<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 Dw(e,t,n=N){let r=Ew(e);return j`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?j`<span class="managed-comment-author">${Tw(e.authorId,e.authorLogin)} ${e.authorLogin?j`<strong>${e.authorLogin}</strong>`:N}</span>`:N}<div class="managed-comment-body">${t}</div>${r===N&&n===N?N:j`<div class="managed-comment-meta">${n===N?N:j`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function Ow(e){return lr(e,{managed:L()}).map(e=>typeof e==`string`?e:e.self?j`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:j`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var kw=j`<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>`,Aw=j`<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>`,jw=j`<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>`,Mw=j`<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>`,Nw=j`<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>`,Pw=j`<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>`,Fw=j`<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>`,Iw=j`<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 Lw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function Rw(e,{variant:t=`full`}={}){let n=I.severityMode,r=k(e,n),i=j`<span class="${`badge ${r}`}">${Lw(r)}</span>`,a=Ri(e),o=t===`tab`?null:zi(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${Lw(t.severity)}`).join(`; `)}`:null,c=o?j`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:N;if(!a)return j`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=k(e,`original`),u=Li(e),d=e.correctedSeverityReason,f=(Fi[u]??0)>(Fi[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${Lw(l)}`:`Original severity \u2014 corrected ${p} to ${Lw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${Lw(r)}; ${h?`corrected ${p} from ${Lw(l)}`:`original, corrected to ${Lw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return j`<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 j`<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?j`<span class="badge-pre" aria-hidden="true">was</span>`:N}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${Lw(v)}</span></span>${c}</span>`}var zw=/\[[^\]\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 Bw(e){let t=[],n=0;for(let r of e.matchAll(zw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Qn(r[0]);t.push(e?j`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(j`<strong>${Bw(r[0].slice(2,-2))}</strong>`):i===95?t.push(j`<em>${Bw(r[0].slice(1,-1))}</em>`):i===96?t.push(j`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(j`<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 Vw({lang:e,code:t}){I.codeBlockTick;let n=eC(t,e);return j`<div class="code-block" data-lang="${e||N}">${e?j`<div class="code-block-lang">${e}</div>`:N}<pre><code>${n?A(n):t}</code></pre></div>`}function Hw(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?j`<div class="para">${Bw(e)}</div>`:Bw(e):n.map(e=>typeof e==`string`?j`<div class="para">${Bw(e)}</div>`:Uw(e))}function Uw({level:e,text:t,rule:n}){return n?j`<hr class="md-rule">`:j`<div class="md-heading" role="heading" aria-level="${e}">${Bw(t)}</div>`}var Ww=/^\[([ xX])\][ \t]+/u;function Gw({ordered:e,start:t,items:n},r){let i=n.map(e=>{let t=Ww.exec(e);return t?j`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${qw(e.slice(t[0].length),r)}</li>`:j`<li>${qw(e,r)}</li>`});return e?j`<ol class="md-list" start="${t>1?t:N}">${i}</ol>`:j`<ul class="md-list">${i}</ul>`}function Kw(e,{paragraphs:t=!0}={}){return qw(e,0,{paragraphs:t,alerts:!0})}function qw(e,t,{paragraphs:n=!0,alerts:r=!1}={}){if(!e)return e;let i=e.replaceAll(`\r
|
|
171
|
+
`,`
|
|
172
|
+
`),a=n?i:qn(i),o=n?Un(a):[a],s=o.length>1,c=e=>{let i=Hn(e),a=n&&t<Gn?i.flatMap(e=>typeof e==`string`?Jw(e,r):[e]):i,o=s||a.some(e=>e.quote),c=e=>n?Hw(e,{wrap:o}):Bw(e);return a.length===1&&typeof a[0]==`string`?c(a[0]):a.map(e=>typeof e==`string`?c(e):e.quote?Zw(e,t):Vw(e))};return o.length===1&&typeof o[0]==`string`?c(o[0]):o.map(e=>typeof e==`string`?c(e):Gw(e,t))}function Jw(e,t){let n=Kn(e,{alerts:t});return n.length===1?n:n.flatMap(e=>{if(typeof e!=`string`)return[e];let t=0,n=e.length;for(;t<n&&e[t]===`
|
|
173
|
+
`;)t++;for(;n>t&&e[n-1]===`
|
|
174
|
+
`;)n--;let r=e.slice(t,n);return r.trim()?[r]:[]})}var Yw=e=>j`<svg class="md-alert-icon" viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,Xw={note:[`Note`,Yw(M`<circle cx="8" cy="8" r="6.25"/><path d="M8 7.25v3.5M8 5v.01"/>`)],tip:[`Tip`,Yw(M`<path d="M6 12.5h4M6.75 14.75h2.5M8 1.25a4.25 4.25 0 0 0-2.5 7.69c.3.22.5.57.5.94v.87h4v-.87c0-.37.2-.72.5-.94A4.25 4.25 0 0 0 8 1.25Z"/>`)],important:[`Important`,Yw(M`<path d="M2.75 1.75h10.5a1 1 0 0 1 1 1v7.5a1 1 0 0 1-1 1H8.5l-3 2.75v-2.75H2.75a1 1 0 0 1-1-1v-7.5a1 1 0 0 1 1-1Z"/><path d="M8 4.25v3M8 9.25v.01"/>`)],warning:[`Warning`,Yw(M`<path d="M7.13 2.25a1 1 0 0 1 1.74 0l5.9 10.5a1 1 0 0 1-.87 1.5H2.1a1 1 0 0 1-.87-1.5Z"/><path d="M8 6v3.25M8 11.75v.01"/>`)],caution:[`Caution`,Yw(M`<path d="M5.3 1.5h5.4l3.8 3.8v5.4l-3.8 3.8H5.3l-3.8-3.8V5.3Z"/><path d="M8 4.75v3.75M8 11.25v.01"/>`)]};function Zw({alert:e,body:t},n){let r=qw(t,n+1);if(!e)return j`<blockquote class="md-quote">${r}</blockquote>`;let[i,a]=Xw[e];return j`<div class="md-alert md-alert-${e}"><div class="md-alert-title">${a}${i}</div>${r}</div>`}function Qw(e){let t=new Set;for(let n of e)t.add(oS(n));return[...t]}function $w(e){let t=oS(e);return iS[t]??t}function eT(e,t){I.linksTick,I.findingIndexTick;let n=E(e),r=ni(n)?md(n).filter(e=>!t.has(e)):[];return r.length===0?N:j`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=sr(e),n=$d(e),r=I.currentView===`links`&&I.currentLinks?.managedId?tf([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${S(e)} (${$w(e)})`).join(`, `)}`;return j`<a class="duplicate-ref" href="${L()?$C({id:e},{teamOnly:!0}):`#${Ur({id:e})}`}" data-links-preview="${r?e:N}" data-preview-report="${r?.report??N}" data-preview-row="${r?.index??N}" data-preview-managed-report="${r?.managedReportId??N}" data-tooltip="${`${t}${i}`}">${Qw(n).map(e=>A(nS[e]??nS.default))}<span class="duplicate-ref-id">${or(e)??t}</span></a>`})}</div>`}function tT(e){let t=Pr(e);return t?j`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:N}function nT(e){let t=Dr()?Wi(e.revalidateVerdict,e):``;return t?j`<div class="revalidate-verdict">${Kw(Vn(t))}</div>`:N}function rT(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?j`<div class="section-body">${Kw(Vn(t))}</div>`:N;return!r||!t?j`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:j`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function iT(e,t,n){let r=e?.integrity&&t?.file?WC(e,t.file):null;return r?j`<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>`:j`<span class="evidence-ref">${n}</span>`}function aT(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return N;let r=Wg(e),i=UC(e),a=t===`focus`&&i!==null,o=a?XC(e):null;return j`<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=Xi(t),c=Zn(t,e,r,n),l=yi(t),u=vT(e,`ev${n}`,i,t?.file,t?.line),d=pT(c),f=a&&kC(o,{integrity:i.integrity,file:WC(i,t?.file),range:Jn(t?.line)});return j`<li class="${w({current:f})}">${a?iT(i,t,s):c?j`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:j`<span class="evidence-ref">${s}</span>`} ${u?.mark??N} ${d} ${u?.tip??N} ${l?j`<div class="evidence-note">${Kw(Vn(l))}</div>`:N} ${u?.body??N}</li>`})}</ol></details>`}function oT(e,t){let n=Xi(e);return t?j`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function sT(e,t){if(!t)return N;let n=t.slice(0,7),r=nr(e,t);return r?j`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:j`<span data-tooltip="${t}">${n}</span>`}var cT=j`<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>`,lT=j`<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>`,uT=j`<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>`,dT=j`<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>`,fT=A(da);function pT(e){let t=Bn(e);return t?j`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${fT}</a>`:N}function mT(e,t,n,r){return`${E(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var hT={key:null,host:null};function gT(e,t){if(hT.key===e)return;let n=hT.host,r=e===null?null:t?.getRootNode?.()?.host??null;hT={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function _T(e,t,n){I.codeBlockTick;let{text:r,lines:i,startLine:a}=Xn(e,t);if(i.length===0)return N;let o=n.lastIndexOf(`.`),s=eC(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return j`<div class="code-preview" style="${D({"--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 j`<div class="${w({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?A(s):r}</code></pre></div>`}function vT(e,t,n,r,i){if(I.bundleHashTick,!n||!r)return null;let a=WC(n,r);if(!a)return null;let o=Jn(i),s=mT(e,t,r,o),c=I.codePreviews.has(s);I.focusCodeTick;let l=j`<button type="button" class="${w({"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=>{gT(s,e.currentTarget),KC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{hT.key===s&&gT(null,e.currentTarget)}}" @focus="${e=>{gT(s,e.currentTarget),KC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{hT.key===s&&gT(null,e.currentTarget)}}">${dT}</button>`;if(c){let e=KC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?j`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:_T(e.content,o,a);return{mark:l,tip:N,body:t}}if(hT.key!==s)return{mark:l,tip:N,body:N};let u=KC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?j`<div class="code-preview-tip" role="tooltip">${_T(u.content,o,a)}</div>`:N,body:N}}var yT=j`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${$i}"/></svg>`,bT=j`<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>`,xT=j`<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 ST(e,t=!1){let n=W(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return j`<button type="button" class="${w({"mark-flag":!0,flagged:n})}" data-flag-toggle="${E(e)}" ?disabled="${!Ng(e)}" aria-label="${r}" aria-pressed="${String(n)}">${xT}${t?j`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:N}</button>`}function CT(e){let t=Ki(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function wT(e){let t=Wg(e);return{sourceUrl:zn(e,t),evidence:wn(e,{repoFallback:t}),showRevalidation:Dr()}}function TT(e){return Sw(e,{...wT(e),allSections:!0}).body}function ET(e){if(!I.currentWorkspace)return N;let t=e._reportName;if(!t||L()&&!e._managedReportId)return N;let n=rt[oS(t)]??rt.default,r=j`${A(n)}<span class="report-chip-label report-button-label">${S(t)}</span>`;if(L()){let t=$C(e,{reportId:e._managedReportId});if(t)return j`<a class="report-chip report-button comment-self-ref" href="${Ge(t)}">${r}</a>`}return j`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${E(e)}" data-managed-report="${L()?e._managedReportId:N}">${r}</button>`}function DT(e,t,n,r,i=null){let a=i===`table`?N:ET(r),o=W(r),s=!jg(r),c=!Ng(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=L()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===N,h=L()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=j`<button type="button" ?disabled="${s}" class="${w({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!L()?f:N}" aria-label="${f}">${cT}${m?j`<span class="mark-btn-label">${h}</span>`:N}</button>`,v=j`<button type="button" ?disabled="${c}" class="${w({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:N}" aria-label="${p}">${lT}${m?j`<span class="mark-btn-label">${g}</span>`:N}</button>`,y=ST(r,m),b=j`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${kw}${m?j`<span class="mark-btn-label">Copy</span>`:N}</button>`,x=$C(r)?j`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${uT}${m?j`<span class="mark-btn-label">Link</span>`:N}</button>`:N,ee=L()?Si({repo:{github:r.repo?.github||r._repoFallback}}):Gg(r),te=L()&&I.managedSession&&!I.managedSession.publicShare&&I.currentManagedTeam,ne=ig(r)?null:ir(ee,{title:CT(r),body:te?``:TT(r),labels:VS(r.isSecurity===!0,I.githubNewIssueLabels)}),re=j`${bT}${m?j`<span class="mark-btn-label">Issue</span>`:N}`,ie=ne?te?j`<button type="button" class="mark-issue" data-issue-form="${ne}" data-tooltip="${m?N:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${re}</button>`:j`<a class="mark-issue" href="${ne}" target="_blank" rel="noopener" data-tooltip="${m?N:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${re}</a>`:N,ae=j`<button type="button" class="mark-claude" data-tooltip="${m?N:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${yT}${m?j`<span class="mark-btn-label">Claude</span>`:N}</button>`,oe=j`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,se=Kg(e)!==e,ce=e.linkedTabs?`change triage state for linked findings`:se?`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 j`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${x}${ie}${ae}</span>${oe}${kT(e,ce,i,n,r)}</div></div>`}function OT(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 kT(e,t,n,r,i){let a=U(e),o=!Ng(i)||Zg(e,r).length===0,s=o?null:Qg(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=!!I.shownTriage,d=u?c[I.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==I.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-${I.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return j`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?j`<span class="mark-triage-label">${d}</span>`:N} <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="${OT}">${p.map(e=>j`<button type="button" class="${w({"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 AT(e,t){let n=!!e?.comment,r=!!(e?.fix||ag(t)),i=e?.flagged===!0;return!n&&!r&&!i?N:j`<span class="tab-marks">${n?j`<span class="has-comment" role="img" aria-label="Has a comment">${cT}</span>`:N}${r?j`<span class="has-fix" role="img" aria-label="Has a fix link">${lT}</span>`:N}${i?j`<span class="flagged" role="img" aria-label="Flagged">${xT}</span>`:N}</span>`}function jT(e,t,n){let{app:r,source:i}=Bg(e),a=e=>MT(e,E(e)===t,n);return j`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?j`<span class="tab-level-separator" aria-hidden="true">•</span>`:N} ${i.map(a)}</div>`}function MT(e,t,n){let r=E(e),i=W(e),a=i?.color,o=Fg(e,i),s=[`tab`,`tab-severity-${k(e,I.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=aS(e),l=c?rt[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?j`<span class="tab-analyzer" role="img" aria-label="${iS[c]}">${A(l)}</span>`:u?j`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:N;return j`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:N}"><span class="tab-label"><span class="tab-severity">${Rw(e,{variant:`tab`})}</span><span class="tab-indicators">${AT(i,e)}</span></span>${d}</button>`}function NT(e){if(I.viewMode===`table`||I.viewMode===`focus`){let t=e.confidence*10;return j`<div class="${`conf-ring ${k(e,I.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="${D({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return j`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var PT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function FT(e){if(lf(e))return N;let t=e?.name;if(typeof t!=`string`||!PT.test(t))return N;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 j`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function IT(e,t,n,r,i,a){let o=E(e),s=W(e),c=s?.comment??``,l=s?.fix??``,u=ag(e),d=ig(e),f=zn(e,Wg(e)),p=oT(e,f),m=Gi(e),h=UC(e),g=vT(e,`loc`,h,e.file,e.line),_=pT(f),v=j`<span class="line-num">${m?j`${p}, ${m}`:p}${g?.mark??N}${_}</span>`,y=In(e),b=String(e.discoveredIn??``).trim(),x=b===String(e.file??``).trim()?``:b,ee=i===`focus`?FT(e.package?.npm):N,te=N;if(i!==`focus`&&L()&&g)te=j`<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`&&!L()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){I.bundleHashTick;let t=new Set(e._bundleHashes),n=ap(e.fileHash).find(({integrity:e})=>t.has(e));n&&(te=j`<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:ne,body:re}=qi(e),ie=Yi(re),ae=ie.findIndex(e=>e.label!==null),oe=ae===-1?ie:ie.slice(0,ae),se=ae===-1?[]:ie.slice(ae);return j`<div class="${w({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?j`<div class="print-case-label">${n+1} of ${r}</div>`:N}<div class="finding-left">${s?.color||s?.flagged===!0?j`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?j`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:N} ${s?.flagged===!0?j`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:N}</div>`:N} ${Rw(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?N:NT(e)} ${tT(e)} ${te}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??N} ${ee} ${x?j`<span class="line-num discovered-in">(found analyzing ${x})</span>`:N} ${y?j`<span class="run-meta">${y}</span>`:N}</div>${g?.body??N} ${ne?j`<div class="desc-title">${Bw(ne)}</div>`:N} ${oe.map(e=>j`<div class="desc">${Kw(Vn(e.body))}</div>`)} ${aT(e,i)} ${se.map(e=>e.label===null?j`<div class="desc">${Kw(Vn(e.body))}</div>`:rT(e.label,e.body))} ${e.impact?rT(`Impact`,Wi(e.impact,e)):N} ${e.reproduction?rT(`Reproduction`,Wi(e.reproduction,e),`section`,{collapsible:!0}):N} ${e.recommendation?rT(`Recommendation`,Wi(e.recommendation,e),`recommendation`,{collapsible:!0}):N} ${e.confidenceReason?j`<div class="conf-reason">${Kw(Wi(e.confidenceReason,e))}</div>`:N} ${nT(e)} ${e.revalidateRecommendation&&Dr()?rT(`Revalidation recommendation`,Wi(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):N} ${Ri(e)&&e.correctedSeverityReason?j`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${Kw(e.correctedSeverityReason)}</div>`:N} ${eT(e,a)} ${L()?cw(e).map(e=>j`<div class="comment-block">${Dw(e,Ow(e.body))}</div>`):c?j`<div class="comment-block"><span class="comment-label">Comment:</span> ${Ow(c)}</div>`:N} ${d?j`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:N} ${d?.duplicateOf?j`<div class="fix-block"><span class="fix-label">Duplicate of:</span><managed-fix-link .url="${d.duplicateOf}"></managed-fix-link></div>`:N} ${l?j`<div class="fix-block"><span class="fix-label">Fix:</span> ${bi(l)?j`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:N} ${u&&u!==l?j`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:N}</div></div>`}function LT(e){let t=[`finding`,...zT(e)];return Rg(e).length>1&&t.push(`multi-case`),t}function RT(e,t={}){let{context:n=null}=t,r=qg(e),i=Rg(e),a=new Set(i.map(E)),o=Hg(e),s=E(o),c=o.commitHash?j`<div class="commit-ref">introduced in ${sT(o.repo?.github,o.commitHash)}</div>`:N,l=I.currentWorkspace&&c!==N;return j`${i.map((e,t)=>IT(e,E(e)===s,t,i.length,n,a))} ${l?j`<div class="marks-commit-row">${c}</div>`:N}<div class="marks"><div class="marks-left">${l?N:c} ${i.length>1?jT(i,s,r):N}</div>${DT(e,i,r,o,n)}</div>`}function zT(e){let t=qg(e),n=e.some(e=>e.critical||k(e,I.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),I.shownTriage&&r.push(`triage-${I.shownTriage}`),r}function BT(e){let t=qg(e),n=Rg(e),r=Hg(e),i=E(r),a=r,o=Ki(a),s=In(a),c=Gi(a),l=c?`, ${c}`:``,u=zn(a,Wg(a));return j`<div class="row-score">${Rw(a,{variant:`compact`})} ${a.confidence===void 0?N:j`<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?j`<span class="row-type">${s}</span>`:N}</div><div class="meta-row"><span class="row-loc">${oT(a,u)}${l}</span> ${pT(u)}<div class="marks">${DT(e,n,t,r,`table`)}</div></div>${n.length>1?j`<div class="tabs-row">${jT(n,i,t)}</div>`:N}</div>`}function VT(e){if(!e)return N;let t=ap(e)[0];return t?j`<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>`:N}function HT(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=WT(e),a=I.filesSearch.trim().toLowerCase(),o=a?n.filter((e,t)=>r[t].includes(a)):n,s=t=>e[t]?j`<a href="${`#${_r(t)}`}"><span class="name">${t}</span></a>`:j`<span class="name">${t}</span>`,c=e=>{let n=t.get(e);if(!n)return null;let r=Ii.filter(e=>(n[e]??0)>0);return r.length===0?null:j`<span class="tree-count-chips">${r.map(e=>j`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},l=e=>{let n=t.get(e);return n?Ii.reduce((e,t)=>e+(n[t]??0),0):0},u=j`<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(I.filesViewMode===`table`){let t=I.filesSelectedFile&&Object.hasOwn(e,I.filesSelectedFile)&&(!a||I.filesSelectedFile.toLowerCase().includes(a))?I.filesSelectedFile:null;return j`<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?j`<div class="tree-table-empty">No files match the search.</div>`:N} ${o.map(n=>{let r=l(n),i=n===t,a=Mn(e[n].size);return j`<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)??j`<span class="tree-table-clean-marker">—</span>`} ${a?j`<span class="tree-table-size">${a}</span>`:N}</div>`})}</div>${t?j`<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">${KT(e[t],t,i.get(t)??[],s)}</div></aside>`:N}</div></div>`}return j`<div class="tree-view">${u} ${o.length===0?j`<div class="tree-table-empty">No files match the search.</div>`:N} ${o.map(t=>{let n=e[t],r=i.get(t)??[],a=Mn(n.size);return j`<section class="tree-file" id="${_r(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${c(t)} ${a?j`<span class="tree-file-size">${a}</span>`:N} ${VT(n.fileHash)}</div>${GT(n,r,s)}</section>`})}</div>`}var UT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function WT(e){if(UT.treeData===e)return UT;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 UT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},UT}function GT(e,t,n){return j`${e.fileHash||e.treeHash?j`<div class="tree-hashes hashes">${e.fileHash?j`<div class="tree-hash">file: ${e.fileHash}</div>`:N} ${e.treeHash?j`<div class="tree-hash">tree: ${e.treeHash}</div>`:N}</div>`:N} ${e.imports?.length>0?j`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>j`<li>${n(e)}</li>`)}</ul></div>`:N} ${t.length>0?j`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>j`<li>${n(e)}</li>`)}</ul></div>`:N} ${e.exports?.length>0?j`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>j`<li><span class="name">${e}</span></li>`)}</ul></div>`:N}`}function KT(e,t,n,r){let i=Mn(e.size);return j`<div class="tree-detail-name"><span class="name">${t}</span> ${i?j`<span class="tree-detail-size">${i}</span>`:N} ${VT(e.fileHash)}</div>${GT(e,n,r)}`}var qT=null,JT=null;function YT(){return JT}function XT(){return qT||(qT=(async()=>{try{let e=await import(`./graph.js`);return JT=e,e}catch(e){throw qT=null,e}})(),qT)}async function ZT(e,t,n,r,i){try{let a=await XT(),o=a.buildGraphFromPrep(t);P(j`<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 QT=null,$T=null;function eE(){$T=null}async function tE(){let e=await $T?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function nE(){return QT||(QT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw QT=null,e}})(),QT)}function rE(e){let t=new Map([...Lt(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 iE(e,t){let n=t?.integrity??``;(!$T||$T.integrity!==n||(t?.managedId||$T.managedId)&&$T.details!==t)&&($T={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:aE(t,n)});try{let t=await $T.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return $T=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function aE(e,t){return(await nE()).createTerminalElement(rE(e),t)}var oE=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},sE={},cE=ma(class extends ha{constructor(){super(...arguments),this.ot=sE}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 va}else if(this.ot===t)return va;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),lE=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),lE(e,t);return!0},uE=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},dE=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),mE(t)}};function fE(e){this._$AN===void 0?this._$AM=e:(uE(this),this._$AM=e,dE(this))}function pE(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++)lE(r[e],!1),uE(r[e]);else r!=null&&(lE(r,!1),uE(r))}else lE(this,e)}}var mE=e=>{e.type==pa.CHILD&&(e._$AP??=pE,e._$AQ??=fE)},hE=class extends ha{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),dE(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(lE(this,e),uE(this))}setValue(e){if(ei(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(){}},gE=new WeakMap,_E=ma(class extends hE{render(e){return N}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)),N}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=gE.get(t);n===void 0&&(n=new WeakMap,gE.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`?gE.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),vE=2**20,yE=Math.floor(2**25/15);function bE(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+vE,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function xE(e,t=!1){return e.length<=vE&&!wC(e)?e:EC(e,t).flatMap(e=>typeof e==`string`?bE(e):[e])}function SE(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&&Ot(`github`,n)?n:null}function CE(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 wE=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function TE(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Ot(`directory`,n)?{directory:n}:{}}function EE(e){let t=e?.repository,n=SE(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=CE(e.homepage,n),r!==void 0&&wE(r)&&(r=void 0)),{github:n,...TE(r)}}function DE(e,n){let r=e?.[n];if(typeof r!=`string`)return null;try{return n.endsWith(`.toml`)?t(r):JSON.parse(r.replace(/^\uFEFF/u,``))}catch{return null}}function OE(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)?Si({repo:{github:n}}):null}function kE(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?DE(t?.files,`composer.json`):r===`cargo`?DE(t?.files,`Cargo.toml`)?.package:DE(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=Si(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?EE(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>OE(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?Yr(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 AE=new WeakMap;function jE(e,t){let n=AE.get(e);if(n||AE.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+=xa(n),a+=Kt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var ME=new Set([`cargo`,`composer`,`soldeer`]);function NE(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 PE(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])}IE(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=kE(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function FE(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=NE(n,r,a);if(!ME.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 IE(e,t,n){for(let r of e.dirs.values())IE(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=NE(e.sourcePath,r,n);if(ME.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 ME.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=RE(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}}let a=LE(e);return a&&(e.dependencyRoot=a),e}function LE(e){if(/(?:^|\/)node_modules$/u.test(e.path))return`npm`;if(!/(?:^|\/)(?:vendor|dependencies)$/u.test(e.path))return null;let t=new Set([...e.dirs.values()].map(e=>e.package?.ecosystem).filter(Boolean));return t.size===1?[...t][0]:null}function RE(e,t){let n=t.package;return n?`${n.name}${n.version?`${ME.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function zE(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}/${RE(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 BE(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 VE(e,t){let n=1/0,r=null,i=1/0;for(let a of e){let e=t.indexOf(a.slice(a.lastIndexOf(`/`)+1));if(e===-1||/(?:^|\/)node_modules\//u.test(a))continue;let o=a.split(`/`).length;(o<n||o===n&&(e<i||e===i&&a.localeCompare(r)<0))&&([n,r,i]=[o,a,e])}return r}var HE=40,UE=/^(?:node_modules|dependencies|vendor)$/u,WE=new WeakMap;function GE(e,t=HE){let n=WE.get(e);if(n?.rows===t)return n.open;let r=new Set,i=e=>e.dirs.size+e.files.size,a=(e,t,n)=>[...e.dirs].map(([e,r])=>({child:r,depth:t,deps:n||UE.test(e),name:e})),o=a(e,0,!1),s=i(e);for(;o.length>0;){let e=o.map(e=>({...e,inner:BE(e.name,e.child,e.depth).node})),n=e=>e.reduce((e,{inner:t})=>e+i(t),0),c=e.filter(e=>!e.deps),l=s+n(e)<=t?e:c.length<e.length&&s+n(c)<=t?c:null;if(!l)break;s+=n(l);for(let{child:e}of l)r.add(e.path);o=l.flatMap(({inner:e,depth:t,deps:n})=>a(e,t+1,n))}return WE.set(e,{rows:t,open:r}),r}function KE(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 qE([e,t],[n,r]){return RE(e,t).localeCompare(RE(n,r))||t.path.localeCompare(r.path)}function JE(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(qE))JE(BE(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 YE(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=Yr(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 XE(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=Yr(r.gitHead);return r.github?.github&&e?YE(r.github.github,Ci({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return YE(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:NE(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0),d=u!==void 0&&Zr(t,s)?void 0:u;if(d===void 0){let e=Si(a),r=Si({repo:{github:n?.github}}),i=e??r;return i?YE(i,typeof a.repo?.directory==`string`?Ci(a.repo):r?.toLowerCase()===i.toLowerCase()?Ci({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let f=kE({name:c.name,ecosystem:d},c,0);return f.github?YE(f.github,f.directory??``,l,f.commit,f):null}function ZE(e,t=null){return j`<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??N}" data-tooltip-commit-info="${et(t,e.commit,e.github)??N}" data-tooltip-package="${e.package?.name??N}" data-tooltip-ecosystem="${e.package?.ecosystem??N}" data-tooltip-version="${e.package?.version??N}">${A(da)}${e.package?j`<span hidden data-tooltip-package-icon>${Je(e.package.ecosystem)}</span>`:N}</a>`}var QE=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,$E=new Map,eD=new WeakMap,tD=null;function nD(e){if(!e){queueMicrotask(rD);return}if(rD(),$E.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&nD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{eD.get(e)?.width!==iD(e)&&aD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>aD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),$E.set(e,()=>{n.disconnect(),r.disconnect()})}function rD(){for(let[e,t]of $E)e.isConnected||(t(),$E.delete(e))}function iD(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 aD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=iD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=eD.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}=oD(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`);eD.set(e,{rows:l,width:r});let u=e.closest(QE)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function oD(e,t,n,r){let i=getComputedStyle(e);tD??=document.createElement(`canvas`).getContext(`2d`),tD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*tD.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(`
|
|
175
|
+
`,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 sD(e){let t=e.closest(QE)?.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 cD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),lD=4194304;function uD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return cD.has(t)?t:null}function dD(e,t,n=()=>mt(e,t)){return uD(e)!==null&&xa(t)<=lD&&n().category===`minified`}var fD=e=>e.bundle??e.json??e,pD=/\\(?: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,mD={b:`\b`,f:`\f`,n:`
|
|
176
|
+
`,r:`\r`,t:` `,v:`\v`},hD=e=>e.replaceAll(pD,(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)?``:mD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),gD={i:`ı`,k:`K`,s:`ſ`},_D=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...gD[e.toLowerCase()]??``]);function vD(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 yD(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[hD(t),t]:[hD(t)]:e==="`"&&t.includes("${")?[]:[t]}var bD=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,xD=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,SD=/[ \t]*[,)]/uy,CD=(e,t,n)=>(e.lastIndex=n,e.test(t)),wD=(e,t,n,r)=>t!=="`"&&CD(bD,e,n)||CD(xD,e,n)&&CD(SD,e,r),TD=/^\.\.?(?:\/|$)/u,ED=/\.(?:json|node)$/u,DD=[`.js`,`.json`,`.node`],OD=/(?:^|\/)\.{0,2}$/u,kD=/[^/.][^/]*\.[^/]*$/u;function AD(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 jD=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||zD(t[n])===e))?t.slice(e.length).join(`/`):null,MD=(e,t,n)=>jD(e,AD([...e,...t===``?[]:t.split(`/`)],n)),ND=e=>new Set([e,e.replaceAll(`\\`,`/`)]),PD=(e,t,n)=>[...ND(n)].filter(e=>TD.test(e)).map(n=>MD(e,t,n)),FD=/[%?#\\\t\n\r]|[\0- ]$/u;function ID(e,t,n){if(!TD.test(n))return null;if(!FD.test(n))return MD(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:jD(e,AD([],decodeURIComponent(i)))}catch{return null}}var LD=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,RD=e=>typeof e==`string`&&LD.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(zD):[],zD=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function BD(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,zD(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(zD(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:zD}}}function VD(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 HD(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>VD(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function UD(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=HD(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=HD(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 WD=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function GD(e,t,n,r,i){let a=ID(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=zD(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=WD(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:WD(`${o[0]}${e}x`).length-1,before:e,length:WD(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(kD.test(e)||lt.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(`/`))&&WD(c)===t})).map(([e])=>e)}var KD=65536,qD=Symbol(`every file`),JD=(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>KD?qD:r.replaceAll(`*`,a)}]}),YD=(e,{exports:t,hasExports:n},r)=>n?JD(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===qD?qD:ID(e,``,t)):[ID(e,``,r)];function XD({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 ZD=(e,t)=>XD(e,t===``?`index`:`${t}/index`,DD);function QD(e,t,n,r,i){if(r===null)return[];let a=i?null:XD(t,r,[``,...DD]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>UD(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...ND(e)].map(e=>MD(n,r,e))).filter(e=>e!==null).map(e=>XD(t,e,[``,...DD])??ZD(t,e)).filter(e=>e!==null);return o.length>0?o:[ZD(t,r)].filter(e=>e!==null)}var $D=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>UD(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),eO=64,tO=new WeakMap;function nO(e){let t=tO.get(fD(e));if(t)return t;t=new Set;let n=Lt(e),{installed:r,cased:i,folding:a}=BD(n),o=[],s=UD(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=RD(s.name),l=(e,t)=>!(t===`require`?ED:kD).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${zD(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||it(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=QD(n,a,c,e,t);if(r.length>0)for(let a of[...r,...QD(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>UD(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>eO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,zD(e)]):[];for(let[t,n,r]of p)for(let i of GD(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)it(e,t)&&o.push(e);let m=$D(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&zD(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=vD([...c.length>0?_D(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>YD(c,s,e),y=!1,b=(e,t)=>{if(e!==qD)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},x=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of JD(m,e)){let e=r===qD?[qD]:r.startsWith(`./`)?[ID(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)}}},ee=(e,t,n)=>{if(e.startsWith(`#`))return x(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!TD.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 PD(c,r,i))f(e,OD.test(i));d(ID(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 yD(s,o))ee(e,i,()=>wD(r,s,a,a+o.length+2))}}return tO.set(fD(e),t),t}var rO=new WeakMap;function iO(e,t){let n=rO.get(fD(e));if(n||rO.set(fD(e),n=new Map),!n.has(t)){let r=Lt(e).get(t);n.set(t,oe(t,typeof r==`string`?r:null,Rt(e).get(t),nO(e).has(t)))}return n.get(t)}var aO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,oO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:aO(n),exfiltration:aO(r),hosts:aO(i),readability:t&&{...t,controls:aO(t.controls,Number)}});function sO(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:aO(e.found),...e.added?{added:aO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var cO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(sO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,oO(t)])),dependencies:e.dependencies,score:e.score??null}),lO=e=>e?.npm?e.risk?.()?.files??null:null,uO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function dO(e,t){return e?.npm?lO(e)?.get(t)??uO:iO(e,t)}var fO=({names:e,loop:t})=>[e>=ut&&`${e.toLocaleString(`en`)}${e===ft?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function pO(e,t,n){return n===Lt(e).get(t)&&typeof n==`string`?dO(e,t).readability:hO(e,t,n)}var mO=new WeakMap;function hO(e,t,n){let r=mO.get(e);r||mO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=mt(t,n);return r.set(t,{text:n,read:a}),a}function gO(e,t){let n=xt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${bt.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var _O=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${st} characters, the longest ${t.toLocaleString(`en`)}`;function vO(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>_O(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, ${Kr(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 N}}function yO(e,t=!1){if(!e)return N;let n=gt(e),{tag:r,short:i,mark:a}=bt.get(n);return j`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${vO({...e,category:n})}">${t?i??r:r}</span>`}function bO(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||gt(e)===t?N:yO({...e,category:t})}function xO(e,t=null){let n=e?vt(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(yt(e,n)))):[];if(n.length===0)return N;let r=t=>t===`long`?`${_O(e)}${e.category===`long`?`, among readable ones`:``}`:gO(e.controls,t);return n.map(t=>j`<span class="${`npm-flag-tag is-${yt(e,t)}`}" data-tooltip="${r(t)}">${bt.get(t).tag}</span>`)}function SO(e){if(!e)return N;let t=gt(e);return t===`ascii`||t===`map`?xO(e):CO(e)}var CO=e=>e?j`${xO(e)}${yO(e)}`:N;function wO(e,t,n,r=!0){let{stamps:i,readability:a}=dO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?N:j`${o?j`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Kr(n)}, 256 KiB or more`}">Large</span>`:N}${s?j`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${fO(s)}`}">Obfuscated</span>`:N}`}var TO=j`<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>`,EO=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`,DO=8,OO=4,kO=2,AO=30,jO=2,MO=`The server's copy is of another file than the one open.`,NO=`The server didn't pretty-print this file.`,PO=e=>!(e>=400&&e<500&&e!==429),FO=5e3,IO=3e5,LO=new Map;function RO(e,t,n,r){if(!t?.retry){LO.delete(e);return}let i=LO.get(e)??0;LO.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(FO*2**i,IO))?.unref?.()}var zO=new Map,BO=0,VO=()=>BO,HO=new Map,UO=(e,t)=>`${e.integrity}\0${t}`,WO=new Map,GO=new Map,KO=new WeakMap;function qO(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=KO.get(e);return i||KO.set(e,i=new Map),i.has(n)||i.set(n,dD(n,r,()=>hO(e,n,r))),i.get(n)}var JO=!1,YO=new Set,XO=new Set;function ZO(e,t){zO.delete(e),zO.set(e,t),JO||(JO=!0,XO=YO,YO=new Set,setTimeout(()=>{JO=!1})),YO.add(e),QO()}function QO(){for(let[e,t]of zO){if(zO.size<=DO)break;YO.has(e)||XO.has(e)||t.status===`loading`||(zO.delete(e),HO.delete(e))}}var $O=0,ek=[];async function tk(e){$O<jO?$O++:await new Promise(e=>{ek.push(e)});try{return await e()}finally{let e=ek.shift();e?e():$O--}}async function nk(e,t,n,r,i,a){let o;try{let e=a??await Mi(i),{text:t,source:s}=await tk(()=>n.npm?tx(n.npm.name,n.npm.version,r,e):$b(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Mi(t)}:{status:`error`,message:MO,retry:!0}}catch(n){if(n?.name===`AbortError`){zO.get(e)===t&&(zO.delete(e),HO.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:PO(n?.status)}}if(zO.get(e)!==t)return;zO.set(e,o),BO++;let s=HO.get(e),c=o.status===`error`&&o.retry;c||HO.delete(e),RO(`file ${e}`,c?o:null,()=>zO.get(e)===o&&zO.delete(e),()=>HO.get(e)),s?.(),QO()}function rk(){for(let[e,t]of WO){if(WO.size<=OO)break;t.rest&&WO.delete(e)}}function ik(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function ak(e,t,n,{npm:r}){let i=Lt(n),a;try{await ex(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 Mi(s)?{status:`ready`,text:r,hash:await Mi(r)}:typeof r==`string`?{status:`error`,message:MO,retry:!0}:{status:`error`,message:o,retry:PO(a)};t.copies.set(e,c),BO++,ik(t,e)}),a={status:`error`,message:NO,retry:!1}}catch(n){if(n?.name===`AbortError`){WO.get(e)===t&&WO.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:PO(n?.status)}}t.rest=a,BO++;for(let e of[...t.notifiers.keys()])ik(t,e);rk()}function ok(e,t,n,r,i){let a=e.integrity,o=WO.get(a);return WO.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},ak(a,o,e,t)),WO.set(a,o),rk(),r===Lt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:MO,retry:!1}}function sk(e,t,n,r,i){return I.bundleSourcePretty?t.npm?ok(e,t,n,r,i):ck(e,n,r,i,t):null}function ck(e,t,n,r,i=e){let a=UO(e,t),o=zO.get(a),s=o??{status:`loading`};return ZO(a,s),(s.status===`loading`||s.retry)&&HO.set(a,r),o||nk(a,s,i,t,n,e.fileHashes?.get(t)),s}var lk=new Set;function uk(e){e&&(lk.size===0&&setTimeout(()=>{let e=[...lk];lk.clear();for(let t of e)t()},AO),lk.add(e))}function dk(){for(let[e,t]of GO){if(GO.size<=kO)break;t.ended&&GO.delete(e)}}async function fk(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`&&PO(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Lt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Mi(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Mi(a)}:typeof a==`string`?{status:`error`,message:MO,retry:!0}:{status:`error`,message:s,retry:PO(o)}),BO++,uk(t.notify)};await(n.npm?rx(n.npm.name,n.npm.version,r.npm.version,e):nx(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){GO.get(e)===t&&GO.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:PO(n?.status)}}Object.assign(t,{ended:!0,rest:a}),BO++,RO(`comparison ${e}`,a,()=>GO.get(e)===t&&GO.delete(e),()=>t.notify),uk(t.notify),dk()}function pk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=GO.get(o);GO.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},fk(o,s,e,t)),GO.set(o,s),dk();let c=n===`base`?e:t;return i===Lt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?ck(c,r,i,a):{status:`loading`})):{status:`error`,message:MO,retry:!1}}function mk(){if(I.bundleSourcePretty=!I.bundleSourcePretty,!I.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of zO)e(n)&&zO.delete(t);for(let[t,n]of WO)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&WO.delete(t);for(let[t,n]of GO)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&GO.delete(t)}function hk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function gk(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 _k(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}var vk=new Map([[`package-lock.json`,`npm`],[`npm-shrinkwrap.json`,`npm`],[`pnpm-lock.yaml`,`pnpm`],[`yarn.lock`,`yarn`],[`Gemfile.lock`,`bundler`],[`gems.locked`,`bundler`],[`Cargo.lock`,`cargo`],[`Podfile.lock`,`cocoapods`],[`composer.lock`,`composer`],[`poetry.lock`,`poetry`],[`uv.lock`,`uv`],[`pylock.toml`,`pylock`],[`soldeer.lock`,`soldeer`],[`foundry.lock`,`foundry`]]);function yk(e){let t=e.slice(e.lastIndexOf(`/`)+1);return vk.has(t)?vk.get(t):/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:/^pylock\.[^.]+\.toml$/u.test(t)?`pylock`:null}var bk=new Map([[`yarn`,`package.json`],[`composer`,`composer.json`]]),xk=e=>bk.get(e)??null,Sk=4,Ck=new Map;function wk(e,t,n,r,i){if(!I.bundleSourceLockfile)return null;let a=yk(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=Ck.get(o)??{status:`loading`};Ck.delete(o),Ck.set(o,s);for(let e of Ck.keys())Ck.size>Sk&&Ck.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=xk(a),c=e===null?void 0:r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}${e}`);import(`./chunk-WREU7JAG.js`).then(({readLockfile:e})=>e(a,n,{manifest:c})).then(e=>Object.assign(s,{status:`ready`,lockfile:{id:o,...e}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function Tk(){I.bundleSourceLockfile=!I.bundleSourceLockfile;for(let[e,t]of Ck)t.status===`error`&&Ck.delete(e)}var Ek=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,Dk=e=>`link:${e}`,Ok=e=>e===`.`?`__own__`:e;function kk(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[Dk(e),Ok(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[Dk(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])=>Ok(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:[]},flowEntries:t.map(([e])=>({file:Dk(e)})),ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>Dk(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var Ak=[`graph`,`matrix`,`dependencies`,`package-flow`],jk=class extends ya{static properties={lockfile:{attribute:!1}};static styles=_a`: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=kk(this.lockfile),this._prep||this._detach(),T.selected=null,T.solo=null,T.focusedPkg=null)}render(){return this.lockfile?this._prep?j`<div class="slot"></div>`:j`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&T.graphState===this._graphState&&ar(),this._graphState=null,this._bundleLayout!==null&&(T.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=T.bundleLayout,T.bundleLayout=T.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await XT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:Ak,hideAllFiles:!0};await ZT(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=T.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){YT()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){YT()?.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)Ak.includes(n)&&n!==T.bundleLayout&&(T.lockfileLayout=T.bundleLayout=n,T.selected=null,T.solo=null,T.layoutCache=null,ar(),this._attach());else if(r!==void 0)T.solo=T.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),T.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){T.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),T.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`&&(T.pathFilter=t.value,T.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,jk);function Mk({title:e,count:t,extra:n=N,tools:r=N,body:i,list:a=!1,className:o=``}){return j`<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 Nk=1024,Pk=1024*Nk,Fk=[`tiny`,`small`,`medium`,`large`,`gigantic`],Ik={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*Nk,128*Nk,Pk,8*Pk]};function Lk(e,t){let n=Ik[e].findIndex(e=>t<e);return Fk[n===-1?Fk.length-1:n]}function Rk(e,t,n){return j`<span class="${`npm-sized is-${Lk(e,t)}`}">${n}</span>`}var zk=[`preinstall`,`install`,`postinstall`];function Bk(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),zk.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function Vk(e,t=[]){return Bk(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function Hk(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return Bk(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var Uk=12096e5,Wk=(e,{minimumReleaseAge:t=Uk,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,Gk=72,Kk={top:6,right:0,bottom:18,left:40},qk=24,Jk=4,Yk=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),Xk=new Intl.NumberFormat(`en`),Zk=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,Qk=Zk({month:`short`,day:`numeric`}),$k=Zk({month:`short`,day:`numeric`,year:`numeric`}),eA=Zk({month:`short`,year:`numeric`}),tA=Zk({month:`long`,year:`numeric`}),nA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,rA=(e,t)=>{let n=t&&he(e);return j`<dd class="${`npm-downloads-tier ${n?`is-mid`:pe(e)}`}" data-tooltip="${n?t:N}">${nA(e)}</dd>`},iA={week:{label:`Weekly`,of:e=>ce(e).slice(-52),name:e=>`${Qk(e.from)} \u2013 ${$k(e.to)}`},month:{label:`Monthly`,of:le,name:e=>tA(e.from)}},aA=(e,t)=>`${Xk.format(e)} downloads, ${t}`;function oA(e){let t=le(e).at(-1);return t?sA(t):null}var sA=({total:e,from:t})=>({total:e,month:tA(t)});function cA(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 lA=class extends ya{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=iA[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(iA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&aA(i.total,r(i))}]})),this._tier=de(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:aA(t,`${$k(se(n.start,n.days.length-e.length))} \u2013 ${$k(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<=Kk.left+Kk.right)return null;let r=n-Kk.left-Kk.right,i=Gk-Kk.bottom,a=cA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-Kk.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>Kk.left+(e+.5)*l:e=>Kk.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-Kk.left)/l))),p=eA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(qk,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(Jk,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:eA(m.to),...h,ticks:[[0,Yk.format(0)],[a,Yk.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${eA(m.to)}; the latest ${this._unit}: ${aA(m.total,e.name(m))}.`}}_stat(e,t,n){return j`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||N}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return j`${e?Yk.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return j`<div class="npm-stat"><dt class="sr-only">${iA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||N}">${Object.keys(iA).map(e=>j`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?N:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return j`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(iA).map(([e,{label:t}])=>j`<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?j`<strong>${Xk.format(e.total)}</strong> <span>${iA[this._unit].name(e)}</span>`:N}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return j`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?j`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${rA(this._tier,this.known)}</div>`:N}</dl>${e?this._controls(t):N}</div>${e?this._plot(t):N}`}_plot(e){let t=this._shape;if(!t)return j`<div class="npm-downloads-plot" style="${D({height:`${Gk}px`})}"></div>`;let n=this._width;return j`<div class="npm-downloads-plot" style="${D({height:`${Gk}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="${Gk}" viewBox="0 0 ${n} ${Gk}" aria-hidden="true">${t.ticks.map(([e,r])=>M`<line class="npm-downloads-grid" x1=${Kk.left} x2=${n-Kk.right} y1=${t.y(e)} y2=${t.y(e)}></line>
|
|
177
|
+
<text class="npm-downloads-tick" x=${Kk.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>M`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):M`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${Kk.left}" y="${Gk-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-Kk.right}" y="${Gk-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?M`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${Kk.top} y2=${t.bottom}></line>
|
|
178
|
+
<circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:N}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,lA);function uA(e,t){let n=dA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var dA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),fA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function pA(e,t){let n=t.filter(e=>fA.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 mA=e=>e?.replace(/\.git$/u,``),hA=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&&mA(r)?[n,mA(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&&mA(r)?[n,mA(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))&&mA(n.slice(r+1))?[n.slice(0,r),mA(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,mA(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&&mA(r)?[n,mA(r),t.slice(1)]:null}}]]),gA=new Map([...hA.values()].map(e=>[e.domain,e])),_A=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...hA.keys()].map(e=>`${e}:`)]);function vA(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 yA=e=>{try{return new URL(e)}catch{return null}};function bA(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=_A.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(yA(r))return yA(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}`),yA(a)}function xA(e){if(!e)return null;let t=bA(vA(e)?`github:${e}`:e);if(!t)return null;let n=hA.get(t.protocol.slice(0,-1)),r=n??gA.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 SA(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=xA(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=yA(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 CA(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var wA=e=>SA(e)===`registry`,TA=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function EA(e){let t=[];for(let[n,r]of TA)for(let[i,a]of Object.entries(e?.[n]??{})){let e=CA(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ri(e)&&wA(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function DA(e,t){let n=e=>new Map(EA(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 OA=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>j`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function kA(e,t=null,n=void 0){let r=ZA(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Xb(e.name,e.version,t,{signal:n}),cO);return r.status===`ready`?r:null}function AA(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}=qr(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 jA=e=>e.displayLabel??e.label,MA=class extends _e{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[_e.styles,_a`.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=AA(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(jA)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return jA(e)}optionIcon(e){return e.format?j`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?A(ra):e.format===`sourcemap`?A(na):j`<img src="./stasis.svg" alt="">`}</span>`:N}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`,MA);var NA=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function PA(e){let t=String(e??``).trim(),n=NA.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!ri(r)||i!==null&&!ii(i)?null:{name:r,spec:i}}var FA=(e,t=null)=>t==null?e:`${e}@${t}`;function IA(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=uA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function LA(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 RA(e,t){let n=It(e,t.files);return{...n,npm:e.npm,npmEntries:IA(e.npm.manifest,n.json.sources),risk:()=>kA(e.npm)}}function zA(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:fi.has(t)?t:`overview`,...n}:null}var BA=3,VA=new Map,HA=new Map,UA=1e4,WA=3e5,GA=null;function KA(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==GA&&(VA.clear(),HA.clear(),GA=e),VA}function qA(e,t){let n=KA();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>BA;)n.delete(n.keys().next().value)}async function JA(e,t,n){let r=KA().get(`${e}@${t}`);if(r)return qA(r.entry,r.details),r;let i=await Tb(e,t,n),a=LA(i),o=RA(a,i);return a.npm.private||qA(a,o),XA(i),{entry:a,details:o}}async function YA(e,t,n){let r=await Tb(e.npm.name,e.npm.version,{...n,patch:t});return{...It({integrity:`${e.integrity} patch:${t.hash}`,size:e.size},r.files),npmPatch:{name:e.npm.name,version:e.npm.version,patch:t}}}function XA({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]&&HA.get(r)?.status!==`ready`&&HA.set(r,{status:`known`,data:n[e]})}}function ZA(e,t,n,r){KA();let i=`${e}\0${t}`,a=HA.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return HA.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return HA.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(UA*2**(t-1),WA);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>HA.get(i)===o?e===null?(HA.delete(i),null):(HA.set(i,e),e.status===`error`&&setTimeout(()=>{HA.get(i)===e&&X()},e.wait).unref?.(),$A(),null):null).catch(()=>{}),o}var QA=!1;function $A(){QA||(QA=!0,queueMicrotask(()=>{QA=!1,X()}))}function ej(e,t=void 0){return ZA(`versions`,e,()=>Kb(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 tj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function nj(e,t,n=Date.now()){let r=tj(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&&rj(e,i,n)&&{age:sj(i,n)}}})}function rj(e,t,n=Date.now()){return e.status===`ready`&&Wk(t,{minimumReleaseAge:e.teamScoped?0:Uk,now:n})}var ij=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function aj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?ij.format(-n,`day`):n<730?ij.format(-Math.floor(n/30.44),`month`):ij.format(-Math.floor(n/365.25),`year`);return`${$k(Date.parse(e))} \xB7 ${r}`}var oj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function sj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?oj.format(-n,`minute`):n<1440?oj.format(-Math.floor(n/60),`hour`):oj.format(-Math.floor(n/1440),`day`)}var cj=e=>$k(Date.parse(e)),lj=e=>`Published on ${cj(e)}`;function uj(e){let{name:t,version:n}=e.npm,r=ej(t),i=nj(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 JA(t,e)).details,dependencies:Tj,openDependency:jj,open:(e,n,r)=>dj(t,e,`compare`,n?{compareSpec:n,...ci(r)}:{})}}function dj(e=null,t=null,n=`overview`,r={}){!L()||!K?.active||K.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function fj(e,t=null){I.currentView=`npm`,I.npmLookup=e,I.npmOpening=t,I.currentManagedTeam=null,I.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}var pj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,mj=new Set([`overview`,`compare`]);async function hj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return fj({input:I.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=FA(r,i),s=I.currentView===`bundles`&&I.bundleDetails?.npm,c=s&&I.bundles?.[0]?.npm?.name===r&&I.bundles[0].npm.version===i?I.bundles[0]:null,l=c?I.bundleDetails:null;if(!c){let e=i!=null&&KA().has(`${r}@${i}`);!s&&!e&&(fj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;ej(r,u.signal),i!=null&&pj.test(i)&&mj.has(a)&&kA({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await JA(r,i??`latest`,{signal:iv()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(vj=null,fj({input:o,error:e.message}),{view:`npm`})}if(!t()||!L())return u.abort(),!1}vj?.name===r&&vj.spec===i&&(bj([o,...yj().filter(e=>e!==o)]),vj=null),ar();let u=I.bundleCompare?.bundle===c.integrity?I.bundleCompare:null;return a===`review`&&(I.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{},...e.patch?{patch:e.patch}:{}}),I.bundles=[c],eJ(c.integrity,a),a===`code`&&e.file!=null&&(I.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?I.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:si(e.compareMode)}:u&&(I.bundleCompare=u),I.bundleDetails=l,I.npmLookup={input:c.name,error:null},I.npmOpening=null,I.currentManagedTeam=null,I.currentManagedReport=null,I.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),zA(c,I.bundleDetailsTab,Zx(I))}var gj=10,_j=()=>`deepview.npm.recent.${I.managedSession?.id??`anonymous`}`,vj=null;function yj(){try{let e=JSON.parse(localStorage.getItem(_j())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&PA(e)):[]}catch{return[]}}function bj(e){try{localStorage.setItem(_j(),JSON.stringify(e.slice(0,gj)))}catch{}}function xj(e){bj(yj().filter(t=>t!==e)),X()}function Sj(e){let t=PA(e);if(!t){I.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}vj=t,dj(t.name,t.spec)}function Cj(e){e.preventDefault(),Sj(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function wj(){let e=I.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(I.managedSession?.role),n=yj();return j`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${A(ra)}</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?N:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${Cj}"><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?j`<p class="npm-lookup-error" role="alert">${e.error}</p>`:N}</div>${n.length>0?j`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>j`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>Sj(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>xj(e)}">×</button></li>`)}</ul></section>`:N}</section>`}function Tj(e,t){let n=DA(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?kA(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 Ej=e=>{let t=kA(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},Dj=({kind:e,name:t})=>`${e??``}\0${t}`,Oj=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,kj=e=>Oj.exec(CA(e)?.spec??e.trim())?.[1]??null,Aj=e=>CA(e)?.name??null;function jj({opens:e,from:t,to:n}){if(!e)return;let r=n&&kj(n),i=t&&kj(t);!i||!r||i===r||Aj(t)!==Aj(n)?dj(e):dj(e,r,`compare`,{compareSpec:i})}function Mj(e){let t=EA(e.npm.manifest);if(t.length===0)return N;let n=Ej(e.npm);return Mk({title:`Dependencies`,count:t.length,list:!0,body:j`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(Dj(e))??[],s=j`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${OA(o)}</span> ${i?j`<span class="npm-dependency-kind">${i}</span>`:N} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return j`<li>${a?j`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>dj(a)}">${s}</button>`:j`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var Nj=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function Pj(e){let t=Ej(e),n=Map.groupBy(EA(e.manifest).flatMap(e=>(t.get(Dj(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return Nj.filter(([e])=>n.has(e)).map(([t,r,i])=>j`<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 Fj(e,t){let{name:n,version:r}=e.npm,i=ZA(`tags`,`${n}@${r}`,()=>Yb(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?N:j`<span class="bundle-origin-tags">${i.tags.map(e=>j`<a class="bundle-origin-link bundle-tag-link" href="${Qe(t,e)}" target="_blank" rel="noopener noreferrer">${A(Qi)}<span>${e}</span></a>`)}</span>`}function Ij(e,t,n=e){let r=n===e||n===`./${e}`?N:`./${e}`;return t?.has(e)?j`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function Lj(e,t,n){let r=e.knownAccounts?.includes(t);return j`<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 Rj=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,zj=e=>e.replace(Rj,`$1`);function Bj(e,{prefix:t=``,githubFigures:n=N,provenance:r=N,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?nt({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=ej(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return j`<dl class="bundles-detail-meta npm-facts">${e.npm.private?j`<dt>Access</dt><dd>Private</dd>`:N} ${o.deprecated?j`<dt>Deprecated</dt><dd class="npm-deprecated">${zj(o.deprecated)}</dd>`:N} ${o.description?j`<dt>Description</dt><dd>${o.description}</dd>`:N} ${o.license?j`<dt>License</dt><dd>${pA(o.license,[...a??[]]).map(({text:e,file:t})=>Ij(t,a,e))}</dd>`:N} ${o.author?j`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?j`${Lj(o,o.authorAccount,o.author)}${o.author===o.authorAccount?N:j`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:N} ${o.publisher&&o.publisher!==o.authorAccount?j`<dt>Publisher</dt><dd class="bundle-origin-row">${Lj(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?j`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:N} ${u?j`<dt>Published</dt><dd>${rj(l,u)?j`<span class="npm-recent">${aj(u)}</span>`:aj(u)}</dd>`:N} ${c?j`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${A(da)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?j`<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">${A(fa)}<span>${c.commit.text}</span></a> ${Fj(e,s)}`:j`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:N} ${r===N?N:j`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?j`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:N}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?j`<dt>Prefix</dt><dd class="mono">${t}</dd>`:N}</dl>`}var Vj=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?Ij(n,t,e):e});function Hj(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:uA(r[e],t)??dA(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=Vk(r,t),l=EA(r).length;return j`${i.map(({label:e,path:r,file:i})=>j`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${Ue(i,Ve(n,i))}${Ij(i,t,r)}</span></dd>`)} ${r.type?j`<dt>Type</dt><dd class="mono">${r.type}</dd>`:N} ${s.length>0?j`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:N} ${r.engines?j`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:N} ${c.length>0||r.hasInstallScript?j`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>j`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${Vj(n,t)}</code></div>`)}</dd>`:N}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${Rk(`dependencies`,l,l===0?`None`:l)}${Pj(e.npm)}</dd>`}var Uj=class extends ya{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=nj(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 j`<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`:N}" @bundle-change="${e=>{e.detail.value!==this.version&&dj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,Uj);var Wj=e=>j`<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>`,Gj=[[`commits`,`Commits`,Wj(M`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,Wj(M`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,Wj(M`<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"/>
|
|
179
|
+
<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`,Wj(M`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
|
|
180
|
+
<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`,Wj(M`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,Wj(M`<path d="M5 3.25v9.5L12.75 8z"/>`)]],Kj=new Set(Gj.map(([e])=>e)),qj=`commits`;function Jj(e){return Kj.has(e)&&(qj=e),qj}var Yj=new Map,Xj=new Set,Zj=e=>Yj.get(e)??null,Qj=e=>Yj.has(e)?{subtab:Yj.get(e)}:{},$j=e=>{Xj.add(e)};function eM(e,t){let n=hi(e,t)?t:null;if(n!==Zj(e)){n?Yj.set(e,n):Yj.delete(e);for(let t of Xj)t(e)}}var tM=[[1,`Week`,`the week before`],[4,`Month`,`the month before`],[13,`Quarter`,`the quarter before`],[52,`Year`,`the year before`]],nM=()=>tM.find(([,e])=>e.toLowerCase()===Zj(`pulse`))?.[0]??4;function rM({repoId:e,commit:t,path:n},r,i){eM(r,i),K?.pushRoute({view:`repository-code`,repoId:e,commit:t,path:n,bundleTab:r,...Qj(r)})}var iM=e=>j`<div class="activity-views" role="group" aria-label="Activity">${Gj.map(([t,n,r])=>j`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`;function aM(e){let t=ot(e),n=!1,r=null;async function i(){n=!0;try{await t.load()}catch(e){r=String(e?.message??e)}n=!1,X()}let a=e=>t.module?e():r?j`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),j`<div class="bundles-slide-placeholder">Loading…</div>`);return a.loaded=()=>t.module!==null,a}var oM=aM(`./activity.js`);function sM(e,t){oM.loaded()||Nb(e,t,{state:Zj(t)===`closed`?`closed`:`open`,weeks:nM()})}var cM=/^[a-f\d]{40}$/iu,lM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),uM=({repo:e,path:t})=>t?`${e}/${t}`:e,dM=new Map,fM=new Map,pM=3e4,mM=3e4,hM=null;function gM(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==hM&&(dM.clear(),fM.clear(),hM=e),dM}function _M(e,t){let n=gM(),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,at:Date.now()}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+pM}).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 vM(e){let t=gM().get(e);t?.status===`ready`&&Date.now()-t.at<mM||(t?.status===`ready`?gM().set(e,{...t,stale:!0}):gM().delete(e))}var yM=()=>_M(`repositories`,()=>Db()),bM=e=>_M(`refs\0${e}`,()=>Ob(e)),xM=({repoId:e,repo:t})=>t??yM().value?.find(t=>t.repoId===e)?.fullName??null,SM=(e,t)=>fM.get(`${e}\0${t}`)??null;function CM(e,t,n){gM(),n&&fM.set(`${e}\0${t}`,n)}function wM(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:`${uM({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 TM=/^readme(?:\.[^/]*)?$/iu;function EM(e,t=new Map){let n=e.filter(e=>TM.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),i=VE(e,[`package.json`]);return[...new Set([...n,...i?[i]:[],...r])]}function DM(e,t){let n=It(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:EM(r,n.fileSizes)}}function OM(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository,o=pi.has(t)?t:`code`;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o,...Qj(o),...n}}function kM({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(!L()||!K?.active)return;let l=c?.target?{...cM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ci(c.mode)}:{};K.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...Qj(s),...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var AM=e=>e.commit??e.ref??``,jM=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function MM({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&cM.test(r.name)?r.name.toLowerCase():null;kM({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:jM(r),revision:r}})}function NM({repoId:e,repo:t,commit:n,revision:r},i,a){kM({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:jM(r),revision:r}})}function PM(e){I.currentView=`repository-code`,I.repositoryCodeOpening=e,I.currentManagedTeam=null,I.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function FM(e){let t=I.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===G()?t.repository:null}var IM=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function LM(e,t){if(IM.has(t?.code))try{let t=await kb(e.repoId,AM(e),e.path,{signal:iv()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));I.repositoryCodeOpening?.error&&lM(I.repositoryCodeOpening,e)&&n.length>0&&cM.test(t.commit)&&(I.repositoryCodeOpening={...I.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function RM(e){try{let t=await kb(e.repoId,AM(e),``,{signal:iv(),commitOnly:!0});I.repositoryCodeOpening===e&&cM.test(t?.commit??``)&&(I.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function zM({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){kM({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function BM(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=pi.has(e.bundleTab)?e.bundleTab:`code`;eM(o,e.subtab);let s=e=>({view:`repository-code`,repoId:r,commit:e,path:a,bundleTab:o,...Qj(o)});gM();let c=I.currentView===`bundles`&&I.bundles?.[0]?.repository&&I.bundleDetails?.integrity===I.bundles[0].integrity?I.bundles[0]:null,l=i&&c&&lM(c.repository,{repoId:r,commit:i,path:a})?c:null,u=l?I.bundleDetails:null,d=I.currentView===`repository-code`?I.repositoryCodeOpening:null;if(!l&&i&&d?.code===`directory-too-large`&&lM(d,{repoId:r,commit:i,path:a}))return PM({...d,tab:o}),s(i);if(!l&&mi.has(o)){sM(r,o);let c=e.revision===void 0?i?fM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;vM(`refs\0${r}`);let l=yM().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){PM(u),K?.showing(e),n();try{let t=await kb(r,AM(e),``,{signal:iv(),commitOnly:!0});d=cM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(PM({...u,error:e.message,code:e?.code??null}),s(null))}if(!t())return!1;if(!d)return PM({...u,error:`The server answered with no commit.`}),s(null)}return c&&fM.set(`${r}\0${d}`,c),PM({...u,commit:d,ref:null,historyOnly:!0}),n(),s(d)}if(!l){let d=e.revision===void 0?i?fM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,f=yM().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};vM(`refs\0${r}`);let m=o===`treemap`,h=c&&!m?{integrity:c.integrity,generation:G(),repository:{repoId:r,repo:p.repo,commit:i,path:a,revision:d}}:null;h?(I.repositoryCodePending=h,X({animate:!1})):(PM(p),n()),m&&!i&&RM(p),K?.showing(e);let g;try{if(g=await Eb(r,AM(e),a,{signal:iv()}),g?.repoId!==r||i&&g.commit!==i||g.path!==a||!cM.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`&&cM.test(e.commit??``)?e.commit.toLowerCase():i,r={...p,commit:n,error:e.message,code:e?.code??null};return PM(r),LM(r,e),s(n)}finally{h&&I.repositoryCodePending===h&&(I.repositoryCodePending=null,I.currentView===`bundles`&&I.selectedBundle===h.integrity&&X({animate:!1}))}if(!t()||!L())return!1;d&&fM.set(`${r}\0${g.commit}`,d),l=wM(g,d),u=DM(l,g)}ar();let f=I.bundleCompare?.bundle===l.integrity?I.bundleCompare:null,p=e.compareCommit??e.compareTarget??null;return I.bundles=[l],eJ(l.integrity,o),o===`compare`&&p?I.bundleCompare={bundle:l.integrity,target:p,mode:si(e.compareMode)}:f&&o!==`compare`&&(I.bundleCompare=f),o===`code`&&e.file!=null?I.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`&&(I.bundleCodeFileRequest={bundle:l.integrity,path:e.filePath}),I.bundleDetails=u,I.repositoryCodeOpening=null,I.currentManagedTeam=null,I.currentManagedReport=null,I.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),OM(l,I.bundleDetailsTab,Zx(I))}function VM({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 HM=new Set([`issues`,`pulls`,`agents`,`pulse`]);function UM({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 WM=class extends ya{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=UM(e);this._edit=t??{kind:e.kind,name:e.name},t&&MM(this.repository,t,this.tab)}render(){if(!this.repository)return N;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??VM(this.repository,this.refs),s=HM.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 j`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&kM({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?j`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>NM(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?j`<span aria-current="location">${e}</span>`:j`<button type="button" @click="${()=>NM(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:N} ${s?N:j`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>pr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?j`<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`}">${A(fa)}<span>${n.slice(0,7)}</span></a>`:N}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,WM);function GM(e){let{listing:t}=e;return t?j`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>j`<li><button type="button" class="repository-code-directory" @click="${()=>NM({...e,commit:t.commit},n.path,e.tab)}">${We}<span>${n.name}</span></button></li>`)}</ul></div>`:N}var KM=new Map,qM=new Set,JM=null;function YM(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==JM&&(KM.clear(),JM=e),KM}var XM=()=>{for(let e of qM)e.requestUpdate()};function ZM({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=YM().get(r);if(i)return i;let a={key:r,status:`loading`};return KM.set(r,a),Mb(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 KM.get(r)===a&&KM.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=>{KM.get(r)===a&&(e?.name===`AbortError`?KM.delete(r):KM.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(XM),a}var QM=class extends ya{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),qM.add(this)}disconnectedCallback(){qM.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return N;let e=ZM(this.repository);return e.status===`error`?j`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{KM.delete(e.key),XM()}}">Retry</button></div>`:e.status===`ready`?j`${e.cut?j`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:N}<bundle-treemap .details="${e.details}"></bundle-treemap>`:j`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,QM);var $M=j`<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>`,eN=new Map([[`registry`,{label:`Source: npm registry`,icon:Ke}],[`repository`,{label:`Source: GitHub repository`,icon:A(da)}],[`osv`,{label:`Source: OSV`,icon:$M}]]);function tN(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function nN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var rN=j`<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 iN(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return j`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return j`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function aN(e,t){return j`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${tN(e)}</span> ${typeof t==`number`?j`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:N}</div>`}function oN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??nN(t)??(typeof e.id==`string`?e.id:null),r=eN.get(e.source);return!r&&!(n&&t)?N:j`<span class="bundle-advisory-reference">${r?j`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:N} ${n&&t?j`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${rN}</a>`:N}</span>`}function sN(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?j`<span class="bundle-advisory-cwes">${t.map((e,t)=>j`${t===0?``:`, `}${iN(e)}`)}</span>`:N}function cN(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 j`<li class="bundle-advisory-row">${aN(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?j`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:j`<span class="bundle-advisory-title">${e.title}</span>`} ${oN(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?j`<span>${e.informational}</span>`:N} ${r?j`<span>Affected <span class="mono">${r}</span></span>`:N} ${i.length>0?j`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:N} ${sN(e.cwe)}</div>${n?j`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:N}</div></div></li>`}var lN=(e,t)=>dO(e,t).runsCode,uN=(e,t=e.length>=at)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,dN=/^[\w$.]+$/u,fN=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=Dt.get(e);return t&&dN.test(t)?t:n})].map(([e,n])=>`${e} (${uN([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=at))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),pN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},mN=(e,t)=>t===void 0?{path:N,line:N}:{path:e,line:t},hN=(e,t=null)=>[...e].map(([e,n])=>`${Dt.get(e).name} (${uN(n)}${t?.has(e)?`, new`:``})`).join(`, `);function gN(e,t,n){return e?[...Map.groupBy(e,([e])=>Dt.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=Dt.get(r[0][0]),o=r.map(([e,t])=>[Dt.get(e).name,uN(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>Dt.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=mN(n,n===void 0?void 0:pN(r.map(([,e])=>e)));return j`<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="${j`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>j`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?j`<div class="compare-tip-notice">${c}</div>`:N}</div>`}">${e}</span>`}):N}var _N=(e,t)=>dO(e,t).exfiltration,vN=e=>[...Ct].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),yN=(e,t)=>[...e].map(([e,n])=>`${Ct.get(e).name} (${uN(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),bN=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?wt(e).map(([e,r])=>{let i=mN(n,n===void 0?void 0:pN([...r.values()]));return j`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${Tt(e,r,t)}`}" data-tooltip="${`${bN.get(e)}: ${yN(r,t)}`}">${e}</span>`}):N}var SN=e=>e.toLowerCase().replaceAll(` `,`-`),CN=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),wN={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function TN(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function EN(e,t,n=[]){let r=Object.keys(wN),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 DN(e,t=`accept`){let n=Object.keys(wN);return n.slice(Math.max(n.indexOf(t),n.indexOf(EN(e,null).verdictLimit)))}function ON({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 kN(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`)||ON({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>e.malware===!0||CN(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 AN(e,t,n=[]){return EN(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(wN).includes(e.status)))}function jN(e){return e.replaceAll(/\r\n?/gu,`
|
|
181
|
+
`).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var MN=[`critical`,`high`,`moderate`,`low`,`unknown`],NN=e=>MN.includes(e.severity)?e.severity:`unknown`,PN=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function FN(e){return ZA(`stats`,e,()=>qb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function IN(e){return ZA(`advisories`,e,()=>Jb(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function LN(e){let{name:t,version:n}=e.npm,r=(e,t)=>j`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${rN}</a>`;return j`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?N:r(RN(e),`socket.dev`)}</span>`}var RN=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function zN(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=ZA(`socket`,`${t}@${n}`,()=>Zb(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var BN=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],VN=50,HN=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,UN=e=>j`<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 WN(e){let t=zN(e)?.scores;return t?j`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${BN.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return j`<li><a class="${`npm-extension npm-socket-score ${HN(a,i)}`}" href="${RN(e)}" target="_blank" rel="noopener noreferrer">${UN(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:N}var GN=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),KN=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),qN=new Map,JN=new WeakMap;function YN(e){let t=e?zN({npm:e}):null;return t?(JN.has(t)||JN.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),JN.get(t)):qN}var XN=(e=[])=>e.map(e=>{let t=GN.get(e.severity)??`low`;return j`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${KN(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${KN(e.type)}</span>`});function ZN(e,t){return kN(e.npm,IN(e.npm.name),zN(e),kA(e.npm,t?t.npm?.version??`(empty)`:null))}function QN(e,t){let n=ON(e),r=n&&t!==null&&[...t].every(MF)?[]:zN(e)?.alerts??[];if(!n&&r.length===0)return N;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return j`<div class="npm-alerts">${n?j`<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?j`: ${Ij(i,t,`its readme`)}`:``}.</p>`:N} ${r.length>0?$N(e,r,t):N}</div>`}function $N(e,t,n){return j`<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="${RN(e)}" target="_blank" rel="noopener noreferrer">socket.dev${rN}</a></span><ul>${t.map(e=>{let t=GN.get(e.severity)??`info`;return j`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${KN(e.type)}</span> ${e.file?j`<span class="npm-socket-alert-file">in ${Ij(e.file,n)}</span>`:N} ${e.note?j`<p class="npm-socket-alert-note">${e.note}</p>`:N}</li>`})}</ul></div>`}function eP(e,t,n=N){let r=FN(e.npm.name),i=yF(kA(e.npm)?.findings.find(({id:e})=>e===`popularity`));return j`<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">${LN(e)}${t}</div>${n}</div>`}var tP=j`<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>`,nP=j`<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>`,rP=A(Zi),iP=j`<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 aP(e){if(!e.npm.manifest.github?.github)return N;let t=FN(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return N;let r=(e,t,r,i)=>j`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${Xe(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${Yk.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return j`${r(tP,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(iP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(nP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?N:r(rP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?j`<span class="npm-github-archived">Archived</span>`:N}`}var oP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:ZA(`provenance`,`${e}@${t}`,()=>Qb(e,t),e=>({provenance:e.provenance??null}));function sP(e){let t=oP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function cP(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 lP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function uP(e){if(e.npm.private)return N;let t=oP(e.npm);if(!t)return j`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return j`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return j`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return j`<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=N)=>j`<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=cP(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?N:a):j`<span class="mono" data-tooltip="${a===v?N:a}">${v}</span>`:N,c?d(c,`Run`):N,l===null?N:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==N);return j`<span class="npm-provenance"><span class="npm-provenance-line">${p?j`<span class="${lP(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:N} <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)} ${_?j`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:N}</span> ${y.length>0?j`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:j`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:N}</span>`}function dP(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 fP(){let e=I.managedSession?.id;return()=>I.managedSession?.id===e}function pP(e,t){return cN({...e,title:e.title??e.id,severity:NN(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ct({heading:e,severity:n,markdown:r,isCurrent:t}))}function mP(e){let{name:t,version:n}=e.npm,r=IN(t),i=fP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>dP(e,r.versions,n)),c=PN.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?j`<p class="npm-advisories-note">GitHub's repository advisories are as of ${TF(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?j`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:N,d=r.status===`loading`?j`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?j`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?j`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:j`${u}${c.map(e=>j`<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=>pP(e,i))}</ul></section>`)}`;return Mk({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?j`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:N})}var hP=[...bt].filter(([,{mark:e}])=>e!==null).map(([e])=>e),gP=[...bt].filter(([,{mark:e}])=>e===null).map(([e])=>e),_P=[null,`notice`,`warn`];function vP(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=vt(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=yt(i,r);_P.indexOf(e)>_P.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>bt.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var yP=new WeakMap;function bP(e){let t=e.npm?lO(e):e,n=yP.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,pO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=vP(a.values()),u=qt(e),d=Rt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!MF(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,kF(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:NF(r,d,u),content:f},yP.set(e,n)}return n}var xP={key:null,chip:null},SP=e=>`${e.npm.name}@${e.npm.version}`,CP=e=>xP.key===SP(e)?xP.chip:null;function wP(e){let t=CP(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{xP={key:null,chip:null},X()}}}function TP(e,t,n,r,{classes:i=``,tooltip:a=N}={}){let o=CP(e)?.id===t.id;return j`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{xP={key:SP(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function EP(e,t,n){let{name:r}=bt.get(n),{byPath:i,counts:a,marks:o}=bP(t),s=o.get(n);return TP(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&vt(i.get(e)).includes(n)},j`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function DP({counts:e,marks:t,unreadable:n},r,i,a){let o=hP.filter(t=>e.has(t));if(o.length===0)return N;let s=o.some(e=>t.get(e)===`warn`);return j`<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 OP(e,t){return DP(bP(t),t.json.sources.length,`files`,n=>EP(e,t,n))}function kP(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=bP(e),o=n?t:void 0;return j`${gN(lN(e,t),void 0,o)}${xN(_N(e,t),AP(r),o)}${wO(e,t,a.get(t))}${SO(i.get(t))}`}var AP=e=>e===void 0||e?.details.npm&&!lO(e.details)?void 0:e&&_N(e.details,e.path);function jP(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=dO(e,t),o=AP(r),s=o===void 0?null:new Map(wt(a).map(([e,t])=>[e,Tt(e,t,o)]));return[...n.map(e=>({name:KN(e.type),severity:GN.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var MP=new WeakMap;function NP(e,t){let n=e&&t?.npm?kA(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!MP.has(n)){let t=new Map;for(let{host:r,places:i}of VP(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}]);MP.set(n,t)}return MP.get(n)}function PP(e){if(!e?.length)return N;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 j`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${j`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>j`<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 FP={icon:(e,t)=>Ue(e,t.map(([e,t])=>Ve(e,t)).find(ee)),alerts:e=>YN(e?.npm),alertTags:XN,newHosts:NP,newHostTag:PP,tag:(e,t,n)=>kP(e,t,!1,n),flags:(e,t,n)=>jP(e,t,[],n),warning(e,t){let{byPath:n}=bP(e),r=vP(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return DP(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=bt.get(e),n=a.get(e);return j`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},IP=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`]]),LP={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},RP=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function zP(e){let t=e?.score;if(!t)return N;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[IP.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${RP(a.days)}${a.tier===null?``:`, its package npm's ${nA(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(`
|
|
182
|
+
`);return j`<li><span class="${`npm-extension npm-risk-score ${LP[r]}`}" data-tooltip="${c}" .tooltipContent="${j`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?j`<span class="compare-tip-none">Nothing found that calls for a look</span>`:j`<div class="compare-tip-rows">${o.map(([e,t])=>j`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?j`<div class="compare-tip-note">${s}</div>`:N}</div>`}">${UN(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var BP=(e,t)=>[XP(t.get(`malware`)),ZP(t.get(`deprecated`)),tF(e,t.get(`publisher`)),nF(e,t.get(`provenance-lost`)),rF(e,t.get(`held-install-scripts`)),...uF(e,t),...aF(e,t),oF(t.get(`new-hosts`)),dF(t.get(`too-new`))],VP=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function HP(e,t){if(!e||!t?.npm)return N;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=qP(n),i=kA(t.npm,e.npm?.version??`(empty)`),a=VP(i),o=[zP(i),...BP(n,a),fF(n,r),..._F(n,r,a.get(`malware`)),xF(t.npm.name,a.get(`popularity`))].filter(e=>e!==N);return o.length===0?N:j`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function UP(e){let{npm:t}=e,n=qP([t]),r=kA(t),i=VP(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[zP(r),...BP(a,i),fF([t],n),..._F([t],n,i.get(`malware`))].filter(e=>e!==N);return o.length===0?N:j`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function WP(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?sF(`npm-compare-unreadable`,`Now unreadable`,t,n):cF(`${GP[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var GP={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},KP=e=>[...St.keys()].map(t=>{let n=e.get(`held-${SN(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return cF(`${GP[n?.severity]} npm-held-file npm-files-${SN(t)}`,t,r,e=>yN(e.found,i(e)),vN(r.map(e=>e.found)))});function qP(e){let t=IN(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 JP=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,YP=e=>MN.find(t=>e.some(e=>NN(e)===t));function XP(e){if(!e)return N;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return j`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
|
|
183
|
+
`)}">Malware</span></li>`}function ZP(e){return e?j`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${zj(e.message)}">Deprecated</span></li>`:N}var QP={critical:`is-from-known`,high:`is-to-unknown`},$P={known:`is-known`,maintainer:`is-maintainer`},eF={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 tF([e,t],n){if(!n)return N;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)=>j`<span class="${`npm-compare-account ${$P[t]??`is-unknown`}`}">~${e}</span>`,f=QP[s]??`is-to-known`,p=j`A different npm account published the open version,<br>${eF[u]},<br>after ${eF[l]}${c?j`<br>in a major release`:N}`;return j`<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="${mF(`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 nF([e,t],n){return n?j`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${mF(`npm provenance`,[e,t],[`Listed by npm`,j`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:N}function rF(e,t){if(!t)return N;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?j`<span class="compare-tip-none">None</span>`:pF(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 j`<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="${mF(`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 iF=8;function aF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${GP[t.get(e)?.severity]} npm-held-file ${n}`;return[cF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>fN(e.found,e.added),ne(n(`held-runs-code`).map(e=>e.found)),null,!1),cF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>hN(e.found,e.added)),...KP(t),sF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Kr(e.bytes)),WP(t.get(`now-unreadable`)),cF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${fO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),sF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Kr(e.bytes)}, not UTF-8 or holding a NUL`)]}function oF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,iF).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 cF(`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 sF(e,...t){return cF(`npm-compare-file ${e}`,...t)}function cF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return N;let s=n.slice(0,iF),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=j`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>j`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?j`<span class="compare-tip-lines">${l(e).map(e=>j`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?j`<div class="compare-tip-note">${c}</div>`:N}</div>`,f=j`${o?j`<span>${t}</span>`:j`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?j`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:N}`;return a?j`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:j`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var lF=(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?`${TF(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${nA(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 uF(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(j`<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="${mF(`From elsewhere than npm's registry`,[e.at(-1)],[pF(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(j`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:GP[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${lF(e,t)?` (${lF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${mF(`Nothing imports ${t}`,[e.at(-1)],[pF(a.map(t=>[[c(t),lF(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 dF(e){return e?j`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${lj(e.published)}">${sj(e.published)}</span></li>`:N}function fF(e,t){if(!t)return N;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return N;let i=n.length===0?`is-cleared`:`sev-${YP(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=mF(`Advisories affecting`,e,t.map(e=>e.length===0?j`<span class="compare-tip-none">none</span>`:j`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${MN.map(t=>[t,e.filter(e=>NN(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>j`<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=j`<span>Advisories</span><span class="npm-extension-count">${JP(r.length,n.length)}</span>`;return e.length>1?j`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>hF(e,t)}">${l}</button></li>`:j`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var pF=e=>j`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?j`<span class="compare-tip-none">${e}: none</span>`:j`<span class="${n?`is-flagged`:N}">${e}: <code>${t}</code></span>`)}</span>`,mF=(e,t,n,r=null)=>j`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>j`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?j`<div class="compare-tip-note">${r}</div>`:N}</div>`;function hF([e,t],[n,r]){let i=fP(),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=>pP(e,i))}));fe({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=YP(t);return r===void 0||MN.indexOf(e<=25?`critical`:`high`)<MN.indexOf(r)}function _F(e,t,n=null){let r=e.at(-1),i=e.map(e=>zN({npm:e})?.scores??null);return!i.at(-1)||n?[]:BN.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>=VN?[]:[j`<li><a class="${`npm-extension npm-socket-score ${HN(l,s)}`}" href="${RN({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="${mF(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?j`<span class="compare-tip-none">none</span>`:j`<span class="${`compare-tip-score ${HN(e,s)}`}">${UN(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${UN(l)}<span>${a}</span><span class="npm-extension-count">${JP(u,l)}</span></a></li>`]})}var vF={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function yF({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 bF(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 ${vF[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?yF(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return j`<span class="${s}" data-tooltip="${l||N}" .tooltipContent="${t||c?j`${t?j`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:N}${c?j`<div class="compare-tip-note">${c}</div>`:N}`:null}">${nA(r??1/0)}</span>`}function xF(e,t){let n=FN(e);return t?j`<li>${bF(t,n.status===`ready`&&n.downloads?oA(n.downloads):null,!0)}</li>`:N}var SF=j`<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>`,CF=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),wF={minute:CF(`minute`),hour:CF(`hour`),day:CF(`day`),month:CF(`month`),year:CF(`year`)};function TF(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?wF.minute.format(t):t<1440?wF.hour.format(Math.floor(t/60)):n<60?wF.day.format(n):n<730?wF.month.format(Math.floor(n/30.44)):wF.year.format(Math.floor(n/365.25))}function EF({compared:e},{created:t,gap:n}){if(!t)return N;let[r,i]=e,a=TF(Math.abs(n)),o=[`First published on ${cj(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 j`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${j`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>j`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function DF(e,t){let n=OA(e.flags);if(t!==`added`||!e.level)return[n,N];let r=e.month?sA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?SF:bF(e,r),e.compared?EF(e,e):N]}function OF(e,t){let{counts:n}=bP(t),r=gP.filter(e=>n.has(e));return r.length===0?N:j`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>EP(e,t,n))}</ul>`}function kF(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 AF(e,t,n=new Map){let r=new Map;for(let i of e){let e=kF(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 jF=/^(?:package\.json|readme(?:\.md)?)$/iu,MF=e=>jF.test(e)||fA.test(e);function NF(e,t,n=new Map){let r=e.filter(MF),i=new Set(e.filter(e=>!MF(e)).map(kF)),{files:a,bytes:o,lines:s}=AF(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:AF(e,t,n).filter(e=>i.has(e.extension))}}var PF=({bytes:e,lines:t})=>t===null?Kr(e):`${Kr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function FF(e,t){let{types:n,extensions:r}=bP(t);return!n.package&&n.extensions.length===0?N:j`<ul class="npm-extensions" aria-label="File types">${n.package?TP(e,{id:`package`,label:`Package`,keeps:MF},j`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${PF(n.package)}`}):N} ${n.extensions.map(t=>TP(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},j`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:PF(t)}))}</ul>`}function IF(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,OF(e,n)],[`types`,`File types`,FF(e,n)],[`socket`,`Socket`,WN(e)]].filter(([,,e])=>e!==N);return r.length===0?N:j`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>j`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function LF(e,t){return e.size===0?N:Mk({title:`Binary files`,count:e.size,list:!0,body:j`<ul class="bundles-sources-list">${[...e].map(e=>j`<li><div class="bundles-source-row is-resource">${Ue(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?j`<span class="bundles-source-size">${Kr(t.get(e))}</span>`:N}</div></li>`)}</ul>`})}var RF=({severity:e})=>ie.indexOf(e),zF=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function BF(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>RF(e)-RF(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(RF(e.flags[0])-RF(t.flags[0])||t.flags.length-e.flags.length||zF(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function VF(e){return{...uj(e),files:FP,badges:HP,dependencyTags:DF,reviewVerdictLimit:ZN}}var HF=/^[a-f\d]{40}$/iu,UF={removed:[],added:[],changed:[]},WF=e=>e.kind===`commit`&&HF.test(e.name)?e.name.toLowerCase():jM(e);function GF(e,t,n){return VM({revision:HF.test(t)?SM(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 KF=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function qF(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=bM(t),o=VM(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?KF(o,r):KF(GF(t,n,a),n),async load(e){let n=await Eb(t,e,i,{signal:iv()});if(n?.repoId!==t||n.path!==i||!HF.test(n.commit??``)||HF.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return HF.test(e)||CM(t,r,GF(t,e,null)),{...DM(wM({...n,commit:r},SM(t,r)),n),compareId:r}},open:(e,r,a)=>kM({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...HF.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:GF(t,e,null)}}),dependencies:()=>UF,files:{icon:(e,t)=>Ue(e,t.map(([e,t])=>Ve(e,t)).find(ee))},select:(e,n)=>j`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:GF(t,e.value,a):null}" @revision-pick="${t=>e.pick(WF(t.detail))}"></repository-revision-pick>`}}var JF=class extends ya{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=UM(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 j`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>pr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,JF);var YF=500,XF=14;function ZF(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=fn(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 QF(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function $F(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var eI=e=>new TextEncoder().encode(e).length,tI=new Map,nI=new Set,rI=(e,t=I.currentManagedTeam)=>JSON.stringify([t,e]),iI=new Map,aI=null,oI=Promise.resolve();function sI(){let e=new Set;for(let t of I.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 cI(){return Array.isArray(I.managedReports)&&I.managedReports.length>0?I.managedReports:I.managedReport==null?[]:[I.managedReport]}function lI(e){let t=new Set,n=!1;for(let r of I.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||I.reports.length===0?t:new Set(sI())}function uI(e){let t=cI();for(let n of I.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 dI(){let e=I.managedSession;return I.serverMode===`managed`&&I.localMode!==!0&&e!=null&&Ze(e.role,`triage`)}function fI(e){return e===403&&I.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function pI(e,t){let n=iI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},iI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function mI(e,t,n){if(!dI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=XF;for(;i<r.length&&s<200;){let t=r[i],n=eI(`${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 xx(e.report.id,o,I.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!fI(l)){pI(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&&I.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=tI.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),tI.set(n,{key:QF(r),fix:a})}}}function hI(){aI!=null&&(clearTimeout(aI),aI=null);let e=[...iI.values()];if(iI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)oI=oI.then(()=>mI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});oI=oI.finally(()=>{for(let e of t)$v(e);for(let e of n)SI(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function gI(){if(cI().length!==0&&dI()&&nI.size!==0){for(let e of sI()){let t=ZF(I.triage.get(e)),n=QF(t);if((tI.get(e)?.key??``)===n)continue;if(!$F(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),tI.set(e,{key:n,fix:tI.get(e)?.fix??``});continue}let r=uI(e);if(r==null||!nI.has(rI(r.id)))continue;let i=I.currentManagedTeam,a=rI(r.id,i),o=iI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},iI.set(a,o)),o.changes.set(e,t)}iI.size!==0&&(aI!=null&&clearTimeout(aI),aI=setTimeout(hI,YF))}}var _I=!1;function vI(){_I||!dI()||(_I=!0,xd(gI))}function yI(){Au(),I.managedComments?.clear(),I.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),aI!=null&&(clearTimeout(aI),aI=null),iI.clear(),nI.clear(),tI.clear()}async function bI(e,{renderView:t=!0,signal:n,readAnnotations:r,except:i}={}){let a=I.reports,o=I.currentManagedTeam,s=I.managedSession?.role,c=I.managedSession?.id,l=()=>!n?.aborted&&I.serverMode===`managed`&&I.localMode!==!0&&I.managedSession!=null&&I.managedSession.id===c&&I.managedSession.role===s&&I.reports===a&&I.currentManagedTeam===o&&cI().some(t=>t.id===e);if(!l()||(nI.delete(rI(e)),hI(),!await xI(n)||!l()))return!1;let u=new Map(I.managedIssues),d=r?await r(e):null,f=r?d?.entries:await gx(e,o,{signal:n});if(f==null||!l())return!1;let p=!1,m=[...lI(e)].filter(e=>!i?.has(e)),h=d&&sg(m,d.issues,u);for(let e of m){if(!Object.hasOwn(f,e)){tI.delete(e);continue}let t=ZF(f[e]);tI.set(e,{key:QF(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?I.triage.get(e)?.ignoredReports:void 0;_n(I.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:I.triage.get(e)?.scopedIgnoredReports})&&(p=!0)}if(nI.add(rI(e)),d&&ey(o,m,u),h&&!p&&t&&X(),p){if(await Nd(),!l())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}),oI.then(()=>n(!0),()=>n(!1))}):oI.then(()=>!0)}async function SI(e,{signal:t,readAnnotations:n}={}){let r=I.reports,i=I.currentManagedTeam,a=I.managedSession?.role,o=I.managedSession?.id,s=()=>!t?.aborted&&I.serverMode===`managed`&&!I.localMode&&I.reports===r&&I.currentManagedTeam===i&&I.managedSession?.id===o&&I.managedSession?.role===a&&nI.has(rI(e,i));if(!s()||(hI(),!await xI(t)||!s()))return!1;let c=lI(e),l=new Map([...c].map(e=>[e,tI.get(e)])),u=new Map(I.managedIssues),d=n?await n(e):null,f=n?d?.entries:await gx(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&sg(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=ZF(I.triage.get(e));if(tI.get(e)!==t||QF(n)!==(t?.key??``))continue;let r=ZF(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),tI.set(e,{key:QF(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?I.triage.get(e)?.ignoredReports:void 0;_n(I.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:I.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&$v(i),d&&ey(i,c,u),p&&!m&&X(),m){if(await Nd(),!s())return!1;X()}return!0}function CI(e,t){if(!e)return;let n=I.currentManagedReport;if(n!=null&&(I.managedReports.length!==1||I.managedReports[0].id!==n))return;let r=null,i,a=()=>i??=(async()=>{if(hI(),!await xI(t)||t?.aborted)return null;let i=await hx(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 wI(e){let t=await _(e),n=await um(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await Le({tryPassword:e=>v(t,e)}),!r)return null}else r=y(n.text);let i=await sm(r,{conflictResolver:async(t,n)=>{try{return await AS(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(I.currentFile||I.currentWorkspace)&&X(),{kind:`workspace`,workspace:i}}var TI=`deepview.passkey.firstImportPrompted`;function EI(){try{return localStorage.getItem(TI)===`1`}catch{return!1}}function DI(){try{localStorage.setItem(TI,`1`)}catch{}}async function OI(){if(!(To()||!Do()||EI())){if(!confirm(`Encrypt your DeepView data with a passkey?
|
|
184
|
+
|
|
185
|
+
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.
|
|
186
|
+
|
|
187
|
+
You can change this anytime from the lock icon in the sidebar header.`)){DI();return}await ge(),To()&&DI()}}var kI=0;function AI(e,t){let n=e.filter(e=>yk(t(e))!==null),r=n.at(-1);if(!r)return null;let i=xk(yk(t(r))),a=i===null?null:e.findLast(e=>t(e)===i)??null;return{lockfile:r,manifest:a,taken:new Set(a?[...n,a]:n)}}async function jI(e,t,n,r){let i=av(),a=()=>i===G(),o;try{o=await MI(e,t)}catch(e){return a()&&r(e),!1}return a()?(await n(o),!0):!1}async function MI({lockfile:e,manifest:t},n){let r=n(e),i=[[r,await e.text()]];return t&&i.push([xk(yk(r)),await t.text()]),{name:r,details:{kind:`sourcemap`,integrity:`dropped-lockfile:${++kI}`,size:e.size,json:{version:3,sources:i.map(([e])=>e),sourcesContent:i.map(([,e])=>e)}}}}var NI=null,PI=()=>Promise.resolve(!0);function FI(e){PI=e}function II(){NI?.controller.abort(),NI=null}var LI=()=>NI?.live===!0&&NI.current(),RI=6e4,zI=null,BI=!1;function VI(){clearTimeout(zI),zI=null,globalThis.document?.hidden&&NI&&(zI=setTimeout(()=>{zI=null,globalThis.document?.hidden&&NI&&(II(),BI=!0)},RI))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){VI();return}clearTimeout(zI),zI=null,BI&&(BI=!1,WI())});function HI(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 UI(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 WI({catalogOnly:e=!1,loading:t=!1,hydrate:n,annotations:r}={}){if(BI&&globalThis.document?.hidden&&!n)return;let i=I.managedSession,a=iv(),o=[`findings`,`files`,`links`].includes(I.currentView),s=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(I.currentView),c=s||t||o&&(!e||NI?.teamId===I.currentManagedTeam&&!NI.signal.aborted)?I.currentManagedTeam:null,l=!c&&!n&&!i?.publicShare&&NI?.teamId&&LI()&&I.managedTeams?.some(e=>e.id===NI.teamId)?NI:null,u=l?l.teamId:c;if(!L()||!i||i.role===`none`||i.publicShare&&!u)return II(),n?Promise.resolve(!1):void 0;if(l)return;let d=I.managedTeams?.find(e=>e.id===u)?.reports.find(e=>e.id===I.currentManagedReport&&e.visible===!1)?.id??null,f=JSON.stringify([u,d,i.id,i.role,i.csrfToken,!!i.publicShare]);if(NI?.key!==f||NI.signal.aborted){II();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&&NI===t&&L()&&I.managedSession?.id===i.id&&I.managedSession?.role===i.role&&I.managedSession?.csrfToken===i.csrfToken&&!!I.managedSession?.publicShare==!!i.publicShare,NI=t,BI=!1,qI(t),globalThis.document?.hidden&&VI()}let p=NI;if(e||s||t||!u)return p.target?.ready;let m=Ls(I.reports),h=p.target;if(h?.view===a&&h.reports===m&&!h.signal.aborted&&(!n||h.hydration))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&&I.currentManagedTeam===u&&Ls(I.reports)===m,y.hydration=n?HI(async e=>{let t=r?r.subscription===p?r.version:0:p.version,i=r?.read??CI(p.teamId,e),a=await n(e,i);return a&&y.current()&&(y.version=t,y.revision=i?.revision()??null,y.version<p.version&&KI(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&&KI(p,y)),y.ready}function GI(e){WI({loading:!0});let t=CI(I.currentManagedTeam,e);if(t)return t.start(),{read:t,subscription:NI,version:NI?.version??0}}function KI(e,t){JI(e,t,e.signal).then(e=>(!e&&t.current()&&(II(),WI()),e))}function qI(e){let{signal:t,controller:n,current:r}=e;Mx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(t,n)=>{let i=()=>r(t);if(!i())return!1;let a=await PI(i,t,n)&&i();return a&&(e.live=!0),a},onUpdate:(t,n=null)=>r(t)?(e.revision=n,e.version++,JI(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 JI(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=YI(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 UI(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?JI(e,t,n):!0:!1:!0:!1}async function YI(e,t,n){if(t.hydration&&!await UI(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=CI(e.teamId,n),a=I.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[SI(e.id,{signal:n,readAnnotations:i}),fw(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()}function XI(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Vi(e)===`revalidation`);return t.length>0?t:e}function ZI(e){let t=e.map(XI).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Vi(e)===``))}function QI(e,t=()=>[],{countFindings:n=!1}={}){return $I(eL(e,t),n)}function $I({linked:e,app:t},n){return t?{appMode:!0,appFindings:e.filter(e=>XI(e).some(e=>e.isApp)).length}:n?{appMode:!1,findings:e.length}:{appMode:!1}}function eL(e,t){let{groups:n,conflicts:r}=hg(e,{hideRuledOut:!0}),i=wg(n,t,XI);return{linked:i,app:r.size===0&&(ZI(i)||wr(i,{tabs:XI,kindOf:Vi,severityMode:`corrected`}))}}var tL=Object.freeze(`description.evidence.impact.reproduction.recommendation.confidenceReason.revalidateVerdict.revalidateRecommendation.fileHash.exportName.methodName.severityReason.commitHash.auditedCommit.detectedAt.committedAt.dateCreated.status.branch.pocStatus.parent.slug.reportPath.category.discoveredIn.effort.exportsMode.location`.split(`.`));new Set(tL);var nL=null,rL=()=>nL!==null&&(nL.replacing||nL.reports===Ls(I.reports));function iL(){return!rL()||nL.ok?null:nL.done?`failed`:`loading`}function aL(){return nL?.replacing===!0}function oL(){return rL()?nL.ready:Promise.resolve(!0)}function sL(){return rL()&&!nL.ok&&nL.folded}function cL(){return sL()?nL.lens??null:null}function lL(e,t){return new Promise(n=>{if(t?.aborted){n(!1);return}t?.addEventListener(`abort`,()=>n(!1),{once:!0}),e.then(n,()=>n(!1))})}function uL(e,t,n,{folded:r=!1,lens:i=null,shown:a=Promise.resolve(!0),signal:o,replace:s}={}){let c=nL={reports:Ls(I.reports),folded:r,lens:i,done:!1,ok:!1,replacing:!1,ready:null},l=()=>nL===c&&Ls(I.reports)===c.reports;c.ready=(async()=>{let r=await Promise.resolve(t).catch(()=>null),i=l()&&r&&dL(c.reports,r);if(i)i();else if(l()&&r&&s){if(!await lL(a,o)||!l())return c.done=!0,!1;c.replacing=!0;try{c.ok=await s(r)}catch{c.ok=!1}finally{c.replacing=!1}c.ok&&(c.reports=Ls(I.reports))}return c.done=!0,l()?(i||c.ok?(c.ok=!0,Mu(e,r),t_(),I.revalidateConflicts=a_()):Ux(`Could not load finding details. Open the team again to retry.`),n(),c.ok):!1})()}function dL(e,t){let n=new Map(t.map(e=>[e.id,e.data])),r=[];for(let t of e){let e=Ei(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 tL)Object.hasOwn(t,n)&&(e[n]=t[n]);Fn(e)}}}var fL=null,pL=0;ld(()=>{pL++});function mL(e,t,n,{complete:r,isCurrent:i}){fL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function hL(e){return!fL||fL.id!==e.id||!fL.isCurrent()||fL.membership!==JSON.stringify(e.reports.toSorted())||!Am(e,fL.token)?null:(fL.linksRevision!==pL&&(fL.metadata=fL.complete?QI(fL.reports,md):{appMode:!1},fL.linksRevision=pL),fL.metadata)}async function gL(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await _d(),!i()))return;let o=await Pm(e,n);if(!o||!i())return;let s=r?QI(t,md):{appMode:!1};await Fm(e,s,o)&&i()&&await a(s)}var _L=`deepview.lastFile`;function vL(e,t=`overview`,{push:n=!1}={}){if(L()){let r=I.bundles.find(t=>t.integrity===e),i=r?.npm?zA(r,t,Zx(I,t)):r?.repository?OM(r,t,Zx(I,t)):Jx(I.managedTeams,r,I.currentManagedTeam,t,Zx(I,t),I.bundles);n?K.pushRoute(i):K.replaceRoute(i);return}Ja(_L,`b:${e}${t&&t!==`overview`&&ti.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==G();function yL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function bL(e){return await yL(),e!==null&&J(e)?!1:(X(),aJ(I.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function xL(){T.selected=null,T.focusedPkg=null,T.layoutCache=null,T.solo=null,T.hidden.clear(),T.pathFilter=``,ar()}function SL(e){for(let t of H.openSessions)t&&!e.has(t.workspaceId)&&(H.closeSession(t.workspaceId),Kh(t.workspaceId))}function CL(){B.classList.remove(`active`),B.replaceChildren(),rh.classList.remove(`hidden`),document.title=`DeepView`}function wL(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function TL(e){let t=EL(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function EL(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function DL({name:e,content:t,existingNames:n}){if(!n.has(e))return await Jc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Xc(e)}catch(r){if(!wL(r))throw r;return await Jc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=z().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>Ch(t.id,e)),a=await Et({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 Jc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await Vh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Jc(e,t),i.length>0&&await kL(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function OL(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await lc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function kL(e,t){let n;try{n=await Zc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await Gh(r.id);let t=await Bh(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 AL(e){if(e=[...e],e.length===0||(await DZ(),L()))return;let t=AI(e,e=>EL(e.name));if(t&&(e=e.filter(e=>!t.taken.has(e))),e.length===0){await jL(t);return}if(await OI(),L())return;let n=null,r=null,i=new Set,a=new Set(await qc()),o=[];for(let t of e)try{let e=EL(t.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await wI(t);if(e?.kind===`reports`)for(let t of e.reports){if(typeof t?.name!=`string`||!t.name||typeof t?.content!=`string`)continue;let e=qu(t.content);if(!e.recognized){o.push(t.name);continue}let r=await DL({name:t.name,content:t.content,existingNames:a});r&&(Gu(r.name,e.count,e.source),await OL(r.name,t.repo),n={name:r.name,content:r.content})}try{let e=await qc();a.clear();for(let t of e)a.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(TL(t.name)){let e=new Uint8Array(await t.arrayBuffer()),{integrity:n}=await gl(t.name,e);r=n,i.add(n);continue}let s=await t.text(),c=Me(s,t.name);if(c)for(let e of c){let{count:t,source:r}=qu(e.content),i=await DL({...e,existingNames:a});i&&(Gu(i.name,t,r),n={name:i.name,content:i.content})}else if(Di(s,e)===`codex`){let e=wi(s);for(let{displayName:t,data:r}of e){let e=t.replaceAll(`/`,`__`)+`.codex`,i=JSON.stringify(r),{count:o,source:s}=qu(i),c=await DL({name:e,content:i,existingNames:a});c&&(Gu(c.name,o,s),n={name:c.name,content:c.content})}}else{let e=qu(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 r=await DL({name:t.name,content:s,existingNames:a});if(!r)continue;Gu(r.name,e.count,e.source),n={name:r.name,content:r.content}}}catch(e){alert(`Failed to load ${t.name}: ${e.message}`)}if(o.length>0){let e=o.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${o.join(`, `)}`)}await Q(),n?await ML(n.name,n.content):r?(eJ(r),vL(r,I.bundleDetailsTab),X(),await Q(),oJ(r)):t&&await jL(t),aJ(i).catch(()=>{})}function jL(e){return jI(e,e=>EL(e.name),e=>(SL(new Set),VL(),I.droppedLockfile=e,I.bundleSourceLockfile=!0,I.currentView=`lockfile`,X(),Q()),t=>alert(`Failed to load ${e.lockfile.name}: ${t.message}`))}async function ML(e,t,{workspaceId:n}={}){if(L())return;let r=av();I.currentManagedTeam=null,I.currentManagedReport=null,I.currentReportWorkspace=ew(e,n);let i=new Set(z().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(SL(i),I.reports=[],t_(),I.workspaceMerges=[],I.revalidateConflicts=new Map,I.currentFile=e,I.currentWorkspace=null,I.currentLinks=null,I.managedReport=null,I.managedReports=[],I.managedComments.clear(),I.managedIssues.clear(),I.currentView!==`findings`&&I.currentView!==`files`&&(I.currentView=`findings`),I.repoUrl=nc(e),I.repoEditing=!1,xL(),Ja(_L,Ud(e,I.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Xc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Bv()&&!J(r)){await ML(e);return}J(r)||(I.currentFile=null,await Q());return}if(wL(t)){let t=z().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&Ch(t.id,e));if(t)try{if(await Gh(t.id),J(r))return;let n=await Ee({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(J(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await ML(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),J(r))return}J(r)||(I.currentFile=null,await Q());return}alert(`Failed to read ${e}: ${t.message}`),I.currentFile=null,await Q();return}if(J(r))return}let a=l(t);if(a?(I.currentLinks={name:e,...a},I.currentView=`links`,X()):await KL(e,t,r),!J(r)){for(let e of i)H.openSession(e),H.refreshSession(e),Gh(e);return await Q(),!0}}function NL(e){return I.managedSession?.role===`admin`&&FL({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function PL(e,t,{history:n=!0,tab:r=I.teamDependenciesTab}={}){let i=L();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?I.managedTeams.find(t=>t.id===e):z().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!ui.has(r)))return!1;if(i&&n&&K.active)return K.navigate(vi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},I.managedTeams));t===`dependencies`&&(I.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=av();return SL(new Set),VL({forgetLastView:!1}),I.currentWorkspace=s,I.currentManagedTeam=i?e:null,I.currentView=a,i&&(I.bundles=$x(I.managedTeams)),B.classList.add(`active`),rh.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ja(_L,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function FL(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!L()||!e||!Array.isArray(e.reports))return!1;if(n&&K.active)return K.navigate(vi({view:`findings`,teamId:e.id,reportId:t},I.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=av(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=iv(),s=t===null?null:e.reports.find(e=>e.id===t);SL(new Set),bb(),xq(t===null&&!r?e.id:null),B.classList.add(`active`),rh.classList.add(`hidden`),I.currentView=`findings`,I.reports=[],t_(),I.workspaceMerges=[],I.revalidateConflicts=new Map,I.currentFile=s?.filename??null,I.currentWorkspace=t===null?`managed-team:${e.id}`:null,I.currentManagedTeam=e.id,I.currentManagedReport=t,I.managedReports=r?[]:t===null?e.reports.filter(e=>e.visible!==!1).map(e=>({id:e.id,filename:e.filename})):s.analyzer===c?[]:[{id:s.id,filename:s.filename}],I.managedComments.clear(),I.managedIssues.clear(),I.managedReport=null;let l=r?void 0:GI(o),u=r?null:Ax(e.id,{reportId:a?.id??null});Q();let d;try{d=r?await(await q()).fetchManagedLinkWorkspace(t,{signal:o}):await Ax(e.id,{reportId:a?.id??null,lite:!0})}catch(e){return J(i)||await RL(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(d===null||t!==null&&!d.some(e=>e.id===t))return await RL(`Could not load all team reports. Please try again.`),!1;let f=d.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),p=d.filter(e=>t===null||f||e.id===t),m=p.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));I.currentFile=t===null?null:d.find(e=>e.id===t).filename,Mu(e.id,d),I.managedReports=p.map(e=>({id:e.id,filename:e.filename})),I.managedReport=t===null?null:I.managedReports[0]??null,I.currentReportWorkspace=null,I.currentLinks=null,I.selectedBundle=null,I.selectedBundleWorkspace=null,I.scanSelection=null,I.repoUrl=``,I.repoEditing=!1,xL();for(let e of m)if(await KL(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo,keepLens:!!d.folded}),J(i))return!1;let h=async(e,t=CI(I.currentManagedTeam,e),n=void 0)=>(await Promise.all(m.flatMap(r=>[bI(r.id,{renderView:!1,signal:e,readAnnotations:t,except:n}),fw(r.id,{signal:e,readAnnotations:t,except:n})]))).every(Boolean)&&!e.aborted&&!J(i),g=f?void 0:l,_=Promise.withResolvers(),v=null;if(u&&uL(e.id,u,()=>{_.promise.then(()=>X())},{folded:d.folded??!1,lens:d.lens,shown:_.promise,signal:o,replace:e=>LL(e,m,{gen:i,hydrate:h,annotations:g,opening:v})}),m.length>0){let e=r?await h(iv()):await WI({hydrate:h,annotations:g});if(J(i))return!1;if(!e)return await RL(`Could not load report annotations. Open the team or report again to retry.`),!1}if(f){if(I.currentView=`links`,I.currentLinks={name:f.filename,groups:f.data.links,skipped:0,...r?{managedId:t}:{}},!await bL(i))return!1}else if(m.length===0)Sq();else if(j_(s_()),!await bL(i))return!1;return WI(),await Q(),v=IL.map(e=>I[e]),_.resolve(!0),!0}var IL=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`];async function LL(e,t,{gen:n,hydrate:r,annotations:i,opening:a}){let o=new Map(e.map(e=>[e.id,e])),s=t.map(e=>o.get(e.id));if(J(n)||s.some(e=>!e))return!1;let c=new Set(I.reports.flatMap(e=>e.groups.flat().map(e=>e.id))),l=document.querySelector(`#findings-body-slot`),u=null,d=!1;l?.setAttribute(`inert`,``);try{I.reports=[],t_();for(let e of s){let t=await KL(e.filename,e.data,n,{renderView:!1,managedReportId:e.id,managedRepo:e.repo,keepFilters:!0,keepLens:!0});if(J(n))return!1;if(!t)return await RL(`Could not load all team reports. Please try again.`),!1}if(d=IL.every((e,t)=>I[e]===a[t]),Vq(),u=IL.map(e=>I[e]),!await WI({hydrate:(e,t)=>r(e,t,c),annotations:i})||J(n))return J(n)||await RL(`Could not load report annotations. Open the team or report again to retry.`),!1}finally{l?.removeAttribute(`inert`)}return d&&IL.every((e,t)=>I[e]===u[t])&&j_(s_()),!0}async function RL(e){await UL({history:!1}),Ux(e)}async function zL(e){if(L())return;I.currentManagedTeam=null,I.currentManagedReport=null,I.managedReport=null,I.managedReports=[],I.managedComments.clear(),I.managedIssues.clear();let t=z().find(t=>t.id===e);if(!t)return;let n=av();SL(new Set([e])),I.currentView!==`findings`&&I.currentView!==`files`&&(I.currentView=`findings`),Vr(`workspace`,e),I.reports=[],t_(),I.workspaceMerges=[],I.revalidateConflicts=new Map,I.currentFile=null,I.currentWorkspace=e,I.currentReportWorkspace=null,I.currentLinks=null,I.repoUrl=``,I.repoEditing=!1,xL(),Ja(_L,`ws:${e}`).catch(()=>{}),t.reports.length===0&&CL();let r=await Pm(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Xc(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(!l(r)&&(await KL(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&CL(),i&&Nm(t)?.appMode&&(I.showRevalidation=!0,I.upstreamOnly=!1,I.revalidationDetailed=!1,Vq());let s=I.reports.slice();mL(t,s,r,{complete:i,isCurrent:()=>!J(n)&&I.currentWorkspace===e&&[`findings`,`files`].includes(I.currentView)});let c=Q().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(j_(s_()),!await bL(n))return}else Sq();let u=IL.map(e=>I[e]);gL(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||I.currentWorkspace!==e||![`findings`,`files`].includes(I.currentView)||IL.some((e,t)=>I[e]!==u[t])||(I.showRevalidation=!0,I.upstreamOnly=!1,I.revalidationDetailed=!1,Vq(),j_(s_()),await bL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),H.openSession(e),H.refreshSession(e),Gh(e),await c}async function BL({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!I.currentFile)return;let n=av(),r=I.currentFile;Ku(r),oc(r,``);for(let e of t)try{let t=await Uh(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 el(r),!J(n)&&(await bu(r,null),!J(n))){if(e===`wipe`){try{await Hp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(VL(),await Q())}}function VL({forgetLastView:e=!0}={}){eE(),I.currentManagedTeam=null,I.currentManagedReport=null,I.currentFile=null,I.currentWorkspace=null,I.currentReportWorkspace=null,I.currentLinks=null,I.managedReport=null,I.managedReports=[],I.managedComments.clear(),I.managedIssues.clear(),I.selectedBundle=null,I.selectedBundleWorkspace=null,I.scanSelection=null,I.bundleDetails=null,I.bundleDetailsTab=`overview`,I.bundleSourceFile=null,I.bundleSourceFindingIdx=null,I.selectedPackage=null,I.selectedPackageVersion=null,I.packageDetailsTab=`overview`,I.packageSlideTriage=null,I.packageSlideTransient=!1,I.expandedPackages.clear(),I.selectedRepository=null,I.repositoryDetailsTab=`overview`,I.repositorySlideTriage=null,I.repositorySlideTransient=!1,I.filesSelectedFile=null,I.tableSelectedGid=null,I.kanbanPopoverGid=null,I.kanbanExpandedColumn=null,I.focusGid=null,I.activeTabByGroup.clear(),I.reports=[],t_(),I.workspaceMerges=[],I.revalidateConflicts=new Map,I.repoUrl=``,I.repoEditing=!1,I.shownTriage=null,I.droppedLockfile=null,I.currentView=`findings`,xL(),e&&Ya(_L),CL()}function HL(e){av(),SL(new Set),VL(e)}async function UL({history:e=!0}={}){return e&&L()&&K.active?K.navigate({view:`home`}):(av(),SL(new Set),VL({forgetLastView:!L()}),await Q(),!0)}async function WL({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!I.selectedBundle)return;let t=av(),n=I.selectedBundle;for(let r of e)try{let e=await Wh(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 _l(n),J(t)||(await Cu(n,null),J(t)))return;I.selectedBundle=null,I.selectedBundleWorkspace=null,I.bundleDetails=null,I.bundleSourceFile=null,I.bundleSourceFindingIdx=null;let r=qa(_L);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ya(_L),tp(n),I.bundles=await fl(),!J(t)&&(X(),await Q())}async function GL(e,t=`detach`,{triage:n=`keep`}={}){let r=z().find(t=>t.id===e);if(!r)return;av();let i=Array.isArray(r.reports)?[...r.reports]:[];if(H.closeSession(e),Kh(e),t===`delete`){for(let e of i){try{await el(e)}catch{}Ku(e),oc(e,``)}if(n===`wipe`)try{await Hp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=I.currentWorkspace===e,o=t===`delete`&&I.currentFile!=null&&i.includes(I.currentFile);(a||o)&&VL(),await du(e),await Q()}async function KL(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null,keepFilters:o=!1,keepLens:s=!1}={}){let c=()=>n!==null&&J(n);try{if(await Promise.all([Vr(`report`,e),Vr(`workspace`,I.currentWorkspace||I.currentReportWorkspace)]),c()||(await Bd(),c()))return;let{data:l,reason:u}=i===null?L()?b(t,e):Oi(t):{data:structuredClone(t),reason:null};if(!l)throw Error(u);let d=I.reports.length===0,f=Ei(l)??[],p=f.flatMap(Tg);if(await Ai(p),c())return;let m=new Set(p.filter(cr).map(e=>e.source??l.source??null)),h=a??l?.repo,g=Si({repo:h}),_=g??(i==null?nc(e):``),v=Ci(h),y=Br([{groups:f.map(Tg),tree:l.tree,treeDependencies:l.treeDependencies}]),x=[];for(let t of f){let n=Tg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:I.nextFindingId++,_repoFallback:_,_repoDirectory:v,_repoCommit:$n(l,g),_reportName:e,_depsDirectory:y,_managedReportId:i,_bundleHashes:l.bundleHashes??[]};xi(n,l),n._source=n.source??l.source??null,`isApp`in n||(n.isApp=Hi(n,n._source)),n._sourcePass=m.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}x.push(r)}return Ti(x),I.reports.push({type:l.type||`analysis`,source:l.source??null,fileName:e,_managedReportId:i,groups:x,repo:g,tree:l.tree??null,treeFiles:l.treeFiles??null,treeDependencies:l.treeDependencies??null,bundleHashes:l.bundleHashes??[]}),On(I.reports),jn(I.reports)&&t_(),I.revalidateConflicts=a_(),Vq({held:s}),d&&!o&&(v_(),j_(s_())),r&&await bL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>KL(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(I.filterSeverities=new Set(e)),t!==void 0&&(I.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`)&&AL(e.dataTransfer.files)}),rh.addEventListener(`dragover`,e=>{e.preventDefault(),L()||rh.classList.add(`hover`)}),rh.addEventListener(`dragleave`,()=>rh.classList.remove(`hover`)),rh.addEventListener(`drop`,e=>{e.preventDefault(),rh.classList.remove(`hover`),AL(e.dataTransfer.files)});var qL=null;function JL(){L()||(qL||(qL=document.createElement(`input`),qL.type=`file`,qL.multiple=!0,qL.hidden=!0,qL.addEventListener(`change`,()=>{let e=[...qL.files];e.length>0&&AL(e),qL.value=``}),document.body.append(qL)),qL.click())}rh.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){TZ(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){Sx(I.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=I.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&FL(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){zL(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&JL()});function YL({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?Qt(i):Qt(t)??(e===`127.0.0.1`?Zt:null)}function XL(){return YL({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:I.serverMode,localMode:I.localMode,deepviewScanServer:I.deepviewScanServer})}function ZL(e){return L()?!!e.managedId&&[`admin`,`manage`].includes(I.managedSession?.role):!e.managedId&&!!XL()}async function QL(e=null,{mode:t}={}){let n=I.selectedBundleWorkspace,r=G();if(await DZ(),r!==G()||e&&!ZL(e))return;if(L()){e&&await TZ(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!XL())return;let i=await Fe().then(()=>!0,()=>!1);if(!XL()||r!==G())return;if(!i){Ux(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=UL(),o=G();await a,XL()&&o===G()&&(I.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,I.currentView=`scan`,X(),Q())}function $L(){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=tr(`${ca}<span>Scan</span>`),t.addEventListener(`click`,()=>{QL()}),e.append(t));let n=XL();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=I.bundles?.find(e=>e.integrity===I.selectedBundle);r&&(r.hidden=!i||!ZL(i))}var eR=aM(`./compare.js`),tR=`@preventive/triage`;function nR(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 rR(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function iR(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 aR(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 oR(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:nR(n.name,n.version)}:{name:rR(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}=oR(iR(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:tR}]},component:o},components:a.map(e=>{let t=nR(e.name,e.version);return{type:`library`,"bom-ref":t,name:e.name,version:e.version,purl:t}})};return`${JSON.stringify(s,null,2)}
|
|
188
|
+
`}function lR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function uR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=oR(iR(e),t),o=rR(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=[lR(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,nR(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: ${tR}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
|
|
189
|
+
`}function dR(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 fR(e,t,n){if(t){let t=dR(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 pR(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(`
|
|
190
|
+
`),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 mR(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 hR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function gR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=fR(n,r,i);if(o.error)return{error:o.error};(hR.tag!==e||hR.useRegex!==r||hR.caseSensitive!==i)&&(hR.tag=e,hR.useRegex=r,hR.caseSensitive=i,hR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<hR.entries.length;e++){let t=hR.entries[e],n=s(t.query);if(n===c)return hR.entries.splice(e,1),hR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?mR(l,o):pR(t,o,a??[...t.keys()].toSorted());return hR.entries.unshift({query:n,result:d}),hR.entries.length>8&&hR.entries.pop(),d}var _R=200,vR=28,yR=12;function bR(e,t){let n=t.length>0?t[0][0]:0;return SR(e,t,n-(e.length-e.trimStart().length)>vR?n-yR:0,_R)}function xR(e,t){let n=bR(e,t);return j`${n.clipped?j`<span class="bundle-search-clip">…</span>`:N}${CR(n.text,n.ranges)}`}function SR(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 CR(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(j`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function wR(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 TR(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=Lr(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,wR(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 ER=216,DR=48,OR=32,kR=20,AR=24,jR=20,MR=10;function NR(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:kR)});let o=Math.min(t,ER*5+kR*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:kR),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function PR(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 FR=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function IR(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=FR(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:ER),c=e.y+i.y+DR/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 LR(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+ER/2,r.y+i.y+DR/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||FR(o.get(e))-FR(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=IR(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=IR(n,t.fromPackage,!1,i.get(t)),s=IR(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:PR([...n,...o,...t.toReversed()])}})}function RR(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=DR,a=ER;if(r===0&&Math.abs(t.x-e.x)===a+kR){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+AR){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*(kR/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 PR([[s,c],[l,c],[l,f],[u,f],[u,p]])}function zR(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:ER+MR*2,height:DR};let a=t.length>1,o=Math.max(1,Math.floor((r-MR*2+kR)/(ER+kR))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?MR:0,l=Math.ceil(t.length/s),u=a?jR:0,d=(a?TR(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(ER+kR),y:c+u+e.row*(DR+AR)})),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:RR(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*ER+(s-1)*kR+c*2,height:l*DR+(l-1)*AR+c*2+u}}function BR(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 VR=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function HR(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=BR(t,n);return{packageKey:r.ecosystem?VR(r):r.name,packageGroup:Xr(``,{packageDir:t})}}function UR(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Vt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=ye(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,BR(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 Te(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(zr(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}=ke(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,BR(`.`));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=VR(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Xr(``,{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 WR(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Dn(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-OR-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...zR(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>NR(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=LR(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 GR(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 KR=100,qR=new WeakMap;function JR(e){let t=e?.kind===`stasis`?e.bundle?.imports:e?.kind===`sourcemap`&&(e.edges||e.map)?jt(e):null;if(!t||(t.size??t.length)===0)return null;if(qR.has(t))return qR.get(t);let n=new Map,r=(e,t,r)=>{if(typeof r!=`string`||r===e)return;n.has(r)||n.set(r,new Map);let i=n.get(r);i.has(e)||i.set(e,new Set),t!==void 0&&i.get(e).add(t)};if(e.kind===`stasis`)for(let e of t.values())for(let[t,n]of e)for(let[e,i]of n)for(let n of typeof i==`string`?[i]:i instanceof Map?i.values():[])r(t,e,n);else for(let[e,n,i]of t)r(e,i,n);return qR.set(t,n),n}var YR=new WeakMap;function XR(e,t,n){let r=e.get(t);if(typeof r!=`string`)return null;YR.has(e)||YR.set(e,new Map);let i=YR.get(e),a=JSON.stringify([t,...n]);if(!i.has(a)){let e=-1;for(let t of n)for(let n of[`'`,`"`,"`"]){let i=r.indexOf(`${n}${t}${n}`);i!==-1&&(e===-1||i<e)&&(e=i)}let t=null;if(e!==-1){t=1;for(let n=r.indexOf(`
|
|
191
|
+
`);n!==-1&&n<e;n=r.indexOf(`
|
|
192
|
+
`,n+1))t++}i.set(a,t)}return i.get(a)}function ZR(e,t){let n=JR(e);if(!n)return null;let r=Nt(e);return[...n.get(t)??[]].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>{let n=r.has(e);return{path:e,specifiers:[...t].toSorted(),held:n,line:n?XR(r,e,t):null}})}var QR=j`<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="M6 4.5V2h5.5L14 4.5V14H6v-2.5"/><path d="M1.5 8h8M7 5.5 9.5 8 7 10.5"/></svg>`,$R=e=>`${e.toLocaleString()} ${e===1?`file`:`files`}`;function ez(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.offsetHeight||200,a=t.offsetWidth||320,o=Math.max(4,Math.min(r.left,window.innerWidth-a-4)),s=r.bottom+4;t.style.left=`${o}px`,t.style.top=`${s+i>window.innerHeight-4&&r.top>i+4?r.top-i-4:s}px`}function tz(e,t){let n=ZR(e,t);if(!n)return N;let r=e.kind===`stasis`&&e.bundle.entries?.has(t),i=n.length===0?`Imported by no file${r?` · an entry point`:``}`:`Imported by ${$R(n.length)}`;return j`<button type="button" class="bundle-code-importers-toggle" popovertarget="bundle-code-importers" popovertargetaction="toggle" aria-label="${i}" data-tooltip="${i}">${QR}<span class="bundle-code-importers-count">${n.length.toLocaleString()}</span></button><div popover="auto" id="bundle-code-importers" class="bundle-code-importers" role="menu" aria-label="Imported by" @beforetoggle="${ez}" @click="${e=>{e.target.closest(`[data-bundle-view-source]`)&&e.currentTarget.hidePopover()}}"><div class="bundle-code-importers-head">${n.length===0?i:`Imported by ${$R(n.length)}`}</div>${n.slice(0,KR).map(t=>{let n=j`${Ue(t.path,Ve(e,t.path))}<span class="bundle-code-importers-path mono">${t.path}</span>${t.specifiers.length>0?j`<span class="bundle-code-importers-specifier mono">${t.specifiers.join(`, `)}</span>`:N}`;return t.held?j`<button type="button" class="bundle-code-importers-item" role="menuitem" data-tooltip-truncated data-tooltip="${t.path}" data-bundle-view-source="${t.path}" data-bundle-view-line="${t.line??N}">${n}</button>`:j`<span class="bundle-code-importers-item is-absent" role="menuitem" aria-disabled="true" data-tooltip="${`${t.path} \xB7 not in this bundle`}">${n}</span>`})} ${n.length>KR?j`<div class="bundle-code-importers-more">and ${$R(n.length-KR)} more</div>`:N}</div>`}var nz=new Map,rz=new Map,iz=[];function az(e){if(!e?.managedId)return nz;let t=I.managedSession,n=I.managedTeams&&Ls(I.managedTeams),r=[t?.id,t?.role,t?.csrfToken,I.currentManagedTeam,n];return r.some((e,t)=>e!==iz[t])&&(iz=r,rz=new Map),rz}var oz=new WeakMap;function sz(e){return oz.has(e)||oz.set(e,{reasons:ye(e),selected:``}),oz.get(e)}function cz(e,t=sz(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var lz=`deepview.advisories.proxyConsent`;function uz(){try{return localStorage.getItem(lz)===`1`}catch{return!1}}function dz(){try{localStorage.setItem(lz,`1`)}catch{}}function fz(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 pz(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 mz(e){if(e.bundle&&!pz(e))return!0;let t=az(e).get(cz(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function hz(e,t,n=!1){return!e||e.managedId&&!_z(e)||gz(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:TL(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||pz(t):fz(t):!1}function gz(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function _z(e){let t=I.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?I.managedTeams.some(t=>(I.currentManagedTeam==null||t.id===I.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function vz(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var yz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function bz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function xz(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(bz),yz):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 Sz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function Cz(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(vz(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 wz(e,t){return Ez(e,t)}function Tz(e,t){return Ez(e,t,!0)}async function Ez(e,t,n=!1){if(!e?.integrity||!e.managedId&&!uz())return;let r=az(e),i=cz(e),a=r.get(i);if(n){if(!Sz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=sz(e),c=e.managedId?new Map:Ht(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await Nx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[yz(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 Cz(c):{};r.set(i,{state:`ok`,byPackage:xz(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 Dz(e,t){if(!e?.integrity)return;let n=az(e),r=cz(e);n.get(r)?.state===`error`&&(n.delete(r),await wz(e,t))}var Oz={critical:0,high:1,moderate:2,low:3,info:4};function kz(e){return Oz[e]??999}function Az(){let e=typeof window>`u`?``:window.location.host;return j`<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 jz(e,t=()=>{},n=null){let r=e?sz(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=Nz(e),o=!!e?.managedId&&!mz(e);return j`<div class="bundle-advisories-panel">${a!==N||i.length>0||o?j`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?j`<div class="bundle-advisories-scopes">${i.length>0?j`<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=wz(e,t);return t(),a}}"></bundle-scope-selector>`:N} ${o?Mz(e,t):N} ${o&&n?j`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${A(ca)}<span>Validate</span></button>`:N}</div>`:N}</div>`:N} ${Fz(e)}</div>`}function Mz(e,t){if(!e?.managedId)return N;let n=az(e).get(cz(e)),r=!!n?.recheckingRepositories;return j`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!Sz(e,n)}" aria-busy="${String(r)}" @click="${()=>Tz(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function Nz(e){if(!e||!e.managedId&&!uz())return N;let t=az(e).get(cz(e));if(t?.state!==`ok`)return N;let n=t.query.size,r=t.byPackage.size;if(r===0)return N;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return j`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function Pz(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?j`No packages could be audited.`:j`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${sz(e).selected?`this scope`:`this bundle`}.`}function Fz(e){if(!e)return j`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return j`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!uz())return Az();let t=az(e).get(cz(e));if(!t||t.state===`loading`)return j`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return j`<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?j`<div class="bundle-advisories-empty"><span>${Pz(e,t)}</span></div>`:N;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=>kz(e.severity))),a=Math.min(...r.map(e=>kz(e.severity)));return i===a?e.localeCompare(n):i-a});return j`${n}<div class="bundle-advisories">${t.repositoryError?j`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:N} ${t.skipped.length>0?j`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>j`<li><span class="mono">${yz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:N}<ul class="bundle-advisories-list">${r.map(([n,r])=>Iz(e,n,r,t.query.get(n),()=>az(e).get(cz(e))?.byPackage===t.byPackage))}</ul></div>`}function Iz(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=kz(e.severity)-kz(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return j`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?j`<span class="bundle-advisories-section-versions">${o.map(n=>j`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>Ne({details:e,packageKey:t,version:n,reason:sz(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:N}</div><ul class="bundle-advisories-rows">${a.map(e=>cN(e,({title:e,severity:t,details:n})=>ct({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var Lz=3e5,Rz=3e4,zz=2,Bz=5,Vz=20,Hz=new Map,Uz=[],Wz=[],Gz=new Map,Kz=new Set,qz=null,Jz=0;function Yz(e){return Kz.add(e),()=>Kz.delete(e)}var Xz=e=>{for(let t of Kz)t(e)};function Zz(){Hz.clear(),Uz.length=0,Wz.length=0,Gz.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{Zz(),Xz()});function Qz(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==qz&&(Zz(),qz=e),Hz}var $z=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,eB=e=>Number.isSafeInteger(e)&&e>=0?e:null,tB=new Set([`git`,`tarball`,`integrity`]),nB=e=>`${e.name}@${e.version??``}\0${e.patch?.hash??``}`;function rB(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,reviewers:a,baseline:o,reviewed:s,unsupported:c,patch:l,...u}=e,d=aB(a);return[{...u,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...ai(l?.hash)?{patch:{hash:l.hash,...oi(l.path)?{path:l.path}:{}}}:{},...tB.has(c)?{unsupported:c}:o===!0?{baseline:o}:s===!0?{reviewed:s}:eB(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...eB(i)>0?{commented:i}:{},...d.length>0?{reviewers:d}:{}}}]}var iB=new Set([`accept`,`accept-with-nits`,`request-changes`,`reject`]),aB=e=>Array.isArray(e)?e.flatMap(e=>typeof e?.login==`string`&&iB.has(e.status)?[{login:e.login,status:e.status,...e.passes===!0?{passes:!0}:{},...e.comment===!0?{comment:!0}:{}}]:[]):[],oB=e=>Array.isArray(e)?e.flatMap(rB):[];function sB(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(rB),more:eB(e.more)??0,unreviewed:oB(e.unreviewed),moreUnreviewed:eB(e.moreUnreviewed)??0,unsupported:oB(e.unsupported),moreUnsupported:eB(e.moreUnsupported)??0,moreLocked:eB(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.head==`string`&&/^[\da-f]{40}$/u.test(e.head)?{head:e.head}:{},...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},...eB(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...eB(n.toReview)===null?{}:{toReview:n.toReview},...eB(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...eB(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}:{},...eB(n.unasked)>0?{unasked:n.unasked}:{},...eB(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 cB(){for(;Jz<zz&&Uz.length+Wz.length>0;){let e=Uz.shift()??Wz.shift(),[t,n]=e.background?[Wz,Vz]:[Uz,Bz],r=[e];for(let i=0;i<t.length&&r.length<n;){let n=t[i];n.pull.repoId===e.pull.repoId&&n.review===e.review&&n.listed===e.listed?r.push(...t.splice(i,1)):i++}for(let e of r)Gz.delete(e.key);Jz++,uB(r).finally(()=>lB(r))}}function lB(e){Jz--;for(let t of e)Xz(t.pull);cB()}function uB(e){let[{pull:{repoId:t,number:n},review:r,listed:i}]=e;return e.length===1?Lb(t,n,{review:r,listed:i}).then(e[0].settle,e[0].settle):Rb(t,e.map(e=>e.pull.number),{review:r,listed:i}).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 dB(e,t,n=!1,{background:r=!1,listed:i=!1}={}){let a=Qz(),o=`${e}\0${t}\0${n}${i?`\0listed`:``}`,s=a.get(o);if(s&&Date.now()<s.until){let e=Gz.get(o);return!r&&e?.background&&(Wz.splice(Wz.indexOf(e),1),e.background=!1,Uz.push(e)),s}let c=s?.status===`ready`?{...s,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};a.set(o,c);let l={key:o,background:r,review:n,listed:i,pull:{repoId:e,number:t},settle:e=>{if(a.get(o)!==c)return;let t=fB(e,s);t?a.set(o,t):a.delete(o)}};return Gz.set(o,l),(r?Wz:Uz).push(l),cB(),c}function fB(e,t){let n=e instanceof Error?e:null;if(!n)try{return{status:`ready`,until:Date.now()+Lz,...sB(e)}}catch(e){n=e}return n?.name===`AbortError`?t?.status===`ready`?t:null:{status:`error`,until:Date.now()+Rz,error:n?.message||`Its lockfiles could not be read.`}}function pB(e,t,n=!1){let r=Qz();for(let[i,a]of t){let t=`${e}\0${i}\0${n}`,o=Gz.get(t);if(o){let e=o.background?Wz:Uz;e.splice(e.indexOf(o),1),Gz.delete(t)}let s=fB(a,null);s&&r.set(t,s),Xz({repoId:e,number:i})}}function mB(e,t,n=!1){return Qz().get(`${e}\0${t}\0${n}`)??null}var hB=new WeakMap;function gB(e,{lockfiles:t,review:n},r){let i=hB.get(t)??hB.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 _B(e){return gB(`added`,e,()=>vB(e))}function vB({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=nB(r),i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,reviewers:l,...u}=i;n.set(e,{...u,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},...yB(i,r),...xB(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=>SB(e,t)===`wanted`).length}}var yB=(e,t)=>!e.patch?.path&&t.patch?.path?{patch:t.patch}:{},bB={unsupported:0,wanted:1,passed:2,baseline:3};function xB(e,t,n){let r=e=>bB[SB(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{...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...u>0?{commented:u}:{},...l?{reviewers:l}:{}}}}function SB(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 CB(e){return gB(`unreviewed`,e,()=>wB(e))}function wB({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=nB(t),r=n.get(e);n.set(e,r?{...r,...yB(r,t)}:t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function TB(e){return gB(e.cut?`failures-cut`:`failures`,e,()=>EB(e))}function EB({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=>j`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,DB=M`<circle cx="8" cy="8" r="6.25"/>`,OB=M`<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"/>`,kB={issues:{open:Y(M`${DB}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(M`${DB}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(M`${DB}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(M`${OB}<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(M`${OB}<path class="dotted" d="M11.5 10.9V4"/>`),merged:Y(M`<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(M`${OB}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},AB=Y(M`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),jB={success:[`Checks passed`,Y(M`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,Y(M`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,Y(M`<circle class="fill" cx="8" cy="8" r="3"/>`)]},MB={approved:[`Approved`,Y(M`${DB}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,Y(M`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,Y(M`<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"/>`)]},NB=Y(M`<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"/>`),PB=Y(M`<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"/>`),FB=Y(M`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),IB=Y(M`<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 LB(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 RB={claude:j`<span class="agent-logo" aria-hidden="true">${jy(`anthropic`)}</span>`,codex:j`<span class="agent-logo" aria-hidden="true">${jy(`openai`)}</span>`,copilot:j`<span class="agent-logo" aria-hidden="true">${jy(`github-copilot`)}</span>`},zB={claude:`Claude`,codex:`Codex`},BB=new Map;function VB(e){for(let t of e)BB.set(t.id,t)}var HB=e=>zB[e]??BB.get(e)?.name??e;function UB(e){if(RB[e])return RB[e];let t=BB.get(e)?.avatar;return t?j`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:N}var WB=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function GB(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 KB(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]?qB(t,e.branches[0]):null:null}function qB(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 JB=(e,t)=>GB(e)??KB(e,t),YB=`100% 0px`,XB=new WeakMap,ZB=new WeakMap,QB=[],$B=!1,eV=new WeakMap;function tV(e){let t=eV.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,eV.set(e,t)}return t}function nV(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(tV(t))return t;t=t.parentNode}return null}function rV(e){for(let t of e)ZB.get(t.target)?.cb(t.isIntersecting)}function iV(e){let t=e??document,n=XB.get(t);return n||(n=new IntersectionObserver(rV,{root:e,rootMargin:YB,threshold:0}),XB.set(t,n)),n}function aV(e,t){let n=ZB.get(e);n?.io&&n.io.unobserve(e),ZB.set(e,{cb:t,io:null}),QB.push(e),$B||($B=!0,queueMicrotask(oV))}function oV(){$B=!1;let e=QB;QB=[];for(let t of e){let e=ZB.get(t);!e||e.io||(e.io=iV(nV(t)),e.io.observe(t))}}function sV(e){let t=ZB.get(e);t&&(t.io?.unobserve(e),ZB.delete(e))}var cV=2,lV=50,uV=6e3,dV=6e4,fV=new Map,pV=new Map,mV=[],hV=new Set,gV=null,_V=0,vV=!1,yV=e=>{for(let t of hV)t(e)};function bV(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==gV&&(fV.clear(),pV.clear(),mV.length=0,gV=e),fV}var xV=e=>Number.isSafeInteger(e)&&e>=0?e:null,SV=e=>xV(e?.additions)===null||xV(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions},CV=(e,t)=>({status:`ready`,until:1/0,...e,typeless:SV(t.typeless),binary:t.binary===!0}),wV=e=>({status:`error`,until:Date.now()+dV,error:e});function TV(e,t,n){let r=bV(),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),pV.set(i,{asked:[e,t,n],loading:o}),vV||(vV=!0,globalThis.requestAnimationFrame?requestAnimationFrame(DV):setTimeout(DV,0)),o}function EV(e){let t=bV();for(let[n,r,i,a]of e){let e=SV(a),o=`${n}\0${r}\0${i}`;!e||t.get(o)?.status===`ready`||(pV.delete(o),t.set(o,CV(e,a)),yV(o))}}function DV(){vV=!1;let e=0,t=[];for(let[n,r]of pV){let i=encodeURIComponent(JSON.stringify(r.asked)).length+3;(t.length===lV||t.length>0&&e+i>uV)&&(mV.push(t),t=[],e=0),t.push({key:n,...r}),e+=i}t.length>0&&mV.push(t),pV.clear(),OV()}function OV(){for(;_V<cV&&mV.length>0;){let e=mV.shift().filter(({key:e,loading:t})=>fV.get(e)===t);e.length!==0&&(_V++,AV(e).finally(kV))}}function kV(){_V--,OV()}function AV(e){let t=fV,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),yV(e))};return Ub(e.map(e=>e.asked),e=>{let t=SV(e);r(`${e.name}\0${e.version}\0${e.otherVersion}`,typeof e.error==`string`?wV(e.error):t?CV(t,e):wV(`The server answered with no lines.`))}).then(()=>{for(let e of[...n.keys()])r(e,wV(`The server answered with none of it.`));return null},e=>{for(let t of[...n.keys()])r(t,e?.name===`AbortError`?null:wV(e?.message||`Its lines couldn’t be counted.`))})}var jV=e=>e.was?.find(t=>t!==e.version)??`(empty)`,MV=(e,t)=>j`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,NV=class extends ya{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(){hV.add(this._notify),!this._near&&aV(this,e=>{!e||this._near||(this._near=!0,sV(this),this.requestUpdate())})}_unwatch(){hV.delete(this._notify),sV(this)}render(){if(!this._near||!this.name||!this.version)return N;let e=TV(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;if(e.status===`loading`)return j`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`;if(e.status===`error`)return j`<span class="npm-delta is-error" data-tooltip="${e.error}" .tooltipContent="${j`<div class="compare-tip"><div class="compare-tip-head">Lines not counted</div><div>${e.error}</div></div>`}">?</span>`;let n=j`<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?j`<span class="compare-tip-label">Types aside</span><span>${MV(e.typeless.additions,e.typeless.deletions)}</span>`:N}</div>${e.typeless?j`<div class="compare-tip-note">Types aside: leaving out the declaration files changed in types alone</div>`:N} ${e.binary?j`<div class="compare-tip-note">Binary files changed too, which no line counts</div>`:N}</div>`;return j`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}" .tooltipContent="${n}">${MV(e.additions,e.deletions)}${e.binary?j`<span class="npm-delta-binary">, binary</span>`:N}${e.typeless?j`<span class="npm-delta-typeless">(${MV(e.typeless.additions,e.typeless.deletions)} -types)</span>`:N}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,NV);var PV=class extends ya{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()?j`<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()}">${kw}</button> ${this._error?j`<span role="alert">Could not copy to the clipboard.</span>`:N}`:N}};customElements.define(`dependency-review-copy`,PV);var FV=12e4,IV=3e4,LV=3,RV=12,zV=48,BV=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],VV=(e,t)=>e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number,HV=e=>(t,n)=>(n.item[e]??0)-(t.item[e]??0)||VV(t,n),UV=(e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||VV(e,t),WV={newest:[`Newest`,HV(`createdAt`)],updated:[`Updated`,HV(`updatedAt`)],fewest:[`Fewest to review`,UV]},GV={status:`loading`,until:1/0},KV=new Map,qV=new Set,JV=new Map,YV=new Map,XV=null,ZV=!1,QV=()=>{for(let e of qV)e()};function $V(){KV.clear();for(let e of JV.keys())e.abort();JV.clear()}function eH(){ZV||(ZV=!0,queueMicrotask(()=>{ZV=!1;let e=new Set(YV.values());for(let[t,n]of JV)e.has(n)||t.abort()}))}globalThis.addEventListener?.(`dependency-review-changed`,()=>{$V(),QV()});function tH(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==XV&&($V(),XV=e),KV}function nH(e,t){let n=tH(),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&&rH(e,r,r.length===t.length?null:r,LV),i}function rH(e,t,n,r){let i=KV,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;JV.set(s,e);let c=null;Hb(e,e=>{s.signal.aborted||(typeof e.done==`boolean`?c=e.done?[]:Array.isArray(e.unread)?e.unread:[]:a.has(e.repoId)&&(iH(e,a.get(e.repoId),t=>o(e.repoId,t)),QV()))},{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,oH(e,r,c===null?`The server’s answer ended short.`:t.includes(e)?`Reading its pull requests took too long.`:null));return n&&rH(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,oH(t,n,e?.message||`It couldn’t be read.`))}).finally(()=>{JV.delete(s),QV()})}function iH(e,t,n){if(Array.isArray(e.deltas)&&EV(e.deltas),typeof e.error==`string`)n({status:`error`,until:Date.now()+IV,error:e.error});else if(e.branch===null)n({status:`ready`,until:Date.now()+FV,branch:null});else if(e.branch){let t;try{t=sB(e.branch)}catch(e){n({status:`error`,until:Date.now()+IV,error:e.message});return}let r=(Array.isArray(e.pulls?.items)?e.pulls.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0);n(aH({status:`ready`,branch:t,pulls:{items:r,more:e.pulls?.more===!0}},new Set(r.filter($z).map(e=>e.number))))}else e.dependencies instanceof Map&&t.telling&&(pB(e.repoId,e.dependencies,!0),n(aH(t,new Set([...t.telling].filter(t=>!e.dependencies.has(t))))))}var aH=(e,t)=>t.size>0?{...e,until:1/0,telling:t}:{...e,until:Date.now()+FV,telling:null};function oH(e,t,n){return t.telling?(pB(e,new Map([...t.telling].map(e=>[e,Error(n??`The server’s answer ended short.`)])),!0),{...t,until:Date.now()+IV,telling:null}):n?{status:`error`,until:Date.now()+IV,error:n}:{status:`ready`,until:Date.now()+FV,branch:null}}var sH=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,cH=({repo:e,item:t})=>`${e.name}#${t.number}`,lH={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`,unlocked:`Locked by none of the lockfiles installing the bundle at its commit, so nothing holds its reviews to an integrity`};function uH(e,t){let n=SB(e,t);return n===`unsupported`?{label:`can’t review`,tint:`is-failed`,head:`Can’t be reviewed`,said:lH[e.unsupported]}:e.rejected?{label:`rejected`,tint:`is-failed`,head:`Rejected`,said:`A reviewer rejects it: it wants their newer accepting review`}:n===`wanted`?{label:`${e.reviews}/${t.required}`,tint:`is-wanted`,head:`Reviews`,said:`${sH(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${sH(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`,`${sH(e.commented,`reviewer`)}, counting here alone`]]:[]]}:null}function dH(e,t){let n=uH(e,t);if(!n)return N;let r=j`<div class="compare-tip"><div class="compare-tip-head">${n.head}</div>${n.rows?j`<div class="compare-tip-rows">${n.rows.map(([e,t])=>j`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:j`<div>${n.said}</div>`}</div>`;return j`<span class="team-deps-review ${n.tint}" data-tooltip="${n.said??N}" .tooltipContent="${n.said?r:null}">${n.label}</span>`}var fH={accept:`accepts`,"accept-with-nits":`accepts with nits`,"request-changes":`requests changes`,reject:`rejects`},pH=new Set([`accept`,`accept-with-nits`]),mH=(e,t)=>({passed:`passes`,baseline:`needs none`})[SB(e,t)]??uH(e,t)?.label??null;function hH(e,t,{added:n,above:r,involved:i,here:a}){let o=uH(e,t),s=[n?[`Present`,e.was?.join(`, `)||`none, new`]:null,e.source!==`registry`&&e.from?[`From`,e.from]:null,e.patch?[`Patched`,e.patch.path??`by a patch its lockfile names no file of, which reviews here can’t read`]: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},...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 j`<div class="compare-tip"><div class="team-deps-tip-name">${e.name}${e.version?`@${e.version}`:``}${e.patch?` (patched)`:``}</div>${s.length>0?j`<div class="compare-tip-rows">${s.map(([e,t])=>j`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:N} ${i.length>0?j`<div class="compare-tip-head">Pull requests</div><div class="compare-tip-rows">${i.map(({name:e,adds:t,pkg:n,review:r})=>j`<span class="${e===a?`team-deps-tip-here`:N}">${e}</span> <span>${[t?`adds it`:`locks it`,mH(n,r)].filter(Boolean).join(`, `)}</span>`)}</div>`:N} ${c.size>0?j`<div class="compare-tip-head">Reviewed by</div><div class="compare-tip-rows">${[...c.values()].map(e=>j`<span>${e.login}</span> <span>${fH[e.status]}${pH.has(e.status)&&!e.passes?`, not counted`:``}${e.where?`, in ${e.where}\u2019s comments`:``}</span>`)}</div>`:N}</div>`}function gH(e,t,{others:n=[],adders:r=!1,elsewhere:i=[],above:a=null,added:o=!1,involved:s=[],here:c=null,repoId:l=null,head:u=null}={}){let d=e.source===`registry`&&e.version,f=e.patch&&e.was?.includes(e.version)?e.version:e.was?.find(t=>t!==e.version),p=e.patch?.path&&l&&u?{hash:e.patch.hash,repoId:l,commit:u,path:e.patch.path}:null,m=t?.canReview&&(!e.patch||p)&&SB(e,t)!==`unsupported`,h=d?di({view:`npm`,packageName:e.name,packageSpec:e.version,...m?{bundleTab:`review`,...f?{reviewPackage:e.name,reviewSpec:f}:{},...p?{patch:p}:{}}:{}}):null,g=`${e.name}${e.version?`@${e.version}`:``}${e.patch?` (patched)`:``}`,_=hH(e,t,{added:o,above:a,involved:s,here:c}),v=r?n.filter(e=>!i.includes(e)):n,y=a!==null&&i.includes(a),b=y?i.filter(e=>e!==a):i,x=j`${IB}<span class="team-deps-name">${e.name}${e.version?j`<span class="team-deps-version">@${e.version}</span>`:N}</span> ${e.patch?j`<span class="team-deps-patched">patched</span>`:N} ${d&&!e.patch&&SB(e,t)===`wanted`?j`<npm-delta .name="${e.name}" .version="${e.version}" .base="${jV(e)}"></npm-delta>`:N} ${dH(e,t)} ${a?j`<span class="team-deps-above${y?` is-reviewed`:``}">${a}</span>`:N} ${b.length>0?j`<span class="team-deps-elsewhere">${b[0]}${b.length>1?` +${b.length-1}`:``}</span>`:N} ${v.length>0?j`<span class="team-deps-also">${r?`${v[0]}${v.length>1?` +${v.length-1}`:``}`:`+${n.length}`}</span>`:N}`;return j`<li>${h?j`<a class="team-deps-row" href="${h}" target="_blank" rel="noopener noreferrer" data-tooltip="${g}" .tooltipContent="${_}">${x}</a>`:j`<span class="team-deps-row" data-tooltip="${g}" .tooltipContent="${_}">${x}</span>`}</li>`}var _H=e=>({repoId:e.repo.repoId,head:e.entry.head??null}),vH=Y(M`<path d="m6 4 4 4-4 4"/>`),yH=class extends Xh{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}={}){I.teamDependenciesTab=e;let n=vi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},I.managedTeams);t?K?.pushRoute(n):K?.replaceRoute(n)}updated(){this._shown&&this._shown!==I.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(),qV.add(this._notify),this._unsubscribe=Yz(this._notify),YV.set(this,this.team)}disconnectedCallback(){super.disconnectedCallback(),qV.delete(this._notify),this._unsubscribe?.(),YV.delete(this),eH()}open(e,{repo:t,item:n}){e.preventDefault(),xe({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=RV){if(t.length===0)return N;let i=this._open.has(e);return j`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?j`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${vH}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:N}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return j`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${vH}${t}</button> ${a?j`${this.rows(e,n,r,zV)}${i>0?j`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:N}`:N}</div>`}render(){this.isConnected&&YV.get(this)!==this.team&&(YV.has(this)&&eH(),YV.set(this,this.team));let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()],t=nH(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($z).map(t=>({repo:e,item:t,entry:mB(e.repoId,t.number,!0)??GV}))),a=i.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=_B(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(SB(t,e.entry.review))),n=t.filter(t=>SB(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:TB(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:CB(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted(UV),o=Object.hasOwn(WV,I.teamDependenciesSort)?I.teamDependenciesSort:`newest`,s=o===`fewest`?a:a.toSorted(WV[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(nB(t))??l.set(nB(t),{pkg:t,pulls:[]}).get(nB(t));n.pulls.push(e),!n.patched&&t.patch?.path&&(n.patched={patch:t.patch,pull: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=>[cH(e),e.entry.error])],f=r.flatMap(({repo:e,read:t})=>{let{count:n}=CB(t.branch),r=TB(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,_B(e.entry).versions],[!1,CB(e.entry).versions]])for(let r of n){let n=p.get(nB(r))??p.set(nB(r),new Map).get(nB(r));n.has(cH(e))||n.set(cH(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(cH(e)),g={elsewhere:(e,t=null)=>[...p.get(nB(e))?.values()??[]].filter(e=>e.pkg.commented>0&&(!t||cH(e.pull)!==cH(t))).map(e=>h(e.pull)),named:h,shorten:m,among:e=>[...p.get(nB(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=I.teamDependenciesTab,y=BV.filter(([e])=>e!==`branch`||f.length>0||u&&v===`branch`),b=y.some(([e])=>e===v)?v:`pulls`;this._shown=b;let x={pulls:a.length,versions:l.size,branch:f.reduce((e,{count:t})=>e+t,0)};return j`<div class="team-deps">${dS({tabs:y.map(([e,t])=>({id:e,label:j`${t}${x[e]==null||u&&x[e]===0?N:j`<span class="team-deps-tab-n">${x[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`?eR(()=>j`<dependency-review-list .session="${I.managedSession}" .team="${this.team}"></dependency-review-list>`):j`${u?j`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:N} ${_.length===1?j`<p class="team-deps-quiet" role="alert">${_[0]}</p>`:_.length>1?j`<p class="team-deps-quiet" role="alert" data-tooltip="${_.join(`
|
|
193
|
+
`)}" .tooltipContent="${j`<div class="compare-tip"><div class="compare-tip-head">Couldn’t be read</div><div class="compare-tip-rows">${d.map(([e,t])=>j`<span>${m(e)}</span><span>${t}</span>`)}</div></div>`}">${sH(_.length,`repository or pull request`)} couldn’t be read.</p>`:N} ${!u&&n.length>0&&r.length===0&&d.length===0?j`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:N} ${b===`branch`?N:c.map(({repo:e,read:t})=>j`<p class="team-deps-quiet" role="alert">Only ${m(e.name)}’s ${sH(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${r.length===0?N: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?N:j`<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(nB(t))===e?null:c.get(nB(t));return gH(t,e.entry.review,{others:(n.get(nB(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),..._H(e)})};return j`${e.length>1?j`<div class="team-deps-sort"><span class="bundles-overview-sort" role="group" aria-label="Pull request order">${Object.entries(WV).map(([e,[n]])=>j`<button type="button" aria-pressed="${String(e===t)}" @click="${()=>{I.teamDependenciesSort=e}}">${n}</button>`)}</span></div>`:N}<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!c.has(nB(e))),n=e.wanted.filter(e=>c.has(nB(e)));for(let n of t)c.set(nB(n),e);let r=cH(e),i=CB(e.entry),u=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return j`<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?`${sH(e.toReview,`version`)} to review`:`${sH(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?j`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:N}</div>${this.rows(`${r}:own`,t,l(e))} ${e.untold>0?j`<p class="team-deps-quiet">and ${sH(e.untold,`more version`)} past those listed</p>`:N} ${n.length>0?j`<ul class="team-deps-versions is-above">${n.map(l(e))}</ul>`:N} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${sH(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${sH(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,i.versions,t=>gH(t,e.entry.review,{elsewhere:a(t,e),involved:s(t),here:o(e),..._H(e)}),e.others-i.versions.length):N}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r,among:i}){return e.size===0?t?N:j`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:j`<section class="team-deps-section" aria-label="Versions to review">${this.rows(`versions`,[...e.values()],({pkg:e,pulls:t,patched:a})=>gH(a?{...e,patch:a.patch}:e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e),added:!0,involved:i(e),..._H(a?.pull??t[0])}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r,among:i}){let{versions:a,count:o}=CB(t.branch),s=TB(t.branch),c=s?.unread.flatMap(e=>e.paths)??[],l=[...a,...s?.versions??[]];return j`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${sH(o,`version`)} unreviewed${s?.count?`, ${s.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${c.length>0?`, ${sH(c.length,`lockfile`)} unread`:``}</p>${c.length>0?j`<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)=>j`${t>0?`, `:``}<code>${e}</code>`)}</p>`:N} ${this.rows(`branch:${e.repoId}`,l,r=>gH(r,t.branch.review,{elsewhere:n(r),involved:i(r),repoId:e.repoId,head:t.branch.head??null}),zV)} ${o>a.length?j`<p class="team-deps-quiet">and ${(o-a.length).toLocaleString(`en-US`)} more, not listed</p>`:N}</section>`}};customElements.define(`team-dependencies`,yH);var bH=12e4,xH=3e4,SH=new Map,CH=new Set,wH=null,TH=()=>{};function EH(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==wH&&(SH.clear(),CH.clear(),wH=e),SH}globalThis.addEventListener?.(`dependency-review-changed`,()=>{SH.clear(),TH()});var DH=e=>Number.isSafeInteger(e)&&e>=0?e:0,OH=e=>typeof e?.name==`string`&&typeof e.version==`string`;function kH(e){if(!e?.review)return null;let t=sB(e);return t.review?{...t,versions:DH(e.versions),moreUnlocked:DH(e.moreUnlocked),unlocked:Array.isArray(e.unlocked)?e.unlocked.filter(OH).map(({name:e,version:t})=>({name:e,version:t,unsupported:`unlocked`})):[]}:null}function AH(e){let t=EH(),n=`${e.managedId}\0${e.repoId}\0${e.repoDirectory??``}`,r=t.get(n);if(r&&Date.now()<r.until)return r;let i=r?.status===`ready`?{...r,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};return t.set(n,i),zb(e.managedId).then(e=>({status:`ready`,until:Date.now()+bH,answer:kH(e)})).catch(e=>e?.name===`AbortError`?null:{status:`error`,until:Date.now()+xH,error:e?.message||`It couldn’t be read.`}).then(e=>t.get(n)===i&&(e?t.set(n,e):t.delete(n),TH(),!0)),i}var jH=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,MH=Y(M`<path d="m6 4 4 4-4 4"/>`),NH=e=>e.map((e,t)=>j`${t>0?`, `:``}<code>${e}</code>`);function PH(e){let{versions:t,count:n}=CB(e),r=TB(e),i=e.unlocked.length+e.moreUnlocked,a=r?.unread.flatMap(e=>e.paths)??[],o=[r?.count?`${r.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:null,i?`${i.toLocaleString(`en-US`)} not locked at its commit`:null,a.length>0?`${jH(a.length,`lockfile`)} unread`:null,r?.unchecked?`${jH(r.unchecked,`version`)} past those checked`:null].filter(Boolean),s=`of ${jH(e.versions,`npm version`)}`;return{chip:o.length>0?j`<span class="bundle-review-state is-failed">Fails</span>`:n>0?j`<span class="bundle-review-state is-wanted">${n.toLocaleString(`en-US`)} to review</span>`:j`<span class="bundle-review-state is-passed">${jB.success[1]}Passes</span>`,said:o.length>0?`${o.join(`, `)}${n>0?`; ${n.toLocaleString(`en-US`)} to review`:``}, ${s}`:n>0?s:`${jH(e.versions,`npm version`)}, each reviewed or needing none`,listed:[...r?.versions??[],...e.unlocked,...t],more:Math.max(0,(r?.count??0)-(r?.versions.length??0))+e.moreUnlocked+Math.max(0,n-t.length),unread:a}}function FH(e,t){let{required:n,since:r,reviewedDependencies:i,unasked:a,baselineError:o,baselineUnread:s=[],lockfiles:c}=e.review,l=e.lockfiles.filter(e=>!e.error).flatMap(e=>e.paths),u=e.head?j` at <code>${e.head.slice(0,7)}</code>`:N;return j`<p class="team-deps-quiet">Each version needs ${jH(n,`full, accepting review`)} by as many reviewers, of it whole or compared with any version of its package${i?`, or the server’s reviewed dependencies to pass it`:r?j`; those the repository’s lockfiles locked at <code>${r.slice(0,7)}</code> need none`:N}.</p><p class="team-deps-quiet">${l.length>0?j`As ${NH(l)} ${l.length===1?`locks`:`lock`} them${u}, the nearest first.`:j`No lockfile installing it was read${u}.`}</p>${t.length>0?j`<p class="team-deps-quiet" role="alert">Unread, so what ${t.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${NH(t)}.</p>`:N} ${o?j`<p class="team-deps-quiet" role="alert">The versions locked at the commit reviewed since couldn’t be read (${o}), so every version wants its reviews.</p>`:N} ${s.length>0?j`<p class="team-deps-quiet" role="alert">At the commit reviewed since, ${NH(s.slice(0,5))}${s.length>5?` and ${(s.length-5).toLocaleString(`en-US`)} more`:``} couldn’t be read, so the versions ${s.length===1?`it`:`they`} locked want reviews.</p>`:N} ${a?j`<p class="team-deps-quiet" role="alert">The server’s reviewed dependencies didn’t answer for ${jH(a,`version`)}, so ${a===1?`it wants`:`they want`} reviews.</p>`:N} ${c?j`<p class="team-deps-quiet">${c.mode===`include`?`Only these lockfiles are reviewed: `:`These lockfiles aren’t reviewed: `}${c.paths.length===0?`none`:NH(c.paths)}.</p>`:N}`}function IH(e,t){if(!e?.managedId||e.repoId==null||e.kind!==`stasis`||!I.managedSession||I.managedSession.publicShare)return N;TH=t;let n=AH(e);if(n.status===`loading`)return N;if(n.status===`error`)return j`<dt>Dependency review</dt><dd class="bundle-review"><span class="bundle-review-error" role="alert">Couldn’t check its dependencies: ${n.error}</span></dd>`;let{answer:r}=n;if(!r)return N;let{chip:i,said:a,listed:o,more:s,unread:c}=PH(r),l=e.managedId,u=CH.has(l);return j`<dt>Dependency review</dt><dd class="bundle-review"><div class="bundle-review-line">${i}<span class="bundle-review-said">${a}</span> <button type="button" class="team-deps-more" aria-expanded="${String(u)}" @click="${()=>{CH.has(l)?CH.delete(l):CH.add(l),t()}}">${MH}<span>Details</span></button></div>${u?j`<div class="bundle-review-details">${FH(r,c)} ${o.length>0?j`<ul class="team-deps-versions bundle-review-versions">${o.map(t=>gH(t,r.review,{repoId:e.repoId,head:r.head??null}))}</ul>`:N} ${s>0?j`<p class="team-deps-quiet">and ${s.toLocaleString(`en-US`)} more, not listed</p>`:N}</div>`:N}</dd>`}var LH={skipped:`skipped (--only-deps): its dependencies alone validated`,"no-repository":`no repository to read it of`,"no-commit":`no commit to read it at`,"commit-not-in-history":`its commit is in the history of no branch or tag of its repository (a fork's, say)`,"history-unread":`its commit is at no tag or branch head, nor in its default branch's history, and not every other branch was compared`},RH={local:`installed from a directory of the repository, which isn't read`,"patch-unverified":`as patched by the bundle's patch, which isn't verified against the repository`,git:`locked from git, not a registry`,"not-registry":`locked from elsewhere than its registry`,"no-integrity":`locked with no sha512 to hold its tarball to`,unsupported:`no upstream package for its ecosystem`,unnamed:`no name or version recorded`,"not-published":`not published`,unreadable:`its registry refused it`,timeout:`not reached in time`,failed:`could not be fetched`,"alias-unverified":`installed under another name, an alias no lockfile read tells of`,misplaced:`installed where its path or its lockfile names another package or version`,"not-locked":`not locked by the lockfile`,"integrity-mismatch":`its registry's tarball is not the one the lockfile locks`,"integrity-conflict":`locked with two integrities`},zH={"patch-not-in-repository":`is the bundle's, not the repository's`,"patch-not-found":`is in no file of its hash (the bundle's, or the patches directory's)`,"patch-mismatch":`is not of the hash its lockfile locks`},BH={symlink:`a symlink in the repository`,submodule:`in a submodule`,"tree-cut":`the repository's tree was too large to list whole`},VH={"no-lockfile":`no lockfile of its repository locks them`,"lockfile-ambiguous":`more than one package manager's lockfile installs it`,"lockfile-unreadable":`its lockfile couldn't be read`,"lockfile-unsupported":`its lockfile is of a kind validate doesn't read`};function HH(e){let{patch:t}=e;if(e.reason)return[RH[e.reason]??e.reason,...e.at?[`: `,{path:e.at}]:[]];if(t?.error)return[`its patch`,...t.path?[` `,{path:t.path}]:[],` ${zH[t.error]??`could not be applied (${t.error})`}`];let n=t?.from===`bundle`?[t.verified?` (the bundle's, as the repository has it)`:` (the bundle's, not verified against the repository)`]:[];return t?[t.applied===!1?`locked patched, bundled as published`:`patched`,...t.path?[` by `,{path:t.path},...n]:[]]:e.directory?[`held to `,{path:e.directory},` of the repository`]:[]}var UH=12e4,WH=3e4,GH=new Map,KH=new Set,qH=null,JH=()=>{};function YH(){let e=I.managedSession?`${I.managedSession.id}\0${I.managedSession.role}`:null;return e!==qH&&(GH.clear(),KH.clear(),qH=e),GH}var XH=e=>`${e.managedId}\0${e.repoId??``}\0${e.repoDirectory??``}`;function ZH(e,t,n,r){return e.get(t)===n&&(r?e.set(t,r):e.delete(t),JH(),!0)}var QH=new Set([`valid`,`invalid`,`incomplete`]),$H=e=>QH.has(e?.status)?e:null;function eU(e){let t=YH(),n=XH(e),r=t.get(n);if(r&&(r.running||Date.now()<r.until))return r;let i=r?.status===`ready`?{...r,until:1/0}:{status:`loading`,until:1/0};return t.set(n,i),Bb(e.managedId).then(e=>({status:`ready`,until:Date.now()+UH,validation:$H(e?.validation)})).catch(e=>e?.name===`AbortError`?null:{status:`error`,until:Date.now()+WH,error:e?.message||`It couldn’t be read.`}).then(e=>ZH(t,n,i,e)),i}async function tU(e){let t=YH(),n=XH(e),r=t.get(n);if(r?.running||!I.managedSession?.csrfToken)return;let i={...r?.status===`ready`?r:{status:`ready`,validation:null},until:1/0,running:!0};t.set(n,i),JH();let a;try{let t=await Vb(e.managedId,I.managedSession.csrfToken);a={status:`ready`,until:Date.now()+UH,validation:$H(t?.validation)}}catch(e){a=e?.name===`AbortError`?null:{...i,running:!1,until:Date.now()+UH,runError:e?.message||`It couldn’t be validated.`}}ZH(t,n,i,a)}var nU=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,rU=Y(M`<path d="m6 4 4 4-4 4"/>`),iU={...LH,"no-access":`you may read only part of its repository`},aU={valid:`Valid`,invalid:`Invalid`,incomplete:`Incomplete`},oU={valid:`passed`,invalid:`failed`,incomplete:`wanted`,unverified:`wanted`,differs:`failed`,unexpected:`failed`},sU=[[`differs`,`differ`],[`unexpected`,`unexpected`],[`unverified`,`unverified`]],cU=[[`lockFailures`,`failing its lockfile`,`failing their lockfile`],[`misplaced`,`installed where another is`,`installed where others are`]],lU=e=>e===null?``:new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`});function uU({counts:e,own:t}){let n=sU.filter(([t])=>e[t]).map(([t,n])=>`${e[t].toLocaleString(`en-US`)} ${n}`),r=cU.filter(([t])=>e[t]).map(([t,n,r])=>`${nU(e[t],`package`)} ${e[t]===1?n:r}`);return`${n.length>0?`${n.join(`, `)}, of `:`every one of `}${nU(e.files,`file`)}${r.map(e=>`; ${e}`).join(``)}${t.checked?``:`; own code not checked`}`}function dU(e){let t=HH(e).map(e=>typeof e==`string`?e:j`<code>${e.path}</code>`);return j`<li class="bundle-validation-row"><span class="team-deps-name">${e.name}<span class="team-deps-version">@${e.version}</span></span> <span class="team-deps-review is-${oU[e.status]}">${e.status}</span> <span class="bundle-validation-note">${t}</span></li>`}function fU(e){let{own:t,problems:n,moreProblems:r,packages:i,counts:a,lockfiles:o}=e,s=t.checked&&t.ref?t.ref.tag?j`, tag <code>${t.ref.tag}</code>`:j` of <code>${t.ref.branch}</code>`:N;return j`<div class="bundle-review-details"><p class="team-deps-quiet">${t.checked?j`Own code held to <code>${t.repository}</code> at <code>${t.commit.slice(0,7)}</code>${s}${t.directory?j` under <code>${t.directory}</code>`:N}${a.eol?`, ${nU(a.eol,`file`)} with a checkout\u2019s CRLF line endings`:``}${t.cut?`; its tree was too large to list whole`:``}.`:N} ${a.packages?` ${nU(a.validPackages,`package`)} of ${a.packages.toLocaleString(`en-US`)} as published.`:``} ${o?.length?j` Dependencies held to ${o.map((e,t)=>j`${t?`, `:``}<code>${e}</code>`)}.`:N}</p>${n.length>0?j`<ul class="bundle-validation-list">${n.map(e=>j`<li class="bundle-validation-row"><span class="team-deps-review is-${oU[e.kind]}">${e.kind}</span> <span class="team-deps-name">${e.path}</span> <span class="bundle-validation-note">${e.of===`own`?`own code`:e.of.replace(/^[a-z-]+:/u,``)}${e.reason?`, ${BH[e.reason]??e.reason}`:``}</span></li>`)}</ul>`:N} ${r>0?j`<p class="team-deps-quiet">and ${nU(r,`file`)} more, not listed</p>`:N} ${i.length>0?j`<ul class="bundle-validation-list">${i.map(dU)}</ul>`:N}</div>`}function pU(e,t){if(!e?.managedId||e.kind!==`stasis`||!I.managedSession||I.managedSession.publicShare)return N;JH=t;let n=eU(e);if(n.status===`loading`)return N;let{validation:r}=n,i=XH(e),a=KH.has(i),o=()=>{KH.has(i)?KH.delete(i):KH.add(i),t()},s=n.running?j`<span class="bundle-review-state" role="status">Validating…</span>`:r?j`<span class="bundle-review-state is-${oU[r.status]}">${aU[r.status]}</span>`:j`<span class="bundle-review-state">Not validated</span>`;return j`<dt>Validation</dt><dd class="bundle-review bundle-validation"><div class="bundle-review-line">${s} ${r?j`<span class="bundle-review-said">${uU(r)}${r.validatedAt?` \xB7 ${lU(r.validatedAt)}`:``}</span>`:N} <button type="button" class="bundles-download-btn bundle-validate-btn" ?disabled="${!!n.running}" @click="${()=>{tU(e)}}">${r?`Validate again`:`Validate`}</button> ${r?j`<button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${o}">${rU}<span>Details</span></button>`:N}</div>${r&&!r.own.checked?j`<p class="bundle-validation-warning" role="alert">Own code couldn’t be verified: ${iU[r.own.reason]??r.own.reason}.</p>`:N} ${r?.lockfileError&&r.counts.packages?j`<p class="bundle-validation-warning" role="alert">Dependencies held to no lockfile, each to its registry’s integrity alone: ${VH[r.lockfileError]??r.lockfileError}.</p>`:N} ${n.status===`error`?j`<p class="bundle-validation-warning" role="alert">Couldn’t read its validation: ${n.error}</p>`:N} ${n.runError?j`<p class="bundle-validation-warning" role="alert">Couldn’t validate it: ${n.runError}</p>`:N} ${r&&a?fU(r):N}</dd>`}var mU=e=>L()?[]:Mf(e),hU=()=>L()?0:Nf(),gU=null,_U=new WeakMap;function vU(e){if(_U.has(e))return _U.get(e);let t=Bt(e),n=Te(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 _U.set(e,s),s}function yU(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[a,o]of e.fileHashes)if((!t||t.has(a))&&!r.has(o)){r.add(o);for(let e of mU(o)){let t=i(e,I.triage.get(E(e)));t&&n[t]!==void 0&&n[t]++}}return n}function bU(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,a]of e){let e=mU(a);if(e.length===0)continue;let o=e.filter(e=>{let n=i(e,I.triage.get(E(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===I.shownTriage});o.length!==0&&n.set(r,o)}return n}function xU(e){let t=vU(e),n=ye(e,t.origToStripped.keys());T.bundleReasonFor!==e.integrity&&(T.bundleReasonFor=e.integrity,T.dependencyPackagesView=!1,T.bundleReason=null);let r=CU(t,n,T.bundleReason),{tree:i,origToStripped:a,selected:o}=r;T.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=bU(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&mU(n).length>0),d=u&&T.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=I.triage.get(E(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=[`flow`,`package-flow`].includes(T.bundleLayout),_=T.bundleLayout===`matrix`||g||f.size===0?null:Cr(i,f),v=new Map;for(let[e,t]of a)v.set(t,e);let y=Vt(e),b=new Map(y?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),x=e=>{let t=v.get(e)??e;return Xr(t,{packageDir:y?.get(t)})},ee=s.filter(e=>x(e)===`__own__`),te=ke(e,a,x,y,t.origToStripped),ne=new Set;for(let e of s)if(ne.add(x(e)),ne.size>=3)break;let re=ne.size>=3,ie=s;if(T.focusedPkg){r.focused.has(T.focusedPkg)||r.focused.set(T.focusedPkg,s.filter(e=>x(e)===T.focusedPkg));let e=r.focused.get(T.focusedPkg);e.length>0?ie=e:T.focusedPkg=null}return T.selected&&!Object.hasOwn(i,T.selected)&&(T.selected=null),{treeData:i,files:ie,ownCounts:f,transitiveCounts:_,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:x,packageInfoOf:e=>b.get(y?.get(v.get(e)??e))},strippedToOrig:v,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:g?De(e,a,t.origToStripped,y):void 0,ownSourcePackages:be(a,x,y),entryPackages:Se(e,a,x),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var SU=new WeakMap;function CU(e,t,n){let r=t.has(n)?n:null;SU.has(e)||SU.set(e,new Map);let i=SU.get(e);if(!i.has(r)){let n=Ce(e.tree,e.origToStripped,t,r);i.set(r,{...n,files:Object.keys(n.tree),focused:new Map})}return i.get(r)}function wU(){if(!gU)return;let e=YT();e&&e.refreshSidebar(gU,{isBundleContext:!0,findingsJump:!L()})}function TU(){if(!gU)return;let e=YT();e&&e.refreshTopPkgs(gU)}function EU(e){gU=e}function DU(e,t,n){let{totalByPkg:r,whyQueries:i,total:a}=e;if(a===0)return N;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)||$r(e[0]).localeCompare($r(n[0]))||e[0].localeCompare(n[0])));let o=e.sorted.get(t);return j`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${O(o,([e])=>e,([e,t])=>j`<span class="bundles-dist-seg" style="${D({flexGrow:t,background:Fr(e)})}" data-tooltip="${e===`__own__`?N:`${e}: ${Kr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${O(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=$r(e),s=Fr(e),c=i.get(e);return j`<li><span class="bundles-dist-dot" style="${D({background:s})}"></span> ${c?j`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>OU(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:j`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?N:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${D({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Kr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function OU(e,t){let n=I.currentManagedTeam,r=I.currentWorkspace,i=I.managedSession&&Ls(I.managedSession);return Ne({details:e,...t,isCurrent:()=>I.currentView===`bundles`&&I.selectedBundle===e.integrity&&(I.bundleDetails&&Ls(I.bundleDetails))===Ls(e)&&I.currentWorkspace===r&&I.currentManagedTeam===n&&(I.managedSession&&Ls(I.managedSession))===i})}var kU=new WeakMap;function AU(e,t,n,r){let i=kU.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(Xr(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=jU(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 kU.set(e,f),f}function jU(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=Xr(a,{packageDir:s});n.set(e,(n.get(e)??0)+o),r.has(e)||r.set(e,HR(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function MU(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=N,summaryExtra:f=N,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let b=AU(n,r,i,l),{prefix:x,stripped:ee,packages:te}=b,ne=ee.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),re=e=>h?.(n[e])??[],ie=ne.some(e=>re(e).length>0),ae=I.bundleOverviewFilesSort===`flags`&&!ie?`name`:I.bundleOverviewFilesSort,oe=ae===`size`?b.bySize:b.byName,se=ae===`flags`?BF(ne,re,e=>ee[e]):_?oe.filter(e=>_.keeps(n[e])):oe,ce=I.bundleOverviewPackagesSort,le=DU(b.dist,ce,l),ue=le===N?j`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:le,de={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},fe=0,pe=new Map;if(I.bundleDetails?.fileHashes){let e=bU(I.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){de[e.severity]!==void 0&&de[e.severity]++,fe++;for(let t of If(e.fileHash,e))pe.set(t,(pe.get(t)??0)+1)}}let me=[...pe.keys()].toSorted(),he=Ii.filter(e=>de[e]>0).map(e=>j`<span class="${`tree-count-chip ${e}`}">${de[e]} ${e.replaceAll(`_`,` `)}</span>`),ge=n.length>0?j`<ul class="bundles-sources-list">${se.map(e=>{let t=n[e],i=r[e],a=j`${m?m(t):N}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${ee[e]}</span> ${p?p(t):N} ${i==null?N:j`<span class="bundles-source-size">${Kr(i)}</span>`}`;return j`<li>${c?.has(t)?j`<div class="bundles-source-row is-resource">${a}</div>`:j`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:j`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,_e=me.length>0?j`<ul class="bundles-reports-list">${me.map(e=>{let t=nS[oS(e)]??nS.default,n=pe.get(e)??0;return j`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${A(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:j`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ve=n.length-(c?.size??0);return j`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(x)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ve,ve):j`${y(`files`,ve,`${ve} ${ve===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?N:j`<dt>Size</dt><dd>${Kr(o)}</dd>`} ${s==null?N:j`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Kr(s))}</dd>`} ${c?.size?j`<dt>Resources</dt><dd>${c.size}</dd>`:N}</dl>${a??N}</div>${fe>0?j`<div class="bundles-issue-summary tree-count-chips">${he}</div>`:N} ${f}</div><div class="bundles-overview-columns">${u??Mk({title:`Packages`,count:te.size,body:ue,tools:j`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>j`<button type="button" aria-pressed="${String(ce===e)}" @click="${()=>{I.bundleOverviewPackagesSort=e,X()}}">${t}</button>`)}</span>`})} ${Mk({title:`Files`,count:_?`${se.length} of ${n.length}`:n.length,body:ge,list:!0,extra:_?j`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:N,tools:j`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ie?[[`flags`,`Flags`]]:[]].map(([e,t])=>j`<button type="button" aria-pressed="${String(ae===e)}" @click="${()=>{I.bundleOverviewFilesSort=e,X()}}">${t}</button>`)}</span>`})} ${me.length>0?Mk({title:`Reports`,count:me.length,body:_e,list:!0}):N} ${d}</div></div>`}var NU=16,PU=new Map,FU=new Set,IU=e=>I.bundleSourceFile===e||I.currentView===`lockfile`&&I.droppedLockfile?.name===e,LU=()=>j`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${I.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${Mw}</button>`;function RU(e){let t=e?.status;return j`<button type="button" class="${w({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${I.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:N}" aria-label="Pretty-print" data-tooltip="${EO(e)}">${TO}</button>`}function zU(e,t,n,r,i,a){let o=qO(e,t,n,r),s=o?sk(e,t,n,r,()=>{I.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?RU(s):N,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function BU(e){let t=e?.status;return j`<button type="button" class="${w({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${I.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:N}" aria-label="View lockfile" data-tooltip="${Ek(e)}">${A(aa)}</button>`}function VU(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function HU(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function UU(e){for(let t of Ii)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var WU={content:``,parts:``};function GU(e){if(WU.content===e)return WU.parts;let t=e;if(e.length>vE||wC(e)){let n=e=>[xE(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
|
|
194
|
+
`,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>yE&&(t.push(...n(e.slice(r,i)),j`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return WU={content:e,parts:t},t}function KU(e,t,n,r,i=null,a=!1,o=!1){let s=Pt(e),c=I.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=At(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!PU.has(p)&&!FU.has(p)&&(FU.add(p),(async()=>{let r=await JS(e,f,pC(n,t));PU.set(p,typeof r==`string`?OC(r):null),PU.size>NU&&PU.delete(PU.keys().next().value),FU.delete(p),IU(t)&&X()})());let m=PU.get(p);PU.has(p)&&(PU.delete(p),PU.set(p,m));let h=I.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${UU(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return j`<div class="${w({"bundle-source-lines":!0,"is-wrapped":I.bundleSourceWrap})}" style="${D({"--lineno-width":`${d}ch`})}" ${_E(nD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${cE([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?UU(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return j`<div class="${w({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?j`<button type="button" class="${w({"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>`:j`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:N}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?A(m):GU(e)}</code></pre></div>`}function qU(e){let t=I.bundleSourceFindingIdx;if(t==null)return N;let n=e[t];if(!n)return N;let r=n.fileHash?If(n.fileHash,n):[],a=i(n,I.triage.get(E(n))),o=a===`fixed`?`Fixed`:a===`inprogress`?`In progress`:a===`ignored`?`Ignored`:null,s=In(n),c=iG(n.line);return j`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${o?j`<span class="${`bundle-source-panel-triage triage-${a}`}">${o}</span>`:N} <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||s?j`<div class="bundle-source-panel-line-row">${c?j`<span class="bundle-source-panel-line">${c}</span>`:N} ${s?j`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${s}">${s}</span>`:N}</div>`:N}<div class="bundle-source-panel-desc">${Kw(Ji(n),{paragraphs:!1})}</div>${r.length>0?j`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=rt[oS(e)]??rt.default;return j`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${A(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button>`})}</div>`:N}</div></aside>`}function JU(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??bU(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 YU(e,t=null,n=N){return j`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?AW(t):N} ${LU()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function XU(e,t,n,r,i,a=null,o=!1,s=!1){return j`<div class="bundle-source-code-wrap">${typeof t==`string`?KU(t,e,n,i,a,o,s):j`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${qU(r)}`}function ZU(){let e=I.bundleSourceFile;if(!e||I.bundleDetailsTab===`code`||I.bundleDetailsTab===`search`)return N;let t=I.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=Nt(t),{fileFindings:a,lineFindings:o}=JU(t,e,i.get(e)),s=I.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:zU(t,s,e,i.get(e),a,o);return j`<div class="bundle-source-overlay"><div class="${w({"bundle-source-modal":!0,"with-panel":I.bundleSourceFindingIdx!=null})}">${YU(e,hk(I.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?j`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?j`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:XU(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var QU=new Map,$U=null,eW=null,tW=0;function nW(e,t){let n=lW(e??``,t).split(`/`);for(let e=1;e<n.length;e++)QU.set(n.slice(0,e).join(`/`),!0);tW++}function rW(e,t){I.bundleCodeSearchMode=`files`,I.bundleCodeSearchQuery=``,nW(e,t),X(),VU()}function iW(e){let t=e=>{for(let n of e.dirs.values())QU.set(n.path,!1),t(n)};t(e),tW++,X()}function aW(e){I.bundleCodeTerminal=e,X(),e?tE():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function oW(){return j`<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="${()=>aW(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function sW(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=UU(e);(r===null||(Fi[a]??0)>(Fi[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function cW(e,t,n=0,r=null,i=!1,a=null,o=null,s=null){let c=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>RE(e,t).localeCompare(RE(n,r))||t.path.localeCompare(r.path)),l=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),u=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(u(t))return!0;return!1},d=(e,t)=>i?!0:QU.has(e)?QU.get(e):!!s?.has(e)||u(t),f=e=>t=>{QU.set(e,!t.currentTarget.parentElement.open)};return j`<ul class="${w({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:N}" @keydown="${n===0?KE:N}">${O(c,([,e])=>e.path,([e,c])=>{let l=c.path,u=BE(e,c,n),p=c.package,m=p?.ecosystem===`cargo`||p?.ecosystem===`composer`||p?.ecosystem===`soldeer`,h=p||c.dependencyRoot?Je(p?.ecosystem??c.dependencyRoot):N,g=p?.variant?`${u.node.sourcePath}
|
|
195
|
+
Variant ${p.variant}`:u.node.sourcePath,_=c.packageInfo,v=!!_||!!p?.variant,y=_&&o?e=>{let{bytes:t,loc:n}=jE(o,c.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Kr(t)})}:void 0,b=sW(c,r);return j`<li class="bundle-code-tree-dir"><details .open="${ze(d(l,c))}"><summary @click="${f(l)}" .prepareTooltip="${y}" data-tooltip-package="${_?.name??N}" data-tooltip-ecosystem="${_?.ecosystem??N}" data-tooltip-version="${_?.version??N}" data-tooltip-files="${_?.fileCount??N}" data-tooltip-repo="${_?.github?_.github+(_.directory?`/${_.directory}`:``):N}" data-tooltip-commit="${_?.commit??N}" data-tooltip="${v?g:N}" data-tooltip-placement="${v?`right-start`:N}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${h} <span class="${w({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!p,"bundle-code-tree-package-vendored":m})}" data-tooltip-truncated data-tooltip="${v?N:g}">${p?j`<span class="bundle-code-tree-package-name">${p.name}</span>${p.version?j`<span class="bundle-code-tree-package-version">${m?`- `:`@`}${p.version}</span>`:N}`:u.names.map((e,t)=>j`${t>0?j`<span class="bundle-code-tree-separator">/</span>`:N}${e}`)} </span>${p?.variant?j`<span class="bundle-code-tree-variant">variant ${p.variant}</span>`:N} ${b.count>0?j`<span class="${`bundle-code-tree-count sev-${b.worst}`}" data-tooltip="${`${b.count} ${b.count===1?`issue`:`issues`} inside`}">${b.count}</span>`:N}</summary>${cW(u.node,t,n+1,r,i,a,o,s)}</details></li>`})} ${O(l,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?UU(i):null,s=i?.length??0;return j`<li class="bundle-code-tree-file"><button type="button" class="${w({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:N}">${Ue(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?j`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:N}</button></li>`})}</ul>`}function lW(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var uW={tree:null,query:``,prefix:``,filtered:null};function dW(e,t,n,r,i=``,a=null,o=null){let s=uW;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(uW={tree:e,query:n,prefix:i,filtered:zE(e,n,i)});let c=n?uW.filtered:e;return cE([c,t,fW(r),a,o,tW],()=>c?cW(c,t,0,r,!!n,a,o,n?null:GE(e)):j`<div class="bundle-code-search-empty">No files match.</div>`)}function fW(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${UU(t)}`).join(`
|
|
196
|
+
`)}var pW=new WeakMap;function mW(e,t){let n=pW.get(t);return n||(n=Qr([...t.keys()].toSorted(),Vt(e)),pW.set(t,n)),n}var hW=1e3,gW=new WeakMap;function _W(e,t,n,r,i=``){let a=Bt(e),o=gW.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),gW.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>lW(e,i).toLowerCase().includes(s)):o;if(c.length===0)return j`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>hW?c.slice(0,hW):c;return j`<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">${O(l,e=>e,e=>j`<li><button type="button" class="${w({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:N}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${lW(e,i)}</span><span class="bundle-code-largest-size">${Kr(a.get(e))}</span></button></li>`)}</ul></div>`}var vW=20,yW=100,bW={sources:null,query:``,hits:null};function xW(e,t,n){let r=gR(e.integrity??``,t,n,!1,!1,mW(e,t));if(r.fileResults.length>yW||!r.truncated||r.totalHits<5e3||r.fileResults.length===yW&&r.fileResults.at(-1).hits.length>=vW){let e=r.fileResults.slice(0,yW).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,vW).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(bW.sources===t&&bW.query===n)return bW.hits;let i=fR(n,!1,!1),a=[],o=0;for(let n of mW(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],s=e.split(`
|
|
197
|
+
`);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>=vW))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=yW)break}return bW={sources:t,query:n,hits:{results:a,totalHits:o}},bW.hits}function SW(e,t,n,r,i=``){if(!n)return j`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let{results:a,totalHits:o}=xW(e,t,n);return a.length===0?j`<div class="bundle-code-search-empty">No matches.</div>`:j`<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=lW(e,i);return j`<div class="${w({"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=>j`<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">${xR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function CW(e,t,n,r=``){if(!e.fileHashes)return j`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=bU(e.fileHashes,`issues`);if(i.size===0)return j`<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=Fi[e.finding.severity]??0,r=Fi[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?j`<div class="bundle-code-search-empty">No matches.</div>`:j`<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=lW(e,r),s=e===n&&I.bundleSourceFindingIdx===i;return j`<li class="${w({"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(Ji(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var wW=new WeakMap;function TW(e,t){if(e.kind!==`stasis`)return t;if(wW.has(t))return wW.get(t);let n=Vt(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 wW.set(t,i),i}var EW=new WeakMap;function DW(e,t,n){let r=EW.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=FE(Nn(n).prefix,i,n);r={prefix:a,tree:PE(n.map(e=>lW(e,a)),n,i)},EW.set(t,r)}return r}function OW(e,t){for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}if(!e.npmEntries){let e=[...t].flatMap(([e,t])=>typeof t==`string`?[e]:[]),n=VE(e,[`package.json`])??VE(e,[`index.ts`,`index.js`,`main.ts`,`main.js`]);if(n)return n}let n=null,r=-1;for(let[e,i]of t)typeof i==`string`&&i.length>r&&(n=e,r=i.length);return n}function kW(e,t=null){let n=Nt(e);if(n.size===0)return j`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;$U!==I.selectedBundle&&(QU.clear(),tW++,$U=I.selectedBundle,eW=null);let r=Ft(n).paths,{prefix:i,tree:a}=DW(e,n,r),o=e.fileHashes?bU(e.fileHashes,`issues`):new Map,s=I.bundleSourceFile,c=I.bundleCodeFileRequest;if(c?.bundle===I.selectedBundle){I.bundleCodeFileRequest=null;let t=c.path==null?r[c.file-1]:n.has(c.path)?c.path:null;if(t){s=t,I.bundleSourceFile=t,VU();let r=c.endLine??c.line;I.bundleSourceTargetLine=c.line&&r<=Pt(n.get(t))?{bundle:e.integrity,path:t,line:c.line,...r>c.line?{end:r}:{}}:null,I.bundleSourceTargetLine&&HU(c.line)}}s||(s=OW(e,TW(e,n)),s&&(I.bundleSourceFile=s,VU())),s!==eW&&(nW(s,i),eW=s),s&&t?.managedId&&L()?K?.replaceCodeRoute(Jx(I.managedTeams,t,I.currentManagedTeam,`code`,Yx(I))):s&&t?.npm&&L()?K?.replaceCodeRoute(zA(t,`code`,Yx(I))):s&&t?.repository&&L()&&K?.replaceCodeRoute(OM(t,`code`,Yx(I)));let l=s?n.get(s):null,{fileFindings:u,lineFindings:d}=JU(e,s,l,o),f=o.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],p=f.includes(I.bundleCodeSearchMode)?I.bundleCodeSearchMode:`files`,m=I.bundleCodeSearchQuery,h=m.trim();return j`<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="${I.bundleCodeTerminal?`true`:`false`}" @click="${()=>aW(!I.bundleCodeTerminal)}">${Pw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!s}" @click="${()=>rW(s,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="${p!==`files`||!!h||a.dirs.size===0}" @click="${()=>iW(a)}">${Nw}</button></span></div>${i?j`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${i}">${i}</div>`:N}<bundle-code-search .modes="${f}"></bundle-code-search><div class="bundle-code-rail-body">${oE(p,[[`files`,()=>dW(a,s,h,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>SW(e,n,m,s,i)],[`issues`,()=>CW(e,m,s,i)],[`largest`,()=>_W(e,n,h,s,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="${w({"bundle-code-main":!0,"with-panel":I.bundleSourceFindingIdx!=null})}">${s?NW(e,s,l,u,d,t):j`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${I.bundleCodeTerminal?oW():N}</div></div>`}function AW(e){return j`<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}">${Aw}</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}">${jw}</button></span>`}var jW=[];function MW(e){let t=jW.find(t=>t.text===e);if(t)return t.stats;let n=Pt(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Kr(xa(e))}`;return jW.unshift({text:e,stats:r}),jW.length=Math.min(jW.length,2),r}function NW(e,t,n,r,i,a=null,{single:o=!1}={}){let s=zU(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&yk(t)!==null,p=f?wk(e,t,n,Nt(e),()=>{IU(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),_=XE(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return j`<header class="bundle-code-main-bar">${o?N:AW(hk(I.bundleCodeHistory,e.integrity,t))} ${Ue(t,Ve(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">${kw}</button> ${_?ZE(_,a?.commitInfo):N} ${tz(e,t)} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?j`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${UU(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>`:N} ${m?N:LU()} ${m?N:l} ${f?BU(p):N} ${typeof h==`string`?j`<span class="bundle-code-main-stats">${l===N?N:j`<span class="bundle-code-main-stats-room" aria-hidden="true">${MW(n)}</span>`}<span>${MW(h)}</span></span>`:N} ${o?j`<button type="button" class="bundle-code-close" data-dropped-lockfile-close aria-label="Close" data-tooltip="Close">×</button>`:N}</header><div class="bundle-code-main-body">${m?j`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:XU(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&L()&&!He(),c)}</div>`}function PW({name:e,details:t}){let n=Nt(t).get(e);return j`<div class="bundle-code-view is-single-file"><div class="bundle-code-main">${NW(t,e,n,[],new Map,null,{single:!0})}</div></div>`}var FW=400;function IW(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function LW(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 RW(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return SR(e,t,r>n-60?Math.max(0,r-60):0,n)}function zW(e,t,n){let r=RW(e,n??[],FW);return j`<div class="${w({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?j`<span class="bundle-search-clip">…</span>`:N}${CR(r.text,r.ranges)}</span></div>`}function BW(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(zW(t[e-1]??``,e,r.get(e)??null));return j`${i?j`<div class="bundle-search-gap" aria-hidden="true"></div>`:N} <button type="button" class="bundle-search-snippet" style="${D({"--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 VW(e,t,n){let{path:r,lines:i,hits:a}=e,o=lW(r,t),s=LW(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===I.bundleSourceFile;return j`<section class="${w({"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)=>BW(r,i,e,c,t>0))}</div></section>`}function HW(e,t,n,r,i,a){if(!n)return j`<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=gR(e.integrity??``,t,n,r,i,mW(e,t));if(o.error)return j`<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=WW(t);if(s.length===0)return j`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?IW(c):0,f=s.length;return j`<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?j`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:N} ${l?j`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:N}</div>${O(s,e=>e.path,e=>VW(e,u,d))}</div>`}var UW=new WeakMap;function WW(e){return UW.has(e)||UW.set(e,Nn([...e.keys()].toSorted()).prefix),UW.get(e)}var GW={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function KW(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=GW;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=gR(e.integrity??``,t,r,i,a,mW(e,t));if(c.error)return null;let l;if(c.truncated){let e=fR(r,i,a);l=new Set;let t=o.split(`
|
|
198
|
+
`);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 GW={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function qW(e,t,n,r){let i=I.bundleSourceFile;if(!i)return N;let a=t.get(i),{fileFindings:o,lineFindings:s}=JU(e,i,a),c=zU(e,r,i,a,o,s);return j`<aside class="bundle-search-side">${YU(i,null,c.toggle)}<div class="bundle-source-body">${XU(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function JW(e,t=null){let n=Nt(e);if(n.size===0)return j`<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=I.bundleSearchQuery,i=I.bundleSearchRegex,a=I.bundleSearchCase,o=null;if(I.bundleSourceFile){let t=KW(e,n,I.bundleSourceFile,r,i,a);t&&t.size===0?(I.bundleSourceFile=null,I.bundleSourceFindingIdx=null):o=t}let s=I.bundleSearchContext;return j`<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">${HW(e,n,r,i,a,s)} ${qW(e,n,o,t)}</div></div>`}var YW=(e,t,n,r=!1,i=null)=>i?j`<button type="button" class="${w({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:j`<button type="button" class="${w({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,XW=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...I.managedSession&&!I.managedSession.publicShare&&(I.managedSession.dependencyReview===!0||I.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],ZW=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[Jj(e),`Activity`]];function QW(e,t){return sM(e.repoId,t),oM(()=>t===`commits`?j`<repository-history .repository="${e}" .repo="${xM(e)}" .refs="${bM(e.repoId)}"></repository-history>`:t===`agents`?j`<repository-agents .repository="${e}" .repo="${xM(e)}"></repository-agents>`:t===`pulse`?j`<repository-pulse .repository="${e}" .repo="${xM(e)}"></repository-pulse>`:t===`replay`?j`<repository-replay .repository="${e}" .repo="${xM(e)}"></repository-replay>`:j`<repository-issues .repository="${e}" .repo="${xM(e)}" .kind="${t}"></repository-issues>`)}function $W(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?FM(e):null,l=c??e.repository,u=!!c||a&&!!l&&!I.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:N;return j`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${L()&&e.managedId&&e.repoId==null?j`<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>`:N} ${s?j`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>dj()}">npm</button> <span aria-hidden="true">></span></span>`:N} <span class="bundles-slide-icon" aria-hidden="true">${A(s?ra:l?ua:na)}</span><div class="${w({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?j`<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:ej(s.name)}"></npm-version-select>`:l?j`<repository-code-source .repository="${l}" .tab="${t}" .repos="${yM()}" .refs="${bM(l.repoId)}"></repository-code-source>`:j`<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="${!ZL(e)}" @click="${()=>{QL(e)}}">${A(ca)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>YW(e,n,t,a||!!c,o))}</div>${u?j`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?uM(l):`the repository`}`}"></span>`:N}</header></bundle-slide-header><div class="${w({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:N}" @click="${d}">${r}</div></div>`}function eG({name:e,spec:t,tab:n}){return $W({npm:{name:e,version:t??`latest`}},n,XW(),j`<div class="bundles-slide-placeholder" role="status">Opening ${FA(e,t)}…</div>`,{opening:!0})}function tG(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?uM({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 $W({repository:f},i,ZW(i),p&&mi.has(i)?QW(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?j`<repository-treemap .repository="${f}"></repository-treemap>`:s?j`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${GM(e)}</div>`:j`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>zM(e,t):null})}function nG(e){let t=!!e.npm;t&&!fi.has(I.bundleDetailsTab)&&(I.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!pi.has(I.bundleDetailsTab)&&(I.bundleDetailsTab=`code`);let r=!t&&!n&&hz(e,I.bundleDetails,I.bundleDetailsTab===`advisories`);I.bundleDetailsTab===`advisories`&&!r&&(I.bundleDetailsTab=`overview`);let i=t||I.bundleDetailsTab===`compare`||Gx(I.bundles??[],I.selectedBundle).length>0,a=!L();I.bundleDetailsTab===`issues`&&!a&&!n&&(I.bundleDetailsTab=`overview`);let o=I.bundleDetailsTab,s=o===`overview`,c=I.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&Wt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&wz(c,X).catch(()=>{}),$W(e,o,t?XW():n?ZW(I.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?SG(e,c):u?oE(o,[[`terminal`,()=>j`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>j`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>j`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>kW(c,e)],[`search`,()=>JW(c,e)],[`commits`,()=>QW(e.repository,`commits`)],[`pulls`,()=>QW(e.repository,`pulls`)],[`agents`,()=>QW(e.repository,`agents`)],[`pulse`,()=>QW(e.repository,`pulse`)],[`replay`,()=>QW(e.repository,`replay`)],[`review`,()=>eR(()=>j`<npm-review .entry="${e}" .details="${c}" .request="${I.npmReview}" .session="${I.managedSession}" .source="${VF(e)}"></npm-review>`)],[`compare`,()=>eR(()=>j`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${I.bundleCompare}" .source="${t?VF(e):n?qF(e):null}"></bundle-compare>`)],[`issues`,()=>n?QW(e.repository,`issues`):oG(c)],[`advisories`,()=>jz(c,X,ZL(e)?()=>{QL(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?j`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?j`<div class="${w({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:j`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function rG(e,t={}){if(!e)return N;let n=[];if(e.fileHash&&(n=If(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=Lf(t.bucketKey,e):t.kind===`repository`&&(n=Rf(t.bucketKey,e))),n.length===0)return N;let r=n.slice(0,2),i=n.length-r.length;return j`<div class="bundle-issue-reports">${r.map(e=>{let t=rt[oS(e)]??rt.default;return j`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${A(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button>`})} ${i>0?j`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:N}</div>`}function iG(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 aG(e,t){return j`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?j`<p class="bundle-issues-empty-hint">${t}</p>`:N}</div>`}function oG(e){if(e.managedId)return aG(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return aG(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return aG(`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=bU(e.fileHashes,`issues`);if(t.size===0){let t=hU();if(t===0)return aG(`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+=mU(t).length;return n>0?aG(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):aG(`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 sG(t,{kind:`bundle`})}function sG(e,{kind:t,bucketKey:n}={}){let a=[...e.keys()],{prefix:o,stripped:s}=Nn(a),c=new Map(a.map((e,t)=>[e,s[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=Fi[UU(t)]??0,a=Fi[UU(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 j`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${o?j`<span class="mono">${o}</span>`:N}</div><ul class="bundle-issues-list">${O(l,([e])=>e,([e,a])=>{let o=c.get(e)??e,s=[...a].toSorted((e,t)=>{let n=Fi[e.severity]??0,r=Fi[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 j`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?j`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:l?j`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${o}</a>`:j`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${o}</span>`} <span class="bundle-issues-file-count">${a.length} ${a.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${O(s,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,r(t)]),r=>{let o=a.indexOf(r),s=r.severity,c=iG(r.line),l=i(r,I.triage.get(E(r))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=j`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${s}`}">${s.replaceAll(`_`,` `)}</span> ${c?j`<span class="bundle-issues-finding-line">${c}</span>`:N} ${u?j`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:N} <span class="bundle-issues-finding-spacer"></span> ${rG(r,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${Kw(Ji(r),{paragraphs:!1})}</div>`;return j`<li class="bundle-issues-finding">${t===`bundle`?j`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${o}" data-bundle-view-line="${r.line??``}">${d}</button>`:j`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function cG(e){let t=I.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?nG(n):j`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var lG=j`<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>`,uG=j`<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>`,dG=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`}),fG=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function pG(e){if(dG[e])return dG[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return fG[(t>>>0)%fG.length]}function mG(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ur(t))}function hG(e){delete e.currentTarget.dataset.tooltip,dr()}var gG=e=>e.codeStats??=Ut(e.npm?new Map([...qt(e)].filter(([e])=>!fA.test(e.slice(e.lastIndexOf(`/`)+1)))):qt(e),Rt(e));function _G(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return N;let n=gG(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return N;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?j`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>j`<li><span class="bundles-languages-swatch" style="${D({background:pG(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:N;return j`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${mG}" @pointerleave="${hG}">${i.map(({key:e,label:t,lines:n})=>j`<span class="bundles-languages-segment" style="${D({flexGrow:n,background:pG(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function vG(e){try{await(await q()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function yG(e,t){let n=aR(t),r=_G(t);return j`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?He()?j`<button type="button" class="bundles-download-btn" @click="${()=>{vG(e)}}">${lG}<span>Download bundle</span></button>`:j`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${lG}<span>Download bundle</span></a>`:j`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${lG}<span>Download bundle</span></button>`} ${n?j`<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)">${uG}<span>SPDX</span></button></div>`:N}</div>${r}</div>`}function bG(e,t,{placeholder:n=N,overviewClass:r=``}={}){return j`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function xG(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function SG(e,t){if(e.npm)return TG(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)=>j`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?j`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?N:j`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:N} ${nt(i,t,e.commitInfo).map(t=>j`<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`?A(da):N}<span>${t.text}</span></a> ${t.commit?j`<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="${et(e.commitInfo,t.commit.hash)??N}" target="_blank" rel="noopener noreferrer">${A(fa)}<span>${t.commit.text}</span></a>`:N} ${t.commit?.tags?j`<span class="bundle-origin-tags">${t.commit.tags.map(e=>j`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${A(Qi)}<span>${e.name}</span></a>`)}</span>`:N}</dd>`)} ${IH(e,X)} ${pU(e,X)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?j`<dt>Prefix</dt><dd class="mono">${t}</dd>`:N} ${i?.entries?.size>0?j`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>j`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${lW(e,t)}</button></li>`)}</ul></dd>`:N} ${n&&Number.isSafeInteger(a)?j`<dt>Size</dt><dd>${Kr(a)}</dd>`:N}</dl>`,s=yG(e,t);if(!n)return bG(o(``,!0),s);if(t.error)return bG(o(``,!0),s,{placeholder:j`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Rt(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`?xa(e.sourcesContent[n]):null));return MU(o,j`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?j`<dt>Output</dt><dd class="mono">${e.file}</dd>`:N} ${e.sourceRoot?j`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:N} ${e.names||t.namesCount!=null?j`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:N}`,r,i,null,s,{bundleSize:t.size,unpackedSize:xG(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Rt(t),{sourceNames:r,resources:i}=wG(zt(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 MU(o,j`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?j`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:N}`,r,l,Vt(t),s,{bundleSize:t.size,unpackedSize:xG(l),resources:i,details:t})}return bG(o(``,!0),s,{placeholder:j`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var CG=new WeakMap;function wG(e){if(!CG.has(e)){let t=[...e.keys()];CG.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return CG.get(e)}function TG(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=j`<a class="bundles-download-btn" href="${n}">${lG}<span>Tarball</span></a>`,i=j`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${LN(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return bG(Bj(e,{githubFigures:aP(e),provenance:uP(e),provenanceNamesBuilder:sP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Rt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=bP(t),d=YN(e.npm);return MU(t=>Bj(e,{prefix:t,githubFigures:aP(e),provenance:uP(e),provenanceNamesBuilder:sP(e.npm),files:c}),Hj(e,c,t),a,s,null,N,{bundleSize:t.size,unpackedSize:xG(s),resources:l,leadColumn:j`${Mj(e)}${mP(e)}`,trailColumns:LF(l,o),summaryExtra:j`${QN(e,c)}${OP(e,t)}${IF(e,_G(t,{legend:!0}),t)}${eP(e,r,UP(e))}`,overviewClass:`npm-overview`,lines:gG(t).lines,sized:(e,t,n)=>Rk(e,u[e],n),fileTag:e=>j`${XN(d.get(e))}${kP(t,e,!0)}`,fileFlags:e=>jP(t,e,d.get(e)),fileIcon:e=>Ue(e,l.has(e)?`binary`:void 0),fileFilter:wP(e)})}function EG(){Kf().catch(()=>{});let e=Pf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,a]of e){let e=[],o=[],s=new Map,c=new Set;for(let[n,r]of a.byVersion){let a=[],l=new Map;for(let e of r.findings){let n=i(e,I.triage.get(E(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===I.shownTriage&&(a.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(a.length!==0){e.push([n,{findings:a,files:l,reports:r.reports}]);for(let e of a)o.push(e),s.has(e.file)||s.set(e.file,[]),s.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>_f(e,t)),n.push([r,{findings:o,files:s,reports:c,versions:e}]))}let r=I.selectedPackage,a=r?n.find(([e])=>e===r)??null:null,o=null;if(a){let e=a[1].versions,t=I.selectedPackageVersion;o=e.find(([e])=>e===t)??null,!o&&e.length===1&&(o=e[0])}let s=o?o[1]:a?a[1]:null;if(a&&I.packageDetailsTab===`issues`)return NG(a[0],s,o?o[0]:void 0);let c=I.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();jG(l,I.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=a?`packages-layout open`:`packages-layout`;return j`<div class="${w({"packages-view":!0,"with-details":!!a})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?j`${n.length} ${n.length===1?`package`:`packages`}`:j`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?j`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:N}</div></div>${kG(t)}</header>${n.length===0?j`<p style="${D({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:I.shownTriage?`No ${I.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?j`<p style="${D({color:`var(--muted)`})}">No packages match "${I.packagesSearchQuery}".</p>`:j`<div class="${f}"><ul class="packages-list">${O(DG(l),OG,e=>PG(e,r,I.selectedPackageVersion))}</ul>${a?j`<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">${LG(a[0],s,o?o[0]:void 0)}</div></aside>`:N}</div>`}</div>`}function DG(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=I.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 OG(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function kG(e){return j`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${AG}"></triage-selector></div>`}var AG=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function jG(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 MG(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=i(t,I.triage.get(E(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function NG(e,t,n){let r=Pf().get(e),i=MG(r,n),a=I.packageSlideTriage??`live`,o=r?RG(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 j`<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?j`<div class="bundle-issues-empty">${l}</div>`:sG(o,{kind:`package`,bucketKey:e})}</div></div>`}function PG(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=k(e,I.severityMode);s[t]!==void 0&&s[t]++}let c=Ii.filter(e=>s[e]>0),l=Fr(i),u={selected:i===t&&FG(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 j`<li class="${w(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${D({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?N:j`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?IG(i,e.expanded,e.totalVersions-1):N}</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?j`<div class="packages-row-chips">${c.map(e=>j`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:N} <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 FG(e,t){return e.kind===`single`||e.version===t}function IG(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return j`<button type="button" class="${w({"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 LG(e,t,n){let r=Pf().get(e),i=[...(r?RG(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return j`<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?j`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:N}</div>${zG(e,t,n)}`}function RG(e,t,n=`live`,r){let a=new Map,o=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of o){let o=r.filter(e=>{let t=i(e,I.triage.get(E(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(o.length===0)continue;let s=BG(t,e);a.has(s)||a.set(s,[]);let c=a.get(s);for(let e of o)c.push(e)}return a}function zG(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=k(e,I.severityMode);r[t]!==void 0&&r[t]++}let i=Ii.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=Pf().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return j`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?j`<dt>Version</dt><dd class="mono">${n}</dd>`:N} ${l?j`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:N}<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?j`<div class="packages-detail-chips">${i.map(e=>j`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:N}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=nS[oS(e)]??nS.default;return j`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${A(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=BG(e,t);return j`<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 BG(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 VG(){Kf().catch(()=>{});let e=Ff(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,a]of e){let e=[],o=new Map;for(let n of a.findings){let r=i(n,I.triage.get(E(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===I.shownTriage&&(e.push(n),o.has(n.file)||o.set(n.file,[]),o.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:o,reports:a.reports}])}let r=I.selectedRepository,a=r?n.find(([e])=>e===r)??null:null;if(a&&I.repositoryDetailsTab===`issues`)return KG(a[0],a[1]);let o=I.repositoriesSearchQuery.trim().toLowerCase(),s=o?n.filter(([e])=>e.toLowerCase().includes(o)||Ln(e).toLowerCase().includes(o)):n.slice();WG(s,I.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=a?`packages-layout open`:`packages-layout`;return j`<div class="${w({"packages-view":!0,"with-details":!!a})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${s.length===n.length?j`${n.length} ${n.length===1?`repository`:`repositories`}`:j`${s.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?j`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:N}</div></div>${HG(t)}</header>${n.length===0?j`<p style="${D({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:I.shownTriage?`No ${I.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:s.length===0?j`<p style="${D({color:`var(--muted)`})}">No repositories match "${I.repositoriesSearchQuery}".</p>`:j`<div class="${u}"><ul class="packages-list">${O(s,([e])=>e,([e,t])=>qG(e,t,e===r))}</ul>${a?j`<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">${JG(a[0],a[1])}</div></aside>`:N}</div>`}</div>`}function HG(e){return j`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${UG}"></triage-selector></div>`}var UG=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function WG(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 GG(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=i(e,I.triage.get(E(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function KG(e,t){let n=Ff().get(e),r=GG(n),i=I.repositorySlideTriage??`live`,a=n?YG(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 j`<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?j`<div class="bundle-issues-empty">${c}</div>`:sG(a,{kind:`repository`,bucketKey:e})}</div></div>`}function qG(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=k(e,I.severityMode);r[t]!==void 0&&r[t]++}let i=Ii.filter(e=>r[e]>0),a=Fr(e),o=Ln(e);return j`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${D({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?j`<div class="packages-row-chips">${i.map(e=>j`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:N} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function JG(e,t){let n=Ff().get(e),r=[...(n?YG(n):new Map).values()].reduce((e,t)=>e+t.length,0);return j`<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?j`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:N}</div>${XG(e,t)}`}function YG(e,t=`live`){let n=new Map;for(let[r,a]of e.files){let e=a.filter(e=>{let n=i(e,I.triage.get(E(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 XG(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=k(e,I.severityMode);n[t]!==void 0&&n[t]++}let r=Ii.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 j`<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?j`<div class="packages-detail-chips">${r.map(e=>j`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:N}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=nS[oS(e)]??nS.default;return j`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${A(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>j`<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 ZG(e,t){let n=new Set(e),i=new Set,a=new Map,o=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,r(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)i.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,r(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=a.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>o.get(e.id)))},a.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:[...a.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!i.has(e))}}function QG(e,t,n){return`${e} ${e===1?t:n}`}function $G(e,t){let n=i(e,I.triage.get(e.id)),a=r(e)?t.filter(({name:t})=>mn(I.triage,e.id,t)):[],o=n??(a.length>0?`ignored`:null);if(!o)return N;let s=n!==`ignored`&&o===`ignored`&&a.length<t.length,c=s?`Ignored in ${a.length}/${t.length} reports`:Ni[o];return j`<span class="${`links-finding-status triage-${o}`}" data-tooltip="${s?a.map(({name:e})=>S(e)).join(`, `):N}">${c}</span>`}function eK(e,t=[],n=!0,r=N){let{id:i,title:a}=e,o=t[0]?.name,s=sr(i),c=or(i)??s;return j`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?j`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??N}" data-preview-managed-report="${t[0].managedReportId??N}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:ni(i)?j`<a class="links-finding-id mono" href="${`#${Ur({id:i})}`}" data-tooltip="${s}">${c}</a>`:j`<span class="links-finding-id mono">${c}</span>`} ${a?j`<span class="links-finding-title">${a}</span>`:N} ${$G(e,t)} ${n?N:j`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function tK(e){let t=!!I.currentLinks?.managedId;return j`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>j`<button type="button" class="links-finding-report report-button" data-links-report="${t?N:e}" data-links-finding="${n}" data-managed-report="${r??N}" data-links-preview="${t?n:N}" data-preview-report="${t?e:N}" data-preview-row="${t?i:N}" data-preview-managed-report="${t?r:N}">${A(rt[oS(e)]??rt.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${S(e)}">${S(e)}</span></button>`)}</div>`}function nK(e,t){let n=e.reports.toSorted((e,t)=>S(e.name).localeCompare(S(t.name)));if(e.members.length===1){let r=e.members[0];return j`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${eK(r,n,t.has(r.id),tK(n))}</ul></li>`}return j`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${QG(e.members.length,`finding`,`findings`)} in row</span> ${tK(n)}</div><ul class="links-row-members">${e.members.map(e=>eK(e,n,t.has(e.id)))}</ul></li>`}function rK(e,t){let{rows:n,missing:r}=ZG(e,tf(e)),i=new Set(e);return j`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${QG(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${O(n,e=>e.key,e=>nK(e,i))}</ul>${r.length>0?j`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>eK({id:e,title:ef(e)}))}</ul></div>`:N}</li>`}function iK(e=N){let t=I.currentLinks;if(!t)return N;Kf().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=$d(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return j`<div class="links-view">${t.managedId?j`<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>`:N}<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}">${A(nS[oS(n)]??nS.default)}${S(n)}</span> <span>${QG(r.length,`link`,`links`)}</span> <span>${QG(a.size,`finding`,`findings`)}</span> ${o.size>0?j`<span>found in ${QG(o.size,`report`,`reports`)}</span>`:N}</div></div></header>${s<a.size?j`<p class="links-note">${QG(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>`:N} ${i>0?j`<p class="links-note">${QG(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>`:N} ${r.length===0?j`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:j`<ol class="links-list">${O(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>rK(e,t))}</ol>`}</div>`}function aK(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function oK(){if(I.currentWorkspace){let e=z().find(e=>e.id===I.currentWorkspace),t=I.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:I.currentWorkspace,fileNames:e?aK(e.reports??[],I.storedFiles??[],t):t}}if(I.currentFile){let e=z().find(e=>Array.isArray(e.reports)&&e.reports.includes(I.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[I.currentFile]}:null}return null}var sK=1500;function cK({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>Nv()}){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,sK);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function lK(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=>U(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function uK(e,t){if(t.currentView!==`findings`)return null;let n=vi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:E(Hg(e))}};return di(r)?r:n}function dK(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function fK(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Kr(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 pK(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(S(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 mK(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function hK(e){return(e?.appMode?e.appFindings:e?.findings)??null}var gK=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=qx(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 _K(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=>({...Kx(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:hK(t.app),reports:n,bundles:r,repositories:vK(t.repos??[],n,r,$e(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 vK(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 yK=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],bK=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function xK(e,t,{findings:n=e.findings,statusBar:r=N}={}){let i=bK(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return j`<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">${yK.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>j`<button type="button" class="${w({"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?N:j`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function SK(e){return j`${e?.scope===`team`?xK(e,`findings`):N}<p class="triage-loading" role="status">Loading report triage…</p>`}function CK(e,t){return t===`findings`?e.title:j`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function wK(e,t,n){if(!e)return N;let r=e[t].length;if(t===`bundles`&&r===0)return N;let i=n===`workspace-${t}`;return j`<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 TK(e,t){if(!(e>1))return N;let n=t===`files`;return j`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function EK(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=j`<span class="workspace-content-icon">${A(ua)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?j`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:N} </span><span class="workspace-content-stats">${t}</span> ${e.available?j`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:N}`;return j`<li>${e.available?j`<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>`:j`<div class="workspace-content-row">${n}</div>`}</li>`}function DK(e,t){if(!e)return j`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return j`<section class="workspace-content-view">${xK(e,n)} ${e.dependencyReview?j`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:j`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return j`<section class="workspace-content-view">${e.scope===`team`?xK(e,n):j`<header class="page-head"><div class="page-title"><h1>${CK(e,n)}${wK(e,`reports`,n)}${wK(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?j`<ul class="workspace-content-list">${t===`repositories`?r.map(EK):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Kr(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 j`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:N}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:N}" ?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?j`<span class="workspace-content-visibility">Hidden</span>`:N}</span> ${r?j`<span class="workspace-content-repo">${r}</span>`:N} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?j`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:N}</button></li>`})}</ul>`:j`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var OK=null;function kK(e){let t=OK=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{OK===t&&(OK=null)}).catch(()=>{}),t}function AK(e){let t=null;return n=>{t!==null&&t!==n&&OK?.skipTransition(),t=n,e()}}var jK=null;function MK(e){return e.some(e=>e._managedReportId&&!e.tree&&e.treeFiles>0)}function NK(e){let t=Ls(I.reports),n=I.currentManagedTeam;return!n||!MK(t)?!1:jK===t||(jK=t,PK(t,n,I.managedTeams.find(e=>e.id===n)?.reports.find(e=>e.id===I.currentManagedReport&&e.visible===!1)?.id??null,e),!0)}async function PK(e,t,n,r){let i=await jx(t,{reportId:n});if(jK===e&&(jK=null),Ls(I.reports)===e&&I.currentManagedTeam===t){if(!i){Ux(`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 FK(){B.classList.add(`active`),rh.classList.add(`hidden`)}function IK(){let e=xr(I.reports);if(!e)return null;let t=Object.keys(e),n=o_().filter(e=>qg(e).commonTriage===I.shownTriage),r=yr(n,I.severityMode),i=Cr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=k(t,I.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=W(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 T.focusedPkg?(c=t.filter(e=>(Or(e)??`__own__`)===T.focusedPkg),T.showAll||(c=c.filter(e=>Tr(e,r,i)))):c=T.showAll?t:t.filter(e=>Tr(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Ar(c)}}function LK(){let e=YT();if(!e)return;let t=IK();if(!t)return;let n=I.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&L())})}function RK(){let e=YT();if(!e)return;let t=IK();t&&e.refreshTopPkgs(t)}function zK(e){return`${Pi[e]??e} findings`}function BK(e,t,n){return n?j`<repo-chip url="${n}"></repo-chip>`:L()?N:I.currentWorkspace?t?j`<repo-chip url="${t}"></repo-chip>`:N:e?j`<repo-chip url="${I.repoUrl}" editable ?editing="${I.repoEditing}" ?empty="${!I.repoUrl}"></repo-chip>`:t?j`<repo-chip url="${t}"></repo-chip>`:N}function VK(e,t,n,r,i){let a=e.length,o=new Set(I.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=I.currentWorkspace?z().find(e=>e.id===I.currentWorkspace):null,l=_K(I,c?[c]:[],Wu),u=c?`Workspace: ${c.name}`:s?zK(s):`Findings`,d=s&&nS[s]?s:`default`,f=A(nS[d]),p=j`<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=N;if(l)m=wK(l,`reports`,I.currentView);else if(t.length===1){let e=S(t[0]);m=j`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=j`<button type="button" class="file-chip" data-copy-report="${t.map(S).join(`
|
|
199
|
+
`)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=I.currentWorkspace?[]:zq(!!s),_=N;if(a>0){let t={};for(let n of e){let e=k(zg(n),I.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ii.filter(e=>t[e]>0);n.length>0&&(_=j`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return j`<span class="${`status-seg sev-${e}`}" style="${D({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return xK(l,I.currentView,{findings:a,statusBar:_});let v=new Set(I.reports.map(e=>e.repo??null)),y=BK(n,r,v.size===1?[...v][0]:null),b=j`<span class="sep" aria-hidden="true"></span>`,x=l?N:TK(i,I.currentView);return j`<header class="page-head"><div class="page-title"><h1>${l?CK(l,I.currentView):u}${m}${wK(l,`bundles`,I.currentView)}${y}${x}${WK()}</h1><div class="meta-row"><span>${h}</span> ${_} ${g.length>0?j`${b}${g.map(e=>j`<span class="tag">${e}</span>`)}`:N}</div></div></header>`}var{suggestSync:HK}=cK({open:e=>Oe({names:e})}),UK=new Set([`findings`,`files`,`links`]);function WK(){if(H.status!==`online`||!UK.has(I.currentView))return N;let e=oK();if(!e)return N;let{workspaceId:t,fileNames:n,mode:r}=e,i=Eh(t);if(i.length>0&&HK(t,i,{onSync:()=>GK(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return KK({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:()=>GK(t,r,n)});let a=yh(t,e)?`cloud`:`local`;return KK({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>XK({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=z().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=Th(t),c=n.filter(e=>!yh(t,e)),l=o.filter(e=>!bh(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return N;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?N:j`<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(),GK(t,r,n)}}">${JK()}<span>${i.length} differ</span></button>`,m=s===0?N:j`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),me({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${YK()}<span>${s} cloud</span></button>`,h=u.length===0?N:j`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),XK({workspaceId:t,items:u})}}">${qK()}<span>${u.length} local</span></button>`,g=j`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==N);return j`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:j`${g}${e}`)}</div>`}function GK(e,t,n){let r=z().find(t=>t.id===e),i=t===`single`?aK(r?.reports??[],I.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return me({workspaceId:e,cloudCount:Th(e),localFileNames:i,localBundles:a,autoRun:!0})}function KK({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?YK():e===`differ`?JK():qK(),a=j`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?j`<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>`:j`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function qK(){return j`<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 JK(){return j`<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 YK(){return j`<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 XK({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await fl(),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 Ae({workspaceId:e,items:t})}function ZK(e){return Object.values(e).some(e=>e>0)||I.filterSeverities.size>0?j`<severity-chips .counts="${e}"></severity-chips>`:N}function QK(e){return Object.values(e).some(e=>e>0)||I.filterColors.size>0?j`<triage-filter .counts="${e}"></triage-filter>`:N}function $K(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:x,showSeverityMode:ee,revalidateOptions:te,showPartial:ne,canDropLayer:re,canDetailLayer:ie,canUpstreamLens:ae,confirmedLocked:oe}=a;return j`<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?j`<source-filter></source-filter>`:N} ${!oe&&(l||te.length>0)?j`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${te}" ?has-partial="${ne}"></conf-filter>`:N} ${h||g||_||I.filterComment||I.filterFix||I.filterFlagged?j`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:N} ${p?N:j`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!I.currentWorkspace&&(v||I.filterDuplicates)||y||b||x||I.filterCrossContext||I.filterAppStacked?j`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${x}"></annotation-filter>`:N} ${re||I.revalidateConflicts.size>0?j`<revalidation-switch ?can-drop="${re}" ?can-detail="${ie}" ?can-upstream="${ae&&re}" .upstreamDisabled="${I.showRevalidation===!1&&re}"></revalidation-switch>`:N}</div></div><div class="toolbar-row sev-row">${ee?j`<severity-mode-switch></severity-mode-switch>`:N} ${ZK(r)} ${o.analyzers.length>1||o.models.length>1?j`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:N} ${m&&s.length>1?j`<repo-filter .options="${s}"></repo-filter>`:N} ${QK(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function eq(e,t){return e.map(e=>({p:zg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var tq=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),nq=null,rq=0,iq=null;function aq(e,t=!1,n=null,r=!1,i=!1){return j`<finding-card data-gid="${U(e)}" .group="${e}" ?in-group="${t}" context="${n??N}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var oq=j`<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>`,sq=j`<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>`,cq={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function lq(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??qg(e),o=Hg(e),s=Ki(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&I.currentWorkspace?aS(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=k(o,I.severityMode),h=cq[m]??`?`,g=Ri(o)&&I.severityMode!==`original`,_=W(o),v=_?.flagged===!0,y=og(o,_),b=_?.comment??``,x=N;c&&y?x=bi(y)?j`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${lT}</managed-fix-link>`:Ng(o)?j`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${lT}</button>`:j`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${lT}</span>`:c&&(b||L()&&jg(o))&&(x=j`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${cT}</comment-preview>`);let ee=j`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${Lw(m)} \u2014 corrected from ${Lw(o.severity)}`:N}" aria-label="${g?`Severity ${Lw(m)}, corrected from ${Lw(o.severity)}`:`Severity ${Lw(m)}`}">${h}${g?`*`:``}</span> ${v?j`<span class="kanban-flag" aria-label="Flagged">${xT}</span>`:N} ${x}</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?N:j`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?j`<span class="kanban-analyzer" role="img" data-tooltip="${iS[u]}" aria-label="${iS[u]}">${A(rt[u])}</span>`:N}</div>`;return c?j`<div class="${w(d)}" data-gid="${U(e)}" data-kanban-source draggable="${Zg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${ee}</div>`:l?j`<div class="${w(d)}" data-gid="${U(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${ee}</div>`:j`<div class="${w(d)}" data-gid="${U(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${ee}</div>`}var uq={content:``,parts:``};function dq(e){return uq.content!==e&&(uq={content:e,parts:xE(e)}),uq.parts}function fq(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
|
|
200
|
+
`).length,a=String(i).length;return j`<div class="focus-code-lines" style="${D({"--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 j`<div class="${w(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?A(r):dq(t)}</code></pre></div>`}function pq(e){return!e||!Kv(Hg(e))?N:j`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${U(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 mq(e,t=N,n=!1){I.focusCodeTick;let r=QC(e),i=YC(e),a=r?`focus-main with-code`:`focus-main`,o=D({"--focus-split":String(I.focusSplit)});return j`<div class="${a}" style="${o}" data-gid="${U(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?N:pq(e)} ${aq(e,!1,`focus`,!1,n)}</div></div>${t} ${r?j`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${qs}" aria-valuemax="${Js}" aria-valuenow="${Math.round(I.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??N}" data-focus-code-integrity="${r.integrity??N}">${r.loading?j`<div class="focus-code-empty">Loading source…</div>`:j`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?j`<span class="focus-code-line">:${Yn(r.range)}</span>`:N} ${(i?.stack.length??0)>1?j`<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">${Aw}</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">${jw}</button></div>`:N}</header><div class="focus-code-body">${fq(r)}</div>`}</div>`:N}</div>`}function hq(e,t,n=[],r=null){if(!e&&!r)return N;let i=e?qg(e):{},a=I.kanbanDetailFullscreen,o=e?iL():null,s={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},c=e?U(e):null,l=t?.items??[],u=l.findIndex(e=>U(e)===c),d=j`<div class="kanban-detail-actions">${pq(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?sq:oq}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return j`<div class="${w({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${w(s)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?N:d}<div class="kanban-detail-body">${e&&!o?a?mq(e,d,!0):aq(e,!1,`kanban-detail`,!1,!0):j`<div class="links-preview-message" role="status">${r?.error||(o===`failed`?Eq:`Loading finding…`)}</div>`}</div></div>${l.length===0?N:j`<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 j`<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">${Aw}</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">${jw}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${l}" .activeKey="${c}" .keyOf="${U}" .renderItem="${e=>lq(e,{variant:`kanban-side`,active:U(e)===c})}"></kanban-rail></aside>`}</div>`}function gq(e,t,n=new Map){if(I.viewMode===`table`){let n=I.sortBy===`file`?eq(e,tq):e;return n.length===0?N:(nq=n,j`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?j`<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">${aq(t)}</div></aside>`:N}</div>`)}if(I.viewMode===`focus`){if(e.length===0)return N;let n=e.indexOf(t);rq=n;let r=t,i=n===0,a=n===e.length-1;return j`<div class="focus-view">${mq(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">${Aw}</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">${jw}</button></div></div><div class="focus-sidebar-body">${O(e,e=>U(e),e=>lq(e,{variant:`focus`,active:U(e)===U(r)}))}</div></aside></div>`}if(I.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=qg(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===I.kanbanExpandedColumn)?I.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 j`<div class="kanban-board" style="${D(c)}">${O(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return j`<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?sq:oq}</button></div><div class="kanban-column-body">${t.length===0?j`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:O(t,e=>U(e),(e,t)=>lq(e,{active:U(e)===I.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${hq(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?U(t[0]):``}}))}`}if(I.viewMode===`grouped`){let t=new Map;for(let n of e){let e=zg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=I.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return j`${O(n,e=>e,e=>{let n=I.sortBy===`file`?eq(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=zg(n[0]);return j`<div class="file-group"><div class="file-header"><span>${Rn(r,Wg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${O(n,e=>U(e),e=>aq(e,!1,null,!0))}</div></div>`})}`}let r=I.sortBy===`file`?eq(e,tq):e;return j`${O(r,e=>U(e),e=>{let t=Hg(e),n=er(t,Wg(t)),r=In(t),i=Gi(t),a=e.length>1;return j`<div class="${w({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Rn(t,Wg(t))}</span> ${n===N?N:j`<span class="line-num">${n}</span>`} ${i?j`<span class="meta">${i}</span>`:N} ${r?j`<span class="run-meta">${r}</span>`:N}</div>${aq(e,!0,null,!0)}</div>`})}`}function _q(){I.bundleSourceFile&&sJ().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&P(ZU(),e)}var vq=AK(Uq);function X(){vq(I.currentView)}var yq=e=>Object.assign(document.createElement(`div`),{id:e});function bq(e){let t=document.querySelector(`#${e}`);return(!t||!B.contains(t)||B.firstElementChild!==t)&&(t=yq(e),B.replaceChildren(t)),t}function xq(e=null){let t=e==null?null:I.managedTeams.find(t=>t.id===e),n=t?_K({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:I.managedTeams,managedSession:I.managedSession},[]):null;P(SK(n),bq(`triage-loading-slot`))}function Sq(){let e=_K(I,z(),Wu);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=bq(`empty-workspace-slot`);t&&P(j`${VK([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),FK()}var Cq={"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 wq(){I.currentView===`files`&&(I.currentView=`findings`),I.viewMode===`graph`&&(I.viewMode=`kanban`)}var Tq=e=>j`<p class="triage-loading" role="status">Loading ${e}…</p>`,Eq=`Could not load finding details. Open the team again to retry.`,Dq=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),Oq=null;function kq(e){let t=[e,kn(),Dr()];if(Oq?.key.every((e,n)=>e===t[n]))return Oq;let n=M_(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(m_(e));let p=Object.keys(Q_),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(Dq);return Oq={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},Oq}var Aq=null;function jq(e,t){if(Aq?.groups===e&&Aq.workspace===t)return Aq;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=Vi(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return Aq={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},Aq}var Mq=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),Nq=()=>I.currentWorkspace?cL():null,Pq={reports:[],value:!1};function Fq(){let e=Nq();return e?e.drop:(Mq(Pq.reports,I.reports)||(Pq={reports:[...I.reports],value:Mr(I.reports)}),Pq.value)}var Iq={reports:[],depsDir:null,value:!1};function Lq(){let e=kn();return(Iq.depsDir!==e||!Mq(Iq.reports,I.reports))&&(jn(I.reports)&&t_(),Iq={reports:[...I.reports],depsDir:e,value:I.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),Nq()?.upstream??Iq.value}var Rq={reports:[],single:!1,details:null,tags:[]};function zq(e){let t=iL();if(Rq.single!==e||Rq.details!==t||!Mq(Rq.reports,I.reports)){let n=I.reports.flatMap(e=>e.groups.flat());Rq={reports:[...I.reports],single:e,details:t,tags:BS(n,e?jS.filter(e=>e!==`type`):jS)}}return Rq.tags}var Bq=null;function Vq({held:e=!1}={}){let t=I.revalidateConflicts.size>0,n=!t&&Fq();return t?I.showRevalidation!==!1&&(Bq=I.showRevalidation,I.showRevalidation=!1):(Bq!==null&&(I.showRevalidation=Bq,Bq=null),!n&&I.showRevalidation===!1&&!e&&(I.showRevalidation=!0)),I.upstreamOnly&&!e&&(!n||I.showRevalidation===!1||!Lq())&&(I.upstreamOnly=!1),Er(I.showRevalidation,I.upstreamOnly),n}var Hq=null;function Uq(){xg()||Sg(),_q(),On(I.reports),jd()&&queueMicrotask(()=>{Nd()});let e=Lq(),t=Vq({held:!!sL()}),n=e;if(I.currentView===`lockfile`){if(I.droppedLockfile){let e=bq(`dropped-lockfile-slot`);e&&P(PW(I.droppedLockfile),e),FK(),document.title=`DeepView \u2014 ${I.droppedLockfile.name}`;return}I.currentView=`findings`}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(I.currentView)){let e=I.currentView.slice(10),t=_K(I,z(),Wu),n=bq(`workspace-content-slot`);n&&P(DK(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(I.currentView===`bundles`){if((I.bundles??[]).length===0)I.currentView=`findings`;else{Wt(I.bundleDetailsTab,I.bundleSourceFile)&&sJ().catch(()=>{});let e=bq(`bundles-slot`);e&&P(cG(I.bundles),e);let t=I.bundleDetails,n=I.selectedBundle&&t&&(t.json||t.bundle);if(n&&I.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=xU(I.bundleDetails);if(n){EU(n);let r={hideAllFiles:!0,triageCounts:yU(I.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=Hq,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===T.graphState&&i.details===t&&i.reason===T.bundleReason?a.options=r:(Hq=null,ZT(e,n,r,wU,TU).then(e=>(e&&T.graphState&&(Hq={state:T.graphState,details:t,reason:T.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(I.bundleDetailsTab===`terminal`||I.bundleDetailsTab===`code`&&I.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&iE(e,I.bundleDetails)}FK();let{npm:r,repository:i}=I.bundles.find(e=>e.integrity===I.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${uM(i)}`:`DeepView — bundles`;return}}if(I.currentView===`reviews`){let e=bq(`dependency-reviews-slot`);e&&P(eR(()=>j`<dependency-review-list .session="${I.managedSession}"></dependency-review-list>`),e),FK(),document.title=`DeepView — my reviews`;return}if(I.currentView===`profile`){let e=bq(`managed-profile-slot`);e&&P(j`<managed-profile .session="${I.managedSession}" .linkError="${I.profileLinkError}"></managed-profile>`,e),FK(),document.title=`DeepView — profile`;return}if(I.currentView===`npm`){let e=I.npmOpening,t=bq(e?`bundles-slot`:`npm-slot`);t&&P(e?eG(e):wj(),t),FK(),document.title=e?`DeepView \u2014 ${FA(e.name,e.spec)}`:`DeepView — npm packages`;return}if(I.currentView===`repository-code`){let e=I.repositoryCodeOpening,t=bq(`bundles-slot`);t&&e&&P(tG(e),t),FK(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(I.currentView===`packages`){let e=bq(`packages-slot`);e&&P(EG(),e),FK(),document.title=`DeepView — packages`;return}if(I.currentView===`repositories`){let e=bq(`repositories-slot`);e&&P(VG(),e),FK(),document.title=`DeepView — repositories`;return}if(I.currentView===`links`){if(I.currentLinks){let e=bq(`links-slot`),t=xg();e&&P(j`${iK(WK())}${t?hq(t.group,null,[],t):N}`,e),FK(),document.title=`DeepView \u2014 ${I.currentLinks.name}`;return}I.currentView=`findings`}if(I.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=bq(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=I.scanSelection,e.append(t),t.updateComplete.then(()=>pr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}FK(),document.title=`DeepView — scans`;return}let r=Cq[I.currentView];if(r){let e=bq(r.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==I.managedSession?.id||t?.role!==I.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(r.tag),n=e=>pr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=bp(),I.currentView===`manage-import`&&(t.localDeps=vp(),t.promptPassword=Le,t.resolveConflicts=AS,t.confirmTriageImport=ae,t.confirmContentImport=re,t.showTriageComparison=je),t.session=I.managedSession,t.allowShare=I.managed?.allowShare===!0,I.currentView===`manage-scans`&&(t.selection=I.scanSelection),I.currentView===`manage-bundles`&&(t.createRepoId=I.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=I.managedSession,e.firstElementChild.allowShare=I.managed?.allowShare===!0),I.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=I.scanSelection),I.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=I.bundleCreationRepoId),FK(),document.title=r.title;return}if(I.reports.length===0||aL()){I.reports.length===0&&I.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&Sq();return}let i=o_(),a=I.viewMode===`kanban`,o={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},s=[],c=new Map;for(let e of i){let t=qg(e);c.set(e,t);let n=t.commonTriage;n&&o[n]++,(a||n===I.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){Ri(t)&&(f=!0);let e=W(t);ag(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=u_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(I.filterDuplicates=``);let h=s.some(V_),g=s.some(H_);h||(I.filterCrossContext=``),g||(I.filterAppStacked=``);let _=W_(s);_||(I.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=kr(t);e&&v.add(e)}let y=Nq(),{hasFoldedRows:b,hasPartialRow:x,hasRuledOutRow:ee}=y?{hasFoldedRows:y.detail,hasPartialRow:!1,hasRuledOutRow:!1}:jq(i_(),!!I.currentWorkspace),te=[...new Set(I.reports.map(e=>e.type))].join(`, `),ne=I.reports.map(e=>e.fileName),ie=s.map(Ig).filter(e=>e.length>0),oe=ie.length>0&&gr(ie),{hasAnyPriority:se,hasAnyModulesPath:ce,hasAnySourcePath:le,hasMultipleFiles:ue,repoInputUseful:de,knownRepo:fe,analyzerSet:pe,modelSet:me,analyzerOptions:he,modelOptions:ge}=kq(i);if(I.filterAnalyzer){let e=I.filterAnalyzer===d_?null:I.filterAnalyzer;(!pe.has(e)||pe.size<2)&&(I.filterAnalyzer=``)}if(I.filterModel){let e=I.filterModel===p_?null:I.filterModel;(!me.has(e)||me.size<2)&&(I.filterModel=``)}let _e=En(v);I.filterRevalidate&&!_e.some(e=>e.value===I.filterRevalidate)&&(I.filterRevalidate=``);let ve=A_(s);ve&&(I.filterRevalidate=`confirmed`);let ye=v.has(`partial`)&&Eg();ye||(I.filterPartial=``);let be=t&&(b||x||!I.currentWorkspace&&ee),xe=!(t&&I.showRevalidation!==!1)&&!I.upstreamOnly&&ce&≤!xe&&I.filterSources.size>0&&I.filterSources.clear(),oe||(I.filterConfMin=0,I.filterConfMax=10,(I.sortBy===`confidence-desc`||I.sortBy===`confidence-asc`)&&(I.sortBy=`severity`)),!se&&(I.sortBy===`priority-desc`||I.sortBy===`priority-asc`)&&(I.sortBy=`severity`),!ue&&I.sortBy===`file`&&(I.sortBy=`severity`);let Se=G_(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=k(e[0],I.severityMode);Ce[t]=(Ce[t]||0)+1;let n=W(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>k(e,I.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>W(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=__(Se),Ee=[...Te].toSorted(Dq);if(I.filterRepo){let e=I.filterRepo===f_?null:I.filterRepo;Te.has(e)||(I.filterRepo=``)}let De=Z_(K_(s)),Oe=xr(I.reports),ke=Oe?Object.keys(Oe).length:I.reports.reduce((e,t)=>e+(t.treeFiles??0),0),Ae=ke>1&&!Oe&&(I.currentView===`files`||I.viewMode===`graph`)&&NK(e=>{e||wq(),X()}),Me=ke>1,Ne=Dr()&&!Eg(),Pe=sL(),Fe=!Pe||Ne&&(Pe===`rows`||!!I.currentWorkspace&&I.filterRevalidate===`confirmed`),Ie=I.viewMode===`kanban`&&Fe?null:iL();(!Me||!Oe&&!Ae)&&wq();let Re=VK(i,ne,de,fe,ke);if(I.currentView===`files`){let e=yr(i,I.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!B.contains(t)||!B.contains(n))&&(t=yq(`header-slot`),n=yq(`tree-view-slot`),B.replaceChildren(t,n)),t&&P(Re,t),n&&P(Oe?HT(Oe,e):Tq(`files`),n),FK(),document.title=`DeepView \u2014 ${te||`no analyzer`}`;return}let ze=I.viewMode===`table`&&I.tableSelectedGid&&De.some(e=>U(e)===I.tableSelectedGid),Be=null;I.viewMode===`graph`&&Oe&&!Ie&&(Be=IK(),Be||(I.viewMode=`kanban`));let Ve=!!Be,He=`findings-content`;ze&&(He+=` with-details`),Ve&&(He+=` with-graph`),a&&(He+=` with-kanban`),I.viewMode===`focus`&&(He+=` with-focus`);let Ue=N,We=N,Ge=N,Ke=lK(De,I,rq);nq=null,Ve||(Ue=$K(De.length,s.length,o,Ce,we,{showSource:xe,showConfidence:oe,showPriority:se,showGraphMode:Me,showFileSort:ue,kanbanMode:a,showRepo:!!I.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||I.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),I.shownTriage&&s.length===0?We=j`<p style="${D({color:`var(--muted)`,margin:`1rem 0`})}">No ${I.shownTriage} findings.</p>`:De.length===0&&s.length>0&&!a?We=j`<p style="${D({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(We=i.length>0?j`<p style="${D({color:`var(--green)`})}">All ${te} issues triaged.</p>`:j`<p style="${D({color:`var(--green)`})}">No ${te} issues found.</p>`),Ge=Ae?Tq(`graph`):Ie===`loading`?Tq(`findings`):Ie?j`<p class="triage-loading" role="status">${Eq}</p>`:gq(De,Ke,c));let qe=document.querySelector(`#header-slot`),Je=B.querySelector(`:scope > .findings-content`),Ye=Je&&Je.querySelector(`:scope > #findings-graph-slot`),Xe=Je&&Je.querySelector(`:scope > #findings-body-slot`),Ze=Je&&(Ye?`graph`:Xe?`body`:null)===(Ve?`graph`:`body`);!qe||!Je||!B.contains(qe)||!B.contains(Je)||!Ze?(qe=yq(`header-slot`),Je=Object.assign(document.createElement(`div`),{className:He}),Je.append(...Ve?[yq(`findings-graph-slot`)]:[yq(`toolbar-slot`),yq(`empty-state-slot`),yq(`findings-body-slot`)]),B.replaceChildren(qe,Je)):Je.className!==He&&(Je.className=He),qe&&P(Re,qe);let Qe=document.querySelector(`#toolbar-slot`);Qe&&P(Ue,Qe);let $e=document.querySelector(`#empty-state-slot`);$e&&P(We,$e);let et=document.querySelector(`#findings-body-slot`);if(et&&P(Ge,et),Be){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:j`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:o,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};ZT(e,Be,t,LK,RK)}}if(nq){let e=B.querySelector(`.finding-table-slot`);e&&(iq||=document.createElement(`finding-table`),iq.items=nq,iq.selectedGid=I.tableSelectedGid,iq.parentNode!==e&&e.append(iq))}FK(),document.title=`DeepView \u2014 ${te||`no analyzer`}`,L()&&K?.replaceFindingRoute(uK(Ke,I))}var Wq=new Map,Gq=new Map,Kq=new Map,qq=new WeakMap;async function Jq(e){try{let t=await yl(e);return t?Yt(t,e):null}catch{return null}}var Yq=null;function Xq(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return Yq=t.size>0?{bundles:t}:null,Yq}function Zq(e){Yq===e&&(Yq=null)}function Qq(e,t=()=>!0){let n=Yq?.bundles.get(e);return!n||!t(n)?null:(Yq.bundles.delete(e),Yq.bundles.size===0&&(Yq=null),n)}function $q(e,t,{sources:n=!0}={}){if(!t.managedId&&L())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?Wq:Gq,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=I.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=Qq(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?iv():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?Xt(await kx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Yt(await Ox(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 Jq(e);return n?.kind===i&&!n.stale?n:$q(e,t)}let[r,a]=await Promise.all([nJ(e,t),Jq(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||Jt(r).then(t=>bl(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 eJ(e,t=I.currentView===`bundles`?I.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=I.bundleDetails,i=I.bundleCodeFileRequest,a=i?.bundle===I.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=I.currentView===`bundles`&&I.bundleDetailsTab===`code`&&t===`code`?I.bundleSourceFile??(a?i.path:null):null;av(),I.currentView=`bundles`,I.selectedBundle=e,I.selectedBundleWorkspace=n,I.bundleDetails=null,I.bundleSourceFile=null,I.bundleCodeHistory=null,I.bundleCodeFileRequest=o?{bundle:e,path:o}:null,I.bundleCompare=null,I.bundleSourceFindingIdx=null,I.bundleCodeSearchQuery=``,I.bundleCodeSearchMode=`files`,I.bundleSearchQuery=``,I.bundleSearchRegex=!1,I.bundleSearchCase=!1,I.bundleSearchContext=!0,I.bundleDetailsTab=t??`overview`,T.showAll=!0,I.shownTriage=null}function tJ(e,{preserveSource:t=!1}={}){Wt(I.bundleDetailsTab,I.bundleSourceFile)&&!Wt(e,t?I.bundleSourceFile:null)&&av(),I.bundleDetailsTab=e,I.bundleCodeFileRequest=null,t||(I.bundleSourceFile=null,I.bundleCodeHistory=null),I.bundleSourceFindingIdx=null}async function nJ(e,t){try{let n=await vl(e);if(L())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return Xt(Sa(n),{integrity:e,kind:i,size:n.byteLength});let t=Sa(await nh(n,()=>!L())),a=kt.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 rJ(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){ep(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Gt(e);if(ep(e.integrity,t),I.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function iJ(e){if(op(e))return Promise.resolve();if(Kq.has(e))return Kq.get(e);let t=(I.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await Jq(e);if(t?.json||t?.bundle)try{ep(e,await Gt(t))}catch{}})();return Kq.set(e,n),n.finally(()=>{Kq.get(e)===n&&Kq.delete(e)}).catch(()=>{}),n}async function aJ(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 iJ(e)}}}async function oJ(e){let t=(I.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await $q(e,t,{sources:Wt(I.bundleDetailsTab,I.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}I.selectedBundle!==e||t.managedId&&!I.bundles.includes(t)||(I.bundleDetails=n,X(),rJ(n),t.managedId||Kf().catch(()=>{}))}function sJ(e=I.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?iv():void 0,n=qq.get(e);if(n&&n.signal===t)return n.job;let r=(I.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=$q(e.integrity,r).then(n=>(t?.throwIfAborted(),I.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)),I.bundleDetails=n,X(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return qq.set(e,{job:i,signal:t}),i.finally(()=>{qq.get(e)?.job===i&&qq.delete(e)}).catch(()=>{}),i}async function cJ({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()||!L())return!1;let f=Qq(d.integrity,t=>t.managedId===e),p=I.bundleDetails?.managedId===e&&I.bundleDetails.integrity===d.integrity&&!I.bundleDetails.error?I.bundleDetails:null;try{I.bundles=c,ar(),eJ(d.integrity,n),n===`code`&&r!=null&&(I.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Gx(c,d.integrity).find(e=>e.managedId===o):null;e&&(I.bundleCompare={bundle:d.integrity,target:e.integrity,mode:si(s)}),I.bundleDetails=f??p,I.currentManagedTeam=t,I.currentManagedReport=null,I.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`&&Ux(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=I.bundleDetails,h=()=>L()&&I.currentView===`bundles`&&I.selectedBundle===d.integrity&&I.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&I.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&Ux(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(I.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},X())),!1),_=G(),v;for(;;){let t=iv();try{v=await Ox(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=Yt(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,I.bundleDetails=n,X({animate:!1})}return l()&&_===G()&&I.bundleDetails?.managedId===e&&I.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function lJ(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 uJ(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:lJ(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 dJ(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 fJ=`deepview-managed-session`,pJ=null,mJ=null,hJ=null,gJ=0,_J=0,vJ=new Set;function yJ(){return!pJ&&typeof BroadcastChannel==`function`&&(pJ=new BroadcastChannel(fJ),pJ.addEventListener(`message`,e=>{let t=e.data?.mark;if(typeof t==`string`&&(hJ=t,gJ++,mJ!==null&&t!==mJ))for(let e of vJ)e()}),pJ.unref?.()),pJ}async function bJ(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 xJ(e,t){if(e?.publicShare)return;let n=++_J,r=await bJ(e);if(n!==_J||r===null||!yJ())return;let i=mJ===null,a=t===gJ&&hJ!==null&&hJ!==r;if((r!==mJ||a)&&(mJ=r,pJ.postMessage({mark:r})),a)hJ=r;else if(i&&hJ!==null&&hJ!==r)for(let e of vJ)e()}function SJ(){return gJ}async function CJ(e){return hJ===null||e?.publicShare?!1:hJ!==await bJ(e)}function wJ(e){return yJ(),vJ.add(e),()=>{vJ.delete(e)}}var TJ=`*,*: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}
|
|
201
|
+
`,EJ=`: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)}
|
|
202
|
+
`,DJ=null,OJ=null,kJ=!1,AJ=!1,jJ=0;function MJ(){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 NJ(){return MJ()===`webkit`}function PJ(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 FJ(){if(!DJ)return;if(L()||!OJ||OJ.persisted!==!1||!kJ){DJ.hidden=!0;return}DJ.hidden=!1;let e=OJ.usage===null||OJ.quota===null?``:` Using ${PJ(OJ.usage)} of ${PJ(OJ.quota)}.`;DJ.querySelector(`.storage-label`).textContent=`Storage at risk`,DJ.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(NJ()?`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 IJ(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!NJ()&&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 `+(NJ()?`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 LJ(){if(await DZ(),!DJ||L()){FJ();return}let[e,t]=await Promise.all([Cp(),(async()=>{try{return(await qc()).length>0||await pl()}catch{return!1}})()]);OJ=e,kJ=t,FJ()}function RJ(){!DJ||jJ||(jJ=setTimeout(()=>{jJ=0,LJ()},1e3))}async function zJ(){AJ||(await LJ(),L()||OJ?.persisted!==!1||!kJ||AJ)||(AJ=!0,IJ(await Sp(),!1),await LJ())}async function BJ(){if(OJ&&OJ.persisted===!1){AJ=!0;let e=await Sp();IJ(e,!0),e||await we()}await LJ()}function VJ(e){DJ=e,DJ&&(DJ.addEventListener(`click`,()=>{BJ()}),Gc((e,t)=>{RJ(),t===`save`&&zJ()}),zJ())}function HJ(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);P(n.length>0?j`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${O(n,e=>e.id,e=>{let t=Nm(e),n=e.reports.filter(e=>Wu(e)!==c).length;return j`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${A(ia)} <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>`:N,t)}var UJ=null;function WJ(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 GJ(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=hK(e.app),{reports:r,bundles:i,repositories:a}=WJ(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 KJ(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?UJ?UJ.options=e:UJ={options:e,elapsed:!1,timer:setTimeout(()=>{UJ.elapsed=!0,KJ(UJ.options)},1e3)}:(clearTimeout(UJ?.timer),UJ=null);let p=f&&!UJ.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){P(N,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(WJ(e)).some(Boolean));if(He()&&!n){P(j`<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}P(n==null?j`<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`?j`<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>`:j`<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?j`<nav class="managed-team-list" aria-label="Teams">${O(g,e=>e.id,e=>j`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${A(ia)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${GJ(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>`:j`<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`,na],[`manage-scans`,`Scans`,ca],[`manage-reports`,`Reports`,la]]:[],[`npm`,`npm packages`,ra]].map(([e,t,n])=>j`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${A(n)}</span> <span>${t}</span></button>`)}</nav>${h?j`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${A(oa)}</span><span>Manage</span></button></div>`:N}`,l)}var qJ=!1,JJ=null;function YJ(){if(!qJ){JJ=hc();return}Kf().catch(()=>{}),_d().catch(()=>{})}function XJ(){if(qJ)return;qJ=!0;let e=JJ;JJ=null,e!==null&&e===hc()&&YJ()}async function ZJ(e){await Pe({workspace:e})}var QJ=class extends Fv{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return j`<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`,QJ);function $J(){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 eY(e,{openManagedReport:t,readTeam:n=Ax,isCurrent:r=()=>!0}){let i=I.managedSession,a=()=>r()&&L()&&I.managedSession?.id===i?.id&&I.managedSession?.role===i?.role,o=I.managedTeams;if(!a())return null;async function s(n,r){return!a()||(I.currentManagedTeam!==n.id||I.currentManagedReport!==r)&&!await t(n,r)||!a()||I.currentManagedTeam!==n.id||I.currentManagedReport!==r?null:tw(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 x(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})=>Vr(`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=>Vr(`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===I.currentManagedTeam);if(f&&(I.currentManagedReport==null||f.reports.some(e=>e.id===I.currentManagedReport))){let t=tw(e.id);if(t)return t}return d(c)}async function tY(e,t,n,{openReport:r,openManagedReport:i}){if(L()){let e=I.managedTeams.find(e=>e.id===I.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(I.currentManagedReport!==n||I.currentWorkspace)&&!await i(e,n)||!L()||I.currentManagedTeam!==e.id||I.currentManagedReport!==n||I.currentWorkspace)return null}else if(n||((I.currentFile!==t||I.currentWorkspace)&&await r(t),L()||I.currentFile!==t||I.currentWorkspace))return null;return tw(e)}async function nY(e,t){if(L())return eY(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([cp(e.report),sp(e.workspace)]);async function o(t){let r=ew(t,a?.id);return(I.currentFile!==t||I.currentWorkspace||I.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),tw(e.id)}if(i){let e=await o(i);if(e)return e}if(a){I.currentWorkspace!==a.id&&await r(a.id);let t=tw(e.id);if(t)return t}let s=tw(e.id);if(s)return s;let c=I.reports.map(e=>e.fileName).filter(Boolean),l=await up(e.id,{skip:c});return l?await o(l):null}var rY=1600,iY=`link-target`,aY=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,oY=null,sY=3,cY=150,lY=5;function uY(e){oY!==null&&clearTimeout(oY);for(let e of document.querySelectorAll(`.${iY}`))e.classList.remove(iY);e.classList.add(iY),oY=setTimeout(()=>{e.classList.remove(iY),oY=null},rY)}function dY(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>=sY||++i>=cY?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function fY(e){let t=0,n=window.innerHeight,r=nV(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 pY(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=fY(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 mY(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<lY;t++){if(await dY(e),!e.isConnected||pY(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function hY(e){let t=CSS.escape(e);if(I.viewMode===`table`){let t=B.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&U(n.group)===e)return n}}if(I.viewMode===`kanban`){let e=B.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return B.querySelector(`finding-card[data-gid="${t}"]`)??B.querySelector(`[data-gid="${t}"]`)}async function gY(e,t,n=()=>!0){let r=nw(e.group,t),i=l_(r);if(i&&$g(i)&&queueMicrotask(Nd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await hY(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await mY(a),n()?(uY(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function _Y(e,{openManagedReport:t=FL,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await nY(e,{openReport:ML,openWorkspace:zL,openManagedReport:t,isCurrent:n});return n()?r?await gY(r,e.id,n):{ok:!1,reason:L()?`Couldn't find that finding in the team reports you can access.`:aY}:{ok:!1}}async function vY(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await tY(e,t,n,{openReport:ML,openManagedReport:FL});return r?await gY(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 yY=null,Z=null,bY=null;function xY(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}hr();function SY(){return Pf().size}function CY(){return Ff().size}var wY=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,TY=`application/x-deepview-report`,EY=`application/x-deepview-source-ws`,DY=`application/x-deepview-bundle`,OY=!1,kY=!1,AY={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[c]:`Links`},jY=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,c],MY=``,NY=!1,PY=new Map,FY=``,IY=new gK;function LY(e,t){let n=I.currentView===`bundles`?I.selectedBundle:null,r=[`findings`,`files`,`links`].includes(I.currentView)?I.currentFile:null,i=n?`bundles`:`reports`,a=r?ew(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!==FY){FY=s;for(let e of o){let t=PY.get(e.id)??new Set;t.add(i),PY.set(e.id,t)}}}function RY(e,t={}){let n=`file-item${zY(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=S(e),i=Uu(e),a=nS[oS(e)]??nS.default;return j`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??N}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${A(a)}<span class="file-label">${r}</span>${i===void 0?N:j`<span class="file-count">${i}</span>`}</button></li>`}function zY(e,t){return e===I.currentFile&&t===ew(e)&&(I.currentView===`findings`||I.currentView===`files`||I.currentView===`links`)}function BY(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return j`<li class="${n}" data-default-reports="${t.dropTarget?`true`:N}"><span class="group-label">${e}</span></li>`}var VY=j`<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>`,HY=j`<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 UY(){return j`<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">${VY}</button></span></li>`}function WY(){let e=pK(I.managedTeams,MY);return e.length===0?N:j`${BY(`Teams`)} ${O(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=mK(r,(e.reports??[]).filter(e=>e.analyzer!==c).length),a=IY.shown(e.id,`reports`,i,NY),o=IY.shown(e.id,`bundles`,i,NY),s=t.filter(e=>e.analyzer!==c).length,l=hK(r);return j`<li class="${`file-item team-item${JY(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{FL(e)}}">${sX}<span class="file-label">${e.name}</span></button> ${I.managed?.allowShare&&[`admin`,`manage`].includes(I.managedSession?.role)?j`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{fx(e)}}">${uX}</button>`:N}</div>${i?j`<div class="workspace-meta">${l===null?N:j`<span class="workspace-findings">${l.toLocaleString()} finding${l===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="${NY}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?j`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${NY}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:N}</span></div>`:N}</li>${a?O(t,e=>e.id,t=>ZY(e,t)):N} ${o?O(n,e=>e.id,t=>$Y(e,t)):N}`})}`}function GY(e,t,n,r){return j`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:N}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${dJ(e)}</span></button></li>`}function KY(){return O(I.managedTeams??[],e=>e.id,e=>GY(e.name,sX,JY(e)||(e.reports??[]).some(t=>YY(e,t))||(e.bundles??[]).some(t=>XY(e,t)),()=>{FL(e)}))}function qY(e){return O(e,e=>e.id,e=>GY(e.name,oX,dX(e)||e.reports.some(t=>zY(t,e.id))||e.bundles.some(t=>nX(t,e.id)),()=>vX(e.id)))}function JY(e){return I.currentManagedTeam===e.id&&!!I.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(I.currentView)}function YY(e,t){return I.currentManagedTeam===e.id&&I.currentManagedReport===t.id&&[`findings`,`links`].includes(I.currentView)}function XY(e,t){return I.currentManagedTeam===e.id&&qx(I)===t.id}function ZY(e,t){let n=S(t.filename),r=YY(e,t);return j`<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)`:N}" data-tooltip="${n}" data-tooltip-repo="${dK(t)||N}" data-tooltip-placement="right-start" @click="${()=>{QY(e,t)}}">${A(nS[sS(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function QY(e,t){return FL(e,t.id)}function $Y(e,t){let n=XY(e,t);return j`<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)`:N}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${dK(t)||N}" data-tooltip-bundle="${t.kind||N}" data-tooltip-built="${t.provenance===`build`?`true`:N}" data-tooltip-stats="${fK(t)||N}" data-tooltip-commit="${t.summary?.commit||N}" data-tooltip-commit-info="${et(t.commitInfo,t.summary?.commit,t.repoFullName)??N}" data-tooltip-placement="right-start">${tX}<span class="file-label">${t.filename}</span></button></li>`}function eX(){return j`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var tX=j`${A(na)}`;function nX(e,t){return I.selectedBundle===e&&I.currentView===`bundles`&&t===I.selectedBundleWorkspace}function rX(e,t={}){let{integrity:n,name:r}=e,i=nX(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return j`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??N}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
|
|
203
|
+
${n}`}">${tX}<span class="file-label">${r}</span></button></li>`}function iX(e,t){let n=e.slice(0,15);return j`<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 aX(e,t){return j`<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 · ${S(e)}</em></span></span></li>`}var oX=j`${A(ia)}`,sX=j`<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>`,cX=j`<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>`,lX=j`<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>`,uX=j`<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 dX(e){return I.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(I.currentView)}function fX(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${dX(e)?` current`:``}`;return j`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${oX}<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">${uX}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${cX}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${lX}</button></div>${n?j`<div class="workspace-meta">${t?.appMode?j`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:N} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${NY}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?j`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${NY}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:N}</span></div>`:N}</li>`}function pX(e){return!MY||S(e).toLowerCase().includes(MY)}var mX=(e,t)=>S(e).localeCompare(S(t));async function Q({revealSelection:e=!1}={}){await DZ();let t=hc();if(KJ({serverMode:t,session:I.managedSession,teams:I.managedTeams,sessionPending:XX,teamsPending:ZX,alternateMode:tn(I.serverModeConfig)?`e2e`:`local`,onSwitchMode:_X}),$L(),L()){if(IY.sync(I,e),!XX&&!ZX&&!YX&&!QX&&WI({catalogOnly:!0}),I.bundles=(I.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),I.storedFiles=[],HJ([]),!Z)return;P(j`${WY()}`,bY);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&P(KY(),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`,``),jX();return}if(IY.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await gp(),t!==hc()){await Q();return}YJ();let n=await qc();if(t!==hc()){await Q();return}let r=z();LY(r,e),HJ(r);let[i]=await Promise.all([fl(),...r.map(e=>Vr(`workspace`,e.id))]);if(t!==hc()){await Q();return}if(I.bundles=i,I.storedFiles=n,RJ(),!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])),l=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&l.add(t);let u=new Map;for(let e of jY)u.set(e,[]);for(let e of n){if(o.has(e)||!pX(e))continue;let t=oS(e);u.has(t)||u.set(t,[]),u.get(t).push(e)}let d=r.filter(e=>!MY||e.name.toLowerCase().includes(MY)||e.reports.some(e=>pX(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&pX(t.name)})),f=i.filter(e=>!l.has(e.integrity)&&pX(e.name));P(j`${UY()} ${O(d,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)pX(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(mX),n.sort(mX);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!MY||pX(e.name))&&r.push(e):MY||i.push(t)}let o=hL(e)??Nm(e),l=o?.appMode??Mm(e)===!0,u=PY.get(e.id),d=!l||NY||u?.has(`reports`)===!0,f=!l||NY||u?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Wu(e)!==c).length,m=r.length+i.length;return j`${fX(e,{app:o,compact:l,reports:p,bundles:m,showReports:d,showBundles:f})} ${d?j`${t.map(t=>RY(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>aX(t,e.id))}`:N} ${f?j`${r.map(t=>rX(t,{workspaceId:e.id}))}${i.map(t=>iX(t,e.id))}`:N}`})} ${jY.map(e=>{let t=(u.get(e)??[]).toSorted(mX),n=e==="default";return t.length===0&&!(n&&OY)?null:j`${BY(AY[e]??e,{dropTarget:n})} ${t.map(e=>RY(e))}`})} ${f.length>0||kY?eX():null} ${O(f,e=>e.integrity,e=>rX(e))}`,bY);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&P(qY(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=SY());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=CY()),jX(),Qu(n,gX)}var hX=!1;function gX(){hX||(hX=!0,requestAnimationFrame(()=>{hX=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}Fo(()=>{Q()}),Lm(gX);async function _X(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),KX?await aZ():mc()&&await rZ()}function vX(e){let t=I.currentView===`findings`||I.currentView===`files`;(e!==I.currentWorkspace||!t)&&zL(e)}async function yX(e){let t=e.target.closest(`[data-team-section]`);if(t){if(NY||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&IY.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:I.managedTeams.find(e=>e.id===n.dataset.teamId);t&&FL(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(NY||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=PY.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),PY.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await _X();return}if(e.target.closest(`[data-action="go-home"]`)){await UL();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){K.navigate(vi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:I.currentView===`bundles`?I.bundleDetailsTab:`overview`},I.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(I.selectedBundle===e&&I.currentView===`bundles`&&I.selectedBundleWorkspace===t)return;eJ(e,void 0,{workspaceId:t}),vL(e,I.bundleDetailsTab),X(),Q(),oJ(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(I.currentView=e,X(),Q());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(L())return;let e=await ue();e&&(await OI(),await uu(e),Q());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?z().find(t=>t.id===e.dataset.workspaceId):null;t&&Ie({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?z().find(t=>t.id===e.dataset.workspaceId):null;t&&ZJ(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?z().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await Vp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await te({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!z().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await GL(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&&vX(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=I.currentView===`findings`||I.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==I.currentFile||n!==I.currentReportWorkspace||!t)&&ML(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(I.currentView===`bundles`&&I.selectedBundle){let e=I.selectedBundle,t=(I.bundles??[]).find(t=>t.integrity===e)?.name??e,n=z().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>wh(t.id,e)).map(e=>e.id),{confirmed:r}=await dt({name:t,inRemote:n.length>0});if(!r)return;if(I.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await WL({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!I.currentFile)return;let e=I.currentFile,t;try{t=await Vp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=z().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>Ch(t.id,e)).map(e=>e.id),r=n.length>0,i=cS(e)?`links file`:`report`,{confirmed:a,triage:o}=await pt({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(I.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await BL({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){H.status===`error`?H.dismissError():H.status===`off`?(!H.getServerUrl()&&wY&&H.setServerUrl(wY),H.setEnabled(!0)):H.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),TZ(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),wx(I.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),K.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),K.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){Cx(I.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){yY.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,yY.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var bX={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 xX(e){NY=e.target.value.length>0,MY=e.target.value.trim().toLowerCase(),Q()}var SX={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function CX(){return H.getServerUrl()||wY?z().length>0:!1}function wX(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=I.managedSession;yY?.toggleAttribute(`data-authenticated`,r!=null),yY?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),TX(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`),P(N,e),n&&P(N,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&P(N,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}`),P(j`${DX(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!L()||r.role!==`admin`&&r.role!==`manage`),n&&P(j`<div class="user-card">${DX(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?j`<span class="user-name">${r.name}</span>`:N}</span></div>${r.viewer?j`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:N} ${r.role===`none`?N:j`<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">${tn(I.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${HY}<span>Log out</span></button>`,n)}function TX(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,yY?.toggleAttribute(`data-view-as`,e?.viewer!=null),P(e?.viewer?j`<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>`:N,t))}document.addEventListener(`managed-view-only`,()=>{let e=I.managedSession;e?.viewer&&Ux(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var EX=0;document.addEventListener(`managed-profile-change`,e=>{let t=I.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&EX++,I.managedSession={...t,name:e.detail.name},_b(I.managedSession),wX())});function DX(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${EX?`?v=${EX}`:``}`;return j`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${pb()||I.managedSession?.role===`none`?N:j`<img alt="" src="${r}" @error="${OX}">`}</span>`}function OX(e){e.currentTarget.classList.add(`broken`)}function kX(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=I.serverMode===`managed`||tn(I.serverModeConfig);e.textContent=hc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${hc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function AX(){yY&&(yY.dataset.mode=hc()),L()?(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`,``)),RZ()}function jX(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(kX(),AX(),I.serverMode===`managed`&&I.localMode){t.hidden=!0,H.setForcedOff(!0);let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(L()){t.hidden=!0,H.setForcedOff(!0),wX();return}if(I.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=CX(),i=cn()!=null;if(r&&i&&H.isEnabled()&&mh().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!H.getServerUrl()&&wY&&H.isEnabled()&&H.setServerUrl(wY),H.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??H.status;t.dataset.status=a;let o=H.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=H.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=SX[a]??``)}H.onStatusChange(jX);var MX=!1,NX=!1;async function PX(){if(!H.persistenceDegraded||NX||MX)return;MX=!0;let{shown:e,unloaded:t}=await ve().catch(()=>({shown:!1,unloaded:!0}));if(MX=!1,e){NX=!0;return}H.persistenceDegraded&&setTimeout(PX,t?3e4:1500)}H.onPersistenceDegraded(e=>{jX(),e?PX():NX=!1});var FX=!1,IX=!1;async function LX(){if(!H.proxyAuthRequired||IX||FX)return;FX=!0;let{shown:e,reload:t}=await $J();if(FX=!1,!e){H.proxyAuthRequired&&setTimeout(LX,1500);return}IX=!0,t&&location.reload()}H.onProxyAuthRequired(e=>{jX(),e?LX():IX=!1});function RX(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=z().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 fu(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=z().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 zX(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function BX(e){return e.dataTransfer.types.includes(TY)||e.dataTransfer.types.includes(DY)}function VX(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(DY,n),e.dataTransfer.setData(EY,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),kY=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(TY,n.dataset.file),e.dataTransfer.setData(EY,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),OY=!0,Q())}function HX(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);zX(),(OY||kY)&&(OY=!1,kY=!1,Q())}function UX(e){if(!BX(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`,zX(),!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(DY)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function WX(e){Z.contains(e.relatedTarget)||zX()}async function GX(e){if(!BX(e))return;e.preventDefault(),e.stopPropagation(),zX();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(EY)||null;if(e.dataTransfer.types.includes(DY)){let t=e.dataTransfer.getData(DY);if(!t)return;if(r&&r!==n&&wh(r,t)){let e=(I.bundles??[]).find(e=>e.integrity===t)?.name??t,n=z().find(e=>e.id===r),{confirmed:i}=await ht({name:e,workspaceName:n?.name??``});if(!i)return;try{await Wh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await wu(t,n),r&&r!==n&&await Tu(t,r),Q();return}let i=e.dataTransfer.getData(TY);if(i){if(r&&r!==n&&Ch(r,i)){let e=z().find(e=>e.id===r),{confirmed:t}=await _t({name:i,workspaceName:e?.name??``});if(!t)return;try{await Uh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await xu(i,n),r&&r!==n&&await Su(i,r),I.currentWorkspace&&(I.currentWorkspace===n||I.currentWorkspace===r)?await zL(I.currentWorkspace):Q()}}var KX=null,qX=null,$=0,JX=0,YX=null,XX=!0,ZX=!0,QX=!1,$X=null,eZ=null,tZ;function nZ(){let e=tZ;return tZ=void 0,e}async function rZ({forgetLastView:e=!0,resetNavigation:t=!0}={}){K.reset({force:t}),$X?.remove(),$X=null;let n=++$;if(ZX=!0,QX=!1,hb(),Qv(),II(),yI(),fh(I.serverMode!==`e2e`),H.setForcedOff(!0),H.setProtocolLocked(I.serverMode!==`e2e`||!!KX),HL({forgetLastView:e}),I.triage.clear(),L()){let e=sZ();if(pb()&&(await e,n!==$))return}else{if(I.managedSession=null,I.managedTeams=[],await Za(),n!==$||(await Rd(),n!==$))return;iu()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),$L(),kX(),jX(H.status),X(),await Q()}async function iZ(e){if(e!==void 0&&!Ye(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${qe.join(`, `)}.`);if(await DZ(),e===void 0&&(KX||L()))return;let t=$,n=e===void 0?null:await q();t===$&&(KX??={serverMode:I.serverMode,serverModeConfig:I.serverModeConfig,serverModeSelection:I.serverModeSelection,localMode:I.localMode,managed:I.managed},n&&n.setPreviewRole(e),I.serverMode=`managed`,fc(!1),I.managedSession=null,I.managedTeams=[],await rZ({forgetLastView:!1}))}async function aZ(){let e=KX,t=qX;KX=null,qX=null,mb(),Object.assign(I,e),await rZ({forgetLastView:!1}),t&&oZ(t)}function oZ(e,{runtime:t=!0}={}){if(KX){qX=e;return}xY(!1);let n=cn()!=null,r=L(),i=I.serverMode;He()&&e.managed&&(I.serverModeSelection=`managed`),pc(e.mode),He()&&e.managed&&fc(!1),L()||(tZ=void 0);let a=i!==I.serverMode;I.managed=e.managed;let o=t&&I.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(I.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(I.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),$L(),fh(I.serverMode!==`e2e`),H.setProtocolLocked(I.serverMode!==`e2e`),ln(e),r!==L()){rZ({forgetLastView:!1,resetNavigation:n&&!He()&&!nn(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}jX(H.status),a&&I.serverMode===`e2e`&&CX()&&H.isEnabled()&&mh().then(e=>{if(e&&I.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}),L()&&sZ()}function sZ({keepTeams:e=!1,again:t=!1}={}){if(!t&&YX?.generation===$)return YX.promise;XX=!0;let n={generation:$,promise:null};return YX=n,n.promise=cZ({keepTeams:e}).finally(()=>{YX===n&&(YX=null,Q())}),n.promise}async function cZ({keepTeams:e=!1}={}){let t=$,n=++JX,r=()=>t===$&&n===JX&&L();try{let t=I.managedSession,n={},i=nZ(),a=i===void 0?SJ():void 0,o=await Sb({fallback:n,sent:i});if(!r())return;if(o===n&&await CJ(t)){r()&&xZ===null&&wZ(0);return}let s=o===n?t:o;if(o!==n&&!pb()&&await xJ(s,a),!r())return;I.managedSession=s,XX=!1,(!t||t.id!==s?.id||t.role!==s?.role)&&(ZX=!0),Q(),_b(s),t&&(t.id!==s?.id||t.role!==s?.role)?(I.managedTeams=[],I.bundles=[],II(),yI(),K.reset(),UL({history:!1})):Object.hasOwn(li,I.currentView)&&hZ(I.currentView)&&X({animate:!1}),wX(),vI(),document.querySelector(`base`)||($X=document.createElement(`base`),$X.href=`/`,document.head.prepend($X));let c=e&&t?.id===s?.id&&t?.role===s?.role&&LI()?null:eZ=fZ(r,{signal:new AbortController().signal}).finally(()=>{eZ===c&&(eZ=null)}),l=K.active&&Object.hasOwn(li,I.currentView)&&!hZ(I.currentView)?K.navigate({view:hZ(`manage`)?`manage`:`home`},{replace:!0}):s?K.start(vZ,{onCancel:_Z}):null;await Promise.all([c,l])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{r()&&(XX||ZX)&&(XX=!1,ZX=!1,Q())}}FI((e,t,n)=>fZ(e,{strict:!0,signal:t,revision:n}));var lZ=uJ(Cb);function uZ(e){return eZ??fZ(e,{reuse:!0})}var dZ=0;async function fZ(e,{strict:t=!1,signal:n=iv(),reuse:r=!1,revision:i=null}={}){let a=$,o=I.managedSession,s=await lZ({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:I.managedTeams);if(n.aborted||c===null||!e()||a!==$||!L())return!1;let l=I.managedTeams.find(e=>e.id===I.currentManagedTeam)?.name,u=vb(c);I.managedTeams=c;let d=s===null?dZ:++dZ;ZX=!1;let f=qx(I);if(s!==null&&f&&!QX){let t=G(),r=()=>e()&&!n.aborted&&!QX&&d===dZ&&t===G()&&a===$&&I.managedSession?.id===o?.id&&I.managedSession?.role===o?.role&&L()&&qx(I)===f,i;try{i=await tS(I,c,{fetchCatalog:()=>wb({signal:AbortSignal.any([n,iv()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>K.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&Ux(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){mZ=null;let t=UL({history:!1}),n=G();return await t,n===G()&&a===$&&e()&&I.managedSession?.id===o?.id&&I.managedSession?.role===o?.role&&K.replaceRoute({view:`home`}),e()}}if(eS(I,c,u)){let n=c.find(e=>e.id===I.currentManagedTeam),r=n&&(I.currentManagedReport===null||n.reports.some(e=>e.id===I.currentManagedReport))?vi({view:I.currentView===`links`?`findings`:I.currentView,teamId:n.id,reportId:I.currentManagedReport},c):null;mZ=null;let i=UL({history:!1}),s=G();if(await i,t)return s===G()&&a===$&&I.managedSession?.id===o?.id&&I.managedSession?.role===o?.role&&L()&&await K.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!QX&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(I.currentView)&&!c.some(e=>e.id===I.currentManagedTeam)){let t=UL({history:!1}),n=G();return await t,n===G()&&a===$&&e()&&I.managedSession?.id===o?.id&&I.managedSession?.role===o?.role&&K.replaceRoute({view:`home`}),e()}return!QX&&(I.currentWorkspace||I.bundleDetails?.npm||l!==c.find(e=>e.id===I.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var pZ=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),mZ=null;function hZ(e){let t=I.managedSession?.role;return e===`manage-links`&&!I.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!pZ.has(e)||t===`admin`)}var gZ=0;function _Z(){++gZ,QX=!1,av();let e=$;uZ(()=>e===$&&L())}async function vZ(e,t){let n=++gZ;QX=!0;try{return await yZ(e,t)}finally{n===gZ&&(QX=!1,Q())}}async function yZ(e,t){let n=mZ===G()?mZ:null;if(av(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await uZ(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!hZ(`manage-bundles`)||(r=await wb(),!t()||!L()))||(e=_i(e,I.managedTeams,r),!e))return!1;let i=n!==null&&mZ===n&&I.currentManagedTeam===e.teamId&&I.currentManagedReport===e.reportId;if(!t()||!L()||e.view!==`home`&&(!I.managedSession||I.managedSession.role===`none`))return!1;if(e.finding){let n=await _Y({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>FL(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(mZ=G(),WI(),vi({view:`findings`,teamId:I.currentManagedTeam,reportId:I.currentManagedReport,finding:{id:e.finding.id}},I.managedTeams)):(n.reason&&Ux(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return PL(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Kx):$x(I.managedTeams);if(!await cJ(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return vi({...o,bundleTab:I.bundleDetailsTab,...Xx(I)},I.managedTeams,r)}if(e.view===`home`)return UL({history:!1});if(e.view===`npm`)return hj(e,t,Q);if(e.view===`repository-code`)return $e(I.managedSession)&&BM(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!I.managedSession.publicShare&&(ar(),I.currentView=e.view,I.profileLinkError=e.linkError??null,I.currentManagedTeam=null,I.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return hZ(e.view)&&await NL(e.linkId);if(Object.hasOwn(li,e.view))return TZ(e.view,{...e,history:!1});let a=I.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await FL(a,e.reportId,{history:!1})||!t()?!1:(I.currentView!==e.view&&ar(),I.currentView=I.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),mZ=G(),WI(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),vi({...e,view:I.currentView===`links`?`findings`:I.currentView},I.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(L()&&typeof e.detail?.id==`string`){let t=Kx(e.detail),n=I.managedTeams,r=n.find(e=>e.id===I.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));K.navigate(Jx(n,t,r?.id,I.currentView===`bundles`?I.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{sZ()});var bZ=[5e3,15e3,45e3,6e4],xZ=null,SZ=0;async function CZ(e=0){clearTimeout(xZ),xZ=null;let t=++SZ;!L()||pb()||(await sZ({again:!0}),t===SZ&&await CJ(I.managedSession)&&t===SZ&&wZ(e))}function wZ(e){clearTimeout(xZ),xZ=setTimeout(()=>{CZ(e+1)},bZ[Math.min(e,bZ.length-1)])}wJ(()=>{CZ()}),document.addEventListener(`managed-feed-closed`,()=>{XX=!0,II(),yI(),UL({history:!1}).then(()=>sZ()),Ux(`Workspace access changed. Refreshing your session.`)});async function TZ(e,t={}){if(t.history!==!1&&L()&&(K.active||await sZ(),K.active))return K.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(li,e)||!L()||!hZ(e))return!1;let n=av(),r=$;try{let t=await q();e===`manage-import`&&hZ(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==G()||!L()||!hZ(e)?!1:(I.currentView=e,I.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,I.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,X({animate:!1}),Q(),sZ({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=>Ux(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&TZ(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??{};L()&&Number.isSafeInteger(t)&&t>0&&kM({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var EZ;function DZ(){return EZ??=kZ().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function OZ(){let e=on();return tZ=sn(e).then(e=>e?.session),e}async function kZ(){let e=cn();if(e){pc(e.mode),I.managed=e.managed,OZ().then(e=>{if(e&&e!==`standalone`)return oZ(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}xY(!$t());let t=OZ(),n=await sn(t,$t()?0:3e3),r=cn();if(r)return n&&n!==`standalone`?oZ(n):oZ(r,{runtime:!1});if(n&&n!==`standalone`)return oZ(n);n===`standalone`&&en(),I.serverMode=`standalone`,I.serverModeConfig=null,I.serverModeSelection=null,fc(n===null),fh(!0),xY(!1),jX(H.status),Q(),n===null&&t.then(e=>{let t=cn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(en(),KX){KX.serverMode=`standalone`,KX.serverModeConfig=null,KX.serverModeSelection=null,KX.localMode=!1;return}return fc(!1),jX(H.status),Q()}if(n)return oZ(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function AZ(){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 jZ(e){yY=e,Z=e.renderRoot,bY=Z.querySelector(`#file-list`),zZ(Z.querySelector(`#encryption-toggle`)),VJ(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,yX),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),yX(e))}),Z.addEventListener(`dblclick`,RX),Z.addEventListener(`dragstart`,VX),Z.addEventListener(`dragend`,HX),Z.addEventListener(`dragover`,UX),Z.addEventListener(`dragleave`,WX),Z.addEventListener(`drop`,GX),pr(Z,bX),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,xX),AZ(),jX(H.status),cn()||xY(!$t()),Q(),H.onServerInfo(e=>{if(I.serverMode!==`e2e`)return;let t=cn(),n=t&&{...t,...I.deepviewScanServer?{deepviewScanServer:I.deepviewScanServer}:{}};return oZ(an(n,e))}),DZ(),I.serverMode===`managed`&&sZ()}var MZ=class extends ya{static styles=[ga(EJ),ga(TJ)];render(){return j`<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">${hc()}</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">${A(oa)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){jZ(this)}};customElements.define(`app-sidebar`,MZ);var NZ=j`<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>`,PZ=j`<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>`,FZ=null;async function IZ(){if(!FZ)return;if(await DZ(),L()){FZ.hidden=!0;return}if(!Do()){FZ.hidden=!0;return}let e=To();FZ.hidden=!1;let t=Eo();FZ.classList.toggle(`encrypted`,e&&t),FZ.classList.toggle(`locked-pending`,e&&!t),e&&t?(FZ.dataset.tooltip=`Encryption on — click to disable`,FZ.setAttribute(`aria-label`,`Disable encryption`),P(NZ,FZ)):e?(FZ.dataset.tooltip=`Encryption on, locked — click to unlock`,FZ.setAttribute(`aria-label`,`Unlock encrypted data`),P(NZ,FZ)):(FZ.dataset.tooltip=`Encryption off — click to enable`,FZ.setAttribute(`aria-label`,`Enable encryption`),P(PZ,FZ))}async function LZ(){if(confirm(`Disable encryption?
|
|
204
|
+
|
|
205
|
+
Your local triage and report data will be rewritten as plaintext.
|
|
206
|
+
|
|
207
|
+
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 Bo({migrate:async({open:e})=>{await no({open:e}),await Hd({open:e}),await Tl({open:e}),await jl({open:e})}}))?.disabled&&alert(`Encryption disabled. Your data is now plaintext.
|
|
208
|
+
|
|
209
|
+
To complete cleanup, remove the DeepView passkey from your password manager / OS settings:
|
|
210
|
+
• macOS / iOS: Settings → Passwords
|
|
211
|
+
• Windows: Settings → Accounts → Sign-in options → Passkeys
|
|
212
|
+
• Chrome: chrome://settings/passkeys
|
|
213
|
+
• Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function RZ(){IZ()}function zZ(e){if(!e||e===FZ)return;FZ=e;let t=!1;FZ.addEventListener(`click`,async()=>{if(await DZ(),!L()&&!t){t=!0;try{if(!To()){await ge();return}if(!Eo()){await Bv();return}await LZ()}finally{t=!1}}}),Fo(IZ),IZ()}export{Ls as a,Rs as b,_o as c,To as d,Eo as e,Do as f,ko as g,Fo as h,Lo as i,zo as j,Wo as k,qa as l,Za as m,to as n,Bs as o,Hs as p,Us as q,Ws as r,Ks as s,Qs as t,nc as u,oc as v,I as w,L as x,qc as y,Xc as z,Zc as A,fl as B,pl as C,vl as D,wl as E,Al as F,Af as G,qf as H,Qf as I,Wu as J,iu as K,z as L,lu as M,mu as N,wu as O,pp as P,ld as Q,gd as R,Cd as S,Nd as T,Vd as U,Wd as V,Sp as W,Dp as X,Op as Y,kp as Z,Ap as _,jp as $,Fp as aa,Ip as ba,Lp as ca,Qp as da,em as ea,Gd as fa,Kd as ga,Jd as ha,Yd as ia,K as ja,Kv as ka,eg as la,tg as ma,Xv as na,Zv as oa,ty as pa,jy as qa,Gy as ra,qy as sa,Qy as ta,$y as ua,eb as va,tb as wa,nb as xa,rb as ya,ib as za,ub as Aa,pb as Ba,yb as Ca,xb as Da,Ab as Ea,jb as Fa,Mb as Ga,Pb as Ha,Fb as Ia,Ib as Ja,Wb as Ka,Gb as La,ix as Ma,ax as Na,ox as Oa,sx as Pa,cx as Qa,lx as Ra,ux as Sa,dx as Ta,px as Ua,mx as Va,Tx as Wa,Ex as Xa,Dx as Ya,Px as Za,Fx as _a,Ix as $a,Lx as ab,Rx as bb,aV as cb,sV as db,nS as eb,oS as fb,rh as gb,B as hb,ih as ib,ah as jb,oh as kb,Fv as lb,Iv as mb,Lv as nb,lS as ob,dS as pb,fS as qb,mS as rb,gS as sb,_S as tb,vS as ub,AS as vb,Dh as wb,Oh as xb,kh as yb,Ph as zb,Fh as Ab,Ih as Bb,Rh as Cb,zh as Db,Bh as Eb,Hh as Fb,qh as Gb,Jh as Hb,H as Ib,d_ as Jb,f_ as Kb,p_ as Lb,v_ as Mb,b_ as Nb,S_ as Ob,C_ as Pb,w_ as Qb,D_ as Rb,O_ as Sb,j_ as Tb,K_ as Ub,Z_ as Vb,ug as Wb,xg as Xb,Sg as Yb,Cg as Zb,U as _b,Eg as $b,jg as ac,Mg as bc,Ng as cc,W as dc,Pg as ec,Rg as fc,Hg as gc,Wg as hc,Gg as ic,qg as jc,Jg as kc,Yg as lc,Xg as mc,Zg as nc,$g as oc,o_ as pc,s_ as qc,c_ as rc,l_ as sc,Xh as tc,JS as uc,YS as vc,OC as wc,MC as xc,NC as yc,PC as zc,HC as Ac,YC as Bc,ZC as Cc,$C as Dc,ow as Ec,cw as Fc,lw as Gc,uw as Hc,dw as Ic,fw as Jc,mw as Kc,hw as Lc,Sw as Mc,Cw as Nc,ww as Oc,Tw as Pc,Dw as Qc,Ow as Rc,kw as Sc,Aw as Tc,jw as Uc,Nw as Vc,Fw as Wc,Iw as Xc,Kw as Yc,wT as Zc,LT as _c,RT as $c,zT as ad,BT as bd,Gx as cd,Jx as dd,Yx as ed,Qx as fd,yE as gd,xE as hd,PE as id,FE as jd,zE as kd,BE as ld,GE as md,KE as nd,qE as od,JE as pd,XE as qd,ZE as rd,sD as sd,lD as td,uD as ud,pO as vd,hO as wd,yO as xd,bO as yd,xO as zd,wO as Ad,TO as Bd,EO as Cd,VO as Dd,qO as Ed,pk as Fd,mk as Gd,hk as Hd,gk as Id,_k as Jd,Tk as Kd,Hk as Ld,uA as Md,fA as Nd,pA as Od,kA as Pd,G as Qd,PA as Rd,zA as Sd,JA as Td,YA as Ud,Zj as Vd,$j as Wd,tM as Xd,nM as Yd,rM as Zd,iM as _d,lN as $d,gN as ae,_N as be,xN as ce,wN as de,TN as ee,EN as fe,DN as ge,AN as he,jN as ie,BF as je,VF as ke,Rv as le,Ux as me,Wx as ne,EJ as oe,MJ as pe,XJ as qe,_Y as re,vY as se,Q as te,iZ as ue,DZ as ve,oL as we,_L as xe,vL as ye,ML as ze,PL as Ae,FL as Be,zL as Ce,UL as De,XL as Ee,rR as Fe,cR as Ge,uR as He,fR as Ie,xR as Je,ER as Ke,DR as Le,OR as Me,UR as Ne,WR as Oe,GR as Pe,dz as Qe,Dz as Re,Yz as Se,$z as Te,dB as Ue,_B as Ve,SB as We,CB as Xe,TB as Ye,Y as Ze,kB as _e,AB as $e,jB as af,MB as bf,NB as cf,PB as df,FB as ef,IB as ff,LB as gf,VB as hf,HB as if,UB as jf,WB as kf,GB as lf,KB as mf,qB as nf,JB as of,wU as pf,TU as qf,VU as rf,kK as sf,LK as tf,RK as uf,X as vf,Xq as wf,Zq as xf,Qq as yf,$q as zf,eJ as Af,tJ as Bf,iJ as Cf,oJ as Df,sJ as Ef,kM as Ff,VM as Gf};
|
|
214
|
+
/*! Bundled license information:
|
|
215
|
+
|
|
216
|
+
lit-html/directives/map.js:
|
|
217
|
+
lit-html/directives/choose.js:
|
|
218
|
+
(**
|
|
219
|
+
* @license
|
|
220
|
+
* Copyright 2021 Google LLC
|
|
221
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
222
|
+
*)
|
|
223
|
+
|
|
224
|
+
lit-html/directives/guard.js:
|
|
225
|
+
(**
|
|
226
|
+
* @license
|
|
227
|
+
* Copyright 2018 Google LLC
|
|
228
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
229
|
+
*)
|
|
230
|
+
|
|
231
|
+
lit-html/async-directive.js:
|
|
232
|
+
(**
|
|
233
|
+
* @license
|
|
234
|
+
* Copyright 2017 Google LLC
|
|
235
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
236
|
+
*)
|
|
237
|
+
|
|
238
|
+
lit-html/directives/ref.js:
|
|
239
|
+
(**
|
|
240
|
+
* @license
|
|
241
|
+
* Copyright 2020 Google LLC
|
|
242
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
243
|
+
*)
|
|
244
|
+
*/
|