@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
package/out/chunk-TSIFIFBX.js
DELETED
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import{b as e}from"./chunk-JCIIBLKR.js";import{a as t,b as n,c as r,m as i}from"./chunk-VH4XMZIW.js";import{a,b as o,c as s,e as c,f as l,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,q as b,r as ee,s as te,t as ne,u as re}from"./chunk-KOGNQDSJ.js";import{$ as ie,A as ae,Aa as oe,B as se,Ba as ce,C as le,Ca as ue,Da as de,Ea as fe,Fa as pe,G as me,Ga as he,H as ge,Ha as _e,I as ve,Ia as ye,J as be,Ja as xe,K as Se,Ka as Ce,La as we,M as Te,Ma as Ee,Na as De,O as Oe,Oa as ke,P as Ae,Pa as je,Q as Me,Qa as Ne,R as Pe,S as Fe,Ta as Ie,U as Le,V as Re,Va as ze,W as Be,X as Ve,Z as He,_ as Ue,a as We,aa as Ge,b as Ke,ba as qe,ca as Je,d as x,da as Ye,e as Xe,ea as Ze,f as Qe,fa as $e,g as et,ga as tt,h as nt,ha as rt,i as it,ia as at,j as ot,ja as st,k as S,ka as ct,l as lt,la as ut,m as dt,ma as ft,na as pt,o as mt,oa as ht,p as gt,pa as _t,q as vt,qa as yt,r as bt,ra as xt,sa as St,ta as Ct,ua as wt,va as Tt,wa as Et,xa as Dt,ya as Ot,z as kt,za as At}from"./chunk-LJ7XRXFU.js";import{a as jt,b as Mt,c as Nt,e as Pt,f as Ft,g as It,h as Lt,i as Rt,j as zt,l as Bt,m as Vt,n as Ht,o as Ut,p as Wt,q as Gt,r as Kt,s as qt,t as Jt,u as Yt,v as Xt,w as Zt,x as Qt}from"./chunk-7VAWINQF.js";import{a as $t,b as en,c as tn,d as nn,e as rn,f as an,g as on,h as sn,j as cn,k as ln,l as un,m as dn,p as fn,w as pn}from"./chunk-7BKKYVWR.js";import{a as mn,b as hn,c as gn,d as _n,e as vn,f as C,g as yn,h as bn,i as xn}from"./chunk-7C7DWL7I.js";import{a as Sn,b as Cn,c as wn,d as Tn}from"./chunk-PNHBZGDD.js";import{A as En,B 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,L 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 T,da as rr,e as ir,ea as ar,f as E,fa as or,g as sr,ha as cr,ia as lr,ja as ur,k as dr,ka as fr,l as pr,la as mr,m as hr,ma as gr,n as _r,na as vr,o as yr,p as br,pa as xr,q as Sr,qa as Cr,r as wr,ra as Tr,s as Er,sa as Dr,t as Or,ta as kr,ua as Ar,v as jr,va as Mr,w as Nr,x as Pr,xa as Fr,y as Ir,z as Lr}from"./chunk-FMXWXDR4.js";import{b as Rr,c as zr,d as Br,e as Vr,f as Hr,g as Ur}from"./chunk-2K6UN3PC.js";import{a as Wr,b as Gr,e as Kr}from"./chunk-WCPJDAYA.js";import{a as qr,b as Jr,d as Yr,e as Xr}from"./chunk-IYPY47MC.js";import{a as D,b as Zr,d as O}from"./chunk-PWFUOLZK.js";import{a as Qr,c as $r,d as ei,e as ti,f as ni,g as ri,i as ii,j as ai,k as oi,l as si,m as ci,n as li,o as ui,p as di,q as fi,r as pi,s as mi,t as hi}from"./chunk-HT2SSA3V.js";import{A as gi,B as _i,C as vi,D as yi,E as bi,G as xi,H as Si,J as Ci,K as wi,L as Ti,M as Ei,N as Di,O as Oi,a as ki,f as Ai,h as ji,i as Mi,j as Ni,k as Pi,l as Fi,m as Ii,n as Li,o as Ri,p as zi,q as Bi,r as Vi,t as Hi,u as Ui,v as Wi,w as Gi,x as Ki,y as qi,z as Ji}from"./chunk-SXV2T5C4.js";import{A as Yi,d as k,e as Xi,f as Zi,g as Qi,i as $i,j as ea,k as ta,o as na,p as ra,q as ia,r as aa,s as oa,t as sa,w as ca,y as la,z as ua}from"./chunk-WFYLMF6Z.js";import{a as da,b as fa,c as pa}from"./chunk-C4Z6ZBXV.js";import{a as ma,b as ha,c as A,d as j,f as ga,g as M,i as N,j as _a}from"./chunk-2XUEZHIP.js";import{a as va,b as ya,c as ba}from"./chunk-TUII34K2.js";var xa=new Uint8Array([68,86,69,49]),Sa=12,Ca=32,wa=`deepview-passkey.v1.content-key`;function Ta(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function Ea(){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 Da(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function Oa(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:va(wa)},t,Ca*8);return new Uint8Array(n)}function ka(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Aa(e,t,n){let r=Da(Sa),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(xa.length+Sa+i.length);return a.set(xa,0),a.set(r,xa.length),a.set(i,xa.length+Sa),a}async function ja(e,t,n){if(!Ma(t))throw Error(`passkey: missing envelope magic`);if(t.length<xa.length+Sa+16)throw Error(`passkey: envelope too short`);let r=t.subarray(xa.length,xa.length+Sa),i=t.subarray(xa.length+Sa);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Ma(e){if(e.length<xa.length)return!1;for(let t=0;t<xa.length;t++)if(e[t]!==xa[t])return!1;return!0}async function Na(e){if(!Ta())throw Error(`passkey: not supported in this environment`);let t=Da(32),n=Da(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 Pa(e){if(!Ta())throw Error(`passkey: not supported in this environment`);let t=Da(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 Fa=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Ia=new Map,La=!1,Ra=new Map,za=new Map,Ba=new Set;function Va(e){let t=()=>e();return Ba.add(t),La&&queueMicrotask(()=>{if(Ba.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ba.delete(t)}function Ha(){for(let e of Ba)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function Ua(e){let t=Eo()??``;return va(`deepview.secure.v1|${t}|${e}`)}function Wa(e){try{let t=Uint8Array.fromBase64(e);if(Ma(t))return t}catch{}return null}function Ga(e){return Ia.get(e)??null}async function Ka(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(Co()&&!Oo())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(_o())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Ia.has(e),r=Ia.get(e);Ia.set(e,t),za.set(e,t);let i=Ra.get(e)??Promise.resolve(),a=()=>{za.get(e)===t&&za.delete(e)},o=i.catch(()=>{}).then(()=>Ja(e,t)).then(()=>a(),i=>{throw a(),Ia.get(e)===t&&(n?Ia.set(e,r):Ia.delete(e)),i});Ra.set(e,o.catch(()=>{})),await o}async function qa(e){let t=Symbol(`secure-storage:removed`);Ia.delete(e),za.set(e,t);let n=Ra.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}za.get(e)===t&&(za.delete(e),Ia.delete(e))},i=n.catch(()=>{}).then(()=>r());Ra.set(e,i.catch(()=>{})),await i}async function Ja(e,t){let n=Oo();if(n){let r=await Aa(n,va(t),Ua(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function Ya(){La||No(()=>{Ya().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),La=!0;for(let e of[...Ia.keys()])za.has(e)||Ia.delete(e);await Za(Fa,!0)}async function Xa(e){if(!Fa.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return za.has(e)||Ia.delete(e),(await Za([e],!1)).get(e)??null}async function Za(e,t){let n=Oo(),r=[],i=new Map;for(let t of e){if(za.has(t)){i.set(t,Ga(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Wa(e);if(a){if(!n)continue;try{let e=await ja(n,a,Ua(t));if(za.has(t)){i.set(t,Ga(t));continue}let r=ba(e);Ia.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Ia.set(t,e),i.set(t,e),n&&Co()&&r.push([t,e])}return t&&Ha(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Ia.get(e)===t&&Ka(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function Qa(e,t){let n=(Ra.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(za.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(za.has(e)||(localStorage.setItem(e,r.storageValue),Ia.set(e,r.cacheValue)))});Ra.set(e,n.catch(()=>{})),await n}async function $a({seal:e}){for(let e of Fa)await Qa(e,async t=>{if(Wa(t))return null;let n=Oo();return n?{storageValue:(await Aa(n,va(t),Ua(e))).toBase64(),cacheValue:t}:null})}async function eo({open:e}){for(let t of Fa)await Qa(t,async n=>{let r=Wa(n);if(!r)return null;let i=await e(r,Ua(t)),a=ba(i);return{storageValue:a,cacheValue:a}})}var to=`deepview.secure.v1.mutate:`;function no(e,t){return Fa.includes(e)?navigator.locks.request(to+e,async()=>{let n=Ra.get(e);n&&await n.catch(()=>{}),await Ya();let r=Ga(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 Ka(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function ro(){await Promise.allSettled([...Ra.values()]),za.clear(),Ra.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!La||!e.key||!Fa.includes(e.key)||Ya().catch(()=>{})});var io=`deepview.passkey.v1`,ao=`deepview.passkey.userId`,oo=`deepview.passkey.cleanDisable`,so=`deepview.passkey.v1.write`,co=`deepview.triage.v1|`,lo=`deepview.opfs.v1|`,uo=`deepview.bundle.v1|`,P=null,fo=null,po=null,mo=0;function ho(){return mo>0}var go=0;function _o(){return go>0}function vo(){try{let e=localStorage.getItem(io);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 yo(e){localStorage.setItem(io,JSON.stringify(e))}function bo(){localStorage.removeItem(io)}function xo(){try{let e=localStorage.getItem(ao);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(ao,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function So(){return typeof location>`u`?``:location.hostname}function Co(){return vo()!==null}function wo(){return P!==null}function To(){return!(!Ta()||typeof navigator>`u`||!navigator.locks?.request||!So())}function Eo(){return fo}function Do(){if(vo()!==null)return!1;try{return localStorage.getItem(oo)!==`1`&&localStorage.getItem(ao)!==null}catch{return!1}}function Oo(){return P}function ko(){return va(co+(fo??``))}function Ao(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return va(lo+(fo??``)+`|`+e)}function jo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return va(uo+(fo??``)+`|`+e)}var Mo=new Set;function No(e){return Mo.add(e),()=>Mo.delete(e)}function Po(){for(let e of Mo)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function Fo({signal:e}={}){let t=vo();if(!t)return!1;let n;try{n=await Pa({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??So(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Io(e):e}if(!n||n.length<32)throw Io();let r=await Oa(n);return n.fill(0),navigator.locks.request(so,async()=>{let e=vo();if(!e||e.credentialId!==t.credentialId)throw r.fill(0),Error(`passkey: vault state changed during unlock (another tab wiped or re-enabled it). Reload this page and try again.`);return P=await ka(r),r.fill(0),fo=e.userId,po=e.credentialId,Po(),!0})}function Io(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 Lo({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!Ta())throw Error(`passkey: WebAuthn unavailable in this environment`);if(Do()&&!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=So();return navigator.locks.request(so,async()=>{if(Co())throw Error(`passkey: encryption is already enabled`);if(await Ea()===!1)throw Io();let i=xo(),o=await Na({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Pa({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await zo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(ao)}catch{}throw e&&e.message?.includes(`PRF`)?Io(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await zo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(ao)}catch{}throw Io()}let c=await Oa(s);s.fill(0);let l=await ka(c);c.fill(0);let u=i.toBase64({alphabet:`base64url`,omitPadding:!0}),d={enabled:!0,credentialId:o.credentialId,prfSalt:o.prfSalt,userId:u,rpId:a,createdAt:Date.now()};P=l,fo=u,po=o.credentialId,yo(d),typeof e==`function`&&await e({seal:(e,t)=>Aa(l,e,t)});try{localStorage.removeItem(oo)}catch{}return Po(),!0})}async function Ro({migrate:e}){if(!Co())return{disabled:!1,signalAttempted:!1};if(!wo())throw Error(`passkey: must unlock before disabling encryption`);mo+=1;try{return await navigator.locks.request(so,async()=>{let t=vo();if(!t)return{disabled:!1,signalAttempted:!1};let n=P;if(!n)return{disabled:!1,signalAttempted:!1};if(bo(),P=null,po=null,typeof e==`function`){let r=(e,t)=>ja(n,e,t);try{await e({open:r})}catch(e){throw yo(t),P=n,po=t.credentialId,Po(),e}}fo=null;try{localStorage.setItem(oo,`1`)}catch{}let r=await zo(t).catch(()=>!1);return Po(),{disabled:!0,signalAttempted:r}})}finally{--mo}}async function zo({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 Bo(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 Vo(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 Bo(n,r);e&&t.push(e)}return t}async function Ho({refuseIfEnabled:e=!1}={}){mo+=1,go+=1;try{return await navigator.locks.request(so,async()=>{if(e&&Co())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await ro();let t=vo();if(t)try{await zo({credentialId:t.credentialId,rpId:t.rpId??So(),userId:t.userId})}catch{}try{localStorage.removeItem(io)}catch{}try{localStorage.removeItem(ao)}catch{}try{localStorage.removeItem(oo)}catch{}for(let e of[`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`,`deepview.triage`,`deepview.triage.pending`,`deepview.passkey.firstImportPrompted`,`deepview.viewMode`])try{localStorage.removeItem(e)}catch{}try{let e=[];for(let t=0;t<localStorage.length;t+=1){let n=localStorage.key(t);n&&n.startsWith(`deepview.report:`)&&e.push(n)}for(let t of e)try{localStorage.removeItem(t)}catch{}}catch{}P=null,fo=null,po=null,Po();let n=await Vo([`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{--mo,--go}}function Uo(e){return P?Aa(P,e,ko()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Wo(e){return P?ja(P,e,ko()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function Go(e,t){return P?Aa(P,e,Ao(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Ko(e,t){return P?ja(P,e,Ao(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function qo(e,t){return P?Aa(P,e,jo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Jo(e,t){return P?ja(P,e,jo(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==io)return;let t=vo();(!t&&P||t&&P&&t.credentialId!==po)&&(P=null,fo=null,po=null),Po()});var Yo=new WeakMap,Xo=Symbol(`iteration key`);function Zo(e){Yo.set(e,new Map)}function Qo(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Xo);let i=Yo.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 $o({target:e,key:t,type:n}){let r=Yo.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{es(i,r,t)}):es(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&es(i,r,Array.isArray(e)?`length`:Xo),i}function es(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function ts(e){e.cleaners&&e.cleaners.forEach(ns,e),e.cleaners=[]}function ns(e){e.delete(this)}var rs=[],is=!1;function as(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if(rs.indexOf(e)===-1){ts(e);try{return rs.push(e),Reflect.apply(t,n,r)}finally{rs.pop()}}}function os(e){let t=rs[rs.length-1];t&&(ls(t,e),Qo(t,e))}function ss(e){$o(e).forEach(cs,e)}function cs(e){ls(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function ls(e,t){if(e.debugger&&!is)try{is=!0,e.debugger(t)}finally{is=!1}}function us(){return rs.length>0}var ds=Symbol(`is reaction`);function fs(e,t={}){let n=e[ds]?e:function t(){return as(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ds]=!0,t.lazy||n(),n}function ps(e){e.unobserved||(e.unobserved=!0,ts(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var ms=new WeakMap,hs=new WeakMap,gs=Object.prototype.hasOwnProperty;function _s(e){let t=hs.get(e);return us()&&typeof e==`object`&&e?t||Ns(e):t||e}function vs(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=_s(i[1]):i=_s(i)),{done:r,value:i}},e}var ys={has(e){let t=ms.get(this),n=Reflect.getPrototypeOf(this);return os({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=ms.get(this),n=Reflect.getPrototypeOf(this);return os({target:t,key:e,type:`get`}),_s(n.get.apply(t,arguments))},add(e){let t=ms.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||ss({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=ms.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&&ss({target:n,key:e,value:t,oldValue:a,type:`set`}):ss({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=ms.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&&ss({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=ms.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&&ss({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=ms.get(this),r=Reflect.getPrototypeOf(this);return os({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(_s(t),...n),...t)},keys(){let e=ms.get(this),t=Reflect.getPrototypeOf(this);return os({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=ms.get(this),t=Reflect.getPrototypeOf(this);return os({target:e,type:`iterate`}),vs(t.values.apply(e,arguments),!1)},entries(){let e=ms.get(this),t=Reflect.getPrototypeOf(this);return os({target:e,type:`iterate`}),vs(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=ms.get(this),t=Reflect.getPrototypeOf(this);return os({target:e,type:`iterate`}),vs(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=ms.get(this),t=Reflect.getPrototypeOf(this);return os({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},bs={get(e,t,n){return e=gs.call(ys,t)?ys:e,Reflect.get(e,t,n)}},xs=typeof window==`object`?window:Function(`return this`)(),Ss=new Map([[Map,bs],[Set,bs],[WeakMap,bs],[WeakSet,bs],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function Cs({constructor:e}){return!(typeof e==`function`&&e.name in xs&&xs[e.name]===e)||Ss.has(e)}function ws(e){return Ss.get(e.constructor)}var Ts=Object.prototype.hasOwnProperty,Es=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function Ds(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&Es.has(t))return r;os({target:e,key:t,receiver:n,type:`get`});let i=hs.get(r);if(us()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return Ns(r)}return i||r}function Os(e,t){let n=Reflect.has(e,t);return os({target:e,key:t,type:`has`}),n}function ks(e){return os({target:e,type:`iterate`}),Reflect.ownKeys(e)}function As(e,t,n,r){typeof n==`object`&&n&&(n=ms.get(n)||n);let i=Ts.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==ms.get(r)||(i?n!==a&&ss({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):ss({target:e,key:t,value:n,receiver:r,type:`add`})),o}function js(e,t){let n=Ts.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&ss({target:e,key:t,oldValue:r,type:`delete`}),i}var Ms={get:Ds,has:Os,ownKeys:ks,set:As,deleteProperty:js};function Ns(e={}){return ms.has(e)||!Cs(e)?e:hs.get(e)||Ps(e)}function Ps(e){let t=ws(e)||Ms,n=new Proxy(e,t);return hs.set(e,n),ms.set(n,e),Zo(e),n}var Fs=Ns;function Is(e){let t=!0,n=fs(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw ps(n),e}return()=>ps(n)}var Ls=`deepview.viewMode`,Rs=`deepview.severityMode`,zs=`deepview.repoUrls`,Bs=`deepview.focusSplit`,Vs=`deepview.kanbanDetailFullscreen`,Hs=`deepview.bundleSourceWrap`,Us=new Set([`corrected`,`original`]),Ws=50,Gs=20,Ks=80;try{localStorage.removeItem(Ls)}catch{}function qs(){try{let e=localStorage.getItem(Rs);return e!==null&&Us.has(e)?e:null}catch{return null}}function Js(){try{let e=localStorage.getItem(Vs);return e===`true`||e!==`false`&&null}catch{return null}}function Ys(){try{let e=localStorage.getItem(Hs);return e===`true`||e!==`false`&&null}catch{return null}}function Xs(e){if(!Number.isFinite(e))return Ws;let t=Math.round(e*10)/10;return Math.min(Math.max(t,Gs),Ks)}function Zs(){try{let e=localStorage.getItem(Bs);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Xs(t):null}catch{return null}}function Qs(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function $s(){return Qs(Ga(zs))}function ec(e){return e?$s()[e]??``:``}var tc=new Set;function nc(e){return tc.add(e),()=>{tc.delete(e)}}function rc(e){for(let t of tc)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function ic(e,t){if(I()||!e)return;let n=$s();t?n[e]=t:delete n[e],Ka(zs,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),no(zs,n=>{let r=Qs(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),rc(e)}async function ac(e,t){await no(zs,n=>{let r=Qs(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),mc()}async function oc(e){if(!e||typeof e!=`object`)return[];let t=[];if(await no(zs,n=>{let r=Qs(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;mc();for(let e of t)rc(e);return t}async function sc(e,t){return!e||!t?!1:(await oc({[e]:t})).length>0}var cc=un(),lc=an(cc?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,F=Fs({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:Ys()??!0,bundleSourcePretty:!1,bundleCodeTerminal:!1,bundleSourceLockfile:!1,bundleCodeFileRequest:null,npmLookup:{input:``,error:null},npmOpening:null,repositoryCodeOpening:null,repositoryCodePending:null,profileLinkError:null,bundleCompare:null,bundleOverviewFilesSort:`name`,bundleOverviewPackagesSort:`size`,bundleCodeHistory:null,bundleCodeSearchMode:`files`,bundleCodeSearchQuery:``,bundleSearchQuery:``,bundleSearchRegex:!1,bundleSearchCase:!1,bundleSearchContext:!0,filterSeverities:new Set,filterColors:new Set,filterSources:new Set,filterAnalyzer:``,filterModel:``,filterRepo:``,filterRevalidate:``,filterPartial:``,showRevalidation:!0,revalidationDetailed:!1,upstreamOnly:!1,revalidateConflicts:new Map,codePreviews:new Set,filterConfMin:0,filterConfMax:10,filterInclude:``,filterIncludeNegate:!1,filterComment:``,filterFix:``,filterFlagged:``,filterDuplicates:``,filterCrossContext:``,filterAppStacked:``,filterSecurity:``,repoUrl:``,repoEditing:!1,sortBy:`severity`,viewMode:`kanban`,severityMode:qs()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Js()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:Zs()??Ws,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:on(cc?.mode??`e2e`,lc),serverModeConfig:cc?.mode??null,serverModeSelection:lc,deepviewScanServer:null,githubNewIssueLabels:cc?.githubNewIssueLabels??``,localMode:!1,managed:cc?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function I(){return F.serverMode===`managed`&&!F.localMode}function uc(e){F.localMode=!!e}function dc(e,t=globalThis.location?.pathname??``){let n=an(e,t);n&&(F.serverModeSelection=`managed`),F.serverModeConfig=e,F.serverMode=on(e,F.serverModeSelection),F.serverModeSelection!==F.serverMode&&(F.serverModeSelection=null),(n||F.serverMode===`e2e`||rn(e))&&uc(!1)}function fc(){return rn(F.serverModeConfig)?(F.serverModeSelection=F.serverMode===`managed`?`e2e`:`managed`,F.serverMode=F.serverModeSelection,uc(!1),!0):F.serverMode===`managed`&&(uc(!F.localMode),!0)}function pc(){return F.serverMode===`standalone`&&F.localMode?`local`:F.serverMode===`managed`?F.localMode?`local`:`managed`:F.serverMode}function mc(){I()||F.repoEditing||F.currentFile&&(F.repoUrl=ec(F.currentFile))}Va(()=>{mc()});var hc=`__meta__`,gc=`deepview-reports`,_c=`deepview-bundles`,vc=`deepview.report:`;function yc(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function bc(e,t,n){return yc(e,t,`shared`,n)}function xc(e,t,n){return yc(e,t,`exclusive`,()=>navigator.locks.request(so,{mode:`shared`},n))}var Sc=!1;async function Cc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!Sc&&(Sc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function wc(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 Tc(e,t){if(!Ma(e))return e;if(!Oo())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Ko(e,t)}function Ec(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 Dc(e,t){Vc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(so,{mode:`exclusive`},async()=>{if(Vc(e)!==t)return;L(e),zc(e);let n=await Ac();if(n)try{await n.removeEntry(e)}catch{}Mc(e),L(e),Wc(e,`delete`)}))}async function Oc(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function kc(e,t,n,r,i=()=>{}){if(Co()&&!Oo())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=Oo(),o=a?await t(e,n):e;if(Oo()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Ac(){return Cc(gc,{create:!0,warnOnce:!0})}function jc(e){try{return localStorage.getItem(vc+e)}catch{return null}}function Mc(e){try{localStorage.removeItem(vc+e)}catch{}}function Nc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(vc)&&e.push(n.slice(vc.length))}return e}var Pc=67108864,Fc=new Map,Ic=0,Lc=new Map;function Rc(e,t){if(zc(e),!(t.length>Pc)){Fc.set(e,t),Ic+=t.length;for(let e of Fc.keys()){if(Ic<=Pc)break;zc(e)}}}function zc(e){let t=Fc.get(e);t!==void 0&&(Fc.delete(e),Ic-=t.length)}var Bc=new Map;function L(e){Bc.set(e,(Bc.get(e)??0)+1)}function Vc(e){return Bc.get(e)??0}var Hc=new Set;function Uc(e){return Hc.add(e),()=>Hc.delete(e)}function Wc(e,t){for(let n of Hc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function Gc(){let e=new Set(Nc()),t=await Ac();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Kc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(t===``)throw Error(`Refusing to save empty report "${e}"`);return L(e),xc(`report`,e,async()=>{let n=await Ac();if(n){let r=await Sn(va(t));r=await kc(r,Go,e,`"${e}"`,()=>L(e));let i=await n.getFileHandle(e,{create:!0}),a=await i.createWritable();try{await a.write(r),await a.close()}catch(t){zc(e),L(e);try{await a.abort(t)}catch{}throw await Oc(n,i,e),t}Rc(e,t),L(e),Mc(e),Wc(e,`save`);return}let r=va(t);r=await Sn(r),r=await kc(r,Go,e,`"${e}"`,()=>L(e));let i=r.toBase64();try{localStorage.setItem(vc+e,i),Rc(e,t),L(e),Wc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function qc(e,t){let n=jc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await Tc(r,e),Ec(r))throw await Dc(e,t),Error(`File not found: ${e}`);return ba(await Cn(r))}async function Jc(e,{keep:t=!0}={}){let n=Fc.get(e);if(n!==void 0)return t&&(Fc.delete(e),Fc.set(e,n)),n;let r=Lc.get(e);if(r)return t&&(r.keep=!0),r.promise;let i=Vc(e),a=(async()=>{let t=await Ac();if(t){let n;try{n=await t.getFileHandle(e)}catch(t){if(t instanceof DOMException&&t.name===`NotFoundError`){let t=await qc(e,i);if(t!==null)return Kc(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 Tc(a,e),Ec(a))throw await Dc(e,i),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await Cn(a);return ba(e)}let o=ba(a);return Kc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let n=await qc(e,i);if(n===null)throw Error(`File not found: ${e}`);return n})(),o={promise:a,keep:t};Lc.set(e,o);try{let t=await a;return o.keep&&Vc(e)===i&&Rc(e,t),t}finally{Lc.delete(e)}}async function Yc(e){let t=Vc(e),n=await Ac(),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=jc(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=jc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await Tc(r,e),Ec(r))throw await Dc(e,t),Error(`File not found: ${e}`);return r}async function Xc(e){let t=await Yc(e),n=t[0]===31&&t[1]===139?await Cn(t):t;return ba(n)}async function Zc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(Ec(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return L(e),zc(e),xc(`report`,e,async()=>{let n=await kc(t,Go,e,`"${e}"`,()=>L(e)),r=await Ac();if(r){let t=await r.getFileHandle(e,{create:!0}),i=await t.createWritable();try{await i.write(n),await i.close()}catch(n){L(e);try{await i.abort(n)}catch{}throw await Oc(r,t,e),n}L(e),Mc(e),Wc(e,`save`);return}try{localStorage.setItem(vc+e,n.toBase64()),L(e),Wc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Qc(e){return L(e),zc(e),Lc.delete(e),xc(`report`,e,async()=>{let t=await Ac();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw L(e),t}Mc(e),L(e),Wc(e,`delete`);return}localStorage.removeItem(vc+e),L(e),Wc(e,`delete`)})}var $c=`_meta.json`,el=`.index-v1`,tl=new Set;function nl(e){return tl.add(e),()=>tl.delete(e)}function rl(e,t){for(let n of tl)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function il(){return Cc(_c,{create:!0})}function al(e){return e.replaceAll(`/`,`_`)}async function ol(e){let t;try{let n=await(await e.getFileHandle($c)).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(Ma(t)){if(!Oo())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Jo(t,hc)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(ba(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function sl(e,t){let n=va(JSON.stringify(t));n=await kc(n,qo,hc,`bundle metadata`);try{await e.removeEntry($c)}catch{}await wc(await e.getFileHandle($c,{create:!0}),n)}var cl=`${_c}/${$c}`;function ll(e){return navigator.locks.request(cl,e)}async function ul(){let e=await il();return e?[...await navigator.locks.request(cl,{mode:`shared`},()=>ol(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function dl(){return pl(()=>!0)}function fl(){return pl((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function pl(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await Cc(_c,{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 ml(e,t){let n=await il();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:va(t),i=await xn(r),a=al(i),o=e.toLowerCase().endsWith(`.map`)?await Sn(r):r;return xc(`bundle`,i,async()=>{o=await kc(o,qo,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await wc(await n.getFileHandle(a,{create:!0}),o);try{await ll(async()=>{let t=await ol(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await sl(n,t)})}catch(e){try{await n.removeEntry(a),rl(i,`delete`)}catch{}throw e}return rl(i,`save`),{integrity:i,name:e}})}async function hl(e){let t=await il();if(t)return xc(`bundle`,e,async()=>{try{await t.removeEntry(al(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}rl(e,`delete`);try{await ll(async()=>{try{await t.removeEntry(al(e)+el)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await ol(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await sl(t,r)})}finally{rl(e,`delete`)}})}async function gl(e){let t=await il();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(al(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Ma(r)){if(!Oo())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Jo(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await Cn(r):r}async function _l(e){let t=await il();if(!t||Co()&&!Oo())return null;try{let n=await t.getFileHandle(al(e)+el),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Ma(r)&&(r=await Jo(r,e+el)),JSON.parse(ba(await Cn(r)))}catch{return null}}async function vl(e,t){let n=await Sn(va(JSON.stringify(t)));return navigator.locks.request(so,{mode:`shared`},()=>ll(async()=>{let t=await il();if(!t)return;await t.getFileHandle(al(e));let r=e+el,i=await kc(n,qo,r,`bundle index`);await wc(await t.getFileHandle(al(r),{create:!0}),i)}))}async function yl(e,t){let n=await Ac();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;zc(e),Lc.delete(e),L(e);let o=await n.getFileHandle(e,{create:!0});try{await wc(o,a)}catch(t){throw await Oc(n,o,e),t}L(e);return}}let r=jc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(zc(e),Lc.delete(e),L(e),localStorage.setItem(vc+e,i.toBase64()),L(e))}function bl(e,t){return e.seal?n=>Ma(n)?null:e.seal(n,t):n=>Ma(n)?e.open(n,t):null}async function xl(e){let t=await Gc();for(let n of t)try{await yl(n,bl(e,Ao(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var Sl=({seal:e})=>xl({seal:e}),Cl=({open:e})=>xl({open:e});async function wl(){let e=await il();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function Tl(e){return e===$c?hc:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function El(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await wc(await e.getFileHandle(t,{create:!0}),i)}async function Dl(e){let{dir:t,keys:n}=await wl();if(t)for(let r of n){let n=Tl(r);if(n!==null)try{await El(t,r,bl(e,jo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var Ol=({seal:e})=>Dl({seal:e}),kl=({open:e})=>Dl({open:e});No(()=>{Al(),Lc.clear()});function Al(){Fc.clear(),Ic=0}var jl=`deepview/workspace-id/v1
|
|
2
|
-
`;async function Ml(e){let t=Uint8Array.fromBase64(e),n=va(jl),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 Nl(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 Pl=Nl(`create`),Fl=Nl(`delete`),Il=Nl(`privateKey`),Ll=Nl(`report-membership`),Rl=Nl(`bundle-membership`);Pl.on;var zl=Fl.on,Bl=Il.on,Vl=Ll.on,Hl=Rl.on,Ul=Pl.fire,Wl=Fl.fire,Gl=Il.fire,Kl=Ll.fire,ql=Rl.fire,Jl=`deepview.workspaces`,Yl=1;function Xl(){try{let e=Ga(Jl);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 Zl(e){await Ka(Jl,JSON.stringify({version:Yl,workspaces:e}))}var Ql=Jl;function $l(e){return navigator.locks.request(Ql,async()=>{await Ya();let t=Xl(),n=await e(t);if(n!==!1)return await Zl(t),n})}function eu(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var tu=Xl().map(eu);function nu(){tu=Xl().map(eu)}function ru(e){tu=tu.filter(t=>t.id!==e.id),tu.push(eu(e))}function iu(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=tu.find(t=>t.id===e.id);if(r){r[t]=n;return}tu.push(eu(e))}function au(e){tu=tu.filter(t=>t.id!==e)}function R(){let e=Xl();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var ou=200;function su(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,ou)||null}async function cu(e){let t=su(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Ml(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await $l(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?(ru(i),i):null}async function lu(e){await $l(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Wl(e),au(e))}async function uu(e,t){let n=su(t);return!(!n||!await $l(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function du(e){let{next:t}=await $l(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=su(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=tu.find(e=>e.id===t.id)??null;return n==null?Ul(t.id):(n.privateKey!==t.privateKey&&Gl(t.id),pu(n.reports,t.reports)||Kl(t.id),pu(n.bundles,t.bundles)||ql(t.id)),ru(t),t}async function fu({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await $l(a=>{let o=su(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=>su(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`&&(Ul(i.workspace.id),ru(i.workspace)),i}function pu(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 mu({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await $l(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&&iu(t,n)}}function hu(e,t){return{move:(n,r)=>mu({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>mu({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>mu({identifier:n,field:e,fire:t,from:r})}}var gu=hu(`reports`,Kl),_u=hu(`bundles`,ql),vu=gu.move,yu=gu.add,bu=gu.remove,xu=_u.move,Su=_u.add,Cu=_u.remove;function wu(){let e=Xl().map(eu),t=new Map(tu.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Wl(e);for(let[e,r]of n){let n=t.get(e);if(!n){Ul(e);continue}n.privateKey!==r.privateKey&&Gl(e),pu(n.reports,r.reports)||Kl(e),pu(n.bundles,r.bundles)||ql(e)}tu=e}Va(()=>{wu()});function Tu(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 Eu(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 Du=null;function Ou(){Du=null}function ku(){return I()&&Du?.teamId===F.currentManagedTeam&&Du?.userId===F.managedSession?.id&&Du?.role===F.managedSession?.role?Du:null}function Au(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[];m(t.links??[],i);for(let e of t){let t=e.data;if(t.source===`links`&&Array.isArray(t.links)){a.push({id:e.id,name:e.filename,groups:t.links,skipped:0}),m(t.links,i);continue}let s=Ci(t)??[],c=Rr([{groups:[s.flat().filter(e=>e&&typeof e==`object`)],tree:t.tree,treeDependencies:t.treeDependencies}]);for(let[i,a]of s.entries()){let s=(Array.isArray(a)?a:[a]).filter(e=>e&&typeof e==`object`).map(n=>{let r={...n,_managedReportId:e.id,_reportName:e.filename,_repoFallback:e.repo.github,_repoDirectory:e.repo.directory,_source:n.source??t.source??null,_bundleHashes:t.bundleHashes??[],_depsDirectory:c};return vi(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Bi(r,r._source)),r}),l={report:e.filename,managedReportId:e.id,index:i,members:s};o.push(l);for(let e of s)n.has(e.id)||n.set(e.id,[]),n.get(e.id).push(l);for(let e of Eu(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(l)}}Du={teamId:e,userId:F.managedSession?.id,role:F.managedSession?.role,links:a,rows:o,byId:n,citedBy:r,duplicates:i},F.linksTick++,F.findingIndexTick++}function ju(e){let t=ku();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Mu(e){let t=ku();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function Nu(e){for(let t of ju([e])){let n=Wi(t.members.find(t=>t.id===e));if(n)return n}return``}var Pu=`deepview.fileCounts`,Fu=4,Iu=new Set([3,Fu]),Lu=null;function Ru(){if(Lu)return Lu;let e;try{e=JSON.parse(Ga(Pu)||`{}`)}catch{e={}}return Iu.has(e?.__v)?e.__v=Fu:e={__v:Fu},Lu=e,Lu}function zu(){Ka(Pu,JSON.stringify(Lu)).catch(e=>console.warn(`counts persist:`,e))}function Bu(e){if(e===`__v`)return;let t=Ru()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function Vu(e){return Bu(e)?.count}function Hu(e){return Bu(e)?.source}function Uu(e,t,n){let r=Ru();r[e]={count:t,source:n??null},zu()}function Wu(e){let t=Ru();delete t[e],zu()}function Gu(e){let t=f(e);return t?{count:p(t.groups),source:d,recognized:!0}:Ei(e)}var Ku=null,qu=null,Ju=null;function Yu(e,t){for(let{names:n,onUpdate:r}of Ju)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Xu(e,t){if(Ku){t&&Ju.push({names:new Set(e),onUpdate:t});for(let t of e)qu.add(t);return Ku}return qu=new Set(e),Ju=t?[{names:new Set(e),onUpdate:t}]:[],Ku=(async()=>{await Promise.resolve();try{let e=Ru();for(;qu.size>0;){let t=qu.values().next().value;if(qu.delete(t),e[t]===void 0)try{let n=await Jc(t,{keep:!1});if(e[t]!==void 0)continue;let{count:r,source:i}=Gu(n);e[t]=i?{count:r,source:i}:{count:r},zu(),Yu(t,r)}catch{}}}finally{Ku=null,qu=null,Ju=null}})(),Ku}var Zu=new Map,Qu=new Map,$u=new Map,ed=new Set,td=null,nd=null,rd=0,id=!1,ad=!1;function od(){return I()||ad}function sd(e){return ed.add(e),()=>ed.delete(e)}function cd(){for(let e of ed)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function ld(){let e=new Map;for(let t of Zu.values())t&&m(t.groups,e);Qu=e}function ud(){if(I())return ku()?.links??[];let e=[];for(let[t,n]of Zu)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function dd(){return I()?!!ku()?.duplicates.size:Qu.size>0}function fd(e){if(I())return[...ku()?.duplicates.get(e)??[]];let t=Qu.get(e);return t?[...t]:[]}async function pd(e){if(Zu.has(e))return!1;let t=$u.get(e)??0,n;try{n=await Jc(e,{keep:!1})}catch{return!1}if(n==null)return!1;if(($u.get(e)??0)!==t)return id=!0,!1;let r=f(n);if(Zu.set(e,r),r&&Hu(e)!==d)Uu(e,p(r.groups),d);else if(!r&&Hu(e)===d){let{count:t,source:r}=Gu(n);Uu(e,t,r)}return r!==null}function md(){return I()?Promise.resolve():nd||(nd=(async()=>{try{let e,t;do{t=rd,e=await Gc(),ad&&e.some(e=>!Zu.has(e))&&(ad=!1,cd());let n=e.filter(e=>Hu(e)===d);(await Promise.all(n.map(e=>pd(e)))).some(Boolean)&&(ld(),cd())}while(t!==rd);return e}catch(e){throw ad&&(ad=!1,cd()),e}finally{nd=null}})(),nd)}function hd(){return I()?Promise.resolve():td||(td=(async()=>{try{do{id=!1;let e=await md(),t=!1;for(let n of e)await pd(n)&&(t=!0);let n=!id&&e.every(e=>Zu.has(e)),r=ad!==n;ad=n,t&&ld(),(t||r)&&cd()}while(id)}catch(e){throw ad&&(ad=!1,cd()),e}finally{td=null}})(),td)}Uc(e=>{let t=ad;ad=!1,rd++,$u.set(e,($u.get(e)??0)+1),id=!0;let n=Zu.get(e)!=null;Zu.delete(e),n&&ld(),(n||t)&&cd()});var gd=()=>{};function _d(e){gd=typeof e==`function`?e:()=>{}}var vd=()=>{};function yd(e){vd=typeof e==`function`?e:()=>{}}var bd=()=>{};function xd(e){bd=typeof e==`function`?e:()=>{}}var Sd=`deepview.triage`,Cd=`deepview.triage.pending`,wd=/^\d+$/u;async function Td(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Ed(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var Dd=`deepview.triage.save`,Od=0;function kd(){return!I()&&c(F.triage,F.reports)}function Ad(){kd();let e={};for(let[t,n]of F.triage){if(wd.test(t))continue;let r=vn(n);r&&(e[t]=r)}return e}function jd(){if(I())return vd(),Promise.resolve();let e=++Od,t=Ad(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(Cd,r)}catch{}return navigator.locks.request(so,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await Td(va(r));i=Oo(),t=(i?await Uo(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),gd();return}await navigator.locks.request(Dd,()=>{try{if(e!==Od)return;if(r!=null&&Oo()!==i){queueMicrotask(()=>{jd()});return}if(n)localStorage.removeItem(Sd),localStorage.removeItem(Cd);else{localStorage.setItem(Sd,t);try{localStorage.removeItem(Cd)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),gd()})}async function Md(){let e=localStorage.getItem(Cd);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(Sd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Ma(n)){if(!Oo())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Wo(n)}let r=await Ed(n);return JSON.parse(ba(r))}function Nd(e,{replace:t=!1}={}){let n=F.triage;if(t){let t=null,r=localStorage.getItem(Cd);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(wd.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))&&!mn(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(wd.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!hn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){bn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&bn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=mn(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),hn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&bn(n,t,e,!0,_n(r,e))}}async function Pd(){if(I())return!1;if(![...F.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await l(Object.fromEntries(F.triage),e=>bc(`report`,e,()=>Xc(e)));if(!I())return c(F.triage,e)}async function Fd(){if(!I())try{let e=await Md();if(I())return;Nd(e),await Pd()&&await jd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Id(){if(!I())try{let e=await Md();if(I())return;Nd(e,{replace:!0}),await Pd()&&await jd(),bd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==Sd&&e.key!==Cd||Id()});var Ld;function Rd(){return I()?Promise.resolve():Ld??=Fd()}No(()=>{Id()}),No(()=>{I()||Oo()&&localStorage.getItem(Cd)&&jd()});async function zd({seal:e}){try{localStorage.removeItem(Cd)}catch{}let t=localStorage.getItem(Sd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Ma(n))return;let r=await e(n,ko());localStorage.setItem(Sd,r.toBase64())}async function Bd({open:e}){try{localStorage.removeItem(Cd)}catch{}let t=localStorage.getItem(Sd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Ma(n))return;let r=await e(n,ko());localStorage.setItem(Sd,r.toBase64())}function Vd(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Hd(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 Ud({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 Ml(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await h(va(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Wd({encoded:e,password:t}){if(typeof e!=`string`||!e)throw Error(`malformed share link`);if(typeof t!=`string`||!t)throw TypeError(`decodeShareLink: password required`);let n;try{n=Uint8Array.fromBase64(e,{alphabet:`base64url`})}catch{throw Error(`malformed share link`)}let r=await g(n,t,{malformedMsg:`malformed share link`,wrongPasswordMsg:`wrong password or corrupt link`});try{return await Gd(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function Gd(e){let t=JSON.parse(ba(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 Ml(t.k),name:t.n,privateKeyBase64:t.k}}function Kd(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function qd(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 Jd=new Map,Yd=new Map,Xd=new Map;function Zd(e){return I()?[...new Set(ju([e]).map(e=>e.report))]:[...Jd.get(e)?.reports.keys()??[]]}function Qd(e){if(I())return Nu(e);for(let{title:t}of Jd.get(e)?.reports.values()??[])if(t)return t;return``}function $d(e){if(I())return ju(e);let t=new Set;for(let n of e)for(let e of Jd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function ef(e){if(I())return Mu(e);let t=new Set;for(let n of e)for(let e of Yd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function tf(e){return Xd.has(e)||Xd.set(e,{ids:new Set,inputs:new Set}),Xd.get(e)}function nf(e,t){let n=!1;for(let r of t.members){let i=Jd.get(r.id);i||Jd.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:Wi(r),rows:new Set([t])}),tf(e).ids.add(r.id),n=!0}for(let[,...n]of Eu(t.members))for(let r of n){Yd.has(r)||Yd.set(r,new Map);let n=Yd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),tf(e).inputs.add(r)}return n}function rf(e){let t=Xd.get(e);if(Xd.delete(e),!t)return!1;for(let n of t.ids){let t=Jd.get(n);t?.reports.delete(e),t?.reports.size===0&&Jd.delete(n)}for(let n of t.inputs){let t=Yd.get(n);t?.delete(e),t?.size===0&&Yd.delete(n)}return!0}var af=`solidity-bundle`,of=`0.0.0`;function sf(e){if(e?.name!==af)return!1;let t=e.version;return!t||t===of}function cf(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!sf(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 lf(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function uf(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 df(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 ff(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function pf(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=lf(),e.byVersion.set(t,a)),uf(a,r,i,n)}function mf(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&&df(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}ff(o)}function hf(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=gf(e,`-`),[i,a=``]=gf(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 gf(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var _f=new Map,vf=new Map,yf=new Map,bf=new Map;function xf(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!sf(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 Sf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function Cf(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 wf=new Set,Tf=new Set,Ef=null,Df=!1;function Of(e){return Tf.add(e),()=>Tf.delete(e)}function kf(){for(let e of Tf)try{e()}catch{}}function Af(e){return _f.get(e)?.list??[]}function jf(){let e=0;for(let t of _f.values())e+=t.list.length;return e}function Mf(){return vf}function Nf(){return yf}function Pf(e,t){let n=_f.get(e);if(!n)return[];let r=n.reports.get(Lf(t));return r?[...r]:[]}function Ff(e,t){let n=vf.get(e);if(!n)return[];let r=n._keyReports.get(Lf(t));return r?[...r]:[]}function If(e,t){let n=yf.get(e);if(!n)return[];let r=n._keyReports.get(Lf(t));return r?[...r]:[]}function Lf(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,o(e)])}function Rf(e,t,n){let r=bf.get(e);r||(r={hash:[],pkg:[],repo:[]},bf.set(e,r)),r[t].push(n)}function zf(e,t,n){let r=_f.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},_f.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&&Rf(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function Bf(e,t,n){let r=xf(e);if(!r)return!1;let i=cf(e),a=vf.get(r);if(a||(a={...lf(),repos:new Set,byVersion:new Map,_repoReports:new Map},vf.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)}pf(a,i,e,t,n);let o=uf(a,t,n,e);return Rf(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function Vf(e,t,n,r){if(Sf(e))return!1;let i=Cf(e,r);if(!i)return!1;let a=yf.get(i);a||(a=lf(),yf.set(i,a));let o=uf(a,t,n,e);return o&&Rf(n,`repo`,{repo:i,key:t,file:e.file}),o}function Hf(e){let t=bf.get(e);bf.delete(e),wf.delete(e);let n=rf(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=_f.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=>Lf(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&_f.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=vf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&df(t,a,o,Lf),mf(t,s,a,o,e,Lf),!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?vf.delete(n):ff(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=yf.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&df(t,i,a,Lf),t._keyReports.size===0?yf.delete(n):ff(t))}return r}async function Uf(e){if(wf.has(e))return!1;wf.add(e);try{let t=await Jc(e,{keep:!1}),n=await Oi(t);if(!n)return!1;let{data:r,findings:i}=n;if(i.length===0)return!1;a(i,r),Si(Ci(r).map(e=>Array.isArray(e)?e:[e]),{source:r.source});let o=yi(r)??``;if(!o)try{o=ec(e)}catch{}let s=!1;for(let t of i){let n=Lf(t);t.fileHash&&zf(t,n,e)&&(s=!0),t.file&&Bf(t,n,e)&&(s=!0),t.file&&Vf(t,n,e,o)&&(s=!0)}for(let[t,n]of Ci(r).entries()){let i=(Array.isArray(n)?n:[n]).filter(e=>e?.id);i.length!==0&&nf(e,{report:e,index:t,members:i.map(e=>{let t=e.source??r.source??null;return{id:e.id,title:Wi(e),source:t,revalidate:zi(e),isApp:e.isApp??Bi(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return wf.has(e)?s:(Hf(e),Df=!0,!1)}catch{return wf.delete(e),!1}}function Wf(){return I()?Promise.resolve():Ef||(Ef=(async()=>{try{do{Df=!1;let e=await Gc();for(let t of e)await Uf(t)&&kf()}while(Df)}finally{Ef=null}})(),Ef)}function Gf(){return Ef}Uc(e=>{Hf(e)&&kf()}),nc(e=>{Hf(e)&&kf(),Wf().catch(()=>{})});var Kf=new Map,qf=new Map,Jf=new Map,Yf=new Set;function Xf(e){return Yf.add(e),()=>Yf.delete(e)}function Zf(){for(let e of Yf)try{e()}catch{}}function Qf(e,t){if(!e||!t)return!1;let n=!qf.has(e);qf.set(e,t),Jf.delete(e);for(let[n,r]of t){if(!r)continue;let t=Kf.get(r);t||(t=new Map,Kf.set(r,t)),t.set(e,n)}return n&&Zf(),n}function $f(e){let t=qf.get(e);if(qf.delete(e),Jf.delete(e),t){for(let n of t.values()){let t=Kf.get(n);t&&(t.delete(e),t.size===0&&Kf.delete(n))}Zf()}}function ep(e,t){let n=qf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=np(e,n).get(tp(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 tp(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function np(e,t){let n=Jf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=tp(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Jf.set(e,n),n}function rp(e){if(!e)return[];let t=Kf.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function ip(e){return qf.has(e)}async function ap(e){if(!e)return null;let t=R(),n=(await Promise.all(t.map(e=>zr(`workspace`,e.id)))).indexOf(e);return n===-1?null:t[n]}async function op(e){if(!e)return null;let t=await Gc(),n=(await Promise.all(t.map(e=>zr(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function sp(e,t){let n;try{n=await Jc(e)}catch{return!1}return n==null?!1:(await Oi(n))?.findings.some(e=>e.id===t)??!1}async function cp(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await Gc()).filter(e=>!n.has(e));for(let t of r)if(await sp(t,e))return t;return null}function lp(e){return e?R().filter(t=>t.reports.includes(e)):[]}function up(e){if(!e)return``;for(let t of e.split(`
|
|
3
|
-
`))if(t.trim())return t.trim();return``}function dp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of F.reports)for(let r of e.groups)for(let e of r){let r=e.id??String(e._id);if(t.has(r)&&!n.has(r)&&(n.set(r,{severity:e.severity,file:e.file,line:e.line,description:up(e.description)}),n.size===t.size))return n}return n}var fp=`deepview.lastFile`,pp=null;function mp(){return pp||(pp=hp(),pp.catch(()=>{pp=null})),pp}async function hp(){try{await Rd()}catch{}let e=await Gc(),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 Jc(n),await Kc(e,i),await Qc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Vu(n);if(Wu(n),a===void 0){let{count:t,source:n}=Gu(i);Uu(e,t,n)}else{let{source:t}=Gu(i);Uu(e,a,t)}let o=ec(n);o&&(ic(n,``),ic(e,o));let s=!1;for(let[t,r]of[...F.triage])r.ignoredReports?.includes(n)&&(bn(F.triage,t,n,!1),bn(F.triage,t,e,!0,_n(r,n)),s=!0);s&&await jd();let c=Hd(Ga(fp));if(c?.name===n)try{await Ka(fp,Vd(e,c.workspaceId))}catch{}}for(let e of R())for(let t of e.reports){if(!t.toLowerCase().endsWith(`.deepseek`)||!r.has(t)&&n.has(t))continue;let i=t.slice(0,-9)+`.md`;await bu(t,e.id),await yu(i,e.id)}}function gp(){return{..._p,hydrateKey:Xa,localContentSyncStatus:fn,readTriageBlob:async()=>(await u(await Md(),e=>bc(`report`,e,()=>Xc(e)))).entries,reportSyncHash:e=>bc(`report`,e,async()=>pn(await Yc(e)))}}var _p={hasStoredBundleBytes:fl,listBundles:ul,listFiles:Gc,onBundleMutated:nl,onFileMutated:Uc,readBundle:gl,readFile:Xc,withStoredItem:bc,isEncryptionEnabled:Co,isUnlocked:wo,onVaultStateChange:No,unlockEncryption:Fo};function vp(e=_p){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 yp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function bp(){if(!yp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function xp(){let e={supported:yp(),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 Sp=`deepview.scan.access`,Cp=new Set;function wp(){for(let e of Cp)e()}function Tp(){return Ga(Sp)!=null}function Ep(e){try{let t=JSON.parse(Ga(Sp)),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 Dp({server:e,deepview:t,provider:n,token:r}){await Ka(Sp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),wp()}async function Op(){await qa(Sp),wp()}function kp(e){Cp.add(e);let t=Va(e);return()=>{Cp.delete(e),t()}}var Ap=1;function jp(){let e=Ad(),t=$s();return{version:Ap,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Mp(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function Np(){let e=jp();return{blob:new Blob([await wn(JSON.stringify(e))]),filename:Mp()}}async function Pp(e){let t;try{t=await Tn(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!==Ap)throw Error(`Unsupported backup version: ${n.version} (expected ${Ap})`);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 Fp(e,t){if(![`replace`,`prefer-imported`,`prefer-current`].includes(t))throw Error(`Unknown merge mode: ${t}`);if(!e||typeof e!=`object`)throw Error(`Invalid payload: not an object`);if(!e.triage||typeof e.triage!=`object`||Array.isArray(e.triage))throw Error("Invalid payload: missing or non-object `triage`");if(!e.repoUrls||typeof e.repoUrls!=`object`||Array.isArray(e.repoUrls))throw Error("Invalid payload: missing or non-object `repoUrls`");let n=e.triage,r=F.triage;if(t===`replace`)for(let e of[...r.keys()])wd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(wd.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=mn(t);if(n&&(!i||!mn(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)&&hn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&bn(r,e,n,!0,_n(t,n))}await Pd(),await jd();let a=0,o=null;try{await ac(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 Ip(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Lp(e){let t=new Set;for(let n of e){let e;try{e=await Jc(n)}catch(e){if(Ip(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Oi(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Rp(){let e=new Set;for(let t of F.triage.keys())wd.test(t)||e.add(t);return e}async function zp(e){let t=Rp();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Lp(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 Gc(),a=new Set(e),o=await Lp(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 Bp(){let e=new Set(F.triage.keys()),t=[];for(let[e,n]of F.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await Gc(),r=new Set(n),i=await Lp(n),a=!1;for(let t of e){if(wd.test(t)||i.has(t))continue;let e=F.triage.get(t);!e||!(e.color||mn(e)||e.comment||e.fix||e.flagged!==void 0)||C(F.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)wd.test(e)||i.has(e)&&r.has(n)||gn(F.triage,e,n)&&bn(F.triage,e,n,!1)&&(a=!0);a&&await jd()}var Vp=1;async function Hp(e){let t=new Set,n=await Oi(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function Up(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Wp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await ul(),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 gl(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 Gp(e){let t=ec(e);return t?{github:t}:null}async function Kp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Jc(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 vu(n,null);continue}let r=Gp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function qp(e,{includeBundleBytes:t=!1}={}){let n=await Kp(e),r=new Set;for(let e of n)for(let t of await Hp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of F.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=vn({...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:Vp,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 Wp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Jp(e,{includeBundleBytes:t=!1}={}){let n=await qp(e,{includeBundleBytes:t});return{blob:new Blob([await wn(JSON.stringify(n))]),filename:`${Up(e.name)}.deepview-workspace.json.gz`}}async function Yp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Jp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await v(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${Up(e.name)}.deepview-workspace.enc`}}async function Xp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await Yp(e,t,{includeBundleBytes:n}):await Jp(e,{includeBundleBytes:n})}async function Zp(e){return{reports:await Kp(e)}}async function Qp(e){let t=await Zp(e);return{blob:new Blob([await wn(JSON.stringify(t))]),filename:`${Up(e.name)}.deepview-reports.json.gz`}}function $p(e){return mn(e)??null}async function em(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Oi(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:up(n.description)})}return t}async function tm(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=F.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&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=$p(n),d=mn(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(hn(r.get(t)))for(let e of m)typeof e==`string`&&bn(r,t,e,!0,_n(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&nm(i,e)}await jd()}function nm(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&rm(n.id,n.property)===n.local&&(n.property===`color`?C(F.triage,n.id,{color:n.imported}):n.property===`comment`?C(F.triage,n.id,{comment:n.imported}):n.property===`fix`?C(F.triage,n.id,{fix:n.imported}):n.property===`triage`?C(F.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&C(F.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function rm(e,t){if(t===`color`)return F.triage.get(e)?.color;if(t===`triage`)return mn(F.triage.get(e))??null;if(t===`comment`)return F.triage.get(e)?.comment??``;if(t===`fix`)return F.triage.get(e)?.fix??``;if(t===`flagged`){let t=F.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function im(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 ml(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 am(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Kc(t.name,t.content);let{count:e,source:r}=Gu(t.content);Uu(t.name,e,r??Hu(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 im(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await em(e.reports):new Map;await tm((await u(e.triage,t=>e.reports.find(e=>e.name===t)?.content)).entries,t,r);let i=Array.isArray(e.bundles),a=i?e.bundles.filter(e=>typeof e==`string`&&e.length>0):[],o=await du({id:e.workspace.id,name:e.workspace.name,privateKey:e.workspace.privateKey,reports:n,bundles:i?a:void 0,preserveBundles:!i,createdAt:e.workspace.createdAt}),s=new Set(n),c=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!s.has(t)||typeof n!=`string`||!n||(c[t]=n);if(Object.keys(c).length>0)try{await oc(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function om(e){return!e||typeof e!=`object`||Array.isArray(e)?`payload is not an object`:e.version!==void 0||e.workspace!==void 0?`payload claims to be a workspace export`:Array.isArray(e.reports)?e.reports.length>y?`reports count (${e.reports.length}) exceeds cap (${y})`:null:`reports field must be an array`}function sm(e){return om(e)===null}async function cm(e){if(_(e))return{kind:`encrypted`};let t;try{t=await Tn(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 sm(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var lm=`deepview.workspaceApp`,um=2,dm=new Set,fm=new Set,pm=0,mm=0,hm=0,gm=new Map,_m=Promise.resolve(),vm=null;function ym(e=Ga(lm)){try{let t=JSON.parse(e);if(t?.version===um&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:um,revision:``,links:`[]`,entries:{}}}function bm(){for(let e of dm)e()}function xm(e){let t=_m.then(()=>no(lm,t=>e(ym(t))));return _m=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function Sm(e){return JSON.stringify(e.reports.toSorted())}function Cm(){return JSON.stringify(ud().map(({name:e,groups:t})=>({name:e,groups:t})))}function wm(e){return od()&&e.links===Cm()}function Tm(e,t){return e.workspaceRevisions?.[t]??``}function Em(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(gm.get(t?.id)??0)&&n.workspaceRevision===Tm(e,t?.id)}function Dm(e,t,n){return n.reportEpoch===hm&&n.reportRevision===(e.reportRevision??e.revision)&&Em(e,t,n)}function Om(e,t){return Dm(ym(),e,t)}function km(e,t){if(pm||fm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==Sm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Am(e){return km(e,ym())?.appMode??null}function jm(e){let t=ym(),n=km(e,t);return!n||!wm(t)?null:n}async function Mm(e,t=null){let n;do n=_m,await n;while(n!==_m);let r=ym(),i=r.reportRevision??r.revision;return t&&(!Dm(r,e,t)||!wm(r))?null:{epoch:mm,revision:r.revision,reportEpoch:hm,reportRevision:i,workspaceId:e?.id,workspaceEpoch:gm.get(e?.id)??0,workspaceRevision:Tm(r,e?.id)}}async function Nm(e,t,n){let r=!1;return await xm(i=>{if(n.epoch!==mm||n.revision!==i.revision||!Em(i,e,n)||!wm(i))return;let a=R().find(t=>t.id===e.id);if(a&&Sm(a)===Sm(e))return i.entries[e.id]={...t,reports:Sm(e)},r=!0,JSON.stringify(i)}),r&&bm(),r}function Pm(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)mm++,t===void 0&&hm++,pm++;else for(let t of e)gm.set(t,(gm.get(t)??0)+1),fm.add(t);return bm(),xm(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)pm--;else for(let t of e)fm.delete(t);bm()})}function Fm(e){return dm.add(e),()=>dm.delete(e)}Va(()=>{let e=Ga(lm);e!==vm&&(vm=e,bm())}),Vl(e=>{Pm([e]).catch(()=>{})}),zl(e=>{Pm([e]).catch(()=>{})}),Uc(e=>{Pm(R().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),sd(()=>{if(!od()){bm();return}let e=Cm();ym().links===e?bm():Pm(null,e).catch(()=>{})});var Im=null,Lm=null;function Rm(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function zm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Bm(){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 Vm=`./brotli-fallback.js`,Hm=Symbol(`brotli worker unavailable`),Um=null,Wm=!1,Gm=0,Km=new Map;function qm(){return Lm||(Lm=(async()=>await import(Vm))(),Lm)}function Jm(){Wm=!0,Um&&=(Um.terminate(),null);let e=[...Km.values()];Km.clear();for(let t of e)t.resolve(Hm)}function Ym(e){let{id:t,bytes:n,error:r}=e.data??{},i=Km.get(t);i&&(Km.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Xm(){if(Um)return Um;if(Wm||typeof Worker>`u`)return null;try{Um=new Worker(tr(new URL(Vm,import.meta.url)),{type:`module`})}catch{return Wm=!0,null}return Um.addEventListener(`message`,Ym),Um.addEventListener(`error`,Jm),Um.addEventListener(`messageerror`,Jm),Um}function Zm(e){let t=Xm();return t?new Promise((n,r)=>{let i=++Gm;Km.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Km.delete(i),Jm(),n(Hm)}}):Promise.resolve(Hm)}async function Qm(){await Bm();let e=Rm();return e?{kind:`native`,format:e}:{kind:`fallback`}}function $m(){return Im||(Im=Qm(),Im)}async function eh(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await $m();if(n(),r.kind===`native`)return zm(r.format,e);let i=await Zm(e);return n(),i===Hm?(await qm()).brotliDecompress(e):i}$m().catch(()=>{});var th=document.querySelector(`#drop-zone`),z=document.querySelector(`#report`),nh=document.querySelector(`app-sidebar`);function rh(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,N(A`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function ih(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var ah={get state(){return F},listWorkspaces:R,addReportToWorkspace:yu,addBundleToWorkspace:Su,onReportMembershipChanged:Vl,onBundleMembershipChanged:Hl,onWorkspaceDeleted:zl,onWorkspacePrivateKeyChanged:Bl,analyzeContent:Gu,setCount:Uu,gunzipBytes:Cn,listBundles:ul,listFiles:Gc,readBundle:gl,readFileBytes:Yc,saveBundle:ml,saveFileBytes:Zc,onFileMutated:Uc,async saveTriage(){return await Pd(),jd()},getSecureItem:Ga,setSecureItem:Ka,removeSecureItem:qa,onSecureStorageHydrated:Va};function oh(e){e.installSyncHost(ah),_d(()=>e.triageSync.notify())}var B=null,sh=null;function ch(){try{return Ga(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var lh=!1;function uh(e){lh=!!e}function dh(){if(lh||F.serverMode!==`e2e`)return!0;try{return un()?.mode===`managed`}catch{return!1}}function fh(){return sh||(dh()&&!B?Promise.resolve(null):(sh=(async()=>{try{let e=await import(`./client-sync.js`);return oh(e),B=e,hh(),e}catch(e){throw sh=null,e}})(),sh))}var ph=[];function mh(e){B?e(B):ph.push(e)}function hh(){let e=ph.splice(0);for(let t of e)try{t(B)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function gh(e,t){let n={cancelled:!1,unsub:null};return mh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function _h(e,t){return B?B.isInRemote(e,t):!1}function vh(e,t){return B?B.isBundleInRemote(e,t):!1}var yh=`deepview.objstore-presence.`;function bh(e){try{let t=localStorage.getItem(yh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function xh(e,t){if(B&&B.isInRemote(e,t))return!0;let n=bh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function Sh(e,t){if(B&&B.isBundleInRemote(e,t))return!0;let n=bh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function Ch(e){return B?B.remoteCount(e):0}function wh(e){return B?B.differingReports(e):[]}function Th(e){return gh(e,(e,t)=>e.onAutoDownloaded(t))}function Eh(e){return gh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function Dh(e){return gh(e,(e,t)=>e.onChange(t))}var Oh=null,kh=null,Ah=null,jh=[];function Mh(e){if(B){B.setRedraw(e);return}Oh=e,mh(t=>{Oh===e&&t.setRedraw(e)})}function Nh(e){if(B){B.setAuthenticationResolver(e);return}kh=e,mh(t=>{kh===e&&t.setAuthenticationResolver(e)})}function Ph(e){if(B){B.setHydrationConflictResolver(e);return}Ah=e,mh(t=>{Ah===e&&t.setHydrationConflictResolver(e)})}async function Fh(e,t){if(dh()||!ch()&&!B)return;let n=await fh();if(n&&!dh())return n[e](...t)}function Ih(...e){return Fh(`downloadFileFromRemote`,e)}function Lh(...e){return Fh(`fetchBundleFromRemote`,e)}function Rh(...e){return Fh(`putFile`,e)}function zh(...e){return Fh(`holdLocalChangeChecks`,e)}function Bh(...e){return Fh(`putBundleToRemote`,e)}function Vh(...e){return Fh(`deleteFromRemote`,e)}function Hh(...e){return Fh(`deleteBundleFromRemote`,e)}function Uh(...e){return Fh(`openWorkspace`,e)}async function Wh(...e){return(B??(sh?await sh:null))?.closeWorkspace(...e)}function Gh(...e){return Fh(`recheckRemoteStorage`,e)}function Kh(...e){return Fh(`resolveReportDifference`,e)}function qh(e,t){if(B)return B.triageSync[e](...t);mh(n=>{n.triageSync[e](...t)})}var V={get status(){return B?B.triageSync.status:`off`},get openSessions(){return B?B.triageSync.openSessions:[]},get persistenceDegraded(){return B?B.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return B?B.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return dh()?Promise.resolve(null):fh().then(e=>{e.triageSync.setEnabled(!0);let t=jh;jh=[];for(let n of t)try{e.openWorkspace(n)}catch(e){console.warn(`client-sync: openWorkspace(${n}) failed during re-enable:`,e)}return null}).catch(e=>(console.warn(`client-sync: setEnabled load failed:`,e),null));if(B){jh=B.openWorkspaceIds();for(let e of jh)try{B.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}B.triageSync.setEnabled(!1);return}qh(`setEnabled`,[e])},isEnabled(){return B?B.triageSync.isEnabled():ch()},openSession(e){qh(`openSession`,[e])},closeSession(e){qh(`closeSession`,[e])},refreshSession(e){qh(`refreshSession`,[e])},dismissError(e){qh(`dismissError`,[e])},setForcedOff(e){qh(`setForcedOff`,[e])},setProtocolLocked(e){qh(`setProtocolLocked`,[e])},setServerUrl(e){qh(`setServerUrl`,[e])},getServerUrl(){return B?B.triageSync.getServerUrl():null},notify(){qh(`notify`,[])},onStatusChange(e){return gh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return gh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return gh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return gh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Jh=class extends _a{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Is(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Is(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 Yh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Xh(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 Zh(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!Xh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Qh(e){return Zh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function $h(e){return Zh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function eg(e){let t=Qh(e);if(t)return{...t,kind:`pull`};let n=$h(e);return n?{...n,kind:`issue`}:null}function tg(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function ng(e){return I()&&F.currentManagedTeam&&F.managedSession&&!F.managedSession.publicShare?F.managedIssues.get(e?.id)??null:null}function rg(e){return ng(e)?.autoFix??``}function ig(e,t){return t?.fix||rg(e)||ng(e)?.url||``}function ag(e,t={},n){let r=!1;for(let i of e){if(n&&F.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=$h(e?.url)?{url:e.url,autoFix:Qh(e.autoFix)?e.autoFix:null}:null,o=F.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix||(a?F.managedIssues.set(i,a):F.managedIssues.delete(i),r=!0)}return r}function og(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function sg(e,t,n){let r=og(t);if(!e._revalidationCopies){let t=og(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 cg(e){let t=new Map,n=new Set(Ri);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?zi(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 lg=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function ug(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||lg.has(r)||i==null)continue;if(r===`revalidate`){let a=zi(t);if(!a)continue;let o=zi(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 dg(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:Pi(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:Pi(t),reason:t.correctedSeverityReason});let i=sg(e,t,n);(ug(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function fg(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 pg(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(zi(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&zi(e)!==`revalidation`).map(hg):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(zi(e))):e:e.filter(e=>zi(e)!==`revalidation`).map(hg),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(...mg(r,e,t,n))}else m.push(...mg(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))dg(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(...mg(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 mg(e,t,n,r){if(n)return[t];if(r){let n=fg(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 fg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function hg(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 gg(e,t=$d){let n=Tu(Eu(e.flat()));return{linkedIds:e=>[...fd(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...ef(e)];for(let e of r)for(let t of Eu(e.members))n.add(t);return r}}}var _g=null,vg=0;function yg(){return F.currentView===`links`&&_g?.owner===F.currentLinks?_g:null}function bg(){vg++,_g=null}async function xg(e,t,n,r){if(F.currentView!==`links`||!F.currentLinks)return;let i=Fs(F.currentLinks),a=++vg;_g={owner:i,id:e,reportName:t,group:null,error:``},F.focusCodeStack=[],F.focusCodeAt=0;let o=()=>a===vg&&F.currentView===`links`&&F.currentLinks===i;try{if(I()){let a=$d([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.`);_g={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},F.activeTabByGroup.set(a.members[0].id,e);return}let a=await Oi(await Jc(t));if(!o())return;let s=(Ci(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:yi(u)??ec(t),_repoDirectory:bi(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return vi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Bi(n,n._source)),n});if(await Promise.all([Rd(),zr(`report`,t),...lp(t).map(e=>zr(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));Si([d],gg([d],e=>[...$d(e),...F.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),_g.group=d,F.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(_g.error=e.message||`Unable to load this finding.`)}}function Sg(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function H(e){return e.workspaceKey??E(e[0])}function Cg(e){return Array.isArray(e)?e:[e]}function wg(){return F.revalidationDetailed===!0}function Tg(e){return e?._reportName??``}var Eg=null,Dg=!0;function Og(){let e=F.reports;return!Array.isArray(e)||e.length===0||(e!==Eg&&(Eg=e,Dg=jr(e)),Dg)}function kg(e){return!e.isUpstream||F.showRevalidation===!1||F.upstreamOnly===!0||!Og()}function Ag(){let e=F.managedSession;return I()&&(e?.publicShare===!0||!et(e?.role,`triage`))}function jg(e){return kg(e)&&!Ag()}function U(e){if(!kg(e))return;let t=F.triage.get(E(e)),n=t?.triage===`ignored`&&o(e,On())?{...t,triage:void 0}:t;if(!I())return n;let r=F.managedComments?.get(e.id)??[];return r.length===0&&!n?.comment?n:{...n,comment:r.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
|
|
4
|
-
|
|
5
|
-
`)}}function Mg(e){return kg(e)&&(s(e,F.triage.get(E(e)),On())===`ignored`||o(e,On())&&gn(F.triage,E(e),Tg(e)))}function Ng(e,t=U(e)){if(kg(e))return s(e,t,On())??(Mg(e)?`ignored`:void 0)}function Pg(e){return yg()?.group===e?e:e.linkedTabs?e.linkedTabs:wg()?e:Fg(e)}function Fg(e){return e.length<=1||!e.some(Pr)?e:e.filter(Pr)}function Ig(e){let t=Pg(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Pr(e),r=+!!Pr(t);if(n!==r)return r-n;let i=+!!U(e)?.color,a=+!!U(t)?.color;if(i!==a)return a-i;let o=Mi[Ii(e,F.severityMode)]||0,s=Mi[Ii(t,F.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Lg(e){return e.length===1?e[0]:Ig(e)[0]}function Rg(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function zg(e){let t=U(e);return!!t?.comment||!!(t?.fix||rg(e))||t?.flagged===!0}function Bg(e){if(e.length===1)return e[0];let t=Ig(e);if(t.length===1)return t[0];let n=F.activeTabByGroup.get(H(e));if(n){let e=t.find(e=>E(e)===n);if(e)return e}let r=t;if(F.filterAnalyzer||F.filterModel){let e=t.filter(p_);e.length>0&&(r=e)}return r.find(zg)??r[0]}function Vg(e){return e?._repoFallback||F.repoUrl||``}function Hg(e){return{github:Vg(e),directory:e?._repoDirectory??``}}function Ug(e){for(let t of Mf().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||Vg(e)||null}function Wg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Gg(e){let t=Wg(e),n=0,r=!1,i,a=!1,o=!1,s,c=!1,l=null,u=!1,d=!0;for(let e of t){let t=U(e),f=Ng(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 Kg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(jg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>qg(e,r))}function qg(e,t){if(!jg(e))return!1;let n=(U(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Jg(e,t){if(!jg(Bg(e)))return{targets:[],clearing:!1};let n=Gg(e);return{targets:Yg(e,n),clearing:t===`restore`||Xg(e,n)===t}}function Yg(e,t=Gg(e)){let n=Wg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Bg(e)]:n;return r.every(jg)?r:r.filter(jg)}function Xg(e,t=Gg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&Wg(e)!==e||!t.hasConflict?t.commonTriage??null:Ng(n??Bg(e))??null}function Zg(e){let t=Wg(e);if(t.length<2)return!1;let n=Gg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>U(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!jg(e))continue;let t=E(e),i=F.triage.get(t);Ng(e,i)!==n&&(n===`ignored`&&o(e,On())||n!==`ignored`&&i?.ignoredReports?.length||C(F.triage,t,{triage:n})&&(r=!0))}return r}var Qg=null;function $g(){Qg=null}function e_(e,t=!1,n=!1){let r=F.reports,i=F.workspaceMerges,a=I();if(!Qg||Qg.reports.length!==r.length||Qg.reports.some((e,t)=>e!==r[t])||Qg.merges!==i||Qg.mergeCount!==i.length||Qg.securityLinksTick!==F.linksTick||Qg.findingIndexTick!==F.findingIndexTick||Qg.managed!==a){let e=r.flatMap(e=>e.groups??[]);Si(e,gg(e)),Qg={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:F.linksTick,findingIndexTick:F.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return Qg[o]||(Qg[o]=pg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),Qg[o]}function t_(){return e_(F.showRevalidation!==!1).groups}function n_(){return e_(!0).groups}function r_(){return e_(!0,!1,!!F.currentWorkspace).conflicts}function i_(){let e=e_(F.showRevalidation!==!1,F.upstreamOnly===!0,!!F.currentWorkspace),t=e.groups;if(F.showRevalidation===!1||F.upstreamOnly)return t;if(F.currentWorkspace){let n=wg();return(!e.linkedGroups||e.linksTick!==F.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=Sg(t,fd,Fg,Pg),e.linksTick=F.linksTick,e.linkedDetailed=n),e.linkedGroups}return wg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Ir(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=H(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function a_(){let e=i_();if(F.viewMode===`kanban`)return e;let t=e.filter(e=>Gg(e).commonTriage===F.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function o_(e){if(F.showRevalidation||F.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(E)),n=new Map;for(let e of n_())for(let r of fg(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 s_(e){let t=yg()?.group;if(t&&H(t)===e)return t;for(let t of i_())if(H(t)===e)return t;return null}function c_(){let e=new Set;if(F.currentWorkspace||!dd())return e;let t=F.currentFile??F.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of F.reports)if(e.fileName===t)for(let t of e.groups)for(let e of t)e.id!=null&&n.add(String(e.id));for(let r of n)fd(r).some(e=>!n.has(e)&&Zd(e).some(e=>e!==t))&&e.add(r);return e}var l_=`\0`,u_=`\x01`,d_=`\x02`;function f_(e){return Vi(e.model)||null}function p_(e){let t=S_();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===l_?null:t.filterAnalyzer)||t.filterModel&&f_(e)!==(t.filterModel===d_?null:t.filterModel))}function m_(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 h_(e){let t=new Set;for(let n of e)for(let e of n)t.add(m_(e));return t}function g_(){F.filterSeverities=new Set,F.filterColors=new Set,F.filterSources=new Set,F.filterAnalyzer=``,F.filterModel=``,F.filterRepo=``,F.filterConfMin=0,F.filterConfMax=10,F.filterInclude=``,F.filterIncludeNegate=!1,F.filterComment=``,F.filterFix=``,F.filterFlagged=``,F.filterDuplicates=``,F.filterCrossContext=``,F.filterAppStacked=``,F.filterSecurity=``,F.filterRevalidate=``,F.filterPartial=``,F.sortBy=`severity`}var __=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function v_(){let e={};for(let t of __){let n=F[t];e[t]=n instanceof Set?new Set(n):n}return e}var y_=null;function b_(e){y_=e}function x_(){y_=null}function S_(){return y_??F}function C_(e){return Or(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function w_(e){let t=dr(`confirmed`,``);return e.some(e=>t.includes(C_(e)))}function T_(e,t){let n=e.map(Pg).filter(e=>e.length>0);return br(n,t,yr(e,Pg,Or),Or)?`confirmed`:``}function E_(e,t=Pg){return _r(e,t)}function D_(e,{tabs:t=Pg,kindOf:n=Or,severityMode:r=F.severityMode}={}){return Sr(e,{tabs:t,kindOf:n,severityMode:r})}function O_(e){return F.showRevalidation===!1||F.upstreamOnly||wg()?!1:D_(e)}function k_(e,{resetSort:t=!0}={}){F.filterConfMin=E_(e),F.filterConfMax=10,F.filterRevalidate=T_(e,F.filterConfMin),F.filterPartial=``,t&&(F.sortBy=A_(e)?`priority-desc`:`severity`)}function A_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(j_(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&&Ir(e))})}function j_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Ir)?0:void 0}function M_(e){let t=S_();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&kn(e.file)||!n&&!kn(e.file))return!1}if(t.filterRevalidate){let n=dr(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(C_(e)))return!1}if(!t.filterRevalidate){let n=Lr(e)?0:pr(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 N_={raw:``,inc:``,idWords:[]};function P_(e){if(N_.raw!==e){let t=e.toLowerCase();N_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return N_}function F_(e){if(!M_(e))return!1;let t=S_(),{inc:n,idWords:r}=P_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(Ii(e,F.severityMode)))return!1;if(t.filterColors.size>0){let n=U(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!p_(e)||t.filterRepo&&m_(e)!==(t.filterRepo===u_?null:t.filterRepo))return!1;if(n){let i=U(e),a=Nn(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 I_(e){let t=S_();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(U(e)));if(t.filterComment){let e=n(e=>!!e?.comment);if(t.filterComment===`with`?!e:e)return!1}if(t.filterFix){let n=e.some(e=>!!(U(e)?.fix||rg(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 L_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!sf(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function R_(){return F.showRevalidation!==!1&&!F.upstreamOnly}function z_(e){if(R_())return!1;let t=Pg(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=m_(e);t&&n.add(t);let i=L_(e);i&&r.add(i)}return n.size>1||r.size>1}function B_(e){if(!R_()||Pg(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function V_(e){return e.some(e=>e.isSecurity===!0)}function H_(e){return e.some(V_)&&e.some(e=>!V_(e))}function U_(e){return e.filter(e=>e.some(M_)).map(Pg)}function W_(e){let t=!F.currentWorkspace&&S_().filterDuplicates,n=t?c_():null,r=S_().filterCrossContext,i=S_().filterAppStacked,a=S_().filterSecurity;return e.filter(e=>e.some(F_)&&I_(e)&&(!t||t===`with`===e.some(e=>n.has(E(e))))&&(!r||r===`with`===z_(e))&&(!i||i===`with`===B_(e))&&(!a||a===`with`===V_(e)))}function G_(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 K_(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 q_=K_(`desc`),J_={severity:(e,t)=>(Mi[Ii(t,F.severityMode)]||0)-(Mi[Ii(e,F.severityMode)]||0)||q_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":q_,"confidence-asc":K_(`asc`),"priority-desc":G_(`priority`,`desc`),"priority-asc":G_(`priority`,`asc`)};function Y_(e){let t=J_[F.sortBy];if(!t)return[...e];if(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`){let t=F.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:j_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Lg(e.g).file.localeCompare(Lg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Lg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var X_=ji;function Z_(e){return e==null?`(none)`:X_[e]??e}function Q_(e){return e??`(no model)`}var $_=class extends Jh{static properties={analyzers:{attribute:!1},models:{attribute:!1},groups:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.analyzers=[],this.models=[],this.groups=[],this._open=!1}render(){let e=this.analyzers.length>1,t=this.models.length>1;if(!e&&!t)return M;let n=F.filterAnalyzer===``?void 0:F.filterAnalyzer===l_?null:F.filterAnalyzer,r=F.filterModel===``?void 0:F.filterModel===d_?null:F.filterModel,i=new Map,a=new Map;for(let e of this.groups){let t=new Set,o=new Set;for(let i of e){let e=i._analyzer??null,a=f_(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:Z_(n),s=r===void 0?null:Q_(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return A`<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:l_,labelOf:Z_,counts:i,current:F.filterAnalyzer}):M} ${e&&t?A`<div class="analyzer-menu-sep"></div>`:M} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:d_,labelOf:Q_,counts:a,current:F.filterModel}):M}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return A`<div class="analyzer-menu-col" role="group" aria-label="${`Filter by ${e}`}"><div class="analyzer-menu-head">${t}</div><button type="button" aria-pressed="${String(s===``)}" class="${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 A`<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`?F.filterAnalyzer:F.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:F.filterAnalyzer,model:e===`model`?r:F.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,$_);var ev=0,tv=new AbortController;function W(){return ev}function nv(){return tv.signal}function rv(){return tv.abort(),tv=new AbortController,++ev}var iv=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function av(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(iv(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=iv(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var ov=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`add`,label:`add`,subtitle:`Manually added files`}];function sv(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=>!ov.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...ov.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 cv=class extends _a{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value=``,this.label=`Choose scope`}_select(e){this.dispatchEvent(new CustomEvent(`scope-change`,{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(e=>e.id!==`all`);if(e.length===0)return M;let t=sv(e);if(!t)return A`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${Ue(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>A`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return A`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>A`<label class="scope-option"><input type="radio" name="scope" value="${e.id}" .checked="${n.id===e.id}" @change="${()=>this._select(e.id)}"><span>${e.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${n.subtitle}</span></div>`}static styles=ha`: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`,cv);var lv=6,uv=14,dv=2,fv=24,pv=4,mv=1.5,hv=new Map,gv=new Map,_v=`treemap`,vv=``;function yv(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 bv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function xv(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=bv(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 Sv(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())Sv(t)}function Cv(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+=Cv(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 wv(e,t,n,r){let i=new Set(e).size===1?av(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 Tv(e,t,n,r,i,a,o){if(r<pv||i<pv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<lv&&r>=fv&&i>=fv&&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>=uv+pv+dv?uv:0,c=t+dv,l=n+s,u=r-dv*2,d=i-s-dv;if(u<pv||d<pv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of xv(f,{x:c,y:l,w:u,h:d}))Tv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function Ev(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function Dv(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+Dv(r,t-1);e>n&&(n=e)}return n}function Ov(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 kv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Av=class extends _a{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=_v,this._reason=``,this._kind=vv,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=gv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;N(A`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?A`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${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=Bt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=Ce(this.details,t),this._reasons.has(this._reason)||(this._reason=``,gv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Ut(this.details),i=Vt(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}=Mn(t),u=t.map(e=>Jr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=wv(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())Sv(e);let h=new Map;Cv(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?hv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):hv.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?hv.set(e,t):hv.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`,_v=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,vv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?gv.set(t,this._reason):gv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return A`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${w({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:Dr(),label:null,named:!1}:{color:Tr(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Jr(e.path);return{color:kr(t),label:Xr(t),named:e.pkg!=null}}_cell(e){let t=Ev(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return A`<div class="bundle-treemap-node bundle-treemap-dir" style="${D(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${jn(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:yv(i)}),s=a??M;return e.kind===`agg`?A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-agg" style="${o}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${jn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-label">${e.node.name}/</span></div>`:A`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?M:e.node.origPath}" data-tt-path="${e.node.path}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${jn(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=Ev(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??M;if(e.isFile)return j`<path
|
|
6
|
-
class="bundle-treemap-node bundle-treemap-arc"
|
|
7
|
-
d=${t}
|
|
8
|
-
fill=${i}
|
|
9
|
-
data-bundle-view-source=${e.resource?M:e.origPath}
|
|
10
|
-
data-tt-path=${e.path}
|
|
11
|
-
data-tt-pkg=${s}
|
|
12
|
-
data-tt-color=${i}
|
|
13
|
-
data-tt-meta=${`${jn(e.value)} \xB7 ${r}% of bundle`}
|
|
14
|
-
></path>`;let c=`${e.count} ${e.count===1?`file`:`files`}`;return j`<path
|
|
15
|
-
class="bundle-treemap-node bundle-treemap-arc"
|
|
16
|
-
d=${t}
|
|
17
|
-
fill=${i}
|
|
18
|
-
data-treemap-into=${e.path}
|
|
19
|
-
data-tt-path=${`${e.path}/`}
|
|
20
|
-
data-tt-pkg=${o?s:M}
|
|
21
|
-
data-tt-color=${o?i:M}
|
|
22
|
-
data-tt-meta=${`${jn(e.value)} \xB7 ${c} \xB7 ${r}%`}
|
|
23
|
-
></path>`}_renderSunburst(e){let t=this._w,n=this._h,r=t/2,i=n/2,a=Math.min(t,n)/2-6;if(a<30)return M;let o=Dv(e,lv),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>=mv&&(u.push(this._arc(t,Ov(r,i,f,h,m,m+n),l)),!t.isFile&&a<o&&t.children.size>0&&d(t,m,m+n,a+1)),m+=n}};d(e,-Math.PI/2,Math.PI*1.5,1);let f=this._focus.length>0,p=Math.max(s-4,10),m=f?j`<circle
|
|
24
|
-
class="bundle-treemap-node bundle-treemap-center"
|
|
25
|
-
cx=${r} cy=${i} r=${p}
|
|
26
|
-
data-treemap-into=${e.parent.path}
|
|
27
|
-
data-tt-path=${`${e.path}/`}
|
|
28
|
-
data-tt-meta=${`${jn(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${Ev(e.value,l)}%`}
|
|
29
|
-
></circle>`:j`<circle class="bundle-treemap-center" cx=${r} cy=${i} r=${p}></circle>`,h=j`<text class="bundle-treemap-center-label" x=${r} y=${i} text-anchor="middle">
|
|
30
|
-
${f?j`<tspan x=${r} dy="-0.3em">${kv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${jn(e.value)}</tspan>`:j`<tspan x=${r} dy="0.35em">${jn(e.value)}</tspan>`}
|
|
31
|
-
</text>`;return A`<svg class="bundle-treemap-sunburst" width="${t}" height="${n}" viewBox="${`0 0 ${t} ${n}`}">${u}${m}${h}</svg>`}render(){let e=this._focusNode,t=this._mode===`sunburst`,n=this._status===`ok`&&e&&e.children&&this._w>0&&this._h>0,r=[];if(n&&!t){let t=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of xv(t,{x:0,y:0,w:this._w,h:this._h}))Tv(e.node,e.x,e.y,e.w,e.h,1,r)}let{prefix:i}=this._meta,a=e?e.count:0,o=e?e.value:0;return A`<header class="bundle-treemap-head">${this._renderCrumbs()} <span class="bundle-treemap-head-right"><span class="bundle-treemap-sub">${a} ${a===1?`file`:`files`} · ${jn(o)}${i?A` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?A`<bundle-scope-selector compact="compact" .reasons="${[...this._reasons.keys()].map(e=>({id:`reason:${e}`,label:e}))}" .value="${this._reason?`reason:${this._reason}`:``}" label="Filter files" @scope-change="${this._changeReason}"></bundle-scope-selector>`:M} ${this._mixedKinds?A`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:M}<mode-switch compact="compact" label="Sunburst" .checked="${t}" accessible-label="Toggle sunburst view" @click="${this._toggleMode}"></mode-switch></span></header><div class="bundle-treemap-plot" @click="${this._onPlotClick}" @pointermove="${this._onPointerMove}" @pointerleave="${this._onPointerLeave}">${this._status===`loading`?A`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?A`<div class="bundle-treemap-empty">${!this._mixedKinds||!this._kind?`This bundle doesn't carry any source content.`:this._kind===`code`?`No code here, only resources.`:`No resources here, only code.`}</div>`:t?n?this._renderSunburst(e):M:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,Av);function jv(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&jv(t.shadowRoot))return!0;return!1}var Mv=`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
|
-
`,Nv=class extends _a{static styles=[ma(Mv)];exclusive=!1;firstUpdated(){cr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&jv()){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 Pv(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 Fv(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(ih(e.detail?.cause))}),document.body.append(a)})}var Iv=`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
|
-
`,Lv=class extends Nv{static styles=[...Nv.styles,ma(Iv)];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 Fo({signal:this._abortController.signal})){this._finish(!0);return}this._error=``}catch(e){this._error=e?.message??String(e)}finally{this._busy=!1,this._abortController=null}}};render(){return A`<dialog @close="${this._onClose}"><header><h3>Unlock your data</h3></header><p class="nwd-note ui-hint">Your triage data and report files are encrypted with a passkey on this device. Unlock to load them.</p>${this._error?A`<p class="wsl-error">${this._error}</p>`:M}<footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">${this._busy?`Cancel`:`Later`}</button> <button type="button" class="primary" ?disabled="${this._busy}" @click="${this._onUnlock}">${this._busy?`Waiting…`:`Unlock with passkey`}</button></footer></dialog>`}};customElements.define(`passkey-unlock-dialog`,Lv);function Rv(){return Pv(`passkey-unlock-dialog`)}var zv=`deepviewManagedNavigation`,Bv=`deepviewManagedLoginFinding`;function Vv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Hv(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 Uv(e){let t=e.location.hash,n=We(t),r=!1,i=null,a=0,o=null,s=null,c=!1,l=null,u=null,d=null;function f(){return e.location.hash.startsWith(`#public=`)&&e.location.hash!==t}function p(e){let t=pi(e),n=t?.view===`home`?Ur(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Bv);if(e.sessionStorage?.removeItem(Bv),!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||!Ur(e.location.hash)||l===e.location.href||e.history.state?.[zv]&&e.history.state[zv]!==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=x(t,n),e.history.replaceState(r?{[zv]: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=ci(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=ci(_)??d),Vv(m.findingRoute,typeof _==`object`?_:t)&&(d=ci(m.findingRoute)),Hv(m.codeRoute,typeof _==`object`?_:t)&&(d=ci(m.codeRoute)),u=null,l||c||m.shown?g(d):x(d,n)!==s&&(d=x(d,n),e.history.pushState({[zv]: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?.[zv]&&g(`/`);return}if((!t.state?.[zv]||t.state[zv]===i)&&Ur(e.location.hash)){h();return}if(!t.state?.[zv]){let t=p(new URL(e.location.href)),n=s==null?null:pi(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Hv(t,n)){g(ci(t));return}}_((t.state?.[zv]===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`?`/#${Vr(t.finding)}`:ci(t);try{e.sessionStorage?.setItem(Bv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[zv]==`string`?e.history.state[zv]: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=ci(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||Vv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}Vv(t,pi(new URL(e.location.href)))&&x(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=ci(t);if(i!=null){if(u){Hv(t,u.route)&&(u.codeRoute=t);return}Hv(t,pi(new URL(e.location.href)))&&x(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=x(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[zv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=ci(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=ci(t);if(o==null)return;let c=u!==null;++a,u=null,o=x(o,n),o!==s&&(e.history.pushState({[zv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Bv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var G=typeof window>`u`?null:Uv(window);function Wv(e){return I()&&!F.managedSession?.publicShare&&et(F.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Gv(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 Kv=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=Gv(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&&eg(e);if(!n)return null;let r=tg(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=eg(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?Yh(e.stateReason):null;this.entries.set(tg(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()}},qv=new Set,Jv=new Kv({context:()=>{let e=F.managedSession;return I()&&e?.id&&F.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:F.currentManagedTeam,reportId:F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,teams:F.managedTeams}:null},fetchWorkspace:fx,changed:()=>{for(let e of qv)e()}});function Yv(e){return qv.add(e),()=>qv.delete(e)}function Xv(){Jv.reset();for(let e of qv)e()}function Zv(e){F.currentManagedTeam===e&&Xv()}function Qv(e,t,n){if(F.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:F.managedIssues.get(e)}));r.some(({id:e,issue:t})=>n.has(e)&&t?.url!==n.get(e).url)&&Zv(e);for(let{id:e,issue:t}of r)t?.url&&!n.has(e)&&Jv.read(t.url,{refreshIfMissing:!0}),t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Jv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Jv.read(i)}var $v={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`]}},ey=Object.entries($v),ty=new Map;for(let[e,{accounts:t}]of ey)for(let{id:n,logins:r}of t)for(let t of r)ty.set(t.toLowerCase(),{agent:e,ids:[...ty.get(t.toLowerCase())?.ids??[],n]});var ny=new Map(ey.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),ry=new Map(ey.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(ey.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function iy(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?ry.get(n.trim().toLowerCase())??null:null;let r=ty.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:ny.get(t)??null}function ay(e,t){let n=new Set([...t].map(t=>iy(e,t)));return n.size===1&&!n.has(null)}var oy=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),sy=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,cy=8,ly=e=>Number.isSafeInteger(e)&&e>0?e:null;function uy(e){let t=new Map;dy(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,ay(e,t)?null:`ambiguous`]}))}function dy(e,t,n){if(n>cy||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)dy(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=oy.get(e);if(a&&typeof i==`string`&&sy.test(i)){let e=ly(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else dy(i,t,n+1)}}var fy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,py=A`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`,my=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`,hy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,gy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`,_y=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,vy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,yy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`,by=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m12.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>`,xy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="#FF7764" d="M7.52 2a4.47 4.47 0 0 0 8.96 0h4.55A9 9 0 0 1 12 10.98 9 9 0 0 1 2.98 2z"/><path fill="#FF563F" d="M16.48 22a4.47 4.47 0 0 0-8.96 0H2.98A9 9 0 0 1 12 13.02 9 9 0 0 1 21.03 22z"/></svg>`,Sy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`,Cy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`,wy=e=>A`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,Ty=wy(Xi),Ey=wy(Zi),Dy={anthropic:Ty,deepseek:fy,"github-copilot":A`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Qi}"></path></svg>`,google:py,meta:hy,mistralai:gy,moonshot:_y,moonshotai:_y,nvidia:vy,openai:Ey,openrouter:yy,qwen:by,unbiased:xy,xiaomi:Sy,"x-ai":my,"z-ai":Cy},Oy=A`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function ky(e){return Object.hasOwn(Dy,e)?Dy[e]:Oy}var Ay=new Map,jy=new Map,My=new Set;function Ny(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of uy(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&jy.has(n)&&jy.get(n)!==t&&!ay(e,[t,jy.get(n)])?My.add(n):t!==null&&jy.set(n,t),(!Object.hasOwn(r,e)||My.has(n))&&Ay.delete(n)}for(let[e,t]of Object.entries(r))My.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn($v,t.agent)?Ay.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?Ay.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):Ay.delete(e.toLowerCase()));return e}var Py=0;function Fy(){Ay.clear(),jy.clear(),My.clear(),Vy.clear(),Hy.clear(),Py++}async function Iy(e){let t=Py,n=By,r=await e();return t!==Py||(Ny(r),n!==By&&Wy(zy.userId,zy.profile)),r}var Ly=new Map;function Ry(e){globalThis.fetch(`/api/avatar/${encodeURIComponent(e)}`,{cache:`reload`,credentials:`same-origin`}).catch(()=>{})}var zy=null,By=0,Vy=new Set,Hy=new Set;function Uy(e,t,n=!1,r=null){n&&(Ly.set(e,(Ly.get(e)??0)+1),Ry(e)),r&&Vy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Hy.add(r.githubId),zy={userId:e,profile:t},By++,Wy(e,t)}function Wy(e,t){for(let[n,r]of Ay)r.id===e&&((jy.has(n)?Hy.has(jy.get(n)):Vy.has(n))?Ay.delete(n):Ay.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function Gy(e){let t=typeof e==`string`?Ay.get(e.toLowerCase()):null;return t?.id?t:null}var Ky=e=>Ay.get(e.toLowerCase())?.agent??null,qy=e=>A`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Jy=e=>qy(`/api/avatar/${encodeURIComponent(e.id)}${Ly.has(e.id)?`?v=${Ly.get(e.id)}`:``}`);function Yy(e,t){let{name:n,mark:r,avatar:i}=$v[e];return A`<span class="app-user" data-tooltip="${t}">${r||i?A`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?ky(r):qy(`/api/avatar/${i}`)}</span>`:A`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Xy(e){let t=typeof e==`string`?Ky(e):null;if(t)return $v[t].name;let n=Gy(e);return n?n.name??n.login:e}function Zy(e,t=e){let n=typeof e==`string`?Ky(e):null;if(n)return Yy(n,`@${e} on GitHub`);let r=Gy(e);return r?Qy(r,e):t}function Qy(e,t=e.login){return A`<span class="app-user" data-tooltip="${`@${t} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(e.name??e.login)[0].toUpperCase()}${Jy(e)}</span><span class="app-user-name">${e.name??e.login}</span></span>`}function $y(e){let t=new Map;for(let n of e){let e=Ky(n),r=e?`agent:${e}`:Gy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function eb(e,t=null){return typeof e==`string`?Ky(e):iy(null,null,t)}function tb(e,t=null,n=t??e??``){if(typeof e==`string`)return Zy(e,n);let r=eb(null,t);return r?Yy(r,t):n}function nb(e,t=null){if(typeof e==`string`)return Xy(e);let n=eb(null,t);return n?$v[n].name:t}var rb=3,ib=e=>typeof e==`string`&&Object.hasOwn($v,e)?e:null,ab=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function ob({login:e=null,name:t=null,agent:n=null}){let r=ib(n)??eb(e,t);if(r){let{name:e,mark:t,avatar:n}=$v[r];return A`<span class="${`commit-avatar is-${r}`}">${t?ky(t):n?qy(`/api/avatar/${n}`):e[0]}</span>`}let i=Gy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return A`<span class="commit-avatar">${a}${i?Jy(i):M}</span>`}function sb(e,t,n=null){return ib(n)&&t?t:typeof e==`string`&&(Gy(e)||Ky(e))?Xy(e):t??nb(e,t)??e??``}function cb(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,rb);if(r.length===0)return tb(e,t);let i=sb(e,t),a=r.map(e=>sb(e.login??null,e.name??null,e.agent));return A`<span class="app-user commit-authors" data-tooltip="${ab([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(ob)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${ab(a)}</span></span>`}var lb=null,ub=null;function db(){return ub?.getPreviewRole()??null}function fb(){ub?.setPreviewRole(null)}function pb(){Fy(),mb=null,ub?.resetManagedAppState()}var mb=null;function hb(e){let t=e?`${e.id}\0${e.role}`:null;t!==mb&&(Fy(),mb=t),ub?.setManagedAppSession(e)}function gb(e){return ub?.setManagedReportCatalog(e)??new Set}function _b(e,t=F.currentManagedTeam){return ub?.readReportSources(e,t)}function vb(){ub?.clearReportSources(),ub?.clearFindingHistory()}async function yb(e,t=F.currentManagedTeam){return(await K()).fetchReportSources(e,t)}function K(){return lb||(lb=(async()=>{try{return ub=await import(`./client-managed.js`),ub}catch(e){throw lb=null,e}})(),lb)}async function bb(e){return(await K()).probeSession(e)}async function xb(e){return(await K()).probeTeams(e)}async function Sb(e){return(await K()).fetchManagedBundleCatalog(e)}async function Cb(e,t,n){return(await K()).fetchNpmPackage(e,t,n)}async function wb(e,t,n,r){return(await K()).fetchRepositoryCode(e,t,n,r)}async function Tb(e){return(await K()).fetchBrowsableRepositories(e)}async function Eb(e,t){return(await K()).fetchRepositoryRefs(e,t)}async function Db(e,t,n,r){return(await K()).fetchRepositoryContents(e,t,n,r)}function Ob(e,t,n,r){return Iy(async()=>(await K()).fetchRepositoryHistory(e,t,n,r))}async function kb(e,t,n,r){return(await K()).fetchRepositoryChanges(e,t,n,r)}async function Ab(e,t,n,r){return(await K()).fetchRepositoryTree(e,t,n,r)}async function jb(e,t,n){(await K()).prefetchActivity(e,t,n)}function Mb(e,t){return Iy(async()=>(await K()).fetchRepositoryAgents(e,t))}function Nb(e,t,n){return Iy(async()=>(await K()).fetchRepositoryIssues(e,t,n))}function Pb(e,t,n){return Iy(async()=>(await K()).fetchRepositoryItem(e,t,n))}async function Fb(e,t,n){return(await K()).fetchPullDependencies(e,t,n)}async function Ib(e,t,n){return(await K()).fetchPullDependenciesOf(e,t,n)}async function Lb(e,t,n){return(await K()).fetchTeamDependencies(e,t,n)}async function Rb(e,t,n){return(await K()).fetchNpmDeltas(e,t,n)}function zb(e,t,n){return Iy(async()=>(await K()).fetchRepositoryPulse(e,t,n))}function Bb(e,t,n,r){return Iy(async()=>(await K()).fetchRepositoryPulseItems(e,t,n,r))}async function Vb(e,t){return(await K()).fetchNpmVersions(e,t)}async function Hb(e,t){return(await K()).fetchNpmStats(e,t)}async function Ub(e,t){return(await K()).fetchNpmAdvisories(e,t)}async function Wb(e,t,n){return(await K()).fetchNpmTags(e,t,n)}async function Gb(e,t,n,r){return(await K()).fetchNpmRisk(e,t,n,r)}async function Kb(e,t,n){return(await K()).fetchNpmSocket(e,t,n)}async function qb(e,t,n){return(await K()).fetchNpmProvenance(e,t,n)}async function Jb(e,t,n,r){return(await K()).fetchPrettyBundleFile(e,t,n,r)}async function Yb(e,t,n,r){return(await K()).fetchPrettyNpmFiles(e,t,n,r)}async function Xb(e,t,n,r,i){return(await K()).fetchPrettyNpmFile(e,t,n,r,i)}async function Zb(e,t,n,r){return(await K()).fetchPrettyBundleChanges(e,t,n,r)}async function Qb(e,t,n,r,i){return(await K()).fetchPrettyNpmChanges(e,t,n,r,i)}async function $b(e,t,n,r){return(await K()).fetchBundleRenameDiff(e,t,n,r)}async function ex(e,t,n,r,i){return(await K()).fetchNpmRenameDiff(e,t,n,r,i)}async function tx(e,t,n,r){return(await K()).fetchBundleRenameDiffs(e,t,n,r)}async function nx(e,t,n,r,i){return(await K()).fetchNpmRenameDiffs(e,t,n,r,i)}async function rx(e,t,n,r){return(await K()).fetchBundleTypeOnly(e,t,n,r)}async function ix(e,t,n,r,i){return(await K()).fetchNpmTypeOnly(e,t,n,r,i)}async function ax(e,t,n){return(await K()).fetchBundleComparison(e,t,n)}async function ox(e,t,n,r){return(await K()).fetchNpmComparison(e,t,n,r)}async function sx(e){return(await K()).openManagedShareDialog(e,``,F.managedSession)}async function cx({render:e,...t}){let n=()=>F.managedSession?.id===t.session.id&&F.managedSession?.csrfToken===t.session.csrfToken&&F.currentManagedTeam===t.teamId,r=await K();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=F.managedIssues.get(i),o=ag([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});Zv(t.teamId),o&&e()}}):null}async function lx(e){if(!Wv(e))return null;let t=F.reports,n=F.managedSession,r=F.currentManagedTeam,i=()=>Wv(e)&&F.managedSession===n&&F.currentManagedTeam===r&&F.reports===t,a=await K();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function ux(e,t){return(await K()).fetchTeamAnnotations(e,t)}async function dx(e,t=F.currentManagedTeam,n){return(await K()).fetchReportTriage(e,t,n)}async function fx(e,t,n){return(await K()).fetchFixes(e,t,n)}async function px(e,t=F.currentManagedTeam,n){return(await K()).fetchReportComments(e,t,n)}async function mx(e,t,n,r=F.currentManagedTeam){return(await K()).saveReportComment(e,t,n,r)}async function hx(e,t,n,r,i=F.currentManagedTeam){return(await K()).deleteReportComment(e,t,n,r,i)}async function gx(e,t,n,r=F.currentManagedTeam){return(await K()).pushReportTriage(e,t,n,r)}async function _x(e){return e&&G?.rememberFinding(),(await K()).login(e)}async function vx(e){return(await K()).logout(e)}async function yx(e){return(await K()).stopViewing(e)}async function bx(e){return(await K()).fetchProfile(e)}async function xx(e,t,n){return(await K()).chooseProfileAccounts(e,t,n)}async function Sx(e,t,n){return(await K()).unlinkGithubAccount(e,t,n)}async function Cx(e,t){return(await K()).fetchBundleMetadata(e,t)}async function wx(e,t){return(await K()).fetchBundleContents(e,t)}async function Tx(e,t){return(await K()).fetchTeamReports(e,t)}async function Ex(e,t){return(await K()).fetchTeamTrees(e,t)}async function Dx(e,t){return(await K()).watchTeamFeed(e,t)}async function Ox(e,t=F.currentManagedTeam,n=``,r=!1,i=!1){return(await K()).fetchBundleAdvisories(e,t,n,r,i)}async function kx(...e){return(await K()).dependencyReviews(...e)}async function Ax(...e){return(await K()).myDependencyReviews(...e)}async function jx(...e){return(await K()).teamDependencyReviews(...e)}async function Mx(...e){return(await K()).discardDependencyReview(...e)}async function Nx(...e){return(await K()).latestDependencyReview(...e)}var Px=null,Fx=null,Ix=0;function Lx(){return Px||(Px=document.createElement(`div`),Px.id=`app-toast`,Px.setAttribute(`role`,`status`),Px.setAttribute(`aria-live`,`polite`),document.body.append(Px),Px)}function Rx(e,{kind:t=`info`,duration:n=5200}={}){let r=Lx(),i=++Ix;clearTimeout(Fx),Fx=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{Ix===i&&r.classList.add(`visible`)});let a=()=>{Ix===i&&zx()};return n>0&&(Fx=setTimeout(a,n)),a}function zx(){Ix++,Px&&(clearTimeout(Fx),Fx=null,Px.classList.remove(`visible`))}function Bx(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 Vx(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 Hx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Ux(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 hi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Wx(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=Lt(Ft(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 Gx(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,...ai(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ai(n.mode)}:null;let i=Bx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ai(n.mode)}:null}function Kx(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,...ai(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Wx(e,t)??Gx(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=Kx(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 Jx(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Vx(e)])).values()]}function Yx(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 Xx(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=Hx(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=Jx(t);else if(s)try{c=(await n()).map(Vx)}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(Ux(t,u,e.currentManagedTeam,e.bundleDetailsTab,Kx(e),c)),!0):!1}var Zx={...it,[d]:ia},Qx=new Set(Object.keys(ji)),$x={...ji,default:`DeepView`};function eS(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(ot,t)?t:null}function tS(e){return nS(e,Hu(e))}function nS(e,t){if(t===d)return d;if(t!==void 0)return Qx.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 rS(e){return Hu(e)===d}var iS=`.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
|
-
`,aS=`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 oS({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return A`<div class="dlg-tabs" role="tablist" @keydown="${i=>{if(i.key!==`ArrowLeft`&&i.key!==`ArrowRight`)return;i.preventDefault();let a=e[(e.findIndex(e=>e.id===t)+(i.key===`ArrowRight`?1:-1)+e.length)%e.length];if(!a||a.id===t)return;let o=i.currentTarget;r(a.id),requestAnimationFrame(()=>o.querySelector(`#${n}-tab-${a.id}`)?.focus())}}">${e.map(e=>A`<button type="button" role="tab" class="dlg-tab" id="${`${n}-tab-${e.id}`}" aria-controls="${`${n}-panel-${e.id}`}" aria-selected="${String(t===e.id)}" tabindex="${t===e.id?0:-1}" ?disabled="${i&&t!==e.id}" @click="${()=>r(e.id)}">${e.icon??M}${e.label}</button>`)}</div>`}function sS(e){if(!e)return M;let t=e.replaceAll(`_`,` `);return A`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function cS(e){return`bundle-${e.slice(7,19)}\u2026`}function lS(e){return e.kind===`bundle`?e.label??cS(e.identifier):e.identifier}function uS(e){return e.kind===`bundle`?`bundle`:rS(e.identifier)?`links file`:`report`}function dS(e){let t=e.length,n=t===1,r=new Set(e.map(uS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function fS(e){return A`<ul class="lwd-list">${e.map(e=>{let t=uS(e);return A`<li>${lS(e)}${t===`report`?M:A`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function pS(e){return e.length===0?M:A`<ul class="lwd-list" role="alert">${e.map(e=>A`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function mS(e){return e?A`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:A`<em>none</em>`}function hS(e){return A`<span class="comment-text">${e||A`<em>empty</em>`}</span>`}function gS(e){return e?_i(e)?A`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:A`<span class="fix-text">${e}</span>`:A`<span class="comment-text"><em>empty</em></span>`}function _S(e){return e?A`<span class="${`triage triage-${e}`}">${e}</span>`:A`<em>none</em>`}function vS(e){return e?A`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:A`<em>none</em>`}function yS(e,t){return e===`color`?mS(t):e===`comment`?hS(t):e===`fix`?gS(t):e===`triage`?_S(t):e===`flagged`?vS(t):A`${String(t)}`}function bS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return A`<div class="card-head">${sS(e?.severity)} ${n?A`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:M} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?A`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:M}`}var xS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},SS={color:0,comment:1,fix:2,triage:3,flagged:4},CS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},wS=class extends Nv{static styles=[...Nv.styles,ma(iS),ma(aS)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...xS},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)=>(SS[e.property]??99)-(SS[t.property]??99));let n=this.conflicts.filter(e=>e.property===`color`).length,r=this.conflicts.filter(e=>e.property===`comment`).length,i=this.conflicts.filter(e=>e.property===`fix`).length,a=this.conflicts.filter(e=>e.property===`triage`).length,o=this.conflicts.filter(e=>e.property===`flagged`).length,s=[n?`${n} color${n===1?``:`s`}`:``,r?`${r} comment${r===1?``:`s`}`:``,i?`${i} fix${i===1?``:`es`}`:``,a?`${a} triage state${a===1?``:`s`}`:``,o?`${o} flag${o===1?``:`s`}`:``].filter(Boolean).join(`, `),c=`${t.size} finding${t.size===1?``:`s`}`;return A`<dialog @click="${this._onClick}" @cancel="${this._blockEscClose}" @close="${this._onClose}"><header><h3>${e.title}</h3><p>${c} ${e.intro} ${s}.${e.trailingNote?` ${e.trailingNote}`:``}</p><div class="bulk"><button type="button" data-bulk="local">Keep all current</button> <button type="button" data-bulk="imported">${e.importedSideLabel} (all)</button></div></header><form @submit="${this._onSubmit}"><ul class="list">${[...t.entries()].map(([t,n])=>A`<li class="card" data-id="${t}">${bS(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return A`<div class="row" data-key="${n}"><span class="row-label">${CS[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">${yS(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">${yS(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`,wS);function TS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...xS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(ih(e.detail?.cause))}),document.body.append(a)})}var ES=[`type`,`model`,`effort`,`exportsMode`],DS=[`security`,`correctness`],OS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],kS=[`list`,`isolate`];function AS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var jS={type:e=>e===`terminal`?DS.length+2:AS(DS,e),model:e=>+(e==null),effort:e=>AS(OS,e),exportsMode:e=>AS(kS,e)};function MS(e,t,n){for(let r of n){let n=jS[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 NS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function PS(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 FS(e,t=ES){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Vi(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)=>MS(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`)?PS(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=NS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>NS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function IS(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 LS=null;function RS(){return LS||(LS=(async()=>await import(`./prism.js`))(),LS)}var zS=1048576;function BS(e){return e.length<=zS&&ya(e)<=zS}var VS={__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 HS(e){return typeof e==`string`?VS[e.toLowerCase()]??null:null}async function US(e,t,n=null){if(!t||!BS(e))return null;try{return(await RS()).highlight(e,t,n)}catch{return null}}function WS(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 GS=new Map,KS=new Set,qS=!1;function JS(){qS||(qS=!0,queueMicrotask(()=>{qS=!1,F.codeBlockTick++,X()}))}function YS(e,t){let n=HS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return GS.has(r)?GS.get(r):(KS.has(r)||(KS.add(r),(async()=>{let t=await US(e,n);GS.set(r,t??null),KS.delete(r),JS()})()),null)}var XS=new WeakMap,ZS=new WeakMap;function QS(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 $S(e){let t=new Map;for(let n of e.keys()){let e=QS(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function eC(e,t,n,r){let i=QS(n);if(i===null)return null;let a=typeof r==`string`?QS(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=ZS.get(e);for(s||(s=new Map,ZS.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 tC(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 nC(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=>nC(e,t,n+1)):[null]}function rC(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=QS(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(`../`))&&QS(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 iC(e,t,n,r,i,a){let o=tC(e?.imports,t);if(!o)return null;let s=nC(o.value,o.wildcard),c=null;for(let t of s){let o=rC(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function aC(e,t=Ft(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 Pt(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function oC(e,t,n=null,r=e,i=null){let a=XS.get(e);a||(a=$S(e),XS.set(e,a));let o=XS.get(r);o||(o=$S(r),XS.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?eC(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 iC(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(QS(c+t))??null}}var sC=new WeakMap;function cC(e,t){let n=Ft(e),r=sC.get(n);return r||(r={imports:aC(e,n),packageDirs:Ut(e)},sC.set(n,r)),oC(n,t,r.imports,zt(e),r.packageDirs)}var lC=/[\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,uC=new RegExp(lC.source,`gu`),dC=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}]})),fC=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function pC(e){let t=dC.get(e);if(t)return{label:t.label,title:`${fC(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${fC(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:`${fC(e)} VARIATION SELECTOR-${n}`}:{label:fC(e),title:`${fC(e)} ${_C(e)}`}}var mC=/\p{Cf}/u,hC=/\p{Default_Ignorable_Code_Point}/u,gC=/\p{Cn}/u;function _C(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 mC.test(t)?`format character`:hC.test(t)&&!gC.test(t)?`invisible character`:`unassigned code point`}function vC(e,t){let n=[];uC.lastIndex=0;for(let r=uC.exec(e);r;r=uC.exec(e)){let i=r[0].codePointAt(0),a=He(e,r.index,i,t);a===-1?n.push([r.index,i]):uC.lastIndex=a}return n}function yC(e){return lC.test(e)}var bC=e=>{let{label:t,title:n}=pC(e);return A`<span class="code-control" data-tooltip="${n}">${t}</span>`};function xC(e,t=!1){if(!yC(e))return[e];let n=[],r=0;for(let[i,a]of vC(e,t))i>r&&n.push(e.slice(r,i)),n.push(bC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var SC=e=>e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`);function CC(e,t=!1){if(!yC(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 vC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=pC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${SC(l)}">${SC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function wC(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 TC=[];function EC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!wC(e[0],n))return{stack:TC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function DC({stack:e,at:t,base:n},r){if(wC(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 OC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function kC(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 AC=new Map,jC=new Map,MC=new Set,NC=new WeakMap,PC=new Set;function FC(e,t,n,r,i,a=jC,o=MC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Nt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await US(n,c,i);a.set(s,typeof e==`string`?CC(e):null),o.delete(s),F.focusCodeTick++,queueMicrotask(X)})()}async function IC(e){let t=AC.get(e);if(t&&(t.loading||t.sources))return;let n=(F.bundles??[]).find(t=>t.integrity===e);if(n){AC.set(e,{sources:null,loading:!0,error:null});try{let t=await Tq(e,n),r=Ft(t);AC.set(e,{sources:r,packageFiles:zt(t),packageDirs:Ut(t),imports:aC(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){AC.set(e,{sources:null,loading:!1,error:t.message})}F.focusCodeTick++,queueMicrotask(X),queueMicrotask(LC)}}function LC(){let e=z.querySelectorAll(`.focus-code-line-active`);e.length!==0&&kC(e[0].closest(`.focus-code-body`),e)}function RC(e){if(I()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;F.focusCodeTick;let t=_b(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=zC(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:rp(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function zC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return ep(e.integrity,t);let n=_b(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 BC(e,t,n){if(!I())return null;let r=_b(e);if(!r||r.data===void 0&&!r.error)return n&&!PC.has(e)&&(PC.add(e),yb(e).catch(()=>{}).finally(()=>{PC.delete(e),F.focusCodeTick++,queueMicrotask(X),queueMicrotask(LC)})),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=NC.get(i);return o||(o={cache:new Map,pending:new Set},NC.set(i,o)),FC(i.integrity,t,a,i.formats?.get(t),oC(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 VC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return BC(r,t,n);if(I())return null;let i=AC.get(e);if(!i)return n?(IC(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;FC(e,t,a,i.formats?.get(t),oC(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:jC.has(o)?jC.get(o):void 0,loading:!1}}function HC(e){let t=RC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Wn(t.reportId?t.line:e.line)}:null}function UC(e){return e?HC(Bg(e)):null}function WC(e){let t=UC(e);return t?{base:t,...EC(F.focusCodeStack,F.focusCodeAt,t)}:null}function GC(e){let t=HC(e);return t?EC(F.focusCodeStack,F.focusCodeAt,t).pos:null}function KC(e,t,n,r){let i=WC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=VC(t,r,{kick:!1,reportId:Bg(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function qC(e){let t=e&&Bg(e),n=RC(t);if(n?.reportId&&!n.integrity)return BC(n.reportId,n.file,!0);let r=WC(e);if(!r)return null;let{pos:i}=r,a=VC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function JC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=E(e);if(!$r(r))return null;if(I()){let i=t?null:n??(F.currentView===`links`?e._managedReportId:F.currentManagedReport),a=ci(hi({view:`findings`,teamId:F.currentManagedTeam,reportId:i,finding:{id:r}},F.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||F.currentFile||``,a=F.currentWorkspace||YC(i);return Hr({id:r,report:F.currentWorkspace?null:Br(`report`,i),workspace:Br(`workspace`,a??``)})}function YC(e,t=F.currentReportWorkspace||F.currentWorkspace){let n=lp(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function XC(e){for(let t of[i_(),t_()])for(let n of t)for(let t of n)if(E(t)===e)return{group:n,finding:t};return null}function ZC(e,t){F.currentView=`findings`,F.viewMode===`graph`&&(F.viewMode=`table`,ir());let n=Gg(e).commonTriage;if(F.viewMode===`kanban`){let e=n??`untriaged`;F.kanbanExpandedColumn!==null&&F.kanbanExpandedColumn!==e&&(F.kanbanExpandedColumn=null)}else n!==F.shownTriage&&(F.shownTriage=n);F.upstreamOnly&&!e.every(e=>e.isUpstream)&&(F.upstreamOnly=!1),wr(F.showRevalidation,F.upstreamOnly);let r=e.find(e=>E(e)===t);if(Ir(r)||O_(a_())&&!w_(e)||!Ig(e).some(e=>E(e)===t)){if(F.currentWorkspace){r?.isUpstream?F.upstreamOnly=!0:F.showRevalidation=!1,wr(F.showRevalidation,F.upstreamOnly);let e=i_().find(e=>e.some(e=>E(e)===t));if(e)return ZC(e,t)}else F.revalidationDetailed=!0}if(W_([e]).length===0){let e=F.sortBy;g_(),F.sortBy=e}let i=H(e);return e.length>1&&F.activeTabByGroup.set(i,t),F.viewMode===`table`?F.tableSelectedGid=i:F.viewMode===`focus`?F.focusGid=i:F.viewMode===`kanban`&&(F.kanbanPopoverGid=i),i}function QC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function $C(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 ew=new Map;function tw(e,t){ew.has(e)||ew.set(e,new Set);let n=ew.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&ew.delete(e)}}function nw(e,t){F.managedComments.set(e,t);for(let t of ew.get(e)??[])t()}function rw(e){return I()?F.managedComments?.get(e?.id)??[]:[]}function iw(){return I()&&F.managedSession!=null&&et(F.managedSession.role,`triage`)}function aw(e){return iw()&&QC(e,F.managedSession)}function ow(e){let t=F.reports,n=F.managedSession?.id;return()=>I()&&n!=null&&F.managedSession?.id===n&&F.reports===t&&F.managedReports.some(t=>t.id===e)}async function sw(e,{signal:t,readAnnotations:n,except:r}={}){let i=ow(e);if(!i())return!1;let a=new Set(F.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,F.managedComments.get(e)])),s=n?(await n(e))?.comments:await px(e,F.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)F.managedComments.get(e)===o.get(e)&&!cw(o.get(e),t)&&nw(e,t);return!0}function cw(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function lw(e,t,n=null){let r=e?._managedReportId,i=ow(r);if(!i()||!iw()||n&&n.authorId!==F.managedSession.id)return{status:403};let a=await mx(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},F.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(F.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort($C),nw(e.id,t)}return a}async function uw(e,t){let n=e?._managedReportId,r=ow(n);if(!r()||!aw(t))return 403;let i=await hx(n,t.id,t.version,F.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=F.managedComments.get(e.id)??[];nw(e.id,n.filter(e=>e.id!==t.id))}return i}function dw(e,t){return e?Kr(e,A`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${Ke()?M:A`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):M}function fw(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return M;let r=new Date(n),i=[e.createdAt==null?``:`Posted ${new Date(e.createdAt).toLocaleString()}`,t?`Edited ${new Date(e.updatedAt).toLocaleString()}`:``].filter(Boolean).join(`
|
|
152
|
-
`);return A`<time class="managed-comment-time" datetime="${r.toISOString()}" data-tooltip="${i}">${e.createdAt==null?`edited `:``}${r.toLocaleString(void 0,{dateStyle:`short`,timeStyle:`short`})}${t&&e.createdAt!=null?` (edited)`:``}</time>`}function pw(e,t,n=M){let r=fw(e);return A`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?A`<span class="managed-comment-author">${dw(e.authorId,e.authorLogin)} ${e.authorLogin?A`<strong>${e.authorLogin}</strong>`:M}</span>`:M}<div class="managed-comment-body">${t}</div>${r===M&&n===M?M:A`<div class="managed-comment-meta">${n===M?M:A`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function mw(e){return rr(e,{managed:I()}).map(e=>typeof e==`string`?e:e.self?A`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var hw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><rect x="3" y="2.5" width="8" height="10" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><rect x="5.5" y="5" width="8" height="9" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,gw=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 3 5 8l5 5"/></svg>`,_w=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3 11 8l-5 5"/></svg>`,vw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3.5h12M2 8h9a2.5 2.5 0 0 1 0 5H8.5M10 11.5 8.5 13l1.5 1.5M2 13h3.5"/></svg>`,yw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M5 2h8a1 1 0 0 1 1 1v8M3 5h7a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1ZM4.5 9.5h4"/></svg>`,bw=A`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><path d="m4.5 6 2 2-2 2M8.5 10h3"/></svg>`,xw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5Z"/></svg>`,Sw=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 4.5L2 8l3.5 3.5"/><path d="M10.5 4.5L14 8l-3.5 3.5"/></svg>`;function Cw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function ww(e,{variant:t=`full`}={}){let n=F.severityMode,r=Ii(e,n),i=A`<span class="${`badge ${r}`}">${Cw(r)}</span>`,a=Fi(e),o=t===`tab`?null:Li(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${Cw(t.severity)}`).join(`; `)}`:null,c=o?A`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:M;if(!a)return A`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=Ii(e,`original`),u=Pi(e),d=e.correctedSeverityReason,f=(Mi[u]??0)>(Mi[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${Cw(l)}`:`Original severity \u2014 corrected ${p} to ${Cw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${Cw(r)}; ${h?`corrected ${p} from ${Cw(l)}`:`original, corrected to ${Cw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return A`<span class="badge-pair badge-pair-tab" data-tooltip="${g}" aria-label="${_}">${i}<span class="${`badge-corr-mark ${p}`}" aria-hidden="true">${m}</span></span>`;let v=h?l:u;return A`<span class="${`badge-pair badge-pair-${t}`}" data-tooltip="${g}" aria-label="${_}">${i}<span class="badge-orig-wrap"><span class="${`badge-arrow ${p}`}" aria-hidden="true">${m}</span>${h?A`<span class="badge-pre" aria-hidden="true">was</span>`:M}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${Cw(v)}</span></span>${c}</span>`}var Tw=/\[[^\]\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 Ew(e){let t=[],n=0;for(let r of e.matchAll(Tw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Yn(r[0]);t.push(e?A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(A`<strong>${Ew(r[0].slice(2,-2))}</strong>`):i===95?t.push(A`<em>${Ew(r[0].slice(1,-1))}</em>`):i===96?t.push(A`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(A`<span class="inline-quote">${r[0]}</span>`);n=r.index+r[0].length}return n===0?e:(n<e.length&&t.push(e.slice(n)),t)}function Dw({lang:e,code:t}){F.codeBlockTick;let n=YS(t,e);return A`<div class="code-block" data-lang="${e||M}">${e?A`<div class="code-block-lang">${e}</div>`:M}<pre><code>${n?k(n):t}</code></pre></div>`}function Ow(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(Un);return n.length<2&&typeof n[0]!=`object`?t?A`<div class="para">${Ew(e)}</div>`:Ew(e):n.map(e=>typeof e==`string`?A`<div class="para">${Ew(e)}</div>`:kw(e))}function kw({level:e,text:t,rule:n}){return n?A`<hr class="md-rule">`:A`<div class="md-heading" role="heading" aria-level="${e}">${Ew(t)}</div>`}var Aw=/^\[([ xX])\][ \t]+/u;function jw({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=Aw.exec(e);return t?A`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${Mw(e.slice(t[0].length))}</li>`:A`<li>${Mw(e)}</li>`});return e?A`<ol class="md-list" start="${t>1?t:M}">${r}</ol>`:A`<ul class="md-list">${r}</ul>`}function Mw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
|
|
153
|
-
`,`
|
|
154
|
-
`),r=t?Hn(n):[n],i=r.length>1,a=e=>t?Ow(e,{wrap:i}):Ew(e),o=e=>{let t=Vn(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):Dw(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):jw(e))}function Nw(e){let t=new Set;for(let n of e)t.add(tS(n));return[...t]}function Pw(e){let t=tS(e);return $x[t]??t}function Fw(e,t){F.linksTick,F.findingIndexTick;let n=E(e),r=$r(n)?fd(n).filter(e=>!t.has(e)):[];return r.length===0?M:A`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=nr(e),n=Zd(e),r=F.currentView===`links`&&F.currentLinks?.managedId?$d([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${S(e)} (${Pw(e)})`).join(`, `)}`;return A`<a class="duplicate-ref" href="${I()?JC({id:e},{teamOnly:!0}):`#${Vr({id:e})}`}" data-links-preview="${r?e:M}" data-preview-report="${r?.report??M}" data-preview-row="${r?.index??M}" data-preview-managed-report="${r?.managedReportId??M}" data-tooltip="${`${t}${i}`}">${Nw(n).map(e=>k(Zx[e]??Zx.default))}<span class="duplicate-ref-id">${er(e)??t}</span></a>`})}</div>`}function Iw(e){let t=Nr(e);return t?A`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:M}function Lw(e){let t=Er()?Hi(e.revalidateVerdict,e):``;return t?A`<div class="revalidate-verdict">${Mw(Bn(t))}</div>`:M}function Rw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?A`<div class="section-body">${Mw(Bn(t))}</div>`:M;return!r||!t?A`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:A`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function zw(e,t,n){let r=e?.integrity&&t?.file?zC(e,t.file):null;return r?A`<span class="evidence-ref" role="link" tabindex="0" data-code-nav-integrity="${e.integrity}" data-code-nav-file="${r}" data-code-nav-line="${t?.line??``}">${n}</span>`:A`<span class="evidence-ref">${n}</span>`}function Bw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return M;let r=Hg(e),i=RC(e),a=t===`focus`&&i!==null,o=a?GC(e):null;return A`<details class="evidence"><summary class="section-label">Evidence<span class="evidence-count">(${n.length})</span></summary><ol class="evidence-list">${n.map((t,n)=>{let s=Ji(t),c=qn(t,e,r,n),l=gi(t),u=$w(e,`ev${n}`,i,t?.file,t?.line),d=Jw(c),f=a&&wC(o,{integrity:i.integrity,file:zC(i,t?.file),range:Wn(t?.line)});return A`<li class="${w({current:f})}">${a?zw(i,t,s):c?A`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:A`<span class="evidence-ref">${s}</span>`} ${u?.mark??M} ${d} ${u?.tip??M} ${l?A`<div class="evidence-note">${Mw(Bn(l))}</div>`:M} ${u?.body??M}</li>`})}</ol></details>`}function Vw(e,t){let n=Ji(e);return t?A`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function Hw(e,t){if(!t)return M;let n=t.slice(0,7),r=Zn(e,t);return r?A`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:A`<span data-tooltip="${t}">${n}</span>`}var Uw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Ww=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Gw=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"><path d="M6.2 11.2H4.8a3.2 3.2 0 0 1 0-6.4h1.4"/><path d="M9.8 4.8h1.4a3.2 3.2 0 0 1 0 6.4H9.8"/><path d="M5.6 8h4.8"/></g></svg>`,Kw=A`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.4 4.6 1.3 8l3.1 3.4"/><path d="m11.6 4.6 3.1 3.4-3.1 3.4"/><path d="M9.8 2.6 6.2 13.4"/></g></svg>`,qw=k(ca);function Jw(e){let t=zn(e);return t?A`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${qw}</a>`:M}function Yw(e,t,n,r){return`${E(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var Xw={key:null,host:null};function Zw(e,t){if(Xw.key===e)return;let n=Xw.host,r=e===null?null:t?.getRootNode?.()?.host??null;Xw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function Qw(e,t,n){F.codeBlockTick;let{text:r,lines:i,startLine:a}=Kn(e,t);if(i.length===0)return M;let o=n.lastIndexOf(`.`),s=YS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return A`<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 A`<div class="${w({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?k(s):r}</code></pre></div>`}function $w(e,t,n,r,i){if(F.bundleHashTick,!n||!r)return null;let a=zC(n,r);if(!a)return null;let o=Wn(i),s=Yw(e,t,r,o),c=F.codePreviews.has(s);F.focusCodeTick;let l=A`<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=>{Zw(s,e.currentTarget),VC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{Xw.key===s&&Zw(null,e.currentTarget)}}" @focus="${e=>{Zw(s,e.currentTarget),VC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{Xw.key===s&&Zw(null,e.currentTarget)}}">${Kw}</button>`;if(c){let e=VC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?A`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:Qw(e.content,o,a);return{mark:l,tip:M,body:t}}if(Xw.key!==s)return{mark:l,tip:M,body:M};let u=VC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?A`<div class="code-preview-tip" role="tooltip">${Qw(u.content,o,a)}</div>`:M,body:M}}var eT=A`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${Xi}"/></svg>`,tT=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.2"/><circle cx="8" cy="8" r="1.7" fill="currentColor"/></svg>`,nT=A`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`;function rT(e,t=!1){let n=U(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return A`<button type="button" class="${w({"mark-flag":!0,flagged:n})}" data-flag-toggle="${E(e)}" ?disabled="${!jg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${nT}${t?A`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:M}</button>`}function iT(e){let t=Wi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function aT(e){let t=Rn(e,Hg(e)),n=Ji(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Jn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
|
|
155
|
-
|
|
156
|
-
`)}function oT(e){if(!F.currentWorkspace)return M;let t=e._reportName;if(!t||I()&&!e._managedReportId)return M;let n=ot[tS(t)]??ot.default,r=A`${k(n)}<span class="report-chip-label report-button-label">${S(t)}</span>`;if(I()){let t=JC(e,{reportId:e._managedReportId});if(t)return A`<a class="report-chip report-button comment-self-ref" href="${x(t)}">${r}</a>`}return A`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${E(e)}" data-managed-report="${I()?e._managedReportId:M}">${r}</button>`}function sT(e,t,n,r,i=null){let a=i===`table`?M:oT(r),o=U(r),s=!kg(r),c=!jg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=I()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===M,h=I()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=A`<button type="button" ?disabled="${s}" class="${w({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!I()?f:M}" aria-label="${f}">${Uw}${m?A`<span class="mark-btn-label">${h}</span>`:M}</button>`,v=A`<button type="button" ?disabled="${c}" class="${w({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:M}" aria-label="${p}">${Ww}${m?A`<span class="mark-btn-label">${g}</span>`:M}</button>`,y=rT(r,m),b=A`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${hw}${m?A`<span class="mark-btn-label">Copy</span>`:M}</button>`,ee=JC(r)?A`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Gw}${m?A`<span class="mark-btn-label">Link</span>`:M}</button>`:M,te=I()?yi({repo:{github:r.repo?.github||r._repoFallback}}):Ug(r),ne=Qn(te,{title:iT(r),body:aT(r),labels:IS(r.isSecurity===!0,F.githubNewIssueLabels)}),re=I()&&F.managedSession&&!F.managedSession.publicShare&&F.currentManagedTeam,ie=A`${tT}${m?A`<span class="mark-btn-label">Issue</span>`:M}`,ae=ng(r)?M:ne?re?A`<button type="button" class="mark-issue" data-issue-form="${ne}" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</button>`:A`<a class="mark-issue" href="${ne}" target="_blank" rel="noopener" data-tooltip="${m?M:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${ie}</a>`:M,oe=A`<button type="button" class="mark-claude" data-tooltip="${m?M:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${eT}${m?A`<span class="mark-btn-label">Claude</span>`:M}</button>`,se=A`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,ce=Wg(e)!==e,le=e.linkedTabs?`change triage state for linked findings`:ce?`change triage state for App and own-source findings`:n.hasConflict?`change triage state (colors mismatch — acts per-tab)`:t.length>1?`change triage state for the whole group`:`change triage state`;return A`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${ee}${ae}${oe}</span>${se}${lT(e,le,i,n,r)}</div></div>`}function cT(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 lT(e,t,n,r,i){let a=H(e),o=!jg(i)||Yg(e,r).length===0,s=o?null:Xg(e,r,i),c={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Deleted`,ignored:`Ignored`},l={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Delete`,ignored:`Ignore`},u=!!F.shownTriage,d=u?c[F.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==F.shownTriage).map(e=>({key:e,label:l[e]}))]:f.map(e=>({key:e,label:l[e]})),m=[`mark-triage-menu`];u&&m.push(`with-label`,`triage-state-${F.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return A`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?A`<span class="mark-triage-label">${d}</span>`:M} <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="${h}" class="triage-menu" data-gid="${a}" role="menu" @beforetoggle="${cT}">${p.map(e=>A`<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 uT(e,t){let n=!!e?.comment,r=!!(e?.fix||rg(t)),i=e?.flagged===!0;return!n&&!r&&!i?M:A`<span class="tab-marks">${n?A`<span class="has-comment" role="img" aria-label="Has a comment">${Uw}</span>`:M}${r?A`<span class="has-fix" role="img" aria-label="Has a fix link">${Ww}</span>`:M}${i?A`<span class="flagged" role="img" aria-label="Flagged">${nT}</span>`:M}</span>`}function dT(e,t,n){let{app:r,source:i}=Rg(e),a=e=>fT(e,E(e)===t,n);return A`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?A`<span class="tab-level-separator" aria-hidden="true">•</span>`:M} ${i.map(a)}</div>`}function fT(e,t,n){let r=E(e),i=U(e),a=i?.color,o=Ng(e,i),s=[`tab`,`tab-severity-${Ii(e,F.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=eS(e),l=c?ot[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?A`<span class="tab-analyzer" role="img" aria-label="${$x[c]}">${k(l)}</span>`:u?A`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:M;return A`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:M}"><span class="tab-label"><span class="tab-severity">${ww(e,{variant:`tab`})}</span><span class="tab-indicators">${uT(i,e)}</span></span>${d}</button>`}function pT(e){if(F.viewMode===`table`||F.viewMode===`focus`){let t=e.confidence*10;return A`<div class="${`conf-ring ${Ii(e,F.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${D({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return A`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var mT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function hT(e){if(sf(e))return M;let t=e?.name;if(typeof t!=`string`||!mT.test(t))return M;let n=e?.version,r=typeof n==`string`&&n.length>0,i=r?`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`:`https://www.npmjs.com/package/${t}`,a=r?`${t}@${n}`:t;return A`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function gT(e,t,n,r,i,a){let o=E(e),s=U(e),c=s?.comment??``,l=s?.fix??``,u=rg(e),d=ng(e),f=Rn(e,Hg(e)),p=Vw(e,f),m=Ui(e),h=RC(e),g=$w(e,`loc`,h,e.file,e.line),_=Jw(f),v=A`<span class="line-num">${m?A`${p}, ${m}`:p}${g?.mark??M}${_}</span>`,y=Fn(e),b=String(e.discoveredIn??``).trim(),ee=b===String(e.file??``).trim()?``:b,te=i===`focus`?hT(e.package?.npm):M,ne=M;if(i!==`focus`&&I()&&g)ne=A`<button type="button" class="finding-code-btn" data-finding-code-report="${h.reportId}" data-finding-code-file="${e.file}" data-finding-code-line="${e.line??``}" aria-label="${`Open full source for ${e.file}`}">Code</button>`;else if(i!==`focus`&&!I()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){F.bundleHashTick;let t=new Set(e._bundleHashes),n=rp(e.fileHash).find(({integrity:e})=>t.has(e));n&&(ne=A`<button type="button" class="finding-code-btn" data-finding-code-bundle="${n.integrity}" data-finding-code-file="${n.file}" data-finding-code-line="${e.line??``}" data-tooltip="${`Open ${n.file} in bundle source viewer`}">Code</button>`)}let{title:re,body:ie}=Gi(e),ae=qi(ie),oe=ae.findIndex(e=>e.label!==null),se=oe===-1?ae:ae.slice(0,oe),ce=oe===-1?[]:ae.slice(oe);return A`<div class="${w({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?A`<div class="print-case-label">${n+1} of ${r}</div>`:M}<div class="finding-left">${s?.color||s?.flagged===!0?A`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?A`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:M} ${s?.flagged===!0?A`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:M}</div>`:M} ${ww(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?M:pT(e)} ${Iw(e)} ${ne}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??M} ${te} ${ee?A`<span class="line-num discovered-in">(found analyzing ${ee})</span>`:M} ${y?A`<span class="run-meta">${y}</span>`:M}</div>${g?.body??M} ${re?A`<div class="desc-title">${Ew(re)}</div>`:M} ${se.map(e=>A`<div class="desc">${Mw(Bn(e.body))}</div>`)} ${Bw(e,i)} ${ce.map(e=>e.label===null?A`<div class="desc">${Mw(Bn(e.body))}</div>`:Rw(e.label,e.body))} ${e.impact?Rw(`Impact`,Hi(e.impact,e)):M} ${e.reproduction?Rw(`Reproduction`,Hi(e.reproduction,e),`section`,{collapsible:!0}):M} ${e.recommendation?Rw(`Recommendation`,Hi(e.recommendation,e),`recommendation`,{collapsible:!0}):M} ${e.confidenceReason?A`<div class="conf-reason">${Mw(Hi(e.confidenceReason,e))}</div>`:M} ${Lw(e)} ${e.revalidateRecommendation&&Er()?Rw(`Revalidation recommendation`,Hi(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):M} ${Fi(e)&&e.correctedSeverityReason?A`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${Mw(e.correctedSeverityReason)}</div>`:M} ${Fw(e,a)} ${I()?rw(e).map(e=>A`<div class="comment-block">${pw(e,mw(e.body))}</div>`):c?A`<div class="comment-block"><span class="comment-label">Comment:</span> ${mw(c)}</div>`:M} ${d?A`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:M} ${l?A`<div class="fix-block"><span class="fix-label">Fix:</span> ${_i(l)?A`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:M} ${u&&u!==l?A`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:M}</div></div>`}function _T(e){let t=[`finding`,...yT(e)];return Ig(e).length>1&&t.push(`multi-case`),t}function vT(e,t={}){let{context:n=null}=t,r=Gg(e),i=Ig(e),a=new Set(i.map(E)),o=Bg(e),s=E(o),c=o.commitHash?A`<div class="commit-ref">introduced in ${Hw(o.repo?.github,o.commitHash)}</div>`:M,l=F.currentWorkspace&&c!==M;return A`${i.map((e,t)=>gT(e,E(e)===s,t,i.length,n,a))} ${l?A`<div class="marks-commit-row">${c}</div>`:M}<div class="marks"><div class="marks-left">${l?M:c} ${i.length>1?dT(i,s,r):M}</div>${sT(e,i,r,o,n)}</div>`}function yT(e){let t=Gg(e),n=e.some(e=>e.critical||Ii(e,F.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),F.shownTriage&&r.push(`triage-${F.shownTriage}`),r}function bT(e){let t=Gg(e),n=Ig(e),r=Bg(e),i=E(r),a=r,o=Wi(a),s=Fn(a),c=Ui(a),l=c?`, ${c}`:``,u=Rn(a,Hg(a));return A`<div class="row-score">${ww(a,{variant:`compact`})} ${a.confidence===void 0?M:A`<span class="row-conf"><strong>${a.confidence}</strong>/10</span>`}</div><div class="row-body"><div class="title-row"><span class="title">${o}</span> ${s?A`<span class="row-type">${s}</span>`:M}</div><div class="meta-row"><span class="row-loc">${Vw(a,u)}${l}</span> ${Jw(u)}<div class="marks">${sT(e,n,t,r,`table`)}</div></div>${n.length>1?A`<div class="tabs-row">${dT(n,i,t)}</div>`:M}</div>`}function xT(e){if(!e)return M;let t=rp(e)[0];return t?A`<button type="button" class="tree-code-btn" data-finding-code-bundle="${t.integrity}" data-finding-code-file="${t.file}" data-tooltip="${`Open ${t.file} in bundle source viewer`}">Code</button>`:M}function ST(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=wT(e),a=F.filesSearch.trim().toLowerCase(),o=a?n.filter((e,t)=>r[t].includes(a)):n,s=t=>e[t]?A`<a href="${`#${ur(t)}`}"><span class="name">${t}</span></a>`:A`<span class="name">${t}</span>`,c=e=>{let n=t.get(e);if(!n)return null;let r=Ni.filter(e=>(n[e]??0)>0);return r.length===0?null:A`<span class="tree-count-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},l=e=>{let n=t.get(e);return n?Ni.reduce((e,t)=>e+(n[t]??0),0):0},u=A`<div class="tree-toolbar"><view-mode-buttons modes="table,list" kind="files"></view-mode-buttons><div class="search-row"><toolbar-search kind="files"></toolbar-search><span class="result-count">${o.length} of ${n.length}</span></div></div>`;if(F.filesViewMode===`table`){let t=F.filesSelectedFile&&Object.hasOwn(e,F.filesSelectedFile)&&(!a||F.filesSelectedFile.toLowerCase().includes(a))?F.filesSelectedFile:null;return A`<div class="${t?`tree-view tree-view-table with-details`:`tree-view tree-view-table`}">${u}<div class="${t?`tree-table-layout open`:`tree-table-layout`}"><div class="tree-table-list">${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(n=>{let r=l(n),i=n===t,a=jn(e[n].size);return A`<div class="${`tree-table-row${i?` selected`:``}${r===0?` clean`:``}`}" data-tree-select="${n}"><span class="tree-table-name" data-tooltip-truncated data-tooltip="${n}">${n}</span> ${c(n)??A`<span class="tree-table-clean-marker">—</span>`} ${a?A`<span class="tree-table-size">${a}</span>`:M}</div>`})}</div>${t?A`<aside class="tree-table-details" id="tree-table-details"><header class="tree-table-details-bar"><span class="tree-table-details-label">Details</span> <button type="button" class="tree-table-details-close" data-tree-deselect aria-label="Close details">×</button></header><div class="tree-table-details-body">${ET(e[t],t,i.get(t)??[],s)}</div></aside>`:M}</div></div>`}return A`<div class="tree-view">${u} ${o.length===0?A`<div class="tree-table-empty">No files match the search.</div>`:M} ${o.map(t=>{let n=e[t],r=i.get(t)??[],a=jn(n.size);return A`<section class="tree-file" id="${ur(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${c(t)} ${a?A`<span class="tree-file-size">${a}</span>`:M} ${xT(n.fileHash)}</div>${TT(n,r,s)}</section>`})}</div>`}var CT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function wT(e){if(CT.treeData===e)return CT;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 CT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},CT}function TT(e,t,n){return A`${e.fileHash||e.treeHash?A`<div class="tree-hashes hashes">${e.fileHash?A`<div class="tree-hash">file: ${e.fileHash}</div>`:M} ${e.treeHash?A`<div class="tree-hash">tree: ${e.treeHash}</div>`:M}</div>`:M} ${e.imports?.length>0?A`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${t.length>0?A`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>A`<li>${n(e)}</li>`)}</ul></div>`:M} ${e.exports?.length>0?A`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>A`<li><span class="name">${e}</span></li>`)}</ul></div>`:M}`}function ET(e,t,n,r){let i=jn(e.size);return A`<div class="tree-detail-name"><span class="name">${t}</span> ${i?A`<span class="tree-detail-size">${i}</span>`:M} ${xT(e.fileHash)}</div>${TT(e,n,r)}`}var DT=null,OT=null;function kT(){return OT}function AT(){return DT||(DT=(async()=>{try{let e=await import(`./graph.js`);return OT=e,e}catch(e){throw DT=null,e}})(),DT)}async function jT(e,t,n,r,i){try{let a=await AT(),o=a.buildGraphFromPrep(t);N(A`<graph-layout .graph="${o}" .options="${n}"></graph-layout>`,e);let s=e.querySelector(`graph-layout`);return await s.updateComplete,r(),i(),a.attachGraph2Interaction(e,o,r,i),s}catch(t){return e.textContent=`Graph failed to load: ${t instanceof Error?t.message:String(t)}`,null}}var MT=null,NT=null;function PT(){NT=null}async function FT(){let e=await NT?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function IT(){return MT||(MT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw MT=null,e}})(),MT)}function LT(e){let t=new Map([...zt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=Mn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function RT(e,t){let n=t?.integrity??``;(!NT||NT.integrity!==n||(t?.managedId||NT.managedId)&&NT.details!==t)&&(NT={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:zT(t,n)});try{let t=await NT.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return NT=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function zT(e,t){return(await IT()).createTerminalElement(LT(e),t)}var BT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},VT={},HT=fa(class extends pa{constructor(){super(...arguments),this.ot=VT}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 ga}else if(this.ot===t)return ga;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),UT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),UT(e,t);return!0},WT=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},GT=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),JT(t)}};function KT(e){this._$AN===void 0?this._$AM=e:(WT(this),this._$AM=e,GT(this))}function qT(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++)UT(r[e],!1),WT(r[e]);else r!=null&&(UT(r,!1),WT(r))}else UT(this,e)}}var JT=e=>{e.type==da.CHILD&&(e._$AP??=qT,e._$AQ??=KT)},YT=class extends pa{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),GT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(UT(this,e),WT(this))}setValue(e){if(Zr(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(){}},XT=new WeakMap,ZT=fa(class extends YT{render(e){return M}update(e,[t]){let n=t!==this.G;return n&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),M}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=XT.get(t);n===void 0&&(n=new WeakMap,XT.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`?XT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),QT=2**20,$T=Math.floor(2**25/15);function eE(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+QT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function tE(e,t=!1){return e.length<=QT&&!yC(e)?e:xC(e,t).flatMap(e=>typeof e==`string`?eE(e):[e])}var nE=class extends r{};function q(e,t,n){if(!e)throw new nE(typeof n==`function`?n():n,t.line)}var rE=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,iE=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,aE=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,oE=[31,28,31,30,31,30,31,31,30,31,30,31];function sE(e){let t=rE.exec(e);if(t===null)return;let[n,r,i,a,o,s]=[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[5]),Number(t[6]),Number(t[7])],c=n%4==0&&n%100!=0||n%400==0;if(r<1||r>12||i<1||i>(r===2&&c?29:oE[r-1])||a>23||o>59||s>60||t[10]!==void 0&&(Number(t[11])>23||Number(t[12])>59))return;let l=[];(t[4]===`t`||t[9]===`z`)&&l.push(`a date-time with a lower-case "t" or "z" is not supported`),n===0&&l.push(`the year 0000 is not supported`),s===60&&l.push(`a leap second is not supported`);let u=t[10]===void 0?0:(t[10]===`-`?-1:1)*(Number(t[11])*60+Number(t[12]));return{year:n,month:r,day:i,hour:a,minute:o,second:s,fraction:t[8]?.slice(1)??``,offset:u,unsupported:l}}var cE=class{constructor(e){if(typeof e!=`string`||sE(e)?.unsupported.length!==0)throw TypeError(`expected an RFC 3339 offset date-time`);this.text=e,Object.freeze(this)}toString(){return this.text}toJSON(){return this.text}toDate(){let{year:e,month:t,day:n,hour:r,minute:i,second:a,fraction:o,offset:s}=sE(this.text),c=new Date(0);return c.setUTCFullYear(e,t-1,n),c.setUTCHours(r,i-s,a,Number(o.padEnd(3,`0`).slice(0,3))),c}};function lE(e,t){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=sE(e);if(r?.unsupported.length===0)return new cE(e);throw q(!(/^\d{4}-\d\d-\d\d$/u.test(e)&&/^ \d\d:/u.test(t.text.slice(t.pos,t.pos+4))),t,`a date-time with a space in place of "T" is not supported`),q(!iE.test(e),t,()=>`local dates and times are not supported: ${n(e)}`),q(!aE.test(e),t,()=>`a date-time or a time without seconds is not supported: ${n(e)}`),q(r?.unsupported.length!==1,t,()=>`${r.unsupported[0]}: ${n(e)}`),new nE(`${n(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,t.line)}var uE=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,dE=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,fE=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,pE=2n**63n,mE=BigInt(2**53-1),hE={__proto__:null,x:16,o:21,b:63};function gE(e,t){let r=uE.test(e);if(!r&&!dE.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:hE[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return q(o!==void 0&&o>=-pE&&o<pE,t,()=>`integer out of range ${n(e)}`),o>=-mE&&o<=mE?Number(o):o}var _E={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function vE(e){if(typeof e!=`string`||!fE.test(e))return;if(e in _E)return _E[e];let t=Number(e.replaceAll(`_`,``)),n=!/[1-9]/u.test(e.split(/[Ee]/u)[0]);return Number.isFinite(t)&&(t!==0||n)?t:null}var yE=class{constructor(e){let t=vE(e);if(t==null)throw TypeError(`expected a TOML float that a double can hold`);this.text=e,this.value=t,Object.freeze(this)}valueOf(){return this.value}toString(){return this.text}toJSON(){return this.value}};function bE(e,t){let r=vE(e);if(r!==void 0)return q(r!==null,t,()=>`float out of range ${n(e)}`),new yE(e)}var xE=64;function SE(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function CE(e){if(e.pos>=e.text.length)return`the end of the text`;let t=/^[^\n]*/u.exec(e.text.slice(e.pos,e.pos+64+1))[0].replace(/\r$/u,``);return t===``?`the end of the line`:n(t)}var wE=`a carriage return must be followed by a line feed`;function TE(e,n,r){throw new nE(n===`\r`?wE:`${t(n)} is not allowed in ${r}`,e.line)}var EE=e=>e.pos>=e.text.length||e.text[e.pos]===`
|
|
157
|
-
`||e.text.startsWith(`\r
|
|
158
|
-
`,e.pos),DE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function OE(e){e.text[e.pos]===`#`&&(i(e,DE),EE(e)||TE(e,e.text[e.pos],`a comment`))}function kE(e){if(e.text[e.pos]===`
|
|
159
|
-
`)e.pos+=1;else if(e.text.startsWith(`\r
|
|
160
|
-
`,e.pos))e.pos+=2;else return!1;return e.line++,!0}function AE(e){do SE(e),OE(e);while(kE(e))}var jE={__proto__:null,b:`\b`,t:` `,n:`
|
|
161
|
-
`,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},ME={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},NE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function PE(e){let t=e.text[e.pos];if(t in jE)return jE[e.text[e.pos++]];let r=i(e,NE);q(r!==null,e,()=>`unsupported escape ${n(`\\${t??``}`)}`);let a=Number.parseInt(r[1]??r[2],16);return q(a<=1114111&&(a<55296||a>57343),e,()=>`\\${r[0]} is not a Unicode scalar value`),String.fromCodePoint(a)}var FE=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function IE(e){let t=i(e,FE);return t===null?PE(e):(e.line+=t[0].split(`
|
|
162
|
-
`).length-1,``)}var LE=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,RE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function zE(e,t){let n=LE(e,t),r=RE[n?t.repeat(3):t];e.pos+=n?3:1,n&&kE(e);let a=``;for(;;){if(a+=i(e,ME[t])[0],n&&kE(e)){a+=`
|
|
163
|
-
`;continue}q(!EE(e),e,`unterminated string`);let o=i(e,r);if(o!==null)return a+o[0].slice(3);let s=e.text[e.pos++];s===t?a+=s:s===`\\`?a+=n?IE(e):PE(e):TE(e,s,`a string`)}}var BE=/[\w-]+/uy;function VE(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return q(!LE(e,t),e,`a multi-line string cannot be a key`),zE(e,t);let n=i(e,BE);return q(n!==null,e,()=>`expected a key, found ${CE(e)}`),n[0]}function HE(e){let t=[VE(e)];for(;;){if(SE(e),e.text[e.pos]!==`.`)return t;e.pos++,SE(e),t.push(VE(e)),q(t.length<=xE,e,`a key with too many parts`)}}var UE=/[\w+.:-]+/uy;function WE(e){let t=i(e,UE);q(t!==null,e,()=>`expected a value, found ${CE(e)}`);let r=t[0];if(r===`true`)return!0;if(r===`false`)return!1;let a=gE(r,e)??bE(r,e)??lE(r,e);return q(a!==void 0,e,()=>`expected a value, found ${n(r)}`),a}function GE(e,t,r,i){q(t[r]===void 0,e,()=>`duplicate key ${n(r)}`),t[r]=i}function KE(e,t){let n=HE(e);return q(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${CE(e)}`),e.pos++,SE(e),{header:!1,keys:n,value:tD(e,t)}}function qE(e,t){e.pos++;let n=[];for(AE(e);e.text[e.pos]!==`]`&&(n.push(tD(e,t+1)),AE(e),e.text[e.pos]!==`]`);AE(e))q(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${CE(e)}`),e.pos++;return e.pos++,n}var JE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,YE=new WeakSet;function XE(e,t,n,r,i,a){let o=t;for(let t of r.slice(0,-1)){t in o||n.add(o[t]=Object.create(null));let r=o[t];q(n.has(r),e,()=>a(t,r)),o=r}GE(e,o,r.at(-1),i)}var ZE=e=>Array.isArray(e)?`an array`:JE(e)?`an inline table`:`a value`,QE=(e,t)=>`${n(e)} is ${ZE(t)}, which a dotted key cannot add to`;function $E(e){SE(e),q(!EE(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function eD(e,t){e.pos++;let n=Object.create(null);YE.add(n);let r=new Set;if($E(e),e.text[e.pos]===`}`)e.pos++;else do{$E(e),q(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=KE(e,t+1);XE(e,n,r,i,a,QE),$E(e);let o=e.text[e.pos];q(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${CE(e)}`)}while(e.text[e.pos++]===`,`);return n}function tD(e,t){q(t<=xE,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?zE(e,n):n===`[`?qE(e,t):n===`{`?eD(e,t):WE(e)}function nD(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,SE(e);let n=HE(e),r=t?`]]`:`]`;return q(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${CE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function rD(e){SE(e);let t=e.text[e.pos];if(t===`[`)return nD(e);if(!(t===`#`||t===`\r`||EE(e)))return KE(e,0)}function iD(e){if(SE(e),OE(e),!(kE(e)||e.pos===e.text.length))throw q(e.text[e.pos]!==`\r`,e,wE),new nE(`expected the end of the line, found ${CE(e)}`,e.line)}function aD(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:JE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var oD=e=>n(e.join(`.`));function sD(e,t,r){let i=e.root;for(let a of r){a in i||e.implicit.add(i[a]=Object.create(null));let r=e.arrays.has(i[a])?i[a].at(-1):i[a];q(JE(r)&&!e.fixed.has(r),t,()=>`${n(a)} is ${aD(e,r)}, which a header cannot add to`),i=r}return i}function cD(e,t,n,r){e.pending.clear();let i=sD(e,t,n.slice(0,-1)),a=n.at(-1);if(r){a in i||e.arrays.add(i[a]=[]),q(e.arrays.has(i[a]),t,()=>`${oD(n)} is ${aD(e,i[a])}, not an array of tables`),i[a].push(e.current=Object.create(null));return}a in i?q(e.implicit.delete(i[a]),t,()=>`${oD(n)} is ${aD(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function lD(e,t,r){return!JE(r)||e.fixed.has(r)?`${n(t)} is ${aD(e,r)}, which a dotted key cannot add to`:e.implicit.has(r)?`a dotted key through ${n(t)}, a table a header made on its way, is not supported`:`${n(t)} is a table declared elsewhere, which a dotted key cannot add to`}function uD(e,t,n,r){XE(t,e.current,e.pending,n,r,(t,n)=>lD(e,t,n)),JE(r)&&e.fixed.add(r)}var dD={__proto__:null,"":`a byte order mark is not read`,"�":`U+FFFD is not supported: a decoder puts it where bytes are not UTF-8`};function fD(e){if(typeof e!=`string`)throw TypeError(`expected a string`);let t=/\p{Cs}|^\uFEFF|\uFFFD/u.exec(e);if(t===null)return;let n=e.slice(0,t.index).split(`
|
|
164
|
-
`).length-1;throw new nE(dD[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function pD(e){fD(e);let t=Object.create(null),n={text:e,pos:0,line:0},r={root:t,current:t,implicit:new Set,pending:new Set,arrays:new Set,fixed:new Set};for(;n.pos<e.length;){let e=rD(n);e?.header===!0?cD(r,n,e.keys,e.array):e!==void 0&&uD(r,n,e.keys,e.value),iD(n)}return t}function mD(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&&jt(`github`,n)?n:null}function hD(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 gD=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function _D(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return jt(`directory`,n)?{directory:n}:{}}function vD(e){let t=e?.repository,n=mD(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=hD(e.homepage,n),r!==void 0&&gD(r)&&(r=void 0)),{github:n,..._D(r)}}function yD(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?pD(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function bD(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)?yi({repo:{github:n}}):null}function xD(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?yD(t?.files,`composer.json`):r===`cargo`?yD(t?.files,`Cargo.toml`)?.package:yD(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=yi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?vD(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>bD(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?qr(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 SD=new WeakMap;function CD(e,t){let n=SD.get(e);if(n||SD.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+=ya(n),a+=Jt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var wD=new Set([`cargo`,`composer`,`soldeer`]);function TD(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 ED(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])}OD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=xD(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function DD(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=TD(n,r,a);if(!wD.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 OD(e,t,n){for(let r of e.dirs.values())OD(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=TD(e.sourcePath,r,n);if(wD.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 wD.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=kD(n,a);t.has(c)||t.set(c,[]),t.get(c).push(a)}for(let e of t.values())if(!(e.length<2)){e.sort((e,t)=>e.path.localeCompare(t.path));for(let[t,n]of e.entries())n.package.variant=t+1}}return e}function kD(e,t){let n=t.package;return n?`${n.name}${n.version?`${wD.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function AD(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}/${kD(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 jD(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 MD(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 ND([e,t],[n,r]){return kD(e,t).localeCompare(kD(n,r))||t.path.localeCompare(r.path)}function PD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(ND))PD(jD(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 FD(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=qr(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 ID(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=qr(r.gitHead);return r.github?.github&&e?FD(r.github.github,bi({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return FD(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:TD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=yi(a),r=yi({repo:{github:n?.github}}),i=e??r;return i?FD(i,typeof a.repo?.directory==`string`?bi(a.repo):r?.toLowerCase()===i.toLowerCase()?bi({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=xD({name:c.name,ecosystem:u},c,0);return d.github?FD(d.github,d.directory??``,l,d.commit,d):null}function LD(e,t=null){return A`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??M}" data-tooltip-commit-info="${rt(t,e.commit,e.github)??M}" data-tooltip-package="${e.package?.name??M}" data-tooltip-ecosystem="${e.package?.ecosystem??M}" data-tooltip-version="${e.package?.version??M}">${k(ca)}${e.package?A`<span hidden data-tooltip-package-icon>${Ze(e.package.ecosystem)}</span>`:M}</a>`}var RD=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,zD=new Map,BD=new WeakMap,VD=null;function HD(e){if(!e){queueMicrotask(UD);return}if(UD(),zD.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&HD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{BD.get(e)?.width!==WD(e)&&GD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>GD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),zD.set(e,()=>{n.disconnect(),r.disconnect()})}function UD(){for(let[e,t]of zD)e.isConnected||(t(),zD.delete(e))}function WD(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 GD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=WD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=BD.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}=KD(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`);BD.set(e,{rows:l,width:r});let u=e.closest(RD)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function KD(e,t,n,r){let i=getComputedStyle(e);VD??=document.createElement(`canvas`).getContext(`2d`),VD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*VD.measureText(`0`).width),o=[],s=null,c=null,l=0,u=0,d=()=>{l>a&&c&&o.push({line:u,first:s,last:c}),u++,l=0,s=c=null},f=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=f.nextNode();e;e=f.nextNode()){let t=e.data;for(let n=0;n<t.length;){let r=t.indexOf(`
|
|
165
|
-
`,n),i=r===-1?t.length:r;if(i>n){s??={node:e,from:n,to:n+(t.codePointAt(n)>65535?2:1)};let r=i;for(;r>n&&(t[r-1]===` `||t[r-1]===` `);)r--;r>n&&(c={node:e,from:r-(r-2>=n&&t.codePointAt(r-2)>65535?2:1),to:r}),l+=i-n}if(r===-1)break;d(),n=r+1}}d();let p=new Map,m=document.createRange(),h=({node:e,from:t,to:n})=>(m.setStart(e,t),m.setEnd(e,n),m.getBoundingClientRect()),g=e.getBoundingClientRect().left+e.clientLeft+parseFloat(i.paddingLeft),_=!1;for(let{line:e,first:i,last:a}of o){let o=!!i.node.parentElement.closest(`.bundle-source-long-line`);if(n||o){let t=Math.round((h(a).top-h(i).top)/r)+1;t>1&&p.set(e,t),t>1&&!o&&(_=!0)}else!_&&h(a).right-g>t+.5&&(_=!0)}return{rows:p,toggles:_}}function qD(e){let t=e.closest(RD)?.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 JD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),YD=4194304;function XD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return JD.has(t)?t:null}function ZD(e,t,n=()=>_t(e,t)){return XD(e)!==null&&ya(t)<=YD&&n().category===`minified`}var QD=e=>e.bundle??e.json??e,$D=/\\(?: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,eO={b:`\b`,f:`\f`,n:`
|
|
166
|
-
`,r:`\r`,t:` `,v:`\v`},tO=e=>e.replaceAll($D,(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)?``:eO[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),nO={i:`ı`,k:`K`,s:`ſ`},rO=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...nO[e.toLowerCase()]??``]);function iO(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 aO(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[tO(t),t]:[tO(t)]:e==="`"&&t.includes("${")?[]:[t]}var oO=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,sO=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,cO=/[ \t]*[,)]/uy,lO=(e,t,n)=>(e.lastIndex=n,e.test(t)),uO=(e,t,n,r)=>t!=="`"&&lO(oO,e,n)||lO(sO,e,n)&&lO(cO,e,r),dO=/^\.\.?(?:\/|$)/u,fO=/\.(?:json|node)$/u,pO=[`.js`,`.json`,`.node`],mO=/(?:^|\/)\.{0,2}$/u,hO=/[^/.][^/]*\.[^/]*$/u;function gO(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 _O=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||TO(t[n])===e))?t.slice(e.length).join(`/`):null,vO=(e,t,n)=>_O(e,gO([...e,...t===``?[]:t.split(`/`)],n)),yO=e=>new Set([e,e.replaceAll(`\\`,`/`)]),bO=(e,t,n)=>[...yO(n)].filter(e=>dO.test(e)).map(n=>vO(e,t,n)),xO=/[%?#\\\t\n\r]|[\0- ]$/u;function SO(e,t,n){if(!dO.test(n))return null;if(!xO.test(n))return vO(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:_O(e,gO([],decodeURIComponent(i)))}catch{return null}}var CO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,wO=e=>typeof e==`string`&&CO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(TO):[],TO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function EO(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,TO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(TO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:TO}}}function DO(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 OO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>DO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function kO(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=OO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=OO(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 AO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function jO(e,t,n,r,i){let a=SO(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=TO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=AO(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:AO(`${o[0]}${e}x`).length-1,before:e,length:AO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(hO.test(e)||ft.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(`/`))&&AO(c)===t})).map(([e])=>e)}var MO=65536,NO=Symbol(`every file`),PO=(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>MO?NO:r.replaceAll(`*`,a)}]}),FO=(e,{exports:t,hasExports:n},r)=>n?PO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===NO?NO:SO(e,``,t)):[SO(e,``,r)];function IO({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 LO=(e,t)=>IO(e,t===``?`index`:`${t}/index`,pO);function RO(e,t,n,r,i){if(r===null)return[];let a=i?null:IO(t,r,[``,...pO]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>kO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...yO(e)].map(e=>vO(n,r,e))).filter(e=>e!==null).map(e=>IO(t,e,[``,...pO])??LO(t,e)).filter(e=>e!==null);return o.length>0?o:[LO(t,r)].filter(e=>e!==null)}var zO=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>kO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),BO=64,VO=new WeakMap;function HO(e){let t=VO.get(QD(e));if(t)return t;t=new Set;let n=zt(e),{installed:r,cased:i,folding:a}=EO(n),o=[],s=kO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=wO(s.name),l=(e,t)=>!(t===`require`?fO:hO).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${TO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||st(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=RO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...RO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>kO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>BO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,TO(e)]):[];for(let[t,n,r]of p)for(let i of jO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)st(e,t)&&o.push(e);let m=zO(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&TO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=iO([...c.length>0?rO(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>FO(c,s,e),y=!1,b=(e,t)=>{if(e!==NO)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},ee=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of PO(m,e)){let e=r===NO?[NO]:r.startsWith(`./`)?[SO(c,n,r)]:h(r)?v(`./${r.slice(s.name.length+1)}`):c.length>0&&r===s.name?v(`.`):[];for(let n of e)b(n,t)}}},te=(e,t,n)=>{if(e.startsWith(`#`))return ee(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!dO.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 bO(c,r,i))f(e,mO.test(i));d(SO(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 aO(s,o))te(e,i,()=>uO(r,s,a,a+o.length+2))}}return VO.set(QD(e),t),t}var UO=new WeakMap;function WO(e,t){let n=UO.get(QD(e));if(n||UO.set(QD(e),n=new Map),!n.has(t)){let r=zt(e).get(t);n.set(t,ue(t,typeof r==`string`?r:null,Bt(e).get(t),HO(e).has(t)))}return n.get(t)}var GO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,KO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:GO(n),exfiltration:GO(r),hosts:GO(i),readability:t&&{...t,controls:GO(t.controls,Number)}});function qO(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:GO(e.found),...e.added?{added:GO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var JO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(qO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,KO(t)])),dependencies:e.dependencies,score:e.score??null}),YO=e=>e?.npm?e.risk?.()?.files??null:null,XO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function ZO(e,t){return e?.npm?YO(e)?.get(t)??XO:WO(e,t)}var QO=({names:e,loop:t})=>[e>=pt&&`${e.toLocaleString(`en`)}${e===ht?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function $O(e,t,n){return n===zt(e).get(t)&&typeof n==`string`?ZO(e,t).readability:tk(e,t,n)}var ek=new WeakMap;function tk(e,t,n){let r=ek.get(e);r||ek.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=_t(t,n);return r.set(t,{text:n,read:a}),a}function nk(e,t){let n=wt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${Ct.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var rk=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${ut} characters, the longest ${t.toLocaleString(`en`)}`;function ik(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>rk(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, ${Wr(i)}${r>0?`; minified: ${a()}`:``}`;case`minified`:return`Minified: ${r>0?a():`its lines of code ${t.toLocaleString(`en`)} characters long on average, strings and comments aside, with few spaces`}`;default:return M}}function ak(e,t=!1){if(!e)return M;let n=yt(e),{tag:r,short:i,mark:a}=Ct.get(n);return A`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${ik({...e,category:n})}">${t?i??r:r}</span>`}function ok(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||yt(e)===t?M:ak({...e,category:t})}function sk(e,t=null){let n=e?xt(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(St(e,n)))):[];if(n.length===0)return M;let r=t=>t===`long`?`${rk(e)}${e.category===`long`?`, among readable ones`:``}`:nk(e.controls,t);return n.map(t=>A`<span class="${`npm-flag-tag is-${St(e,t)}`}" data-tooltip="${r(t)}">${Ct.get(t).tag}</span>`)}function ck(e){if(!e)return M;let t=yt(e);return t===`ascii`||t===`map`?sk(e):lk(e)}var lk=e=>e?A`${sk(e)}${ak(e)}`:M;function uk(e,t,n,r=!0){let{stamps:i,readability:a}=ZO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?M:A`${o?A`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Wr(n)}, 256 KiB or more`}">Large</span>`:M}${s?A`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${QO(s)}`}">Obfuscated</span>`:M}`}var dk=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 2.5c-1.4 0-2 .6-2 2v1.6c0 .9-.5 1.6-1.5 1.9 1 .3 1.5 1 1.5 1.9v1.6c0 1.4.6 2 2 2M10.5 2.5c1.4 0 2 .6 2 2v1.6c0 .9.5 1.6 1.5 1.9-1 .3-1.5 1-1.5 1.9v1.6c0 1.4-.6 2-2 2"/></svg>`,fk=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`,pk=8,mk=4,hk=2,gk=30,_k=2,vk=`The server's copy is of another file than the one open.`,yk=`The server didn't pretty-print this file.`,bk=e=>!(e>=400&&e<500&&e!==429),xk=5e3,Sk=3e5,Ck=new Map;function wk(e,t,n,r){if(!t?.retry){Ck.delete(e);return}let i=Ck.get(e)??0;Ck.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(xk*2**i,Sk))?.unref?.()}var Tk=new Map,Ek=0,Dk=()=>Ek,Ok=new Map,kk=(e,t)=>`${e.integrity}\0${t}`,Ak=new Map,jk=new Map,Mk=new WeakMap;function Nk(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=Mk.get(e);return i||Mk.set(e,i=new Map),i.has(n)||i.set(n,ZD(n,r,()=>tk(e,n,r))),i.get(n)}var Pk=!1,Fk=new Set,Ik=new Set;function Lk(e,t){Tk.delete(e),Tk.set(e,t),Pk||(Pk=!0,Ik=Fk,Fk=new Set,setTimeout(()=>{Pk=!1})),Fk.add(e),Rk()}function Rk(){for(let[e,t]of Tk){if(Tk.size<=pk)break;Fk.has(e)||Ik.has(e)||t.status===`loading`||(Tk.delete(e),Ok.delete(e))}}var zk=0,Bk=[];async function Vk(e){zk<_k?zk++:await new Promise(e=>{Bk.push(e)});try{return await e()}finally{let e=Bk.shift();e?e():zk--}}async function Hk(e,t,n,r,i,a){let o;try{let e=a??await ki(i),{text:t,source:s}=await Vk(()=>n.npm?Xb(n.npm.name,n.npm.version,r,e):Jb(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await ki(t)}:{status:`error`,message:vk,retry:!0}}catch(n){if(n?.name===`AbortError`){Tk.get(e)===t&&(Tk.delete(e),Ok.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:bk(n?.status)}}if(Tk.get(e)!==t)return;Tk.set(e,o),Ek++;let s=Ok.get(e),c=o.status===`error`&&o.retry;c||Ok.delete(e),wk(`file ${e}`,c?o:null,()=>Tk.get(e)===o&&Tk.delete(e),()=>Ok.get(e)),s?.(),Rk()}function Uk(){for(let[e,t]of Ak){if(Ak.size<=mk)break;t.rest&&Ak.delete(e)}}function Wk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Gk(e,t,n,{npm:r}){let i=zt(n),a;try{await Yb(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 ki(s)?{status:`ready`,text:r,hash:await ki(r)}:typeof r==`string`?{status:`error`,message:vk,retry:!0}:{status:`error`,message:o,retry:bk(a)};t.copies.set(e,c),Ek++,Wk(t,e)}),a={status:`error`,message:yk,retry:!1}}catch(n){if(n?.name===`AbortError`){Ak.get(e)===t&&Ak.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:bk(n?.status)}}t.rest=a,Ek++;for(let e of[...t.notifiers.keys()])Wk(t,e);Uk()}function Kk(e,t,n,r,i){let a=e.integrity,o=Ak.get(a);return Ak.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Gk(a,o,e,t)),Ak.set(a,o),Uk(),r===zt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:vk,retry:!1}}function qk(e,t,n,r,i){return F.bundleSourcePretty?t.npm?Kk(e,t,n,r,i):Jk(e,n,r,i,t):null}function Jk(e,t,n,r,i=e){let a=kk(e,t),o=Tk.get(a),s=o??{status:`loading`};return Lk(a,s),(s.status===`loading`||s.retry)&&Ok.set(a,r),o||Hk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Yk=new Set;function Xk(e){e&&(Yk.size===0&&setTimeout(()=>{let e=[...Yk];Yk.clear();for(let t of e)t()},gk),Yk.add(e))}function Zk(){for(let[e,t]of jk){if(jk.size<=hk)break;t.ended&&jk.delete(e)}}async function Qk(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`&&bk(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&zt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await ki(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await ki(a)}:typeof a==`string`?{status:`error`,message:vk,retry:!0}:{status:`error`,message:s,retry:bk(o)}),Ek++,Xk(t.notify)};await(n.npm?Qb(n.npm.name,n.npm.version,r.npm.version,e):Zb(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){jk.get(e)===t&&jk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:bk(n?.status)}}Object.assign(t,{ended:!0,rest:a}),Ek++,wk(`comparison ${e}`,a,()=>jk.get(e)===t&&jk.delete(e),()=>t.notify),Xk(t.notify),Zk()}function $k(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=jk.get(o);jk.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},Qk(o,s,e,t)),jk.set(o,s),Zk();let c=n===`base`?e:t;return i===zt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?Jk(c,r,i,a):{status:`loading`})):{status:`error`,message:vk,retry:!1}}function eA(){if(F.bundleSourcePretty=!F.bundleSourcePretty,!F.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of Tk)e(n)&&Tk.delete(t);for(let[t,n]of Ak)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&Ak.delete(t);for(let[t,n]of jk)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&jk.delete(t)}function tA(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function nA(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 rA(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function iA(e){let t=e.slice(e.lastIndexOf(`/`)+1);return t===`package-lock.json`||t===`npm-shrinkwrap.json`?`npm`:t===`pnpm-lock.yaml`||/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:t===`yarn.lock`?`yarn`:null}var aA=4,oA=new Map;function sA(e,t,n,r,i){if(!F.bundleSourceLockfile)return null;let a=iA(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=oA.get(o)??{status:`loading`};oA.delete(o),oA.set(o,s);for(let e of oA.keys())oA.size>aA&&oA.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}package.json`);import(`./chunk-IZ7POWI3.js`).then(({readLockfile:t})=>Object.assign(s,{status:`ready`,lockfile:{id:o,...t(a,n,{manifest:e})}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function cA(){F.bundleSourceLockfile=!F.bundleSourceLockfile;for(let[e,t]of oA)t.status===`error`&&oA.delete(e)}var lA=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,uA=e=>`link:${e}`,dA=e=>e===`.`?`__own__`:e;function fA(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[uA(e),dA(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[uA(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])=>dA(e)))];return{treeData:o,files:s,ownCounts:new Map,transitiveCounts:null,severitySets:new Map,colorSets:new Map,fileFindings:new Map,options:{pkgOf:e=>r.get(e),packageInfoOf:e=>({version:i.get(e).version})},packagesOnly:!0,supportsLayers:!0,layerRoots:{roots:c,appImports:[]},ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>uA(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var pA=[`graph`,`matrix`,`dependencies`],mA=class extends _a{static properties={lockfile:{attribute:!1}};static styles=ha`: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=fA(this.lockfile),this._prep||this._detach(),T.selected=null,T.solo=null,T.focusedPkg=null)}render(){return this.lockfile?this._prep?A`<div class="slot"></div>`:A`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&T.graphState===this._graphState&&ir(),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 AT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:pA,hideAllFiles:!0};await jT(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=T.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){kT()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){kT()?.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)pA.includes(n)&&n!==T.bundleLayout&&(T.lockfileLayout=T.bundleLayout=n,T.selected=null,T.solo=null,T.layoutCache=null,ir(),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`,mA);function hA({title:e,count:t,extra:n=M,tools:r=M,body:i,list:a=!1,className:o=``}){return A`<section class="${`bundles-overview-col ${o}`}"><header class="bundles-overview-col-head"><span class="bundles-overview-col-title">${e} <span class="bundles-overview-col-count">${t}</span>${n}</span>${r}</header><div class="${`bundles-overview-col-body${a?` bundles-overview-col-body--list`:``}`}">${i}</div></section>`}var gA=1024,_A=1024*gA,vA=[`tiny`,`small`,`medium`,`large`,`gigantic`],yA={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*gA,128*gA,_A,8*_A]};function bA(e,t){let n=yA[e].findIndex(e=>t<e);return vA[n===-1?vA.length-1:n]}function xA(e,t,n){return A`<span class="${`npm-sized is-${bA(e,t)}`}">${n}</span>`}var SA=[`preinstall`,`install`,`postinstall`];function CA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),SA.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function wA(e,t=[]){return CA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function TA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return CA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var EA=12096e5,DA=(e,{minimumReleaseAge:t=EA,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,OA=72,kA={top:6,right:0,bottom:18,left:40},AA=24,jA=4,MA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),NA=new Intl.NumberFormat(`en`),PA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,FA=PA({month:`short`,day:`numeric`}),IA=PA({month:`short`,day:`numeric`,year:`numeric`}),LA=PA({month:`short`,year:`numeric`}),RA=PA({month:`long`,year:`numeric`}),zA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,BA=(e,t)=>{let n=t&&ye(e);return A`<dd class="${`npm-downloads-tier ${n?`is-mid`:_e(e)}`}" data-tooltip="${n?t:M}">${zA(e)}</dd>`},VA={week:{label:`Weekly`,of:e=>fe(e).slice(-52),name:e=>`${FA(e.from)} \u2013 ${IA(e.to)}`},month:{label:`Monthly`,of:pe,name:e=>RA(e.from)}},HA=(e,t)=>`${NA.format(e)} downloads, ${t}`;function UA(e){let t=pe(e).at(-1);return t?WA(t):null}var WA=({total:e,from:t})=>({total:e,month:RA(t)});function GA(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 KA=class extends _a{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=VA[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(VA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&HA(i.total,r(i))}]})),this._tier=he(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:HA(t,`${IA(de(n.start,n.days.length-e.length))} \u2013 ${IA(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<=kA.left+kA.right)return null;let r=n-kA.left-kA.right,i=OA-kA.bottom,a=GA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-kA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>kA.left+(e+.5)*l:e=>kA.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-kA.left)/l))),p=LA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(AA,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(jA,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:LA(m.to),...h,ticks:[[0,MA.format(0)],[a,MA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${LA(m.to)}; the latest ${this._unit}: ${HA(m.total,e.name(m))}.`}}_stat(e,t,n){return A`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||M}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return A`${e?MA.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return A`<div class="npm-stat"><dt class="sr-only">${VA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||M}">${Object.keys(VA).map(e=>A`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?M:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return A`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(VA).map(([e,{label:t}])=>A`<button type="button" aria-pressed="${String(this._unit===e)}" @click="${()=>{this._unit=e,this._at=null}}">${t}</button>`)} </span><span class="npm-downloads-readout" aria-live="polite">${e?A`<strong>${NA.format(e.total)}</strong> <span>${VA[this._unit].name(e)}</span>`:M}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return A`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?A`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${BA(this._tier,this.known)}</div>`:M}</dl>${e?this._controls(t):M}</div>${e?this._plot(t):M}`}_plot(e){let t=this._shape;if(!t)return A`<div class="npm-downloads-plot" style="${D({height:`${OA}px`})}"></div>`;let n=this._width;return A`<div class="npm-downloads-plot" style="${D({height:`${OA}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="${OA}" viewBox="0 0 ${n} ${OA}" aria-hidden="true">${t.ticks.map(([e,r])=>j`<line class="npm-downloads-grid" x1=${kA.left} x2=${n-kA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
|
|
167
|
-
<text class="npm-downloads-tick" x=${kA.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>j`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):j`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${kA.left}" y="${OA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-kA.right}" y="${OA-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?j`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${kA.top} y2=${t.bottom}></line>
|
|
168
|
-
<circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:M}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,KA);function qA(e,t){let n=JA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var JA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),YA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function XA(e,t){let n=t.filter(e=>YA.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 ZA=e=>e?.replace(/\.git$/u,``),QA=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&&ZA(r)?[n,ZA(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&&ZA(r)?[n,ZA(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))&&ZA(n.slice(r+1))?[n.slice(0,r),ZA(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,ZA(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&&ZA(r)?[n,ZA(r),t.slice(1)]:null}}]]),$A=new Map([...QA.values()].map(e=>[e.domain,e])),ej=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...QA.keys()].map(e=>`${e}:`)]);function tj(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 nj=e=>{try{return new URL(e)}catch{return null}};function rj(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=ej.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(nj(r))return nj(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}`),nj(a)}function ij(e){if(!e)return null;let t=rj(tj(e)?`github:${e}`:e);if(!t)return null;let n=QA.get(t.protocol.slice(0,-1)),r=n??$A.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 aj(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=ij(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=nj(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 oj(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var sj=e=>aj(e)===`registry`,cj=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function lj(e){let t=[];for(let[n,r]of cj)for(let[i,a]of Object.entries(e?.[n]??{})){let e=oj(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ei(e)&&sj(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function uj(e,t){let n=e=>new Map(lj(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 dj=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>A`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function fj(e,t=null,n=void 0){let r=Pj(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Gb(e.name,e.version,t,{signal:n}),JO);return r.status===`ready`?r:null}function pj(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}=Gr(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 mj=e=>e.displayLabel??e.label,hj=class extends xe{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[xe.styles,ha`.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=pj(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(mj)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return mj(e)}optionIcon(e){return e.format?A`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?k(ea):e.format===`sourcemap`?k($i):A`<img src="./stasis.svg" alt="">`}</span>`:M}choices(){let e=this._query.normalize(`NFKC`).toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(t=>e.every(e=>`${t.label} ${t.detail}`.normalize(`NFKC`).toLocaleLowerCase().includes(e))),n=this.versions?t:t.toSorted((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`}));return{pinned:[],sections:[{label:null,options:n}],facets:[],showFacets:!1,count:n.length,total:this.options.length}}};customElements.get(`bundle-selector`)||customElements.define(`bundle-selector`,hj);var gj=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function _j(e){let t=String(e??``).trim(),n=gj.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!ei(r)||i!==null&&!ti(i)?null:{name:r,spec:i}}var vj=(e,t=null)=>t==null?e:`${e}@${t}`;function yj(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=qA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function bj(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 xj(e,t){let n=Rt(e,t.files);return{...n,npm:e.npm,npmEntries:yj(e.npm.manifest,n.json.sources),risk:()=>fj(e.npm)}}function Sj(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:li.has(t)?t:`overview`,...n}:null}var Cj=3,wj=new Map,Tj=new Map,Ej=1e4,Dj=3e5,Oj=null;function kj(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==Oj&&(wj.clear(),Tj.clear(),Oj=e),wj}function Aj(e,t){let n=kj();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>Cj;)n.delete(n.keys().next().value)}async function jj(e,t,n){let r=kj().get(`${e}@${t}`);if(r)return Aj(r.entry,r.details),r;let i=await Cb(e,t,n),a=bj(i),o=xj(a,i);return a.npm.private||Aj(a,o),Nj(i),{entry:a,details:o}}async function Mj(e,t,n){let r=await Cb(e.npm.name,e.npm.version,{...n,patch:t});return{...Rt({integrity:`${e.integrity} patch:${t.hash}`,size:e.size},r.files),npmPatch:{name:e.npm.name,version:e.npm.version,patch:t}}}function Nj({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]&&Tj.get(r)?.status!==`ready`&&Tj.set(r,{status:`known`,data:n[e]})}}function Pj(e,t,n,r){kj();let i=`${e}\0${t}`,a=Tj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return Tj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return Tj.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(Ej*2**(t-1),Dj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>Tj.get(i)===o?e===null?(Tj.delete(i),null):(Tj.set(i,e),e.status===`error`&&setTimeout(()=>{Tj.get(i)===e&&X()},e.wait).unref?.(),Ij(),null):null).catch(()=>{}),o}var Fj=!1;function Ij(){Fj||(Fj=!0,queueMicrotask(()=>{Fj=!1,X()}))}function Lj(e,t=void 0){return Pj(`versions`,e,()=>Vb(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 Rj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function zj(e,t,n=Date.now()){let r=Rj(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&&Bj(e,i,n)&&{age:Wj(i,n)}}})}function Bj(e,t,n=Date.now()){return e.status===`ready`&&DA(t,{minimumReleaseAge:e.teamScoped?0:EA,now:n})}var Vj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function Hj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?Vj.format(-n,`day`):n<730?Vj.format(-Math.floor(n/30.44),`month`):Vj.format(-Math.floor(n/365.25),`year`);return`${IA(Date.parse(e))} \xB7 ${r}`}var Uj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function Wj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?Uj.format(-n,`minute`):n<1440?Uj.format(-Math.floor(n/60),`hour`):Uj.format(-Math.floor(n/1440),`day`)}var Gj=e=>IA(Date.parse(e)),Kj=e=>`Published on ${Gj(e)}`;function qj(e){let{name:t,version:n}=e.npm,r=Lj(t),i=zj(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 jj(t,e)).details,dependencies:cM,openDependency:mM,open:(e,n,r)=>Jj(t,e,`compare`,n?{compareSpec:n,...ai(r)}:{})}}function Jj(e=null,t=null,n=`overview`,r={}){!I()||!G?.active||G.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function Yj(e,t=null){F.currentView=`npm`,F.npmLookup=e,F.npmOpening=t,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}var Xj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,Zj=new Set([`overview`,`compare`]);async function Qj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return Yj({input:F.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=vj(r,i),s=F.currentView===`bundles`&&F.bundleDetails?.npm,c=s&&F.bundles?.[0]?.npm?.name===r&&F.bundles[0].npm.version===i?F.bundles[0]:null,l=c?F.bundleDetails:null;if(!c){let e=i!=null&&kj().has(`${r}@${i}`);!s&&!e&&(Yj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;Lj(r,u.signal),i!=null&&Xj.test(i)&&Zj.has(a)&&fj({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await jj(r,i??`latest`,{signal:nv()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(tM=null,Yj({input:o,error:e.message}),{view:`npm`})}if(!t()||!I())return u.abort(),!1}tM?.name===r&&tM.spec===i&&(rM([o,...nM().filter(e=>e!==o)]),tM=null),ir();let u=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null;return a===`review`&&(F.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{},...e.patch?{patch:e.patch}:{}}),F.bundles=[c],Eq(c.integrity,a),a===`code`&&e.file!=null&&(F.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?F.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:ii(e.compareMode)}:u&&(F.bundleCompare=u),F.bundleDetails=l,F.npmLookup={input:c.name,error:null},F.npmOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),Sj(c,F.bundleDetailsTab,Kx(F))}var $j=10,eM=()=>`deepview.npm.recent.${F.managedSession?.id??`anonymous`}`,tM=null;function nM(){try{let e=JSON.parse(localStorage.getItem(eM())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&_j(e)):[]}catch{return[]}}function rM(e){try{localStorage.setItem(eM(),JSON.stringify(e.slice(0,$j)))}catch{}}function iM(e){rM(nM().filter(t=>t!==e)),X()}function aM(e){let t=_j(e);if(!t){F.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}tM=t,Jj(t.name,t.spec)}function oM(e){e.preventDefault(),aM(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function sM(){let e=F.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(F.managedSession?.role),n=nM();return A`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${k(ea)}</span><h1 id="npm-lookup-title">npm packages</h1></header><p class="npm-lookup-intro">Open a published version to read its files, as its tarball has them. ${t?M:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${oM}"><input name="package" type="text" aria-label="Package" autocomplete="off" spellcheck="false" maxlength="500" placeholder="lodash, @scope/name@1.2.3 or an npmjs.com link" .value="${e.input??``}"> <button type="submit">Open</button></form><div class="npm-lookup-message">${e.error?A`<p class="npm-lookup-error" role="alert">${e.error}</p>`:M}</div>${n.length>0?A`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>A`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>aM(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>iM(e)}">×</button></li>`)}</ul></section>`:M}</section>`}function cM(e,t){let n=uj(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?fj(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 lM=e=>{let t=fj(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},uM=({kind:e,name:t})=>`${e??``}\0${t}`,dM=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,fM=e=>dM.exec(oj(e)?.spec??e.trim())?.[1]??null,pM=e=>oj(e)?.name??null;function mM({opens:e,from:t,to:n}){if(!e)return;let r=n&&fM(n),i=t&&fM(t);!i||!r||i===r||pM(t)!==pM(n)?Jj(e):Jj(e,r,`compare`,{compareSpec:i})}function hM(e){let t=lj(e.npm.manifest);if(t.length===0)return M;let n=lM(e.npm);return hA({title:`Dependencies`,count:t.length,list:!0,body:A`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(uM(e))??[],s=A`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${dj(o)}</span> ${i?A`<span class="npm-dependency-kind">${i}</span>`:M} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return A`<li>${a?A`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>Jj(a)}">${s}</button>`:A`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var gM=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function _M(e){let t=lM(e),n=Map.groupBy(lj(e.manifest).flatMap(e=>(t.get(uM(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return gM.filter(([e])=>n.has(e)).map(([t,r,i])=>A`<span class="npm-extension is-warn npm-dependency-check" data-tooltip="${`${i(e.version)}: ${n.get(t).map(({name:e,range:t})=>`${e} ${t}`).join(`, `)}`}"><span>${r}</span><span class="npm-extension-count">${n.get(t).length}</span></span>`)}function vM(e,t){let{name:n,version:r}=e.npm,i=Pj(`tags`,`${n}@${r}`,()=>Wb(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?M:A`<span class="bundle-origin-tags">${i.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${tt(t,e)}" target="_blank" rel="noopener noreferrer">${k(Yi)}<span>${e}</span></a>`)}</span>`}function yM(e,t,n=e){let r=n===e||n===`./${e}`?M:`./${e}`;return t?.has(e)?A`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function bM(e,t,n){let r=e.knownAccounts?.includes(t);return A`<a class="${`bundle-origin-link npm-account ${r?`is-known`:`is-unknown`}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(t)}`}" data-tooltip="${r?`Publishes one of npm's most downloaded packages`:`Unknown publisher`}" target="_blank" rel="noopener noreferrer"><span>${n}</span></a>`}var xM=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,SM=e=>e.replace(xM,`$1`);function CM(e,{prefix:t=``,githubFigures:n=M,provenance:r=M,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?at({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=Lj(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return A`<dl class="bundles-detail-meta npm-facts">${e.npm.private?A`<dt>Access</dt><dd>Private</dd>`:M} ${o.deprecated?A`<dt>Deprecated</dt><dd class="npm-deprecated">${SM(o.deprecated)}</dd>`:M} ${o.description?A`<dt>Description</dt><dd>${o.description}</dd>`:M} ${o.license?A`<dt>License</dt><dd>${XA(o.license,[...a??[]]).map(({text:e,file:t})=>yM(t,a,e))}</dd>`:M} ${o.author?A`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?A`${bM(o,o.authorAccount,o.author)}${o.author===o.authorAccount?M:A`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:M} ${o.publisher&&o.publisher!==o.authorAccount?A`<dt>Publisher</dt><dd class="bundle-origin-row">${bM(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?A`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:M} ${u?A`<dt>Published</dt><dd>${Bj(l,u)?A`<span class="npm-recent">${Hj(u)}</span>`:Hj(u)}</dd>`:M} ${c?A`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${k(ca)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${c.commit.href}" data-tooltip="${c.commit.hash}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer">${k(la)}<span>${c.commit.text}</span></a> ${vM(e,s)}`:A`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:M} ${r===M?M:A`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?A`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:M}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M}</dl>`}var wM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?yM(n,t,e):e});function TM(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:qA(r[e],t)??JA(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=wA(r,t),l=lj(r).length;return A`${i.map(({label:e,path:r,file:i})=>A`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${qe(i,Ge(n,i))}${yM(i,t,r)}</span></dd>`)} ${r.type?A`<dt>Type</dt><dd class="mono">${r.type}</dd>`:M} ${s.length>0?A`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:M} ${r.engines?A`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:M} ${c.length>0||r.hasInstallScript?A`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>A`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${wM(n,t)}</code></div>`)}</dd>`:M}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${xA(`dependencies`,l,l===0?`None`:l)}${_M(e.npm)}</dd>`}var EM=class extends _a{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=zj(this.list?.status===`ready`?this.list:{versions:[],distTags:{}},this.version).map(({id:e,detail:t,date:n,age:r})=>({value:e,label:e,detail:t,secondary:n,...r&&{secondaryWarning:r}}));return A`<bundle-selector .options="${e}" .value="${this.version}" noun="version" versions label="${`Version of ${this.name}`}" placeholder="${this.version}" ?disabled="${e.length<=1}" aria-busy="${this.list?.status===`loading`?`true`:M}" @bundle-change="${e=>{e.detail.value!==this.version&&Jj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,EM);var DM=e=>A`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,OM=[[`commits`,`Commits`,DM(j`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,DM(j`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,DM(j`<circle cx="4" cy="3.5" r="1.75"/><circle cx="4" cy="12.5" r="1.75"/><circle cx="12" cy="12.5" r="1.75"/>
|
|
169
|
-
<path d="M4 5.25v5.5M12 10.75V6.5a2 2 0 0 0-2-2H7.5M9 3 7.5 4.5 9 6"/>`)],[`agents`,`Agents`,DM(j`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
|
|
170
|
-
<circle cx="5.75" cy="8.25" r="1.1" fill="currentColor" stroke="none"/><circle cx="10.25" cy="8.25" r="1.1" fill="currentColor" stroke="none"/>`)],[`pulse`,`Pulse`,DM(j`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,DM(j`<path d="M5 3.25v9.5L12.75 8z"/>`)]],kM=new Set(OM.map(([e])=>e)),AM=`commits`;function jM(e){return kM.has(e)&&(AM=e),AM}var MM=new Map,NM=new Set,PM=e=>MM.get(e)??null,FM=e=>MM.has(e)?{subtab:MM.get(e)}:{},IM=e=>{NM.add(e)};function LM(e,t){let n=fi(e,t)?t:null;if(n!==PM(e)){n?MM.set(e,n):MM.delete(e);for(let t of NM)t(e)}}var RM=[[1,`Week`,`the week before`],[4,`Month`,`the month before`],[13,`Quarter`,`the quarter before`],[52,`Year`,`the year before`]],zM=()=>RM.find(([,e])=>e.toLowerCase()===PM(`pulse`))?.[0]??4;function BM({repoId:e,commit:t,path:n},r,i){LM(r,i),G?.pushRoute({view:`repository-code`,repoId:e,commit:t,path:n,bundleTab:r,...FM(r)})}var VM=e=>A`<div class="activity-views" role="group" aria-label="Activity">${OM.map(([t,n,r])=>A`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`;function HM(e){let t=lt(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?A`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),A`<div class="bundles-slide-placeholder">Loading…</div>`);return a.loaded=()=>t.module!==null,a}var UM=HM(`./activity.js`);function WM(e,t){UM.loaded()||jb(e,t,{state:PM(t)===`closed`?`closed`:`open`,weeks:zM()})}var GM=/^[a-f\d]{40}$/iu,KM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),qM=({repo:e,path:t})=>t?`${e}/${t}`:e,JM=new Map,YM=new Map,XM=3e4,ZM=3e4,QM=null;function $M(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==QM&&(JM.clear(),YM.clear(),QM=e),JM}function eN(e,t){let n=$M(),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()+XM}).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 tN(e){let t=$M().get(e);t?.status===`ready`&&Date.now()-t.at<ZM||(t?.status===`ready`?$M().set(e,{...t,stale:!0}):$M().delete(e))}var nN=()=>eN(`repositories`,()=>Tb()),rN=e=>eN(`refs\0${e}`,()=>Eb(e)),iN=({repoId:e,repo:t})=>t??nN().value?.find(t=>t.repoId===e)?.fullName??null,aN=(e,t)=>YM.get(`${e}\0${t}`)??null;function oN(e,t,n){$M(),n&&YM.set(`${e}\0${t}`,n)}function sN(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:`${qM({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 cN=/^readme(?:\.[^/]*)?$/iu;function lN(e,t=new Map){let n=e.filter(e=>cN.test(e)).toSorted((e,t)=>+!/\.md$/iu.test(e)-!/\.md$/iu.test(t)||e.localeCompare(t)),r=e.map(e=>({path:e,depth:e.split(`/`).length,size:t.get(e)??0})).toSorted((e,t)=>e.depth-t.depth||t.size-e.size||e.path.localeCompare(t.path)).map(({path:e})=>e);return[...new Set([...n,...e.filter(e=>e===`package.json`),...r])]}function uN(e,t){let n=Rt(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:lN(r,n.fileSizes)}}function dN(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository,o=ui.has(t)?t:`code`;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o,...FM(o),...n}}function fN({repoId:e,commit:t=null,ref:n=null,revision:r=void 0,path:i=``,repo:a=null,file:o=null,bundleTab:s=`code`,compare:c=null}){if(!I()||!G?.active)return;let l=c?.target?{...GM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ai(c.mode)}:{};G.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...FM(s),...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var pN=e=>e.commit??e.ref??``,mN=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function hN({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&GM.test(r.name)?r.name.toLowerCase():null;fN({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:mN(r),revision:r}})}function gN({repoId:e,repo:t,commit:n,revision:r},i,a){fN({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:mN(r),revision:r}})}function _N(e){F.currentView=`repository-code`,F.repositoryCodeOpening=e,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function vN(e){let t=F.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===W()?t.repository:null}var yN=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function bN(e,t){if(yN.has(t?.code))try{let t=await Db(e.repoId,pN(e),e.path,{signal:nv()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));F.repositoryCodeOpening?.error&&KM(F.repositoryCodeOpening,e)&&n.length>0&&GM.test(t.commit)&&(F.repositoryCodeOpening={...F.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function xN(e){try{let t=await Db(e.repoId,pN(e),``,{signal:nv(),commitOnly:!0});F.repositoryCodeOpening===e&&GM.test(t?.commit??``)&&(F.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function SN({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){fN({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function CN(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=ui.has(e.bundleTab)?e.bundleTab:`code`;LM(o,e.subtab);let s=e=>({view:`repository-code`,repoId:r,commit:e,path:a,bundleTab:o,...FM(o)});$M();let c=F.currentView===`bundles`&&F.bundles?.[0]?.repository&&F.bundleDetails?.integrity===F.bundles[0].integrity?F.bundles[0]:null,l=i&&c&&KM(c.repository,{repoId:r,commit:i,path:a})?c:null,u=l?F.bundleDetails:null,d=F.currentView===`repository-code`?F.repositoryCodeOpening:null;if(!l&&i&&d?.code===`directory-too-large`&&KM(d,{repoId:r,commit:i,path:a}))return _N({...d,tab:o}),s(i);if(!l&&di.has(o)){WM(r,o);let c=e.revision===void 0?i?YM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;tN(`refs\0${r}`);let l=nN().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){_N(u),G?.showing(e),n();try{let t=await Db(r,pN(e),``,{signal:nv(),commitOnly:!0});d=GM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(_N({...u,error:e.message,code:e?.code??null}),s(null))}if(!t())return!1;if(!d)return _N({...u,error:`The server answered with no commit.`}),s(null)}return c&&YM.set(`${r}\0${d}`,c),_N({...u,commit:d,ref:null,historyOnly:!0}),n(),s(d)}if(!l){let d=e.revision===void 0?i?YM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,f=nN().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};tN(`refs\0${r}`);let m=o===`treemap`,h=c&&!m?{integrity:c.integrity,generation:W(),repository:{repoId:r,repo:p.repo,commit:i,path:a,revision:d}}:null;h?(F.repositoryCodePending=h,X({animate:!1})):(_N(p),n()),m&&!i&&xN(p),G?.showing(e);let g;try{if(g=await wb(r,pN(e),a,{signal:nv()}),g?.repoId!==r||i&&g.commit!==i||g.path!==a||!GM.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`&&GM.test(e.commit??``)?e.commit.toLowerCase():i,r={...p,commit:n,error:e.message,code:e?.code??null};return _N(r),bN(r,e),s(n)}finally{h&&F.repositoryCodePending===h&&(F.repositoryCodePending=null,F.currentView===`bundles`&&F.selectedBundle===h.integrity&&X({animate:!1}))}if(!t()||!I())return!1;d&&YM.set(`${r}\0${g.commit}`,d),l=sN(g,d),u=uN(l,g)}ir();let f=F.bundleCompare?.bundle===l.integrity?F.bundleCompare:null,p=e.compareCommit??e.compareTarget??null;return F.bundles=[l],Eq(l.integrity,o),o===`compare`&&p?F.bundleCompare={bundle:l.integrity,target:p,mode:ii(e.compareMode)}:f&&o!==`compare`&&(F.bundleCompare=f),o===`code`&&e.file!=null?F.bundleCodeFileRequest={bundle:l.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}:o===`code`&&typeof e.filePath==`string`&&(F.bundleCodeFileRequest={bundle:l.integrity,path:e.filePath}),F.bundleDetails=u,F.repositoryCodeOpening=null,F.currentManagedTeam=null,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),dN(l,F.bundleDetailsTab,Kx(F))}function wN({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 TN=new Set([`issues`,`pulls`,`agents`,`pulse`]);function EN({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 DN=class extends _a{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=EN(e);this._edit=t??{kind:e.kind,name:e.name},t&&hN(this.repository,t,this.tab)}render(){if(!this.repository)return M;let{repoId:e,repo:t,commit:n,path:r}=this.repository,i=this.repos?.status===`ready`?this.repos.value:[],a=i.map(e=>({value:e.repoId,label:e.fullName}));i.some(t=>t.repoId===e)||a.unshift({value:e,label:t??`Repository ${e}`});let o=this._edit??wN(this.repository,this.refs),s=TN.has(this.tab),c=r&&!s?r.split(`/`):[],l=t??i.find(t=>t.repoId===e)?.fullName,u=l&&n?`https://github.com/${[...l.split(`/`),`tree`,n,...c].map(encodeURIComponent).join(`/`)}`:null;return A`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&fN({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?A`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>gN(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?A`<span aria-current="location">${e}</span>`:A`<button type="button" @click="${()=>gN(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:M} ${s?M:A`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?A`<a class="bundles-slide-commit" href="${u}" data-tooltip="${n}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer" aria-label="${`View this directory at commit ${n.slice(0,7)} on GitHub`}">${k(la)}<span>${n.slice(0,7)}</span></a>`:M}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,DN);function ON(e){let{listing:t}=e;return t?A`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>A`<li><button type="button" class="repository-code-directory" @click="${()=>gN({...e,commit:t.commit},n.path,e.tab)}">${Je}<span>${n.name}</span></button></li>`)}</ul></div>`:M}var kN=new Map,AN=new Set,jN=null;function MN(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==jN&&(kN.clear(),jN=e),kN}var NN=()=>{for(let e of AN)e.requestUpdate()};function PN({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=MN().get(r);if(i)return i;let a={key:r,status:`loading`};return kN.set(r,a),Ab(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 kN.get(r)===a&&kN.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=>{kN.get(r)===a&&(e?.name===`AbortError`?kN.delete(r):kN.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(NN),a}var FN=class extends _a{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),AN.add(this)}disconnectedCallback(){AN.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return M;let e=PN(this.repository);return e.status===`error`?A`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{kN.delete(e.key),NN()}}">Retry</button></div>`:e.status===`ready`?A`${e.cut?A`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:M}<bundle-treemap .details="${e.details}"></bundle-treemap>`:A`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,FN);var IN=A`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" aria-hidden="true" viewBox="0 75 405 400"><path fill="currentColor" d="m62 447.6 65.8-68.2c2.2-.9 22.7 12 28.2 14.1C295.4 446.8 399.2 263.6 285.1 172 184.3 91.1 41.1 191.5 82 315.6c3.9 12 10.8 21.7 15.4 33.2l-47.1 47C-32 294.9 7.4 142.3 126.3 91.3 241.3 42 374.4 112 398 234.5c29.4 152.7-116.5 274.9-262.7 223.6-15.9-5.6-17-10.6-34.9-10.6H62Z"/><path fill="#e02129" d="M190.1 181.8c128.8-15 141.2 170.8 26 182.6-126.4 12.9-137.9-169.5-26-182.6M209 236c-7.4 5.6-10.8-5.4-13-7.7-9.6-10.3-19.4-.8-14 1.7s9.5-.3 10.1 5.6-9 9.9-7.9 16.4c13.2-5.9 25.9-6.4 39.1 0 3.2-7.1-7.9-12.1-7.8-14.8.1-9.4 11.6-6.2 12.6-7.2 4.3-4.3-8.9-11.7-17.1-.6-1.3 1.8-1.4 6.3-1.9 6.6zm-7.6 14.3c-10.1-1.5-19.3 10-25 11.8s-23.2 1.5-14.9 16.3c3.9.8 5.1-13.1 13.3-9.4 1.9 13.1-2.8 8.7-9 12.2-10 5.7-8.1 20.2-1.3 12.8 2.7-3 1.5-9.6 10.3-7.7 1.3 15.9-.8 8.4-7.9 11.7-11.5 5.3-9 20.2-1.7 14.8s0-10.8 8.6-9.3c1 .2 5.8 10.8 12.4 14.5 13.7 7.9 35 5.5 44.8-7.6s1.6-6.5 1.8-6.7c4-3.1 11.3 4.6 11 9.2l5.5-1.5c2.2-3.1-1.6-8.2-3.9-10.3-7.6-6.8-13.5.9-11-14.8 9-2.6 8.4 8.7 9.4 9.4 6 4.2 8.4-7.8 1.5-13.2-7.4-5.8-13.2 3.6-10.9-13.4 7.4-1.3 8.3 3.2 9.4 9.4 8.3 1.4 6.9-7.2 3.1-11.8-4.5-5.5-10.5-2.6-15.7-4.7-1.3-.5-25.1-18.8-25.1-9.4v52.5c-1.5.6-4.7-1.4-4.7-2.3z"/><ellipse cx="206.6" cy="270" fill="#e02129" rx="74.6" ry="66.5"/><path fill="#fff" d="M200.6 250v55.5s.4 1 .5 1.1c1.1 1.8 3.7 1.8 4.9 0 .1-.2.5-1.1.5-1.3v-55.4a34 34 0 0 1 17.2 5.8c3.1 2.2 5.6 5.1 7.7 8.3 3.8.1 7.6-.5 11.3.8 5.2 1.8 9.6 7.5 9.6 13.1 0 4.2-5.8 5.3-7.3 1.5-.7-1.8-.3-3.2-1.7-5-.8-1-3-2.7-4.3-2.7h-4.5c1.1 4.1.8 8.4.8 12.6.1.1 1.7-.1 2-.1 7.3 0 13.9 6 14.4 13.5.3 5.3-6.3 6-7.5 1.8-.6-2.1-.3-3.5-2-5.3-.8-.9-2.9-2.2-4.2-2.2h-3c.2 1 .2 2.2.1 3.2 0 2.1-.4 4.3-.9 6.4-.2.9-.5 1.8-.7 2.6 5.5-.7 10.5.7 14.1 5 1.7 2 3.4 5.6 3.6 8.3.5 5.4-6.6 6.7-7.8 1.2-.5-2.3-.7-3.8-2.7-5.4-3.1-2.5-7-1.2-10.7-1.4-1.9 3.2-4.5 6.1-7.5 8.4-14.4 10.8-36.9 7.2-46.2-8.4-.4-.2-2.4 0-2.9 0-3.2 0-6-.6-8.4 2.1-1.6 1.8-1.5 3.2-2.1 5.3-1.2 4.5-7.9 3.6-7.7-1.4.3-5.5 4.9-11.3 10.1-13 1.7-.5 5.7-1 7.4-.6.1 0 .1.1.1-.1 0-1.1-.7-2.8-.9-4.1-.4-2.7-.6-5.4-.4-8.1-2.8-.1-5.3.2-7.2 2.5-1.4 1.7-1.3 2.9-1.8 4.9-1.1 4.4-7.9 3.8-7.6-1.5.2-4.1 2.9-8.7 6.3-11 3-2.1 6.5-2.7 10.1-2.6v-5.8c.2-2.2.3-4.5.9-6.6h-4.5c-1.8 0-4.2 2.2-4.9 3.7-1.1 2.3-.4 6-4.1 6.3-3.4.3-4.5-2.3-4.1-5.2.9-6.1 5.1-11 11.3-12.2 3.1-.6 6.2 0 9.3-.4 2.2-3.1 4.8-6 7.9-8.3 4.9-3.5 10.9-5.1 16.8-5.8Z"/><path fill="#fff" d="M197.3 235.1c4.1-.7 8.3-.9 12.4 0 1.1-7.6 7-14.6 15.2-14 3.3.2 5.7 3.1 3.6 6.1-1.5 2-4.1 1-6.2 1.7s-3.7 2.5-4.5 4.4c-.3.7-1.2 3.8-.9 4.3 0 .1 1.3 1 1.6 1.2 3.4 3.1 6.2 7.4 6.6 12 0 .6-.1 1.2.1 1.8-.1.1-2.6-1.5-2.9-1.8-10.5-6-27.5-5.7-37.9.4-.2.1-2.3 1.6-2.4 1.5-.2-5.5 2.8-10.5 6.8-14 .3-.3 1.3-.9 1.5-1.1.1-.1.1-.2.1-.3 0-.5-.3-1.8-.5-2.3-.9-3.3-3-6-6.6-6.3h-2.2c-4.2-.4-4.5-6.5-.2-7.4 2.3-.5 5.2 0 7.3 1 5.2 2.2 8.5 7.4 9.1 12.9Z"/></svg>`,LN=new Map([[`registry`,{label:`Source: npm registry`,icon:Ye}],[`repository`,{label:`Source: GitHub repository`,icon:k(ca)}],[`osv`,{label:`Source: OSV`,icon:IN}]]);function RN(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function zN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var BN=A`<svg class="external-link-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13L13 3"/><path d="M5 3h8v8"/></svg>`;function VN(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return A`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return A`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function HN(e,t){return A`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${RN(e)}</span> ${typeof t==`number`?A`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:M}</div>`}function UN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??zN(t)??(typeof e.id==`string`?e.id:null),r=LN.get(e.source);return!r&&!(n&&t)?M:A`<span class="bundle-advisory-reference">${r?A`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:M} ${n&&t?A`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${BN}</a>`:M}</span>`}function WN(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?A`<span class="bundle-advisory-cwes">${t.map((e,t)=>A`${t===0?``:`, `}${VN(e)}`)}</span>`:M}function GN(e,t=null){let n=typeof e.cvss?.vectorString==`string`?e.cvss.vectorString:``,r=typeof e.vulnerable_versions==`string`?e.vulnerable_versions:null,i=Array.isArray(e.versions)?e.versions.filter(e=>typeof e==`string`):[];return A`<li class="bundle-advisory-row">${HN(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?A`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:A`<span class="bundle-advisory-title">${e.title}</span>`} ${UN(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?A`<span>${e.informational}</span>`:M} ${r?A`<span>Affected <span class="mono">${r}</span></span>`:M} ${i.length>0?A`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:M} ${WN(e.cwe)}</div>${n?A`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:M}</div></div></li>`}var KN=(e,t)=>ZO(e,t).runsCode,qN=(e,t=e.length>=ct)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,JN=/^[\w$.]+$/u,YN=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=At.get(e);return t&&JN.test(t)?t:n})].map(([e,n])=>`${e} (${qN([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=ct))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),XN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},ZN=(e,t)=>t===void 0?{path:M,line:M}:{path:e,line:t},QN=(e,t=null)=>[...e].map(([e,n])=>`${At.get(e).name} (${qN(n)}${t?.has(e)?`, new`:``})`).join(`, `);function $N(e,t,n){return e?[...Map.groupBy(e,([e])=>At.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=At.get(r[0][0]),o=r.map(([e,t])=>[At.get(e).name,qN(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>At.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=ZN(n,n===void 0?void 0:XN(r.map(([,e])=>e)));return A`<span data-bundle-view-source="${l.path}" data-bundle-view-line="${l.line}" class="${`npm-runs-code${a?` is-${a}`:``}`}" data-tooltip="${[`${i}: ${o.map(e=>e.join(`, `)).join(`; `)}`,c].filter(Boolean).join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?A`<div class="compare-tip-notice">${c}</div>`:M}</div>`}">${e}</span>`}):M}var eP=(e,t)=>ZO(e,t).exfiltration,tP=e=>[...Et].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),nP=(e,t)=>[...e].map(([e,n])=>`${Et.get(e).name} (${qN(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),rP=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 iP(e,t,n){return e?Dt(e).map(([e,r])=>{let i=ZN(n,n===void 0?void 0:XN([...r.values()]));return A`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${Ot(e,r,t)}`}" data-tooltip="${`${rP.get(e)}: ${nP(r,t)}`}">${e}</span>`}):M}var aP=e=>e.toLowerCase().replaceAll(` `,`-`),oP=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),sP={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function cP(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function lP(e,t,n=[]){let r=Object.keys(sP),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 uP(e,t=`accept`){let n=Object.keys(sP);return n.slice(Math.max(n.indexOf(t),n.indexOf(lP(e,null).verdictLimit)))}function dP({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 fP(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`)||dP({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>oP(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 pP(e,t,n=[]){return lP(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(sP).includes(e.status)))}function mP(e){return e.replaceAll(/\r\n?/gu,`
|
|
171
|
-
`).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var hP=[`critical`,`high`,`moderate`,`low`,`unknown`],gP=e=>hP.includes(e.severity)?e.severity:`unknown`,_P=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function vP(e){return Pj(`stats`,e,()=>Hb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function yP(e){return Pj(`advisories`,e,()=>Ub(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function bP(e){let{name:t,version:n}=e.npm,r=(e,t)=>A`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${BN}</a>`;return A`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?M:r(xP(e),`socket.dev`)}</span>`}var xP=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function SP(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=Pj(`socket`,`${t}@${n}`,()=>Kb(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var CP=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],wP=50,TP=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,EP=e=>A`<svg class="npm-socket-gauge" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6" pathLength="100"></circle><circle class="npm-socket-gauge-fill" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="${`${e} 100`}"></circle></svg>`;function DP(e){let t=SP(e)?.scores;return t?A`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${CP.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return A`<li><a class="${`npm-extension npm-socket-score ${TP(a,i)}`}" href="${xP(e)}" target="_blank" rel="noopener noreferrer">${EP(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:M}var OP=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),kP=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),AP=new Map,jP=new WeakMap;function MP(e){let t=e?SP({npm:e}):null;return t?(jP.has(t)||jP.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),jP.get(t)):AP}var NP=(e=[])=>e.map(e=>{let t=OP.get(e.severity)??`low`;return A`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${kP(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${kP(e.type)}</span>`});function PP(e,t){return fP(e.npm,yP(e.npm.name),SP(e),fj(e.npm,t?t.npm?.version??`(empty)`:null))}function FP(e,t){let n=dP(e),r=n&&t!==null&&[...t].every(hI)?[]:SP(e)?.alerts??[];if(!n&&r.length===0)return M;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return A`<div class="npm-alerts">${n?A`<p class="npm-alert" role="note"><strong>Taken down by npm.</strong> npm's security team removed this package's versions, as it does for malicious code, and serves this placeholder in their place${i?A`: ${yM(i,t,`its readme`)}`:``}.</p>`:M} ${r.length>0?IP(e,r,t):M}</div>`}function IP(e,t,n){return A`<div class="npm-alert npm-socket-alerts" role="note"><span class="npm-socket-alerts-head"><strong>Socket raises ${t.length===1?`an alert`:`${t.length} alerts`} on this version</strong> <a class="npm-package-link" href="${xP(e)}" target="_blank" rel="noopener noreferrer">socket.dev${BN}</a></span><ul>${t.map(e=>{let t=OP.get(e.severity)??`info`;return A`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${kP(e.type)}</span> ${e.file?A`<span class="npm-socket-alert-file">in ${yM(e.file,n)}</span>`:M} ${e.note?A`<p class="npm-socket-alert-note">${e.note}</p>`:M}</li>`})}</ul></div>`}function LP(e,t,n=M){let r=vP(e.npm.name),i=nI(fj(e.npm)?.findings.find(({id:e})=>e===`popularity`));return A`<div class="npm-figures"><npm-downloads-chart role="region" aria-label="Downloads" .downloads="${r.downloads}" .status="${r.status}" .known="${i}"></npm-downloads-chart><div class="npm-figures-actions">${bP(e)}${t}</div>${n}</div>`}var RP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="m8 1.75 1.9 3.9 4.3.6-3.1 3 .75 4.25L8 11.5l-3.85 2 .75-4.25-3.1-3 4.3-.6Z"/></svg>`,zP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><circle cx="8" cy="8" r="1.25" fill="currentColor"/></svg>`,BP=k(ua),VP=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><circle cx="4.5" cy="3.25" r="1.5"/><circle cx="11.5" cy="3.25" r="1.5"/><circle cx="8" cy="12.75" r="1.5"/><path d="M4.5 4.75v.75a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-.75M8 7.5v3.75"/></svg>`;function HP(e){if(!e.npm.manifest.github?.github)return M;let t=vP(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return M;let r=(e,t,r,i)=>A`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${$e(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${MA.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return A`${r(RP,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(VP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(zP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?M:r(BP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?A`<span class="npm-github-archived">Archived</span>`:M}`}var UP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:Pj(`provenance`,`${e}@${t}`,()=>qb(e,t),e=>({provenance:e.provenance??null}));function WP(e){let t=UP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function GP(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 KP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function qP(e){if(e.npm.private)return M;let t=UP(e.npm);if(!t)return A`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return A`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return A`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return A`<span class="npm-provenance-warning" data-tooltip="npm lists provenance for this version, but no statement naming its tarball could be read">Listed, but none for this tarball</span>`;let{manifest:n}=e.npm,{repository:r,commit:i,workflow:a,ref:o,builder:s,run:c,logIndex:l,runner:u}=t.provenance,d=(e,t,n=M)=>A`<a class="bundle-origin-link" href="${e}" data-tooltip="${n}" target="_blank" rel="noopener noreferrer"><span>${t}</span></a>`,f=/^https:\/\/github\.com\/([^/]+\/[^/]+)$/u.exec(r)?.[1]??null,p=GP(s,u),m=p?.startsWith(`GitLab CI`),h=f??r.replace(/^https:\/\//u,``),g=n.github?.github??(n.gitlab?`gitlab.com/${n.gitlab}`:null),_=g&&g.toLowerCase()!==h.toLowerCase(),v=a?.split(`/`).at(-1),y=[a?f&&i?d(`${r}/blob/${i}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,v,a===v?M:a):A`<span class="mono" data-tooltip="${a===v?M:a}">${v}</span>`:M,c?d(c,`Run`):M,l===null?M:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==M);return A`<span class="npm-provenance"><span class="npm-provenance-line">${p?A`<span class="${KP(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:M} <span class="npm-provenance-sep">from</span> ${i?d(f?`${r}/commit/${i}`:m?`${r}/-/commit/${i}`:r,`${h}@${i.slice(0,7)}`,`${r} at ${i}${o?` (${o})`:``}`):d(r,h)} ${_?A`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:M}</span> ${y.length>0?A`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:A`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:M}</span>`}function JP(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 YP(){let e=F.managedSession?.id;return()=>F.managedSession?.id===e}function XP(e,t){return GN({...e,title:e.title??e.id,severity:gP(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>dt({heading:e,severity:n,markdown:r,isCurrent:t}))}function ZP(e){let{name:t,version:n}=e.npm,r=yP(t),i=YP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>JP(e,r.versions,n)),c=_P.map(([e,t])=>({status:e,heading:t(n),advisories:o.filter((t,n)=>s[n]===e)})).filter(e=>e.advisories.length>0),l=s.filter(e=>e===`affects`).length,u=a&&r.keptAt?A`<p class="npm-advisories-note">GitHub's repository advisories are as of ${cI(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?A`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:M,d=r.status===`loading`?A`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?A`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?A`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:A`${u}${c.map(e=>A`<section class="${`npm-advisory-group is-${e.status}`}"><h4 class="npm-advisory-group-head">${e.heading} <span class="bundles-overview-col-count">${e.advisories.length}</span></h4><ul class="bundle-advisories-rows">${e.advisories.map(e=>XP(e,i))}</ul></section>`)}`;return hA({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?A`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:M})}var QP=[...Ct].filter(([,{mark:e}])=>e!==null).map(([e])=>e),$P=[...Ct].filter(([,{mark:e}])=>e===null).map(([e])=>e),eF=[null,`notice`,`warn`];function tF(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=xt(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=St(i,r);eF.indexOf(e)>eF.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>Ct.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var nF=new WeakMap;function rF(e){let t=e.npm?YO(e):e,n=nF.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,$O(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=tF(a.values()),u=Yt(e),d=Bt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!hI(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,fI(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:gI(r,d,u),content:f},nF.set(e,n)}return n}var iF={key:null,chip:null},aF=e=>`${e.npm.name}@${e.npm.version}`,oF=e=>iF.key===aF(e)?iF.chip:null;function sF(e){let t=oF(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{iF={key:null,chip:null},X()}}}function cF(e,t,n,r,{classes:i=``,tooltip:a=M}={}){let o=oF(e)?.id===t.id;return A`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{iF={key:aF(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function lF(e,t,n){let{name:r}=Ct.get(n),{byPath:i,counts:a,marks:o}=rF(t),s=o.get(n);return cF(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&xt(i.get(e)).includes(n)},A`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function uF({counts:e,marks:t,unreadable:n},r,i,a){let o=QP.filter(t=>e.has(t));if(o.length===0)return M;let s=o.some(e=>t.get(e)===`warn`);return A`<div class="${`npm-readability-warning${s?` is-warn`:``}`}" role="note"><span class="npm-readability-warning-text"><strong>${n.toLocaleString(`en`)} of ${r.toLocaleString(`en`)} ${i}</strong> can be hard to review by reading them:</span><ul class="npm-extensions">${o.map(a)}</ul></div>`}function dF(e,t){return uF(rF(t),t.json.sources.length,`files`,n=>lF(e,t,n))}function fF(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=rF(e),o=n?t:void 0;return A`${$N(KN(e,t),void 0,o)}${iP(eP(e,t),pF(r),o)}${uk(e,t,a.get(t))}${ck(i.get(t))}`}var pF=e=>e===void 0||e?.details.npm&&!YO(e.details)?void 0:e&&eP(e.details,e.path);function mF(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=ZO(e,t),o=pF(r),s=o===void 0?null:new Map(Dt(a).map(([e,t])=>[e,Ot(e,t,o)]));return[...n.map(e=>({name:kP(e.type),severity:OP.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var hF=new WeakMap;function gF(e,t){let n=e&&t?.npm?fj(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!hF.has(n)){let t=new Map;for(let{host:r,places:i}of wF(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}]);hF.set(n,t)}return hF.get(n)}function _F(e){if(!e?.length)return M;let t=e.length===1?`New host`:`New hosts`,{was:n}=e[0],r=`${n?`None of ${n}'s files`:`No file of the version compared with`} named ${e.length===1?`it`:`them`}`;return A`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>A`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">line ${t}</span>`)}</div><div class="compare-tip-note">${r}</div></div>`}">${t}</span>`}var vF={icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie)),alerts:e=>MP(e?.npm),alertTags:NP,newHosts:gF,newHostTag:_F,tag:(e,t,n)=>fF(e,t,!1,n),flags:(e,t,n)=>mF(e,t,[],n),warning(e,t){let{byPath:n}=rF(e),r=tF(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return uF(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=Ct.get(e),n=a.get(e);return A`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},yF=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`]]),bF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},xF=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function SF(e){let t=e?.score;if(!t)return M;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[yF.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${xF(a.days)}${a.tier===null?``:`, its package npm's ${zA(a.tier)} by downloads`}`:null,c=[`Risk ${n} of 100`,...o.length===0?[`Nothing found that calls for a look`]:o.map(([e,t])=>`${e}, ${t}`),...s?[s]:[]].join(`
|
|
172
|
-
`);return A`<li><span class="${`npm-extension npm-risk-score ${bF[r]}`}" data-tooltip="${c}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?A`<span class="compare-tip-none">Nothing found that calls for a look</span>`:A`<div class="compare-tip-rows">${o.map(([e,t])=>A`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?A`<div class="compare-tip-note">${s}</div>`:M}</div>`}">${EP(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var CF=(e,t)=>[NF(t.get(`malware`)),PF(t.get(`deprecated`)),RF(e,t.get(`publisher`)),zF(e,t.get(`provenance-lost`)),BF(e,t.get(`held-install-scripts`)),...qF(e,t),...HF(e,t),UF(t.get(`new-hosts`)),JF(t.get(`too-new`))],wF=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function TF(e,t){if(!e||!t?.npm)return M;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=AF(n),i=fj(t.npm,e.npm?.version??`(empty)`),a=wF(i),o=[SF(i),...CF(n,a),YF(n,r),...eI(n,r,a.get(`malware`)),iI(t.npm.name,a.get(`popularity`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function EF(e){let{npm:t}=e,n=AF([t]),r=fj(t),i=wF(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[SF(r),...CF(a,i),YF([t],n),...eI([t],n,i.get(`malware`))].filter(e=>e!==M);return o.length===0?M:A`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function DF(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?WF(`npm-compare-unreadable`,`Now unreadable`,t,n):GF(`${OF[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var OF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},kF=e=>[...Tt.keys()].map(t=>{let n=e.get(`held-${aP(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return GF(`${OF[n?.severity]} npm-held-file npm-files-${aP(t)}`,t,r,e=>nP(e.found,i(e)),tP(r.map(e=>e.found)))});function AF(e){let t=yP(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 jF=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,MF=e=>hP.find(t=>e.some(e=>gP(e)===t));function NF(e){if(!e)return M;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return A`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
|
|
173
|
-
`)}">Malware</span></li>`}function PF(e){return e?A`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${SM(e.message)}">Deprecated</span></li>`:M}var FF={critical:`is-from-known`,high:`is-to-unknown`},IF={known:`is-known`,maintainer:`is-maintainer`},LF={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 RF([e,t],n){if(!n)return M;let{was:r,now:i,wasKnown:a,nowKnown:o,severity:s,major:c}=n,l=n.wasStanding??(a?`known`:`unknown`),u=n.nowStanding??(o?`known`:`unknown`),d=(e,t)=>A`<span class="${`npm-compare-account ${IF[t]??`is-unknown`}`}">~${e}</span>`,f=FF[s]??`is-to-known`,p=A`A different npm account published the open version,<br>${LF[u]},<br>after ${LF[l]}${c?A`<br>in a major release`:M}`;return A`<li><a class="${`npm-extension npm-compare-publisher ${f}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(i)}`}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Published by ~${r} (${e.version}), then ~${i} (${t.version})`}" .tooltipContent="${ZF(`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 zF([e,t],n){return n?A`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${ZF(`npm provenance`,[e,t],[`Listed by npm`,A`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:M}function BF(e,t){if(!t)return M;let{scripts:n,flagged:r=[],was:i}=t,a=new Map(i??[]),o=i?e:e.slice(-1),s=i?[i,n]:[n],c=(e,t)=>e.length===0?A`<span class="compare-tip-none">None</span>`:XF(e.map(([e,n])=>[e,n,t.includes(e)])),l=n.map(([e])=>r.includes(e)?`${e} ${a.has(e)?`changed`:`added`}`:e).join(`, `);return A`<li><span class="npm-extension is-warn npm-compare-install" data-tooltip="${o.map(({version:e},t)=>`${e}: ${s[t].map(([e,t])=>`${e}: ${t}`).join(`; `)||`none`}`).join(` · `)}" .tooltipContent="${ZF(`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 VF=8;function HF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${OF[t.get(e)?.severity]} npm-held-file ${n}`;return[GF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>YN(e.found,e.added),oe(n(`held-runs-code`).map(e=>e.found)),null,!1),GF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>QN(e.found,e.added)),...kF(t),WF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Wr(e.bytes)),DF(t.get(`now-unreadable`)),GF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${QO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),WF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Wr(e.bytes)}, not UTF-8 or holding a NUL`)]}function UF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,VF).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 GF(`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 WF(e,...t){return GF(`npm-compare-file ${e}`,...t)}function GF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return M;let s=n.slice(0,VF),c=n.length>s.length?`and ${(n.length-s.length).toLocaleString(`en`)} more`:null,l=e=>[r(e)].flat(),u=`${t}: ${[...s.map(e=>`${e.path} (${l(e).join(`; `)})`),...c?[c]:[]].join(`, `)}`,d=A`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>A`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?A`<span class="compare-tip-lines">${l(e).map(e=>A`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?A`<div class="compare-tip-note">${c}</div>`:M}</div>`,f=A`${o?A`<span>${t}</span>`:A`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?A`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:M}`;return a?A`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:A`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var KF=(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?`${cI(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${zA(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 qF(e,t){let{version:n}=e.at(-1),r=t.get(`held-non-registry-deps`)?.dependencies??[],i=t.get(`held-unused-deps`),a=i?.dependencies??[],o=t=>t.some(e=>e.added)?`; new since ${e[0].version}: ${t.filter(e=>e.added).map(({name:e})=>e).join(`, `)}`:``,s=[];if(r.length>0){let t=r.filter(e=>e.added).map(e=>`${e.name} was ${e.was??`none`}`);s.push(A`<li><span class="npm-extension is-warn npm-compare-registry" data-tooltip="${`From elsewhere than npm's registry: ${r.map(e=>`${e.name} ${e.now}`).join(`, `)}${o(r)}`}" .tooltipContent="${ZF(`From elsewhere than npm's registry`,[e.at(-1)],[XF(r.map(e=>[e.name,e.now,e.added]))],t.length>0?`New since ${e[0].version}: ${t.join(`, `)}`:null)}"><span>Non-registry deps</span><span class="npm-extension-count">${r.length.toLocaleString(`en`)}</span></span></li>`)}if(a.length>0){let[t,r]=a.length===1?[`it`,`its`]:[`them`,`their`],c=e=>e.kind?`${e.name} (${e.kind})`:e.name;s.push(A`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:OF[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${KF(e,t)?` (${KF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${ZF(`Nothing imports ${t}`,[e.at(-1)],[XF(a.map(t=>[[c(t),KF(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 JF(e){return e?A`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Kj(e.published)}">${Wj(e.published)}</span></li>`:M}function YF(e,t){if(!t)return M;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return M;let i=n.length===0?`is-cleared`:`sev-${MF(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=ZF(`Advisories affecting`,e,t.map(e=>e.length===0?A`<span class="compare-tip-none">none</span>`:A`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${hP.map(t=>[t,e.filter(e=>gP(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>A`<span class="${`compare-tip-severity sev-${e}`}">${t} ${e}</span>`)}</span>`),e.length>1?`${a} new \xB7 ${o} fixed`:null),c=`Advisories affecting ${e.map(({version:e},n)=>`${e}: ${t[n].length}`).join(`, `)}`,l=A`<span>Advisories</span><span class="npm-extension-count">${jF(r.length,n.length)}</span>`;return e.length>1?A`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>QF(e,t)}">${l}</button></li>`:A`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var XF=e=>A`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?A`<span class="compare-tip-none">${e}: none</span>`:A`<span class="${n?`is-flagged`:M}">${e}: <code>${t}</code></span>`)}</span>`,ZF=(e,t,n,r=null)=>A`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>A`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?A`<div class="compare-tip-note">${r}</div>`:M}</div>`;function QF([e,t],[n,r]){let i=YP(),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=>XP(e,i))}));ge({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function $F(e,t,n){if(e===null||e>=n)return!1;let r=MF(t);return r===void 0||hP.indexOf(e<=25?`critical`:`high`)<hP.indexOf(r)}function eI(e,t,n=null){let r=e.at(-1),i=e.map(e=>SP({npm:e})?.scores??null);return!i.at(-1)||n?[]:CP.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&&$F(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=wP?[]:[A`<li><a class="${`npm-extension npm-socket-score ${TP(l,s)}`}" href="${xP({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="${ZF(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?A`<span class="compare-tip-none">none</span>`:A`<span class="${`compare-tip-score ${TP(e,s)}`}">${EP(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${EP(l)}<span>${a}</span><span class="npm-extension-count">${jF(u,l)}</span></a></li>`]})}var tI={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function nI({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 rI(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 ${tI[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?nI(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return A`<span class="${s}" data-tooltip="${l||M}" .tooltipContent="${t||c?A`${t?A`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:M}${c?A`<div class="compare-tip-note">${c}</div>`:M}`:null}">${zA(r??1/0)}</span>`}function iI(e,t){let n=vP(e);return t?A`<li>${rI(t,n.status===`ready`&&n.downloads?UA(n.downloads):null,!0)}</li>`:M}var aI=A`<span class="npm-downloads-tier is-unpopular" data-tooltip="No downloads counted by npm, which counts a package's from the day after it was first published">unpopular</span>`,oI=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),sI={minute:oI(`minute`),hour:oI(`hour`),day:oI(`day`),month:oI(`month`),year:oI(`year`)};function cI(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?sI.minute.format(t):t<1440?sI.hour.format(Math.floor(t/60)):n<60?sI.day.format(n):n<730?sI.month.format(Math.floor(n/30.44)):sI.year.format(Math.floor(n/365.25))}function lI({compared:e},{created:t,gap:n}){if(!t)return M;let[r,i]=e,a=cI(Math.abs(n)),o=[`First published on ${Gj(t)}`,`${a} ${n>=0?`before`:`after`} ${i.version} was`],s=`npm had no package by its name when ${n>=0?r.version:`either version`} was published`;return A`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>A`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function uI(e,t){let n=dj(e.flags);if(t!==`added`||!e.level)return[n,M];let r=e.month?WA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?aI:rI(e,r),e.compared?lI(e,e):M]}function dI(e,t){let{counts:n}=rF(t),r=$P.filter(e=>n.has(e));return r.length===0?M:A`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>lF(e,t,n))}</ul>`}function fI(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 pI(e,t,n=new Map){let r=new Map;for(let i of e){let e=fI(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 mI=/^(?:package\.json|readme(?:\.md)?)$/iu,hI=e=>mI.test(e)||YA.test(e);function gI(e,t,n=new Map){let r=e.filter(hI),i=new Set(e.filter(e=>!hI(e)).map(fI)),{files:a,bytes:o,lines:s}=pI(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:pI(e,t,n).filter(e=>i.has(e.extension))}}var _I=({bytes:e,lines:t})=>t===null?Wr(e):`${Wr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function vI(e,t){let{types:n,extensions:r}=rF(t);return!n.package&&n.extensions.length===0?M:A`<ul class="npm-extensions" aria-label="File types">${n.package?cF(e,{id:`package`,label:`Package`,keeps:hI},A`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${_I(n.package)}`}):M} ${n.extensions.map(t=>cF(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},A`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:_I(t)}))}</ul>`}function yI(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,dI(e,n)],[`types`,`File types`,vI(e,n)],[`socket`,`Socket`,DP(e)]].filter(([,,e])=>e!==M);return r.length===0?M:A`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>A`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function bI(e,t){return e.size===0?M:hA({title:`Binary files`,count:e.size,list:!0,body:A`<ul class="bundles-sources-list">${[...e].map(e=>A`<li><div class="bundles-source-row is-resource">${qe(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?A`<span class="bundles-source-size">${Wr(t.get(e))}</span>`:M}</div></li>`)}</ul>`})}var xI=({severity:e})=>ce.indexOf(e),SI=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function CI(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>xI(e)-xI(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(xI(e.flags[0])-xI(t.flags[0])||t.flags.length-e.flags.length||SI(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function wI(e){return{...qj(e),files:vF,badges:TF,dependencyTags:uI,reviewVerdictLimit:PP}}var TI=/^[a-f\d]{40}$/iu,EI={removed:[],added:[],changed:[]},DI=e=>e.kind===`commit`&&TI.test(e.name)?e.name.toLowerCase():mN(e);function OI(e,t,n){return wN({revision:TI.test(t)?aN(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 kI=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function AI(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=rN(t),o=wN(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?kI(o,r):kI(OI(t,n,a),n),async load(e){let n=await wb(t,e,i,{signal:nv()});if(n?.repoId!==t||n.path!==i||!TI.test(n.commit??``)||TI.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return TI.test(e)||oN(t,r,OI(t,e,null)),{...uN(sN({...n,commit:r},aN(t,r)),n),compareId:r}},open:(e,r,a)=>fN({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...TI.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:OI(t,e,null)}}),dependencies:()=>EI,files:{icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie))},select:(e,n)=>A`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:OI(t,e.value,a):null}" @revision-pick="${t=>e.pick(DI(t.detail))}"></repository-revision-pick>`}}var jI=class extends _a{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=EN(e);this._edit=t??{kind:e.kind,name:e.name},t&&this.dispatchEvent(new CustomEvent(`revision-pick`,{detail:t}))}render(){let e=this._edit??this.revision??{kind:`branch`,name:``};return A`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>cr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,jI);var MI=500,NI=14;function PI(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=mn(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 FI(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function II(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var LI=e=>new TextEncoder().encode(e).length,RI=new Map,zI=new Set,BI=(e,t=F.currentManagedTeam)=>JSON.stringify([t,e]),VI=new Map,HI=null,UI=Promise.resolve();function WI(){let e=new Set;for(let t of F.reports)for(let n of t.groups)for(let t of n)typeof t.id==`string`&&t.id&&e.add(t.id);return e}function GI(){return Array.isArray(F.managedReports)&&F.managedReports.length>0?F.managedReports:F.managedReport==null?[]:[F.managedReport]}function KI(e){let t=new Set,n=!1;for(let r of F.reports)if(r._managedReportId===e){n=!0;for(let e of r.groups??[])for(let n of e)typeof n.id==`string`&&n.id&&t.add(n.id)}return n||F.reports.length===0?t:new Set(WI())}function qI(e){let t=GI();for(let n of F.reports)if(n._managedReportId!=null&&(n.groups??[]).some(t=>t.some(t=>t.id===e))){let e=t.find(e=>e.id===n._managedReportId);if(e)return e}return t[0]??null}function JI(){let e=F.managedSession;return F.serverMode===`managed`&&F.localMode!==!0&&e!=null&&et(e.role,`triage`)}function YI(e){return e===403&&F.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function XI(e,t){let n=VI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},VI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function ZI(e,t,n){if(!JI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=NI;for(;i<r.length&&s<200;){let t=r[i],n=LI(`${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 gx(e.report.id,o,F.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!YI(l)){XI(e,r.slice(a));return}u||console.warn(`managed: the server refused a triage batch`,e.report.id,l,Object.keys(o)),!u&&l===403&&F.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=RI.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),RI.set(n,{key:FI(r),fix:a})}}}function QI(){HI!=null&&(clearTimeout(HI),HI=null);let e=[...VI.values()];if(VI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)UI=UI.then(()=>ZI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});UI=UI.finally(()=>{for(let e of t)Zv(e);for(let e of n)aL(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function $I(){if(GI().length!==0&&JI()&&zI.size!==0){for(let e of WI()){let t=PI(F.triage.get(e)),n=FI(t);if((RI.get(e)?.key??``)===n)continue;if(!II(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),RI.set(e,{key:n,fix:RI.get(e)?.fix??``});continue}let r=qI(e);if(r==null||!zI.has(BI(r.id)))continue;let i=F.currentManagedTeam,a=BI(r.id,i),o=VI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},VI.set(a,o)),o.changes.set(e,t)}VI.size!==0&&(HI!=null&&clearTimeout(HI),HI=setTimeout(QI,MI))}}var eL=!1;function tL(){eL||!JI()||(eL=!0,yd($I))}function nL(){Ou(),F.managedComments?.clear(),F.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),HI!=null&&(clearTimeout(HI),HI=null),VI.clear(),zI.clear(),RI.clear()}async function rL(e,{renderView:t=!0,signal:n,readAnnotations:r,except:i}={}){let a=F.reports,o=F.currentManagedTeam,s=F.managedSession?.role,c=F.managedSession?.id,l=()=>!n?.aborted&&F.serverMode===`managed`&&F.localMode!==!0&&F.managedSession!=null&&F.managedSession.id===c&&F.managedSession.role===s&&F.reports===a&&F.currentManagedTeam===o&&GI().some(t=>t.id===e);if(!l()||(zI.delete(BI(e)),QI(),!await iL(n)||!l()))return!1;let u=new Map(F.managedIssues),d=r?await r(e):null,f=r?d?.entries:await dx(e,o,{signal:n});if(f==null||!l())return!1;let p=!1,m=[...KI(e)].filter(e=>!i?.has(e)),h=d&&ag(m,d.issues,u);for(let e of m){if(!Object.hasOwn(f,e)){RI.delete(e);continue}let t=PI(f[e]);RI.set(e,{key:FI(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;yn(F.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(p=!0)}if(zI.add(BI(e)),d&&Qv(o,m,u),h&&!p&&t&&X(),p){if(await jd(),!l())return!1;t&&X()}return $I(),!0}function iL(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}),UI.then(()=>n(!0),()=>n(!1))}):UI.then(()=>!0)}async function aL(e,{signal:t,readAnnotations:n}={}){let r=F.reports,i=F.currentManagedTeam,a=F.managedSession?.role,o=F.managedSession?.id,s=()=>!t?.aborted&&F.serverMode===`managed`&&!F.localMode&&F.reports===r&&F.currentManagedTeam===i&&F.managedSession?.id===o&&F.managedSession?.role===a&&zI.has(BI(e,i));if(!s()||(QI(),!await iL(t)||!s()))return!1;let c=KI(e),l=new Map([...c].map(e=>[e,RI.get(e)])),u=new Map(F.managedIssues),d=n?await n(e):null,f=n?d?.entries:await dx(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&ag(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=PI(F.triage.get(e));if(RI.get(e)!==t||FI(n)!==(t?.key??``))continue;let r=PI(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),RI.set(e,{key:FI(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;yn(F.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&Zv(i),d&&Qv(i,c,u),p&&!m&&X(),m){if(await jd(),!s())return!1;X()}return!0}function oL(e,t){if(!e)return;let n=F.currentManagedReport;if(n!=null&&(F.managedReports.length!==1||F.managedReports[0].id!==n))return;let r=null,i,a=()=>i??=(async()=>{if(QI(),!await iL(t)||t?.aborted)return null;let i=await ux(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 sL(e){let t=await b(e),n=await cm(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await Ve({tryPassword:e=>ee(t,e)}),!r)return null}else r=te(n.text);let i=await am(r,{conflictResolver:async(t,n)=>{try{return await TS(t,n,{title:`Triage conflicts on import`,intro:`disagree with your local triage on`,trailingNote:`Reports and non-conflicting triage were already merged; pick which side to keep for these disagreements.`,importedSideLabel:`Apply imported`})}catch{let n=t.length;return alert(`Imported ${e.name}. Kept your local triage on ${n} conflicting entr${n===1?`y`:`ies`} because another dialog is open \u2014 re-drop the file to pick again.`),null}}});return(F.currentFile||F.currentWorkspace)&&X(),{kind:`workspace`,workspace:i}}var cL=`deepview.passkey.firstImportPrompted`;function lL(){try{return localStorage.getItem(cL)===`1`}catch{return!1}}function uL(){try{localStorage.setItem(cL,`1`)}catch{}}async function dL(){if(!(Co()||!To()||lL())){if(!confirm(`Encrypt your DeepView data with a passkey?
|
|
174
|
-
|
|
175
|
-
Your triage notes, workspaces, and report files are stored on this device. Encryption locks them under a passkey (TouchID, Windows Hello, security key) so scripts running here can't read them without the passkey.
|
|
176
|
-
|
|
177
|
-
You can change this anytime from the lock icon in the sidebar header.`)){uL();return}await be(),Co()&&uL()}}var fL=null,pL=()=>Promise.resolve(!0);function mL(e){pL=e}function hL(){fL?.controller.abort(),fL=null}var gL=()=>fL?.live===!0&&fL.current(),_L=6e4,vL=null,yL=!1;function bL(){clearTimeout(vL),vL=null,globalThis.document?.hidden&&fL&&(vL=setTimeout(()=>{vL=null,globalThis.document?.hidden&&fL&&(hL(),yL=!0)},_L))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){bL();return}clearTimeout(vL),vL=null,yL&&(yL=!1,CL())});function xL(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 SL(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 CL({catalogOnly:e=!1,loading:t=!1,hydrate:n,annotations:r}={}){if(yL&&globalThis.document?.hidden&&!n)return;let i=F.managedSession,a=nv(),o=[`findings`,`files`,`links`].includes(F.currentView),s=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView),c=s||t||o&&(!e||fL?.teamId===F.currentManagedTeam&&!fL.signal.aborted)?F.currentManagedTeam:null,l=!c&&!n&&!i?.publicShare&&fL?.teamId&&gL()&&F.managedTeams?.some(e=>e.id===fL.teamId)?fL:null,u=l?l.teamId:c;if(!I()||!i||i.role===`none`||i.publicShare&&!u)return hL(),n?Promise.resolve(!1):void 0;if(l)return;let d=F.managedTeams?.find(e=>e.id===u)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,f=JSON.stringify([u,d,i.id,i.role,i.csrfToken,!!i.publicShare]);if(fL?.key!==f||fL.signal.aborted){hL();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&&fL===t&&I()&&F.managedSession?.id===i.id&&F.managedSession?.role===i.role&&F.managedSession?.csrfToken===i.csrfToken&&!!F.managedSession?.publicShare==!!i.publicShare,fL=t,yL=!1,EL(t),globalThis.document?.hidden&&bL()}let p=fL;if(e||s||t||!u)return p.target?.ready;let m=Fs(F.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&&F.currentManagedTeam===u&&Fs(F.reports)===m,y.hydration=n?xL(async e=>{let t=r?r.subscription===p?r.version:0:p.version,i=r?.read??oL(p.teamId,e),a=await n(e,i);return a&&y.current()&&(y.version=t,y.revision=i?.revision()??null,y.version<p.version&&TL(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&&TL(p,y)),y.ready}function wL(e){CL({loading:!0});let t=oL(F.currentManagedTeam,e);if(t)return t.start(),{read:t,subscription:fL,version:fL?.version??0}}function TL(e,t){DL(e,t,e.signal).then(e=>(!e&&t.current()&&(hL(),CL()),e))}function EL(e){let{signal:t,controller:n,current:r}=e;Dx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(t,n)=>{let i=()=>r(t);if(!i())return!1;let a=await pL(i,t,n)&&i();return a&&(e.live=!0),a},onUpdate:(t,n=null)=>r(t)?(e.revision=n,e.version++,DL(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 DL(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=OL(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 SL(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?DL(e,t,n):!0:!1:!0:!1}async function OL(e,t,n){if(t.hydration&&!await SL(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=oL(e.teamId,n),a=F.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[aL(e.id,{signal:n,readAnnotations:i}),sw(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 kL(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>zi(e)===`revalidation`);return t.length>0?t:e}function AL(e){let t=e.map(kL).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&zi(e)===``))}function jL(e,t=()=>[],{countFindings:n=!1}={}){let{linked:r,app:i}=ML(e,t);return i?{appMode:!0,appFindings:r.filter(e=>kL(e).some(e=>e.isApp)).length}:n?{appMode:!1,findings:r.length}:{appMode:!1}}function ML(e,t){let{groups:n,conflicts:r}=pg(e,{hideRuledOut:!0}),i=Sg(n,t,kL);return{linked:i,app:r.size===0&&(AL(i)||Sr(i,{tabs:kL,kindOf:zi,severityMode:`corrected`}))}}var NL=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(NL);var PL=null,FL=()=>PL!==null&&(PL.replacing||PL.reports===Fs(F.reports));function IL(){return!FL()||PL.ok?null:PL.done?`failed`:`loading`}function LL(){return PL?.replacing===!0}function RL(){return FL()?PL.ready:Promise.resolve(!0)}function zL(){return FL()&&!PL.ok&&PL.folded}function BL(){return zL()?PL.lens??null:null}function VL(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 HL(e,t,n,{folded:r=!1,lens:i=null,shown:a=Promise.resolve(!0),signal:o,replace:s}={}){let c=PL={reports:Fs(F.reports),folded:r,lens:i,done:!1,ok:!1,replacing:!1,ready:null},l=()=>PL===c&&Fs(F.reports)===c.reports;c.ready=(async()=>{let r=await Promise.resolve(t).catch(()=>null),i=l()&&r&&UL(c.reports,r);if(i)i();else if(l()&&r&&s){if(!await VL(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=Fs(F.reports))}return c.done=!0,l()?(i||c.ok?(c.ok=!0,Au(e,r),$g(),F.revalidateConflicts=r_()):Rx(`Could not load finding details. Open the team again to retry.`),n(),c.ok):!1})()}function UL(e,t){let n=new Map(t.map(e=>[e.id,e.data])),r=[];for(let t of e){let e=Ci(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 NL)Object.hasOwn(t,n)&&(e[n]=t[n]);Pn(e)}}}var WL=null,GL=0;sd(()=>{GL++});function KL(e,t,n,{complete:r,isCurrent:i}){WL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function qL(e){return!WL||WL.id!==e.id||!WL.isCurrent()||WL.membership!==JSON.stringify(e.reports.toSorted())||!Om(e,WL.token)?null:(WL.linksRevision!==GL&&(WL.metadata=WL.complete?jL(WL.reports,fd):{appMode:!1},WL.linksRevision=GL),WL.metadata)}async function JL(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await hd(),!i()))return;let o=await Mm(e,n);if(!o||!i())return;let s=r?jL(t,fd):{appMode:!1};await Nm(e,s,o)&&i()&&await a(s)}var YL=`deepview.lastFile`;function XL(e,t=`overview`,{push:n=!1}={}){if(I()){let r=F.bundles.find(t=>t.integrity===e),i=r?.npm?Sj(r,t,Kx(F,t)):r?.repository?dN(r,t,Kx(F,t)):Ux(F.managedTeams,r,F.currentManagedTeam,t,Kx(F,t),F.bundles);n?G.pushRoute(i):G.replaceRoute(i);return}Ka(YL,`b:${e}${t&&t!==`overview`&&Qr.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==W();function ZL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function QL(e){return await ZL(),e!==null&&J(e)?!1:(X(),jq(F.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function $L(){T.selected=null,T.focusedPkg=null,T.layoutCache=null,T.solo=null,T.hidden.clear(),T.pathFilter=``,ir()}function eR(e){for(let t of V.openSessions)t&&!e.has(t.workspaceId)&&(V.closeSession(t.workspaceId),Wh(t.workspaceId))}function tR(){z.classList.remove(`active`),z.replaceChildren(),th.classList.remove(`hidden`),document.title=`DeepView`}function nR(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function rR(e){let t=iR(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function iR(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function aR({name:e,content:t,existingNames:n}){if(!n.has(e))return await Kc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Jc(e)}catch(r){if(!nR(r))throw r;return await Kc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>xh(t.id,e)),a=await kt({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 Kc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await zh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Kc(e,t),i.length>0&&await sR(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function oR(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await sc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function sR(e,t){let n;try{n=await Yc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await Uh(r.id);let t=await Rh(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 cR(e){if(e=[...e],e.length===0||(await $X(),I())||(await dL(),I()))return;let t=null,n=null,r=new Set,i=new Set(await Gc()),a=[];for(let o of e)try{let e=iR(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await sL(o);if(e?.kind===`reports`)for(let n of e.reports){if(typeof n?.name!=`string`||!n.name||typeof n?.content!=`string`)continue;let e=Gu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await aR({name:n.name,content:n.content,existingNames:i});r&&(Uu(r.name,e.count,e.source),await oR(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Gc();i.clear();for(let t of e)i.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(rR(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await ml(o.name,e);n=t,r.add(t);continue}let s=await o.text(),c=Ie(s,o.name);if(c)for(let e of c){let{count:n,source:r}=Gu(e.content),a=await aR({...e,existingNames:i});a&&(Uu(a.name,n,r),t={name:a.name,content:a.content})}else if(wi(s,e)===`codex`){let e=xi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Gu(a),c=await aR({name:e,content:a,existingNames:i});c&&(Uu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Gu(s);if(!e.recognized)throw Error(`not a recognized DeepView, DeepSec, Piolium, Claude Security, Codex, or Markdown (generic) report, and not a links file`);let n=await aR({name:o.name,content:s,existingNames:i});if(!n)continue;Uu(n.name,e.count,e.source),t={name:n.name,content:n.content}}}catch(e){alert(`Failed to load ${o.name}: ${e.message}`)}if(a.length>0){let e=a.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${a.join(`, `)}`)}await Q(),t?await lR(t.name,t.content):n&&(Eq(n),XL(n,F.bundleDetailsTab),X(),await Q(),Mq(n)),jq(r).catch(()=>{})}async function lR(e,t,{workspaceId:n}={}){if(I())return;let r=rv();F.currentManagedTeam=null,F.currentManagedReport=null,F.currentReportWorkspace=YC(e,n);let i=new Set(R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(eR(i),F.reports=[],$g(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=e,F.currentWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),F.repoUrl=ec(e),F.repoEditing=!1,$L(),Ka(YL,Vd(e,F.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Jc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Rv()&&!J(r)){await lR(e);return}J(r)||(F.currentFile=null,await Q());return}if(nR(t)){let t=R().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&xh(t.id,e));if(t)try{if(await Uh(t.id),J(r))return;let n=await Ae({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(J(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await lR(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),J(r))return}J(r)||(F.currentFile=null,await Q());return}alert(`Failed to read ${e}: ${t.message}`),F.currentFile=null,await Q();return}if(J(r))return}let a=f(t);if(a?(F.currentLinks={name:e,...a},F.currentView=`links`,X()):await CR(e,t,r),!J(r)){for(let e of i)V.openSession(e),V.refreshSession(e),Uh(e);return await Q(),!0}}function uR(e){return F.managedSession?.role===`admin`&&fR({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function dR(e,t,{history:n=!0,tab:r=F.teamDependenciesTab}={}){let i=I();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?F.managedTeams.find(t=>t.id===e):R().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!si.has(r)))return!1;if(i&&n&&G.active)return G.navigate(hi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},F.managedTeams));t===`dependencies`&&(F.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=rv();return eR(new Set),vR({forgetLastView:!1}),F.currentWorkspace=s,F.currentManagedTeam=i?e:null,F.currentView=a,i&&(F.bundles=Jx(F.managedTeams)),z.classList.add(`active`),th.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ka(YL,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function fR(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!I()||!e||!Array.isArray(e.reports))return!1;if(n&&G.active)return G.navigate(hi({view:`findings`,teamId:e.id,reportId:t},F.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=rv(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=nv(),s=t===null?null:e.reports.find(e=>e.id===t);eR(new Set),vb(),qK(t===null&&!r?e.id:null),z.classList.add(`active`),th.classList.add(`hidden`),F.currentView=`findings`,F.reports=[],$g(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=s?.filename??null,F.currentWorkspace=t===null?`managed-team:${e.id}`:null,F.currentManagedTeam=e.id,F.currentManagedReport=t,F.managedReports=r?[]:t===null?e.reports.filter(e=>e.visible!==!1).map(e=>({id:e.id,filename:e.filename})):s.analyzer===d?[]:[{id:s.id,filename:s.filename}],F.managedComments.clear(),F.managedIssues.clear(),F.managedReport=null;let c=r?void 0:wL(o),l=r?null:Tx(e.id,{reportId:a?.id??null});Q();let u;try{u=r?await(await K()).fetchManagedLinkWorkspace(t,{signal:o}):await Tx(e.id,{reportId:a?.id??null,lite:!0})}catch(e){return J(i)||await hR(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(u===null||t!==null&&!u.some(e=>e.id===t))return await hR(`Could not load all team reports. Please try again.`),!1;let f=u.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),p=u.filter(e=>t===null||f||e.id===t),m=p.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));F.currentFile=t===null?null:u.find(e=>e.id===t).filename,Au(e.id,u),F.managedReports=p.map(e=>({id:e.id,filename:e.filename})),F.managedReport=t===null?null:F.managedReports[0]??null,F.currentReportWorkspace=null,F.currentLinks=null,F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.repoUrl=``,F.repoEditing=!1,$L();for(let e of m)if(await CR(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo,keepLens:!!u.folded}),J(i))return!1;let h=async(e,t=oL(F.currentManagedTeam,e),n=void 0)=>(await Promise.all(m.flatMap(r=>[rL(r.id,{renderView:!1,signal:e,readAnnotations:t,except:n}),sw(r.id,{signal:e,readAnnotations:t,except:n})]))).every(Boolean)&&!e.aborted&&!J(i),g=f?void 0:c,_=Promise.withResolvers(),v=null;if(l&&HL(e.id,l,()=>{_.promise.then(()=>X())},{folded:u.folded??!1,lens:u.lens,shown:_.promise,signal:o,replace:e=>mR(e,m,{gen:i,hydrate:h,annotations:g,opening:v})}),m.length>0){let e=r?await h(nv()):await CL({hydrate:h,annotations:g});if(J(i))return!1;if(!e)return await hR(`Could not load report annotations. Open the team or report again to retry.`),!1}if(f){if(F.currentView=`links`,F.currentLinks={name:f.filename,groups:f.data.links,skipped:0,...r?{managedId:t}:{}},!await QL(i))return!1}else if(m.length===0)JK();else if(k_(a_()),!await QL(i))return!1;return CL(),await Q(),v=pR.map(e=>F[e]),_.resolve(!0),!0}var pR=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`];async function mR(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(F.reports.flatMap(e=>e.groups.flat().map(e=>e.id))),l=document.querySelector(`#findings-body-slot`),u=null,d=!1;l?.setAttribute(`inert`,``);try{F.reports=[],$g();for(let e of s){let t=await CR(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 hR(`Could not load all team reports. Please try again.`),!1}if(d=pR.every((e,t)=>F[e]===a[t]),pq(),u=pR.map(e=>F[e]),!await CL({hydrate:(e,t)=>r(e,t,c),annotations:i})||J(n))return J(n)||await hR(`Could not load report annotations. Open the team or report again to retry.`),!1}finally{l?.removeAttribute(`inert`)}return d&&pR.every((e,t)=>F[e]===u[t])&&k_(a_()),!0}async function hR(e){await bR({history:!1}),Rx(e)}async function gR(e){if(I())return;F.currentManagedTeam=null,F.currentManagedReport=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear();let t=R().find(t=>t.id===e);if(!t)return;let n=rv();eR(new Set([e])),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),zr(`workspace`,e),F.reports=[],$g(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=null,F.currentWorkspace=e,F.currentReportWorkspace=null,F.currentLinks=null,F.repoUrl=``,F.repoEditing=!1,$L(),Ka(YL,`ws:${e}`).catch(()=>{}),t.reports.length===0&&tR();let r=await Mm(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Jc(e).catch(()=>null)),o=0;for(let e=0;e<t.reports.length;e++){let r=await a[e];if(J(n))return;if(r===null){i=!1;continue}if(!f(r)&&(await CR(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&tR(),i&&jm(t)?.appMode&&(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,pq());let s=F.reports.slice();KL(t,s,r,{complete:i,isCurrent:()=>!J(n)&&F.currentWorkspace===e&&[`findings`,`files`].includes(F.currentView)});let c=Q().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(k_(a_()),!await QL(n))return}else JK();let l=pR.map(e=>F[e]);JL(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||F.currentWorkspace!==e||![`findings`,`files`].includes(F.currentView)||pR.some((e,t)=>F[e]!==l[t])||(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,pq(),k_(a_()),await QL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),V.openSession(e),V.refreshSession(e),Uh(e),await c}async function _R({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!F.currentFile)return;let n=rv(),r=F.currentFile;Wu(r),ic(r,``);for(let e of t)try{let t=await Vh(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 Qc(r),!J(n)&&(await vu(r,null),!J(n))){if(e===`wipe`){try{await Bp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(vR(),await Q())}}function vR({forgetLastView:e=!0}={}){PT(),F.currentManagedTeam=null,F.currentManagedReport=null,F.currentFile=null,F.currentWorkspace=null,F.currentReportWorkspace=null,F.currentLinks=null,F.managedReport=null,F.managedReports=[],F.managedComments.clear(),F.managedIssues.clear(),F.selectedBundle=null,F.selectedBundleWorkspace=null,F.scanSelection=null,F.bundleDetails=null,F.bundleDetailsTab=`overview`,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null,F.selectedPackage=null,F.selectedPackageVersion=null,F.packageDetailsTab=`overview`,F.packageSlideTriage=null,F.packageSlideTransient=!1,F.expandedPackages.clear(),F.selectedRepository=null,F.repositoryDetailsTab=`overview`,F.repositorySlideTriage=null,F.repositorySlideTransient=!1,F.filesSelectedFile=null,F.tableSelectedGid=null,F.kanbanPopoverGid=null,F.kanbanExpandedColumn=null,F.focusGid=null,F.activeTabByGroup.clear(),F.reports=[],$g(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.repoUrl=``,F.repoEditing=!1,F.shownTriage=null,F.currentView=`findings`,$L(),e&&qa(YL),tR()}function yR(e){rv(),eR(new Set),vR(e)}async function bR({history:e=!0}={}){return e&&I()&&G.active?G.navigate({view:`home`}):(rv(),eR(new Set),vR({forgetLastView:!I()}),await Q(),!0)}async function xR({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!F.selectedBundle)return;let t=rv(),n=F.selectedBundle;for(let r of e)try{let e=await Hh(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 hl(n),J(t)||(await xu(n,null),J(t)))return;F.selectedBundle=null,F.selectedBundleWorkspace=null,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null;let r=Ga(YL);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&qa(YL),$f(n),F.bundles=await ul(),!J(t)&&(X(),await Q())}async function SR(e,t=`detach`,{triage:n=`keep`}={}){let r=R().find(t=>t.id===e);if(!r)return;rv();let i=Array.isArray(r.reports)?[...r.reports]:[];if(V.closeSession(e),Wh(e),t===`delete`){for(let e of i){try{await Qc(e)}catch{}Wu(e),ic(e,``)}if(n===`wipe`)try{await Bp()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=F.currentWorkspace===e,o=t===`delete`&&F.currentFile!=null&&i.includes(F.currentFile);(a||o)&&vR(),await lu(e),await Q()}async function CR(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([zr(`report`,e),zr(`workspace`,F.currentWorkspace||F.currentReportWorkspace)]),c()||(await Rd(),c()))return;let{data:l,reason:u}=i===null?I()?ne(t,e):Ti(t):{data:structuredClone(t),reason:null};if(!l)throw Error(u);let d=F.reports.length===0,f=Ci(l)??[],p=f.flatMap(Cg);if(await Di(p),c())return;let m=new Set(p.filter(sr).map(e=>e.source??l.source??null)),h=a??l?.repo,g=yi({repo:h}),_=g??(i==null?ec(e):``),v=bi(h),y=Rr([{groups:f.map(Cg),tree:l.tree,treeDependencies:l.treeDependencies}]),b=[];for(let t of f){let n=Cg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:F.nextFindingId++,_repoFallback:_,_repoDirectory:v,_reportName:e,_depsDirectory:y,_managedReportId:i,_bundleHashes:l.bundleHashes??[]};vi(n,l),n._source=n.source??l.source??null,`isApp`in n||(n.isApp=Bi(n,n._source)),n._sourcePass=m.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}b.push(r)}return Si(b),F.reports.push({type:l.type||`analysis`,source:l.source??null,fileName:e,_managedReportId:i,groups:b,repo:g,tree:l.tree??null,treeFiles:l.treeFiles??null,treeDependencies:l.treeDependencies??null,bundleHashes:l.bundleHashes??[]}),Dn(F.reports),An(F.reports)&&$g(),F.revalidateConflicts=r_(),pq({held:s}),d&&!o&&(g_(),k_(a_())),r&&await QL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>CR(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(F.filterSeverities=new Set(e)),t!==void 0&&(F.filterConfMin=t),X()},document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`report-fullscreen`)&&document.body.classList.remove(`report-fullscreen`)}),document.addEventListener(`dragover`,e=>e.preventDefault()),document.addEventListener(`drop`,e=>{e.preventDefault(),!e.target.closest(`#drop-zone`)&&cR(e.dataTransfer.files)}),th.addEventListener(`dragover`,e=>{e.preventDefault(),I()||th.classList.add(`hover`)}),th.addEventListener(`dragleave`,()=>th.classList.remove(`hover`)),th.addEventListener(`drop`,e=>{e.preventDefault(),th.classList.remove(`hover`),cR(e.dataTransfer.files)});var wR=null;function TR(){I()||(wR||(wR=document.createElement(`input`),wR.type=`file`,wR.multiple=!0,wR.hidden=!0,wR.addEventListener(`change`,()=>{let e=[...wR.files];e.length>0&&cR(e),wR.value=``}),document.body.append(wR)),wR.click())}th.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){ZX(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){_x(F.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=F.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&fR(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){gR(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&TR()});function ER({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?en(i):en(t)??(e===`127.0.0.1`?$t:null)}function DR(){return ER({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:F.serverMode,localMode:F.localMode,deepviewScanServer:F.deepviewScanServer})}function OR(e){return I()?!!e.managedId&&[`admin`,`manage`].includes(F.managedSession?.role):!e.managedId&&!!DR()}async function kR(e=null,{mode:t}={}){let n=F.selectedBundleWorkspace,r=W();if(await $X(),r!==W()||e&&!OR(e))return;if(I()){e&&await ZX(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!DR())return;let i=await ze().then(()=>!0,()=>!1);if(!DR()||r!==W())return;if(!i){Rx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=bR(),o=W();await a,DR()&&o===W()&&(F.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,F.currentView=`scan`,X(),Q())}function AR(){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=$n(`${aa}<span>Scan</span>`),t.addEventListener(`click`,()=>{kR()}),e.append(t));let n=DR();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=F.bundles?.find(e=>e.integrity===F.selectedBundle);r&&(r.hidden=!i||!OR(i))}var jR=HM(`./compare.js`),MR=`@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 PR(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function FR(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 IR(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 LR(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:PR(t?.name??`bundle`),version:null,purl:null},rest:r}}function RR(e){return e??globalThis.crypto.randomUUID()}function zR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=LR(FR(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:${RR(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:MR}]},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)}
|
|
178
|
-
`}function BR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function VR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=LR(FR(e),t),o=PR(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=[BR(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)}-${RR(r)}`,creationInfo:{created:s,creators:[`Tool: ${MR}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
|
|
179
|
-
`}function HR(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 UR(e,t,n){if(t){let t=HR(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 WR(e,t,n){let r=[],i=0,a=!1;for(let o of n){let n=e.get(o);if(typeof n!=`string`)continue;let s=n.split(`
|
|
180
|
-
`),c=[];for(let e=0;e<s.length;e++){let n=t.ranges(s[e]);if(n.length!==0&&(c.push({ln:e+1,ranges:n}),i++,i>=5e3)){a=!0;break}}if(c.length>0&&r.push({path:o,lines:s,hits:c}),a)break;if(r.length>=500){a=!0;break}}return{fileResults:r,totalHits:i,truncated:a}}function GR(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 KR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function qR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=UR(n,r,i);if(o.error)return{error:o.error};(KR.tag!==e||KR.useRegex!==r||KR.caseSensitive!==i)&&(KR.tag=e,KR.useRegex=r,KR.caseSensitive=i,KR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<KR.entries.length;e++){let t=KR.entries[e],n=s(t.query);if(n===c)return KR.entries.splice(e,1),KR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?GR(l,o):WR(t,o,a??[...t.keys()].toSorted());return KR.entries.unshift({query:n,result:d}),KR.entries.length>8&&KR.entries.pop(),d}var JR=200,YR=28,XR=12;function ZR(e,t){let n=t.length>0?t[0][0]:0;return $R(e,t,n-(e.length-e.trimStart().length)>YR?n-XR:0,JR)}function QR(e,t){let n=ZR(e,t);return A`${n.clipped?A`<span class="bundle-search-clip">…</span>`:M}${ez(n.text,n.ranges)}`}function $R(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 ez(e,t){if(t.length===0)return e;let n=[],r=0;for(let[i,a]of t){let t=Math.max(r,Math.min(i,e.length)),o=Math.max(t,Math.min(a,e.length));o<=t||(t>r&&n.push(e.slice(r,t)),n.push(A`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function tz(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 nz(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=Ar(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,tz(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 rz=216,iz=48,az=32,oz=20,sz=24,cz=20,lz=10;function uz(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:oz)});let o=Math.min(t,rz*5+oz*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:oz),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function dz(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 fz=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function pz(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=fz(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:rz),c=e.y+i.y+iz/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 mz(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+rz/2,r.y+i.y+iz/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||fz(o.get(e))-fz(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=pz(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=pz(n,t.fromPackage,!1,i.get(t)),s=pz(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:dz([...n,...o,...t.toReversed()])}})}function hz(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=iz,a=rz;if(r===0&&Math.abs(t.x-e.x)===a+oz){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+sz){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*(oz/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 dz([[s,c],[l,c],[l,f],[u,f],[u,p]])}function gz(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:rz+lz*2,height:iz};let a=t.length>1,o=Math.max(1,Math.floor((r-lz*2+oz)/(rz+oz))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?lz:0,l=Math.ceil(t.length/s),u=a?cz:0,d=(a?nz(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(rz+oz),y:c+u+e.row*(iz+sz)})),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:hz(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*rz+(s-1)*oz+c*2,height:l*iz+(l-1)*sz+c*2+u}}function _z(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 vz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function yz(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=_z(t,n);return{packageKey:r.ecosystem?vz(r):r.name,packageGroup:Jr(``,{packageDir:t})}}function bz(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Ut(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=Ce(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,_z(t,e.bundle.modules.get(t)));let f=(e,t)=>{e!==t&&(o.has(e)||o.set(e,new Set),a.has(t)||a.set(t,new Set),o.get(e).add(t),a.get(t).add(e))};for(let[t,n]of ke(e))if(d.has(t))for(let e of n){if(!d.has(e))continue;let n=c.get(t),r=c.get(e);if(Mr(t,e,r===`.`,n===`.`))f(n,r);else if(n!==r){let e=s.get(r);e.excludedImporters??=new Set,e.excludedImporters.add(n)}}let{roots:p,appImports:m}=Ne(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,_z(`.`));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=vz(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Jr(``,{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 xz(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Fr(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-az-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...gz(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>uz(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=mz(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 Sz(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 Cz=new Map,wz=new Map,Tz=[];function Ez(e){if(!e?.managedId)return Cz;let t=F.managedSession,n=F.managedTeams&&Fs(F.managedTeams),r=[t?.id,t?.role,t?.csrfToken,F.currentManagedTeam,n];return r.some((e,t)=>e!==Tz[t])&&(Tz=r,wz=new Map),wz}var Dz=new WeakMap;function Oz(e){return Dz.has(e)||Dz.set(e,{reasons:Ce(e),selected:``}),Dz.get(e)}function kz(e,t=Oz(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var Az=`deepview.advisories.proxyConsent`;function jz(){try{return localStorage.getItem(Az)===`1`}catch{return!1}}function Mz(){try{localStorage.setItem(Az,`1`)}catch{}}function Nz(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 Fz(e){if(e.bundle&&!Pz(e))return!0;let t=Ez(e).get(kz(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function Iz(e,t,n=!1){return!e||e.managedId&&!Rz(e)||Lz(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:rR(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||Pz(t):Nz(t):!1}function Lz(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function Rz(e){let t=F.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?F.managedTeams.some(t=>(F.currentManagedTeam==null||t.id===F.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function zz(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var Bz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function Vz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function Hz(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(Vz),Bz):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 Uz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function Wz(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(zz(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 Gz(e,t){return qz(e,t)}function Kz(e,t){return qz(e,t,!0)}async function qz(e,t,n=!1){if(!e?.integrity||!e.managedId&&!jz())return;let r=Ez(e),i=kz(e),a=r.get(i);if(n){if(!Uz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=Oz(e),c=e.managedId?new Map:Wt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await Ox(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[Bz(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 Wz(c):{};r.set(i,{state:`ok`,byPackage:Hz(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 Jz(e,t){if(!e?.integrity)return;let n=Ez(e),r=kz(e);n.get(r)?.state===`error`&&(n.delete(r),await Gz(e,t))}var Yz={critical:0,high:1,moderate:2,low:3,info:4};function Xz(e){return Yz[e]??999}function Zz(){let e=typeof window>`u`?``:window.location.host;return A`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function Qz(e,t=()=>{},n=null){let r=e?Oz(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=eB(e),o=!!e?.managedId&&!Fz(e);return A`<div class="bundle-advisories-panel">${a!==M||i.length>0||o?A`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?A`<div class="bundle-advisories-scopes">${i.length>0?A`<bundle-scope-selector .reasons="${i}" .value="${r.selected?`reason:${r.selected}`:``}" label="Choose advisory scope" @scope-change="${n=>{let i=n.detail.value.replace(/^reason:/u,``);r.selected=r.reasons.has(i)?i:``;let a=Gz(e,t);return t(),a}}"></bundle-scope-selector>`:M} ${o?$z(e,t):M} ${o&&n?A`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${k(aa)}<span>Validate</span></button>`:M}</div>`:M}</div>`:M} ${nB(e)}</div>`}function $z(e,t){if(!e?.managedId)return M;let n=Ez(e).get(kz(e)),r=!!n?.recheckingRepositories;return A`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!Uz(e,n)}" aria-busy="${String(r)}" @click="${()=>Kz(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function eB(e){if(!e||!e.managedId&&!jz())return M;let t=Ez(e).get(kz(e));if(t?.state!==`ok`)return M;let n=t.query.size,r=t.byPackage.size;if(r===0)return M;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function tB(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?A`No packages could be audited.`:A`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${Oz(e).selected?`this scope`:`this bundle`}.`}function nB(e){if(!e)return A`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return A`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!jz())return Zz();let t=Ez(e).get(kz(e));if(!t||t.state===`loading`)return A`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return A`<div class="bundle-advisories-empty is-error"><span>Failed to fetch advisories: ${t.reason}</span> <button type="button" class="bundle-advisories-retry" data-advisories-retry>Retry</button></div>`;let n=t.byPackage.size===0?A`<div class="bundle-advisories-empty"><span>${tB(e,t)}</span></div>`:M;if(t.byPackage.size===0&&t.skipped.length===0&&!t.repositoryError)return n;let r=[...t.byPackage.entries()].toSorted(([e,t],[n,r])=>{let i=Math.min(...t.map(e=>Xz(e.severity))),a=Math.min(...r.map(e=>Xz(e.severity)));return i===a?e.localeCompare(n):i-a});return A`${n}<div class="bundle-advisories">${t.repositoryError?A`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:M} ${t.skipped.length>0?A`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>A`<li><span class="mono">${Bz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:M}<ul class="bundle-advisories-list">${r.map(([n,r])=>rB(e,n,r,t.query.get(n),()=>Ez(e).get(kz(e))?.byPackage===t.byPackage))}</ul></div>`}function rB(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=Xz(e.severity)-Xz(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return A`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?A`<span class="bundle-advisories-section-versions">${o.map(n=>A`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>Le({details:e,packageKey:t,version:n,reason:Oz(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:M}</div><ul class="bundle-advisories-rows">${a.map(e=>GN(e,({title:e,severity:t,details:n})=>dt({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var iB=e=>I()?[]:Af(e),aB=()=>I()?0:jf(),oB=null,sB=new WeakMap;function cB(e){if(sB.has(e))return sB.get(e);let t=Ht(e),n=ke(e),r=[...t.keys()],{stripped:i}=Mn(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 sB.set(e,s),s}function lB(e,t=null){let n={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0};if(!e?.fileHashes)return n;let r=new Set;for(let[i,a]of e.fileHashes)if((!t||t.has(i))&&!r.has(a)){r.add(a);for(let e of iB(a)){let t=s(e,F.triage.get(E(e)));t&&n[t]!==void 0&&n[t]++}}return n}function uB(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=iB(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,F.triage.get(E(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===F.shownTriage});a.length!==0&&n.set(r,a)}return n}function dB(e){let t=cB(e),n=Ce(e,t.origToStripped.keys());T.bundleReasonFor!==e.integrity&&(T.bundleReasonFor=e.integrity,T.dependencyPackagesView=!1,T.bundleReason=null);let r=pB(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=uB(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&iB(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=F.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=[`matrix`,`flow`].includes(T.bundleLayout)||f.size===0?null:gr(i,f),_=new Map;for(let[e,t]of a)_.set(t,e);let v=Ut(e),y=new Map(v?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),b=e=>{let t=_.get(e)??e;return Jr(t,{packageDir:v?.get(t)})},ee=s.filter(e=>b(e)===`__own__`),te=Ne(e,a,b,v,t.origToStripped),ne=new Set;for(let e of s)if(ne.add(b(e)),ne.size>=3)break;let re=ne.size>=3,ie=s;if(T.focusedPkg){r.focused.has(T.focusedPkg)||r.focused.set(T.focusedPkg,s.filter(e=>b(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:g,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:b,packageInfoOf:e=>y.get(v?.get(_.get(e)??e))},strippedToOrig:_,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:T.bundleLayout===`flow`?je(e,a,t.origToStripped,v):void 0,ownSourcePackages:we(a,b,v),entryPackages:Ee(e,a,b),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var fB=new WeakMap;function pB(e,t,n){let r=t.has(n)?n:null;fB.has(e)||fB.set(e,new Map);let i=fB.get(e);if(!i.has(r)){let n=De(e.tree,e.origToStripped,t,r);i.set(r,{...n,files:Object.keys(n.tree),focused:new Map})}return i.get(r)}function mB(){if(!oB)return;let e=kT();e&&e.refreshSidebar(oB,{isBundleContext:!0,findingsJump:!I()})}function hB(){if(!oB)return;let e=kT();e&&e.refreshTopPkgs(oB)}function gB(e){oB=e}function _B(e,t,n){let{totalByPkg:r,whyQueries:i,total:a}=e;if(a===0)return M;e.sorted.has(t)||e.sorted.set(t,[...r.entries()].toSorted((e,n)=>+(n[0]===`__own__`)-(e[0]===`__own__`)||(t===`size`?n[1]-e[1]:0)||Xr(e[0]).localeCompare(Xr(n[0]))||e[0].localeCompare(n[0])));let o=e.sorted.get(t);return A`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${O(o,([e])=>e,([e,t])=>A`<span class="bundles-dist-seg" style="${D({flexGrow:t,background:kr(e)})}" data-tooltip="${e===`__own__`?M:`${e}: ${Wr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${O(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Xr(e),s=kr(e),c=i.get(e);return A`<li><span class="bundles-dist-dot" style="${D({background:s})}"></span> ${c?A`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>vB(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:A`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?M:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${D({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Wr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function vB(e,t){let n=F.currentManagedTeam,r=F.currentWorkspace,i=F.managedSession&&Fs(F.managedSession);return Le({details:e,...t,isCurrent:()=>F.currentView===`bundles`&&F.selectedBundle===e.integrity&&(F.bundleDetails&&Fs(F.bundleDetails))===Fs(e)&&F.currentWorkspace===r&&F.currentManagedTeam===n&&(F.managedSession&&Fs(F.managedSession))===i})}var yB=new WeakMap;function bB(e,t,n,r){let i=yB.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}=Mn(e),s=t=>n?.get(e[t]),c=new Set;for(let t=0;t<o.length;t++)c.add(Jr(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=xB(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 yB.set(e,f),f}function xB(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=Jr(a,{packageDir:s});n.set(e,(n.get(e)??0)+o),r.has(e)||r.set(e,yz(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function SB(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=M,summaryExtra:f=M,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let b=bB(n,r,i,l),{prefix:ee,stripped:te,packages:ne}=b,re=te.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),ie=e=>h?.(n[e])??[],ae=re.some(e=>ie(e).length>0),oe=F.bundleOverviewFilesSort===`flags`&&!ae?`name`:F.bundleOverviewFilesSort,se=oe===`size`?b.bySize:b.byName,ce=oe===`flags`?CI(re,ie,e=>te[e]):_?se.filter(e=>_.keeps(n[e])):se,le=F.bundleOverviewPackagesSort,ue=_B(b.dist,le,l),de=ue===M?A`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:ue,fe={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},pe=0,me=new Map;if(F.bundleDetails?.fileHashes){let e=uB(F.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){fe[e.severity]!==void 0&&fe[e.severity]++,pe++;for(let t of Pf(e.fileHash,e))me.set(t,(me.get(t)??0)+1)}}let he=[...me.keys()].toSorted(),ge=Ni.filter(e=>fe[e]>0).map(e=>A`<span class="${`tree-count-chip ${e}`}">${fe[e]} ${e.replaceAll(`_`,` `)}</span>`),_e=n.length>0?A`<ul class="bundles-sources-list">${ce.map(e=>{let t=n[e],i=r[e],a=A`${m?m(t):M}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${te[e]}</span> ${p?p(t):M} ${i==null?M:A`<span class="bundles-source-size">${Wr(i)}</span>`}`;return A`<li>${c?.has(t)?A`<div class="bundles-source-row is-resource">${a}</div>`:A`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,ve=he.length>0?A`<ul class="bundles-reports-list">${he.map(e=>{let t=Zx[tS(e)]??Zx.default,n=me.get(e)??0;return A`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ye=n.length-(c?.size??0);return A`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(ee)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ye,ye):A`${y(`files`,ye,`${ye} ${ye===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?M:A`<dt>Size</dt><dd>${Wr(o)}</dd>`} ${s==null?M:A`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Wr(s))}</dd>`} ${c?.size?A`<dt>Resources</dt><dd>${c.size}</dd>`:M}</dl>${a??M}</div>${pe>0?A`<div class="bundles-issue-summary tree-count-chips">${ge}</div>`:M} ${f}</div><div class="bundles-overview-columns">${u??hA({title:`Packages`,count:ne.size,body:de,tools:A`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>A`<button type="button" aria-pressed="${String(le===e)}" @click="${()=>{F.bundleOverviewPackagesSort=e,X()}}">${t}</button>`)}</span>`})} ${hA({title:`Files`,count:_?`${ce.length} of ${n.length}`:n.length,body:_e,list:!0,extra:_?A`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:M,tools:A`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ae?[[`flags`,`Flags`]]:[]].map(([e,t])=>A`<button type="button" aria-pressed="${String(oe===e)}" @click="${()=>{F.bundleOverviewFilesSort=e,X()}}">${t}</button>`)}</span>`})} ${he.length>0?hA({title:`Reports`,count:he.length,body:ve,list:!0}):M} ${d}</div></div>`}var CB=16,wB=new Map,TB=new Set,EB=()=>A`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${F.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${vw}</button>`;function DB(e){let t=e?.status;return A`<button type="button" class="${w({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${F.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="Pretty-print" data-tooltip="${fk(e)}">${dk}</button>`}function OB(e,t,n,r,i,a){let o=Nk(e,t,n,r),s=o?qk(e,t,n,r,()=>{F.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?DB(s):M,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function kB(e){let t=e?.status;return A`<button type="button" class="${w({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${F.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="View lockfile" data-tooltip="${lA(e)}">${k(na)}</button>`}var AB=null;function jB(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function MB(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function NB(e){for(let t of Ni)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var PB={content:``,parts:``};function FB(e){if(PB.content===e)return PB.parts;let t=e;if(e.length>QT||yC(e)){let n=e=>[tE(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
|
|
181
|
-
`,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>$T&&(t.push(...n(e.slice(r,i)),A`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return PB={content:e,parts:t},t}function IB(e,t,n,r,i=null,a=!1,o=!1){let s=It(e),c=F.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Nt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!wB.has(p)&&!TB.has(p)&&(TB.add(p),(async()=>{let r=await US(e,f,cC(n,t));wB.set(p,typeof r==`string`?CC(r):null),wB.size>CB&&wB.delete(wB.keys().next().value),TB.delete(p),F.bundleSourceFile===t&&X()})());let m=wB.get(p);wB.has(p)&&(wB.delete(p),wB.set(p,m));let h=F.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${NB(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return A`<div class="${w({"bundle-source-lines":!0,"is-wrapped":F.bundleSourceWrap})}" style="${D({"--lineno-width":`${d}ch`})}" ${ZT(HD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${HT([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?NB(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return A`<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?A`<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>`:A`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:M}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?k(m):FB(e)}</code></pre></div>`}function LB(e){let t=F.bundleSourceFindingIdx;if(t==null)return M;let n=e[t];if(!n)return M;let r=n.fileHash?Pf(n.fileHash,n):[],i=s(n,F.triage.get(E(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=Fn(n),c=qV(n.line);return A`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${a?A`<span class="${`bundle-source-panel-triage triage-${i}`}">${a}</span>`:M} <button type="button" class="bundle-source-panel-close" data-action="bundle-source-panel-close" aria-label="Close finding details">×</button></header><div class="bundle-source-panel-body">${c||o?A`<div class="bundle-source-panel-line-row">${c?A`<span class="bundle-source-panel-line">${c}</span>`:M} ${o?A`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${o}">${o}</span>`:M}</div>`:M}<div class="bundle-source-panel-desc">${Mw(Ki(n),{paragraphs:!1})}</div>${r.length>0?A`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=ot[tS(e)]??ot.default;return A`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button>`})}</div>`:M}</div></aside>`}function RB(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??uB(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 zB(e,t=null,n=M){return A`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?bV(t):M} ${EB()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function BB(e,t,n,r,i,a=null,o=!1,s=!1){return A`<div class="bundle-source-code-wrap">${typeof t==`string`?IB(t,e,n,i,a,o,s):A`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${LB(r)}`}function VB(){let e=F.bundleSourceFile;if(!e||F.bundleDetailsTab===`code`||F.bundleDetailsTab===`search`)return M;let t=F.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=Ft(t),{fileFindings:a,lineFindings:o}=RB(t,e,i.get(e)),s=F.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:OB(t,s,e,i.get(e),a,o);return A`<div class="bundle-source-overlay"><div class="${w({"bundle-source-modal":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${zB(e,tA(F.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?A`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?A`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:BB(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var HB=new Map,UB=null,WB=null,GB=0;function KB(e,t){let n=$B(e??``,t).split(`/`);for(let e=1;e<n.length;e++)HB.set(n.slice(0,e).join(`/`),!0);GB++}function qB(e,t){F.bundleCodeSearchMode=`files`,F.bundleCodeSearchQuery=``,KB(e,t),X(),jB()}function JB(e){let t=e=>{for(let n of e.dirs.values())HB.set(n.path,!1),t(n)};t(e),GB++,X()}function YB(e){F.bundleCodeTerminal=e,X(),e?FT():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function XB(){return A`<bundle-code-terminal-splitter role="separator" tabindex="0" aria-orientation="horizontal" aria-label="Resize terminal" data-tooltip="Drag to resize · double-click to reset"></bundle-code-terminal-splitter><section class="bundle-code-terminal" aria-label="Terminal"><header class="bundle-code-terminal-bar"><span class="bundle-code-rail-label">Terminal</span> <button type="button" class="bundle-code-rail-action" aria-label="Close terminal" @click="${()=>YB(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function ZB(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=NB(e);(r===null||(Mi[a]??0)>(Mi[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function QB(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>kD(e,t).localeCompare(kD(n,r))||t.path.localeCompare(r.path)),c=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),l=e=>{if(!t)return!1;for(let n of e.files.values())if(n===t)return!0;for(let t of e.dirs.values())if(l(t))return!0;return!1},u=(e,t)=>i?!0:HB.has(e)?HB.get(e):n===0||l(t),d=e=>t=>{HB.set(e,!t.currentTarget.parentElement.open)};return A`<ul class="${w({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:M}" @keydown="${n===0?MD:M}">${O(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=jD(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Ze(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
|
|
182
|
-
Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=CD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Wr(t)})}:void 0,y=ZB(s,r);return A`<li class="bundle-code-tree-dir"><details .open="${Ue(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??M}" data-tooltip-ecosystem="${g?.ecosystem??M}" data-tooltip-version="${g?.version??M}" data-tooltip-files="${g?.fileCount??M}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):M}" data-tooltip-commit="${g?.commit??M}" data-tooltip="${_?h:M}" data-tooltip-placement="${_?`right-start`:M}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:M} <span class="${w({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?M:h}">${f?A`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?A`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:M}`:l.names.map((e,t)=>A`${t>0?A`<span class="bundle-code-tree-separator">/</span>`:M}${e}`)} </span>${f?.variant?A`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:M} ${y.count>0?A`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:M}</summary>${QB(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${O(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?NB(i):null,s=i?.length??0;return A`<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`:M}">${qe(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?A`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:M}</button></li>`})}</ul>`}function $B(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var eV={tree:null,query:``,prefix:``,filtered:null};function tV(e,t,n,r,i=``,a=null,o=null){let s=eV;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(eV={tree:e,query:n,prefix:i,filtered:AD(e,n,i)});let c=n?eV.filtered:e;return HT([c,t,nV(r),a,o,GB],()=>c?QB(c,t,0,r,!!n,a,o):A`<div class="bundle-code-search-empty">No files match.</div>`)}function nV(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${NB(t)}`).join(`
|
|
183
|
-
`)}var rV=new WeakMap;function iV(e,t){let n=rV.get(t);return n||(n=Yr([...t.keys()].toSorted(),Ut(e)),rV.set(t,n)),n}var aV=1e3,oV=new WeakMap;function sV(e,t,n,r,i=``){let a=Ht(e),o=oV.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),oV.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>$B(e,i).toLowerCase().includes(s)):o;if(c.length===0)return A`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>aV?c.slice(0,aV):c;return A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${O(l,e=>e,e=>A`<li><button type="button" class="${w({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:M}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${$B(e,i)}</span><span class="bundle-code-largest-size">${Wr(a.get(e))}</span></button></li>`)}</ul></div>`}var cV=20,lV=100,uV={sources:null,query:``,hits:null};function dV(e,t,n){let r=qR(e.integrity??``,t,n,!1,!1,iV(e,t));if(r.fileResults.length>lV||!r.truncated||r.totalHits<5e3||r.fileResults.length===lV&&r.fileResults.at(-1).hits.length>=cV){let e=r.fileResults.slice(0,lV).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,cV).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(uV.sources===t&&uV.query===n)return uV.hits;let i=UR(n,!1,!1),a=[],o=0;for(let n of iV(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],s=e.split(`
|
|
184
|
-
`);for(let e=0;e<s.length;e++){let t=i.ranges(s[e]);if(t.length!==0&&(r.push({ln:e+1,text:s[e],ranges:t}),o++,r.length>=cV))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=lV)break}return uV={sources:t,query:n,hits:{results:a,totalHits:o}},uV.hits}function fV(e,t,n,r,i=``){if(!n)return A`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let{results:a,totalHits:o}=dV(e,t,n);return a.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o} ${o===1?`hit`:`hits`} in ${a.length} ${a.length===1?`file`:`files`}</div>${a.map(({path:e,hits:t})=>{let n=$B(e,i);return A`<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=>A`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${QR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function pV(e,t,n,r=``){if(!e.fileHashes)return A`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=uB(e.fileHashes,`issues`);if(i.size===0)return A`<div class="bundle-code-search-empty">No issues match this bundle's files.</div>`;let a=t.toLowerCase(),o=[];for(let[e,t]of i)for(let n=0;n<t.length;n++){let r=t[n],i=r.description??``;a&&!e.toLowerCase().includes(a)&&!r.severity.includes(a)&&!r.severity.replaceAll(`_`,` `).includes(a)&&!i.toLowerCase().includes(a)||o.push({file:e,finding:r,fileIdx:n})}return o.sort((e,t)=>{let n=Mi[e.finding.severity]??0,r=Mi[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?A`<div class="bundle-code-search-empty">No matches.</div>`:A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o.length} ${o.length===1?`issue`:`issues`}</div><ul class="bundle-code-search-issues">${o.map(({file:e,finding:t,fileIdx:i})=>{let a=t.severity,o=$B(e,r),s=e===n&&F.bundleSourceFindingIdx===i;return A`<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">${Mw(Ki(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var mV=new WeakMap;function hV(e,t){if(e.kind!==`stasis`)return t;if(mV.has(t))return mV.get(t);let n=Ut(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 mV.set(t,i),i}var gV=new WeakMap;function _V(e,t,n){let r=gV.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=DD(Mn(n).prefix,i,n);r={prefix:a,tree:ED(n.map(e=>$B(e,a)),n,i)},gV.set(t,r)}return r}function vV(e,t,n){let r=null,i=-1,a=0;for(let[e,o]of n){if(typeof t.get(e)!=`string`)continue;let n=Mi[NB(o)]??0;(n>i||n===i&&o.length>a||n===i&&o.length===a&&(r===null||e.localeCompare(r)<0))&&(r=e,i=n,a=o.length)}if(r)return r;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;let o=null,s=-1;for(let[e,n]of t)typeof n==`string`&&n.length>s&&(o=e,s=n.length);return o}function yV(e,t=null){let n=Ft(e);if(n.size===0)return A`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;UB!==F.selectedBundle&&(HB.clear(),GB++,UB=F.selectedBundle,WB=null);let r=Lt(n).paths,{prefix:i,tree:a}=_V(e,n,r),o=e.fileHashes?uB(e.fileHashes,`issues`):new Map,s=hV(e,n),c=()=>e.kind===`stasis`?new Map([...o].filter(([e])=>s.has(e))):o,l=F.bundleSourceFile,u=F.bundleCodeFileRequest;if(u?.bundle===F.selectedBundle){F.bundleCodeFileRequest=null;let t=u.path==null?r[u.file-1]:n.has(u.path)?u.path:null;if(t){l=t,F.bundleSourceFile=t,jB();let r=u.endLine??u.line;F.bundleSourceTargetLine=u.line&&r<=It(n.get(t))?{bundle:e.integrity,path:t,line:u.line,...r>u.line?{end:r}:{}}:null,F.bundleSourceTargetLine&&MB(u.line)}}if(AB&&(AB.bundle!==F.selectedBundle||l&&l!==AB.path)&&(AB=null),l){if(AB&&!AB.hadIssues&&o.size>0&&c().size>0){AB.hadIssues=!0;let t=vV(e,s,c());t&&t!==l&&(l=t,F.bundleSourceFile=t,F.bundleSourceFindingIdx=null,AB.path=t,jB())}}else{let t=c();l=vV(e,s,t),l&&(F.bundleSourceFile=l,AB={bundle:F.selectedBundle,path:l,hadIssues:t.size>0},jB())}l!==WB&&(KB(l,i),WB=l),l&&t?.managedId&&I()?G?.replaceCodeRoute(Ux(F.managedTeams,t,F.currentManagedTeam,`code`,Wx(F))):l&&t?.npm&&I()?G?.replaceCodeRoute(Sj(t,`code`,Wx(F))):l&&t?.repository&&I()&&G?.replaceCodeRoute(dN(t,`code`,Wx(F)));let d=l?n.get(l):null,{fileFindings:f,lineFindings:p}=RB(e,l,d,o),m=o.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],h=m.includes(F.bundleCodeSearchMode)?F.bundleCodeSearchMode:`files`,g=F.bundleCodeSearchQuery;return A`<div class="bundle-code-view"><aside class="bundle-code-rail"><div class="bundle-code-rail-head"><span class="bundle-code-rail-label">Files</span> <span class="bundle-code-rail-count">${r.length}</span> <span class="bundle-code-rail-actions"><button type="button" class="bundle-code-rail-action" aria-label="Terminal" data-tooltip="Terminal" data-bundle-code-terminal-toggle aria-pressed="${F.bundleCodeTerminal?`true`:`false`}" @click="${()=>YB(!F.bundleCodeTerminal)}">${bw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!l}" @click="${()=>qB(l,i)}"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="4.5"/><circle cx="8" cy="8" r="1.5"/><path d="M8 0v3m0 10v3M0 8h3m10 0h3"/></svg></button> <button type="button" class="bundle-code-rail-action" aria-label="Collapse directories" data-tooltip="Collapse directories" ?disabled="${h!==`files`||!!g||a.dirs.size===0}" @click="${()=>JB(a)}">${yw}</button></span></div>${i?A`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${i}">${i}</div>`:M}<bundle-code-search .modes="${m}"></bundle-code-search><div class="bundle-code-rail-body">${BT(h,[[`files`,()=>tV(a,l,g,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>fV(e,n,g,l,i)],[`issues`,()=>pV(e,g,l,i)],[`largest`,()=>sV(e,n,g,l,i)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${w({"bundle-code-main":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${l?CV(e,l,d,f,p,t):A`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${F.bundleCodeTerminal?XB():M}</div></div>`}function bV(e){return A`<span class="bundle-code-file-nav"><button type="button" class="focus-code-nav-btn" data-bundle-code-history="back" aria-label="Back to the previously shown file" ?disabled="${e.at===0}">${gw}</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}">${_w}</button></span>`}var xV=[];function SV(e){let t=xV.find(t=>t.text===e);if(t)return t.stats;let n=It(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Wr(ya(e))}`;return xV.unshift({text:e,stats:r}),xV.length=Math.min(xV.length,2),r}function CV(e,t,n,r,i,a=null){let o=tA(F.bundleCodeHistory,e.integrity,t),s=OB(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&iA(t)!==null,p=f?sA(e,t,n,Ft(e),()=>{F.bundleSourceFile===t&&X()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=ID(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return A`<header class="bundle-code-main-bar">${bV(o)} ${qe(t,Ge(e,t))} <span class="bundle-code-main-path mono" data-tooltip-truncated data-tooltip="${t}">${t}</span> <button type="button" class="bundle-code-copy-path" data-copy-path="${t}" aria-label="Copy file path">${hw}</button> ${_?LD(_,a?.commitInfo):M} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?A`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${NB(u)}`}" data-tooltip="${`${u.length} ${u.length===1?`issue`:`issues`} in this file`}">${u.length}</span> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="-1" aria-label="Previous issue">‹</button> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="1" aria-label="Next issue">›</button></span>`:M} ${m?M:EB()} ${m?M:l} ${f?kB(p):M} ${typeof h==`string`?A`<span class="bundle-code-main-stats">${l===M?M:A`<span class="bundle-code-main-stats-room" aria-hidden="true">${SV(n)}</span>`}<span>${SV(h)}</span></span>`:M}</header><div class="bundle-code-main-body">${m?A`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:BB(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&I()&&!Ke(),c)}</div>`}var wV=400;function TV(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function EV(e,t,n){let r=[];for(let i of e){let e=Math.max(1,i.ln-n),a=Math.min(t,i.ln+n),o=r.at(-1);o&&e<=o.end+1?o.end=Math.max(o.end,a):r.push({start:e,end:a})}return r}function DV(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return $R(e,t,r>n-60?Math.max(0,r-60):0,n)}function OV(e,t,n){let r=DV(e,n??[],wV);return A`<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?A`<span class="bundle-search-clip">…</span>`:M}${ez(r.text,r.ranges)}</span></div>`}function kV(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(OV(t[e-1]??``,e,r.get(e)??null));return A`${i?A`<div class="bundle-search-gap" aria-hidden="true"></div>`:M} <button type="button" class="bundle-search-snippet" style="${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 AV(e,t,n){let{path:r,lines:i,hits:a}=e,o=$B(r,t),s=EV(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===F.bundleSourceFile;return A`<section class="${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)=>kV(r,i,e,c,t>0))}</div></section>`}function jV(e,t,n,r,i,a){if(!n)return A`<div class="bundle-search-results"><div class="bundle-search-hint">Search across every ${e.npm?`file of this version`:e.repository?`file of this directory`:`source in this bundle`}. Each match shows the surrounding lines for context — fewer matches get more context. Toggle <span class="bundle-search-hint-kbd">Aa</span> for case-sensitive and <span class="bundle-search-hint-kbd">.*</span> for regular-expression matching.</div></div>`;let o=qR(e.integrity??``,t,n,r,i,iV(e,t));if(o.error)return A`<div class="bundle-search-results"><div class="bundle-search-error"><span class="bundle-search-error-label">Invalid regular expression</span> <span class="bundle-search-error-msg mono">${o.error}</span></div></div>`;let{fileResults:s,totalHits:c,truncated:l}=o,u=NV(t);if(s.length===0)return A`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?TV(c):0,f=s.length;return A`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${f}${l?`+`:``} ${f===1?`file`:`files`}</span> ${u?A`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:M} ${l?A`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:M}</div>${O(s,e=>e.path,e=>AV(e,u,d))}</div>`}var MV=new WeakMap;function NV(e){return MV.has(e)||MV.set(e,Mn([...e.keys()].toSorted()).prefix),MV.get(e)}var PV={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function FV(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=PV;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=qR(e.integrity??``,t,r,i,a,iV(e,t));if(c.error)return null;let l;if(c.truncated){let e=UR(r,i,a);l=new Set;let t=o.split(`
|
|
185
|
-
`);for(let n=0;n<t.length;n++)e.ranges(t[n]).length>0&&l.add(n+1)}else l=new Set(c.fileResults.find(e=>e.path===n)?.hits.map(({ln:e})=>e));return PV={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function IV(e,t,n,r){let i=F.bundleSourceFile;if(!i)return M;let a=t.get(i),{fileFindings:o,lineFindings:s}=RB(e,i,a),c=OB(e,r,i,a,o,s);return A`<aside class="bundle-search-side">${zB(i,null,c.toggle)}<div class="bundle-source-body">${BB(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function LV(e,t=null){let n=Ft(e);if(n.size===0)return A`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=F.bundleSearchQuery,i=F.bundleSearchRegex,a=F.bundleSearchCase,o=null;if(F.bundleSourceFile){let t=FV(e,n,F.bundleSourceFile,r,i,a);t&&t.size===0?(F.bundleSourceFile=null,F.bundleSourceFindingIdx=null):o=t}let s=F.bundleSearchContext;return A`<div class="bundle-search-view"><div class="bundle-search-bar-row"><bundle-search></bundle-search><mode-switch data-bundle-search-context label="Context" .checked="${s}" accessible-label="Toggle context lines"></mode-switch></div><div class="bundle-search-main">${jV(e,n,r,i,a,s)} ${IV(e,n,o,t)}</div></div>`}var RV=(e,t,n,r=!1,i=null)=>i?A`<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>`:A`<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>`,zV=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...F.managedSession&&!F.managedSession.publicShare&&(F.managedSession.dependencyReview===!0||F.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],BV=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[jM(e),`Activity`]];function VV(e,t){return WM(e.repoId,t),UM(()=>t===`commits`?A`<repository-history .repository="${e}" .repo="${iN(e)}" .refs="${rN(e.repoId)}"></repository-history>`:t===`agents`?A`<repository-agents .repository="${e}" .repo="${iN(e)}"></repository-agents>`:t===`pulse`?A`<repository-pulse .repository="${e}" .repo="${iN(e)}"></repository-pulse>`:t===`replay`?A`<repository-replay .repository="${e}" .repo="${iN(e)}"></repository-replay>`:A`<repository-issues .repository="${e}" .repo="${iN(e)}" .kind="${t}"></repository-issues>`)}function HV(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?vN(e):null,l=c??e.repository,u=!!c||a&&!!l&&!F.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:M;return A`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${I()&&e.managedId&&e.repoId==null?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-bundles`},bubbles:!0,composed:!0}))}">Bundles</button> <span aria-hidden="true">></span></span>`:M} ${s?A`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>Jj()}">npm</button> <span aria-hidden="true">></span></span>`:M} <span class="bundles-slide-icon" aria-hidden="true">${k(s?ea:l?sa:$i)}</span><div class="${w({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:Lj(s.name)}"></npm-version-select>`:l?A`<repository-code-source .repository="${l}" .tab="${t}" .repos="${nN()}" .refs="${rN(l.repoId)}"></repository-code-source>`:A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</div>`}</div><button type="button" class="bundles-download-btn bundles-scan-button" ?hidden="${!OR(e)}" @click="${()=>{kR(e)}}">${k(aa)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>RV(e,n,t,a||!!c,o))}</div>${u?A`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?qM(l):`the repository`}`}"></span>`:M}</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`:M}" @click="${d}">${r}</div></div>`}function UV({name:e,spec:t,tab:n}){return HV({npm:{name:e,version:t??`latest`}},n,zV(),A`<div class="bundles-slide-placeholder" role="status">Opening ${vj(e,t)}…</div>`,{opening:!0})}function WV(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?qM({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 HV({repository:f},i,BV(i),p&&di.has(i)?VV(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?A`<repository-treemap .repository="${f}"></repository-treemap>`:s?A`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${ON(e)}</div>`:A`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>SN(e,t):null})}function GV(e){let t=!!e.npm;t&&!li.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!ui.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`code`);let r=!t&&!n&&Iz(e,F.bundleDetails,F.bundleDetailsTab===`advisories`);F.bundleDetailsTab===`advisories`&&!r&&(F.bundleDetailsTab=`overview`);let i=t||F.bundleDetailsTab===`compare`||Bx(F.bundles??[],F.selectedBundle).length>0,a=!I();F.bundleDetailsTab===`issues`&&!a&&!n&&(F.bundleDetailsTab=`overview`);let o=F.bundleDetailsTab,s=o===`overview`,c=F.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&Kt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&Gz(c,X).catch(()=>{}),HV(e,o,t?zV():n?BV(F.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?dH(e,c):u?BT(o,[[`terminal`,()=>A`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>A`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>A`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>yV(c,e)],[`search`,()=>LV(c,e)],[`commits`,()=>VV(e.repository,`commits`)],[`pulls`,()=>VV(e.repository,`pulls`)],[`agents`,()=>VV(e.repository,`agents`)],[`pulse`,()=>VV(e.repository,`pulse`)],[`replay`,()=>VV(e.repository,`replay`)],[`review`,()=>jR(()=>A`<npm-review .entry="${e}" .details="${c}" .request="${F.npmReview}" .session="${F.managedSession}" .source="${wI(e)}"></npm-review>`)],[`compare`,()=>jR(()=>A`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${F.bundleCompare}" .source="${t?wI(e):n?AI(e):null}"></bundle-compare>`)],[`issues`,()=>n?VV(e.repository,`issues`):YV(c)],[`advisories`,()=>Qz(c,X,OR(e)?()=>{kR(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?A`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?A`<div class="${w({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:A`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function KV(e,t={}){if(!e)return M;let n=[];if(e.fileHash&&(n=Pf(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=Ff(t.bucketKey,e):t.kind===`repository`&&(n=If(t.bucketKey,e))),n.length===0)return M;let r=n.slice(0,2),i=n.length-r.length;return A`<div class="bundle-issue-reports">${r.map(e=>{let t=ot[tS(e)]??ot.default;return A`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button>`})} ${i>0?A`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:M}</div>`}function qV(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 JV(e,t){return A`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?A`<p class="bundle-issues-empty-hint">${t}</p>`:M}</div>`}function YV(e){if(e.managedId)return JV(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return JV(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return JV(`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=uB(e.fileHashes,`issues`);if(t.size===0){let t=aB();if(t===0)return JV(`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+=iB(t).length;return n>0?JV(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):JV(`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 XV(t,{kind:`bundle`})}function XV(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=Mn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=Mi[NB(t)]??0,a=Mi[NB(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?A`<span class="mono">${i}</span>`:M}</div><ul class="bundle-issues-list">${O(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=Mi[e.severity]??0,r=Mi[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return A`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?A`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?A`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:A`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${O(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=qV(i.line),l=s(i,F.triage.get(E(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=A`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?A`<span class="bundle-issues-finding-line">${c}</span>`:M} ${u?A`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:M} <span class="bundle-issues-finding-spacer"></span> ${KV(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${Mw(Ki(i),{paragraphs:!1})}</div>`;return A`<li class="bundle-issues-finding">${t===`bundle`?A`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:A`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function ZV(e){let t=F.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?GV(n):A`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var QV=A`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8"/><path d="m4.5 7 3.5 3.5L11.5 7"/><path d="M2.5 13h11"/></svg>`,$V=A`<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg>`,eH=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`}),tH=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function nH(e){if(eH[e])return eH[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return tH[(t>>>0)%tH.length]}function rH(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ar(t))}function iH(e){delete e.currentTarget.dataset.tooltip,or()}var aH=e=>e.codeStats??=Gt(e.npm?new Map([...Yt(e)].filter(([e])=>!YA.test(e.slice(e.lastIndexOf(`/`)+1)))):Yt(e),Bt(e));function oH(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return M;let n=aH(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return M;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?A`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>A`<li><span class="bundles-languages-swatch" style="${D({background:nH(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:M;return A`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${rH}" @pointerleave="${iH}">${i.map(({key:e,label:t,lines:n})=>A`<span class="bundles-languages-segment" style="${D({flexGrow:n,background:nH(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function sH(e){try{await(await K()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function cH(e,t){let n=IR(t),r=oH(t);return A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?Ke()?A`<button type="button" class="bundles-download-btn" @click="${()=>{sH(e)}}">${QV}<span>Download bundle</span></button>`:A`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${QV}<span>Download bundle</span></a>`:A`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${QV}<span>Download bundle</span></button>`} ${n?A`<div class="bundles-export-pair"><button type="button" class="bundles-download-btn" data-bundle-export-sbom="cyclonedx" data-tooltip="Export a CycloneDX SBOM (.cdx.json)">CycloneDX</button> <button type="button" class="bundles-download-btn" data-bundle-export-sbom="spdx" data-tooltip="Export an SPDX SBOM (.spdx.json)">${$V}<span>SPDX</span></button></div>`:M}</div>${r}</div>`}function lH(e,t,{placeholder:n=M,overviewClass:r=``}={}){return A`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function uH(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function dH(e,t){if(e.npm)return mH(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>A`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?A`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?M:A`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:M} ${at(i,t,e.commitInfo).map(t=>A`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?k(ca):M}<span>${t.text}</span></a> ${t.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${rt(e.commitInfo,t.commit.hash)??M}" target="_blank" rel="noopener noreferrer">${k(la)}<span>${t.commit.text}</span></a>`:M} ${t.commit?.tags?A`<span class="bundle-origin-tags">${t.commit.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${k(Yi)}<span>${e.name}</span></a>`)}</span>`:M}</dd>`)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?A`<dt>Prefix</dt><dd class="mono">${t}</dd>`:M} ${i?.entries?.size>0?A`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>A`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${$B(e,t)}</button></li>`)}</ul></dd>`:M} ${n&&Number.isSafeInteger(a)?A`<dt>Size</dt><dd>${Wr(a)}</dd>`:M}</dl>`,s=cH(e,t);if(!n)return lH(o(``,!0),s);if(t.error)return lH(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Bt(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`?ya(e.sourcesContent[n]):null));return SB(o,A`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?A`<dt>Output</dt><dd class="mono">${e.file}</dd>`:M} ${e.sourceRoot?A`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:M} ${e.names||t.namesCount!=null?A`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:M}`,r,i,null,s,{bundleSize:t.size,unpackedSize:uH(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Bt(t),{sourceNames:r,resources:i}=pH(Vt(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 SB(o,A`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?A`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:M}`,r,l,Ut(t),s,{bundleSize:t.size,unpackedSize:uH(l),resources:i,details:t})}return lH(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var fH=new WeakMap;function pH(e){if(!fH.has(e)){let t=[...e.keys()];fH.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return fH.get(e)}function mH(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=A`<a class="bundles-download-btn" href="${n}">${QV}<span>Tarball</span></a>`,i=A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${bP(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return lH(CM(e,{githubFigures:HP(e),provenance:qP(e),provenanceNamesBuilder:WP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Bt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=rF(t),d=MP(e.npm);return SB(t=>CM(e,{prefix:t,githubFigures:HP(e),provenance:qP(e),provenanceNamesBuilder:WP(e.npm),files:c}),TM(e,c,t),a,s,null,M,{bundleSize:t.size,unpackedSize:uH(s),resources:l,leadColumn:A`${hM(e)}${ZP(e)}`,trailColumns:bI(l,o),summaryExtra:A`${FP(e,c)}${dF(e,t)}${yI(e,oH(t,{legend:!0}),t)}${LP(e,r,EF(e))}`,overviewClass:`npm-overview`,lines:aH(t).lines,sized:(e,t,n)=>xA(e,u[e],n),fileTag:e=>A`${NP(d.get(e))}${fF(t,e,!0)}`,fileFlags:e=>mF(t,e,d.get(e)),fileIcon:e=>qe(e,l.has(e)?`binary`:void 0),fileFilter:sF(e)})}function hH(){Wf().catch(()=>{});let e=Mf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,F.triage.get(E(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===F.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>hf(e,t)),n.push([r,{findings:a,files:o,reports:c,versions:e}]))}let r=F.selectedPackage,i=r?n.find(([e])=>e===r)??null:null,a=null;if(i){let e=i[1].versions,t=F.selectedPackageVersion;a=e.find(([e])=>e===t)??null,!a&&e.length===1&&(a=e[0])}let o=a?a[1]:i?i[1]:null;if(i&&F.packageDetailsTab===`issues`)return SH(i[0],o,a?a[0]:void 0);let c=F.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();bH(l,F.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return A`<div class="${w({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?A`${n.length} ${n.length===1?`package`:`packages`}`:A`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?A`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:M}</div></div>${vH(t)}</header>${n.length===0?A`<p style="${D({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?A`<p style="${D({color:`var(--muted)`})}">No packages match "${F.packagesSearchQuery}".</p>`:A`<div class="${f}"><ul class="packages-list">${O(gH(l),_H,e=>CH(e,r,F.selectedPackageVersion))}</ul>${i?A`<aside class="packages-details" id="packages-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-package aria-label="Close details">×</button></header><div class="packages-details-body">${EH(i[0],o,a?a[0]:void 0)}</div></aside>`:M}</div>`}</div>`}function gH(e){let t=[];for(let[n,r]of e){let e=r.versions;if(e.length<=1){let[r,i]=e[0];t.push({kind:`single`,pkg:n,version:r,bucket:i,totalVersions:1});continue}let[i,a]=e[0],o=F.expandedPackages.has(n);if(t.push({kind:`latest`,pkg:n,version:i,bucket:a,totalVersions:e.length,expanded:o}),o)for(let r=1;r<e.length;r++){let[i,a]=e[r];t.push({kind:`other`,pkg:n,version:i,bucket:a,totalVersions:e.length})}}return t}function _H(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function vH(e){return A`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${yH}"></triage-selector></div>`}var yH=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function bH(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 xH(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,F.triage.get(E(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function SH(e,t,n){let r=Mf().get(e),i=xH(r,n),a=F.packageSlideTriage??`live`,o=r?DH(r,e,a,n):new Map,s=[...o.values()].reduce((e,t)=>e+t.length,0),c=a===`live`?s===1?`issue`:`issues`:s===1?`${a} issue`:`${a} issues`,l=a===`live`?`No live issues for this package.`:`No ${a} issues for this package.`,u=typeof n==`string`?` @ ${n}`:``;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="package-slide-back" aria-label="Back to packages">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${`${e}${u}`}">${e}${u}</div><div class="bundles-slide-integrity">${s} ${c} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="package" .counts="${i}"></slide-triage-tabs></header><div class="bundles-slide-body">${o.size===0?A`<div class="bundle-issues-empty">${l}</div>`:XV(o,{kind:`package`,bucketKey:e})}</div></div>`}function CH(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=Ii(e,F.severityMode);s[t]!==void 0&&s[t]++}let c=Ni.filter(e=>s[e]>0),l=kr(i),u={selected:i===t&&wH(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return A`<li class="${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?M:A`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?TH(i,e.expanded,e.totalVersions-1):M}</div><span class="packages-row-meta">${o.findings.length} ${o.findings.length===1?`finding`:`findings`} · ${o.files.size} ${o.files.size===1?`file`:`files`} · ${o.reports.size} ${o.reports.size===1?`report`:`reports`}</span></div>${c.length>0?A`<div class="packages-row-chips">${c.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-package-row-issues="${i}" data-package-row-issues-version="${d}" aria-label="${f}">Issues →</button></li>`}function wH(e,t){return e.kind===`single`||e.version===t}function TH(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return A`<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 EH(e,t,n){let r=Mf().get(e),i=[...(r?DH(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-package-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${i>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:M}</div>${OH(e,t,n)}`}function DH(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,F.triage.get(E(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=kH(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function OH(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=Ii(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ni.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=Mf().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return A`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?A`<dt>Version</dt><dd class="mono">${n}</dd>`:M} ${l?A`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:M}<dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${i.length>0?A`<div class="packages-detail-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=Zx[tS(e)]??Zx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=kH(e,t);return A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${t}">${r}</span> <span class="packages-detail-file-count">${n.length}</span></li>`})}</ul>`}function kH(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 AH(){Wf().catch(()=>{});let e=Nf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,F.triage.get(E(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===F.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=F.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&F.repositoryDetailsTab===`issues`)return FH(i[0],i[1]);let a=F.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||In(e).toLowerCase().includes(a)):n.slice();NH(o,F.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return A`<div class="${w({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?A`${n.length} ${n.length===1?`repository`:`repositories`}`:A`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?A`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:M}</div></div>${jH(t)}</header>${n.length===0?A`<p style="${D({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?A`<p style="${D({color:`var(--muted)`})}">No repositories match "${F.repositoriesSearchQuery}".</p>`:A`<div class="${u}"><ul class="packages-list">${O(o,([e])=>e,([e,t])=>IH(e,t,e===r))}</ul>${i?A`<aside class="packages-details" id="repositories-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-repository aria-label="Close details">×</button></header><div class="packages-details-body">${LH(i[0],i[1])}</div></aside>`:M}</div>`}</div>`}function jH(e){return A`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${MH}"></triage-selector></div>`}var MH=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function NH(e,t){let n=t===`name-asc`?(e,t)=>In(e[0]).localeCompare(In(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||In(e[0]).localeCompare(In(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||In(e[0]).localeCompare(In(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||In(e[0]).localeCompare(In(t[0]));e.sort(n)}function PH(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,F.triage.get(E(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function FH(e,t){let n=Nf().get(e),r=PH(n),i=F.repositorySlideTriage??`live`,a=n?RH(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${In(e)}">${In(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?A`<div class="bundle-issues-empty">${c}</div>`:XV(a,{kind:`repository`,bucketKey:e})}</div></div>`}function IH(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=Ii(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ni.filter(e=>r[e]>0),a=kr(e),o=In(e);return A`<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?A`<div class="packages-row-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function LH(e,t){let n=Nf().get(e),r=[...(n?RH(n):new Map).values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-repository-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${r>0?A`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:M}</div>${zH(e,t)}`}function RH(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,F.triage.get(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 zH(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=Ii(e,F.severityMode);n[t]!==void 0&&n[t]++}let r=Ni.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return A`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${In(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?A`<div class="packages-detail-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Zx[tS(e)]??Zx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${S(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function BH(e,t){let n=new Set(e),r=new Set,i=new Map,a=new Map(e.map((e,t)=>[e,t]));for(let e of t){let t=[...new Map(e.members.map(e=>[JSON.stringify([e.id,o(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)r.add(e.id);let c=t.filter(e=>n.has(e.id)||e.isApp),l=JSON.stringify([t.map(e=>e.id).toSorted(),c.map(e=>[e.id,o(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=i.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>a.get(e.id)))},i.set(l,u)),u.reports.some(t=>t.name===e.report&&t.managedReportId===e.managedReportId)||u.reports.push({name:e.report,...e.managedReportId?{managedReportId:e.managedReportId}:{},findingId:s[0].id,rowIndex:e.index})}return{rows:[...i.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!r.has(e))}}function VH(e,t,n){return`${e} ${e===1?t:n}`}function HH(e,t){let n=s(e,F.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>gn(F.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return M;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:Ai[i];return A`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>S(e)).join(`, `):M}">${c}</span>`}function UH(e,t=[],n=!0,r=M){let{id:i,title:a}=e,o=t[0]?.name,s=nr(i),c=er(i)??s;return A`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?A`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??M}" data-preview-managed-report="${t[0].managedReportId??M}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:$r(i)?A`<a class="links-finding-id mono" href="${`#${Vr({id:i})}`}" data-tooltip="${s}">${c}</a>`:A`<span class="links-finding-id mono">${c}</span>`} ${a?A`<span class="links-finding-title">${a}</span>`:M} ${HH(e,t)} ${n?M:A`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function WH(e){let t=!!F.currentLinks?.managedId;return A`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>A`<button type="button" class="links-finding-report report-button" data-links-report="${t?M:e}" data-links-finding="${n}" data-managed-report="${r??M}" data-links-preview="${t?n:M}" data-preview-report="${t?e:M}" data-preview-row="${t?i:M}" data-preview-managed-report="${t?r:M}">${k(ot[tS(e)]??ot.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${S(e)}">${S(e)}</span></button>`)}</div>`}function GH(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 A`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${UH(r,n,t.has(r.id),WH(n))}</ul></li>`}return A`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${VH(e.members.length,`finding`,`findings`)} in row</span> ${WH(n)}</div><ul class="links-row-members">${e.members.map(e=>UH(e,n,t.has(e.id)))}</ul></li>`}function KH(e,t){let{rows:n,missing:r}=BH(e,$d(e)),i=new Set(e);return A`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${VH(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${O(n,e=>e.key,e=>GH(e,i))}</ul>${r.length>0?A`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>UH({id:e,title:Qd(e)}))}</ul></div>`:M}</li>`}function qH(e=M){let t=F.currentLinks;if(!t)return M;Wf().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=Zd(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return A`<div class="links-view">${t.managedId?A`<div class="meta-row"><button type="button" class="report-button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-deduplication`}}))}">‹ Deduplication</button></div>`:M}<header class="page-head"><div class="page-title"><h1>Links${e}</h1><div class="meta-row"><span class="links-file-name" data-tooltip-truncated data-tooltip="${n}">${k(Zx[tS(n)]??Zx.default)}${S(n)}</span> <span>${VH(r.length,`link`,`links`)}</span> <span>${VH(a.size,`finding`,`findings`)}</span> ${o.size>0?A`<span>found in ${VH(o.size,`report`,`reports`)}</span>`:M}</div></div></header>${s<a.size?A`<p class="links-note">${VH(a.size-s,`linked finding is`,`linked findings are`)} not in any report you hold. Import the reports they came from and this page fills in.</p>`:M} ${i>0?A`<p class="links-note">${VH(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:M} ${r.length===0?A`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:A`<ol class="links-list">${O(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>KH(e,t))}</ol>`}</div>`}function JH(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function YH(){if(F.currentWorkspace){let e=R().find(e=>e.id===F.currentWorkspace),t=F.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:F.currentWorkspace,fileNames:e?JH(e.reports??[],F.storedFiles??[],t):t}}if(F.currentFile){let e=R().find(e=>Array.isArray(e.reports)&&e.reports.includes(F.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[F.currentFile]}:null}return null}var XH=1500;function ZH({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>jv()}){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,XH);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function QH(e,t,n=0){let{viewMode:r,focusGid:i,tableSelectedGid:a,kanbanPopoverGid:o}=t,s=r===`focus`?i:r===`table`?a:r===`kanban`?o:null;return(s?e.find(e=>H(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function $H(e,t){if(t.currentView!==`findings`)return null;let n=hi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:E(Bg(e))}};return ci(r)?r:n}function eU(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function tU(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Wr(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 nU(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 rU(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function iU(e){return(e?.appMode?e.appFindings:e?.findings)??null}var aU=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=Hx(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 oU(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=>({...Vx(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:iU(t.app),reports:n,bundles:r,repositories:sU(t.repos??[],n,r,nt(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 sU(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 cU=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],lU=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function uU(e,t,{findings:n=e.findings,statusBar:r=M}={}){let i=lU(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return A`<bundle-slide-header class="bundles-slide-header team-slide-header"><header class="bundles-slide-bar team-slide-bar"><h1 class="team-slide-name" data-tooltip-truncated data-tooltip="${e.title}">${e.title}</h1>${r}<div class="bundles-slide-tabs" role="tablist" aria-label="Team">${cU.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>A`<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?M:A`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function dU(e){return A`${e?.scope===`team`?uU(e,`findings`):M}<p class="triage-loading" role="status">Loading report triage…</p>`}function fU(e,t){return t===`findings`?e.title:A`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function pU(e,t,n){if(!e)return M;let r=e[t].length;if(t===`bundles`&&r===0)return M;let i=n===`workspace-${t}`;return A`<button type="button" class="${`files-toggle-btn${i?` active`:``}`}" data-action="${`workspace-${t}`}" aria-pressed="${String(i)}">${`${r} ${r===1?t.slice(0,-1):t}`}</button>`}function mU(e,t){if(!(e>1))return M;let n=t===`files`;return A`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function hU(e){let t=[e.reports?`${e.reports.toLocaleString()} report${e.reports===1?``:`s`}`:null,e.bundles?`${e.bundles.toLocaleString()} bundle${e.bundles===1?``:`s`}`:null].filter(Boolean).join(` · `),n=A`<span class="workspace-content-icon">${k(sa)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?A`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:M} </span><span class="workspace-content-stats">${t}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}`;return A`<li>${e.available?A`<button type="button" class="workspace-content-row" data-workspace-repository="${e.repoId}" data-repository-name="${e.name}" data-repository-path="${e.paths.length===1?e.paths[0]:``}">${n}</button>`:A`<div class="workspace-content-row">${n}</div>`}</li>`}function gU(e,t){if(!e)return A`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return A`<section class="workspace-content-view">${uU(e,n)} ${e.dependencyReview?A`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:A`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return A`<section class="workspace-content-view">${e.scope===`team`?uU(e,n):A`<header class="page-head"><div class="page-title"><h1>${fU(e,n)}${pU(e,`reports`,n)}${pU(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?A`<ul class="workspace-content-list">${t===`repositories`?r.map(hU):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Wr(e.size):null,Number.isFinite(e.summary?.files)?`${e.summary.files.toLocaleString()} files`:null,Number.isFinite(e.summary?.lines)?`${e.summary.lines.toLocaleString()} LoC`:null].filter(Boolean).join(` · `),r=e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:null;return A`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:M}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:M}" ?disabled="${!e.available}"><svg class="workspace-content-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="${t===`bundles`?`m12 3 9 5v8l-9 5-9-5V8zM3 8l9 5 9-5M12 13v8M7.5 5.5l9 5`:`M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 13h8M8 17h5`}/"></path></svg> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}${e.hidden?A`<span class="workspace-content-visibility">Hidden</span>`:M}</span> ${r?A`<span class="workspace-content-repo">${r}</span>`:M} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?A`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:M}</button></li>`})}</ul>`:A`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var _U=3e5,vU=3e4,yU=2,bU=5,xU=20,SU=new Map,CU=[],wU=[],TU=new Map,EU=new Set,DU=null,OU=0;function kU(e){return EU.add(e),()=>EU.delete(e)}var AU=e=>{for(let t of EU)t(e)};function jU(){SU.clear(),CU.length=0,wU.length=0,TU.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{jU(),AU()});function MU(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==DU&&(jU(),DU=e),SU}var NU=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,PU=e=>Number.isSafeInteger(e)&&e>=0?e:null,FU=new Set([`git`,`tarball`,`integrity`]),IU=e=>`${e.name}@${e.version??``}\0${e.patch?.hash??``}`;function LU(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=zU(a);return[{...u,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...ni(l?.hash)?{patch:{hash:l.hash,...ri(l.path)?{path:l.path}:{}}}:{},...FU.has(c)?{unsupported:c}:o===!0?{baseline:o}:s===!0?{reviewed:s}:PU(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...PU(i)>0?{commented:i}:{},...d.length>0?{reviewers:d}:{}}}]}var RU=new Set([`accept`,`accept-with-nits`,`request-changes`,`reject`]),zU=e=>Array.isArray(e)?e.flatMap(e=>typeof e?.login==`string`&&RU.has(e.status)?[{login:e.login,status:e.status,...e.passes===!0?{passes:!0}:{},...e.comment===!0?{comment:!0}:{}}]:[]):[],BU=e=>Array.isArray(e)?e.flatMap(LU):[];function VU(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(LU),more:PU(e.more)??0,unreviewed:BU(e.unreviewed),moreUnreviewed:PU(e.moreUnreviewed)??0,unsupported:BU(e.unsupported),moreUnsupported:PU(e.moreUnsupported)??0,moreLocked:PU(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}:{},...PU(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...PU(n.toReview)===null?{}:{toReview:n.toReview},...PU(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...PU(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}:{},...PU(n.unasked)>0?{unasked:n.unasked}:{},...PU(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 HU(){for(;OU<yU&&CU.length+wU.length>0;){let e=CU.shift()??wU.shift(),[t,n]=e.background?[wU,xU]:[CU,bU],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)TU.delete(e.key);OU++,WU(r).finally(()=>UU(r))}}function UU(e){OU--;for(let t of e)AU(t.pull);HU()}function WU(e){let[{pull:{repoId:t,number:n},review:r,listed:i}]=e;return e.length===1?Fb(t,n,{review:r,listed:i}).then(e[0].settle,e[0].settle):Ib(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 GU(e,t,n=!1,{background:r=!1,listed:i=!1}={}){let a=MU(),o=`${e}\0${t}\0${n}${i?`\0listed`:``}`,s=a.get(o);if(s&&Date.now()<s.until){let e=TU.get(o);return!r&&e?.background&&(wU.splice(wU.indexOf(e),1),e.background=!1,CU.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=KU(e,s);t?a.set(o,t):a.delete(o)}};return TU.set(o,l),(r?wU:CU).push(l),HU(),c}function KU(e,t){let n=e instanceof Error?e:null;if(!n)try{return{status:`ready`,until:Date.now()+_U,...VU(e)}}catch(e){n=e}return n?.name===`AbortError`?t?.status===`ready`?t:null:{status:`error`,until:Date.now()+vU,error:n?.message||`Its lockfiles could not be read.`}}function qU(e,t,n=!1){let r=MU();for(let[i,a]of t){let t=`${e}\0${i}\0${n}`,o=TU.get(t);if(o){let e=o.background?wU:CU;e.splice(e.indexOf(o),1),TU.delete(t)}let s=KU(a,null);s&&r.set(t,s),AU({repoId:e,number:i})}}function JU(e,t,n=!1){return MU().get(`${e}\0${t}\0${n}`)??null}var YU=new WeakMap;function XU(e,{lockfiles:t,review:n},r){let i=YU.get(t)??YU.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 ZU(e){return XU(`added`,e,()=>QU(e))}function QU({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=IU(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??[]])]}:{},...$U(i,r),...tW(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=>nW(e,t)===`wanted`).length}}var $U=(e,t)=>!e.patch?.path&&t.patch?.path?{patch:t.patch}:{},eW={unsupported:0,wanted:1,passed:2,baseline:3};function tW(e,t,n){let r=e=>eW[nW(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 nW(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 rW(e){return XU(`unreviewed`,e,()=>iW(e))}function iW({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=IU(t),r=n.get(e);n.set(e,r?{...r,...$U(r,t)}:t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function aW(e){return XU(e.cut?`failures-cut`:`failures`,e,()=>oW(e))}function oW({lockfiles:e,cut:t,review:n}){if(!n)return null;let r=new Map;for(let t of e.flatMap(e=>e.unsupported??[])){let e=`${t.source}\0${t.name}@${t.version??``}\0${t.from??``}`;r.has(e)||r.set(e,t)}let i=t=>e.reduce((e,n)=>e+(n[t]??0),0),a={versions:[...r.values()],count:n.unsupported??r.size+i(`moreUnsupported`),unread:e.filter(e=>e.error),unchecked:i(`moreLocked`),cut:t};return a.count>0||a.unread.length>0||a.unchecked>0||t?a:null}var Y=e=>A`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,sW=j`<circle cx="8" cy="8" r="6.25"/>`,cW=j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8"/><circle cx="11.5" cy="12.5" r="1.6"/>`,lW={issues:{open:Y(j`${sW}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(j`${sW}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(j`${sW}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(j`${cW}<path d="M11.5 10.9V6.5a2 2 0 0 0-2-2H7.4M8.9 3 7.4 4.5 8.9 6"/>`),draft:Y(j`${cW}<path class="dotted" d="M11.5 10.9V4"/>`),merged:Y(j`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8M4.5 5.1c0 2.4 2.4 3.4 5.4 3.4"/><circle cx="11.5" cy="8.5" r="1.6"/>`),closed:Y(j`${cW}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},uW=Y(j`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),dW={success:[`Checks passed`,Y(j`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,Y(j`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,Y(j`<circle class="fill" cx="8" cy="8" r="3"/>`)]},fW={approved:[`Approved`,Y(j`${sW}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,Y(j`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,Y(j`<path d="M1.25 8S3.75 3.5 8 3.5 14.75 8 14.75 8 12.25 12.5 8 12.5 1.25 8 1.25 8z"/><circle cx="8" cy="8" r="2"/>`)]},pW=Y(j`<circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="12.5" r="1.5"/><path d="M4 5v6M12 11V6a2 2 0 0 0-2-2H7m1.5-1.5L7 4l1.5 1.5"/>`),mW=Y(j`<circle cx="4" cy="3" r="1.5"/><circle cx="4" cy="13" r="1.5"/><circle cx="12" cy="3" r="1.5"/><path d="M4 4.5v7m0-3h3a5 5 0 0 0 5-4"/>`),hW=Y(j`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),gW=Y(j`<path d="M8 1.75 2.25 4.5v7L8 14.25l5.75-2.75v-7z"/><path d="M2.25 4.5 8 7.25l5.75-2.75M8 7.25v7"/>`);function _W(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 vW={claude:A`<span class="agent-logo" aria-hidden="true">${ky(`anthropic`)}</span>`,codex:A`<span class="agent-logo" aria-hidden="true">${ky(`openai`)}</span>`,copilot:A`<span class="agent-logo" aria-hidden="true">${ky(`github-copilot`)}</span>`},yW={claude:`Claude`,codex:`Codex`},bW=new Map;function xW(e){for(let t of e)bW.set(t.id,t)}var SW=e=>yW[e]??bW.get(e)?.name??e;function CW(e){if(vW[e])return vW[e];let t=bW.get(e)?.avatar;return t?A`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:M}var wW=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function TW(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 EW(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]?DW(t,e.branches[0]):null:null}function DW(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 OW=(e,t)=>TW(e)??EW(e,t),kW=`100% 0px`,AW=new WeakMap,jW=new WeakMap,MW=[],NW=!1,PW=new WeakMap;function FW(e){let t=PW.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,PW.set(e,t)}return t}function IW(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(FW(t))return t;t=t.parentNode}return null}function LW(e){for(let t of e)jW.get(t.target)?.cb(t.isIntersecting)}function RW(e){let t=e??document,n=AW.get(t);return n||(n=new IntersectionObserver(LW,{root:e,rootMargin:kW,threshold:0}),AW.set(t,n)),n}function zW(e,t){let n=jW.get(e);n?.io&&n.io.unobserve(e),jW.set(e,{cb:t,io:null}),MW.push(e),NW||(NW=!0,queueMicrotask(BW))}function BW(){NW=!1;let e=MW;MW=[];for(let t of e){let e=jW.get(t);!e||e.io||(e.io=RW(IW(t)),e.io.observe(t))}}function VW(e){let t=jW.get(e);t&&(t.io?.unobserve(e),jW.delete(e))}var HW=2,UW=50,WW=6e3,GW=6e4,KW=new Map,qW=new Map,JW=[],YW=new Set,XW=null,ZW=0,QW=!1,$W=e=>{for(let t of YW)t(e)};function eG(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==XW&&(KW.clear(),qW.clear(),JW.length=0,XW=e),KW}var tG=e=>Number.isSafeInteger(e)&&e>=0?e:null,nG=e=>tG(e?.additions)===null||tG(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions},rG=(e,t)=>({status:`ready`,until:1/0,...e,typeless:nG(t.typeless),binary:t.binary===!0}),iG=e=>({status:`error`,until:Date.now()+GW,error:e});function aG(e,t,n){let r=eG(),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),qW.set(i,{asked:[e,t,n],loading:o}),QW||(QW=!0,globalThis.requestAnimationFrame?requestAnimationFrame(sG):setTimeout(sG,0)),o}function oG(e){let t=eG();for(let[n,r,i,a]of e){let e=nG(a),o=`${n}\0${r}\0${i}`;!e||t.get(o)?.status===`ready`||(qW.delete(o),t.set(o,rG(e,a)),$W(o))}}function sG(){QW=!1;let e=0,t=[];for(let[n,r]of qW){let i=encodeURIComponent(JSON.stringify(r.asked)).length+3;(t.length===UW||t.length>0&&e+i>WW)&&(JW.push(t),t=[],e=0),t.push({key:n,...r}),e+=i}t.length>0&&JW.push(t),qW.clear(),cG()}function cG(){for(;ZW<HW&&JW.length>0;){let e=JW.shift().filter(({key:e,loading:t})=>KW.get(e)===t);e.length!==0&&(ZW++,uG(e).finally(lG))}}function lG(){ZW--,cG()}function uG(e){let t=KW,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),$W(e))};return Rb(e.map(e=>e.asked),e=>{let t=nG(e);r(`${e.name}\0${e.version}\0${e.otherVersion}`,typeof e.error==`string`?iG(e.error):t?rG(t,e):iG(`The server answered with no lines.`))}).then(()=>{for(let e of[...n.keys()])r(e,iG(`The server answered with none of it.`));return null},e=>{for(let t of[...n.keys()])r(t,e?.name===`AbortError`?null:iG(e?.message||`Its lines couldn’t be counted.`))})}var dG=e=>e.was?.find(t=>t!==e.version)??`(empty)`,fG=(e,t)=>A`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,pG=class extends _a{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(){YW.add(this._notify),!this._near&&zW(this,e=>{!e||this._near||(this._near=!0,VW(this),this.requestUpdate())})}_unwatch(){YW.delete(this._notify),VW(this)}render(){if(!this._near||!this.name||!this.version)return M;let e=aG(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;if(e.status===`loading`)return A`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`;if(e.status===`error`)return A`<span class="npm-delta is-error" data-tooltip="${e.error}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Lines not counted</div><div>${e.error}</div></div>`}">?</span>`;let n=A`<div class="compare-tip"><div class="compare-tip-head">Lines changed</div><div class="compare-tip-rows"><span class="compare-tip-label">Against</span><span>${this.base&&this.base!==`(empty)`?this.base:`none, the whole package`}</span> <span class="compare-tip-label">Added</span><span class="is-added">+${e.additions.toLocaleString(`en-US`)}</span> <span class="compare-tip-label">Removed</span><span class="is-deleted">−${e.deletions.toLocaleString(`en-US`)}</span> ${e.typeless?A`<span class="compare-tip-label">Types aside</span><span>${fG(e.typeless.additions,e.typeless.deletions)}</span>`:M}</div>${e.typeless?A`<div class="compare-tip-note">Types aside: leaving out the declaration files changed in types alone</div>`:M} ${e.binary?A`<div class="compare-tip-note">Binary files changed too, which no line counts</div>`:M}</div>`;return A`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}" .tooltipContent="${n}">${fG(e.additions,e.deletions)}${e.binary?A`<span class="npm-delta-binary">, binary</span>`:M}${e.typeless?A`<span class="npm-delta-typeless">(${fG(e.typeless.additions,e.typeless.deletions)} -types)</span>`:M}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,pG);var mG=class extends _a{static properties={text:{attribute:!1},label:{attribute:!1},_copied:{state:!0},_error:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.text=null,this.label=`Copy dependency review`}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this._timer)}async _copy(){if(this._copyable()){this._error=!1;try{await navigator.clipboard.writeText(this.text),this._copied=!0,clearTimeout(this._timer),this._timer=setTimeout(()=>{this._copied=!1},2e3)}catch{this._error=!0}}}_copyable(){return typeof this.text==`string`&&this.text.trim()!==``}render(){return this._copyable()?A`<button type="button" class="${`bundle-code-copy-path dependency-review-copy-button${this._copied?` copied`:``}`}" aria-label="${this.label}" data-tooltip="${this.label}" @click="${()=>this._copy()}">${hw}</button> ${this._error?A`<span role="alert">Could not copy to the clipboard.</span>`:M}`:M}};customElements.define(`dependency-review-copy`,mG);var hG=12e4,gG=3e4,_G=3,vG=12,yG=48,bG=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],xG=(e,t)=>e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number,SG=e=>(t,n)=>(n.item[e]??0)-(t.item[e]??0)||xG(t,n),CG=(e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||xG(e,t),wG={newest:[`Newest`,SG(`createdAt`)],updated:[`Updated`,SG(`updatedAt`)],fewest:[`Fewest to review`,CG]},TG={status:`loading`,until:1/0},EG=new Map,DG=new Set,OG=new Map,kG=new Map,AG=null,jG=!1,MG=()=>{for(let e of DG)e()};function NG(){EG.clear();for(let e of OG.keys())e.abort();OG.clear()}function PG(){jG||(jG=!0,queueMicrotask(()=>{jG=!1;let e=new Set(kG.values());for(let[t,n]of OG)e.has(n)||t.abort()}))}globalThis.addEventListener?.(`dependency-review-changed`,()=>{NG(),MG()});function FG(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==AG&&(NG(),AG=e),EG}function IG(e,t){let n=FG(),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&&LG(e,r,r.length===t.length?null:r,_G),i}function LG(e,t,n,r){let i=EG,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;OG.set(s,e);let c=null;Lb(e,e=>{s.signal.aborted||(typeof e.done==`boolean`?c=e.done?[]:Array.isArray(e.unread)?e.unread:[]:a.has(e.repoId)&&(RG(e,a.get(e.repoId),t=>o(e.repoId,t)),MG()))},{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,BG(e,r,c===null?`The server’s answer ended short.`:t.includes(e)?`Reading its pull requests took too long.`:null));return n&&LG(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,BG(t,n,e?.message||`It couldn’t be read.`))}).finally(()=>{OG.delete(s),MG()})}function RG(e,t,n){if(Array.isArray(e.deltas)&&oG(e.deltas),typeof e.error==`string`)n({status:`error`,until:Date.now()+gG,error:e.error});else if(e.branch===null)n({status:`ready`,until:Date.now()+hG,branch:null});else if(e.branch){let t;try{t=VU(e.branch)}catch(e){n({status:`error`,until:Date.now()+gG,error:e.message});return}let r=(Array.isArray(e.pulls?.items)?e.pulls.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0);n(zG({status:`ready`,branch:t,pulls:{items:r,more:e.pulls?.more===!0}},new Set(r.filter(NU).map(e=>e.number))))}else e.dependencies instanceof Map&&t.telling&&(qU(e.repoId,e.dependencies,!0),n(zG(t,new Set([...t.telling].filter(t=>!e.dependencies.has(t))))))}var zG=(e,t)=>t.size>0?{...e,until:1/0,telling:t}:{...e,until:Date.now()+hG,telling:null};function BG(e,t,n){return t.telling?(qU(e,new Map([...t.telling].map(e=>[e,Error(n??`The server’s answer ended short.`)])),!0),{...t,until:Date.now()+gG,telling:null}):n?{status:`error`,until:Date.now()+gG,error:n}:{status:`ready`,until:Date.now()+hG,branch:null}}var VG=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,HG=({repo:e,item:t})=>`${e.name}#${t.number}`,UG={git:`From git, which isn’t reviewed`,tarball:`A tarball not npm’s registry’s of its version, which isn’t reviewed`,integrity:`Locked with no integrity, which its reviews are held to`};function WG(e,t){let n=nW(e,t);return n===`unsupported`?{label:`can’t review`,tint:`is-failed`,head:`Can’t be reviewed`,said:UG[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:`${VG(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${VG(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`,`${VG(e.commented,`reviewer`)}, counting here alone`]]:[]]}:null}function GG(e,t){let n=WG(e,t);if(!n)return M;let r=A`<div class="compare-tip"><div class="compare-tip-head">${n.head}</div>${n.rows?A`<div class="compare-tip-rows">${n.rows.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:A`<div>${n.said}</div>`}</div>`;return A`<span class="team-deps-review ${n.tint}" data-tooltip="${n.said??M}" .tooltipContent="${n.said?r:null}">${n.label}</span>`}var KG={accept:`accepts`,"accept-with-nits":`accepts with nits`,"request-changes":`requests changes`,reject:`rejects`},qG=new Set([`accept`,`accept-with-nits`]),JG=(e,t)=>({passed:`passes`,baseline:`needs none`})[nW(e,t)]??WG(e,t)?.label??null;function YG(e,t,{added:n,above:r,involved:i,here:a}){let o=WG(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 A`<div class="compare-tip"><div class="team-deps-tip-name">${e.name}${e.version?`@${e.version}`:``}${e.patch?` (patched)`:``}</div>${s.length>0?A`<div class="compare-tip-rows">${s.map(([e,t])=>A`<span class="compare-tip-label">${e}</span><span>${t}</span>`)}</div>`:M} ${i.length>0?A`<div class="compare-tip-head">Pull requests</div><div class="compare-tip-rows">${i.map(({name:e,adds:t,pkg:n,review:r})=>A`<span class="${e===a?`team-deps-tip-here`:M}">${e}</span> <span>${[t?`adds it`:`locks it`,JG(n,r)].filter(Boolean).join(`, `)}</span>`)}</div>`:M} ${c.size>0?A`<div class="compare-tip-head">Reviewed by</div><div class="compare-tip-rows">${[...c.values()].map(e=>A`<span>${e.login}</span> <span>${KG[e.status]}${qG.has(e.status)&&!e.passes?`, not counted`:``}${e.where?`, in ${e.where}\u2019s comments`:``}</span>`)}</div>`:M}</div>`}function XG(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)&&nW(e,t)!==`unsupported`,h=d?ci({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)`:``}`,_=YG(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,ee=A`${gW}<span class="team-deps-name">${e.name}${e.version?A`<span class="team-deps-version">@${e.version}</span>`:M}</span> ${e.patch?A`<span class="team-deps-patched">patched</span>`:M} ${d&&!e.patch&&nW(e,t)===`wanted`?A`<npm-delta .name="${e.name}" .version="${e.version}" .base="${dG(e)}"></npm-delta>`:M} ${GG(e,t)} ${a?A`<span class="team-deps-above${y?` is-reviewed`:``}">${a}</span>`:M} ${b.length>0?A`<span class="team-deps-elsewhere">${b[0]}${b.length>1?` +${b.length-1}`:``}</span>`:M} ${v.length>0?A`<span class="team-deps-also">${r?`${v[0]}${v.length>1?` +${v.length-1}`:``}`:`+${n.length}`}</span>`:M}`;return A`<li>${h?A`<a class="team-deps-row" href="${h}" target="_blank" rel="noopener noreferrer" data-tooltip="${g}" .tooltipContent="${_}">${ee}</a>`:A`<span class="team-deps-row" data-tooltip="${g}" .tooltipContent="${_}">${ee}</span>`}</li>`}var ZG=e=>({repoId:e.repo.repoId,head:e.entry.head??null}),QG=Y(j`<path d="m6 4 4 4-4 4"/>`),$G=class extends Jh{static properties={repositories:{attribute:!1},team:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repositories=[],this.team=null,this._open=new Set,this._notify=()=>this.requestUpdate()}pick(e,{push:t=!0}={}){F.teamDependenciesTab=e;let n=hi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},F.managedTeams);t?G?.pushRoute(n):G?.replaceRoute(n)}updated(){this._shown&&this._shown!==F.teamDependenciesTab&&this.pick(this._shown,{push:!1})}toggle(e){let t=new Set(this._open);t.delete(e)||t.add(e),this._open=t}connectedCallback(){super.connectedCallback(),DG.add(this._notify),this._unsubscribe=kU(this._notify),kG.set(this,this.team)}disconnectedCallback(){super.disconnectedCallback(),DG.delete(this._notify),this._unsubscribe?.(),kG.delete(this),PG()}open(e,{repo:t,item:n}){e.preventDefault(),Te({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=vG){if(t.length===0)return M;let i=this._open.has(e);return A`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?A`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${QG}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:M}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return A`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${QG}${t}</button> ${a?A`${this.rows(e,n,r,yG)}${i>0?A`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:M}`:M}</div>`}render(){this.isConnected&&kG.get(this)!==this.team&&(kG.has(this)&&PG(),kG.set(this,this.team));let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()],t=IG(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(NU).map(t=>({repo:e,item:t,entry:JU(e.repoId,t.number,!0)??TG}))),a=i.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=ZU(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(nW(t,e.entry.review))),n=t.filter(t=>nW(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:aW(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:rW(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted(CG),o=Object.hasOwn(wG,F.teamDependenciesSort)?F.teamDependenciesSort:`newest`,s=o===`fewest`?a:a.toSorted(wG[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(IU(t))??l.set(IU(t),{pkg:t,pulls:[]}).get(IU(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=>[HG(e),e.entry.error])],f=r.flatMap(({repo:e,read:t})=>{let{count:n}=rW(t.branch),r=aW(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,ZU(e.entry).versions],[!1,rW(e.entry).versions]])for(let r of n){let n=p.get(IU(r))??p.set(IU(r),new Map).get(IU(r));n.has(HG(e))||n.set(HG(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(HG(e)),g={elsewhere:(e,t=null)=>[...p.get(IU(e))?.values()??[]].filter(e=>e.pkg.commented>0&&(!t||HG(e.pull)!==HG(t))).map(e=>h(e.pull)),named:h,shorten:m,among:e=>[...p.get(IU(e))?.values()??[]].map(({pull:e,pkg:t,adds:n})=>({name:h(e),adds:n,pkg:t,review:e.entry.review}))},_=d.map(([e,t])=>`${m(e)}: ${t}`),v=F.teamDependenciesTab,y=bG.filter(([e])=>e!==`branch`||f.length>0||u&&v===`branch`),b=y.some(([e])=>e===v)?v:`pulls`;this._shown=b;let ee={pulls:a.length,versions:l.size,branch:f.reduce((e,{count:t})=>e+t,0)};return A`<div class="team-deps">${oS({tabs:y.map(([e,t])=>({id:e,label:A`${t}${ee[e]==null||u&&ee[e]===0?M:A`<span class="team-deps-tab-n">${ee[e].toLocaleString(`en-US`)}</span>`}`})),current:b,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${b}`}" aria-labelledby="${`team-deps-tab-${b}`}">${b===`reviews`?jR(()=>A`<dependency-review-list .session="${F.managedSession}" .team="${this.team}"></dependency-review-list>`):A`${u?A`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:M} ${_.length===1?A`<p class="team-deps-quiet" role="alert">${_[0]}</p>`:_.length>1?A`<p class="team-deps-quiet" role="alert" data-tooltip="${_.join(`
|
|
186
|
-
`)}" .tooltipContent="${A`<div class="compare-tip"><div class="compare-tip-head">Couldn’t be read</div><div class="compare-tip-rows">${d.map(([e,t])=>A`<span>${m(e)}</span><span>${t}</span>`)}</div></div>`}">${VG(_.length,`repository or pull request`)} couldn’t be read.</p>`:M} ${!u&&n.length>0&&r.length===0&&d.length===0?A`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:M} ${b===`branch`?M:c.map(({repo:e,read:t})=>A`<p class="team-deps-quiet" role="alert">Only ${m(e.name)}’s ${VG(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${r.length===0?M:b===`pulls`?this.renderPulls(s,o,l,u,c.length>0,g):b===`versions`?this.renderVersions(l,u,g):f.map(({repo:e,read:t})=>this.renderBranch(e,t,g))}`}</div></div>`}renderPulls(e,t,n,r,i,{elsewhere:a,named:o,among:s}){if(e.length===0)return r?M:A`<p class="workspace-content-empty">No open pull request${i?` checked`:``} wants its dependencies reviewed.</p>`;let c=new Map,l=e=>t=>{let r=c.get(IU(t))===e?null:c.get(IU(t));return XG(t,e.entry.review,{others:(n.get(IU(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),...ZG(e)})};return A`${e.length>1?A`<div class="team-deps-sort"><span class="bundles-overview-sort" role="group" aria-label="Pull request order">${Object.entries(wG).map(([e,[n]])=>A`<button type="button" aria-pressed="${String(e===t)}" @click="${()=>{F.teamDependenciesSort=e}}">${n}</button>`)}</span></div>`:M}<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!c.has(IU(e))),n=e.wanted.filter(e=>c.has(IU(e)));for(let n of t)c.set(IU(n),e);let r=HG(e),i=rW(e.entry),u=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return A`<li class="team-deps-pull"><div class="team-deps-pull-top"><a class="team-deps-pull-head" href="${u}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${o(e)}</span><span class="team-deps-pull-title">${e.item.title||`(no title)`}</span> <span class="${`team-deps-count${e.failed?` is-failed`:``}`}">${e.failed?`review fails`:e.size>0?`${VG(e.toReview,`version`)} to review`:`${VG(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?A`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:M}</div>${this.rows(`${r}:own`,t,l(e))} ${e.untold>0?A`<p class="team-deps-quiet">and ${VG(e.untold,`more version`)} past those listed</p>`:M} ${n.length>0?A`<ul class="team-deps-versions is-above">${n.map(l(e))}</ul>`:M} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${VG(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${VG(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,i.versions,t=>XG(t,e.entry.review,{elsewhere:a(t,e),involved:s(t),here:o(e),...ZG(e)}),e.others-i.versions.length):M}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r,among:i}){return e.size===0?t?M:A`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:A`<section class="team-deps-section" aria-label="Versions to review">${this.rows(`versions`,[...e.values()],({pkg:e,pulls:t,patched:a})=>XG(a?{...e,patch:a.patch}:e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e),added:!0,involved:i(e),...ZG(a?.pull??t[0])}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r,among:i}){let{versions:a,count:o}=rW(t.branch),s=aW(t.branch),c=s?.unread.flatMap(e=>e.paths)??[],l=[...a,...s?.versions??[]];return A`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${VG(o,`version`)} unreviewed${s?.count?`, ${s.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${c.length>0?`, ${VG(c.length,`lockfile`)} unread`:``}</p>${c.length>0?A`<p class="team-deps-quiet" role="alert">Unread, so what ${c.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${c.map((e,t)=>A`${t>0?`, `:``}<code>${e}</code>`)}</p>`:M} ${this.rows(`branch:${e.repoId}`,l,r=>XG(r,t.branch.review,{elsewhere:n(r),involved:i(r),repoId:e.repoId,head:t.branch.head??null}),yG)} ${o>a.length?A`<p class="team-deps-quiet">and ${(o-a.length).toLocaleString(`en-US`)} more, not listed</p>`:M}</section>`}};customElements.define(`team-dependencies`,$G);var eK=null;function tK(e){let t=eK=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{eK===t&&(eK=null)}).catch(()=>{}),t}function nK(e){let t=null;return n=>{t!==null&&t!==n&&eK?.skipTransition(),t=n,e()}}var rK=null;function iK(e){return e.some(e=>e._managedReportId&&!e.tree&&e.treeFiles>0)}function aK(e){let t=Fs(F.reports),n=F.currentManagedTeam;return!n||!iK(t)?!1:rK===t||(rK=t,oK(t,n,F.managedTeams.find(e=>e.id===n)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,e),!0)}async function oK(e,t,n,r){let i=await Ex(t,{reportId:n});if(rK===e&&(rK=null),Fs(F.reports)===e&&F.currentManagedTeam===t){if(!i){Rx(`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 sK(){z.classList.add(`active`),th.classList.add(`hidden`)}function cK(){let e=mr(F.reports);if(!e)return null;let t=Object.keys(e),n=i_().filter(e=>Gg(e).commonTriage===F.shownTriage),r=fr(n,F.severityMode),i=gr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=Ii(t,F.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=U(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return T.focusedPkg?(c=t.filter(e=>(xr(e)??`__own__`)===T.focusedPkg),T.showAll||(c=c.filter(e=>vr(e,r,i)))):c=T.showAll?t:t.filter(e=>vr(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Cr(c)}}function lK(){let e=kT();if(!e)return;let t=cK();if(!t)return;let n=F.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&I())})}function uK(){let e=kT();if(!e)return;let t=cK();t&&e.refreshTopPkgs(t)}function dK(e){return`${ji[e]??e} findings`}function fK(e,t,n){return n?A`<repo-chip url="${n}"></repo-chip>`:I()?M:F.currentWorkspace?t?A`<repo-chip url="${t}"></repo-chip>`:M:e?A`<repo-chip url="${F.repoUrl}" editable ?editing="${F.repoEditing}" ?empty="${!F.repoUrl}"></repo-chip>`:t?A`<repo-chip url="${t}"></repo-chip>`:M}function pK(e,t,n,r,i){let a=e.length,o=new Set(F.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=F.currentWorkspace?R().find(e=>e.id===F.currentWorkspace):null,l=oU(F,c?[c]:[],Hu),u=c?`Workspace: ${c.name}`:s?dK(s):`Findings`,d=s&&Zx[s]?s:`default`,f=k(Zx[d]),p=A`<svg class="file-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>`,m=M;if(l)m=pU(l,`reports`,F.currentView);else if(t.length===1){let e=S(t[0]);m=A`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=A`<button type="button" class="file-chip" data-copy-report="${t.map(S).join(`
|
|
187
|
-
`)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=F.currentWorkspace?[]:dq(!!s),_=M;if(a>0){let t={};for(let n of e){let e=Ii(Lg(n),F.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ni.filter(e=>t[e]>0);n.length>0&&(_=A`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return A`<span class="${`status-seg sev-${e}`}" style="${D({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return uU(l,F.currentView,{findings:a,statusBar:_});let v=new Set(F.reports.map(e=>e.repo??null)),y=fK(n,r,v.size===1?[...v][0]:null),b=A`<span class="sep" aria-hidden="true"></span>`,ee=l?M:mU(i,F.currentView);return A`<header class="page-head"><div class="page-title"><h1>${l?fU(l,F.currentView):u}${m}${pU(l,`bundles`,F.currentView)}${y}${ee}${gK()}</h1><div class="meta-row"><span>${h}</span> ${_} ${g.length>0?A`${b}${g.map(e=>A`<span class="tag">${e}</span>`)}`:M}</div></div></header>`}var{suggestSync:mK}=ZH({open:e=>Me({names:e})}),hK=new Set([`findings`,`files`,`links`]);function gK(){if(V.status!==`online`||!hK.has(F.currentView))return M;let e=YH();if(!e)return M;let{workspaceId:t,fileNames:n,mode:r}=e,i=wh(t);if(i.length>0&&mK(t,i,{onSync:()=>_K(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return vK({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:()=>_K(t,r,n)});let a=_h(t,e)?`cloud`:`local`;return vK({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>SK({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=R().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=Ch(t),c=n.filter(e=>!_h(t,e)),l=o.filter(e=>!vh(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return M;let d=[s>0?`${s} in cloud`:null,u.length>0?`${u.length} local-only`:null,i.length>0?`${i.length} differ from the cloud`:null,s>0?`click "cloud" to re-check storage`:null,u.length>0?`click "local" to upload ${u.length}`:null].filter(Boolean).join(` — `),f=i.length===1?`Your copy of "${i[0]}" doesn't match its cloud copy. Click to re-check and bring them in line.`:`${i.length} reports don't match their cloud copies. Click to re-check and bring them in line.`,p=i.length===0?M:A`<button type="button" class="sync-badge-chunk differ" data-tooltip="${f}" aria-label="${`${i.length} report${i.length===1?``:`s`} differ from the cloud \u2014 re-check`}" @click="${e=>{e.stopPropagation(),_K(t,r,n)}}">${bK()}<span>${i.length} differ</span></button>`,m=s===0?M:A`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),ve({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${xK()}<span>${s} cloud</span></button>`,h=u.length===0?M:A`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),SK({workspaceId:t,items:u})}}">${yK()}<span>${u.length} local</span></button>`,g=A`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==M);return A`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:A`${g}${e}`)}</div>`}function _K(e,t,n){let r=R().find(t=>t.id===e),i=t===`single`?JH(r?.reports??[],F.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return ve({workspaceId:e,cloudCount:Ch(e),localFileNames:i,localBundles:a,autoRun:!0})}function vK({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?xK():e===`differ`?bK():yK(),a=A`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?A`<button type="button" class="report-sync-badge report-sync-badge-clickable" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}" @click="${r}">${i}${a}</button>`:A`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function yK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="18" x2="6.01" y2="18"/><line x1="10" y1="18" x2="10.01" y2="18"/><path d="M6 14V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v10"/></svg>`}function bK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 4v14"/><path d="M3 14l4 4 4-4"/><path d="M17 20V6"/><path d="M13 10l4-4 4 4"/></svg>`}function xK(){return A`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.5 19a4.5 4.5 0 1 0-1-8.9A6 6 0 0 0 5.07 13.5 4 4 0 0 0 6 21h11.5z"/></svg>`}async function SK({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await ul(),t=new Map(e.map(e=>[e.integrity,e.name]));for(let e of n){let n=t.get(e.identifier);n&&(e.label=n)}}await Pe({workspaceId:e,items:t})}function CK(e){return Object.values(e).some(e=>e>0)||F.filterSeverities.size>0?A`<severity-chips .counts="${e}"></severity-chips>`:M}function wK(e){return Object.values(e).some(e=>e>0)||F.filterColors.size>0?A`<triage-filter .counts="${e}"></triage-filter>`:M}function TK(e,t,n,r,i,a,o,s){let{showSource:c,showConfidence:l,showPriority:u,showGraphMode:d,showFileSort:f,kanbanMode:p,showRepo:m,hasComment:h,hasFix:g,hasFlagged:_,hasDuplicates:v,hasCrossContext:y,hasAppStacked:b,showSecurity:ee,showSeverityMode:te,revalidateOptions:ne,showPartial:re,canDropLayer:ie,canDetailLayer:ae,canUpstreamLens:oe,confirmedLocked:se}=a;return A`<div class="toolbar"><div class="toolbar-row"><view-mode-buttons modes="${d?`kanban,focus,table,list,grouped,graph`:`kanban,focus,table,list,grouped`}"></view-mode-buttons><findings-sort ?show-file="${f}" ?show-confidence="${l}" ?show-priority="${u}"></findings-sort>${c?A`<source-filter></source-filter>`:M} ${!se&&(l||ne.length>0)?A`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${ne}" ?has-partial="${re}"></conf-filter>`:M} ${h||g||_||F.filterComment||F.filterFix||F.filterFlagged?A`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:M} ${p?M:A`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!F.currentWorkspace&&(v||F.filterDuplicates)||y||b||ee||F.filterCrossContext||F.filterAppStacked?A`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${ee}"></annotation-filter>`:M} ${ie||F.revalidateConflicts.size>0?A`<revalidation-switch ?can-drop="${ie}" ?can-detail="${ae}" ?can-upstream="${oe&&ie}" .upstreamDisabled="${F.showRevalidation===!1&&ie}"></revalidation-switch>`:M}</div></div><div class="toolbar-row sev-row">${te?A`<severity-mode-switch></severity-mode-switch>`:M} ${CK(r)} ${o.analyzers.length>1||o.models.length>1?A`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:M} ${m&&s.length>1?A`<repo-filter .options="${s}"></repo-filter>`:M} ${wK(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function EK(e,t){return e.map(e=>({p:Lg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var DK=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),OK=null,kK=0,AK=null;function jK(e,t=!1,n=null,r=!1,i=!1){return A`<finding-card data-gid="${H(e)}" .group="${e}" ?in-group="${t}" context="${n??M}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var MK=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2H2v4M10 2h4v4M14 10v4h-4M6 14H2v-4"/></svg>`,NK=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2"/></svg>`,PK={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function FK(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??Gg(e),o=Bg(e),s=Wi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&F.currentWorkspace?eS(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=Ii(o,F.severityMode),h=PK[m]??`?`,g=Fi(o)&&F.severityMode!==`original`,_=U(o),v=_?.flagged===!0,y=ig(o,_),b=_?.comment??``,ee=M;c&&y?ee=_i(y)?A`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${Ww}</managed-fix-link>`:jg(o)?A`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${Ww}</button>`:A`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${Ww}</span>`:c&&(b||I()&&kg(o))&&(ee=A`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Uw}</comment-preview>`);let te=A`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${Cw(m)} \u2014 corrected from ${Cw(o.severity)}`:M}" aria-label="${g?`Severity ${Cw(m)}, corrected from ${Cw(o.severity)}`:`Severity ${Cw(m)}`}">${h}${g?`*`:``}</span> ${v?A`<span class="kanban-flag" aria-label="Flagged">${nT}</span>`:M} ${ee}</div><span class="kanban-title">${s}</span><div class="kanban-meta"><span class="kanban-loc">${o.file}${p}</span> ${o.confidence===void 0||o.confidence===null?M:A`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?A`<span class="kanban-analyzer" role="img" data-tooltip="${$x[u]}" aria-label="${$x[u]}">${k(ot[u])}</span>`:M}</div>`;return c?A`<div class="${w(d)}" data-gid="${H(e)}" data-kanban-source draggable="${Yg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${te}</div>`:l?A`<div class="${w(d)}" data-gid="${H(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${te}</div>`:A`<div class="${w(d)}" data-gid="${H(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${te}</div>`}var IK={content:``,parts:``};function LK(e){return IK.content!==e&&(IK={content:e,parts:tE(e)}),IK.parts}function RK(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
|
|
188
|
-
`).length,a=String(i).length;return A`<div class="focus-code-lines" style="${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 A`<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`?k(r):LK(t)}</code></pre></div>`}function zK(e){return!e||!Wv(Bg(e))?M:A`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${H(e)}" aria-label="View issue history"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5"/></svg></button>`}function BK(e,t=M,n=!1){F.focusCodeTick;let r=qC(e),i=WC(e),a=r?`focus-main with-code`:`focus-main`,o=D({"--focus-split":String(F.focusSplit)});return A`<div class="${a}" style="${o}" data-gid="${H(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?M:zK(e)} ${jK(e,!1,`focus`,!1,n)}</div></div>${t} ${r?A`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${Gs}" aria-valuemax="${Ks}" aria-valuenow="${Math.round(F.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??M}" data-focus-code-integrity="${r.integrity??M}">${r.loading?A`<div class="focus-code-empty">Loading source…</div>`:A`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?A`<span class="focus-code-line">:${Gn(r.range)}</span>`:M} ${(i?.stack.length??0)>1?A`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${gw}</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">${_w}</button></div>`:M}</header><div class="focus-code-body">${RK(r)}</div>`}</div>`:M}</div>`}function VK(e,t,n=[],r=null){if(!e&&!r)return M;let i=e?Gg(e):{},a=F.kanbanDetailFullscreen,o=e?IL():null,s={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},c=e?H(e):null,l=t?.items??[],u=l.findIndex(e=>H(e)===c),d=A`<div class="kanban-detail-actions">${zK(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?NK:MK}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return A`<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?M:d}<div class="kanban-detail-body">${e&&!o?a?BK(e,d,!0):jK(e,!1,`kanban-detail`,!1,!0):A`<div class="links-preview-message" role="status">${r?.error||(o===`failed`?QK:`Loading finding…`)}</div>`}</div></div>${l.length===0?M:A`<aside class="kanban-detail-side" aria-label="${`${t.label} findings`}"><div class="kanban-detail-side-header"><span class="kanban-detail-side-pick"><select class="kanban-detail-side-select" data-kanban-column aria-label="Column to show">${n.map(e=>{let n=e.key===t.key,r=n?e.label:`${e.label} (${e.count})`;return A`<option value="${e.key}" data-gid="${e.firstGid}" .selected="${n}" ?disabled="${e.count===0}">${r}</option>`})}</select></span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-kanban-nav="prev" ?disabled="${u===0}" aria-label="Previous finding">${gw}</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">${_w}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${l}" .activeKey="${c}" .keyOf="${H}" .renderItem="${e=>FK(e,{variant:`kanban-side`,active:H(e)===c})}"></kanban-rail></aside>`}</div>`}function HK(e,t,n=new Map){if(F.viewMode===`table`){let n=F.sortBy===`file`?EK(e,DK):e;return n.length===0?M:(OK=n,A`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?A`<aside class="findings-table-details" id="findings-table-details" aria-label="Finding details"><button type="button" class="findings-table-details-close" data-table-deselect aria-label="Close details">×</button><div class="findings-table-details-body">${jK(t)}</div></aside>`:M}</div>`)}if(F.viewMode===`focus`){if(e.length===0)return M;let n=e.indexOf(t);kK=n;let r=t,i=n===0,a=n===e.length-1;return A`<div class="focus-view">${BK(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">${gw}</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">${_w}</button></div></div><div class="focus-sidebar-body">${O(e,e=>H(e),e=>FK(e,{variant:`focus`,active:H(e)===H(r)}))}</div></aside></div>`}if(F.viewMode===`kanban`){let r=[{key:`untriaged`,label:`Untriaged`},{key:`inprogress`,label:`In progress`},{key:`fixed`,label:`Fixed`},{key:`invalid`,label:`Invalid`},{key:`deleted`,label:`Deleted`},{key:`ignored`,label:`Ignored`}],i=new Map(r.map(e=>[e.key,[]])),a=e=>{let t=n.get(e);return t||n.set(e,t=Gg(e)),t};for(let t of e){let e=a(t).commonTriage??`untriaged`,n=i.get(e);n&&n.push(t)}let o=r.some(e=>e.key===F.kanbanExpandedColumn)?F.kanbanExpandedColumn:null,s=o?r.filter(e=>e.key===o):r,c={"--kanban-cols":String(r.length)},l=t,u=l?r.find(e=>e.key===(a(l).commonTriage??`untriaged`)):null;return A`<div class="kanban-board" style="${D(c)}">${O(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return A`<div class="${`kanban-column kanban-column-${e.key}${n?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${n}" aria-label="${n?`Show all columns`:`Show only ${e.label}`}">${n?NK:MK}</button></div><div class="kanban-column-body">${t.length===0?A`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:O(t,e=>H(e),(e,t)=>FK(e,{active:H(e)===F.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${VK(l,u&&{key:u.key,label:u.label,items:i.get(u.key)},r.map(e=>{let t=i.get(e.key);return{key:e.key,label:e.label,count:t.length,firstGid:t.length>0?H(t[0]):``}}))}`}if(F.viewMode===`grouped`){let t=new Map;for(let n of e){let e=Lg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=F.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return A`${O(n,e=>e,e=>{let n=F.sortBy===`file`?EK(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Lg(n[0]);return A`<div class="file-group"><div class="file-header"><span>${Ln(r,Hg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${O(n,e=>H(e),e=>jK(e,!1,null,!0))}</div></div>`})}`}let r=F.sortBy===`file`?EK(e,DK):e;return A`${O(r,e=>H(e),e=>{let t=Bg(e),n=Xn(t,Hg(t)),r=Fn(t),i=Ui(t),a=e.length>1;return A`<div class="${w({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Ln(t,Hg(t))}</span> ${n===M?M:A`<span class="line-num">${n}</span>`} ${i?A`<span class="meta">${i}</span>`:M} ${r?A`<span class="run-meta">${r}</span>`:M}</div>${jK(e,!0,null,!0)}</div>`})}`}function UK(){F.bundleSourceFile&&Nq().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&N(VB(),e)}var WK=nK(hq);function X(){WK(F.currentView)}var GK=e=>Object.assign(document.createElement(`div`),{id:e});function KK(e){let t=document.querySelector(`#${e}`);return(!t||!z.contains(t)||z.firstElementChild!==t)&&(t=GK(e),z.replaceChildren(t)),t}function qK(e=null){let t=e==null?null:F.managedTeams.find(t=>t.id===e),n=t?oU({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:F.managedTeams,managedSession:F.managedSession},[]):null;N(dU(n),KK(`triage-loading-slot`))}function JK(){let e=oU(F,R(),Hu);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=KK(`empty-workspace-slot`);t&&N(A`${pK([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),sK()}var YK={"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 XK(){F.currentView===`files`&&(F.currentView=`findings`),F.viewMode===`graph`&&(F.viewMode=`kanban`)}var ZK=e=>A`<p class="triage-loading" role="status">Loading ${e}…</p>`,QK=`Could not load finding details. Open the team again to retry.`,$K=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),eq=null;function tq(e){let t=[e,On(),Er()];if(eq?.key.every((e,n)=>e===t[n]))return eq;let n=A_(e),r=e.some(e=>e.some(e=>kn(e.file))),i=e.some(e=>e.some(e=>!kn(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&&!kn(e.file))),l=new Set;for(let t of e)for(let e of t)!kn(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(f_(e));let p=Object.keys(X_),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($K);return eq={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},eq}var nq=null;function rq(e,t){if(nq?.groups===e&&nq.workspace===t)return nq;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=zi(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return nq={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},nq}var iq=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),aq=()=>F.currentWorkspace?BL():null,oq={reports:[],value:!1};function sq(){let e=aq();return e?e.drop:(iq(oq.reports,F.reports)||(oq={reports:[...F.reports],value:jr(F.reports)}),oq.value)}var cq={reports:[],depsDir:null,value:!1};function lq(){let e=On();return(cq.depsDir!==e||!iq(cq.reports,F.reports))&&(An(F.reports)&&$g(),cq={reports:[...F.reports],depsDir:e,value:F.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),aq()?.upstream??cq.value}var uq={reports:[],single:!1,details:null,tags:[]};function dq(e){let t=IL();if(uq.single!==e||uq.details!==t||!iq(uq.reports,F.reports)){let n=F.reports.flatMap(e=>e.groups.flat());uq={reports:[...F.reports],single:e,details:t,tags:FS(n,e?ES.filter(e=>e!==`type`):ES)}}return uq.tags}var fq=null;function pq({held:e=!1}={}){let t=F.revalidateConflicts.size>0,n=!t&&sq();return t?F.showRevalidation!==!1&&(fq=F.showRevalidation,F.showRevalidation=!1):(fq!==null&&(F.showRevalidation=fq,fq=null),!n&&F.showRevalidation===!1&&!e&&(F.showRevalidation=!0)),F.upstreamOnly&&!e&&(!n||F.showRevalidation===!1||!lq())&&(F.upstreamOnly=!1),wr(F.showRevalidation,F.upstreamOnly),n}var mq=null;function hq(){yg()||bg(),UK(),Dn(F.reports),kd()&&queueMicrotask(()=>{jd()});let e=lq(),t=pq({held:!!zL()}),n=e;if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)){let e=F.currentView.slice(10),t=oU(F,R(),Hu),n=KK(`workspace-content-slot`);n&&N(gU(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(F.currentView===`bundles`){if((F.bundles??[]).length===0)F.currentView=`findings`;else{Kt(F.bundleDetailsTab,F.bundleSourceFile)&&Nq().catch(()=>{});let e=KK(`bundles-slot`);e&&N(ZV(F.bundles),e);let t=F.bundleDetails,n=F.selectedBundle&&t&&(t.json||t.bundle);if(n&&F.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=dB(F.bundleDetails);if(n){gB(n);let r={hideAllFiles:!0,triageCounts:lB(F.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=mq,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:(mq=null,jT(e,n,r,mB,hB).then(e=>(e&&T.graphState&&(mq={state:T.graphState,details:t,reason:T.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(F.bundleDetailsTab===`terminal`||F.bundleDetailsTab===`code`&&F.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&RT(e,F.bundleDetails)}sK();let{npm:r,repository:i}=F.bundles.find(e=>e.integrity===F.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${qM(i)}`:`DeepView — bundles`;return}}if(F.currentView===`reviews`){let e=KK(`dependency-reviews-slot`);e&&N(jR(()=>A`<dependency-review-list .session="${F.managedSession}"></dependency-review-list>`),e),sK(),document.title=`DeepView — my reviews`;return}if(F.currentView===`profile`){let e=KK(`managed-profile-slot`);e&&N(A`<managed-profile .session="${F.managedSession}" .linkError="${F.profileLinkError}"></managed-profile>`,e),sK(),document.title=`DeepView — profile`;return}if(F.currentView===`npm`){let e=F.npmOpening,t=KK(e?`bundles-slot`:`npm-slot`);t&&N(e?UV(e):sM(),t),sK(),document.title=e?`DeepView \u2014 ${vj(e.name,e.spec)}`:`DeepView — npm packages`;return}if(F.currentView===`repository-code`){let e=F.repositoryCodeOpening,t=KK(`bundles-slot`);t&&e&&N(WV(e),t),sK(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(F.currentView===`packages`){let e=KK(`packages-slot`);e&&N(hH(),e),sK(),document.title=`DeepView — packages`;return}if(F.currentView===`repositories`){let e=KK(`repositories-slot`);e&&N(AH(),e),sK(),document.title=`DeepView — repositories`;return}if(F.currentView===`links`){if(F.currentLinks){let e=KK(`links-slot`),t=yg();e&&N(A`${qH(gK())}${t?VK(t.group,null,[],t):M}`,e),sK(),document.title=`DeepView \u2014 ${F.currentLinks.name}`;return}F.currentView=`findings`}if(F.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=KK(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=F.scanSelection,e.append(t),t.updateComplete.then(()=>cr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}sK(),document.title=`DeepView — scans`;return}let r=YK[F.currentView];if(r){let e=KK(r.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==F.managedSession?.id||t?.role!==F.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(r.tag),n=e=>cr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=vp(),F.currentView===`manage-import`&&(t.localDeps=gp(),t.promptPassword=Ve,t.resolveConflicts=TS,t.confirmTriageImport=le,t.confirmContentImport=se,t.showTriageComparison=Fe),t.session=F.managedSession,t.allowShare=F.managed?.allowShare===!0,F.currentView===`manage-scans`&&(t.selection=F.scanSelection),F.currentView===`manage-bundles`&&(t.createRepoId=F.bundleCreationRepoId,t.installTooltips=n),e.append(t),(async()=>{await customElements.whenDefined(r.tag),await t.updateComplete,n(t.renderRoot)})().catch(()=>{})}e?.firstElementChild&&(e.firstElementChild.session=F.managedSession,e.firstElementChild.allowShare=F.managed?.allowShare===!0),F.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=F.scanSelection),F.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=F.bundleCreationRepoId),sK(),document.title=r.title;return}if(F.reports.length===0||LL()){F.reports.length===0&&F.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&JK();return}let i=i_(),a=F.viewMode===`kanban`,o={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},s=[],c=new Map;for(let e of i){let t=Gg(e);c.set(e,t);let n=t.commonTriage;n&&o[n]++,(a||n===F.shownTriage)&&s.push(e)}Object.defineProperty(s,"ruledOutIds",{value:i.ruledOutIds});let l=!1,u=!1,d=!1,f=!1;for(let e of i)for(let t of e){Fi(t)&&(f=!0);let e=U(t);rg(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=c_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(F.filterDuplicates=``);let h=s.some(z_),g=s.some(B_);h||(F.filterCrossContext=``),g||(F.filterAppStacked=``);let _=H_(s);_||(F.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=Or(t);e&&v.add(e)}let y=aq(),{hasFoldedRows:b,hasPartialRow:ee,hasRuledOutRow:te}=y?{hasFoldedRows:y.detail,hasPartialRow:!1,hasRuledOutRow:!1}:rq(n_(),!!F.currentWorkspace),ne=[...new Set(F.reports.map(e=>e.type))].join(`, `),re=F.reports.map(e=>e.fileName),ie=s.map(Pg).filter(e=>e.length>0),ae=ie.length>0&&hr(ie),{hasAnyPriority:oe,hasAnyModulesPath:ce,hasAnySourcePath:ue,hasMultipleFiles:de,repoInputUseful:fe,knownRepo:pe,analyzerSet:me,modelSet:he,analyzerOptions:ge,modelOptions:_e}=tq(i);if(F.filterAnalyzer){let e=F.filterAnalyzer===l_?null:F.filterAnalyzer;(!me.has(e)||me.size<2)&&(F.filterAnalyzer=``)}if(F.filterModel){let e=F.filterModel===d_?null:F.filterModel;(!he.has(e)||he.size<2)&&(F.filterModel=``)}let ve=En(v);F.filterRevalidate&&!ve.some(e=>e.value===F.filterRevalidate)&&(F.filterRevalidate=``);let ye=O_(s);ye&&(F.filterRevalidate=`confirmed`);let be=v.has(`partial`)&&wg();be||(F.filterPartial=``);let xe=t&&(b||ee||!F.currentWorkspace&&te),Se=!(t&&F.showRevalidation!==!1)&&!F.upstreamOnly&&ce&&ue;!Se&&F.filterSources.size>0&&F.filterSources.clear(),ae||(F.filterConfMin=0,F.filterConfMax=10,(F.sortBy===`confidence-desc`||F.sortBy===`confidence-asc`)&&(F.sortBy=`severity`)),!oe&&(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`)&&(F.sortBy=`severity`),!de&&F.sortBy===`file`&&(F.sortBy=`severity`);let Ce=U_(s),we={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},Te={red:0,blue:0,green:0,gray:0,none:0};for(let e of Ce){if(e.length===1){let t=Ii(e[0],F.severityMode);we[t]=(we[t]||0)+1;let n=U(e[0])?.color??`none`;Te[n]=(Te[n]||0)+1;continue}let t=new Set(e.map(e=>Ii(e,F.severityMode)));for(let e of t)we[e]=(we[e]||0)+1;let n=new Set(e.map(e=>U(e)?.color??`none`));for(let e of n)Te[e]=(Te[e]||0)+1}let Ee=h_(Ce),De=[...Ee].toSorted($K);if(F.filterRepo){let e=F.filterRepo===u_?null:F.filterRepo;Ee.has(e)||(F.filterRepo=``)}let Oe=Y_(W_(s)),ke=mr(F.reports),Ae=ke?Object.keys(ke).length:F.reports.reduce((e,t)=>e+(t.treeFiles??0),0),je=Ae>1&&!ke&&(F.currentView===`files`||F.viewMode===`graph`)&&aK(e=>{e||XK(),X()}),Me=Ae>1,Ne=Er()&&!wg(),Pe=zL(),Ie=!Pe||Ne&&(Pe===`rows`||!!F.currentWorkspace&&F.filterRevalidate===`confirmed`),Le=F.viewMode===`kanban`&&Ie?null:IL();(!Me||!ke&&!je)&&XK();let Re=pK(i,re,fe,pe,Ae);if(F.currentView===`files`){let e=fr(i,F.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!z.contains(t)||!z.contains(n))&&(t=GK(`header-slot`),n=GK(`tree-view-slot`),z.replaceChildren(t,n)),t&&N(Re,t),n&&N(ke?ST(ke,e):ZK(`files`),n),sK(),document.title=`DeepView \u2014 ${ne||`no analyzer`}`;return}let ze=F.viewMode===`table`&&F.tableSelectedGid&&Oe.some(e=>H(e)===F.tableSelectedGid),Be=null;F.viewMode===`graph`&&ke&&!Le&&(Be=cK(),Be||(F.viewMode=`kanban`));let He=!!Be,Ue=`findings-content`;ze&&(Ue+=` with-details`),He&&(Ue+=` with-graph`),a&&(Ue+=` with-kanban`),F.viewMode===`focus`&&(Ue+=` with-focus`);let We=M,Ge=M,Ke=M,qe=QH(Oe,F,kK);OK=null,He||(We=TK(Oe.length,s.length,o,we,Te,{showSource:Se,showConfidence:ae,showPriority:oe,showGraphMode:Me,showFileSort:de,kanbanMode:a,showRepo:!!F.currentWorkspace,hasComment:l,revalidateOptions:ve,showPartial:be,canDropLayer:t,canDetailLayer:xe,canUpstreamLens:n,confirmedLocked:ye,hasFix:u,hasFlagged:d,hasDuplicates:m,hasCrossContext:h,hasAppStacked:g,showSecurity:_,showSeverityMode:f||F.severityMode===`original`},{analyzers:ge,models:_e,groups:Ce},De),F.shownTriage&&s.length===0?Ge=A`<p style="${D({color:`var(--muted)`,margin:`1rem 0`})}">No ${F.shownTriage} findings.</p>`:Oe.length===0&&s.length>0&&!a?Ge=A`<p style="${D({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(Ge=i.length>0?A`<p style="${D({color:`var(--green)`})}">All ${ne} issues triaged.</p>`:A`<p style="${D({color:`var(--green)`})}">No ${ne} issues found.</p>`),Ke=je?ZK(`graph`):Le===`loading`?ZK(`findings`):Le?A`<p class="triage-loading" role="status">${QK}</p>`:HK(Oe,qe,c));let Je=document.querySelector(`#header-slot`),x=z.querySelector(`:scope > .findings-content`),Ye=x&&x.querySelector(`:scope > #findings-graph-slot`),Xe=x&&x.querySelector(`:scope > #findings-body-slot`),Ze=x&&(Ye?`graph`:Xe?`body`:null)===(He?`graph`:`body`);!Je||!x||!z.contains(Je)||!z.contains(x)||!Ze?(Je=GK(`header-slot`),x=Object.assign(document.createElement(`div`),{className:Ue}),x.append(...He?[GK(`findings-graph-slot`)]:[GK(`toolbar-slot`),GK(`empty-state-slot`),GK(`findings-body-slot`)]),z.replaceChildren(Je,x)):x.className!==Ue&&(x.className=Ue),Je&&N(Re,Je);let Qe=document.querySelector(`#toolbar-slot`);Qe&&N(We,Qe);let $e=document.querySelector(`#empty-state-slot`);$e&&N(Ge,$e);let et=document.querySelector(`#findings-body-slot`);if(et&&N(Ke,et),Be){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:A`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:o,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};jT(e,Be,t,lK,uK)}}if(OK){let e=z.querySelector(`.finding-table-slot`);e&&(AK||=document.createElement(`finding-table`),AK.items=OK,AK.selectedGid=F.tableSelectedGid,AK.parentNode!==e&&e.append(AK))}sK(),document.title=`DeepView \u2014 ${ne||`no analyzer`}`,I()&&G?.replaceFindingRoute($H(qe,F))}var gq=new Map,_q=new Map,vq=new Map,yq=new WeakMap;async function bq(e){try{let t=await _l(e);return t?Zt(t,e):null}catch{return null}}var xq=null;function Sq(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return xq=t.size>0?{bundles:t}:null,xq}function Cq(e){xq===e&&(xq=null)}function wq(e,t=()=>!0){let n=xq?.bundles.get(e);return!n||!t(n)?null:(xq.bundles.delete(e),xq.bundles.size===0&&(xq=null),n)}function Tq(e,t,{sources:n=!0}={}){if(!t.managedId&&I())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?gq:_q,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=F.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=wq(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?nv():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?Qt(await wx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Zt(await Cx(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 bq(e);return n?.kind===i&&!n.stale?n:Tq(e,t)}let[r,a]=await Promise.all([Oq(e,t),bq(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||Xt(r).then(t=>vl(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 Eq(e,t=F.currentView===`bundles`?F.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=F.bundleDetails,i=F.bundleCodeFileRequest,a=i?.bundle===F.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=F.currentView===`bundles`&&F.bundleDetailsTab===`code`&&t===`code`?F.bundleSourceFile??(a?i.path:null):null;rv(),F.currentView=`bundles`,F.selectedBundle=e,F.selectedBundleWorkspace=n,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleCodeHistory=null,F.bundleCodeFileRequest=o?{bundle:e,path:o}:null,F.bundleCompare=null,F.bundleSourceFindingIdx=null,F.bundleCodeSearchQuery=``,F.bundleCodeSearchMode=`files`,F.bundleSearchQuery=``,F.bundleSearchRegex=!1,F.bundleSearchCase=!1,F.bundleSearchContext=!0,F.bundleDetailsTab=t??`overview`,T.showAll=!0,F.shownTriage=null}function Dq(e,{preserveSource:t=!1}={}){Kt(F.bundleDetailsTab,F.bundleSourceFile)&&!Kt(e,t?F.bundleSourceFile:null)&&rv(),F.bundleDetailsTab=e,F.bundleCodeFileRequest=null,t||(F.bundleSourceFile=null,F.bundleCodeHistory=null),F.bundleSourceFindingIdx=null}async function Oq(e,t){try{let n=await gl(e);if(I())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return Qt(ba(n),{integrity:e,kind:i,size:n.byteLength});let t=ba(await eh(n,()=>!I())),a=Mt.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 kq(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Qf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await qt(e);if(Qf(e.integrity,t),F.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function Aq(e){if(ip(e))return Promise.resolve();if(vq.has(e))return vq.get(e);let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await bq(e);if(t?.json||t?.bundle)try{Qf(e,await qt(t))}catch{}})();return vq.set(e,n),n.finally(()=>{vq.get(e)===n&&vq.delete(e)}).catch(()=>{}),n}async function jq(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 Aq(e)}}}async function Mq(e){let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await Tq(e,t,{sources:Kt(F.bundleDetailsTab,F.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}F.selectedBundle!==e||t.managedId&&!F.bundles.includes(t)||(F.bundleDetails=n,X(),kq(n),t.managedId||Wf().catch(()=>{}))}function Nq(e=F.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?nv():void 0,n=yq.get(e);if(n&&n.signal===t)return n.job;let r=(F.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=Tq(e.integrity,r).then(n=>(t?.throwIfAborted(),F.bundleDetails===e?n.error&&e.managedId?(e.sourceError=n.error,X(),null):(n.error||(n.fileHashes=e.fileHashes,n.fileSizes=e.fileSizes,n.lineCounts=e.lineCounts,n.codeStats=e.codeStats,e.edges&&(n.edges=e.edges)),F.bundleDetails=n,X(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return yq.set(e,{job:i,signal:t}),i.finally(()=>{yq.get(e)?.job===i&&yq.delete(e)}).catch(()=>{}),i}async function Pq({bundleId:e,teamId:t,bundleTab:n,file:r,line:i,endLine:a,compareId:o,compareMode:s},c,l,u){let d=c.find(t=>t.managedId===e);if(!d||!l()||!I())return!1;let f=wq(d.integrity,t=>t.managedId===e),p=F.bundleDetails?.managedId===e&&F.bundleDetails.integrity===d.integrity&&!F.bundleDetails.error?F.bundleDetails:null;try{F.bundles=c,ir(),Eq(d.integrity,n),n===`code`&&r!=null&&(F.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Bx(c,d.integrity).find(e=>e.managedId===o):null;e&&(F.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ii(s)}),F.bundleDetails=f??p,F.currentManagedTeam=t,F.currentManagedReport=null,F.reports=[],document.body.classList.remove(`report-fullscreen`),X({animate:!1}),u(),document.querySelector(`#main-content`)?.scrollTo({top:0})}catch(e){return l()&&e.name!==`AbortError`&&Rx(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=F.bundleDetails,h=()=>I()&&F.currentView===`bundles`&&F.selectedBundle===d.integrity&&F.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&F.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&Rx(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(F.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},X())),!1),_=W(),v;for(;;){let t=nv();try{v=await Cx(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=Zt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,F.bundleDetails=n,X({animate:!1})}return l()&&_===W()&&F.bundleDetails?.managedId===e&&F.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function Fq(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 Iq(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:Fq(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 Lq(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 Rq=`deepview-managed-session`,zq=null,Bq=null,Vq=null,Hq=0,Uq=0,Wq=new Set;function Gq(){return!zq&&typeof BroadcastChannel==`function`&&(zq=new BroadcastChannel(Rq),zq.addEventListener(`message`,e=>{let t=e.data?.mark;if(typeof t==`string`&&(Vq=t,Hq++,Bq!==null&&t!==Bq))for(let e of Wq)e()}),zq.unref?.()),zq}async function Kq(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 qq(e,t){if(e?.publicShare)return;let n=++Uq,r=await Kq(e);if(n!==Uq||r===null||!Gq())return;let i=Bq===null,a=t===Hq&&Vq!==null&&Vq!==r;if((r!==Bq||a)&&(Bq=r,zq.postMessage({mark:r})),a)Vq=r;else if(i&&Vq!==null&&Vq!==r)for(let e of Wq)e()}function Jq(){return Hq}async function Yq(e){return Vq===null||e?.publicShare?!1:Vq!==await Kq(e)}function Xq(e){return Gq(),Wq.add(e),()=>{Wq.delete(e)}}var Zq=`*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:host{width:260px;flex-shrink:0;height:100%;background:var(--surface);backdrop-filter:var(--glass-blur);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease-out;overflow:hidden}:host(.collapsed){width:32px}:host([inert]) .brand-tag,:host([inert]) .sidebar-search,:host([inert]) .sidebar-actions,:host([inert]) #file-list,:host([inert]) #sidebar-toggle,:host([inert]) #sidebar-home,:host([inert]) #sidebar-rail,:host([inert]) #encryption-toggle,:host([inert]) #storage-status{visibility:hidden}:host(.collapsed) .brand,:host(.collapsed) .sidebar-search,:host(.collapsed) #encryption-toggle,:host(.collapsed) #file-list{display:none}:host(.collapsed) .sidebar-header{padding:.5rem 0;justify-content:center}:host(.collapsed) .sidebar-actions{padding:.35rem 0;flex-direction:column;justify-content:center}:host(.collapsed) sidebar-delete-current,:host(.collapsed) #storage-status,:host(.collapsed) #sync-status .sync-label{display:none}:host(.collapsed) #sync-status{padding:.25rem;border:0}:host(.collapsed) #view-as-status,:host(.collapsed) #public-status,:host(.collapsed) .auth-login{display:none}:host(.collapsed) #auth-status[data-authed="1"]{padding:.2rem}:host(.collapsed[data-view-as]) #auth-status .user-avatar{box-shadow:0 0 0 1.5px var(--surface),0 0 0 3px var(--accent)}#sidebar-home,#sidebar-rail{display:none}:host(.collapsed) #sidebar-home{display:grid;margin:0 auto;padding:.3rem 0}:host(.collapsed) #sidebar-rail{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.35rem 0;list-style:none;overflow-y:auto;overscroll-behavior:none;scrollbar-width:none}.rail-item{width:26px;padding:.25rem 0 .2rem;display:grid;justify-items:center;gap:.15rem;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);font:inherit;font-size:.58rem;font-weight:600;line-height:1;white-space:nowrap;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.current{color:var(--accent);background:rgb(from var(--text) r g b / .1)}&:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}:host([data-mode="managed"]:not([data-workspace-access])) .sidebar-search,:host([data-mode="managed"]:not([data-authenticated])) .sidebar-actions{display:none}.sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem .4rem;.brand{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;user-select:none}.brand-button{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;border-radius:var(--ui-radius, 4px);&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.brand-tag{padding:.08rem .25rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;font:inherit;font-size:.65rem;font-weight:500;color:var(--muted);text-transform:lowercase;letter-spacing:.02em;&[role=button]{cursor:default}&[role=button]:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}}@media(display-mode:window-controls-overlay){.sidebar-header{min-height:env(titlebar-area-height,0px);padding-left:max(.75rem,env(titlebar-area-x,0px));-webkit-app-region:drag;app-region:drag;.brand-button,.brand-tag,#encryption-toggle{-webkit-app-region:no-drag;app-region:no-drag}#sidebar-toggle{display:none}}}:host-context(body.theme-w95) .sidebar-header{position:fixed;z-index:1;top:calc(var(--w95-gap) + var(--w95-frame));right:calc(var(--w95-gap) + var(--w95-frame) + var(--wco-right-toolbar, 0px));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-title-height);min-height:0;justify-content:normal;gap:0;padding:0 20px 0 max(2px,env(titlebar-area-x,0px) - var(--w95-gap) - var(--w95-frame));background:var(--w95-title);color:#fff;.brand{display:flex;gap:4px;margin-right:4px;font-size:11px;letter-spacing:0;&:before{content:"";flex:none;width:16px;height:16px;background:url(./icon.svg) center / contain no-repeat}}.brand-button:focus-visible{outline:1px dotted #fff;outline-offset:1px}.brand-tag{padding:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;&:before{content:"- " / ""}&[role=button]:hover{color:inherit;background:none}&:focus-visible{outline:1px dotted #fff;outline-offset:1px}}:is(#encryption-toggle,#sidebar-toggle){display:grid;width:16px;height:14px;background:var(--w95-face);box-shadow:var(--w95-raised);-webkit-app-region:no-drag;app-region:no-drag;& svg{display:none}&:active{box-shadow:var(--w95-pressed)}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}}#sidebar-toggle{background:var(--w95-glyph-maximize),var(--w95-face)}#encryption-toggle{background:var(--w95-glyph-unlock),var(--w95-face)}#encryption-toggle:is(.encrypted,.locked-pending){background:var(--w95-glyph-lock),var(--w95-face)}}:host-context(body.theme-w95):host(.collapsed) .sidebar-header #sidebar-toggle{background:var(--w95-glyph-restore),var(--w95-face)}:host-context(body.theme-w95) .sidebar-actions{position:fixed;z-index:1;right:calc(var(--w95-gap) + var(--w95-frame));bottom:calc(var(--w95-gap) + var(--w95-frame));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-status-height);flex-direction:row;justify-content:normal;gap:2px;padding:0;border-top:0;& sidebar-delete-current{display:contents}:is(button,#sync-status,#auth-status,#manage-status,#public-status){display:inline-flex;align-items:center;gap:4px;width:auto;height:100%;max-width:none;padding:0 6px;border:0;background:none;color:var(--text);box-shadow:var(--w95-status);font-size:11px;&:hover{background:none;color:var(--text)}&:active{box-shadow:inset 1px 1px #000,inset -1px -1px #fff;opacity:1}&[hidden]{display:none}}:is(#sync-status,#auth-status){order:-1}#manage-status{order:2}&:after{content:"";flex:1;order:1;align-self:stretch;box-shadow:var(--w95-status)}#sync-status .sync-label{display:inline}}#sidebar-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}}#encryption-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&.encrypted{color:var(--accent)}&.locked-pending{color:light-dark(#b25b00,#f0a060);outline:1px dashed currentcolor;outline-offset:-2px}}#encryption-toggle[hidden]{display:none!important}.sidebar-search{display:flex;align-items:center;margin:0 .55rem .25rem;padding:0 .25rem 0 .55rem;background:rgb(from var(--bg) r g b / .45);border:1px solid var(--border);border-radius:var(--ui-radius, 7px);transition:background .12s,border-color .12s;-webkit-app-region:no-drag;app-region:no-drag;&:has(input:focus){border-color:var(--accent);background:rgb(from var(--text) r g b / .06)}.sidebar-search-icon{flex-shrink:0;color:var(--muted);pointer-events:none;margin-right:.4rem}& input{flex:1;min-width:0;padding:.3rem 0;background:transparent;color:var(--text);border:0;outline:none;font:inherit;font-size:.78rem;&::placeholder{color:var(--muted)}&:focus::placeholder{color:transparent}&::-webkit-search-cancel-button{display:none}}}sidebar-view-button{display:contents}sidebar-view-button[hidden]{display:none!important}.sidebar-view-btn{position:relative;flex-shrink:0;width:20px;height:20px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 3px);padding:0;margin-left:2px;transition:background .12s,color .12s;sidebar-view-button+sidebar-view-button>&{margin-left:.4rem}sidebar-view-button:last-of-type>&{margin-right:.1rem}& svg{width:14px;height:14px}&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.active{color:var(--accent);background:rgb(from var(--text) r g b / .1)}.view-btn-count{position:absolute;top:-4px;right:-4px;background:var(--bg);color:color-mix(in srgb,var(--muted),var(--text) 15%);font-size:8.5px;font-weight:600;border-radius:999px;padding:0 3px;min-width:11px;text-align:center;line-height:11px;font-variant-numeric:tabular-nums;pointer-events:none}&.active .view-btn-count{color:var(--accent)}}#file-list{list-style:none;flex:1;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable;-webkit-app-region:no-drag;app-region:no-drag;padding:0 .35rem .25rem 0;margin:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;&::-webkit-scrollbar{width:5px}&::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}}.file-group-header{display:flex;align-items:center;justify-content:space-between;padding:.45rem .35rem .2rem .55rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);user-select:none;&:first-child{padding-top:.25rem}}.file-group-header.workspace-header .workspace-header-actions{display:flex;align-items:center;gap:.35rem}.workspace-add{width:18px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);border-color:var(--accent)}}.file-item:is(.workspace-item,.team-item){display:block;border-radius:var(--ui-radius, 0 5px 5px 0)}.workspace-heading{display:flex;align-items:stretch;gap:.15rem}.workspace-meta{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:0 .3rem .2rem calc(2rem - 3px);color:var(--muted);font-size:.68rem;line-height:1.3;white-space:nowrap;user-select:none}.workspace-findings{min-width:0;overflow:hidden;text-overflow:ellipsis}.workspace-sections{display:inline-flex;flex-shrink:0;margin-left:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);overflow:hidden}.workspace-sections button{padding:.06rem .25rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.64rem;line-height:1.4;font-variant-numeric:tabular-nums;+button{border-left:1px solid var(--border)}&:hover:not(:disabled){background:var(--surface-active);color:var(--text)}&[aria-expanded=true]{background:rgb(from var(--accent) r g b / .1);color:var(--accent)}&:disabled{background:var(--surface-active);color:var(--muted)}}.workspace-share,.workspace-export,.workspace-leave{flex-shrink:0;width:22px;align-self:center;height:22px;display:none;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .06);border-color:var(--accent)}}.file-item.team-item:focus-within .workspace-share{display:grid}@media(hover:none){.file-item.team-item .workspace-share{display:grid}}.workspace-leave:hover:not(:disabled){color:var(--critical, #f87171);border-color:var(--critical, #f87171)}@media(hover:hover){.file-item.team-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-export,.file-item.workspace-item:hover .workspace-leave{display:grid}}.workspace-rename-input{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--ui-radius, 3px);padding:0 .25rem;margin:-1px 0;font:inherit;font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;outline:none}.file-item.team-item .team-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item>.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;background:none;border:0;padding:.2rem .3rem .2rem 1.3rem;font-family:inherit;font-size:.78rem;text-align:left}.file-item.team-bundle-item .file-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item .file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}.file-item{list-style:none;position:relative}.file-item.current:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:var(--ui-radius, 0 2px 2px 0);pointer-events:none}.file-item button.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;padding:.2rem .3rem .2rem .55rem;background:transparent;color:var(--text);border:1px solid transparent;border-radius:var(--ui-radius, 0 5px 5px 0);font-family:inherit;font-size:.78rem;text-align:left;&:hover{background:rgb(from var(--text) r g b / .04)}.file-icon{flex-shrink:0;color:var(--muted)}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}.file-item:is(.workspace-item,.team-item) button.file-name{flex:1;min-width:0;padding-left:calc(.55rem - 3px)}.file-item .file-count{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);opacity:.65;font-size:.68rem;font-weight:500;font-variant-numeric:tabular-nums}.file-item.current button.file-name{background:rgb(from var(--accent) r g b / .09);border-color:rgb(from var(--accent) r g b / .16);.file-icon,.file-count{color:var(--text)}}.file-item.content-hidden button.file-name .file-label{color:var(--muted)}.file-item:is(.workspace-item,.team-item):hover{background:rgb(from var(--text) r g b / .04)}.file-item:is(.workspace-item,.team-item) button.file-name:hover{background:transparent}.file-item:is(.workspace-item,.team-item).current{background:rgb(from var(--accent) r g b / .09);border-radius:var(--ui-radius, 0 5px 5px 0);box-shadow:inset 0 0 0 1px rgb(from var(--accent) r g b / .16)}.file-item:is(.workspace-item,.team-item).current button.file-name{background:transparent;border-color:transparent}:host-context(body.theme-paper) .file-item.current{background:transparent;box-shadow:none;& button.file-name{background:transparent;border-color:transparent}.file-name:after{content:"";position:absolute;inset:0;border:1px dashed var(--border);border-left:0;pointer-events:none}}:host-context(body.theme-w95){.sidebar-search{margin:2px 2px 4px;border:0;background:#fff;box-shadow:var(--w95-sunken);&:has(input:focus){background:#fff}& input{font-size:11px}}.file-group-header{padding-top:.35rem;font-size:11px;color:#000;text-transform:none;letter-spacing:0}.file-item button.file-name{font-size:11px}.file-item.indented:before{background:none;border-left:1px dotted var(--w95-shadow)}#storage-status{border-color:#000;background:var(--w95-tooltip);color:#000;&:hover{border-color:#000;background:var(--w95-tooltip)}}#file-list{padding-right:0;scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,#file-list::-webkit-scrollbar{width:16px;height:16px;background:var(--w95-dither)}::-webkit-scrollbar-thumb,#file-list::-webkit-scrollbar-thumb{background:var(--w95-face);border-radius:0;box-shadow:var(--w95-raised)}}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button{display:block;width:16px;height:16px;background:var(--w95-arrow-down),var(--w95-face);box-shadow:var(--w95-raised)}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button:vertical:decrement{background:var(--w95-arrow-up),var(--w95-face)}:host-context(body.theme-w95) .file-item.current{--text: #fff;--muted: var(--w95-light);&:after{display:none}&:is(.workspace-item,.team-item),&:not(.workspace-item,.team-item) button.file-name{background:var(--w95-title);border-color:transparent;box-shadow:none}}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(prefers-reduced-motion:reduce){:host,*,*:before,*:after{transition:none!important}}.file-item.indented button.file-name{padding-left:1.3rem}.file-item.indented:before{content:"";position:absolute;left:.85rem;top:0;bottom:0;width:1px;background:var(--border)}.file-item.bundle-missing>.file-name,.file-item.report-missing>.file-name{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem 1.4rem;color:var(--muted);font-size:.78rem;font-style:italic;cursor:default;.file-icon{flex-shrink:0;color:var(--muted);font-style:normal}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}:host-context(body.theme-pink) .workspace-rename-input,:host-context(body.theme-pink) .file-item button.file-name .file-label,:host-context(body.theme-pink) .file-item.bundle-missing .file-label,:host-context(body.theme-pink) .file-item.report-missing .file-label,:host-context(body.theme-w95) .workspace-rename-input,:host-context(body.theme-w95) .file-item button.file-name .file-label,:host-context(body.theme-w95) .file-item.bundle-missing .file-label,:host-context(body.theme-w95) .file-item.report-missing .file-label{font-family:inherit}.file-item.dragging button.file-name{opacity:.4}.file-item.workspace-item.drag-over button.file-name,.file-item.indented.drag-over button.file-name{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent)}.file-group-header.drag-over{background:rgb(from var(--accent) r g b / .12);border-radius:var(--ui-radius, 4px)}.sidebar-actions{padding:.35rem .55rem .45rem;border-top:1px solid var(--border);display:flex;gap:.35rem;align-items:center;justify-content:space-between;& button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 4px);padding:.2rem .5rem;font-size:.72rem;font-family:inherit;-webkit-app-region:no-drag;app-region:no-drag;&:hover{color:var(--text);border-color:var(--accent)}&.danger:hover{color:var(--critical);border-color:var(--critical)}&[disabled]{opacity:.4;border-color:var(--border)!important;color:var(--muted)!important}}}sidebar-delete-current{display:contents}sidebar-delete-current[hidden]{display:none!important}sidebar-delete-current button{display:inline-flex;align-items:center;gap:.35rem;.trash-icon{flex-shrink:0}}#sync-status{display:inline-flex;align-items:center;gap:.35rem;border-color:transparent;&:hover{border-color:var(--accent)}.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .15)}&[data-status=online] .sync-dot{background:var(--green)}&[data-status=connecting] .sync-dot{background:var(--medium)}&[data-status=offline] .sync-dot{background:var(--critical)}}#sync-status[data-proxy-auth] .sync-dot{box-shadow:0 0 0 2px var(--accent)}#sync-status[data-degraded] .sync-dot{box-shadow:0 0 0 2px var(--medium)}#sync-status[hidden]{display:none}#storage-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .55rem;background:rgb(from var(--medium) r g b / .12);border:1px solid rgb(from var(--medium) r g b / .3);border-radius:var(--ui-radius, 5px);color:light-dark(#b25b00,#f0a060);font-size:.72rem;font-family:inherit;cursor:default;text-align:left;-webkit-app-region:no-drag;app-region:no-drag;&:hover{background:rgb(from var(--medium) r g b / .18);border-color:rgb(from var(--medium) r g b / .5)}.storage-dot{width:7px;height:7px;border-radius:50%;background:var(--medium);flex-shrink:0}}#storage-status[hidden]{display:none}#view-as-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .3rem .3rem .55rem;background:rgb(from var(--accent) r g b / .12);border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 5px);color:var(--text);font-size:.72rem;user-select:none;-webkit-app-region:no-drag;app-region:no-drag;.view-as-label{flex:1;display:grid;gap:.05rem;min-width:0}.view-as-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-as-note{color:var(--muted);font-size:.66rem}.view-as-stop{flex-shrink:0;padding:.15rem .5rem;font:inherit;font-weight:500}}#view-as-status[hidden]{display:none}#auth-status[hidden],#manage-status[hidden]{display:none!important}#auth-status{display:inline-flex;align-items:center}#auth-status[data-authed="1"]{display:inline-flex;align-items:center;gap:.4rem;max-width:12rem;padding:.2rem .35rem;border-color:transparent;border-radius:var(--ui-radius, 5px)}#auth-status[data-authed="1"]:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#manage-status[hidden]{display:none}#manage-status{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;padding:.25rem;border-color:transparent;color:var(--muted)}#manage-status:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#public-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2rem 0;color:var(--muted);font-size:.72rem;user-select:none}#public-status[hidden]{display:none}.auth-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font:inherit;font-size:.72rem;font-weight:400}.user-avatar{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--accent);display:inline-grid;place-items:center;user-select:none}.user-avatar-lg{width:38px;height:38px}.user-avatar-fallback{font-size:.72rem;font-weight:600;line-height:1;color:var(--bg);text-transform:uppercase}.user-avatar-lg .user-avatar-fallback{font-size:1.05rem}.user-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.user-avatar img.broken{display:none}.user-menu[popover]{position:fixed;inset:auto;margin:0;min-width:11rem;flex-direction:column;gap:.1rem;background:var(--surface, var(--bg));border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.3rem;box-shadow:0 4px 14px #00000047}.user-menu[popover]:not(:popover-open){display:none}.user-menu[popover]:popover-open{display:flex}.user-card{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem .45rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.user-id{display:flex;flex-direction:column;min-width:0}.user-login{font-weight:600;font-size:.82rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-row{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--ui-radius, 4px);padding:.4rem .5rem;font:inherit;font-size:.82rem;color:var(--text)}.user-menu-row.logout-row{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem}.logout-row svg{flex:0 0 auto}.user-menu-row:hover{background:rgb(from var(--text) r g b / .08)}:host-context(body.theme-w95) *{overscroll-behavior:none}
|
|
189
|
-
`,Qq=`:is(.file-icon,.report-logo){&.brand-deepview{--brand-bg: #2563eb;--brand-fg: #fff}&.brand-claude{--brand-bg: #d97757;--brand-fg: #fff}&.brand-codex{--brand-bg: #fff;--brand-fg: #000}&.brand-vercel{--brand-bg: #000;--brand-fg: #fff}&.brand-markdown{--brand-bg: #374151;--brand-fg: #fff}&.brand-piolium{--brand-bg: #fbb829;--brand-fg: #1c1b19}.bg{fill:var(--brand-bg)}.fg{fill:var(--brand-fg)}}.file-icon:is(.brand-codex,.brand-vercel) .bg{stroke:var(--brand-fg);stroke-width:.5}.report-logo{display:grid;place-items:center;align-self:stretch;flex:0 0 20px;background:var(--brand-bg);border-right:1px solid var(--border)}
|
|
190
|
-
`,$q=null,eJ=null,tJ=!1,nJ=!1,rJ=0;function iJ(){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 aJ(){return iJ()===`webkit`}function oJ(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 sJ(){if(!$q)return;if(I()||!eJ||eJ.persisted!==!1||!tJ){$q.hidden=!0;return}$q.hidden=!1;let e=eJ.usage===null||eJ.quota===null?``:` Using ${oJ(eJ.usage)} of ${oJ(eJ.quota)}.`;$q.querySelector(`.storage-label`).textContent=`Storage at risk`,$q.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(aJ()?`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 cJ(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!aJ()&&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 `+(aJ()?`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 $X(),!$q||I()){sJ();return}let[e,t]=await Promise.all([xp(),(async()=>{try{return(await Gc()).length>0||await dl()}catch{return!1}})()]);eJ=e,tJ=t,sJ()}function uJ(){!$q||rJ||(rJ=setTimeout(()=>{rJ=0,lJ()},1e3))}async function dJ(){nJ||(await lJ(),I()||eJ?.persisted!==!1||!tJ||nJ)||(nJ=!0,cJ(await bp(),!1),await lJ())}async function fJ(){if(eJ&&eJ.persisted===!1){nJ=!0;let e=await bp();cJ(e,!0),e||await Oe()}await lJ()}function pJ(e){$q=e,$q&&($q.addEventListener(`click`,()=>{fJ()}),Uc((e,t)=>{uJ(),t===`save`&&dJ()}),dJ())}function mJ(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);N(n.length>0?A`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${O(n,e=>e.id,e=>{let t=jm(e),n=e.reports.filter(e=>Hu(e)!==d).length;return A`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${k(ta)} <span class="landing-workspace-text"><span class="landing-workspace-name">${e.name}</span> <span class="landing-workspace-count">${t?.appMode?`${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`} \xB7 `:``}${n.toLocaleString()} report${n===1?``:`s`}</span></span></button>`})}</div></nav>`:M,t)}var hJ=null;function gJ(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 _J(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=iU(e.app),{reports:r,bundles:i,repositories:a}=gJ(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 vJ(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?hJ?hJ.options=e:hJ={options:e,elapsed:!1,timer:setTimeout(()=>{hJ.elapsed=!0,vJ(hJ.options)},1e3)}:(clearTimeout(hJ?.timer),hJ=null);let p=f&&!hJ.elapsed;c.dataset.serverMode=u?`managed`:`local`,c.setAttribute(`aria-label`,u?p?n?`Loading teams`:`Loading session`:n?.role===`none`?`No workspace access`:n?`Team findings`:`Log in`:`Drop reports here`);let m=c.querySelector(`.drop-local-copy`);if(m&&(m.textContent=d?`Review locally in your browser.`:`Review locally in your browser. Sync across devices when you need it.`),!u||p){N(M,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(gJ(e)).some(Boolean));if(Ke()&&!n){N(A`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}N(n==null?A`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?A`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:A`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?A`<nav class="managed-team-list" aria-label="Teams">${O(g,e=>e.id,e=>A`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${k(ta)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${_J(e)}</span> </span><svg class="managed-team-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 4 4 4-4 4"/></svg></button>`)}</nav>`:A`<p class="managed-landing-empty">No team reports are available yet.</p>`}<nav class="managed-content-links" aria-label="Content and activity">${[...h?[[`manage-bundles`,`Bundles`,$i],[`manage-scans`,`Scans`,aa],[`manage-reports`,`Reports`,oa]]:[],[`npm`,`npm packages`,ea]].map(([e,t,n])=>A`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${k(n)}</span> <span>${t}</span></button>`)}</nav>${h?A`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${k(ra)}</span><span>Manage</span></button></div>`:M}`,l)}var yJ=!1,bJ=null;function xJ(){if(!yJ){bJ=pc();return}Wf().catch(()=>{}),hd().catch(()=>{})}function SJ(){if(yJ)return;yJ=!0;let e=bJ;bJ=null,e!==null&&e===pc()&&xJ()}async function CJ(e){await Re({workspace:e})}var wJ=class extends Nv{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return A`<dialog @close="${this._onClose}"><header><h3>Sign in to keep syncing</h3></header><p class="nwd-intro ui-hint">Triage can't reach the sync server — the connection is being redirected to an <strong>authentication proxy</strong> (for example Cloudflare Access). This usually means your access session has expired.</p><p class="nwd-note ui-hint">Reload the page to sign in again. Your triage is saved on this device, so reloading won't lose anything — or keep working offline and reload later.</p><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onClose}">Not now</button> <button type="button" class="primary" @click="${this._onReload}">Reload page</button></footer></dialog>`}};customElements.define(`proxy-auth-dialog`,wJ);function TJ(){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 EJ(e,{openManagedReport:t,readTeam:n=Tx,isCurrent:r=()=>!0}){let i=F.managedSession,a=()=>r()&&I()&&F.managedSession?.id===i?.id&&F.managedSession?.role===i?.role,o=F.managedTeams;if(!a())return null;async function s(n,r){return!a()||(F.currentManagedTeam!==n.id||F.currentManagedReport!==r)&&!await t(n,r)||!a()||F.currentManagedTeam!==n.id||F.currentManagedReport!==r?null:XC(e.id)}if(e.teamId){let t=o.find(t=>t.id===e.teamId);return!t||e.reportId&&!t.reports.some(t=>t.id===e.reportId)?null:s(t,e.reportId??null)}let c=o.flatMap(e=>e.reports.map(t=>({team:e,report:t}))),l=new Set,u=new Map;async function d(t){for(let{team:r,report:i}of t){if(!a())return null;if(l.has(`${r.id}:${i.id}`))continue;l.add(`${r.id}:${i.id}`),u.has(r.id)||u.set(r.id,await n(r.id));let t=u.get(r.id)?.find(e=>e.id===i.id);if(!a())return null;if(t==null)continue;let o=await re(JSON.stringify(t.data),i.filename);if(!a())return null;if(o?.findings.some(t=>t.id===e.id))return s(r,i.id)}return null}if(e.report){let t=await Promise.all(c.map(({report:e})=>zr(`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=>zr(`workspace`,`managed-team:${e.id}`)))).indexOf(e.workspace)];if(t){let e=await s(t,null);if(e||!a())return e}}if(!a())return null;let f=o.find(e=>e.id===F.currentManagedTeam);if(f&&(F.currentManagedReport==null||f.reports.some(e=>e.id===F.currentManagedReport))){let t=XC(e.id);if(t)return t}return d(c)}async function DJ(e,t,n,{openReport:r,openManagedReport:i}){if(I()){let e=F.managedTeams.find(e=>e.id===F.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(F.currentManagedReport!==n||F.currentWorkspace)&&!await i(e,n)||!I()||F.currentManagedTeam!==e.id||F.currentManagedReport!==n||F.currentWorkspace)return null}else if(n||((F.currentFile!==t||F.currentWorkspace)&&await r(t),I()||F.currentFile!==t||F.currentWorkspace))return null;return XC(e)}async function OJ(e,t){if(I())return EJ(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([op(e.report),ap(e.workspace)]);async function o(t){let r=YC(t,a?.id);return(F.currentFile!==t||F.currentWorkspace||F.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),XC(e.id)}if(i){let e=await o(i);if(e)return e}if(a){F.currentWorkspace!==a.id&&await r(a.id);let t=XC(e.id);if(t)return t}let s=XC(e.id);if(s)return s;let c=F.reports.map(e=>e.fileName).filter(Boolean),l=await cp(e.id,{skip:c});return l?await o(l):null}var kJ=1600,AJ=`link-target`,jJ=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,MJ=null,NJ=3,PJ=150,FJ=5;function IJ(e){MJ!==null&&clearTimeout(MJ);for(let e of document.querySelectorAll(`.${AJ}`))e.classList.remove(AJ);e.classList.add(AJ),MJ=setTimeout(()=>{e.classList.remove(AJ),MJ=null},kJ)}function LJ(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>=NJ||++i>=PJ?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function RJ(e){let t=0,n=window.innerHeight,r=IW(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 zJ(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=RJ(e);if(r<=n)return!1;let i=(n+r)/2;return t.top>=n&&t.bottom<=r||t.top<=i&&t.bottom>=i}async function BJ(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<FJ;t++){if(await LJ(e),!e.isConnected||zJ(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function VJ(e){let t=CSS.escape(e);if(F.viewMode===`table`){let t=z.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&H(n.group)===e)return n}}if(F.viewMode===`kanban`){let e=z.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return z.querySelector(`finding-card[data-gid="${t}"]`)??z.querySelector(`[data-gid="${t}"]`)}async function HJ(e,t,n=()=>!0){let r=ZC(e.group,t),i=s_(r);if(i&&Zg(i)&&queueMicrotask(jd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await VJ(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await BJ(a),n()?(IJ(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function UJ(e,{openManagedReport:t=fR,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await OJ(e,{openReport:lR,openWorkspace:gR,openManagedReport:t,isCurrent:n});return n()?r?await HJ(r,e.id,n):{ok:!1,reason:I()?`Couldn't find that finding in the team reports you can access.`:jJ}:{ok:!1}}async function WJ(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await DJ(e,t,n,{openReport:lR,openManagedReport:fR});return r?await HJ(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 GJ=null,Z=null,KJ=null;function qJ(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}lr();function JJ(){return Mf().size}function YJ(){return Nf().size}var XJ=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,ZJ=`application/x-deepview-report`,QJ=`application/x-deepview-source-ws`,$J=`application/x-deepview-bundle`,eY=!1,tY=!1,nY={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[d]:`Links`},rY=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,d],iY=``,aY=!1,oY=new Map,sY=``,cY=new aU;function lY(e,t){let n=F.currentView===`bundles`?F.selectedBundle:null,r=[`findings`,`files`,`links`].includes(F.currentView)?F.currentFile:null,i=n?`bundles`:`reports`,a=r?YC(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!==sY){sY=s;for(let e of o){let t=oY.get(e.id)??new Set;t.add(i),oY.set(e.id,t)}}}function uY(e,t={}){let n=`file-item${dY(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=S(e),i=Vu(e),a=Zx[tS(e)]??Zx.default;return A`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${k(a)}<span class="file-label">${r}</span>${i===void 0?M:A`<span class="file-count">${i}</span>`}</button></li>`}function dY(e,t){return e===F.currentFile&&t===YC(e)&&(F.currentView===`findings`||F.currentView===`files`||F.currentView===`links`)}function fY(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return A`<li class="${n}" data-default-reports="${t.dropTarget?`true`:M}"><span class="group-label">${e}</span></li>`}var pY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8h9"/></svg>`,mY=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.5H3.5v11H8M10 5l3 3-3 3M13 8H6"/></svg>`;function hY(){return A`<li class="file-group-header workspace-header"><span class="group-label">Workspaces</span><span class="workspace-header-actions"><button type="button" class="workspace-add" data-action="new-workspace" aria-label="Create a new workspace">${pY}</button></span></li>`}function gY(){let e=nU(F.managedTeams,iY);return e.length===0?M:A`${fY(`Teams`)} ${O(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=rU(r,(e.reports??[]).filter(e=>e.analyzer!==d).length),a=cY.shown(e.id,`reports`,i,aY),o=cY.shown(e.id,`bundles`,i,aY),s=t.filter(e=>e.analyzer!==d).length,c=iU(r);return A`<li class="${`file-item team-item${bY(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{fR(e)}}">${NY}<span class="file-label">${e.name}</span></button> ${F.managed?.allowShare&&[`admin`,`manage`].includes(F.managedSession?.role)?A`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{sx(e)}}">${IY}</button>`:M}</div>${i?A`<div class="workspace-meta">${c===null?M:A`<span class="workspace-findings">${c.toLocaleString()} finding${c===1?``:`s`}</span>`} <span class="workspace-sections" role="group" aria-label="Team files"><button type="button" data-team-section="reports" aria-expanded="${String(a)}" ?disabled="${aY}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?A`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${aY}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:M}</span></div>`:M}</li>${a?O(t,e=>e.id,t=>CY(e,t)):M} ${o?O(n,e=>e.id,t=>TY(e,t)):M}`})}`}function _Y(e,t,n,r){return A`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:M}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${Lq(e)}</span></button></li>`}function vY(){return O(F.managedTeams??[],e=>e.id,e=>_Y(e.name,NY,bY(e)||(e.reports??[]).some(t=>xY(e,t))||(e.bundles??[]).some(t=>SY(e,t)),()=>{fR(e)}))}function yY(e){return O(e,e=>e.id,e=>_Y(e.name,MY,LY(e)||e.reports.some(t=>dY(t,e.id))||e.bundles.some(t=>OY(t,e.id)),()=>WY(e.id)))}function bY(e){return F.currentManagedTeam===e.id&&!!F.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)}function xY(e,t){return F.currentManagedTeam===e.id&&F.currentManagedReport===t.id&&[`findings`,`links`].includes(F.currentView)}function SY(e,t){return F.currentManagedTeam===e.id&&Hx(F)===t.id}function CY(e,t){let n=S(t.filename),r=xY(e,t);return A`<li class="${`file-item indented team-report-item${t.visible===!1?` content-hidden`:``}${r?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${n} (hidden from teams)`:M}" data-tooltip="${n}" data-tooltip-repo="${eU(t)||M}" data-tooltip-placement="right-start" @click="${()=>{wY(e,t)}}">${k(Zx[nS(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function wY(e,t){return fR(e,t.id)}function TY(e,t){let n=SY(e,t);return A`<li class="${`file-item indented team-bundle-item${t.visible===!1?` content-hidden`:``}${n?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${t.filename} (hidden from teams)`:M}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${eU(t)||M}" data-tooltip-bundle="${t.kind||M}" data-tooltip-built="${t.provenance===`build`?`true`:M}" data-tooltip-stats="${tU(t)||M}" data-tooltip-commit="${t.summary?.commit||M}" data-tooltip-commit-info="${rt(t.commitInfo,t.summary?.commit,t.repoFullName)??M}" data-tooltip-placement="right-start">${DY}<span class="file-label">${t.filename}</span></button></li>`}function EY(){return A`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var DY=A`${k($i)}`;function OY(e,t){return F.selectedBundle===e&&F.currentView===`bundles`&&t===F.selectedBundleWorkspace}function kY(e,t={}){let{integrity:n,name:r}=e,i=OY(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return A`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??M}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
|
|
191
|
-
${n}`}">${DY}<span class="file-label">${r}</span></button></li>`}function AY(e,t){let n=e.slice(0,15);return A`<li class="file-item indented bundle-item bundle-missing" data-bundle-integrity="${e}" data-workspace-id="${t}" data-tooltip="Bundle bytes not on this device — drop the matching bundle to attach."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${n}…</em></span></span></li>`}function jY(e,t){return A`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${S(e)}</em></span></span></li>`}var MY=A`${k(ta)}`,NY=A`<svg class="team-icon" viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M5.5 8a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm0 1C3.2 9 1.75 10.2 1.75 11.6V13h7.5v-1.4C9.25 10.2 7.8 9 5.5 9Zm5.25-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.25 1c-.43 0-.83.05-1.2.15.86.62 1.45 1.5 1.45 2.45V13h3.25v-1.3C14.5 10.1 13.15 9 11 9Z"/></svg>`,PY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8M5 7l3 3 3-3M3 13h10"/></svg>`,FY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 3H4v10h5"/><path d="M7 8h7M11 5l3 3-3 3"/></svg>`,IY=A`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 9.5L9 7.5"/><path d="M9.5 5.5L10.5 4.5a2.1 2.1 0 1 1 3 3l-1 1"/><path d="M6.5 11.5L5.5 12.5a2.1 2.1 0 1 1-3-3l1-1"/></svg>`;function LY(e){return F.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(F.currentView)}function RY(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${LY(e)?` current`:``}`;return A`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${MY}<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">${IY}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${PY}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${FY}</button></div>${n?A`<div class="workspace-meta">${t?.appMode?A`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:M} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${aY}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?A`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${aY}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:M}</span></div>`:M}</li>`}function zY(e){return!iY||S(e).toLowerCase().includes(iY)}var BY=(e,t)=>S(e).localeCompare(S(t));async function Q({revealSelection:e=!1}={}){await $X();let t=pc();if(vJ({serverMode:t,session:F.managedSession,teams:F.managedTeams,sessionPending:SX,teamsPending:CX,alternateMode:rn(F.serverModeConfig)?`e2e`:`local`,onSwitchMode:UY}),AR(),I()){if(cY.sync(F,e),!SX&&!CX&&!xX&&!wX&&CL({catalogOnly:!0}),F.bundles=(F.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),F.storedFiles=[],mJ([]),!Z)return;N(A`${gY()}`,KJ);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&N(vY(),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`,``),rX();return}if(cY.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await mp(),t!==pc()){await Q();return}xJ();let n=await Gc();if(t!==pc()){await Q();return}let r=R();lY(r,e),mJ(r);let[i]=await Promise.all([ul(),...r.map(e=>zr(`workspace`,e.id))]);if(t!==pc()){await Q();return}if(F.bundles=i,F.storedFiles=n,uJ(),!Z)return;let a=new Set(n),o=new Set;for(let e of r)for(let t of e.reports)a.has(t)&&o.add(t);let s=new Map(i.map(e=>[e.integrity,e])),c=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&c.add(t);let l=new Map;for(let e of rY)l.set(e,[]);for(let e of n){if(o.has(e)||!zY(e))continue;let t=tS(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!iY||e.name.toLowerCase().includes(iY)||e.reports.some(e=>zY(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&zY(t.name)})),f=i.filter(e=>!c.has(e.integrity)&&zY(e.name));N(A`${hY()} ${O(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)zY(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(BY),n.sort(BY);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!iY||zY(e.name))&&r.push(e):iY||i.push(t)}let o=qL(e)??jm(e),c=o?.appMode??Am(e)===!0,l=oY.get(e.id),u=!c||aY||l?.has(`reports`)===!0,f=!c||aY||l?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Hu(e)!==d).length,m=r.length+i.length;return A`${RY(e,{app:o,compact:c,reports:p,bundles:m,showReports:u,showBundles:f})} ${u?A`${t.map(t=>uY(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>jY(t,e.id))}`:M} ${f?A`${r.map(t=>kY(t,{workspaceId:e.id}))}${i.map(t=>AY(t,e.id))}`:M}`})} ${rY.map(e=>{let t=(l.get(e)??[]).toSorted(BY),n=e==="default";return t.length===0&&!(n&&eY)?null:A`${fY(nY[e]??e,{dropTarget:n})} ${t.map(e=>uY(e))}`})} ${f.length>0||tY?EY():null} ${O(f,e=>e.integrity,e=>kY(e))}`,KJ);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&N(yY(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=JJ());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=YJ()),rX(),Xu(n,HY)}var VY=!1;function HY(){VY||(VY=!0,requestAnimationFrame(()=>{VY=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}No(()=>{Q()}),Fm(HY);async function UY(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),vX?await jX():fc()&&await kX()}function WY(e){let t=F.currentView===`findings`||F.currentView===`files`;(e!==F.currentWorkspace||!t)&&gR(e)}async function GY(e){let t=e.target.closest(`[data-team-section]`);if(t){if(aY||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&cY.toggle(e,t.dataset.teamSection),await Q();return}let n=e.target.closest(`.file-item.team-item[data-team-id]`);if(n){let t=e.target.closest(`button`)?null:F.managedTeams.find(e=>e.id===n.dataset.teamId);t&&fR(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(aY||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=oY.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),oY.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await UY();return}if(e.target.closest(`[data-action="go-home"]`)){await bR();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){G.navigate(hi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:F.currentView===`bundles`?F.bundleDetailsTab:`overview`},F.managedTeams));return}let a=e.target.closest(`.file-item[data-bundle-integrity]`);if(a){if(a.classList.contains(`bundle-missing`))return;let e=a.dataset.bundleIntegrity,t=a.dataset.workspaceId??null;if(F.selectedBundle===e&&F.currentView===`bundles`&&F.selectedBundleWorkspace===t)return;Eq(e,void 0,{workspaceId:t}),XL(e,F.bundleDetailsTab),X(),Q(),Mq(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(F.currentView=e,X(),Q());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(I())return;let e=await me();e&&(await dL(),await cu(e),Q());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&Be({id:t.id,name:t.name,privateKeyBase64:t.privateKey}).catch(e=>alert(`Failed to open share dialog: ${e.message}`));return}let c=e.target.closest(`[data-action="export-workspace"]`);if(c){let e=c.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;t&&CJ(t).catch(e=>alert(`Failed to open export dialog: ${e.message}`));return}let l=e.target.closest(`[data-action="leave-workspace"]`);if(l){let e=l.closest(`[data-workspace-id]`),t=e?R().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await zp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await ae({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!R().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await SR(t.id,a,{triage:o})}catch(e){alert(`Failed to leave workspace: ${e.message}`)}return}let u=e.target.closest(`.file-item.workspace-item[data-workspace-id]`);if(u){let e=u.dataset.workspaceId;e&&WY(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=F.currentView===`findings`||F.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==F.currentFile||n!==F.currentReportWorkspace||!t)&&lR(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(F.currentView===`bundles`&&F.selectedBundle){let e=F.selectedBundle,t=(F.bundles??[]).find(t=>t.integrity===e)?.name??e,n=R().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>Sh(t.id,e)).map(e=>e.id),{confirmed:r}=await mt({name:t,inRemote:n.length>0});if(!r)return;if(F.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await xR({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!F.currentFile)return;let e=F.currentFile,t;try{t=await zp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>xh(t.id,e)).map(e=>e.id),r=n.length>0,i=rS(e)?`links file`:`report`,{confirmed:a,triage:o}=await gt({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(F.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await _R({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){V.status===`error`?V.dismissError():V.status===`off`?(!V.getServerUrl()&&XJ&&V.setServerUrl(XJ),V.setEnabled(!0)):V.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),ZX(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),yx(F.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),G.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){vx(F.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){GJ.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,GJ.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var KY={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 qY(e){aY=e.target.value.length>0,iY=e.target.value.trim().toLowerCase(),Q()}var JY={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function YY(){return V.getServerUrl()||XJ?R().length>0:!1}function XY(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=F.managedSession;GJ?.toggleAttribute(`data-authenticated`,r!=null),GJ?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),ZY(r);let i=Z?.querySelector(`#public-status`);if(i&&(i.hidden=!r?.publicShare),e.hidden=r==null||r.publicShare===!0,r==null){t&&(t.hidden=!0),e.dataset.authed=`0`,e.removeAttribute(`popovertarget`),e.removeAttribute(`aria-label`),N(M,e),n&&N(M,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&N(M,n);return}let a=(r.login[0]??`?`).toUpperCase(),o=typeof r.name==`string`&&/\s/u.test(r.name.trim())?r.name.trim():`@${r.login}`;e.dataset.authed=`1`,e.setAttribute(`popovertarget`,`user-menu`),e.setAttribute(`aria-label`,`Account: ${r.login}`),N(A`${$Y(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!I()||r.role!==`admin`&&r.role!==`manage`),n&&N(A`<div class="user-card">${$Y(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?A`<span class="user-name">${r.name}</span>`:M}</span></div>${r.viewer?A`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:M} ${r.role===`none`?M:A`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${rn(F.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${mY}<span>Log out</span></button>`,n)}function ZY(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,GJ?.toggleAttribute(`data-view-as`,e?.viewer!=null),N(e?.viewer?A`<span class="view-as-label"><span>Viewing as <strong>@${e.login}</strong></span> <span class="view-as-note">Read only · changes are not saved</span></span> <button type="button" class="view-as-stop" data-action="view-as-stop" aria-label="${`Stop viewing as ${e.login}`}">Stop</button>`:M,t))}document.addEventListener(`managed-view-only`,()=>{let e=F.managedSession;e?.viewer&&Rx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var QY=0;document.addEventListener(`managed-profile-change`,e=>{let t=F.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&QY++,F.managedSession={...t,name:e.detail.name},hb(F.managedSession),XY())});function $Y(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${QY?`?v=${QY}`:``}`;return A`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${db()||F.managedSession?.role===`none`?M:A`<img alt="" src="${r}" @error="${eX}">`}</span>`}function eX(e){e.currentTarget.classList.add(`broken`)}function tX(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=F.serverMode===`managed`||rn(F.serverModeConfig);e.textContent=pc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${pc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function nX(){GJ&&(GJ.dataset.mode=pc()),I()?(Z?.querySelector(`sidebar-delete-current`)?.setAttribute(`hidden`,``),Z?.querySelector(`#encryption-toggle`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.removeAttribute(`hidden`)):(Z?.querySelector(`sidebar-delete-current`)?.removeAttribute(`hidden`),Z?.querySelector(`#encryption-toggle`)?.removeAttribute(`hidden`),Z?.querySelector(`#manage-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#auth-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``),Z?.querySelector(`#view-as-status`)?.setAttribute(`hidden`,``)),uZ()}function rX(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(tX(),nX(),F.serverMode===`managed`&&F.localMode){t.hidden=!0,V.setForcedOff(!0);let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0),Z?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(I()){t.hidden=!0,V.setForcedOff(!0),XY();return}if(F.serverMode===`standalone`){t.hidden=!0;let e=Z?.querySelector(`#auth-status`);e&&(e.hidden=!0);return}let n=Z?.querySelector(`#auth-status`);n&&(n.hidden=!0);let r=YY(),i=un()!=null;if(r&&i&&V.isEnabled()&&fh().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!V.getServerUrl()&&XJ&&V.isEnabled()&&V.setServerUrl(XJ),V.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??V.status;t.dataset.status=a;let o=V.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=V.proxyAuthRequired;t.toggleAttribute(`data-proxy-auth`,s);let c=o?`Not saving to this browser right now (storage may be full, or another tab is on a newer version). Changes that haven’t synced could be lost on reload.`:s?`Can’t reach the sync server — the connection is being redirected to a sign-in proxy (e.g. Cloudflare Access). Reload the page to sign in again.`:``;c?t.dataset.tooltip=c:delete t.dataset.tooltip;let l=t.querySelector(`.sync-label`);l&&(l.textContent=JY[a]??``)}V.onStatusChange(rX);var iX=!1,aX=!1;async function oX(){if(!V.persistenceDegraded||aX||iX)return;iX=!0;let{shown:e,unloaded:t}=await Se().catch(()=>({shown:!1,unloaded:!0}));if(iX=!1,e){aX=!0;return}V.persistenceDegraded&&setTimeout(oX,t?3e4:1500)}V.onPersistenceDegraded(e=>{rX(),e?oX():aX=!1});var sX=!1,cX=!1;async function lX(){if(!V.proxyAuthRequired||cX||sX)return;sX=!0;let{shown:e,reload:t}=await TJ();if(sX=!1,!e){V.proxyAuthRequired&&setTimeout(lX,1500);return}cX=!0,t&&location.reload()}V.onProxyAuthRequired(e=>{rX(),e?lX():cX=!1});function uX(e){if(e.target.closest(`[data-workspace-section], [data-action]`))return;let t=e.target.closest(`.file-item.workspace-item`);if(!t)return;let n=t.querySelector(`.file-label`);if(!n||n.querySelector(`input`))return;let r=t.dataset.workspaceId,i=R().find(e=>e.id===r);if(!i)return;e.preventDefault();let a=document.createElement(`input`);a.type=`text`,a.value=i.name,a.className=`workspace-rename-input`,n.textContent=``,n.append(a),a.focus(),a.select();let o=!1,s=async e=>{if(!o){o=!0;try{e&&await uu(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=R().find(e=>e.id===r)?.name??i.name),Q()}}};a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),s(!0)):e.key===`Escape`&&(e.preventDefault(),s(!1))}),a.addEventListener(`blur`,()=>s(!0)),a.addEventListener(`click`,e=>e.stopPropagation()),a.addEventListener(`dblclick`,e=>e.stopPropagation())}function dX(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function fX(e){return e.dataTransfer.types.includes(ZJ)||e.dataTransfer.types.includes($J)}function pX(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($J,n),e.dataTransfer.setData(QJ,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),tY=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(ZJ,n.dataset.file),e.dataTransfer.setData(QJ,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),eY=!0,Q())}function mX(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);dX(),(eY||tY)&&(eY=!1,tY=!1,Q())}function hX(e){if(!fX(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`,dX(),!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($J)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function gX(e){Z.contains(e.relatedTarget)||dX()}async function _X(e){if(!fX(e))return;e.preventDefault(),e.stopPropagation(),dX();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(QJ)||null;if(e.dataTransfer.types.includes($J)){let t=e.dataTransfer.getData($J);if(!t)return;if(r&&r!==n&&Sh(r,t)){let e=(F.bundles??[]).find(e=>e.integrity===t)?.name??t,n=R().find(e=>e.id===r),{confirmed:i}=await vt({name:e,workspaceName:n?.name??``});if(!i)return;try{await Hh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await Su(t,n),r&&r!==n&&await Cu(t,r),Q();return}let i=e.dataTransfer.getData(ZJ);if(i){if(r&&r!==n&&xh(r,i)){let e=R().find(e=>e.id===r),{confirmed:t}=await bt({name:i,workspaceName:e?.name??``});if(!t)return;try{await Vh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await yu(i,n),r&&r!==n&&await bu(i,r),F.currentWorkspace&&(F.currentWorkspace===n||F.currentWorkspace===r)?await gR(F.currentWorkspace):Q()}}var vX=null,yX=null,$=0,bX=0,xX=null,SX=!0,CX=!0,wX=!1,TX=null,EX=null,DX;function OX(){let e=DX;return DX=void 0,e}async function kX({forgetLastView:e=!0,resetNavigation:t=!0}={}){G.reset({force:t}),TX?.remove(),TX=null;let n=++$;if(CX=!0,wX=!1,pb(),Xv(),hL(),nL(),uh(F.serverMode!==`e2e`),V.setForcedOff(!0),V.setProtocolLocked(F.serverMode!==`e2e`||!!vX),yR({forgetLastView:e}),F.triage.clear(),I()){let e=NX();if(db()&&(await e,n!==$))return}else{if(F.managedSession=null,F.managedTeams=[],await Ya(),n!==$||(await Id(),n!==$))return;nu()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),AR(),tX(),rX(V.status),X(),await Q()}async function AX(e){if(e!==void 0&&!Qe(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${Xe.join(`, `)}.`);if(await $X(),e===void 0&&(vX||I()))return;let t=$,n=e===void 0?null:await K();t===$&&(vX??={serverMode:F.serverMode,serverModeConfig:F.serverModeConfig,serverModeSelection:F.serverModeSelection,localMode:F.localMode,managed:F.managed},n&&n.setPreviewRole(e),F.serverMode=`managed`,uc(!1),F.managedSession=null,F.managedTeams=[],await kX({forgetLastView:!1}))}async function jX(){let e=vX,t=yX;vX=null,yX=null,fb(),Object.assign(F,e),await kX({forgetLastView:!1}),t&&MX(t)}function MX(e,{runtime:t=!0}={}){if(vX){yX=e;return}qJ(!1);let n=un()!=null,r=I(),i=F.serverMode;Ke()&&e.managed&&(F.serverModeSelection=`managed`),dc(e.mode),Ke()&&e.managed&&uc(!1),I()||(DX=void 0);let a=i!==F.serverMode;F.managed=e.managed;let o=t&&F.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(F.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(F.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),AR(),uh(F.serverMode!==`e2e`),V.setProtocolLocked(F.serverMode!==`e2e`),dn(e),r!==I()){kX({forgetLastView:!1,resetNavigation:n&&!Ke()&&!an(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}rX(V.status),a&&F.serverMode===`e2e`&&YY()&&V.isEnabled()&&fh().then(e=>{if(e&&F.serverMode===`e2e`)for(let t of e.triageSync.openSessions)e.openWorkspace(t.workspaceId)}).catch(e=>console.warn(`sync: resume failed`,e)),a&&Q(),o&&X({animate:!1}),I()&&NX()}function NX({keepTeams:e=!1,again:t=!1}={}){if(!t&&xX?.generation===$)return xX.promise;SX=!0;let n={generation:$,promise:null};return xX=n,n.promise=PX({keepTeams:e}).finally(()=>{xX===n&&(xX=null,Q())}),n.promise}async function PX({keepTeams:e=!1}={}){let t=$,n=++bX,r=()=>t===$&&n===bX&&I();try{let t=F.managedSession,n={},i=OX(),a=i===void 0?Jq():void 0,o=await bb({fallback:n,sent:i});if(!r())return;if(o===n&&await Yq(t)){r()&&qX===null&&XX(0);return}let s=o===n?t:o;if(o!==n&&!db()&&await qq(s,a),!r())return;F.managedSession=s,SX=!1,(!t||t.id!==s?.id||t.role!==s?.role)&&(CX=!0),Q(),hb(s),t&&(t.id!==s?.id||t.role!==s?.role)?(F.managedTeams=[],F.bundles=[],hL(),nL(),G.reset(),bR({history:!1})):Object.hasOwn(oi,F.currentView)&&VX(F.currentView)&&X({animate:!1}),XY(),tL(),document.querySelector(`base`)||(TX=document.createElement(`base`),TX.href=`/`,document.head.prepend(TX));let c=e&&t?.id===s?.id&&t?.role===s?.role&&gL()?null:EX=RX(r,{signal:new AbortController().signal}).finally(()=>{EX===c&&(EX=null)}),l=G.active&&Object.hasOwn(oi,F.currentView)&&!VX(F.currentView)?G.navigate({view:VX(`manage`)?`manage`:`home`},{replace:!0}):s?G.start(WX,{onCancel:UX}):null;await Promise.all([c,l])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{r()&&(SX||CX)&&(SX=!1,CX=!1,Q())}}mL((e,t,n)=>RX(e,{strict:!0,signal:t,revision:n}));var FX=Iq(xb);function IX(e){return EX??RX(e,{reuse:!0})}var LX=0;async function RX(e,{strict:t=!1,signal:n=nv(),reuse:r=!1,revision:i=null}={}){let a=$,o=F.managedSession,s=await FX({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:F.managedTeams);if(n.aborted||c===null||!e()||a!==$||!I())return!1;let l=F.managedTeams.find(e=>e.id===F.currentManagedTeam)?.name,u=gb(c);F.managedTeams=c;let d=s===null?LX:++LX;CX=!1;let f=Hx(F);if(s!==null&&f&&!wX){let t=W(),r=()=>e()&&!n.aborted&&!wX&&d===LX&&t===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&Hx(F)===f,i;try{i=await Xx(F,c,{fetchCatalog:()=>Sb({signal:AbortSignal.any([n,nv()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>G.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&Rx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){BX=null;let t=bR({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}}if(Yx(F,c,u)){let n=c.find(e=>e.id===F.currentManagedTeam),r=n&&(F.currentManagedReport===null||n.reports.some(e=>e.id===F.currentManagedReport))?hi({view:F.currentView===`links`?`findings`:F.currentView,teamId:n.id,reportId:F.currentManagedReport},c):null;BX=null;let i=bR({history:!1}),s=W();if(await i,t)return s===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&await G.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!wX&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)&&!c.some(e=>e.id===F.currentManagedTeam)){let t=bR({history:!1}),n=W();return await t,n===W()&&a===$&&e()&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&G.replaceRoute({view:`home`}),e()}return!wX&&(F.currentWorkspace||F.bundleDetails?.npm||l!==c.find(e=>e.id===F.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var zX=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),BX=null;function VX(e){let t=F.managedSession?.role;return e===`manage-links`&&!F.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!zX.has(e)||t===`admin`)}var HX=0;function UX(){++HX,wX=!1,rv();let e=$;IX(()=>e===$&&I())}async function WX(e,t){let n=++HX;wX=!0;try{return await GX(e,t)}finally{n===HX&&(wX=!1,Q())}}async function GX(e,t){let n=BX===W()?BX:null;if(rv(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await IX(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!VX(`manage-bundles`)||(r=await Sb(),!t()||!I()))||(e=mi(e,F.managedTeams,r),!e))return!1;let i=n!==null&&BX===n&&F.currentManagedTeam===e.teamId&&F.currentManagedReport===e.reportId;if(!t()||!I()||e.view!==`home`&&(!F.managedSession||F.managedSession.role===`none`))return!1;if(e.finding){let n=await UJ({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>fR(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(BX=W(),CL(),hi({view:`findings`,teamId:F.currentManagedTeam,reportId:F.currentManagedReport,finding:{id:e.finding.id}},F.managedTeams)):(n.reason&&Rx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return dR(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Vx):Jx(F.managedTeams);if(!await Pq(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return hi({...o,bundleTab:F.bundleDetailsTab,...Gx(F)},F.managedTeams,r)}if(e.view===`home`)return bR({history:!1});if(e.view===`npm`)return Qj(e,t,Q);if(e.view===`repository-code`)return nt(F.managedSession)&&CN(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!F.managedSession.publicShare&&(ir(),F.currentView=e.view,F.profileLinkError=e.linkError??null,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return VX(e.view)&&await uR(e.linkId);if(Object.hasOwn(oi,e.view))return ZX(e.view,{...e,history:!1});let a=F.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await fR(a,e.reportId,{history:!1})||!t()?!1:(F.currentView!==e.view&&ir(),F.currentView=F.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),BX=W(),CL(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),hi({...e,view:F.currentView===`links`?`findings`:F.currentView},F.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(I()&&typeof e.detail?.id==`string`){let t=Vx(e.detail),n=F.managedTeams,r=n.find(e=>e.id===F.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));G.navigate(Ux(n,t,r?.id,F.currentView===`bundles`?F.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{NX()});var KX=[5e3,15e3,45e3,6e4],qX=null,JX=0;async function YX(e=0){clearTimeout(qX),qX=null;let t=++JX;!I()||db()||(await NX({again:!0}),t===JX&&await Yq(F.managedSession)&&t===JX&&XX(e))}function XX(e){clearTimeout(qX),qX=setTimeout(()=>{YX(e+1)},KX[Math.min(e,KX.length-1)])}Xq(()=>{YX()}),document.addEventListener(`managed-feed-closed`,()=>{SX=!0,hL(),nL(),bR({history:!1}).then(()=>NX()),Rx(`Workspace access changed. Refreshing your session.`)});async function ZX(e,t={}){if(t.history!==!1&&I()&&(G.active||await NX(),G.active))return G.navigate({view:e,...t.actor?{actor:t.actor}:{},...t.bundleId?{bundleId:t.bundleId}:{},...[`link`,`dependencies`].includes(t.scanMode)?{scanMode:t.scanMode}:{},...t.linkId?{linkId:t.linkId}:{}});if(!Object.hasOwn(oi,e)||!I()||!VX(e))return!1;let n=rv(),r=$;try{let t=await K();e===`manage-import`&&VX(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==W()||!I()||!VX(e)?!1:(F.currentView=e,F.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,F.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,X({animate:!1}),Q(),NX({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=>Rx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&ZX(t,{actor:n,scanMode:e.detail?.scanMode,linkId:e.detail?.linkId})}),document.addEventListener(`managed-repository-code-open`,e=>{let{repoId:t,repo:n=null,path:r=``}=e.detail??{};I()&&Number.isSafeInteger(t)&&t>0&&fN({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var QX;function $X(){return QX??=tZ().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function eZ(){let e=cn();return DX=ln(e).then(e=>e?.session),e}async function tZ(){let e=un();if(e){dc(e.mode),F.managed=e.managed,eZ().then(e=>{if(e&&e!==`standalone`)return MX(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}qJ(!tn());let t=eZ(),n=await ln(t,tn()?0:3e3),r=un();if(r)return n&&n!==`standalone`?MX(n):MX(r,{runtime:!1});if(n&&n!==`standalone`)return MX(n);n===`standalone`&&nn(),F.serverMode=`standalone`,F.serverModeConfig=null,F.serverModeSelection=null,uc(n===null),uh(!0),qJ(!1),rX(V.status),Q(),n===null&&t.then(e=>{let t=un(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(nn(),vX){vX.serverMode=`standalone`,vX.serverModeConfig=null,vX.serverModeSelection=null,vX.localMode=!1;return}return uc(!1),rX(V.status),Q()}if(n)return MX(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function nZ(){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 rZ(e){GJ=e,Z=e.renderRoot,KJ=Z.querySelector(`#file-list`),dZ(Z.querySelector(`#encryption-toggle`)),pJ(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,GY),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),GY(e))}),Z.addEventListener(`dblclick`,uX),Z.addEventListener(`dragstart`,pX),Z.addEventListener(`dragend`,mX),Z.addEventListener(`dragover`,hX),Z.addEventListener(`dragleave`,gX),Z.addEventListener(`drop`,_X),cr(Z,KY),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,qY),nZ(),rX(V.status),un()||qJ(!tn()),Q(),V.onServerInfo(e=>{if(F.serverMode!==`e2e`)return;let t=un(),n=t&&{...t,...F.deepviewScanServer?{deepviewScanServer:F.deepviewScanServer}:{}};return MX(sn(n,e))}),$X(),F.serverMode===`managed`&&NX()}var iZ=class extends _a{static styles=[ma(Qq),ma(Zq)];render(){return A`<div class="sidebar-header"><h2 class="brand"><button class="brand-button" type="button" data-action="go-home"><span class="brand-name">Triage</span></button> <span class="brand-tag" data-action="toggle-client-mode">${pc()}</span></h2><button id="encryption-toggle" type="button" hidden></button> <button id="sidebar-toggle" type="button" aria-label="toggle sidebar"><svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M2 4h12v1.5H2zM2 7.25h12v1.5H2zM2 10.5h12V12H2z"/></svg></button></div><button id="sidebar-home" class="rail-item" type="button" data-action="go-home" aria-label="Home" data-tooltip="Home"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 7.5 8 3l5.5 4.5M4 6.5V13h3V9.5h2V13h3V6.5"/></svg></button><div class="sidebar-search"><svg class="sidebar-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg> <input id="sidebar-search-input" type="search" placeholder="Search reports…" aria-label="Search reports" autocomplete="off"><sidebar-view-button kind="packages"></sidebar-view-button><sidebar-view-button kind="repositories"></sidebar-view-button></div><ul id="file-list"></ul><ul id="sidebar-rail"></ul><button id="storage-status" type="button" hidden><span class="storage-dot" aria-hidden="true"></span> <span class="storage-label"></span></button><div id="view-as-status" role="status" hidden></div><div class="sidebar-actions"><sidebar-delete-current></sidebar-delete-current><button id="sync-status" type="button" data-status="off"><span class="sync-dot" aria-hidden="true"></span> <span class="sync-label">Sync off</span></button> <button id="auth-status" type="button" hidden></button> <span id="public-status" hidden>Public access link · Read only</span> <button id="manage-status" type="button" hidden data-action="manage" aria-label="Manage">${k(ra)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){rZ(this)}};customElements.define(`app-sidebar`,iZ);var aZ=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5.5a3 3 0 0 1 6 0V8"/></svg>`,oZ=A`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5a3 3 0 0 1 6 -0.5"/></svg>`,sZ=null;async function cZ(){if(!sZ)return;if(await $X(),I()){sZ.hidden=!0;return}if(!To()){sZ.hidden=!0;return}let e=Co();sZ.hidden=!1;let t=wo();sZ.classList.toggle(`encrypted`,e&&t),sZ.classList.toggle(`locked-pending`,e&&!t),e&&t?(sZ.dataset.tooltip=`Encryption on — click to disable`,sZ.setAttribute(`aria-label`,`Disable encryption`),N(aZ,sZ)):e?(sZ.dataset.tooltip=`Encryption on, locked — click to unlock`,sZ.setAttribute(`aria-label`,`Unlock encrypted data`),N(aZ,sZ)):(sZ.dataset.tooltip=`Encryption off — click to enable`,sZ.setAttribute(`aria-label`,`Enable encryption`),N(oZ,sZ))}async function lZ(){if(confirm(`Disable encryption?
|
|
192
|
-
|
|
193
|
-
Your local triage and report data will be rewritten as plaintext.
|
|
194
|
-
|
|
195
|
-
IMPORTANT: DeepView cannot directly delete your passkey. Most browsers / password managers require you to remove the entry manually after disabling. You can re-enable encryption later.`))try{(await Ro({migrate:async({open:e})=>{await eo({open:e}),await Bd({open:e}),await Cl({open:e}),await kl({open:e})}}))?.disabled&&alert(`Encryption disabled. Your data is now plaintext.
|
|
196
|
-
|
|
197
|
-
To complete cleanup, remove the DeepView passkey from your password manager / OS settings:
|
|
198
|
-
• macOS / iOS: Settings → Passwords
|
|
199
|
-
• Windows: Settings → Accounts → Sign-in options → Passkeys
|
|
200
|
-
• Chrome: chrome://settings/passkeys
|
|
201
|
-
• Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function uZ(){cZ()}function dZ(e){if(!e||e===sZ)return;sZ=e;let t=!1;sZ.addEventListener(`click`,async()=>{if(await $X(),!I()&&!t){t=!0;try{if(!Co()){await be();return}if(!wo()){await Rv();return}await lZ()}finally{t=!1}}}),No(cZ),cZ()}export{Fs as a,Is as b,ho as c,Co as d,wo as e,To as f,Do as g,No as h,Fo as i,Lo as j,Ho as k,Ga as l,Ya as m,$a as n,Rs as o,Bs as p,Vs as q,Hs as r,Ws as s,Xs as t,ec as u,ic as v,F as w,I as x,Gc as y,Jc as z,Yc as A,ul as B,dl as C,gl as D,Sl as E,Ol as F,Of as G,Gf as H,Xf as I,Hu as J,nu as K,R as L,su as M,fu as N,Su as O,dp as P,sd as Q,md as R,xd as S,jd as T,zd as U,Hd as V,bp as W,Tp as X,Ep as Y,Dp as Z,Op as _,kp as $,Np as aa,Pp as ba,Fp as ca,Xp as da,Qp as ea,Ud as fa,Wd as ga,Kd as ha,qd as ia,G as ja,Wv as ka,Qh as la,$h as ma,Jv as na,Yv as oa,$v as pa,ky as qa,Uy as ra,Gy as sa,Xy as ta,Zy as ua,Qy as va,$y as wa,eb as xa,tb as ya,nb as za,cb as Aa,db as Ba,_b as Ca,yb as Da,Ob as Ea,kb as Fa,Ab as Ga,Mb as Ha,Nb as Ia,Pb as Ja,zb as Ka,Bb as La,$b as Ma,ex as Na,tx as Oa,nx as Pa,rx as Qa,ix as Ra,ax as Sa,ox as Ta,cx as Ua,lx as Va,bx as Wa,xx as Xa,Sx as Ya,kx as Za,Ax as _a,jx as $a,Mx as ab,Nx as bb,zW as cb,VW as db,Zx as eb,tS as fb,th as gb,z as hb,nh as ib,rh as jb,ih as kb,Nv as lb,Pv as mb,Fv as nb,iS as ob,oS as pb,sS as qb,lS as rb,dS as sb,fS as tb,pS as ub,TS as vb,Th as wb,Eh as xb,Dh as yb,Mh as zb,Nh as Ab,Ph as Bb,Ih as Cb,Lh as Db,Rh as Eb,Bh as Fb,Gh as Gb,Kh as Hb,V as Ib,l_ as Jb,u_ as Kb,d_ as Lb,g_ as Mb,v_ as Nb,b_ as Ob,x_ as Pb,S_ as Qb,T_ as Rb,E_ as Sb,k_ as Tb,W_ as Ub,Y_ as Vb,cg as Wb,yg as Xb,bg as Yb,xg as Zb,H as _b,wg as $b,kg as ac,Ag as bc,jg as cc,U as dc,Mg as ec,Ig as fc,Bg as gc,Hg as hc,Ug as ic,Gg as jc,Kg as kc,qg as lc,Jg as mc,Yg as nc,Zg as oc,i_ as pc,a_ as qc,o_ as rc,s_ as sc,Jh as tc,US as uc,WS as vc,CC as wc,DC as xc,OC as yc,kC as zc,LC as Ac,WC as Bc,KC as Cc,JC as Dc,tw as Ec,rw as Fc,iw as Gc,aw as Hc,ow as Ic,sw as Jc,lw as Kc,uw as Lc,dw as Mc,pw as Nc,mw as Oc,hw as Pc,gw as Qc,_w as Rc,yw as Sc,xw as Tc,Sw as Uc,Mw as Vc,_T as Wc,vT as Xc,yT as Yc,bT as Zc,Bx as _c,Ux as $c,Wx as ad,qx as bd,$T as cd,tE as dd,ED as ed,DD as fd,AD as gd,jD as hd,MD as id,ND as jd,PD as kd,ID as ld,LD as md,qD as nd,YD as od,XD as pd,$O as qd,tk as rd,ak as sd,ok as td,sk as ud,uk as vd,dk as wd,fk as xd,Dk as yd,Nk as zd,$k as Ad,eA as Bd,tA as Cd,nA as Dd,rA as Ed,cA as Fd,TA as Gd,qA as Hd,YA as Id,XA as Jd,fj as Kd,W as Ld,_j as Md,Sj as Nd,jj as Od,Mj as Pd,PM as Qd,IM as Rd,RM as Sd,zM as Td,BM as Ud,VM as Vd,KN as Wd,$N as Xd,eP as Yd,iP as Zd,sP as _d,cP as $d,lP as ae,uP as be,pP as ce,mP as de,CI as ee,wI as fe,Iv as ge,Rx as he,zx as ie,Qq as je,iJ as ke,SJ as le,UJ as me,WJ as ne,Q as oe,AX as pe,$X as qe,RL as re,YL as se,XL as te,lR as ue,dR as ve,fR as we,gR as xe,bR as ye,DR as ze,PR as Ae,zR as Be,VR as Ce,UR as De,QR as Ee,rz as Fe,iz as Ge,az as He,bz as Ie,xz as Je,Sz as Ke,Mz as Le,Jz as Me,mB as Ne,hB as Oe,jB as Pe,kU as Qe,NU as Re,GU as Se,ZU as Te,nW as Ue,rW as Ve,aW as We,Y as Xe,lW as Ye,uW as Ze,dW as _e,fW as $e,pW as af,mW as bf,hW as cf,gW as df,_W as ef,xW as ff,SW as gf,CW as hf,wW as if,TW as jf,EW as kf,DW as lf,OW as mf,tK as nf,lK as of,uK as pf,X as qf,Sq as rf,Cq as sf,wq as tf,Tq as uf,Eq as vf,Dq as wf,Aq as xf,Mq as yf,Nq as zf,fN as Af,wN as Bf};
|
|
202
|
-
/*! Bundled license information:
|
|
203
|
-
|
|
204
|
-
lit-html/directives/map.js:
|
|
205
|
-
lit-html/directives/choose.js:
|
|
206
|
-
(**
|
|
207
|
-
* @license
|
|
208
|
-
* Copyright 2021 Google LLC
|
|
209
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
210
|
-
*)
|
|
211
|
-
|
|
212
|
-
lit-html/directives/guard.js:
|
|
213
|
-
(**
|
|
214
|
-
* @license
|
|
215
|
-
* Copyright 2018 Google LLC
|
|
216
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
217
|
-
*)
|
|
218
|
-
|
|
219
|
-
lit-html/async-directive.js:
|
|
220
|
-
(**
|
|
221
|
-
* @license
|
|
222
|
-
* Copyright 2017 Google LLC
|
|
223
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
224
|
-
*)
|
|
225
|
-
|
|
226
|
-
lit-html/directives/ref.js:
|
|
227
|
-
(**
|
|
228
|
-
* @license
|
|
229
|
-
* Copyright 2020 Google LLC
|
|
230
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
231
|
-
*)
|
|
232
|
-
*/
|