@preventive/triage 1.0.0-alpha.47 → 1.0.0-alpha.49
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/client/dependency-paths.d.ts +2 -1
- package/client/dependency-paths.js +16 -4
- package/common/managed/agent-tasks.ts +12 -14
- package/common/managed/github-agents.ts +7 -6
- package/out/activity.js +4 -4
- package/out/{chunk-NOZJULWS.js → chunk-6LNQTKAV.js} +1 -1
- package/out/chunk-7VAWINQF.js +6 -0
- package/out/{chunk-5AHIQFFG.js → chunk-C2AVODGZ.js} +1 -1
- package/out/{chunk-I2MDGSQX.js → chunk-IO7JTZ6O.js} +1 -1
- package/out/chunk-JEAUAJVF.js +232 -0
- package/out/chunk-O6M574JI.js +1 -0
- package/out/{chunk-VL43BTSO.js → chunk-PBSOL2SL.js} +1 -1
- package/out/{chunk-ZCS4UYHI.js → chunk-PBZPYIG7.js} +1 -1
- package/out/{chunk-6WF3KNTL.js → chunk-SZD5CW5R.js} +2 -2
- package/out/{chunk-SPEFPML6.js → chunk-TQJDYHVE.js} +1 -1
- package/out/{chunk-UENXT2HK.js → chunk-ULIF7A7N.js} +1 -1
- package/out/{chunk-FH24VHSJ.js → chunk-WYLQWYLA.js} +1 -1
- package/out/client-managed-import.js +1 -1
- package/out/client-managed.js +26 -26
- package/out/compare.js +13 -13
- package/out/dialogs.js +17 -17
- package/out/graph.js +1 -1
- package/out/index.html +7 -7
- package/out/scan.js +1 -1
- package/out/terminal.js +214 -214
- package/out/view.css +1 -1
- package/out/view.js +15 -15
- package/package.json +8 -5
- package/risk/npm/score.js +1 -1
- package/server-managed/agent-merges.ts +38 -22
- package/server-managed/app-agents.ts +6 -8
- package/server-managed/cache-storage.ts +3 -2
- package/server-managed/commit-coauthors.ts +7 -2
- package/server-managed/commit-lockfiles.ts +22 -21
- package/server-managed/db-methods.ts +52 -38
- package/server-managed/db-neon.ts +21 -5
- package/server-managed/db.ts +2 -0
- package/server-managed/dependabot-access.ts +1 -1
- package/server-managed/dependency-review-comments.ts +7 -4
- package/server-managed/dependency-reviews.ts +71 -33
- package/server-managed/github-accounts.ts +28 -1
- package/server-managed/github-app.ts +27 -23
- package/server-managed/github-graphql.ts +39 -0
- package/server-managed/github-issue-links.ts +8 -1
- package/server-managed/github-metadata.ts +2 -2
- package/server-managed/http-response.ts +28 -10
- package/server-managed/http.ts +751 -273
- package/server-managed/index.ts +2 -2
- package/server-managed/managed-issues.ts +3 -0
- package/server-managed/npm-delta.ts +16 -0
- package/server-managed/npm-kept.ts +32 -5
- package/server-managed/npm-loads.ts +21 -13
- package/server-managed/npm-manifest.ts +1 -1
- package/server-managed/npm-packages.ts +13 -4
- package/server-managed/object-storage.ts +4 -3
- package/server-managed/public-workspace.ts +3 -3
- package/server-managed/pull-comment-reviews.ts +1 -1
- package/server-managed/pull-dependencies.ts +84 -36
- package/server-managed/pull-dependency-reviews.ts +28 -18
- package/server-managed/rename-diff-worker.js +1 -1
- package/server-managed/repository-agents.ts +9 -6
- package/server-managed/repository-browser.ts +13 -3
- package/server-managed/repository-code.ts +153 -7
- package/server-managed/repository-dependency-reviews.ts +12 -4
- package/server-managed/repository-history.ts +85 -152
- package/server-managed/repository-issues.ts +27 -13
- package/server-managed/repository-pulse.ts +31 -11
- package/server-managed/repository-squashes.ts +145 -0
- package/server-managed/request-timing.ts +63 -0
- package/server-managed/reviewed-dependencies.ts +3 -2
- package/server-managed/session.ts +34 -12
- package/server-managed/sql.ts +16 -8
- package/server-managed/storage-encryption.ts +16 -8
- package/server-managed/storage-maintenance.ts +5 -2
- package/server-managed/storage-payload.ts +18 -0
- package/server-managed/storage-stores.ts +3 -2
- package/server-managed/team-feed.ts +16 -11
- package/server-managed/team-npm-scopes.ts +29 -0
- package/server-managed/team-reports.ts +68 -16
- package/out/chunk-6ANSHRFQ.js +0 -6
- package/out/chunk-S6U2J62U.js +0 -232
- package/out/chunk-ZGNMDGSB.js +0 -1
package/out/chunk-S6U2J62U.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-ZGNMDGSB.js";import{$ as ie,A as ae,Aa as oe,B as se,Ba as ce,C as le,Ca as ue,Da as de,Ea as fe,Fa as pe,G as me,Ga as he,H as ge,Ha as _e,I as ve,Ia as ye,J as be,Ja as xe,K as Se,Ka as Ce,La as we,M as Te,Ma as Ee,Na as De,O as Oe,Oa as ke,P as Ae,Pa as je,Q as Me,Qa as Ne,R as Pe,S as Fe,Ta as Ie,U as Le,Ua as Re,V as ze,W as Be,X as Ve,Z as He,_ as Ue,a as We,aa as Ge,b as Ke,ba as qe,ca as Je,d as Ye,da as Xe,e as Ze,ea as Qe,f as $e,fa as et,g as tt,ga as nt,h as rt,ha as it,i as at,ia as ot,j as st,ja as ct,k as x,ka as lt,l as ut,la as dt,m as ft,ma as pt,na as mt,o as ht,oa as gt,p as _t,pa as vt,q as yt,qa as bt,r as xt,ra as St,sa as Ct,ta as wt,ua as Tt,va as Et,wa as Dt,xa as Ot,ya as kt,z as At,za as jt}from"./chunk-NOZJULWS.js";import{a as Mt,b as Nt,c as Pt,e as Ft,f as It,g as Lt,h as Rt,i as zt,j as Bt,l as Vt,m as Ht,n as Ut,o as Wt,p as Gt,q as Kt,r as qt,s as Jt,t as Yt,u as Xt,v as Zt,w as Qt,x as $t}from"./chunk-6ANSHRFQ.js";import{a as en,b as tn,c as nn,d as rn,e as an,f as on,g as sn,h as cn,j as ln,k as un,l as dn,m as fn,p as pn,w as mn}from"./chunk-7BKKYVWR.js";import{a as hn,b as gn,c as _n,d as vn,e as yn,f as S,g as bn,h as xn,i as Sn}from"./chunk-7C7DWL7I.js";import{a as Cn,b as wn,c as Tn,d as En}from"./chunk-PNHBZGDD.js";import{$ as Dn,A as On,B as kn,C as An,D as jn,E as Mn,F as Nn,G as Pn,H as Fn,I as In,K as Ln,L as Rn,M as zn,N as Bn,O as Vn,P as Hn,Q as Un,R as Wn,S as Gn,T as Kn,U as qn,V as Jn,W as Yn,X as Xn,Y as Zn,Z as Qn,a as C,aa as $n,b as er,ba as tr,c as nr,ca as rr,d as w,da as ir,e as ar,ea as or,f as T,g as sr,ga as cr,ha as lr,ia as ur,ja as dr,k as fr,ka as pr,l as mr,la as hr,m as gr,ma as _r,n as vr,o as yr,oa as br,p as xr,pa as Sr,q as Cr,qa as wr,r as Tr,ra as Er,s as Dr,sa as Or,t as kr,ta as Ar,ua as jr,v as Mr,w as Nr,wa as Pr,x as Fr,y as Ir,z as Lr}from"./chunk-5AHIQFFG.js";import{b as Rr,c as zr,d as Br,e as Vr,f as Hr,g as Ur}from"./chunk-I2MDGSQX.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 E,b as Zr,d as D}from"./chunk-PWFUOLZK.js";import{a as Qr,c as $r,d as ei,e as ti,g as ni,h 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}from"./chunk-BC2UCLFJ.js";import{A as pi,B as mi,C as hi,D as gi,E as _i,G as vi,H as yi,J as bi,K as xi,L as Si,M as Ci,N as wi,O as Ti,a as Ei,f as Di,h as Oi,i as ki,j as Ai,k as ji,l as Mi,m as O,n as Ni,o as Pi,p as Fi,q as Ii,r as Li,t as Ri,u as zi,v as Bi,w as Vi,x as Hi,y as Ui,z as Wi}from"./chunk-SXV2T5C4.js";import{A as Gi,d as k,e as Ki,f as qi,g as Ji,i as Yi,j as Xi,k as Zi,o as Qi,p as $i,q as ea,r as ta,s as na,t as ra,w as ia,y as aa,z as oa}from"./chunk-WFYLMF6Z.js";import{a as sa,b as ca,c as la}from"./chunk-C4Z6ZBXV.js";import{a as ua,b as da,c as A,d as j,f as fa,g as M,i as N,j as pa}from"./chunk-2XUEZHIP.js";import{a as ma,b as ha,c as ga}from"./chunk-TUII34K2.js";var _a=new Uint8Array([68,86,69,49]),va=12,ya=32,ba=`deepview-passkey.v1.content-key`;function xa(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function Sa(){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 Ca(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function wa(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:ma(ba)},t,ya*8);return new Uint8Array(n)}function Ta(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Ea(e,t,n){let r=Ca(va),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(_a.length+va+i.length);return a.set(_a,0),a.set(r,_a.length),a.set(i,_a.length+va),a}async function Da(e,t,n){if(!Oa(t))throw Error(`passkey: missing envelope magic`);if(t.length<_a.length+va+16)throw Error(`passkey: envelope too short`);let r=t.subarray(_a.length,_a.length+va),i=t.subarray(_a.length+va);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Oa(e){if(e.length<_a.length)return!1;for(let t=0;t<_a.length;t++)if(e[t]!==_a[t])return!1;return!0}async function ka(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(32),n=Ca(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 Aa(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(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 ja=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Ma=new Map,Na=!1,Pa=new Map,Fa=new Map,Ia=new Set;function La(e){let t=()=>e();return Ia.add(t),Na&&queueMicrotask(()=>{if(Ia.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ia.delete(t)}function Ra(){for(let e of Ia)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function za(e){let t=So()??``;return ma(`deepview.secure.v1|${t}|${e}`)}function Ba(e){try{let t=Uint8Array.fromBase64(e);if(Oa(t))return t}catch{}return null}function Va(e){return Ma.get(e)??null}async function Ha(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(yo()&&!wo())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(po())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Ma.has(e),r=Ma.get(e);Ma.set(e,t),Fa.set(e,t);let i=Pa.get(e)??Promise.resolve(),a=()=>{Fa.get(e)===t&&Fa.delete(e)},o=i.catch(()=>{}).then(()=>Wa(e,t)).then(()=>a(),i=>{throw a(),Ma.get(e)===t&&(n?Ma.set(e,r):Ma.delete(e)),i});Pa.set(e,o.catch(()=>{})),await o}async function Ua(e){let t=Symbol(`secure-storage:removed`);Ma.delete(e),Fa.set(e,t);let n=Pa.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}Fa.get(e)===t&&(Fa.delete(e),Ma.delete(e))},i=n.catch(()=>{}).then(()=>r());Pa.set(e,i.catch(()=>{})),await i}async function Wa(e,t){let n=wo();if(n){let r=await Ea(n,ma(t),za(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function Ga(){Na||ko(()=>{Ga().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),Na=!0;for(let e of[...Ma.keys()])Fa.has(e)||Ma.delete(e);await qa(ja,!0)}async function Ka(e){if(!ja.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return Fa.has(e)||Ma.delete(e),(await qa([e],!1)).get(e)??null}async function qa(e,t){let n=wo(),r=[],i=new Map;for(let t of e){if(Fa.has(t)){i.set(t,Va(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Ba(e);if(a){if(!n)continue;try{let e=await Da(n,a,za(t));if(Fa.has(t)){i.set(t,Va(t));continue}let r=ga(e);Ma.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Ma.set(t,e),i.set(t,e),n&&yo()&&r.push([t,e])}return t&&Ra(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Ma.get(e)===t&&Ha(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function Ja(e,t){let n=(Pa.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(Fa.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(Fa.has(e)||(localStorage.setItem(e,r.storageValue),Ma.set(e,r.cacheValue)))});Pa.set(e,n.catch(()=>{})),await n}async function Ya({seal:e}){for(let e of ja)await Ja(e,async t=>{if(Ba(t))return null;let n=wo();return n?{storageValue:(await Ea(n,ma(t),za(e))).toBase64(),cacheValue:t}:null})}async function Xa({open:e}){for(let t of ja)await Ja(t,async n=>{let r=Ba(n);if(!r)return null;let i=await e(r,za(t)),a=ga(i);return{storageValue:a,cacheValue:a}})}var Za=`deepview.secure.v1.mutate:`;function Qa(e,t){return ja.includes(e)?navigator.locks.request(Za+e,async()=>{let n=Pa.get(e);n&&await n.catch(()=>{}),await Ga();let r=Va(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 Ha(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function $a(){await Promise.allSettled([...Pa.values()]),Fa.clear(),Pa.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!Na||!e.key||!ja.includes(e.key)||Ga().catch(()=>{})});var eo=`deepview.passkey.v1`,to=`deepview.passkey.userId`,no=`deepview.passkey.cleanDisable`,ro=`deepview.passkey.v1.write`,io=`deepview.triage.v1|`,ao=`deepview.opfs.v1|`,oo=`deepview.bundle.v1|`,P=null,so=null,co=null,lo=0;function uo(){return lo>0}var fo=0;function po(){return fo>0}function mo(){try{let e=localStorage.getItem(eo);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 ho(e){localStorage.setItem(eo,JSON.stringify(e))}function go(){localStorage.removeItem(eo)}function _o(){try{let e=localStorage.getItem(to);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(to,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function vo(){return typeof location>`u`?``:location.hostname}function yo(){return mo()!==null}function bo(){return P!==null}function xo(){return!(!xa()||typeof navigator>`u`||!navigator.locks?.request||!vo())}function So(){return so}function Co(){if(mo()!==null)return!1;try{return localStorage.getItem(no)!==`1`&&localStorage.getItem(to)!==null}catch{return!1}}function wo(){return P}function To(){return ma(io+(so??``))}function Eo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return ma(ao+(so??``)+`|`+e)}function Do(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return ma(oo+(so??``)+`|`+e)}var Oo=new Set;function ko(e){return Oo.add(e),()=>Oo.delete(e)}function Ao(){for(let e of Oo)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function jo({signal:e}={}){let t=mo();if(!t)return!1;let n;try{n=await Aa({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??vo(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!n||n.length<32)throw Mo();let r=await wa(n);return n.fill(0),navigator.locks.request(ro,async()=>{let e=mo();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 Ta(r),r.fill(0),so=e.userId,co=e.credentialId,Ao(),!0})}function Mo(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 No({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!xa())throw Error(`passkey: WebAuthn unavailable in this environment`);if(Co()&&!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=vo();return navigator.locks.request(ro,async()=>{if(yo())throw Error(`passkey: encryption is already enabled`);if(await Sa()===!1)throw Mo();let i=_o(),o=await ka({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Aa({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw Mo()}let c=await wa(s);s.fill(0);let l=await Ta(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,so=u,co=o.credentialId,ho(d),typeof e==`function`&&await e({seal:(e,t)=>Ea(l,e,t)});try{localStorage.removeItem(no)}catch{}return Ao(),!0})}async function Po({migrate:e}){if(!yo())return{disabled:!1,signalAttempted:!1};if(!bo())throw Error(`passkey: must unlock before disabling encryption`);lo+=1;try{return await navigator.locks.request(ro,async()=>{let t=mo();if(!t)return{disabled:!1,signalAttempted:!1};let n=P;if(!n)return{disabled:!1,signalAttempted:!1};if(go(),P=null,co=null,typeof e==`function`){let r=(e,t)=>Da(n,e,t);try{await e({open:r})}catch(e){throw ho(t),P=n,co=t.credentialId,Ao(),e}}so=null;try{localStorage.setItem(no,`1`)}catch{}let r=await Fo(t).catch(()=>!1);return Ao(),{disabled:!0,signalAttempted:r}})}finally{--lo}}async function Fo({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 Io(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 Lo(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 Io(n,r);e&&t.push(e)}return t}async function Ro({refuseIfEnabled:e=!1}={}){lo+=1,fo+=1;try{return await navigator.locks.request(ro,async()=>{if(e&&yo())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await $a();let t=mo();if(t)try{await Fo({credentialId:t.credentialId,rpId:t.rpId??vo(),userId:t.userId})}catch{}try{localStorage.removeItem(eo)}catch{}try{localStorage.removeItem(to)}catch{}try{localStorage.removeItem(no)}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,so=null,co=null,Ao();let n=await Lo([`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{--lo,--fo}}function zo(e){return P?Ea(P,e,To()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Bo(e){return P?Da(P,e,To()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function Vo(e,t){return P?Ea(P,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Ho(e,t){return P?Da(P,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function Uo(e,t){return P?Ea(P,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Wo(e,t){return P?Da(P,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==eo)return;let t=mo();(!t&&P||t&&P&&t.credentialId!==co)&&(P=null,so=null,co=null),Ao()});var Go=new WeakMap,Ko=Symbol(`iteration key`);function qo(e){Go.set(e,new Map)}function Jo(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Ko);let i=Go.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 Yo({target:e,key:t,type:n}){let r=Go.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{Xo(i,r,t)}):Xo(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&Xo(i,r,Array.isArray(e)?`length`:Ko),i}function Xo(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function Zo(e){e.cleaners&&e.cleaners.forEach(Qo,e),e.cleaners=[]}function Qo(e){e.delete(this)}var $o=[],es=!1;function ts(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if($o.indexOf(e)===-1){Zo(e);try{return $o.push(e),Reflect.apply(t,n,r)}finally{$o.pop()}}}function ns(e){let t=$o[$o.length-1];t&&(as(t,e),Jo(t,e))}function rs(e){Yo(e).forEach(is,e)}function is(e){as(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function as(e,t){if(e.debugger&&!es)try{es=!0,e.debugger(t)}finally{es=!1}}function os(){return $o.length>0}var ss=Symbol(`is reaction`);function cs(e,t={}){let n=e[ss]?e:function t(){return ts(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ss]=!0,t.lazy||n(),n}function ls(e){e.unobserved||(e.unobserved=!0,Zo(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var us=new WeakMap,ds=new WeakMap,fs=Object.prototype.hasOwnProperty;function ps(e){let t=ds.get(e);return os()&&typeof e==`object`&&e?t||ks(e):t||e}function ms(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=ps(i[1]):i=ps(i)),{done:r,value:i}},e}var hs={has(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`get`}),ps(n.get.apply(t,arguments))},add(e){let t=us.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||rs({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=us.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&&rs({target:n,key:e,value:t,oldValue:a,type:`set`}):rs({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=us.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&&rs({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=us.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&&rs({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=us.get(this),r=Reflect.getPrototypeOf(this);return ns({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(ps(t),...n),...t)},keys(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.values.apply(e,arguments),!1)},entries(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},gs={get(e,t,n){return e=fs.call(hs,t)?hs:e,Reflect.get(e,t,n)}},_s=typeof window==`object`?window:Function(`return this`)(),vs=new Map([[Map,gs],[Set,gs],[WeakMap,gs],[WeakSet,gs],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function ys({constructor:e}){return!(typeof e==`function`&&e.name in _s&&_s[e.name]===e)||vs.has(e)}function bs(e){return vs.get(e.constructor)}var xs=Object.prototype.hasOwnProperty,Ss=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function Cs(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&Ss.has(t))return r;ns({target:e,key:t,receiver:n,type:`get`});let i=ds.get(r);if(os()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return ks(r)}return i||r}function ws(e,t){let n=Reflect.has(e,t);return ns({target:e,key:t,type:`has`}),n}function Ts(e){return ns({target:e,type:`iterate`}),Reflect.ownKeys(e)}function Es(e,t,n,r){typeof n==`object`&&n&&(n=us.get(n)||n);let i=xs.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==us.get(r)||(i?n!==a&&rs({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):rs({target:e,key:t,value:n,receiver:r,type:`add`})),o}function Ds(e,t){let n=xs.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&rs({target:e,key:t,oldValue:r,type:`delete`}),i}var Os={get:Cs,has:ws,ownKeys:Ts,set:Es,deleteProperty:Ds};function ks(e={}){return us.has(e)||!ys(e)?e:ds.get(e)||As(e)}function As(e){let t=bs(e)||Os,n=new Proxy(e,t);return ds.set(e,n),us.set(n,e),qo(e),n}var js=ks;function Ms(e){let t=!0,n=cs(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw ls(n),e}return()=>ls(n)}var Ns=`deepview.viewMode`,Ps=`deepview.severityMode`,Fs=`deepview.repoUrls`,Is=`deepview.focusSplit`,Ls=`deepview.kanbanDetailFullscreen`,Rs=`deepview.bundleSourceWrap`,zs=new Set([`corrected`,`original`]),Bs=50,Vs=20,Hs=80;try{localStorage.removeItem(Ns)}catch{}function Us(){try{let e=localStorage.getItem(Ps);return e!==null&&zs.has(e)?e:null}catch{return null}}function Ws(){try{let e=localStorage.getItem(Ls);return e===`true`||e!==`false`&&null}catch{return null}}function Gs(){try{let e=localStorage.getItem(Rs);return e===`true`||e!==`false`&&null}catch{return null}}function Ks(e){if(!Number.isFinite(e))return Bs;let t=Math.round(e*10)/10;return Math.min(Math.max(t,Vs),Hs)}function qs(){try{let e=localStorage.getItem(Is);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Ks(t):null}catch{return null}}function Js(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function Ys(){return Js(Va(Fs))}function Xs(e){return e?Ys()[e]??``:``}var Zs=new Set;function Qs(e){return Zs.add(e),()=>{Zs.delete(e)}}function $s(e){for(let t of Zs)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function ec(e,t){if(I()||!e)return;let n=Ys();t?n[e]=t:delete n[e],Ha(Fs,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),Qa(Fs,n=>{let r=Js(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),$s(e)}async function tc(e,t){await Qa(Fs,n=>{let r=Js(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),uc()}async function nc(e){if(!e||typeof e!=`object`)return[];let t=[];if(await Qa(Fs,n=>{let r=Js(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;uc();for(let e of t)$s(e);return t}async function rc(e,t){return!e||!t?!1:(await nc({[e]:t})).length>0}var ic=dn(),ac=on(ic?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,F=js({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`,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:Gs()??!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:Us()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Ws()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:qs()??Bs,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:sn(ic?.mode??`e2e`,ac),serverModeConfig:ic?.mode??null,serverModeSelection:ac,deepviewScanServer:null,githubNewIssueLabels:ic?.githubNewIssueLabels??``,localMode:!1,managed:ic?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function I(){return F.serverMode===`managed`&&!F.localMode}function oc(e){F.localMode=!!e}function sc(e,t=globalThis.location?.pathname??``){let n=on(e,t);n&&(F.serverModeSelection=`managed`),F.serverModeConfig=e,F.serverMode=sn(e,F.serverModeSelection),F.serverModeSelection!==F.serverMode&&(F.serverModeSelection=null),(n||F.serverMode===`e2e`||an(e))&&oc(!1)}function cc(){return an(F.serverModeConfig)?(F.serverModeSelection=F.serverMode===`managed`?`e2e`:`managed`,F.serverMode=F.serverModeSelection,oc(!1),!0):F.serverMode===`managed`&&(oc(!F.localMode),!0)}function lc(){return F.serverMode===`standalone`&&F.localMode?`local`:F.serverMode===`managed`?F.localMode?`local`:`managed`:F.serverMode}function uc(){I()||F.repoEditing||F.currentFile&&(F.repoUrl=Xs(F.currentFile))}La(()=>{uc()});var dc=`__meta__`,fc=`deepview-reports`,pc=`deepview-bundles`,mc=`deepview.report:`;function hc(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function gc(e,t,n){return hc(e,t,`shared`,n)}function _c(e,t,n){return hc(e,t,`exclusive`,()=>navigator.locks.request(ro,{mode:`shared`},n))}var vc=!1;async function yc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!vc&&(vc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function bc(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 xc(e,t){if(!Oa(e))return e;if(!wo())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Ho(e,t)}function Sc(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 Cc(e,t){Lc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(ro,{mode:`exclusive`},async()=>{if(Lc(e)!==t)return;L(e),Fc(e);let n=await Ec();if(n)try{await n.removeEntry(e)}catch{}Oc(e),L(e),Bc(e,`delete`)}))}async function wc(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function Tc(e,t,n,r,i=()=>{}){if(yo()&&!wo())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=wo(),o=a?await t(e,n):e;if(wo()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Ec(){return yc(fc,{create:!0,warnOnce:!0})}function Dc(e){try{return localStorage.getItem(mc+e)}catch{return null}}function Oc(e){try{localStorage.removeItem(mc+e)}catch{}}function kc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(mc)&&e.push(n.slice(mc.length))}return e}var Ac=67108864,jc=new Map,Mc=0,Nc=new Map;function Pc(e,t){if(Fc(e),!(t.length>Ac)){jc.set(e,t),Mc+=t.length;for(let e of jc.keys()){if(Mc<=Ac)break;Fc(e)}}}function Fc(e){let t=jc.get(e);t!==void 0&&(jc.delete(e),Mc-=t.length)}var Ic=new Map;function L(e){Ic.set(e,(Ic.get(e)??0)+1)}function Lc(e){return Ic.get(e)??0}var Rc=new Set;function zc(e){return Rc.add(e),()=>Rc.delete(e)}function Bc(e,t){for(let n of Rc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function Vc(){let e=new Set(kc()),t=await Ec();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Hc(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),_c(`report`,e,async()=>{let n=await Ec();if(n){let r=await Cn(ma(t));r=await Tc(r,Vo,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){Fc(e),L(e);try{await a.abort(t)}catch{}throw await wc(n,i,e),t}Pc(e,t),L(e),Oc(e),Bc(e,`save`);return}let r=ma(t);r=await Cn(r),r=await Tc(r,Vo,e,`"${e}"`,()=>L(e));let i=r.toBase64();try{localStorage.setItem(mc+e,i),Pc(e,t),L(e),Bc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Uc(e,t){let n=Dc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return ga(await wn(r))}async function Wc(e,{keep:t=!0}={}){let n=jc.get(e);if(n!==void 0)return t&&(jc.delete(e),jc.set(e,n)),n;let r=Nc.get(e);if(r)return t&&(r.keep=!0),r.promise;let i=Lc(e),a=(async()=>{let t=await Ec();if(t){let n;try{n=await t.getFileHandle(e)}catch(t){if(t instanceof DOMException&&t.name===`NotFoundError`){let t=await Uc(e,i);if(t!==null)return Hc(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 xc(a,e),Sc(a))throw await Cc(e,i),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await wn(a);return ga(e)}let o=ga(a);return Hc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let n=await Uc(e,i);if(n===null)throw Error(`File not found: ${e}`);return n})(),o={promise:a,keep:t};Nc.set(e,o);try{let t=await a;return o.keep&&Lc(e)===i&&Pc(e,t),t}finally{Nc.delete(e)}}async function Gc(e){let t=Lc(e),n=await Ec(),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=Dc(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=Dc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return r}async function Kc(e){let t=await Gc(e),n=t[0]===31&&t[1]===139?await wn(t):t;return ga(n)}async function qc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(Sc(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return L(e),Fc(e),_c(`report`,e,async()=>{let n=await Tc(t,Vo,e,`"${e}"`,()=>L(e)),r=await Ec();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 wc(r,t,e),n}L(e),Oc(e),Bc(e,`save`);return}try{localStorage.setItem(mc+e,n.toBase64()),L(e),Bc(e,`save`)}catch(t){throw L(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Jc(e){return L(e),Fc(e),Nc.delete(e),_c(`report`,e,async()=>{let t=await Ec();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw L(e),t}Oc(e),L(e),Bc(e,`delete`);return}localStorage.removeItem(mc+e),L(e),Bc(e,`delete`)})}var Yc=`_meta.json`,Xc=`.index-v1`,Zc=new Set;function Qc(e){return Zc.add(e),()=>Zc.delete(e)}function $c(e,t){for(let n of Zc)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function el(){return yc(pc,{create:!0})}function tl(e){return e.replaceAll(`/`,`_`)}async function nl(e){let t;try{let n=await(await e.getFileHandle(Yc)).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(Oa(t)){if(!wo())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Wo(t,dc)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(ga(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function rl(e,t){let n=ma(JSON.stringify(t));n=await Tc(n,Uo,dc,`bundle metadata`);try{await e.removeEntry(Yc)}catch{}await bc(await e.getFileHandle(Yc,{create:!0}),n)}var il=`${pc}/${Yc}`;function al(e){return navigator.locks.request(il,e)}async function ol(){let e=await el();return e?[...await navigator.locks.request(il,{mode:`shared`},()=>nl(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function sl(){return ll(()=>!0)}function cl(){return ll((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function ll(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await yc(pc,{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 ul(e,t){let n=await el();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:ma(t),i=await Sn(r),a=tl(i),o=e.toLowerCase().endsWith(`.map`)?await Cn(r):r;return _c(`bundle`,i,async()=>{o=await Tc(o,Uo,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await bc(await n.getFileHandle(a,{create:!0}),o);try{await al(async()=>{let t=await nl(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await rl(n,t)})}catch(e){try{await n.removeEntry(a),$c(i,`delete`)}catch{}throw e}return $c(i,`save`),{integrity:i,name:e}})}async function dl(e){let t=await el();if(t)return _c(`bundle`,e,async()=>{try{await t.removeEntry(tl(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}$c(e,`delete`);try{await al(async()=>{try{await t.removeEntry(tl(e)+Xc)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await nl(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await rl(t,r)})}finally{$c(e,`delete`)}})}async function fl(e){let t=await el();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(tl(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Oa(r)){if(!wo())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Wo(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await wn(r):r}async function pl(e){let t=await el();if(!t||yo()&&!wo())return null;try{let n=await t.getFileHandle(tl(e)+Xc),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Oa(r)&&(r=await Wo(r,e+Xc)),JSON.parse(ga(await wn(r)))}catch{return null}}async function ml(e,t){let n=await Cn(ma(JSON.stringify(t)));return navigator.locks.request(ro,{mode:`shared`},()=>al(async()=>{let t=await el();if(!t)return;await t.getFileHandle(tl(e));let r=e+Xc,i=await Tc(n,Uo,r,`bundle index`);await bc(await t.getFileHandle(tl(r),{create:!0}),i)}))}async function hl(e,t){let n=await Ec();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;Fc(e),Nc.delete(e),L(e);let o=await n.getFileHandle(e,{create:!0});try{await bc(o,a)}catch(t){throw await wc(n,o,e),t}L(e);return}}let r=Dc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(Fc(e),Nc.delete(e),L(e),localStorage.setItem(mc+e,i.toBase64()),L(e))}function gl(e,t){return e.seal?n=>Oa(n)?null:e.seal(n,t):n=>Oa(n)?e.open(n,t):null}async function _l(e){let t=await Vc();for(let n of t)try{await hl(n,gl(e,Eo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var vl=({seal:e})=>_l({seal:e}),yl=({open:e})=>_l({open:e});async function bl(){let e=await el();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function xl(e){return e===Yc?dc:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function Sl(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await bc(await e.getFileHandle(t,{create:!0}),i)}async function Cl(e){let{dir:t,keys:n}=await bl();if(t)for(let r of n){let n=xl(r);if(n!==null)try{await Sl(t,r,gl(e,Do(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var wl=({seal:e})=>Cl({seal:e}),Tl=({open:e})=>Cl({open:e});ko(()=>{El(),Nc.clear()});function El(){jc.clear(),Mc=0}var Dl=`deepview/workspace-id/v1
|
|
2
|
-
`;async function Ol(e){let t=Uint8Array.fromBase64(e),n=ma(Dl),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 kl(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 Al=kl(`create`),jl=kl(`delete`),Ml=kl(`privateKey`),Nl=kl(`report-membership`),Pl=kl(`bundle-membership`);Al.on;var Fl=jl.on,Il=Ml.on,Ll=Nl.on,Rl=Pl.on,zl=Al.fire,Bl=jl.fire,Vl=Ml.fire,Hl=Nl.fire,Ul=Pl.fire,Wl=`deepview.workspaces`,Gl=1;function Kl(){try{let e=Va(Wl);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 ql(e){await Ha(Wl,JSON.stringify({version:Gl,workspaces:e}))}var Jl=Wl;function Yl(e){return navigator.locks.request(Jl,async()=>{await Ga();let t=Kl(),n=await e(t);if(n!==!1)return await ql(t),n})}function Xl(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var Zl=Kl().map(Xl);function Ql(){Zl=Kl().map(Xl)}function $l(e){Zl=Zl.filter(t=>t.id!==e.id),Zl.push(Xl(e))}function eu(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=Zl.find(t=>t.id===e.id);if(r){r[t]=n;return}Zl.push(Xl(e))}function tu(e){Zl=Zl.filter(t=>t.id!==e)}function R(){let e=Kl();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var nu=200;function ru(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,nu)||null}async function iu(e){let t=ru(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Ol(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await Yl(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?($l(i),i):null}async function au(e){await Yl(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Bl(e),tu(e))}async function ou(e,t){let n=ru(t);return!(!n||!await Yl(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function su(e){let{next:t}=await Yl(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=ru(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=Zl.find(e=>e.id===t.id)??null;return n==null?zl(t.id):(n.privateKey!==t.privateKey&&Vl(t.id),lu(n.reports,t.reports)||Hl(t.id),lu(n.bundles,t.bundles)||Ul(t.id)),$l(t),t}async function cu({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await Yl(a=>{let o=ru(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=>ru(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`&&(zl(i.workspace.id),$l(i.workspace)),i}function lu(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 uu({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await Yl(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&&eu(t,n)}}function du(e,t){return{move:(n,r)=>uu({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>uu({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>uu({identifier:n,field:e,fire:t,from:r})}}var fu=du(`reports`,Hl),pu=du(`bundles`,Ul),mu=fu.move,hu=fu.add,gu=fu.remove,_u=pu.move,vu=pu.add,yu=pu.remove;function bu(){let e=Kl().map(Xl),t=new Map(Zl.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Bl(e);for(let[e,r]of n){let n=t.get(e);if(!n){zl(e);continue}n.privateKey!==r.privateKey&&Vl(e),lu(n.reports,r.reports)||Hl(e),lu(n.bundles,r.bundles)||Ul(e)}Zl=e}La(()=>{bu()});function xu(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 Su(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 Cu=null;function wu(){Cu=null}function Tu(){return I()&&Cu?.teamId===F.currentManagedTeam&&Cu?.userId===F.managedSession?.id&&Cu?.role===F.managedSession?.role?Cu:null}function Eu(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=bi(t)??[],c=Rr([{groups:[s.flat().filter(e=>e&&typeof e==`object`)],tree:t.tree}]);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 hi(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Ii(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 Su(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(l)}}Cu={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 Du(e){let t=Tu();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Ou(e){let t=Tu();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function ku(e){for(let t of Du([e])){let n=Bi(t.members.find(t=>t.id===e));if(n)return n}return``}var Au=`deepview.fileCounts`,ju=4,Mu=new Set([3,ju]),Nu=null;function Pu(){if(Nu)return Nu;let e;try{e=JSON.parse(Va(Au)||`{}`)}catch{e={}}return Mu.has(e?.__v)?e.__v=ju:e={__v:ju},Nu=e,Nu}function Fu(){Ha(Au,JSON.stringify(Nu)).catch(e=>console.warn(`counts persist:`,e))}function Iu(e){if(e===`__v`)return;let t=Pu()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function Lu(e){return Iu(e)?.count}function Ru(e){return Iu(e)?.source}function zu(e,t,n){let r=Pu();r[e]={count:t,source:n??null},Fu()}function Bu(e){let t=Pu();delete t[e],Fu()}function Vu(e){let t=f(e);return t?{count:p(t.groups),source:d,recognized:!0}:Ci(e)}var Hu=null,Uu=null,Wu=null;function Gu(e,t){for(let{names:n,onUpdate:r}of Wu)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Ku(e,t){if(Hu){t&&Wu.push({names:new Set(e),onUpdate:t});for(let t of e)Uu.add(t);return Hu}return Uu=new Set(e),Wu=t?[{names:new Set(e),onUpdate:t}]:[],Hu=(async()=>{await Promise.resolve();try{let e=Pu();for(;Uu.size>0;){let t=Uu.values().next().value;if(Uu.delete(t),e[t]===void 0)try{let n=await Wc(t,{keep:!1});if(e[t]!==void 0)continue;let{count:r,source:i}=Vu(n);e[t]=i?{count:r,source:i}:{count:r},Fu(),Gu(t,r)}catch{}}}finally{Hu=null,Uu=null,Wu=null}})(),Hu}var qu=new Map,Ju=new Map,Yu=new Map,Xu=new Set,Zu=null,Qu=null,$u=0,ed=!1,td=!1;function nd(){return I()||td}function rd(e){return Xu.add(e),()=>Xu.delete(e)}function id(){for(let e of Xu)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function ad(){let e=new Map;for(let t of qu.values())t&&m(t.groups,e);Ju=e}function od(){if(I())return Tu()?.links??[];let e=[];for(let[t,n]of qu)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function sd(){return I()?!!Tu()?.duplicates.size:Ju.size>0}function cd(e){if(I())return[...Tu()?.duplicates.get(e)??[]];let t=Ju.get(e);return t?[...t]:[]}async function ld(e){if(qu.has(e))return!1;let t=Yu.get(e)??0,n;try{n=await Wc(e,{keep:!1})}catch{return!1}if(n==null)return!1;if((Yu.get(e)??0)!==t)return ed=!0,!1;let r=f(n);if(qu.set(e,r),r&&Ru(e)!==d)zu(e,p(r.groups),d);else if(!r&&Ru(e)===d){let{count:t,source:r}=Vu(n);zu(e,t,r)}return r!==null}function ud(){return I()?Promise.resolve():Qu||(Qu=(async()=>{try{let e,t;do{t=$u,e=await Vc(),td&&e.some(e=>!qu.has(e))&&(td=!1,id());let n=e.filter(e=>Ru(e)===d);(await Promise.all(n.map(e=>ld(e)))).some(Boolean)&&(ad(),id())}while(t!==$u);return e}catch(e){throw td&&(td=!1,id()),e}finally{Qu=null}})(),Qu)}function dd(){return I()?Promise.resolve():Zu||(Zu=(async()=>{try{do{ed=!1;let e=await ud(),t=!1;for(let n of e)await ld(n)&&(t=!0);let n=!ed&&e.every(e=>qu.has(e)),r=td!==n;td=n,t&&ad(),(t||r)&&id()}while(ed)}catch(e){throw td&&(td=!1,id()),e}finally{Zu=null}})(),Zu)}zc(e=>{let t=td;td=!1,$u++,Yu.set(e,(Yu.get(e)??0)+1),ed=!0;let n=qu.get(e)!=null;qu.delete(e),n&&ad(),(n||t)&&id()});var fd=()=>{};function pd(e){fd=typeof e==`function`?e:()=>{}}var md=()=>{};function hd(e){md=typeof e==`function`?e:()=>{}}var gd=()=>{};function _d(e){gd=typeof e==`function`?e:()=>{}}var vd=`deepview.triage`,yd=`deepview.triage.pending`,bd=/^\d+$/u;async function xd(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Sd(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var Cd=`deepview.triage.save`,wd=0;function Td(){return!I()&&c(F.triage,F.reports)}function Ed(){Td();let e={};for(let[t,n]of F.triage){if(bd.test(t))continue;let r=yn(n);r&&(e[t]=r)}return e}function Dd(){if(I())return md(),Promise.resolve();let e=++wd,t=Ed(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(yd,r)}catch{}return navigator.locks.request(ro,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await xd(ma(r));i=wo(),t=(i?await zo(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),fd();return}await navigator.locks.request(Cd,()=>{try{if(e!==wd)return;if(r!=null&&wo()!==i){queueMicrotask(()=>{Dd()});return}if(n)localStorage.removeItem(vd),localStorage.removeItem(yd);else{localStorage.setItem(vd,t);try{localStorage.removeItem(yd)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),fd()})}async function Od(){let e=localStorage.getItem(yd);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(vd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Oa(n)){if(!wo())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Bo(n)}let r=await Sd(n);return JSON.parse(ga(r))}function kd(e,{replace:t=!1}={}){let n=F.triage;if(t){let t=null,r=localStorage.getItem(yd);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(bd.test(r))continue;let a=e?.[r],o=!e||!(r in e);!(i(r)&&t[r]?.color)&&(o||!a?.color)&&S(n,r,{color:void 0}),!(i(r)&&(t[r]?.triage||t[r]?.deleted))&&!hn(a)&&S(n,r,{triage:void 0}),!(i(r)&&t[r]?.comment)&&(o||typeof a?.comment!=`string`||!a.comment)&&S(n,r,{comment:void 0}),!(i(r)&&t[r]?.fix)&&(o||typeof a?.fix!=`string`||!a.fix)&&S(n,r,{fix:void 0}),!(i(r)&&t[r]?.flagged!==void 0)&&(o||a?.flagged===void 0)&&S(n,r,{flagged:void 0})}for(let r of[...n.keys()]){if(bd.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!gn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){xn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&xn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=hn(r),i={};if(r&&r.color&&(i.color=r.color),e&&(i.triage=e),r&&typeof r.comment==`string`&&r.comment&&(i.comment=r.comment),r&&typeof r.fix==`string`&&r.fix&&(i.fix=r.fix),r&&typeof r.flagged==`boolean`&&(i.flagged=r.flagged),Object.keys(i).length>0&&S(n,t,i),gn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&xn(n,t,e,!0,vn(r,e))}}async function Ad(){if(I())return!1;if(![...F.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await l(Object.fromEntries(F.triage),e=>gc(`report`,e,()=>Kc(e)));if(!I())return c(F.triage,e)}async function jd(){if(!I())try{let e=await Od();if(I())return;kd(e),await Ad()&&await Dd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Md(){if(!I())try{let e=await Od();if(I())return;kd(e,{replace:!0}),await Ad()&&await Dd(),gd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==vd&&e.key!==yd||Md()});var Nd;function Pd(){return I()?Promise.resolve():Nd??=jd()}ko(()=>{Md()}),ko(()=>{I()||wo()&&localStorage.getItem(yd)&&Dd()});async function Fd({seal:e}){try{localStorage.removeItem(yd)}catch{}let t=localStorage.getItem(vd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Oa(n))return;let r=await e(n,To());localStorage.setItem(vd,r.toBase64())}async function Id({open:e}){try{localStorage.removeItem(yd)}catch{}let t=localStorage.getItem(vd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Oa(n))return;let r=await e(n,To());localStorage.setItem(vd,r.toBase64())}function Ld(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Rd(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 zd({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 Ol(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await h(ma(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Bd({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 Vd(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function Vd(e){let t=JSON.parse(ga(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 Ol(t.k),name:t.n,privateKeyBase64:t.k}}function Hd(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function Ud(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 Wd=new Map,Gd=new Map,Kd=new Map;function qd(e){return I()?[...new Set(Du([e]).map(e=>e.report))]:[...Wd.get(e)?.reports.keys()??[]]}function Jd(e){if(I())return ku(e);for(let{title:t}of Wd.get(e)?.reports.values()??[])if(t)return t;return``}function Yd(e){if(I())return Du(e);let t=new Set;for(let n of e)for(let e of Wd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function Xd(e){if(I())return Ou(e);let t=new Set;for(let n of e)for(let e of Gd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function Zd(e){return Kd.has(e)||Kd.set(e,{ids:new Set,inputs:new Set}),Kd.get(e)}function Qd(e,t){let n=!1;for(let r of t.members){let i=Wd.get(r.id);i||Wd.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:Bi(r),rows:new Set([t])}),Zd(e).ids.add(r.id),n=!0}for(let[,...n]of Su(t.members))for(let r of n){Gd.has(r)||Gd.set(r,new Map);let n=Gd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),Zd(e).inputs.add(r)}return n}function $d(e){let t=Kd.get(e);if(Kd.delete(e),!t)return!1;for(let n of t.ids){let t=Wd.get(n);t?.reports.delete(e),t?.reports.size===0&&Wd.delete(n)}for(let n of t.inputs){let t=Gd.get(n);t?.delete(e),t?.size===0&&Gd.delete(n)}return!0}var ef=`solidity-bundle`,tf=`0.0.0`;function nf(e){if(e?.name!==ef)return!1;let t=e.version;return!t||t===tf}function rf(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!nf(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 af(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function of(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 sf(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 cf(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function lf(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=af(),e.byVersion.set(t,a)),of(a,r,i,n)}function uf(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&&sf(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}cf(o)}function df(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=ff(e,`-`),[i,a=``]=ff(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 ff(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var pf=new Map,mf=new Map,hf=new Map,gf=new Map;function _f(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!nf(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 vf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function yf(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 bf=new Set,xf=new Set,Sf=null,Cf=!1;function wf(e){return xf.add(e),()=>xf.delete(e)}function Tf(){for(let e of xf)try{e()}catch{}}function Ef(e){return pf.get(e)?.list??[]}function Df(){let e=0;for(let t of pf.values())e+=t.list.length;return e}function Of(){return mf}function kf(){return hf}function Af(e,t){let n=pf.get(e);if(!n)return[];let r=n.reports.get(Nf(t));return r?[...r]:[]}function jf(e,t){let n=mf.get(e);if(!n)return[];let r=n._keyReports.get(Nf(t));return r?[...r]:[]}function Mf(e,t){let n=hf.get(e);if(!n)return[];let r=n._keyReports.get(Nf(t));return r?[...r]:[]}function Nf(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,o(e)])}function Pf(e,t,n){let r=gf.get(e);r||(r={hash:[],pkg:[],repo:[]},gf.set(e,r)),r[t].push(n)}function Ff(e,t,n){let r=pf.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},pf.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&&Pf(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function If(e,t,n){let r=_f(e);if(!r)return!1;let i=rf(e),a=mf.get(r);if(a||(a={...af(),repos:new Set,byVersion:new Map,_repoReports:new Map},mf.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)}lf(a,i,e,t,n);let o=of(a,t,n,e);return Pf(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function Lf(e,t,n,r){if(vf(e))return!1;let i=yf(e,r);if(!i)return!1;let a=hf.get(i);a||(a=af(),hf.set(i,a));let o=of(a,t,n,e);return o&&Pf(n,`repo`,{repo:i,key:t,file:e.file}),o}function Rf(e){let t=gf.get(e);gf.delete(e),bf.delete(e);let n=$d(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=pf.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=>Nf(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&pf.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=mf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&sf(t,a,o,Nf),uf(t,s,a,o,e,Nf),!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?mf.delete(n):cf(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=hf.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&sf(t,i,a,Nf),t._keyReports.size===0?hf.delete(n):cf(t))}return r}async function zf(e){if(bf.has(e))return!1;bf.add(e);try{let t=await Wc(e,{keep:!1}),n=await Ti(t);if(!n)return!1;let{data:r,findings:i}=n;if(i.length===0)return!1;a(i,r),yi(bi(r).map(e=>Array.isArray(e)?e:[e]),{source:r.source});let o=gi(r)??``;if(!o)try{o=Xs(e)}catch{}let s=!1;for(let t of i){let n=Nf(t);t.fileHash&&Ff(t,n,e)&&(s=!0),t.file&&If(t,n,e)&&(s=!0),t.file&&Lf(t,n,e,o)&&(s=!0)}for(let[t,n]of bi(r).entries()){let i=(Array.isArray(n)?n:[n]).filter(e=>e?.id);i.length!==0&&Qd(e,{report:e,index:t,members:i.map(e=>{let t=e.source??r.source??null;return{id:e.id,title:Bi(e),source:t,revalidate:Fi(e),isApp:e.isApp??Ii(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return bf.has(e)?s:(Rf(e),Cf=!0,!1)}catch{return bf.delete(e),!1}}function Bf(){return I()?Promise.resolve():Sf||(Sf=(async()=>{try{do{Cf=!1;let e=await Vc();for(let t of e)await zf(t)&&Tf()}while(Cf)}finally{Sf=null}})(),Sf)}function Vf(){return Sf}zc(e=>{Rf(e)&&Tf()}),Qs(e=>{Rf(e)&&Tf(),Bf().catch(()=>{})});var Hf=new Map,Uf=new Map,Wf=new Map,Gf=new Set;function Kf(e){return Gf.add(e),()=>Gf.delete(e)}function qf(){for(let e of Gf)try{e()}catch{}}function Jf(e,t){if(!e||!t)return!1;let n=!Uf.has(e);Uf.set(e,t),Wf.delete(e);for(let[n,r]of t){if(!r)continue;let t=Hf.get(r);t||(t=new Map,Hf.set(r,t)),t.set(e,n)}return n&&qf(),n}function Yf(e){let t=Uf.get(e);if(Uf.delete(e),Wf.delete(e),t){for(let n of t.values()){let t=Hf.get(n);t&&(t.delete(e),t.size===0&&Hf.delete(n))}qf()}}function Xf(e,t){let n=Uf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=Qf(e,n).get(Zf(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 Zf(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function Qf(e,t){let n=Wf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=Zf(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Wf.set(e,n),n}function $f(e){if(!e)return[];let t=Hf.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function ep(e){return Uf.has(e)}async function tp(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 np(e){if(!e)return null;let t=await Vc(),n=(await Promise.all(t.map(e=>zr(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function rp(e,t){let n;try{n=await Wc(e)}catch{return!1}return n==null?!1:(await Ti(n))?.findings.some(e=>e.id===t)??!1}async function ip(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await Vc()).filter(e=>!n.has(e));for(let t of r)if(await rp(t,e))return t;return null}function ap(e){return e?R().filter(t=>t.reports.includes(e)):[]}function op(e){if(!e)return``;for(let t of e.split(`
|
|
3
|
-
`))if(t.trim())return t.trim();return``}function sp(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:op(e.description)}),n.size===t.size))return n}return n}var cp=`deepview.lastFile`,lp=null;function up(){return lp||(lp=dp(),lp.catch(()=>{lp=null})),lp}async function dp(){try{await Pd()}catch{}let e=await Vc(),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 Wc(n),await Hc(e,i),await Jc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Lu(n);if(Bu(n),a===void 0){let{count:t,source:n}=Vu(i);zu(e,t,n)}else{let{source:t}=Vu(i);zu(e,a,t)}let o=Xs(n);o&&(ec(n,``),ec(e,o));let s=!1;for(let[t,r]of[...F.triage])r.ignoredReports?.includes(n)&&(xn(F.triage,t,n,!1),xn(F.triage,t,e,!0,vn(r,n)),s=!0);s&&await Dd();let c=Rd(Va(cp));if(c?.name===n)try{await Ha(cp,Ld(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 gu(t,e.id),await hu(i,e.id)}}function fp(){return{...pp,hydrateKey:Ka,localContentSyncStatus:pn,readTriageBlob:async()=>(await u(await Od(),e=>gc(`report`,e,()=>Kc(e)))).entries,reportSyncHash:e=>gc(`report`,e,async()=>mn(await Gc(e)))}}var pp={hasStoredBundleBytes:cl,listBundles:ol,listFiles:Vc,onBundleMutated:Qc,onFileMutated:zc,readBundle:fl,readFile:Kc,withStoredItem:gc,isEncryptionEnabled:yo,isUnlocked:bo,onVaultStateChange:ko,unlockEncryption:jo};function mp(e=pp){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 hp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function gp(){if(!hp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function _p(){let e={supported:hp(),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 vp=`deepview.scan.access`,yp=new Set;function bp(){for(let e of yp)e()}function xp(){return Va(vp)!=null}function Sp(e){try{let t=JSON.parse(Va(vp)),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 Cp({server:e,deepview:t,provider:n,token:r}){await Ha(vp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),bp()}async function wp(){await Ua(vp),bp()}function Tp(e){yp.add(e);let t=La(e);return()=>{yp.delete(e),t()}}var Ep=1;function Dp(){let e=Ed(),t=Ys();return{version:Ep,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Op(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function kp(){let e=Dp();return{blob:new Blob([await Tn(JSON.stringify(e))]),filename:Op()}}async function Ap(e){let t;try{t=await En(new Uint8Array(await e.arrayBuffer()))}catch(e){throw Error(`Failed to gunzip: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON: ${e.message}`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Invalid backup file (not an object)`);if(n.version!==Ep)throw Error(`Unsupported backup version: ${n.version} (expected ${Ep})`);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 jp(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()])bd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(bd.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&S(r,e,{color:t.color});let n=hn(t);if(n&&(!i||!hn(r.get(e)))&&S(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&S(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&S(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&S(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&gn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&xn(r,e,n,!0,vn(t,n))}await Ad(),await Dd();let a=0,o=null;try{await tc(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 Mp(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Np(e){let t=new Set;for(let n of e){let e;try{e=await Wc(n)}catch(e){if(Mp(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Ti(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Pp(){let e=new Set;for(let t of F.triage.keys())bd.test(t)||e.add(t);return e}async function Fp(e){let t=Pp();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Np(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 Vc(),a=new Set(e),o=await Np(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 Ip(){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 Vc(),r=new Set(n),i=await Np(n),a=!1;for(let t of e){if(bd.test(t)||i.has(t))continue;let e=F.triage.get(t);!e||!(e.color||hn(e)||e.comment||e.fix||e.flagged!==void 0)||S(F.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)bd.test(e)||i.has(e)&&r.has(n)||_n(F.triage,e,n)&&xn(F.triage,e,n,!1)&&(a=!0);a&&await Dd()}var Lp=1;async function Rp(e){let t=new Set,n=await Ti(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function zp(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Bp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await ol(),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 fl(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 Vp(e){let t=Xs(e);return t?{github:t}:null}async function Hp(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Wc(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 mu(n,null);continue}let r=Vp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Up(e,{includeBundleBytes:t=!1}={}){let n=await Hp(e),r=new Set;for(let e of n)for(let t of await Rp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of F.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=yn({...t,ignoredReports:n});o&&(a[e]=o)}let o={};for(let e of n)e.repo?.github&&(o[e.name]=e.repo.github);let s=(e.bundles??[]).filter(e=>typeof e==`string`&&e.length>0),c={version:Lp,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 Bp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Wp(e,{includeBundleBytes:t=!1}={}){let n=await Up(e,{includeBundleBytes:t});return{blob:new Blob([await Tn(JSON.stringify(n))]),filename:`${zp(e.name)}.deepview-workspace.json.gz`}}async function Gp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Wp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await v(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${zp(e.name)}.deepview-workspace.enc`}}async function Kp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await Gp(e,t,{includeBundleBytes:n}):await Wp(e,{includeBundleBytes:n})}async function qp(e){return{reports:await Hp(e)}}async function Jp(e){let t=await qp(e);return{blob:new Blob([await Tn(JSON.stringify(t))]),filename:`${zp(e.name)}.deepview-reports.json.gz`}}function Yp(e){return hn(e)??null}async function Xp(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Ti(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:op(n.description)})}return t}async function Zp(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=F.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&S(r,t,{color:a});let o=r.get(t)?.comment??``,s=typeof n.comment==`string`?n.comment:``;s&&o&&o!==s?i.push({id:t,property:`comment`,local:o,imported:s}):s&&s!==o&&S(r,t,{comment:s});let c=r.get(t)?.fix??``,l=typeof n.fix==`string`?n.fix:``;l&&c&&c!==l?i.push({id:t,property:`fix`,local:c,imported:l}):l&&l!==c&&S(r,t,{fix:l});let u=Yp(n),d=hn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&S(r,t,{triage:u,...u===`ignored`?{}:{ignoredReports:void 0}});let f=r.get(t)?.flagged,p=typeof n.flagged==`boolean`?n.flagged:void 0;p!==void 0&&f!==void 0&&f!==p?i.push({id:t,property:`flagged`,local:f?`flagged`:`not flagged`,imported:p?`flagged`:`not flagged`}):p!==void 0&&p!==f&&S(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(gn(r.get(t)))for(let e of m)typeof e==`string`&&xn(r,t,e,!0,vn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&Qp(i,e)}await Dd()}function Qp(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&$p(n.id,n.property)===n.local&&(n.property===`color`?S(F.triage,n.id,{color:n.imported}):n.property===`comment`?S(F.triage,n.id,{comment:n.imported}):n.property===`fix`?S(F.triage,n.id,{fix:n.imported}):n.property===`triage`?S(F.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&S(F.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function $p(e,t){if(t===`color`)return F.triage.get(e)?.color;if(t===`triage`)return hn(F.triage.get(e))??null;if(t===`comment`)return F.triage.get(e)?.comment??``;if(t===`fix`)return F.triage.get(e)?.fix??``;if(t===`flagged`){let t=F.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function em(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 ul(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 tm(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Hc(t.name,t.content);let{count:e,source:r}=Vu(t.content);zu(t.name,e,r??Ru(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 em(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await Xp(e.reports):new Map;await Zp((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 su({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 nc(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function nm(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 rm(e){return nm(e)===null}async function im(e){if(_(e))return{kind:`encrypted`};let t;try{t=await En(e)}catch(e){throw Error(`gzip decompression failed: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch{return{kind:`workspace`,text:t}}return rm(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var am=`deepview.workspaceApp`,om=2,sm=new Set,cm=new Set,lm=0,um=0,dm=0,fm=new Map,pm=Promise.resolve(),mm=null;function hm(e=Va(am)){try{let t=JSON.parse(e);if(t?.version===om&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:om,revision:``,links:`[]`,entries:{}}}function gm(){for(let e of sm)e()}function _m(e){let t=pm.then(()=>Qa(am,t=>e(hm(t))));return pm=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function vm(e){return JSON.stringify(e.reports.toSorted())}function ym(){return JSON.stringify(od().map(({name:e,groups:t})=>({name:e,groups:t})))}function bm(e){return nd()&&e.links===ym()}function xm(e,t){return e.workspaceRevisions?.[t]??``}function Sm(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(fm.get(t?.id)??0)&&n.workspaceRevision===xm(e,t?.id)}function Cm(e,t,n){return n.reportEpoch===dm&&n.reportRevision===(e.reportRevision??e.revision)&&Sm(e,t,n)}function wm(e,t){return Cm(hm(),e,t)}function Tm(e,t){if(lm||cm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==vm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function Em(e){return Tm(e,hm())?.appMode??null}function Dm(e){let t=hm(),n=Tm(e,t);return!n||!bm(t)?null:n}async function Om(e,t=null){let n;do n=pm,await n;while(n!==pm);let r=hm(),i=r.reportRevision??r.revision;return t&&(!Cm(r,e,t)||!bm(r))?null:{epoch:um,revision:r.revision,reportEpoch:dm,reportRevision:i,workspaceId:e?.id,workspaceEpoch:fm.get(e?.id)??0,workspaceRevision:xm(r,e?.id)}}async function km(e,t,n){let r=!1;return await _m(i=>{if(n.epoch!==um||n.revision!==i.revision||!Sm(i,e,n)||!bm(i))return;let a=R().find(t=>t.id===e.id);if(a&&vm(a)===vm(e))return i.entries[e.id]={...t,reports:vm(e)},r=!0,JSON.stringify(i)}),r&&gm(),r}function Am(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)um++,t===void 0&&dm++,lm++;else for(let t of e)fm.set(t,(fm.get(t)??0)+1),cm.add(t);return gm(),_m(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)lm--;else for(let t of e)cm.delete(t);gm()})}function jm(e){return sm.add(e),()=>sm.delete(e)}La(()=>{let e=Va(am);e!==mm&&(mm=e,gm())}),Ll(e=>{Am([e]).catch(()=>{})}),Fl(e=>{Am([e]).catch(()=>{})}),zc(e=>{Am(R().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),rd(()=>{if(!nd()){gm();return}let e=ym();hm().links===e?gm():Am(null,e).catch(()=>{})});var Mm=null,Nm=null;function Pm(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function Fm(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Im(){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 Lm=`./brotli-fallback.js`,Rm=Symbol(`brotli worker unavailable`),zm=null,Bm=!1,Vm=0,Hm=new Map;function Um(){return Nm||(Nm=(async()=>await import(Lm))(),Nm)}function Wm(){Bm=!0,zm&&=(zm.terminate(),null);let e=[...Hm.values()];Hm.clear();for(let t of e)t.resolve(Rm)}function Gm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Hm.get(t);i&&(Hm.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Km(){if(zm)return zm;if(Bm||typeof Worker>`u`)return null;try{zm=new Worker(nr(new URL(Lm,import.meta.url)),{type:`module`})}catch{return Bm=!0,null}return zm.addEventListener(`message`,Gm),zm.addEventListener(`error`,Wm),zm.addEventListener(`messageerror`,Wm),zm}function qm(e){let t=Km();return t?new Promise((n,r)=>{let i=++Vm;Hm.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Hm.delete(i),Wm(),n(Rm)}}):Promise.resolve(Rm)}async function Jm(){await Im();let e=Pm();return e?{kind:`native`,format:e}:{kind:`fallback`}}function Ym(){return Mm||(Mm=Jm(),Mm)}async function Xm(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await Ym();if(n(),r.kind===`native`)return Fm(r.format,e);let i=await qm(e);return n(),i===Rm?(await Um()).brotliDecompress(e):i}Ym().catch(()=>{});var Zm=document.querySelector(`#drop-zone`),z=document.querySelector(`#report`),Qm=document.querySelector(`app-sidebar`);function $m(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 eh(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var th={get state(){return F},listWorkspaces:R,addReportToWorkspace:hu,addBundleToWorkspace:vu,onReportMembershipChanged:Ll,onBundleMembershipChanged:Rl,onWorkspaceDeleted:Fl,onWorkspacePrivateKeyChanged:Il,analyzeContent:Vu,setCount:zu,gunzipBytes:wn,listBundles:ol,listFiles:Vc,readBundle:fl,readFileBytes:Gc,saveBundle:ul,saveFileBytes:qc,onFileMutated:zc,async saveTriage(){return await Ad(),Dd()},getSecureItem:Va,setSecureItem:Ha,removeSecureItem:Ua,onSecureStorageHydrated:La};function nh(e){e.installSyncHost(th),pd(()=>e.triageSync.notify())}var B=null,rh=null;function ih(){try{return Va(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var ah=!1;function oh(e){ah=!!e}function sh(){if(ah||F.serverMode!==`e2e`)return!0;try{return dn()?.mode===`managed`}catch{return!1}}function ch(){return rh||(sh()&&!B?Promise.resolve(null):(rh=(async()=>{try{let e=await import(`./client-sync.js`);return nh(e),B=e,dh(),e}catch(e){throw rh=null,e}})(),rh))}var lh=[];function uh(e){B?e(B):lh.push(e)}function dh(){let e=lh.splice(0);for(let t of e)try{t(B)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function fh(e,t){let n={cancelled:!1,unsub:null};return uh(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function ph(e,t){return B?B.isInRemote(e,t):!1}function mh(e,t){return B?B.isBundleInRemote(e,t):!1}var hh=`deepview.objstore-presence.`;function gh(e){try{let t=localStorage.getItem(hh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function _h(e,t){if(B&&B.isInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function vh(e,t){if(B&&B.isBundleInRemote(e,t))return!0;let n=gh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function yh(e){return B?B.remoteCount(e):0}function bh(e){return B?B.differingReports(e):[]}function xh(e){return fh(e,(e,t)=>e.onAutoDownloaded(t))}function Sh(e){return fh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function Ch(e){return fh(e,(e,t)=>e.onChange(t))}var wh=null,Th=null,Eh=null,Dh=[];function Oh(e){if(B){B.setRedraw(e);return}wh=e,uh(t=>{wh===e&&t.setRedraw(e)})}function kh(e){if(B){B.setAuthenticationResolver(e);return}Th=e,uh(t=>{Th===e&&t.setAuthenticationResolver(e)})}function Ah(e){if(B){B.setHydrationConflictResolver(e);return}Eh=e,uh(t=>{Eh===e&&t.setHydrationConflictResolver(e)})}async function jh(e,t){if(sh()||!ih()&&!B)return;let n=await ch();if(n&&!sh())return n[e](...t)}function Mh(...e){return jh(`downloadFileFromRemote`,e)}function Nh(...e){return jh(`fetchBundleFromRemote`,e)}function Ph(...e){return jh(`putFile`,e)}function Fh(...e){return jh(`holdLocalChangeChecks`,e)}function Ih(...e){return jh(`putBundleToRemote`,e)}function Lh(...e){return jh(`deleteFromRemote`,e)}function Rh(...e){return jh(`deleteBundleFromRemote`,e)}function zh(...e){return jh(`openWorkspace`,e)}async function Bh(...e){return(B??(rh?await rh:null))?.closeWorkspace(...e)}function Vh(...e){return jh(`recheckRemoteStorage`,e)}function Hh(...e){return jh(`resolveReportDifference`,e)}function Uh(e,t){if(B)return B.triageSync[e](...t);uh(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 sh()?Promise.resolve(null):ch().then(e=>{e.triageSync.setEnabled(!0);let t=Dh;Dh=[];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){Dh=B.openWorkspaceIds();for(let e of Dh)try{B.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}B.triageSync.setEnabled(!1);return}Uh(`setEnabled`,[e])},isEnabled(){return B?B.triageSync.isEnabled():ih()},openSession(e){Uh(`openSession`,[e])},closeSession(e){Uh(`closeSession`,[e])},refreshSession(e){Uh(`refreshSession`,[e])},dismissError(e){Uh(`dismissError`,[e])},setForcedOff(e){Uh(`setForcedOff`,[e])},setProtocolLocked(e){Uh(`setProtocolLocked`,[e])},setServerUrl(e){Uh(`setServerUrl`,[e])},getServerUrl(){return B?B.triageSync.getServerUrl():null},notify(){Uh(`notify`,[])},onStatusChange(e){return fh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return fh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return fh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return fh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Wh=class extends pa{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Ms(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Ms(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 Gh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Kh(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 qh(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!Kh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Jh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function Yh(e){return qh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function Xh(e){let t=Jh(e);if(t)return{...t,kind:`pull`};let n=Yh(e);return n?{...n,kind:`issue`}:null}function Zh(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function Qh(e){return I()&&F.currentManagedTeam&&F.managedSession&&!F.managedSession.publicShare?F.managedIssues.get(e?.id)??null:null}function $h(e){return Qh(e)?.autoFix??``}function eg(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=Yh(e?.url)?{url:e.url,autoFix:Jh(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 tg(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function ng(e,t,n){let r=tg(t);if(!e._revalidationCopies){let t=tg(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 rg(e){let t=new Map,n=new Set(Pi);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Fi(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 ig=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function ag(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||ig.has(r)||i==null)continue;if(r===`revalidate`){let a=Fi(t);if(!a)continue;let o=Fi(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 og(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:ji(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:ji(t),reason:t.correctedSeverityReason});let i=ng(e,t,n);(ag(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function sg(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 cg(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(Fi(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Fi(e)!==`revalidation`).map(ug):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Fi(e))):e:e.filter(e=>Fi(e)!==`revalidation`).map(ug),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(...lg(r,e,t,n))}else m.push(...lg(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))og(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(...lg(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 lg(e,t,n,r){if(n)return[t];if(r){let n=sg(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 sg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function ug(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 dg(e,t=Yd){let n=xu(Su(e.flat()));return{linkedIds:e=>[...cd(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...Xd(e)];for(let e of r)for(let t of Su(e.members))n.add(t);return r}}}var fg=null,pg=0;function mg(){return F.currentView===`links`&&fg?.owner===F.currentLinks?fg:null}function hg(){pg++,fg=null}async function gg(e,t,n,r){if(F.currentView!==`links`||!F.currentLinks)return;let i=js(F.currentLinks),a=++pg;fg={owner:i,id:e,reportName:t,group:null,error:``},F.focusCodeStack=[],F.focusCodeAt=0;let o=()=>a===pg&&F.currentView===`links`&&F.currentLinks===i;try{if(I()){let a=Yd([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.`);fg={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 Ti(await Wc(t));if(!o())return;let s=(bi(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:gi(u)??Xs(t),_repoDirectory:_i(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return hi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n});if(await Promise.all([Pd(),zr(`report`,t),...ap(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));yi([d],dg([d],e=>[...Yd(e),...F.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),fg.group=d,F.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(fg.error=e.message||`Unable to load this finding.`)}}function _g(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function H(e){return e.workspaceKey??T(e[0])}function vg(e){return Array.isArray(e)?e:[e]}function yg(){return F.revalidationDetailed===!0}function bg(e){return e?._reportName??``}var xg=null,Sg=!0;function Cg(){let e=F.reports;return!Array.isArray(e)||e.length===0||(e!==xg&&(xg=e,Sg=Mr(e)),Sg)}function wg(e){return!e.isUpstream||F.showRevalidation===!1||F.upstreamOnly===!0||!Cg()}function Tg(){let e=F.managedSession;return I()&&(e?.publicShare===!0||!tt(e?.role,`triage`))}function Eg(e){return wg(e)&&!Tg()}function U(e){if(!wg(e))return;let t=F.triage.get(T(e)),n=t?.triage===`ignored`&&o(e,An())?{...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 Dg(e){return wg(e)&&(s(e,F.triage.get(T(e)),An())===`ignored`||o(e,An())&&_n(F.triage,T(e),bg(e)))}function Og(e,t=U(e)){if(wg(e))return s(e,t,An())??(Dg(e)?`ignored`:void 0)}function kg(e){return mg()?.group===e?e:e.linkedTabs?e.linkedTabs:yg()?e:Ag(e)}function Ag(e){return e.length<=1||!e.some(Fr)?e:e.filter(Fr)}function jg(e){let t=kg(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Fr(e),r=+!!Fr(t);if(n!==r)return r-n;let i=+!!U(e)?.color,a=+!!U(t)?.color;if(i!==a)return a-i;let o=ki[O(e,F.severityMode)]||0,s=ki[O(t,F.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Mg(e){return e.length===1?e[0]:jg(e)[0]}function Ng(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function Pg(e){let t=U(e);return!!t?.comment||!!(t?.fix||$h(e))||t?.flagged===!0}function Fg(e){if(e.length===1)return e[0];let t=jg(e);if(t.length===1)return t[0];let n=F.activeTabByGroup.get(H(e));if(n){let e=t.find(e=>T(e)===n);if(e)return e}let r=t;if(F.filterAnalyzer||F.filterModel){let e=t.filter(c_);e.length>0&&(r=e)}return r.find(Pg)??r[0]}function Ig(e){return e?._repoFallback||F.repoUrl||``}function Lg(e){return{github:Ig(e),directory:e?._repoDirectory??``}}function Rg(e){for(let t of Of().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||Ig(e)||null}function zg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Bg(e){let t=zg(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=Og(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 Vg(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(Eg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Hg(e,r))}function Hg(e,t){if(!Eg(e))return!1;let n=(U(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Ug(e,t){if(!Eg(Fg(e)))return{targets:[],clearing:!1};let n=Bg(e);return{targets:Wg(e,n),clearing:t===`restore`||Gg(e,n)===t}}function Wg(e,t=Bg(e)){let n=zg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Fg(e)]:n;return r.every(Eg)?r:r.filter(Eg)}function Gg(e,t=Bg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&zg(e)!==e||!t.hasConflict?t.commonTriage??null:Og(n??Fg(e))??null}function Kg(e){let t=zg(e);if(t.length<2)return!1;let n=Bg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>U(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!Eg(e))continue;let t=T(e),i=F.triage.get(t);Og(e,i)!==n&&(n===`ignored`&&o(e,An())||n!==`ignored`&&i?.ignoredReports?.length||S(F.triage,t,{triage:n})&&(r=!0))}return r}var qg=null;function Jg(){qg=null}function Yg(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??[]);yi(e,dg(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]=cg(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),qg[o]}function Xg(){return Yg(F.showRevalidation!==!1).groups}function Zg(){return Yg(!0).groups}function Qg(){return Yg(!0,!1,!!F.currentWorkspace).conflicts}function $g(){let e=Yg(F.showRevalidation!==!1,F.upstreamOnly===!0,!!F.currentWorkspace),t=e.groups;if(F.showRevalidation===!1||F.upstreamOnly)return t;if(F.currentWorkspace){let n=yg();return(!e.linkedGroups||e.linksTick!==F.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=_g(t,cd,Ag,kg),e.linksTick=F.linksTick,e.linkedDetailed=n),e.linkedGroups}return yg()?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 e_(){let e=$g();if(F.viewMode===`kanban`)return e;let t=e.filter(e=>Bg(e).commonTriage===F.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function t_(e){if(F.showRevalidation||F.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(T)),n=new Map;for(let e of Zg())for(let r of sg(e))if(r.some(e=>t.has(T(e))))for(let e of r)n.set(T(e),e);return n.size===e.length&&e.every(e=>n.get(T(e))===e)?e:n.size>0?[...n.values()]:e}function n_(e){let t=mg()?.group;if(t&&H(t)===e)return t;for(let t of $g())if(H(t)===e)return t;return null}function r_(){let e=new Set;if(F.currentWorkspace||!sd())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)cd(r).some(e=>!n.has(e)&&qd(e).some(e=>e!==t))&&e.add(r);return e}var i_=`\0`,a_=`\x01`,o_=`\x02`;function s_(e){return Li(e.model)||null}function c_(e){let t=__();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===i_?null:t.filterAnalyzer)||t.filterModel&&s_(e)!==(t.filterModel===o_?null:t.filterModel))}function l_(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 u_(e){let t=new Set;for(let n of e)for(let e of n)t.add(l_(e));return t}function d_(){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 f_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function p_(){let e={};for(let t of f_){let n=F[t];e[t]=n instanceof Set?new Set(n):n}return e}var m_=null;function h_(e){m_=e}function g_(){m_=null}function __(){return m_??F}function v_(e){return kr(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function y_(e){let t=fr(`confirmed`,``);return e.some(e=>t.includes(v_(e)))}function b_(e,t){let n=e.map(kg).filter(e=>e.length>0);return xr(n,t,yr(e,kg,kr),kr)?`confirmed`:``}function x_(e,t=kg){return vr(e,t)}function S_(e,{tabs:t=kg,kindOf:n=kr,severityMode:r=F.severityMode}={}){return Cr(e,{tabs:t,kindOf:n,severityMode:r})}function C_(e){return F.showRevalidation===!1||F.upstreamOnly||yg()?!1:S_(e)}function w_(e,{resetSort:t=!0}={}){F.filterConfMin=x_(e),F.filterConfMax=10,F.filterRevalidate=b_(e,F.filterConfMin),F.filterPartial=``,t&&(F.sortBy=T_(e)?`priority-desc`:`severity`)}function T_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(E_(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 E_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Ir)?0:void 0}function D_(e){let t=__();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&jn(e.file)||!n&&!jn(e.file))return!1}if(t.filterRevalidate){let n=fr(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(v_(e)))return!1}if(!t.filterRevalidate){let n=Lr(e)?0:mr(e);if(n===void 0){if(t.filterConfMin>0)return!1}else if(n<t.filterConfMin||t.filterConfMax<10&&n>t.filterConfMax)return!1}return!0}var O_={raw:``,inc:``,idWords:[]};function k_(e){if(O_.raw!==e){let t=e.toLowerCase();O_={raw:e,inc:t,idWords:t.length>=6?t.split(/\s+/u).filter(e=>e.length>=6):[]}}return O_}function A_(e){if(!D_(e))return!1;let t=__(),{inc:n,idWords:r}=k_(t.filterInclude);if(t.filterSeverities.size>0&&!t.filterSeverities.has(O(e,F.severityMode)))return!1;if(t.filterColors.size>0){let n=U(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!c_(e)||t.filterRepo&&l_(e)!==(t.filterRepo===a_?null:t.filterRepo))return!1;if(n){let i=U(e),a=Fn(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 j_(e){let t=__();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||$h(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 M_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!nf(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function N_(){return F.showRevalidation!==!1&&!F.upstreamOnly}function P_(e){if(N_())return!1;let t=kg(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=l_(e);t&&n.add(t);let i=M_(e);i&&r.add(i)}return n.size>1||r.size>1}function F_(e){if(!N_()||kg(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function I_(e){return e.some(e=>e.isSecurity===!0)}function L_(e){return e.some(I_)&&e.some(e=>!I_(e))}function R_(e){return e.filter(e=>e.some(D_)).map(kg)}function z_(e){let t=!F.currentWorkspace&&__().filterDuplicates,n=t?r_():null,r=__().filterCrossContext,i=__().filterAppStacked,a=__().filterSecurity;return e.filter(e=>e.some(A_)&&j_(e)&&(!t||t===`with`===e.some(e=>n.has(T(e))))&&(!r||r===`with`===P_(e))&&(!i||i===`with`===F_(e))&&(!a||a===`with`===I_(e)))}function B_(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 V_(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 H_=V_(`desc`),U_={severity:(e,t)=>(ki[O(t,F.severityMode)]||0)-(ki[O(e,F.severityMode)]||0)||H_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":H_,"confidence-asc":V_(`asc`),"priority-desc":B_(`priority`,`desc`),"priority-asc":B_(`priority`,`asc`)};function W_(e){let t=U_[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:E_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Mg(e.g).file.localeCompare(Mg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Mg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var G_=Oi;function K_(e){return e==null?`(none)`:G_[e]??e}function q_(e){return e??`(no model)`}var J_=class extends Wh{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===i_?null:F.filterAnalyzer,r=F.filterModel===``?void 0:F.filterModel===o_?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=s_(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:K_(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="${C({"analyzer-btn":!0,active:o!=null||s!=null})}" popovertarget="analyzer-select-menu" popovertargetaction="toggle" aria-label="${`Filter by analyzer / model: ${c}`}"><span class="analyzer-btn-label">${c}</span> <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="analyzer-select-menu" class="analyzer-menu" @beforetoggle="${this._onToggle}">${e?this._column({dim:`analyzer`,heading:`Analyzer`,allLabel:`All analyzers`,values:this.analyzers,sentinel:i_,labelOf:K_,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:o_,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="${C({"analyzer-menu-item":!0,active:s===``})}" @click="${()=>this._pick(e,``)}"><span class="analyzer-menu-label">${n}</span></button> ${r.map(t=>{let n=t??i,r=o.get(t)??0,c=s===n;return A`<button type="button" aria-pressed="${String(c)}" class="${C({"analyzer-menu-item":!0,active:c,zero:r===0})}" @click="${()=>this._pick(e,n)}"><span class="analyzer-menu-label">${a(t)}</span><span class="analyzer-menu-count">${r}</span></button>`})}</div>`}_pick(e,t){let n=e===`analyzer`?F.filterAnalyzer:F.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:F.filterAnalyzer,model:e===`model`?r:F.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,J_);var Y_=0,X_=new AbortController;function W(){return Y_}function Z_(){return X_.signal}function Q_(){return X_.abort(),X_=new AbortController,++Y_}var $_=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function ev(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($_(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=$_(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var tv=[{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 nv(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=>!tv.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...tv.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 rv=class extends pa{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=nv(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=da`: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`,rv);var iv=6,av=14,ov=2,sv=24,cv=4,lv=1.5,uv=new Map,dv=new Map,fv=`treemap`,pv=``;function mv(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 hv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function gv(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=hv(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 _v(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())_v(t)}function vv(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+=vv(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 yv(e,t,n,r){let i=new Set(e).size===1?ev(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 bv(e,t,n,r,i,a,o){if(r<cv||i<cv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<iv&&r>=sv&&i>=sv&&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>=av+cv+ov?av:0,c=t+ov,l=n+s,u=r-ov*2,d=i-s-ov;if(u<cv||d<cv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of gv(f,{x:c,y:l,w:u,h:d}))bv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function xv(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function Sv(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+Sv(r,t-1);e>n&&(n=e)}return n}function Cv(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 wv(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var Tv=class extends pa{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=fv,this._reason=``,this._kind=pv,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=dv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;N(A`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?A`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${E({background:e.ttColor})}"></span> <span class="bundle-treemap-tt-pkg">${e.ttPkg}</span></div>`:``}<div class="bundle-treemap-tt-meta">${e.ttMeta}</div>`,this._tooltip)}this._positionTooltip(e.clientX,e.clientY)}_onPointerLeave(){this._hideTooltip()}_positionTooltip(e,t){let n=this._tooltip;if(!n||!this._plot)return;n.classList.add(`show`);let r=this._plot.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=i+12;o+n.offsetWidth>r.width-4&&(o=i-n.offsetWidth-12),o<4&&(o=4);let s=a+12;s+n.offsetHeight>r.height-4&&(s=a-n.offsetHeight-12),s<4&&(s=4),n.style.left=`${o}px`,n.style.top=`${s}px`}_hideTooltip(){this._ttCell=null,this._tooltip&&this._tooltip.classList.remove(`show`)}_rebuild(){if(this._root=null,this._focus=[],this._dirByPath=new Map,this._reasons=new Map,this._mixedKinds=!1,this._meta={total:0,prefix:``},this._hideTooltip(),!this.details){this._status=`loading`;return}let e=Vt(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=Ce(this.details,t),this._reasons.has(this._reason)||(this._reason=``,dv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Wt(this.details),i=Ht(this.details),a=e=>i.get(e)===`resource`,o=t.filter(t=>e.get(t)>0);this._mixedKinds=o.some(a)&&!o.every(a);let s=this._mixedKinds?this._kind:``,{prefix:c,stripped:l}=Pn(t),u=t.map(e=>Jr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=yv(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())_v(e);let h=new Map;vv(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?uv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):uv.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?uv.set(e,t):uv.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`,fv=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,pv=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?dv.set(t,this._reason):dv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return A`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${C({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?A`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:Er(),label:null,named:!1}:{color:wr(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Jr(e.path);return{color:Or(t),label:Xr(t),named:e.pkg!=null}}_cell(e){let t=xv(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return A`<div class="bundle-treemap-node bundle-treemap-dir" style="${E(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${Nn(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-dirname">${e.node.name}</span></div>`;let{color:i,label:a}=this._paint(e.node),o=E({...n,background:i,color:mv(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="${`${Nn(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="${`${Nn(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=xv(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=${`${Nn(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=${`${Nn(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=Sv(e,iv),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>=lv&&(u.push(this._arc(t,Cv(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=${`${Nn(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${xv(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">${wv(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${Nn(e.value)}</tspan>`:j`<tspan x=${r} dy="0.35em">${Nn(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 gv(t,{x:0,y:0,w:this._w,h:this._h}))bv(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`} · ${Nn(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`,Tv);function Ev(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&Ev(t.shadowRoot))return!0;return!1}var Dv=`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
|
-
`,Ov=class extends pa{static styles=[ua(Dv)];exclusive=!1;firstUpdated(){cr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&Ev()){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 kv(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 Av(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(eh(e.detail?.cause))}),document.body.append(a)})}var jv=`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
|
-
`,Mv=class extends Ov{static styles=[...Ov.styles,ua(jv)];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 jo({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`,Mv);function Nv(){return kv(`passkey-unlock-dialog`)}var Pv=`deepviewManagedNavigation`,Fv=`deepviewManagedLoginFinding`;function Iv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Lv(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 Rv(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=ui(e),n=t?.view===`home`?Ur(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Fv);if(e.sessionStorage?.removeItem(Fv),!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?.[Pv]&&e.history.state[Pv]!==i)return;let t=l=e.location.href;_(p(new URL(t))??{view:`home`},{replace:!0}).finally(()=>{l===t&&(l=null)})}function g(t){f()||(t=Ye(t,n),e.history.replaceState(r?{[Pv]: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=oi(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=oi(_)??d),Iv(m.findingRoute,typeof _==`object`?_:t)&&(d=oi(m.findingRoute)),Lv(m.codeRoute,typeof _==`object`?_:t)&&(d=oi(m.codeRoute)),u=null,l||c||m.shown?g(d):Ye(d,n)!==s&&(d=Ye(d,n),e.history.pushState({[Pv]: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?.[Pv]&&g(`/`);return}if((!t.state?.[Pv]||t.state[Pv]===i)&&Ur(e.location.hash)){h();return}if(!t.state?.[Pv]){let t=p(new URL(e.location.href)),n=s==null?null:ui(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Lv(t,n)){g(oi(t));return}}_((t.state?.[Pv]===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)}`:oi(t);try{e.sessionStorage?.setItem(Fv,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Pv]==`string`?e.history.state[Pv]: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=oi(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||Iv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}Iv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=oi(t);if(i!=null){if(u){Lv(t,u.route)&&(u.codeRoute=t);return}Lv(t,ui(new URL(e.location.href)))&&Ye(i,n)!==s&&g(i)}},showing(t){let a=u;if(!r||f()||!a||a.route!==t||a.shown)return;a.shown=!0;let o=Ye(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Pv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=oi(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=oi(t);if(o==null)return;let c=u!==null;++a,u=null,o=Ye(o,n),o!==s&&(e.history.pushState({[Pv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Fv)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var G=typeof window>`u`?null:Rv(window);function zv(e){return I()&&!F.managedSession?.publicShare&&tt(F.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Bv(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 Vv=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=Bv(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&&Xh(e);if(!n)return null;let r=Zh(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=Xh(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?Gh(e.stateReason):null;this.entries.set(Zh(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()}},Hv=new Set,Uv=new Vv({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:ix,changed:()=>{for(let e of Hv)e()}});function Wv(e){return Hv.add(e),()=>Hv.delete(e)}function Gv(){Uv.reset();for(let e of Hv)e()}function Kv(e){F.currentManagedTeam===e&&Gv()}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})=>t?.url!==n.get(e)?.url)&&Kv(e);for(let{id:e,issue:t}of r)t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Uv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Uv.read(i)}var Jv={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:[]}],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]`]},cursor:{name:`Cursor`,accounts:[],names:[`Cursor Agent`],emails:[`cursoragent@cursor.com`]}},Yv=Object.entries(Jv),Xv=new Map;for(let[e,{accounts:t}]of Yv)for(let{id:n,logins:r}of t)for(let t of r)Xv.set(t.toLowerCase(),{agent:e,ids:[...Xv.get(t.toLowerCase())?.ids??[],n]});var Zv=new Map(Yv.flatMap(([e,{accounts:t}])=>t.flatMap(({id:t,logins:n})=>t!==void 0&&n.length===0?[[t,e]]:[]))),Qv=new Map(Yv.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(Yv.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function $v(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?Qv.get(n.trim().toLowerCase())??null:null;let r=Xv.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:t===null?null:Zv.get(t)??null}function ey(e,t){let n=new Set([...t].map(t=>$v(e,t)));return n.size===1&&!n.has(null)}var ty=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),ny=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,ry=8,iy=e=>Number.isSafeInteger(e)&&e>0?e:null;function ay(e){let t=new Map;oy(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,ey(e,t)?null:`ambiguous`]}))}function oy(e,t,n){if(n>ry||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)oy(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=ty.get(e);if(a&&typeof i==`string`&&ny.test(i)){let e=iy(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else oy(i,t,n+1)}}var 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="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>`,cy=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>`,ly=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>`,uy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,dy=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>`,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="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>`,py=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="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>`,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="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>`,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="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>`,gy=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>`,_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="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>`,vy=A`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.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>`,yy=e=>A`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,by=yy(Ki),xy=yy(qi),Sy={anthropic:by,deepseek:sy,"github-copilot":A`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Ji}"></path></svg>`,google:cy,meta:uy,mistralai:dy,moonshot:fy,moonshotai:fy,nvidia:py,openai:xy,openrouter:my,qwen:hy,unbiased:gy,xiaomi:_y,"x-ai":ly,"z-ai":vy},Cy=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 wy(e){return Object.hasOwn(Sy,e)?Sy[e]:Cy}var Ty=new Map,Ey=new Map,Dy=new Set;function Oy(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of ay(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&Ey.has(n)&&Ey.get(n)!==t&&!ey(e,[t,Ey.get(n)])?Dy.add(n):t!==null&&Ey.set(n,t),(!Object.hasOwn(r,e)||Dy.has(n))&&Ty.delete(n)}for(let[e,t]of Object.entries(r))Dy.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(Jv,t.agent)?Ty.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?Ty.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):Ty.delete(e.toLowerCase()));return e}var ky=0;function Ay(){Ty.clear(),Ey.clear(),Dy.clear(),Fy.clear(),Iy.clear(),ky++}async function jy(e){let t=ky,n=Py,r=await e();return t!==ky||(Oy(r),n!==Py&&Ry(Ny.userId,Ny.profile)),r}var My=new Map,Ny=null,Py=0,Fy=new Set,Iy=new Set;function Ly(e,t,n=!1,r=null){n&&My.set(e,(My.get(e)??0)+1),r&&Fy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Iy.add(r.githubId),Ny={userId:e,profile:t},Py++,Ry(e,t)}function Ry(e,t){for(let[n,r]of Ty)r.id===e&&((Ey.has(n)?Iy.has(Ey.get(n)):Fy.has(n))?Ty.delete(n):Ty.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function zy(e){let t=typeof e==`string`?Ty.get(e.toLowerCase()):null;return t?.id?t:null}var By=e=>Ty.get(e.toLowerCase())?.agent??null,Vy=e=>A`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Hy=e=>Vy(`/api/avatar/${encodeURIComponent(e.id)}${My.has(e.id)?`?v=${My.get(e.id)}`:``}`);function Uy(e,t){let{name:n,mark:r,avatar:i}=Jv[e];return A`<span class="app-user" data-tooltip="${t}">${r||i?A`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?wy(r):Vy(`/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 Wy(e){let t=typeof e==`string`?By(e):null;if(t)return Jv[t].name;let n=zy(e);return n?n.name??n.login:e}function Gy(e,t=e){let n=typeof e==`string`?By(e):null;if(n)return Uy(n,`@${e} on GitHub`);let r=zy(e);return r?A`<span class="app-user" data-tooltip="${`@${e} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(r.name??r.login)[0].toUpperCase()}${Hy(r)}</span><span class="app-user-name">${r.name??r.login}</span></span>`:t}function Ky(e){let t=new Map;for(let n of e){let e=By(n),r=e?`agent:${e}`:zy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function qy(e,t=null){return typeof e==`string`?By(e):$v(null,null,t)}function Jy(e,t=null,n=t??e??``){if(typeof e==`string`)return Gy(e,n);let r=qy(null,t);return r?Uy(r,t):n}function Yy(e,t=null){if(typeof e==`string`)return Wy(e);let n=qy(null,t);return n?Jv[n].name:t}var Xy=3,Zy=e=>typeof e==`string`&&Object.hasOwn(Jv,e)?e:null,Qy=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function $y({login:e=null,name:t=null,agent:n=null}){let r=Zy(n)??qy(e,t);if(r){let{name:e,mark:t,avatar:n}=Jv[r];return A`<span class="${`commit-avatar is-${r}`}">${t?wy(t):n?Vy(`/api/avatar/${n}`):e[0]}</span>`}let i=zy(e),a=(i?.name??i?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return A`<span class="commit-avatar">${a}${i?Hy(i):M}</span>`}function eb(e,t,n=null){return Zy(n)&&t?t:typeof e==`string`&&(zy(e)||By(e))?Wy(e):t??Yy(e,t)??e??``}function tb(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,Xy);if(r.length===0)return Jy(e,t);let i=eb(e,t),a=r.map(e=>eb(e.login??null,e.name??null,e.agent));return A`<span class="app-user commit-authors" data-tooltip="${Qy([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map($y)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${Qy(a)}</span></span>`}var nb=null,rb=null;function ib(){return rb?.getPreviewRole()??null}function ab(){rb?.setPreviewRole(null)}function ob(){Ay(),sb=null,rb?.resetManagedAppState()}var sb=null;function cb(e){let t=e?`${e.id}\0${e.role}`:null;t!==sb&&(Ay(),sb=t),rb?.setManagedAppSession(e)}function lb(e){return rb?.setManagedReportCatalog(e)??new Set}function ub(e,t=F.currentManagedTeam){return rb?.readReportSources(e,t)}function db(){rb?.clearReportSources(),rb?.clearFindingHistory()}async function fb(e,t=F.currentManagedTeam){return(await K()).fetchReportSources(e,t)}function K(){return nb||(nb=(async()=>{try{return rb=await import(`./client-managed.js`),rb}catch(e){throw nb=null,e}})(),nb)}async function pb(e){return(await K()).probeSession(e)}async function mb(e){return(await K()).probeTeams(e)}async function hb(e){return(await K()).fetchManagedBundleCatalog(e)}async function gb(e,t,n){return(await K()).fetchNpmPackage(e,t,n)}async function _b(e,t,n,r){return(await K()).fetchRepositoryCode(e,t,n,r)}async function vb(e){return(await K()).fetchBrowsableRepositories(e)}async function yb(e,t){return(await K()).fetchRepositoryRefs(e,t)}async function bb(e,t,n,r){return(await K()).fetchRepositoryContents(e,t,n,r)}function xb(e,t,n,r){return jy(async()=>(await K()).fetchRepositoryHistory(e,t,n,r))}async function Sb(e,t,n,r){return(await K()).fetchRepositoryChanges(e,t,n,r)}async function Cb(e,t,n,r){return(await K()).fetchRepositoryTree(e,t,n,r)}function wb(e,t){return jy(async()=>(await K()).fetchRepositoryAgents(e,t))}function Tb(e,t,n){return jy(async()=>(await K()).fetchRepositoryIssues(e,t,n))}function Eb(e,t,n){return jy(async()=>(await K()).fetchRepositoryItem(e,t,n))}async function Db(e,t,n){return(await K()).fetchPullDependencies(e,t,n)}async function Ob(e,t,n){return(await K()).fetchPullDependenciesOf(e,t,n)}async function kb(e,t){return(await K()).fetchBranchDependencies(e,t)}async function Ab(e,t,n,r){return(await K()).fetchNpmDelta(e,t,n,r)}function jb(e,t,n){return jy(async()=>(await K()).fetchRepositoryPulse(e,t,n))}function Mb(e,t,n,r){return jy(async()=>(await K()).fetchRepositoryPulseItems(e,t,n,r))}async function Nb(e,t){return(await K()).fetchNpmVersions(e,t)}async function Pb(e,t){return(await K()).fetchNpmStats(e,t)}async function Fb(e,t){return(await K()).fetchNpmAdvisories(e,t)}async function Ib(e,t,n){return(await K()).fetchNpmTags(e,t,n)}async function Lb(e,t,n,r){return(await K()).fetchNpmRisk(e,t,n,r)}async function Rb(e,t,n){return(await K()).fetchNpmSocket(e,t,n)}async function zb(e,t,n){return(await K()).fetchNpmProvenance(e,t,n)}async function Bb(e,t,n,r){return(await K()).fetchPrettyBundleFile(e,t,n,r)}async function Vb(e,t,n,r){return(await K()).fetchPrettyNpmFiles(e,t,n,r)}async function Hb(e,t,n,r,i){return(await K()).fetchPrettyNpmFile(e,t,n,r,i)}async function Ub(e,t,n,r){return(await K()).fetchPrettyBundleChanges(e,t,n,r)}async function Wb(e,t,n,r,i){return(await K()).fetchPrettyNpmChanges(e,t,n,r,i)}async function Gb(e,t,n,r){return(await K()).fetchBundleRenameDiff(e,t,n,r)}async function Kb(e,t,n,r,i){return(await K()).fetchNpmRenameDiff(e,t,n,r,i)}async function qb(e,t,n,r){return(await K()).fetchBundleRenameDiffs(e,t,n,r)}async function Jb(e,t,n,r,i){return(await K()).fetchNpmRenameDiffs(e,t,n,r,i)}async function Yb(e,t,n,r){return(await K()).fetchBundleTypeOnly(e,t,n,r)}async function Xb(e,t,n,r,i){return(await K()).fetchNpmTypeOnly(e,t,n,r,i)}async function Zb(e,t,n){return(await K()).fetchBundleComparison(e,t,n)}async function Qb(e,t,n,r){return(await K()).fetchNpmComparison(e,t,n,r)}async function $b(e){return(await K()).openManagedShareDialog(e,``,F.managedSession)}async function ex({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=eg([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});Kv(t.teamId),o&&e()}}):null}async function tx(e){if(!zv(e))return null;let t=F.reports,n=F.managedSession,r=F.currentManagedTeam,i=()=>zv(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 nx(e,t){return(await K()).fetchTeamAnnotations(e,t)}async function rx(e,t=F.currentManagedTeam,n){return(await K()).fetchReportTriage(e,t,n)}async function ix(e,t,n){return(await K()).fetchFixes(e,t,n)}async function ax(e,t=F.currentManagedTeam,n){return(await K()).fetchReportComments(e,t,n)}async function ox(e,t,n,r=F.currentManagedTeam){return(await K()).saveReportComment(e,t,n,r)}async function sx(e,t,n,r,i=F.currentManagedTeam){return(await K()).deleteReportComment(e,t,n,r,i)}async function cx(e,t,n,r=F.currentManagedTeam){return(await K()).pushReportTriage(e,t,n,r)}async function lx(e){return e&&G?.rememberFinding(),(await K()).login(e)}async function ux(e){return(await K()).logout(e)}async function dx(e){return(await K()).stopViewing(e)}async function fx(e){return(await K()).fetchProfile(e)}async function px(e,t,n){return(await K()).chooseProfileAccounts(e,t,n)}async function mx(e,t,n){return(await K()).unlinkGithubAccount(e,t,n)}async function hx(e,t){return(await K()).fetchBundleMetadata(e,t)}async function gx(e,t){return(await K()).fetchBundleContents(e,t)}async function _x(e,t){return(await K()).fetchTeamReports(e,t)}async function vx(e,t){return(await K()).watchTeamFeed(e,t)}async function yx(e,t=F.currentManagedTeam,n=``,r=!1,i=!1){return(await K()).fetchBundleAdvisories(e,t,n,r,i)}async function bx(...e){return(await K()).dependencyReviews(...e)}async function xx(...e){return(await K()).myDependencyReviews(...e)}async function Sx(...e){return(await K()).teamDependencyReviews(...e)}async function Cx(...e){return(await K()).discardDependencyReview(...e)}async function wx(...e){return(await K()).latestDependencyReview(...e)}var Tx=null,Ex=null,Dx=0;function Ox(){return Tx||(Tx=document.createElement(`div`),Tx.id=`app-toast`,Tx.setAttribute(`role`,`status`),Tx.setAttribute(`aria-live`,`polite`),document.body.append(Tx),Tx)}function kx(e,{kind:t=`info`,duration:n=5200}={}){let r=Ox(),i=++Dx;clearTimeout(Ex),Ex=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{Dx===i&&r.classList.add(`visible`)});let a=()=>{Dx===i&&Ax()};return n>0&&(Ex=setTimeout(a,n)),a}function Ax(){Dx++,Tx&&(clearTimeout(Ex),Ex=null,Tx.classList.remove(`visible`))}function jx(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 Mx(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 Nx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Px(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 fi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Fx(e,t=e.bundleDetailsTab){if(t!==`code`)return null;let n=e.bundleCodeFileRequest;if(n?.bundle===e.selectedBundle){if(n.file==null)return null;let{bundle:e,...t}=n;return t}if(!e.bundleSourceFile||e.bundleDetails?.integrity!==e.selectedBundle)return null;let r=Rt(It(e.bundleDetails)).numbers.get(e.bundleSourceFile);if(r==null)return null;let i=e.bundleSourceTargetLine;return i?.bundle!==e.selectedBundle||i.path!==e.bundleSourceFile?{file:r}:{file:r,line:i.line,...i.end>i.line?{endLine:i.end}:{}}}function Ix(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,...ri(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ri(n.mode)}:null;let i=jx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ri(n.mode)}:null}function Lx(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,...ri(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Fx(e,t)??Ix(e,t)}function Rx(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=Lx(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 zx(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,Mx(e)])).values()]}function Bx(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 Vx(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=Nx(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=zx(t);else if(s)try{c=(await n()).map(Mx)}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(Px(t,u,e.currentManagedTeam,e.bundleDetailsTab,Lx(e),c)),!0):!1}var Hx={...at,[d]:ea},Ux=new Set(Object.keys(Oi)),Wx={...Oi,default:`DeepView`};function Gx(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(st,t)?t:null}function Kx(e){return qx(e,Ru(e))}function qx(e,t){if(t===d)return d;if(t!==void 0)return Ux.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 Jx(e){return Ru(e)===d}var Yx=`.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
|
-
`,Xx=`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 Zx({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 Qx(e){if(!e)return M;let t=e.replaceAll(`_`,` `);return A`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function $x(e){return`bundle-${e.slice(7,19)}\u2026`}function eS(e){return e.kind===`bundle`?e.label??$x(e.identifier):e.identifier}function tS(e){return e.kind===`bundle`?`bundle`:Jx(e.identifier)?`links file`:`report`}function nS(e){let t=e.length,n=t===1,r=new Set(e.map(tS)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function rS(e){return A`<ul class="lwd-list">${e.map(e=>{let t=tS(e);return A`<li>${eS(e)}${t===`report`?M:A`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function iS(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 aS(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 oS(e){return A`<span class="comment-text">${e||A`<em>empty</em>`}</span>`}function sS(e){return e?mi(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 cS(e){return e?A`<span class="${`triage triage-${e}`}">${e}</span>`:A`<em>none</em>`}function lS(e){return e?A`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:A`<em>none</em>`}function uS(e,t){return e===`color`?aS(t):e===`comment`?oS(t):e===`fix`?sS(t):e===`triage`?cS(t):e===`flagged`?lS(t):A`${String(t)}`}function dS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return A`<div class="card-head">${Qx(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 fS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},pS={color:0,comment:1,fix:2,triage:3,flagged:4},mS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},hS=class extends Ov{static styles=[...Ov.styles,ua(Yx),ua(Xx)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...fS},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)=>(pS[e.property]??99)-(pS[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}">${dS(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">${mS[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">${uS(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">${uS(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`,hS);function gS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...fS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(eh(e.detail?.cause))}),document.body.append(a)})}var _S=[`type`,`model`,`effort`,`exportsMode`],vS=[`security`,`correctness`],yS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],bS=[`list`,`isolate`];function xS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var SS={type:e=>e===`terminal`?vS.length+2:xS(vS,e),model:e=>+(e==null),effort:e=>xS(yS,e),exportsMode:e=>xS(bS,e)};function CS(e,t,n){for(let r of n){let n=SS[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 wS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function TS(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 ES(e,t=_S){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Li(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)=>CS(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`)?TS(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=wS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>wS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function DS(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 OS=null;function kS(){return OS||(OS=(async()=>await import(`./prism.js`))(),OS)}var AS=1048576;function jS(e){return e.length<=AS&&ha(e)<=AS}var MS={__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 NS(e){return typeof e==`string`?MS[e.toLowerCase()]??null:null}async function PS(e,t,n=null){if(!t||!jS(e))return null;try{return(await kS()).highlight(e,t,n)}catch{return null}}function FS(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 IS=new Map,LS=new Set,RS=!1;function zS(){RS||(RS=!0,queueMicrotask(()=>{RS=!1,F.codeBlockTick++,X()}))}function BS(e,t){let n=NS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return IS.has(r)?IS.get(r):(LS.has(r)||(LS.add(r),(async()=>{let t=await PS(e,n);IS.set(r,t??null),LS.delete(r),zS()})()),null)}var VS=new WeakMap,HS=new WeakMap;function US(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 WS(e){let t=new Map;for(let n of e.keys()){let e=US(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function GS(e,t,n,r){let i=US(n);if(i===null)return null;let a=typeof r==`string`?US(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=HS.get(e);for(s||(s=new Map,HS.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 KS(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 qS(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=>qS(e,t,n+1)):[null]}function JS(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=US(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(`../`))&&US(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 YS(e,t,n,r,i,a){let o=KS(e?.imports,t);if(!o)return null;let s=qS(o.value,o.wildcard),c=null;for(let t of s){let o=JS(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function XS(e,t=It(e)){let n=new Map;if(e?.kind===`stasis`)for(let r of e.bundle?.imports?.values()??[])for(let[e,i]of r){if(!t.has(e))continue;n.has(e)||n.set(e,new Map);let r=n.get(e);for(let[e,n]of i){let i=typeof n==`string`&&t.has(n)?n:null;r.set(e,r.has(e)&&r.get(e)!==i?null:i)}}else if(e?.kind===`sourcemap`)for(let[r,i]of Ft(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function ZS(e,t,n=null,r=e,i=null){let a=VS.get(e);a||(a=WS(e),VS.set(e,a));let o=VS.get(r);o||(o=WS(r),VS.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?GS(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 YS(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(US(c+t))??null}}var QS=new WeakMap;function $S(e,t){let n=It(e),r=QS.get(n);return r||(r={imports:XS(e,n),packageDirs:Wt(e)},QS.set(n,r)),ZS(n,t,r.imports,Bt(e),r.packageDirs)}var eC=/[\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,tC=new RegExp(eC.source,`gu`),nC=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}]})),rC=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function iC(e){let t=nC.get(e);if(t)return{label:t.label,title:`${rC(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${rC(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:`${rC(e)} VARIATION SELECTOR-${n}`}:{label:rC(e),title:`${rC(e)} ${cC(e)}`}}var aC=/\p{Cf}/u,oC=/\p{Default_Ignorable_Code_Point}/u,sC=/\p{Cn}/u;function cC(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 aC.test(t)?`format character`:oC.test(t)&&!sC.test(t)?`invisible character`:`unassigned code point`}function lC(e,t){let n=[];tC.lastIndex=0;for(let r=tC.exec(e);r;r=tC.exec(e)){let i=r[0].codePointAt(0),a=He(e,r.index,i,t);a===-1?n.push([r.index,i]):tC.lastIndex=a}return n}function uC(e){return eC.test(e)}var dC=e=>{let{label:t,title:n}=iC(e);return A`<span class="code-control" data-tooltip="${n}">${t}</span>`};function fC(e,t=!1){if(!uC(e))return[e];let n=[],r=0;for(let[i,a]of lC(e,t))i>r&&n.push(e.slice(r,i)),n.push(dC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var pC=e=>e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`);function mC(e,t=!1){if(!uC(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 lC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=iC(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${pC(l)}">${pC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function hC(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 gC=[];function _C(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!hC(e[0],n))return{stack:gC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function vC({stack:e,at:t,base:n},r){if(hC(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 yC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function bC(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 xC=new Map,SC=new Map,CC=new Set,wC=new WeakMap,TC=new Set;function EC(e,t,n,r,i,a=SC,o=CC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Pt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await PS(n,c,i);a.set(s,typeof e==`string`?mC(e):null),o.delete(s),F.focusCodeTick++,queueMicrotask(X)})()}async function DC(e){let t=xC.get(e);if(t&&(t.loading||t.sources))return;let n=(F.bundles??[]).find(t=>t.integrity===e);if(n){xC.set(e,{sources:null,loading:!0,error:null});try{let t=await iK(e,n),r=It(t);xC.set(e,{sources:r,packageFiles:Bt(t),packageDirs:Wt(t),imports:XS(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){xC.set(e,{sources:null,loading:!1,error:t.message})}F.focusCodeTick++,queueMicrotask(X),queueMicrotask(OC)}}function OC(){let e=z.querySelectorAll(`.focus-code-line-active`);e.length!==0&&bC(e[0].closest(`.focus-code-body`),e)}function kC(e){if(I()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;F.focusCodeTick;let t=ub(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=AC(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:$f(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function AC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return Xf(e.integrity,t);let n=ub(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 jC(e,t,n){if(!I())return null;let r=ub(e);if(!r||r.data===void 0&&!r.error)return n&&!TC.has(e)&&(TC.add(e),fb(e).catch(()=>{}).finally(()=>{TC.delete(e),F.focusCodeTick++,queueMicrotask(X),queueMicrotask(OC)})),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=wC.get(i);return o||(o={cache:new Map,pending:new Set},wC.set(i,o)),EC(i.integrity,t,a,i.formats?.get(t),ZS(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 MC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return jC(r,t,n);if(I())return null;let i=xC.get(e);if(!i)return n?(DC(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;EC(e,t,a,i.formats?.get(t),ZS(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:SC.has(o)?SC.get(o):void 0,loading:!1}}function NC(e){let t=kC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Gn(t.reportId?t.line:e.line)}:null}function PC(e){return e?NC(Fg(e)):null}function FC(e){let t=PC(e);return t?{base:t,..._C(F.focusCodeStack,F.focusCodeAt,t)}:null}function IC(e){let t=NC(e);return t?_C(F.focusCodeStack,F.focusCodeAt,t).pos:null}function LC(e,t,n,r){let i=FC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=MC(t,r,{kick:!1,reportId:Fg(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function RC(e){let t=e&&Fg(e),n=kC(t);if(n?.reportId&&!n.integrity)return jC(n.reportId,n.file,!0);let r=FC(e);if(!r)return null;let{pos:i}=r,a=MC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function zC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=T(e);if(!$r(r))return null;if(I()){let i=t?null:n??(F.currentView===`links`?e._managedReportId:F.currentManagedReport),a=oi(fi({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||BC(i);return Hr({id:r,report:F.currentWorkspace?null:Br(`report`,i),workspace:Br(`workspace`,a??``)})}function BC(e,t=F.currentReportWorkspace||F.currentWorkspace){let n=ap(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function VC(e){for(let t of[$g(),Xg()])for(let n of t)for(let t of n)if(T(t)===e)return{group:n,finding:t};return null}function HC(e,t){F.currentView=`findings`,F.viewMode===`graph`&&(F.viewMode=`table`,ar());let n=Bg(e).commonTriage;if(F.viewMode===`kanban`){let e=n??`untriaged`;F.kanbanExpandedColumn!==null&&F.kanbanExpandedColumn!==e&&(F.kanbanExpandedColumn=null)}else n!==F.shownTriage&&(F.shownTriage=n);F.upstreamOnly&&!e.every(e=>e.isUpstream)&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly);let r=e.find(e=>T(e)===t);if(Ir(r)||C_(e_())&&!y_(e)||!jg(e).some(e=>T(e)===t)){if(F.currentWorkspace){r?.isUpstream?F.upstreamOnly=!0:F.showRevalidation=!1,Tr(F.showRevalidation,F.upstreamOnly);let e=$g().find(e=>e.some(e=>T(e)===t));if(e)return HC(e,t)}else F.revalidationDetailed=!0}if(z_([e]).length===0){let e=F.sortBy;d_(),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 UC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function WC(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 GC=new Map;function KC(e,t){GC.has(e)||GC.set(e,new Set);let n=GC.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&GC.delete(e)}}function qC(e,t){F.managedComments.set(e,t);for(let t of GC.get(e)??[])t()}function JC(e){return I()?F.managedComments?.get(e?.id)??[]:[]}function YC(){return I()&&F.managedSession!=null&&tt(F.managedSession.role,`triage`)}function XC(e){return YC()&&UC(e,F.managedSession)}function ZC(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 QC(e,{signal:t,readAnnotations:n}={}){let r=ZC(e);if(!r())return!1;let i=new Set(F.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id)))),a=new Map([...i].map(e=>[e,F.managedComments.get(e)])),o=n?(await n(e))?.comments:await ax(e,F.currentManagedTeam,{signal:t});if(!r()||o==null||t?.aborted)return!1;let s=new Map([...i].map(e=>[e,[]]));for(let e of o)s.has(e.findingId)&&s.get(e.findingId).push(e);for(let[e,t]of s)F.managedComments.get(e)===a.get(e)&&!$C(a.get(e),t)&&qC(e,t);return!0}function $C(e=[],t){return e.length===t.length&&e.every((e,n)=>JSON.stringify(e)===JSON.stringify(t[n]))}async function ew(e,t,n=null){let r=e?._managedReportId,i=ZC(r);if(!i()||!YC()||n&&n.authorId!==F.managedSession.id)return{status:403};let a=await ox(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(WC),qC(e.id,t)}return a}async function tw(e,t){let n=e?._managedReportId,r=ZC(n);if(!r()||!XC(t))return 403;let i=await sx(n,t.id,t.version,F.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=F.managedComments.get(e.id)??[];qC(e.id,n.filter(e=>e.id!==t.id))}return i}function nw(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 rw(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 iw(e,t,n=M){let r=rw(e);return A`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?A`<span class="managed-comment-author">${nw(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 aw(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 ow=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>`,sw=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>`,cw=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>`,lw=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>`,uw=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>`,dw=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>`,fw=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>`,pw=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 mw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function hw(e,{variant:t=`full`}={}){let n=F.severityMode,r=O(e,n),i=A`<span class="${`badge ${r}`}">${mw(r)}</span>`,a=Mi(e),o=t===`tab`?null:Ni(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${mw(t.severity)}`).join(`; `)}`:null,c=o?A`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:M;if(!a)return A`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=O(e,`original`),u=ji(e),d=e.correctedSeverityReason,f=(ki[u]??0)>(ki[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${mw(l)}`:`Original severity \u2014 corrected ${p} to ${mw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${mw(r)}; ${h?`corrected ${p} from ${mw(l)}`:`original, corrected to ${mw(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`:``}`}">${mw(v)}</span></span>${c}</span>`}var gw=/\[[^\]\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 _w(e){let t=[],n=0;for(let r of e.matchAll(gw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Xn(r[0]);t.push(e?A`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(A`<strong>${_w(r[0].slice(2,-2))}</strong>`):i===95?t.push(A`<em>${_w(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 vw({lang:e,code:t}){F.codeBlockTick;let n=BS(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 yw(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(Wn);return n.length<2&&typeof n[0]!=`object`?t?A`<div class="para">${_w(e)}</div>`:_w(e):n.map(e=>typeof e==`string`?A`<div class="para">${_w(e)}</div>`:bw(e))}function bw({level:e,text:t,rule:n}){return n?A`<hr class="md-rule">`:A`<div class="md-heading" role="heading" aria-level="${e}">${_w(t)}</div>`}var xw=/^\[([ xX])\][ \t]+/u;function Sw({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=xw.exec(e);return t?A`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${Cw(e.slice(t[0].length))}</li>`:A`<li>${Cw(e)}</li>`});return e?A`<ol class="md-list" start="${t>1?t:M}">${r}</ol>`:A`<ul class="md-list">${r}</ul>`}function Cw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
|
|
153
|
-
`,`
|
|
154
|
-
`),r=t?Un(n):[n],i=r.length>1,a=e=>t?yw(e,{wrap:i}):_w(e),o=e=>{let t=Hn(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):vw(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):Sw(e))}function ww(e){let t=new Set;for(let n of e)t.add(Kx(n));return[...t]}function Tw(e){let t=Kx(e);return Wx[t]??t}function Ew(e,t){F.linksTick,F.findingIndexTick;let n=T(e),r=$r(n)?cd(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=tr(e),n=qd(e),r=F.currentView===`links`&&F.currentLinks?.managedId?Yd([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${x(e)} (${Tw(e)})`).join(`, `)}`;return A`<a class="duplicate-ref" href="${I()?zC({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}`}">${ww(n).map(e=>k(Hx[e]??Hx.default))}<span class="duplicate-ref-id">${$n(e)??t}</span></a>`})}</div>`}function Dw(e){let t=Nr(e);return t?A`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:M}function Ow(e){let t=Dr()?Ri(e.revalidateVerdict,e):``;return t?A`<div class="revalidate-verdict">${Cw(Vn(t))}</div>`:M}function kw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?A`<div class="section-body">${Cw(Vn(t))}</div>`:M;return!r||!t?A`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:A`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function Aw(e,t,n){let r=e?.integrity&&t?.file?AC(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 jw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return M;let r=Lg(e),i=kC(e),a=t===`focus`&&i!==null,o=a?IC(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=Wi(t),c=Jn(t,e,r,n),l=pi(t),u=Ww(e,`ev${n}`,i,t?.file,t?.line),d=zw(c),f=a&&hC(o,{integrity:i.integrity,file:AC(i,t?.file),range:Gn(t?.line)});return A`<li class="${C({current:f})}">${a?Aw(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">${Cw(Vn(l))}</div>`:M} ${u?.body??M}</li>`})}</ol></details>`}function Mw(e,t){let n=Wi(e);return t?A`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function Nw(e,t){if(!t)return M;let n=t.slice(0,7),r=Qn(e,t);return r?A`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:A`<span data-tooltip="${t}">${n}</span>`}var Pw=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>`,Fw=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>`,Iw=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>`,Lw=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>`,Rw=k(ia);function zw(e){let t=Bn(e);return t?A`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${Rw}</a>`:M}function Bw(e,t,n,r){return`${T(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var Vw={key:null,host:null};function Hw(e,t){if(Vw.key===e)return;let n=Vw.host,r=e===null?null:t?.getRootNode?.()?.host??null;Vw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function Uw(e,t,n){F.codeBlockTick;let{text:r,lines:i,startLine:a}=qn(e,t);if(i.length===0)return M;let o=n.lastIndexOf(`.`),s=BS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return A`<div class="code-preview" style="${E({"--lineno-width":`${String(c).length}ch`})}"><aside class="code-preview-gutter" aria-hidden="true">${i.map((e,n)=>{let r=a+n,i=!!t&&r>=t.start&&r<=t.end;return A`<div class="${C({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?k(s):r}</code></pre></div>`}function Ww(e,t,n,r,i){if(F.bundleHashTick,!n||!r)return null;let a=AC(n,r);if(!a)return null;let o=Gn(i),s=Bw(e,t,r,o),c=F.codePreviews.has(s);F.focusCodeTick;let l=A`<button type="button" class="${C({"code-preview-btn":!0,open:c})}" data-code-preview="${s}" aria-expanded="${String(c)}" aria-label="${c?`Hide the source at ${r}`:`Show the source at ${r}`}" @mouseenter="${e=>{Hw(s,e.currentTarget),MC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{Vw.key===s&&Hw(null,e.currentTarget)}}" @focus="${e=>{Hw(s,e.currentTarget),MC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{Vw.key===s&&Hw(null,e.currentTarget)}}">${Lw}</button>`;if(c){let e=MC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?A`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:Uw(e.content,o,a);return{mark:l,tip:M,body:t}}if(Vw.key!==s)return{mark:l,tip:M,body:M};let u=MC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?A`<div class="code-preview-tip" role="tooltip">${Uw(u.content,o,a)}</div>`:M,body:M}}var Gw=A`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${Ki}"/></svg>`,Kw=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>`,qw=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 Jw(e,t=!1){let n=U(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return A`<button type="button" class="${C({"mark-flag":!0,flagged:n})}" data-flag-toggle="${T(e)}" ?disabled="${!Eg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${qw}${t?A`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:M}</button>`}function Yw(e){let t=Bi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function Xw(e){let t=zn(e,Lg(e)),n=Wi(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Yn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
|
|
155
|
-
|
|
156
|
-
`)}function Zw(e){if(!F.currentWorkspace)return M;let t=e._reportName;if(!t||I()&&!e._managedReportId)return M;let n=st[Kx(t)]??st.default,r=A`${k(n)}<span class="report-chip-label report-button-label">${x(t)}</span>`;if(I()){let t=zC(e,{reportId:e._managedReportId});if(t)return A`<a class="report-chip report-button comment-self-ref" href="${Ye(t)}">${r}</a>`}return A`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${T(e)}" data-managed-report="${I()?e._managedReportId:M}">${r}</button>`}function Qw(e,t,n,r,i=null){let a=i===`table`?M:Zw(r),o=U(r),s=!wg(r),c=!Eg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=I()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===M,h=I()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=A`<button type="button" ?disabled="${s}" class="${C({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!I()?f:M}" aria-label="${f}">${Pw}${m?A`<span class="mark-btn-label">${h}</span>`:M}</button>`,v=A`<button type="button" ?disabled="${c}" class="${C({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:M}" aria-label="${p}">${Fw}${m?A`<span class="mark-btn-label">${g}</span>`:M}</button>`,y=Jw(r,m),b=A`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${ow}${m?A`<span class="mark-btn-label">Copy</span>`:M}</button>`,ee=zC(r)?A`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Iw}${m?A`<span class="mark-btn-label">Link</span>`:M}</button>`:M,te=I()?gi({repo:{github:r.repo?.github||r._repoFallback}}):Rg(r),ne=Dn(te,{title:Yw(r),body:Xw(r),labels:DS(r.isSecurity===!0,F.githubNewIssueLabels)}),re=I()&&F.managedSession&&!F.managedSession.publicShare&&F.currentManagedTeam,ie=A`${Kw}${m?A`<span class="mark-btn-label">Issue</span>`:M}`,ae=Qh(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">${Gw}${m?A`<span class="mark-btn-label">Claude</span>`:M}</button>`,se=A`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,ce=zg(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}${eT(e,le,i,n,r)}</div></div>`}function $w(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 eT(e,t,n,r,i){let a=H(e),o=!Eg(i)||Wg(e,r).length===0,s=o?null:Gg(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="${$w}">${p.map(e=>A`<button type="button" class="${C({"triage-menu-item":!0,[`triage-menu-${e.key}`]:!0,active:s===e.key})}" data-triage-action="${e.key}" ?disabled="${o}" role="menuitem">${e.label}</button>`)}</div></div>`}function tT(e,t){let n=!!e?.comment,r=!!(e?.fix||$h(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">${Pw}</span>`:M}${r?A`<span class="has-fix" role="img" aria-label="Has a fix link">${Fw}</span>`:M}${i?A`<span class="flagged" role="img" aria-label="Flagged">${qw}</span>`:M}</span>`}function nT(e,t,n){let{app:r,source:i}=Ng(e),a=e=>rT(e,T(e)===t,n);return A`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?A`<span class="tab-level-separator" aria-hidden="true">•</span>`:M} ${i.map(a)}</div>`}function rT(e,t,n){let r=T(e),i=U(e),a=i?.color,o=Og(e,i),s=[`tab`,`tab-severity-${O(e,F.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=Gx(e),l=c?st[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?A`<span class="tab-analyzer" role="img" aria-label="${Wx[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">${hw(e,{variant:`tab`})}</span><span class="tab-indicators">${tT(i,e)}</span></span>${d}</button>`}function iT(e){if(F.viewMode===`table`||F.viewMode===`focus`){let t=e.confidence*10;return A`<div class="${`conf-ring ${O(e,F.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${E({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return A`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var aT=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function oT(e){if(nf(e))return M;let t=e?.name;if(typeof t!=`string`||!aT.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 sT(e,t,n,r,i,a){let o=T(e),s=U(e),c=s?.comment??``,l=s?.fix??``,u=$h(e),d=Qh(e),f=zn(e,Lg(e)),p=Mw(e,f),m=zi(e),h=kC(e),g=Ww(e,`loc`,h,e.file,e.line),_=zw(f),v=A`<span class="line-num">${m?A`${p}, ${m}`:p}${g?.mark??M}${_}</span>`,y=In(e),b=String(e.discoveredIn??``).trim(),ee=b===String(e.file??``).trim()?``:b,te=i===`focus`?oT(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=$f(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}=Vi(e),ae=Ui(ie),oe=ae.findIndex(e=>e.label!==null),se=oe===-1?ae:ae.slice(0,oe),ce=oe===-1?[]:ae.slice(oe);return A`<div class="${C({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?A`<div class="print-case-label">${n+1} of ${r}</div>`:M}<div class="finding-left">${s?.color||s?.flagged===!0?A`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?A`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:M} ${s?.flagged===!0?A`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:M}</div>`:M} ${hw(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?M:iT(e)} ${Dw(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">${_w(re)}</div>`:M} ${se.map(e=>A`<div class="desc">${Cw(Vn(e.body))}</div>`)} ${jw(e,i)} ${ce.map(e=>e.label===null?A`<div class="desc">${Cw(Vn(e.body))}</div>`:kw(e.label,e.body))} ${e.impact?kw(`Impact`,Ri(e.impact,e)):M} ${e.reproduction?kw(`Reproduction`,Ri(e.reproduction,e),`section`,{collapsible:!0}):M} ${e.recommendation?kw(`Recommendation`,Ri(e.recommendation,e),`recommendation`,{collapsible:!0}):M} ${e.confidenceReason?A`<div class="conf-reason">${Cw(Ri(e.confidenceReason,e))}</div>`:M} ${Ow(e)} ${e.revalidateRecommendation&&Dr()?kw(`Revalidation recommendation`,Ri(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):M} ${Mi(e)&&e.correctedSeverityReason?A`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${Cw(e.correctedSeverityReason)}</div>`:M} ${Ew(e,a)} ${I()?JC(e).map(e=>A`<div class="comment-block">${iw(e,aw(e.body))}</div>`):c?A`<div class="comment-block"><span class="comment-label">Comment:</span> ${aw(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> ${mi(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 cT(e){let t=[`finding`,...uT(e)];return jg(e).length>1&&t.push(`multi-case`),t}function lT(e,t={}){let{context:n=null}=t,r=Bg(e),i=jg(e),a=new Set(i.map(T)),o=Fg(e),s=T(o),c=o.commitHash?A`<div class="commit-ref">introduced in ${Nw(o.repo?.github,o.commitHash)}</div>`:M,l=F.currentWorkspace&&c!==M;return A`${i.map((e,t)=>sT(e,T(e)===s,t,i.length,n,a))} ${l?A`<div class="marks-commit-row">${c}</div>`:M}<div class="marks"><div class="marks-left">${l?M:c} ${i.length>1?nT(i,s,r):M}</div>${Qw(e,i,r,o,n)}</div>`}function uT(e){let t=Bg(e),n=e.some(e=>e.critical||O(e,F.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),F.shownTriage&&r.push(`triage-${F.shownTriage}`),r}function dT(e){let t=Bg(e),n=jg(e),r=Fg(e),i=T(r),a=r,o=Bi(a),s=In(a),c=zi(a),l=c?`, ${c}`:``,u=zn(a,Lg(a));return A`<div class="row-score">${hw(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">${Mw(a,u)}${l}</span> ${zw(u)}<div class="marks">${Qw(e,n,t,r,`table`)}</div></div>${n.length>1?A`<div class="tabs-row">${nT(n,i,t)}</div>`:M}</div>`}function fT(e){if(!e)return M;let t=$f(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 pT(e,t){let{allFiles:n,lowerFiles:r,importedBy:i}=hT(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=Ai.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?Ai.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=Nn(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">${_T(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=Nn(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} ${fT(n.fileHash)}</div>${gT(n,r,s)}</section>`})}</div>`}var mT={treeData:null,allFiles:[],lowerFiles:[],importedBy:new Map};function hT(e){if(mT.treeData===e)return mT;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 mT={treeData:e,allFiles:t,lowerFiles:t.map(e=>e.toLowerCase()),importedBy:n},mT}function gT(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 _T(e,t,n,r){let i=Nn(e.size);return A`<div class="tree-detail-name"><span class="name">${t}</span> ${i?A`<span class="tree-detail-size">${i}</span>`:M} ${fT(e.fileHash)}</div>${gT(e,n,r)}`}var vT=null,yT=null;function bT(){return yT}function xT(){return vT||(vT=(async()=>{try{let e=await import(`./graph.js`);return yT=e,e}catch(e){throw vT=null,e}})(),vT)}async function ST(e,t,n,r,i){try{let a=await xT(),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 CT=null,wT=null;function TT(){wT=null}async function ET(){let e=await wT?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function DT(){return CT||(CT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw CT=null,e}})(),CT)}function OT(e){let t=new Map([...Bt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=Pn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function kT(e,t){let n=t?.integrity??``;(!wT||wT.integrity!==n||(t?.managedId||wT.managedId)&&wT.details!==t)&&(wT={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:AT(t,n)});try{let t=await wT.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return wT=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function AT(e,t){return(await DT()).createTerminalElement(OT(e),t)}var jT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},MT={},NT=ca(class extends la{constructor(){super(...arguments),this.ot=MT}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 fa}else if(this.ot===t)return fa;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,n)}}),PT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),PT(e,t);return!0},FT=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},IT=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),zT(t)}};function LT(e){this._$AN===void 0?this._$AM=e:(FT(this),this._$AM=e,IT(this))}function RT(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++)PT(r[e],!1),FT(r[e]);else r!=null&&(PT(r,!1),FT(r))}else PT(this,e)}}var zT=e=>{e.type==sa.CHILD&&(e._$AP??=RT,e._$AQ??=LT)},BT=class extends la{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),IT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(PT(this,e),FT(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(){}},VT=new WeakMap,HT=ca(class extends BT{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=VT.get(t);n===void 0&&(n=new WeakMap,VT.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`?VT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),UT=2**20,WT=Math.floor(2**25/15);function GT(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+UT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function KT(e,t=!1){return e.length<=UT&&!uC(e)?e:fC(e,t).flatMap(e=>typeof e==`string`?GT(e):[e])}var qT=class extends r{};function q(e,t,n){if(!e)throw new qT(typeof n==`function`?n():n,t.line)}var JT=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,YT=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,XT=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,ZT=[31,28,31,30,31,30,31,31,30,31,30,31];function QT(e){let t=JT.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:ZT[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 $T=class{constructor(e){if(typeof e!=`string`||QT(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}=QT(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 eE(e,t){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=QT(e);if(r?.unsupported.length===0)return new $T(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(!YT.test(e),t,()=>`local dates and times are not supported: ${n(e)}`),q(!XT.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 qT(`${n(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,t.line)}var tE=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,nE=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,rE=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,iE=2n**63n,aE=BigInt(2**53-1),oE={__proto__:null,x:16,o:21,b:63};function sE(e,t){let r=tE.test(e);if(!r&&!nE.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:oE[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return q(o!==void 0&&o>=-iE&&o<iE,t,()=>`integer out of range ${n(e)}`),o>=-aE&&o<=aE?Number(o):o}var cE={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function lE(e){if(typeof e!=`string`||!rE.test(e))return;if(e in cE)return cE[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 uE=class{constructor(e){let t=lE(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 dE(e,t){let r=lE(e);if(r!==void 0)return q(r!==null,t,()=>`float out of range ${n(e)}`),new uE(e)}var fE=64;function pE(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function mE(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 hE=`a carriage return must be followed by a line feed`;function gE(e,n,r){throw new qT(n===`\r`?hE:`${t(n)} is not allowed in ${r}`,e.line)}var _E=e=>e.pos>=e.text.length||e.text[e.pos]===`
|
|
157
|
-
`||e.text.startsWith(`\r
|
|
158
|
-
`,e.pos),vE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function yE(e){e.text[e.pos]===`#`&&(i(e,vE),_E(e)||gE(e,e.text[e.pos],`a comment`))}function bE(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 xE(e){do pE(e),yE(e);while(bE(e))}var SE={__proto__:null,b:`\b`,t:` `,n:`
|
|
161
|
-
`,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},CE={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},wE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function TE(e){let t=e.text[e.pos];if(t in SE)return SE[e.text[e.pos++]];let r=i(e,wE);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 EE=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function DE(e){let t=i(e,EE);return t===null?TE(e):(e.line+=t[0].split(`
|
|
162
|
-
`).length-1,``)}var OE=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,kE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function AE(e,t){let n=OE(e,t),r=kE[n?t.repeat(3):t];e.pos+=n?3:1,n&&bE(e);let a=``;for(;;){if(a+=i(e,CE[t])[0],n&&bE(e)){a+=`
|
|
163
|
-
`;continue}q(!_E(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?DE(e):TE(e):gE(e,s,`a string`)}}var jE=/[\w-]+/uy;function ME(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return q(!OE(e,t),e,`a multi-line string cannot be a key`),AE(e,t);let n=i(e,jE);return q(n!==null,e,()=>`expected a key, found ${mE(e)}`),n[0]}function NE(e){let t=[ME(e)];for(;;){if(pE(e),e.text[e.pos]!==`.`)return t;e.pos++,pE(e),t.push(ME(e)),q(t.length<=fE,e,`a key with too many parts`)}}var PE=/[\w+.:-]+/uy;function FE(e){let t=i(e,PE);q(t!==null,e,()=>`expected a value, found ${mE(e)}`);let r=t[0];if(r===`true`)return!0;if(r===`false`)return!1;let a=sE(r,e)??dE(r,e)??eE(r,e);return q(a!==void 0,e,()=>`expected a value, found ${n(r)}`),a}function IE(e,t,r,i){q(t[r]===void 0,e,()=>`duplicate key ${n(r)}`),t[r]=i}function LE(e,t){let n=NE(e);return q(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${mE(e)}`),e.pos++,pE(e),{header:!1,keys:n,value:KE(e,t)}}function RE(e,t){e.pos++;let n=[];for(xE(e);e.text[e.pos]!==`]`&&(n.push(KE(e,t+1)),xE(e),e.text[e.pos]!==`]`);xE(e))q(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${mE(e)}`),e.pos++;return e.pos++,n}var zE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,BE=new WeakSet;function VE(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}IE(e,o,r.at(-1),i)}var HE=e=>Array.isArray(e)?`an array`:zE(e)?`an inline table`:`a value`,UE=(e,t)=>`${n(e)} is ${HE(t)}, which a dotted key cannot add to`;function WE(e){pE(e),q(!_E(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function GE(e,t){e.pos++;let n=Object.create(null);BE.add(n);let r=new Set;if(WE(e),e.text[e.pos]===`}`)e.pos++;else do{WE(e),q(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=LE(e,t+1);VE(e,n,r,i,a,UE),WE(e);let o=e.text[e.pos];q(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${mE(e)}`)}while(e.text[e.pos++]===`,`);return n}function KE(e,t){q(t<=fE,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?AE(e,n):n===`[`?RE(e,t):n===`{`?GE(e,t):FE(e)}function qE(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,pE(e);let n=NE(e),r=t?`]]`:`]`;return q(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${mE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function JE(e){pE(e);let t=e.text[e.pos];if(t===`[`)return qE(e);if(!(t===`#`||t===`\r`||_E(e)))return LE(e,0)}function YE(e){if(pE(e),yE(e),!(bE(e)||e.pos===e.text.length))throw q(e.text[e.pos]!==`\r`,e,hE),new qT(`expected the end of the line, found ${mE(e)}`,e.line)}function XE(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:zE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var ZE=e=>n(e.join(`.`));function QE(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(zE(r)&&!e.fixed.has(r),t,()=>`${n(a)} is ${XE(e,r)}, which a header cannot add to`),i=r}return i}function $E(e,t,n,r){e.pending.clear();let i=QE(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,()=>`${ZE(n)} is ${XE(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,()=>`${ZE(n)} is ${XE(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function eD(e,t,r){return!zE(r)||e.fixed.has(r)?`${n(t)} is ${XE(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 tD(e,t,n,r){VE(t,e.current,e.pending,n,r,(t,n)=>eD(e,t,n)),zE(r)&&e.fixed.add(r)}var nD={__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 rD(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 qT(nD[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function iD(e){rD(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=JE(n);e?.header===!0?$E(r,n,e.keys,e.array):e!==void 0&&tD(r,n,e.keys,e.value),YE(n)}return t}function aD(e){if(typeof e!=`string`)return null;let t=/^(?:github:|(?:git\+)?(?:(?:https?|ssh|git):\/\/(?:[\w.~%!$&'()*+,;=:-]*@)?(?:www\.)?github\.com(?::\d+)?\/|ssh:\/\/(?:[\w.~%!$&'()*+,;=-]*@)?(?:www\.)?github\.com:|(?:[^@/:]+@)?(?:www\.)?github\.com:))?([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/iu.exec(e.trim().replace(/#.*$/su,``)),n=t&&`${t[1]}/${t[2]}`;return n&&Mt(`github`,n)?n:null}function oD(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 sD=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function cD(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Mt(`directory`,n)?{directory:n}:{}}function lD(e){let t=e?.repository,n=aD(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=oD(e.homepage,n),r!==void 0&&sD(r)&&(r=void 0)),{github:n,...cD(r)}}function uD(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?iD(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function dD(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)?gi({repo:{github:n}}):null}function fD(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?uD(t?.files,`composer.json`):r===`cargo`?uD(t?.files,`Cargo.toml`)?.package:uD(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=gi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?lD(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>dD(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 pD=new WeakMap;function mD(e,t){let n=pD.get(e);if(n||pD.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+=ha(n),a+=Yt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var hD=new Set([`cargo`,`composer`,`soldeer`]);function gD(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 _D(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])}yD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=fD(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function vD(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=gD(n,r,a);if(!hD.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 yD(e,t,n){for(let r of e.dirs.values())yD(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=gD(e.sourcePath,r,n);if(hD.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 hD.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=bD(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 bD(e,t){let n=t.package;return n?`${n.name}${n.version?`${hD.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function xD(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}/${bD(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 SD(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 CD(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 wD([e,t],[n,r]){return bD(e,t).localeCompare(bD(n,r))||t.path.localeCompare(r.path)}function TD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(wD))TD(SD(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 ED(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 DD(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?ED(r.github.github,_i({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return ED(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:gD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=gi(a),r=gi({repo:{github:n?.github}}),i=e??r;return i?ED(i,typeof a.repo?.directory==`string`?_i(a.repo):r?.toLowerCase()===i.toLowerCase()?_i({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=fD({name:c.name,ecosystem:u},c,0);return d.github?ED(d.github,d.directory??``,l,d.commit,d):null}function OD(e,t=null){return A`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??M}" data-tooltip-commit-info="${it(t,e.commit,e.github)??M}" data-tooltip-package="${e.package?.name??M}" data-tooltip-ecosystem="${e.package?.ecosystem??M}" data-tooltip-version="${e.package?.version??M}">${k(ia)}${e.package?A`<span hidden data-tooltip-package-icon>${Qe(e.package.ecosystem)}</span>`:M}</a>`}var kD=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,AD=new Map,jD=new WeakMap,MD=null;function ND(e){if(!e){queueMicrotask(PD);return}if(PD(),AD.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&ND(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{jD.get(e)?.width!==FD(e)&&ID(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>ID(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),AD.set(e,()=>{n.disconnect(),r.disconnect()})}function PD(){for(let[e,t]of AD)e.isConnected||(t(),AD.delete(e))}function FD(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 ID(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=FD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=jD.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}=LD(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`);jD.set(e,{rows:l,width:r});let u=e.closest(kD)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function LD(e,t,n,r){let i=getComputedStyle(e);MD??=document.createElement(`canvas`).getContext(`2d`),MD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*MD.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 RD(e){let t=e.closest(kD)?.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 zD=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),BD=4194304;function VD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return zD.has(t)?t:null}function HD(e,t,n=()=>vt(e,t)){return VD(e)!==null&&ha(t)<=BD&&n().category===`minified`}var UD=e=>e.bundle??e.json??e,WD=/\\(?: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,GD={b:`\b`,f:`\f`,n:`
|
|
166
|
-
`,r:`\r`,t:` `,v:`\v`},KD=e=>e.replaceAll(WD,(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)?``:GD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),qD={i:`ı`,k:`K`,s:`ſ`},JD=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...qD[e.toLowerCase()]??``]);function YD(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 XD(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[KD(t),t]:[KD(t)]:e==="`"&&t.includes("${")?[]:[t]}var ZD=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,QD=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,$D=/[ \t]*[,)]/uy,eO=(e,t,n)=>(e.lastIndex=n,e.test(t)),tO=(e,t,n,r)=>t!=="`"&&eO(ZD,e,n)||eO(QD,e,n)&&eO($D,e,r),nO=/^\.\.?(?:\/|$)/u,rO=/\.(?:json|node)$/u,iO=[`.js`,`.json`,`.node`],aO=/(?:^|\/)\.{0,2}$/u,oO=/[^/.][^/]*\.[^/]*$/u;function sO(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 cO=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||gO(t[n])===e))?t.slice(e.length).join(`/`):null,lO=(e,t,n)=>cO(e,sO([...e,...t===``?[]:t.split(`/`)],n)),uO=e=>new Set([e,e.replaceAll(`\\`,`/`)]),dO=(e,t,n)=>[...uO(n)].filter(e=>nO.test(e)).map(n=>lO(e,t,n)),fO=/[%?#\\\t\n\r]|[\0- ]$/u;function pO(e,t,n){if(!nO.test(n))return null;if(!fO.test(n))return lO(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:cO(e,sO([],decodeURIComponent(i)))}catch{return null}}var mO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,hO=e=>typeof e==`string`&&mO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(gO):[],gO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function _O(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,gO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(gO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:gO}}}function vO(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 yO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>vO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function bO(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=yO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=yO(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 xO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function SO(e,t,n,r,i){let a=pO(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=gO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=xO(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:xO(`${o[0]}${e}x`).length-1,before:e,length:xO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(oO.test(e)||pt.test(e))?!1:t===l||p.some(({after:e,at:n,before:r,length:i})=>{let a=(t.length-i)/s+1;if(!Number.isInteger(a)||a<=0)return!1;let c=o.join(`${r}${t.slice(n,n+a)}${e}`);return c===t||(c.includes(`//`)||c.startsWith(`/`))&&xO(c)===t})).map(([e])=>e)}var CO=65536,wO=Symbol(`every file`),TO=(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>CO?wO:r.replaceAll(`*`,a)}]}),EO=(e,{exports:t,hasExports:n},r)=>n?TO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===wO?wO:pO(e,``,t)):[pO(e,``,r)];function DO({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 OO=(e,t)=>DO(e,t===``?`index`:`${t}/index`,iO);function kO(e,t,n,r,i){if(r===null)return[];let a=i?null:DO(t,r,[``,...iO]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>bO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...uO(e)].map(e=>lO(n,r,e))).filter(e=>e!==null).map(e=>DO(t,e,[``,...iO])??OO(t,e)).filter(e=>e!==null);return o.length>0?o:[OO(t,r)].filter(e=>e!==null)}var AO=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>bO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),jO=64,MO=new WeakMap;function NO(e){let t=MO.get(UD(e));if(t)return t;t=new Set;let n=Bt(e),{installed:r,cased:i,folding:a}=_O(n),o=[],s=bO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=hO(s.name),l=(e,t)=>!(t===`require`?rO:oO).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${gO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||ct(a,r)||r?.runnable===!1||!l(e,i)&&!l(a,i)||(t.add(a),typeof r==`string`&&o.push(a))}}},f=(e,t)=>{let r=kO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...kO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>bO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>jO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,gO(e)]):[];for(let[t,n,r]of p)for(let i of SO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)ct(e,t)&&o.push(e);let m=AO(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&gO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=YD([...c.length>0?JD(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>EO(c,s,e),y=!1,b=(e,t)=>{if(e!==wO)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 TO(m,e)){let e=r===wO?[wO]:r.startsWith(`./`)?[pO(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(!nO.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 dO(c,r,i))f(e,aO.test(i));d(pO(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 XD(s,o))te(e,i,()=>tO(r,s,a,a+o.length+2))}}return MO.set(UD(e),t),t}var PO=new WeakMap;function FO(e,t){let n=PO.get(UD(e));if(n||PO.set(UD(e),n=new Map),!n.has(t)){let r=Bt(e).get(t);n.set(t,ue(t,typeof r==`string`?r:null,Vt(e).get(t),NO(e).has(t)))}return n.get(t)}var IO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,LO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:IO(n),exfiltration:IO(r),hosts:IO(i),readability:t&&{...t,controls:IO(t.controls,Number)}});function RO(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:IO(e.found),...e.added?{added:IO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var zO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(RO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,LO(t)])),dependencies:e.dependencies,score:e.score??null}),BO=e=>e?.npm?e.risk?.()?.files??null:null,VO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function HO(e,t){return e?.npm?BO(e)?.get(t)??VO:FO(e,t)}var UO=({names:e,loop:t})=>[e>=mt&&`${e.toLocaleString(`en`)}${e===gt?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function WO(e,t,n){return n===Bt(e).get(t)&&typeof n==`string`?HO(e,t).readability:KO(e,t,n)}var GO=new WeakMap;function KO(e,t,n){let r=GO.get(e);r||GO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=vt(t,n);return r.set(t,{text:n,read:a}),a}function qO(e,t){let n=Tt(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${wt.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var JO=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${dt} characters, the longest ${t.toLocaleString(`en`)}`;function YO(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>JO(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 XO(e,t=!1){if(!e)return M;let n=bt(e),{tag:r,short:i,mark:a}=wt.get(n);return A`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${YO({...e,category:n})}">${t?i??r:r}</span>`}function ZO(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||bt(e)===t?M:XO({...e,category:t})}function QO(e,t=null){let n=e?St(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(Ct(e,n)))):[];if(n.length===0)return M;let r=t=>t===`long`?`${JO(e)}${e.category===`long`?`, among readable ones`:``}`:qO(e.controls,t);return n.map(t=>A`<span class="${`npm-flag-tag is-${Ct(e,t)}`}" data-tooltip="${r(t)}">${wt.get(t).tag}</span>`)}function $O(e){if(!e)return M;let t=bt(e);return t===`ascii`||t===`map`?QO(e):ek(e)}var ek=e=>e?A`${QO(e)}${XO(e)}`:M;function tk(e,t,n,r=!0){let{stamps:i,readability:a}=HO(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: ${UO(s)}`}">Obfuscated</span>`:M}`}var nk=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>`,rk=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`,ik=8,ak=4,ok=2,sk=30,ck=2,lk=`The server's copy is of another file than the one open.`,uk=`The server didn't pretty-print this file.`,dk=e=>!(e>=400&&e<500&&e!==429),fk=5e3,pk=3e5,mk=new Map;function hk(e,t,n,r){if(!t?.retry){mk.delete(e);return}let i=mk.get(e)??0;mk.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min(fk*2**i,pk))?.unref?.()}var gk=new Map,_k=0,vk=()=>_k,yk=new Map,bk=(e,t)=>`${e.integrity}\0${t}`,xk=new Map,Sk=new Map,Ck=new WeakMap;function wk(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=Ck.get(e);return i||Ck.set(e,i=new Map),i.has(n)||i.set(n,HD(n,r,()=>KO(e,n,r))),i.get(n)}var Tk=!1,Ek=new Set,Dk=new Set;function Ok(e,t){gk.delete(e),gk.set(e,t),Tk||(Tk=!0,Dk=Ek,Ek=new Set,setTimeout(()=>{Tk=!1})),Ek.add(e),kk()}function kk(){for(let[e,t]of gk){if(gk.size<=ik)break;Ek.has(e)||Dk.has(e)||t.status===`loading`||(gk.delete(e),yk.delete(e))}}var Ak=0,jk=[];async function Mk(e){Ak<ck?Ak++:await new Promise(e=>{jk.push(e)});try{return await e()}finally{let e=jk.shift();e?e():Ak--}}async function Nk(e,t,n,r,i,a){let o;try{let e=a??await Ei(i),{text:t,source:s}=await Mk(()=>n.npm?Hb(n.npm.name,n.npm.version,r,e):Bb(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Ei(t)}:{status:`error`,message:lk,retry:!0}}catch(n){if(n?.name===`AbortError`){gk.get(e)===t&&(gk.delete(e),yk.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:dk(n?.status)}}if(gk.get(e)!==t)return;gk.set(e,o),_k++;let s=yk.get(e),c=o.status===`error`&&o.retry;c||yk.delete(e),hk(`file ${e}`,c?o:null,()=>gk.get(e)===o&&gk.delete(e),()=>yk.get(e)),s?.(),kk()}function Pk(){for(let[e,t]of xk){if(xk.size<=ak)break;t.rest&&xk.delete(e)}}function Fk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Ik(e,t,n,{npm:r}){let i=Bt(n),a;try{await Vb(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 Ei(s)?{status:`ready`,text:r,hash:await Ei(r)}:typeof r==`string`?{status:`error`,message:lk,retry:!0}:{status:`error`,message:o,retry:dk(a)};t.copies.set(e,c),_k++,Fk(t,e)}),a={status:`error`,message:uk,retry:!1}}catch(n){if(n?.name===`AbortError`){xk.get(e)===t&&xk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:dk(n?.status)}}t.rest=a,_k++;for(let e of[...t.notifiers.keys()])Fk(t,e);Pk()}function Lk(e,t,n,r,i){let a=e.integrity,o=xk.get(a);return xk.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Ik(a,o,e,t)),xk.set(a,o),Pk(),r===Bt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:lk,retry:!1}}function Rk(e,t,n,r,i){return F.bundleSourcePretty?t.npm?Lk(e,t,n,r,i):zk(e,n,r,i,t):null}function zk(e,t,n,r,i=e){let a=bk(e,t),o=gk.get(a),s=o??{status:`loading`};return Ok(a,s),(s.status===`loading`||s.retry)&&yk.set(a,r),o||Nk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Bk=new Set;function Vk(e){e&&(Bk.size===0&&setTimeout(()=>{let e=[...Bk];Bk.clear();for(let t of e)t()},sk),Bk.add(e))}function Hk(){for(let[e,t]of Sk){if(Sk.size<=ok)break;t.ended&&Sk.delete(e)}}async function Uk(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`&&dk(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Bt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Ei(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Ei(a)}:typeof a==`string`?{status:`error`,message:lk,retry:!0}:{status:`error`,message:s,retry:dk(o)}),_k++,Vk(t.notify)};await(n.npm?Wb(n.npm.name,n.npm.version,r.npm.version,e):Ub(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){Sk.get(e)===t&&Sk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:dk(n?.status)}}Object.assign(t,{ended:!0,rest:a}),_k++,hk(`comparison ${e}`,a,()=>Sk.get(e)===t&&Sk.delete(e),()=>t.notify),Vk(t.notify),Hk()}function Wk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=Sk.get(o);Sk.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},Uk(o,s,e,t)),Sk.set(o,s),Hk();let c=n===`base`?e:t;return i===Bt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?zk(c,r,i,a):{status:`loading`})):{status:`error`,message:lk,retry:!1}}function Gk(){if(F.bundleSourcePretty=!F.bundleSourcePretty,!F.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of gk)e(n)&&gk.delete(t);for(let[t,n]of xk)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&xk.delete(t);for(let[t,n]of Sk)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&Sk.delete(t)}function Kk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function qk(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 Jk(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function Yk(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 Xk=4,Zk=new Map;function Qk(e,t,n,r,i){if(!F.bundleSourceLockfile)return null;let a=Yk(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=Zk.get(o)??{status:`loading`};Zk.delete(o),Zk.set(o,s);for(let e of Zk.keys())Zk.size>Xk&&Zk.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 $k(){F.bundleSourceLockfile=!F.bundleSourceLockfile;for(let[e,t]of Zk)t.status===`error`&&Zk.delete(e)}var eA=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,tA=e=>`link:${e}`,nA=e=>e===`.`?`__own__`:e;function rA(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[tA(e),nA(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[tA(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])=>nA(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])=>tA(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var iA=[`graph`,`matrix`,`dependencies`],aA=class extends pa{static properties={lockfile:{attribute:!1}};static styles=da`: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=rA(this.lockfile),this._prep||this._detach(),w.selected=null,w.solo=null,w.focusedPkg=null)}render(){return this.lockfile?this._prep?A`<div class="slot"></div>`:A`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&w.graphState===this._graphState&&ar(),this._graphState=null,this._bundleLayout!==null&&(w.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=w.bundleLayout,w.bundleLayout=w.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await xT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:iA,hideAllFiles:!0};await ST(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=w.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){bT()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){bT()?.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)iA.includes(n)&&n!==w.bundleLayout&&(w.lockfileLayout=w.bundleLayout=n,w.selected=null,w.solo=null,w.layoutCache=null,ar(),this._attach());else if(r!==void 0)w.solo=w.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),w.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){w.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),w.graphState?.requestDraw?.()}else if(t(`#g2-fullscreen`))document.body.classList.toggle(`report-fullscreen`);else return;e.stopPropagation()}_input(e){let t=e.composedPath()[0];t?.id===`g2-path-filter`&&(w.pathFilter=t.value,w.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,aA);function oA({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 sA=1024,cA=1024*sA,lA=[`tiny`,`small`,`medium`,`large`,`gigantic`],uA={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*sA,128*sA,cA,8*cA]};function dA(e,t){let n=uA[e].findIndex(e=>t<e);return lA[n===-1?lA.length-1:n]}function fA(e,t,n){return A`<span class="${`npm-sized is-${dA(e,t)}`}">${n}</span>`}var pA=[`preinstall`,`install`,`postinstall`];function mA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),pA.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function hA(e,t=[]){return mA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function gA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return mA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var _A=12096e5,vA=(e,{minimumReleaseAge:t=_A,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,yA=72,bA={top:6,right:0,bottom:18,left:40},xA=24,SA=4,CA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),wA=new Intl.NumberFormat(`en`),TA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,EA=TA({month:`short`,day:`numeric`}),DA=TA({month:`short`,day:`numeric`,year:`numeric`}),OA=TA({month:`short`,year:`numeric`}),kA=TA({month:`long`,year:`numeric`}),AA=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,jA=(e,t)=>{let n=t&&ye(e);return A`<dd class="${`npm-downloads-tier ${n?`is-mid`:_e(e)}`}" data-tooltip="${n?t:M}">${AA(e)}</dd>`},MA={week:{label:`Weekly`,of:e=>fe(e).slice(-52),name:e=>`${EA(e.from)} \u2013 ${DA(e.to)}`},month:{label:`Monthly`,of:pe,name:e=>kA(e.from)}},NA=(e,t)=>`${wA.format(e)} downloads, ${t}`;function PA(e){let t=pe(e).at(-1);return t?FA(t):null}var FA=({total:e,from:t})=>({total:e,month:kA(t)});function IA(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));return[1,2,2.5,5,10].map(e=>e*t).find(t=>t>=e)}var LA=class extends pa{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=MA[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(MA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&NA(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:NA(t,`${DA(de(n.start,n.days.length-e.length))} \u2013 ${DA(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<=bA.left+bA.right)return null;let r=n-bA.left-bA.right,i=yA-bA.bottom,a=IA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-bA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>bA.left+(e+.5)*l:e=>bA.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-bA.left)/l))),p=OA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(xA,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(SA,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:OA(m.to),...h,ticks:[[0,CA.format(0)],[a,CA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${OA(m.to)}; the latest ${this._unit}: ${NA(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?CA.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">${MA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||M}">${Object.keys(MA).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(MA).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>${wA.format(e.total)}</strong> <span>${MA[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>${jA(this._tier,this.known)}</div>`:M}</dl>${e?this._controls(t):M}</div>${e?this._plot(t):M}`}_plot(e){let t=this._shape;if(!t)return A`<div class="npm-downloads-plot" style="${E({height:`${yA}px`})}"></div>`;let n=this._width;return A`<div class="npm-downloads-plot" style="${E({height:`${yA}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="${yA}" viewBox="0 0 ${n} ${yA}" aria-hidden="true">${t.ticks.map(([e,r])=>j`<line class="npm-downloads-grid" x1=${bA.left} x2=${n-bA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
|
|
167
|
-
<text class="npm-downloads-tick" x=${bA.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="${bA.left}" y="${yA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-bA.right}" y="${yA-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=${bA.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`,LA);function RA(e,t){let n=zA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var zA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),BA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function VA(e,t){let n=t.filter(e=>BA.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 HA=e=>e?.replace(/\.git$/u,``),UA=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&&HA(r)?[n,HA(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&&HA(r)?[n,HA(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))&&HA(n.slice(r+1))?[n.slice(0,r),HA(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,HA(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&&HA(r)?[n,HA(r),t.slice(1)]:null}}]]),WA=new Map([...UA.values()].map(e=>[e.domain,e])),GA=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...UA.keys()].map(e=>`${e}:`)]);function KA(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 qA=e=>{try{return new URL(e)}catch{return null}};function JA(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=GA.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(qA(r))return qA(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}`),qA(a)}function YA(e){if(!e)return null;let t=JA(KA(e)?`github:${e}`:e);if(!t)return null;let n=UA.get(t.protocol.slice(0,-1)),r=n??WA.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 XA(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=YA(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=qA(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 ZA(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var QA=e=>XA(e)===`registry`,$A=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function ej(e){let t=[];for(let[n,r]of $A)for(let[i,a]of Object.entries(e?.[n]??{})){let e=ZA(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ei(e)&&QA(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function tj(e,t){let n=e=>new Map(ej(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 nj=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>A`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function rj(e,t=null,n=void 0){let r=wj(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>Lb(e.name,e.version,t,{signal:n}),zO);return r.status===`ready`?r:null}function ij(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 aj=e=>e.displayLabel??e.label,oj=class extends xe{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[xe.styles,da`.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=ij(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(aj)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return aj(e)}optionIcon(e){return e.format?A`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?k(Xi):e.format===`sourcemap`?k(Yi):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`,oj);var sj=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function cj(e){let t=String(e??``).trim(),n=sj.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 lj=(e,t=null)=>t==null?e:`${e}@${t}`;function uj(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=RA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function dj(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 fj(e,t){let n=zt(e,t.files);return{...n,npm:e.npm,npmEntries:uj(e.npm.manifest,n.json.sources),risk:()=>rj(e.npm)}}function pj(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:si.has(t)?t:`overview`,...n}:null}var mj=3,hj=new Map,gj=new Map,_j=1e4,vj=3e5,yj=null;function bj(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==yj&&(hj.clear(),gj.clear(),yj=e),hj}function xj(e,t){let n=bj();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>mj;)n.delete(n.keys().next().value)}async function Sj(e,t,n){let r=bj().get(`${e}@${t}`);if(r)return xj(r.entry,r.details),r;let i=await gb(e,t,n),a=dj(i),o=fj(a,i);return a.npm.private||xj(a,o),Cj(i),{entry:a,details:o}}function Cj({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]&&gj.get(r)?.status!==`ready`&&gj.set(r,{status:`known`,data:n[e]})}}function wj(e,t,n,r){bj();let i=`${e}\0${t}`,a=gj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return gj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return gj.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(_j*2**(t-1),vj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>gj.get(i)===o?e===null?(gj.delete(i),null):(gj.set(i,e),e.status===`error`&&setTimeout(()=>{gj.get(i)===e&&X()},e.wait).unref?.(),Ej(),null):null).catch(()=>{}),o}var Tj=!1;function Ej(){Tj||(Tj=!0,queueMicrotask(()=>{Tj=!1,X()}))}function Dj(e,t=void 0){return wj(`versions`,e,()=>Nb(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 Oj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function kj(e,t,n=Date.now()){let r=Oj(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&&Aj(e,i,n)&&{age:Pj(i,n)}}})}function Aj(e,t,n=Date.now()){return e.status===`ready`&&vA(t,{minimumReleaseAge:e.teamScoped?0:_A,now:n})}var jj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function Mj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?jj.format(-n,`day`):n<730?jj.format(-Math.floor(n/30.44),`month`):jj.format(-Math.floor(n/365.25),`year`);return`${DA(Date.parse(e))} \xB7 ${r}`}var Nj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function Pj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?Nj.format(-n,`minute`):n<1440?Nj.format(-Math.floor(n/60),`hour`):Nj.format(-Math.floor(n/1440),`day`)}var Fj=e=>DA(Date.parse(e)),Ij=e=>`Published on ${Fj(e)}`;function Lj(e){let{name:t,version:n}=e.npm,r=Dj(t),i=kj(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 Sj(t,e)).details,dependencies:Qj,openDependency:iM,open:(e,n,r)=>Rj(t,e,`compare`,n?{compareSpec:n,...ri(r)}:{})}}function Rj(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 zj(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 Bj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,Vj=new Set([`overview`,`compare`]);async function Hj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return zj({input:F.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=lj(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&&bj().has(`${r}@${i}`);!s&&!e&&(zj({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;Dj(r,u.signal),i!=null&&Bj.test(i)&&Vj.has(a)&&rj({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await Sj(r,i??`latest`,{signal:Z_()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(Gj=null,zj({input:o,error:e.message}),{view:`npm`})}if(!t()||!I())return u.abort(),!1}Gj?.name===r&&Gj.spec===i&&(qj([o,...Kj().filter(e=>e!==o)]),Gj=null),ar();let u=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null;return a===`review`&&(F.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{}}),F.bundles=[c],aK(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:ni(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}),pj(c,F.bundleDetailsTab,Lx(F))}var Uj=10,Wj=()=>`deepview.npm.recent.${F.managedSession?.id??`anonymous`}`,Gj=null;function Kj(){try{let e=JSON.parse(localStorage.getItem(Wj())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&cj(e)):[]}catch{return[]}}function qj(e){try{localStorage.setItem(Wj(),JSON.stringify(e.slice(0,Uj)))}catch{}}function Jj(e){qj(Kj().filter(t=>t!==e)),X()}function Yj(e){let t=cj(e);if(!t){F.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},X();return}Gj=t,Rj(t.name,t.spec)}function Xj(e){e.preventDefault(),Yj(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function Zj(){let e=F.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(F.managedSession?.role),n=Kj();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(Xi)}</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="${Xj}"><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="${()=>Yj(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>Jj(e)}">×</button></li>`)}</ul></section>`:M}</section>`}function Qj(e,t){let n=tj(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?rj(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 $j=e=>{let t=rj(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},eM=({kind:e,name:t})=>`${e??``}\0${t}`,tM=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,nM=e=>tM.exec(ZA(e)?.spec??e.trim())?.[1]??null,rM=e=>ZA(e)?.name??null;function iM({opens:e,from:t,to:n}){if(!e)return;let r=n&&nM(n),i=t&&nM(t);!i||!r||i===r||rM(t)!==rM(n)?Rj(e):Rj(e,r,`compare`,{compareSpec:i})}function aM(e){let t=ej(e.npm.manifest);if(t.length===0)return M;let n=$j(e.npm);return oA({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(eM(e))??[],s=A`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${nj(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="${()=>Rj(a)}">${s}</button>`:A`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var oM=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function sM(e){let t=$j(e),n=Map.groupBy(ej(e.manifest).flatMap(e=>(t.get(eM(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return oM.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 cM(e,t){let{name:n,version:r}=e.npm,i=wj(`tags`,`${n}@${r}`,()=>Ib(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?M:A`<span class="bundle-origin-tags">${i.tags.map(e=>A`<a class="bundle-origin-link bundle-tag-link" href="${nt(t,e)}" target="_blank" rel="noopener noreferrer">${k(Gi)}<span>${e}</span></a>`)}</span>`}function lM(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 uM(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 dM=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,fM=e=>e.replace(dM,`$1`);function pM(e,{prefix:t=``,githubFigures:n=M,provenance:r=M,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?ot({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=Dj(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">${fM(o.deprecated)}</dd>`:M} ${o.description?A`<dt>Description</dt><dd>${o.description}</dd>`:M} ${o.license?A`<dt>License</dt><dd>${VA(o.license,[...a??[]]).map(({text:e,file:t})=>lM(t,a,e))}</dd>`:M} ${o.author?A`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?A`${uM(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">${uM(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>${Aj(l,u)?A`<span class="npm-recent">${Mj(u)}</span>`:Mj(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(ia)}<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(aa)}<span>${c.commit.text}</span></a> ${cM(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 mM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?lM(n,t,e):e});function hM(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:RA(r[e],t)??zA(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=hA(r,t),l=ej(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))}${lM(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>${mM(n,t)}</code></div>`)}</dd>`:M}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${fA(`dependencies`,l,l===0?`None`:l)}${sM(e.npm)}</dd>`}var gM=class extends pa{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=kj(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&&Rj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,gM);var _M=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>`,vM=[[`commits`,`Commits`,_M(j`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,_M(j`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,_M(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`,_M(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`,_M(j`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,_M(j`<path d="M5 3.25v9.5L12.75 8z"/>`)]],yM=new Set(vM.map(([e])=>e)),bM=`commits`;function xM(e){return yM.has(e)&&(bM=e),bM}var SM=e=>A`<div class="activity-views" role="group" aria-label="Activity">${vM.map(([t,n,r])=>A`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`,CM=/^[a-f\d]{40}$/iu,wM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),TM=({repo:e,path:t})=>t?`${e}/${t}`:e,EM=new Map,DM=new Map,OM=3e4,kM=null;function AM(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==kM&&(EM.clear(),DM.clear(),kM=e),EM}function jM(e,t){let n=AM(),r=n.get(e);if(r&&!r.stale&&!(r.status===`error`&&Date.now()>=r.retryAt))return r;let i=r?.stale?{status:`ready`,value:r.value}:{status:`loading`};return n.set(e,i),t().then(e=>({status:`ready`,value:e}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+OM}).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 MM(e){let t=AM().get(e);t?.status===`ready`?AM().set(e,{...t,stale:!0}):AM().delete(e)}var NM=()=>jM(`repositories`,()=>vb()),PM=e=>jM(`refs\0${e}`,()=>yb(e)),FM=({repoId:e,repo:t})=>t??NM().value?.find(t=>t.repoId===e)?.fullName??null,IM=(e,t)=>DM.get(`${e}\0${t}`)??null;function LM(e,t,n){AM(),n&&DM.set(`${e}\0${t}`,n)}function RM(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:`${TM({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 zM=/^readme(?:\.[^/]*)?$/iu;function BM(e,t=new Map){let n=e.filter(e=>zM.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 VM(e,t){let n=zt(e,t.files),r=n.json.sources.filter((e,t)=>typeof n.json.sourcesContent[t]==`string`);return{...n,repository:e.repository,npmEntries:BM(r,n.fileSizes)}}function HM(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:ci.has(t)?t:`code`,...n}}function UM({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?{...CM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ri(c.mode)}:{};G.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var WM=e=>e.commit??e.ref??``,GM=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function KM({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&CM.test(r.name)?r.name.toLowerCase():null;UM({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:GM(r),revision:r}})}function qM({repoId:e,repo:t,commit:n,revision:r},i,a){UM({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:GM(r),revision:r}})}function JM(e){F.currentView=`repository-code`,F.repositoryCodeOpening=e,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1})}function YM(e){let t=F.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===W()?t.repository:null}var XM=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function ZM(e,t){if(XM.has(t?.code))try{let t=await bb(e.repoId,WM(e),e.path,{signal:Z_()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));F.repositoryCodeOpening?.error&&wM(F.repositoryCodeOpening,e)&&n.length>0&&CM.test(t.commit)&&(F.repositoryCodeOpening={...F.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},X())}catch{}}async function QM(e){try{let t=await bb(e.repoId,WM(e),``,{signal:Z_()});F.repositoryCodeOpening===e&&CM.test(t?.commit??``)&&(F.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},X({animate:!1}))}catch{}}function $M({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){UM({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function eN(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=ci.has(e.bundleTab)?e.bundleTab:`code`;AM();let s=F.currentView===`bundles`&&F.bundles?.[0]?.repository&&F.bundleDetails?.integrity===F.bundles[0].integrity?F.bundles[0]:null,c=i&&s&&wM(s.repository,{repoId:r,commit:i,path:a})?s:null,l=c?F.bundleDetails:null,u=F.currentView===`repository-code`?F.repositoryCodeOpening:null;if(!c&&i&&u?.code===`directory-too-large`&&wM(u,{repoId:r,commit:i,path:a}))return JM({...u,tab:o}),{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o};if(!c&&li.has(o)){let s=e.revision===void 0?i?DM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;MM(`refs\0${r}`);let c=NM().value?.find(e=>e.repoId===r)?.fullName,l={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??c??null,revision:s,error:null},u=i;if(!u){JM(l),G?.showing(e),n();try{let t=await bb(r,WM(e),``,{signal:Z_()});u=CM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(JM({...l,error:e.message,code:e?.code??null}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o})}if(!t())return!1;if(!u)return JM({...l,error:`The server answered with no commit.`}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o}}return s&&DM.set(`${r}\0${u}`,s),JM({...l,commit:u,ref:null,historyOnly:!0}),n(),{view:`repository-code`,repoId:r,commit:u,path:a,bundleTab:o}}if(!c){let u=e.revision===void 0?i?DM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,d=NM().value?.find(e=>e.repoId===r)?.fullName,f={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??d??null,revision:u,error:null};MM(`refs\0${r}`);let p=o===`treemap`,m=s&&!p?{integrity:s.integrity,generation:W(),repository:{repoId:r,repo:f.repo,commit:i,path:a,revision:u}}:null;m?(F.repositoryCodePending=m,X({animate:!1})):(JM(f),n()),p&&!i&&QM(f),G?.showing(e);let h;try{if(h=await _b(r,WM(e),a,{signal:Z_()}),h?.repoId!==r||i&&h.commit!==i||h.path!==a||!CM.test(h.commit??``))throw Error(`The server answered with another directory.`)}catch(e){if(e?.name===`AbortError`||!t())return!1;let n=!i&&e?.code===`directory-too-large`&&CM.test(e.commit??``)?e.commit.toLowerCase():i,s={...f,commit:n,error:e.message,code:e?.code??null};return JM(s),ZM(s,e),{view:`repository-code`,repoId:r,commit:n,path:a,bundleTab:o}}finally{m&&F.repositoryCodePending===m&&(F.repositoryCodePending=null,F.currentView===`bundles`&&F.selectedBundle===m.integrity&&X({animate:!1}))}if(!t()||!I())return!1;u&&DM.set(`${r}\0${h.commit}`,u),c=RM(h,u),l=VM(c,h)}ar();let d=F.bundleCompare?.bundle===c.integrity?F.bundleCompare:null,f=e.compareCommit??e.compareTarget??null;return F.bundles=[c],aK(c.integrity,o),o===`compare`&&f?F.bundleCompare={bundle:c.integrity,target:f,mode:ni(e.compareMode)}:d&&o!==`compare`&&(F.bundleCompare=d),o===`code`&&e.file!=null?F.bundleCodeFileRequest={bundle:c.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:c.integrity,path:e.filePath}),F.bundleDetails=l,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}),HM(c,F.bundleDetailsTab,Lx(F))}function tN({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 nN=new Set([`issues`,`pulls`,`agents`,`pulse`]);function rN({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 iN=class extends pa{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=rN(e);this._edit=t??{kind:e.kind,name:e.name},t&&KM(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??tN(this.repository,this.refs),s=nN.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&&UM({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="${()=>qM(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="${()=>qM(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(aa)}<span>${n.slice(0,7)}</span></a>`:M}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,iN);function aN(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="${()=>qM({...e,commit:t.commit},n.path,e.tab)}">${Je}<span>${n.name}</span></button></li>`)}</ul></div>`:M}var oN=new Map,sN=new Set,cN=null;function lN(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==cN&&(oN.clear(),cN=e),oN}var uN=()=>{for(let e of sN)e.requestUpdate()};function dN({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=lN().get(r);if(i)return i;let a={key:r,status:`loading`};return oN.set(r,a),Cb(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 oN.get(r)===a&&oN.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=>{oN.get(r)===a&&(e?.name===`AbortError`?oN.delete(r):oN.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(uN),a}var fN=class extends pa{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),sN.add(this)}disconnectedCallback(){sN.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return M;let e=dN(this.repository);return e.status===`error`?A`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{oN.delete(e.key),uN()}}">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);function pN(e){let t=ut(e),n=!1,r=null;async function i(){n=!0;try{await t.load()}catch(e){r=String(e?.message??e)}n=!1,X()}return e=>t.module?e():r?A`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${r} <button type="button" @click="${()=>{r=null,X()}}">Retry</button></div>`:(n||i(),A`<div class="bundles-slide-placeholder">Loading…</div>`)}var mN=pN(`./activity.js`),hN=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>`,gN=new Map([[`registry`,{label:`Source: npm registry`,icon:Xe}],[`repository`,{label:`Source: GitHub repository`,icon:k(ia)}],[`osv`,{label:`Source: OSV`,icon:hN}]]);function _N(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function vN(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var yN=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 bN(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 xN(e,t){return A`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${_N(e)}</span> ${typeof t==`number`?A`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:M}</div>`}function SN(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??vN(t)??(typeof e.id==`string`?e.id:null),r=gN.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}${yN}</a>`:M}</span>`}function CN(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?``:`, `}${bN(e)}`)}</span>`:M}function wN(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">${xN(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>`} ${SN(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} ${CN(e.cwe)}</div>${n?A`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:M}</div></div></li>`}var TN=(e,t)=>HO(e,t).runsCode,EN=(e,t=e.length>=lt)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,DN=/^[\w$.]+$/u,ON=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=jt.get(e);return t&&DN.test(t)?t:n})].map(([e,n])=>`${e} (${EN([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=lt))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),kN=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},AN=(e,t)=>t===void 0?{path:M,line:M}:{path:e,line:t},jN=(e,t=null)=>[...e].map(([e,n])=>`${jt.get(e).name} (${EN(n)}${t?.has(e)?`, new`:``})`).join(`, `);function MN(e,t,n){return e?[...Map.groupBy(e,([e])=>jt.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=jt.get(r[0][0]),o=r.map(([e,t])=>[jt.get(e).name,EN(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>jt.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=AN(n,n===void 0?void 0:kN(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 NN=(e,t)=>HO(e,t).exfiltration,PN=e=>[...Dt].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),FN=(e,t)=>[...e].map(([e,n])=>`${Dt.get(e).name} (${EN(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),IN=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 LN(e,t,n){return e?Ot(e).map(([e,r])=>{let i=AN(n,n===void 0?void 0:kN([...r.values()]));return A`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${kt(e,r,t)}`}" data-tooltip="${`${IN.get(e)}: ${FN(r,t)}`}">${e}</span>`}):M}var RN=e=>e.toLowerCase().replaceAll(` `,`-`),zN=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),BN={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function VN(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function HN(e,t,n=[]){let r=Object.keys(BN),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 UN(e,t=`accept`){let n=Object.keys(BN);return n.slice(Math.max(n.indexOf(t),n.indexOf(HN(e,null).verdictLimit)))}function WN({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 GN(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`)||WN({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>zN(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 KN(e,t,n=[]){return HN(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(BN).includes(e.status)))}function qN(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 JN=[`critical`,`high`,`moderate`,`low`,`unknown`],YN=e=>JN.includes(e.severity)?e.severity:`unknown`,XN=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function ZN(e){return wj(`stats`,e,()=>Pb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function QN(e){return wj(`advisories`,e,()=>Fb(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function $N(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}${yN}</a>`;return A`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?M:r(eP(e),`socket.dev`)}</span>`}var eP=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function tP(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=wj(`socket`,`${t}@${n}`,()=>Rb(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var nP=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],rP=50,iP=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,aP=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 oP(e){let t=tP(e)?.scores;return t?A`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${nP.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return A`<li><a class="${`npm-extension npm-socket-score ${iP(a,i)}`}" href="${eP(e)}" target="_blank" rel="noopener noreferrer">${aP(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:M}var sP=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),cP=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),lP=new Map,uP=new WeakMap;function dP(e){let t=e?tP({npm:e}):null;return t?(uP.has(t)||uP.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),uP.get(t)):lP}var fP=(e=[])=>e.map(e=>{let t=sP.get(e.severity)??`low`;return A`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${cP(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${cP(e.type)}</span>`});function pP(e,t){return GN(e.npm,QN(e.npm.name),tP(e),rj(e.npm,t?t.npm?.version??`(empty)`:null))}function mP(e,t){let n=WN(e),r=n&&t!==null&&[...t].every(JF)?[]:tP(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`: ${lM(i,t,`its readme`)}`:``}.</p>`:M} ${r.length>0?hP(e,r,t):M}</div>`}function hP(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="${eP(e)}" target="_blank" rel="noopener noreferrer">socket.dev${yN}</a></span><ul>${t.map(e=>{let t=sP.get(e.severity)??`info`;return A`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${cP(e.type)}</span> ${e.file?A`<span class="npm-socket-alert-file">in ${lM(e.file,n)}</span>`:M} ${e.note?A`<p class="npm-socket-alert-note">${e.note}</p>`:M}</li>`})}</ul></div>`}function gP(e,t,n=M){let r=ZN(e.npm.name),i=FF(rj(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">${$N(e)}${t}</div>${n}</div>`}var _P=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>`,vP=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>`,yP=k(oa),bP=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 xP(e){if(!e.npm.manifest.github?.github)return M;let t=ZN(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return M;let r=(e,t,r,i)=>A`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${et(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${CA.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(_P,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(bP,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(vP,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?M:r(yP,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?A`<span class="npm-github-archived">Archived</span>`:M}`}var SP=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:wj(`provenance`,`${e}@${t}`,()=>zb(e,t),e=>({provenance:e.provenance??null}));function CP(e){let t=SP(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function wP(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 TP=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function EP(e){if(e.npm.private)return M;let t=SP(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=wP(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="${TP(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 DP(t,n,r){let i=t.affected.map(e=>n[e]).filter(Boolean);return i.includes(r)?`affects`:i.length>0&&i.every(t=>e(t,r)<0)?`fixed`:`later`}function OP(){let e=F.managedSession?.id;return()=>F.managedSession?.id===e}function kP(e,t){return wN({...e,title:e.title??e.id,severity:YN(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ft({heading:e,severity:n,markdown:r,isCurrent:t}))}function AP(e){let{name:t,version:n}=e.npm,r=QN(t),i=OP(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>DP(e,r.versions,n)),c=XN.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 ${VF(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=>kP(e,i))}</ul></section>`)}`;return oA({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 jP=[...wt].filter(([,{mark:e}])=>e!==null).map(([e])=>e),MP=[...wt].filter(([,{mark:e}])=>e===null).map(([e])=>e),NP=[null,`notice`,`warn`];function PP(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=St(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=Ct(i,r);NP.indexOf(e)>NP.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>wt.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var FP=new WeakMap;function IP(e){let t=e.npm?BO(e):e,n=FP.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,WO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=PP(a.values()),u=Xt(e),d=Vt(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!JF(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,GF(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:YF(r,d,u),content:f},FP.set(e,n)}return n}var LP={key:null,chip:null},RP=e=>`${e.npm.name}@${e.npm.version}`,zP=e=>LP.key===RP(e)?LP.chip:null;function BP(e){let t=zP(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{LP={key:null,chip:null},X()}}}function VP(e,t,n,r,{classes:i=``,tooltip:a=M}={}){let o=zP(e)?.id===t.id;return A`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{LP={key:RP(e),chip:o?null:t},X()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function HP(e,t,n){let{name:r}=wt.get(n),{byPath:i,counts:a,marks:o}=IP(t),s=o.get(n);return VP(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&St(i.get(e)).includes(n)},A`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function UP({counts:e,marks:t,unreadable:n},r,i,a){let o=jP.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 WP(e,t){return UP(IP(t),t.json.sources.length,`files`,n=>HP(e,t,n))}function GP(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=IP(e),o=n?t:void 0;return A`${MN(TN(e,t),void 0,o)}${LN(NN(e,t),KP(r),o)}${tk(e,t,a.get(t))}${$O(i.get(t))}`}var KP=e=>e===void 0||e?.details.npm&&!BO(e.details)?void 0:e&&NN(e.details,e.path);function qP(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=HO(e,t),o=KP(r),s=o===void 0?null:new Map(Ot(a).map(([e,t])=>[e,kt(e,t,o)]));return[...n.map(e=>({name:cP(e.type),severity:sP.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var JP=new WeakMap;function YP(e,t){let n=e&&t?.npm?rj(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!JP.has(n)){let t=new Map;for(let{host:r,places:i}of rF(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}]);JP.set(n,t)}return JP.get(n)}function XP(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 ZP={icon:(e,t)=>qe(e,t.map(([e,t])=>Ge(e,t)).find(ie)),alerts:e=>dP(e?.npm),alertTags:fP,newHosts:YP,newHostTag:XP,tag:(e,t,n)=>GP(e,t,!1,n),flags:(e,t,n)=>qP(e,t,[],n),warning(e,t){let{byPath:n}=IP(e),r=PP(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return UP(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=wt.get(e),n=a.get(e);return A`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},QP=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`]]),$P={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},eF=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function tF(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})=>[QP.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${eF(a.days)}${a.tier===null?``:`, its package npm's ${AA(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 ${$P[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>`}">${aP(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var nF=(e,t)=>[fF(t.get(`malware`)),pF(t.get(`deprecated`)),_F(e,t.get(`publisher`)),vF(e,t.get(`provenance-lost`)),yF(e,t.get(`held-install-scripts`)),...EF(e,t),...xF(e,t),SF(t.get(`new-hosts`)),DF(t.get(`too-new`))],rF=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function iF(e,t){if(!e||!t?.npm)return M;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=lF(n),i=rj(t.npm,e.npm?.version??`(empty)`),a=rF(i),o=[tF(i),...nF(n,a),OF(n,r),...NF(n,r,a.get(`malware`)),LF(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 aF(e){let{npm:t}=e,n=lF([t]),r=rj(t),i=rF(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[tF(r),...nF(a,i),OF([t],n),...NF([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 oF(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?CF(`npm-compare-unreadable`,`Now unreadable`,t,n):wF(`${sF[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var sF={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},cF=e=>[...Et.keys()].map(t=>{let n=e.get(`held-${RN(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return wF(`${sF[n?.severity]} npm-held-file npm-files-${RN(t)}`,t,r,e=>FN(e.found,i(e)),PN(r.map(e=>e.found)))});function lF(e){let t=QN(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 uF=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,dF=e=>JN.find(t=>e.some(e=>YN(e)===t));function fF(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="${fM(e.message)}">Deprecated</span></li>`:M}var mF={critical:`is-from-known`,high:`is-to-unknown`},hF={known:`is-known`,maintainer:`is-maintainer`},gF={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 _F([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 ${hF[t]??`is-unknown`}`}">~${e}</span>`,f=mF[s]??`is-to-known`,p=A`A different npm account published the open version,<br>${gF[u]},<br>after ${gF[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="${AF(`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 vF([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="${AF(`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 yF(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>`:kF(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="${AF(`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 bF=8;function xF(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${sF[t.get(e)?.severity]} npm-held-file ${n}`;return[wF(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>ON(e.found,e.added),oe(n(`held-runs-code`).map(e=>e.found)),null,!1),wF(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>jN(e.found,e.added)),...cF(t),CF(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Wr(e.bytes)),oF(t.get(`now-unreadable`)),wF(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${UO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),CF(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Wr(e.bytes)}, not UTF-8 or holding a NUL`)]}function SF(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,bF).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 wF(`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 CF(e,...t){return wF(`npm-compare-file ${e}`,...t)}function wF(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return M;let s=n.slice(0,bF),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 TF=(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?`${VF(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${AA(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 EF(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="${AF(`From elsewhere than npm's registry`,[e.at(-1)],[kF(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`:sF[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${TF(e,t)?` (${TF(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${AF(`Nothing imports ${t}`,[e.at(-1)],[kF(a.map(t=>[[c(t),TF(e,t)].filter(Boolean).join(`, `),t.range,t.added]))],`No code file of ${n} names ${t} as an import would, nor does an install script; npm installs ${t} all the same, running ${r} install scripts`)}"><span>Unused deps</span><span class="npm-extension-count">${a.length.toLocaleString(`en`)}</span></span></li>`)}return s}function DF(e){return e?A`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Ij(e.published)}">${Pj(e.published)}</span></li>`:M}function OF(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-${dF(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=AF(`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">${JN.map(t=>[t,e.filter(e=>YN(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">${uF(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="${()=>jF(e,t)}">${l}</button></li>`:A`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var kF=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>`,AF=(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 jF([e,t],[n,r]){let i=OP(),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=>kP(e,i))}));ge({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function MF(e,t,n){if(e===null||e>=n)return!1;let r=dF(t);return r===void 0||JN.indexOf(e<=25?`critical`:`high`)<JN.indexOf(r)}function NF(e,t,n=null){let r=e.at(-1),i=e.map(e=>tP({npm:e})?.scores??null);return!i.at(-1)||n?[]:nP.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&&MF(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=rP?[]:[A`<li><a class="${`npm-extension npm-socket-score ${iP(l,s)}`}" href="${eP({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="${AF(`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 ${iP(e,s)}`}">${aP(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${aP(l)}<span>${a}</span><span class="npm-extension-count">${uF(u,l)}</span></a></li>`]})}var PF={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function FF({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 IF(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 ${PF[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?FF(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}">${AA(r??1/0)}</span>`}function LF(e,t){let n=ZN(e);return t?A`<li>${IF(t,n.status===`ready`&&n.downloads?PA(n.downloads):null,!0)}</li>`:M}var RF=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>`,zF=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),BF={minute:zF(`minute`),hour:zF(`hour`),day:zF(`day`),month:zF(`month`),year:zF(`year`)};function VF(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?BF.minute.format(t):t<1440?BF.hour.format(Math.floor(t/60)):n<60?BF.day.format(n):n<730?BF.month.format(Math.floor(n/30.44)):BF.year.format(Math.floor(n/365.25))}function HF({compared:e},{created:t,gap:n}){if(!t)return M;let[r,i]=e,a=VF(Math.abs(n)),o=[`First published on ${Fj(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 UF(e,t){let n=nj(e.flags);if(t!==`added`||!e.level)return[n,M];let r=e.month?FA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?RF:IF(e,r),e.compared?HF(e,e):M]}function WF(e,t){let{counts:n}=IP(t),r=MP.filter(e=>n.has(e));return r.length===0?M:A`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>HP(e,t,n))}</ul>`}function GF(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 KF(e,t,n=new Map){let r=new Map;for(let i of e){let e=GF(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 qF=/^(?:package\.json|readme(?:\.md)?)$/iu,JF=e=>qF.test(e)||BA.test(e);function YF(e,t,n=new Map){let r=e.filter(JF),i=new Set(e.filter(e=>!JF(e)).map(GF)),{files:a,bytes:o,lines:s}=KF(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:KF(e,t,n).filter(e=>i.has(e.extension))}}var XF=({bytes:e,lines:t})=>t===null?Wr(e):`${Wr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function ZF(e,t){let{types:n,extensions:r}=IP(t);return!n.package&&n.extensions.length===0?M:A`<ul class="npm-extensions" aria-label="File types">${n.package?VP(e,{id:`package`,label:`Package`,keeps:JF},A`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${XF(n.package)}`}):M} ${n.extensions.map(t=>VP(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:XF(t)}))}</ul>`}function QF(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,WF(e,n)],[`types`,`File types`,ZF(e,n)],[`socket`,`Socket`,oP(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 $F(e,t){return e.size===0?M:oA({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 eI=({severity:e})=>ce.indexOf(e),tI=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function nI(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>eI(e)-eI(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(eI(e.flags[0])-eI(t.flags[0])||t.flags.length-e.flags.length||tI(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function rI(e){return{...Lj(e),files:ZP,badges:iF,dependencyTags:UF,reviewVerdictLimit:pP}}var iI=/^[a-f\d]{40}$/iu,aI={removed:[],added:[],changed:[]},oI=e=>e.kind===`commit`&&iI.test(e.name)?e.name.toLowerCase():GM(e);function sI(e,t,n){return tN({revision:iI.test(t)?IM(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 cI=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function lI(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=PM(t),o=tN(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?cI(o,r):cI(sI(t,n,a),n),async load(e){let n=await _b(t,e,i,{signal:Z_()});if(n?.repoId!==t||n.path!==i||!iI.test(n.commit??``)||iI.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return iI.test(e)||LM(t,r,sI(t,e,null)),{...VM(RM({...n,commit:r},IM(t,r)),n),compareId:r}},open:(e,r,a)=>UM({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...iI.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:sI(t,e,null)}}),dependencies:()=>aI,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:sI(t,e.value,a):null}" @revision-pick="${t=>e.pick(oI(t.detail))}"></repository-revision-pick>`}}var uI=class extends pa{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=rN(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`,uI);var dI=500,fI=14;function pI(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=hn(e);return n&&(t.triage=n),typeof e.fix==`string`&&e.fix&&(t.fix=e.fix),typeof e.flagged==`boolean`&&(t.flagged=e.flagged),Object.keys(t).length>0?t:null}function mI(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function hI(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var gI=e=>new TextEncoder().encode(e).length,_I=new Map,vI=new Set,yI=(e,t=F.currentManagedTeam)=>JSON.stringify([t,e]),bI=new Map,xI=null,SI=Promise.resolve();function CI(){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 wI(){return Array.isArray(F.managedReports)&&F.managedReports.length>0?F.managedReports:F.managedReport==null?[]:[F.managedReport]}function TI(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(CI())}function EI(e){let t=wI();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 DI(){let e=F.managedSession;return F.serverMode===`managed`&&F.localMode!==!0&&e!=null&&tt(e.role,`triage`)}function OI(e){return e===403&&F.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function kI(e,t){let n=bI.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},bI.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function AI(e,t,n){if(!DI())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=fI;for(;i<r.length&&s<200;){let t=r[i],n=gI(`${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 cx(e.report.id,o,F.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!OI(l)){kI(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=_I.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),_I.set(n,{key:mI(r),fix:a})}}}function jI(){xI!=null&&(clearTimeout(xI),xI=null);let e=[...bI.values()];if(bI.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)SI=SI.then(()=>AI(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});SI=SI.finally(()=>{for(let e of t)Kv(e);for(let e of n)RI(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function MI(){if(wI().length!==0&&DI()&&vI.size!==0){for(let e of CI()){let t=pI(F.triage.get(e)),n=mI(t);if((_I.get(e)?.key??``)===n)continue;if(!hI(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),_I.set(e,{key:n,fix:_I.get(e)?.fix??``});continue}let r=EI(e);if(r==null||!vI.has(yI(r.id)))continue;let i=F.currentManagedTeam,a=yI(r.id,i),o=bI.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},bI.set(a,o)),o.changes.set(e,t)}bI.size!==0&&(xI!=null&&clearTimeout(xI),xI=setTimeout(jI,dI))}}var NI=!1;function PI(){NI||!DI()||(NI=!0,hd(MI))}function FI(){wu(),F.managedComments?.clear(),F.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),xI!=null&&(clearTimeout(xI),xI=null),bI.clear(),vI.clear(),_I.clear()}async function II(e,{renderView:t=!0,signal:n,readAnnotations:r}={}){let i=F.reports,a=F.currentManagedTeam,o=F.managedSession?.role,s=F.managedSession?.id,c=()=>!n?.aborted&&F.serverMode===`managed`&&F.localMode!==!0&&F.managedSession!=null&&F.managedSession.id===s&&F.managedSession.role===o&&F.reports===i&&F.currentManagedTeam===a&&wI().some(t=>t.id===e);if(!c()||(vI.delete(yI(e)),jI(),!await LI(n)||!c()))return!1;let l=new Map(F.managedIssues),u=r?await r(e):null,d=r?u?.entries:await rx(e,a,{signal:n});if(d==null||!c())return!1;let f=!1,p=TI(e),m=u&&eg(p,u.issues,l);for(let e of p){if(!Object.hasOwn(d,e)){_I.delete(e);continue}let t=pI(d[e]);_I.set(e,{key:mI(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(f=!0)}if(vI.add(yI(e)),u&&qv(a,p,l),m&&!f&&t&&X(),f){if(await Dd(),!c())return!1;t&&X()}return MI(),!0}function LI(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}),SI.then(()=>n(!0),()=>n(!1))}):SI.then(()=>!0)}async function RI(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&&vI.has(yI(e,i));if(!s()||(jI(),!await LI(t)||!s()))return!1;let c=TI(e),l=new Map([...c].map(e=>[e,_I.get(e)])),u=new Map(F.managedIssues),d=n?await n(e):null,f=n?d?.entries:await rx(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&eg(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(_I.get(e)!==t||mI(n)!==(t?.key??``))continue;let r=pI(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),_I.set(e,{key:mI(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?F.triage.get(e)?.ignoredReports:void 0;bn(F.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:F.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&Kv(i),d&&qv(i,c,u),p&&!m&&X(),m){if(await Dd(),!s())return!1;X()}return!0}function zI(e,t){if(!e)return;let n=F.currentManagedReport;if(n!=null&&(F.managedReports.length!==1||F.managedReports[0].id!==n))return;let r;return async i=>(r??=(async()=>(jI(),!await LI(t)||t?.aborted?null:nx(e,{signal:t,reportId:n})))(),(await r)?.(i)??null)}async function BI(e){let t=await b(e),n=await im(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 tm(r,{conflictResolver:async(t,n)=>{try{return await gS(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 VI=`deepview.passkey.firstImportPrompted`;function HI(){try{return localStorage.getItem(VI)===`1`}catch{return!1}}function UI(){try{localStorage.setItem(VI,`1`)}catch{}}async function WI(){if(!(yo()||!xo()||HI())){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.`)){UI();return}await be(),yo()&&UI()}}var GI=null,KI=()=>Promise.resolve(!0);function qI(e){KI=e}function JI(){GI?.controller.abort(),GI=null}var YI=6e4,XI=null,ZI=!1;function QI(){clearTimeout(XI),XI=null,globalThis.document?.hidden&&GI&&(XI=setTimeout(()=>{XI=null,globalThis.document?.hidden&&GI&&(JI(),ZI=!0)},YI))}globalThis.document?.addEventListener(`visibilitychange`,()=>{if(globalThis.document.hidden){QI();return}clearTimeout(XI),XI=null,ZI&&(ZI=!1,tL())});function $I(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 eL(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 tL({catalogOnly:e=!1,hydrate:t}={}){if(ZI&&globalThis.document?.hidden&&!t)return;let n=F.managedSession,r=Z_(),i=[`findings`,`files`,`links`].includes(F.currentView),a=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView),o=a||i&&(!e||GI?.teamId===F.currentManagedTeam&&!GI.signal.aborted)?F.currentManagedTeam:null;if(!I()||!n||n.role===`none`||n.publicShare&&!o)return JI(),t?Promise.resolve(!1):void 0;let s=F.managedTeams?.find(e=>e.id===o)?.reports.find(e=>e.id===F.currentManagedReport&&e.visible===!1)?.id??null,c=JSON.stringify([o,s,n.id,n.role,n.csrfToken,!!n.publicShare]);if(GI?.key!==c||GI.signal.aborted){JI();let e=new AbortController,t={key:c,controller:e,signal:e.signal,teamId:o,reportId:s,version:0,target:null};t.current=(e=t.signal)=>!e.aborted&&!t.signal.aborted&&GI===t&&I()&&F.managedSession?.id===n.id&&F.managedSession?.role===n.role&&F.managedSession?.csrfToken===n.csrfToken&&!!F.managedSession?.publicShare==!!n.publicShare,GI=t,ZI=!1,nL(t),globalThis.document?.hidden&&QI()}let l=GI;if(e||a||!o)return l.target?.ready;let u=js(F.reports),d=l.target;if(d?.view===r&&d.reports===u&&!d.signal.aborted)return d.ready;d?.controller.abort();let f=new AbortController,p=AbortSignal.any([f.signal,l.signal,r]),m={controller:f,signal:p,view:r,reports:u,version:d?.reports===u?d.version:0};return l.target=m,m.current=()=>l.current()&&!p.aborted&&l.target===m&&F.currentManagedTeam===o&&js(F.reports)===u,m.hydration=t?$I(async e=>{let n=l.version,r=await t(e);return r&&m.current()&&(m.version=n),r},p,m.current):null,m.ready=m.hydration?.promise,(l.version||l.finished)&&(m.hydration?m.hydration.start():m.version<l.version&&rL(l,m,l.signal).then(e=>(!e&&m.current()&&(JI(),tL()),e))),m.ready}function nL(e){let{signal:t,controller:n,current:r}=e;vx(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(e,t)=>{let n=()=>r(e);return n()?await KI(n,e,t)&&n():!1},onUpdate:t=>r(t)?(e.version++,rL(e,e.target,t)):!1,onClose:()=>{r()&&document.dispatchEvent(new Event(`managed-feed-closed`)),n.abort()}}).catch(e=>{r()&&console.warn(`managed: team feed failed`,e)}).finally(()=>{e.finished=!0,r()&&e.target?.hydration?.start()})}async function rL(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=iL(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 eL(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?rL(e,t,n):!0:!1:!0:!1}async function iL(e,t,n){if(t.hydration&&!await eL(t.hydration.start(),n))return!1;for(;t.current()&&!n.aborted&&t.version<e.version;){let r=e.version,i=zI(e.teamId,n),a=F.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[RI(e.id,{signal:n,readAnnotations:i}),QC(e.id,{signal:n,readAnnotations:i})]))).every(Boolean)||!t.current()||n.aborted)return!1;t.version=r}return!n.aborted&&t.current()}function aL(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Fi(e)===`revalidation`);return t.length>0?t:e}function oL(e){let t=e.map(aL).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Fi(e)===``))}function sL(e,t=()=>[],{countFindings:n=!1}={}){let{groups:r,conflicts:i}=cg(e,{hideRuledOut:!0}),a=_g(r,t,aL),o=n?{appMode:!1,findings:a.length}:{appMode:!1};return i.size>0||!oL(a)&&!Cr(a,{tabs:aL,kindOf:Fi,severityMode:`corrected`})?o:{appMode:!0,appFindings:a.filter(e=>aL(e).some(e=>e.isApp)).length}}var cL=null,lL=0;rd(()=>{lL++});function uL(e,t,n,{complete:r,isCurrent:i}){cL={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function dL(e){return!cL||cL.id!==e.id||!cL.isCurrent()||cL.membership!==JSON.stringify(e.reports.toSorted())||!wm(e,cL.token)?null:(cL.linksRevision!==lL&&(cL.metadata=cL.complete?sL(cL.reports,cd):{appMode:!1},cL.linksRevision=lL),cL.metadata)}async function fL(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await dd(),!i()))return;let o=await Om(e,n);if(!o||!i())return;let s=r?sL(t,cd):{appMode:!1};await km(e,s,o)&&i()&&await a(s)}var pL=`deepview.lastFile`;function mL(e,t=`overview`,{push:n=!1}={}){if(I()){let r=F.bundles.find(t=>t.integrity===e),i=r?.npm?pj(r,t,Lx(F,t)):r?.repository?HM(r,t,Lx(F,t)):Px(F.managedTeams,r,F.currentManagedTeam,t,Lx(F,t),F.bundles);n?G.pushRoute(i):G.replaceRoute(i);return}Ha(pL,`b:${e}${t&&t!==`overview`&&Qr.has(t)?` ${t}`:``}`).catch(()=>{})}var J=e=>e!==W();function hL(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function gL(e){return await hL(),e!==null&&J(e)?!1:(X(),uK(F.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!J(e)).catch(()=>{}),!0)}function _L(){w.selected=null,w.focusedPkg=null,w.layoutCache=null,w.solo=null,w.hidden.clear(),w.pathFilter=``,ar()}function vL(e){for(let t of V.openSessions)t&&!e.has(t.workspaceId)&&(V.closeSession(t.workspaceId),Bh(t.workspaceId))}function yL(){z.classList.remove(`active`),z.replaceChildren(),Zm.classList.remove(`hidden`),document.title=`DeepView`}function bL(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function xL(e){let t=SL(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function SL(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function CL({name:e,content:t,existingNames:n}){if(!n.has(e))return await Hc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Wc(e)}catch(r){if(!bL(r))throw r;return await Hc(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=>_h(t.id,e)),a=await At({name:e,workspaceNames:i.map(e=>e.name),existingNames:n});if(a.action===`cancel`)return null;if(a.action===`rename`){let e=a.newName;return await Hc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await Fh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Hc(e,t),i.length>0&&await TL(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function wL(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await rc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function TL(e,t){let n;try{n=await Gc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await zh(r.id);let t=await Ph(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 EL(e){if(e=[...e],e.length===0||(await mY(),I())||(await WI(),I()))return;let t=null,n=null,r=new Set,i=new Set(await Vc()),a=[];for(let o of e)try{let e=SL(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await BI(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=Vu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await CL({name:n.name,content:n.content,existingNames:i});r&&(zu(r.name,e.count,e.source),await wL(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Vc();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(xL(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await ul(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}=Vu(e.content),a=await CL({...e,existingNames:i});a&&(zu(a.name,n,r),t={name:a.name,content:a.content})}else if(xi(s,e)===`codex`){let e=vi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Vu(a),c=await CL({name:e,content:a,existingNames:i});c&&(zu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Vu(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 CL({name:o.name,content:s,existingNames:i});if(!n)continue;zu(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 DL(t.name,t.content):n&&(aK(n),mL(n,F.bundleDetailsTab),X(),await Q(),dK(n)),uK(r).catch(()=>{})}async function DL(e,t,{workspaceId:n}={}){if(I())return;let r=Q_();F.currentManagedTeam=null,F.currentManagedReport=null,F.currentReportWorkspace=BC(e,n);let i=new Set(R().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(vL(i),F.reports=[],Jg(),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=Xs(e),F.repoEditing=!1,_L(),Ha(pL,Ld(e,F.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Wc(e)}catch(t){if(J(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Nv()&&!J(r)){await DL(e);return}J(r)||(F.currentFile=null,await Q());return}if(bL(t)){let t=R().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&_h(t.id,e));if(t)try{if(await zh(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 DL(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 RL(e,t,r),!J(r)){for(let e of i)V.openSession(e),V.refreshSession(e),zh(e);return await Q(),!0}}function OL(e){return F.managedSession?.role===`admin`&&AL({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function kL(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||!ai.has(r)))return!1;if(i&&n&&G.active)return G.navigate(fi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},F.managedTeams));t===`dependencies`&&(F.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=Q_();return vL(new Set),NL({forgetLastView:!1}),F.currentWorkspace=s,F.currentManagedTeam=i?e:null,F.currentView=a,i&&(F.bundles=zx(F.managedTeams)),z.classList.add(`active`),Zm.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),X({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ha(pL,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await Q(),!J(c)&&(X({animate:!1}),!J(c))}async function AL(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(fi({view:`findings`,teamId:e.id,reportId:t},F.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=Q_(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=Z_(),s;try{s=r?await(await K()).fetchManagedLinkWorkspace(t,{signal:o}):await _x(e.id,{reportId:a?.id??null})}catch(e){return J(i)||kx(e.message||`Could not load link report.`),!1}if(J(i))return!1;if(db(),s===null||t!==null&&!s.some(e=>e.id===t))return kx(`Could not load all team reports. Please try again.`),!1;let c=s.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),l=s.filter(e=>t===null||c||e.id===t),u=l.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));vL(new Set),AG(t===null&&!r?e.id:null),z.classList.add(`active`),Zm.classList.add(`hidden`),F.currentView=`findings`,F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=t===null?null:s.find(e=>e.id===t).filename,F.currentWorkspace=t===null?`managed-team:${e.id}`:null,F.currentManagedTeam=e.id,F.currentManagedReport=t,Eu(e.id,s),F.managedReports=l.map(e=>({id:e.id,filename:e.filename})),F.managedComments.clear(),F.managedIssues.clear(),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 u)if(await RL(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo}),J(i))return!1;if(u.length>0){let e=async e=>{let t=zI(F.currentManagedTeam,e);return(await Promise.all(u.flatMap(n=>[II(n.id,{renderView:!1,signal:e,readAnnotations:t}),QC(n.id,{signal:e,readAnnotations:t})]))).every(Boolean)&&!e.aborted&&!J(i)},t=r?await e(Z_()):await tL({hydrate:e});if(J(i))return!1;if(!t)return await FL({history:!1}),kx(`Could not load report annotations. Open the team or report again to retry.`),!1}if(c){if(F.currentView=`links`,F.currentLinks={name:c.filename,groups:c.data.links,skipped:0,...r?{managedId:t}:{}},!await gL(i))return!1}else if(u.length===0)jG();else if(w_(e_()),!await gL(i))return!1;return tL(),await Q(),!0}async function jL(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=Q_();vL(new Set([e])),F.currentView!==`findings`&&F.currentView!==`files`&&(F.currentView=`findings`),zr(`workspace`,e),F.reports=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.currentFile=null,F.currentWorkspace=e,F.currentReportWorkspace=null,F.currentLinks=null,F.repoUrl=``,F.repoEditing=!1,_L(),Ha(pL,`ws:${e}`).catch(()=>{}),t.reports.length===0&&yL();let r=await Om(t);if(J(n))return;let i=!0,a=t.reports.map(e=>Wc(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 RL(t.reports[e],r,n,{renderView:!1})?o++:i=!1,J(n)))return}o===0&&t.reports.length>0&&yL(),i&&Dm(t)?.appMode&&(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,KG());let s=F.reports.slice();uL(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(w_(e_()),!await gL(n))return}else jG();let l=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`],u=l.map(e=>F[e]);fL(t,s,r,{complete:i,isCurrent:()=>!J(n),onReady:async t=>{!t.appMode||F.currentWorkspace!==e||![`findings`,`files`].includes(F.currentView)||l.some((e,t)=>F[e]!==u[t])||(F.showRevalidation=!0,F.upstreamOnly=!1,F.revalidationDetailed=!1,KG(),w_(e_()),await gL(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),V.openSession(e),V.refreshSession(e),zh(e),await c}async function ML({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!F.currentFile)return;let n=Q_(),r=F.currentFile;Bu(r),ec(r,``);for(let e of t)try{let t=await Lh(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 Jc(r),!J(n)&&(await mu(r,null),!J(n))){if(e===`wipe`){try{await Ip()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(J(n))return}J(n)||(NL(),await Q())}}function NL({forgetLastView:e=!0}={}){TT(),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=[],Jg(),F.workspaceMerges=[],F.revalidateConflicts=new Map,F.repoUrl=``,F.repoEditing=!1,F.shownTriage=null,F.currentView=`findings`,_L(),e&&Ua(pL),yL()}function PL(e){Q_(),vL(new Set),NL(e)}async function FL({history:e=!0}={}){return e&&I()&&G.active?G.navigate({view:`home`}):(Q_(),vL(new Set),NL({forgetLastView:!I()}),await Q(),!0)}async function IL({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!F.selectedBundle)return;let t=Q_(),n=F.selectedBundle;for(let r of e)try{let e=await Rh(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 dl(n),J(t)||(await _u(n,null),J(t)))return;F.selectedBundle=null,F.selectedBundleWorkspace=null,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleSourceFindingIdx=null;let r=Va(pL);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ua(pL),Yf(n),F.bundles=await ol(),!J(t)&&(X(),await Q())}async function LL(e,t=`detach`,{triage:n=`keep`}={}){let r=R().find(t=>t.id===e);if(!r)return;Q_();let i=Array.isArray(r.reports)?[...r.reports]:[];if(V.closeSession(e),Bh(e),t===`delete`){for(let e of i){try{await Jc(e)}catch{}Bu(e),ec(e,``)}if(n===`wipe`)try{await Ip()}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)&&NL(),await au(e),await Q()}async function RL(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null}={}){let o=()=>n!==null&&J(n);try{if(await Promise.all([zr(`report`,e),zr(`workspace`,F.currentWorkspace||F.currentReportWorkspace)]),o()||(await Pd(),o()))return;let{data:s,reason:c}=i===null?I()?ne(t,e):Si(t):{data:structuredClone(t),reason:null};if(!s)throw Error(c);let l=F.reports.length===0,u=bi(s)??[],d=u.flatMap(vg);if(await wi(d),o())return;let f=new Set(d.filter(sr).map(e=>e.source??s.source??null)),p=a??s?.repo,m=gi({repo:p}),h=m??(i==null?Xs(e):``),g=_i(p),_=Rr([{groups:u.map(vg),tree:s.tree}]),v=[];for(let t of u){let n=vg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:F.nextFindingId++,_repoFallback:h,_repoDirectory:g,_reportName:e,_depsDirectory:_,_managedReportId:i,_bundleHashes:s.bundleHashes??[]};hi(n,s),n._source=n.source??s.source??null,`isApp`in n||(n.isApp=Ii(n,n._source)),n._sourcePass=f.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}v.push(r)}return yi(v),F.reports.push({type:s.type||`analysis`,source:s.source??null,fileName:e,_managedReportId:i,groups:v,repo:m,tree:s.tree??null,bundleHashes:s.bundleHashes??[]}),kn(F.reports),Mn(F.reports)&&Jg(),F.revalidateConflicts=Qg(),KG(),l&&(d_(),w_(e_())),r&&await gL(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>RL(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`)&&EL(e.dataTransfer.files)}),Zm.addEventListener(`dragover`,e=>{e.preventDefault(),I()||Zm.classList.add(`hover`)}),Zm.addEventListener(`dragleave`,()=>Zm.classList.remove(`hover`)),Zm.addEventListener(`drop`,e=>{e.preventDefault(),Zm.classList.remove(`hover`),EL(e.dataTransfer.files)});var zL=null;function BL(){I()||(zL||(zL=document.createElement(`input`),zL.type=`file`,zL.multiple=!0,zL.hidden=!0,zL.addEventListener(`change`,()=>{let e=[...zL.files];e.length>0&&EL(e),zL.value=``}),document.body.append(zL)),zL.click())}Zm.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){fY(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){lx(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&&AL(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){jL(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&BL()});function VL({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?tn(i):tn(t)??(e===`127.0.0.1`?en:null)}function HL(){return VL({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:F.serverMode,localMode:F.localMode,deepviewScanServer:F.deepviewScanServer})}function UL(e){return I()?!!e.managedId&&[`admin`,`manage`].includes(F.managedSession?.role):!e.managedId&&!!HL()}async function WL(e=null,{mode:t}={}){let n=F.selectedBundleWorkspace,r=W();if(await mY(),r!==W()||e&&!UL(e))return;if(I()){e&&await fY(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!HL())return;let i=await Re().then(()=>!0,()=>!1);if(!HL()||r!==W())return;if(!i){kx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=FL(),o=W();await a,HL()&&o===W()&&(F.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,F.currentView=`scan`,X(),Q())}function GL(){let e=document.querySelector(`#drop-zone`);if(!e)return;let t=e.querySelector(`.local-scan-button`);t||(t=document.createElement(`button`),t.type=`button`,t.className=`local-scan-button`,t.innerHTML=er(`${ta}<span>Scan</span>`),t.addEventListener(`click`,()=>{WL()}),e.append(t));let n=HL();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||!UL(i))}var KL=pN(`./compare.js`),qL=`@preventive/triage`;function JL(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 YL(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function XL(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 ZL(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 QL(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:JL(n.name,n.version)}:{name:YL(t?.name??`bundle`),version:null,purl:null},rest:r}}function $L(e){return e??globalThis.crypto.randomUUID()}function eR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=QL(XL(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:${$L(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:qL}]},component:o},components:a.map(e=>{let t=JL(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 tR(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function nR(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=QL(XL(e),t),o=YL(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=[tR(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,JL(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)}-${$L(r)}`,creationInfo:{created:s,creators:[`Tool: ${qL}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
|
|
179
|
-
`}function rR(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 iR(e,t,n){if(t){let t=rR(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 aR(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 oR(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 sR={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function cR(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=iR(n,r,i);if(o.error)return{error:o.error};(sR.tag!==e||sR.useRegex!==r||sR.caseSensitive!==i)&&(sR.tag=e,sR.useRegex=r,sR.caseSensitive=i,sR.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<sR.entries.length;e++){let t=sR.entries[e],n=s(t.query);if(n===c)return sR.entries.splice(e,1),sR.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?oR(l,o):aR(t,o,a??[...t.keys()].toSorted());return sR.entries.unshift({query:n,result:d}),sR.entries.length>8&&sR.entries.pop(),d}var lR=200,uR=28,dR=12;function fR(e,t){let n=t.length>0?t[0][0]:0;return mR(e,t,n-(e.length-e.trimStart().length)>uR?n-dR:0,lR)}function pR(e,t){let n=fR(e,t);return A`${n.clipped?A`<span class="bundle-search-clip">…</span>`:M}${hR(n.text,n.ranges)}`}function mR(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 hR(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 gR(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 _R(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,gR(r,o)])for(let t of[c,l]){let n=new Map(e.map((e,n)=>[e,t[n]])),r=d(n);r<p&&(f=n,p=r)}let m=({col:e,row:t})=>`${e},${t}`,h=new Map([...f].map(([e,t])=>[m(t),e])),g=(e,t,n,r)=>{let i=0;for(let[a,s]of o.get(e))i+=s*u(t,a===n?r:f.get(a));return i};for(let e=0;e<8;e++){let e=!1;for(let t of r){let n=f.get(t),r=o.get(t),i=0,a=0,s=0;for(let[e,t]of r)i+=f.get(e).col*t,a+=f.get(e).row*t,s+=t;if(!s)continue;let c=new Set;for(let e of[n,{col:Math.round(i/s),row:Math.round(a/s)}])for(let n=-1;n<=1;n++)for(let r=-1;r<=1;r++){let i=h.get(`${e.col+n},${e.row+r}`);i!==void 0&&i!==t&&c.add(i)}let l=0,u=null;for(let e of c){let r=f.get(e),i=g(t,r,e,n)+g(e,n,t,r)-g(t,n,e,r)-g(e,r,t,n);i<l&&(l=i,u=e)}if(u!==null){let r=f.get(u);f.set(t,r),f.set(u,n),h.set(m(r),t),h.set(m(n),u),e=!0}}if(!e)break}return r.map(e=>({id:e,...f.get(e)})).toSorted((e,t)=>e.row-t.row||e.col-t.col)}var vR=216,yR=48,bR=32,xR=20,SR=24,CR=20,wR=10;function TR(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:xR)});let o=Math.min(t,vR*5+xR*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:xR),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function ER(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 DR=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function OR(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=DR(r),o=n?e.y-12:e.rowBottom;if(e.members.length===1||e.collapsed){let t=e.x+e.visibleWidth/2+a;return[[t,n?e.y-5:e.y+e.height],[t,o]]}let s=e.x+i.x+(n?0:vR),c=e.y+i.y+yR/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 kR(e,t){let n=(t,n)=>{let r=e.get(t[n]),i=r.packages.find(e=>e.id===t[`${n}Package`]);return r.members.length===1||r.collapsed?[r.x+r.visibleWidth/2,r.y+r.height/2]:i?[r.x+i.x+vR/2,r.y+i.y+yR/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||DR(o.get(e))-DR(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=OR(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=OR(n,t.fromPackage,!1,i.get(t)),s=OR(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:ER([...n,...o,...t.toReversed()])}})}function AR(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=yR,a=vR;if(r===0&&Math.abs(t.x-e.x)===a+xR){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+SR){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*(xR/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 ER([[s,c],[l,c],[l,f],[u,f],[u,p]])}function jR(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:vR+wR*2,height:yR};let a=t.length>1,o=Math.max(1,Math.floor((r-wR*2+xR)/(vR+xR))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?wR:0,l=Math.ceil(t.length/s),u=a?CR:0,d=(a?_R(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(vR+xR),y:c+u+e.row*(yR+SR)})),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:AR(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*vR+(s-1)*xR+c*2,height:l*yR+(l-1)*SR+c*2+u}}function MR(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 NR=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function PR(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=MR(t,n);return{packageKey:r.ecosystem?NR(r):r.name,packageGroup:Jr(``,{packageDir:t})}}function FR(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Wt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=Ce(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,MR(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(jr(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(`.`,MR(`.`));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=NR(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 IR(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Pr(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-bR-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...jR(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>TR(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=kR(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 LR(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 RR=new Map,zR=new Map,BR=[];function VR(e){if(!e?.managedId)return RR;let t=F.managedSession,n=F.managedTeams&&js(F.managedTeams),r=[t?.id,t?.role,t?.csrfToken,F.currentManagedTeam,n];return r.some((e,t)=>e!==BR[t])&&(BR=r,zR=new Map),zR}var HR=new WeakMap;function UR(e){return HR.has(e)||HR.set(e,{reasons:Ce(e),selected:``}),HR.get(e)}function WR(e,t=UR(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var GR=`deepview.advisories.proxyConsent`;function KR(){try{return localStorage.getItem(GR)===`1`}catch{return!1}}function qR(){try{localStorage.setItem(GR,`1`)}catch{}}function JR(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 YR(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 XR(e){if(e.bundle&&!YR(e))return!0;let t=VR(e).get(WR(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function ZR(e,t,n=!1){return!e||e.managedId&&!$R(e)||QR(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:xL(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||YR(t):JR(t):!1}function QR(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function $R(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 ez(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var tz=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function nz(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function rz(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(nz),tz):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 iz(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function az(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(ez(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 oz(e,t){return cz(e,t)}function sz(e,t){return cz(e,t,!0)}async function cz(e,t,n=!1){if(!e?.integrity||!e.managedId&&!KR())return;let r=VR(e),i=WR(e),a=r.get(i);if(n){if(!iz(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=UR(e),c=e.managedId?new Map:Gt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await yx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[tz(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 az(c):{};r.set(i,{state:`ok`,byPackage:rz(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 lz(e,t){if(!e?.integrity)return;let n=VR(e),r=WR(e);n.get(r)?.state===`error`&&(n.delete(r),await oz(e,t))}var uz={critical:0,high:1,moderate:2,low:3,info:4};function dz(e){return uz[e]??999}function fz(){let e=typeof window>`u`?``:window.location.host;return A`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function pz(e,t=()=>{},n=null){let r=e?UR(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=hz(e),o=!!e?.managedId&&!XR(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=oz(e,t);return t(),a}}"></bundle-scope-selector>`:M} ${o?mz(e,t):M} ${o&&n?A`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${k(ta)}<span>Validate</span></button>`:M}</div>`:M}</div>`:M} ${_z(e)}</div>`}function mz(e,t){if(!e?.managedId)return M;let n=VR(e).get(WR(e)),r=!!n?.recheckingRepositories;return A`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!iz(e,n)}" aria-busy="${String(r)}" @click="${()=>sz(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function hz(e){if(!e||!e.managedId&&!KR())return M;let t=VR(e).get(WR(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 gz(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 ${UR(e).selected?`this scope`:`this bundle`}.`}function _z(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&&!KR())return fz();let t=VR(e).get(WR(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>${gz(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=>dz(e.severity))),a=Math.min(...r.map(e=>dz(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">${tz(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:M}<ul class="bundle-advisories-list">${r.map(([n,r])=>vz(e,n,r,t.query.get(n),()=>VR(e).get(WR(e))?.byPackage===t.byPackage))}</ul></div>`}function vz(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=dz(e.severity)-dz(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:UR(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:M}</div><ul class="bundle-advisories-rows">${a.map(e=>wN(e,({title:e,severity:t,details:n})=>ft({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var yz=e=>I()?[]:Ef(e),bz=()=>I()?0:Df(),xz=null,Sz=new WeakMap;function Cz(e){if(Sz.has(e))return Sz.get(e);let t=Ut(e),n=ke(e),r=[...t.keys()],{stripped:i}=Pn(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 Sz.set(e,s),s}function wz(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 yz(a)){let t=s(e,F.triage.get(T(e)));t&&n[t]!==void 0&&n[t]++}}return n}function Tz(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=yz(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===F.shownTriage});a.length!==0&&n.set(r,a)}return n}function Ez(e){let t=Cz(e),n=Ce(e,t.origToStripped.keys());w.bundleReasonFor!==e.integrity&&(w.bundleReasonFor=e.integrity,w.dependencyPackagesView=!1,w.bundleReason=null);let r=Oz(t,n,w.bundleReason),{tree:i,origToStripped:a,selected:o}=r;w.bundleReason=o;let s=r.files;if(s.length===0)return null;let c=null;if(e.fileHashes&&e.fileHashes.size>0){c=new Map;for(let[t,n]of e.fileHashes){let e=a.get(t);e!==void 0&&c.set(e,n)}}let l=Tz(c),u=l.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&yz(n).length>0),d=u&&w.bundleIssues,f=new Map,p=new Map,m=new Map,h=new Map;for(let[e,t]of d?l:[]){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},r=new Set,i=new Set,a=[];for(let e of t){n[e.severity]=(n[e.severity]||0)+1,r.add(e.severity);let t=F.triage.get(T(e))?.color??`none`;i.add(t),a.push({severity:e.severity,color:t})}f.set(e,n),p.set(e,r),m.set(e,i),h.set(e,a)}let g=[`matrix`,`flow`].includes(w.bundleLayout)||f.size===0?null:hr(i,f),_=new Map;for(let[e,t]of a)_.set(t,e);let v=Wt(e),y=new Map(v?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),b=e=>{let t=_.get(e)??e;return 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(w.focusedPkg){r.focused.has(w.focusedPkg)||r.focused.set(w.focusedPkg,s.filter(e=>b(e)===w.focusedPkg));let e=r.focused.get(w.focusedPkg);e.length>0?ie=e:w.focusedPkg=null}return w.selected&&!Object.hasOwn(i,w.selected)&&(w.selected=null),{treeData:i,files:ie,ownCounts:f,transitiveCounts:g,severitySets:p,colorSets:m,fileFindings:h,options:{pkgOf:b,packageInfoOf:e=>y.get(v?.get(_.get(e)??e))},strippedToOrig:_,canPackagesView:re,hasIssues:u,issuesShown:d,viewId:e.integrity??null,supportsLayers:!0,layerRoots:te,flowEntries:w.bundleLayout===`flow`?je(e,a,t.origToStripped,v):void 0,ownSourcePackages:we(a,b,v),entryPackages:Ee(e,a,b),ownSourceFiles:new Set(ee),reasons:[...n.keys()]}}var Dz=new WeakMap;function Oz(e,t,n){let r=t.has(n)?n:null;Dz.has(e)||Dz.set(e,new Map);let i=Dz.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 kz(){if(!xz)return;let e=bT();e&&e.refreshSidebar(xz,{isBundleContext:!0,findingsJump:!I()})}function Az(){if(!xz)return;let e=bT();e&&e.refreshTopPkgs(xz)}function jz(e){xz=e}function Mz(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">${D(o,([e])=>e,([e,t])=>A`<span class="bundles-dist-seg" style="${E({flexGrow:t,background:Or(e)})}" data-tooltip="${e===`__own__`?M:`${e}: ${Wr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${D(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Xr(e),s=Or(e),c=i.get(e);return A`<li><span class="bundles-dist-dot" style="${E({background:s})}"></span> ${c?A`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>Nz(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:A`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?M:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${E({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Wr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function Nz(e,t){let n=F.currentManagedTeam,r=F.currentWorkspace,i=F.managedSession&&js(F.managedSession);return Le({details:e,...t,isCurrent:()=>F.currentView===`bundles`&&F.selectedBundle===e.integrity&&(F.bundleDetails&&js(F.bundleDetails))===js(e)&&F.currentWorkspace===r&&F.currentManagedTeam===n&&(F.managedSession&&js(F.managedSession))===i})}var Pz=new WeakMap;function Fz(e,t,n,r){let i=Pz.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}=Pn(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=Iz(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 Pz.set(e,f),f}function Iz(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,PR(t,s)),i+=o}return{totalByPkg:n,whyQueries:r,total:i,sorted:new Map}}function Lz(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=Fz(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`?nI(re,ie,e=>te[e]):_?se.filter(e=>_.keeps(n[e])):se,le=F.bundleOverviewPackagesSort,ue=Mz(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=Tz(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 Af(e.fileHash,e))me.set(t,(me.get(t)??0)+1)}}let he=[...me.keys()].toSorted(),ge=Ai.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=Hx[Kx(e)]??Hx.default,n=me.get(e)??0;return A`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:A`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ye=n.length-(c?.size??0);return A`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(ee)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ye,ye):A`${y(`files`,ye,`${ye} ${ye===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?M:A`<dt>Size</dt><dd>${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??oA({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>`})} ${oA({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?oA({title:`Reports`,count:he.length,body:ve,list:!0}):M} ${d}</div></div>`}var Rz=16,zz=new Map,Bz=new Set,Vz=()=>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">${lw}</button>`;function Hz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${F.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="Pretty-print" data-tooltip="${rk(e)}">${nk}</button>`}function Uz(e,t,n,r,i,a){let o=wk(e,t,n,r),s=o?Rk(e,t,n,r,()=>{F.bundleSourceFile===n&&X()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?Hz(s):M,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function Wz(e){let t=e?.status;return A`<button type="button" class="${C({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${F.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:M}" aria-label="View lockfile" data-tooltip="${eA(e)}">${k(Qi)}</button>`}var Gz=null;function Kz(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function qz(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function Jz(e){for(let t of Ai)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var Yz={content:``,parts:``};function Xz(e){if(Yz.content===e)return Yz.parts;let t=e;if(e.length>UT||uC(e)){let n=e=>[KT(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>WT&&(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 Yz={content:e,parts:t},t}function Zz(e,t,n,r,i=null,a=!1,o=!1){let s=Lt(e),c=F.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Pt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!zz.has(p)&&!Bz.has(p)&&(Bz.add(p),(async()=>{let r=await PS(e,f,$S(n,t));zz.set(p,typeof r==`string`?mC(r):null),zz.size>Rz&&zz.delete(zz.keys().next().value),Bz.delete(p),F.bundleSourceFile===t&&X()})());let m=zz.get(p);zz.has(p)&&(zz.delete(p),zz.set(p,m));let h=F.bundleSourceFindingIdx,g=[...r].map(([e,t])=>`${e}:${Jz(t.map(e=>e.f))}:${t.map(e=>e.idx).join(`,`)}`).join(` `);return A`<div class="${C({"bundle-source-lines":!0,"is-wrapped":F.bundleSourceWrap})}" style="${E({"--lineno-width":`${d}ch`})}" ${HT(ND)}><aside class="bundle-source-lineno-col" aria-hidden="true">${NT([s,g,h,i,a,l,u],()=>Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?Jz(o.map(e=>e.f)):null,c=o&&h!=null&&o.some(e=>e.idx===h);return A`<div class="${C({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?A`<button type="button" class="${C({"bundle-source-dot":!0,[`sev-${s}`]:!0,active:c})}" data-bundle-source-finding="${o[0].idx}" data-tooltip="${`${o.length} ${o.length===1?`issue`:`issues`} on line ${n}`}" aria-label="${`${o.length} issues on line ${n}`}"></button>`:A`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:M}">${n}</span></div>`}))}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?k(m):Xz(e)}</code></pre></div>`}function Qz(e){let t=F.bundleSourceFindingIdx;if(t==null)return M;let n=e[t];if(!n)return M;let r=n.fileHash?Af(n.fileHash,n):[],i=s(n,F.triage.get(T(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=In(n),c=cV(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">${Cw(Hi(n),{paragraphs:!1})}</div>${r.length>0?A`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=st[Kx(e)]??st.default;return A`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})}</div>`:M}</div></aside>`}function $z(e,t,n,r=null){let i=[],a=new Map;if(typeof n==`string`&&e?.fileHashes){let n=(r??Tz(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 eB(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?FB(t):M} ${Vz()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function tB(e,t,n,r,i,a=null,o=!1,s=!1){return A`<div class="bundle-source-code-wrap">${typeof t==`string`?Zz(t,e,n,i,a,o,s):A`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${Qz(r)}`}function nB(){let e=F.bundleSourceFile;if(!e||F.bundleDetailsTab===`code`||F.bundleDetailsTab===`search`)return M;let t=F.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=It(t),{fileFindings:a,lineFindings:o}=$z(t,e,i.get(e)),s=F.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:Uz(t,s,e,i.get(e),a,o);return A`<div class="bundle-source-overlay"><div class="${C({"bundle-source-modal":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${eB(e,Kk(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>`:tB(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var rB=new Map,iB=null,aB=null,oB=0;function sB(e,t){let n=mB(e??``,t).split(`/`);for(let e=1;e<n.length;e++)rB.set(n.slice(0,e).join(`/`),!0);oB++}function cB(e,t){F.bundleCodeSearchMode=`files`,F.bundleCodeSearchQuery=``,sB(e,t),X(),Kz()}function lB(e){let t=e=>{for(let n of e.dirs.values())rB.set(n.path,!1),t(n)};t(e),oB++,X()}function uB(e){F.bundleCodeTerminal=e,X(),e?ET():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function dB(){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="${()=>uB(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function fB(e,t){let n=0,r=null;if(!t||t.size===0)return{count:n,worst:r};let i=e=>{for(let i of e.files.values()){let e=t.get(i);if(!e||e.length===0)continue;n+=e.length;let a=Jz(e);(r===null||(ki[a]??0)>(ki[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function pB(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>bD(e,t).localeCompare(bD(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:rB.has(e)?rB.get(e):n===0||l(t),d=e=>t=>{rB.set(e,!t.currentTarget.parentElement.open)};return A`<ul class="${C({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:M}" @keydown="${n===0?CD:M}">${D(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=SD(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Qe(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
|
|
182
|
-
Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=mD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Wr(t)})}:void 0,y=fB(s,r);return A`<li class="bundle-code-tree-dir"><details .open="${Ue(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??M}" data-tooltip-ecosystem="${g?.ecosystem??M}" data-tooltip-version="${g?.version??M}" data-tooltip-files="${g?.fileCount??M}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):M}" data-tooltip-commit="${g?.commit??M}" data-tooltip="${_?h:M}" data-tooltip-placement="${_?`right-start`:M}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:M} <span class="${C({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?M:h}">${f?A`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?A`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:M}`:l.names.map((e,t)=>A`${t>0?A`<span class="bundle-code-tree-separator">/</span>`:M}${e}`)} </span>${f?.variant?A`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:M} ${y.count>0?A`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:M}</summary>${pB(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${D(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?Jz(i):null,s=i?.length??0;return A`<li class="bundle-code-tree-file"><button type="button" class="${C({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:M}">${qe(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?A`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:M}</button></li>`})}</ul>`}function mB(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}var hB={tree:null,query:``,prefix:``,filtered:null};function gB(e,t,n,r,i=``,a=null,o=null){let s=hB;n&&(s.tree!==e||s.query!==n||s.prefix!==i)&&(hB={tree:e,query:n,prefix:i,filtered:xD(e,n,i)});let c=n?hB.filtered:e;return NT([c,t,_B(r),a,o,oB],()=>c?pB(c,t,0,r,!!n,a,o):A`<div class="bundle-code-search-empty">No files match.</div>`)}function _B(e){return[...e].map(([e,t])=>`${e}\0${t.length}\0${Jz(t)}`).join(`
|
|
183
|
-
`)}var vB=new WeakMap;function yB(e,t){let n=vB.get(t);return n||(n=Yr([...t.keys()].toSorted(),Wt(e)),vB.set(t,n)),n}var bB=1e3,xB=new WeakMap;function SB(e,t,n,r,i=``){let a=Ut(e),o=xB.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),xB.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>mB(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>bB?c.slice(0,bB):c;return A`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${D(l,e=>e,e=>A`<li><button type="button" class="${C({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:M}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${mB(e,i)}</span><span class="bundle-code-largest-size">${Wr(a.get(e))}</span></button></li>`)}</ul></div>`}var CB=20,wB=100,TB={sources:null,query:``,hits:null};function EB(e,t,n){let r=cR(e.integrity??``,t,n,!1,!1,yB(e,t));if(r.fileResults.length>wB||!r.truncated||r.totalHits<5e3||r.fileResults.length===wB&&r.fileResults.at(-1).hits.length>=CB){let e=r.fileResults.slice(0,wB).map(({path:e,lines:t,hits:n})=>({path:e,hits:n.slice(0,CB).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(TB.sources===t&&TB.query===n)return TB.hits;let i=iR(n,!1,!1),a=[],o=0;for(let n of yB(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>=CB))break}if(r.length>0&&a.push({path:n,hits:r}),a.length>=wB)break}return TB={sources:t,query:n,hits:{results:a,totalHits:o}},TB.hits}function DB(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}=EB(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=mB(e,i);return A`<div class="${C({"bundle-code-search-file":!0,current:e===r})}"><button type="button" class="bundle-code-search-file-name" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${n}</button><ul class="bundle-code-search-hits">${t.map(t=>A`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${pR(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function OB(e,t,n,r=``){if(!e.fileHashes)return A`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=Tz(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=ki[e.finding.severity]??0,r=ki[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=mB(e,r),s=e===n&&F.bundleSourceFindingIdx===i;return A`<li class="${C({"bundle-code-search-issue":!0,current:s})}"><button type="button" class="bundle-code-search-issue-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${i}" data-bundle-view-line="${t.line??``}"><div class="bundle-code-search-issue-row"><span class="${`bundle-code-search-issue-sev sev-${a}`}">${a.replaceAll(`_`,` `)}</span> <span class="bundle-code-search-issue-path mono" data-tooltip-truncated data-tooltip="${e}">${o}${t.line?`:${t.line}`:``}</span></div><div class="bundle-code-search-issue-desc">${Cw(Hi(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}var kB=new WeakMap;function AB(e,t){if(e.kind!==`stasis`)return t;if(kB.has(t))return kB.get(t);let n=Wt(e),r=new Map([...t].filter(([e])=>!/(?:^|\/)node_modules(?:\/|$)/u.test(e)&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n?.get(e)??e))),i=r.size>0?r:t;return kB.set(t,i),i}var jB=new WeakMap;function MB(e,t,n){let r=jB.get(t);if(!r){let i=e.kind===`stasis`?e.bundle.modules:null,a=vD(Pn(n).prefix,i,n);r={prefix:a,tree:_D(n.map(e=>mB(e,a)),n,i)},jB.set(t,r)}return r}function NB(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=ki[Jz(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 PB(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;iB!==F.selectedBundle&&(rB.clear(),oB++,iB=F.selectedBundle,aB=null);let r=Rt(n).paths,{prefix:i,tree:a}=MB(e,n,r),o=e.fileHashes?Tz(e.fileHashes,`issues`):new Map,s=AB(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,Kz();let r=u.endLine??u.line;F.bundleSourceTargetLine=u.line&&r<=Lt(n.get(t))?{bundle:e.integrity,path:t,line:u.line,...r>u.line?{end:r}:{}}:null,F.bundleSourceTargetLine&&qz(u.line)}}if(Gz&&(Gz.bundle!==F.selectedBundle||l&&l!==Gz.path)&&(Gz=null),l){if(Gz&&!Gz.hadIssues&&o.size>0&&c().size>0){Gz.hadIssues=!0;let t=NB(e,s,c());t&&t!==l&&(l=t,F.bundleSourceFile=t,F.bundleSourceFindingIdx=null,Gz.path=t,Kz())}}else{let t=c();l=NB(e,s,t),l&&(F.bundleSourceFile=l,Gz={bundle:F.selectedBundle,path:l,hadIssues:t.size>0},Kz())}l!==aB&&(sB(l,i),aB=l),l&&t?.managedId&&I()?G?.replaceCodeRoute(Px(F.managedTeams,t,F.currentManagedTeam,`code`,Fx(F))):l&&t?.npm&&I()?G?.replaceCodeRoute(pj(t,`code`,Fx(F))):l&&t?.repository&&I()&&G?.replaceCodeRoute(HM(t,`code`,Fx(F)));let d=l?n.get(l):null,{fileFindings:f,lineFindings:p}=$z(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="${()=>uB(!F.bundleCodeTerminal)}">${dw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!l}" @click="${()=>cB(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="${()=>lB(a)}">${uw}</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">${jT(h,[[`files`,()=>gB(a,l,g,o,i,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>DB(e,n,g,l,i)],[`issues`,()=>OB(e,g,l,i)],[`largest`,()=>SB(e,n,g,l,i)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${C({"bundle-code-main":!0,"with-panel":F.bundleSourceFindingIdx!=null})}">${l?RB(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?dB():M}</div></div>`}function FB(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}">${sw}</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}">${cw}</button></span>`}var IB=[];function LB(e){let t=IB.find(t=>t.text===e);if(t)return t.stats;let n=Lt(e),r=`${n.toLocaleString()} ${n===1?`line`:`lines`} \xB7 ${Wr(ha(e))}`;return IB.unshift({text:e,stats:r}),IB.length=Math.min(IB.length,2),r}function RB(e,t,n,r,i,a=null){let o=Kk(F.bundleCodeHistory,e.integrity,t),s=Uz(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&Yk(t)!==null,p=f?Qk(e,t,n,It(e),()=>{F.bundleSourceFile===t&&X()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=DD(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return A`<header class="bundle-code-main-bar">${FB(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">${ow}</button> ${_?OD(_,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-${Jz(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:Vz()} ${m?M:l} ${f?Wz(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">${LB(n)}</span>`}<span>${LB(h)}</span></span>`:M}</header><div class="bundle-code-main-body">${m?A`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:tB(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&I()&&!Ke(),c)}</div>`}var zB=400;function BB(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function VB(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 HB(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return mR(e,t,r>n-60?Math.max(0,r-60):0,n)}function UB(e,t,n){let r=HB(e,n??[],zB);return A`<div class="${C({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?A`<span class="bundle-search-clip">…</span>`:M}${hR(r.text,r.ranges)}</span></div>`}function WB(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(UB(t[e-1]??``,e,r.get(e)??null));return A`${i?A`<div class="bundle-search-gap" aria-hidden="true"></div>`:M} <button type="button" class="bundle-search-snippet" style="${E({"--bundle-search-lineno-w":`${c}ch`})}" data-bundle-view-source="${e}" data-bundle-view-line="${s}" data-bundle-view-scroll-block="center">${l}</button>`}function GB(e,t,n){let{path:r,lines:i,hits:a}=e,o=mB(r,t),s=VB(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===F.bundleSourceFile;return A`<section class="${C({"bundle-search-file":!0,current:u})}"><header class="bundle-search-file-head"><button type="button" class="bundle-search-file-name mono" data-bundle-view-source="${r}" data-bundle-view-line="${l}" data-bundle-view-scroll-block="center" data-tooltip-truncated data-tooltip="${r}">${o}</button> <span class="bundle-search-file-count">${a.length} ${a.length===1?`match`:`matches`}</span></header><div class="bundle-search-snippets">${s.map((e,t)=>WB(r,i,e,c,t>0))}</div></section>`}function KB(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=cR(e.integrity??``,t,n,r,i,yB(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=JB(t);if(s.length===0)return A`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let d=a?BB(c):0,f=s.length;return A`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${f}${l?`+`:``} ${f===1?`file`:`files`}</span> ${u?A`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${u}">${u}</span>`:M} ${l?A`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:M}</div>${D(s,e=>e.path,e=>GB(e,u,d))}</div>`}var qB=new WeakMap;function JB(e){return qB.has(e)||qB.set(e,Pn([...e.keys()].toSorted()).prefix),qB.get(e)}var YB={content:null,path:null,query:``,useRegex:!1,caseSensitive:!1,lines:null};function XB(e,t,n,r,i,a){let o=t.get(n);if(!r||typeof o!=`string`)return null;let s=YB;if(s.content===o&&s.path===n&&s.query===r&&s.useRegex===i&&s.caseSensitive===a)return s.lines;let c=cR(e.integrity??``,t,r,i,a,yB(e,t));if(c.error)return null;let l;if(c.truncated){let e=iR(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 YB={content:o,path:n,query:r,useRegex:i,caseSensitive:a,lines:l},l}function ZB(e,t,n,r){let i=F.bundleSourceFile;if(!i)return M;let a=t.get(i),{fileFindings:o,lineFindings:s}=$z(e,i,a),c=Uz(e,r,i,a,o,s);return A`<aside class="bundle-search-side">${eB(i,null,c.toggle)}<div class="bundle-source-body">${tB(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function QB(e,t=null){let n=It(e);if(n.size===0)return A`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=F.bundleSearchQuery,i=F.bundleSearchRegex,a=F.bundleSearchCase,o=null;if(F.bundleSourceFile){let t=XB(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">${KB(e,n,r,i,a,s)} ${ZB(e,n,o,t)}</div></div>`}var $B=(e,t,n,r=!1,i=null)=>i?A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:A`<button type="button" class="${C({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,eV=()=>[[`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`]],tV=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[xM(e),`Activity`]];function nV(e,t){return mN(()=>t===`commits`?A`<repository-history .repository="${e}" .repo="${FM(e)}" .refs="${PM(e.repoId)}"></repository-history>`:t===`agents`?A`<repository-agents .repository="${e}" .repo="${FM(e)}"></repository-agents>`:t===`pulse`?A`<repository-pulse .repository="${e}" .repo="${FM(e)}"></repository-pulse>`:t===`replay`?A`<repository-replay .repository="${e}" .repo="${FM(e)}"></repository-replay>`:A`<repository-issues .repository="${e}" .repo="${FM(e)}" .kind="${t}"></repository-issues>`)}function rV(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?YM(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="${()=>Rj()}">npm</button> <span aria-hidden="true">></span></span>`:M} <span class="bundles-slide-icon" aria-hidden="true">${k(s?Xi:l?ra:Yi)}</span><div class="${C({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?A`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:Dj(s.name)}"></npm-version-select>`:l?A`<repository-code-source .repository="${l}" .tab="${t}" .repos="${NM()}" .refs="${PM(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="${!UL(e)}" @click="${()=>{WL(e)}}">${k(ta)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>$B(e,n,t,a||!!c,o))}</div>${u?A`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?TM(l):`the repository`}`}"></span>`:M}</header></bundle-slide-header><div class="${C({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:M}" @click="${d}">${r}</div></div>`}function iV({name:e,spec:t,tab:n}){return rV({npm:{name:e,version:t??`latest`}},n,eV(),A`<div class="bundles-slide-placeholder" role="status">Opening ${lj(e,t)}…</div>`,{opening:!0})}function aV(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?TM({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 rV({repository:f},i,tV(i),p&&li.has(i)?nV(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>${aN(e)}</div>`:A`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>$M(e,t):null})}function oV(e){let t=!!e.npm;t&&!si.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!ci.has(F.bundleDetailsTab)&&(F.bundleDetailsTab=`code`);let r=!t&&!n&&ZR(e,F.bundleDetails,F.bundleDetailsTab===`advisories`);F.bundleDetailsTab===`advisories`&&!r&&(F.bundleDetailsTab=`overview`);let i=t||F.bundleDetailsTab===`compare`||jx(F.bundles??[],F.selectedBundle).length>0,a=!I();F.bundleDetailsTab===`issues`&&!a&&!n&&(F.bundleDetailsTab=`overview`);let o=F.bundleDetailsTab,s=o===`overview`,c=F.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&qt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&oz(c,X).catch(()=>{}),rV(e,o,t?eV():n?tV(F.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?EV(e,c):u?jT(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`,()=>PB(c,e)],[`search`,()=>QB(c,e)],[`commits`,()=>nV(e.repository,`commits`)],[`pulls`,()=>nV(e.repository,`pulls`)],[`agents`,()=>nV(e.repository,`agents`)],[`pulse`,()=>nV(e.repository,`pulse`)],[`replay`,()=>nV(e.repository,`replay`)],[`review`,()=>KL(()=>A`<npm-review .entry="${e}" .details="${c}" .request="${F.npmReview}" .session="${F.managedSession}" .source="${rI(e)}"></npm-review>`)],[`compare`,()=>KL(()=>A`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${F.bundleCompare}" .source="${t?rI(e):n?lI(e):null}"></bundle-compare>`)],[`issues`,()=>n?nV(e.repository,`issues`):uV(c)],[`advisories`,()=>pz(c,X,UL(e)?()=>{WL(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?A`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?A`<div class="${C({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:A`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function sV(e,t={}){if(!e)return M;let n=[];if(e.fileHash&&(n=Af(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=jf(t.bucketKey,e):t.kind===`repository`&&(n=Mf(t.bucketKey,e))),n.length===0)return M;let r=n.slice(0,2),i=n.length-r.length;return A`<div class="bundle-issue-reports">${r.map(e=>{let t=st[Kx(e)]??st.default;return A`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${k(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button>`})} ${i>0?A`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:M}</div>`}function cV(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 lV(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 uV(e){if(e.managedId)return lV(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return lV(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return lV(`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=Tz(e.fileHashes,`issues`);if(t.size===0){let t=bz();if(t===0)return lV(`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+=yz(t).length;return n>0?lV(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):lV(`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 dV(t,{kind:`bundle`})}function dV(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=Pn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=ki[Jz(t)]??0,a=ki[Jz(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return A`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?A`<span class="mono">${i}</span>`:M}</div><ul class="bundle-issues-list">${D(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=ki[e.severity]??0,r=ki[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return A`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?A`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?A`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:A`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${D(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=cV(i.line),l=s(i,F.triage.get(T(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=A`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?A`<span class="bundle-issues-finding-line">${c}</span>`:M} ${u?A`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:M} <span class="bundle-issues-finding-spacer"></span> ${sV(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${Cw(Hi(i),{paragraphs:!1})}</div>`;return A`<li class="bundle-issues-finding">${t===`bundle`?A`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:A`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function fV(e){let t=F.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?oV(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 pV=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>`,mV=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>`,hV=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`}),gV=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function _V(e){if(hV[e])return hV[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return gV[(t>>>0)%gV.length]}function vV(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ir(t))}function yV(e){delete e.currentTarget.dataset.tooltip,or()}var bV=e=>e.codeStats??=Kt(e.npm?new Map([...Xt(e)].filter(([e])=>!BA.test(e.slice(e.lastIndexOf(`/`)+1)))):Xt(e),Vt(e));function xV(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return M;let n=bV(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return M;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?A`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>A`<li><span class="bundles-languages-swatch" style="${E({background:_V(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:M;return A`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${vV}" @pointerleave="${yV}">${i.map(({key:e,label:t,lines:n})=>A`<span class="bundles-languages-segment" style="${E({flexGrow:n,background:_V(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function SV(e){try{await(await K()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function CV(e,t){let n=ZL(t),r=xV(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="${()=>{SV(e)}}">${pV}<span>Download bundle</span></button>`:A`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${pV}<span>Download bundle</span></a>`:A`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${pV}<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)">${mV}<span>SPDX</span></button></div>`:M}</div>${r}</div>`}function wV(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 TV(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function EV(e,t){if(e.npm)return kV(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>A`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?A`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?M:A`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:M} ${ot(i,t,e.commitInfo).map(t=>A`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?k(ia):M}<span>${t.text}</span></a> ${t.commit?A`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${it(e.commitInfo,t.commit.hash)??M}" target="_blank" rel="noopener noreferrer">${k(aa)}<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(Gi)}<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}">${mB(e,t)}</button></li>`)}</ul></dd>`:M} ${n&&Number.isSafeInteger(a)?A`<dt>Size</dt><dd>${Wr(a)}</dd>`:M}</dl>`,s=CV(e,t);if(!n)return wV(o(``,!0),s);if(t.error)return wV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Vt(t),r=e.sources??[...n.keys()],i=t.sourceSizes??(n.size===r.length?r.map(e=>n.get(e)??null):r.map((t,n)=>typeof e.sourcesContent?.[n]==`string`?ha(e.sourcesContent[n]):null));return Lz(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:TV(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Vt(t),{sourceNames:r,resources:i}=OV(Ht(t)),a=new Set;for(let t of e.imports.keys()){let e=t.replace(/\s*\(with: .*\)\s*$/u,``);for(let t of e.split(`, `))a.add(t)}let c=[...a].toSorted(),l=r.map(e=>n.get(e));return Lz(o,A`<dt>Version</dt><dd>${String(e.version)}</dd>${c.length>0?A`<dt>Resolution kinds</dt><dd>${c.join(`, `)}</dd>`:M}`,r,l,Wt(t),s,{bundleSize:t.size,unpackedSize:TV(l),resources:i,details:t})}return wV(o(``,!0),s,{placeholder:A`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}var DV=new WeakMap;function OV(e){if(!DV.has(e)){let t=[...e.keys()];DV.set(e,{sourceNames:t,resources:new Set(t.filter(t=>e.get(t)===`resource`))})}return DV.get(e)}function kV(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}">${pV}<span>Tarball</span></a>`,i=A`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${$N(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return wV(pM(e,{githubFigures:xP(e),provenance:EP(e),provenanceNamesBuilder:CP(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Vt(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=IP(t),d=dP(e.npm);return Lz(t=>pM(e,{prefix:t,githubFigures:xP(e),provenance:EP(e),provenanceNamesBuilder:CP(e.npm),files:c}),hM(e,c,t),a,s,null,M,{bundleSize:t.size,unpackedSize:TV(s),resources:l,leadColumn:A`${aM(e)}${AP(e)}`,trailColumns:$F(l,o),summaryExtra:A`${mP(e,c)}${WP(e,t)}${QF(e,xV(t,{legend:!0}),t)}${gP(e,r,aF(e))}`,overviewClass:`npm-overview`,lines:bV(t).lines,sized:(e,t,n)=>fA(e,u[e],n),fileTag:e=>A`${fP(d.get(e))}${GP(t,e,!0)}`,fileFlags:e=>qP(t,e,d.get(e)),fileIcon:e=>qe(e,l.has(e)?`binary`:void 0),fileFilter:BP(e)})}function AV(){Bf().catch(()=>{});let e=Of(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,F.triage.get(T(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===F.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>df(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 LV(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();FV(l,F.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?A`${n.length} ${n.length===1?`package`:`packages`}`:A`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?A`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:M}</div></div>${NV(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?A`<p style="${E({color:`var(--muted)`})}">No packages match "${F.packagesSearchQuery}".</p>`:A`<div class="${f}"><ul class="packages-list">${D(jV(l),MV,e=>RV(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">${VV(i[0],o,a?a[0]:void 0)}</div></aside>`:M}</div>`}</div>`}function jV(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 MV(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function NV(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="${PV}"></triage-selector></div>`}var PV=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function FV(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 IV(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,F.triage.get(T(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function LV(e,t,n){let r=Of().get(e),i=IV(r,n),a=F.packageSlideTriage??`live`,o=r?HV(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>`:dV(o,{kind:`package`,bucketKey:e})}</div></div>`}function RV(e,t,n){let{kind:r,pkg:i,version:a,bucket:o}=e,s={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of o.findings){let t=O(e,F.severityMode);s[t]!==void 0&&s[t]++}let c=Ai.filter(e=>s[e]>0),l=Or(i),u={selected:i===t&&zV(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return A`<li class="${C(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${E({background:l})}"></span><div class="packages-row-text"><div class="packages-name-line"><span class="packages-name" data-tooltip-truncated data-tooltip="${a===null?i:`${i}@${a}`}">${i}${a===null?M:A`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?BV(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 zV(e,t){return e.kind===`single`||e.version===t}function BV(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return A`<button type="button" class="${C({"packages-row-expand":!0,expanded:t})}" data-package-expand="${e}" aria-expanded="${String(t)}" aria-label="${t?`Hide older versions of ${e}`:`Show older versions of ${e}`}" data-tooltip="${t?`Hide older versions`:`Show older versions (${n})`}"><span class="packages-row-expand-chevron" aria-hidden="true"></span> <span class="packages-row-expand-label">${r}</span></button>`}function VV(e,t,n){let r=Of().get(e),i=[...(r?HV(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>${UV(e,t,n)}`}function HV(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,F.triage.get(T(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=WV(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function UV(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.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=Of().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=Hx[Kx(e)]??Hx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=WV(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 WV(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 GV(){Bf().catch(()=>{});let e=kf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,F.triage.get(T(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===F.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=F.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&F.repositoryDetailsTab===`issues`)return XV(i[0],i[1]);let a=F.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||Ln(e).toLowerCase().includes(a)):n.slice();JV(o,F.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return A`<div class="${C({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?A`${n.length} ${n.length===1?`repository`:`repositories`}`:A`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?A`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:M}</div></div>${KV(t)}</header>${n.length===0?A`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:F.shownTriage?`No ${F.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?A`<p style="${E({color:`var(--muted)`})}">No repositories match "${F.repositoriesSearchQuery}".</p>`:A`<div class="${u}"><ul class="packages-list">${D(o,([e])=>e,([e,t])=>ZV(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">${QV(i[0],i[1])}</div></aside>`:M}</div>`}</div>`}function KV(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="${qV}"></triage-selector></div>`}var qV=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function JV(e,t){let n=t===`name-asc`?(e,t)=>Ln(e[0]).localeCompare(Ln(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||Ln(e[0]).localeCompare(Ln(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||Ln(e[0]).localeCompare(Ln(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||Ln(e[0]).localeCompare(Ln(t[0]));e.sort(n)}function YV(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,F.triage.get(T(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function XV(e,t){let n=kf().get(e),r=YV(n),i=F.repositorySlideTriage??`live`,a=n?$V(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return A`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${Ln(e)}">${Ln(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?A`<div class="bundle-issues-empty">${c}</div>`:dV(a,{kind:`repository`,bucketKey:e})}</div></div>`}function ZV(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=Or(e),o=Ln(e);return A`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${E({background:a})}"></span><div class="packages-row-text"><span class="packages-name" data-tooltip-truncated data-tooltip="${o}">${o}</span> <span class="packages-row-meta">${t.findings.length} ${t.findings.length===1?`finding`:`findings`} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</span></div>${i.length>0?A`<div class="packages-row-chips">${i.map(e=>A`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:M} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function QV(e,t){let n=kf().get(e),r=[...(n?$V(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>${eH(e,t)}`}function $V(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,F.triage.get(T(e)))??null;return t===`invalid`?n===`invalid`:t===`deleted`?n===`deleted`:n!==`invalid`&&n!==`deleted`});e.length>0&&n.set(r,e)}return n}function eH(e,t){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=O(e,F.severityMode);n[t]!==void 0&&n[t]++}let r=Ai.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return A`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${Ln(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?A`<div class="packages-detail-chips">${r.map(e=>A`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:M}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Hx[Kx(e)]??Hx.default;return A`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${k(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${x(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>A`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function tH(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 nH(e,t,n){return`${e} ${e===1?t:n}`}function rH(e,t){let n=s(e,F.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>_n(F.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return M;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:Di[i];return A`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>x(e)).join(`, `):M}">${c}</span>`}function iH(e,t=[],n=!0,r=M){let{id:i,title:a}=e,o=t[0]?.name,s=tr(i),c=$n(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} ${rH(e,t)} ${n?M:A`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function aH(e){let t=!!F.currentLinks?.managedId;return A`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>A`<button type="button" class="links-finding-report report-button" data-links-report="${t?M:e}" data-links-finding="${n}" data-managed-report="${r??M}" data-links-preview="${t?n:M}" data-preview-report="${t?e:M}" data-preview-row="${t?i:M}" data-preview-managed-report="${t?r:M}">${k(st[Kx(e)]??st.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${x(e)}">${x(e)}</span></button>`)}</div>`}function oH(e,t){let n=e.reports.toSorted((e,t)=>x(e.name).localeCompare(x(t.name)));if(e.members.length===1){let r=e.members[0];return A`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${iH(r,n,t.has(r.id),aH(n))}</ul></li>`}return A`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${nH(e.members.length,`finding`,`findings`)} in row</span> ${aH(n)}</div><ul class="links-row-members">${e.members.map(e=>iH(e,n,t.has(e.id)))}</ul></li>`}function sH(e,t){let{rows:n,missing:r}=tH(e,Yd(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">${nH(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${D(n,e=>e.key,e=>oH(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=>iH({id:e,title:Jd(e)}))}</ul></div>`:M}</li>`}function cH(e=M){let t=F.currentLinks;if(!t)return M;Bf().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=qd(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(Hx[Kx(n)]??Hx.default)}${x(n)}</span> <span>${nH(r.length,`link`,`links`)}</span> <span>${nH(a.size,`finding`,`findings`)}</span> ${o.size>0?A`<span>found in ${nH(o.size,`report`,`reports`)}</span>`:M}</div></div></header>${s<a.size?A`<p class="links-note">${nH(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">${nH(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:M} ${r.length===0?A`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:A`<ol class="links-list">${D(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>sH(e,t))}</ol>`}</div>`}function lH(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function uH(){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?lH(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 dH=1500;function fH({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>Ev()}){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,dH);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function pH(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 mH(e,t){if(t.currentView!==`findings`)return null;let n=fi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:T(Fg(e))}};return oi(r)?r:n}function hH(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function gH(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 _H(e,t=``){let n=t.trim().toLowerCase(),r=e=>String(e??``).toLowerCase().includes(n);return(Array.isArray(e)?e:[]).flatMap(e=>{let t=(e.reports??[]).filter(e=>r(e.filename)||r(x(e.filename??``))),n=(e.bundles??[]).filter(e=>r(e.filename));return r(e.name)||t.length>0||n.length>0?[{team:e,reports:t,bundles:n}]:[]})}function vH(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function yH(e){return(e?.appMode?e.appFindings:e?.findings)??null}var bH=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=Nx(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 xH(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=>({...Mx(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:yH(t.app),reports:n,bundles:r,repositories:SH(t.repos??[],n,r,rt(i)),dependencyReview:t.dependencyReview===!0}}let r=t.find(t=>t.id===e.currentWorkspace);if(!r)return null;let i=new Map(e.bundles.map(e=>[e.integrity,e])),a=new Set(e.storedFiles??[]);return{id:r.id,scope:`workspace`,title:`Workspace: ${r.name}`,reports:[...new Set(r.reports??[])].filter(e=>n(e)!==`links`).map(e=>({name:e,available:a.has(e)})),bundles:[...new Set(r.bundles??[])].map(e=>{let t=i.get(e);return t?{...t,available:!0}:{integrity:e,name:`${e.slice(0,24)}\u2026`,available:!1}})}}function SH(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 CH=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],wH=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function TH(e,t,{findings:n=e.findings,statusBar:r=M}={}){let i=wH(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">${CH.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>A`<button type="button" class="${C({"bundles-tab":!0,"team-slide-tab":!0,active:i===e})}" role="tab" aria-selected="${String(i===e)}" data-action="${`workspace-${e}`}">${t}${a[e]==null?M:A`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function EH(e){return A`${e?.scope===`team`?TH(e,`findings`):M}<p class="triage-loading" role="status">Loading report triage…</p>`}function DH(e,t){return t===`findings`?e.title:A`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function OH(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 kH(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 AH(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(ra)}</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 jH(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">${TH(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`?TH(e,n):A`<header class="page-head"><div class="page-title"><h1>${DH(e,n)}${OH(e,`reports`,n)}${OH(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?A`<ul class="workspace-content-list">${t===`repositories`?r.map(AH):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 MH=3e5,NH=3e4,PH=2,FH=20,IH=new Map,LH=[],RH=[],zH=new Map,BH=new Set,VH=null,HH=0;function UH(e){return BH.add(e),()=>BH.delete(e)}var WH=e=>{for(let t of BH)t(e)};function GH(){IH.clear(),LH.length=0,RH.length=0,zH.clear()}globalThis.addEventListener?.(`dependency-review-changed`,()=>{GH(),WH()});function KH(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==VH&&(GH(),VH=e),IH}var qH=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,JH=e=>Number.isSafeInteger(e)&&e>=0?e:null,YH=new Set([`git`,`tarball`,`integrity`]);function XH(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,baseline:a,reviewed:o,unsupported:s,patched:c,...l}=e;return[{...l,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...c===!0?{patched:c}:{},...YH.has(s)?{unsupported:s}:a===!0?{baseline:a}:o===!0?{reviewed:o}:JH(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...JH(i)>0?{commented:i}:{}}}]}var ZH=e=>Array.isArray(e)?e.flatMap(XH):[];function QH(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(XH),more:JH(e.more)??0,unreviewed:ZH(e.unreviewed),moreUnreviewed:JH(e.moreUnreviewed)??0,unsupported:ZH(e.unsupported),moreUnsupported:JH(e.moreUnsupported)??0,moreLocked:JH(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},...JH(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...JH(n.toReview)===null?{}:{toReview:n.toReview},...JH(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...JH(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}:{},...JH(n.unasked)>0?{unasked:n.unasked}:{},...JH(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 $H(){for(;HH<PH&&LH.length+RH.length>0;){let e=LH.shift()??RH.shift(),t=[e];for(let n=0;e.background&&n<RH.length&&t.length<FH;){let r=RH[n];r.pull.repoId===e.pull.repoId&&r.review===e.review?t.push(...RH.splice(n,1)):n++}for(let e of t)zH.delete(e.key);HH++,tU(t).finally(()=>eU(t))}}function eU(e){HH--;for(let t of e)WH(t.pull);$H()}function tU(e){let[{pull:{repoId:t,number:n},review:r}]=e;return e.length===1?Db(t,n,{review:r}).then(e[0].settle,e[0].settle):Ob(t,e.map(e=>e.pull.number),{review:r}).then(t=>{for(let n of e)n.settle(t.get(n.pull.number)??Error(`The server answered with none of it.`));return null},t=>{for(let n of e)n.settle(t)})}function nU(e,t,n=!1,{background:r=!1}={}){let i=KH(),a=`${e}\0${t}\0${n}`,o=i.get(a);if(o&&Date.now()<o.until){let e=zH.get(a);return!r&&e?.background&&(RH.splice(RH.indexOf(e),1),e.background=!1,LH.push(e)),o}let s=o?.status===`ready`?{...o,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};i.set(a,s);let c={key:a,background:r,review:n,pull:{repoId:e,number:t},settle:e=>{if(i.get(a)!==s)return;let t=e instanceof Error?e:null;if(!t)try{i.set(a,{status:`ready`,until:Date.now()+MH,...QH(e)});return}catch(e){t=e}t?.name===`AbortError`?o?.status===`ready`?i.set(a,o):i.delete(a):i.set(a,{status:`error`,until:Date.now()+NH,error:t?.message||`Its lockfiles could not be read.`})}};return zH.set(a,c),(r?RH:LH).push(c),$H(),s}var rU=new WeakMap;function iU(e,{lockfiles:t,review:n},r){let i=rU.get(t)??rU.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 aU(e){return iU(`added`,e,()=>oU(e))}function oU({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=`${r.name}@${r.version??``}`,i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,patched:l,...u}=i;n.set(e,{...u,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},...cU(i,r,t)})}let r=[...n.values()],i=r.filter(e=>!e.was);return{versions:[...i,...r.filter(e=>e.was)],fresh:i.length,updated:r.length-i.length,more:e.some(e=>e.more>0),toReview:t?.toReview??r.filter(e=>lU(e,t)===`wanted`).length}}var sU={unsupported:0,wanted:1,passed:2,baseline:3};function cU(e,t,n){let r=e=>sU[lU(e,n)]??4,{unsupported:i,baseline:a,reviewed:o,reviews:s,rejected:c}=r(t)<r(e)||r(t)===r(e)&&(t.reviews??1/0)<(e.reviews??1/0)?t:e,l=Math.max(e.commented??0,t.commented??0);return{...e.patched||t.patched?{patched:!0}:{},...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...l>0?{commented:l}:{}}}}function lU(e,t){return t?e.unsupported?`unsupported`:e.baseline?`baseline`:e.reviewed?`passed`:e.reviews==null?null:e.reviews>=t.required&&!e.rejected?`passed`:`wanted`:null}function uU(e){return iU(`unreviewed`,e,()=>dU(e))}function dU({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=`${t.name}@${t.version??``}`;n.has(e)||n.set(e,t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function fU(e){return iU(e.cut?`failures-cut`:`failures`,e,()=>pU(e))}function pU({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>`,mU=j`<circle cx="8" cy="8" r="6.25"/>`,hU=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"/>`,gU={issues:{open:Y(j`${mU}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:Y(j`${mU}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":Y(j`${mU}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:Y(j`${hU}<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`${hU}<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`${hU}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},_U=Y(j`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),vU={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"/>`)]},yU={approved:[`Approved`,Y(j`${mU}<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"/>`)]},bU=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"/>`),xU=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"/>`),SU=Y(j`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),CU=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 wU(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 TU={claude:A`<span class="agent-logo" aria-hidden="true">${wy(`anthropic`)}</span>`,codex:A`<span class="agent-logo" aria-hidden="true">${wy(`openai`)}</span>`,copilot:A`<span class="agent-logo" aria-hidden="true">${wy(`github-copilot`)}</span>`},EU={claude:`Claude`,codex:`Codex`},DU=new Map;function OU(e){for(let t of e)DU.set(t.id,t)}var kU=e=>EU[e]??DU.get(e)?.name??e;function AU(e){if(TU[e])return TU[e];let t=DU.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 jU=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function MU(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 NU(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]?PU(t,e.branches[0]):null:null}function PU(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 FU=(e,t)=>MU(e)??NU(e,t),IU=`100% 0px`,LU=new WeakMap,RU=new WeakMap,zU=[],BU=!1,VU=new WeakMap;function HU(e){let t=VU.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,VU.set(e,t)}return t}function UU(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(HU(t))return t;t=t.parentNode}return null}function WU(e){for(let t of e)RU.get(t.target)?.cb(t.isIntersecting)}function GU(e){let t=e??document,n=LU.get(t);return n||(n=new IntersectionObserver(WU,{root:e,rootMargin:IU,threshold:0}),LU.set(t,n)),n}function KU(e,t){let n=RU.get(e);n?.io&&n.io.unobserve(e),RU.set(e,{cb:t,io:null}),zU.push(e),BU||(BU=!0,queueMicrotask(qU))}function qU(){BU=!1;let e=zU;zU=[];for(let t of e){let e=RU.get(t);!e||e.io||(e.io=GU(UU(t)),e.io.observe(t))}}function JU(e){let t=RU.get(e);t&&(t.io?.unobserve(e),RU.delete(e))}var YU=2,XU=6e4,ZU=new Map,QU=[],$U=new Set,eW=null,tW=0,nW=e=>{for(let t of $U)t(e)};function rW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==eW&&(ZU.clear(),QU.length=0,eW=e),ZU}function iW(){for(;tW<YU&&QU.length>0;){let{key:e,read:t}=QU.shift();tW++,t().finally(()=>aW(e))}}function aW(e){tW--,nW(e),iW()}var oW=e=>Number.isSafeInteger(e)&&e>=0?e:null,sW=e=>oW(e?.additions)===null||oW(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions};function cW(e,t,n){let r=rW(),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),QU.push({key:i,read:()=>Ab(e,t,n).then(e=>{let t=sW(e);return r.get(i)!==o||r.set(i,t?{status:`ready`,until:1/0,...t,typeless:sW(e.typeless),binary:e.binary===!0}:{status:`error`,until:Date.now()+XU,error:`The server answered with no lines.`}),null},e=>(r.get(i)!==o||(e?.name===`AbortError`?r.delete(i):r.set(i,{status:`error`,until:Date.now()+XU,error:e?.message||`Its lines couldn’t be counted.`})),null))}),iW(),o}var lW=e=>e.was?.find(t=>t!==e.version)??`(empty)`,uW=(e,t)=>A`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,dW=class extends pa{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(){$U.add(this._notify),!this._near&&KU(this,e=>{!e||this._near||(this._near=!0,JU(this),this.requestUpdate())})}_unwatch(){$U.delete(this._notify),JU(this)}render(){if(!this._near||!this.name||!this.version)return M;let e=cW(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;return e.status===`loading`?A`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`:e.status===`error`?A`<span class="npm-delta is-error" data-tooltip="${e.error}">?</span>`:A`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}">${uW(e.additions,e.deletions)}${e.binary?A`<span class="npm-delta-binary" data-tooltip="Binary files changed too, which no line counts">, binary</span>`:M}${e.typeless?A`<span class="npm-delta-typeless" data-tooltip="Leaving out the declaration files changed in types alone">(${uW(e.typeless.additions,e.typeless.deletions)} -types)</span>`:M}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,dW);var fW=class extends pa{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()}">${ow}</button> ${this._error?A`<span role="alert">Could not copy to the clipboard.</span>`:M}`:M}};customElements.define(`dependency-review-copy`,fW);var pW=12e4,mW=3e4,hW=20,gW=12,_W=48,vW=3,yW=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],bW=new Map,xW=new Set,SW=[],CW=null,wW=0,TW=()=>{for(let e of xW)e()};globalThis.addEventListener?.(`dependency-review-changed`,()=>{bW.clear(),SW.length=0,TW()});function EW(){let e=F.managedSession?`${F.managedSession.id}\0${F.managedSession.role}`:null;return e!==CW&&(bW.clear(),SW.length=0,CW=e),bW}function DW(){for(;wW<vW&&SW.length>0;)wW++,SW.shift()().finally(OW)}function OW(){wW--,TW(),DW()}async function kW(e){let t=[],n=null;for(let r=0;r<hW;r++){let r=await Tb(e,`pulls`,{state:`open`,...n?{after:n}:{}});if(t.push(...(Array.isArray(r?.items)?r.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0)),r?.more!==!0||typeof r.after!=`string`)return{items:t,more:!1};n=r.after}return{items:t,more:!0}}var AW=new Set([`no-directory`,`no-repository`]);async function jW(e){try{let t=await kb(e);return t?.review?{branch:QH(t),pulls:await kW(e)}:{branch:null}}catch(e){if(AW.has(e?.code))return{branch:null};throw e}}function MW(e){let t=EW(),n=t.get(e);if(n&&Date.now()<n.until)return n;let r=n?.status===`ready`?{...n,until:1/0,refreshing:!0}:{status:`loading`,until:1/0};return t.set(e,r),SW.push(()=>jW(e).then(n=>(t.get(e)===r&&t.set(e,{status:`ready`,until:Date.now()+pW,...n}),null),i=>(t.get(e)!==r||(i?.name===`AbortError`?n?.status===`ready`?t.set(e,n):t.delete(e):t.set(e,{status:`error`,until:Date.now()+mW,error:i?.message||`It couldn’t be read.`})),null))),DW(),r}var NW=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,PW=e=>`${e.name}@${e.version??``}${e.patched?`+patch`:``}`,FW=({repo:e,item:t})=>`${e.name}#${t.number}`,IW={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 LW(e,t){let n=lU(e,t);return n===`unsupported`?A`<span class="team-deps-review is-failed" data-tooltip="${IW[e.unsupported]??M}">can’t review</span>`:e.rejected?A`<span class="team-deps-review is-failed" data-tooltip="A reviewer rejects it: it wants their newer accepting review">rejected</span>`:e.patched&&n===`wanted`?A`<span class="team-deps-review is-wanted" data-tooltip="Reviews here pass no patch: the server’s reviewed dependencies, or reviews of its patch in the pull request’s comments, pass it">patched</span>`:n===`wanted`?A`<span class="team-deps-review is-wanted" data-tooltip="${`${NW(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${NW(e.commented,`reviewer`)} in its comments, which count here alone`:``}`}">${e.reviews}/${t.required}</span>`:M}function RW(e,t,{others:n=[],adders:r=!1,elsewhere:i=[]}={}){let a=e.source===`registry`&&e.version,o=e.was?.find(t=>t!==e.version),s=t?.canReview&&!e.patched&&lU(e,t)!==`unsupported`,c=a?oi({view:`npm`,packageName:e.name,packageSpec:e.version,...s?{bundleTab:`review`,...o?{reviewPackage:e.name,reviewSpec:o}:{}}:{}}):null,l=A`${CU}<span class="team-deps-name">${e.name}${e.version?A`<span class="team-deps-version">@${e.version}</span>`:M}</span> ${a&&lU(e,t)===`wanted`?A`<npm-delta .name="${e.name}" .version="${e.version}" .base="${lW(e)}"></npm-delta>`:M} ${LW(e,t)} ${i.length>0?A`<span class="team-deps-elsewhere" data-tooltip="${`Reviewed in the comments of ${i.join(`, `)}, which count there alone`}">in review in ${i[0]}${i.length>1?` +${i.length-1}`:``}</span>`:M} ${n.length>0?A`<span class="team-deps-also" data-tooltip="${`Added by ${n.join(`, `)}${r?``:` too`}`}">${r?`${n[0]}${n.length>1?` +${n.length-1}`:``}`:`+${n.length}`}</span>`:M}`;return A`<li>${c?A`<a class="team-deps-row" href="${c}" target="_blank" rel="noopener noreferrer">${l}</a>`:A`<span class="team-deps-row">${l}</span>`}</li>`}var zW=Y(j`<path d="m6 4 4 4-4 4"/>`),BW=class extends Wh{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=fi({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(),xW.add(this._notify),this._unsubscribe=UH(this._notify)}disconnectedCallback(){super.disconnectedCallback(),xW.delete(this._notify),this._unsubscribe?.()}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=gW){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)}">${zW}${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)}">${zW}${t}</button> ${a?A`${this.rows(e,n,r,_W)}${i>0?A`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:M}`:M}</div>`}render(){let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()].map(e=>({repo:e,read:MW(e.repoId)})),t=e.filter(({read:e})=>e.status===`ready`&&e.branch),n=t.flatMap(({repo:e,read:t})=>t.pulls.items.filter(qH).map(t=>({repo:e,item:t,entry:nU(e.repoId,t.number,!0,{background:!0})}))),r=n.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=aU(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(lU(t,e.entry.review))),n=t.filter(t=>lU(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:fU(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:uU(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted((e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||(e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number)),i=t.filter(({read:e})=>e.pulls.more),a=new Map;for(let e of r)for(let t of e.wanted){let n=a.get(PW(t));n?n.pulls.push(e):a.set(PW(t),{pkg:t,pulls:[e]})}let o=e.some(({read:e})=>e.status===`loading`)||n.some(({entry:e})=>e.status===`loading`),s=[...e.filter(({read:e})=>e.status===`error`).map(({repo:e,read:t})=>[e.name,t.error]),...n.filter(({entry:e})=>e.status===`error`).map(e=>[FW(e),e.entry.error])],c=t.flatMap(({repo:e,read:t})=>{let{count:n}=uU(t.branch),r=fU(t.branch);return n>0||r?[{repo:e,read:t,count:n+(r?.count??0)}]:[]}),l=new Map;for(let e of n.filter(({entry:e})=>e.status===`ready`&&e.review))for(let t of[...aU(e.entry).versions,...uU(e.entry).versions])t.commented>0&&!t.patched&&(l.get(PW(t))??l.set(PW(t),new Set).get(PW(t))).add(FW(e));let u=new Set(e.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,d={elsewhere:(e,t=null)=>e.patched?[]:[...l.get(PW(e))??[]].filter(e=>!t||e!==FW(t)).map(u),named:e=>u(FW(e)),shorten:u},f=s.map(([e,t])=>`${u(e)}: ${t}`),p=F.teamDependenciesTab,m=yW.filter(([e])=>e!==`branch`||c.length>0||o&&p===`branch`),h=m.some(([e])=>e===p)?p:`pulls`;this._shown=h;let g={pulls:r.length,versions:a.size,branch:c.reduce((e,{count:t})=>e+t,0)};return A`<div class="team-deps">${Zx({tabs:m.map(([e,t])=>({id:e,label:A`${t}${g[e]==null||o&&g[e]===0?M:A`<span class="team-deps-tab-n">${g[e].toLocaleString(`en-US`)}</span>`}`})),current:h,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${h}`}" aria-labelledby="${`team-deps-tab-${h}`}">${h===`reviews`?KL(()=>A`<dependency-review-list .session="${F.managedSession}" .team="${this.team}"></dependency-review-list>`):A`${o?A`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:M} ${f.length===1?A`<p class="team-deps-quiet" role="alert">${f[0]}</p>`:f.length>1?A`<p class="team-deps-quiet" role="alert" data-tooltip="${f.join(`
|
|
186
|
-
`)}">${NW(f.length,`repository or pull request`)} couldn’t be read.</p>`:M} ${!o&&e.length>0&&t.length===0&&s.length===0?A`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:M} ${h===`branch`?M:i.map(({repo:e,read:t})=>A`<p class="team-deps-quiet" role="alert">Only ${u(e.name)}’s ${NW(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${t.length===0?M:h===`pulls`?this.renderPulls(r,a,o,i.length>0,d):h===`versions`?this.renderVersions(a,o,d):c.map(({repo:e,read:t})=>this.renderBranch(e,t,d))}`}</div></div>`}renderPulls(e,t,n,r,{elsewhere:i,named:a}){if(e.length===0)return n?M:A`<p class="workspace-content-empty">No open pull request${r?` checked`:``} wants its dependencies reviewed.</p>`;let o=new Set,s=e=>n=>RW(n,e.entry.review,{others:(t.get(PW(n))?.pulls??[]).filter(t=>t!==e).map(a),elsewhere:i(n,e)});return A`<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!o.has(PW(e))),n=e.wanted.filter(e=>o.has(PW(e)));for(let e of t)o.add(PW(e));let r=FW(e),c=uU(e.entry),l=`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="${l}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${a(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?`${NW(e.toReview,`version`)} to review`:`${NW(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,s(e))} ${e.untold>0?A`<p class="team-deps-quiet">and ${NW(e.untold,`more version`)} past those listed</p>`:M} ${n.length>0?this.disclosed(`${r}:above`,`${NW(n.length,`version`)} a pull request above adds too`,n,s(e)):M} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${NW(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${NW(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,c.versions,t=>RW(t,e.entry.review,{elsewhere:i(t,e)}),e.others-c.versions.length):M}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r}){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})=>RW(e,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(e)}),1/0)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r}){let{versions:i,count:a}=uU(t.branch),o=fU(t.branch),s=o?.unread.flatMap(e=>e.paths)??[],c=[...i,...o?.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">${NW(a,`version`)} unreviewed${o?.count?`, ${o.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${s.length>0?`, ${NW(s.length,`lockfile`)} unread`:``}</p>${s.length>0?A`<p class="team-deps-quiet" role="alert">Unread, so what ${s.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${s.map((e,t)=>A`${t>0?`, `:``}<code>${e}</code>`)}</p>`:M} ${this.rows(`branch:${e.repoId}`,c,e=>RW(e,t.branch.review,{elsewhere:n(e)}),_W)} ${a>i.length?A`<p class="team-deps-quiet">and ${(a-i.length).toLocaleString(`en-US`)} more, not listed</p>`:M}</section>`}};customElements.define(`team-dependencies`,BW);var VW=null;function HW(e){let t=VW=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{VW===t&&(VW=null)}).catch(()=>{}),t}function UW(e){let t=null;return n=>{t!==null&&t!==n&&VW?.skipTransition(),t=n,e()}}function WW(){z.classList.add(`active`),Zm.classList.add(`hidden`)}function GW(){let e=pr(F.reports);if(!e)return null;let t=Object.keys(e),n=$g().filter(e=>Bg(e).commonTriage===F.shownTriage),r=dr(n,F.severityMode),i=hr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=O(t,F.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=U(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return w.focusedPkg?(c=t.filter(e=>(br(e)??`__own__`)===w.focusedPkg),w.showAll||(c=c.filter(e=>_r(e,r,i)))):c=w.showAll?t:t.filter(e=>_r(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Sr(c)}}function KW(){let e=bT();if(!e)return;let t=GW();if(!t)return;let n=F.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&I())})}function qW(){let e=bT();if(!e)return;let t=GW();t&&e.refreshTopPkgs(t)}function JW(e){return`${Oi[e]??e} findings`}function YW(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 XW(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=xH(F,c?[c]:[],Ru),u=c?`Workspace: ${c.name}`:s?JW(s):`Findings`,d=s&&Hx[s]?s:`default`,f=k(Hx[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=OH(l,`reports`,F.currentView);else if(t.length===1){let e=x(t[0]);m=A`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=A`<button type="button" class="file-chip" data-copy-report="${t.map(x).join(`
|
|
187
|
-
`)}">${p}<span>${t.length} reports</span></button>`);let h=`${a} ${`finding${a===1?``:`s`}`}`,g=F.currentWorkspace?[]:WG(!!s),_=M;if(a>0){let t={};for(let n of e){let e=O(Mg(n),F.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ai.filter(e=>t[e]>0);n.length>0&&(_=A`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return A`<span class="${`status-seg sev-${e}`}" style="${E({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return TH(l,F.currentView,{findings:a,statusBar:_});let v=new Set(F.reports.map(e=>e.repo??null)),y=YW(n,r,v.size===1?[...v][0]:null),b=A`<span class="sep" aria-hidden="true"></span>`,ee=l?M:kH(i,F.currentView);return A`<header class="page-head"><div class="page-title"><h1>${l?DH(l,F.currentView):u}${m}${OH(l,`bundles`,F.currentView)}${y}${ee}${$W()}</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:ZW}=fH({open:e=>Me({names:e})}),QW=new Set([`findings`,`files`,`links`]);function $W(){if(V.status!==`online`||!QW.has(F.currentView))return M;let e=uH();if(!e)return M;let{workspaceId:t,fileNames:n,mode:r}=e,i=bh(t);if(i.length>0&&ZW(t,i,{onSync:()=>eG(t,r,n),retry:X}),r===`single`){let e=n[0];if(i.includes(e))return tG({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:()=>eG(t,r,n)});let a=ph(t,e)?`cloud`:`local`;return tG({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>aG({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=yh(t),c=n.filter(e=>!ph(t,e)),l=o.filter(e=>!mh(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(),eG(t,r,n)}}">${rG()}<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})}}">${iG()}<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(),aG({workspaceId:t,items:u})}}">${nG()}<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 eG(e,t,n){let r=R().find(t=>t.id===e),i=t===`single`?lH(r?.reports??[],F.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return ve({workspaceId:e,cloudCount:yh(e),localFileNames:i,localBundles:a,autoRun:!0})}function tG({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?iG():e===`differ`?rG():nG(),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 nG(){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 rG(){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 iG(){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 aG({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await ol(),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 oG(e){return Object.values(e).some(e=>e>0)||F.filterSeverities.size>0?A`<severity-chips .counts="${e}"></severity-chips>`:M}function sG(e){return Object.values(e).some(e=>e>0)||F.filterColors.size>0?A`<triage-filter .counts="${e}"></triage-filter>`:M}function cG(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} ${oG(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} ${sG(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function lG(e,t){return e.map(e=>({p:Mg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var uG=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),dG=null,fG=0,pG=null;function mG(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 hG=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>`,gG=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>`,_G={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function vG(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=t.groupSt??Bg(e),o=Fg(e),s=Bi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&F.currentWorkspace?Gx(o):null,d={"kanban-card":!0,"has-conflict":a.hasConflict,"focus-side-card":!c,"kanban-expanded-track-last":i,active:r};!a.hasConflict&&a.commonColor&&(d[`mark-${a.commonColor}`]=!0);let f=parseInt(o.line,10),p=Number.isFinite(f)?`:${f}`:``,m=O(o,F.severityMode),h=_G[m]??`?`,g=Mi(o)&&F.severityMode!==`original`,_=U(o),v=_?.flagged===!0,y=_?.fix||$h(o),b=_?.comment??``,ee=M;c&&y?ee=mi(y)?A`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${Fw}</managed-fix-link>`:Eg(o)?A`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${Fw}</button>`:A`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${Fw}</span>`:c&&(b||I()&&wg(o))&&(ee=A`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Pw}</comment-preview>`);let te=A`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${mw(m)} \u2014 corrected from ${mw(o.severity)}`:M}" aria-label="${g?`Severity ${mw(m)}, corrected from ${mw(o.severity)}`:`Severity ${mw(m)}`}">${h}${g?`*`:``}</span> ${v?A`<span class="kanban-flag" aria-label="Flagged">${qw}</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="${Wx[u]}" aria-label="${Wx[u]}">${k(st[u])}</span>`:M}</div>`;return c?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-source draggable="${Wg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${te}</div>`:l?A`<div class="${C(d)}" data-gid="${H(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${te}</div>`:A`<div class="${C(d)}" data-gid="${H(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${te}</div>`}var yG={content:``,parts:``};function bG(e){return yG.content!==e&&(yG={content:e,parts:KT(e)}),yG.parts}function xG(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
|
|
188
|
-
`).length,a=String(i).length;return A`<div class="focus-code-lines" style="${E({"--lineno-width":`${a}ch`})}"><aside class="focus-code-gutter" aria-hidden="true">${Array.from({length:i},(e,t)=>{let r=t+1,i={"focus-code-lineno":!0,"focus-code-line-active":!!n&&r>=n.start&&r<=n.end};return A`<div class="${C(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?k(r):bG(t)}</code></pre></div>`}function SG(e){return!e||!zv(Fg(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 CG(e,t=M,n=!1){F.focusCodeTick;let r=RC(e),i=FC(e),a=r?`focus-main with-code`:`focus-main`,o=E({"--focus-split":String(F.focusSplit)});return A`<div class="${a}" style="${o}" data-gid="${H(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?M:SG(e)} ${mG(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="${Vs}" aria-valuemax="${Hs}" aria-valuenow="${Math.round(F.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??M}" data-focus-code-integrity="${r.integrity??M}">${r.loading?A`<div class="focus-code-empty">Loading source…</div>`:A`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?A`<span class="focus-code-line">:${Kn(r.range)}</span>`:M} ${(i?.stack.length??0)>1?A`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${sw}</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">${cw}</button></div>`:M}</header><div class="focus-code-body">${xG(r)}</div>`}</div>`:M}</div>`}function wG(e,t,n=[],r=null){if(!e&&!r)return M;let i=e?Bg(e):{},a=F.kanbanDetailFullscreen,o={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},s=e?H(e):null,c=t?.items??[],l=c.findIndex(e=>H(e)===s),u=A`<div class="kanban-detail-actions">${SG(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?gG:hG}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return A`<div class="${C({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${C(o)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?M:u}<div class="kanban-detail-body">${e?a?CG(e,u,!0):mG(e,!1,`kanban-detail`,!1,!0):A`<div class="links-preview-message" role="status">${r.error||`Loading finding…`}</div>`}</div></div>${c.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="${l===0}" aria-label="Previous finding">${sw}</button> <span class="count">${l<0?c.length:`${l+1} / ${c.length}`}</span> <button type="button" class="focus-nav-btn" data-kanban-nav="next" ?disabled="${l===c.length-1}" aria-label="Next finding">${cw}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${c}" .activeKey="${s}" .keyOf="${H}" .renderItem="${e=>vG(e,{variant:`kanban-side`,active:H(e)===s})}"></kanban-rail></aside>`}</div>`}function TG(e,t,n=new Map){if(F.viewMode===`table`){let n=F.sortBy===`file`?lG(e,uG):e;return n.length===0?M:(dG=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">${mG(t)}</div></aside>`:M}</div>`)}if(F.viewMode===`focus`){if(e.length===0)return M;let n=e.indexOf(t);fG=n;let r=t,i=n===0,a=n===e.length-1;return A`<div class="focus-view">${CG(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">${sw}</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">${cw}</button></div></div><div class="focus-sidebar-body">${D(e,e=>H(e),e=>vG(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=Bg(e)),t};for(let t of e){let e=a(t).commonTriage??`untriaged`,n=i.get(e);n&&n.push(t)}let o=r.some(e=>e.key===F.kanbanExpandedColumn)?F.kanbanExpandedColumn:null,s=o?r.filter(e=>e.key===o):r,c={"--kanban-cols":String(r.length)},l=t,u=l?r.find(e=>e.key===(a(l).commonTriage??`untriaged`)):null;return A`<div class="kanban-board" style="${E(c)}">${D(s,e=>e.key,e=>{let t=i.get(e.key),n=e.key===o;return A`<div class="${`kanban-column kanban-column-${e.key}${n?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${n}" aria-label="${n?`Show all columns`:`Show only ${e.label}`}">${n?gG:hG}</button></div><div class="kanban-column-body">${t.length===0?A`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:D(t,e=>H(e),(e,t)=>vG(e,{active:H(e)===F.kanbanPopoverGid,expandedTrackLast:(t+1)%r.length===0,groupSt:a(e)}))}</div></div>`})}</div>${wG(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=Mg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=F.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return A`${D(n,e=>e,e=>{let n=F.sortBy===`file`?lG(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Mg(n[0]);return A`<div class="file-group"><div class="file-header"><span>${Rn(r,Lg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${D(n,e=>H(e),e=>mG(e,!1,null,!0))}</div></div>`})}`}let r=F.sortBy===`file`?lG(e,uG):e;return A`${D(r,e=>H(e),e=>{let t=Fg(e),n=Zn(t,Lg(t)),r=In(t),i=zi(t),a=e.length>1;return A`<div class="${C({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Rn(t,Lg(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>${mG(e,!0,null,!0)}</div>`})}`}function EG(){F.bundleSourceFile&&fK().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&N(nB(),e)}var DG=UW(JG);function X(){DG(F.currentView)}var OG=e=>Object.assign(document.createElement(`div`),{id:e});function kG(e){let t=document.querySelector(`#${e}`);return(!t||!z.contains(t)||z.firstElementChild!==t)&&(t=OG(e),z.replaceChildren(t)),t}function AG(e=null){let t=e==null?null:F.managedTeams.find(t=>t.id===e),n=t?xH({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:F.managedTeams,managedSession:F.managedSession},[]):null;N(EH(n),kG(`triage-loading-slot`))}function jG(){let e=xH(F,R(),Ru);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=kG(`empty-workspace-slot`);t&&N(A`${XW([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),WW()}var MG={"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`}},NG=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),PG=null;function FG(e){let t=[e,An(),Dr()];if(PG?.key.every((e,n)=>e===t[n]))return PG;let n=T_(e),r=e.some(e=>e.some(e=>jn(e.file))),i=e.some(e=>e.some(e=>!jn(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&&!jn(e.file))),l=new Set;for(let t of e)for(let e of t)!jn(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(s_(e));let p=Object.keys(G_),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(NG);return PG={key:t,hasAnyPriority:n,hasAnyModulesPath:r,hasAnySourcePath:i,hasMultipleFiles:a,repoInputUseful:c,knownRepo:u,analyzerSet:d,modelSet:f,analyzerOptions:h,modelOptions:g},PG}var IG=null;function LG(e,t){if(IG?.groups===e&&IG.workspace===t)return IG;let n=!1,r=!1,i=!1;for(let a of e){let e=!1,o=!1;for(let n of a){let a=Fi(n);a===`partial`&&(r=!0),!((a===`unreachable`||a===`refuted`)&&(i=!0,t))&&(a===`revalidation`?e=!0:o=!0)}e&&o&&(n=!0)}return IG={groups:e,workspace:t,hasFoldedRows:n,hasPartialRow:r,hasRuledOutRow:i},IG}var RG=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),zG={reports:[],value:!1};function BG(){return RG(zG.reports,F.reports)||(zG={reports:[...F.reports],value:Mr(F.reports)}),zG.value}var VG={reports:[],depsDir:null,value:!1};function HG(){let e=An();return(VG.depsDir!==e||!RG(VG.reports,F.reports))&&(Mn(F.reports)&&Jg(),VG={reports:[...F.reports],depsDir:e,value:F.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)))}),VG.value}var UG={reports:[],single:!1,tags:[]};function WG(e){if(UG.single!==e||!RG(UG.reports,F.reports)){let t=F.reports.flatMap(e=>e.groups.flat());UG={reports:[...F.reports],single:e,tags:ES(t,e?_S.filter(e=>e!==`type`):_S)}}return UG.tags}var GG=null;function KG(){let e=F.revalidateConflicts.size>0,t=!e&&BG();return e?F.showRevalidation!==!1&&(GG=F.showRevalidation,F.showRevalidation=!1):(GG!==null&&(F.showRevalidation=GG,GG=null),!t&&F.showRevalidation===!1&&(F.showRevalidation=!0)),F.upstreamOnly&&(!t||F.showRevalidation===!1||!HG())&&(F.upstreamOnly=!1),Tr(F.showRevalidation,F.upstreamOnly),t}var qG=null;function JG(){mg()||hg(),EG(),kn(F.reports),Td()&&queueMicrotask(()=>{Dd()});let e=HG(),t=KG(),n=e;if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)){let e=F.currentView.slice(10),t=xH(F,R(),Ru),n=kG(`workspace-content-slot`);n&&N(jH(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(F.currentView===`bundles`){if((F.bundles??[]).length===0)F.currentView=`findings`;else{qt(F.bundleDetailsTab,F.bundleSourceFile)&&fK().catch(()=>{});let e=kG(`bundles-slot`);e&&N(fV(F.bundles),e);let t=F.bundleDetails,n=F.selectedBundle&&t&&(t.json||t.bundle);if(n&&F.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=Ez(F.bundleDetails);if(n){jz(n);let r={hideAllFiles:!0,triageCounts:wz(F.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=qG,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===w.graphState&&i.details===t&&i.reason===w.bundleReason?a.options=r:(qG=null,ST(e,n,r,kz,Az).then(e=>(e&&w.graphState&&(qG={state:w.graphState,details:t,reason:w.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(F.bundleDetailsTab===`terminal`||F.bundleDetailsTab===`code`&&F.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&kT(e,F.bundleDetails)}WW();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 ${TM(i)}`:`DeepView — bundles`;return}}if(F.currentView===`reviews`){let e=kG(`dependency-reviews-slot`);e&&N(KL(()=>A`<dependency-review-list .session="${F.managedSession}"></dependency-review-list>`),e),WW(),document.title=`DeepView — my reviews`;return}if(F.currentView===`profile`){let e=kG(`managed-profile-slot`);e&&N(A`<managed-profile .session="${F.managedSession}" .linkError="${F.profileLinkError}"></managed-profile>`,e),WW(),document.title=`DeepView — profile`;return}if(F.currentView===`npm`){let e=F.npmOpening,t=kG(e?`bundles-slot`:`npm-slot`);t&&N(e?iV(e):Zj(),t),WW(),document.title=e?`DeepView \u2014 ${lj(e.name,e.spec)}`:`DeepView — npm packages`;return}if(F.currentView===`repository-code`){let e=F.repositoryCodeOpening,t=kG(`bundles-slot`);t&&e&&N(aV(e),t),WW(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(F.currentView===`packages`){let e=kG(`packages-slot`);e&&N(AV(),e),WW(),document.title=`DeepView — packages`;return}if(F.currentView===`repositories`){let e=kG(`repositories-slot`);e&&N(GV(),e),WW(),document.title=`DeepView — repositories`;return}if(F.currentView===`links`){if(F.currentLinks){let e=kG(`links-slot`),t=mg();e&&N(A`${cH($W())}${t?wG(t.group,null,[],t):M}`,e),WW(),document.title=`DeepView \u2014 ${F.currentLinks.name}`;return}F.currentView=`findings`}if(F.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=kG(`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}))}WW(),document.title=`DeepView — scans`;return}let r=MG[F.currentView];if(r){let e=kG(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=mp(),F.currentView===`manage-import`&&(t.localDeps=fp(),t.promptPassword=Ve,t.resolveConflicts=gS,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),WW(),document.title=r.title;return}if(F.reports.length===0){F.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&jG();return}let i=$g(),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=Bg(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){Mi(t)&&(f=!0);let e=U(t);$h(t)&&(u=!0),e&&(e.comment&&(l=!0),e.fix&&(u=!0),e.flagged===!0&&(d=!0))}let p=r_(),m=i.some(e=>e.some(e=>p.has(e.id)));m||(F.filterDuplicates=``);let h=s.some(P_),g=s.some(F_);h||(F.filterCrossContext=``),g||(F.filterAppStacked=``);let _=L_(s);_||(F.filterSecurity=``);let v=new Set;for(let e of s)for(let t of e){let e=kr(t);e&&v.add(e)}let{hasFoldedRows:y,hasPartialRow:b,hasRuledOutRow:ee}=LG(Zg(),!!F.currentWorkspace),te=[...new Set(F.reports.map(e=>e.type))].join(`, `),ne=F.reports.map(e=>e.fileName),re=s.map(kg).filter(e=>e.length>0),ie=re.length>0&&gr(re),{hasAnyPriority:ae,hasAnyModulesPath:oe,hasAnySourcePath:ce,hasMultipleFiles:ue,repoInputUseful:de,knownRepo:fe,analyzerSet:pe,modelSet:me,analyzerOptions:he,modelOptions:ge}=FG(i);if(F.filterAnalyzer){let e=F.filterAnalyzer===i_?null:F.filterAnalyzer;(!pe.has(e)||pe.size<2)&&(F.filterAnalyzer=``)}if(F.filterModel){let e=F.filterModel===o_?null:F.filterModel;(!me.has(e)||me.size<2)&&(F.filterModel=``)}let _e=On(v);F.filterRevalidate&&!_e.some(e=>e.value===F.filterRevalidate)&&(F.filterRevalidate=``);let ve=C_(s);ve&&(F.filterRevalidate=`confirmed`);let ye=v.has(`partial`)&&yg();ye||(F.filterPartial=``);let be=t&&(y||b||!F.currentWorkspace&&ee),xe=!(t&&F.showRevalidation!==!1)&&!F.upstreamOnly&&oe&&ce;!xe&&F.filterSources.size>0&&F.filterSources.clear(),ie||(F.filterConfMin=0,F.filterConfMax=10,(F.sortBy===`confidence-desc`||F.sortBy===`confidence-asc`)&&(F.sortBy=`severity`)),!ae&&(F.sortBy===`priority-desc`||F.sortBy===`priority-asc`)&&(F.sortBy=`severity`),!ue&&F.sortBy===`file`&&(F.sortBy=`severity`);let Se=R_(s),Ce={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},we={red:0,blue:0,green:0,gray:0,none:0};for(let e of Se){if(e.length===1){let t=O(e[0],F.severityMode);Ce[t]=(Ce[t]||0)+1;let n=U(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>O(e,F.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>U(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=u_(Se),Ee=[...Te].toSorted(NG);if(F.filterRepo){let e=F.filterRepo===a_?null:F.filterRepo;Te.has(e)||(F.filterRepo=``)}let De=W_(z_(s)),Oe=pr(F.reports),ke=Oe?Object.keys(Oe).length:0,Ae=ke>1;!Ae&&F.currentView===`files`&&(F.currentView=`findings`),!Ae&&F.viewMode===`graph`&&(F.viewMode=`kanban`);let je=XW(i,ne,de,fe,ke);if(F.currentView===`files`){let e=dr(i,F.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!z.contains(t)||!z.contains(n))&&(t=OG(`header-slot`),n=OG(`tree-view-slot`),z.replaceChildren(t,n)),t&&N(je,t),n&&N(pT(Oe,e),n),WW(),document.title=`DeepView \u2014 ${te||`no analyzer`}`;return}let Me=F.viewMode===`table`&&F.tableSelectedGid&&De.some(e=>H(e)===F.tableSelectedGid),Ne=null;F.viewMode===`graph`&&Oe&&(Ne=GW(),Ne||(F.viewMode=`kanban`));let Pe=!!Ne,Ie=`findings-content`;Me&&(Ie+=` with-details`),Pe&&(Ie+=` with-graph`),a&&(Ie+=` with-kanban`),F.viewMode===`focus`&&(Ie+=` with-focus`);let Le=M,Re=M,ze=M,Be=pH(De,F,fG);dG=null,Pe||(Le=cG(De.length,s.length,o,Ce,we,{showSource:xe,showConfidence:ie,showPriority:ae,showGraphMode:Ae,showFileSort:ue,kanbanMode:a,showRepo:!!F.currentWorkspace,hasComment:l,revalidateOptions:_e,showPartial:ye,canDropLayer:t,canDetailLayer:be,canUpstreamLens:n,confirmedLocked:ve,hasFix:u,hasFlagged:d,hasDuplicates:m,hasCrossContext:h,hasAppStacked:g,showSecurity:_,showSeverityMode:f||F.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),F.shownTriage&&s.length===0?Re=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No ${F.shownTriage} findings.</p>`:De.length===0&&s.length>0&&!a?Re=A`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:s.length===0&&(Re=i.length>0?A`<p style="${E({color:`var(--green)`})}">All ${te} issues triaged.</p>`:A`<p style="${E({color:`var(--green)`})}">No ${te} issues found.</p>`),ze=TG(De,Be,c));let He=document.querySelector(`#header-slot`),Ue=z.querySelector(`:scope > .findings-content`),We=Ue&&Ue.querySelector(`:scope > #findings-graph-slot`),Ge=Ue&&Ue.querySelector(`:scope > #findings-body-slot`),Ke=Ue&&(We?`graph`:Ge?`body`:null)===(Pe?`graph`:`body`);!He||!Ue||!z.contains(He)||!z.contains(Ue)||!Ke?(He=OG(`header-slot`),Ue=Object.assign(document.createElement(`div`),{className:Ie}),Ue.append(...Pe?[OG(`findings-graph-slot`)]:[OG(`toolbar-slot`),OG(`empty-state-slot`),OG(`findings-body-slot`)]),z.replaceChildren(He,Ue)):Ue.className!==Ie&&(Ue.className=Ie),He&&N(je,He);let qe=document.querySelector(`#toolbar-slot`);qe&&N(Le,qe);let Je=document.querySelector(`#empty-state-slot`);Je&&N(Re,Je);let Ye=document.querySelector(`#findings-body-slot`);if(Ye&&N(ze,Ye),Ne){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`]};ST(e,Ne,t,KW,qW)}}if(dG){let e=z.querySelector(`.finding-table-slot`);e&&(pG||=document.createElement(`finding-table`),pG.items=dG,pG.selectedGid=F.tableSelectedGid,pG.parentNode!==e&&e.append(pG))}WW(),document.title=`DeepView \u2014 ${te||`no analyzer`}`,I()&&G?.replaceFindingRoute(mH(Be,F))}var YG=new Map,XG=new Map,ZG=new Map,QG=new WeakMap;async function $G(e){try{let t=await pl(e);return t?Qt(t,e):null}catch{return null}}var eK=null;function tK(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return eK=t.size>0?{bundles:t}:null,eK}function nK(e){eK===e&&(eK=null)}function rK(e,t=()=>!0){let n=eK?.bundles.get(e);return!n||!t(n)?null:(eK.bundles.delete(e),eK.bundles.size===0&&(eK=null),n)}function iK(e,t,{sources:n=!0}={}){if(!t.managedId&&I())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?YG:XG,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=rK(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?Z_():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?$t(await gx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Qt(await hx(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 $G(e);return n?.kind===i&&!n.stale?n:iK(e,t)}let[r,a]=await Promise.all([sK(e,t),$G(e)]);if(!r.error){let t=a?.kind===r.kind&&!a.stale;t&&(r.fileHashes=a.fileHashes,r.fileSizes=a.fileSizes,r.lineCounts=a.lineCounts),t||Zt(r).then(t=>ml(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 aK(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;Q_(),F.currentView=`bundles`,F.selectedBundle=e,F.selectedBundleWorkspace=n,F.bundleDetails=null,F.bundleSourceFile=null,F.bundleCodeHistory=null,F.bundleCodeFileRequest=o?{bundle:e,path:o}:null,F.bundleCompare=null,F.bundleSourceFindingIdx=null,F.bundleCodeSearchQuery=``,F.bundleCodeSearchMode=`files`,F.bundleSearchQuery=``,F.bundleSearchRegex=!1,F.bundleSearchCase=!1,F.bundleSearchContext=!0,F.bundleDetailsTab=t??`overview`,w.showAll=!0,F.shownTriage=null}function oK(e,{preserveSource:t=!1}={}){qt(F.bundleDetailsTab,F.bundleSourceFile)&&!qt(e,t?F.bundleSourceFile:null)&&Q_(),F.bundleDetailsTab=e,F.bundleCodeFileRequest=null,t||(F.bundleSourceFile=null,F.bundleCodeHistory=null),F.bundleSourceFindingIdx=null}async function sK(e,t){try{let n=await fl(e);if(I())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return $t(ga(n),{integrity:e,kind:i,size:n.byteLength});let t=ga(await Xm(n,()=>!I())),a=Nt.parse(t);return{integrity:e,kind:i,size:n.byteLength,bundle:a}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,kind:i,size:n.byteLength,error:t.message}}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,error:t.message,size:0}}}function cK(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Jf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Jt(e);if(Jf(e.integrity,t),F.bundleDetails!==e)return;e.fileHashes=t,X()}catch{}})()}}function lK(e){if(ep(e))return Promise.resolve();if(ZG.has(e))return ZG.get(e);let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await $G(e);if(t?.json||t?.bundle)try{Jf(e,await Jt(t))}catch{}})();return ZG.set(e,n),n.finally(()=>{ZG.get(e)===n&&ZG.delete(e)}).catch(()=>{}),n}async function uK(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 lK(e)}}}async function dK(e){let t=(F.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await iK(e,t,{sources:qt(F.bundleDetailsTab,F.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}F.selectedBundle!==e||t.managedId&&!F.bundles.includes(t)||(F.bundleDetails=n,X(),cK(n),t.managedId||Bf().catch(()=>{}))}function fK(e=F.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?Z_():void 0,n=QG.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=iK(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 QG.set(e,{job:i,signal:t}),i.finally(()=>{QG.get(e)?.job===i&&QG.delete(e)}).catch(()=>{}),i}async function pK({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=rK(d.integrity,t=>t.managedId===e),p=F.bundleDetails?.managedId===e&&F.bundleDetails.integrity===d.integrity&&!F.bundleDetails.error?F.bundleDetails:null;try{F.bundles=c,ar(),aK(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?jx(c,d.integrity).find(e=>e.managedId===o):null;e&&(F.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ni(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`&&kx(`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&&kx(`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=Z_();try{v=await hx(e,{signal:t});break}catch(e){if(e?.name===`AbortError`&&t.aborted&&h())continue;return g(e,!1)}}try{if(v.integrity!==d.integrity)throw Error(`the metadata is for another version of this bundle`);if(h()){let t=Qt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,F.bundleDetails=n,X({animate:!1})}return l()&&_===W()&&F.bundleDetails?.managedId===e&&F.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function mK(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 hK(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:mK(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 gK(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 _K=`*,*: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
|
-
`,vK=`: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
|
-
`,yK=null,bK=null,xK=!1,SK=!1,CK=0;function wK(){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 TK(){return wK()===`webkit`}function EK(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 DK(){if(!yK)return;if(I()||!bK||bK.persisted!==!1||!xK){yK.hidden=!0;return}yK.hidden=!1;let e=bK.usage===null||bK.quota===null?``:` Using ${EK(bK.usage)} of ${EK(bK.quota)}.`;yK.querySelector(`.storage-label`).textContent=`Storage at risk`,yK.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(TK()?`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 OK(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!TK()&&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 `+(TK()?`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 kK(){if(await mY(),!yK||I()){DK();return}let[e,t]=await Promise.all([_p(),(async()=>{try{return(await Vc()).length>0||await sl()}catch{return!1}})()]);bK=e,xK=t,DK()}function AK(){!yK||CK||(CK=setTimeout(()=>{CK=0,kK()},1e3))}async function jK(){SK||(await kK(),I()||bK?.persisted!==!1||!xK||SK)||(SK=!0,OK(await gp(),!1),await kK())}async function MK(){if(bK&&bK.persisted===!1){SK=!0;let e=await gp();OK(e,!0),e||await Oe()}await kK()}function NK(e){yK=e,yK&&(yK.addEventListener(`click`,()=>{MK()}),zc((e,t)=>{AK(),t===`save`&&jK()}),jK())}function PK(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);N(n.length>0?A`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${D(n,e=>e.id,e=>{let t=Dm(e),n=e.reports.filter(e=>Ru(e)!==d).length;return A`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${k(Zi)} <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 FK=null;function IK(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 LK(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=yH(e.app),{reports:r,bundles:i,repositories:a}=IK(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 RK(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?FK?FK.options=e:FK={options:e,elapsed:!1,timer:setTimeout(()=>{FK.elapsed=!0,RK(FK.options)},1e3)}:(clearTimeout(FK?.timer),FK=null);let p=f&&!FK.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(IK(e)).some(Boolean));if(Ke()&&!n){N(A`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}N(n==null?A`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?A`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:A`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?A`<nav class="managed-team-list" aria-label="Teams">${D(g,e=>e.id,e=>A`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${k(Zi)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${LK(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`,Yi],[`manage-scans`,`Scans`,ta],[`manage-reports`,`Reports`,na]]:[],[`npm`,`npm packages`,Xi]].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($i)}</span><span>Manage</span></button></div>`:M}`,l)}var zK=!1,BK=null;function VK(){if(!zK){BK=lc();return}Bf().catch(()=>{}),dd().catch(()=>{})}function HK(){if(zK)return;zK=!0;let e=BK;BK=null,e!==null&&e===lc()&&VK()}async function UK(e){await ze({workspace:e})}var WK=class extends Ov{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`,WK);function GK(){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 KK(e,{openManagedReport:t,readTeam:n=_x,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:VC(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=VC(e.id);if(t)return t}return d(c)}async function qK(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 VC(e)}async function JK(e,t){if(I())return KK(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([np(e.report),tp(e.workspace)]);async function o(t){let r=BC(t,a?.id);return(F.currentFile!==t||F.currentWorkspace||F.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),VC(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=VC(e.id);if(t)return t}let s=VC(e.id);if(s)return s;let c=F.reports.map(e=>e.fileName).filter(Boolean),l=await ip(e.id,{skip:c});return l?await o(l):null}var YK=1600,XK=`link-target`,ZK=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,QK=null,$K=3,eq=150,tq=5;function nq(e){QK!==null&&clearTimeout(QK);for(let e of document.querySelectorAll(`.${XK}`))e.classList.remove(XK);e.classList.add(XK),QK=setTimeout(()=>{e.classList.remove(XK),QK=null},YK)}function rq(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>=$K||++i>=eq?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function iq(e){let t=0,n=window.innerHeight,r=UU(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 aq(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=iq(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 oq(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<tq;t++){if(await rq(e),!e.isConnected||aq(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function sq(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 cq(e,t,n=()=>!0){let r=HC(e.group,t),i=n_(r);if(i&&Kg(i)&&queueMicrotask(Dd),X(),await Q({revealSelection:!0}),!n())return{ok:!1};let a=await sq(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await oq(a),n()?(nq(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function lq(e,{openManagedReport:t=AL,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await JK(e,{openReport:DL,openWorkspace:jL,openManagedReport:t,isCurrent:n});return n()?r?await cq(r,e.id,n):{ok:!1,reason:I()?`Couldn't find that finding in the team reports you can access.`:ZK}:{ok:!1}}async function uq(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await qK(e,t,n,{openReport:DL,openManagedReport:AL});return r?await cq(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 dq=null,Z=null,fq=null;function pq(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}lr();function mq(){return Of().size}function hq(){return kf().size}var gq=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,_q=`application/x-deepview-report`,vq=`application/x-deepview-source-ws`,yq=`application/x-deepview-bundle`,bq=!1,xq=!1,Sq={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[d]:`Links`},Cq=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,d],wq=``,Tq=!1,Eq=new Map,Dq=``,Oq=new bH;function kq(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?BC(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!==Dq){Dq=s;for(let e of o){let t=Eq.get(e.id)??new Set;t.add(i),Eq.set(e.id,t)}}}function Aq(e,t={}){let n=`file-item${jq(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=x(e),i=Lu(e),a=Hx[Kx(e)]??Hx.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 jq(e,t){return e===F.currentFile&&t===BC(e)&&(F.currentView===`findings`||F.currentView===`files`||F.currentView===`links`)}function Mq(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 Nq=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>`,Pq=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 Fq(){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">${Nq}</button></span></li>`}function Iq(){let e=_H(F.managedTeams,wq);return e.length===0?M:A`${Mq(`Teams`)} ${D(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=vH(r,(e.reports??[]).filter(e=>e.analyzer!==d).length),a=Oq.shown(e.id,`reports`,i,Tq),o=Oq.shown(e.id,`bundles`,i,Tq),s=t.filter(e=>e.analyzer!==d).length,c=yH(r);return A`<li class="${`file-item team-item${Bq(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{AL(e)}}">${$q}<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="${()=>{$b(e)}}">${nJ}</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="${Tq}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?A`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${Tq}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:M}</span></div>`:M}</li>${a?D(t,e=>e.id,t=>Uq(e,t)):M} ${o?D(n,e=>e.id,t=>Gq(e,t)):M}`})}`}function Lq(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">${gK(e)}</span></button></li>`}function Rq(){return D(F.managedTeams??[],e=>e.id,e=>Lq(e.name,$q,Bq(e)||(e.reports??[]).some(t=>Vq(e,t))||(e.bundles??[]).some(t=>Hq(e,t)),()=>{AL(e)}))}function zq(e){return D(e,e=>e.id,e=>Lq(e.name,Qq,rJ(e)||e.reports.some(t=>jq(t,e.id))||e.bundles.some(t=>Jq(t,e.id)),()=>uJ(e.id)))}function Bq(e){return F.currentManagedTeam===e.id&&!!F.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)}function Vq(e,t){return F.currentManagedTeam===e.id&&F.currentManagedReport===t.id&&[`findings`,`links`].includes(F.currentView)}function Hq(e,t){return F.currentManagedTeam===e.id&&Nx(F)===t.id}function Uq(e,t){let n=x(t.filename),r=Vq(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="${hH(t)||M}" data-tooltip-placement="right-start" @click="${()=>{Wq(e,t)}}">${k(Hx[qx(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function Wq(e,t){return AL(e,t.id)}function Gq(e,t){let n=Hq(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="${hH(t)||M}" data-tooltip-bundle="${t.kind||M}" data-tooltip-built="${t.provenance===`build`?`true`:M}" data-tooltip-stats="${gH(t)||M}" data-tooltip-commit="${t.summary?.commit||M}" data-tooltip-commit-info="${it(t.commitInfo,t.summary?.commit,t.repoFullName)??M}" data-tooltip-placement="right-start">${qq}<span class="file-label">${t.filename}</span></button></li>`}function Kq(){return A`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var qq=A`${k(Yi)}`;function Jq(e,t){return F.selectedBundle===e&&F.currentView===`bundles`&&t===F.selectedBundleWorkspace}function Yq(e,t={}){let{integrity:n,name:r}=e,i=Jq(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}`}">${qq}<span class="file-label">${r}</span></button></li>`}function Xq(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 Zq(e,t){return A`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${x(e)}</em></span></span></li>`}var Qq=A`${k(Zi)}`,$q=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>`,eJ=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>`,tJ=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>`,nJ=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 rJ(e){return F.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(F.currentView)}function iJ(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${rJ(e)?` current`:``}`;return A`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${Qq}<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">${nJ}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${eJ}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${tJ}</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="${Tq}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?A`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${Tq}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:M}</span></div>`:M}</li>`}function aJ(e){return!wq||x(e).toLowerCase().includes(wq)}var oJ=(e,t)=>x(e).localeCompare(x(t));async function Q({revealSelection:e=!1}={}){await mY();let t=lc();if(RK({serverMode:t,session:F.managedSession,teams:F.managedTeams,sessionPending:HJ,teamsPending:UJ,alternateMode:an(F.serverModeConfig)?`e2e`:`local`,onSwitchMode:lJ}),GL(),I()){if(Oq.sync(F,e),!HJ&&!UJ&&!VJ&&!WJ&&tL({catalogOnly:!0}),F.bundles=(F.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),F.storedFiles=[],PK([]),!Z)return;N(A`${Iq()}`,fq);let t=Z.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&N(Rq(),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`,``),CJ();return}if(Oq.sync({managedTeams:[]}),Z?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Z?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await up(),t!==lc()){await Q();return}VK();let n=await Vc();if(t!==lc()){await Q();return}let r=R();kq(r,e),PK(r);let[i]=await Promise.all([ol(),...r.map(e=>zr(`workspace`,e.id))]);if(t!==lc()){await Q();return}if(F.bundles=i,F.storedFiles=n,AK(),!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 Cq)l.set(e,[]);for(let e of n){if(o.has(e)||!aJ(e))continue;let t=Kx(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!wq||e.name.toLowerCase().includes(wq)||e.reports.some(e=>aJ(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&aJ(t.name)})),f=i.filter(e=>!c.has(e.integrity)&&aJ(e.name));N(A`${Fq()} ${D(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)aJ(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(oJ),n.sort(oJ);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!wq||aJ(e.name))&&r.push(e):wq||i.push(t)}let o=dL(e)??Dm(e),c=o?.appMode??Em(e)===!0,l=Eq.get(e.id),u=!c||Tq||l?.has(`reports`)===!0,f=!c||Tq||l?.has(`bundles`)===!0,p=[...t,...n].filter(e=>Ru(e)!==d).length,m=r.length+i.length;return A`${iJ(e,{app:o,compact:c,reports:p,bundles:m,showReports:u,showBundles:f})} ${u?A`${t.map(t=>Aq(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>Zq(t,e.id))}`:M} ${f?A`${r.map(t=>Yq(t,{workspaceId:e.id}))}${i.map(t=>Xq(t,e.id))}`:M}`})} ${Cq.map(e=>{let t=(l.get(e)??[]).toSorted(oJ),n=e==="default";return t.length===0&&!(n&&bq)?null:A`${Mq(Sq[e]??e,{dropTarget:n})} ${t.map(e=>Aq(e))}`})} ${f.length>0||xq?Kq():null} ${D(f,e=>e.integrity,e=>Yq(e))}`,fq);let p=Z.querySelector(`#sidebar-rail`);p?.setAttribute(`aria-label`,`Workspaces`),p&&N(zq(r),p);let m=Z.querySelector(`sidebar-view-button[kind="packages"]`);m&&(m.count=mq());let h=Z.querySelector(`sidebar-view-button[kind="repositories"]`);h&&(h.count=hq()),CJ(),Ku(n,cJ)}var sJ=!1;function cJ(){sJ||(sJ=!0,requestAnimationFrame(()=>{sJ=!1,Q().catch(e=>console.warn(`counts repaint:`,e))}))}ko(()=>{Q()}),jm(cJ);async function lJ(){Z?.querySelector(`#user-menu`)?.hidePopover?.(),RJ?await ZJ():cc()&&await YJ()}function uJ(e){let t=F.currentView===`findings`||F.currentView===`files`;(e!==F.currentWorkspace||!t)&&jL(e)}async function dJ(e){let t=e.target.closest(`[data-team-section]`);if(t){if(Tq||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&Oq.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&&AL(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(Tq||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=Eq.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),Eq.set(e,n),await Q();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await lJ();return}if(e.target.closest(`[data-action="go-home"]`)){await FL();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){G.navigate(fi({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;aK(e,void 0,{workspaceId:t}),mL(e,F.bundleDetailsTab),X(),Q(),dK(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 WI(),await iu(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&&UK(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 Fp(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 LL(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&&uJ(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)&&DL(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=>vh(t.id,e)).map(e=>e.id),{confirmed:r}=await ht({name:t,inRemote:n.length>0});if(!r)return;if(F.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await IL({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!F.currentFile)return;let e=F.currentFile,t;try{t=await Fp([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=>_h(t.id,e)).map(e=>e.id),r=n.length>0,i=Jx(e)?`links file`:`report`,{confirmed:a,triage:o}=await _t({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(F.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await ML({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()&&gq&&V.setServerUrl(gq),V.setEnabled(!0)):V.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),fY(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Z?.querySelector(`#user-menu`)?.hidePopover?.(),dx(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"]`)){ux(F.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){dq.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,dq.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var fJ={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 pJ(e){Tq=e.target.value.length>0,wq=e.target.value.trim().toLowerCase(),Q()}var mJ={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function hJ(){return V.getServerUrl()||gq?R().length>0:!1}function gJ(){let e=Z?.querySelector(`#auth-status`);if(!e)return;let t=Z?.querySelector(`#manage-status`),n=Z?.querySelector(`#user-menu`),r=F.managedSession;dq?.toggleAttribute(`data-authenticated`,r!=null),dq?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),_J(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`${yJ(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">${yJ(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?A`<span class="user-name">${r.name}</span>`:M}</span></div>${r.viewer?A`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:M} ${r.role===`none`?M:A`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${an(F.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${Pq}<span>Log out</span></button>`,n)}function _J(e){let t=Z?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,dq?.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&&kx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var vJ=0;document.addEventListener(`managed-profile-change`,e=>{let t=F.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&vJ++,F.managedSession={...t,name:e.detail.name},cb(F.managedSession),gJ())});function yJ(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${vJ?`?v=${vJ}`:``}`;return A`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${ib()||F.managedSession?.role===`none`?M:A`<img alt="" src="${r}" @error="${bJ}">`}</span>`}function bJ(e){e.currentTarget.classList.add(`broken`)}function xJ(){let e=Z?.querySelector(`.brand-tag`);if(e){let t=F.serverMode===`managed`||an(F.serverModeConfig);e.textContent=lc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${lc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function SJ(){dq&&(dq.dataset.mode=lc()),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`,``)),TY()}function CJ(e){let t=Z?.querySelector(`#sync-status`);if(!t)return;if(xJ(),SJ(),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),gJ();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=hJ(),i=dn()!=null;if(r&&i&&V.isEnabled()&&ch().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!V.getServerUrl()&&gq&&V.isEnabled()&&V.setServerUrl(gq),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=mJ[a]??``)}V.onStatusChange(CJ);var wJ=!1,TJ=!1;async function EJ(){if(!V.persistenceDegraded||TJ||wJ)return;wJ=!0;let{shown:e,unloaded:t}=await Se().catch(()=>({shown:!1,unloaded:!0}));if(wJ=!1,e){TJ=!0;return}V.persistenceDegraded&&setTimeout(EJ,t?3e4:1500)}V.onPersistenceDegraded(e=>{CJ(),e?EJ():TJ=!1});var DJ=!1,OJ=!1;async function kJ(){if(!V.proxyAuthRequired||OJ||DJ)return;DJ=!0;let{shown:e,reload:t}=await GK();if(DJ=!1,!e){V.proxyAuthRequired&&setTimeout(kJ,1500);return}OJ=!0,t&&location.reload()}V.onProxyAuthRequired(e=>{CJ(),e?kJ():OJ=!1});function AJ(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 ou(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 jJ(){for(let e of Z.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function MJ(e){return e.dataTransfer.types.includes(_q)||e.dataTransfer.types.includes(yq)}function NJ(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(yq,n),e.dataTransfer.setData(vq,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),xq=!0,Q();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(_q,n.dataset.file),e.dataTransfer.setData(vq,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),bq=!0,Q())}function PJ(){for(let e of Z.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);jJ(),(bq||xq)&&(bq=!1,xq=!1,Q())}function FJ(e){if(!MJ(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`,jJ(),!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(yq)?`[data-default-bundles]`:`[data-default-reports]`,n=Z.querySelector(t);n&&n.classList.add(`drag-over`)}}}function IJ(e){Z.contains(e.relatedTarget)||jJ()}async function LJ(e){if(!MJ(e))return;e.preventDefault(),e.stopPropagation(),jJ();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(vq)||null;if(e.dataTransfer.types.includes(yq)){let t=e.dataTransfer.getData(yq);if(!t)return;if(r&&r!==n&&vh(r,t)){let e=(F.bundles??[]).find(e=>e.integrity===t)?.name??t,n=R().find(e=>e.id===r),{confirmed:i}=await yt({name:e,workspaceName:n?.name??``});if(!i)return;try{await Rh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await vu(t,n),r&&r!==n&&await yu(t,r),Q();return}let i=e.dataTransfer.getData(_q);if(i){if(r&&r!==n&&_h(r,i)){let e=R().find(e=>e.id===r),{confirmed:t}=await xt({name:i,workspaceName:e?.name??``});if(!t)return;try{await Lh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await hu(i,n),r&&r!==n&&await gu(i,r),F.currentWorkspace&&(F.currentWorkspace===n||F.currentWorkspace===r)?await jL(F.currentWorkspace):Q()}}var RJ=null,zJ=null,$=0,BJ=0,VJ=null,HJ=!0,UJ=!0,WJ=!1,GJ=null,KJ=null,qJ;function JJ(){let e=qJ;return qJ=void 0,e}async function YJ({forgetLastView:e=!0,resetNavigation:t=!0}={}){G.reset({force:t}),GJ?.remove(),GJ=null;let n=++$;if(UJ=!0,WJ=!1,ob(),Gv(),JI(),FI(),oh(F.serverMode!==`e2e`),V.setForcedOff(!0),V.setProtocolLocked(F.serverMode!==`e2e`||!!RJ),PL({forgetLastView:e}),F.triage.clear(),I()){let e=$J();if(ib()&&(await e,n!==$))return}else{if(F.managedSession=null,F.managedTeams=[],await Ga(),n!==$||(await Md(),n!==$))return;Ql()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),GL(),xJ(),CJ(V.status),X(),await Q()}async function XJ(e){if(e!==void 0&&!$e(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${Ze.join(`, `)}.`);if(await mY(),e===void 0&&(RJ||I()))return;let t=$,n=e===void 0?null:await K();t===$&&(RJ??={serverMode:F.serverMode,serverModeConfig:F.serverModeConfig,serverModeSelection:F.serverModeSelection,localMode:F.localMode,managed:F.managed},n&&n.setPreviewRole(e),F.serverMode=`managed`,oc(!1),F.managedSession=null,F.managedTeams=[],await YJ({forgetLastView:!1}))}async function ZJ(){let e=RJ,t=zJ;RJ=null,zJ=null,ab(),Object.assign(F,e),await YJ({forgetLastView:!1}),t&&QJ(t)}function QJ(e,{runtime:t=!0}={}){if(RJ){zJ=e;return}pq(!1);let n=dn()!=null,r=I(),i=F.serverMode;Ke()&&e.managed&&(F.serverModeSelection=`managed`),sc(e.mode),Ke()&&e.managed&&oc(!1),I()||(qJ=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),GL(),oh(F.serverMode!==`e2e`),V.setProtocolLocked(F.serverMode!==`e2e`),fn(e),r!==I()){YJ({forgetLastView:!1,resetNavigation:n&&!Ke()&&!on(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}CJ(V.status),a&&F.serverMode===`e2e`&&hJ()&&V.isEnabled()&&ch().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()&&$J()}function $J(){if(VJ?.generation===$)return VJ.promise;HJ=!0;let e={generation:$,promise:null};return VJ=e,e.promise=eY().finally(()=>{VJ===e&&(VJ=null,Q())}),e.promise}async function eY(){let e=$,t=++BJ,n=()=>e===$&&t===BJ&&I();try{let e=F.managedSession,t=await pb({fallback:e,sent:JJ()});if(!n())return;F.managedSession=t,HJ=!1,(!e||e.id!==t?.id||e.role!==t?.role)&&(UJ=!0),Q(),cb(t),e&&(e.id!==t?.id||e.role!==t?.role)?(F.managedTeams=[],F.bundles=[],JI(),FI(),G.reset(),FL({history:!1})):Object.hasOwn(ii,F.currentView)&&sY(F.currentView)&&X({animate:!1}),gJ(),PI(),document.querySelector(`base`)||(GJ=document.createElement(`base`),GJ.href=`/`,document.head.prepend(GJ));let r=KJ=iY(n,{signal:new AbortController().signal}).finally(()=>{KJ===r&&(KJ=null)}),i=G.active&&Object.hasOwn(ii,F.currentView)&&!sY(F.currentView)?G.navigate({view:sY(`manage`)?`manage`:`home`},{replace:!0}):t?G.start(uY,{onCancel:lY}):null;await Promise.all([r,i])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{n()&&(HJ||UJ)&&(HJ=!1,UJ=!1,Q())}}qI((e,t,n)=>iY(e,{strict:!0,signal:t,revision:n}));var tY=hK(mb);function nY(e){return KJ??iY(e,{reuse:!0})}var rY=0;async function iY(e,{strict:t=!1,signal:n=Z_(),reuse:r=!1,revision:i=null}={}){let a=$,o=F.managedSession,s=await tY({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=lb(c);F.managedTeams=c;let d=s===null?rY:++rY;UJ=!1;let f=Nx(F);if(s!==null&&f&&!WJ){let t=W(),r=()=>e()&&!n.aborted&&!WJ&&d===rY&&t===W()&&a===$&&F.managedSession?.id===o?.id&&F.managedSession?.role===o?.role&&I()&&Nx(F)===f,i;try{i=await Vx(F,c,{fetchCatalog:()=>hb({signal:AbortSignal.any([n,Z_()])}),isCurrent:r,render:()=>X({animate:!1}),replaceRoute:e=>G.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&kx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),Q(),!1):e()}if(!r())return e();if(!i){oY=null;let t=FL({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(Bx(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))?fi({view:F.currentView===`links`?`findings`:F.currentView,teamId:n.id,reportId:F.currentManagedReport},c):null;oY=null;let i=FL({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(!WJ&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(F.currentView)&&!c.some(e=>e.id===F.currentManagedTeam)){let t=FL({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!WJ&&(F.currentWorkspace||F.bundleDetails?.npm||l!==c.find(e=>e.id===F.currentManagedTeam)?.name)&&X({animate:!1}),Q(),!0}var aY=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),oY=null;function sY(e){let t=F.managedSession?.role;return e===`manage-links`&&!F.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!aY.has(e)||t===`admin`)}var cY=0;function lY(){++cY,WJ=!1,Q_();let e=$;nY(()=>e===$&&I())}async function uY(e,t){let n=++cY;WJ=!0;try{return await dY(e,t)}finally{n===cY&&(WJ=!1,Q())}}async function dY(e,t){let n=oY===W()?oY:null;if(Q_(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await nY(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!sY(`manage-bundles`)||(r=await hb(),!t()||!I()))||(e=di(e,F.managedTeams,r),!e))return!1;let i=n!==null&&oY===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 lq({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>AL(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(oY=W(),tL(),fi({view:`findings`,teamId:F.currentManagedTeam,reportId:F.currentManagedReport,finding:{id:e.finding.id}},F.managedTeams)):(n.reason&&kx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return kL(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(Mx):zx(F.managedTeams);if(!await pK(e,n,t,Q))return!1;let{compareId:i,compareMode:a,...o}=e;return fi({...o,bundleTab:F.bundleDetailsTab,...Ix(F)},F.managedTeams,r)}if(e.view===`home`)return FL({history:!1});if(e.view===`npm`)return Hj(e,t,Q);if(e.view===`repository-code`)return rt(F.managedSession)&&eN(e,t,Q);if(e.view===`reviews`||e.view===`profile`)return!F.managedSession.publicShare&&(ar(),F.currentView=e.view,F.profileLinkError=e.linkError??null,F.currentManagedTeam=null,F.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),Q(),e);if(e.view===`manage-deduplication`&&e.linkId)return sY(e.view)&&await OL(e.linkId);if(Object.hasOwn(ii,e.view))return fY(e.view,{...e,history:!1});let a=F.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await AL(a,e.reportId,{history:!1})||!t()?!1:(F.currentView!==e.view&&ar(),F.currentView=F.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),X({animate:!1}),oY=W(),tL(),Q(),document.querySelector(`#main-content`)?.scrollTo({top:0}),fi({...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=Mx(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(Px(n,t,r?.id,F.currentView===`bundles`?F.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{$J()}),document.addEventListener(`managed-feed-closed`,()=>{HJ=!0,JI(),FI(),FL({history:!1}).then(()=>$J()),kx(`Workspace access changed. Refreshing your session.`)});async function fY(e,t={}){if(t.history!==!1&&I()&&(G.active||await $J(),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(ii,e)||!I()||!sY(e))return!1;let n=Q_(),r=$;try{let t=await K();e===`manage-import`&&sY(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==$||n!==W()||!I()||!sY(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(),$J(),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=>kx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&fY(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&&UM({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var pY;function mY(){return pY??=gY().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function hY(){let e=ln();return qJ=un(e).then(e=>e?.session),e}async function gY(){let e=dn();if(e){sc(e.mode),F.managed=e.managed,hY().then(e=>{if(e&&e!==`standalone`)return QJ(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}pq(!nn());let t=hY(),n=await un(t,nn()?0:3e3),r=dn();if(r)return n&&n!==`standalone`?QJ(n):QJ(r,{runtime:!1});if(n&&n!==`standalone`)return QJ(n);n===`standalone`&&rn(),F.serverMode=`standalone`,F.serverModeConfig=null,F.serverModeSelection=null,oc(n===null),oh(!0),pq(!1),CJ(V.status),Q(),n===null&&t.then(e=>{let t=dn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(rn(),RJ){RJ.serverMode=`standalone`,RJ.serverModeConfig=null,RJ.serverModeSelection=null,RJ.localMode=!1;return}return oc(!1),CJ(V.status),Q()}if(n)return QJ(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function _Y(){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 vY(e){dq=e,Z=e.renderRoot,fq=Z.querySelector(`#file-list`),EY(Z.querySelector(`#encryption-toggle`)),NK(Z.querySelector(`#storage-status`)),Z.addEventListener(`click`,dJ),Z.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),dJ(e))}),Z.addEventListener(`dblclick`,AJ),Z.addEventListener(`dragstart`,NJ),Z.addEventListener(`dragend`,PJ),Z.addEventListener(`dragover`,FJ),Z.addEventListener(`dragleave`,IJ),Z.addEventListener(`drop`,LJ),cr(Z,fJ),Z.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,pJ),_Y(),CJ(V.status),dn()||pq(!nn()),Q(),V.onServerInfo(e=>{if(F.serverMode!==`e2e`)return;let t=dn(),n=t&&{...t,...F.deepviewScanServer?{deepviewScanServer:F.deepviewScanServer}:{}};return QJ(cn(n,e))}),mY(),F.serverMode===`managed`&&$J()}var yY=class extends pa{static styles=[ua(vK),ua(_K)];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">${lc()}</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($i)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){vY(this)}};customElements.define(`app-sidebar`,yY);var bY=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>`,xY=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>`,SY=null;async function CY(){if(!SY)return;if(await mY(),I()){SY.hidden=!0;return}if(!xo()){SY.hidden=!0;return}let e=yo();SY.hidden=!1;let t=bo();SY.classList.toggle(`encrypted`,e&&t),SY.classList.toggle(`locked-pending`,e&&!t),e&&t?(SY.dataset.tooltip=`Encryption on — click to disable`,SY.setAttribute(`aria-label`,`Disable encryption`),N(bY,SY)):e?(SY.dataset.tooltip=`Encryption on, locked — click to unlock`,SY.setAttribute(`aria-label`,`Unlock encrypted data`),N(bY,SY)):(SY.dataset.tooltip=`Encryption off — click to enable`,SY.setAttribute(`aria-label`,`Enable encryption`),N(xY,SY))}async function wY(){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 Po({migrate:async({open:e})=>{await Xa({open:e}),await Id({open:e}),await yl({open:e}),await Tl({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 TY(){CY()}function EY(e){if(!e||e===SY)return;SY=e;let t=!1;SY.addEventListener(`click`,async()=>{if(await mY(),!I()&&!t){t=!0;try{if(!yo()){await be();return}if(!bo()){await Nv();return}await wY()}finally{t=!1}}}),ko(CY),CY()}export{js as a,Ms as b,uo as c,yo as d,bo as e,xo as f,Co as g,ko as h,jo as i,No as j,Ro as k,Va as l,Ga as m,Ya as n,Ps as o,Is as p,Ls as q,Rs as r,Bs as s,Ks as t,Xs as u,ec as v,F as w,I as x,Vc as y,Wc as z,Gc as A,ol as B,sl as C,fl as D,vl as E,wl as F,wf as G,Vf as H,Kf as I,Ru as J,Ql as K,R as L,ru as M,cu as N,vu as O,sp as P,rd as Q,ud as R,_d as S,Dd as T,Fd as U,Rd as V,gp as W,xp as X,Sp as Y,Cp as Z,wp as _,Tp as $,kp as aa,Ap as ba,jp as ca,Kp as da,Jp as ea,zd as fa,Bd as ga,Hd as ha,Ud as ia,G as ja,zv as ka,Jh as la,Yh as ma,Uv as na,Wv as oa,Jv as pa,wy as qa,Ly as ra,zy as sa,Wy as ta,Gy as ua,Ky as va,qy as wa,Jy as xa,Yy as ya,tb as za,ib as Aa,ub as Ba,fb as Ca,xb as Da,Sb as Ea,Cb as Fa,wb as Ga,Tb as Ha,Eb as Ia,jb as Ja,Mb as Ka,Gb as La,Kb as Ma,qb as Na,Jb as Oa,Yb as Pa,Xb as Qa,Zb as Ra,Qb as Sa,ex as Ta,tx as Ua,fx as Va,px as Wa,mx as Xa,bx as Ya,xx as Za,Sx as _a,Cx as $a,wx as ab,KU as bb,JU as cb,Hx as db,Kx as eb,Zm as fb,z as gb,Qm as hb,$m as ib,eh as jb,Ov as kb,kv as lb,Av as mb,Yx as nb,Zx as ob,Qx as pb,eS as qb,nS as rb,rS as sb,iS as tb,gS as ub,xh as vb,Sh as wb,Ch as xb,Oh as yb,kh as zb,Ah as Ab,Mh as Bb,Nh as Cb,Ph as Db,Ih as Eb,Vh as Fb,Hh as Gb,V as Hb,i_ as Ib,a_ as Jb,o_ as Kb,d_ as Lb,p_ as Mb,h_ as Nb,g_ as Ob,__ as Pb,b_ as Qb,x_ as Rb,w_ as Sb,z_ as Tb,W_ as Ub,rg as Vb,mg as Wb,hg as Xb,gg as Yb,H as Zb,yg as _b,wg as $b,Tg as ac,Eg as bc,U as cc,Dg as dc,jg as ec,Fg as fc,Lg as gc,Rg as hc,Bg as ic,Vg as jc,Hg as kc,Ug as lc,Wg as mc,Kg as nc,$g as oc,e_ as pc,t_ as qc,n_ as rc,Wh as sc,PS as tc,FS as uc,mC as vc,vC as wc,yC as xc,bC as yc,OC as zc,FC as Ac,LC as Bc,zC as Cc,KC as Dc,JC as Ec,YC as Fc,XC as Gc,ZC as Hc,QC as Ic,ew as Jc,tw as Kc,nw as Lc,iw as Mc,aw as Nc,ow as Oc,sw as Pc,cw as Qc,uw as Rc,fw as Sc,pw as Tc,Cw as Uc,cT as Vc,lT as Wc,uT as Xc,dT as Yc,jx as Zc,Px as _c,Fx as $c,Rx as ad,WT as bd,KT as cd,_D as dd,vD as ed,xD as fd,SD as gd,CD as hd,wD as id,TD as jd,DD as kd,OD as ld,RD as md,BD as nd,VD as od,WO as pd,KO as qd,XO as rd,ZO as sd,QO as td,tk as ud,nk as vd,rk as wd,vk as xd,wk as yd,Wk as zd,Gk as Ad,Kk as Bd,qk as Cd,Jk as Dd,$k as Ed,gA as Fd,RA as Gd,BA as Hd,VA as Id,rj as Jd,W as Kd,cj as Ld,pj as Md,Sj as Nd,SM as Od,TN as Pd,MN as Qd,NN as Rd,LN as Sd,BN as Td,VN as Ud,HN as Vd,UN as Wd,KN as Xd,qN as Yd,nI as Zd,rI as _d,jv as $d,kx as ae,Ax as be,vK as ce,wK as de,HK as ee,lq as fe,uq as ge,Q as he,XJ as ie,mY as je,pL as ke,mL as le,DL as me,kL as ne,AL as oe,jL as pe,FL as qe,HL as re,YL as se,eR as te,nR as ue,iR as ve,pR as we,vR as xe,yR as ye,bR as ze,FR as Ae,IR as Be,LR as Ce,qR as De,lz as Ee,kz as Fe,Az as Ge,Kz as He,UH as Ie,qH as Je,nU as Ke,aU as Le,lU as Me,uU as Ne,fU as Oe,Y as Pe,gU as Qe,_U as Re,vU as Se,yU as Te,bU as Ue,xU as Ve,SU as We,CU as Xe,wU as Ye,OU as Ze,kU as _e,AU as $e,jU as af,MU as bf,NU as cf,PU as df,FU as ef,HW as ff,KW as gf,qW as hf,X as if,tK as jf,nK as kf,rK as lf,iK as mf,aK as nf,oK as of,lK as pf,dK as qf,fK as rf,UM as sf,tN as tf};
|
|
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
|
-
*/
|