oxlint-plugin-react-doctor 0.9.8 → 0.9.9-dev.e69faca
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/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,An as o,Ar as s,At as c,B as l,Bi as u,Bn as d,Br as f,Bt as p,C as m,Ca as h,Ci as g,Cn as _,Cr as ee,Ct as te,D as ne,Di as re,Dn as ie,Dr as ae,Dt as oe,E as se,Ea as ce,Ei as le,En as ue,Er as de,Et as fe,F as pe,Fi as me,Fn as he,Fr as eee,Ft as tee,G as ge,Gi as _e,Gn as ve,Gr as nee,Gt as ree,H as ye,Hi as be,Hn as v,Hr as xe,Ht as Se,I as Ce,Ii as iee,In as we,Ir as Te,It as aee,J as Ee,Ji as De,Jn as Oe,Jr as ke,Jt as Ae,K as je,Ki as oee,Kn as Me,Kr as Ne,Kt as Pe,L as see,Li as cee,Ln as Fe,Lr as Ie,Lt as Le,M as Re,Mi as lee,Mn as ze,Mr as uee,Mt as dee,N as Be,Ni as fee,Nn as Ve,Nr as pee,Nt as He,O as Ue,On as We,Or as Ge,Ot as mee,P as Ke,Pi as hee,Pn as qe,Pr as Je,Pt as gee,Q as Ye,Qi as y,Qn as Xe,Qr as _ee,Qt as vee,R as Ze,Ri as yee,Rn as Qe,Rr as $e,Rt as et,S as tt,Sa as bee,Si as nt,Sn as rt,Sr as xee,St as See,T as it,Ta as Cee,Ti as wee,Tn as at,Tr as ot,Tt as Tee,U as Eee,Ui as Dee,Un as st,Ur as Oee,Ut as ct,V as lt,Vi as ut,Vn as b,Vr as kee,Vt as x,W as dt,Wi as Aee,Wn as jee,Wr as ft,Wt as Mee,X as Nee,Xi as pt,Xn as S,Xr as C,Xt as Pee,Y as mt,Yi as ht,Yn as w,Yr as Fee,Yt as Iee,Z as gt,Zi as _t,Zn as vt,Zr as Lee,Zt as Ree,_ as yt,_a as zee,_i as bt,_n as Bee,_r as xt,_t as Vee,a as Hee,aa as Uee,ai as St,an as T,ar as Wee,at as Ct,b as wt,ba as Tt,bi as Et,bn as Dt,br as Ot,bt as Gee,c as kt,ca as At,ci as jt,cn as Mt,cr as Kee,ct as Nt,d as Pt,da as qee,di as Ft,dn as Jee,dr as It,dt as Yee,ea as E,ei as Lt,en as Xee,er as Zee,et as Rt,f as zt,fa as Bt,fi as Vt,fn as Ht,fr as Ut,ft as Qee,g as Wt,ga as $ee,gi as Gt,gn as Kt,gr as ete,gt as tte,h as qt,ha as Jt,hi as Yt,hn as Xt,hr as nte,ht as rte,i as ite,ia as ate,ii as ote,in as Zt,ir as ste,it as Qt,j as $t,jn as D,jr as cte,jt as lte,k as en,kn as tn,kr as nn,kt as ute,l as rn,la as dte,li as an,ln as on,lr as fte,lt as pte,m as sn,ma as mte,mi as hte,mn as cn,mr as ln,mt as gte,n as _te,na as vte,ni as yte,nn as un,nr as dn,nt as bte,o as fn,oa as xte,oi as pn,on as mn,or as Ste,ot as Cte,p as wte,pa as Tte,pi as O,pn as hn,pr as gn,pt as Ete,q as _n,qi as Dte,qn as k,qr as Ote,qt as vn,r as kte,ra as Ate,ri as A,rn as j,rr as jte,rt as yn,s as bn,sa as xn,si as Sn,sn as Cn,sr as wn,st as Mte,t as Nte,ta as Pte,ti as Fte,tn as Ite,tr as Tn,tt as En,u as Dn,ua as Lte,ui as On,un as kn,ur as An,ut as jn,v as Mn,va as Rte,vi as Nn,vn as Pn,vr as zte,vt as Bte,w as Fn,wa as Vte,wi as Hte,wn as In,wr as Ute,wt as Wte,x as Ln,xa as Rn,xi as zn,xn as M,xr as Bn,xt as Gte,y as Vn,ya as Hn,yi as Un,yn as Wn,yr as Gn,yt as Kte,z as Kn,zi as qn,zn as Jn,zr as Yn,zt as Xn}from"./capability-BAJBLwvF.js";import{visitorKeys as qte}from"oxc-parser";import*as Zn from"node:fs";import{readFileSync as Qn}from"node:fs";import*as $n from"node:path";import{analyze as Jte}from"eslint-scope";import{Features as Yte,transform as er}from"lightningcss";import{visit as tr}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as Xte}from"@shaderfrog/glsl-parser/index.js";const Zte={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},N=(e,t,n)=>k(e,t,n,Zte),nr=new Set([`Activity`,`unstable_Activity`]),Qte=e=>{let t=e.value;return t?y(t,`Literal`)?!0:y(t,`JSXExpressionContainer`)?y(t.expression,`Literal`):!1:!1},$te=(e,t)=>{A(e,e=>{if(!y(e,`JSXOpeningElement`)||!y(e.name,`JSXIdentifier`))return;let n=e.name.name;ae.test(n)&&t.add(n)})},ene=(e,t)=>{if(!e)return 0;let n=0;return A(e,e=>{y(e,`CallExpression`)&&N(e,dn,t)&&n++}),n},rr=new WeakMap,tne=e=>{let t=rr.get(e);if(t)return t;let n=new Map;A(e,e=>{if(y(e,`FunctionDeclaration`)&&e.id&&!n.has(e.id.name)){n.set(e.id.name,e.body);return}if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&!n.has(e.id.name)){let t=e.init;(y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`))&&n.set(e.id.name,t.body)}});let r={bodyByName:n,effectCountByName:new Map};return rr.set(e,r),r},nne=(e,t,n)=>{let r=tne(e),i=r.effectCountByName.get(t);if(i!==void 0)return i;let a=ene(r.bodyByName.get(t)??null,n);return r.effectCountByName.set(t,a),a},ir=x({id:`activity-wraps-effect-heavy-subtree`,title:`Activity wraps an effect-heavy subtree`,severity:`warn`,requires:[`react:19.2`],recommendation:"Check what's under `<Activity>`. Every hide and show rebuilds every Effect inside from scratch. Move subscriptions and effect-driven setState out of the Activity, or load the data above it.",create:e=>{let t=new Set,n=new Set;return{ImportDeclaration(e){if(e.source?.value===`react`)for(let r of e.specifiers??[]){if(y(r,`ImportNamespaceSpecifier`)){y(r.local,`Identifier`)&&n.add(r.local.name);continue}if(y(r,`ImportDefaultSpecifier`)){y(r.local,`Identifier`)&&n.add(r.local.name);continue}if(!y(r,`ImportSpecifier`))continue;let e=Lt(r);!e||!nr.has(e)||y(r.local,`Identifier`)&&t.add(r.local.name)}},JSXElement(r){let i=r.openingElement;if(!i)return;let a=i.name,o=!1;if(y(a,`JSXIdentifier`)?o=t.has(a.name):y(a,`JSXMemberExpression`)&&y(a.object,`JSXIdentifier`)&&n.has(a.object.name)&&y(a.property,`JSXIdentifier`)&&(o=nr.has(a.property.name)),!o)return;let s=null;for(let e of i.attributes??[])if(y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&e.name.name===`mode`){s=e;break}if(!s||Qte(s))return;let c=new Set;$te(r,c);for(let e of t)c.delete(e);if(c.size===0)return;let l=d(r);if(!l)return;let u=0,f=[];for(let t of c){let n=nne(l,t,e.scopes);n!==0&&(u+=n,f.push(`<${t}>`))}u!==0&&e.report({node:i,message:`Every hide and show rebuilds ${f.join(`, `)} from scratch because <Activity> wraps components with ${u} effect hook${u===1?``:`s`}.`})}}}}),ar=e=>!y(e,`CallExpression`)&&!y(e,`NewExpression`)?null:y(e.callee,`Identifier`)?e.callee.name:y(e.callee,`MemberExpression`)&&y(e.callee.property,`Identifier`)?e.callee.property.name:null,or=(e,t)=>{if(!y(e,`CallExpression`)&&!y(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`)?n:t?M(n,t):null},sr=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=O(r),y(r,`MemberExpression`)){r=r.object;continue}if(n&&y(r,`CallExpression`)){if(!y(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return y(r,`Identifier`)?r:null},cr=(e,t)=>sr(e,t)?.name??null,lr=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=ar(e);return n?typeof t==`string`?n===t:t.has(n):!1},rne=new Set([`useCallback`,`useEffectEvent`]),ine=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),ane=/^use\w*(?:Throttle|Debounce)/i,one=e=>{let t=ar(e);return t!==null&&ane.test(t)},sne=(e,t)=>{if(!N(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return y(n,`ArrayExpression`)&&(n.elements?.length??0)===0},cne=(e,t)=>y(e,`CallExpression`)?N(e,rne,t)||lr(e,ine)||sne(e,t)||one(e):y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&e.property.name===`current`,lne=(e,t,n)=>{let r=T(e,t);return!!(r?.initializer&&N(r.initializer,`useRef`,n))},ur=x({id:`advanced-event-handler-refs`,title:`Listener re-subscribes on every handler change`,tags:[`test-noise`],severity:`warn`,category:`Performance`,recommendation:"Store the handler in a ref and have the listener read `handlerRef.current()`. The subscription stays put while the latest handler still runs.",create:e=>({CallExpression(t){if(!N(t,dn,e.scopes)||(t.arguments?.length??0)<2)return;let n=or(t);if(!n||!y(n,`ArrowFunctionExpression`)&&!y(n,`FunctionExpression`))return;let r=t.arguments[1];if(!y(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)y(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(A(n.body,e=>{if(!y(e,`CallExpression`)||!y(e.callee,`MemberExpression`)||!y(e.callee.property,`Identifier`)||!ot.has(e.callee.property.name))return;let t=cr(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];y(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=T(t,a);s?.initializer&&cne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!lne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),dr=e=>{let t=e.value;return t&&y(t,`Literal`)&&typeof t.value==`string`?t.value:null},P=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!y(t,`JSXAttribute`))continue;let e=Cn(t.name);if(e&&e.toLowerCase()===n)return t}},fr=Object.freeze({}),pr=new WeakMap,une=e=>{if(!e)return fr;let t=pr.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:fr;return pr.set(e,r),r},dne=(e,t)=>{let n=j(e);if(t.polymorphicPropName){let n=P(e.attributes,t.polymorphicPropName);if(n){let e=dr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},mr=new WeakMap,hr=(e,t)=>{let n=mr.get(e);if(n&&n.settings===t)return n.elementType;let r=dne(e,une(t));return mr.set(e,{settings:t,elementType:r}),r},gr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},F=e=>e.some(e=>y(e,`JSXSpreadAttribute`)),_r=e=>{if(!e)return null;let t=O(e);return y(t,`Literal`)&&typeof t.value==`string`?t.value:y(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},I=e=>{if(!y(e,`JSXAttribute`))return null;let t=dr(e);if(t!==null)return t;let n=e.value;if(n&&y(n,`JSXExpressionContainer`)){let e=n.expression;if(y(e,`Literal`)&&typeof e.value==`string`)return e.value;if(y(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},vr=e=>e.attribute?I(e.attribute):_r(e.expression),yr=e=>{let t=e.expression??e.attribute?.value;return t?O(y(t,`JSXExpressionContainer`)?t.expression:t):null},br=(e,t)=>{if(hr(e,t).toLowerCase()===`input`&&vr(fn(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=fn(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=vr(n);if(e!==null)return e.length>0;let t=yr(n);if(y(t,`Literal`)&&t.value)return!0}let r=fn(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=vr(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=yr(r);return y(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},xr=e=>{if(y(e,`JSXIdentifier`))return e.name;if(y(e,`JSXMemberExpression`)){let t=xr(e.object);return t?`${t}.${e.property.name}`:null}return null},Sr=[`next/og`,`@vercel/og`,`satori`],Cr=new Set([`next/og`,`@vercel/og`]),wr=e=>{let t=e.parent;for(;t;){if(y(t,`ImportDeclaration`))return t;if(y(t,`Program`))return null;t=t.parent}return null},Tr=e=>typeof e.source.value==`string`?e.source.value:null,fne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!y(r,`ImportSpecifier`))return!1;let i=wr(r),a=i?Tr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return y(o,`Identifier`)&&o.name===t||y(o,`Literal`)&&o.value===t},pne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=wr(t);if(!n||Tr(n)!==`satori`)return!1;if(y(t,`ImportDefaultSpecifier`))return!0;if(!y(t,`ImportSpecifier`))return!1;let r=t.imported;return y(r,`Identifier`)&&r.name===`satori`||y(r,`Literal`)&&r.value===`satori`},Er=(e,t)=>{if(!y(e,`CallExpression`)&&!y(e,`NewExpression`))return!1;let n=O(e.callee);if(y(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(fne(e,`ImageResponse`,Cr)||pne(e)))}if(!y(n,`MemberExpression`)||C(n)!==`ImageResponse`||!y(n.object,`Identifier`))return!1;let r=t.referenceFor(n.object)?.resolvedSymbol??null;if(!r||r.kind!==`import`)return!1;let i=r.declarationNode;if(!y(i,`ImportNamespaceSpecifier`))return!1;let a=wr(i),o=a?Tr(a):null;return!!(o&&Cr.has(o))},mne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${be}$`),Dr=e=>e?mne.test($n.basename(e)):!1,Or=new WeakMap,hne=e=>e?Dr(ve(e)):!1,gne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},kr=(e,n,r,i,a)=>{if(!t(e))return;if(y(e,`ArrowFunctionExpression`)){let t=O(e.body);if(!y(t,`BlockStatement`)){jr(t,n,r,i,a);return}}let o=e.body;y(o,`BlockStatement`)&&A(o,e=>{if(e!==o&&t(e))return!1;y(e,`ReturnStatement`)&&e.argument&&jr(O(e.argument),n,r,i,a)})},Ar=(e,t,n)=>{let r=!1;return A(e,e=>{if(r)return!1;if(y(e,`JSXOpeningElement`)&&!n.has(e)&&xr(e.name)===t)return r=!0,!1}),r},_ne=(e,t,n,r,i)=>{let a=xr(n.name);if(!a||a.includes(`.`)||!gne(a)||i.has(a)||Ar(e,a,r))return;let o=T(n,a);o?.initializer&&(i.add(a),jr(O(o.initializer),e,t,r,i))},vne=(e,t)=>{let n=e.parent;for(;n;){if(Er(n,t))return!0;n=n.parent??null}return!1},yne=(e,t,n)=>{let r=!1;return A(e,e=>{if(r)return!1;if(y(e,`CallExpression`)&&y(e.callee,`Identifier`)&&e.callee.name===t&&!vne(e,n))return r=!0,!1}),r},bne=(e,t,n,r,i)=>{A(e,e=>{y(e,`JSXOpeningElement`)&&(r.add(e),_ne(t,n,e,r,i))})},jr=(e,n,r,i,a)=>{let o=O(e);if(y(o,`JSXElement`)||y(o,`JSXFragment`)){bne(o,n,r,i,a);return}if(t(o)){kr(o,n,r,i,a);return}if(y(o,`ConditionalExpression`)){jr(o.consequent,n,r,i,a),jr(o.alternate,n,r,i,a);return}if(y(o,`LogicalExpression`)){jr(o.left,n,r,i,a),jr(o.right,n,r,i,a);return}if(y(o,`CallExpression`)){let e=o.callee;if(t(e)){kr(e,n,r,i,a);return}if(!y(e,`Identifier`)||a.has(e.name)||Ar(n,e.name,i)||yne(n,e.name,r))return;let s=T(e,e.name);if(!s?.initializer||!t(O(s.initializer)))return;a.add(e.name),kr(O(s.initializer),n,r,i,a);return}if(y(o,`Identifier`)){if(a.has(o.name))return;a.add(o.name);let e=T(o,o.name);if(!e?.initializer)return;jr(O(e.initializer),n,r,i,a)}},xne=(e,t)=>{let n=Or.get(e);if(n)return n;let r=new WeakSet;return we(e,Sr)&&A(e,n=>{if(!(!y(n,`CallExpression`)&&!y(n,`NewExpression`))&&Er(n,t))for(let i of n.arguments)jr(i,e,t,r,new Set)}),Or.set(e,r),r},Mr=(e,t)=>{if(hne(e.filename))return!0;if(!t)return!1;let n=d(t);if(!n)return!1;let r=xne(n,e.scopes);return r.has(t)?!0:y(t,`JSXElement`)?r.has(t.openingElement):!1},Nr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],Pr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Fr=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),Ir=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),Lr=new Set([`add`,`clear`,`delete`,`set`]),Rr=new Set([`map`,`filter`,`forEach`,`flatMap`]),zr=new Set([`then`,`catch`,`finally`]),Br=new Set([`values`,`keys`,`entries`]),Sne=/\.browser\.[cm]?[jt]sx?$/,Cne=new Set(`vitest.jest.mocha.chai.sinon.expect.ava.uvu.node:test.bun:test.@testing-library/react.@testing-library/react-native.@testing-library/react-hooks.@testing-library/dom.@testing-library/user-event.@testing-library/jest-dom.@testing-library/vue.@testing-library/svelte.@testing-library/preact.@testing-library/cypress.playwright.playwright-core.@playwright/test.@playwright/experimental-ct-react.@playwright/experimental-ct-react17.cypress.@cypress/react.@cypress/react18.@storybook/test.@storybook/test-runner.@storybook/testing-library.@storybook/jest.puppeteer.puppeteer-core.webdriverio.@wdio/globals.@nuxt/test-utils`.split(`.`)),wne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],Tne=new Set(`render.rerender.renderHook.renderToString.renderToStaticMarkup.act.click.dblClick.dblclick.tripleClick.tap.press.longPress.type.clear.fill.focus.blur.hover.unhover.check.uncheck.selectOption.selectOptions.setChecked.setInputFiles.scrollIntoViewIfNeeded.dragTo.dragAndDrop.drop.evaluate.evaluateHandle.waitFor.waitForLoadState.waitForSelector.waitForURL.waitForResponse.waitForRequest.waitForEvent.waitForFunction.waitForElementToBeRemoved.goto.goBack.goForward.reload.screenshot.snapshot.toMatchSnapshot.toMatchInlineSnapshot.expect.expectTypeOf.step.describe.test.it.beforeAll.beforeEach.afterAll.afterEach.play.userEvent.screen.within`.split(`.`)),Ene=[`findBy`,`findAllBy`],Vr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.animate.transition.spring.tween.stagger.sequence.timeline.scrub.query.execute.exec.raw.transaction.$transaction.$executeRaw.$queryRaw.$executeRawUnsafe.$queryRawUnsafe.begin.commit.rollback.savepoint.lock.unlock.spawn.spawnSync.execSync.execFile.execFileSync.fork.$.sh.mkdir.rmdir.rename.rm.unlink.writeFile.appendFile.copyFile.navigate.goto.waitForNavigation.waitForURL.waitForLoadState.waitForResponse.waitForRequest.waitForSelector.waitForFunction.waitForEvent`.split(`.`)),Hr=e=>typeof e!=`string`||e.length===0?!1:Cne.has(e)?!0:wne.some(t=>e.startsWith(t)),Dne=new Set([`it`,`test`]),One=new Set([`concurrent`,`only`,`skip`]),kne=new Set([`doMock`,`mock`,`unstable_mockModule`]),Ane=new Set([`jest`,`vi`]),jne=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),Mne=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),Nne=e=>{if(!e)return!1;let t=`/${e.replaceAll(`\\`,`/`)}`,n=t.slice(t.lastIndexOf(`/`)+1);return n.includes(`.test.`)||n.includes(`.spec.`)||t.includes(`/__tests__/`)||t.includes(`/__test__/`)||t.includes(`/__mocks__/`)},Pne=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=Ve(e,e.name);return!!(r&&jne.has(r.source)&&r.exportedName&&t.has(r.exportedName))},Fne=(e,t,n)=>Nne(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),Ur=(e,t,n)=>Pne(e,t,n)||Fne(e,t,n),Wr=e=>{let t=O(e);if(y(t,`Identifier`))return t;if(y(t,`MemberExpression`)){let e=C(t);return!e||!One.has(e)?null:Wr(t.object)}let n=y(t,`CallExpression`)?O(t.callee):y(t,`TaggedTemplateExpression`)?O(t.tag):null;return!y(n,`MemberExpression`)||C(n)!==`each`?null:Wr(n.object)},Ine=(e,t)=>{let n=v(e),r=n.parent;if(!r||!y(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Wr(r.callee);return!!(i&&Ur(i,Dne,t))},Lne=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!y(r,`Literal`)||typeof r.value!=`string`)return!1;let i=O(e.callee);if(!y(i,`MemberExpression`))return!1;let a=C(i);if(!a||!kne.has(a))return!1;let o=O(i.object);return y(o,`Identifier`)&&Ur(o,Ane,n)},Rne=(e,n)=>{let r=e.parent;for(;r;){if(t(r)){let e=v(r),t=e.parent;if(t&&y(t,`CallExpression`)&&Lne(t,e,n))return!0}r=r.parent}return!1},zne=(e,n,r)=>{let i=e.parent,a=null;for(i&&y(i,`JSXElement`)&&i.openingElement===e&&(i=i.parent);i&&i!==n;){if(t(i))return!1;if(y(i,`JSXAttribute`)&&(a=i),y(i,`JSXElement`)){let e=i.openingElement.name;if(y(e,`JSXIdentifier`)){let t=r.scopes.referenceFor(e),n=Ve(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&n&&!Mne.has(n.source)&&!Hr(n.source)&&a?.parent===i.openingElement&&y(a.name,`JSXIdentifier`)&&a.name.name!==`children`)return!0}a=null}i=i.parent}return!1},Gr=(e,t)=>{if(Rne(e,t))return!0;let n=b(e);return!n||!Ine(n,t)?!1:zne(e,n,t)},Bne=e=>{let t=e.parent;return t?y(t,`JSXSpreadAttribute`)||y(t,`SpreadElement`)?t.argument===e:y(t,`VariableDeclarator`)&&t.init===e:!1},Kr=(e,t,n,r,i)=>{let a=O(e);if(r&&y(a,`Identifier`)){let e=r.symbolFor(a);if(!e||e.kind!==`const`||!e.initializer||i.has(e.id)||e.references.some(e=>e.flag!==`read`||!Bne(e.identifier)))return!0;i.add(e.id);let o=Kr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!y(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(y(e,`SpreadElement`)){if(Kr(e.argument,t,n,r,i))return!0;continue}if(!y(e,`Property`))return!0;let a=S(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},qr=(e,t,n=!0,r)=>Kr(e,t,n,r,new Set),L=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(y(a,`JSXSpreadAttribute`)){if(qr(a.argument,t,n))return null;continue}if(!y(a,`JSXAttribute`))continue;let o=Cn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Jr=(e,t)=>e.some(e=>y(e,`JSXSpreadAttribute`)&&qr(e.argument,t,!1)),Yr=e=>{let t=O(e);return y(t,`UnaryExpression`)&&t.operator===`void`&&y(O(t.argument),`Literal`)},Xr=(e,t={})=>{if(!e?.value)return!1;let n=I(e);if(n!==null)return n.trim().length>0;if(!y(e.value,`JSXExpressionContainer`))return!0;let r=O(e.value.expression);return y(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:y(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Yr(r)},Vne=(e,t,n)=>{let{openingElement:r}=e;if(r===n||br(r,t))return!1;if(y(r.name,`JSXMemberExpression`)||y(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=L(r.attributes,`aria-label`,!1);if(Xr(i,{booleanValuesRender:!0})||!i&&Jr(r.attributes,`aria-label`))return!0;if(y(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=L(r.attributes,`alt`,!1);return Xr(e)||!e&&Jr(r.attributes,`alt`)}return Qr(e,t,n)},Zr=(e,t,n)=>{for(let r of e){if(y(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(y(r,`JSXElement`)){if(Vne(r,t,n))return!0;continue}if(y(r,`JSXFragment`)){if(Zr(r.children,t,n))return!0;continue}if(y(r,`JSXExpressionContainer`)){let e=O(r.expression);if(y(e,`JSXEmptyExpression`))continue;if(y(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Yr(e)||y(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Qr=(e,t,n)=>{if(Zr(e.children,t,n))return!0;let r=L(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(Xr(r)||!r&&Jr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=L(e.openingElement.attributes,`children`,!1);return!!(Xr(i)||!i&&Jr(e.openingElement.attributes,`children`))},Hne=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Une=e=>!!(y(e,`Identifier`)&&e.name===`undefined`||y(e,`Literal`)&&e.value===null),$r=e=>Une(e)?!0:y(e,`ConditionalExpression`)?$r(e.consequent)||$r(e.alternate):!1,ei=e=>{if(!e.value)return!1;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!$r(t):!0}return!0},Wne=e=>{if(!e)return!1;let t=dr(e);return t===`presentation`||t===`none`},ti=e=>{if(!e.value)return!1;if(y(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:y(t,`Identifier`)&&t.name===`undefined`?!1:y(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Gne=(e,t,n)=>{let r=P(e.attributes,`alt`);if(r){ei(r)||n.report({node:t,message:'Screen reader users cannot access this image because its `alt` is empty or invalid. Add a short description, or `alt=""` if it is decorative.'});return}if(Wne(P(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=P(e.attributes,`aria-label`);if(i){ti(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=P(e.attributes,`aria-labelledby`);if(a){ti(a)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-labelledby` has no value, so point it at the id of the text that labels this."});return}n.report({node:t,message:'Screen reader users cannot access this image without `alt`. Add `alt="image_description"`, or `alt=""` if it is decorative.'})},Kne=(e,t,n,r)=>{let i=P(e.attributes,`aria-label`),a=P(e.attributes,`aria-labelledby`),o=i&&ti(i)||a&&ti(a),s=P(e.attributes,`title`),c=s?dr(s):null,l=!!(c&&c.length>0);o||l||Qr(t,r.settings)||r.report({node:n,message:"Screen reader users cannot use this `<object>` because assistive tech cannot describe it, so add `alt`, `aria-label`, `aria-labelledby`, `title`, or inner fallback text."})},qne=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&ti(r)||i&&ti(i))return;let a=P(e.attributes,`alt`);(!a||!ei(a))&&n.report({node:t,message:"Blind users can't use this `<area>` of the image map because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},Jne=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&ti(r)||i&&ti(i))return;let a=P(e.attributes,`alt`);(!a||!ei(a))&&n.report({node:t,message:"Blind users can't use this image button because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},ni=x({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{if(Mr(e))return Ae;let t=Hne(e.settings),n=!t.elements||t.elements.includes(`img`),r=!t.elements||t.elements.includes(`object`),i=!t.elements||t.elements.includes(`area`),a=!t.elements||t.elements.includes(`input[type="image"]`),o=new Set(t.img??[]),s=new Set(t.object??[]),c=new Set(t.area??[]),l=new Set(t[`input[type="image"]`]??[]),u=gr(e.settings);return{JSXOpeningElement(t){if(Gr(t,e))return;if(!u&&y(t.name,`JSXIdentifier`)){let e=t.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!o.has(e)&&!s.has(e)&&!c.has(e)&&!l.has(e))return}if(Mr(e,t)||F(t.attributes))return;let d=hr(t,e.settings);if(n&&(d===`img`||o.has(d))){if(br(t,e.settings))return;Gne(t,t,e);return}if(r&&(d===`object`||s.has(d))){let n=t.parent;n&&y(n,`JSXElement`)&&Kne(t,n,t,e);return}if(i&&(d===`area`||c.has(d))){qne(t,t,e);return}a&&(d.toLowerCase()===`input`&&(()=>{let e=P(t.attributes,`type`);return e?dr(e)?.toLowerCase()===`image`:!1})()||l.has(d))&&Jne(t,t,e)}}}}),Yne=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Xne=[`click here`,`here`,`link`,`a link`,`learn more`],Zne=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Xne}},Qne=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),$ne=e=>y(e,`Literal`)&&typeof e.value==`string`?e.value:y(e,`TemplateLiteral`)?In(e):null,ri=(e,t)=>{let n=e.openingElement,r=P(n.attributes,`aria-label`);if(r){let e=dr(r);if(e!==null)return e}if(hr(n,t)===`img`){let e=P(n.attributes,`alt`);if(e){let t=dr(e);if(t!==null)return t}}if(br(n,t))return null;let i=[];for(let n of e.children){let e=n;if(y(e,`JSXText`))i.push(e.value);else if(y(e,`JSXElement`)){let n=ri(e,t);n!==null&&i.push(n)}else if(y(e,`JSXExpressionContainer`)){let t=$ne(e.expression);t!==null&&i.push(t)}}return i.join(``)},ii=x({id:`anchor-ambiguous-text`,title:`Ambiguous link text`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Name where a link goes. Avoid 'click here', 'learn more', and 'link'.`,category:`Accessibility`,create:e=>{if(ct(e.filename))return Ae;let t=Zne(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(hr(t.openingElement,e.settings)!==`a`)return;let r=ri(t,e.settings);if(r===null||r.trim().length===0)return;let i=Qne(r);n.has(i)&&e.report({node:t.openingElement.name,message:Yne(i)})}}}}),ai=new Set(`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.complementary.contentinfo.definition.deletion.dialog.directory.doc-abstract.doc-acknowledgments.doc-afterword.doc-appendix.doc-backlink.doc-biblioentry.doc-bibliography.doc-biblioref.doc-chapter.doc-colophon.doc-conclusion.doc-cover.doc-credit.doc-credits.doc-dedication.doc-endnote.doc-endnotes.doc-epigraph.doc-epilogue.doc-errata.doc-example.doc-footnote.doc-foreword.doc-glossary.doc-glossref.doc-index.doc-introduction.doc-noteref.doc-notice.doc-pagebreak.doc-pagelist.doc-part.doc-preface.doc-prologue.doc-pullquote.doc-qna.doc-subtitle.doc-tip.doc-toc.document.emphasis.feed.figure.form.generic.graphics-document.graphics-object.graphics-symbol.grid.gridcell.group.heading.img.insertion.link.list.listbox.listitem.log.main.mark.marquee.math.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.meter.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.region.row.rowgroup.rowheader.scrollbar.search.searchbox.separator.slider.spinbutton.status.strong.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem`.split(`.`)),oi=new Set(`button.checkbox.columnheader.combobox.grid.gridcell.link.listbox.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.scrollbar.searchbox.separator.slider.spinbutton.switch.tab.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`)),ere=new Set(`alert.alertdialog.application.article.banner.blockquote.caption.cell.complementary.contentinfo.definition.deletion.dialog.directory.document.feed.figure.form.group.heading.img.insertion.list.listitem.log.main.marquee.math.navigation.note.paragraph.progressbar.region.rowgroup.search.status.table.tabpanel.term.time.timer.tooltip`.split(`.`)),tre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),si=new Set([`presentation`,`none`]),nre=e=>e.trim().split(/\s+/).find(e=>ai.has(e))===`link`,rre=e=>{let t=e.parent;for(;t;){if(y(t,`JSXAttribute`)){let e=t.parent;return e&&y(e,`JSXOpeningElement`)?xr(e.name)===`Trans`:!1}t=t.parent??null}return!1},ci=x({id:`anchor-has-content`,title:`Anchor has no content`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Put readable text inside every link.`,category:`Accessibility`,create:e=>{let t=ct(e.filename);return{JSXElement(n){if(t)return;let r=n.openingElement;if(hr(r,e.settings)!==`a`)return;let i=P(r.attributes,`href`),a=P(r.attributes,`role`),o=a?rn(a,e.scopes):[],s=o===null||o.some(e=>nre(e));if(!(!i&&!s)&&!br(r,e.settings)&&!Qr(n,e.settings)){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(P(r.attributes,e))return;rre(n)||e.report({node:r.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),li=[`href`],ui=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return li;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return li;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?li:r},di="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",ire=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:ui(e)}},are=e=>{let t=e.parent;if(!t||!y(t,`JSXElement`))return!1;let n=t.parent;if(!n||!y(n,`JSXElement`))return!1;let r=xr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},ore=e=>!!P(e.attributes,`role`)&&!!P(e.attributes,`tabindex`)&&(!!P(e.attributes,`onkeydown`)||!!P(e.attributes,`onkeyup`)),sre=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},cre=e=>{if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Identifier`)&&t.name===`undefined`||y(t,`Literal`)&&t.value===null)return!0}return!!y(e,`JSXFragment`)},fi=x({id:`anchor-is-valid`,title:`Anchor used as a button`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Give links a real destination. Use `<button>` for in-page actions.",category:`Accessibility`,create:e=>{let t=ire(e.settings),n=gr(e.settings),r=ct(e.filename);return{JSXOpeningElement(i){if(r)return;let a=hr(i,e.settings);if(!n&&a!==`a`||a!==`a`)return;let o;for(let e of t.hrefAttributeNames)if(o=P(i.attributes,e),o)break;if(o){if(!o.value){e.report({node:i.name,message:di});return}let n=rn(o,e.scopes);if(n===null?cre(o.value):n.length>0&&n.every(e=>sre(e,t.validHrefs))){let t=!!P(i.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:i.name,message:t?"Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.":di})}return}F(i.attributes)||are(i)||ore(i)||e.report({node:i.name,message:"Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions)."})}}}}),pi=e=>{let t=e?.[`react-doctor`];return typeof t!=`object`||!t||Array.isArray(t)?null:t},mi=(e,t)=>Object.getOwnPropertyDescriptor(e,t)?.value,hi=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);return typeof r==`string`?r:void 0},lre=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);return typeof r==`number`&&Number.isFinite(r)?r:void 0},gi=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);if(Array.isArray(r))return r.filter(e=>typeof e==`string`&&e.length>0)},_i=(e,t)=>gi(e,t)??[],vi=(e,t)=>_i(e,`capabilities`).includes(t),yi=(e,t)=>{let n=pi(e);return!n||mi(n,`capabilities`)===void 0?!0:vi(e,t)},bi=x({id:`anchor-target-exists`,title:`Fragment link target is missing`,severity:`warn`,recommendation:`Add an element with the referenced id, or update the fragment link to point to an existing target.`,create:e=>{if(ct(e.filename))return Ae;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(hr(n,e.settings)!==`a`)return;let r=null;for(let t of ui(e.settings))if(r=L(n.attributes,t,!1),r)break;if(!r)return;let i=I(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=Hee({configuredRootDirectory:hi(e.settings,`rootDirectory`),currentFilePath:e.filename??``,currentProgramNode:n,currentScopes:e.scopes});if(r)for(let n of t)r.has(n.targetId)||e.report({node:n.hrefAttribute,message:`This fragment link points to "#${n.targetId}", but no matching static id was found in the project.`})}}}}),ure=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),xi=new Set(`a.abbr.acronym.address.applet.area.article.aside.audio.b.base.basefont.bdi.bdo.bgsound.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.command.content.data.datalist.dd.del.details.dfn.dialog.dir.div.dl.dt.element.em.embed.fieldset.figcaption.figure.font.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.image.img.input.ins.isindex.kbd.keygen.label.legend.li.link.listing.main.map.mark.marquee.math.menu.menuitem.meta.meter.multicol.nav.nextid.nobr.noembed.noframes.noscript.object.ol.optgroup.option.output.p.param.picture.plaintext.pre.progress.q.rb.rbc.rp.rt.rtc.ruby.s.samp.script.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.tt.u.ul.var.video.wbr.xmp`.split(`.`)),Si=new Set(`abbr.address.article.aside.blockquote.br.caption.code.dd.del.details.dfn.dialog.dir.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.hr.html.iframe.img.ins.label.legend.li.main.mark.marquee.menu.meter.nav.ol.optgroup.output.p.pre.progress.ruby.section.strong.sub.sup.table.tbody.tfoot.thead.time.ul`.split(`.`)),Ci=e=>e.kind!==`const`||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,dre=new Set([``,`plaintext-only`,`true`]),wi={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Ti={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},Ei={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Di={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},fre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),Oi=(e,t,n)=>{let r=O(e);if(y(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?wi:Ti;if(typeof r.value==`string`){let e=r.value.toLowerCase();return dre.has(e)?wi:e===`false`?Ti:Ei}return Ei}if(y(r,`ConditionalExpression`))return fre(Oi(r.consequent,t,n),Oi(r.alternate,t,n));if(y(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Di;let i=Ci(e);if(!i)return Di;let a=new Set(n);return a.add(e.id),Oi(i,t,a)}return Di},ki=(e,t)=>{let n=P(e.attributes,`contenteditable`);return n?n.value?y(n.value,`Literal`)?Oi(n.value,t,new Set):y(n.value,`JSXExpressionContainer`)?Oi(n.value.expression,t,new Set):Di:wi:null},pre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(y(r,`JSXElement`)){let e=r.openingElement;if(!xi.has(hr(e,n)))return!1;let i=ki(e,t);if(i){if(i.canBeEnabled&&!i.canBeDisabled&&!i.canBeInherited)return!0;if(!(i.canBeInherited&&!i.canBeDisabled&&!i.canBeEnabled))return!1}}r=r.parent}return!1},Ai=(e,t,n)=>ki(e,t)?.canBeEnabled?!pre(e,t,n):!1,ji=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=P(t.attributes,`type`);if(e){let t=dr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return P(t.attributes,`href`)!==void 0;case`img`:return P(t.attributes,`usemap`)!==void 0;default:return!1}},Mi=e=>{if(!e)return null;if(y(e,`Literal`)){if(typeof e.value==`number`)return e.value;if(typeof e.value==`string`){let t=Number(e.value);return Number.isFinite(t)?t:null}}if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Literal`)){if(typeof t.value==`number`)return t.value;if(typeof t.value==`string`){let e=Number(t.value);return Number.isFinite(e)?e:null}}if(y(t,`UnaryExpression`)&&t.operator===`-`&&y(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(y(t,`TemplateLiteral`)){let e=In(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(y(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return y(t.test,`Literal`)?Mi(e(t.test.value?t.consequent:t.alternate)):Mi(e(t.consequent))}}return null},Ni="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",Pi=x({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!P(t.attributes,`aria-activedescendant`))return;let n=hr(t,e.settings);if(!xi.has(n))return;let r=P(t.attributes,`tabIndex`);if(r){let n=Mi(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:Ni});return}ji(n,t)||Ai(t,e.scopes,e.settings)||e.report({node:t.name,message:Ni})}})}),mre=[`aria-label`,`aria-labelledby`,`alt`,`title`],Fi=(e,t)=>{let n=L(e.attributes,t,!1);if(!n)return!1;let r=I(n);return r===null?null:r.trim().length>0},Ii=x({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(F(n.attributes))return;if(Fi(n,`aria-brailleroledescription`)===!0&&Fi(n,`aria-roledescription`)===!1){let t=L(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(Fi(n,`aria-braillelabel`)!==!0||Qr(t,e.settings)||mre.map(e=>Fi(n,e)).some(e=>e===!0||e===null))return;let r=L(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),Li=new Map([[`aria-activedescendant`,{type:`id`}],[`aria-atomic`,{type:`boolean`}],[`aria-autocomplete`,{type:`token`,allowedTokens:[`inline`,`list`,`both`,`none`]}],[`aria-braillelabel`,{type:`string`}],[`aria-brailleroledescription`,{type:`string`}],[`aria-busy`,{type:`boolean`}],[`aria-checked`,{type:`tristate`}],[`aria-colcount`,{type:`integer`}],[`aria-colindex`,{type:`integer`}],[`aria-colspan`,{type:`integer`}],[`aria-controls`,{type:`idlist`}],[`aria-current`,{type:`token`,allowedTokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]}],[`aria-describedby`,{type:`idlist`}],[`aria-description`,{type:`string`}],[`aria-details`,{type:`id`}],[`aria-disabled`,{type:`boolean`}],[`aria-dropeffect`,{type:`tokenlist`,allowedTokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]}],[`aria-errormessage`,{type:`id`}],[`aria-expanded`,{type:`true-false-undefined`}],[`aria-flowto`,{type:`idlist`}],[`aria-grabbed`,{type:`true-false-undefined`}],[`aria-haspopup`,{type:`token`,allowedTokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]}],[`aria-hidden`,{type:`true-false-undefined`}],[`aria-invalid`,{type:`token`,allowedTokens:[`grammar`,`false`,`spelling`,`true`]}],[`aria-keyshortcuts`,{type:`string`}],[`aria-label`,{type:`string`}],[`aria-labelledby`,{type:`idlist`}],[`aria-level`,{type:`integer`}],[`aria-live`,{type:`token`,allowedTokens:[`assertive`,`off`,`polite`]}],[`aria-modal`,{type:`boolean`}],[`aria-multiline`,{type:`boolean`}],[`aria-multiselectable`,{type:`boolean`}],[`aria-orientation`,{type:`token`,allowedTokens:[`horizontal`,`undefined`,`vertical`]}],[`aria-owns`,{type:`idlist`}],[`aria-placeholder`,{type:`string`}],[`aria-posinset`,{type:`integer`}],[`aria-pressed`,{type:`tristate`}],[`aria-readonly`,{type:`boolean`}],[`aria-relevant`,{type:`tokenlist`,allowedTokens:[`additions`,`all`,`removals`,`text`]}],[`aria-required`,{type:`boolean`}],[`aria-roledescription`,{type:`string`}],[`aria-rowcount`,{type:`integer`}],[`aria-rowindex`,{type:`integer`}],[`aria-rowspan`,{type:`integer`}],[`aria-selected`,{type:`true-false-undefined`}],[`aria-setsize`,{type:`integer`}],[`aria-sort`,{type:`token`,allowedTokens:[`ascending`,`descending`,`none`,`other`]}],[`aria-valuemax`,{type:`number`}],[`aria-valuemin`,{type:`number`}],[`aria-valuenow`,{type:`number`}],[`aria-valuetext`,{type:`string`}]]),hre=e=>Li.has(e),gre=e=>`Screen reader users get no help from \`${e}\` because it isn't a real ARIA attribute, so fix the spelling against the WAI-ARIA list.`,Ri=x({id:`aria-props`,title:`Invalid ARIA attribute`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Only use `aria-*` attributes that actually exist.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`))return;let n=Cn(t.name);!n||!n.startsWith(`aria-`)||hre(n)||e.report({node:t.name,message:gre(n)})}})}),_re={"aria-activedescendant":{kind:`id`},"aria-details":{kind:`id`},"aria-errormessage":{kind:`id`},"aria-atomic":{kind:`boolean`},"aria-busy":{kind:`boolean`},"aria-disabled":{kind:`boolean`},"aria-modal":{kind:`boolean`},"aria-multiline":{kind:`boolean`},"aria-multiselectable":{kind:`boolean`},"aria-readonly":{kind:`boolean`},"aria-required":{kind:`boolean`},"aria-braillelabel":{kind:`string`},"aria-brailleroledescription":{kind:`string`},"aria-description":{kind:`string`},"aria-keyshortcuts":{kind:`string`},"aria-label":{kind:`string`},"aria-placeholder":{kind:`string`},"aria-roledescription":{kind:`string`},"aria-valuetext":{kind:`string`},"aria-checked":{kind:`tristate`},"aria-pressed":{kind:`tristate`},"aria-colcount":{kind:`integer`},"aria-colindex":{kind:`integer`},"aria-colspan":{kind:`integer`},"aria-level":{kind:`integer`},"aria-posinset":{kind:`integer`},"aria-rowcount":{kind:`integer`},"aria-rowindex":{kind:`integer`},"aria-rowspan":{kind:`integer`},"aria-setsize":{kind:`integer`},"aria-controls":{kind:`id-list`},"aria-describedby":{kind:`id-list`},"aria-flowto":{kind:`id-list`},"aria-labelledby":{kind:`id-list`},"aria-owns":{kind:`id-list`},"aria-expanded":{kind:`optional-boolean`},"aria-grabbed":{kind:`optional-boolean`},"aria-hidden":{kind:`optional-boolean`},"aria-selected":{kind:`optional-boolean`},"aria-valuemax":{kind:`number`},"aria-valuemin":{kind:`number`},"aria-valuenow":{kind:`number`},"aria-autocomplete":{kind:`token`,tokens:[`none`,`inline`,`list`,`both`]},"aria-current":{kind:`token`,tokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]},"aria-haspopup":{kind:`token`,tokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]},"aria-invalid":{kind:`token`,tokens:[`grammar`,`false`,`spelling`,`true`]},"aria-live":{kind:`token`,tokens:[`assertive`,`off`,`polite`]},"aria-orientation":{kind:`token`,tokens:[`horizontal`,`undefined`,`vertical`]},"aria-sort":{kind:`token`,tokens:[`ascending`,`descending`,`none`,`other`]},"aria-dropeffect":{kind:`token-list`,tokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]},"aria-relevant":{kind:`token-list`,tokens:[`additions`,`all`,`removals`,`text`]}},vre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:return`'true' or 'false'`;case`tristate`:return`'true', 'false', or 'mixed'`;case`string`:return`a string value`;case`integer`:return`an integer value`;case`number`:return`a number value`;case`id`:return`a single element ID`;case`id-list`:return`a space-separated list of element IDs`;case`token`:return`one of: ${e.tokens.join(`, `)}`;case`token-list`:return`a space-separated list of: ${e.tokens.join(`, `)}`}},zi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${vre(t)}.`,yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},Bi=e=>{if(y(e,`Literal`))return typeof e.value==`boolean`?e.value:typeof e.value==`string`?e.value.length>0:typeof e.value==`number`?e.value!==0&&!Number.isNaN(e.value):e.value===null?!1:null;if(y(e,`TemplateLiteral`)){let t=In(e);return t===null?null:t.length>0}if(y(e,`UnaryExpression`)&&e.operator===`!`){let t=Bi(e.argument);return t===null?null:!t}return null},bre=e=>{if(y(e,`Literal`))return!0;if(y(e,`JSXExpressionContainer`)){let t=e.expression;return y(t,`Literal`)?t.value!==null:y(t,`TemplateLiteral`)?!0:y(t,`UnaryExpression`)&&t.operator===`!`?Bi(t.argument)!==null:!1}return!1},Vi=(e,t)=>{if(y(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(y(e,`JSXExpressionContainer`)){let n=e.expression;if(y(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(y(n,`TemplateLiteral`))return In(n)?.toLowerCase()??null;if(t&&y(n,`UnaryExpression`)&&n.operator===`!`){let e=Bi(n.argument);return e===null?null:String(!e)}}return null},Hi=e=>{if(!y(e,`JSXExpressionContainer`))return!1;let t=e.expression;return y(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},xre=(e,t)=>{if(!bre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=Vi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=Vi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return Hi(t)?!0:Vi(t,!1)!==null;case`integer`:case`number`:{let e=Vi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(y(t,`JSXExpressionContainer`)){let e=t.expression;if(y(e,`Literal`)&&typeof e.value==`number`||y(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&y(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(Hi(t))return!0;let e=Vi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=Vi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=Vi(t,!0);if(n===null)return!1;let r=n.split(/\s+/).filter(e=>e.length>0);return r.length===0?!1:r.every(t=>e.tokens.includes(t))}}},Ui=x({id:`aria-proptypes`,title:`Invalid ARIA attribute value`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give each `aria-*` attribute the kind of value it expects.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`))return;let n=Cn(t.name);if(!n)return;let r=n.toLowerCase(),i=_re[r];if(i){if(!t.value){yre(i)||e.report({node:t,message:zi(r,i)});return}xre(i,t.value)||e.report({node:t,message:zi(r,i)})}}})}),Wi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Sre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??!0}},Gi=x({id:`aria-role`,title:`Invalid ARIA role`,tags:[`react-jsx-only`],severity:`error`,recommendation:`Use a real, non-abstract ARIA role so assistive tech can expose the element correctly.`,category:`Accessibility`,create:e=>{let t=Sre(e.settings);return{JSXOpeningElement(n){let r=P(n.attributes,`role`);if(!r)return;let i=hr(n,e.settings);if(t.ignoreNonDOM&&!xi.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:Wi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!ai.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:Wi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:Wi(``)});return}if(y(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:Wi(``)});return}a([o.value]);return}if(y(o,`JSXExpressionContainer`)){let t=o.expression;if(y(t,`Literal`)&&t.value===null){e.report({node:r,message:Wi(``)});return}if(y(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:Wi(``)});return}let n=rn(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:Wi(``)})}}}}),Cre=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,Ki=x({id:`aria-unsupported-elements`,title:`ARIA on unsupported element`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Do not put `role` or `aria-*` on reserved HTML elements.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){let n=hr(t,e.settings);if(ure.has(n))for(let r of t.attributes){if(!y(r,`JSXAttribute`)||!y(r.name,`JSXIdentifier`))continue;let t=Cn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:Cre(n,t)})}}})}),qi=(e,t)=>{if(e){if(y(e,`Identifier`)){t.add(e.name);return}if(y(e,`AssignmentPattern`)){qi(e.left,t);return}if(y(e,`RestElement`)){qi(e.argument,t);return}if(y(e,`ArrayPattern`)){for(let n of e.elements??[])qi(n,t);return}if(y(e,`ObjectPattern`))for(let n of e.properties??[]){if(y(n,`RestElement`)){qi(n.argument,t);continue}y(n,`Property`)&&qi(n.value,t)}}},Ji=(e,t,n)=>{if(e&&!y(e,`Identifier`)){if(y(e,`AssignmentPattern`)){Yi(e.right,t,n),Ji(e.left,t,n);return}if(y(e,`RestElement`)){Ji(e.argument,t,n);return}if(y(e,`ArrayPattern`)){for(let r of e.elements??[])Ji(r,t,n);return}if(y(e,`ObjectPattern`))for(let r of e.properties??[]){if(y(r,`RestElement`)){Ji(r.argument,t,n);continue}y(r,`Property`)&&(r.computed&&Yi(r.key,t,n),Ji(r.value,t,n))}}},wre=(e,t,n)=>{if(!y(e,`FunctionDeclaration`)&&!y(e,`FunctionExpression`)&&!y(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])qi(t,r);for(let n of e.params??[])Ji(n,t,r);Yi(e.body,t,r)},Yi=(e,t,n)=>{if(!e)return;if(y(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(y(e,`MemberExpression`)){Yi(e.object,t,n),e.computed&&Yi(e.property,t,n);return}if(y(e,`Property`)){e.computed&&Yi(e.key,t,n),Yi(e.value,t,n);return}if(y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`)){wre(e,t,n);return}if(y(e,`TSAsExpression`)||y(e,`TSSatisfiesExpression`)||y(e,`TSTypeAssertion`)||y(e,`TSNonNullExpression`)||y(e,`TSInstantiationExpression`)){Yi(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||Pte.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)E(e)&&Yi(e,t,n);else E(i)&&Yi(i,t,n)}},Xi=(e,t)=>Yi(e,t,new Set),Zi=e=>{if(!e)return!1;let t=!1;return A(e,e=>{if(t||y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`))return!1;if(y(e,`AwaitExpression`))return t=!0,!1}),t},Qi=e=>{let t=e;y(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!y(n,`Property`)||n.value!==t||!n.parent||!y(n.parent,`ObjectPattern`)?null:S(n,{allowComputedString:!0})},Tre=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),$i=(e,t)=>{let n=O(e);return y(n,`Literal`)?!0:y(n,`Identifier`)?t.has(n.name):y(n,`BinaryExpression`)||y(n,`LogicalExpression`)?$i(n.left,t)&&$i(n.right,t):y(n,`UnaryExpression`)?n.operator!==`delete`&&$i(n.argument,t):y(n,`ConditionalExpression`)?$i(n.test,t)&&$i(n.consequent,t)&&$i(n.alternate,t):y(n,`TemplateLiteral`)?n.expressions.every(e=>$i(e,t)):!1},ea=(e,t,n)=>{let r=O(e);if(!y(r,`CallExpression`)||!r.arguments.every(e=>!y(e,`SpreadElement`)&&$i(e,t)))return!1;let i=O(r.callee);if(!y(i,`MemberExpression`)||C(i)!==`resolve`)return!1;let a=O(i.object);return y(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},Ere=(e,t,n)=>!y(e,`ExpressionStatement`)||!y(e.expression,`AwaitExpression`)?!1:ea(e.expression.argument,t,n),Dre=(e,t)=>{if(!y(e,`ExpressionStatement`)||!y(e.expression,`AssignmentExpression`)||!Tre.has(e.expression.operator))return!1;let n=O(e.expression.left);if(!y(n,`MemberExpression`)||C(n)===null)return!1;let r=O(n.object);return y(r,`Identifier`)&&t.has(r.name)&&y(O(e.expression.right),`Literal`)},Ore=(e,n)=>{if(!t(e))return!1;let r=new Set;for(let t of e.params){if(!y(t,`Identifier`))return!1;r.add(t.name)}if(!e.async){if(!y(e.body,`BlockStatement`))return ea(e.body,r,n);if(e.body.body.length!==1)return!1;let[t]=e.body.body;return!!(y(t,`ReturnStatement`)&&t.argument&&ea(t.argument,r,n))}if(!y(e.body,`BlockStatement`))return $i(e.body,r);let i=e.body.body;for(let e=0;e<i.length;e++){let t=i[e],a=e===i.length-1;if(!Ere(t,r,n)&&!(y(t,`ExpressionStatement`)&&$i(t.expression,r)))return Dre(t,r)?a:!y(t,`ReturnStatement`)||!a?!1:!t.argument||$i(t.argument,r)||ea(t.argument,r,n)}return!0},kre=(e,t)=>y(e,`Property`)?_(e,t,{allowConstTemplateLiteral:!0}):null,Are=(e,t)=>y(e,`MemberExpression`)?_(e,t,{allowConstTemplateLiteral:!0}):null,ta=(e,n,r,i,a)=>{let o=O(e);if(y(o,`Identifier`)){let e=i.symbolFor(o);return!e||e.kind!==`const`||!e.initializer||a.has(e.id)||Ht(e,r,i)||Kt(o,n,i)?null:(a.add(e.id),ta(e.initializer,n,r,i,a))}if(!y(o,`ObjectExpression`))return null;let s=null;for(let e of o.properties){if(!y(e,`Property`)||e.kind!==`init`)return null;let t=kre(e,i);if(t===null)return null;t===n&&(s=e)}if(!s||!y(s,`Property`))return null;let c=O(s.value);return t(c)?c:na(c,r,i,a)},na=(e,n,r,i)=>{let a=O(e);if(t(a))return a;if(y(a,`MemberExpression`)){let e=Are(a,r);return e===null?null:ta(O(a.object),e,n,r,i)}if(!y(a,`Identifier`))return null;let o=r.symbolFor(a);if(!o||i.has(o.id)||Ht(o,n,r)||(i.add(o.id),!o.initializer))return null;let s=O(o.initializer),c=Qi(o.bindingIdentifier);return c===null?t(s)?s:o.kind===`const`?na(s,n,r,i):null:ta(s,c,n,r,i)},ra=(e,t)=>{let n=O(e);return!y(n,`CallExpression`)||Xt(n,t)?null:na(n.callee,n,t,new Set)},ia=(e,t)=>{let n=ra(e,t);return n&&Ore(n,t)?n:null},R=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},aa=e=>!!(e&&(y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`))),jre=(e,t)=>{if(!y(e,`LogicalExpression`))return!1;let n=v(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?R(t,n):!!(e.operator===`||`&&r&&R(t,r));return y(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):y(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(y(r,`WhileStatement`)||y(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||y(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?R(t,r.body):!1},oa=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||n.cfg.enclosingFunction(e)!==r)return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(e),o=i?.blockOf(t);if(!i||!a||!o)return!1;let s=e,c=e.parent??null;for(;c&&c!==r;){let e=null;if(y(c,`LogicalExpression`)&&c.right===s||y(c,`ConditionalExpression`)&&c.test!==s||y(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(y(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||y(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!R(t,e)&&!jre(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},z=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i);if(!e)return n.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(r.has(e.id))return`symbol:${e.id}`;r.add(e.id);let t=e.bindingIdentifier.parent,a=t?.parent,o=a?.parent,s=y(t,`Property`)?S(t):null;if(s&&y(a,`ObjectPattern`)&&y(o,`VariableDeclarator`)&&o.id===a){let t=z(o.init,n,r);return t?`${t}.${s}`:`symbol:${e.id}`}let c=e.initializer?O(e.initializer):null;return e.kind===`const`&&c&&(y(c,`Identifier`)||y(c,`MemberExpression`))?z(c,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(y(i,`MemberExpression`)){let e=S(i,{allowComputedString:!0});if(!e)return null;let t=z(i.object,n,r);return t?`${t}.${e}`:null}if(y(i,`ThisExpression`))return`this`;if(y(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`))return`literal:${String(i.value)}`;if(t(i)){let e=D(i);return e===null?null:`function:${e}`}return null},Mre=new Set(Nr),Nre=new Set([`push`,`unshift`]),sa=e=>y(e,`ForStatement`)||y(e,`ForInStatement`)||y(e,`ForOfStatement`)||y(e,`WhileStatement`)||y(e,`DoWhileStatement`)?e.body:null,Pre=(e,n=!1,r)=>{let i=null;return A(e,a=>{if(i||a!==e&&t(a)||n&&a!==e&&Mre.has(a.type))return!1;y(a,`AwaitExpression`)&&!r?.(a)&&(i=a)}),i},Fre=e=>y(e,`Identifier`)?Vr.has(e.name):y(e,`MemberExpression`)&&y(e.property,`Identifier`)?Vr.has(e.property.name):!1,Ire=(e,t)=>{if(!y(e,`AwaitExpression`))return!1;let n=e.argument;return!n||!y(n,`CallExpression`)||ia(n,t.scopes)!==null?!1:Fre(n.callee)},Lre=(e,t)=>y(e,`AwaitExpression`)&&!!e.argument&&Xt(e.argument,t.scopes),Rre=new Set([`all`,`allSettled`,`race`,`any`]),ca=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return!y(t,`MemberExpression`)||t.computed||!y(t.object,`Identifier`)||t.object.name!==`Promise`||!y(t.property,`Identifier`)?!1:Rre.has(t.property.name)},zre=e=>y(e,`AwaitExpression`)?ca(e.argument):!1,Bre=e=>{if(!y(e,`AwaitExpression`))return!1;let t=e.argument;if(!y(t,`NewExpression`)||!y(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(y(n,`Identifier`)&&Vr.has(n.name))return!0;if(!aa(n))return!1;let r=n.params?.[0],i=y(r,`Identifier`)?r.name:null,a=!1;return A(n.body,e=>{if(a)return!1;if(y(e,`CallExpression`)&&Fre(e.callee)||i&&y(e,`AssignmentExpression`)&&y(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Vre=e=>{let t=e;for(;y(t,`MemberExpression`);)t=t.object;return y(t,`Identifier`)?t.name:null},Hre=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Ure=(e,t)=>!!t&&e.references.some(e=>{let n=v(e.identifier),r=n.parent;return y(r,`ReturnStatement`)&&r.argument===n&&b(r)===t}),la=(e,t,n)=>{if(y(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(y(e,`ObjectPattern`)){for(let r of e.properties??[])y(r,`Property`)&&r.value?la(r.value,t,n):y(r,`RestElement`)&&r.argument&&la(r.argument,t,n);return}if(y(e,`ArrayPattern`)){for(let r of e.elements??[])r&&la(r,t,n);return}y(e,`AssignmentPattern`)&&e.left&&la(e.left,t,n)},ua=(e,n)=>{let r=new Set;return A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`Identifier`))return;let a=n.symbolFor(i);a&&r.add(a.id)}),r},Wre=(e,t)=>{let n=new Set;if(y(e,`ForOfStatement`)||y(e,`ForInStatement`))if(y(e.left,`VariableDeclaration`))for(let r of e.left.declarations)la(r.id,t,n);else la(e.left,t,n);return n},Gre=(e,n,r=null)=>{let i=new Set,a=[];A(e,o=>{if(o!==e&&t(o))return!1;if(y(o,`VariableDeclarator`)&&o.id&&o.init){let e=new Set;if(la(o.id,n,e),r&&R(r,o.init)||!r&&Zi(o.init))for(let t of e)i.add(t);let t=ua(o.init,n);for(let n of e)a.push({declaredSymbolId:n,referencedSymbolIds:t});return}if(y(o,`AssignmentExpression`)&&o.left){let e=new Set;if(la(o.left,n,e),r&&R(r,o.right)||!r&&Zi(o.right))for(let t of e)i.add(t);let t=ua(o.right,n);for(let n of e)a.push({declaredSymbolId:n,referencedSymbolIds:t})}});let o=!0;for(;o;){o=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of a)if(!i.has(e)){for(let n of t)if(i.has(n)){i.add(e),o=!0;break}}}return i},Kre=e=>y(e,`Identifier`)?e:y(e,`AssignmentPattern`)&&y(e.left,`Identifier`)?e.left:null,qre=(e,n)=>{if(!y(e,`AwaitExpression`))return!1;let r=e.argument;if(!y(r,`CallExpression`))return!1;let i=ra(r,n.scopes);if(!t(i))return!1;let a=b(r),o=n.scopes.ownScopeFor(i);if(!o)return!1;let s=Gre(i.body,n.scopes),c=new Set;for(let[e,t]of i.params.entries()){let i=Kre(t);if(!i)continue;let o=r.arguments[e];if(!y(o,`Identifier`))continue;let s=n.scopes.symbolFor(i),l=n.scopes.symbolFor(o);s&&l&&(Ure(l,a)||l.id===s.id)&&c.add(s.id)}let l=!1;return A(i.body,e=>{if(l||e!==i.body&&t(e))return!1;if(!y(e,`CallExpression`))return;let r=e.callee;if(!y(r,`MemberExpression`)||r.computed||!y(r.property,`Identifier`)||!Nre.has(r.property.name))return;let u=!1;for(let t of e.arguments??[]){if(Zi(t)){u=!0;break}let e=ua(t,n.scopes);for(let t of e)if(s.has(t)){u=!0;break}if(u)break}if(!u)return;let d=r.object;for(;y(d,`MemberExpression`);)d=d.object;if(!y(d,`Identifier`))return;let f=n.scopes.symbolFor(d);if(f&&(c.has(f.id)||!Hre(f.scope,o)&&Ure(f,a)))return l=!0,!1}),l},Jre=e=>{if(!y(e,`AwaitExpression`))return null;let t=O(e.argument);return y(t,`CallExpression`)&&y(O(t.callee),`MemberExpression`)?t:null},Yre=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=Wre(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=ua(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Xre=e=>{if(!y(e,`CallExpression`))return null;let t=O(e.callee);return y(t,`MemberExpression`)?t.object:null},da=e=>{let t=O(e);for(;y(t,`MemberExpression`);)t=O(t.object);return t},Zre=(e,n,r,i)=>{let a=sa(r);if(!a)return!1;let o=da(e);if(y(o,`Identifier`)){let e=i.scopes.symbolFor(o);if(!e||R(e.bindingIdentifier,r))return!1}else if(!y(o,`ThisExpression`))return!1;let s=!1;return A(a,e=>{if(s||e!==a&&t(e))return!1;let r=null;if(y(e,`AssignmentExpression`)?r=e.left:(y(e,`UpdateExpression`)||y(e,`UnaryExpression`)&&e.operator===`delete`)&&(r=e.argument),r&&z(r,i)===n)return s=!0,!1}),!s},Qre=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=Xre(e);return!r||z(r,n)!==t?!1:!y(v(e).parent,`ExpressionStatement`)},$re=(e,n,r,i)=>{let a=sa(n);if(!a)return!1;let o=!1,s=!1;return A(a,n=>{if(o&&s||n!==a&&t(n))return!1;R(n,e)||Qre(n,r,i)&&(oa(n,e,i)&&(o=!0),oa(e,n,i)&&(s=!0))}),o&&s},eie=(e,t)=>{let n=b(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||b(e.identifier)!==n)return!1;let r=v(e.identifier),i=r.parent;if(!y(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=O(i.callee);return y(a,`MemberExpression`)?y(da(a.object),`ThisExpression`):!1})},tie=(e,n,r)=>{let i=new Set;return A(n,a=>{if(a!==n&&t(a))return!1;let o=null,s=null;y(a,`VariableDeclarator`)&&a.init?(o=a.id,s=a.init):y(a,`AssignmentExpression`)&&(o=a.left,s=a.right),!(!o||!s||!R(e,s))&&la(o,r.scopes,i)}),i},nie=(e,t,n)=>{let r=O(e);if(!y(r,`MemberExpression`))return!1;let i=da(r);if(!y(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},rie=(e,n,r)=>{let i=sa(n);if(!i)return!1;let a=tie(e,i,r);if(a.size===0)return!1;let o=!1;return A(i,s=>{if(o||s!==i&&t(s))return!1;if(!y(s,`CallExpression`)||!oa(e,s,r))return;let c=s.callee;if(!y(c,`MemberExpression`)||c.computed||!y(c.property,`Identifier`)||!Nre.has(c.property.name))return;let l=da(c.object);if(!y(l,`Identifier`))return;let u=r.scopes.symbolFor(l);if(!(!u||R(u.bindingIdentifier,n)||!eie(u,n))){for(let e of s.arguments)if(nie(e,a,r))return o=!0,!1}}),o},iie=(e,t,n)=>{let r=Jre(e);if(!r||!Yre(r,t,n))return!1;let i=Xre(r);if(!i)return!1;let a=z(i,n);return!a||!Zre(i,a,t,n)?!1:$re(e,t,a,n)||y(da(i),`ThisExpression`)&&y(O(i),`MemberExpression`)&&rie(e,t,n)},aie=(e,t)=>Lre(e,t)||Ire(e,t)||zre(e)||Bre(e)||qre(e,t),fa=(e,t)=>{if(y(e,`Identifier`))t.add(e.name);else if(y(e,`ObjectPattern`))for(let n of e.properties??[])y(n,`Property`)&&n.value?fa(n.value,t):y(n,`RestElement`)&&n.argument&&fa(n.argument,t);else if(y(e,`ArrayPattern`))for(let n of e.elements??[])n&&fa(n,t);else y(e,`AssignmentPattern`)&&e.left&&fa(e.left,t)},oie=new Set([`push`,`unshift`,`splice`]),pa=(e,n)=>{let r=[];A(e,n=>{if(n!==e&&t(n))return!1;if(!y(n,`VariableDeclarator`)||!n.init||!y(n.id,`Identifier`))return;let i=new Set;Xi(n.init,i),r.push({declaredName:n.id.name,referencedNames:i})});let i=!0;for(;i;){i=!1;for(let{declaredName:e,referencedNames:t}of r)if(!n.has(e)){for(let r of t)if(n.has(r)){n.add(e),i=!0;break}}}},sie=e=>{let n=new Set,r=new Set;if(A(e,i=>{if(i!==e&&t(i))return!1;if(y(i,`AssignmentExpression`)&&i.left){fa(i.left,n);return}if(y(i,`AwaitExpression`)&&i.argument){Xi(i.argument,r);return}if(!y(i,`CallExpression`))return;let a=i.callee;y(a,`MemberExpression`)&&!a.computed&&y(a.property,`Identifier`)&&oie.has(a.property.name)&&y(a.object,`Identifier`)&&n.add(a.object.name)}),n.size===0)return!1;pa(e,n);for(let e of n)if(r.has(e))return!0;return!1},cie=new Set([...Nr,`SwitchStatement`]),lie=e=>{let n=new Set;return A(e,r=>{if(r!==e&&t(r))return!1;y(r,`VariableDeclarator`)&&r.id&&Zi(r.init)&&fa(r.id,n),y(r,`AssignmentExpression`)&&r.left&&Zi(r.right)&&fa(r.left,n)}),n},ma=(e,t)=>{if(!e)return!1;if(Zi(e))return!0;let n=new Set;Xi(e,n);for(let e of n)if(t.has(e))return!0;return!1},uie=(e,t,n)=>{if(e.label)return y(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(cie.has(r.type))return!1;r=r.parent}return!0},die=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),ha=e=>{if(!e)return!1;if(die.has(e.type))return!0;if(y(e,`BlockStatement`)){let t=e.body??[];return ha(t[t.length-1])}return!1},fie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(y(r,`IfStatement`)&&ma(r.test,n)&&(ha(r.consequent)||ha(r.alternate)))return!0}return!1},pie=(e,t,n)=>{if(y(e,`ReturnStatement`)&&e.argument&&ma(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(y(a,`IfStatement`)){if(ma(a.test,n))return!0;r=!0}if(y(a,`TryStatement`)&&a.handler&&i===a.block&&Zi(a.block)&&!r||y(a,`SwitchStatement`)&&ma(a.discriminant,n)||y(a,`BlockStatement`)&&fie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},mie=(e,n)=>{let r=lie(e);pa(e,r);let i=!1;return A(e,a=>{if(i||a!==e&&t(a))return!1;if((y(a,`ReturnStatement`)||y(a,`BreakStatement`)&&uie(a,e,n))&&pie(a,e,r))return i=!0,!1}),i},hie=new Set([...oie,`pop`,`shift`]),gie=e=>{let n=new Set;return A(e,r=>{if(r!==e&&t(r))return!1;if(y(r,`AssignmentExpression`)&&r.left){fa(r.left,n);let e=Vre(r.left);e&&n.add(e);return}if(!y(r,`CallExpression`))return;let i=r.callee;if(y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&hie.has(i.property.name)){let e=Vre(i.object);e&&n.add(e)}}),n},_ie=(e,t)=>{if(!e)return!1;let n=new Set;if(Xi(e,n),n.size===0)return!1;let r=gie(t),i=lie(t);pa(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},vie=e=>{let t=e.parent;return y(t,`LabeledStatement`)&&y(t.label,`Identifier`)?t.label.name:null},yie=(e,t)=>{let n=!1;return A(e,e=>{if(n||aa(e)||y(e,`FunctionDeclaration`))return!1;if(y(e,`AwaitExpression`)&&aie(e,t))return n=!0,!1}),n},bie=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),xie=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),Sie=e=>{let t=e;for(;;){t=v(t);let e=t.parent;if(!e)return t;if(y(e,`SpreadElement`)||y(e,`ArrayExpression`)){t=e;continue}if(y(e,`LogicalExpression`)){t=e;continue}if(y(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(y(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(y(n,`CallExpression`)&&n.callee===e&&!e.computed&&y(e.property,`Identifier`)&&xie.has(e.property.name)){t=n;continue}}return t}},ga=e=>{let n=e;for(;n.parent&&!t(n);)n=n.parent;return n},Cie=(e,t)=>{let n=!1;return A(t,t=>{if(n)return!1;if(!ca(t))return;let r=new Set;for(let e of t.arguments??[])Xi(e,r);if(r.has(e))return n=!0,!1}),n},wie=e=>{let t=Sie(e),n=t.parent;if(y(n,`CallExpression`)&&ca(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`)?r=n.id.name:y(n,`AssignmentExpression`)&&n.right===t&&y(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:Cie(r,ga(n))},Tie=e=>{let n=ga(e);if(!t(n))return!1;let r=null;return y(n,`FunctionDeclaration`)&&y(n.id,`Identifier`)?r=n.id.name:y(n.parent,`VariableDeclarator`)&&y(n.parent.id,`Identifier`)&&(r=n.parent.id.name),!r||!n.parent?!1:Cie(r,ga(n.parent))},Eie=x({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=(t,n)=>{let r=t.body;if(!r||yie(r,e)||(y(t,`WhileStatement`)||y(t,`DoWhileStatement`))&&_ie(t.test,r)||sie(r)||mie(r,vie(t))||Tie(t))return;let i=Pre(r,!0,n=>iie(n,t,e));i&&e.report({node:i,message:`This makes the ${n} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ForStatement(e){t(e,`for-loop`)},ForInStatement(e){t(e,`for…in loop`)},ForOfStatement(e){e.await||t(e,`for…of loop`)},WhileStatement(e){t(e,`while-loop`)},DoWhileStatement(e){t(e,`do-while loop`)},CallExpression(t){if(!y(t.callee,`MemberExpression`)||!y(t.callee.property,`Identifier`))return;let n=t.callee.property.name;if(!bie.has(n))return;let r=t.arguments?.[0];if(!r||!aa(r)||!r.async)return;let i=r.body;if(!i||(n===`map`||n===`flatMap`)&&wie(t))return;let a=Pre(i);if(a){let t=n===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${n} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:a,message:t})}}}}}),_a=(e,t)=>{if(e){if(y(e,`AssignmentPattern`)){Xi(e.right,t),_a(e.left,t);return}if(y(e,`RestElement`)){_a(e.argument,t);return}if(y(e,`ArrayPattern`)){for(let n of e.elements??[])_a(n,t);return}if(y(e,`ObjectPattern`))for(let n of e.properties??[])y(n,`RestElement`)?_a(n.argument,t):y(n,`Property`)&&(n.computed&&Xi(n.key,t),_a(n.value,t))}},Die=e=>y(e,`ExpressionStatement`)?y(e.expression,`AwaitExpression`):!1,Oie=e=>y(e,`ReturnStatement`)||y(e,`ThrowStatement`)||y(e,`ContinueStatement`)||y(e,`BreakStatement`),kie=e=>{if(!y(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(Oie(t))return!0;if(!y(t,`BlockStatement`))return!1;for(let e of t.body??[])if(Oie(e))return!0;return!1},va=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Aie=(e,t)=>{y(e,`VariableDeclarator`)&&(Xi(e.init,t),_a(e.id,t))},jie=(e,t)=>{if(!y(e,`VariableDeclaration`))return{didIntroduceAwait:!1,didGrowBindings:!1};let n=!1,r=t.size,i=!0;for(;i;){i=!1;for(let r of e.declarations??[]){if(!y(r,`VariableDeclarator`))continue;if(Zi(r.init)||Zi(r.id)){n=!0;let e=t.size;qi(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Aie(r,e),!va(e,t))continue;let a=t.size;qi(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},Mie=new Set([`cancelled`,`canceled`,`isCancelled`,`isCanceled`,`aborted`,`isAborted`,`disposed`,`isDisposed`,`destroyed`,`isDestroyed`,`stopped`,`isStopped`,`mounted`,`isMounted`,`unmounted`,`isUnmounted`,`active`,`isActive`,`stale`,`isStale`,`ignore`,`signal`,`abortSignal`,`abortController`]),Nie=e=>{let t=!1;return A(e,e=>{if(t)return!1;if(!y(e,`MemberExpression`)||e.computed||!y(e.property,`Identifier`)||e.property.name!==`current`||!y(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Pie=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Fie=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Pie)if(t.includes(e))return!0;return!1},Iie=e=>{let t=new Set;return A(e,e=>{(y(e,`Identifier`)||y(e,`PrivateIdentifier`))&&t.add(e.name)}),t},Lie=e=>{if(!e)return!1;let t=new Set;Xi(e,t);for(let e of t)if(Mie.has(e))return!0;for(let t of Iie(e))if(Fie(t))return!0;return Nie(e)},Rie=e=>{if(!e)return!1;let t=!1;return A(e,e=>{if(t)return!1;if(y(e,`CallExpression`))return y(e.callee,`ArrowFunctionExpression`)||y(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(y(e,`ThisExpression`)||y(e,`PrivateIdentifier`))return t=!0,!1}),t},zie=e=>{if(!e)return!1;let t=O(e);if(!y(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=O(e);return y(t,`Literal`)||y(t,`TemplateLiteral`)||y(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Bie=(e,t,n)=>{let r=O(e);if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&pt(i.scope,n))},Vie=(e,t,n)=>{let r=O(e);if(y(r,`MemberExpression`))return!0;if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!pt(i.scope,n))},Hie=(e,t,n)=>{let r=O(e);return!zie(r)||!y(r,`BinaryExpression`)?!1:Bie(r.left,t,n)&&Vie(r.right,t,n)||Bie(r.right,t,n)&&Vie(r.left,t,n)},Uie=(e,t,n)=>{if(!n||!e)return!1;let r=O(e);if(!y(r,`LogicalExpression`)||r.operator!==`&&`&&r.operator!==`||`)return!1;let i=[r.left,r.right];for(;i.length>0;){let e=i.pop();if(!e)continue;let r=O(e);if(y(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Hie(r,t,n))return!1}return!0},Wie=e=>{if(!e)return!1;let n=!1;return A(e,e=>{if(n||t(e)||y(e,`ThrowStatement`))return!1;if(y(e,`CallExpression`)||y(e,`NewExpression`)||y(e,`AssignmentExpression`)||y(e,`UpdateExpression`))return n=!0,!1}),n},Gie=(e,n)=>{if(!e)return!1;let r=new Set;if(Xi(e,r),r.size===0)return!1;let i=b(n);if(!i||!t(i)||!i.body)return!1;let a=!1;return A(i.body,e=>{if(a)return!1;let t=null;if(y(e,`AssignmentExpression`)?t=e.left:y(e,`UpdateExpression`)&&(t=e.argument),!t)return;let n=new Set;qi(t,n),y(t,`Identifier`)&&n.add(t.name);for(let e of n)if(r.has(e))return a=!0,!1}),a},Kie=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(y(n,`VariableDeclaration`)?jie(n,r).didIntroduceAwait&&(i=!0):Die(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(Die(t)){a=!0,o++;continue}if(!y(t,`VariableDeclaration`))break;let n=jie(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},qie=x({id:`async-defer-await`,title:`await before an early-return guard`,severity:`warn`,tags:[`test-noise`],recommendation:"Move the `await` below the early-return guard so the skip path stays fast and avoids unnecessary async work.",create:e=>{let n=t=>{for(let n=0;n<t.length-1;n++){let r=Kie(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!kie(i)||!y(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(Xi(i.test,a),va(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=b(i),s=o?e.scopes.ownScopeFor(o):null;if(Lie(i.test)||Rie(i.test)||zie(i.test)||Uie(i.test,e.scopes,s)||Gie(i.test,i)||Wie(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(Xi(i.consequent,c),va(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},r=e=>{e&&A(e,e=>{if(t(e))return!1;y(e,`BlockStatement`)?n(e.body??[]):y(e,`SwitchCase`)&&n(e.consequent??[])})},i=e=>{t(e)&&e.async&&y(e.body,`BlockStatement`)&&r(e.body)};return{FunctionDeclaration:i,FunctionExpression:i,ArrowFunctionExpression:i}}}),Jie=(e,t,n)=>{let r=new Set;for(let e of t)A(e,e=>{if(!y(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return A(e,e=>{if(i||!y(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},Yie=e=>{let t=e;for(;y(t,`ChainExpression`);)t=t.expression;if(!y(t,`CallExpression`)&&!y(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(y(r,`ChainExpression`)){r=r.expression;continue}if(y(r,`MemberExpression`)){y(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(y(r,`CallExpression`)){r=r.callee;continue}y(r,`Identifier`)&&n.push(r.name);break}return n},ya=e=>{if(y(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&y(t.init,`AwaitExpression`))return t.init.argument??null}return y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Xie=e=>Tne.has(e)?!0:Ene.some(t=>e.startsWith(t)),Zie=e=>e?Yie(e).some(Xie):!1,Qie=e=>e?Yie(e).some(e=>Vr.has(e)):!1,$ie=e=>y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`),eae=e=>{let t=O(e);return y(t,`CallExpression`)?t.arguments.every(e=>{if(y(e,`SpreadElement`))return!1;let t=O(e);return y(t,`Identifier`)||y(t,`Literal`)}):!1},tae=e=>{let t=ya(e);if(!t)return!1;let n=O(t);return!y(n,`CallExpression`)&&!y(n,`NewExpression`)&&!y(n,`ImportExpression`)},nae=(e,t)=>{let n=null;for(let r of e){if(tae(r))return!0;let e=ya(r);if(e&&Xt(e,t.scopes))return!0;let i=e?ia(e,t.scopes):null;if($ie(r)){if(i===null||!e||!eae(e)||n!==null&&n!==i)return!0;n=i}if(Zie(e)||Qie(e)&&i===null)return!0}return!1},rae=e=>{let n=e.parent;for(;n;){if(t(n)){let e=n.parent;if(e&&y(e,`CallExpression`)){let t=e.callee;if(y(t,`MemberExpression`)&&y(t.property,`Identifier`)&&t.property.name===`transaction`||y(t,`Identifier`)&&t.name===`transaction`)return!0}}n=n.parent??null}return!1},iae=(e,t)=>{let n=[];for(let r of e){let e=ya(r);if(e){if(Jie(e,n,t.scopes))return;y(r,`VariableDeclaration`)&&r.declarations[0]?.id&&n.push(r.declarations[0].id)}}t.report({node:e[0],message:`These ${e.length} sequential await statements run one after another even though they look independent, so the page waits longer than it needs to. Run them together with Promise.all() instead`})},aae=x({id:`async-parallel`,title:`Independent awaits run sequentially`,tags:[`test-noise`],severity:`warn`,recommendation:"Use `const [a, b] = await Promise.all([fetchA(), fetchB()])` so independent calls run at the same time",create:e=>{let t=ve(e.filename??``),n=Sne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Hr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||rae(t))return;let n=[],r=()=>{n.length>=3&&(nae(n,e)||iae(n,e)),n.length=0};for(let e of t.body??[])y(e,`VariableDeclaration`)&&e.declarations?.length===1&&y(e.declarations[0].init,`AwaitExpression`)||y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),ba=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`||y(t,`UnaryExpression`)&&t.operator===`void`},oae=e=>{let t=e[0];return t&&y(t,`Identifier`)&&t.name===`this`?e.slice(1):e},sae="Storing an auth token in `localStorage`/`sessionStorage` exposes it to any XSS on the page: JavaScript can read web storage and exfiltrate the token. Keep tokens in an `HttpOnly`, `Secure`, `SameSite` cookie instead.",cae=new Set([`localStorage`,`sessionStorage`]),lae=new Set([`window`,`globalThis`,`self`]),uae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,dae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,fae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,pae=e=>!(!uae.test(e)||dae.test(e)&&!fae.test(e)),mae=e=>y(e,`Identifier`)?cae.has(e.name):y(e,`MemberExpression`)&&!e.computed&&y(e.object,`Identifier`)&&lae.has(e.object.name)&&y(e.property,`Identifier`)?cae.has(e.property.name):!1,xa=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=T(e,e.name);if(!n?.initializer)return null;if(y(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!y(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!y(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=O(n.initializer);return y(a,`Identifier`)?xa(a,t)??a:a},Sa=(e,t)=>{let n=O(e);if(Ca(n,new Set(t)))return!0;if(y(n,`ConditionalExpression`)){let e=O(n.consequent),r=O(n.alternate);return(ba(e)||Sa(e,t))&&(ba(r)||Sa(r,t))&&(!ba(e)||!ba(r))}if(y(n,`LogicalExpression`)){if(n.operator===`&&`)return Sa(n.right,t);let e=O(n.left),r=O(n.right),i=Sa(e,t),a=Sa(r,t);return(i||ba(e))&&(a||ba(r))&&(i||a)}return!1},Ca=(e,n=new Set)=>{let r=O(e);if(n.has(r))return!1;if(n.add(r),mae(r))return!0;if(y(r,`Identifier`)){let e=xa(r);return e?Ca(e,new Set(n)):!1}if(!y(r,`CallExpression`))return!1;let i=O(r.callee);if(!y(i,`Identifier`))return!1;let a=xa(i);if(!t(a))return!1;if(y(a,`ArrowFunctionExpression`)&&!y(a.body,`BlockStatement`))return Sa(a.body,n);let o=!1;for(let e of tn(a)){if(!e.argument)continue;let t=O(e.argument);if(!ba(t)){if(!Sa(t,n))return!1;o=!0}}return o},hae=e=>{if(y(e,`Literal`)&&typeof e.value==`string`)return e.value;if(y(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(y(e,`Identifier`)&&e.name!==`undefined`){let t=T(e,e.name);return!t?.initializer||y(t.initializer,`Identifier`)?null:hae(t.initializer)}return null},gae=e=>!e.computed&&y(e.property,`Identifier`)?e.property.name:e.computed&&y(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,wa=(e,t,n,r,i=new Set)=>{let a=O(e);if(i.has(a))return null;if(i.add(a),y(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=xa(a);return s?wa(s,t,n,r,i):null}if(r&&y(a,`CallExpression`)&&y(a.callee,`MemberExpression`)&&!a.callee.computed&&y(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&y(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?wa(e,t,n,!0,i):null}return null},Ta=new WeakMap,_ae=(e,n)=>{let r=Ta.get(e);if(r)return r;if(!y(e,`FunctionDeclaration`)&&!y(e,`FunctionExpression`)&&!y(e,`ArrowFunctionExpression`))return Ta.set(e,[]),[];let i=oae(e.params).map(e=>{let t=O(e),r=y(t,`Identifier`)?t:y(t,`AssignmentPattern`)&&y(t.left,`Identifier`)?t.left:null;return r?n.symbolFor(r)?.id??null:null}),a=[];return A(e.body,r=>{if(r!==e.body&&t(r))return!1;if(!y(r,`CallExpression`))return;let o=O(r.callee);if(!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`)||o.property.name!==`setItem`||!Ca(o.object))return;let s=r.arguments[0],c=r.arguments[1];if(!s||!c)return;let l=wa(s,i,n,!1),u=wa(c,i,n,!0);l===null||u===null||a.push({keyParameterIndex:l,valueParameterIndex:u})}),Ta.set(e,a),a},vae=x({id:`auth-token-in-web-storage`,title:`Auth token in web storage`,severity:`warn`,recommendation:"Don't persist auth tokens (JWTs, access/refresh tokens, secrets) in `localStorage`/`sessionStorage`; they're readable by any XSS. Use an `HttpOnly` cookie set by the server.",create:Se(e=>({CallExpression(t){let n=O(t.callee),r=[];if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`setItem`&&Ca(O(n.object))){let e=t.arguments[0];e&&r.push(e)}else if(y(n,`Identifier`)){let i=xa(n),a=i?_ae(i,e.scopes):[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&r.push(n)}}r.some(e=>{let t=hae(e);return t!==null&&pae(t)})&&e.report({node:t,message:sae})},AssignmentExpression(t){let n=t.left;if(!y(n,`MemberExpression`)||!Ca(n.object))return;let r=gae(n);!r||!pae(r)||e.report({node:n,message:sae})}}))}),yae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,bae=new Set(`off.on.name.honorific-prefix.given-name.additional-name.family-name.honorific-suffix.nickname.email.username.new-password.current-password.one-time-code.organization-title.organization.street-address.address-line1.address-line2.address-line3.address-level4.address-level3.address-level2.address-level1.country.country-name.postal-code.cc-name.cc-given-name.cc-additional-name.cc-family-name.cc-number.cc-exp.cc-exp-month.cc-exp-year.cc-csc.cc-type.transaction-currency.transaction-amount.language.bday.bday-day.bday-month.bday-year.sex.tel.tel-country-code.tel-national.tel-area-code.tel-local.tel-extension.impp.url.photo`.split(`.`)),xae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Sae=new Set([`shipping`,`billing`]),Cae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),wae=e=>{let t=e.toLowerCase().split(/\s+/).filter(e=>e.length>0);if(t.length===0)return!0;let n=0;t[n]?.startsWith(`section-`)&&(n+=1),n<t.length&&Sae.has(t[n])&&(n+=1);let r=n<t.length&&Cae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?xae.has(i):bae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Tae=new Set([`input`,`textarea`,`select`,`form`]),Eae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},Ea=x({id:`autocomplete-valid`,title:`Invalid autocomplete value`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Use a valid autofill token in `autoComplete` so browsers can fill the right field reliably.",category:`Accessibility`,create:Se(e=>{let t=Eae(e.settings);return{JSXOpeningElement:n=>{let r=hr(n,e.settings);if(!Tae.has(r)&&!t.inputComponents.has(r))return;let i=P(n.attributes,`autoComplete`);if(!i)return;let a=dr(i);a&&(wae(a)||e.report({node:i,message:yae(a)}))}}})}),Dae=e=>{let t=e;for(;t;){if(y(t,`MemberExpression`)){if(y(t.property,`Identifier`)&&t.property.name===`document`||y(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(y(t,`Identifier`)&&t.name===`document`)}return!1},Da=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`Identifier`)?t.name===`createElement`:y(t,`MemberExpression`)&&(t.computed?y(t.property,`Literal`)&&t.property.value===`createElement`:y(t.property,`Identifier`)&&t.property.name===`createElement`)?!Dae(t.object):!1},Oa="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Oae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.buttonHasType??{}:{};return{button:n.button??!0,submit:n.submit??!0,reset:n.reset??!0}},ka=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Aa=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return ka(r.value,t);if(y(r,`TemplateLiteral`)){let e=In(r);if(e!==null)return ka(e,t)}if(y(r,`ConditionalExpression`))return Aa(r.consequent,t,n)&&Aa(r.alternate,t,n);if(y(r,`Identifier`)){if(n.has(r.name))return!1;let e=T(r,r.name);return!e?.initializer||!ja(e)?!1:Aa(e.initializer,t,new Set(n).add(r.name))}return!1},ja=e=>{let t=e.bindingIdentifier.parent;if(!t||!y(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&y(n,`VariableDeclaration`)&&n.kind===`const`)},kae=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Aae=e=>{let t=e;for(;t.parent&&kae.has(t.parent.type);)t=t.parent;return t},Ma=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Aae(e),r=n.parent;if(!r)return!1;if(r.type===`FunctionDeclaration`||r.type===`FunctionExpression`||r.type===`ArrowFunctionExpression`)return r.params.some(e=>e===n);if(y(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!y(e,`Identifier`))return!1;let n=T(e,e.name);return n?Ma(n.bindingIdentifier,t):!1}return!1},jae=e=>{let t=T(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!y(n,`Property`)||n.computed||n.value!==t||!Ma(n)?!1:y(n.key,`Identifier`)?n.key.name===`type`:y(n.key,`Literal`)?n.key.value===`type`:!1},Mae=/Type$/,Nae=(e,t)=>{if(!Mae.test(e.name))return!1;let n=T(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!y(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!y(i,`Property`)||i.computed||i.value!==r||!Ma(i)?!1:Aa(r.right,t)},Na=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`)){if(r.name===`type`||jae(r)||Nae(r,t))return!0;if(n.has(r.name))return!1;let e=T(r,r.name);if(!e?.initializer||!ja(e))return!1;let i=O(e.initializer);return!y(i,`ConditionalExpression`)&&!y(i,`LogicalExpression`)?!1:Na(i,t,new Set(n).add(r.name))}if(y(r,`MemberExpression`)&&!r.computed&&y(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(y(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Na(r.left,t,n);if(y(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Na(e,t,n))&&e.every(e=>Na(e,t,n)||Aa(e,t))}return!1},Pae=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Fae={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},Pa=e=>{for(let t of Pae){let n=he(e,e.name,t);if(n!==null)return n}return null},Fa=e=>e.computed?null:y(e.key,`Identifier`)?e.key.name:y(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,Iae=e=>{if(y(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(y(e,`ReturnStatement`))return e.argument?(t.push(e.argument),!0):!1;let r=e;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e],i=Array.isArray(t)?t:[t];for(let e of i){if(!e||typeof e!=`object`||!(`type`in e))continue;let t=e;if(!(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Lae=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!y(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Fa(n);if(!r)return!1;let i=n.parent;if(!i||!y(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!y(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!y(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=O(a.init);if(!y(s,`CallExpression`))return!1;let c=O(s.callee);if(!y(c,`Identifier`))return!1;let l=Pa(c);if(l!==null)return Fae[l]===r;let u=T(c,c.name)?.initializer;if(!u||!y(u,`FunctionDeclaration`)&&!y(u,`FunctionExpression`)&&!y(u,`ArrowFunctionExpression`))return!1;let d=Iae(u);return!d||d.length===0?!1:d.every(e=>{let n=O(e);if(!y(n,`ObjectExpression`))return!1;for(let e of n.properties){if(y(e,`SpreadElement`)||!y(e,`Property`))return!1;if(Fa(e)===r)return Ia(e.value,t)}return!0})},Ia=(e,t=new Set)=>{let n=O(e);if(y(n,`ObjectExpression`))return n.properties.every(e=>{if(y(e,`SpreadElement`))return Ia(e.argument,t);if(!y(e,`Property`))return!1;let n=Fa(e);return n!==null&&n!==`type`});if(y(n,`CallExpression`)){let e=O(n.callee);return!y(e,`Identifier`)||Pa(e)!==`mergeProps`?!1:n.arguments.every(e=>!y(e,`SpreadElement`)&&Ia(e,t))}if(y(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=T(n,n.name);return r?r.initializer&&ja(r)?Ia(r.initializer,e):Lae(r,e):!1}return!1},La=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Rae=e=>{let t=L(e.attributes,`form`,!1);return!!(t&&I(t)?.trim())},zae=e=>!!_r(e?_n(e,`form`):void 0)?.trim(),Bae=e=>{if(!y(e,`CallExpression`)||!Da(e))return!1;let t=e.arguments[0];return!!(t&&y(t,`Literal`)&&t.value===`form`)},Ra=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)&&j(t.openingElement)===`form`||Bae(t))return!0;t=t.parent}return!1},za=x({id:`button-has-type`,title:`Button missing explicit type`,severity:`warn`,recommendation:'Set an explicit button `type` so plain buttons do not submit forms by accident: `type="button"`, `"submit"`, or `"reset"`.',create:e=>{let t=Oae(e.settings),n=ct(e.filename);return{JSXOpeningElement(r){if(n||j(r)!==`button`)return;let i=P(r.attributes,`type`);if(!i){if(!Rae(r)&&!Ra(r)||F(r.attributes)&&!r.attributes.every(e=>!y(e,`JSXSpreadAttribute`)||Ia(e.argument)))return;e.report({node:r.name,message:Oa});return}let a=i.value;if(!a){La(e,i);return}if(y(a,`Literal`)){Aa(a,t)||La(e,i);return}if(y(a,`JSXExpressionContainer`)){let n=a.expression;if(!n||n.type===`JSXEmptyExpression`||Na(n,t))return;Aa(n,t)||La(e,i)}},CallExpression(r){if(n||!Da(r))return;let i=r.arguments[0];if(!i||!y(i,`Literal`)||i.value!==`button`)return;let a=r.arguments[1],o=zae(a)||Ra(r);if(!a||ba(a)){if(!o)return;e.report({node:r,message:Oa});return}if(!y(a,`ObjectExpression`))return;let s=null,c=!1;for(let e of a.properties){if(y(e,`SpreadElement`)){c=!0;continue}if(!y(e,`Property`))continue;let t=e.key;if(y(t,`Identifier`)&&t.name===`type`||y(t,`Literal`)&&t.value===`type`){s=e.value;break}}if(!s){if(!o||c&&!a.properties.every(e=>!y(e,`SpreadElement`)||Ia(e.argument)))return;e.report({node:a,message:Oa});return}Na(s,t)||Aa(s,t)||La(e,s)}}}}),Vae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Ba=e=>y(e,`Identifier`)||y(e,`MemberExpression`)&&!e.computed,Va=e=>!e.value||!y(e.value,`JSXExpressionContainer`)?!1:Ba(e.value.expression),Hae=e=>{if(!e.value)return!0;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return y(t,`Literal`)&&t.value===!0}return!1},Uae=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(y(c,`JSXSpreadAttribute`)){o=!0;continue}if(!y(c,`JSXAttribute`))continue;let e=Cn(c.name);e===`checked`?(t=c,n=Va(c)):e===`defaultChecked`&&!r?(r=c,i=Va(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Hae(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Wae=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(y(c,`SpreadElement`)){o=!0;continue}if(!y(c,`Property`))continue;let e=c.key,l=null;if(y(e,`Identifier`)?l=e.name:y(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Ba(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Ba(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;y(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ha=x({id:`checked-requires-onchange-or-readonly`,title:`Checked input without onChange`,severity:`warn`,recommendation:"Add `onChange`, `readOnly`, or `defaultChecked` so React knows whether the checkbox is editable, display-only, or uncontrolled.",category:`Correctness`,create:e=>{let t=Vae(e.settings),n=n=>{n.checkedNode&&n.defaultCheckedNode&&!n.bothCheckedAndDefaultForwarded&&!t.ignoreExclusiveCheckedAttribute&&e.report({node:n.checkedNode,message:"This input mixes `checked` with `defaultChecked`, so React can't tell whether it is controlled or uncontrolled."}),n.checkedNode&&!n.hasOnChangeOrReadOnly&&!n.hasSpread&&!n.hasTruthyDisabled&&!t.ignoreMissingProperties&&e.report({node:n.checkedNode,message:"Your users can't toggle this input because `checked` has no `onChange`."})};return{JSXOpeningElement(e){j(e)===`input`&&n(Uae(e.attributes))},CallExpression(e){if(!Da(e))return;let t=e.arguments[0];if(!t||!y(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!y(r,`ObjectExpression`)||n(Wae(r))}}}}),Ua=(e,n,r)=>{let i=new Map,a=e,o=e.parent;for(;o&&!(t(o)||((y(o,`ConditionalExpression`)||y(o,`IfStatement`))&&(o.consequent===a&&i.set(o,`consequent`),o.alternate===a&&i.set(o,`alternate`)),o===r));)a=o,o=o.parent??null;let s=n,c=n.parent;for(;c&&!t(c);){if(y(c,`ConditionalExpression`)||y(c,`IfStatement`)){let e=i.get(c);if(e===`consequent`&&c.alternate===s||e===`alternate`&&c.consequent===s)return!0}if(c===r)break;s=c,c=c.parent??null}return!1},Wa=(t,n,r,i=t)=>{let a=new Set,o=n.filter(e=>{if(r.cfg.enclosingFunction(e)!==t)return!1;let n=e;for(;n&&n!==i;)n=n.parent??null;return n===i}),s=new Set(o),c=new Map;for(;o.length>0;){let t=o.pop();if(!t)break;if(t===i){a.add(t);continue}let n=t,r=n.parent??null,l=null,u=null,d=!1;for(;r&&r!==i;){if(y(r,`ConditionalExpression`)){let t=r.consequent===n,i=r.alternate===n;if(t||i){let i=Dn(e(r.test));if(i!==null){if(i!==t){d=!0;break}n=r,r=n.parent??null;continue}l=r,u=t?`consequent`:`alternate`;break}}if(y(r,`LogicalExpression`)&&r.right===n){let t=Dn(e(r.left));if(!(r.operator===`&&`&&t===!0||r.operator===`||`&&t===!1)){d=!0;break}}if(y(r,`AssignmentPattern`)&&r.right===n){d=!0;break}n=r,r=n.parent??null}if(d)continue;if(!l||!u){a.add(t);continue}let f=c.get(l)??new Set;f.add(u),c.set(l,f),f.has(`alternate`)&&f.has(`consequent`)&&!s.has(l)&&(s.add(l),o.push(l))}return a},Ga=(e,t,n,r=e)=>{let i=n.cfg.enclosingFunction(e);if(!i)return!1;let a=n.cfg.cfgFor(i);if(!a)return!1;let o=a.blockOf(e);if(!o)return!1;let s=D(r),c=new Set([...Wa(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=D(e);return t===o&&s!==null&&n!==null&&n<s?[]:[t]}));if(c.has(o))return!0;let l=new Set([o]),u=[o];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors)if(!c.has(t.to)){if(t.to===a.exit)return!1;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return c.size>0},Ka=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Wa(e,t,n)].flatMap(e=>{let t=i.blockOf(e);return t?[t]:[]}));if(a.size===0)return!1;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;if(!a.has(e)){for(let t of e.successors)if(!(r.ignoreThrowEdges&&t.kind===`throw`)){if(t.to===i.exit)return!1;o.has(t.to)||(o.add(t.to),s.push(t.to))}}}return!0},qa=`Component`,Ja=`PureComponent`,Gae=e=>!y(e,`MemberExpression`)||!y(e.object,`Identifier`)||e.object.name!==`React`||!y(e.property,`Identifier`)?!1:e.property.name===qa||e.property.name===Ja,Ya=e=>{if(!y(e,`ClassDeclaration`)&&!y(e,`ClassExpression`))return!1;let t=e.superClass;return t?Gae(t)?!0:y(t,`Identifier`)?t.name===qa||t.name===Ja:!1:!1},Kae=e=>{let t=e,n=e.parent;for(;n;){if(y(n,`IfStatement`)&&y(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||y(n,`ConditionalExpression`)&&y(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(y(n,`WhileStatement`)||y(n,`ForStatement`))&&n.body===t&&n.test&&y(n.test,`Literal`)&&!n.test.value||y(n,`LogicalExpression`)&&n.right===t&&y(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},B=(e,t)=>{if(Kae(e))return!1;let n=t.cfg.enclosingFunction(e);if(!n)return!0;let r=t.cfg.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},qae=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Jae=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Xa=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=O(n.object);return y(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&C(n)===`now`},Za=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Literal`))return typeof r.value==`number`;if(y(r,`CallExpression`))return Xa(r,t);if(y(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||e.declarationNode.range[0]>=r.range[0]||n.has(e.id)||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Za(e.initializer,t,n))}return y(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&Za(r.argument,t,n):!y(r,`BinaryExpression`)||!Jae.has(r.operator)?!1:Za(r.left,t,new Set(n))&&Za(r.right,t,new Set(n))},Qa=(e,t)=>{if(Xa(e,t))return!0;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=O(n.object);if(!y(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=C(n);if(r.name===`console`)return qae.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&Za(a,t))},V=({node:e,scopes:t})=>{let n=O(e);if(y(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(y(n,`ThisExpression`))return`this`;if(!y(n,`MemberExpression`))return null;let r=V({node:n.object,scopes:t}),i=C(n);return r&&i?`${r}.${i}`:null},Yae=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Xae=e=>{if(y(e,`FunctionDeclaration`))return e.id&&y(e.id,`Identifier`)?e.id:null;let t=v(e),n=t.parent;if(!n||!y(n,`VariableDeclarator`)||n.init!==t||!y(n.id,`Identifier`))return null;let r=n.parent;return!r||!y(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},$a=(e,n,r,i)=>{let a=new Set,o=(e,s)=>{if(a.has(e))return;a.add(e);let c=new Map(s),l=new Map;A(e,n=>{if(n!==e&&t(n)){let e=Xae(n);return e&&n.body&&(!i||i(n))&&c.set(e,n.body),!1}let r=y(n,`VariableDeclarator`)&&n.init?O(n.init):null;if(y(n,`VariableDeclarator`)&&y(n.id,`Identifier`)&&y(r,`Identifier`)&&n.parent&&y(n.parent,`VariableDeclaration`)&&n.parent.kind===`const`){let e=T(r,r.name)?.bindingIdentifier;e&&l.set(n.id,e)}});for(let[e,t]of l){let n=t,r=new Set([e]);for(;l.has(n)&&!r.has(n);)r.add(n),n=l.get(n)??n;let i=c.get(n);i&&c.set(e,i)}let u=(e,a=!1)=>{if(!a&&t(e)||(n(e),yte(e,e=>u(e)),!y(e,`CallExpression`)))return;let s=O(e.callee);if(t(s)){s.body&&(!i||i(s))&&o(s.body,c);return}if(y(s,`Identifier`)){let e=T(s,s.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&o(t,c);return}if(!(!y(s,`MemberExpression`)||!Yae.has(C(s)??``)))for(let n of e.arguments??[]){if(r&&!r(e,n))continue;let a=O(n);if(t(a))a.body&&(!i||i(a))&&o(a.body,c);else if(y(a,`Identifier`)){let e=T(a,a.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&o(t,c)}}};u(e,!0),a.delete(e)};o(e,new Map)},eo=(e,n)=>{if(!t(e))return;let r=e.body;r&&A(r,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:n(e))},to=(e,t,n,r=e,i=new Set)=>{let a=O(e);if(y(a,`ObjectExpression`))return a;if(!y(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||Ht(o,r,n)||t.some(e=>Wn(a,e,r,n))?null:(i.add(o.id),to(o.initializer,t,n,r,i))},no=new Set([`window`,`globalThis`,`global`,`self`]),Zae=new Set([`body`,`documentElement`,`visualViewport`]),Qae=new Set([`initPlaces`,`places`]),ro=new Set([`forceUpdate`,`setState`]),io=`mobx-react`,ao=`disposeOnUnmount`,$ae=[`handler`],oo=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),eoe=new Map([[`removeEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`removeListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`off`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`unsubscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),so=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),toe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),co=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),lo=(e,t)=>{let n=b(e);if(!n)return!1;let r=[];if(eo(n,t=>{y(t,`AwaitExpression`)&&t.range[0]<e.range[0]&&r.push(t)}),r.length===0)return!1;let i=t.cfg?.cfgFor(n),a=i?.blockOf(e);if(!i||!a)return!0;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;for(let t of e.successors)o.has(t.to)||(o.add(t.to),s.push(t.to))}let c=!1;for(let e of r){if(c)break;let t=i.blockOf(e);if(!t||!o.has(t))continue;if(t===a){c=!0;break}let n=new Set([t]),r=[t];for(;r.length>0;){let e=r.pop();if(!e)break;for(let t of e.successors){if(t.to===a){c=!0;break}n.has(t.to)||(n.add(t.to),r.push(t.to))}}}return c},uo=e=>{if(!y(e,`CallExpression`))return null;let t=O(e.callee);return y(t,`Identifier`)?t.name:null},fo=(e,t)=>{let n=uo(e),r=y(e,`CallExpression`)?O(e.callee):null;return!!(n&&y(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&he(e,n,`mobx`)===`runInAction`)},po=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(y(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?O(i.init):null;return y(e,`Property`)&&y(n,`ObjectPattern`)&&y(a,`Identifier`)&&no.has(a.name)&&t.isGlobalReference(a)?S(e,{allowComputedString:!0}):null}let a=r.initializer?O(r.initializer):null;if(y(a,`Identifier`))return po(a,t,n);if(!y(a,`MemberExpression`))return null;let o=O(a.object);return y(o,`Identifier`)&&no.has(o.name)&&t.isGlobalReference(o)?C(a):null},mo=(e,t)=>{if(!y(e,`CallExpression`))return null;let n=O(e.callee);if(uo(e)&&y(n,`Identifier`))return po(n,t);if(!y(n,`MemberExpression`))return null;let r=O(n.object);return!y(r,`Identifier`)||!no.has(r.name)||T(r,r.name)?null:C(n)},ho=e=>y(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:S(e,{allowComputedString:!0}),go=new WeakMap,_o=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},vo=e=>{let n=go.get(e);if(n)return n;let r=new Set,i=new Map,a=new Map;if(y(e,`ClassBody`)){for(let n of e.body){let e=ho(n);e&&(y(n,`MethodDefinition`)&&(n.kind===`get`||n.kind===`set`)&&r.add(e),(y(n,`MethodDefinition`)||y(n,`PropertyDefinition`))&&n.value&&t(n.value)&&i.set(e,n.value))}A(e,t=>{let n=y(t,`AssignmentExpression`)?O(t.left):y(t,`UpdateExpression`)?O(t.argument):null;if(!y(n,`MemberExpression`)||!y(O(n.object),`ThisExpression`))return;let r=C(n);if(!r)return;let i=_o(t,e),o=a.get(r)??[];o.push({node:t,enclosingMemberName:i?ho(i):null,isAssignment:y(t,`AssignmentExpression`)}),a.set(r,o)})}let o={accessorNames:r,memberFunctionsByName:i,instanceWritesByName:a};return go.set(e,o),o},yo=(e,t,n)=>{if(!e||!y(e,`ClassBody`))return null;let r=vo(e),i=r.memberFunctionsByName.get(t);return i?(r.instanceWritesByName.get(t)??[]).some(e=>e.isAssignment&&(!n||e.node.range[0]<=n.range[0]))?null:i:null},bo=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),$a(e,e=>{let i=n(e);if(i===!1||!y(e,`CallExpression`))return i;let a=O(e.callee);if(!y(a,`MemberExpression`)||!y(O(a.object),`ThisExpression`))return;let o=C(a),s=o?yo(t,o,e):null;s&&bo(s,t,n,r)}))},noe=(e,t,n)=>{let r=new Set,i=new Map,a=(e,o)=>{let s=i.get(e);s===!0||s===o||(i.set(e,o),$a(e,e=>{if(n.cfg&&!B(e,n))return!1;if(o&&r.add(e),!y(e,`CallExpression`))return;let i=O(e.callee);if(!y(i,`MemberExpression`)||!y(O(i.object),`ThisExpression`))return;let s=C(i),c=s?yo(t,s,e):null;c&&a(c,o||lo(e,n))}))};return a(e,!1),r},roe=(e,t,n,r)=>{let i=b(e),a=b(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return A(n??t,t=>{if(!y(t,`CallExpression`))return;let i=O(t.callee);if((y(i,`Identifier`)?M(i,r.scopes):y(i,`MemberExpression`)&&y(O(i.object),`ThisExpression`)?yo(n,C(i)??``,t):null)!==e)return;let a=b(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(lo(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},xo=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return $a(e,e=>{if(i)return!1;if(fo(e,n))return i=!0,!1;if(!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||!y(O(a.object),`ThisExpression`))return;let o=C(a);if(o&&ro.has(o))return i=!0,!1;let s=o?yo(t,o,e):null;if(s&&xo(s,t,n,r))return i=!0,!1}),i},So=(e,n,r=new Set)=>{let i=O(e);if(r.has(i))return null;if(r.add(i),t(i))return i;if(y(i,`Identifier`)){let e=T(i,i.name)?.initializer;return e?So(e,n,r):null}let a=y(i,`CallExpression`)?O(i.callee):null,o=(y(i,`CallExpression`)&&y(a,`MemberExpression`)&&C(a)===`bind`&&i.arguments?.[0]&&y(O(i.arguments[0]),`ThisExpression`)?O(a.object):null)??i,s=y(o,`MemberExpression`)&&y(O(o.object),`ThisExpression`)?C(o):null;return s?yo(n,s,i):null},ioe=(e,n,r)=>{let i=So(e,n);if(!t(i))return!1;let a=i.body;if(!a)return!1;let o=!1;return $a(a,e=>{if(o)return;if(fo(e,r)){o=!0;return}if(!y(e,`CallExpression`))return;let t=O(e.callee);if(y(t,`MemberExpression`)&&y(O(t.object),`ThisExpression`)){let i=C(t);if(i&&ro.has(i)){o=!0;return}let a=i?yo(n,i,e):null;if(a&&!xo(a,n,r))return;o=!0}}),o},aoe=(e,t,n)=>{let r=new Set,i=new Set;bo(e,t,e=>{if(y(e,`VariableDeclarator`)){let t=e.init?O(e.init):null,i=y(t,`CallExpression`)?O(t.callee):null;if(t&&(y(t,`NewExpression`)||y(t,`ObjectExpression`)||y(t,`ArrayExpression`)||y(t,`CallExpression`)&&y(i,`Identifier`)&&Qae.has(i.name))){let t=new Set;qi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}else if(y(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;qi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}}}if(y(e,`AssignmentExpression`)&&y(e.left,`MemberExpression`)){let t=O(e.right),r=y(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(y(e,`CallExpression`))for(let t of e.arguments??[]){let e=O(t),a=y(e,`Identifier`)?n.symbolFor(e):null;a&&r.has(a.id)&&i.add(a.id)}});for(let e of i)r.delete(e);return r},ooe=e=>{let t=O(e);for(;y(t,`MemberExpression`);){let e=O(t.object);if(y(e,`ThisExpression`))return C(t);t=e}return null},Co=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!y(n,`ClassBody`))return!0;let r=vo(n);if(r.accessorNames.has(e))return!1;let i=_o(t,n),a=i?ho(i):null;return!(r.instanceWritesByName.get(e)??[]).some(({node:e,enclosingMemberName:n})=>{let r=a===`componentDidMount`&&n===`componentDidMount`&&e.range[0]<=t.range[0],i=a===`constructor`&&n===`constructor`&&e.range[0]<=t.range[0],o=a===`componentWillUnmount`&&n===`componentDidMount`,s=a===`componentWillUnmount`&&n===`componentWillUnmount`&&e.range[0]>t.range[0];return!(n===`constructor`&&a!==`constructor`)&&!r&&!i&&!o&&!s&&!((a===`constructor`||a===`componentDidMount`)&&n===`componentWillUnmount`)})},soe=(e,n)=>{if(!y(n,`ClassBody`))return!1;let r=e.parent;for(;r&&r!==n;){if(t(r))return r.parent?.parent===n;if(y(r,`IfStatement`)||y(r,`ConditionalExpression`)||y(r,`LogicalExpression`)||y(r,`SwitchStatement`)||y(r,`TryStatement`)||y(r,`CatchClause`)||y(r,`ForStatement`)||y(r,`ForInStatement`)||y(r,`ForOfStatement`)||y(r,`WhileStatement`)||y(r,`DoWhileStatement`))return!1;r=r.parent}return!1},coe=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=v(e.identifier),r=t.parent;if(!y(r,`AssignmentExpression`)||r.right!==t||!y(r.left,`MemberExpression`)||!y(O(r.left.object),`ThisExpression`)||!soe(r,n))return[];let i=C(r.left);return i&&Co(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!y(a,`AssignmentExpression`))return null;let o=b(r.declarationNode);if(!o||b(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return eo(o,e=>{if(y(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},wo=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=coe(i,t,n);if(a)return wo(a,t,n,r);if(e.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=O(e.initializer);return y(a,`Identifier`)||y(a,`MemberExpression`)?wo(a,t,n,r):`${i.name}#${e.id}`}return e.kind===`const`||e.kind===`function`&&e.references.every(e=>e.flag===`read`)||e.kind===`import`?`${i.name}#${e.id}`:null}if(y(i,`ThisExpression`))return`this`;if(!y(i,`MemberExpression`))return null;let a=ooe(i);if(!a){let e=O(i.object),n=C(i);return!y(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Zae.has(n)?null:`${e.name}.${n}`}if(a&&(!y(O(i.object),`ThisExpression`)||!Co(a,i,n)))return null;let o=wo(i.object,t,n,r),s=C(i);return o&&s?`${o}.${s}`:null},To=(e,t,n)=>{let r=O(e);return y(r,`Literal`)?JSON.stringify(r.value):wo(r,t,n)},Eo=(e,t,n)=>{let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(y(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=wo(r,t,n);return i?`reference:${i}`:null},loe=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||Ht(r,n,t)||Wn(n,`capture`,n,t))return null;let i=V({node:n,scopes:t});return i?`options:${i}`:null},Do=(e,t)=>{let n=O(e);return y(n,`Literal`)?!n.value:y(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Oo=(e,t,n,r)=>{let i=O(e.callee);if(!y(i,`MemberExpression`))return null;let a=C(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:$ae}:t,s=o.captureOptionsIndex===void 0?o.identityArgumentKinds.length:o.captureOptionsIndex+1;if(e.arguments.length<o.identityArgumentKinds.length||e.arguments.length>s)return null;let c=To(i.object,n,r);if(!c)return null;let l=[];for(let[t,i]of o.identityArgumentKinds.entries()){let a=e.arguments?.[t];if(!a||y(a,`SpreadElement`))return null;let o=i===`event`?Eo(a,n,r):To(a,n,r);if(!o)return null;l.push(o)}let u=`${c}|${l.join(`|`)}`;if(o.captureOptionsIndex===void 0)return u;let d=e.arguments?.[o.captureOptionsIndex];if(d&&y(d,`SpreadElement`))return null;let f=`false`;if(d){let e=O(d);if(Do(e,n))f=`false`;else if(y(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=to(d,[`capture`],n),t=loe(d,n);if(!e||e.properties.some(e=>!y(e,`Property`)||S(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`capture`);if(r&&y(r,`Property`)&&Do(r.value,n))f=`false`;else if(r&&y(r,`Property`)&&y(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},uoe=(e,t,n,r)=>{let i=Oo(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},ko=(e,t,n)=>{let r=O(e.callee);if(!y(r,`MemberExpression`))return[];let i=wo(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||y(o,`SpreadElement`))return a;let s=Eo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},doe=(e,t,n)=>{let r=e.arguments[2];if(!r||y(r,`SpreadElement`))return null;let i=to(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`signal`);if(!a||!y(a,`Property`))return null;let o=O(a.value);if(!y(o,`MemberExpression`)||C(o)!==`signal`)return null;let s=wo(o.object,t,n);return s?`abort:${s}`:null},Ao=(e,t,n,r,i)=>{let a=toe.get(t)??[n.releaseMethodName],o=Oo(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?doe(e,r,i):null;return c&&s.push(c),so.has(t)?[...s,...ko(e,r,i)]:s},jo=(e,t,n)=>{let r=v(e),i=r.parent,a=y(i,`AssignmentExpression`)&&i.right===r?i.left:y(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?wo(a,t,n):null},foe=(e,t)=>{let n=O(e.callee);if(y(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&he(e,n.name,io)===ao;if(!y(n,`MemberExpression`))return!1;let r=O(n.object);return C(n)===ao&&y(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&Jn(e,r.name,io)},Mo=(e,t,n)=>{let r=O(e.callee);if(y(r,`MemberExpression`)){let i=C(r),a=i?eoe.get(i):void 0;if(a){let r=uoe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=ko(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!y(O(r.object),`ThisExpression`)){let e=wo(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=wo(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=wo(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=mo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!y(a,`SpreadElement`)){let e=wo(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},No=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return $a(e,e=>{if(a||e.range[0]>=r)return;if(y(e,`ThrowStatement`)||y(e,`NewExpression`))return a=!0,!1;if(!y(e,`CallExpression`)||Mo(e,n,t).length>0||Qa(e,n))return;let o=O(e.callee);if(y(o,`MemberExpression`)){if(y(O(o.object),`ThisExpression`)){let r=C(o),a=r?yo(t,r,e):null;if(a&&!No(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=M(o,n);if(!(s&&!No(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},poe=(e,n,r)=>{let i=new Map;return bo(e,n,e=>{if(!y(e,`CallExpression`))return;let a=e.arguments?.[0],o=a&&!y(a,`SpreadElement`)?O(a):null;if(!foe(e,r.scopes)||!y(o,`ThisExpression`))return;let s=e.arguments?.[1];if(!s||y(s,`SpreadElement`))return;let c=So(s,n);if(!t(c))return;let l=new Map;bo(c,n,e=>{if(y(e,`CallExpression`))for(let t of Mo(e,r.scopes,n)){let n=l.get(t)??[];n.push(e),l.set(t,n)}});for(let[t,n]of l){if(!Ka(c,n,r))continue;let a=i.get(t)??[];a.push(e),i.set(t,a)}}),i},Po=(e,n,r,i=new Set)=>{let a=new Set;if(!e||!t(e)||i.has(e))return a;i.add(e);let o=null;$a(e,t=>{y(t,`AwaitExpression`)&&b(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])});let s=new Map;bo(e,n,t=>{if(!y(t,`CallExpression`)||o!==null&&b(t)===e&&t.range[0]>o)return;let a=No(e,n,r.scopes,t.range[0]),c=O(t.callee);if(y(c,`Identifier`)){let e=Po(M(c,r.scopes),n,r,i);for(let n of a?[]:e){let e=s.get(n)??[];e.push(t),s.set(n,e)}}if(y(c,`MemberExpression`)&&y(O(c.object),`ThisExpression`)){let e=C(c),a=Po(e?yo(n,e,t):null,n,r,i);for(let e of a){let n=s.get(e)??[];n.push(t),s.set(e,n)}}for(let e of a?[]:Mo(t,r.scopes,n)){let n=s.get(e)??[];n.push(t),s.set(e,n)}});for(let[t,n]of s)Ka(e,n,r)&&a.add(t);return a},Fo=(e,n,r,i=new Set)=>{let a=new Map,o=new Map;if(!e||!t(e)||i.has(e))return a;i.add(e);let s=null;$a(e,t=>{y(t,`AwaitExpression`)&&b(t)===e&&(s===null||t.range[0]<s)&&(s=t.range[0])}),$a(e,t=>{if(!y(t,`CallExpression`)||s!==null&&b(t)===e&&t.range[0]>s||No(e,n,r.scopes,t.range[0]))return;for(let i of Mo(t,r.scopes,n)){let n=o.get(i)??[];n.push(t),o.set(i,n),Ka(e,[t],r)&&a.set(i,(a.get(i)??0)+1)}if(!Ka(e,[t],r))return;let c=O(t.callee),l=y(c,`MemberExpression`)&&y(O(c.object),`ThisExpression`)?C(c):null,u=Fo(l?yo(n,l,t):y(c,`Identifier`)?M(c,r.scopes):null,n,r,new Set(i));for(let[e,t]of u)a.set(e,(a.get(e)??0)+t)});for(let[t,n]of o){if(!Ka(e,n,r))continue;let i=1;[...n.keys()].every(t=>Ka(e,n.filter(e=>e!==n[t]),r))&&(i+=1),a.set(t,Math.max(a.get(t)??0,i))}return a},moe=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(y(e,`CallExpression`))for(let i of Mo(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},Io=(e,n)=>{let r=e.parent;for(;r&&r!==n;){if(t(r))return null;if(y(r,`ForStatement`)||y(r,`ForInStatement`)||y(r,`ForOfStatement`)||y(r,`WhileStatement`)||y(r,`DoWhileStatement`))return r;r=r.parent}return null},hoe=(e,t,n)=>{let r=n.scopes,i=new Map;bo(e,t,e=>{if(!y(e,`CallExpression`))return;if(n.cfg&&!B(e,n))return!1;let a=O(e.callee);if(!y(a,`MemberExpression`))return;let o=C(a),s=o?oo.get(o):void 0;if(!s)return;let c=Oo(e,s,r,t);if(!c)return;let l=i.get(c)??[];l.push(e),i.set(c,l)});let a=new Map;for(let[t,n]of i){if(n.some(t=>!!Io(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Ua(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},Lo=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||Ht(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Lo(a,t,n,r)):!1}if(y(i,`MemberExpression`)){let e=C(i),a=O(i.object);if(e!==`current`)return Lo(a,t,n,r);if(!y(t,`ClassBody`)||!y(a,`MemberExpression`))return!1;let o=C(a),s=O(a.object);if(!o||!y(s,`ThisExpression`))return!1;let c=t.body?.find(e=>ho(e)===o);if(!c||!y(c,`PropertyDefinition`)||c.static||!y(c.value,`CallExpression`)||!k(c.value,`createRef`,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!1,resolveNamedAliases:!0}))return!1;let l=i;for(;l&&l.parent!==t;)l=l.parent;let u=l?Bo(l):null,d=!1;return u&&$a(u,e=>{if(d||e.range[0]>=i.range[0]||!y(e,`AssignmentExpression`))return;let t=O(e.left);y(t,`MemberExpression`)&&y(O(t.object),`ThisExpression`)&&C(t)===o&&(d=!0)}),!d}return!1},Ro=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||Ht(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Ro(a,t,n,r)):!1}if(!y(i,`CallExpression`))return!1;let a=O(i.callee);if(!y(a,`MemberExpression`))return!1;let o=C(a),s=O(a.object);if((o===`select`||o===`selectAll`)&&y(s,`Identifier`)&&(Jn(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!y(e,`SpreadElement`)&&Lo(e,t,n))}return Ro(a.object,t,n,r)},goe=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!y(e,`CallExpression`))return null;let c=O(e.callee),l=y(c,`MemberExpression`)?C(c):null;if(l&&oo.has(l)&&y(c,`MemberExpression`)){let u=oo.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=O(c.object),m=Lo(p,i,s),h=Ro(p,i,s);for(;;){if(p=O(p),y(p,`CallExpression`)){p=O(p.callee);continue}if(y(p,`MemberExpression`)){p=O(p.object);continue}break}let g=y(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,ee=u?Oo(e,u,s,i):null,te=u?Ao(e,l,u,s,i):[],ne=te.flatMap(e=>n.get(e)??[]),re=te.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ie=ne.filter(t=>Ga(e,[t],a)).length,ae=Io(e),oe=!!(ae&&ne.some(t=>Io(t)===ae&&Ga(e,[t],a))),se=ee?r.get(ee)??1:1,ce=!!(ee&&(Ga(e,re,a)||Ga(e,ne,a)&&(l===`addEventListener`||oe||ie>=se)));if(!(!f&&!_&&!ce&&!m&&!h))return null;let le=jo(e,s,i),ue=O(c.object),de=y(ue,`Identifier`)?he(e,ue.name,`react-native`):null,fe=y(ue,`Identifier`)&&(de!==null&&co.has(de)||s.isGlobalReference(ue)&&co.has(ue.name)),pe=l===`subscribe`&&le?[`returned:unsubscribe:${le}`,`returned:call:${le}`]:(l===`addEventListener`||l===`addListener`)&&fe&&le?[`returned:remove:${le}`]:[];return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:so.has(l)?ee:null,registrationCount:so.has(l)?se:1,releaseKeys:u?[...Ao(e,l,u,s,i),...pe]:pe}}let u=mo(e,s);if(u===`setInterval`){let t=jo(e,s,i);return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!ioe(e.arguments[0],i,s))return null;let t=jo(e,s,i);return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},zo=e=>(y(e,`MethodDefinition`)||y(e,`PropertyDefinition`))&&t(e.value)?e.value:null,Bo=e=>{let n=zo(e);return n&&t(n)?n.body??null:null},Vo=x({id:`class-component-missing-component-will-unmount-teardown`,title:`Class component acquires a resource with no teardown`,severity:`warn`,category:`Bugs`,requires:[`react`],recommendation:"Release listeners and timers acquired in `componentDidMount`/`constructor` by adding a `componentWillUnmount` that removes them (or use MobX `disposeOnUnmount`).",create:e=>({ClassBody(t){let n=t.parent;if(!n||!Ya(n))return;let r=t.body??[],i=r.find(e=>ho(e)===`componentWillUnmount`),a=Po(i?zo(i):null,t,e),o=Fo(i?zo(i):null,t,e);for(let n of r){let r=ho(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=Bo(n);if(!i)continue;let s=aoe(i,t,e.scopes),c=moe(i,t,e.scopes),l=hoe(i,t,e),u=noe(i,t,e),d=[];if(bo(i,t,n=>{if(e.cfg&&!B(n,e))return!1;let r=goe(n,s,c,l,t,e,u.has(n)||roe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=poe(i,t,e),p=d.find(t=>{if(t.isAcquiredAfterSuspension||t.releaseKeys.length===0)return!0;if(t.releaseKeys.some(e=>a.has(e))){if(t.listenerIdentityKey&&t.registrationCount>1){let e=t.releaseKeys.some(e=>e.startsWith(`listener:removeAllListeners:`)&&a.has(e)),n=t.releaseKeys.reduce((e,t)=>t.startsWith(`listener:removeAllListeners:`)?e:e+(o.get(t)??0),0);if(!e&&n<t.registrationCount)return!0}return!1}return!t.releaseKeys.some(n=>{let r=f.get(n)??[];return Ga(t.node,r,e)})});if(p){e.report({node:p.node,message:"This class registers a listener or timer during mount without a matching teardown on every unmount path, so it can keep firing after the component unmounts; release it in `componentWillUnmount`."});return}}}})}),Ho=(e,t,n={})=>{if(!e||!t)return e===t;let r=O(e),i=O(t);if(r!==e||i!==t)return Ho(r,i,n);if(e.type!==t.type)return!1;if(y(e,`ThisExpression`))return!0;if(y(e,`Identifier`)&&y(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(y(e,`PrivateIdentifier`)&&y(t,`PrivateIdentifier`))return e.name===t.name;if(y(e,`Literal`)&&y(t,`Literal`))return e.value===t.value;if(y(e,`MemberExpression`)&&y(t,`MemberExpression`))return e.computed===t.computed?Ho(e.object,t.object,n)&&Ho(e.property,t.property,e.computed?n:{}):!1;if(y(e,`CallExpression`)&&y(t,`CallExpression`)){if(!Ho(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Ho(e,i[t],n)):!1}return!1},_oe=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),voe=/button|link|nav|anchor/i,yoe=/(?:button|link|anchor)$/i,Uo=/^[A-Z]/,boe=[`onClick`,`onPress`],Wo=e=>ba(O(e)),Go=(e,t)=>{let n=O(e);if(ba(n))return!0;let r=w(n,t);return r?.kind!==`const`||!r.initializer?!1:ba(O(r.initializer))},Ko=(e,t,n=new Set)=>{let r=O(e);if(Go(r,t))return null;if(y(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return Go(e,t)?Ko(i,t,n):Go(i,t)?Ko(e,t,n):null}if(y(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&y(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Ko(e.initializer,t,n)):r}if(y(r,`ArrowFunctionExpression`)||y(r,`FunctionExpression`)||y(r,`FunctionDeclaration`)){let e=O(r.body);if(!y(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return y(t,`ExpressionStatement`)?t.expression:y(t,`ReturnStatement`)&&t.argument?O(t.argument):null}return r},qo=(e,t)=>!e.value||!y(e.value,`JSXExpressionContainer`)?null:Ko(e.value.expression,t),Jo=(e,t)=>{let n=P(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(y(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!y(n.value,`JSXExpressionContainer`))return!0;let r=O(n.value.expression);return!y(r,`Literal`)||r.value!==!1},Yo=(e,t)=>{let n=P(e.attributes,t);if(!n?.value)return!1;if(y(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!y(n.value,`JSXExpressionContainer`))return!0;let r=O(n.value.expression);return y(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!Wo(r)},Xo=e=>{if(y(e,`JSXText`))return e.value.trim().length>0;if(y(e,`JSXElement`))return Zo(e);if(y(e,`JSXFragment`))return e.children.some(e=>Xo(e));if(!y(e,`JSXExpressionContainer`))return!1;let t=O(e.expression);return y(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:Wo(t)?!1:y(t,`JSXElement`)?Zo(t):y(t,`JSXFragment`)?t.children.some(e=>Xo(e)):!0},Zo=e=>Yo(e.openingElement,`aria-label`)||Yo(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Xo(e)),xoe=e=>{let t=P(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=Mi(t.value);return n!==null&&n<0},Soe=(e,t)=>br(e,t)||Jo(e,`hidden`),Coe=(e,t)=>{let n=e.openingElement,r=xr(n.name);if(!r)return!1;if(xi.has(r)){if(!_oe.has(r))return!1}else if(t){if(!Uo.test(r)||!yoe.test(r))return!1}else if(!Uo.test(r)||!voe.test(r))return!1;return t?r===`a`&&!P(n.attributes,`href`)||Jo(n,`disabled`)||Jo(n,`isDisabled`)||Jo(n,`aria-disabled`)||xoe(n)?!1:Zo(e):!0},Qo=(e,t,n,r)=>{let i=e=>Qo(e,t,n,r);if(y(e,`JSXElement`)){if(t&&Soe(e.openingElement,r))return!1;if(Coe(e,t!==null)){if(!t)return!0;for(let r of boe){let i=P(e.openingElement.attributes,r),a=i?qo(i,n):null;if(a&&Ho(t,a))return!0}}return e.children.some(e=>i(e))}return y(e,`JSXFragment`)?e.children.some(e=>i(e)):t?y(e,`JSXExpressionContainer`)?i(e.expression):y(e,`LogicalExpression`)?i(e.left)||i(e.right):y(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},$o=(e,t,n,r)=>{if(!e||!y(e,`JSXElement`))return!1;let i=t?qo(t,n):null;return t&&!i?!1:e.children.some(e=>Qo(e,i,n,r))},woe=new Set([`focus`,`select`]),Toe=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Eoe=new Set([`getElementById`,`querySelector`]),Doe=new Set([`global`,`globalThis`,`window`]),Ooe=e=>{if(!e)return null;let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return null;let n=O(t.callee);if(!y(n,`MemberExpression`))return null;let r=n.property;return y(r,`Identifier`)?r.name:null},es=(e,t)=>{let n=Ooe(e);return n!==null&&(woe.has(n)||t&&Toe.has(n))},koe=(e,t)=>{let n=O(e);return y(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!y(n,`MemberExpression`)||!y(n.object,`Identifier`)||!y(n.property,`Identifier`)||n.property.name!==`document`?!1:Doe.has(n.object.name)&&t.isGlobalReference(n.object)},ts=e=>{let t=O(e);return y(t,`Identifier`)||y(t,`Literal`)?!0:y(t,`TemplateLiteral`)&&t.expressions.every(e=>ts(e))},Aoe=(e,t)=>{if(!y(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!y(n.id,`Identifier`)||!n.init)return null;let r=O(n.init);if(!y(r,`CallExpression`)||r.arguments.length!==1||y(r.arguments[0],`SpreadElement`)||!ts(r.arguments[0]))return null;let i=O(r.callee);return!y(i,`MemberExpression`)||!y(i.property,`Identifier`)||!Eoe.has(i.property.name)||!koe(i.object,t)?null:n.id.name},ns=e=>y(e,`ReturnStatement`)?e.argument===null:!y(e,`BlockStatement`)||e.body.length!==1?!1:ns(e.body[0]),joe=e=>{if(!y(e,`IfStatement`)||e.alternate||!ns(e.consequent))return!1;let t=O(e.test),n=y(t,`ChainExpression`)?t.expression:t;if(!y(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=O(n.callee),i=y(r,`MemberExpression`)?O(r.object):null;return y(r,`MemberExpression`)&&y(r.property,`Identifier`)&&r.property.name===`closest`&&y(i,`MemberExpression`)&&y(i.object,`Identifier`)&&y(i.property,`Identifier`)&&i.property.name===`target`&&y(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Moe=(e,t)=>{if(!y(e,`ExpressionStatement`))return!1;let n=O(e.expression);if(!y(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=O(n.callee);if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return y(i,`Identifier`)&&i.name===t&&y(r.property,`Identifier`)&&r.property.name===`focus`},Noe=(e,t,n)=>{if(!e)return!1;if(es(e,n))return!0;if(!y(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!joe(r[0]),a=r[i],o=a?Aoe(a,t):null;return o?r.length===i+2&&Moe(r[i+1],o):i>0?!1:r.every(e=>y(e,`ExpressionStatement`)&&es(e.expression,n))},rs=(e,t)=>ba(e)&&(!y(e,`Identifier`)||t.isGlobalReference(e)),is=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ConditionalExpression`)){let e=O(r.consequent),i=O(r.alternate),a=null;return rs(e,t)&&(a=is(i,t,n)),rs(i,t)&&(a=is(e,t,n)),a?{...a,isConditional:!0}:null}if(y(r,`Identifier`)){let e=t.symbolFor(r);return!e?.initializer||![`const`,`let`,`function`].includes(e.kind)||e.references.some(e=>e.flag!==`read`)||n.has(e.id)?null:(n.add(e.id),is(e.initializer,t,n))}return y(r,`ArrowFunctionExpression`)||y(r,`FunctionExpression`)||y(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},as=(e,t)=>{let n=is(e,t);return n?Noe(n.handlerFunction.body??null,t,!n.isConditional):!1},os=(e,t)=>!e.value||!y(e.value,`JSXExpressionContainer`)?!1:as(e.value.expression,t),ss=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=dr(t);return n!==null&&si.has(n)},cs=e=>{if(y(e,`Identifier`)||y(e,`PrivateIdentifier`))return e.name},ls=e=>{if(y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`))return e},Poe=(e,t)=>{for(let n of e.body){if(!y(n,`MethodDefinition`)&&!y(n,`PropertyDefinition`)||cs(n.key)!==t)continue;let e=ls(n.value);if(e)return e}},us=(e,t)=>{for(let n of e.properties){if(!y(n,`Property`)||cs(n.key)!==t)continue;let e=ls(n.value);if(e)return e}},ds=e=>{let t=cs(e.property);if(t===void 0)return;let n=e.object;if(y(n,`ThisExpression`)){let n=e.parent;for(;n;){if(y(n,`ClassBody`))return Poe(n,t);if(y(n,`ObjectExpression`)){let e=us(n,t);if(e)return e}n=n.parent}return}if(y(n,`Identifier`)){let e=T(n,n.name);if(y(e?.initializer,`ObjectExpression`))return us(e.initializer,t)}},Foe=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),fs=e=>{if(!e)return!1;let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return!1;let n=t.callee;return!y(n,`MemberExpression`)||!y(n.property,`Identifier`)?!1:Foe.has(n.property.name)},ps=e=>{if(!e)return!1;if(fs(e))return!0;if(y(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!y(e,`ExpressionStatement`)||!fs(e.expression))return!1;return!0}return!1},ms=e=>{if(!e.value||!y(e.value,`JSXExpressionContainer`))return!1;let t=O(e.value.expression);return y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)?ps(t.body):y(t,`MemberExpression`)?ps(ds(t)?.body):!1},hs=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],gs=[`onClick`,`onClickCapture`],Ioe=new Set([...gs,...hs].map(e=>e.toLowerCase())),Loe=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Roe=(e,t)=>{let n=O(e);if(y(n,`ObjectExpression`))return n;if(!y(n,`Identifier`))return null;let r=w(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=O(r.initializer);return y(i,`ObjectExpression`)?i:null},_s=(e,t,n,r)=>{let i=Roe(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(y(e,`SpreadElement`)){if(!_s(e.argument,t,n,r)){a=!1;break}continue}if(!y(e,`Property`)){a=!1;break}let i=S(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Loe.has(o)){a=!1;break}Ioe.has(o)&&n.set(o,e.value)}return r.delete(i),a},zoe=(e,t)=>{let n=new Map;for(let r of e)if(y(r,`JSXSpreadAttribute`)&&!_s(r.argument,t,n,new Set))return null;return n},Boe=new Set([`tr`,`td`,`th`,`canvas`]),Voe=new Set([`motion`,`styled`]),Hoe=e=>{let t=e.name;if(!y(t,`JSXMemberExpression`))return null;let n=t.object;if(!y(n,`JSXIdentifier`)||!Voe.has(n.name))return null;let r=t.property.name;return r&&xi.has(r)?r:null},Uoe=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Woe=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!y(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Uoe.has(r.toLowerCase()))},Goe=e=>{if(!y(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!y(e,`MemberExpression`))return null;let t=e.property;return y(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},vs=e=>{if(!e||typeof e!=`object`)return!1;if(Goe(e))return!0;let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n)){for(let e of n)if(e&&typeof e==`object`&&typeof e.type==`string`&&vs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&vs(n))return!0}return!1},ys=e=>{let t=O(e);if(y(t,`Identifier`)){let e=T(t,t.name);if(!e?.initializer)return null;t=O(e.initializer)}return y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`)?t:null},Koe=e=>!e.value||!y(e.value,`JSXExpressionContainer`)?null:ys(e.value.expression),qoe=e=>{let t=Koe(e);return t?vs(t.body??null):!1},Joe=(e,t)=>e===`li`&&!!(P(t.attributes,`onMouseEnter`)||P(t.attributes,`onMouseOver`)),bs=x({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=ct(e.filename);return{JSXOpeningElement(n){if(t)return;let r=Hoe(n)??hr(n,e.settings);if(!xi.has(r)||r===`label`||!Boe.has(r)&&ji(r,n))return;let i=zoe(n.attributes,e.scopes);if(!i)return;let a=P(n.attributes,`onClick`)??P(n.attributes,`onClickCapture`),o=gs.map(e=>i.get(e.toLowerCase())).find(e=>e!==void 0);if(!a&&!o||a&&ms(a)||a&&os(a,e.scopes)||o&&as(o,e.scopes))return;let s=o?ys(o):null;s&&vs(s.body??null)||Woe(n)||Joe(r,n)||a&&qoe(a)||$o(n.parent,null,e.scopes,e.settings)||a&&$o(n.parent,a,e.scopes,e.settings)||br(n,e.settings)||ss(n)||hs.some(e=>P(n.attributes,e)||i.has(e.toLowerCase()))||e.report({node:n.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),xs=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=O(e.callee);if(!y(r,`MemberExpression`)||r.computed)return!1;let i=O(r.object);return y(i,`Identifier`)&&i.name===t&&y(r.property,`Identifier`)&&r.property.name===n},Ss=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=O(n.object);return y(r,`Identifier`)&&r.name===`localStorage`&&y(n.property,`Identifier`)&&n.property.name===t},Yoe=e=>{let n=e.handler;if(!n)return!1;let r=!1,i=!1;return A(n.body,e=>{if(t(e))return!1;y(e,`ReturnStatement`)&&(r=!0),y(e,`ThrowStatement`)&&(i=!0)}),r&&!i},Xoe=(e,n)=>{let r=O(e);if(!y(r,`Identifier`))return null;let i=n.symbolFor(r);if(!i)return null;let a=i.kind===`function`?i.declarationNode:i.initializer;return t(a)?a:null},Zoe=(e,n)=>{if(!t(e))return!1;let r=e.params?.[0];if(!r||!y(r,`Identifier`))return!1;let i=n.symbolFor(r);if(!i)return!1;let a=new Set([i.id]),o=!1;return A(e.body,e=>{if(t(e))return!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.init){let t=O(e.init);if(y(t,`Identifier`)){let r=n.symbolFor(t);if(r&&a.has(r.id)){let t=n.symbolFor(e.id);t&&a.add(t.id)}}}if(!y(e,`UnaryExpression`)||e.operator!==`typeof`)return;let r=O(e.argument);if(!y(r,`MemberExpression`))return;let i=O(r.object);if(!y(i,`Identifier`))return;let s=n.symbolFor(i);s&&a.has(s.id)&&(o=!0)}),o},Cs=(e,t)=>{e.set(t,(e.get(t)??0)+1)},Qoe=e=>{let t=e.parent;return!!(t&&y(t,`ReturnStatement`)&&t.argument===e)},$oe=({programNode:e,scopes:n,resolveKey:r})=>{let i=new Map,a=new Map,o=new Set;A(e,e=>{if(!y(e,`CallExpression`)||!Ss(e,`getItem`))return;let t=e.arguments?.[0];if(!t)return;let n=r(t);n!==null&&Cs(i,n)}),A(e,e=>{if(!y(e,`TryStatement`)||!Yoe(e))return;let i=new Map,s=new Map;A(e.block,e=>{if(t(e))return!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.init){let t=O(e.init);if(y(t,`CallExpression`)&&Ss(t,`getItem`)){let a=t.arguments?.[0],o=n.symbolFor(e.id);if(a&&o){let e=r(a);e!==null&&i.set(o.id,e)}}if(y(t,`CallExpression`)&&xs(t,`JSON`,`parse`)){let r=t.arguments?.[0],a=n.symbolFor(e.id);if(r&&y(r,`Identifier`)&&a){let e=n.symbolFor(r);e&&i.has(e.id)&&s.set(a.id,e.id)}}}if(!y(e,`ConditionalExpression`)||!Qoe(e))return;let c=O(e.test);if(!y(c,`CallExpression`))return;let l=c.arguments?.[0];if(!l||!y(l,`Identifier`))return;let u=n.symbolFor(l);if(!u)return;let d=s.get(u.id);if(d===void 0)return;let f=O(e.consequent);if(!y(f,`Identifier`)||n.symbolFor(f)?.id!==u.id)return;let p=Xoe(c.callee,n);if(!p||!Zoe(p,n))return;let m=i.get(d);m===void 0||o.has(d)||(o.add(d),Cs(a,m))})});let s=new Set;for(let[e,t]of i)a.get(e)===t&&s.add(e);return s},ese=/(?:[._:-]v\d+|@\d+|\bv\d+\b)/i,tse=/[a-z]V\d+/,nse=e=>ese.test(e)||tse.test(e),rse=e=>xs(e,`JSON`,`stringify`),ws=(e,t)=>{if(y(e,`Literal`))return typeof e.value==`string`?e.value:null;if(!y(e,`Identifier`))return null;let n=t.scopes.symbolFor(e);if(!n||n.kind!==`const`)return null;let r=n.initializer;return y(r,`Literal`)&&typeof r.value==`string`?r.value:null},Ts=x({id:`client-localstorage-no-version`,title:`Unversioned localStorage key`,tags:[`test-noise`],severity:`warn`,category:`Correctness`,recommendation:`Put a version in the storage key (e.g. "myKey:v1"). If you change the data shape later, old saved data can be ignored instead of crashing the app.`,create:e=>{let t=null,n=null;return{Program(e){t=e},CallExpression(r){if(!y(r.callee,`MemberExpression`))return;let i=O(r.callee.object);if(!y(i,`Identifier`)||i.name!==`localStorage`||!y(r.callee.property,`Identifier`)||r.callee.property.name!==`setItem`)return;let a=r.arguments?.[0];if(!a)return;let o=r.arguments?.[1];if(!o||!rse(o))return;let s=ws(a,e);s!==null&&(nse(s)||(n===null&&t&&(n=$oe({programNode:t,scopes:e.scopes,resolveKey:t=>ws(t,e)})),!n?.has(s)&&e.report({node:a,message:`${i.name}.setItem("${s}", JSON.stringify(...)) has no version, so changing the data shape later crashes your users' saved sessions. Add one to the key (e.g. "${s}:v1").`})))}}}}),Es=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ds=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Es(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Os=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],ks=(e,t,n,r)=>{if(!y(t,`MemberExpression`))return;let i=C(t),a=z(t.object,r);i&&a&&(Es(e.memberMutationCandidatesByReceiverIdentity,a,n),Ds(e,a,i,n))},ise=(e,t,n)=>{if(y(t,`AssignmentExpression`)){let r=O(t.left),i=z(r,n);i&&Es(e.receiverAssignmentCandidatesByIdentity,i,t),ks(e,r,t,n)}else y(t,`UnaryExpression`)&&t.operator===`delete`&&ks(e,O(t.argument),t,n);if(!y(t,`CallExpression`))return;let r=O(t.callee);if(!y(r,`MemberExpression`)||C(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(y(i,`Literal`)&&typeof i.value==`string`&&a&&!y(a,`SpreadElement`)){let r=z(a,n);r&&(Es(e.memberMutationCandidatesByReceiverIdentity,r,t),Ds(e,r,i.value,t))}},As=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=O(e.callee);if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return C(r)===`defineProperty`&&y(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&y(e.arguments[1],`Literal`)&&e.arguments[1].value===t},ase=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},js=(e,t)=>{let n=O(e);return y(n,`MemberExpression`)&&C(n)===t?n.object:null},Ms=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Ns=(e,t)=>{let n=y(e,`FunctionDeclaration`)?e.id:y(e.parent,`VariableDeclarator`)&&e.parent.init===e&&y(e.parent.id,`Identifier`)?e.parent.id:null,r=n?t.scopes.scopeFor(e).symbolsByName.get(n.name):void 0;if(!r||r.references.length===0)return null;let i=[];for(let n of r.references){let r=n.identifier.parent;if(!y(r,`CallExpression`)||O(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},ose=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!y(i,`MethodDefinition`)||!y(a,`MethodDefinition`)||i.parent!==a.parent||!y(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Ps=(e,t,n,r=new Map)=>{let i=r.get(e)??new Set;if(i.has(t))return!1;let a=new Map(r);a.set(e,new Set([...i,t]));let o=n.cfg.enclosingFunction(e),s=n.cfg.enclosingFunction(t);if(!o||!s)return!1;if(o!==s){if(ose(o,s,e,n))return!0;if(Ms(o,s)){let t=Ns(s,n);return!t&&y(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Ps(e,t,n,a)))}if(Ms(s,o)){let r=Ns(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Ps(e,t,n,a)))}let r=Ns(o,n),i=Ns(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Ps(e,t,n,a)||r.some(e=>Ps(e,t,n,a))):!1}let c=n.cfg.cfgFor(s),l=c?.blockOf(e),u=c?.blockOf(t);if(!c||!l||!u||l===u)return e.range[0]<t.range[0];let d=new Set,f=l===c.entry?[]:[c.entry];for(;f.length>0;){let e=f.shift();if(!(!e||d.has(e))){if(e===u)return!1;d.add(e);for(let t of e.successors)t.to!==l&&f.push(t.to)}}return!0},sse=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||e.length<2||e.some(e=>n.cfg.enclosingFunction(e)!==r))return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(t);if(!i||!a)return!1;let o=new Set(e.map(e=>i.blockOf(e)).filter(e=>e!==null));if(e.some(e=>i.blockOf(e)===a&&e.range[0]<t.range[0]))return!0;o.delete(a);let s=new Set,c=[i.entry];for(;c.length>0;){let e=c.shift();if(!(!e||s.has(e)||o.has(e))){if(e===a)return!1;s.add(e);for(let t of e.successors)c.push(t.to)}}return!0},Fs=(e,n)=>{if(!y(e,`CallExpression`))return null;let r=O(e.callee);if(!y(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer??i?.declarationNode;return a&&t(O(a))?O(a):null},Is=(e,t,n,r)=>Rs(e,n).some(e=>e.callExpression!==t&&Ps(e.callExpression,t,n)&&zs(e.callExpression,e.argumentIndex,n,r,new Map)),cse=(e,n,r,i)=>{let a=Fs(O(e),r);if(!a||!t(a))return!1;let o=[];return A(a.body,e=>{if(e!==a.body&&t(e))return!1;y(e,`ReturnStatement`)&&e.argument&&o.push(e)}),o.length>0&&o.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let t=z(e.argument,r);if(!t)return!1;let a=O(e.argument),o=y(a,`Identifier`)?r.scopes.symbolFor(a):null;return o&&Is(o,e,r,i)?!0:!!i.memberMutationCandidatesByReceiverIdentity.get(t)?.some(t=>{let i=!!js(y(t,`AssignmentExpression`)?t.left:y(t,`UnaryExpression`)?t.argument:t,n);return y(t,`CallExpression`)&&(i=As(t,n,r)),i&&Ps(t,e,r)})})},Ls=new WeakMap,Rs=(e,t,n=new Set)=>{let r=Ls.get(e);if(r)return r;if(n.has(e))return[];let i=new Set(n);i.add(e);let a=new Map,o=(e,t)=>{let n=a.get(e)??new Set;n.add(t),a.set(e,n)},s=e=>{if(e)for(let n of Rs(e,t,i))o(n.callExpression,n.argumentIndex)};for(let n of e.references){let e=n.identifier,r=!0;for(;e.parent&&r;){let t=e.parent;r=!1,O(t)===e?(e=t,r=!0):y(t,`Property`)&&t.value===e&&y(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(y(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||y(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||y(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(y(i,`VariableDeclarator`)&&i.init===e&&y(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(y(i,`AssignmentExpression`)&&i.right===e){let e=O(i.left),n=y(e,`Identifier`)?e:y(e,`MemberExpression`)&&y(O(e.object),`Identifier`)?O(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(y(i,`CallExpression`)){let t=i.arguments.findIndex(t=>t===e);t>=0&&o(i,t)}}let c=[...a].flatMap(([e,t])=>[...t].map(t=>({argumentIndex:t,callExpression:e})));return Ls.set(e,c),c},lse=(e,n,r)=>{if(!t(e))return!1;if(y(e,`ArrowFunctionExpression`)&&!y(e.body,`BlockStatement`))return z(e.body,r)===n;let i=[];return A(e.body,n=>{if(n!==e.body&&t(n))return!1;y(n,`ReturnStatement`)&&i.push(n)}),i.length>0&&i.every(e=>y(e,`ReturnStatement`)&&e.argument&&z(e.argument,r)===n)},use=(e,t)=>{let n=e;for(;n.parent&&O(n.parent)===n;)n=n.parent;let r=n.parent;if(!y(r,`VariableDeclarator`)||r.init!==n||!y(r.id,`Identifier`))return null;let i=t.scopes.scopeFor(r);for(;i;){let e=i.symbolsByName.get(r.id.name);if(e)return e;i=i.parent}return null},zs=(e,n,r,i,a)=>{let o=Fs(e,r);if(!o||!t(o))return!0;if(o.generator)return!1;let s=a.get(o)??new Set;if(s.has(n))return!1;s.add(n),a.set(o,s);let c=o.params[n];if(!y(c,`Identifier`))return!0;let l=r.scopes.ownScopeFor(o)?.symbolsByName.get(c.name);if(!l)return!0;let u=`symbol:${l.id}`;if(i.memberMutationCandidatesByReceiverIdentity.get(u)?.some(e=>r.cfg.enclosingFunction(e)===o)||Rs(l,r).some(e=>r.cfg.enclosingFunction(e.callExpression)===o?zs(e.callExpression,e.argumentIndex,r,i,a):!1))return!0;if(!lse(o,u,r))return!1;let d=use(e,r);return d?Rs(d,r).some(e=>zs(e.callExpression,e.argumentIndex,r,i,a)):!1},dse=(e,t,n,r,i,a=[],o)=>{if(cse(t,n,i,e))return!0;let s=z(t,i),c=O(t),l=y(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&Is(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Os(e,s,n):[],...a.flatMap(t=>Os(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!ase(i.scopes.scopeFor(e),u)&&!Ps(e,r,i))continue;let t=null;if(y(e,`AssignmentExpression`)){if(s!==null&&z(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Ps(e,r,i)){d=!0;break}continue}t=js(e.left,n)}else if(y(e,`UnaryExpression`)&&e.operator===`delete`)t=js(e.argument,n);else if(y(e,`CallExpression`)&&As(e,n,i)){let n=e.arguments[0];t=n&&!y(n,`SpreadElement`)?n:null}if(!t)continue;let c=z(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Ps(e,r,i)&&(d=!0))}return d||sse(p,r,i)},Bs=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>ise(t,n,e),hasProvenMutation:(n,r,i,a,o)=>dse(t,n,r,i,e,a,o)}},Vs=(e,t)=>!!(e&&y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&e.property.name===t),Hs=e=>Ci(e)||(e.kind!==`let`&&e.kind!==`var`||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||!e.references.every(e=>e.flag===`read`)||e.scope.symbols.some(t=>t!==e&&t.name===e.name)?null:e.initializer),Us=e=>y(e,`Identifier`)?e.name:y(e,`Literal`)&&typeof e.value==`string`?e.value:null,Ws=e=>{if(!y(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&y(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!y(n,`Property`)||!y(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!y(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!y(a,`TSTypeLiteral`))return null;let o=Us(n.key);if(!o)return null;for(let e of a.members)if(y(e,`TSPropertySignature`)&&Us(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},Gs=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&y(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>y(e,`TSTypeParameter`)&&y(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},Ks=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},qs=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(y(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=O(n.object);return y(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},fse=new Set(`AbortSignal.Document.DocumentFragment.Element.EventTarget.HTMLElement.HTMLAnchorElement.HTMLButtonElement.HTMLCanvasElement.HTMLDivElement.HTMLFormElement.HTMLIFrameElement.HTMLImageElement.HTMLInputElement.HTMLLabelElement.HTMLLIElement.HTMLMediaElement.HTMLParagraphElement.HTMLSelectElement.HTMLSpanElement.HTMLTableElement.HTMLTextAreaElement.HTMLUListElement.HTMLVideoElement.MediaQueryList.Node.ShadowRoot.SVGElement.SVGSVGElement.Window.XMLDocument`.split(`.`)),pse=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Js=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),Ys=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),mse=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),Xs=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],hse=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:fse.has(e)||pse.test(e),Zs=(e,t,n)=>{if(y(e,`TSTypeReference`)){if(!y(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return hse(r,n)&&!Ks(e,r,t)&&!Gs(e,r)}if(!y(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(y(i,`TSNullKeyword`)||y(i,`TSUndefinedKeyword`))){if(!Zs(i,t,n))return!1;r=!0}return r},gse=(e,t)=>!y(e,`TSTypeReference`)||!y(e.typeName,`Identifier`)||!Zs(e,t,`dom-event-target`)?null:e.typeName.name,Qs=(e,t,n)=>y(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),$s=(e,t,n=new Set)=>{let r=O(e);if(Qs(r,`window`,t))return[`Window`,`EventTarget`];if(Qs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(y(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=Ws(e),a=i?gse(i,t):null;if(a)return Xs(a);let o=Hs(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),$s(o,t,s)}if(y(r,`NewExpression`)){let e=O(r.callee);if(y(e,`Identifier`)&&Js.has(e.name))return Xs(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(y(r,`MemberExpression`)){let e=C(r);if(e===`body`||e===`documentElement`)return Xs(`HTMLElement`)}if(y(r,`CallExpression`)){if(qs(r,t))return Xs(`MediaQueryList`);let e=O(r.callee),i=y(e,`MemberExpression`)?C(e):null;if(i===`matchMedia`&&y(e,`MemberExpression`)&&$s(e.object,t,n).includes(`Window`))return Xs(`MediaQueryList`);if(i===`createElement`)return Xs(`HTMLElement`);if(i===`createElementNS`)return Xs(`SVGElement`);if(i&&Ys.has(i))return Xs(`Element`)}return[`EventTarget`]},ec=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Js]).some(t=>tc(e,t,n,new Set)),_se=(e,t,n)=>{let r=e,i=!1;for(;y(r,`TSAsExpression`)||y(r,`TSTypeAssertion`)||y(r,`TSSatisfiesExpression`);){if(Zs(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(y(a,`Identifier`)){let e=t.symbolFor(a),n=e?Ci(e):null;if(!n)return!1;a=O(n)}return i&&y(a,`Identifier`)||i&&y(a,`MemberExpression`)||i&&y(a,`ObjectExpression`)?!1:i&&y(a,`NewExpression`)?ec(a.callee,n,t):i},vse=e=>{if(!y(e,`MemberExpression`)||!y(O(e.object),`ThisExpression`))return null;let t=C(e);if(!t)return null;let n=e.parent;for(;n&&!y(n,`ClassBody`);){if((y(n,`FunctionDeclaration`)||y(n,`FunctionExpression`))&&!y(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!y(e,`PropertyDefinition`)||e.static)&&Us(e.key)===t)return e;return null},yse=e=>{if(!y(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&y(t,`TSTypeAnnotation`)?t.typeAnnotation:null},bse=(e,n,r)=>{if(!y(e,`CallExpression`))return null;let i=O(e.callee);if(!y(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||a.kind!==`const`&&!(a.kind===`function`&&a.references.every(e=>e.flag===`read`)))return null;let o=a.initializer??a.declarationNode;return!t(o)||o.async||o.generator?null:(r.add(a.id),o)},tc=(e,t,n,r)=>{let i=O(e);if(y(i,`Identifier`)){if(i.name===t&&n.isGlobalReference(i))return!0;let e=n.symbolFor(i);if(!e||r.has(e.id))return!1;let a=Ci(e);return a?(r.add(e.id),tc(a,t,n,r)):!1}if(!y(i,`MemberExpression`)||C(i)!==t)return!1;let a=O(i.object);return Qs(a,`window`,n)||Qs(a,`globalThis`,n)},xse=(e,t,n)=>{let r=O(e);for(;y(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Ci(e);if(!i)return!1;n.add(e.id),r=O(i)}if(!y(r,`CallExpression`)||!k(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!k(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!y(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&Zs(i,t,`dom-event-target`))},nc=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(_se(e,n,t))return!0;let a=O(e);if(y(a,`Identifier`)){if(i&&(Qs(a,`document`,n)||Qs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=Ws(e);if(o&&Zs(o,n,t))return!0;let s=Hs(e);return s?(r.add(e.id),nc(s,t,n,r)):!1}if(y(a,`NewExpression`))return ec(a.callee,t,n);if(y(a,`CallExpression`)){let e=O(a.callee);if(i&&y(e,`MemberExpression`)&&Ys.has(C(e)??``)&&nc(e.object,t,n,r))return!0;let o=bse(a,n,r);return!!(o&&ue(o,n,e=>nc(e,t,n,new Set(r)),void 0,`every`))}if(y(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(y(e,`Literal`)&&e.value===null)&&!(y(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>nc(e,t,n,new Set(r)))}if(!y(a,`MemberExpression`))return!1;let o=vse(a);if(o&&y(o,`PropertyDefinition`)){let e=yse(o);if(e&&Zs(e,n,t)||o.value&&nc(o.value,t,n,r))return!0}if(!i)return!1;let s=C(a);if(s===`current`)return xse(a.object,n,r);let c=O(a.object);return s===`document`&&(Qs(c,`window`,n)||Qs(c,`globalThis`,n))?!0:s!==null&&mse.has(s)&&nc(c,t,n,r)},Sse=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Cse=e=>Sse.test(ve(e??``)),rc=(e,t)=>{let n=O(e);return y(n,`Identifier`)?t.has(n.name):y(n,`SpreadElement`)?rc(n.argument,t):y(n,`ObjectExpression`)?n.properties.some(e=>y(e,`Property`)?rc(e.value,t):y(e,`SpreadElement`)&&rc(e.argument,t)):y(n,`ArrayExpression`)?n.elements.some(e=>e&&rc(e,t)):y(n,`ConditionalExpression`)?rc(n.consequent,t)||rc(n.alternate,t):y(n,`LogicalExpression`)?rc(n.left,t)||rc(n.right,t):y(n,`SequenceExpression`)?n.expressions.some(e=>rc(e,t)):!1},ic=(e,t,n)=>{let r=O(t);if(y(e,`Identifier`)){rc(r,n)&&n.add(e.name);return}if(y(e,`AssignmentPattern`)){ic(e.left,r,n);return}if(y(e,`ObjectPattern`)&&y(r,`ObjectExpression`)){for(let t of e.properties){if(!y(t,`Property`))continue;let e=Us(t.key);if(!e)continue;let i=r.properties.find(t=>y(t,`Property`)&&Us(t.key)===e);y(i,`Property`)&&ic(t.value,i.value,n)}return}if(y(e,`ArrayPattern`)&&y(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&ic(i,e,n)}},wse=(e,n,r)=>{if(!y(e,`CallExpression`)||!r.filename)return!1;let i=O(e.callee);if(!y(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,s=o.parent,c=Yt(o);if(!c||!y(s,`ImportDeclaration`)||typeof s.source.value!=`string`)return!1;let l=St(r.filename,s.source.value,c);if(!l||!t(l))return!1;let u=l.params[n];if(!y(u,`Identifier`))return!1;let d=new Set([u.name]),f=!1;return A(l.body,e=>{if(f)return!1;if(y(e,`VariableDeclarator`)&&e.init){ic(e.id,e.init,d);return}if(y(e,`AssignmentExpression`)&&y(e.left,`Identifier`)&&rc(e.right,d)){d.add(e.left.name);return}if(y(e,`CallExpression`)){let t=O(e.callee);(y(t,`MemberExpression`)&&C(t)===`preventDefault`&&rc(t.object,d)||e.arguments.some(e=>!y(e,`SpreadElement`)&&rc(e,d)))&&(f=!0);return}if(y(e,`NewExpression`)&&e.arguments.some(e=>!y(e,`SpreadElement`)&&rc(e,d))){f=!0;return}let t=y(e,`AssignmentExpression`)?O(e.left):null;y(e,`AssignmentExpression`)&&(y(t,`MemberExpression`)&&rc(t.object,d)||rc(e.right,d))&&(f=!0)}),!f},Tse=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),Ese=new Set([`catch`,`finally`,`then`]),ac=(e,n,r=new Set)=>{let i=(e,r)=>{let a=O(e);if(t(a))return a.async;if(!y(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||r.has(o.id))return!1;let s=o.initializer??o.declarationNode,c=new Set(r);return c.add(o.id),i(s,c)},a=O(e);if(y(a,`Identifier`)){let e=n.symbolFor(a);if(!e||!e.initializer||r.has(e.id))return!1;let t=new Set(r);return t.add(e.id),ac(e.initializer,n,t)}if(y(a,`NewExpression`)){let e=O(a.callee);return y(e,`Identifier`)&&e.name===`Promise`&&n.isGlobalReference(e)}if(!y(a,`CallExpression`))return!1;let o=O(a.callee);if(y(o,`Identifier`))return i(o,r);if(!y(o,`MemberExpression`))return!1;let s=O(o.object);return Ese.has(C(o)??``)?ac(o.object,n,r):!!(Tse.has(C(o)??``)&&y(s,`Identifier`)&&s.name===`Promise`&&n.isGlobalReference(s))},oc=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Dse=new Set([`catch`,`finally`,`then`]),sc=e=>{if(!t(e))return!1;let n=!1;return A(e,r=>{if(n||r!==e&&t(r))return!1;y(r,`CallExpression`)&&y(r.callee,`MemberExpression`)&&C(r.callee)===`preventDefault`&&(n=!0)}),n},Ose=(e,t)=>{let n=!1;return A(e,e=>{if(n)return!1;y(e,`AssignmentExpression`)&&e.operator===`=`&&y(e.left,`Identifier`)&&e.left.name===t&&sc(e.right)&&(n=!0)}),n},kse=e=>{if(!e)return!1;if(sc(e))return!0;if(y(e,`Identifier`)){let t=T(e,e.name);return t?sc(t.initializer??void 0)?!0:Ose(t.scopeOwner,e.name):!1}if(y(e,`MemberExpression`)){let t=ds(e);return t?sc(t):!1}return!1},cc=(e,n)=>{if(!e)return;let r=O(e);if(t(r))return r;if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r),i=e?.initializer??e?.declarationNode;if(i&&t(i))return i;let a=T(r,r.name),o;return e&&a&&A(a.scopeOwner,i=>{if(i.range[0]>=r.range[0])return!1;if(y(i,`AssignmentExpression`)&&i.operator===`=`&&y(i.left,`Identifier`)&&n.scopes.symbolFor(i.left)===e){let e=O(i.right);o=t(e)?e:void 0}}),o}return y(r,`MemberExpression`)?ds(r):void 0},Ase=(e,t,n)=>{if(!wse(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(O(e)===r||y(e,`UnaryExpression`)&&e.operator===`!`||y(e,`LogicalExpression`)){r=e;continue}return y(e,`IfStatement`)&&e.test===r||y(e,`ConditionalExpression`)&&e.test===r||y(e,`WhileStatement`)&&e.test===r||y(e,`DoWhileStatement`)&&e.test===r||y(e,`ForStatement`)&&e.test===r}return!1},jse=(e,n)=>{let r=cc(e,n);if(!r){let t=e?O(e):void 0;if(!t||!y(t,`Identifier`))return!1;let r=n.scopes.symbolFor(t);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<t.range[0]&&e.flag!==`read`))}let i=new Map,a=(e,t=new Set)=>{let r=O(e);if(y(r,`Identifier`)){if(oc.has(r.name)&&n.scopes.isGlobalReference(r))return!0;let e=n.scopes.symbolFor(r);if(!e||t.has(e.id))return!1;let i=Ci(e);if(!i)return!1;let o=new Set(t);return o.add(e.id),a(i,o)}if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return oc.has(C(r)??``)&&y(i,`Identifier`)&&(i.name===`window`||i.name===`globalThis`)&&n.scopes.isGlobalReference(i)},o=e=>{let t=e;for(;t.parent&&O(t.parent)===O(t);)t=t.parent;let r=t.parent;if(y(r,`NewExpression`)){let e=O(r.callee);return r.arguments.some(e=>e===t)&&y(e,`Identifier`)&&e.name===`Promise`&&n.scopes.isGlobalReference(e)}if(!y(r,`CallExpression`))return!1;if(O(r.callee)===O(t))return!0;if(!r.arguments.some(e=>e===t))return!1;let i=O(r.callee);if(a(i))return!1;if(y(i,`Identifier`)||!y(i,`MemberExpression`))return!0;let o=C(i);return!(Dse.has(o??``)&&ac(i.object,n.scopes)||o===`addEventListener`&&nc(i.object,`dom-event-target`,n.scopes))},s=(e,r,a=!1)=>{if(!t(e))return!1;let c=i.get(e)??new Set;if(c.has(r))return!1;c.add(r),i.set(e,c);let l=e.params[r];if(!l)return!a;let u=y(l,`AssignmentPattern`)?l.left:l;if(!y(u,`Identifier`))return!(a&&y(u,`ObjectPattern`));let d=n.scopes.symbolFor(u);if(!d)return!1;let f=new Set([d]),p=new Set,m=e=>{let t=O(e);if(!y(t,`Identifier`))return!1;let r=n.scopes.symbolFor(t);return!!(r&&f.has(r))},h=e=>{let t=O(e);if(m(t))return!0;if(y(t,`SpreadElement`))return h(t.argument);if(y(t,`MemberExpression`)){let e=O(t.object);if(y(e,`Identifier`)){let t=n.scopes.symbolFor(e);if(t&&p.has(t))return!0}let r=C(t);if(y(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>y(e,`Property`)&&cs(e.key)===r);return!!(y(t,`Property`)&&h(t.value))}if(y(e,`ArrayExpression`)&&y(t.property,`Literal`)&&typeof t.property.value==`number`){let n=e.elements[t.property.value];return!!(n&&h(n))}return!1}return y(t,`ObjectExpression`)?t.properties.some(e=>y(e,`Property`)?h(e.value):y(e,`SpreadElement`)&&h(e.argument)):y(t,`ArrayExpression`)?t.elements.some(e=>e&&h(e)):y(t,`ConditionalExpression`)?h(t.consequent)||h(t.alternate):y(t,`LogicalExpression`)?h(t.left)||h(t.right):y(t,`SequenceExpression`)?t.expressions.some(h):!1},g=(e,t)=>{let r=O(t);if(y(e,`Identifier`)){if(!h(r))return;let t=n.scopes.symbolFor(e);t&&f.add(t);return}if(y(e,`AssignmentPattern`)){g(e.left,r);return}if(y(e,`RestElement`)&&y(e.argument,`Identifier`)){if(!h(r))return;let t=n.scopes.symbolFor(e.argument);t&&p.add(t);return}if(y(e,`ObjectPattern`)&&y(r,`ObjectExpression`)){for(let t of e.properties){if(y(t,`RestElement`)){g(t,r);continue}if(!y(t,`Property`))continue;let e=cs(t.key);if(!e)continue;let n=r.properties.find(t=>y(t,`Property`)&&cs(t.key)===e);y(n,`Property`)&&g(t.value,n.value)}return}if(y(e,`ArrayPattern`)&&y(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&g(n,e)}},_=!1;return A(e.body,r=>{if(_||r!==e.body&&t(r)&&!o(r))return!1;if(y(r,`VariableDeclarator`)&&r.init){g(r.id,r.init);return}if(y(r,`AssignmentExpression`)&&h(r.right)){if(y(r.left,`Identifier`)){let e=n.scopes.symbolFor(r.left);e&&f.add(e)}else _=!0;return}if(y(r,`AssignmentExpression`)){let e=O(r.left),t=O(r.right);if(y(e,`MemberExpression`)&&C(e)===`returnValue`&&m(e.object)&&y(t,`Literal`)&&t.value===!1){_=!0;return}}if(y(r,`ReturnStatement`)&&r.argument&&h(r.argument)){_=!0;return}if(y(r,`NewExpression`)){r.arguments.some(e=>!y(e,`SpreadElement`)&&h(e))&&(_=!0);return}if(!y(r,`CallExpression`))return;let i=O(r.callee);if(y(i,`MemberExpression`)&&C(i)===`preventDefault`&&m(i.object)){_=!0;return}let a=r.arguments.findIndex(e=>h(e));if(a<0)return;let c=cc(r.callee,n);(!c&&!Ase(r,a,n)||c&&s(c,a))&&(_=!0)}),_};return s(r,0,!0)},lc=(e,t)=>!!e.properties?.some(e=>y(e,`Property`)&&y(e.key,`Identifier`)&&e.key.name===`passive`&&y(e.value,`Literal`)&&e.value.value===t),uc=x({id:`client-passive-event-listeners`,title:`Non-passive scroll listener`,tags:[`test-noise`],severity:`warn`,recommendation:"Add `{ passive: true }` as the third argument: `addEventListener('touchmove', handler, { passive: true })`. Only do this if the handler doesn't call `event.preventDefault()`, since passive listeners ignore it (which breaks pull-to-refresh, custom gestures, and nested scrolling).",create:e=>{if(Cse(e.filename))return Ae;let t=Bs(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=O(n.callee);if(!Vs(a,`addEventListener`)||!nc(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,$s(a.object,e.scopes),t=>nc(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!y(o,`Literal`)||typeof o.value!=`string`||!uee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||y(c,`SpreadElement`))return;let l=cc(c,e)??c,u=r.get(l);if(u===void 0&&(u=kse(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=jse(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!y(f,`ObjectExpression`)||lc(f,!1)||lc(f,!0))||e.report({node:n,message:`"${s}" listener without { passive: true } makes scrolling janky for your users. Only add it if the handler doesn't call event.preventDefault(), since passive listeners silently ignore preventDefault().`})};return{AssignmentExpression(e){t.record(e)},CallExpression(e){t.record(e),Vs(O(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),H=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},dc=e=>{if(!e.startsWith(`use`))return!1;if(e.length===3)return!0;let t=e.charCodeAt(3);return t>=65&&t<=90||t>=48&&t<=57},fc=e=>H(e)||dc(e),Mse=(t,n)=>{let r=n?e(t):t;return y(r,`Identifier`)?r.name:y(r,`MemberExpression`)&&y(r.property,`Identifier`)?r.property.name:null},pc=(e,t=!1)=>{let n=v(e);for(;;){let e=n.parent;if(!e||!y(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Mse(e.callee,t);if(!r||!Tn.has(r))return n;n=v(e)}},Nse=(e,t)=>{let n=pc(e,t),r=n.parent;return r&&y(r,`VariableDeclarator`)&&y(r.id,`Identifier`)&&r.init===n&&fc(r.id.name)?r.id.name:null},mc=(e,t=!1)=>(y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`))&&e.id?fc(e.id.name)?e.id.name:null:Nse(e,t),hc=e=>y(e,`MemberExpression`)&&!e.computed&&y(e.property,`Identifier`)?e.property.name:null,Pse=[`react`,`use-context-selector`,`react-tracked`],gc=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!y(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Pse.includes(t.source.value)?null:t.source.value},_c=e=>gc(e)!==null&&!!(e&&(y(e.declarationNode,`ImportDefaultSpecifier`)||y(e.declarationNode,`ImportNamespaceSpecifier`))),Fse=(e,t)=>{if(!y(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!y(n.declarationNode,`VariableDeclarator`)||!y(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!y(r,`Property`)||S(r,{allowComputedString:!0})!==`createContext`)return!1;let i=O(n.initializer);return y(i,`Identifier`)&&_c(w(i,t))},Ise=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){if(Fse(n,t))return!0;let e=w(n,t);return gc(e)!==null&&!!(e&&Lt(e.declarationNode)===`createContext`)}if(!y(n,`MemberExpression`)||(hc(n)??(n.computed&&y(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=O(n.object);return y(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:_c(w(r,t)):!1},vc=(e,t)=>{let n=O(e);return y(n,`CallExpression`)&&Ise(n.callee,t)},yc=(e,t)=>{let n=new Set;if(!y(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(y(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!y(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!y(r,`VariableDeclarator`)||!y(r.id,`Identifier`)||!r.init||!E(r.init)||!vc(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},bc=e=>{if(y(e,`FunctionDeclaration`)&&y(e.id,`Identifier`))return e.id;let t=v(e),n=t.parent;if(y(n,`VariableDeclarator`)&&y(n.id,`Identifier`))return n.id;if(y(n,`AssignmentExpression`)&&n.right===t&&y(n.left,`Identifier`))return n.left;if(y(n,`CallExpression`)){let e=n.parent;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`))return e.id}return null},xc=e=>bc(e)?.name??null,Sc=(e,t)=>{let n=bc(e);if(!n)return[];let r=t.scopeFor(e);for(;r;){let e=r.symbols.filter(e=>e.bindingIdentifier===n);if(e.length>0)return e;r=r.parent}return[]},U=(e,t)=>e?.find(e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&e.name.name===t),Lse=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Cc=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(y(t,`VariableDeclaration`))return t.kind===`const`;if(!Lse.has(t.type))return!1;t=t.parent??null}return!1},wc=(e,t)=>{if(!y(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=Lt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Rse=(e,t)=>{if(!wc(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Ye(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Tc=(e,t,n,r)=>{if(!y(e,`JSXIdentifier`))return!1;if(r&&wc(e,n))return!0;let i=n.symbolFor(e);return i?t.has(i.id)||i.scope.symbols.some(n=>n.name===e.name&&t.has(n.id)):!1},Ec=(e,t,n)=>y(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Tc(e.object,t,n,!0):Rse(e,n)||Tc(e,t,n,!1),Dc="Every consumer of this context redraws on each render because its `value` is a fresh object/array/function rebuilt each render — memoize it in component scope (extract mapped providers into a child component first), or move it outside the component.",Oc=new Set([`flatMap`,`map`]),zse=new Set([`forwardRef`,`memo`]),Bse=new Set([`useCallback`,`useMemo`]),Vse=new Set([`createElement`]),kc=e=>{let t=O(e);return y(t,`ObjectExpression`)||y(t,`ArrayExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`)},Ac=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&y(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&rt(n,e.scopeOwner)?!0:!!(e.initializer&&y(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},Hse=e=>t(e.scopeOwner)?e.scopeOwner:b(e.scopeOwner),Use=(e,t)=>{let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=(e[r]??0)-(t[r]??0);if(n!==0)return n}return e.length-t.length},jc=e=>{let t=pc(e);return!!(t.parent&&y(t.parent,`ExportDefaultDeclaration`))},Wse=e=>{if(!y(e,`FunctionExpression`)||!e.id)return!1;let t=v(e);if(pc(e)!==t)return!1;let n=t.parent;return!(n&&y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`))},Gse=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=O(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),y(a,`ConditionalExpression`)){let e=O(a.test);y(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(y(a,`LogicalExpression`)){let e=O(a.left);if(y(e,`Literal`)){let t=a.operator===`&&`&&!!e.value||a.operator===`||`&&!e.value||a.operator===`??`&&e.value===null;r.push(t?a.right:a.left);continue}r.push(a.right),a.operator!==`&&`&&r.push(a.left);continue}if(y(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(y(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(y(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(y(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(y(e,`SpreadElement`)?e.argument:e);continue}if(y(a,`CallExpression`)&&k(a,Vse,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&y(e,`ObjectExpression`))for(let t of e.properties){if(!y(t,`Property`)||t.computed)continue;let e=t.key;(y(e,`Identifier`)&&e.name===`children`||y(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(y(a,`Identifier`)){let e=T(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Cc(e)&&Ac(e,a)&&b(e.bindingIdentifier)===b(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(y(a,`JSXElement`)||y(a,`JSXFragment`)){r.push(...a.children);continue}y(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Mc=(e,t,n)=>ue(t,n.scopes,t=>Gse(t,e,n),n.cfg),Kse=(e,t,n)=>e.arguments[0]===t&&k(e,Bse,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(y(e.callee,`MemberExpression`)&&Oc.has(C(e.callee)??``)),Nc=(e,n,r)=>{let i=e.arguments.findIndex(e=>e===n);if(i<0)return!1;let a=M(e.callee,r.scopes);if(!a||!t(a)||a.async||a.generator)return!1;let o=a.params[i];if(!o||!y(o,`Identifier`)||!(r.scopes.ownScopeFor(a)?.symbolsByName.get(o.name))?.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(n&&y(n,`CallExpression`)&&n.callee===t&&b(n)===a&&rt(n,a)&&r.cfg.isUnconditionalFromEntry(n)&&Mc(n,a,r))}))return!1;let s=b(e);return!!(s&&(mc(s)!==null||jc(s))&&Mc(e,s,r))},qse=(e,t)=>{let n=Sc(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=v(e.identifier),r=n.parent;return!r||!y(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&k(r,zse,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:Kse(r,n,t)||!Nc(r,n,t)})},Jse=(e,t)=>{let n=v(e),r=n.parent;if(!r||!y(r,`CallExpression`))return!1;let i=b(r);return!i||mc(i)===null&&!jc(i)?!1:r.arguments[0]===n&&y(r.callee,`MemberExpression`)&&Oc.has(C(r.callee)??``)&&Mc(r,i,t)?!0:r.callee===n&&Mc(r,i,t)||r.arguments.some(e=>e===n)&&Nc(r,n,t)},Pc=x({id:`context-provider-value-from-unmemoized-local-literal`,title:`Context value from an unmemoized local literal`,tags:[`react-jsx-only`,`test-noise`],severity:`warn`,category:`Performance`,disabledWhen:[`react-compiler`],recommendation:`Memoize the context value in component scope so consumers do not redraw every render. For mapped providers, extract each item into a child component and memoize there.`,create:e=>{let t=t=>e.cfg.isUnconditionalFromEntry(t)&&B(t,e),n=new Set;return{Program(t){n=yc(t,e.scopes)},JSXOpeningElement(r){if(!Ec(r.name,n,e.scopes))return;let i=b(r);if(!i)return;let a=Jse(i,e),o=jc(i);if((Wse(i)||qse(i,e))&&!a&&!o||mc(i)===null&&!o&&!a)return;let s=U(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!y(c,`JSXExpressionContainer`))return;let l=O(c.expression);if(!y(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Jee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:ze(n.identifier)}))).toSorted((e,t)=>Use(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!kc(d.assignedExpression))return;e.report({node:s,message:Dc});return}let f=T(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Ac(f,l)&&Hse(f)===i&&kc(f.initializer)&&e.report({node:s,message:Dc})}}}}),Yse=[`lucide-react`,`lucide-react-native`,`react-feather`,`phosphor-react`,`iconoir-react`,`react-bootstrap-icons`,`@heroicons/react`,`@tabler/icons-react`,`@phosphor-icons/react`,`@radix-ui/react-icons`,`@mui/icons-material`,`@ant-design/icons`,`@primer/octicons-react`],Fc=e=>e===`react-icons`?e:e.startsWith(`react-icons/`)?e.split(`/`).slice(0,2).join(`/`):e===`@fortawesome/react-fontawesome`||/^@fortawesome\/free-[^/]+-svg-icons(?:\/|$)/.test(e)?`@fortawesome`:Yse.find(t=>e===t||e.startsWith(`${t}/`))??null,Xse=/[\p{L}\p{Nd}]/u,Ic=e=>Xse.test(e),Lc=e=>oi.has(e),Rc=(e,t)=>{let n=[],r=0,i=0,a=null,o=!1;for(let s=0;s<e.length;s+=1){let c=e[s];if(o){o=!1;continue}if(c===`\\`){o=!0;continue}if(a){c===a&&(a=null);continue}if(c===`"`||c===`'`){a=c;continue}c===`[`&&(r+=1),c===`]`&&(r=Math.max(0,r-1)),c===`(`&&(i+=1),c===`)`&&(i=Math.max(0,i-1)),r===0&&i===0&&t(c)&&n.push(s)}return n},W=e=>{let t=[],n=0;for(let r of Rc(e,e=>/\s/.test(e))){let i=e.slice(n,r);i&&t.push(i),n=r+1}let r=e.slice(n);return r&&t.push(r),t},Zse=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Qse=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),zc=e=>e.toLowerCase()===`hidden`,$se=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=W(i);if(a.length===0)continue;let o=e>0&&!/^\s/.test(i),s=e<t.length-1&&!/\s$/.test(i);o&&a.shift(),s&&a.pop(),n.push(...a)}return n},ece=e=>{let t=P(e.attributes,`className`)??P(e.attributes,`class`);if(!t)return!1;let n=I(t);return n===null?t.value&&y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`TemplateLiteral`)?$se(t.value.expression).some(zc):!1:W(n).some(zc)},tce=e=>{let t=P(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(y(n,`Literal`))return n.value!==`false`&&!!n.value;if(y(n,`JSXExpressionContainer`)){let e=O(n.expression);if(y(e,`Literal`))return!!e.value}return!0},nce={display:`none`,visibility:`hidden`},rce=e=>{let t=P(e.attributes,`style`);if(!t?.value||!y(t.value,`JSXExpressionContainer`))return!1;let n=O(t.value.expression);if(!y(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!y(e,`Property`)||e.computed)continue;let t=e.key,n=y(t,`Identifier`)?t.name:y(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=nce[n];if(!r)continue;let i=O(e.value);if(y(i,`Literal`)&&i.value===r)return!0}return!1},Bc=(e,t)=>br(e,t)||tce(e)||rce(e),ice=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=P(t.attributes,`type`),r=n?dr(n):null;return!r||r.toLowerCase()!==`file`||!ece(t)?!1:!!P(t.attributes,`ref`)},ace=[`link`,`canvas`],oce=new Set([`alt`,`aria-label`,`aria-labelledby`]),Vc=`label`,sce=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.controlHasAssociatedLabel??{}:{};return{depth:Math.min(n.depth??5,25),labelAttributes:n.labelAttributes??[],controlComponents:n.controlComponents??[],ignoreElements:n.ignoreElements??[],ignoreRoles:n.ignoreRoles??[]}},Hc=(e,t)=>{let n=new Set(t);for(let t of e){if(y(t,`JSXSpreadAttribute`))return!0;if(!y(t,`JSXAttribute`)||!y(t.name,`JSXIdentifier`))continue;let e=Cn(t.name);if(e&&(oce.has(e)||n.has(e)))return t.value?y(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Uc=e=>{if(!e?.value)return!1;let t=e.value;if(y(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(y(t,`JSXExpressionContainer`)){let e=O(t.expression);if(y(e,`JSXEmptyExpression`))return!1;if(y(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(y(e,`TemplateLiteral`)){let t=In(e);if(t!==null)return t.trim().length>0}return!0}return!0},cce=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!y(r,`JSXAttribute`))&&Cn(r.name)?.toLowerCase()===n)return r}},Wc=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(y(r,`SpreadElement`))return null;let e=O(r);if(y(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(y(e,`TemplateLiteral`)){let t=In(e);if(t===null)return null;n.push(t);continue}if(y(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||y(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(y(e,`ArrayExpression`)){let r=Wc(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},Gc=(e,t)=>{if(y(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!y(e,`MemberExpression`))return!1;let n=O(e.object);return y(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Kc=(e,t)=>{let n=O(e);if(y(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(y(n,`TemplateLiteral`)){let e=In(n);return e===null||e.trim().length>0}if(y(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(y(n,`UnaryExpression`)&&n.operator===`void`||y(n,`UnaryExpression`)&&n.operator===`!`||y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`)||y(n,`ClassExpression`))return!1;if(y(n,`ArrayExpression`)){let e=Wc(n,t);return e===null||e.trim().length>0}if(Gc(n,t)||y(n,`CallExpression`)&&Gc(n.callee,t))return!1;if(y(n,`ConditionalExpression`))return Kc(n.consequent,t)&&Kc(n.alternate,t);if(y(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Kc(e,t):!1}if(y(n,`LogicalExpression`)){let e=O(n.left);if(!y(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Kc(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Kc(r?n.right:e,t):Kc(r?e:n.right,t)}return!0},lce=(e,t)=>e?.value?y(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:y(e.value,`JSXExpressionContainer`)?Kc(e.value.expression,t):!0:!1,qc=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},Jc=e=>typeof e==`string`?qc(`literal`,e):typeof e==`number`?qc(`literal`,String(e)):null,Yc=e=>{let t=O(e);if(y(t,`Identifier`))return t.name;if(y(t,`MemberExpression`)){if(t.computed)return null;let e=Yc(t.object),n=t.property;return e===null||!y(n,`Identifier`)?null:`${e}.${n.name}`}return null},uce=e=>{let t=e.quasis??[],n=e.expressions??[],r=[];for(let[e,i]of t.entries())if(r.push(i.value?.cooked??i.value?.raw??``),e<n.length){let t=Yc(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return qc(`template`,r.join(``))},Xc=e=>{let t=O(e);if(y(t,`Literal`)){let e=Jc(t.value);return e===null?[]:[e]}if(y(t,`TemplateLiteral`)){let e=In(t);if(e!==null){let t=qc(`literal`,e);return t===null?[]:[t]}let n=uce(t);return n===null?[]:[n]}if(y(t,`ConditionalExpression`))return[...Xc(t.consequent),...Xc(t.alternate)];let n=Yc(t);if(n!==null){let e=qc(`identifier`,n);return e===null?[]:[e]}return[]},Zc=e=>{if(!e?.value)return[];let t=e.value;if(y(t,`Literal`)){let e=Jc(t.value);return e===null?[]:[e]}return y(t,`JSXExpressionContainer`)?Xc(t.expression):[]},dce=/^Icon($|[A-Z0-9_])|Icon$/,fce=(e,t)=>{if(t.iconComponentNames.has(e)||dce.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},Qc=(e,t,n)=>{let r=O(e);if(y(r,`JSXEmptyExpression`))return!1;if(y(r,`Literal`))return typeof r.value==`string`?Ic(r.value):typeof r.value==`number`;if(y(r,`TemplateLiteral`)){let e=In(r);return e===null||Ic(e)}return y(r,`ConditionalExpression`)?Qc(r.consequent,t,n)||Qc(r.alternate,t,n):y(r,`LogicalExpression`)?r.operator===`&&`?Qc(r.right,t,n):Qc(r.left,t,n)||Qc(r.right,t,n):y(r,`JSXElement`)||y(r,`JSXFragment`)?$c(r,t,n):!0},$c=(e,t,n)=>{if(t>n.depth)return!1;if(y(e,`JSXExpressionContainer`))return Qc(e.expression,t,n);if(y(e,`JSXText`))return Ic(e.value);if(y(e,`JSXFragment`))return e.children.some(e=>$c(e,t+1,n));if(y(e,`JSXElement`)){if(Hc(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=hr(e.openingElement,n.settings);if(H(t)&&!n.controlComponents.includes(t)&&!fce(t,n))return!0}for(let r of e.children)if($c(r,t+1,n))return!0}return!1},el=(e,t)=>Hc(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>$c(e,1,t)),tl=e=>y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`)||y(e,`FunctionDeclaration`),nl=(e,t)=>{if(e===Vc||e===`Label`)return!0;let n=P(t.attributes,`component`);return n?dr(n)===Vc:!1},pce=(e,t)=>{let n=e.parent,r=!1;for(;n&&!y(n,`JSXAttribute`);){if(tl(n)&&(r=!0),y(n,`JSXElement`)){let e=n.openingElement;if(Bc(e,t.settings))return`hidden`;let i=hr(e,t.settings);if(!r&&nl(i,e)&&el(n,t)||H(i)&&Uc(P(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},rl=e=>{let t=e.parent;for(;t;){if(y(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},mce=e=>{let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`))return y(t.id,`Identifier`)?t.id.name:null;if(tl(t)){if(y(t,`FunctionDeclaration`)&&t.id&&y(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},il=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){t.add(n.name);return}if(y(n,`CallExpression`)){let e=O(n.callee);y(e,`Identifier`)&&t.add(e.name);return}if(y(n,`LogicalExpression`)){il(n.left,t),il(n.right,t);return}y(n,`ConditionalExpression`)&&(il(n.consequent,t),il(n.alternate,t))},al=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(y(i,`JSXExpressionContainer`)){il(i.expression,r);continue}(y(i,`JSXElement`)||y(i,`JSXFragment`))&&al(i,t+1,n,r)}},hce=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=P(t.attributes,`type`);if(!n)return!0;let r=dr(n);return r===null?!0:Qse.has(r.toLowerCase())},ol=x({id:`control-has-associated-label`,title:`Control missing accessible label`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Give every interactive control a label screen readers can read.`,category:`Accessibility`,create:e=>{let t=sce(e.settings),n=ct(e.filename),r=new Set,i=new Set,a=new Set,o=new Set,s=[],c={depth:t.depth,customAttributes:t.labelAttributes,controlComponents:t.controlComponents,settings:e.settings,iconComponentNames:r,iconNamespaceNames:i};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!Fc(t)))for(let t of e.specifiers??[]){if(!y(t.local,`Identifier`))continue;let e=t.local.name;y(t,`ImportNamespaceSpecifier`)?i.add(e):r.add(e)}},JSXElement(r){if(n)return;let i=r.openingElement,l=hr(i,e.settings);if(nl(l,i)&&el(r,c)&&!rl(r)){let e=P(i.attributes,`htmlFor`);for(let t of Zc(e))a.add(t);l===Vc&&al(r,1,c,o)}if(ace.includes(l)||t.ignoreElements.includes(l))return;let u=P(i.attributes,`role`),d=u?dr(u):null;if(d&&t.ignoreRoles.includes(d)||Bc(i,e.settings)||ice(l,i))return;let f=xi.has(l),p=!Zse.has(l)&&ji(l,i),m=d===`separator`&&!P(i.attributes,`tabIndex`),h=d!==null&&Lc(d)&&!m,g=t.controlComponents.includes(l);if(p||f&&h||g){if(l===`input`){let e=P(i.attributes,`type`),t=e?dr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Uc(P(i.attributes,`value`)))return}if(!(f&&lce(cce(i.attributes,`title`),e.scopes))&&!(hce(l,i)&&Uc(P(i.attributes,`placeholder`)))&&!Hc(i.attributes,t.labelAttributes)&&!rl(r)&&pce(r,c)===null){if(l!==`select`){for(let e of r.children)if($c(e,1,c))return}s.push({opening:i,controlIdKeys:Zc(P(i.attributes,`id`)),enclosingBindingName:mce(r)})}}},"Program:exit"(){for(let t of s)t.controlIdKeys.some(e=>a.has(e))||t.enclosingBindingName!==null&&o.has(t.enclosingBindingName)||e.report({node:t.opening,message:"Blind users can't tell what this control does because its name is missing or only a symbol, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}),sl=(t,n,r)=>{let i=O(t);if(y(i,`JSXElement`)){n.push(i.openingElement);for(let e of i.children)sl(e,n,r);return}if(y(i,`JSXFragment`)){for(let e of i.children)sl(e,n,r);return}if(r){if(y(i,`JSXExpressionContainer`)){sl(i.expression,n,!0);return}if(y(i,`ConditionalExpression`)){let t=Dn(e(i.test));if(t!==null){sl(t?i.consequent:i.alternate,n,!0);return}sl(i.consequent,n,!0),sl(i.alternate,n,!0);return}if(y(i,`LogicalExpression`)){for(let e of gt(i))sl(e,n,!0);return}if(y(i,`ArrayExpression`)){for(let e of i.elements)e&&!y(e,`SpreadElement`)&&sl(e,n,!0);return}if(y(i,`SequenceExpression`)){if(i.expressions.length===0)return;sl(e(i),n,!0)}}},cl=(e,t={})=>{let n=[];for(let r of e.children)sl(r,n,t.includeStaticExpressionBranches===!0);return n},gce=new Set([`grid`,`table`,`treegrid`]),_ce=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(y(i,`JSXAttribute`)){if(Cn(i.name)?.toLowerCase()===t)return!1;continue}if(y(i,`JSXSpreadAttribute`)&&qr(i.argument,t,!1,n.scopes))return!0}}return!1},ll=(e,t,n,r)=>n.isUnknown&&_ce(e,t,r),vce=e=>e.attribute?I(e.attribute):_r(e.expression),ul=(e,t,n)=>{if(e.attribute)return Xr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=O(e.expression),i=_r(r);return i===null?y(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Yr(r)||y(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},yce=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=fn(e.attributes,n,!1);if(ll(e,n,r,t))return null;if(ul(r,n.startsWith(`aria-`),t))return!0}return!1},dl=e=>{for(let t of e){if(y(t,`JSXElement`)&&j(t.openingElement)===`caption`)return t;if(y(t,`JSXFragment`)){let e=dl(t.children);if(e)return e}}return null},bce=(e,t)=>br(e.openingElement,t.settings)?!1:Qr(e,t.settings),xce=(e,t,n)=>{let r=e.parent;for(;r;){if(y(r,`JSXElement`)){if(br(r.openingElement,n.settings))return!1;if(j(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Sce=(e,t)=>{let n=e.parent;for(;n;){if(y(n,`JSXElement`)&&br(n.openingElement,t.settings))return!0;n=n.parent}return!1},fl=x({id:`data-table-requires-accessible-name`,title:`Data table has no accessible name`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give data tables a concise caption, or reference an existing visible title with aria-labelledby.`,create:e=>({JSXElement(t){let n=t.openingElement;if(j(n)!==`table`||Mr(e,n)||br(n,e.settings)||Sce(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>ll(n,t,fn(n.attributes,t,!1),e)))return;let r=fn(n.attributes,`children`,!1),i=fn(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=fn(n.attributes,`role`,!1);if(ll(n,`role`,a,e))return;if(a.isPresent){let t=vce(a);if(t===null){if(ul(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>ai.has(e));if(e&&!gce.has(e))return}}if(!cl(t).some(n=>j(n)===`th`&&xce(n,t,e)))return;let o=dl(t.children),s=yce(n,e);s!==null&&(o&&bce(o,e)||s||e.report({node:n,message:`This data table has headers but no accessible name. Add a caption or connect the table to a visible title with aria-labelledby.`}))}})}),pl=(e,n,r)=>{let i=O(e);if(t(i))return[i];if(y(i,`Identifier`)){if(r){let e=w(i,r);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:t(e.declarationNode)?[e.declarationNode]:e.initializer&&t(O(e.initializer))?[O(e.initializer)]:[]}let e=T(n,i.name);return e?.initializer&&t(O(e.initializer))?[O(e.initializer)]:[]}if(y(i,`ConditionalExpression`))return[...pl(i.consequent,n,r),...pl(i.alternate,n,r)];if(y(i,`SequenceExpression`)){let e=i.expressions.at(-1);return e?pl(e,n,r):[]}return[]},ml=(e,n)=>t(e)?y(e.body,`BlockStatement`)?tn(e).flatMap(e=>e.argument?pl(e.argument,e,n):[]):pl(e.body,e,n):[],hl=(e,t,n={})=>{let r=t.symbolFor(e);if(!r)return[];let i=[r.bindingIdentifier],a=[r],o=new Set,s=new Set([r.id]);for(;a.length>0;){let e=a.pop();if(!(!e||o.has(e.id))){o.add(e.id);for(let r of e.references){if(r.flag!==`read`)continue;let e=v(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&y(c,`MemberExpression`)&&c.object===o&&C(c)===`current`&&(o=v(c),c=o.parent),n.includeReactRefContainers&&y(c,`CallExpression`)&&c.arguments[0]===e&&k(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=v(c),c=o.parent),!y(c,`VariableDeclarator`)||c.init!==o||!y(c.id,`Identifier`))continue;let l=t.symbolFor(c.id);!l||s.has(l.id)||(s.add(l.id),i.push(l.bindingIdentifier),a.push(l))}}}return i},gl=(e,t,n)=>k(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),_l=(e,t)=>gl(e,dn,t),Cce=new Set([`useMemo`,`useCallback`,`useRef`]),wce=new Set([`useRef`]),vl=new Set([`debounce`,`throttle`]),yl=new Set([`cancel`,`flush`]),Tce=new Set([`document`,`window`]),Ece=new Set([`then`,`catch`,`finally`]),bl=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),xl=e=>{if(!y(e,`CallExpression`))return!1;let t=O(e.callee);if(y(t,`Identifier`)){if(!vl.has(t.name))return!1;let e=T(t,t.name);return!e?.initializer||!y(e.initializer,`ImportSpecifier`)&&!y(e.initializer,`ImportDefaultSpecifier`)?!1:bl(qe(t,t.name))}if(y(t,`MemberExpression`)&&vl.has(C(t)??``)){let e=O(t.object);if(!y(e,`Identifier`))return!1;let n=T(e,e.name);return!n?.initializer||!y(n.initializer,`ImportNamespaceSpecifier`)&&!y(n.initializer,`ImportDefaultSpecifier`)?!1:bl(qe(e,e.name))}return!1},Dce=e=>{if(!y(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=O(t);if(xl(n))return n;if(!y(n,`ArrowFunctionExpression`)&&!y(n,`FunctionExpression`))return null;if(!y(n.body,`BlockStatement`)){let e=O(n.body);return xl(e)?e:null}for(let e of n.body.body??[])if(y(e,`ReturnStatement`)&&e.argument){let t=O(e.argument);if(xl(t))return t}return null},Oce=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=to(r,[`trailing`],t,n);return i?i.properties.some(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`trailing`&&y(e.value,`Literal`)&&e.value.value===!1):!1},Sl=e=>{let t=O(e);for(;y(t,`MemberExpression`);)t=O(t.object);return y(t,`Identifier`)?t:null},Cl=(e,t)=>{let n=Sl(e);return n?t.symbolFor(n)?.id??null:null},wl=(e,t)=>{let n=O(e);if(y(n,`MemberExpression`))return yl.has(C(n)??``)?Cl(n.object,t):null;if(!y(n,`Identifier`))return null;let r=T(n,n.name)?.bindingIdentifier?.parent;if(!y(r,`Property`))return null;let i=y(r.key,`Identifier`)?r.key.name:y(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!yl.has(i))return null;let a=r.parent,o=a?.parent;return!y(a,`ObjectPattern`)||!y(o,`VariableDeclarator`)||!o.init?null:Cl(o.init,t)},kce=(e,n,r)=>{A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`CallExpression`))return;let a=wl(i.callee,r);a!==null&&n.add(a)})},Ace=(e,n)=>{let r=new Set,i=new Set,a=new Set;return A(e,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(_l(e,n)){let r=e.arguments?.[0],o=r?O(r):null;if(o&&t(o)){if($a(o,e=>{if(!y(e,`CallExpression`))return;let t=Cl(e.callee,n);t!==null&&i.add(t)}),y(o.body,`BlockStatement`))for(let e of tn(o)){if(!e.argument)continue;let t=wl(e.argument,n);t!==null&&a.add(t)}else{let e=wl(o.body,n);e!==null&&a.add(e)}for(let e of ml(o))kce(e,a,n)}}if(y(r,`Identifier`)&&r.name===`useUnmount`&&(qe(r,r.name)===`react-use`||!T(r,r.name)))for(let t of e.arguments??[]){let e=wl(t,n);e!==null&&a.add(e)}if(!y(r,`Identifier`)||!dc(r.name))return;let o=T(r,r.name)?.initializer;if(!o||!t(o))return;let s=new Set;A(o,e=>{if(!y(e,`CallExpression`)||!_l(e,n))return;let t=or(e);if(t)for(let e of ml(t))A(e,e=>{if(!y(e,`CallExpression`))return;let t=O(e.callee);if(!y(t,`MemberExpression`)||!yl.has(C(t)??``))return;let n=Sl(t.object);n&&s.add(n.name)})});for(let[t,r]of(o.params??[]).entries()){if(!y(r,`Identifier`)||!s.has(r.name))continue;let i=e.arguments?.[t],o=i?Cl(i,n):null;o!==null&&a.add(o)}}),A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`ReturnStatement`)||!i.argument)return;let a=O(i.argument);!y(a,`Identifier`)&&!y(a,`ObjectExpression`)&&!y(a,`ArrayExpression`)||A(a,e=>{if(!y(e,`Identifier`))return;let t=n.symbolFor(e)?.id;t!==void 0&&r.add(t)})}),{escapedSymbolIds:r,invokedSymbolIds:i,releasedSymbolIds:a}},jce=(e,n,r)=>{if(!y(e,`CallExpression`))return null;let i=e.arguments?.[0];if(!i)return null;let a=O(i);if(t(a))return a;if(!y(a,`Identifier`))return null;let o=a.name,s=null;return A(n,e=>{if(s)return!1;if(y(e,`FunctionDeclaration`)&&e.id?.name===o)return s=e,!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.id.name===o&&e.init){let n=O(e.init);if(t(n))return s=n,!1;if(y(n,`CallExpression`)&&gl(n,new Set([`useCallback`]),r)){let e=n.arguments?.[0],r=e?O(e):null;if(r&&t(r))return s=r,!1}}}),s},Tl=new Set([`localStorage`,`sessionStorage`]),Mce=e=>{let t=e;for(;;){let e=t.parent;if(e&&y(e,`MemberExpression`)&&e.object===t&&e.parent&&y(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return y(t,`CallExpression`)&&y(t.callee,`MemberExpression`)&&C(t.callee)===`catch`},Nce=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])qi(n,t);let n=!1;return A(e,e=>{if(n)return!1;if(y(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(y(e,`Identifier`)&&Tce.has(e.name)&&!t.has(e.name)&&!T(e,e.name)&&!(y(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(y(r,`Property`)&&!r.computed&&r.key===e)){if(y(r,`MemberExpression`)&&r.object===e){if(y(r.property,`Identifier`)&&Tl.has(r.property.name))return;let e=r;for(;e.parent&&y(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&y(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&y(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(y(e,`CallExpression`)){let t=e.callee;if(y(t,`Identifier`)&&t.name===`fetch`&&!T(t,t.name)||y(t,`MemberExpression`)&&Ece.has(C(t)??``)&&C(t)!==`catch`&&!Mce(e))return n=!0,!1;if(y(t,`MemberExpression`)&&y(t.object,`Identifier`)&&Tl.has(t.object.name))return}}),n},Pce=e=>{if(!e)return!0;let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`||y(t,`UnaryExpression`)&&t.operator===`void`},Fce=(e,t)=>{if(!y(e,`MemberExpression`)||C(e)!==`current`)return!1;let n=O(e.object);if(!y(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=O(r.initializer);return y(i,`CallExpression`)&&gl(i,wce,t)&&Pce(i.arguments?.[0])},Ice=(e,t)=>{if(!y(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return A(e,e=>{if(r)return!1;if(Fce(e,t)||y(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(y(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])y(e.id,`Identifier`)&&n.add(e.id.name);continue}if(y(t,`IfStatement`)){let e=t.consequent;return(y(e,`ReturnStatement`)||y(e,`BlockStatement`)&&y(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},El=x({id:`debounce-no-cleanup`,title:`Memoized debounce never cancelled on unmount`,severity:`warn`,category:`Bugs`,recommendation:"A debounced/throttled callback holds a pending timer that still fires after unmount, so add `useEffect(() => () => debounced.cancel(), [debounced])` to cancel the trailing invocation when the component tears down.",create:e=>{let t=new WeakMap;return{CallExpression(n){if(!gl(n,Cce,e.scopes))return;let r=Dce(n);if(!r||Oce(r,e.scopes,n))return;let i=v(n),a=i.parent;if(!y(a,`VariableDeclarator`)||a.init!==i||!y(a.id,`Identifier`))return;let o=a.id.name,s=b(n);if(!s)return;let c=t.get(s);c||(c=Ace(s,e.scopes),t.set(s,c));let l=hl(a.id,e.scopes,{includeReactRefContainers:!0}),u=new Set(l.flatMap(t=>{let n=e.scopes.symbolFor(t)?.id;return n===void 0?[]:[n]}));if([...u].some(e=>c.releasedSymbolIds.has(e))||[...u].some(e=>c.escapedSymbolIds.has(e))||![...u].some(e=>c.invokedSymbolIds.has(e)))return;let d=jce(r,s,e.scopes);d&&Nce(d)&&(Ice(d,e.scopes)||e.report({node:r,message:`\`${o}\` keeps a pending debounced/throttled call that fires after unmount because nothing cancels it; return \`() => ${o}.cancel()\` from a useEffect so the trailing call is dropped on teardown.`}))}}}}),Dl=1e3,Ol=new Set([`arial`,`geist`,`helvetica`,`inter`,`lato`,`montserrat`,`open sans`,`plus jakarta sans`,`roboto`,`space grotesk`]),Lce=new Map([[`text-xs`,12],[`text-sm`,14],[`text-base`,16],[`text-lg`,18],[`text-xl`,20],[`text-2xl`,24],[`text-3xl`,30],[`text-4xl`,36],[`text-5xl`,48],[`text-6xl`,60],[`text-7xl`,72],[`text-8xl`,96],[`text-9xl`,128]]),Rce=new Set(`best of breed.best-in-class.built for the modern.cutting-edge.drive engagement.drive growth.drive results.empower your.enterprise-grade.future-proof.game changing.game-changer.harness the power.industry-leading.leverage the power.next-generation.seamless experience.seamlessly integrate.streamline your.supercharge your.transform your business.trusted by leading.trusted by the world.unleash the power.unleash your.unlock your potential.world-class`.split(`.`)),kl=1e3,zce=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),Bce=new Set(`code.pre.kbd.samp.var.tt.markdown.markdownblock.markdowncontent.markdownrenderer.markdowntext.markdownview.mdx.mdxcontent.mdxremote.md.prose.richtext.article.blockquote.quote.trans.translation.translated.fbt.fbs`.split(`.`)),Vce=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Hce=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Uce=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Wce=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Al=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),jl=new Set([`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`]),Gce=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Ml=/[\p{L}\p{N}]\.\.\./u,Nl=e=>S(e,{allowComputedString:!0}),G=(e,t)=>{for(let n of[...e??[]].reverse()){let e=Nl(n);if(!e)return null;if(e===t&&y(n,`Property`))return n}return null},Kce=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=e.identifier;for(;t.parent&&y(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;let n=t.parent;return!!(y(n,`AssignmentExpression`)&&n.left===t||y(n,`UpdateExpression`)&&n.argument===t||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t||y(n,`CallExpression`)&&n.arguments?.some(e=>e===t))}),Pl=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ObjectExpression`))return r;if(!t||!y(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Kce(i))return null;let a=new Set(n);return a.add(i.id),Pl(i.initializer,t,a)},K=(e,t)=>!y(e.name,`JSXIdentifier`)||e.name.name!==`style`||!y(e.value,`JSXExpressionContainer`)?null:Pl(e.value.expression,t),q=e=>{if(!y(e,`JSXOpeningElement`))return null;let t=L(e.attributes??[],`className`);return t?.value?y(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value:y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`Literal`)&&typeof t.value.expression.value==`string`?t.value.expression.value:y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`TemplateLiteral`)&&t.value.expression.quasis?.length===1?t.value.expression.quasis[0].value?.raw??null:null:null},J=e=>y(e,`Property`)&&y(e.value,`Literal`)&&typeof e.value.value==`string`?e.value.value:null,Fl=[`sm`,`md`,`lg`,`xl`,`2xl`],Il=[``,...Fl],Ll=new Map(Fl.map((e,t)=>[e,t])),Rl=e=>e.replace(/(?<!\\)_/g,` `),qce=new Map([[`hidden`,{isVisible:!1,propertyName:`display`}],[`block`,{isVisible:!0,propertyName:`display`}],[`contents`,{isVisible:!0,propertyName:`display`}],[`flex`,{isVisible:!0,propertyName:`display`}],[`flow-root`,{isVisible:!0,propertyName:`display`}],[`grid`,{isVisible:!0,propertyName:`display`}],[`inline`,{isVisible:!0,propertyName:`display`}],[`inline-block`,{isVisible:!0,propertyName:`display`}],[`inline-flex`,{isVisible:!0,propertyName:`display`}],[`inline-grid`,{isVisible:!0,propertyName:`display`}],[`inline-table`,{isVisible:!0,propertyName:`display`}],[`list-item`,{isVisible:!0,propertyName:`display`}],[`table`,{isVisible:!0,propertyName:`display`}],[`table-caption`,{isVisible:!0,propertyName:`display`}],[`table-cell`,{isVisible:!0,propertyName:`display`}],[`table-column`,{isVisible:!0,propertyName:`display`}],[`table-column-group`,{isVisible:!0,propertyName:`display`}],[`table-footer-group`,{isVisible:!0,propertyName:`display`}],[`table-header-group`,{isVisible:!0,propertyName:`display`}],[`table-row`,{isVisible:!0,propertyName:`display`}],[`table-row-group`,{isVisible:!0,propertyName:`display`}]]),Jce=new Map([[`collapse`,{isVisible:!1,propertyName:`visibility`}],[`invisible`,{isVisible:!1,propertyName:`visibility`}],[`visible`,{isVisible:!0,propertyName:`visibility`}]]),Yce=new Set([`block`,`contents`,`flex`,`flow-root`,`grid`,`inline`,`inline block`,`inline flex`,`inline flow-root`,`inline grid`,`inline table`,`list-item`,`table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row`,`table-row-group`]),zl=(e,t)=>{let n=`[${t}:`;return e.toLowerCase().startsWith(n)&&e.endsWith(`]`)?e.slice(n.length,-1):null},Bl=e=>{let t=qce.get(e)??Jce.get(e);if(t)return{...t,status:`known`};let n=zl(e,`display`);if(n!==null){let e=Rl(n).trim().toLowerCase();return e===`none`?{isVisible:!1,propertyName:`display`,status:`known`}:Yce.has(e)?{isVisible:!0,propertyName:`display`,status:`known`}:{isVisible:null,propertyName:`display`,status:`unknown`}}let r=zl(e,`visibility`);if(r===null)return{isVisible:null,propertyName:null,status:`not-relevant`};let i=Rl(r).trim().toLowerCase();return i===`visible`?{isVisible:!0,propertyName:`visibility`,status:`known`}:i===`hidden`||i===`collapse`?{isVisible:!1,propertyName:`visibility`,status:`known`}:{isVisible:null,propertyName:`visibility`,status:`unknown`}},Xce=(e,t)=>{let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1},Y=e=>{let t=[],n=0;for(let r of Rc(e,e=>e===`:`))t.push(e.slice(n,r)),n=r+1;let r=e.slice(n),i=r.endsWith(`!`)&&!Xce(r,r.length-1),a=r.startsWith(`!`)||i;return r.startsWith(`!`)&&(r=r.slice(1)),i&&(r=r.slice(0,-1)),{isImportant:a,utility:r,variants:t}},Zce=e=>{let t=0,n=Il.length;for(let r of e){let e=Il.indexOf(r);if(e>0){t=Math.max(t,e);continue}if(r.startsWith(`max-`)){let e=Il.indexOf(r.slice(4));if(e>0){n=Math.min(n,e);continue}}return null}return{maximumBreakpointIndex:n,minimumBreakpointIndex:t,specificity:e.length}},Vl=(e,t,n)=>{let r=e.filter(({effect:e,scope:r})=>e.propertyName===n&&t>=r.minimumBreakpointIndex&&t<r.maximumBreakpointIndex);if(r.length===0)return!0;let i=r.some(({token:e})=>e.isImportant)?r.filter(({token:e})=>e.isImportant):r,a=Math.max(...i.map(({scope:e})=>e.specificity)),o=i.filter(({scope:e})=>e.specificity===a),s=Math.max(...o.map(({scope:e})=>e.minimumBreakpointIndex)),c=o.filter(({scope:e})=>e.minimumBreakpointIndex===s),l=Math.min(...c.map(({scope:e})=>e.maximumBreakpointIndex)),u=new Set(c.filter(({scope:e})=>e.maximumBreakpointIndex===l).map(({effect:e})=>e.isVisible));return u.size===1?u.values().next().value??null:null},Hl=e=>{let t=[];for(let n of W(e).map(Y)){let e=Bl(n.utility);if(e.status===`not-relevant`)continue;let r=Zce(n.variants);if(r===null)return null;if(!r||r.minimumBreakpointIndex>=r.maximumBreakpointIndex)continue;if(e.status===`unknown`||e.propertyName===null||e.isVisible===null)return null;let i={isVisible:e.isVisible,propertyName:e.propertyName};t.push({effect:i,scope:r,token:n})}let n=[];for(let e=0;e<Il.length;e+=1){let r=Vl(t,e,`display`),i=Vl(t,e,`visibility`);if(r===null||i===null)return null;n.push(r&&i)}return n},Qce=(e,t)=>{if(br(e,t.settings))return!0;let n=L(e.attributes,`style`),r=n?K(n,t.scopes):null;if(r){let e=G(r.properties,`display`);if(e&&J(e)?.toLowerCase()===`none`)return!0;let t=G(r.properties,`visibility`),n=t?J(t)?.toLowerCase():null;if(n===`hidden`||n===`collapse`)return!0}let i=q(e);if(!i)return!1;let a=Hl(i);return!!(a&&a.every(e=>!e))},Ul=(e,t)=>{let n=e;for(;n;){if(y(n,`JSXElement`)&&Qce(n.openingElement,t))return!0;n=n.parent}return!1},Wl=e=>{if(!e||!y(e,`JSXOpeningElement`))return null;if(y(e.name,`JSXIdentifier`))return j(e);if(y(e.name,`JSXMemberExpression`)){let t=e.name;for(;y(t,`JSXMemberExpression`);)t=t.property;if(y(t,`JSXIdentifier`))return t.name}return null},Gl=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)){let e=Wl(t.openingElement);if(e&&Bce.has(e.toLowerCase()))return!0;let n=U(t.openingElement?.attributes??[],`translate`);if(y(n?.value,`Literal`)&&n.value.value===`no`)return!0}t=t.parent}return!1},$ce=/&(?:mdash|#0*8212|#x0*2014);/gi,ele=/(?:^|[/\\])(?:articles?|blog|changelog|content|docs?|posts?)(?:[/\\]|$)/i,tle=/\p{L}[^—\n]*—[^—\n]*\p{L}/u,nle=/\p{L}+/gu,rle=/[\r\n]/u,Kl=e=>e.includes(`—`)&&e.split(rle).some(e=>tle.test(e)&&(e.match(nle)?.length??0)>=5),ql=e=>{let t=O(e);return y(t,`Literal`)?typeof t.value==`string`&&Kl(t.value):y(t,`TemplateLiteral`)?t.quasis.some(e=>Kl(e.value.cooked??e.value.raw??``)):y(t,`ConditionalExpression`)?ql(t.consequent)||ql(t.alternate):y(t,`LogicalExpression`)?ql(t.right):!1},Jl=x({id:`design-no-em-dash-in-jsx-text`,title:`Em dash in JSX text`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Replace em dashes in UI text with commas, colons, semicolons, or parentheses so the copy reads less like AI output.`,create:e=>e.filename&&ele.test(e.filename)?Ae:{JSXExpressionContainer(t){t.parent&&y(t.parent,`JSXAttribute`)||Gl(t)||Ul(t,e)||ql(t.expression)&&e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`})},JSXText(t){Kl((typeof t.value==`string`?t.value:``).replace($ce,`—`))&&(Gl(t)||Ul(t,e)||e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`}))}}}),Yl=(e,t,n)=>{let r=new Set;for(let n of e.matchAll(t))r.add(`${n[1]}${n[2]}`);let i=[];for(let t of e.matchAll(n)){let e=`${t[1]}${t[2]}`;r.has(e)&&i.push({value:e})}return i},Xl=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Zl=x({id:`design-no-redundant-padding-axes`,title:`Redundant padding axes`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching padding axes to `p-N` so duplicated classes do not make spacing harder to scan; keep split axes only when breakpoints differ.",create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Xl(n,`px`)||Xl(n,`py`))return;let r=Yl(n,Vce,Hce);if(r.length!==0)for(let n of r)e.report({node:t,message:`px-${n.value} and py-${n.value} duplicate p-${n.value}, so the class list is noisier without changing spacing.`})}})}),Ql=x({id:`design-no-redundant-size-axes`,title:`Redundant width and height axes`,requires:[`tailwind:3.4`],tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching width and height to `size-N` so duplicated classes do not make layout harder to scan.",create:e=>{let t=!1;return{JSXAttribute(n){if(t||!y(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=I(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Xl(r,`w`)||Xl(r,`h`))return;let i=Yl(r,Uce,Wce);if(i.length===0)return;let[a]=i;t=!0,e.report({node:n,message:`w-${a.value} and h-${a.value} duplicate size-${a.value}, so the class list is noisier without changing layout.`})}}}}),ile=e=>e.split(/\s+/).filter(Boolean),$l=x({id:`design-no-space-on-flex-children`,title:`space-* utility on flex children`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Use `gap-*` on the flex or grid parent. `space-x-*` and `space-y-*` leave gaps when a child is hidden, miss spacing on wrapped lines, and don't flip in right-to-left layouts.",create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`space-`))return;let r=ile(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Al.has(t)){i=!0;break}}if(!i)return;let a=n.match(Gce);if(!a)return;let o=a[1],s=a[2];e.report({node:t,message:`space-${o}-${s} on a flex or grid parent can leave uneven gaps when children hide, wrap, or render in RTL layouts.`})}})}),ale=new Set([`alt`,`aria-label`,`placeholder`,`title`]),ole=e=>{let t=I(e);if(t!==null)return t;let n=e.value;return!n||!y(n,`JSXExpressionContainer`)?null:y(n.expression,`TemplateLiteral`)?In(n.expression):null},eu=(e,t)=>{let n=O(e);if(y(n,`Literal`)){typeof n.value==`string`&&Ml.test(n.value)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(y(n,`TemplateLiteral`)){let e=In(n);e&&Ml.test(e)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(y(n,`ConditionalExpression`)){eu(n.consequent,t),eu(n.alternate,t);return}y(n,`LogicalExpression`)&&eu(n.right,t)},tu=x({id:`design-no-three-period-ellipsis`,title:`Three dots instead of ellipsis`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Use the real ellipsis character ("…") so UI labels look polished and consistent instead of like three separate periods.`,create:e=>({JSXAttribute(t){let n=Cn(t.name)?.toLowerCase();if(!n||!ale.has(n))return;let r=ole(t);!r||!Ml.test(r)||e.report({node:t.value??t,message:`Use the real ellipsis character ("…") instead of three period characters.`})},JSXExpressionContainer(t){t.parent&&y(t.parent,`JSXAttribute`)||Gl(t)||eu(t.expression,e)},JSXText(t){let n=typeof t.value==`string`?t.value:``;Ml.test(n)&&(Gl(t)||e.report({node:t,message:`Use the real ellipsis character ("…") instead of three period characters.`}))}})}),nu=e=>e===`button`||e===`Button`,sle=e=>nu(e)||e===`a`||e===`Link`,cle=new Set([`back`,`previous`]),ru=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),iu=e=>{if(!y(e,`JSXElement`)&&!y(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(y(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(y(t,`TemplateLiteral`)){let e=In(t);if(e!==null){n.push(e);continue}}return null}if(y(e,`JSXFragment`)){let t=iu(e);if(t===null)return null;n.push(t);continue}if(y(e,`JSXElement`))return null}return n.join(``).trim()},lle=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)&&Wl(t.openingElement)===`form`)return t;t=t.parent}return null},au=e=>{for(let t of e.children??[]){if(y(t,`JSXFragment`)){if(au(t))return!0;continue}if(!y(t,`JSXElement`))continue;let e=Wl(t.openingElement);if(e&&sle(e)&&cle.has(ru(iu(t)??``))||au(t))return!0}return!1},ou=x({id:`design-no-vague-button-label`,title:`Vague button label`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,recommendation:`Name the action: "Save changes" instead of "Continue", "Send invite" instead of "Submit". The label is the button's accessible name.`,create:e=>({JSXElement(t){let n=Wl(t.openingElement);if(!n||!nu(n))return;let r=iu(t);if(!r)return;let i=ru(r);if(zce.has(i)){if(i===`continue`){let e=lle(t);if(e&&au(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),ule=e=>{for(let t of e.children)if(!(y(t,`JSXText`)&&t.value.trim().length===0)){if(y(t,`JSXElement`))return t.openingElement;if(!(y(t,`JSXExpressionContainer`)&&y(t.expression,`JSXEmptyExpression`)))return}return null},su=x({id:`details-requires-summary`,title:`Details disclosure has no explicit summary`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Make a meaningful summary the first child of details so users can understand and operate the disclosure.`,create:e=>({JSXElement(t){if(j(t.openingElement)!==`details`)return;let n=ule(t);n!==void 0&&(n&&j(n)===`summary`||e.report({node:n??t.openingElement,message:`This details disclosure has no explicit summary as its first content child, so the browser falls back to an implementation-defined label. Add a meaningful summary first.`}))}})}),dle=new Set([`dialog`,`alertdialog`]),fle=[`aria-label`,`aria-labelledby`,`title`],cu=x({id:`dialog-has-accessible-name`,title:`Dialog without accessible name`,severity:`warn`,recommendation:'Give every `<dialog>` / `role="dialog"` an accessible name with `aria-label` or `aria-labelledby` (referencing the dialog\'s title element).',create:e=>ct(e.filename)?Ae:{JSXOpeningElement(t){if(!y(t.name,`JSXIdentifier`))return;let n=j(t);if(n[0]!==n[0]?.toLowerCase())return;let r=P(t.attributes,`role`),i=r?dr(r):null;(n===`dialog`||i!==null&&dle.has(i))&&(F(t.attributes)||fle.some(e=>P(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),lu=`createReactClass`,uu=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`MemberExpression`)?!!(y(t.object,`Identifier`)&&t.object.name===`React`&&y(t.property,`Identifier`)&&t.property.name===lu):y(t,`Identifier`)?t.name===lu:!1},ple=[`observer`,`lazy`,`withTracking`],mle=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??ple);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},du=(e,t,n)=>{if(!e)return!0;let r=e.match(/^(\d+)\.(\d+)/);if(!r)return!0;let i=Number(r[1]),a=Number(r[2]);return i>t||i===t&&a>=n},fu=new WeakMap,pu=e=>{let t=fu.get(e);if(t!==void 0)return t;let n=!1,r=e=>{if(n)return;if(e.type===`JSXElement`||e.type===`JSXFragment`){n=!0;return}if(y(e,`CallExpression`)&&Da(e)){n=!0;return}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let i=t[e];if(Array.isArray(i))for(let e of i)E(e)&&r(e);else E(i)&&r(i);if(n)return}};return r(e),fu.set(e,n),n},mu=e=>y(e,`MemberExpression`)?!e.computed&&y(e.property,`Identifier`)?e.property.name:e.computed&&y(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,hu=e=>{let t=e.parent;for(;t&&(t.type===`TSAsExpression`||t.type===`TSSatisfiesExpression`||t.type===`TSNonNullExpression`||t.type===`TSTypeAssertion`);)t=t.parent??null;if(!t)return null;if(y(t,`VariableDeclarator`)&&y(t.id,`Identifier`))return t.id.name;if(y(t,`AssignmentExpression`)){let e=t.left;if(y(e,`Identifier`))return e.name;if(y(e,`MemberExpression`))return mu(e)}return null},gu=e=>{let t=e.parent;if(!t||!y(t,`AssignmentExpression`))return!1;let n=t.left;return y(n,`MemberExpression`)&&y(n.object,`Identifier`)&&n.object.name===`module`&&mu(n)===`exports`},hle=e=>{if(!y(e,`CallExpression`))return!1;if(uu(e))return!0;let t=e.callee;return y(t,`MemberExpression`)?mu(t)===`createClass`:!1},gle=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`Identifier`)?t.name===`createContext`:y(t,`MemberExpression`)&&mu(t)===`createContext`},_le=e=>(y(e,`FunctionExpression`)||y(e,`FunctionDeclaration`))&&!!e.id?.name,_u=e=>y(e,`CallExpression`)&&e.arguments[0]||null,vu=(e,t)=>{if(!y(e,`CallExpression`))return null;let n=e.callee;if(y(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},vle=(e,t)=>vu(e,t)!==null,yu=e=>{if(!e)return!1;if(du(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},yle=(e,t)=>{if(!vle(e,t.additionalHoCs)||!pu(e))return!1;let n=hu(e),r=d(e);if(n&&r&&wu(n,r))return!1;let i=vu(e,t.additionalHoCs),a=_u(e);return!a||i===`forwardRef`&&y(e.parent,`CallExpression`)&&vu(e.parent,t.additionalHoCs)===`memo`&&_u(e.parent)===e&&yu(t.reactVersion)?!1:i===`memo`&&y(a,`CallExpression`)?vu(a,t.additionalHoCs)===`forwardRef`?!yu(t.reactVersion):!1:_le(a)?!1:y(a,`FunctionExpression`)||y(a,`ArrowFunctionExpression`)},bu=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((y(e,`PropertyDefinition`)||y(e,`MethodDefinition`))&&`static`in e&&e.static&&y(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},xu=e=>{if(y(e,`Identifier`))return[e.name];if(!y(e,`MemberExpression`))return[];let t=xu(e.object),n=mu(e);return n?[...t,n]:t},Su=new WeakMap,Cu=e=>{let t=Su.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(y(e,`AssignmentExpression`)&&y(e.left,`MemberExpression`)&&mu(e.left)===`displayName`){y(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of xu(e.left.object))r.add(t)}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n))for(let e of n)E(e)&&i(e);else E(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Su.set(e,a),a},wu=(e,t)=>Cu(t).identifierTargets.has(e),ble=(e,t)=>Cu(t).memberPathSegments.has(e),Tu=x({id:`display-name`,title:`Component missing display name`,severity:`warn`,defaultEnabled:!1,recommendation:"Give each component a `displayName` so DevTools shows a clear name.",category:`Architecture`,create:e=>{let t=mle(e.settings),n=!t.ignoreTranspilerName,r=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Ya(e)&&!(e.id&&H(e.id.name)&&n)&&!bu(e)){if(e.id){let t=d(e);if(t&&wu(e.id.name,t))return}r(e.id??e)}},ClassExpression(e){if(Ya(e)&&!(e.id&&H(e.id.name)&&n)&&!bu(e)){if(e.id){let t=d(e);if(t&&wu(e.id.name,t))return}r(e.id??e)}},FunctionExpression(e){if(!pu(e)||e.id&&H(e.id.name)&&n)return;if(y(e.parent,`Property`)&&e.parent.method){let n=e.parent.key,i=y(n,`Identifier`)?n.name:y(n,`Literal`)&&typeof n.value==`string`?n.value:null,a=d(e);if(i&&H(i)&&t.ignoreTranspilerName&&(!a||!ble(i,a))){r(e);return}}let i=hu(e);if(!(i&&H(i)&&n)){if(gu(e)&&!e.id){r(e);return}y(e.parent,`ReturnStatement`)&&!e.id&&r(e)}},ArrowFunctionExpression(e){if(!pu(e))return;if(y(e.parent,`ArrowFunctionExpression`)||y(e.parent,`ReturnStatement`)){r(e);return}let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`)&&y(t.id,`Identifier`)){if(H(t.id.name)&&n)return;break}if(y(t,`ExportDefaultDeclaration`)){r(e);return}if(gu(e)){r(e);return}if(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`ClassDeclaration`)||y(t,`ClassExpression`)||y(t,`Program`))break;t=t.parent??null}},CallExpression(e){if(t.checkContextObjects&&du(t.reactVersion,16,3)&&gle(e)){let t=hu(e);if(t){let n=d(e);if(n&&wu(t,n))return}r(e);return}if(yle(e,t)){r(e);return}if(!hle(e))return;let i=e.arguments[0];if(!i||!y(i,`ObjectExpression`)){r(e);return}let a=!1;for(let e of i.properties){if(!y(e,`Property`)||e.computed)continue;let t=e.key;if(y(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(y(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&y(o,`VariableDeclarator`)&&y(o.id,`Identifier`)&&H(o.id.name)&&n)){if(o&&y(o,`AssignmentExpression`)){let e=o.left;if(y(e,`Identifier`)&&H(e.name)&&n||y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&H(e.property.name)&&n)return}r(e)}}}}}),xle=(e,t,n,r)=>{let i=r===`different`;return i&&t!==n?`The cleanup removes \`${e}\` with a different callback binding and capture ${String(n)}, but it was registered with capture ${String(t)}. Pass the same callback binding and capture flag to both EventTarget calls.`:i?`The cleanup removes \`${e}\` with a different callback binding than the one registered, so \`removeEventListener\` cannot detach that listener. Pass the same callback binding to both calls.`:`The cleanup removes \`${e}\` with capture ${String(n)}, but it was registered with capture ${String(t)}. \`removeEventListener\` must use the same capture flag as \`addEventListener\`.`},Sle=e=>{let t=!1;return A(e,e=>{if(y(e,`CallExpression`))return t=!0,!1}),t},Eu=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,Du=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>Du(e,t)&&Du(n,t)),Cle=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,Ou=(e,t)=>{if(t.abortControllerSymbolId!==null&&Du(e,t.abortControllerSymbolId))return`cancelled`;let n=e.hasUnknownRemovalCall||t.abortControllerSymbolId!==null&&e.hasUnknownAbortCall?`unknown`:`not-cancelled`;for(let r of e.removals){if(r.eventName!==t.eventName||r.capture!==t.capture||r.callbackIdentity===null||Eu(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Cle(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=Ou(r,t),a=Ou(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},wle=(e,t)=>Ou(e,t)!==`not-cancelled`,ku=e=>{if(!e)return null;let t=O(e);return y(t,`MemberExpression`)?!t.computed&&y(t.property,`Identifier`)?t.property.name:t.computed&&y(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},Tle=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Ele=(e,t)=>{if(y(e,`IfStatement`)){if(e.test===t)return!0;let n=Dn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(y(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Dn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(y(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Dn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return y(e,`TryStatement`)?e.finalizer===t:y(e,`SwitchStatement`)?e.discriminant===t:y(e,`ForStatement`)?e.init===t||e.test===t:y(e,`ForInStatement`)||y(e,`ForOfStatement`)?e.right===t:y(e,`WhileStatement`)?e.test===t:!1},Au=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||Tle.has(e.type)&&!Ele(e,r)&&!n?.(e,r))return!0;r=e}return!1},ju=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=O(e);if(y(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!y(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&y(e,`SpreadElement`)){i=null;continue}if(!y(e,`Property`))return null;let r=S(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=O(e.value);if(y(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},Dle=e=>{if(!e)return!1;let t=O(e);if(y(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!y(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!y(e,`Property`))return null;let t=S(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=O(e.value);if(!y(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Ole=new Set([...dn,`useInsertionEffect`]),Mu=e=>e.references.every(e=>e.flag===`read`),kle=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&Mu(e),Nu=e=>e.kind===`const`&&y(e.declarationNode,`VariableDeclarator`)&&y(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,Pu=(e,t,n)=>{if(!y(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!kle(r)||n.has(r.id)||r.kind===`const`&&!Nu(r))return null;n.add(r.id);let i=r.initializer?O(r.initializer):null;if(r.kind===`const`&&y(i,`Identifier`)){let e=Pu(i,t,n);if(e)return e}return r},Fu=(e,n)=>{if(!e)return null;let r=O(e);if(t(r))return{node:r,isConcreteFunction:!0};if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i)return null;let a=i.initializer?O(i.initializer):null;return a&&t(a)?{node:a,isConcreteFunction:!0}:{node:i.bindingIdentifier,isConcreteFunction:!1}},Iu=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){let e=Pu(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?O(e.initializer):null;return y(n,`NewExpression`)&&y(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:y(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)){let e=Iu(n.object,t);return n.property.name===`document`&&(e===`global:window`||e===`global:globalThis`)?`global:document`:n.property.name===`window`&&(e===`global:window`||e===`global:globalThis`)?`global:window`:e===null?null:`${e}.${n.property.name}`}return null},Lu=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return r.value;if(y(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!y(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!Nu(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),Lu(i.initializer,t,n))},Ale=(e,t)=>{let n=zu(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=O(r);if(!n||!y(i,`NewExpression`)||!y(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=O(n);if(!y(a,`Identifier`))return null;let o=Pu(a,t,new Set),s=o?.initializer?O(o.initializer):null;if(!y(s,`NewExpression`)||!y(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Iu(n,t),l=Lu(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Ru=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return null;let r=Pu(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=O(r.initializer);return!y(i,`NewExpression`)||!y(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},zu=(e,t,n)=>{if(!e)return null;let r=O(e);return!y(r,`MemberExpression`)||(ku(r)??(n&&r.computed?Lu(r.property,n):null))!==t?null:r.object},jle=(e,t)=>y(e,`ObjectPattern`)?e.properties.some(e=>!y(e,`Property`)||S(e,{allowComputedString:!0})!==`signal`?!1:(y(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Bu=(e,t,n=new Set)=>{let r=O(e),i=zu(r,`signal`);if(i)return Ru(i,t);if(!y(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!Mu(a))return null;n.add(a.id);let o=a.declarationNode;if(!y(o,`VariableDeclarator`))return null;if(y(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=O(a.initializer);if(y(e,`Identifier`))return Bu(e,t,n);let r=zu(e,`signal`);return r?Ru(r,t):null}return jle(o.id,a.bindingIdentifier)?Ru(a.initializer,t):null},Vu=(e,t,n)=>{let r=O(e);if(y(r,`UnaryExpression`)&&r.operator===`!`){let e=Vu(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(y(r,`BinaryExpression`)){let e=Dn(r.left),i=Dn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=Vu(a,t,n);if(e){let t=r.operator===`==`||r.operator===`===`,n=r.operator===`!=`||r.operator===`!==`,i=t&&!o||n&&o;if(t||n)return i?e===`aborted`?`not-aborted`:`aborted`:e}}return null}let i=zu(r,`aborted`);return i&&Bu(i,n)===t?`aborted`:null},Mle=(e,t,n,r)=>{if(y(e,`IfStatement`)||y(e,`ConditionalExpression`)){let i=Vu(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!y(e,`LogicalExpression`)||e.right!==t)return!1;let i=Vu(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Nle=(e,t,n,r)=>!Au(e,t,(e,t)=>Mle(e,t,n,r)),Ple=(e,t)=>{let n=O(e.callee);if(!y(n,`Identifier`))return null;let r=Pu(n,t,new Set);if(!r?.initializer)return null;let i=O(r.initializer);if(!y(i,`CallExpression`))return null;let a=zu(i.callee,`bind`);if(!a)return null;let o=zu(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Ru(o,t),l=Ru(s,t);return c!==null&&c===l?c:null},Fle=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=O(e);if(!y(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!y(e,`Property`))return n;if(S(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Bu(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Hu=(e,t,n)=>{let r=zu(e.callee,t,n);if(!r)return null;let i=Iu(r,n),a=Lu(e.arguments?.[0],n),o=Fu(e.arguments?.[1],n),s=ju(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ile=(e,t)=>{let n=zu(e.callee,`call`);if(!n||!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!Mu(r)||!y(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!y(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!y(e,`Property`))return!1;let t=y(e.value,`AssignmentPattern`)?e.value.left:e.value;return S(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Iu(i.init,t),s=Iu(a,t);if(o===null||s===null||o!==s)return null;let c=Lu(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Fu(e.arguments?.[2],t),capture:ju(e.arguments?.[3],{allowComputedString:!0})}},Lle=(e,n)=>{if(!e)return null;let r=O(e);if(t(r))return r.body;if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i||!i.initializer)return null;let a=O(i.initializer);return t(a)?a.body:null},Rle=(e,n)=>{let r=[],i=[],a=new Map,o=0;if(!y(e,`BlockStatement`))return{registrations:r,cleanupBodies:i,hasCanonicalCleanupReturn:!1,returnStatementCount:o};let s=e.body[e.body.length-1],c=y(s,`ReturnStatement`);return A(e,s=>{if(s!==e&&t(s)||y(s,`ClassDeclaration`)||y(s,`ClassExpression`))return!1;if(y(s,`CallExpression`)){if(Au(s,e))return;let t=zu(s.callee,`addEventListener`,n),i=t?Iu(t,n):null;i!==null&&a.set(i,(a.get(i)??0)+1);let o=Hu(s,`addEventListener`,n);if(o?.callbackIdentity&&o.capture!==null){let e=Fle(o.node.arguments?.[2],n);r.push({node:o.node,targetKey:o.targetKey,eventName:o.eventName,callbackIdentity:o.callbackIdentity,capture:o.capture,once:Dle(o.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Ale(s,n);if(c){let e=r.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&a.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!Sle(t.callbackIdentity.node)&&r.splice(r.indexOf(t),1)}return}if(y(s,`ReturnStatement`)){o+=1;let e=Lle(s.argument,n);e&&i.push(e)}}),{registrations:r,cleanupBodies:i,hasCanonicalCleanupReturn:c,returnStatementCount:o}},zle=(e,n)=>{let r=O(e.callee);if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i?.initializer||i.kind!==`const`&&i.kind!==`function`)return null;let a=O(i.initializer);return!t(a)||a.async||a.generator?null:{body:a.body,symbolId:i.id}},Uu=(e,n,r=new Set,i=!1)=>{let a=[],o=new Set,s=[],c=!1,l=!1,u=!1,d=y(e,`BlockStatement`)?e.body[e.body.length-1]:null,f=e=>{a.push(...e.removals),l||=e.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)o.add(t);s.push(...e.exhaustiveBranches)},p=e=>{let t=y(e,`BlockStatement`)?e.body:[e];for(let e of t){if(y(e,`BreakStatement`)||y(e,`ContinueStatement`))return!0;if(y(e,`BlockStatement`)){if(p(e))return!0;continue}if(y(e,`IfStatement`)){let t=Dn(e.test);if(t!==null){let i=Uu(e.test,n,new Set(r),!0);if(!i)return!0;f(i);let a=t?e.consequent:e.alternate;if(a&&p(a))return!0;continue}}let t=Uu(e,n,new Set(r),!0);if(!t)return!0;f(t)}return!1};return A(e,m=>{if(m!==e&&t(m)||y(m,`ClassDeclaration`)||y(m,`ClassExpression`))return!1;if(y(m,`ReturnStatement`)&&m===d)return;if(y(m,`ReturnStatement`)||y(m,`ThrowStatement`)||i&&(y(m,`BreakStatement`)||y(m,`ContinueStatement`)))return c=!0,!1;if(y(m,`ForOfStatement`)){let t=O(m.right);return y(t,`ArrayExpression`)&&t.elements.some(e=>e&&!y(e,`SpreadElement`))&&!Au(m,e)&&p(m.body),!1}if((y(m,`IfStatement`)||y(m,`ConditionalExpression`))&&m.alternate&&Dn(m.test)===null&&!Au(m,e)){let e=Uu(m.consequent,n,new Set(r)),t=Uu(m.alternate,n,new Set(r));e&&t&&(s.push({alternate:t,consequent:e}),l||=e.hasUnknownAbortCall&&t.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall&&t.hasUnknownRemovalCall);let i=Uu(m.test,n,new Set(r));return i&&f(i),!1}if(!y(m,`CallExpression`))return;let h=Au(m,e),g=zu(m.callee,`removeEventListener`,n);if(g&&!h){let e=Hu(m,`removeEventListener`,n);e?(a.push(e),u||=e.callbackIdentity===null||e.capture===null):u=!0}if(!g&&!h){let e=Ile(m,n);e&&a.push(e)}let _=zu(m.callee,`abort`);if(_){let t=Ru(_,n);t===null?h||(l=!0):(!h||Nle(m,e,t,n))&&o.add(t);return}if(h)return;let ee=Ple(m,n);if(ee!==null){o.add(ee);return}let te=zle(m,n);if(!te||r.has(te.symbolId))return;r.add(te.symbolId);let ne=Uu(te.body,n,r);ne&&f(ne)}),c?null:{removals:a,abortedControllerSymbolIds:o,exhaustiveBranches:s,hasUnknownAbortCall:l,hasUnknownRemovalCall:u}},Ble=(e,t)=>{let n=Rle(e,t);if(!n.hasCanonicalCleanupReturn||n.returnStatementCount!==1||n.cleanupBodies.length!==1)return null;let r=[],i=new Set,a=[],o=!1,s=!1,c=e=>{r.push(...e.removals),a.push(...e.exhaustiveBranches),o||=e.hasUnknownAbortCall,s||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)i.add(t)},l=Uu(e,t);for(let e of n.cleanupBodies){let n=Uu(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Wu=x({id:`effect-listener-cleanup-mismatch`,title:`Effect cleanup does not match its event listener`,severity:`error`,recommendation:"Pass the same callback binding and capture flag to `addEventListener` and `removeEventListener`, or abort the registration's local AbortController during cleanup.",create:e=>({CallExpression(n){if(!k(n,Ole,e.scopes))return;let r=or(n);if(!t(r))return;let i=Ble(r.body,e);if(i)for(let t of i.registrations){if(t.hasUnknownCancellation||i.hasUnknownRemovalCall||i.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&i.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&i.setupAbortAnalysis&&Du(i.setupAbortAnalysis,t.abortControllerSymbolId)||wle(i,t))continue;let n=i.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),r,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=Eu(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}r??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!r||e.report({node:r.removalNode,message:xle(t.eventName,t.capture,r.removalCapture,r.callbackComparison)})}}})}),Gu=(e,t)=>{if(!e)return null;let n=O(e);if(y(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(y(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=V({node:n,scopes:t});return r?`reference:${r}`:null},Ku=new Map([[`removeEventListener`,{registerMethod:`addEventListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`removeListener`,{registerMethod:`addListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!0}],[`off`,{registerMethod:`on`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`unsubscribe`,{registerMethod:`subscribe`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unsub`,{registerMethod:`sub`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unwatch`,{registerMethod:`watch`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unlisten`,{registerMethod:`listen`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}]]),Vle=new Map([...Ku.values()].map(e=>[e.registerMethod,e])),Hle=new Set([`off`,`removeEventListener`,`removeListener`]),qu=e=>!!(e&&aa(O(e))),Ju=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return qu(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(qu(a))return{method:n,receiverKey:r,eventKey:Gu(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&qu(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Yu=x({id:`effect-listener-cleanup-reference-mismatch`,title:`Effect cleanup removes the wrong listener reference`,severity:`error`,category:`Bugs`,recommendation:`Removal APIs match by reference identity, so the second inline function passed to the remove call can never equal the one you added; hoist the handler into a single named const (or useCallback) and pass that same reference to both the add and remove calls.`,create:e=>({CallExpression(t){if(!_l(t,e.scopes))return;let n=or(t);if(!n)return;let r=[],i=[];$a(n,t=>{if(!y(t,`CallExpression`))return;let n=O(t.callee);if(!y(n,`MemberExpression`))return;let i=C(n);if(!i)return;let a=V({node:n.object,scopes:e.scopes});if(a===null)return;let o=Vle.get(i);if(!o)return;let s=Ju(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of ml(n))$a(t,t=>{if(!y(t,`CallExpression`))return;let n=O(t.callee);if(!y(n,`MemberExpression`))return;let r=C(n);if(!r||Hle.has(r))return;let a=Ku.get(r);if(!a)return;let o=V({node:n.object,scopes:e.scopes});if(o===null)return;let s=Ju(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Ku.get(t.method);n&&r.some(e=>e.method!==n.registerMethod||e.receiverKey!==t.receiverKey||e.usesHandlerOnlyForm!==t.usesHandlerOnlyForm?!1:!n.requiresEventArgument||t.usesHandlerOnlyForm?!0:e.eventKey!==null&&e.eventKey===t.eventKey)&&e.report({node:t.handlerNode,message:`Your cleanup calls \`${t.method}\` with a brand-new inline function that never equals the handler you added, so the cleanup exists but detaches nothing and the listener leaks; pass one shared named handler to both calls.`})}}})}),Xu=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=D(e),c=D(t);if(!i||!a||!o||s===null||c===null)return!0;if(!B(e,r))return!1;if(a===o)return s<c;let l=new Set([a]),u=[a];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors){if(t.to===o)return!0;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return!1},Zu=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Ule=new Set([...Zu,`find`,`findIndex`,`sort`]),Qu=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),$u=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),ed=new Set([...$u,`Map`,`Set`]),td=(e,t,n)=>{let r=O(e);return y(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},nd=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n);return!!((r===`from`||r===`of`)&&td(n.object,`Array`,t))},Wle=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&td(n.object,`Object`,t))},rd=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ArrayExpression`))return r.elements.length===0;if(y(r,`NewExpression`)){let e=O(r.callee);return!!(r.arguments.length===0&&y(e,`Identifier`)&&ed.has(e.name)&&t.isGlobalReference(e))}if(y(r,`CallExpression`)){let e=O(r.callee);if(nd(r,t)){if((y(e,`MemberExpression`)?C(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!y(i,`SpreadElement`)&&rd(i,t,n))}return!!(y(e,`MemberExpression`)&&C(e)!==`concat`&&Qu.has(C(e)??``)&&rd(e.object,t,n))}if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!y(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),rd(i.initializer,t,n))},id=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ArrayExpression`))return!0;if(y(r,`NewExpression`)){let e=O(r.callee);return!!(y(e,`Identifier`)&&$u.has(e.name)&&t.isGlobalReference(e))}if(y(r,`CallExpression`)){if(nd(r,t)||Wle(r,t))return!0;let e=O(r.callee);return!!(y(e,`MemberExpression`)&&Qu.has(C(e)??``)&&id(e.object,t,n))}if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!y(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),id(i.initializer,t,n))},ad=(e,t,n=new Set)=>{let r=O(e);if(!y(r,`NewExpression`)){if(!y(r,`Identifier`))return id(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),ad(e.initializer,t,n))}let i=O(r.callee);return!!(y(i,`Identifier`)&&ed.has(i.name)&&t.isGlobalReference(i))},od=(e,t,n)=>{let r=O(e.callee);if(!y(r,`MemberExpression`))return!1;let i=C(r);if(i===`from`&&td(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!y(t,`SpreadElement`)&&!rd(t,n))}return!!(i&&Ule.has(i)&&e.arguments[0]===t&&!rd(r.object,n)&&(i===`forEach`?ad(r.object,n):id(r.object,n)))},sd=(e,t)=>{let n=O(e.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?!1:y(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Zu.has(n.property.name)&&e.arguments[0]===t},cd=e=>{let t=e.parent;return!!(y(t,`CallExpression`)&&sd(t,e))},Gle=new Set([`then`,`catch`,`finally`]),ld=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Gle.has(e.property.name)&&O(e.object).type===`CallExpression`,ud=e=>{let t=e.parent;for(;t&&Vt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>O(t)===e)?null:ld(O(t.callee))?t:null},dd=(e,n,r)=>{let i=new Set([e]),a=new Map,o=new Set,s=new Set,c=[e],l=e=>{if(e.type!==`Identifier`)return null;let t=r?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},u=e=>{let n=e&&O(e);!t(n)||i.has(n)||(i.add(n),c.push(n))};for(;c.length>0;){let e=c.pop();if(!e)break;A(e,r=>{if(r!==e&&t(r)){if(r.type===`FunctionDeclaration`&&r.id?.type===`Identifier`){let e=l(r.id);e&&a.set(e,r)}return!1}if(r.type===`VariableDeclarator`&&r.id.type===`Identifier`){let e=r.init?O(r.init):null;if(t(e)){let t=l(r.id);t&&a.set(t,e)}return}if(r.type===`AssignmentExpression`){let e=O(r.left);if(e.type===`Identifier`){let t=l(e);t&&s.add(t)}return}if(r.type!==`CallExpression`)return;let i=O(r.callee);if(t(i)){u(i);return}if(i.type===`Identifier`){let e=l(i);e&&o.add(e);return}if(n&&ld(i))for(let e of r.arguments??[])u(e)});for(let e of o)s.has(e)||u(a.get(e))}return i},fd=(e,t)=>dd(e,!0,t),pd=(e,t)=>dd(e,!1,t),Kle=(e,n)=>{let r=new Set,i=[e],a=new Set,o=e=>{!e||!t(e)||e.generator||r.has(e)||(r.add(e),i.push(e))};for(t(e)&&!e.generator&&r.add(e);i.length>0;){let e=i.pop();!e||a.has(e)||(a.add(e),A(e,r=>{if(r!==e&&t(r))return!1;if(r.type===`CallExpression`){o(M(r.callee,n));for(let e of r.arguments)e.type===`SpreadElement`||!od(r,e,n)||o(M(e,n))}}))}return r},md=e=>{let t=b(e);return t?mc(t):null},hd=e=>{let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`))return t;if(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`Program`))return null;t=t.parent??null}return null},qle=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),gd=new Set([`useMemo`,`useState`]),Jle=new Set([`startTransition`]),_d=(e,t)=>{let n=O(e);return!y(n,`MemberExpression`)||n.computed||!y(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!y(n.property,`Identifier`)?!1:n.property.name===`from`},Yle=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return!1;let r=T(n,n.name);if(!r?.initializer)return!1;let i=hd(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&y(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&_d(i.init,t))},vd=(e,t,n=new Set)=>{let r=O(e);if(!y(r,`Identifier`))return!1;if(r.name===`Array`&&t.isGlobalReference(r))return!0;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)?!1:(n.add(i.id),vd(i.initializer,t,n))},yd=(e,t,n,r)=>{let i=O(e);if(y(i,`ArrayExpression`))return!0;if(y(i,`Identifier`)){let e=w(i,t);return!!(e?.kind===`const`&&e.initializer&&!Dt(i,r,n,t)&&yd(e.initializer,t,n,r))}if(y(i,`NewExpression`))return vd(i.callee,t);if(!y(i,`CallExpression`))return!1;let a=O(i.callee);if(vd(a,t))return!0;if(!y(a,`MemberExpression`))return!1;let o=O(a.object);return!!(y(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&y(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},bd=(e,t,n={})=>{let r=v(e),i=r.parent;if(y(i,`NewExpression`)){let e=O(i.callee);return!!(t&&i.arguments?.[0]===r&&y(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return y(i,`CallExpression`)?i.callee===r||(t?k(i,gd,t,{allowGlobalReactNamespace:!0}):lr(i,gd))&&i.arguments?.[0]===r||t&&k(i,Jle,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(_d(i.callee,t)||Yle(i.callee,t))?!0:y(i.callee,`MemberExpression`)&&!i.callee.computed&&y(i.callee.property,`Identifier`)&&qle.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&yd(i.callee.object,t,i,i.callee.property.name))):!1},xd=new WeakMap,X=(e,t)=>{let n=b(e),r=n??e,i=xd.get(t);i||(i=new WeakMap,xd.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(mc(n))return i.set(r,n),n;if(!bd(n,t))return i.set(r,null),null;n=b(n)}return i.set(r,null),null},Sd=e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Cd=e=>e?We(e)?!0:y(e,`BlockStatement`)?Cd(e.body.at(-1)):y(e,`ContinueStatement`)||y(e,`BreakStatement`):!1,Xle=new Set([`createRef`,`useRef`]),wd=(e,t,n={})=>{let r=y(e,`MemberExpression`)?O(e.object):null;if(!y(e,`MemberExpression`)||C(e)!==`current`||!y(r,`Identifier`))return null;let i=w(r,t);if(!i?.initializer)return null;let a=O(i.initializer);return y(a,`CallExpression`)&&k(a,n.includeCreateRef?Xle:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Td=(e,t,n=new Set)=>{let r=O(e),i=wd(r,t);if(i)return i;if(!y(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=Hs(a);return o?(n.add(a.id),Td(o,t,n)):null},Ed=(e,t)=>Td(e,t)!==null,Dd=(e,n)=>{A(e,e=>{if(t(e))return!1;n(e)})},Od=e=>!y(e,`CallExpression`)||!y(e.callee,`MemberExpression`)||!y(e.callee.property,`Identifier`)?null:e.callee.property.name,Zle=e=>{let t=Od(e);return t!==null&&ot.has(t)},kd=e=>{let t=Od(e);return t!==null&&(ot.has(t)||t===`observe`)?t:null},Ad=e=>kd(e)!==null,jd=e=>{let t=Od(e);return t===null||!Zee.has(t)?!1:t===`listen`?(y(e,`CallExpression`)?e.arguments??[]:[]).some(e=>y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`)):!0},Qle=e=>{let t=Ye(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||y(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(y(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(y(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=Lt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},$le=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return Qle(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),y(r.declarationNode,`VariableDeclarator`)&&y(r.declarationNode.id,`ObjectPattern`)){let e=Md(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!y(t,`Property`)||(y(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=S(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return Md(r.initializer,t,n)},Md=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`))return $le(r,t,n);if(!y(r,`MemberExpression`))return null;let i=C(r);if(!i)return null;let a=Md(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Nd=e=>{let t=e,n=t.parent;for(;n;){if(y(n,`AssignmentExpression`))return n.left===t;if(y(n,`UpdateExpression`)||y(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(y(n,`ForInStatement`)||y(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},eue=new Set([...dn,`useInsertionEffect`]),tue=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),nue=new Set([`@react-native-community/netinfo`]),rue=new Set([`events`,`node:events`,`react-native`]),Pd=new WeakMap,iue=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),aue=new Set([`clear`,`delete`,`set`]),Fd=new WeakMap,Id=new WeakMap,Ld=new WeakMap,Rd=new WeakMap,zd={subscribe:`subscription`,timer:`timer`,socket:`connection`},Bd=(e,t)=>{if(N(e,eue,t.scopes))return!0;let n=O(e.callee);return!!(y(n,`Identifier`)&&tue.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Vd=e=>y(e,`NewExpression`)&&y(e.callee,`Identifier`)&&Je.has(e.callee.name),Z=(e,n,r=new Set,i=new Map)=>{if(!e)return null;let a=O(e);if(y(a,`Identifier`)){let e=n.scopes.symbolFor(a);if(!e)return n.scopes.isGlobalReference(a)?`global:${a.name}`:null;if(r.has(e.id))return`symbol:${e.id}`;r.add(e.id);let t=i.get(e.id);if(t)return Z(t,n,r,i);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=y(o,`Property`)?S(o):null;if(l&&y(s,`ObjectPattern`)&&y(c,`VariableDeclarator`)&&c.id===s){let t=Z(c.init,n,r,i);return t?`${t}.${l}`:`symbol:${e.id}`}let u=e.initializer?O(e.initializer):null;return e.kind===`const`&&u&&(y(u,`Identifier`)||y(u,`MemberExpression`))?Z(u,n,r,i)??`symbol:${e.id}`:`symbol:${e.id}`}if(y(a,`MemberExpression`)&&!a.computed){if(!y(a.property,`Identifier`))return null;let e=Z(a.object,n,r,i);return e?`${e}.${a.property.name}`:null}if(y(a,`ThisExpression`))return`this`;if(y(a,`Literal`)&&(typeof a.value==`string`||typeof a.value==`number`||typeof a.value==`boolean`))return`literal:${String(a.value)}`;if(t(a)){let e=D(a);return e===null?null:`function:${e}`}return null},Hd=(e,n)=>{if(!e)return null;let r=O(e),i=[];for(;y(r,`MemberExpression`)&&!r.computed;){if(!y(r.property,`Identifier`))return null;i.unshift(r.property.name),r=O(r.object)}if(!y(r,`Identifier`))return null;let a=n.scopes.symbolFor(r);if(a&&a.references.every(e=>e.flag===`read`)){let e=a.bindingIdentifier,r=[],o=e.parent;if(y(o,`ArrayPattern`)){let t=o.elements.findIndex(t=>t===e);t>=0&&(r.push(t),e=o)}else if(y(o,`Property`)&&y(o.parent,`ObjectPattern`)){let t=S(o);t&&(r.push(t),e=o.parent)}let s=e.parent,c=s?.parent,l=c?.parent;if(r.length>0&&y(s,`VariableDeclarator`)&&s.id===e&&y(c,`VariableDeclaration`)&&c.declarations.length===1&&y(l,`ForOfStatement`)&&l.left===c&&l.await!==!0){let e=yf(l.right,n);if(e){let a=O(l.right),o=y(a,`Identifier`)?n.scopes.symbolFor(a):null,s=o?.initializer?O(o.initializer):null,c=y(s,`ArrayExpression`)?s.elements.map(e=>{let t=e&&E(e)?e:null;for(let e of r){let n=t?O(t):null;if(typeof e==`number`&&y(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&E(r)?r:null}else if(typeof e==`string`&&y(n,`ObjectExpression`)){let r=n.properties.find(t=>y(t,`Property`)&&S(t)===e);t=y(r,`Property`)&&E(r.value)?r.value:null}else t=null}return t}):void 0;return c?.every(e=>{if(!e)return!0;let i=O(e),a=e=>{if(!y(e,`Identifier`))return!1;let t=n.scopes.symbolFor(e);return!!(t&&(t.kind===`const`||t.kind===`function`||t.kind===`import`||t.kind===`parameter`)&&t.references.every(e=>e.flag===`read`))};return y(i,`Literal`)||y(i,`ArrayExpression`)||y(i,`ObjectExpression`)||t(i)?!0:a(i)||r[0]===1&&y(i,`CallExpression`)&&a(O(i.callee))})===!0?{collectionKey:e,projectedValues:c,projectionKey:[...r.length>0?r.map(e=>`binding:${String(e)}`):[`binding:value`],...i].join(`.`)}:null}}}let o=a?.initializer?O(a.initializer):null;if(a?.kind===`const`&&y(o,`CallExpression`)){let e=Z(o.callee,n),t=[];for(let e of o.arguments){if(!E(e))continue;let r=Hd(e,n);if(r){t.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=Z(e,n);i&&t.push({collectionKey:null,identityKey:i})}let r=new Set(t.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&t.length===o.arguments.length&&r.size===1)return{collectionKey:[...r][0],projectionKey:[`call:${e}:${t.map(({identityKey:e})=>e).join(`:`)}`,...i].join(`.`)}}if(!a||a.kind!==`parameter`)return null;let s=a.bindingIdentifier.parent;for(;s&&!t(s);)s=s.parent;if(!s||!t(s))return null;let c=Rf(s);if(!c)return null;let l=O(c.callee);if(!y(l,`MemberExpression`))return null;let u=Z(l.object,n);if(!u)return null;let d=s.params[0],f=y(a.bindingIdentifier.parent,`AssignmentPattern`)&&a.bindingIdentifier.parent.left===a.bindingIdentifier?a.bindingIdentifier.parent:null,p=y(d,`ObjectPattern`)?Qi(a.bindingIdentifier):null,m=f?Z(f.right,n):null;if(f&&!m)return null;let h=d===a.bindingIdentifier?`value`:p&&m?`${p}=default:${m}`:p;return h?{collectionKey:u,projectionKey:[h,...i].join(`.`)}:null},Ud=(e,t)=>{let n=Hd(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Wd=(e,t)=>Ud(e,t)??Z(e,t),Gd=(e,t)=>{if(!e)return null;let n=Wd(e,t);if(n)return n;let r=O(e);if(y(r,`CallExpression`)){let e=Wd(r.callee,t),n=r.arguments.flatMap(e=>{if(!E(e))return[];let n=Gd(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!y(r,`BinaryExpression`)&&!y(r,`LogicalExpression`))return null;let i=Gd(r.left,t),a=Gd(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},oue=(e,t)=>{let n=O(e);if(y(n,`CallExpression`)&&Gd(n,t))return n;if(!y(n,`Identifier`))return If(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?O(r.initializer):null;return!r||!i?If(n,t):y(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Nd(e.identifier))return!1;let t=v(e.identifier),n=t.parent;if(!y(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=O(n.callee);if(!y(r,`MemberExpression`))return!1;let i=S(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:y(i,`Identifier`)||y(i,`MemberExpression`)?null:If(n,t)},Kd=(e,t,n)=>{let r=Hd(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>ju(e?O(e):null,{allowIndeterminateEntries:!0}));if(e.every(e=>e===!1))return`capture:false`;if(e.every(e=>e===!0))return`capture:true`}let i=e?oue(e,t):null;if(e&&!i)return null;let a=ju(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=O(i);if(!y(o,`ObjectExpression`)){let e=n?Gd(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!y(e,`Property`)){s=null;continue}let n=S(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Gd(e.value,t);s=n?`capture-value:${n}`:null}}return s},sue=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`ObjectExpression`))return Hd(n,t);let r=null;for(let e of n.properties??[]){if(!y(e,`Property`)){r=null;continue}let n=S(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Hd(e.value,t))}return r},qd=(e,t,n,r=!1)=>{let i=Kd(e,n,r);return i!==null&&i===Kd(t,n,r)},Jd=(e,t,n=new Set)=>{let r=Td(e,t.scopes);if(r)return r;let i=O(e);for(;y(i,`MemberExpression`);){let e=Td(i,t.scopes)??wd(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=O(i.object)}if(y(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(e?.kind===`const`&&e.initializer&&!n.has(e.id)){let r=new Set(n);return r.add(e.id),Jd(e.initializer,t,r)}}return null},Yd=(e,t)=>Jd(e,t)!==null,Xd=(e,t)=>{let n=v(e),r=n.parent;if(y(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&Yd(r.left,t)){let e=Z(r.left,t);return e?{anchor:r,key:e}:null}if(!y(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=S(r),a=r.parent;if(!i||!y(a,`ObjectExpression`))return null;let o=v(a),s=o.parent;if(!y(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!Yd(s.left,t))return null;let c=Z(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},Zd=(e,t)=>{let n=v(e),r=Xd(n,t);if(r)return r;let i=n.parent;if(!y(i,`VariableDeclarator`)||i.init!==n||!y(i.id,`Identifier`)||!y(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=Xd(e.identifier,t);return n?[n]:[]}).find(n=>pf(e,[n.anchor],t))??null:null},Qd=(e,n,r)=>{let i=S(e),a=O(e.object),o=y(a,`Identifier`)?r.scopes.symbolFor(a):null,s=b(n);if(!i||!o||!s||!t(s))return null;for(let e of o.references){let t=v(e.identifier),a=t.parent;if(!y(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t||!Yd(a.left,r)||b(a)!==s||!kp(n,[a],s,r))continue;let o=Z(a.left,r);if(o)return{anchor:a,key:`${o}.${i}`}}return null},cue=(e,t)=>{let n=Zd(e,t);if(n)return n;let r=v(e),i=r.parent;return y(i,`AssignmentExpression`)&&i.right===r&&y(i.left,`MemberExpression`)?Qd(i.left,e,t):null},$d=(e,t,n=!1)=>{let r=v(e),i=r.parent;if(y(i,`VariableDeclarator`)&&i.init===r){let r=Z(i.id,t);return n?Zd(e,t)?.key??r:r}if(y(i,`AssignmentExpression`)&&i.right===r){if(n&&y(i.left,`MemberExpression`)){let n=Qd(i.left,e,t);if(n)return n.key}return Z(i.left,t)}return n?Xd(r,t)?.key??null:null},ef=(e,t,n)=>e!==null&&(e===t.handleKey||e===$d(t.node,n)),tf=(e,t)=>{let n=O(e);if(y(n,`MemberExpression`))return tf(n.object,t);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Ye(r):null;return typeof i?.source.value==`string`?i.source.value:null},lue=(e,t)=>{if(e.kind!==`subscribe`||!y(e.node,`CallExpression`))return!1;if(jd(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||lf(e.node,`addListener`,t))return!1;let n=O(e.node.callee);if(!y(n,`MemberExpression`))return!1;let r=tf(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?nue.has(r):r!==`react-native`;let i=O(n.object),a=If(i,t),o=a&&y(a,`NewExpression`)?tf(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&rue.has(o))return!1;let s=y(i,`Identifier`)?t.scopes.symbolFor(i):null,c=y(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!y(i,`Identifier`)||c||s!==null&&(Ws(s)!==null||Hs(s)!==null)?$s(i,t.scopes).length===0:!1},uue=(e,t)=>{let n=O(e),r=Md(n,t.scopes);return y(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},nf=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;if(r.name===`navigation`)return!0;n.add(e.id);let i=e.initializer?O(e.initializer):null,a=y(i,`CallExpression`)?Md(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&nf(i,t,n))}if(!y(r,`CallExpression`))return!1;let i=O(r.callee);return!!(y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`getParent`&&nf(i.object,t,n))},rf=(e,t)=>{if(lue(e,t))return!0;if(!y(e.node,`CallExpression`))return!1;let n=O(e.node.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&uue(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&nf(n.object,t)},af=(e,t,n)=>{let r=O(e);if(!y(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&Z(r,n)===t.handleKey&&!i.references.some(e=>Nd(e.identifier)))},due=(e,t,n)=>af(e,t,n)&&rf(t,n),of=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!fp.has(t)||n.receiverKey===null||e!==n.receiverKey||!y(n.node,`CallExpression`))return!1;let i=O(n.node.callee);if(!y(i,`MemberExpression`))return!1;let a=If(i.object,r);return a!==null&&Vd(a)},sf=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i);if(!e||r.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Nd(e.identifier)))return null;let t=Hs(e);if(!t)return`symbol:${e.id}`;let a=O(t);if(!y(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(r);return o.add(e.id),sf(a,n,o)??`symbol:${e.id}`}if(t(i)){let e=D(i);return e===null?null:`function:${e}`}return null},fue=(e,t,n)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!y(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Nd(e.identifier));if(a.length!==1)return null;let o=v(a[0].identifier),s=o.parent,c=b(t);return!y(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kp(t,[s],c,n)?null:`symbol:${i.id}`},cf=(e,t,n=new Set)=>{let r=O(e);if($s(r,t.scopes).includes(`MediaQueryList`))return!0;if(y(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Hs(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),cf(i,t,a)}if(!y(r,`CallExpression`)||!k(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=or(r,t.scopes);return!!(i&&ue(i,t.scopes,e=>{let r=O(e);return y(r,`Literal`)&&r.value===null||y(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||cf(r,t,new Set(n))},t.cfg,`every`))},lf=(e,t,n)=>{let r=O(e.callee);return e.arguments?.length===1&&y(r,`MemberExpression`)&&!r.computed&&y(r.property,`Identifier`)&&r.property.name===t&&cf(r.object,n)},uf=(e,t)=>{let n=O(e.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:lf(e,`addListener`,t)?{receiverKey:sf(n.object,t)??fue(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:sf(e.arguments?.[0],t)}:{receiverKey:Wd(n.object,t),registrationVerbName:n.property.name,eventKey:Wd(e.arguments?.[0],t),handlerKey:Wd(e.arguments?.[1],t)}},df=e=>{if(e.kind!==`subscribe`||!y(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&E(t)?t:null},ff=(e,t)=>{let n=e;for(;y(n,`CallExpression`);){let e=y(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!y(e,`MemberExpression`)||e.computed||!y(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Wd(e.object,t);n=O(e.object)}return null},pue=(e,t)=>{let n=e,r=v(n);for(;y(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=v(r.parent),t=e.parent;if(!y(t,`CallExpression`)||t.callee!==e)break;n=t,r=v(n)}return n===e||kd(n)!==`subscribe`||ff(n,t)===null?null:$d(n,t,!0)},mue=(e,n)=>{let r=fd(e,n.scopes),i=[...r];for(;i.length>0;){let e=i.pop();!e||!t(e)||A(e.body,a=>{if(a!==e.body&&t(a))return!1;if(!y(a,`CallExpression`))return;let o=null;if(y(a.callee,`Identifier`)&&Ie.has(a.callee.name)){let e=a.arguments?.[0];o=e&&E(e)?e:null}else{let e=a.arguments?.find(e=>E(e)&&ud(e)===a);e&&E(e)&&(o=e);let t=kd(a);t!==null&&(o=df({kind:`subscribe`,node:a,resourceName:t,handleKey:null,...uf(a,n)}))}let s=o?M(o,n.scopes):null;!s||r.has(s)||(r.add(s),i.push(s))})}return r},hue=(e,n)=>{let r=[];if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`))return r;let i=null;if(y(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];y(n,`ReturnStatement`)&&n.argument&&(i=n.argument)}let a=mue(e,n);return A(e,o=>{if(o!==e&&t(o)&&(o===i||!a.has(o)&&!cd(o)))return!1;if(Vd(o)){r.push({kind:`socket`,node:o,resourceName:y(o.callee,`Identifier`)?o.callee.name:`WebSocket`,handleKey:$d(o,n,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!y(o,`CallExpression`))return;if(y(o.callee,`Identifier`)&&Ie.has(o.callee.name)){if(o.callee.name===`setTimeout`&&(Mp(o)||Np(o,n)))return;r.push({kind:`timer`,node:o,resourceName:o.callee.name,handleKey:$d(o,n,!0),receiverKey:null,registrationVerbName:o.callee.name,eventKey:null,handlerKey:null});return}let s=kd(o);if(s!==null){let e=uf(o,n);r.push({kind:`subscribe`,node:o,resourceName:s,handleKey:(s===`on`?pue(o,n):null)??$d(o,n,!0),...e})}}),r.filter(e=>B(e.node,n))},pf=(e,t,n)=>{let r=e,i=b(r);for(;i&&cd(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!y(e,`CallExpression`))break;r=e,i=b(r)}return Ga(r,t,n,e)},gue=(e,t,n)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.body,`BlockStatement`))return t;let r=[];return Dd(e.body,e=>{y(y(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=D(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=D(r);return i!==null&&i>t&&Cp(r,e,n)});return!pf(e.node,i,n)})},mf=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=y(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Nd(e.identifier));return r&&y(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&y(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},hf=(e,n)=>{if(!e)return!1;let r=O(e),i=new Set;if(A(r,e=>{if(!y(e,`Identifier`))return;let t=n.scopes.symbolFor(e);t&&i.add(t.id)}),i.size===0)return!1;let a=(e,t)=>{let r=!1;return A(e,e=>{if(!y(e,`Identifier`)||t&&!Nd(e))return;let a=n.scopes.symbolFor(e);if(a&&i.has(a.id))return r=!0,!1}),r},o=r.parent;for(;o&&!t(o);){if(y(o,`ForOfStatement`)){let e=O(o.left);if(!y(e,`VariableDeclaration`)&&(a(e,!1)||a(o.body,!0)))return!0}o=o.parent}return!1},gf=(e,t)=>{if(!y(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!y(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!y(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!y(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},_f=(e,t,n)=>{if(!y(e,`Identifier`)||!gf(e,t))return!1;let r=t.scopes.symbolFor(e);return r?n.has(r.id)?!0:(n.add(r.id),r.references.every(e=>{let r=v(e.identifier),i=r.parent;if(y(i,`ForOfStatement`)&&i.right===r||y(i,`MemberExpression`)&&i.object===r&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`push`&&y(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(y(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return y(i.id,`Identifier`)&&y(e,`VariableDeclaration`)&&e.kind===`const`?_f(i.id,t,n):!1}return!1})):!1},vf=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`)||!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?O(i.initializer):null,o=e=>{if(!e)return!1;let t=O(e);if(y(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(y(t,`ArrayExpression`))return!0;if(!y(t,`CallExpression`))return!1;let n=O(t.callee);return!!(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?_f(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:y(a,`Identifier`)?vf(a,t,n):null},yf=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Pd.get(t);if(i||(i=new Map,Pd.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=vf(e,t);return i.set(r.id,a),a},bf=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`)||!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?O(i.initializer):null,o=e=>{if(!e)return!1;let t=O(e);return y(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):y(t,`ArrayExpression`)&&t.elements.every(e=>e===null||y(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?_f(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:y(a,`Identifier`)?bf(a,t,n):null},xf=(e,n)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`))return null;let i=mf(r,n);if(i)return bf(i.right,n);let a=n.scopes.symbolFor(r);if(!a||a.kind!==`parameter`)return null;let o=a.bindingIdentifier.parent;for(;o&&!t(o);)o=o.parent;if(!o||!t(o))return null;let s=o.parent;if(!y(s,`CallExpression`))return null;let c=O(s.callee);if(y(c,`MemberExpression`)&&!c.computed&&y(c.property,`Identifier`)){if(y(c.object,`Identifier`)&&c.object.name===`Array`&&c.property.name===`from`&&s.arguments?.[1]===o)return Z(s.arguments[0],n);if(s.arguments?.[0]===o)return Z(c.object,n)}return null},_ue=(e,t)=>{let n=mf(e,t);return n?Z(n.right,t):xf(e,t)},Sf=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},Cf=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=O(e);if(Sf(i,Z(a,t),n),!y(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!gf(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?O(o.initializer):null,l=null,u=n;if(y(c,`Identifier`))l=c;else if(y(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&y(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,D(c)??1/0))}else if(y(c,`CallExpression`)){let e=O(c.callee);if(y(e,`MemberExpression`)&&!e.computed&&y(e.property,`Identifier`)){let r=e.property.name,i=y(e.object,`Identifier`)&&e.object.name===`Array`&&t.scopes.isGlobalReference(e.object)&&r===`from`&&c.arguments.length===1,a=(r===`slice`||r===`concat`)&&c.arguments.length===0||r===`toReversed`||r===`toSorted`;if(i){let e=c.arguments[0];l=E(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,D(c)??1/0))}}if(!l)return i;for(let[e,n]of Cf(l,t,u,s))Sf(i,e,n);return i},wf=(e,n)=>{let r=mf(e,n);if(r)return Cf(r.right,n);let i=e?O(e):null;if(!y(i,`Identifier`))return new Map;let a=n.scopes.symbolFor(i);if(!a||a.kind!==`parameter`)return new Map;let o=a.bindingIdentifier.parent;for(;o&&!t(o);)o=o.parent;let s=o?.parent,c=y(s,`CallExpression`)?O(s.callee):null;return y(c,`MemberExpression`)?Cf(c.object,n):new Map},Tf=(e,t,n)=>{let r=Pf(t.node,n);return r!==null&&wf(e,n).has(r)},Ef=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=mf(n,t)?.right;return r?yf(r,t):null},Df=(e,t)=>{if(!e)return!1;let n=O(e);return y(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Of=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);return!r||r.kind!==`const`&&r.kind!==`function`&&r.kind!==`parameter`||!r.references.every(e=>e.flag===`read`&&!Nd(e.identifier))?null:r.id},kf=(e,t)=>{if(!y(e,`BreakStatement`)&&!y(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(y(n,`LabeledStatement`)&&n.label.name===e.label.name)return R(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(y(n,`ForStatement`)||y(n,`ForInStatement`)||y(n,`ForOfStatement`)||y(n,`WhileStatement`)||y(n,`DoWhileStatement`))return n===t;if(y(e,`BreakStatement`)&&y(n,`SwitchStatement`))return!1;n=n.parent}return!1},Af=(e,n,r)=>{if(!(y(n.body,`BlockStatement`)?e.parent===n.body:e===n.body))return!1;let i=b(e),a=!1,o=!1;return A(n.body,s=>{if(a||o||s!==n.body&&t(s))return!1;if(y(s,`ReturnStatement`)||y(s,`ThrowStatement`)&&(!i||!Xu(s,e,i,r))||y(s,`BreakStatement`)&&kf(s,n))return a=!0,!1;if(y(s,`ContinueStatement`)&&kf(s,n)&&(D(s)??-1)<(D(e)??0))return o=!0,!1}),!a&&!o},jf=(e,t,n)=>{let r=v(e).parent;return!!(y(r,`ExpressionStatement`)&&Af(r,t,n))},Mf=(e,n,r)=>{let i=v(e),a=y(i.parent,`ExpressionStatement`)?i.parent:null;if(!a)return null;let o=new Set,s=a.parent;for(;s&&!t(s);){if(y(s,`ForOfStatement`)){if(!Af(a,s,r))return null;let e=Z(s.right,r);e&&o.add(e),a=s}s=s.parent}return[...n].every(e=>o.has(e))?a:null},vue=(e,t,n)=>Mf(e,t,n)!==null,yue=e=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!y(t,`CallExpression`))return null;let n=O(t.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?null:y(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`&&t.arguments?.[1]===e||n.property.name===`map`&&t.arguments?.[0]===e?t:null},bue=(e,n)=>{let r=b(e);if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`))return null;let i=yue(r);if(!i)return null;if(y(r.body,`BlockStatement`)){let i=v(e),a=i.parent,o=a?.parent;if(!y(a,`VariableDeclarator`)||a.init!==i||!y(a.id,`Identifier`)||!y(o,`VariableDeclaration`)||o.kind!==`const`||o.parent!==r.body)return null;let s=[];A(r.body,e=>{if(e!==r.body&&t(e))return!1;y(e,`ReturnStatement`)&&s.push(e)});let c=s[0],l=r.body.body??[],u=y(c,`ReturnStatement`)&&c.argument?O(c.argument):null,d=n.scopes.symbolFor(a.id);if(s.length!==1||l[l.length-1]!==c||!y(u,`Identifier`)||!d||n.scopes.symbolFor(u)?.id!==d.id||!pf(e,[c],n))return null}else if(v(e)!==r.body)return null;let a=v(i),o=a.parent;return y(o,`VariableDeclarator`)&&o.init===a?Z(o.id,n):null},Nf=(e,t)=>{let n=v(e),r=n.parent,i=y(r,`CallExpression`)?O(r.callee):null;if(!y(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!y(i,`MemberExpression`)||i.computed||!y(i.object,`Identifier`)||!y(i.property,`Identifier`)||i.property.name!==`push`||!gf(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?O(a.initializer):null;return a&&y(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Pf=(e,n)=>{let r=Nf(e,n);if(r)return`symbol:${r.id}`;let i=bue(e,n);if(i!==null)return i;let a=e,o=a.parent;for(;o;){if(t(o))return null;if(y(o,`VariableDeclarator`)&&o.init===a)return Z(o.id,n);a=o,o=a.parent}return null},Ff=(e,t)=>{if(!y(e.node,`CallExpression`))return null;let n=O(e.node.callee);if(!y(n,`MemberExpression`)||n.computed)return null;let r=O(n.object);if(!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=v(e.identifier),n=t.parent;if(!y(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=O(n.callee);return y(r,`MemberExpression`)&&!r.computed&&y(r.object,`Identifier`)&&y(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(b(o)!==b(e.node)||!pf(e.node,[o],t))return null;let s=O(o.callee);if(!y(s,`MemberExpression`)||!y(s.object,`Identifier`)||!gf(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?O(c.initializer):null;return!c||!y(l,`ArrayExpression`)||(l.elements?.length??0)!==0||b(c.declarationNode)!==b(e.node)?null:c.references.every(e=>{let t=v(e.identifier),n=t.parent;if(y(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!y(r,`MemberExpression`)||r.object!==t||r.computed||!y(r.property,`Identifier`)||!y(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?Z(s.object,t):null},If=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(!y(i,`Identifier`))return i;let a=n.scopes.symbolFor(i),o=(a?.kind===`let`||a?.kind===`var`)&&y(a.declarationNode,`VariableDeclarator`)&&a.declarationNode.id===a.bindingIdentifier&&a.references.every(e=>e.flag===`read`&&!Nd(e.identifier))&&a.scope.symbols.filter(e=>e.name===a.name).length===1,s=a?.kind===`function`&&t(a.declarationNode)?n.scopes.ownScopeFor(a.declarationNode)?.symbols.find(e=>e.name===a.name&&e.declarationNode===a.declarationNode):null,c=a?.kind===`function`&&a.references.every(e=>e.flag===`read`&&!Nd(e.identifier))&&(!s||s.references.every(e=>e.flag===`read`&&!Nd(e.identifier)))&&a.scope.symbols.filter(e=>e.name===a.name).length===1;return!a||a.kind!==`const`&&!o&&!c||!a.initializer||r.has(a.id)?i:(r.add(a.id),If(a.initializer,n,r))},xue=(e,t)=>{let n=If(e,t);return y(n,`ObjectExpression`)?n:null},Lf=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!y(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=xue(n,t);if(!r)return null;for(let e of r.properties??[]){if(!y(e,`Property`)||S(e)!==`signal`)continue;let n=Z(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Rf=e=>{let n=t(e)?e:b(e);if(!n||!t(n)||n.async||n.generator)return null;let r=n.parent;if(!y(r,`CallExpression`)||r.arguments?.[0]!==n)return null;let i=O(r.callee);return y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`forEach`?r:null},zf=e=>{let t=v(e),n=t.parent;return y(n,`CallExpression`)&&n.callee===t?n:null},Sue=(e,t,n)=>{let r=bc(e);if(!r||If(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=zf(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return b(o)===t&&B(o,n)?o:null},Bf=(e,t)=>{if(!y(e,`NewExpression`))return!1;let n=O(e.callee);return y(n,`Identifier`)&&s.has(n.name)&&t.scopes.isGlobalReference(n)},Cue=(e,t)=>{if(!e)return!0;let n=O(e);return y(n,`Literal`)&&n.value===null||y(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},wue=(e,n,r,i)=>{if(!t(e)||e.async||e.generator||r.receiverKey===null||!y(r.node,`CallExpression`))return null;let a=O(r.node.callee),o=y(a,`MemberExpression`)?O(a.object):null;if(!o||!y(o,`Identifier`))return null;let s=i.scopes.symbolFor(o),c=s?.declarationNode;if(!s||s.kind!==`let`&&s.kind!==`var`||!y(c,`VariableDeclarator`)||c.id!==s.bindingIdentifier||b(c)!==n||!Cue(c.init,i))return null;let l=[];for(let e of s.references){let t=v(e.identifier),n=t.parent;if(y(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){l.push(n);continue}let r=n,i=r?.parent;if(!y(r,`MemberExpression`)||r.object!==t||!y(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(S(r)??``))return null}if(l.length!==1)return null;let u=l[0];if(!u||!Bf(O(u.right),i)||b(u)!==e||!Xu(u,r.node,e,i))return null;let d=[],f=D(u);if(f===null||(A(e.body,n=>{if(n!==e.body&&t(n))return!1;if(!y(n,`CallExpression`))return;let a=D(n);a===null||a>=f||!Cp(n,r,i)||d.push(Yf(n,e,r.receiverKey??``,i)??n)}),!Ka(e,d,i)))return null;let p=bc(e),m=p?i.scopes.symbolFor(p):null;if(!m)return null;let h=[];for(let t of m.references){let r=zf(t.identifier);if(r&&b(r)===n){h.push(r);continue}let a=v(t.identifier),o=a.parent;if(!o||!Bf(o,i)||b(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&B(g,i)?g:null},Vf=(e,t,n,r)=>{let i=b(e);return!i||i===t?e:Sue(i,t,n)??(r?wue(i,t,r,n):null)??e},Tue=(e,n,r)=>{if(!t(e))return[];let i=bc(e),a=Z(i,r);if(!a)return[];let o=[];return A(n,e=>{if(e!==n&&t(e))return!1;let s=y(e,`CallExpression`)?e.arguments[1]:null;y(e,`CallExpression`)&&ar(e)===`addEventListener`&&(Z(s,r)===a||y(s,`Identifier`)&&s.name===i?.name)&&o.push(e)}),o},Eue=(e,n,r)=>{let i=O(e);if(!y(i,`Identifier`))return null;let a=r.scopes.symbolFor(i),o=a?.initializer?O(a.initializer):null;if(!a||a.kind!==`let`&&a.kind!==`var`||!y(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier||!y(o,`Literal`)||o.value!==null||a.scope.symbols.filter(e=>e.name===a.name).length!==1)return null;let s=a.references.filter(e=>Nd(e.identifier));if(s.length!==1)return null;let c=s[0],l=v(c.identifier),u=l.parent;if(!y(u,`AssignmentExpression`)||u.operator!==`=`||u.left!==l||b(u)!==b(n.node)||!pf(n.node,[u],r))return null;let d=O(u.right);return t(d)?d:null},Hf=(e,n,r,i)=>{if(!t(e)||!y(n,`CallExpression`))return null;let a=new Map(i);for(let t=0;t<e.params.length;t+=1){let i=e.params[t],o=n.arguments?.[t];if(!y(i,`Identifier`)||!o||y(o,`SpreadElement`))continue;let s=r.scopes.symbolFor(i),c=s?.references.some(e=>{let t=v(e.identifier),n=t.parent;return y(n,`AssignmentExpression`)&&n.left===t||y(n,`UpdateExpression`)&&n.argument===t||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!s||c)return null;a.set(s.id,o)}return a},Due=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=y(e,`ChainExpression`)?e.expression:e,i=y(r,`CallExpression`)?O(r.callee):null,a=y(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Pf(t.node,n);if(!y(r,`CallExpression`)||!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||i.property.name!==`forEach`||!y(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==Z(i.object,n))return!1;let c=Cf(i.object,n);return c.has(s)&&!xp(t.node,r,c,n)},Uf=(e,n,r,i=new Set,a=new Map,o=!1)=>{if(!t(e)||i.has(e))return!1;i.add(e);let s=!1,c=[];A(e.body,l=>{if(s||l!==e.body&&t(l)&&!cd(l))return!1;let u=y(l,`ChainExpression`)?l.expression:l;if(Due(l,n,r)){if(o){c.push(l);return}return s=!0,!1}if(Cp(l,n,r,a)){let i=Rf(l),d=y(u,`CallExpression`)?O(u.callee):null,f=y(d,`MemberExpression`)?d.object:d,p=mf(f,r),m=_ue(f,r),h=wf(f,r),g=Ff(n,r)??Pf(n.node,r);if(m!==null&&b(l)!==e){let e=b(l);i&&e&&t(e)&&g!==null&&h.has(g)&&Ka(e,[l],r)&&!xp(n.node,l,h,r)&&c.push(i);return}let _=mf(y(u,`CallExpression`)?u.arguments?.[0]:null,r)??p;if(!_){if(o){let t=Xf(l,e,n,r,a);c.push(t??l);return}return s=!0,!1}let ee=Mf(l,n.kind===`subscribe`&&n.registrationVerbName===`addEventListener`&&y(n.node,`CallExpression`)?new Set([O(n.node.callee),n.node.arguments?.[0],n.node.arguments?.[1],n.node.arguments?.[2]].flatMap(e=>{let t=y(e,`MemberExpression`)?Hd(e.object,r):E(e)?Hd(e,r):null;return t?[t.collectionKey]:[]})):new Set,r);!e.async&&!e.generator&&(jf(l,_,r)||ee!==null)&&(g===null||h.size===0||h.has(g)&&!xp(n.node,l,h,r))&&c.push(ee??_);return}if(!y(u,`CallExpression`))return;let d=If(u.callee,r),f=y(d,`Identifier`)?Eue(d,n,r):d?Op(d,r):null,p=f&&t(f)?Hf(f,u,r,a):null;f&&t(f)&&p&&!f.async&&!f.generator&&Uf(f,n,r,new Set(i),p,o)&&c.push(u)});let l=v(e.body);return o&&c.some(e=>v(e)===l)?!0:s||Ka(e,c,r)},Wf=(e,n,r)=>e.length>0&&e.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);return!!(i&&t(i)&&Uf(i,n,r,new Set,new Map,!0))}),Gf=(e,t,n)=>{let r=O(e);if(!y(r,`CallExpression`))return!1;let i=O(r.callee);if(!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=O(i.object);if(!y(a,`MemberExpression`)||a.computed||!y(a.property,`Identifier`))return!1;let o=Z(a.object,n);if(o===null||o!==Z(r.arguments?.[0],n))return!1;let s=a.property.name;return of(o,s,t,n)?!0:t.kind===`socket`?ef(o,t,n)&&(fp.has(s)||dp.has(s)):t.kind===`subscribe`&&ef(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||vt.has(s))},Kf=(e,n,r)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(Gf(e,n,r))return!0;let i=If(e,r);return i&&Gf(i,n,r)?!0:!!(i&&t(i)&&Uf(i,n,r))};if(!y(e.body,`BlockStatement`))return i(O(e.body));let a=[];return Dd(e.body,e=>{y(e,`ReturnStatement`)&&e.argument&&i(O(e.argument))&&a.push(e)}),Ka(e,a,r)},qf=(e,t,n)=>{let r=Z(e,n);if(r!==null&&(r===t||t.startsWith(`${r}.`)))return!0;let i=O(e);if(!y(i,`BinaryExpression`)||i.operator!==`!=`&&i.operator!==`!==`)return!1;let a=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return Z(i.left,n)===t&&a(i.right)||Z(i.right,n)===t&&a(i.left)},Jf=(e,t,n,r)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Dn(O(t))===!1)return!0}if(y(i,`UnaryExpression`)&&i.operator===`!`){let e=O(i.argument);if(y(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Dn(O(i))===!0)return!0}let a=Z(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:qf(i.argument,t,n)}if(y(i,`LogicalExpression`)){let e=Jf(i.left,t,n,r),a=Jf(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(y(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?Z(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Yf=(e,n,r,i,a=new Map)=>{let o=e.parent;for(;o&&o!==n;){if(y(o,`IfStatement`))return o.alternate!==null||!qf(o.test,r,i)||!pf(o.consequent,[e],i)?null:o;o=o.parent}if(t(n)&&y(n.body,`BlockStatement`)){let t=e;for(;t.parent&&t.parent!==n.body;)t=t.parent;let o=n.body.body.findIndex(e=>e===t);for(let e=o-1;e>=0;--e){let t=n.body.body[e];if(y(t,`IfStatement`)&&t.alternate===null&&Cd(t.consequent)&&Jf(t.test,r,i,a))return t}}return null},Xf=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Yf(e,t,n.handleKey,r,i),Oue=(e,t,n)=>{let r=new Set,i=t;for(;i&&i!==n;)r.add(i),i=i.parent??null;let a=e,o=a.parent??null;for(;o&&o!==n;){let e=y(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||y(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||y(o,`LogicalExpression`)&&o.right===a||y(o,`AssignmentPattern`)&&o.right===a||(y(o,`ForStatement`)||y(o,`ForInStatement`)||y(o,`ForOfStatement`)||y(o,`WhileStatement`)||y(o,`DoWhileStatement`))&&o.body===a?a:y(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},kue=(e,n,r,i=!1)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.body,`BlockStatement`))return!1;let a=r.cfg.cfgFor(e),o=a?.blockOf(n.node),s=D(n.node);if(!a||!o||s===null)return!1;let c=[];return Dd(e.body,l=>{if(!y(l,`CallExpression`))return;let u=D(l),d=Xf(l,e,n,r),f=a.blockOf(l);if(u===null||u>=s||f!==o&&!d&&!i||!d&&Oue(l,n.node,e))return;if(Cp(l,n,r)){c.push(d??l);return}let p=Op(l.callee,r),m=p&&t(p)?Hf(p,l,r,new Map):null;p&&t(p)&&m&&Uf(p,n,r,new Set,m)&&c.push(d??l)}),i?kp(n.node,c,e,r):Ka(e,c,r)},Aue=(e,t,n)=>{let r=b(e);if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`)&&!y(r,`FunctionDeclaration`))return!1;let i=!1;return A(r.body,a=>{if(i)return!1;if(!y(a,`CallExpression`)||b(a)!==r||!Bd(a,n))return;let o=or(a);if(o&&o!==e&&Kf(o,t,n))return i=!0,!1}),i},jue=(e,t,n)=>t.handleKey!==null&&Aue(e,t,n)&&kue(e,t,n,t.registrationVerbName===`setTimeout`),Zf=(e,t,n,r)=>{let i=O(e);if(y(i,`UnaryExpression`)&&i.operator===`!`)return Zf(i.argument,!t,n,r);if(y(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Zf(i.left,t,n,r),...Zf(i.right,t,n,r)]:[];if(y(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Dn(i.left),a=Dn(i.right),o=e??a,s=e===null?i.left:i.right,c=Z(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:y(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=Z(i,r);return a===null?[]:[{bindingIdentifier:y(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Mue=(e,n,r)=>{if(!t(e)||e.async)return[];let i=[];A(e.body,a=>{if(a!==e.body&&t(a))return!1;y(a,`IfStatement`)&&!a.alternate&&!Xu(a.consequent,n,e,r)&&kp(n,[a],e,r)&&i.push(...Zf(a.test,!0,a,r))});let a=n,o=a.parent;for(;o&&o!==e;)y(o,`IfStatement`)&&o.consequent===a&&i.push(...Zf(o.test,!1,o,r)),a=o,o=o.parent;return i},Nue=(e,n,r)=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);if(!i||!t(i)||i.async||i.generator)return!1;let a=!1;return A(i.body,e=>{if(a||e!==i.body&&t(e))return!1;if(y(e,`AssignmentExpression`)&&e.operator===`=`&&Z(e.left,r)===n.key&&Dn(e.right)===n.value&&r.cfg.isUnconditionalFromEntry(e))return a=!0,!1}),a},Pue=(e,n,r,i)=>{let a=D(n);if(!t(e)||a===null)return!0;let o=!1;return A(e.body,n=>{if(o||n!==e.body&&t(n))return!1;let s=D(n);if(s===null||s>=a)return;let c=y(n,`AssignmentExpression`)?n.left:y(n,`UpdateExpression`)?n.argument:null;if(c&&Z(c,i)===r.key)return o=!0,!1}),o},Fue=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(y(a,`TryStatement`)&&a.block===i&&a.handler&&Xu(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Iue=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!y(i.declarationNode,`VariableDeclarator`)||b(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Nd(e.identifier))return!0;let r=v(e.identifier),i=r.parent;return y(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Dn(i.right)===t.value&&n.includes(b(i)??i)})},Lue=(e,n,r,i)=>{if(!t(e))return!0;let a=D(n.guardNode),o=D(r);if(a===null||o===null)return!0;let s=!1;return A(e.body,n=>{if(s||n!==e.body&&t(n))return!1;let c=D(n);if(!(c===null||c<=a||c>=o)&&(y(n,`AwaitExpression`)||y(n,`YieldExpression`)||y(n,`CallExpression`)&&!Qa(n,i.scopes))&&(Xu(n,r,e,i)||Fue(n,r,e,i)))return s=!0,!1}),s},Qf=(e,t)=>{let n=wd(O(e),t.scopes),r=n?.initializer?O(n.initializer):null;if(!y(r,`CallExpression`))return null;let i=r.arguments?.[0]?O(r.arguments[0]):null;return!y(i,`Literal`)||typeof i.value!=`number`?null:Z(e,t)},$f=(e,t)=>{let n=O(e);if(y(n,`LogicalExpression`)&&n.operator===`||`)return $f(n.left,t)??$f(n.right,t);if(!y(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=Qf(n.left,t),i=Qf(n.right,t),a=O(r?n.right:n.left),o=r??i;return o&&y(a,`Identifier`)?o:null},ep=(e,n,r)=>{if(!t(e))return null;let i=null;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(!y(a,`IfStatement`)||a.alternate)return;let o=$f(a.test,r);!o||Xu(a.consequent,n,e,r)||!kp(n,[a],e,r)||(i=o)}),i},Rue=(e,t,n)=>{if(y(e,`UpdateExpression`)&&Z(e.argument,n)===t)return!0;if(!y(e,`AssignmentExpression`)||Z(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=O(e.right);return y(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},zue=(e,n,r)=>{if(!t(e))return!1;let i=!1;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(Rue(a,n,r))return i=!0,!1}),i},tp=(e,n,r)=>e.length>0&&e.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);return!!(i&&t(i)&&Uf(i,n,r))}),Bue=(e,t)=>{let n=Z(e,t),r=O(e);if(!y(r,`Identifier`))return n;let i=If(r,t);return i&&i!==r?Z(i,t)??n:n},Vue=(e,t,n)=>{let r=O(e);if(!y(r,`BinaryExpression`)||r.operator!==`===`&&r.operator!==`==`)return null;let i=[{expression:r.left,value:r.right},{expression:r.right,value:r.left}];for(let{expression:e,value:r}of i){let i=O(e),a=O(r);if(!(!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||Bue(i.object,n)!==t||!y(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Hue=(e,n,r)=>{if(!t(e)||n.handleKey===null)return!1;let i=n.handleKey.lastIndexOf(`.`);if(i===-1)return!1;let a=n.handleKey.slice(0,i),o=[];A(e.body,i=>{if(i!==e.body&&t(i))return!1;if(!y(i,`IfStatement`)||i.alternate!==null||!Cd(i.consequent)||!kp(n.node,[i],e,r))return;let s=Vue(i.test,a,r);s&&o.push(s)});let s=new Set(o.map(({propertyName:e})=>e));if(s.size!==1)return!1;let c=[...s][0],l=new Set(o.map(({value:e})=>e)),u=X(n.node,r.scopes);if(!u){let e=b(n.node);for(;e&&!mc(e);)e=b(e);u=e}if(!c||!u||!t(u))return!1;let d=new Set,f=!1;return A(u.body,e=>{if(f)return!1;if(!y(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Z(e.left,r);if(t===`${a}.${c}`)return f=!0,!1;if(t!==a)return;let n=O(e.right);if(y(n,`Literal`)&&n.value===null)return;let i=If(n,r);if(!i||!y(i,`ObjectExpression`))return f=!0,!1;let o=i.properties.find(e=>y(e,`Property`)&&S(e)===c),s=y(o,`Property`)?O(o.value):null;if(!s||!y(s,`Literal`)||typeof s.value!=`string`)return f=!0,!1;d.add(s.value)}),!f&&d.size>0&&[...d].every(e=>l.has(e))},np=(e,n,r)=>{let i=n.handleKey;if(!t(e)||i===null)return!1;let a=D(n.node);if(a===null)return!1;let o=!1,s=[];return A(e.body,c=>{if(o||c!==e.body&&t(c))return!1;if(y(c,`IfStatement`)&&!c.alternate&&qf(c.test,i,r)&&!Xu(c.consequent,n.node,e,r)&&kp(n.node,[c],e,r))return o=!0,!1;let l=D(c);if(l===null||l>=a||!op(c,n,r))return;let u=Xf(c,e,n,r);s.push(u??c)}),o||Hue(e,n,r)||kp(n.node,s,e,r)},rp=(e,t)=>e.kind===`subscribe`?e.handlerKey??Z(df(e),t):e.kind!==`timer`||!y(e.node,`CallExpression`)?null:Z(e.node.arguments?.[0],t),ip=(e,t)=>{let n=bc(e);return new Set([Z(e,t),Z(n,t)].filter(e=>e!==null))},ap=(e,t,n,r)=>Wf(n,t,r)&&pf(Vf(t.node,e,r),n,r),op=(e,n,r)=>{if(Cp(e,n,r))return!0;let i=y(e,`ChainExpression`)?e.expression:e;if(!y(i,`CallExpression`))return!1;let a=If(i.callee,r);return!!(a&&t(a)&&!a.async&&!a.generator&&Uf(a,n,r,new Set,new Map,!0))},Uue=(e,t,n)=>{let r=O(e);if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&y(e.declarationNode,`VariableDeclarator`)&&b(e.declarationNode)===t?e:null}let i=wd(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;y(a,`MemberExpression`);)a=O(a.object);if(!y(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?O(o.initializer):null;return o&&o.kind===`const`&&y(o.declarationNode,`VariableDeclarator`)&&y(s,`ObjectExpression`)&&b(o.declarationNode)===t?o:null},Wue=e=>{let t=e;for(;y(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return v(t)},Gue=(e,n,r,i)=>n.references.every(n=>{let a=Wue(n.identifier);if(Z(a,i)!==e.handleKey)return y(r.left,`Identifier`);if(!Nd(n.identifier))return!0;let o=a.parent;if(o===r)return!0;if(!y(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=O(o.right),c=y(s,`Literal`)&&s.value===null||y(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s),l=b(o);if(!c||!l||!t(l))return!1;let u=[];return A(l.body,n=>{if(n!==l.body&&t(n))return!1;op(n,e,i)&&u.push(n)}),kp(o,u,l,i)}),Kue=(e,t,n)=>{let r=Nf(t.node,n);return!!(r&&b(r.declarationNode)===e)},que=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=ip(t,r);if(!i.has(rp(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&b(e.node)===t&&i.has(rp(e,r)??``));return a.length===1&&a[0]===e},Jue=(e,n,r,i,a)=>{let o=b(n.node),s=v(n.node),c=s.parent,l=n.handleKey!==null&&y(c,`AssignmentExpression`)&&c.operator===`=`&&c.right===s?Uue(c.left,e,a):null,u=Kue(e,n,a);if(n.kind!==`timer`||!o||!t(o)||o===e||o.async||o.generator||!l&&!u||!Wf(i,n,a)||l&&y(c,`AssignmentExpression`)&&!Gue(n,l,c,a))return!1;let d=que(n,o,r,a);if(l&&!d&&!np(o,n,a))return!1;let f=n.node.parent;for(;f&&f!==o;){if(l&&(y(f,`ForStatement`)||y(f,`ForInStatement`)||y(f,`ForOfStatement`)||y(f,`WhileStatement`)||y(f,`DoWhileStatement`)))return!1;f=f.parent}let p=bc(o),m=p?a.scopes.symbolFor(p):null;if(!m||m.references.length===0)return!1;let h=m.references.filter(e=>d&&R(e.identifier,n.node)&&rp(n,a)===Z(e.identifier,a));if(d&&(h.length!==1||m.references.length!==2))return!1;let g=pd(e,a.scopes);return m.references.every(s=>{let c=Z(s.identifier,a);if(h.some(e=>e===s))return!0;let l=r.find(e=>e!==n&&c!==null&&rp(e,a)===c),u=l?df(l):null;if(l&&!(u&&t(u)&&u.async)&&ap(e,l,i,a))return!0;let d=zf(s.identifier);if(!d)return!1;let f=b(d);if(!f||!t(f)||f===o||f.async||f.generator)return!1;if(f===e)return pf(Vf(d,e,a),i,a);let p=ip(f,a),m=r.find(e=>{if(e===n)return!1;let t=df(e),r=t?If(t,a):null;return p.has(rp(e,a)??``)||r===f});return m?ap(e,m,i,a):g.has(f)&&pf(Vf(d,e,a),i,a)})},Yue=(e,t,n,r,i,a)=>{let o=zf(e);if(o){let e=b(o);if(e&&e!==t&&pd(r).has(e))return{generationKey:null};let n=e?ep(e,o,a):null;return n?{generationKey:n}:null}let s=v(e),c=s.parent;if(!y(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!y(c.callee,`Identifier`)||c.callee.name!==`setTimeout`||!a.scopes.isGlobalReference(c.callee))return null;let l={kind:`timer`,node:c,resourceName:c.callee.name,handleKey:$d(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=ep(t,n,a);return l.handleKey!==null&&tp(i,l,a)&&u?{generationKey:u}:null},Xue=(e,n,r,i)=>{let a=b(n.node),o=v(n.node),s=o.parent;if(n.kind!==`subscribe`&&n.kind!==`timer`||n.handleKey===null||!a||!t(a)||a===e||a.async||a.generator||!y(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!wd(O(s.left),i.scopes)||!pd(e).has(a)||!tp(r,n,i)||!Ka(e,r,i))return!1;let c=r.flatMap(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return[];let n=If(e.argument,i);return n&&t(n)?[n]:[]}),l=bc(a),u=l?i.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.map(t=>Yue(t.identifier,a,n.node,e,r,i));if(d.some(e=>e===null))return!1;let f=new Set(d.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(f.size!==1)return!1;let p=f.values().next().value;return typeof p==`string`?[...pd(e),...c].some(e=>zue(e,p,i)):!1},Zue=(e,n,r,i)=>{if(Xue(e,n,r,i))return!0;let a=b(n.node),o=a?ud(a):null;if(n.kind!==`timer`||n.handleKey===null||!a||!t(a)||a===e||a.async||a.generator||!y(n.node,`CallExpression`)||!y(n.node.callee,`Identifier`)||!i.scopes.isGlobalReference(n.node.callee)||!o||!fd(e,i.scopes).has(a)||!pf(o,r,i))return!1;let s=v(n.node),c=s.parent;if(!y(c,`AssignmentExpression`)||c.operator!==`=`||c.right!==s||!y(c.left,`Identifier`))return!1;let l=i.scopes.symbolFor(c.left);if(!l||l.kind!==`let`&&l.kind!==`var`||!y(l.declarationNode,`VariableDeclarator`)||b(l.declarationNode)!==e)return!1;let u=r.flatMap(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return[];let n=If(e.argument,i);return n&&t(n)?[n]:[]});if(u.length!==r.length)return!1;let d=new Map;for(let e of u){if(!t(e))return!1;let r=[];if(A(e.body,a=>{if(a!==e.body&&t(a))return!1;if(y(a,`CallExpression`)&&y(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&Cp(a,n,i)){let t=Xf(a,e,n,i);r.push({anchor:t??a,call:a,handleGuard:t})}}),!Ka(e,r.map(e=>e.anchor),i))return!1;d.set(e,r)}let f=l.references.filter(e=>Nd(e.identifier)),p=f.some(e=>v(e.identifier).parent===c),m=f.some(e=>{let t=v(e.identifier),n=t.parent;if(n===c)return!1;if(!y(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let r=O(n.right);if(!(y(r,`Literal`)&&r.value===null||y(r,`Identifier`)&&r.name===`undefined`&&i.scopes.isGlobalReference(r)))return!0;let a=b(n),o=a?d.get(a):void 0;return!(a&&o&&kp(n,o.map(e=>e.handleGuard&&R(n,e.handleGuard.consequent)?e.call:e.anchor),a,i))});if(!p||m)return!1;let h=n.node.parent;for(;h&&h!==a;){if(y(h,`ForStatement`)||y(h,`ForInStatement`)||y(h,`ForOfStatement`)||y(h,`WhileStatement`)||y(h,`DoWhileStatement`))return!1;h=h.parent}let g=!1;for(let e of n.node.arguments??[])A(e,e=>{if(g||t(e))return!1;if(y(e,`AwaitExpression`)||y(e,`YieldExpression`)||y(e,`CallExpression`)&&!Qa(e,i.scopes))return g=!0,!1});return g?!1:Mue(a,n.node,i).some(t=>Iue(e,t,u,i)&&!Lue(a,t,n.node,i)&&!Pue(a,n.node,t,i)&&r.every(e=>Nue(e,t,i)))},Que=(e,n,r)=>{if(!t(e)||!y(e.body,`BlockStatement`))return!1;let i=new Set;if(A(e.body,e=>{if(!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||ar(e)!==`push`||!y(a.object,`Identifier`))return;let o=e.arguments[0];if(!o||!E(o))return;let s=O(o),c=t(s)?s:If(o,r);if(!c||!t(c))return;let l=!1;if(A(c.body,e=>{if(l||e!==c.body&&t(e))return l?!1:void 0;if(!y(e,`CallExpression`))return;let i=O(e.callee);if(!y(i,`MemberExpression`))return;let a=y(n.node,`CallExpression`)?n.node:null;if(ar(e)===`removeEventListener`&&a&&Wd(i.object,r)===n.receiverKey&&Wd(e.arguments[0],r)===n.eventKey&&Wd(e.arguments[1],r)===n.handlerKey&&qd(a.arguments[2],e.arguments[2],r,!0))return l=!0,!1}),!l)return;let u=v(n.node),d=u.parent,f=v(e),p=f.parent;if(!d||!y(d,`ExpressionStatement`)||d.expression!==u||!p||!y(p,`ExpressionStatement`)||p.expression!==f||!d.parent||!y(d.parent,`BlockStatement`)||d.parent!==p.parent)return;let m=d.parent.body.findIndex(e=>e.range[0]===d.range[0]);if(d.parent.body.findIndex(e=>e.range[0]===p.range[0])!==m+1)return;let h=r.scopes.symbolFor(a.object),g=h?.initializer?O(h.initializer):null;h?.kind!==`const`||!g||!y(g,`ArrayExpression`)||g.elements.length!==0||h.references.every(e=>{let t=v(e.identifier);if(y(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!y(n,`MemberExpression`)||n.object!==t)return!1;let r=v(n).parent;return!!(r&&y(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(S(n)??``))})&&i.add(h)}),i.size===0)return!1;let a=!1;return Dd(e.body,e=>{if(a||!y(e,`ReturnStatement`)||!e.argument)return;let n=O(e.argument),o=t(n)?n:If(e.argument,r);!o||!t(o)||A(o.body,e=>{if(a)return!1;if(!y(e,`CallExpression`))return;let n=O(e.callee);if(y(n,`Identifier`)){let t=mf(n,r),o=t?O(t.right):null,s=y(o,`Identifier`)?r.scopes.symbolFor(o):null;if(t&&s&&i.has(s)&&jf(e,t,r))return a=!0,!1}if(!y(n,`MemberExpression`)||ar(e)!==`forEach`||!y(n.object,`Identifier`))return;let o=r.scopes.symbolFor(n.object);if(!o||!i.has(o))return;let s=e.arguments[0];if(!s||!E(s))return;let c=O(s);if(!t(c))return;let l=c.params[0];if(!l||!y(l,`Identifier`))return;let u=r.scopes.symbolFor(l);return A(c.body,e=>{if(y(e,`CallExpression`)&&y(O(e.callee),`Identifier`)&&r.scopes.symbolFor(O(e.callee))?.id===u?.id)return a=!0,!1}),a?!1:void 0})}),a},$ue=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!y(t.node,`CallExpression`))return!1;let r=O(t.node.callee);if(!y(r,`MemberExpression`))return!1;let i=[r.object,t.node.arguments[0],t.node.arguments[1],t.node.arguments[2]],a=new Set(i.flatMap(e=>{let t=Hd(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Wd(r.object,n),s=Wd(t.node.arguments[0],n),c=Wd(t.node.arguments[1],n),l=Kd(t.node.arguments[2],n,!0),u=!1;return A(e,e=>{if(u||!y(e,`CallExpression`))return u?!1:void 0;if(ar(e)!==`removeEventListener`)return;let r=O(e.callee);if(y(r,`MemberExpression`)&&!(Wd(r.object,n)!==o||Wd(e.arguments[0],n)!==s||Wd(e.arguments[1],n)!==c||Kd(e.arguments[2],n,!0)!==l)&&yp(e,a,n)&&!xp(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},sp=(e,n)=>{if(e.registrationVerbName!==`setTimeout`||!y(e.node,`CallExpression`))return!1;let r=e.node.arguments[0];if(!r||!E(r))return!1;let i=O(r),a=t(i)?i:If(r,n);if(!a||!t(a)||!y(a.body,`BlockStatement`))return!1;let o=a.body.body[0];if(!o||!y(o,`IfStatement`)||!Cd(o.consequent))return!1;let s=O(o.test);if(!y(s,`UnaryExpression`)||s.operator!==`!`)return!1;let c=wd(O(s.argument),n.scopes,{resolveNamedAliases:!0});if(!c)return!1;let l=b(e.node),u=null;for(;l;){let e=l.parent;if(e&&y(e,`CallExpression`)&&Bd(e,n)){u=e;break}l=b(l)}let d=X(u||e.node,n.scopes);if(!d){let t=b(e.node);for(;t&&!mc(t);)t=b(t);d=t}if(!d||!t(d))return!1;let f=!1;return A(d.body,e=>{if(f)return!1;if(!y(e,`CallExpression`)||!Bd(e,n))return;let r=or(e);if(!r||!t(r))return;let i=O(r.body);t(i)&&A(i.body,e=>{if(y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),n.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Dn(O(e.right))===!1&&n.cfg.isUnconditionalFromEntry(e))return f=!0,!1}),Dd(r.body,e=>{if(f||!y(e,`ReturnStatement`)||!e.argument)return;let r=If(e.argument,n);!r||!t(r)||A(r.body,e=>{if(y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),n.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Dn(O(e.right))===!1&&n.cfg.isUnconditionalFromEntry(e))return f=!0,!1})})}),f},cp=(e,n,r,i=[n])=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async)return!1;if(Que(e,n,r)||$ue(e,n,r)||sp(n,r)||jp(e,n,r)||n.kind===`subscribe`&&b(n.node)===e&&Fp(n.node,!0,!0,r)&&rf(n,r))return!0;if(!y(e.body,`BlockStatement`))return e.body===n.node&&rf(n,r);let a=v(n.node),o=a.parent,s=y(o,`AssignmentExpression`)&&o.operator===`=`&&o.right===a&&y(o.left,`Identifier`)?r.scopes.symbolFor(o.left):null,c=n.kind===`timer`&&b(n.node)!==e&&!!(s&&(s.kind===`let`||s.kind===`var`)&&y(s.declarationNode,`VariableDeclarator`)&&b(s.declarationNode)===e),l=[];if(Dd(e.body,e=>{if(!y(e,`ReturnStatement`))return;let i=D(e),a=D(n.node);if(i!==null&&a!==null&&i<a)return;let o=e.argument?O(e.argument):null;if(!o)return;if(Gf(o,n,r)){l.push(e);return}if(n.kind===`subscribe`&&(o===n.node||D(o)!==null&&D(o)===D(n.node))&&rf(n,r)){l.push(e);return}if(n.kind===`subscribe`&&due(o,n,r)){l.push(e);return}if(y(o,`Identifier`)&&(o.name===`undefined`&&r.scopes.isGlobalReference(o)||!r.scopes.symbolFor(o)?.initializer))return;let s=If(o,r);if(s&&Gf(s,n,r)){l.push(e);return}!s||!t(s)||Uf(s,n,r,new Set,new Map,c)&&l.push(e)}),Zue(e,n,l,r)||Jue(e,n,i,l,r))return!0;let u=b(n.node),d=u?Tue(u,e,r):[];return n.kind===`subscribe`&&d.length>0&&d.every(e=>pf(e,l,r))?!0:pf(Vf(n.node,e,r,n),l,r)},ede=(e,t,n)=>{for(let r of t)if(!cp(e,r,n,t)&&!jue(e,r,n))return r;return null},lp=(e,t,n=new Set)=>{let r=O(e);if(y(r,`NewExpression`)&&y(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(y(r,`MemberExpression`))return lp(r.object,t,n);if(!y(r,`Identifier`))return!1;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return!1;if(n.add(i.id),i.initializer)return lp(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(y(a,`Property`)&&y(o,`ObjectPattern`)&&y(s,`VariableDeclarator`)&&s.init&&lp(s.init,t,n))},tde=(e,t)=>{if(!y(e,`Property`))return!1;let n=y(e.key,`Identifier`)?e.key.name:y(e.key,`Literal`)?e.key.value:null;return n===`signal`?!lp(e.value,t):n===`once`?y(e.value,`Literal`)&&e.value.value===!0:!1},nde=(e,t)=>y(e,`CallExpression`)&&(e.arguments??[]).some(e=>y(e,`ObjectExpression`)&&(e.properties??[]).some(e=>tde(e,t))),up=new Map([[`addEventListener`,new Set([`removeEventListener`,`abort`])],[`addListener`,new Set([`removeListener`,`off`,`abort`])],[`on`,new Set([`off`,`removeListener`,`on`])],[`subscribe`,new Set([`unsubscribe`,`unsub`])],[`sub`,new Set([`unsub`,`unsubscribe`])],[`watch`,new Set([`unwatch`,`close`])],[`listen`,new Set([`unlisten`,`close`])],[`observe`,new Set([`disconnect`,`unobserve`])]]),dp=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),fp=new Set([`close`]),rde=new Set([`removeChannel`,`removeAllChannels`]),pp=e=>{let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return null;let n=O(t.callee);if(y(n,`Identifier`))return $e.has(n.name)||An.has(n.name)||dp.has(n.name)?n.name:null;if(y(n,`MemberExpression`)&&y(n.property,`Identifier`)){let e=n.property.name;return An.has(e)||vt.has(e)||rde.has(e)||e===`on`?e:null}return null},ide=(e,n,r)=>{let i=b(e),a=b(n.node);if(!i||!a||!t(a)||!Tp(i,r)||!Td(e,r.scopes))return!1;let o=Lf(n,r),s=Z(e,r);if(o===null||s===null)return!1;let c=a.body,l=[],u=[];A(c,e=>{if(e!==c&&t(e))return!1;if(y(e,`AssignmentExpression`)&&Z(e.left,r)===s&&Z(e.right,r)===o){u.push(e);return}if(!y(e,`CallExpression`))return;let n=y(e.callee,`ChainExpression`)?e.callee.expression:O(e.callee);y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`abort`&&Z(n.object,r)===s&&l.push(e)});let d=u.filter(e=>kp(e,l,a,r));return kp(n.node,d,a,r)},mp=e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hp=(e,t)=>{let n=bc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(y(n,`JSXExpressionContainer`)&&n.expression===t&&mp(n.parent))}):!1},gp=(e,n,r)=>{let i=bc(e);if(!i)return!1;let a=n.scopes.symbolFor(i);if(!a)return!1;let o=e=>{let t=y(e,`Property`)?S(e):null;if(!y(e,`Property`)||!y(e.parent,`ObjectExpression`)||r&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let n=v(e.parent),i=n.parent;if(!y(i,`ReturnStatement`)||i.argument!==n)return!1;let a=b(i);return!!(a&&dc(bc(a)?.name??``))};if(a.references.some(e=>{let t=v(e.identifier),n=t.parent;return y(n,`Property`)&&n.value===t?o(n):!1}))return!0;let s=b(e);if(!s||!t(s)||!dc(bc(s)?.name??``))return!1;let c=!1;return A(s.body,e=>{if(c)return!1;if(y(e,`Property`)&&y(e.value,`Identifier`)&&e.value.name===i.name&&o(e))return c=!0,!1}),c},ade=e=>{if(!t(e))return!1;let n=e.params[0];if(!n)return!1;let r=(y(n,`Identifier`)?n:y(n,`AssignmentPattern`)&&y(n.left,`Identifier`)?n.left:null)?.typeAnnotation,i=y(r,`TSTypeAnnotation`)?r.typeAnnotation:null;return!!(y(i,`TSNullKeyword`)||y(i,`TSUnionType`)&&i.types.some(e=>y(e,`TSNullKeyword`)))},ode=(e,n)=>{if(!t(e))return!1;let r=bc(e),i=b(e),a=i?bc(i):null;if(!r||!i||!t(i)||!a||!dc(a.name))return!1;let o=new Set;if(A(i.body,e=>{if(!y(e,`Property`)||!y(e.value,`Identifier`)||e.value.name!==r.name||!y(e.parent,`ObjectExpression`))return;let t=v(e.parent);if(y(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=S(e);t&&o.add(t)}}),o.size===0)return!1;let s=n.scopes.symbolFor(a);if(!s||s.references.length===0)return!1;let c=!1;for(let e of s.references){let t=v(e.identifier),r=t.parent,i=r?.parent;if(!y(r,`CallExpression`)||r.callee!==t||!y(i,`VariableDeclarator`)||i.init!==r||!y(i.id,`Identifier`))return!1;let a=n.scopes.symbolFor(i.id);if(!a)return!1;for(let e of a.references){let t=v(e.identifier),n=t.parent;if(!y(n,`MemberExpression`)||n.object!==t||!o.has(S(n)??``))continue;let r=v(n),i=r.parent;if(!y(i,`JSXExpressionContainer`)||i.expression!==r||!mp(i.parent))return!1;c=!0}}return c},_p=(e,t)=>hp(e,t)||gp(e,t,!0)||ode(e,t)||ade(e)&&gp(e,t,!1),vp=(e,n)=>{if(!t(e)||!e.returnType)return!1;let r=!1;if(A(e.returnType,e=>{if(y(e,`TSFunctionType`))return r=!0,!1}),!r)return!1;let i=bc(e),a=i?n.scopes.symbolFor(i):null;return a?a.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(y(n,`JSXExpressionContainer`)&&n.expression===t&&y(n.parent,`JSXAttribute`))}):!1},sde=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(y(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=O(o.test);if(!y(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[O(e.left),O(e.right)],a=t.some(e=>qf(e,n,i)),s=t.some(e=>{if(!y(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=Z(e.left,i),a=Z(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},cde=(e,n,r,i)=>{if(!t(e))return[];let a=[];return A(e.body,o=>{if(o!==e.body&&t(o))return!1;if(!y(o,`IfStatement`)||o.alternate!==null||!Cd(o.consequent))return;let s=O(o.test);if(!y(s,`BinaryExpression`)||s.operator!==`===`&&s.operator!==`==`)return;let c=Z(s.left,i),l=Z(s.right,i);(c===n&&l===r||l===n&&c===r)&&a.push(o)}),a},lde=(e,n,r)=>{if(!y(n.node,`CallExpression`))return!1;let i=b(n.node);if(!i||!t(i)||i!==b(e)||!_p(i,r))return!1;let a=O(n.node.callee),o=O(e.callee),s=y(o,`MemberExpression`)?Jd(o.object,r):null;if(!y(a,`MemberExpression`)||a.computed||!y(a.property,`Identifier`)||a.property.name!==`addEventListener`||!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`)||o.property.name!==`removeEventListener`||!s)return!1;let c=Z(O(a.object),r),l=Z(i.params?.[0],r),u=Z(o.object,r),d=Z(e.arguments?.[1],r);if(c===null||c!==l||u===null||n.eventKey===null||n.eventKey!==Z(e.arguments?.[0],r)||n.handlerKey===null)return!1;if(n.handlerKey!==d){if(!qd(n.node.arguments?.[2],e.arguments?.[2],r))return!1;let a=D(e),o=[];return A(i.body,e=>{if(e!==i.body&&t(e))return!1;if(!y(e,`AssignmentExpression`)||e.operator!==`=`||!y(O(e.right),`ObjectExpression`)||wd(O(e.left),r.scopes)?.id!==s.id)return;let l=Z(e.left,r),f=O(e.right);if(!l||u!==`${l}.element`||d!==`${l}.handler`||a===null||(D(e)??-1)<=a||!y(f,`ObjectExpression`))return;let p=f.properties.find(e=>y(e,`Property`)&&S(e)===`element`),m=f.properties.find(e=>y(e,`Property`)&&S(e)===`handler`);y(p,`Property`)&&y(m,`Property`)&&Z(p.value,r)===c&&Z(m.value,r)===n.handlerKey&&o.push(e)}),Ka(i,[Yf(e,i,u,r)??e],r)&&pf(n.node,o,r)}if(!qd(n.node.arguments?.[2],e.arguments?.[2],r))return!1;let f=D(e),p=[],m=i.body;A(m,e=>{if(e!==m&&t(e))return!1;y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),r.scopes)?.id===s.id&&Z(e.right,r)===c&&f!==null&&(D(e)??-1)>f&&p.push(e)});let h=Yf(e,i,u,r)??sde(e,i,u,c,r)??e,g=p.filter(e=>kp(e,[h],i,r));return Ka(i,[h,...cde(i,u,c,r)],r)&&kp(n.node,g,i,r)},yp=(e,n,r)=>{let i=v(e),a=new Set,o=new Set;for(;;){let e=b(i);if(!e||!t(e)||a.has(e))return null;a.add(e);let s=e.body===i,c=i.parent,l=y(e.body,`BlockStatement`)&&y(c,`ExpressionStatement`)&&c.parent===e.body;if(!s&&!l||!Ka(e,[l?c:i],r))return null;let u=Rf(e);if(!u)return o.size===n.size&&Tp(e,r)?e:null;let d=O(u.callee);if(!y(d,`MemberExpression`))return null;let f=Z(d.object,r);if(!f||!n.has(f))return null;o.add(f),i=v(u)}},bp=e=>{let n=new Set,r=e;for(;;){let e=b(r);if(!e||!t(e)||n.has(e))break;n.add(e),r=e}return n},xp=(e,n,r,i)=>{let a=D(e),o=D(n);if(a===null||o===null)return!0;let s=bp(e),c=bp(n),l=(e,t)=>e!==null&&t<=(r.get(e)??-1/0),u=(e,n,a,o)=>{if(o&&y(e,`ReturnStatement`)&&l(Z(e.argument,i),n))return!0;if(y(e,`AssignmentExpression`)){let t=Z(e.left,i),a=O(e.left);return l(Z(e.right,i),n)&&!l(t,n)||!!(t&&[...r].some(([e,r])=>n<=r&&(t===e||t===`${e}.length`)))||y(a,`MemberExpression`)&&a.computed&&l(Z(a.object,i),n)}if(y(e,`UnaryExpression`)&&e.operator===`delete`){let t=O(e.argument);return y(t,`MemberExpression`)&&l(Z(t.object,i),n)}if(y(e,`UpdateExpression`)){let t=Z(e.argument,i);return!!(t&&[...r].some(([e,r])=>n<=r&&t===`${e}.length`))}if(!y(e,`CallExpression`)&&!y(e,`NewExpression`))return!1;let s=e.arguments.some(e=>E(e)?l(Z(e,i),n)&&xf(e,i)===null:!1),c=O(e.callee),d=y(e,`CallExpression`)&&y(c,`MemberExpression`)&&!c.computed&&y(c.object,`Identifier`)&&c.object.name===`Array`&&i.scopes.isGlobalReference(c.object)&&y(c.property,`Identifier`)&&c.property.name===`from`;return s&&!d||y(c,`MemberExpression`)&&!c.computed&&y(c.property,`Identifier`)&&(iue.has(c.property.name)||aue.has(c.property.name))&&l(Z(c.object,i),n)?!0:y(e,`CallExpression`)?[M(e.callee,i.scopes),...e.arguments.flatMap(t=>E(t)&&sd(e,t)?[M(t,i.scopes)]:[])].some(e=>{if(!e||!t(e)||e.generator||a.has(e))return!1;let r=new Set(a);r.add(e);let i=!1;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(u(a,n,r,!1))return i=!0,!1}),i}):!1},d=e;for(;d.parent;)d=d.parent;let f=!1;return A(d,e=>{if(f)return!1;let t=D(e);if(t===null)return;let n=i.cfg.enclosingFunction(e);if(!n)return;let r=s.has(n)&&t>a,l=c.has(n)&&t<o;if(!(!r&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Sp=(e,t)=>ar(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,ude=(e,n,r)=>{let i=O(e.callee),a=O(n.callee);if(!y(i,`MemberExpression`)||!y(a,`MemberExpression`))return!0;let o=ar(e),s=ar(n),c=n.arguments?.[+!Sp(e,n)],l=b(n),u=Wd(e.arguments?.[0],r),d=Wd(n.arguments?.[0],r),f=s===`off`&&!c&&(n.arguments?.length===0||u!==null&&u===d);if(l&&t(l)&&Tp(l,r)&&Ka(l,[n],r)&&(s!==null&&dp.has(s)||f))return!0;let p=[i.object,e.arguments?.[0],e.arguments?.[1],a.object,n.arguments?.[0],n.arguments?.[1]].flatMap(e=>{let t=Hd(e,r);return t?[t]:[]});if(o===`addEventListener`&&s===`removeEventListener`)for(let t of[e.arguments?.[2],n.arguments?.[2]]){let e=sue(t,r);e&&p.push(e)}if(p.length===0)return!0;let m=new Set(p.map(e=>e.collectionKey));return!yp(n,m,r)&&!vue(n,m,r)?!1:!xp(e,n,new Map([...m].map(e=>[e,1/0])),r)},Cp=(e,n,r,i=new Map)=>{let a=y(e,`ChainExpression`)?e.expression:e;if(!y(a,`CallExpression`))return!1;let o=O(a.callee);if(n.kind===`timer`){let e=n.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!y(o,`Identifier`)||!$e.has(o.name)||o.name!==e)return!1;if(ef(Z(a.arguments?.[0],r,new Set,i),n,r))return!0;let t=Pf(n.node,r);return t!==null&&t===xf(a.arguments?.[0],r)}if(y(o,`Identifier`)&&n.kind===`subscribe`&&(af(o,n,r)&&(n.registrationVerbName!==`addEventListener`&&n.registrationVerbName!==`addListener`||rf(n,r))||n.registrationVerbName===`addListener`&&Tf(o,n,r)))return!0;let s=pp(a);if(!s||!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`))return!1;let c=Wd(o.object,r),l=Wd(a.arguments?.[0],r),u=n.registrationVerbName?up.get(n.registrationVerbName):null,d=Ff(n,r),f=mf(o.object,r),p=f?Z(f.right,r):xf(o.object,r);if(u&&wp(s,u)&&d!==null&&d===p&&(s!==`unobserve`||n.eventKey!==null&&l===n.eventKey)||lde(a,n,r)||of(c,s,n,r))return!0;if(n.kind===`socket`)return ef(c,n,r)&&(fp.has(s)||dp.has(s));if(n.kind===`subscribe`&&y(n.node,`CallExpression`)&&(s===`removeChannel`||s===`removeAllChannels`)&&c===ff(n.node,r)&&(s===`removeAllChannels`||ef(Z(a.arguments?.[0],r,new Set,i),n,r))||(ef(c,n,r)||n.kind===`subscribe`&&Tf(o.object,n,r))&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||vt.has(s))||s===`abort`&&c===Lf(n,r)||s===`abort`&&ide(o.object,n,r))return!0;if(n.registrationVerbName===`addListener`&&s===`removeListener`&&y(n.node,`CallExpression`)&&n.node.arguments?.length===1){if(a.arguments?.length!==1)return!1;let e=If(n.node.arguments[0],r);if(!lf(n.node,`addListener`,r)&&!t(e))return!1}if(n.registrationVerbName===`addEventListener`&&s===`removeEventListener`&&y(n.node,`CallExpression`)&&(!y(O(n.node.callee),`MemberExpression`)||!qd(n.node.arguments?.[2],a.arguments?.[2],r,!0))||y(n.node,`CallExpression`)&&!ude(n.node,a,r))return!1;let m=y(n.node,`CallExpression`)?O(n.node.callee):null,h=y(m,`MemberExpression`)?Ef(m.object,r):null,g=Ef(o.object,r);if(!(h!==null&&h===g)&&(n.receiverKey===null||c!==n.receiverKey))return!1;if(n.registrationVerbName===`subscribe`&&(s===`unsubscribe`||s===`unsub`)&&n.handleKey!==null&&Z(a.arguments?.[0],r)===n.handleKey)return!0;let _=n.registrationVerbName?up.get(n.registrationVerbName):null;if(!_||!wp(s,_))return!1;let ee=y(n.node,`CallExpression`)?n.node.arguments?.[0]:null,te=a.arguments?.[0];if(hf(ee,r)||hf(te,r))return!1;if(n.eventKey!==null&&l!==null&&n.eventKey!==l){if(!y(n.node,`CallExpression`))return!1;let e=Ud(n.node.arguments?.[0],r),t=Ud(a.arguments?.[0],r);if((e!==null||t!==null)&&e!==t)return!1;let i=mf(ee,r),c=mf(te,r);if(i===null!=(c===null))return!1;let l=xf(n.node.arguments?.[0],r),u=xf(a.arguments?.[0],r);if(l===null||l!==u)return!1;if(i&&c){let e=Of(n.node.arguments?.[1],r),t=Of(a.arguments?.[1],r);if(n.registrationVerbName!==`addEventListener`||s!==`removeEventListener`)return!1;let i=O(n.node.callee);if(!y(i,`MemberExpression`)||!Df(i.object,r)||!Df(o.object,r)||e===null||e!==t||!qd(n.node.arguments?.[2],a.arguments?.[2],r)||!jf(a,c,r))return!1}}if(s===`on`){let e=a.arguments?.[1];return y(e,`Literal`)&&e.value===null}if(s===`removeEventListener`||s===`removeListener`||s===`off`){let e=y(n.node,`CallExpression`)&&Sp(n.node,a),t=e?a.arguments?.[0]:a.arguments?.[1];if(!t)return s===`off`;let i=e?n.handlerKey??n.eventKey:n.handlerKey,o=y(n.node,`CallExpression`)?n.node.arguments?.[+!e]:null;return i!==null&&Wd(t,r)===i||o!==null&&If(t,r)===If(o,r)}return s===`unobserve`&&n.eventKey!==null?l===n.eventKey:!0},wp=(e,t)=>t.has(e)||dp.has(e),Tp=(e,n)=>{let r=b(e);if(!r||!t(r))return!1;let i=r.parent;if(!y(i,`CallExpression`)||!Bd(i,n))return!1;if(!y(r.body,`BlockStatement`))return If(r.body,n)===e;let a=!1;return Dd(r.body,t=>{y(t,`ReturnStatement`)&&t.argument&&If(t.argument,n)===e&&(a=!0)}),a},Ep=(e,t)=>{if(Wp(e,t)||Tp(e,t))return!0;let n=bc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>b(t.identifier)!==e):!1},dde=(e,n,r)=>{if(!t(e)||e.async||e.generator)return[];let i=b(n.node);if(!i||!t(i))return[];let a=new Map,o=e=>{let n=v(e),o=n.parent;if(!y(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==n)return;let s=Jd(o.left,r),c=Z(o.left,r),l=b(o),u=D(o);if(!s&&y(o.left,`MemberExpression`)){let e=S(o.left),n=O(o.left.object),i=y(n,`Identifier`)?r.scopes.symbolFor(n):null;if(!e||!i||!l||!t(l))return;for(let t of i.references){let n=v(t.identifier),i=n.parent;if(!y(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==n||!Jd(i.left,r)||b(i)!==l)continue;let o=Z(i.left,r),s=D(i);!o||s===null||a.set(s,{assignmentNode:i,refCurrentKey:`${o}.${e}`,retainedFunction:l})}return}!s||!c||!l||l!==i||u===null||a.set(u,{assignmentNode:o,refCurrentKey:c,retainedFunction:l})};o(e);let s=bc(e),c=s?r.scopes.symbolFor(s):null;for(let e of c?.references??[])o(e.identifier);return A(i.body,n=>{if(n!==i.body&&t(n))return!1;y(n,`AssignmentExpression`)&&If(n.right,r)===e&&o(n.right)}),[...a.values()]},fde=(e,t,n)=>kp(t.node,[e.assignmentNode],e.retainedFunction,n)||pf(t.node,[e.assignmentNode],n),pde=(e,n,r)=>{let i=!1;return A(e.retainedFunction.body,a=>{if(i||a!==e.retainedFunction.body&&t(a))return!1;if(!y(a,`AssignmentExpression`)||a===e.assignmentNode||Z(a.left,r)!==e.refCurrentKey||!Xu(n.node,a,e.retainedFunction,r))return;let o=If(a.right,r);if(!o||!t(o)||!Uf(o,n,r))return i=!0,!1}),i},mde=(e,n,r)=>{let i=b(e.retainedFunction);if(!i||!t(i))return!1;let a=n=>{if(!t(n))return!1;let i=!1;return A(n.body,a=>{if(i||a!==n.body&&t(a))return!1;if(y(a,`CallExpression`)&&Z(a.callee,r)===e.refCurrentKey){let t=v(a),o=t.parent,s=y(n.body,`BlockStatement`)&&y(o,`ExpressionStatement`)&&o.parent===n.body,c=n.body===t,l=!!Yf(a,n,e.refCurrentKey,r);if((s||c||l)&&!Ap(n,a,e.refCurrentKey,r))return i=!0,!1}}),i},o=e=>{if(!t(e))return!1;if(!y(e.body,`BlockStatement`)){let t=Op(e.body,r);return!!(t&&a(t))}let n=[];return Dd(e.body,e=>{if(!y(e,`ReturnStatement`)||!e.argument)return;let t=Op(e.argument,r);!t||!a(t)||n.push(e)}),Ka(e,n,r)},s=!1;return A(i.body,e=>{if(s)return!1;if(!y(e,`CallExpression`)||b(e)!==i||!k(e,`useEffect`,r.scopes))return;let t=or(e);if(t&&o(t))return s=!0,!1}),s},hde=(e,n,r)=>{if(!hp(e.retainedFunction,r)&&!(()=>{if(!t(e.retainedFunction))return!1;let i=v(e.retainedFunction).parent;if(!y(i,`CallExpression`)||!k(i,`useCallback`,r.scopes))return!1;let a=e.retainedFunction.params?.[0],o=Z(a,r);return!o||n.receiverKey!==o?!1:_p(e.retainedFunction,r)})())return!1;let i=[];return A(e.retainedFunction.body,n=>{if(n!==e.retainedFunction.body&&t(n))return!1;y(n,`CallExpression`)&&Z(n.callee,r)===e.refCurrentKey&&i.push(n)}),kp(n.node,i,e.retainedFunction,r)},gde=(e,t,n)=>{let r=b(e);return r?dde(r,t,n).some(e=>fde(e,t,n)&&!pde(e,t,n)&&(mde(e,t,n)||hde(e,t,n))):!1},_de=(e,n,r,i)=>{if(r.kind!==`subscribe`||r.registrationVerbName!==`addEventListener`||r.receiverKey===null||r.eventKey===null||!y(r.node,`CallExpression`)||!t(n)||n.async||n.generator||!y(n.body,`BlockStatement`)||!Ka(n,[e],i))return!1;let a=y(e,`ChainExpression`)?e.expression:e;if(!y(a,`CallExpression`)||!qd(r.node.arguments?.[2],a.arguments?.[2],i))return!1;let o=b(n);if(!o||!t(o))return!1;let s=[];return A(o.body,e=>{if(e!==o.body&&t(e))return!1;if(!y(e,`CallExpression`))return;let a=uf(e,i);a.registrationVerbName===`addEventListener`&&a.receiverKey===r.receiverKey&&If(e.arguments?.[1],i)===n&&s.push(e)}),s.some(e=>e===r.node)?!0:pf(r.node,s,i)||kp(r.node,s,o,i)},vde=(e,n,r)=>{if(!B(e,r))return!1;let i=b(e);if(!i||i===b(n.node)||gde(e,n,r))return!0;let a=b(n.node);return a&&t(a)&&Lp(a,r)&&Ide(a,i,r)?Fde(a,i,n,r):_de(e,i,n,r)?!0:Ep(i,r)},Dp=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Ld.get(t);r||(r=new WeakMap,Ld.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];A(n,n=>{let r=y(n,`ChainExpression`)?n.expression:n;if(!y(r,`CallExpression`))return;let i=y(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(y(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pp(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cp(n,e,t)&&vde(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Op=(e,n)=>{let r=If(e,n);return t(r)?r:!y(r,`CallExpression`)||!k(r,`useCallback`,n.scopes)?null:or(r)},yde=(e,n,r)=>{if(!t(e)||n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.handlerKey===null||!n.receiverKey?.startsWith(`global:`)||!n.eventKey?.startsWith(`literal:`))return null;let i=D(n.node),a=r.cfg.cfgFor(e),o=a?.blockOf(n.node);if(i===null||!a||!o)return null;let s=[];return A(e.body,c=>{if(c!==e.body&&t(c))return!1;if(!y(c,`AssignmentExpression`)||c.operator!==`=`)return;let l=D(c),u=O(c.left);if(l===null||l>=i||a.blockOf(c)!==o||!y(u,`MemberExpression`)||!wd(u,r.scopes))return;let d=Z(u,r),f=Z(u.object,r),p=O(c.right);if(!d||!f||!y(p,`ObjectExpression`))return;let m=p.properties??[];if(!m.some(e=>!y(e,`Property`)))for(let e of m){if(!y(e,`Property`))continue;let t=S(e);if(t&&Z(e.value,r)===n.handlerKey){let e=`${d}.${t}`;s.push({handlerKey:e,refCurrentKey:d,refKey:f,assignmentNode:c})}}}),s.length===1?s[0]:null},kp=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=D(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=D(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},bde=(e,n,r,i)=>{if(!t(e))return!1;let a=e.body,o=[];return A(a,e=>{if(e!==a&&t(e))return!1;y(e,`CallExpression`)&&Op(e.callee,i)===n&&o.push(e)}),kp(r,o,e,i)},xde=(e,n,r,i,a,o)=>{if(!t(n))return!1;let s=y(e,`ChainExpression`)?e.expression:e;if(!y(s,`CallExpression`)||!y(s.callee,`MemberExpression`)||s.callee.computed||!y(s.callee.property,`Identifier`)||s.callee.property.name!==`removeEventListener`||!y(r.node,`CallExpression`)||r.node.arguments?.[2]!==void 0||s.arguments?.[2]!==void 0)return!1;let c=v(e).parent,l=c?.parent,u=l?.parent,d=l===n.body,f=!!(y(l,`BlockStatement`)&&y(u,`IfStatement`)&&u.consequent===l&&u.alternate===null&&Z(u.test,o)===a);return!y(c,`ExpressionStatement`)||!y(n.body,`BlockStatement`)||!d&&!f?!1:r.receiverKey!==null&&r.receiverKey===Z(s.callee.object,o)&&r.eventKey!==null&&r.eventKey===Z(s.arguments?.[0],o)&&Z(s.arguments?.[1],o)===i},Sde=(e,t,n)=>{let r=e.parent,i=y(r,`BlockStatement`)?r.parent:r,a=y(r,`BlockStatement`)?r:e;if(!y(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=O(i.test);return y(o,`UnaryExpression`)&&o.operator===`!`&&Z(o.argument,n)===t},Ap=(e,n,r,i)=>{if(!t(e))return!0;let a=D(n);if(a===null)return!0;let o=!1;return A(e.body,n=>{if(o||n!==e.body&&t(n))return!1;if(!y(n,`ReturnStatement`))return;let s=D(n);if((s===null||s<a)&&!Sde(n,r,i))return o=!0,!1}),o},Cde=(e,n,r,i,a)=>{if(!t(e)||!t(n)||e.async||e.generator)return!1;let o=yde(r,i,a);if(!o||!bde(r,e,o.assignmentNode,a))return!1;let s=null;if(A(e.body,n=>{if(s||n!==e.body&&t(n))return!1;if(xde(n,e,i,o.handlerKey,o.refCurrentKey,a))return s=n,!1}),!s||Ap(e,s,o.refCurrentKey,a))return!1;let c=!1;return A(n.body,t=>{if(c)return!1;if(y(t,`UnaryExpression`)&&t.operator===`delete`){let e=O(t.argument);return Z(e,a)===o.handlerKey||y(e,`MemberExpression`)&&Z(e.object,a)===o.refCurrentKey?(c=!0,!1):void 0}if(y(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=Z(e,a);return t!==null&&(t===o.refKey||t===o.refCurrentKey)})?(c=!0,!1):void 0;if(!y(t,`AssignmentExpression`))return;let n=O(t.left);if(y(n,`MemberExpression`)&&n.computed&&Z(n.object,a)===o.refCurrentKey)return c=!0,!1;let s=Z(t.left,a);if(s===o.handlerKey)return c=!0,!1;if(s!==o.refCurrentKey)return;let l=O(t.right);if(y(l,`Literal`)&&l.value===null&&b(t)===e)return;let u=(y(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>y(e,`Property`))&&u.some(e=>y(e,`Property`)&&`${o.refCurrentKey}.${S(e)??``}`===o.handlerKey&&Z(e.value,a)===i.handlerKey);if(b(t)!==r||!d)return c=!0,!1}),!c},wde=(e,n,r,i,a)=>{let o=e=>{let t=Op(e,a);return!!(t&&Cde(t,n,r,i,a))};if(!t(e))return!1;if(!y(e.body,`BlockStatement`))return o(O(e.body));let s=[];return Dd(e.body,e=>{y(e,`ReturnStatement`)&&e.argument&&o(O(e.argument))&&s.push(e)}),Ka(e,s,a)},Tde=(e,n,r)=>{let i=bc(e),a=i?r.scopes.symbolFor(i):null;if(!a||a.references.length===0)return!1;let o=new Set(n.flatMap(e=>{let n=or(e);return n&&t(n)?[n]:[]}));return a.references.every(e=>{let r=v(e.identifier),i=r.parent,a=y(i,`CallExpression`)?b(i):null;if(y(i,`CallExpression`)&&i.callee===r&&a&&t(a)&&o.has(a))return!0;let s=r.parent,c=s?.parent;return!!(y(s,`ArrayExpression`)&&y(c,`CallExpression`)&&c.arguments?.[1]===s&&n.includes(c))})},jp=(e,n,r)=>{let i=b(e);if(!i||!t(i))return!1;let a=Rd.get(r);a||(a=new WeakMap,Rd.set(r,a));let o=a.get(i);if(!o){let e=[];A(i.body,t=>{y(t,`CallExpression`)&&b(t)===i&&Bd(t,r)&&e.push(t)}),o=e,a.set(i,o)}if(n.kind===`timer`){let t=cue(n.node,r),i=np(e,n,r),a=e.parent,s=!!(y(a,`CallExpression`)&&or(a)===e&&Bd(a,r)),c=i&&(!s||r.cfg.isUnconditionalFromEntry(n.node)),l=o.some(e=>{let t=or(e);return!!(t&&Kf(t,n,r))});return!!(t&&l&&(c||Tde(e,o,r)))}for(let t of o){let a=v(t).parent;if(!y(a,`ExpressionStatement`)||a.parent!==i.body)continue;let o=or(t);if(o&&wde(o,i,e,n,r))return!0}return!1},Ede=(e,t)=>{let n=bc(e);if(!n)return!1;let r=new Set,i=e=>{let n=t.scopes.symbolFor(e);return!n||r.has(n.id)||n.references.length===0?!1:(r.add(n.id),n.references.every(e=>{let n=v(e.identifier);for(;y(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=v(n.parent);let r=n.parent;if(y(r,`CallExpression`)&&r.arguments?.[0]===n)return k(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(y(r,`VariableDeclarator`)&&r.init===n&&y(r.id,`Identifier`)&&y(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Dde=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Mp=e=>{if(!y(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?O(r):null;if(!n||!t(n)||!i||!y(i,`Literal`)||i.value!==0)return!1;let a=!1,o=!1;return A(n.body,e=>{if(o)return!1;if(!y(e,`CallExpression`))return;let t=ar(e);if(!t||!Dde.has(t))return o=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(a=!0)}),a&&!o},Ode=(e,n)=>{if(!e||!t(e))return!1;let r=bc(e),i=r?n.scopes.symbolFor(r):null;return i?i.references.some(t=>{let n=v(t.identifier),r=n.parent;return!!(y(r,`CallExpression`)&&r.arguments[1]===n&&kd(r)===`addEventListener`&&b(r)===b(e))}):!1},kde=(e,n)=>{if(!y(e,`CallExpression`)||!n.filename)return!1;let r=O(e.callee);if(!y(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?Ye(i):null,o=i?Yt(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let s=pn(n.filename,a.source.value,o);if(!s||!t(s.functionNode))return!1;let c=new Set,l=e=>{if(!t(e)||c.has(e))return!1;c.add(e);let n=!0;return A(e.body,r=>{if(!n||r!==e.body&&t(r))return!1;if(y(r,`CallExpression`)){let e=O(r.callee);if(!y(e,`Identifier`))return n=!1,!1;let i=[];return A(s.programNode,n=>{if(t(n)&&bc(n)?.name===e.name)return i.push(n),!1}),i.length!==1||!l(i[0])?(n=!1,!1):void 0}if(y(r,`NewExpression`)||y(r,`AssignmentExpression`)||y(r,`UpdateExpression`)||y(r,`AwaitExpression`)||y(r,`YieldExpression`)||y(r,`ThrowStatement`)||y(r,`UnaryExpression`)&&r.operator===`delete`)return n=!1,!1}),n};return l(s.functionNode)},Ade=(e,n,r)=>{if(!t(n)||!kde(e,r))return!1;let i=e.parent;for(;i&&i!==n.body;){if(y(i,`AssignmentExpression`)&&R(e,i.right)&&Yd(O(i.left),r))return!0;i=i.parent}return!1},Np=(e,n)=>{if(!y(e,`CallExpression`))return!1;let r=e.arguments[0],i=e.arguments[1],a=i?O(i):null;if(!r||!t(r)||!a||!y(a,`Literal`)||typeof a.value!=`number`||a.value<0||a.value>300)return!1;let o=!1,s=!1;return A(r.body,e=>{if(s||e!==r.body&&t(e))return!1;if(y(e,`CallExpression`)&&Ade(e,r,n))return;if(y(e,`CallExpression`)||y(e,`UpdateExpression`))return s=!0,!1;if(!y(e,`AssignmentExpression`))return;let i=O(e.left);if(y(i,`MemberExpression`)&&Yd(i,n)){o=!0;return}return s=!0,!1}),!s&&(o||Ode(b(e),n))},Pp=(e,t)=>{let n=v(e);for(;y(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=v(n.parent);let r=n.parent;return y(r,`ReturnStatement`)&&r.argument===n&&b(r)===t?r:null},Fp=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(y(a,`ReturnStatement`)&&a.argument===i||y(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(y(a,`ChainExpression`)||y(a,`TSAsExpression`)||y(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(y(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||y(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(y(a,`VariableDeclarator`)&&a.init===i&&y(a.id,`Identifier`)&&y(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=b(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:pf(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Pp(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},jde=(e,n,r)=>{if(!t(e))return null;let i=e.body;if(!i)return null;let a=null,o=r?.allowReturnedResourceEscape!==!1&&!e.async&&!Wp(e,n),s=o&&r?.requireCallableReturnedResource!==!0,c=Ede(e,n),l=t=>{if(c)return cp(e,t,n);if(t.kind!==`timer`)return!!(r?.allowReturnedResourceEscape===!0||_p(e,n)||vp(e,n))&&Kf(e,t,n)||Dp(t,n)||jp(e,t,n);if((r?.allowReturnedResourceEscape===!0||_p(e,n)||vp(e,n))&&Kf(e,t,n)||!r?.isEffectInvoked&&(Zd(t.node,n)!==null||np(e,t,n))&&Dp(t,n)||sp(t,n)||jp(e,t,n))return!0;let i=b(e),a=i?.parent;return!!(i&&y(a,`CallExpression`)&&Bd(a,n)&&cp(i,t,n))};return A(i,e=>{if(a!==null||t(e)||!B(e,n))return!1;if(Vd(e)&&!Fp(e,s,!1,n)){let t={kind:`socket`,node:e,resourceName:y(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:$d(e,n),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!l(t))return a=t,!1}if(y(e,`CallExpression`)){if(y(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||r?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&n.scopes.isGlobalReference(e.callee))&&(r?.allowReturnedTimerEscape===!1||!Fp(e,!0,o,n))&&!Mp(e)&&!Np(e,n)){let t={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:$d(e,n,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!l(t))return a=t,!1}if(Ad(e)&&(!Fp(e,o,o,n)||r?.requireCallableReturnedResource===!0&&!jd(e))){let t=uf(e,n),r={kind:`subscribe`,node:e,resourceName:t.registrationVerbName??`subscribe`,handleKey:$d(e,n),...t};return!nde(e,n)&&!l(r)&&(a=r),!1}}}),a},Ip=(e,n)=>{if(!t(e)||e.generator)return null;let r=v(e),i=r.parent;if(!y(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r)return null;let a=wd(O(i.left),n.scopes);if(!a)return null;let o=X(i,n.scopes);return!t(o)||b(i)!==o||b(a.bindingIdentifier)!==o||!B(i,n)?null:{assignmentNode:i,functionNode:e,refSymbol:a}},Lp=(e,t)=>Ip(e,t)?.refSymbol??null,Rp=(e,t,n)=>{let r=v(e),i=r.parent;if(y(i,`VariableDeclarator`)&&i.init===r&&y(i.id,`Identifier`)&&y(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?pf(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Pp(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(y(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=v(e);continue}if(y(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=v(e);continue}if(y(e,`LogicalExpression`)&&e.right===r){r=v(e);continue}break}let a=r.parent;return!!(y(a,`ReturnStatement`)&&a.argument===r&&b(a)===t||y(t,`ArrowFunctionExpression`)&&t.body===r)},Mde=(e,t,n)=>y(e,`CallExpression`)&&wd(O(e.callee),n.scopes)?.id===t.id,Nde=(e,n)=>{let r=new Map;A(e.body,e=>{if(!t(e))return;let i=Ip(e,n);if(i){let e=r.get(i.refSymbol.id)??[];e.push(i),r.set(i.refSymbol.id,e)}return!1});for(let[e,t]of r){let i=t.filter(e=>!pf(e.assignmentNode,t.filter(t=>t!==e).map(e=>e.assignmentNode),n));i.length===0?r.delete(e):r.set(e,i)}return r},zp=(e,n,r)=>{if(!t(e))return[];let i=[],a=[];return A(e.body,o=>{if(o!==e.body&&t(o))return!1;y(o,`AssignmentExpression`)&&B(o,r)&&wd(O(o.left),r.scopes)?.id===n.id&&i.push(o),Mde(o,n,r)&&B(o,r)&&a.push(o)}),a.filter(t=>!kp(t,i,e,r))},Bp=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Pde=(e,n)=>{let r=Fd.get(n);r||(r=new WeakMap,Fd.set(n,r));let i=r.get(e);if(i)return i;let a=Nde(e,n),o=new Map;A(e.body,r=>{if(r!==e.body&&t(r))return!1;if(!y(r,`CallExpression`)||b(r)!==e||!Bd(r,n))return;let i=or(r);if(t(i))for(let e of a.values()){let t=e[0]?.refSymbol;if(t)for(let e of zp(i,t,n))Bp(o,t.id,!i.async&&Rp(e,i,n))}});let s=!0;for(;s;){s=!1;for(let e of a.values()){let t=e[0]?.refSymbol;if(!t)continue;let r=o.get(t.id);if(r)for(let t of e)for(let e of a.values()){let i=e[0]?.refSymbol;if(i)for(let e of zp(t.functionNode,i,n)){let a=r.doesEffectOwnEveryResult&&!t.functionNode.async&&Rp(e,t.functionNode,n);Bp(o,i.id,a)&&(s=!0)}}}}let c={callbackDefinitionsByRefSymbolId:a,usageByRefSymbolId:o};return r.set(e,c),c},Vp=(e,n)=>{if(!t(e))return null;let r=Ip(e,n),i=X(e,n.scopes);if(!r||!t(i))return null;let a=Pde(i,n);return a.callbackDefinitionsByRefSymbolId.get(r.refSymbol.id)?.some(t=>t.functionNode===e)?a.usageByRefSymbolId.get(r.refSymbol.id)??null:null},Fde=(n,r,i,a)=>{if(!t(n)||n.async||Vp(n,a)?.doesEffectOwnEveryResult!==!0||!y(n.body,`BlockStatement`))return!1;let o=n=>{let i=Op(e(n),a);if(!i)return!1;if(i===r)return!0;if(!t(i))return!1;let o=[];return A(i.body,e=>{if(e!==i.body&&t(e))return!1;y(e,`CallExpression`)&&Op(e.callee,a)===r&&o.push(e)}),Ka(i,o,a)},s=[];return Dd(n.body,e=>{y(e,`ReturnStatement`)&&e.argument&&o(e.argument)&&s.push(e)}),pf(i.node,s,a)},Ide=(e,n,r)=>{if(!t(e)||!y(e.body,`BlockStatement`))return!1;let i=!1;return Dd(e.body,e=>{i||!y(e,`ReturnStatement`)||!e.argument||A(e.argument,e=>{if(Op(e,r)===n)return i=!0,!1})}),i},Hp=e=>y(e,`FunctionDeclaration`)?md(e)!==null:!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.parent,`VariableDeclarator`)?!1:md(e)!==null,Up=e=>{let t=v(e),n=t.parent;return y(n,`JSXExpressionContainer`)&&n.expression===t&&Sd(n.parent)},Wp=(e,n)=>{if(!t(e))return!1;let r=v(e),i=r.parent;if(y(i,`CallExpression`)&&i.arguments?.[0]===r&&N(i,`useCallback`,n.scopes)&&Up(i))return!0;let a=e.parent;if(Up(e))return!0;if(!y(a,`Property`)||a.value!==e||a.computed)return!1;let o=S(a);if(!o||!/^on[A-Z]/.test(o))return!1;let s=a.parent;if(!y(s,`ObjectExpression`))return!1;let c=s.parent;return(y(c,`CallExpression`)&&c.arguments.some(e=>e===s)||y(c,`JSXExpressionContainer`))&&X(a,n.scopes)!==null},Gp=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=O(e);return y(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:y(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||y(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:y(n,`ArrayExpression`)||y(n,`ArrowFunctionExpression`)||y(n,`ClassExpression`)||y(n,`FunctionExpression`)||y(n,`NewExpression`)||y(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Kp=(e,t,n)=>{let r=O(e),i=Gp(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(y(r,`UnaryExpression`)&&r.operator===`!`){let e=Kp(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(y(r,`LogicalExpression`)){let e=Kp(r.left,t,n),i=Kp(r.right,t,n);return r.operator===`&&`?e===`falsy`||i===`falsy`?`falsy`:e===`truthy`&&i===`truthy`?`truthy`:`unknown`:r.operator===`||`?e===`truthy`||i===`truthy`?`truthy`:e===`falsy`&&i===`falsy`?`falsy`:`unknown`:`unknown`}if(y(r,`ConditionalExpression`)){let e=Kp(r.test,t,n);if(e===`truthy`)return Kp(r.consequent,t,n);if(e===`falsy`)return Kp(r.alternate,t,n);let i=Kp(r.consequent,t,n);return i===Kp(r.alternate,t,n)?i:`unknown`}return y(r,`CallExpression`)&&y(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&E(r.arguments[0])?Kp(r.arguments[0],t,n):`unknown`},Lde=(e,n,r,i)=>{let a=new Map;if(!t(e)||!n.isDirect)return a;for(let[t,o]of e.params.entries()){let e=n.call.arguments[t],s=e&&E(e)?e:null,c=null,l=Gp(s,i);if(y(o,`Identifier`)?c=o:y(o,`AssignmentPattern`)&&y(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Gp(o.right,i))):y(o,`RestElement`)&&y(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=i.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<r.range[0]);a.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return a},Rde=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Lde(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(y(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!y(t,`IfStatement`)||t.alternate||!Cd(t.consequent))&&Kp(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(y(o,`IfStatement`)||y(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):y(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((y(o,`WhileStatement`)||y(o,`DoWhileStatement`))&&o.body===a||y(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Kp(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},zde=(e,n)=>{if(!t(e))return[];let r=b(e);if(!r||!t(r))return[];let i=Id.get(n);i||(i=new WeakMap,Id.set(n,i));let a=i.get(r);if(a)return a.get(e)??[];let o=new Map,s=(e,t,n)=>{if(!e)return;let r=o.get(e)??[];r.push({call:t,isDirect:n}),o.set(e,r)};return A(r.body,e=>{if(!y(e,`CallExpression`)||b(e)!==r||!Bd(e,n))return;let i=or(e);!i||!t(i)||A(i.body,e=>{if(e!==i.body&&t(e))return!1;if(!(!y(e,`CallExpression`)||!B(e,n))){s(Op(e.callee,n),e,!0);for(let t of e.arguments)!E(t)||!sd(e,t)||s(Op(t,n),e,!1)}})}),i.set(r,o),o.get(e)??[]},qp=x({id:`effect-needs-cleanup`,title:`Effect subscription or timer never cleaned up`,severity:`error`,tags:[`test-noise`],recommendation:"Return a cleanup function that stops the subscription or timer: `return () => target.removeEventListener(name, handler)` for listeners, `return () => clearInterval(id)` or `clearTimeout(id)` for timers, `return () => observer.disconnect()` for observers, `return () => socket.close()` for connections, or `return unsubscribe` if the subscribe call already gave you one.",create:e=>{let n=n=>{let r=Vp(n,e);if(!r&&!Ep(n,e))return;let i=zde(n,e),a=i.length>0,o=jde(n,e,r?{allowReturnedResourceEscape:r.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:a?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!o||a&&o.resourceName===`setTimeout`&&(!B(o.node,e)||t(n)&&n.params.length>0&&!e.cfg.isUnconditionalFromEntry(o.node)&&i.every(t=>Rde(n,o.node,t,e))))return;let s=zd[o.kind];e.report({node:o.node,message:`\`${o.resourceName}\` creates a ${s} in a function that outlives the render, with no cleanup path. Store the handle and release it, or move this into a useEffect that returns cleanup, so it does not leak after unmount.`})};return{CallExpression(t){if(N(t,`useCallback`,e.scopes)){let r=or(t);r&&!Wp(r,e)&&n(r);return}if(!Bd(t,e))return;let r=or(t);if(!r)return;let i=gue(r,hue(r,e),e);if(i.length===0)return;let a=ede(r,i,e);if(!a)return;let o=zd[a.kind],s=ar(t)??`effect`;e.report({node:t,message:`\`${a.resourceName}\` creates a ${o} in ${s} without guaranteed cleanup. Return a cleanup function that owns every allocation so it does not leak after unmount.`})},FunctionDeclaration(e){Hp(e)&&n(e)},ArrowFunctionExpression(t){(Hp(t)||Wp(t,e)||Lp(t,e))&&n(t)},FunctionExpression(t){(Hp(t)||Wp(t,e)||Lp(t,e))&&n(t)}}}}),Bde=new Set([`window`,`globalThis`,`self`]),Vde=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),Hde=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=v(e.identifier),n=t.parent;return!y(n,`MemberExpression`)||n.object!==t?!1:y(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(y(n.parent,`CallExpression`)&&n.parent.callee===n&&Vde.has(C(n)??``))}),Ude=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||Hde(e))return null;r.add(e.id);let i=Hs(e);if(!i)return n;let a=O(i);if(!y(a,`Identifier`))return n;n=a}},Wde=e=>{let t=b(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(y(n,`ConditionalExpression`)||y(n,`IfStatement`)||y(n,`LogicalExpression`)||y(n,`SwitchStatement`)||y(n,`ForStatement`)||y(n,`ForInStatement`)||y(n,`ForOfStatement`)||y(n,`WhileStatement`)||y(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Jp=(e,n,r)=>{let i=b(e);if(!i||!t(i))return null;let a=v(i),o=a.parent;if(!y(o,`CallExpression`)||!o.arguments.some(e=>e===a))return null;let s=O(o.callee);if(!y(s,`MemberExpression`)||C(s)!==`forEach`||i.async||!Wde(o))return null;let c=O(s.object);if(!y(c,`Identifier`))return null;let l=Ude(c,r);if(!l)return null;let u=V({node:l,scopes:r.scopes});if(!u)return null;let d=new Set,f=e=>{let t=O(e);if(y(t,`Identifier`)){let e=r.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let n=i.params.findIndex(t=>r.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(n>=0)return`$${n}`;let a=Hs(e);return a&&!d.has(e.id)&&b(e.declarationNode)===i?(d.add(e.id),f(a)):V({node:t,scopes:r.scopes})}if(y(t,`Literal`))return JSON.stringify(t.value);if(y(t,`MemberExpression`)){let e=f(t.object),n=C(t);return e&&n?`${e}.${n}`:null}if(y(t,`CallExpression`)){let e=O(t.callee);if(!y(e,`MemberExpression`)||C(e)!==`getElementById`)return null;let n=O(e.object);if(!y(n,`Identifier`)||n.name!==`document`||!r.scopes.isGlobalReference(n))return null;let i=t.arguments.map(e=>y(e,`SpreadElement`)?null:f(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},p=f(n);if(!p)return null;d.clear();let m=[],h=e,g=e.parent??null;for(;g&&g!==i;){if(y(g,`IfStatement`)){let e=g.consequent===h?`truthy`:`falsy`,t=f(g.test);if(!t)return null;m.push(`${e}:${t}`)}else if(y(g,`ConditionalExpression`)||y(g,`LogicalExpression`)||y(g,`SwitchStatement`)||y(g,`ForStatement`)||y(g,`ForInStatement`)||y(g,`ForOfStatement`)||y(g,`WhileStatement`)||y(g,`DoWhileStatement`))return null;h=g,g=g.parent??null}return g===i?`${u}:${m.join(`&`)}:${p}`:null},Yp=(e,t,n)=>{let r=T(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=v(e),a=i.parent;if(!(y(a,`VariableDeclarator`)&&a.id===e)&&!(y(a,`VariableDeclarator`)&&a.init===i)&&!(y(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(y(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(y(a,`MemberExpression`)&&a.object===i){let e=C(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!y(r,`CallExpression`)||r.callee!==a)return;if(e===`observe`){t.didObserve=!0,t.didReleaseAll=!1,t.observationCalls.push(r);let e=r.arguments?.[0],i=e?Jp(r,e,n):null,a=e?V({node:e,scopes:n.scopes}):null;i?t.observedIterationTargetKeys.add(i):a?t.observedTargetKeys.add(a):t.didObserveUnknownTarget=!0;return}if(e===`disconnect`&&t.didObserve){t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear();return}if(e===`unobserve`&&t.didObserve){let e=r.arguments?.[0],i=e?Jp(r,e,n):null,a=e?V({node:e,scopes:n.scopes}):null;i&&t.observedIterationTargetKeys.has(i)?t.observedIterationTargetKeys.delete(i):a&&t.observedTargetKeys.has(a)&&t.observedTargetKeys.delete(a)}return}if(y(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=O(a.callee);if(y(e,`MemberExpression`)&&C(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Gde=(e,t,n)=>{let r=!1;return $a(e,e=>{y(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Kde=(e,n,r,i)=>{if(!r)return!1;let a=O(e);if(!y(a,`MemberExpression`)||C(a)!==`target`)return!1;let o=O(a.object);if(!y(o,`Identifier`))return!1;let s=i.symbolFor(o)?.bindingIdentifier;if(!s)return!1;let c=b(o);if(!c||c===n||!t(c))return!1;let l=v(c),u=l.parent;if(!y(u,`CallExpression`)||!u.arguments.some(e=>e===l))return!1;let d=O(u.callee);return y(d,`MemberExpression`)&&C(d)===`forEach`&&Gde(d.object,r,i)&&(c.params??[]).some(e=>i.symbolFor(e)?.bindingIdentifier===s)},qde=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?O(e.arguments[0]):null;if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`))return n;let i=r,a=i.params?.[0],o=a?t.symbolFor(a)?.bindingIdentifier??null:null,s=i.params?.[1];if(!s||!y(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&$a(i,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(!y(r,`MemberExpression`))return;let a=O(r.object);if(!y(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=C(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Kde(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=V({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},Xp=(e,t)=>{let n=O(e),r=y(n,`Identifier`)?T(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},Zp=(e,t,n=new Set)=>{let r=O(e);if(n.has(r))return!1;if(n.add(r),y(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?Zp(e,t,n):!1}let i=y(r,`CallExpression`)?O(r.callee):null,a=y(i,`MemberExpression`)?O(i.object):null;if(!y(r,`CallExpression`)||!y(i,`MemberExpression`)||C(i)!==`bind`||!y(a,`MemberExpression`)||C(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&Xp(a.object,t)&&Xp(o,t))},Jde=(e,t)=>{let n=new Set;for(let r of e.bindingIdentifiers){let e=t.scopes.symbolFor(r);if(e)for(let t of e.references){let e=v(t.identifier),r=e.parent;if(!y(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=O(r.callee);y(i,`MemberExpression`)&&C(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!Ga(e,[r],t)))return null;let i=O(r.callee);if(!y(i,`MemberExpression`))return null;let a=O(i.object);if(!y(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?O(o.initializer):null;return!o||o.kind!==`const`||!y(s,`ArrayExpression`)||(s.elements?.length??0)!==0||b(o.declarationNode)!==b(e.construction)||!o.references.every(e=>{let t=v(e.identifier),n=t.parent,r=n?.parent;return!!(y(n,`MemberExpression`)&&n.object===t&&y(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(C(n)??``))})?null:V({node:a,scopes:t.scopes})},Yde=(e,n)=>{if(!t(e)||e.async||e.generator)return!1;let r=e.params?.[0];if(!r||!y(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r)?.bindingIdentifier;if(!i)return!1;let a=[];return $a(e,e=>{if(!y(e,`CallExpression`))return;let t=O(e.callee);if(!y(t,`MemberExpression`)||C(t)!==`disconnect`)return;let r=O(t.object);y(r,`Identifier`)&&n.scopes.symbolFor(r)?.bindingIdentifier===i&&a.push(e)}),Ka(e,a,n)},Xde=(e,n,r,i)=>{let a=e=>{if(!t(e)||e.async||e.generator)return!1;let n=[];return A(e.body,t=>{if(!y(t,`CallExpression`)||b(t)!==e)return;let a=O(t.callee);if(!y(a,`MemberExpression`)||C(a)!==`forEach`||V({node:a.object,scopes:i.scopes})!==r)return;let o=t.arguments?.[0];o&&Yde(o,i)&&n.push(t)}),Ka(e,n,i)};if(!t(e))return!1;if(!y(e.body,`BlockStatement`)){let t=pl(e.body,e,i.scopes);return t.length>0&&t.every(a)}let o=tn(e).filter(e=>{if(!e.argument)return!1;let t=pl(e.argument,e,i.scopes);return t.length>0&&t.every(a)});return n.every(e=>Ga(e,o,i))},Qp=x({id:`effect-observer-needs-disconnect`,title:`Observer created in an effect never disconnected`,severity:`error`,category:`Bugs`,recommendation:"Return a cleanup function that calls `observer.disconnect()` (or `observer.unobserve(node)`) so the observer stops firing callbacks against detached nodes after unmount instead of leaking on every mount.",create:e=>({CallExpression(n){if(!_l(n,e.scopes))return;let r=or(n);if(!t(r))return;let i=new Map;if($a(r,t=>{if(!y(t,`NewExpression`))return;let n=O(t.callee);if(!(y(n,`Identifier`)?s.has(n.name)&&!T(n,n.name):y(n,`MemberExpression`)&&y(O(n.object),`Identifier`)&&Bde.has(O(n.object).name)&&!T(n.object,O(n.object).name)&&s.has(C(n)??``)))return;let r=v(t),a=r.parent;if(!y(a,`VariableDeclarator`)||a.init!==r||!(y(a.id,`Identifier`)&&a.id.name))return;let o=qde(t,e.scopes);i.set(a.id,{construction:t,bindingIdentifier:a.id,bindingIdentifiers:new Set([a.id]),didObserve:!1,didObserveUnknownTarget:!1,didReleaseAll:!1,didReleaseAllViaCallbackParameter:o.didReleaseAll||o.didReleaseObservedEntries,callbackReleasedTargetKeys:o.releasedTargetKeys,didEscape:!1,observationCalls:[],observedIterationTargetKeys:new Set,observedTargetKeys:new Set})}),i.size===0)return;for(let t of[...i.values()]){let n=hl(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)i.set(e,t)}let a=new Set(i.values());$a(r,t=>{if(!y(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,r=n?i.get(n):void 0;r&&Yp(t,r,e)});for(let t of ml(r))$a(t,t=>{if(!y(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,r=n?i.get(n):void 0;r&&Yp(t,r,e)});for(let n of a){for(let e of n.callbackReleasedTargetKeys)n.observedTargetKeys.delete(e);let r=n.construction.arguments?.[0];!r||!t(O(r))||$a(O(r),t=>{if(!y(t,`Identifier`))return;let r=T(t,t.name)?.bindingIdentifier;r&&i.get(r)===n&&Yp(t,n,e)})}let o=y(r.body,`BlockStatement`)?tn(r).flatMap(e=>e.argument?[e.argument]:[]):[r.body];for(let t of a){o.some(e=>Zp(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let n=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||n)continue;let i=Jde(t,e);i&&Xde(r,t.observationCalls,i,e)||e.report({node:t.construction,message:"This observer is created and started in the effect but never disconnected, so it keeps firing against detached nodes and leaks one observer per mount; return a cleanup that calls `disconnect()` or `unobserve()`."})}}})}),$p=`cancelAnimationFrame`,em=`collection-values:`,Zde=new Set([`min`,`max`]),tm=e=>y(e,`CallExpression`)&&rm(e,`requestAnimationFrame`),nm=new Set([`window`,`globalThis`,`self`]),rm=(e,t)=>{let n=O(e.callee);if(y(n,`Identifier`))return n.name===t&&!T(n,n.name);if(!y(n,`MemberExpression`)||C(n)!==t)return!1;let r=O(n.object);return y(r,`Identifier`)&&nm.has(r.name)&&!T(r,r.name)},im=e=>{if(!e)return null;let n=O(e);if(y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`))return n;if(y(n,`Identifier`)){let e=T(n,n.name)?.initializer;if(t(e))return e}return null},am=(e,t,n)=>{let r=new Set,i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of hl(e,n))r.add(t)}if((y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`))&&t.id&&y(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of hl(e,n))r.add(t)}return r},om=(e,t,n)=>{let r=O(e);return y(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Qde=(e,t,n)=>{let r=!1;return $a(e,e=>{if(r)return!1;if(!tm(e))return;let i=e.arguments?.[0];if(i&&om(i,t,n))return r=!0,!1}),r},$de=(e,t)=>{let n=[];return $a(e,e=>{if(!tm(e))return;let r=e.arguments?.[0];if(!r)return;let i=im(r);i&&Qde(i,am(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},sm=e=>{let t=O(e);if(y(t,`Identifier`)){let e=T(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=sm(e.initializer);if(t&&t!==n)return t}return n}if(!y(t,`MemberExpression`))return null;let n=sm(t.object),r=C(t);return n&&r?`${n}.${r}`:null},efe=e=>{let t=v(e),n=t.parent;if(y(n,`AssignmentExpression`)&&n.right===t)return sm(n.left);if(y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`))return sm(n.id);if(y(n,`CallExpression`)&&y(n.callee,`MemberExpression`)){let e=C(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?sm(n.callee.object):null;if(i)return`${em}${i}`}return null},cm=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=am(n,e.scheduledFunction,t),i=[e.rafCall];return $a(e.scheduledFunction,e=>{if(!tm(e))return;let n=e.arguments?.[0];n&&om(n,r,t)&&i.push(e)}),i},tfe=e=>{let t=v(e),n=t.parent;return y(n,`AssignmentExpression`)&&n.right===t?n.left:y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`)?n.id:null},lm=(e,n,r)=>{let i=[...r].filter(n=>{let r=n;for(;r&&r!==e;){if(t(r))return!1;r=r.parent}return r===e}).map(e=>e.range[0]),a=!1;return A(e,o=>{if(a||o!==e&&t(o))return!1;let s=y(o,`AssignmentExpression`)?o.left:y(o,`UpdateExpression`)?o.argument:null;if(s&&!r.has(s)&&sm(s)===n&&i.some(e=>e<s.range[0]))return a=!0,!1}),a},nfe=(e,t,n)=>{let r=cm(e,n),i=r.map(efe),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(em))return a;let o=new Set(r.flatMap(e=>{let t=tfe(e);return t?[t]:[]}));return lm(t,a,o)||lm(e.scheduledFunction,a,o)?null:a},rfe=(e,n,r)=>{let i=!1;return $a(e,e=>{if(i||!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||C(a)!==`forEach`||sm(a.object)!==n)return;let o=e.arguments?.[0],s=o&&!y(o,`SpreadElement`)?im(o):null;if(!t(s))return;let c=s.params?.[0];y(c,`Identifier`)&&A(s,e=>{if(i||e!==s&&t(e))return!1;if(!y(e,`CallExpression`))return;let n=e.arguments?.[0];if(um(e)&&y(n,`Identifier`)&&r.symbolFor(n)?.bindingIdentifier===r.symbolFor(c)?.bindingIdentifier)return i=!0,!1})}),i},ife=(e,t,n)=>{if(t.startsWith(em))return rfe(e,t.slice(18),n);let r=!1;return $a(e,e=>{if(r||!y(e,`CallExpression`)||!um(e))return;let n=e.arguments?.[0];n&&sm(n)===t&&(r=!0)}),r},um=e=>{if(rm(e,$p))return!0;let t=O(e.callee);if(!y(t,`Identifier`))return!1;let n=T(t,t.name)?.bindingIdentifier?.parent;if(!y(n,`Property`)||(y(n.key,`Identifier`)?n.key.name:y(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==$p)return!1;let r=n.parent,i=r?.parent;if(!y(r,`ObjectPattern`)||!y(i,`VariableDeclarator`))return!1;let a=i.init?O(i.init):null;return y(a,`Identifier`)&&nm.has(a.name)&&!T(a,a.name)},afe=(e,t)=>{$a(e,e=>{let n=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(y(n,`Identifier`)){let e=sm(n);e&&t.add(e)}else if(y(n,`MemberExpression`)){let e=sm(n);e&&t.add(e)}})},ofe=(e,t,n)=>{if(y(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!y(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return hm(e.right);if(e.operator!==`=`)return!1;let r=O(e.right),i=y(r,`BinaryExpression`)?O(r.left):null;return y(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&y(i,`Identifier`)&&sm(i)===t&&hm(r.right)},dm=(e,t)=>{let n=new Set,r=new Set;$a(e,e=>{let i=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(!y(i,`Identifier`))return;let a=sm(i);a&&(ofe(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},sfe=(e,t)=>{let n=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(!y(n,`Identifier`)&&!y(n,`MemberExpression`))return;let r=sm(n);if(!r)return;if(y(e,`UpdateExpression`)||y(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!y(e,`AssignmentExpression`))return;let i=O(e.right);if(!y(i,`Literal`)||typeof i.value!=`boolean`){t.booleanValues.delete(r),t.changedFromSnapshotKeys.delete(r);return}t.changedFromSnapshotKeys.delete(r),t.booleanValues.set(r,i.value)},cfe=e=>y(e,`IfStatement`)||y(e,`ConditionalExpression`)||y(e,`LogicalExpression`)||y(e,`SwitchStatement`)||y(e,`TryStatement`)||y(e,`ForStatement`)||y(e,`ForInStatement`)||y(e,`ForOfStatement`)||y(e,`WhileStatement`)||y(e,`DoWhileStatement`),lfe=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(cfe(n))return!1;n=n.parent}return n===t||e===t},ufe=(e,n)=>{let r={booleanValues:new Map,changedFromSnapshotKeys:new Set},i=new Set,a=e=>{i.has(e)||(i.add(e),$a(e,i=>{if(!lfe(i,e)||(sfe(i,r),!y(i,`CallExpression`)))return;let o=i.callee;if(y(o,`Identifier`)){let e=sm(o);A(n,n=>{y(n,`VariableDeclarator`)&&y(n.id,`Identifier`)&&sm(n.id)===e&&n.init&&t(n.init)&&a(n.init)});return}if(y(o,`MemberExpression`)){let e=sm(o);if(!e)return;if(C(o)===`abort`){let e=sm(o.object);e&&r.booleanValues.set(`${e}.signal.aborted`,!0)}A(n,n=>{y(n,`AssignmentExpression`)&&y(n.left,`MemberExpression`)&&sm(n.left)===e&&n.right&&t(n.right)&&a(n.right)})}}))};return a(e),r},fm=(e,t)=>{let n=O(e);if(y(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(y(n,`Identifier`)||y(n,`MemberExpression`)){let e=sm(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(y(n,`UnaryExpression`)&&n.operator===`!`){let e=fm(n.argument,t);return e===null?null:!e}if(y(n,`LogicalExpression`)){let e=fm(n.left,t);if(n.operator===`??`)return e;let r=fm(n.right,t);return n.operator===`&&`?e===!1||r===!1?!1:e===!0?r:null:e===!0||r===!0?!0:e===!1?r:null}if(!y(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=fm(n.left,t),o=fm(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=sm(n.left),c=sm(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},pm=e=>y(e,`ReturnStatement`)||y(e,`ThrowStatement`)?!0:y(e,`BlockStatement`)&&!!e.body?.some(e=>pm(e))||y(e,`IfStatement`)&&!!e.alternate&&pm(e.consequent)&&pm(e.alternate),mm=(e,t,n)=>{let r=fm(e,n);return r!==null&&r!==t},dfe=(e,t,n)=>{let r=fm(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},ffe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((y(e,`IfStatement`)||y(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&mm(e.test,e.consequent===r,n)||y(e,`LogicalExpression`)&&e.right===r&&dfe(e.left,e.operator,n))return!0;if(y(e,`BlockStatement`)){let t=e.body.findIndex(e=>e===r);if(t>=0)for(let r of e.body.slice(0,t)){let e=r;if(y(e,`IfStatement`)&&(pm(e.consequent)&&mm(e.test,!1,n)||e.alternate&&pm(e.alternate)&&mm(e.test,!0,n)))return!0}}r=e}return!1},pfe=(e,t,n)=>{let r=cm(e,n).slice(1);return r.length>0&&r.every(n=>ffe(n,e.scheduledFunction,t))},hm=e=>y(e,`Literal`)&&typeof e.value==`number`&&e.value>0,mfe=(e,t)=>{let n=O(e);return y(n,`Literal`)&&typeof n.value==`number`||y(n,`Identifier`)&&!t.has(sm(n)??``)},gm=(e,t,n)=>{let r=O(e);if(y(r,`Identifier`)){let e=sm(r);return e?t.has(e):!1}if(y(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return gm(r.left,t,n)&&mfe(r.right,n);if(r.operator===`*`||r.operator===`/`)return gm(r.left,t,n)&&hm(r.right)}if(!y(r,`CallExpression`))return!1;let i=O(r.callee),a=y(i,`MemberExpression`)?O(i.object):null;if(!y(i,`MemberExpression`)||!y(a,`Identifier`)||a.name!==`Math`||T(a,a.name)||!Zde.has(C(i)??``))return!1;let o=!1;for(let e of r.arguments){if(gm(e,t,n)){o=!0;continue}if(!y(e,`Literal`)||typeof e.value!=`number`)return!1}return o},_m=(e,t,n,r,i)=>{let a=O(e);if(y(a,`UnaryExpression`)&&a.operator===`!`)return _m(a.argument,t,n,r,!i);if(y(a,`LogicalExpression`)&&a.operator!==`??`)return _m(a.left,t,n,r,i)&&_m(a.right,t,n,r,i);if(!y(a,`BinaryExpression`))return!1;let o=gm(a.left,t,r)&&y(a.right,`Literal`)&&typeof a.right.value==`number`,s=y(a.left,`Literal`)&&typeof a.left.value==`number`&&gm(a.right,t,r),c=(a.operator===`<`||a.operator===`<=`)&&o||(a.operator===`>`||a.operator===`>=`)&&s,l=(a.operator===`>`||a.operator===`>=`)&&o||(a.operator===`<`||a.operator===`<=`)&&s;if(i?c:l)return!0;let u=gm(a.left,n,r)&&y(a.right,`Literal`)&&typeof a.right.value==`number`,d=y(a.left,`Literal`)&&typeof a.left.value==`number`&&gm(a.right,n,r),f=(a.operator===`>`||a.operator===`>=`)&&u||(a.operator===`<`||a.operator===`<=`)&&d,p=(a.operator===`<`||a.operator===`<=`)&&u||(a.operator===`>`||a.operator===`>=`)&&d;return i?f:p},hfe=(e,n)=>{let r=e.scheduledFunction,i=new Set;afe(r,i);let a=dm(r,!0),o=dm(r,!1);if(t(r)){for(let e of r.params??[])if(y(e,`Identifier`)){let t=sm(e);t&&!i.has(t)&&a.add(t)}}let s=!0;for(;s;)s=!1,$a(r,e=>{if(!y(e,`VariableDeclarator`)||!e.init)return;let t=y(e.id,`Identifier`)?sm(e.id):null;!t||a.has(t)||o.has(t)||i.has(t)||(gm(e.init,a,i)?(a.add(t),s=!0):gm(e.init,o,i)&&(o.add(t),s=!0))});if(a.size===0&&o.size===0)return!1;let c=cm(e,n).slice(1);if(c.length===0)return!1;for(let e of c){let t=!1,n=e,s=e.parent;for(;s&&s!==r;){if((y(s,`IfStatement`)||y(s,`ConditionalExpression`))&&(s.consequent===n||s.alternate===n)&&_m(s.test,a,o,i,s.consequent===n)){t=!0;break}n=s,s=s.parent??null}if(!t)return!1}return!0},vm=x({id:`effect-raf-loop-needs-cancel`,title:`requestAnimationFrame loop never cancelled`,severity:`warn`,category:`Bugs`,recommendation:"Store the frame id and return a cleanup that calls `cancelAnimationFrame(id)` so self-scheduling work cannot continue after unmount.",create:e=>({CallExpression(t){if(!_l(t,e.scopes))return;let n=or(t);if(!n)return;let r=ml(n);for(let t of $de(n,e.scopes)){if(hfe(t,e.scopes))continue;let i=nfe(t,n,e.scopes);i&&r.some(t=>ife(t,i,e.scopes))||r.some(r=>pfe(t,ufe(r,n),e.scopes))||e.report({node:t.rafCall,message:`This requestAnimationFrame loop can schedule another frame but is never cancelled, so pending work may continue after unmount; store every frame id in one handle and cancel that handle from the returned effect cleanup.`})}}})}),gfe=new Set([`removeEventListener`,`removeListener`,`off`]),_fe=/(?:duration|delay|timeout|ms)$/i,vfe=e=>{let t=O(e);if(y(t,`Literal`)&&typeof t.value==`number`)return!0;if(!y(t,`Identifier`))return!1;if(_fe.test(t.name))return!0;let n=T(t,t.name);if(!n?.initializer)return!1;let r=O(n.initializer);return y(r,`Literal`)&&typeof r.value==`number`},yfe=e=>{let t=O(e);return aa(t)?!0:y(t,`CallExpression`)&&y(t.callee,`MemberExpression`)&&C(t.callee)===`bind`},bfe=new Set([`addEventListener`,`addListener`,`on`,`once`]),ym=`handler-only`,xfe=(e,t)=>{let n=new Set;return A(e,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(!y(r,`MemberExpression`))return;let i=C(r);if(!i||!bfe.has(i))return;let a=V({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?ym:Gu(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},bm=x({id:`effect-remove-listener-inline-handler`,title:`removeEventListener called with a fresh inline handler`,severity:`error`,category:`Bugs`,tags:[`test-noise`],recommendation:"Removal APIs match the listener by reference equality, so a fresh inline arrow, function expression, or `.bind(...)` result can never equal the registered handler; hoist the handler into a named const and pass that same reference to both the add and remove calls.",create:e=>{let t=new WeakMap;return{CallExpression(n){let r=O(n.callee);if(!y(r,`MemberExpression`))return;let i=C(r);if(!i||!gfe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&vfe(a[0])||!yfe(s))return;let c=V({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?ym:Gu(a[0],e.scopes),u=d(n);if(!c||!l||!u)return;let f=t.get(u);f||(f=xfe(u,e.scopes),t.set(u,f)),f.has(JSON.stringify([c,l]))&&e.report({node:s,message:`\`${i}\` gets a brand-new function reference here that never equals the registered listener, so this removal silently no-ops; pass the same named handler to both the add and remove calls.`})}}}}),Sfe=new Set([`columnheader`,`rowheader`]),Cfe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=L(e.attributes,t,!1);if(!n)continue;let r=I(n);if(r===null||r.trim().length>0)return!0}return!1},xm=x({id:`empty-table-header`,title:`Table header has no accessible text`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give every table header concise text or an explicit accessible name.`,create:e=>({JSXElement(t){let n=t.openingElement,r=j(n);if(/^[A-Z]/.test(r))return;let i=L(n.attributes,`role`,!1),a=i?I(i)?.toLowerCase():null;r!==`th`&&(!a||!Sfe.has(a))||Qr(t,e.settings)||Cfe(n)||e.report({node:n,message:`This table header has no accessible text, so users cannot tell what its cells represent. Add header text or an accessible name.`})}})}),wfe=(e,n)=>{let r=n.ownScopeFor(e)??n.scopeFor(e),i=[],a=new Set;return A(e,o=>{if(o!==e&&t(o)){let e=Cm(o,n);for(let t of e)t.resolvedSymbol&&!pt(t.resolvedSymbol.scope,r)&&(a.has(t.id)||(i.push(t),a.add(t.id)));return!1}let s=n.referenceFor(o);s&&s.resolvedSymbol&&(pt(s.resolvedSymbol.scope,r)||a.has(s.id)||(i.push(s),a.add(s.id)))}),i},Sm=new WeakMap,Cm=(e,t)=>{let n=Sm.get(t);n||(n=new WeakMap,Sm.set(t,n));let r=n.get(e);if(r)return r;let i=wfe(e,t);return n.set(e,i),i};let wm=0;const Tm=e=>{let t={id:wm++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Em=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Dm=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Om=(e,n,r)=>{if(e.nodeBlock.set(n,r),t(n)){e.nestedFunctions.push(n);return}let i=n,a=_t[n.type]??Object.keys(i);for(let t of a){if(t===`parent`)continue;let n=i[t];if(Array.isArray(n))for(let t of n)E(t)&&Om(e,t,r);else E(n)&&Om(e,n,r)}},Tfe=e=>{switch(e.type){case`IfStatement`:case`WhileStatement`:case`DoWhileStatement`:case`ForStatement`:case`ForInStatement`:case`ForOfStatement`:case`SwitchStatement`:case`TryStatement`:case`ReturnStatement`:case`ThrowStatement`:case`BreakStatement`:case`ContinueStatement`:case`BlockStatement`:case`LabeledStatement`:return!0;default:return!1}},km=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=km(e.argument);return t===null?null:!t}return null},Am=e=>e===null||km(e)===!0,jm=(e,t)=>{if(t===null){if(e.loopStack.length>0){let t=e.loopStack[e.loopStack.length-1];return{merge:t.merge,header:t.header}}return e.switchStack.length>0?{merge:e.switchStack[e.switchStack.length-1].merge,header:null}:null}for(let n=e.labelStack.length-1;n>=0;n--){let r=e.labelStack[n];if(r.label===t)return{merge:r.merge,header:r.header}}return null},Mm=(e,t,n)=>{let r=n;for(let n of t)r=Nm(e,n,r);return r},Nm=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Tfe(t))return Dm(e,n,t),Om(e,t,n),n;if(t.type===`BlockStatement`)return Mm(e,t.body,n);if(t.type===`LabeledStatement`){let r=Tm(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Nm(e,a,n);return e.labelStack.pop(),Em(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Om(e,t.argument,n),Em(n,e.exit,`uncond`),Tm(e);if(t.type===`ThrowStatement`){t.argument&&Om(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Em(n,r.catch,`uncond`):r?.finally?Em(n,r.finally,`uncond`):Em(n,e.exit,`throw`),Tm(e)}if(t.type===`BreakStatement`){let r=jm(e,t.label?t.label.name:null);return r?Em(n,r.merge,`uncond`):Em(n,e.exit,`uncond`),Tm(e)}if(t.type===`ContinueStatement`){let r=jm(e,t.label?t.label.name:null);return r?.header&&Em(n,r.header,`uncond`),Tm(e)}if(t.type===`IfStatement`){Om(e,t.test,n);let r=Tm(e),i=Tm(e);if(Em(n,r,`cond`),Em(Nm(e,t.consequent,r),i,`uncond`),t.alternate){let r=Tm(e);Em(n,r,`cond`),Em(Nm(e,t.alternate,r),i,`uncond`)}else Em(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Am(t.test);Om(e,t.test,n);let a=Tm(e),o=Tm(e),s=Tm(e);r?Em(n,o,`uncond`):(Em(n,a,`uncond`),Em(a,o,i?`uncond`:`cond`),i||Em(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Nm(e,t.body,o);return e.loopStack.pop(),r?(Em(c,a,`uncond`),Em(a,o,i?`uncond`:`cond`),i||Em(a,s,`cond`)):Em(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Om(e,t.init,n),t.test&&Om(e,t.test,n);let r=Tm(e),i=Tm(e),a=Tm(e),o=Am(t.test??null);Em(n,r,`uncond`),Em(r,i,o?`uncond`:`cond`),o||Em(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Nm(e,t.body,i);return e.loopStack.pop(),t.update&&Om(e,t.update,r),Em(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Om(e,t.right,n),Om(e,t.left,n);let r=Tm(e),i=Tm(e),a=Tm(e);Em(n,r,`uncond`),Em(r,i,`cond`),Em(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Nm(e,t.body,i);return e.loopStack.pop(),Em(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Om(e,t.discriminant,n);let r=Tm(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Tm(e);Em(n,t,`cond`),i&&Em(i,t,`uncond`),i=Mm(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Em(i,r,`uncond`),a||Em(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Tm(e),i=Tm(e),a=null,o=null;t.handler&&(a=Tm(e)),t.finalizer&&(o=Tm(e)),Em(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Mm(e,t.block.body,r);if(e.tryStack.pop(),a&&Em(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Nm(e,n,a);o?Em(r,o,`uncond`):Em(r,i,`uncond`)}return o&&t.finalizer?(Em(s,o,`uncond`),Em(Mm(e,t.finalizer.body,o),i,`uncond`)):Em(s,i,`uncond`),i}return Dm(e,n,t),Om(e,t,n),n},Efe=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Tm(r),a=Tm(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Mm(r,t.body,i):(Om(r,t,i),o=i),Em(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Dfe=e=>{let t=t=>{let n=new Set,r=[];e.entry!==t&&r.push(e.entry);let i=0;for(;i<r.length;){let e=r[i];if(i+=1,!n.has(e)){n.add(e);for(let n of e.successors)n.kind!==`throw`&&n.to!==t&&r.push(n.to)}}return n},n=t(null),r=new Set;r.add(e.entry),r.add(e.exit);for(let i of e.blocks)if(!r.has(i)){if(!n.has(i)){r.add(i);continue}t(i).has(e.exit)||r.add(i)}return r},Ofe=e=>{wm=0;let n=new Map,r=[],i=(e,t)=>{let i=Efe(e,t,r);n.set(e,{cfg:i,unconditionalSet:Dfe(i)})};e.type===`Program`&&i(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<r.length;e+=1){let a=r[e];!t(a)||!a.body||n.has(a)||i(a,a.body)}let a=e=>n.get(e)||(!t(e)||!e.body?null:(i(e,e.body),n.get(e)??null)),o=e=>{let n=e;for(;n;){if(t(n)||n.type===`Program`)return n;n=n.parent??null}return null};return{cfgFor:e=>a(e)?.cfg??null,enclosingFunction:o,isUnconditionalFromEntry:e=>{let t=o(e);if(!t)return!0;let n=a(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},kfe=e=>{let t=O(e);return y(t,`ObjectExpression`)?`object`:y(t,`ArrayExpression`)?`array`:y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)?`function`:y(t,`JSXElement`)||y(t,`JSXFragment`)?`JSX`:y(t,`NewExpression`)?`instance`:null},Pm=(e,t,n=new Set)=>{let r=kfe(e);if(r)return{bindingName:null,kind:r};let i=O(e);if(!y(i,`Identifier`))return null;let a=t.symbolFor(i);if(!a||a.scope.kind===`module`||a.kind!==`const`||!a.initializer||n.has(a.id)||a.references.some(e=>e.flag!==`read`)||!y(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=Pm(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},Afe=new Set([...Ut,`useImperativeHandle`,`useInsertionEffect`]),jfe=new WeakMap,Mfe=new WeakMap,Nfe=new WeakMap,Pfe=e=>{let t=jfe.get(e.programNode);if(t)return t;let n=ht(e.programNode);return jfe.set(e.programNode,n),n},Ffe=e=>{let t=Mfe.get(e.programNode);if(t)return t;let n=Ofe(e.programNode);return Mfe.set(e.programNode,n),n},Ife=(e,t)=>{let n=t.enclosingFunction(e);if(!n)return!0;let r=t.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Lfe=(e,t)=>{let n=mc(e)??t??``;return n!==`use`&&dc(n)},Rfe=(e,t)=>{if(!y(e,`Identifier`))return null;let n=w(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!y(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=Yt(n.initializer);return a?{exportedName:a,source:i}:null},zfe=(e,t,n)=>{if(!n)return null;let r=Rfe(e,t);if(!r)return null;let i=y(e,`Identifier`)?e.name:``;if(r.source===`react`||!dc(i)&&!dc(r.exportedName))return null;let a=pn(n,r.source,r.exportedName);return!a||!Lfe(a.functionNode,r.exportedName)?null:{cfg:Ffe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Pfe(a)}},Fm=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=w(i,t);if(!e||r.has(e.id))return null;if(Me(e)){let t=Lt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Im(e)?null:(r.add(e.id),Fm(e.initializer,t,n,r))}if(y(i,`MemberExpression`)){let e=C(i);if(!e||!n.has(e))return null;let r=O(i.object);return!y(r,`Identifier`)||!Oe(r,t)?null:e===`useImperativeHandle`?2:1}if(!y(i,`ConditionalExpression`))return null;let a=Fm(i.consequent,t,n,new Set(r)),o=Fm(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Bfe=(e,t,n,r)=>{if(!n)return null;let i=Rfe(O(e.callee),t);if(!i)return null;let a=Sn(n,i.source,i.exportedName);return a?Fm(a.exportedNode,Pfe(a),r):null},Vfe=(e,t,n,r)=>{let i=O(e.callee),a=M(i,t);if(a&&Lfe(a)){let e=d(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return zfe(i,t,r)},Hfe=e=>{if(!t(e))return[];let n=[];for(let[t,r]of(e.params??[]).entries()){let e=O(r);if(y(e,`Identifier`)){n.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:t,propertyName:null});continue}if(y(e,`AssignmentPattern`)&&y(e.left,`Identifier`)){n.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:t,propertyName:null});continue}if(y(e,`ObjectPattern`))for(let r of e.properties??[]){if(!y(r,`Property`))continue;let e=S(r,{allowComputedString:!0});if(!e)continue;let i=O(r.value);y(i,`Identifier`)?n.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:t,propertyName:e}):y(i,`AssignmentPattern`)&&y(i.left,`Identifier`)&&n.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:t,propertyName:e})}}return n},Ufe=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ObjectExpression`))return r;if(!y(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Im(i)?null:(n.add(i.id),Ufe(i.initializer,t,n))},Wfe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(y(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(y(r,`Property`)&&S(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Gfe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>y(e,`SpreadElement`)))return{expression:null,isProvenOmitted:!1};let r=e.arguments?.[t.parameterIndex];if(!r)return{expression:null,isProvenOmitted:!0};if(t.propertyName===null)return{expression:r,isProvenOmitted:!1};let i=Ufe(r,n);return i?Wfe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Im=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&y(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(y(n,`AssignmentExpression`)&&n.left===e||y(n,`UpdateExpression`)&&n.argument===e||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(y(n,`CallExpression`)&&n.callee===e&&y(e,`MemberExpression`)){let t=C(e);if(t&&(Ir.has(t)||Lr.has(t)))return!0}}return!1},Lm=(e,t,n,r,i=new Set)=>{let a=O(e);if(!y(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Im(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!y(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),Lm(o.initializer,t,n,r,i))},Rm=(e,t,n,r=new Set)=>{if(Lm(e,`list`,t,n))return!0;let i=O(e);if(y(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Im(e)?!1:(r.add(e.id),Rm(e.initializer,t,n,r))}return y(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?y(e,`SpreadElement`)?Lm(e.argument,`list`,t,n):Lm(e,`value`,t,n):!1):!1},Kfe=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Hfe(t.functionNode)){let o=Gfe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Im(s)||(Lm(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(Lm(o.expression,`list`,n,r)||Rm(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},qfe=(e,n,r,i,a)=>{if(!t(e.functionNode))return!1;let o=e.functionNode;if(r<0||i.has(o)||[...n.valueSymbolIds,...n.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?Im(n):!1}))return!1;let s=new Set(i);s.add(o);let c=!1;return A(o.body,i=>{if(c||i!==o.body&&t(i))return!1;if(!y(i,`CallExpression`)||!Ife(i,e.cfg))return;if(k(i,a,e.scopes,{allowGlobalReactNamespace:!0})){let t=O(i.callee),r=(y(t,`Identifier`)?t.name:y(t,`MemberExpression`)?C(t):null)===`useImperativeHandle`?2:1,a=i.arguments?.[r];return a&&!y(a,`SpreadElement`)&&Rm(a,e.scopes,n)?(c=!0,!1):void 0}let l=Bfe(i,e.scopes,e.filePath,a);if(l!==null){let t=i.arguments?.[l];return t&&!y(t,`SpreadElement`)&&Rm(t,e.scopes,n)?(c=!0,!1):void 0}if(r===0)return;let u=Vfe(i,e.scopes,e.cfg,e.filePath);if(!u)return;let d=Kfe(i,u,e.scopes,n);if(!(d.valueSymbolIds.size===0&&d.listSymbolIds.size===0)&&qfe(u,d,r-1,s,a))return c=!0,!1}),c},Jfe=(e,t,n=Afe)=>{let r=Nfe.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Nfe.set(e,new Map([[n,a]]));let o=Vfe(e,t.scopes,t.cfg,t.filename);if(!o||!X(e,t.scopes)||!Ife(e,t.cfg))return a;for(let r of Hfe(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Im(i))continue;let s=Gfe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=Pm(c,s.expression?t.scopes:o.scopes);l&&qfe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(y(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},Yfe=new WeakMap,Xfe=e=>{let t=new Map;if(!y(e,`Program`))return t;for(let n of e.body){let e=y(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!y(e,`TSInterfaceDeclaration`)&&!y(e,`TSTypeAliasDeclaration`)||!y(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},zm=(e,t)=>{let n=d(e);if(!n)return[];let r=Yfe.get(n);return r||(r=Xfe(n),Yfe.set(n,r)),r.get(t)??[]},Zfe=e=>y(e,`Identifier`)?e.name:y(e,`MemberExpression`)&&!e.computed&&y(e.object,`Identifier`)&&e.object.name===`React`&&y(e.property,`Identifier`)?`React.${e.property.name}`:null,Bm=e=>{let t=e.parent;if(!t||!y(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=Zfe(t.callee);return n!==null&&Ot.has(n)},Qfe=new Set([`function`,`arrow-function`,`method`]),Vm=e=>{let t=e.scope;for(;t;){if(Qfe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},$fe=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),Q=e=>{let t=e;for(;$fe.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Hm=(e,t)=>{let n=Q(e);if(y(n,`Identifier`)){let e=t?w(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&y(r,`ImportDeclaration`)&&r.source.value===`react`?Lt(e.declarationNode)??n.name:n.name}return y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)?n.property.name:null},Um=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,epe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,tpe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,npe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,rpe=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ipe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ape=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Wm=e=>`\`${e}\` re-runs on every render with no dependency array.`,ope=e=>`\`${e}\` crashes without a function as its first argument.`,spe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",cpe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Gm=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,lpe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,upe=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,dpe=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,fpe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,ppe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,mpe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,hpe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,gpe=e=>{let t=e?.[`react-doctor`],n=e?.[`react-hooks`],r=typeof t==`object`&&t?t.exhaustiveDeps??{}:{},i=typeof n==`object`&&n?n:{};return{additionalHooks:r.additionalHooks??r.additionalEffectHooks??i.additionalHooks??i.additionalEffectHooks??``,additionalEffectHooks:r.additionalEffectHooks??i.additionalEffectHooks??``,enableDangerousAutofixThisMayCauseInfiniteLoops:r.enableDangerousAutofixThisMayCauseInfiniteLoops??!1,experimental_autoDependenciesHooks:r.experimental_autoDependenciesHooks??i.experimental_autoDependenciesHooks??[],requireExplicitEffectDeps:r.requireExplicitEffectDeps??i.requireExplicitEffectDeps??!1}},_pe=new Set([`===`,`!==`]),vpe=(e,t)=>{let n=e.declarationNode;if(!y(n,`VariableDeclarator`)||!y(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!y(i,`Identifier`))return null;let a=n.init?O(n.init):null;return!a||!k(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},ype=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=v(n.identifier),i=r.parent;if(!y(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||b(i)!==t)return null;let a=O(i.arguments[0]);return y(a,`ArrowFunctionExpression`)||y(a,`FunctionExpression`)||y(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},bpe=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n),i=O(n.object);return!!(r===`is`&&y(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},xpe=(e,t)=>{let n=O(e);return y(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},Spe=(e,t,n)=>{let r=O(e);if(y(t,`BinaryExpression`)&&_pe.has(t.operator))return O(t.left)===r?xpe(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:O(t.right)===r?xpe(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!y(t,`CallExpression`)||!bpe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return y(i,`SpreadElement`)||y(a,`SpreadElement`)?null:O(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:O(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Cpe=(e,t,n)=>{let r=e.parent;for(;r&&R(r,t);){let i=Spe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},wpe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!R(e,t))return!1;if(y(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(y(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!Vt.has(e.type))return!1;a=e}return i===r},Tpe=(e,t)=>{let n=new Set,r=O(e);for(;y(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Ci(e);if(!i||!y(O(i),`Identifier`))break;n.add(e.id),r=O(i)}return r},Epe=(e,t,n)=>{let r=Tpe(e,n),i=Tpe(t,n);if(r===i)return!0;if(y(r,`Identifier`)&&y(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return y(r,`Literal`)&&y(i,`Literal`)?Object.is(r.value,i.value):!1},Dpe=e=>{let t=v(e).parent;if(!y(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(y(n,`ArrayExpression`)&&n.elements.length)},Ope=e=>{if(y(e,`ReturnStatement`)||y(e,`ThrowStatement`))return!0;if(!y(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&Ope(t))},kpe=(e,t)=>{if(!y(e,`IfStatement`)||e.alternate||!Ope(e.consequent))return!1;let n=e.parent;if(!y(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&R(t,e))},Ape=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(y(i,`IfStatement`)&&R(e,i.test)&&(R(t,i.consequent)||i.alternate&&R(t,i.alternate)||kpe(i,t))){let n=R(t,i.consequent);if(n===(!!(i.alternate&&R(t,i.alternate))||kpe(i,t)))return null;let a=Cpe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return wpe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},jpe=(e,t,n)=>{if(!Dpe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=vpe(e,n);if(!r)return!1;let i=ype(r,t);if(!i)return!1;let a=e.references.filter(e=>R(e.identifier,t));if(a.length!==1)return!1;let o=v(a[0].identifier);if(y(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=Ape(a[0].identifier,i.callExpression,t,n);return!!(s&&Epe(s,i.writtenValue,n))},Mpe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Npe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Ppe=(e,t)=>{let n=new Set,r=e.split(`
|
|
1
|
+
import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,An as o,Ar as s,At as c,B as l,Bi as u,Bn as d,Br as f,Bt as p,C as m,Ca as h,Ci as g,Cn as _,Cr as ee,Ct as te,D as ne,Di as re,Dn as ie,Dr as ae,Dt as oe,E as se,Ea as ce,Ei as le,En as ue,Er as de,Et as fe,F as pe,Fi as me,Fn as he,Fr as eee,Ft as tee,G as ge,Gi as _e,Gn as ve,Gr as nee,Gt as ree,H as ye,Hi as be,Hn as v,Hr as xe,Ht as Se,I as Ce,Ii as iee,In as we,Ir as Te,It as aee,J as Ee,Ji as De,Jn as Oe,Jr as ke,Jt as Ae,K as je,Ki as oee,Kn as Me,Kr as Ne,Kt as Pe,L as see,Li as cee,Ln as Fe,Lr as Ie,Lt as Le,M as Re,Mi as lee,Mn as ze,Mr as uee,Mt as dee,N as Be,Ni as fee,Nn as Ve,Nr as pee,Nt as He,O as Ue,On as We,Or as Ge,Ot as mee,P as Ke,Pi as hee,Pn as qe,Pr as Je,Pt as gee,Q as Ye,Qi as y,Qn as Xe,Qr as _ee,Qt as vee,R as Ze,Ri as yee,Rn as Qe,Rr as $e,Rt as et,S as tt,Sa as bee,Si as nt,Sn as rt,Sr as xee,St as See,T as it,Ta as Cee,Ti as wee,Tn as at,Tr as ot,Tt as Tee,U as Eee,Ui as Dee,Un as st,Ur as Oee,Ut as ct,V as lt,Vi as ut,Vn as b,Vr as kee,Vt as x,W as dt,Wi as Aee,Wn as jee,Wr as ft,Wt as Mee,X as Nee,Xi as pt,Xn as S,Xr as C,Xt as Pee,Y as mt,Yi as ht,Yn as w,Yr as Fee,Yt as Iee,Z as gt,Zi as _t,Zn as vt,Zr as Lee,Zt as Ree,_ as yt,_a as zee,_i as bt,_n as Bee,_r as xt,_t as Vee,a as Hee,aa as Uee,ai as St,an as T,ar as Wee,at as Ct,b as wt,ba as Tt,bi as Et,bn as Dt,br as Ot,bt as Gee,c as kt,ca as At,ci as jt,cn as Mt,cr as Kee,ct as Nt,d as Pt,da as qee,di as Ft,dn as Jee,dr as It,dt as Yee,ea as E,ei as Lt,en as Xee,er as Zee,et as Rt,f as zt,fa as Bt,fi as Vt,fn as Ht,fr as Ut,ft as Qee,g as Wt,ga as $ee,gi as Gt,gn as Kt,gr as ete,gt as tte,h as qt,ha as Jt,hi as Yt,hn as Xt,hr as nte,ht as rte,i as ite,ia as ate,ii as ote,in as Zt,ir as ste,it as Qt,j as $t,jn as D,jr as cte,jt as lte,k as en,kn as tn,kr as nn,kt as ute,l as rn,la as dte,li as an,ln as on,lr as fte,lt as pte,m as sn,ma as mte,mi as hte,mn as cn,mr as ln,mt as gte,n as _te,na as vte,ni as yte,nn as un,nr as dn,nt as bte,o as fn,oa as xte,oi as pn,on as mn,or as Ste,ot as Cte,p as wte,pa as Tte,pi as O,pn as hn,pr as gn,pt as Ete,q as _n,qi as Dte,qn as k,qr as Ote,qt as vn,r as kte,ra as Ate,ri as A,rn as j,rr as jte,rt as yn,s as bn,sa as xn,si as Sn,sn as Cn,sr as wn,st as Mte,t as Nte,ta as Pte,ti as Fte,tn as Ite,tr as Tn,tt as En,u as Dn,ua as Lte,ui as On,un as kn,ur as An,ut as jn,v as Mn,va as Rte,vi as Nn,vn as Pn,vr as zte,vt as Bte,w as Fn,wa as Vte,wi as Hte,wn as In,wr as Ute,wt as Wte,x as Ln,xa as Rn,xi as zn,xn as M,xr as Bn,xt as Gte,y as Vn,ya as Hn,yi as Un,yn as Wn,yr as Gn,yt as Kte,z as Kn,zi as qn,zn as Jn,zr as Yn,zt as Xn}from"./capability-BAJBLwvF.js";import{visitorKeys as qte}from"oxc-parser";import*as Zn from"node:fs";import{readFileSync as Qn}from"node:fs";import*as $n from"node:path";import{analyze as Jte}from"eslint-scope";import{Features as Yte,transform as er}from"lightningcss";import{visit as tr}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as Xte}from"@shaderfrog/glsl-parser/index.js";const Zte={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},N=(e,t,n)=>k(e,t,n,Zte),nr=new Set([`Activity`,`unstable_Activity`]),Qte=e=>{let t=e.value;return t?y(t,`Literal`)?!0:y(t,`JSXExpressionContainer`)?y(t.expression,`Literal`):!1:!1},$te=(e,t)=>{A(e,e=>{if(!y(e,`JSXOpeningElement`)||!y(e.name,`JSXIdentifier`))return;let n=e.name.name;ae.test(n)&&t.add(n)})},ene=(e,t)=>{if(!e)return 0;let n=0;return A(e,e=>{y(e,`CallExpression`)&&N(e,dn,t)&&n++}),n},rr=new WeakMap,tne=e=>{let t=rr.get(e);if(t)return t;let n=new Map;A(e,e=>{if(y(e,`FunctionDeclaration`)&&e.id&&!n.has(e.id.name)){n.set(e.id.name,e.body);return}if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&!n.has(e.id.name)){let t=e.init;(y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`))&&n.set(e.id.name,t.body)}});let r={bodyByName:n,effectCountByName:new Map};return rr.set(e,r),r},nne=(e,t,n)=>{let r=tne(e),i=r.effectCountByName.get(t);if(i!==void 0)return i;let a=ene(r.bodyByName.get(t)??null,n);return r.effectCountByName.set(t,a),a},ir=x({id:`activity-wraps-effect-heavy-subtree`,title:`Activity wraps an effect-heavy subtree`,severity:`warn`,requires:[`react:19.2`],recommendation:"Check what's under `<Activity>`. Every hide and show rebuilds every Effect inside from scratch. Move subscriptions and effect-driven setState out of the Activity, or load the data above it.",create:e=>{let t=new Set,n=new Set;return{ImportDeclaration(e){if(e.source?.value===`react`)for(let r of e.specifiers??[]){if(y(r,`ImportNamespaceSpecifier`)){y(r.local,`Identifier`)&&n.add(r.local.name);continue}if(y(r,`ImportDefaultSpecifier`)){y(r.local,`Identifier`)&&n.add(r.local.name);continue}if(!y(r,`ImportSpecifier`))continue;let e=Lt(r);!e||!nr.has(e)||y(r.local,`Identifier`)&&t.add(r.local.name)}},JSXElement(r){let i=r.openingElement;if(!i)return;let a=i.name,o=!1;if(y(a,`JSXIdentifier`)?o=t.has(a.name):y(a,`JSXMemberExpression`)&&y(a.object,`JSXIdentifier`)&&n.has(a.object.name)&&y(a.property,`JSXIdentifier`)&&(o=nr.has(a.property.name)),!o)return;let s=null;for(let e of i.attributes??[])if(y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&e.name.name===`mode`){s=e;break}if(!s||Qte(s))return;let c=new Set;$te(r,c);for(let e of t)c.delete(e);if(c.size===0)return;let l=d(r);if(!l)return;let u=0,f=[];for(let t of c){let n=nne(l,t,e.scopes);n!==0&&(u+=n,f.push(`<${t}>`))}u!==0&&e.report({node:i,message:`Every hide and show rebuilds ${f.join(`, `)} from scratch because <Activity> wraps components with ${u} effect hook${u===1?``:`s`}.`})}}}}),ar=e=>!y(e,`CallExpression`)&&!y(e,`NewExpression`)?null:y(e.callee,`Identifier`)?e.callee.name:y(e.callee,`MemberExpression`)&&y(e.callee.property,`Identifier`)?e.callee.property.name:null,or=(e,t)=>{if(!y(e,`CallExpression`)&&!y(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`)?n:t?M(n,t):null},sr=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=O(r),y(r,`MemberExpression`)){r=r.object;continue}if(n&&y(r,`CallExpression`)){if(!y(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return y(r,`Identifier`)?r:null},cr=(e,t)=>sr(e,t)?.name??null,lr=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=ar(e);return n?typeof t==`string`?n===t:t.has(n):!1},rne=new Set([`useCallback`,`useEffectEvent`]),ine=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),ane=/^use\w*(?:Throttle|Debounce)/i,one=e=>{let t=ar(e);return t!==null&&ane.test(t)},sne=(e,t)=>{if(!N(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return y(n,`ArrayExpression`)&&(n.elements?.length??0)===0},cne=(e,t)=>y(e,`CallExpression`)?N(e,rne,t)||lr(e,ine)||sne(e,t)||one(e):y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&e.property.name===`current`,lne=(e,t,n)=>{let r=T(e,t);return!!(r?.initializer&&N(r.initializer,`useRef`,n))},ur=x({id:`advanced-event-handler-refs`,title:`Listener re-subscribes on every handler change`,tags:[`test-noise`],severity:`warn`,category:`Performance`,recommendation:"Store the handler in a ref and have the listener read `handlerRef.current()`. The subscription stays put while the latest handler still runs.",create:e=>({CallExpression(t){if(!N(t,dn,e.scopes)||(t.arguments?.length??0)<2)return;let n=or(t);if(!n||!y(n,`ArrowFunctionExpression`)&&!y(n,`FunctionExpression`))return;let r=t.arguments[1];if(!y(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)y(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(A(n.body,e=>{if(!y(e,`CallExpression`)||!y(e.callee,`MemberExpression`)||!y(e.callee.property,`Identifier`)||!ot.has(e.callee.property.name))return;let t=cr(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];y(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=T(t,a);s?.initializer&&cne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!lne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),dr=e=>{let t=e.value;return t&&y(t,`Literal`)&&typeof t.value==`string`?t.value:null},P=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!y(t,`JSXAttribute`))continue;let e=Cn(t.name);if(e&&e.toLowerCase()===n)return t}},fr=Object.freeze({}),pr=new WeakMap,une=e=>{if(!e)return fr;let t=pr.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:fr;return pr.set(e,r),r},dne=(e,t)=>{let n=j(e);if(t.polymorphicPropName){let n=P(e.attributes,t.polymorphicPropName);if(n){let e=dr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},mr=new WeakMap,hr=(e,t)=>{let n=mr.get(e);if(n&&n.settings===t)return n.elementType;let r=dne(e,une(t));return mr.set(e,{settings:t,elementType:r}),r},gr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},F=e=>e.some(e=>y(e,`JSXSpreadAttribute`)),_r=e=>{if(!e)return null;let t=O(e);return y(t,`Literal`)&&typeof t.value==`string`?t.value:y(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},I=e=>{if(!y(e,`JSXAttribute`))return null;let t=dr(e);if(t!==null)return t;let n=e.value;if(n&&y(n,`JSXExpressionContainer`)){let e=n.expression;if(y(e,`Literal`)&&typeof e.value==`string`)return e.value;if(y(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},vr=e=>e.attribute?I(e.attribute):_r(e.expression),yr=e=>{let t=e.expression??e.attribute?.value;return t?O(y(t,`JSXExpressionContainer`)?t.expression:t):null},br=(e,t)=>{if(hr(e,t).toLowerCase()===`input`&&vr(fn(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=fn(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=vr(n);if(e!==null)return e.length>0;let t=yr(n);if(y(t,`Literal`)&&t.value)return!0}let r=fn(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=vr(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=yr(r);return y(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},xr=e=>{if(y(e,`JSXIdentifier`))return e.name;if(y(e,`JSXMemberExpression`)){let t=xr(e.object);return t?`${t}.${e.property.name}`:null}return null},Sr=[`next/og`,`@vercel/og`,`satori`],Cr=new Set([`next/og`,`@vercel/og`]),wr=e=>{let t=e.parent;for(;t;){if(y(t,`ImportDeclaration`))return t;if(y(t,`Program`))return null;t=t.parent}return null},Tr=e=>typeof e.source.value==`string`?e.source.value:null,fne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!y(r,`ImportSpecifier`))return!1;let i=wr(r),a=i?Tr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return y(o,`Identifier`)&&o.name===t||y(o,`Literal`)&&o.value===t},pne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=wr(t);if(!n||Tr(n)!==`satori`)return!1;if(y(t,`ImportDefaultSpecifier`))return!0;if(!y(t,`ImportSpecifier`))return!1;let r=t.imported;return y(r,`Identifier`)&&r.name===`satori`||y(r,`Literal`)&&r.value===`satori`},Er=(e,t)=>{if(!y(e,`CallExpression`)&&!y(e,`NewExpression`))return!1;let n=O(e.callee);if(y(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(fne(e,`ImageResponse`,Cr)||pne(e)))}if(!y(n,`MemberExpression`)||C(n)!==`ImageResponse`||!y(n.object,`Identifier`))return!1;let r=t.referenceFor(n.object)?.resolvedSymbol??null;if(!r||r.kind!==`import`)return!1;let i=r.declarationNode;if(!y(i,`ImportNamespaceSpecifier`))return!1;let a=wr(i),o=a?Tr(a):null;return!!(o&&Cr.has(o))},mne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${be}$`),Dr=e=>e?mne.test($n.basename(e)):!1,Or=new WeakMap,hne=e=>e?Dr(ve(e)):!1,gne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},kr=(e,n,r,i,a)=>{if(!t(e))return;if(y(e,`ArrowFunctionExpression`)){let t=O(e.body);if(!y(t,`BlockStatement`)){jr(t,n,r,i,a);return}}let o=e.body;y(o,`BlockStatement`)&&A(o,e=>{if(e!==o&&t(e))return!1;y(e,`ReturnStatement`)&&e.argument&&jr(O(e.argument),n,r,i,a)})},Ar=(e,t,n)=>{let r=!1;return A(e,e=>{if(r)return!1;if(y(e,`JSXOpeningElement`)&&!n.has(e)&&xr(e.name)===t)return r=!0,!1}),r},_ne=(e,t,n,r,i)=>{let a=xr(n.name);if(!a||a.includes(`.`)||!gne(a)||i.has(a)||Ar(e,a,r))return;let o=T(n,a);o?.initializer&&(i.add(a),jr(O(o.initializer),e,t,r,i))},vne=(e,t)=>{let n=e.parent;for(;n;){if(Er(n,t))return!0;n=n.parent??null}return!1},yne=(e,t,n)=>{let r=!1;return A(e,e=>{if(r)return!1;if(y(e,`CallExpression`)&&y(e.callee,`Identifier`)&&e.callee.name===t&&!vne(e,n))return r=!0,!1}),r},bne=(e,t,n,r,i)=>{A(e,e=>{y(e,`JSXOpeningElement`)&&(r.add(e),_ne(t,n,e,r,i))})},jr=(e,n,r,i,a)=>{let o=O(e);if(y(o,`JSXElement`)||y(o,`JSXFragment`)){bne(o,n,r,i,a);return}if(t(o)){kr(o,n,r,i,a);return}if(y(o,`ConditionalExpression`)){jr(o.consequent,n,r,i,a),jr(o.alternate,n,r,i,a);return}if(y(o,`LogicalExpression`)){jr(o.left,n,r,i,a),jr(o.right,n,r,i,a);return}if(y(o,`CallExpression`)){let e=o.callee;if(t(e)){kr(e,n,r,i,a);return}if(!y(e,`Identifier`)||a.has(e.name)||Ar(n,e.name,i)||yne(n,e.name,r))return;let s=T(e,e.name);if(!s?.initializer||!t(O(s.initializer)))return;a.add(e.name),kr(O(s.initializer),n,r,i,a);return}if(y(o,`Identifier`)){if(a.has(o.name))return;a.add(o.name);let e=T(o,o.name);if(!e?.initializer)return;jr(O(e.initializer),n,r,i,a)}},xne=(e,t)=>{let n=Or.get(e);if(n)return n;let r=new WeakSet;return we(e,Sr)&&A(e,n=>{if(!(!y(n,`CallExpression`)&&!y(n,`NewExpression`))&&Er(n,t))for(let i of n.arguments)jr(i,e,t,r,new Set)}),Or.set(e,r),r},Mr=(e,t)=>{if(hne(e.filename))return!0;if(!t)return!1;let n=d(t);if(!n)return!1;let r=xne(n,e.scopes);return r.has(t)?!0:y(t,`JSXElement`)?r.has(t.openingElement):!1},Nr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],Pr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Fr=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),Ir=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),Lr=new Set([`add`,`clear`,`delete`,`set`]),Rr=new Set([`map`,`filter`,`forEach`,`flatMap`]),zr=new Set([`then`,`catch`,`finally`]),Br=new Set([`values`,`keys`,`entries`]),Sne=/\.browser\.[cm]?[jt]sx?$/,Cne=new Set(`vitest.jest.mocha.chai.sinon.expect.ava.uvu.node:test.bun:test.@testing-library/react.@testing-library/react-native.@testing-library/react-hooks.@testing-library/dom.@testing-library/user-event.@testing-library/jest-dom.@testing-library/vue.@testing-library/svelte.@testing-library/preact.@testing-library/cypress.playwright.playwright-core.@playwright/test.@playwright/experimental-ct-react.@playwright/experimental-ct-react17.cypress.@cypress/react.@cypress/react18.@storybook/test.@storybook/test-runner.@storybook/testing-library.@storybook/jest.puppeteer.puppeteer-core.webdriverio.@wdio/globals.@nuxt/test-utils`.split(`.`)),wne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],Tne=new Set(`render.rerender.renderHook.renderToString.renderToStaticMarkup.act.click.dblClick.dblclick.tripleClick.tap.press.longPress.type.clear.fill.focus.blur.hover.unhover.check.uncheck.selectOption.selectOptions.setChecked.setInputFiles.scrollIntoViewIfNeeded.dragTo.dragAndDrop.drop.evaluate.evaluateHandle.waitFor.waitForLoadState.waitForSelector.waitForURL.waitForResponse.waitForRequest.waitForEvent.waitForFunction.waitForElementToBeRemoved.goto.goBack.goForward.reload.screenshot.snapshot.toMatchSnapshot.toMatchInlineSnapshot.expect.expectTypeOf.step.describe.test.it.beforeAll.beforeEach.afterAll.afterEach.play.userEvent.screen.within`.split(`.`)),Ene=[`findBy`,`findAllBy`],Vr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.animate.transition.spring.tween.stagger.sequence.timeline.scrub.query.execute.exec.raw.transaction.$transaction.$executeRaw.$queryRaw.$executeRawUnsafe.$queryRawUnsafe.begin.commit.rollback.savepoint.lock.unlock.spawn.spawnSync.execSync.execFile.execFileSync.fork.$.sh.mkdir.rmdir.rename.rm.unlink.writeFile.appendFile.copyFile.navigate.goto.waitForNavigation.waitForURL.waitForLoadState.waitForResponse.waitForRequest.waitForSelector.waitForFunction.waitForEvent`.split(`.`)),Hr=e=>typeof e!=`string`||e.length===0?!1:Cne.has(e)?!0:wne.some(t=>e.startsWith(t)),Dne=new Set([`it`,`test`]),One=new Set([`concurrent`,`only`,`skip`]),kne=new Set([`doMock`,`mock`,`unstable_mockModule`]),Ane=new Set([`jest`,`vi`]),jne=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),Mne=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),Nne=e=>{if(!e)return!1;let t=`/${e.replaceAll(`\\`,`/`)}`,n=t.slice(t.lastIndexOf(`/`)+1);return n.includes(`.test.`)||n.includes(`.spec.`)||t.includes(`/__tests__/`)||t.includes(`/__test__/`)||t.includes(`/__mocks__/`)},Pne=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=Ve(e,e.name);return!!(r&&jne.has(r.source)&&r.exportedName&&t.has(r.exportedName))},Fne=(e,t,n)=>Nne(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),Ur=(e,t,n)=>Pne(e,t,n)||Fne(e,t,n),Wr=e=>{let t=O(e);if(y(t,`Identifier`))return t;if(y(t,`MemberExpression`)){let e=C(t);return!e||!One.has(e)?null:Wr(t.object)}let n=y(t,`CallExpression`)?O(t.callee):y(t,`TaggedTemplateExpression`)?O(t.tag):null;return!y(n,`MemberExpression`)||C(n)!==`each`?null:Wr(n.object)},Ine=(e,t)=>{let n=v(e),r=n.parent;if(!r||!y(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Wr(r.callee);return!!(i&&Ur(i,Dne,t))},Lne=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!y(r,`Literal`)||typeof r.value!=`string`)return!1;let i=O(e.callee);if(!y(i,`MemberExpression`))return!1;let a=C(i);if(!a||!kne.has(a))return!1;let o=O(i.object);return y(o,`Identifier`)&&Ur(o,Ane,n)},Rne=(e,n)=>{let r=e.parent;for(;r;){if(t(r)){let e=v(r),t=e.parent;if(t&&y(t,`CallExpression`)&&Lne(t,e,n))return!0}r=r.parent}return!1},zne=(e,n,r)=>{let i=e.parent,a=null;for(i&&y(i,`JSXElement`)&&i.openingElement===e&&(i=i.parent);i&&i!==n;){if(t(i))return!1;if(y(i,`JSXAttribute`)&&(a=i),y(i,`JSXElement`)){let e=i.openingElement.name;if(y(e,`JSXIdentifier`)){let t=r.scopes.referenceFor(e),n=Ve(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&n&&!Mne.has(n.source)&&!Hr(n.source)&&a?.parent===i.openingElement&&y(a.name,`JSXIdentifier`)&&a.name.name!==`children`)return!0}a=null}i=i.parent}return!1},Gr=(e,t)=>{if(Rne(e,t))return!0;let n=b(e);return!n||!Ine(n,t)?!1:zne(e,n,t)},Bne=e=>{let t=e.parent;return t?y(t,`JSXSpreadAttribute`)||y(t,`SpreadElement`)?t.argument===e:y(t,`VariableDeclarator`)&&t.init===e:!1},Kr=(e,t,n,r,i)=>{let a=O(e);if(r&&y(a,`Identifier`)){let e=r.symbolFor(a);if(!e||e.kind!==`const`||!e.initializer||i.has(e.id)||e.references.some(e=>e.flag!==`read`||!Bne(e.identifier)))return!0;i.add(e.id);let o=Kr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!y(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(y(e,`SpreadElement`)){if(Kr(e.argument,t,n,r,i))return!0;continue}if(!y(e,`Property`))return!0;let a=S(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},qr=(e,t,n=!0,r)=>Kr(e,t,n,r,new Set),L=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(y(a,`JSXSpreadAttribute`)){if(qr(a.argument,t,n))return null;continue}if(!y(a,`JSXAttribute`))continue;let o=Cn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Jr=(e,t)=>e.some(e=>y(e,`JSXSpreadAttribute`)&&qr(e.argument,t,!1)),Yr=e=>{let t=O(e);return y(t,`UnaryExpression`)&&t.operator===`void`&&y(O(t.argument),`Literal`)},Xr=(e,t={})=>{if(!e?.value)return!1;let n=I(e);if(n!==null)return n.trim().length>0;if(!y(e.value,`JSXExpressionContainer`))return!0;let r=O(e.value.expression);return y(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:y(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Yr(r)},Vne=(e,t,n)=>{let{openingElement:r}=e;if(r===n||br(r,t))return!1;if(y(r.name,`JSXMemberExpression`)||y(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=L(r.attributes,`aria-label`,!1);if(Xr(i,{booleanValuesRender:!0})||!i&&Jr(r.attributes,`aria-label`))return!0;if(y(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=L(r.attributes,`alt`,!1);return Xr(e)||!e&&Jr(r.attributes,`alt`)}return Qr(e,t,n)},Zr=(e,t,n)=>{for(let r of e){if(y(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(y(r,`JSXElement`)){if(Vne(r,t,n))return!0;continue}if(y(r,`JSXFragment`)){if(Zr(r.children,t,n))return!0;continue}if(y(r,`JSXExpressionContainer`)){let e=O(r.expression);if(y(e,`JSXEmptyExpression`))continue;if(y(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Yr(e)||y(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Qr=(e,t,n)=>{if(Zr(e.children,t,n))return!0;let r=L(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(Xr(r)||!r&&Jr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=L(e.openingElement.attributes,`children`,!1);return!!(Xr(i)||!i&&Jr(e.openingElement.attributes,`children`))},Hne=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Une=e=>!!(y(e,`Identifier`)&&e.name===`undefined`||y(e,`Literal`)&&e.value===null),$r=e=>Une(e)?!0:y(e,`ConditionalExpression`)?$r(e.consequent)||$r(e.alternate):!1,ei=e=>{if(!e.value)return!1;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!$r(t):!0}return!0},Wne=e=>{if(!e)return!1;let t=dr(e);return t===`presentation`||t===`none`},ti=e=>{if(!e.value)return!1;if(y(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:y(t,`Identifier`)&&t.name===`undefined`?!1:y(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Gne=(e,t,n)=>{let r=P(e.attributes,`alt`);if(r){ei(r)||n.report({node:t,message:'Screen reader users cannot access this image because its `alt` is empty or invalid. Add a short description, or `alt=""` if it is decorative.'});return}if(Wne(P(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=P(e.attributes,`aria-label`);if(i){ti(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=P(e.attributes,`aria-labelledby`);if(a){ti(a)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-labelledby` has no value, so point it at the id of the text that labels this."});return}n.report({node:t,message:'Screen reader users cannot access this image without `alt`. Add `alt="image_description"`, or `alt=""` if it is decorative.'})},Kne=(e,t,n,r)=>{let i=P(e.attributes,`aria-label`),a=P(e.attributes,`aria-labelledby`),o=i&&ti(i)||a&&ti(a),s=P(e.attributes,`title`),c=s?dr(s):null,l=!!(c&&c.length>0);o||l||Qr(t,r.settings)||r.report({node:n,message:"Screen reader users cannot use this `<object>` because assistive tech cannot describe it, so add `alt`, `aria-label`, `aria-labelledby`, `title`, or inner fallback text."})},qne=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&ti(r)||i&&ti(i))return;let a=P(e.attributes,`alt`);(!a||!ei(a))&&n.report({node:t,message:"Blind users can't use this `<area>` of the image map because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},Jne=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&ti(r)||i&&ti(i))return;let a=P(e.attributes,`alt`);(!a||!ei(a))&&n.report({node:t,message:"Blind users can't use this image button because screen readers can't describe it, so add `alt`, `aria-label`, or `aria-labelledby`."})},ni=x({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{if(Mr(e))return Ae;let t=Hne(e.settings),n=!t.elements||t.elements.includes(`img`),r=!t.elements||t.elements.includes(`object`),i=!t.elements||t.elements.includes(`area`),a=!t.elements||t.elements.includes(`input[type="image"]`),o=new Set(t.img??[]),s=new Set(t.object??[]),c=new Set(t.area??[]),l=new Set(t[`input[type="image"]`]??[]),u=gr(e.settings);return{JSXOpeningElement(t){if(Gr(t,e))return;if(!u&&y(t.name,`JSXIdentifier`)){let e=t.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!o.has(e)&&!s.has(e)&&!c.has(e)&&!l.has(e))return}if(Mr(e,t)||F(t.attributes))return;let d=hr(t,e.settings);if(n&&(d===`img`||o.has(d))){if(br(t,e.settings))return;Gne(t,t,e);return}if(r&&(d===`object`||s.has(d))){let n=t.parent;n&&y(n,`JSXElement`)&&Kne(t,n,t,e);return}if(i&&(d===`area`||c.has(d))){qne(t,t,e);return}a&&(d.toLowerCase()===`input`&&(()=>{let e=P(t.attributes,`type`);return e?dr(e)?.toLowerCase()===`image`:!1})()||l.has(d))&&Jne(t,t,e)}}}}),Yne=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Xne=[`click here`,`here`,`link`,`a link`,`learn more`],Zne=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Xne}},Qne=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),$ne=e=>y(e,`Literal`)&&typeof e.value==`string`?e.value:y(e,`TemplateLiteral`)?In(e):null,ri=(e,t)=>{let n=e.openingElement,r=P(n.attributes,`aria-label`);if(r){let e=dr(r);if(e!==null)return e}if(hr(n,t)===`img`){let e=P(n.attributes,`alt`);if(e){let t=dr(e);if(t!==null)return t}}if(br(n,t))return null;let i=[];for(let n of e.children){let e=n;if(y(e,`JSXText`))i.push(e.value);else if(y(e,`JSXElement`)){let n=ri(e,t);n!==null&&i.push(n)}else if(y(e,`JSXExpressionContainer`)){let t=$ne(e.expression);t!==null&&i.push(t)}}return i.join(``)},ii=x({id:`anchor-ambiguous-text`,title:`Ambiguous link text`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Name where a link goes. Avoid 'click here', 'learn more', and 'link'.`,category:`Accessibility`,create:e=>{if(ct(e.filename))return Ae;let t=Zne(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(hr(t.openingElement,e.settings)!==`a`)return;let r=ri(t,e.settings);if(r===null||r.trim().length===0)return;let i=Qne(r);n.has(i)&&e.report({node:t.openingElement.name,message:Yne(i)})}}}}),ai=new Set(`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.complementary.contentinfo.definition.deletion.dialog.directory.doc-abstract.doc-acknowledgments.doc-afterword.doc-appendix.doc-backlink.doc-biblioentry.doc-bibliography.doc-biblioref.doc-chapter.doc-colophon.doc-conclusion.doc-cover.doc-credit.doc-credits.doc-dedication.doc-endnote.doc-endnotes.doc-epigraph.doc-epilogue.doc-errata.doc-example.doc-footnote.doc-foreword.doc-glossary.doc-glossref.doc-index.doc-introduction.doc-noteref.doc-notice.doc-pagebreak.doc-pagelist.doc-part.doc-preface.doc-prologue.doc-pullquote.doc-qna.doc-subtitle.doc-tip.doc-toc.document.emphasis.feed.figure.form.generic.graphics-document.graphics-object.graphics-symbol.grid.gridcell.group.heading.img.insertion.link.list.listbox.listitem.log.main.mark.marquee.math.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.meter.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.region.row.rowgroup.rowheader.scrollbar.search.searchbox.separator.slider.spinbutton.status.strong.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem`.split(`.`)),oi=new Set(`button.checkbox.columnheader.combobox.grid.gridcell.link.listbox.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.scrollbar.searchbox.separator.slider.spinbutton.switch.tab.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`)),ere=new Set(`alert.alertdialog.application.article.banner.blockquote.caption.cell.complementary.contentinfo.definition.deletion.dialog.directory.document.feed.figure.form.group.heading.img.insertion.list.listitem.log.main.marquee.math.navigation.note.paragraph.progressbar.region.rowgroup.search.status.table.tabpanel.term.time.timer.tooltip`.split(`.`)),tre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),si=new Set([`presentation`,`none`]),nre=e=>e.trim().split(/\s+/).find(e=>ai.has(e))===`link`,rre=e=>{let t=e.parent;for(;t;){if(y(t,`JSXAttribute`)){let e=t.parent;return e&&y(e,`JSXOpeningElement`)?xr(e.name)===`Trans`:!1}t=t.parent??null}return!1},ci=x({id:`anchor-has-content`,title:`Anchor has no content`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Put readable text inside every link.`,category:`Accessibility`,create:e=>{let t=ct(e.filename);return{JSXElement(n){if(t)return;let r=n.openingElement;if(hr(r,e.settings)!==`a`)return;let i=P(r.attributes,`href`),a=P(r.attributes,`role`),o=a?rn(a,e.scopes):[],s=o===null||o.some(e=>nre(e));if(!(!i&&!s)&&!br(r,e.settings)&&!Qr(n,e.settings)){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(P(r.attributes,e))return;rre(n)||e.report({node:r.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),li=[`href`],ui=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return li;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return li;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?li:r},di="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",ire=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:ui(e)}},are=e=>{let t=e.parent;if(!t||!y(t,`JSXElement`))return!1;let n=t.parent;if(!n||!y(n,`JSXElement`))return!1;let r=xr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},ore=e=>!!P(e.attributes,`role`)&&!!P(e.attributes,`tabindex`)&&(!!P(e.attributes,`onkeydown`)||!!P(e.attributes,`onkeyup`)),sre=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},cre=e=>{if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Identifier`)&&t.name===`undefined`||y(t,`Literal`)&&t.value===null)return!0}return!!y(e,`JSXFragment`)},fi=x({id:`anchor-is-valid`,title:`Anchor used as a button`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Give links a real destination. Use `<button>` for in-page actions.",category:`Accessibility`,create:e=>{let t=ire(e.settings),n=gr(e.settings),r=ct(e.filename);return{JSXOpeningElement(i){if(r)return;let a=hr(i,e.settings);if(!n&&a!==`a`||a!==`a`)return;let o;for(let e of t.hrefAttributeNames)if(o=P(i.attributes,e),o)break;if(o){if(!o.value){e.report({node:i.name,message:di});return}let n=rn(o,e.scopes);if(n===null?cre(o.value):n.length>0&&n.every(e=>sre(e,t.validHrefs))){let t=!!P(i.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:i.name,message:t?"Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.":di})}return}F(i.attributes)||are(i)||ore(i)||e.report({node:i.name,message:"Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions)."})}}}}),pi=e=>{let t=e?.[`react-doctor`];return typeof t!=`object`||!t||Array.isArray(t)?null:t},mi=(e,t)=>Object.getOwnPropertyDescriptor(e,t)?.value,hi=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);return typeof r==`string`?r:void 0},lre=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);return typeof r==`number`&&Number.isFinite(r)?r:void 0},gi=(e,t)=>{let n=pi(e);if(!n)return;let r=mi(n,t);if(Array.isArray(r))return r.filter(e=>typeof e==`string`&&e.length>0)},_i=(e,t)=>gi(e,t)??[],vi=(e,t)=>_i(e,`capabilities`).includes(t),yi=(e,t)=>{let n=pi(e);return!n||mi(n,`capabilities`)===void 0?!0:vi(e,t)},bi=x({id:`anchor-target-exists`,title:`Fragment link target is missing`,severity:`warn`,recommendation:`Add an element with the referenced id, or update the fragment link to point to an existing target.`,create:e=>{if(ct(e.filename))return Ae;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(hr(n,e.settings)!==`a`)return;let r=null;for(let t of ui(e.settings))if(r=L(n.attributes,t,!1),r)break;if(!r)return;let i=I(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=Hee({configuredRootDirectory:hi(e.settings,`rootDirectory`),currentFilePath:e.filename??``,currentProgramNode:n,currentScopes:e.scopes});if(r)for(let n of t)r.has(n.targetId)||e.report({node:n.hrefAttribute,message:`This fragment link points to "#${n.targetId}", but no matching static id was found in the project.`})}}}}),ure=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),xi=new Set(`a.abbr.acronym.address.applet.area.article.aside.audio.b.base.basefont.bdi.bdo.bgsound.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.command.content.data.datalist.dd.del.details.dfn.dialog.dir.div.dl.dt.element.em.embed.fieldset.figcaption.figure.font.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.image.img.input.ins.isindex.kbd.keygen.label.legend.li.link.listing.main.map.mark.marquee.math.menu.menuitem.meta.meter.multicol.nav.nextid.nobr.noembed.noframes.noscript.object.ol.optgroup.option.output.p.param.picture.plaintext.pre.progress.q.rb.rbc.rp.rt.rtc.ruby.s.samp.script.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.tt.u.ul.var.video.wbr.xmp`.split(`.`)),Si=new Set(`abbr.address.article.aside.blockquote.br.caption.code.dd.del.details.dfn.dialog.dir.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.hr.html.iframe.img.ins.label.legend.li.main.mark.marquee.menu.meter.nav.ol.optgroup.output.p.pre.progress.ruby.section.strong.sub.sup.table.tbody.tfoot.thead.time.ul`.split(`.`)),Ci=e=>e.kind!==`const`||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,dre=new Set([``,`plaintext-only`,`true`]),wi={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Ti={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},Ei={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Di={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},fre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),Oi=(e,t,n)=>{let r=O(e);if(y(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?wi:Ti;if(typeof r.value==`string`){let e=r.value.toLowerCase();return dre.has(e)?wi:e===`false`?Ti:Ei}return Ei}if(y(r,`ConditionalExpression`))return fre(Oi(r.consequent,t,n),Oi(r.alternate,t,n));if(y(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Di;let i=Ci(e);if(!i)return Di;let a=new Set(n);return a.add(e.id),Oi(i,t,a)}return Di},ki=(e,t)=>{let n=P(e.attributes,`contenteditable`);return n?n.value?y(n.value,`Literal`)?Oi(n.value,t,new Set):y(n.value,`JSXExpressionContainer`)?Oi(n.value.expression,t,new Set):Di:wi:null},pre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(y(r,`JSXElement`)){let e=r.openingElement;if(!xi.has(hr(e,n)))return!1;let i=ki(e,t);if(i){if(i.canBeEnabled&&!i.canBeDisabled&&!i.canBeInherited)return!0;if(!(i.canBeInherited&&!i.canBeDisabled&&!i.canBeEnabled))return!1}}r=r.parent}return!1},Ai=(e,t,n)=>ki(e,t)?.canBeEnabled?!pre(e,t,n):!1,ji=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=P(t.attributes,`type`);if(e){let t=dr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return P(t.attributes,`href`)!==void 0;case`img`:return P(t.attributes,`usemap`)!==void 0;default:return!1}},Mi=e=>{if(!e)return null;if(y(e,`Literal`)){if(typeof e.value==`number`)return e.value;if(typeof e.value==`string`){let t=Number(e.value);return Number.isFinite(t)?t:null}}if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Literal`)){if(typeof t.value==`number`)return t.value;if(typeof t.value==`string`){let e=Number(t.value);return Number.isFinite(e)?e:null}}if(y(t,`UnaryExpression`)&&t.operator===`-`&&y(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(y(t,`TemplateLiteral`)){let e=In(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(y(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return y(t.test,`Literal`)?Mi(e(t.test.value?t.consequent:t.alternate)):Mi(e(t.consequent))}}return null},Ni="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",Pi=x({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!P(t.attributes,`aria-activedescendant`))return;let n=hr(t,e.settings);if(!xi.has(n))return;let r=P(t.attributes,`tabIndex`);if(r){let n=Mi(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:Ni});return}ji(n,t)||Ai(t,e.scopes,e.settings)||e.report({node:t.name,message:Ni})}})}),mre=[`aria-label`,`aria-labelledby`,`alt`,`title`],Fi=(e,t)=>{let n=L(e.attributes,t,!1);if(!n)return!1;let r=I(n);return r===null?null:r.trim().length>0},Ii=x({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(F(n.attributes))return;if(Fi(n,`aria-brailleroledescription`)===!0&&Fi(n,`aria-roledescription`)===!1){let t=L(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(Fi(n,`aria-braillelabel`)!==!0||Qr(t,e.settings)||mre.map(e=>Fi(n,e)).some(e=>e===!0||e===null))return;let r=L(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),Li=new Map([[`aria-activedescendant`,{type:`id`}],[`aria-atomic`,{type:`boolean`}],[`aria-autocomplete`,{type:`token`,allowedTokens:[`inline`,`list`,`both`,`none`]}],[`aria-braillelabel`,{type:`string`}],[`aria-brailleroledescription`,{type:`string`}],[`aria-busy`,{type:`boolean`}],[`aria-checked`,{type:`tristate`}],[`aria-colcount`,{type:`integer`}],[`aria-colindex`,{type:`integer`}],[`aria-colspan`,{type:`integer`}],[`aria-controls`,{type:`idlist`}],[`aria-current`,{type:`token`,allowedTokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]}],[`aria-describedby`,{type:`idlist`}],[`aria-description`,{type:`string`}],[`aria-details`,{type:`id`}],[`aria-disabled`,{type:`boolean`}],[`aria-dropeffect`,{type:`tokenlist`,allowedTokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]}],[`aria-errormessage`,{type:`id`}],[`aria-expanded`,{type:`true-false-undefined`}],[`aria-flowto`,{type:`idlist`}],[`aria-grabbed`,{type:`true-false-undefined`}],[`aria-haspopup`,{type:`token`,allowedTokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]}],[`aria-hidden`,{type:`true-false-undefined`}],[`aria-invalid`,{type:`token`,allowedTokens:[`grammar`,`false`,`spelling`,`true`]}],[`aria-keyshortcuts`,{type:`string`}],[`aria-label`,{type:`string`}],[`aria-labelledby`,{type:`idlist`}],[`aria-level`,{type:`integer`}],[`aria-live`,{type:`token`,allowedTokens:[`assertive`,`off`,`polite`]}],[`aria-modal`,{type:`boolean`}],[`aria-multiline`,{type:`boolean`}],[`aria-multiselectable`,{type:`boolean`}],[`aria-orientation`,{type:`token`,allowedTokens:[`horizontal`,`undefined`,`vertical`]}],[`aria-owns`,{type:`idlist`}],[`aria-placeholder`,{type:`string`}],[`aria-posinset`,{type:`integer`}],[`aria-pressed`,{type:`tristate`}],[`aria-readonly`,{type:`boolean`}],[`aria-relevant`,{type:`tokenlist`,allowedTokens:[`additions`,`all`,`removals`,`text`]}],[`aria-required`,{type:`boolean`}],[`aria-roledescription`,{type:`string`}],[`aria-rowcount`,{type:`integer`}],[`aria-rowindex`,{type:`integer`}],[`aria-rowspan`,{type:`integer`}],[`aria-selected`,{type:`true-false-undefined`}],[`aria-setsize`,{type:`integer`}],[`aria-sort`,{type:`token`,allowedTokens:[`ascending`,`descending`,`none`,`other`]}],[`aria-valuemax`,{type:`number`}],[`aria-valuemin`,{type:`number`}],[`aria-valuenow`,{type:`number`}],[`aria-valuetext`,{type:`string`}]]),hre=e=>Li.has(e),gre=e=>`Screen reader users get no help from \`${e}\` because it isn't a real ARIA attribute, so fix the spelling against the WAI-ARIA list.`,Ri=x({id:`aria-props`,title:`Invalid ARIA attribute`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Only use `aria-*` attributes that actually exist.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`))return;let n=Cn(t.name);!n||!n.startsWith(`aria-`)||hre(n)||e.report({node:t.name,message:gre(n)})}})}),_re={"aria-activedescendant":{kind:`id`},"aria-details":{kind:`id`},"aria-errormessage":{kind:`id`},"aria-atomic":{kind:`boolean`},"aria-busy":{kind:`boolean`},"aria-disabled":{kind:`boolean`},"aria-modal":{kind:`boolean`},"aria-multiline":{kind:`boolean`},"aria-multiselectable":{kind:`boolean`},"aria-readonly":{kind:`boolean`},"aria-required":{kind:`boolean`},"aria-braillelabel":{kind:`string`},"aria-brailleroledescription":{kind:`string`},"aria-description":{kind:`string`},"aria-keyshortcuts":{kind:`string`},"aria-label":{kind:`string`},"aria-placeholder":{kind:`string`},"aria-roledescription":{kind:`string`},"aria-valuetext":{kind:`string`},"aria-checked":{kind:`tristate`},"aria-pressed":{kind:`tristate`},"aria-colcount":{kind:`integer`},"aria-colindex":{kind:`integer`},"aria-colspan":{kind:`integer`},"aria-level":{kind:`integer`},"aria-posinset":{kind:`integer`},"aria-rowcount":{kind:`integer`},"aria-rowindex":{kind:`integer`},"aria-rowspan":{kind:`integer`},"aria-setsize":{kind:`integer`},"aria-controls":{kind:`id-list`},"aria-describedby":{kind:`id-list`},"aria-flowto":{kind:`id-list`},"aria-labelledby":{kind:`id-list`},"aria-owns":{kind:`id-list`},"aria-expanded":{kind:`optional-boolean`},"aria-grabbed":{kind:`optional-boolean`},"aria-hidden":{kind:`optional-boolean`},"aria-selected":{kind:`optional-boolean`},"aria-valuemax":{kind:`number`},"aria-valuemin":{kind:`number`},"aria-valuenow":{kind:`number`},"aria-autocomplete":{kind:`token`,tokens:[`none`,`inline`,`list`,`both`]},"aria-current":{kind:`token`,tokens:[`page`,`step`,`location`,`date`,`time`,`true`,`false`]},"aria-haspopup":{kind:`token`,tokens:[`false`,`true`,`menu`,`listbox`,`tree`,`grid`,`dialog`]},"aria-invalid":{kind:`token`,tokens:[`grammar`,`false`,`spelling`,`true`]},"aria-live":{kind:`token`,tokens:[`assertive`,`off`,`polite`]},"aria-orientation":{kind:`token`,tokens:[`horizontal`,`undefined`,`vertical`]},"aria-sort":{kind:`token`,tokens:[`ascending`,`descending`,`none`,`other`]},"aria-dropeffect":{kind:`token-list`,tokens:[`copy`,`execute`,`link`,`move`,`none`,`popup`]},"aria-relevant":{kind:`token-list`,tokens:[`additions`,`all`,`removals`,`text`]}},vre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:return`'true' or 'false'`;case`tristate`:return`'true', 'false', or 'mixed'`;case`string`:return`a string value`;case`integer`:return`an integer value`;case`number`:return`a number value`;case`id`:return`a single element ID`;case`id-list`:return`a space-separated list of element IDs`;case`token`:return`one of: ${e.tokens.join(`, `)}`;case`token-list`:return`a space-separated list of: ${e.tokens.join(`, `)}`}},zi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${vre(t)}.`,yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},Bi=e=>{if(y(e,`Literal`))return typeof e.value==`boolean`?e.value:typeof e.value==`string`?e.value.length>0:typeof e.value==`number`?e.value!==0&&!Number.isNaN(e.value):e.value===null?!1:null;if(y(e,`TemplateLiteral`)){let t=In(e);return t===null?null:t.length>0}if(y(e,`UnaryExpression`)&&e.operator===`!`){let t=Bi(e.argument);return t===null?null:!t}return null},bre=e=>{if(y(e,`Literal`))return!0;if(y(e,`JSXExpressionContainer`)){let t=e.expression;return y(t,`Literal`)?t.value!==null:y(t,`TemplateLiteral`)?!0:y(t,`UnaryExpression`)&&t.operator===`!`?Bi(t.argument)!==null:!1}return!1},Vi=(e,t)=>{if(y(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(y(e,`JSXExpressionContainer`)){let n=e.expression;if(y(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(y(n,`TemplateLiteral`))return In(n)?.toLowerCase()??null;if(t&&y(n,`UnaryExpression`)&&n.operator===`!`){let e=Bi(n.argument);return e===null?null:String(!e)}}return null},Hi=e=>{if(!y(e,`JSXExpressionContainer`))return!1;let t=e.expression;return y(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},xre=(e,t)=>{if(!bre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=Vi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=Vi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return Hi(t)?!0:Vi(t,!1)!==null;case`integer`:case`number`:{let e=Vi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(y(t,`JSXExpressionContainer`)){let e=t.expression;if(y(e,`Literal`)&&typeof e.value==`number`||y(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&y(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(Hi(t))return!0;let e=Vi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=Vi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=Vi(t,!0);if(n===null)return!1;let r=n.split(/\s+/).filter(e=>e.length>0);return r.length===0?!1:r.every(t=>e.tokens.includes(t))}}},Ui=x({id:`aria-proptypes`,title:`Invalid ARIA attribute value`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give each `aria-*` attribute the kind of value it expects.",category:`Accessibility`,create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`))return;let n=Cn(t.name);if(!n)return;let r=n.toLowerCase(),i=_re[r];if(i){if(!t.value){yre(i)||e.report({node:t,message:zi(r,i)});return}xre(i,t.value)||e.report({node:t,message:zi(r,i)})}}})}),Wi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Sre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??!0}},Gi=x({id:`aria-role`,title:`Invalid ARIA role`,tags:[`react-jsx-only`],severity:`error`,recommendation:`Use a real, non-abstract ARIA role so assistive tech can expose the element correctly.`,category:`Accessibility`,create:e=>{let t=Sre(e.settings);return{JSXOpeningElement(n){let r=P(n.attributes,`role`);if(!r)return;let i=hr(n,e.settings);if(t.ignoreNonDOM&&!xi.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:Wi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!ai.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:Wi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:Wi(``)});return}if(y(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:Wi(``)});return}a([o.value]);return}if(y(o,`JSXExpressionContainer`)){let t=o.expression;if(y(t,`Literal`)&&t.value===null){e.report({node:r,message:Wi(``)});return}if(y(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:Wi(``)});return}let n=rn(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:Wi(``)})}}}}),Cre=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,Ki=x({id:`aria-unsupported-elements`,title:`ARIA on unsupported element`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Do not put `role` or `aria-*` on reserved HTML elements.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){let n=hr(t,e.settings);if(ure.has(n))for(let r of t.attributes){if(!y(r,`JSXAttribute`)||!y(r.name,`JSXIdentifier`))continue;let t=Cn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:Cre(n,t)})}}})}),qi=(e,t)=>{if(e){if(y(e,`Identifier`)){t.add(e.name);return}if(y(e,`AssignmentPattern`)){qi(e.left,t);return}if(y(e,`RestElement`)){qi(e.argument,t);return}if(y(e,`ArrayPattern`)){for(let n of e.elements??[])qi(n,t);return}if(y(e,`ObjectPattern`))for(let n of e.properties??[]){if(y(n,`RestElement`)){qi(n.argument,t);continue}y(n,`Property`)&&qi(n.value,t)}}},Ji=(e,t,n)=>{if(e&&!y(e,`Identifier`)){if(y(e,`AssignmentPattern`)){Yi(e.right,t,n),Ji(e.left,t,n);return}if(y(e,`RestElement`)){Ji(e.argument,t,n);return}if(y(e,`ArrayPattern`)){for(let r of e.elements??[])Ji(r,t,n);return}if(y(e,`ObjectPattern`))for(let r of e.properties??[]){if(y(r,`RestElement`)){Ji(r.argument,t,n);continue}y(r,`Property`)&&(r.computed&&Yi(r.key,t,n),Ji(r.value,t,n))}}},wre=(e,t,n)=>{if(!y(e,`FunctionDeclaration`)&&!y(e,`FunctionExpression`)&&!y(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])qi(t,r);for(let n of e.params??[])Ji(n,t,r);Yi(e.body,t,r)},Yi=(e,t,n)=>{if(!e)return;if(y(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(y(e,`MemberExpression`)){Yi(e.object,t,n),e.computed&&Yi(e.property,t,n);return}if(y(e,`Property`)){e.computed&&Yi(e.key,t,n),Yi(e.value,t,n);return}if(y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`)){wre(e,t,n);return}if(y(e,`TSAsExpression`)||y(e,`TSSatisfiesExpression`)||y(e,`TSTypeAssertion`)||y(e,`TSNonNullExpression`)||y(e,`TSInstantiationExpression`)){Yi(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||Pte.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)E(e)&&Yi(e,t,n);else E(i)&&Yi(i,t,n)}},Xi=(e,t)=>Yi(e,t,new Set),Zi=e=>{if(!e)return!1;let t=!1;return A(e,e=>{if(t||y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`))return!1;if(y(e,`AwaitExpression`))return t=!0,!1}),t},Qi=e=>{let t=e;y(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!y(n,`Property`)||n.value!==t||!n.parent||!y(n.parent,`ObjectPattern`)?null:S(n,{allowComputedString:!0})},Tre=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),$i=(e,t)=>{let n=O(e);return y(n,`Literal`)?!0:y(n,`Identifier`)?t.has(n.name):y(n,`BinaryExpression`)||y(n,`LogicalExpression`)?$i(n.left,t)&&$i(n.right,t):y(n,`UnaryExpression`)?n.operator!==`delete`&&$i(n.argument,t):y(n,`ConditionalExpression`)?$i(n.test,t)&&$i(n.consequent,t)&&$i(n.alternate,t):y(n,`TemplateLiteral`)?n.expressions.every(e=>$i(e,t)):!1},ea=(e,t,n)=>{let r=O(e);if(!y(r,`CallExpression`)||!r.arguments.every(e=>!y(e,`SpreadElement`)&&$i(e,t)))return!1;let i=O(r.callee);if(!y(i,`MemberExpression`)||C(i)!==`resolve`)return!1;let a=O(i.object);return y(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},Ere=(e,t,n)=>!y(e,`ExpressionStatement`)||!y(e.expression,`AwaitExpression`)?!1:ea(e.expression.argument,t,n),Dre=(e,t)=>{if(!y(e,`ExpressionStatement`)||!y(e.expression,`AssignmentExpression`)||!Tre.has(e.expression.operator))return!1;let n=O(e.expression.left);if(!y(n,`MemberExpression`)||C(n)===null)return!1;let r=O(n.object);return y(r,`Identifier`)&&t.has(r.name)&&y(O(e.expression.right),`Literal`)},Ore=(e,n)=>{if(!t(e))return!1;let r=new Set;for(let t of e.params){if(!y(t,`Identifier`))return!1;r.add(t.name)}if(!e.async){if(!y(e.body,`BlockStatement`))return ea(e.body,r,n);if(e.body.body.length!==1)return!1;let[t]=e.body.body;return!!(y(t,`ReturnStatement`)&&t.argument&&ea(t.argument,r,n))}if(!y(e.body,`BlockStatement`))return $i(e.body,r);let i=e.body.body;for(let e=0;e<i.length;e++){let t=i[e],a=e===i.length-1;if(!Ere(t,r,n)&&!(y(t,`ExpressionStatement`)&&$i(t.expression,r)))return Dre(t,r)?a:!y(t,`ReturnStatement`)||!a?!1:!t.argument||$i(t.argument,r)||ea(t.argument,r,n)}return!0},kre=(e,t)=>y(e,`Property`)?_(e,t,{allowConstTemplateLiteral:!0}):null,Are=(e,t)=>y(e,`MemberExpression`)?_(e,t,{allowConstTemplateLiteral:!0}):null,ta=(e,n,r,i,a)=>{let o=O(e);if(y(o,`Identifier`)){let e=i.symbolFor(o);return!e||e.kind!==`const`||!e.initializer||a.has(e.id)||Ht(e,r,i)||Kt(o,n,i)?null:(a.add(e.id),ta(e.initializer,n,r,i,a))}if(!y(o,`ObjectExpression`))return null;let s=null;for(let e of o.properties){if(!y(e,`Property`)||e.kind!==`init`)return null;let t=kre(e,i);if(t===null)return null;t===n&&(s=e)}if(!s||!y(s,`Property`))return null;let c=O(s.value);return t(c)?c:na(c,r,i,a)},na=(e,n,r,i)=>{let a=O(e);if(t(a))return a;if(y(a,`MemberExpression`)){let e=Are(a,r);return e===null?null:ta(O(a.object),e,n,r,i)}if(!y(a,`Identifier`))return null;let o=r.symbolFor(a);if(!o||i.has(o.id)||Ht(o,n,r)||(i.add(o.id),!o.initializer))return null;let s=O(o.initializer),c=Qi(o.bindingIdentifier);return c===null?t(s)?s:o.kind===`const`?na(s,n,r,i):null:ta(s,c,n,r,i)},ra=(e,t)=>{let n=O(e);return!y(n,`CallExpression`)||Xt(n,t)?null:na(n.callee,n,t,new Set)},ia=(e,t)=>{let n=ra(e,t);return n&&Ore(n,t)?n:null},R=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},aa=e=>!!(e&&(y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`))),jre=(e,t)=>{if(!y(e,`LogicalExpression`))return!1;let n=v(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?R(t,n):!!(e.operator===`||`&&r&&R(t,r));return y(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):y(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(y(r,`WhileStatement`)||y(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||y(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?R(t,r.body):!1},oa=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||n.cfg.enclosingFunction(e)!==r)return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(e),o=i?.blockOf(t);if(!i||!a||!o)return!1;let s=e,c=e.parent??null;for(;c&&c!==r;){let e=null;if(y(c,`LogicalExpression`)&&c.right===s||y(c,`ConditionalExpression`)&&c.test!==s||y(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(y(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||y(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!R(t,e)&&!jre(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},z=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i);if(!e)return n.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(r.has(e.id))return`symbol:${e.id}`;r.add(e.id);let t=e.bindingIdentifier.parent,a=t?.parent,o=a?.parent,s=y(t,`Property`)?S(t):null;if(s&&y(a,`ObjectPattern`)&&y(o,`VariableDeclarator`)&&o.id===a){let t=z(o.init,n,r);return t?`${t}.${s}`:`symbol:${e.id}`}let c=e.initializer?O(e.initializer):null;return e.kind===`const`&&c&&(y(c,`Identifier`)||y(c,`MemberExpression`))?z(c,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(y(i,`MemberExpression`)){let e=S(i,{allowComputedString:!0});if(!e)return null;let t=z(i.object,n,r);return t?`${t}.${e}`:null}if(y(i,`ThisExpression`))return`this`;if(y(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`))return`literal:${String(i.value)}`;if(t(i)){let e=D(i);return e===null?null:`function:${e}`}return null},Mre=new Set(Nr),Nre=new Set([`push`,`unshift`]),sa=e=>y(e,`ForStatement`)||y(e,`ForInStatement`)||y(e,`ForOfStatement`)||y(e,`WhileStatement`)||y(e,`DoWhileStatement`)?e.body:null,Pre=(e,n=!1,r)=>{let i=null;return A(e,a=>{if(i||a!==e&&t(a)||n&&a!==e&&Mre.has(a.type))return!1;y(a,`AwaitExpression`)&&!r?.(a)&&(i=a)}),i},Fre=e=>y(e,`Identifier`)?Vr.has(e.name):y(e,`MemberExpression`)&&y(e.property,`Identifier`)?Vr.has(e.property.name):!1,Ire=(e,t)=>{if(!y(e,`AwaitExpression`))return!1;let n=e.argument;return!n||!y(n,`CallExpression`)||ia(n,t.scopes)!==null?!1:Fre(n.callee)},Lre=(e,t)=>y(e,`AwaitExpression`)&&!!e.argument&&Xt(e.argument,t.scopes),Rre=new Set([`all`,`allSettled`,`race`,`any`]),ca=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return!y(t,`MemberExpression`)||t.computed||!y(t.object,`Identifier`)||t.object.name!==`Promise`||!y(t.property,`Identifier`)?!1:Rre.has(t.property.name)},zre=e=>y(e,`AwaitExpression`)?ca(e.argument):!1,Bre=e=>{if(!y(e,`AwaitExpression`))return!1;let t=e.argument;if(!y(t,`NewExpression`)||!y(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(y(n,`Identifier`)&&Vr.has(n.name))return!0;if(!aa(n))return!1;let r=n.params?.[0],i=y(r,`Identifier`)?r.name:null,a=!1;return A(n.body,e=>{if(a)return!1;if(y(e,`CallExpression`)&&Fre(e.callee)||i&&y(e,`AssignmentExpression`)&&y(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Vre=e=>{let t=e;for(;y(t,`MemberExpression`);)t=t.object;return y(t,`Identifier`)?t.name:null},Hre=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Ure=(e,t)=>!!t&&e.references.some(e=>{let n=v(e.identifier),r=n.parent;return y(r,`ReturnStatement`)&&r.argument===n&&b(r)===t}),la=(e,t,n)=>{if(y(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(y(e,`ObjectPattern`)){for(let r of e.properties??[])y(r,`Property`)&&r.value?la(r.value,t,n):y(r,`RestElement`)&&r.argument&&la(r.argument,t,n);return}if(y(e,`ArrayPattern`)){for(let r of e.elements??[])r&&la(r,t,n);return}y(e,`AssignmentPattern`)&&e.left&&la(e.left,t,n)},ua=(e,n)=>{let r=new Set;return A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`Identifier`))return;let a=n.symbolFor(i);a&&r.add(a.id)}),r},Wre=(e,t)=>{let n=new Set;if(y(e,`ForOfStatement`)||y(e,`ForInStatement`))if(y(e.left,`VariableDeclaration`))for(let r of e.left.declarations)la(r.id,t,n);else la(e.left,t,n);return n},Gre=(e,n,r=null)=>{let i=new Set,a=[];A(e,o=>{if(o!==e&&t(o))return!1;if(y(o,`VariableDeclarator`)&&o.id&&o.init){let e=new Set;if(la(o.id,n,e),r&&R(r,o.init)||!r&&Zi(o.init))for(let t of e)i.add(t);let t=ua(o.init,n);for(let n of e)a.push({declaredSymbolId:n,referencedSymbolIds:t});return}if(y(o,`AssignmentExpression`)&&o.left){let e=new Set;if(la(o.left,n,e),r&&R(r,o.right)||!r&&Zi(o.right))for(let t of e)i.add(t);let t=ua(o.right,n);for(let n of e)a.push({declaredSymbolId:n,referencedSymbolIds:t})}});let o=!0;for(;o;){o=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of a)if(!i.has(e)){for(let n of t)if(i.has(n)){i.add(e),o=!0;break}}}return i},Kre=e=>y(e,`Identifier`)?e:y(e,`AssignmentPattern`)&&y(e.left,`Identifier`)?e.left:null,qre=(e,n)=>{if(!y(e,`AwaitExpression`))return!1;let r=e.argument;if(!y(r,`CallExpression`))return!1;let i=ra(r,n.scopes);if(!t(i))return!1;let a=b(r),o=n.scopes.ownScopeFor(i);if(!o)return!1;let s=Gre(i.body,n.scopes),c=new Set;for(let[e,t]of i.params.entries()){let i=Kre(t);if(!i)continue;let o=r.arguments[e];if(!y(o,`Identifier`))continue;let s=n.scopes.symbolFor(i),l=n.scopes.symbolFor(o);s&&l&&(Ure(l,a)||l.id===s.id)&&c.add(s.id)}let l=!1;return A(i.body,e=>{if(l||e!==i.body&&t(e))return!1;if(!y(e,`CallExpression`))return;let r=e.callee;if(!y(r,`MemberExpression`)||r.computed||!y(r.property,`Identifier`)||!Nre.has(r.property.name))return;let u=!1;for(let t of e.arguments??[]){if(Zi(t)){u=!0;break}let e=ua(t,n.scopes);for(let t of e)if(s.has(t)){u=!0;break}if(u)break}if(!u)return;let d=r.object;for(;y(d,`MemberExpression`);)d=d.object;if(!y(d,`Identifier`))return;let f=n.scopes.symbolFor(d);if(f&&(c.has(f.id)||!Hre(f.scope,o)&&Ure(f,a)))return l=!0,!1}),l},Jre=e=>{if(!y(e,`AwaitExpression`))return null;let t=O(e.argument);return y(t,`CallExpression`)&&y(O(t.callee),`MemberExpression`)?t:null},Yre=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=Wre(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=ua(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Xre=e=>{if(!y(e,`CallExpression`))return null;let t=O(e.callee);return y(t,`MemberExpression`)?t.object:null},da=e=>{let t=O(e);for(;y(t,`MemberExpression`);)t=O(t.object);return t},Zre=(e,n,r,i)=>{let a=sa(r);if(!a)return!1;let o=da(e);if(y(o,`Identifier`)){let e=i.scopes.symbolFor(o);if(!e||R(e.bindingIdentifier,r))return!1}else if(!y(o,`ThisExpression`))return!1;let s=!1;return A(a,e=>{if(s||e!==a&&t(e))return!1;let r=null;if(y(e,`AssignmentExpression`)?r=e.left:(y(e,`UpdateExpression`)||y(e,`UnaryExpression`)&&e.operator===`delete`)&&(r=e.argument),r&&z(r,i)===n)return s=!0,!1}),!s},Qre=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=Xre(e);return!r||z(r,n)!==t?!1:!y(v(e).parent,`ExpressionStatement`)},$re=(e,n,r,i)=>{let a=sa(n);if(!a)return!1;let o=!1,s=!1;return A(a,n=>{if(o&&s||n!==a&&t(n))return!1;R(n,e)||Qre(n,r,i)&&(oa(n,e,i)&&(o=!0),oa(e,n,i)&&(s=!0))}),o&&s},eie=(e,t)=>{let n=b(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||b(e.identifier)!==n)return!1;let r=v(e.identifier),i=r.parent;if(!y(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=O(i.callee);return y(a,`MemberExpression`)?y(da(a.object),`ThisExpression`):!1})},tie=(e,n,r)=>{let i=new Set;return A(n,a=>{if(a!==n&&t(a))return!1;let o=null,s=null;y(a,`VariableDeclarator`)&&a.init?(o=a.id,s=a.init):y(a,`AssignmentExpression`)&&(o=a.left,s=a.right),!(!o||!s||!R(e,s))&&la(o,r.scopes,i)}),i},nie=(e,t,n)=>{let r=O(e);if(!y(r,`MemberExpression`))return!1;let i=da(r);if(!y(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},rie=(e,n,r)=>{let i=sa(n);if(!i)return!1;let a=tie(e,i,r);if(a.size===0)return!1;let o=!1;return A(i,s=>{if(o||s!==i&&t(s))return!1;if(!y(s,`CallExpression`)||!oa(e,s,r))return;let c=s.callee;if(!y(c,`MemberExpression`)||c.computed||!y(c.property,`Identifier`)||!Nre.has(c.property.name))return;let l=da(c.object);if(!y(l,`Identifier`))return;let u=r.scopes.symbolFor(l);if(!(!u||R(u.bindingIdentifier,n)||!eie(u,n))){for(let e of s.arguments)if(nie(e,a,r))return o=!0,!1}}),o},iie=(e,t,n)=>{let r=Jre(e);if(!r||!Yre(r,t,n))return!1;let i=Xre(r);if(!i)return!1;let a=z(i,n);return!a||!Zre(i,a,t,n)?!1:$re(e,t,a,n)||y(da(i),`ThisExpression`)&&y(O(i),`MemberExpression`)&&rie(e,t,n)},aie=(e,t)=>Lre(e,t)||Ire(e,t)||zre(e)||Bre(e)||qre(e,t),fa=(e,t)=>{if(y(e,`Identifier`))t.add(e.name);else if(y(e,`ObjectPattern`))for(let n of e.properties??[])y(n,`Property`)&&n.value?fa(n.value,t):y(n,`RestElement`)&&n.argument&&fa(n.argument,t);else if(y(e,`ArrayPattern`))for(let n of e.elements??[])n&&fa(n,t);else y(e,`AssignmentPattern`)&&e.left&&fa(e.left,t)},oie=new Set([`push`,`unshift`,`splice`]),pa=(e,n)=>{let r=[];A(e,n=>{if(n!==e&&t(n))return!1;if(!y(n,`VariableDeclarator`)||!n.init||!y(n.id,`Identifier`))return;let i=new Set;Xi(n.init,i),r.push({declaredName:n.id.name,referencedNames:i})});let i=!0;for(;i;){i=!1;for(let{declaredName:e,referencedNames:t}of r)if(!n.has(e)){for(let r of t)if(n.has(r)){n.add(e),i=!0;break}}}},sie=e=>{let n=new Set,r=new Set;if(A(e,i=>{if(i!==e&&t(i))return!1;if(y(i,`AssignmentExpression`)&&i.left){fa(i.left,n);return}if(y(i,`AwaitExpression`)&&i.argument){Xi(i.argument,r);return}if(!y(i,`CallExpression`))return;let a=i.callee;y(a,`MemberExpression`)&&!a.computed&&y(a.property,`Identifier`)&&oie.has(a.property.name)&&y(a.object,`Identifier`)&&n.add(a.object.name)}),n.size===0)return!1;pa(e,n);for(let e of n)if(r.has(e))return!0;return!1},cie=new Set([...Nr,`SwitchStatement`]),lie=e=>{let n=new Set;return A(e,r=>{if(r!==e&&t(r))return!1;y(r,`VariableDeclarator`)&&r.id&&Zi(r.init)&&fa(r.id,n),y(r,`AssignmentExpression`)&&r.left&&Zi(r.right)&&fa(r.left,n)}),n},ma=(e,t)=>{if(!e)return!1;if(Zi(e))return!0;let n=new Set;Xi(e,n);for(let e of n)if(t.has(e))return!0;return!1},uie=(e,t,n)=>{if(e.label)return y(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(cie.has(r.type))return!1;r=r.parent}return!0},die=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),ha=e=>{if(!e)return!1;if(die.has(e.type))return!0;if(y(e,`BlockStatement`)){let t=e.body??[];return ha(t[t.length-1])}return!1},fie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(y(r,`IfStatement`)&&ma(r.test,n)&&(ha(r.consequent)||ha(r.alternate)))return!0}return!1},pie=(e,t,n)=>{if(y(e,`ReturnStatement`)&&e.argument&&ma(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(y(a,`IfStatement`)){if(ma(a.test,n))return!0;r=!0}if(y(a,`TryStatement`)&&a.handler&&i===a.block&&Zi(a.block)&&!r||y(a,`SwitchStatement`)&&ma(a.discriminant,n)||y(a,`BlockStatement`)&&fie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},mie=(e,n)=>{let r=lie(e);pa(e,r);let i=!1;return A(e,a=>{if(i||a!==e&&t(a))return!1;if((y(a,`ReturnStatement`)||y(a,`BreakStatement`)&&uie(a,e,n))&&pie(a,e,r))return i=!0,!1}),i},hie=new Set([...oie,`pop`,`shift`]),gie=e=>{let n=new Set;return A(e,r=>{if(r!==e&&t(r))return!1;if(y(r,`AssignmentExpression`)&&r.left){fa(r.left,n);let e=Vre(r.left);e&&n.add(e);return}if(!y(r,`CallExpression`))return;let i=r.callee;if(y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&hie.has(i.property.name)){let e=Vre(i.object);e&&n.add(e)}}),n},_ie=(e,t)=>{if(!e)return!1;let n=new Set;if(Xi(e,n),n.size===0)return!1;let r=gie(t),i=lie(t);pa(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},vie=e=>{let t=e.parent;return y(t,`LabeledStatement`)&&y(t.label,`Identifier`)?t.label.name:null},yie=(e,t)=>{let n=!1;return A(e,e=>{if(n||aa(e)||y(e,`FunctionDeclaration`))return!1;if(y(e,`AwaitExpression`)&&aie(e,t))return n=!0,!1}),n},bie=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),xie=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),Sie=e=>{let t=e;for(;;){t=v(t);let e=t.parent;if(!e)return t;if(y(e,`SpreadElement`)||y(e,`ArrayExpression`)){t=e;continue}if(y(e,`LogicalExpression`)){t=e;continue}if(y(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(y(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(y(n,`CallExpression`)&&n.callee===e&&!e.computed&&y(e.property,`Identifier`)&&xie.has(e.property.name)){t=n;continue}}return t}},ga=e=>{let n=e;for(;n.parent&&!t(n);)n=n.parent;return n},Cie=(e,t)=>{let n=!1;return A(t,t=>{if(n)return!1;if(!ca(t))return;let r=new Set;for(let e of t.arguments??[])Xi(e,r);if(r.has(e))return n=!0,!1}),n},wie=e=>{let t=Sie(e),n=t.parent;if(y(n,`CallExpression`)&&ca(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`)?r=n.id.name:y(n,`AssignmentExpression`)&&n.right===t&&y(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:Cie(r,ga(n))},Tie=e=>{let n=ga(e);if(!t(n))return!1;let r=null;return y(n,`FunctionDeclaration`)&&y(n.id,`Identifier`)?r=n.id.name:y(n.parent,`VariableDeclarator`)&&y(n.parent.id,`Identifier`)&&(r=n.parent.id.name),!r||!n.parent?!1:Cie(r,ga(n.parent))},Eie=x({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=(t,n)=>{let r=t.body;if(!r||yie(r,e)||(y(t,`WhileStatement`)||y(t,`DoWhileStatement`))&&_ie(t.test,r)||sie(r)||mie(r,vie(t))||Tie(t))return;let i=Pre(r,!0,n=>iie(n,t,e));i&&e.report({node:i,message:`This makes the ${n} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ForStatement(e){t(e,`for-loop`)},ForInStatement(e){t(e,`for…in loop`)},ForOfStatement(e){e.await||t(e,`for…of loop`)},WhileStatement(e){t(e,`while-loop`)},DoWhileStatement(e){t(e,`do-while loop`)},CallExpression(t){if(!y(t.callee,`MemberExpression`)||!y(t.callee.property,`Identifier`))return;let n=t.callee.property.name;if(!bie.has(n))return;let r=t.arguments?.[0];if(!r||!aa(r)||!r.async)return;let i=r.body;if(!i||(n===`map`||n===`flatMap`)&&wie(t))return;let a=Pre(i);if(a){let t=n===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${n} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:a,message:t})}}}}}),_a=(e,t)=>{if(e){if(y(e,`AssignmentPattern`)){Xi(e.right,t),_a(e.left,t);return}if(y(e,`RestElement`)){_a(e.argument,t);return}if(y(e,`ArrayPattern`)){for(let n of e.elements??[])_a(n,t);return}if(y(e,`ObjectPattern`))for(let n of e.properties??[])y(n,`RestElement`)?_a(n.argument,t):y(n,`Property`)&&(n.computed&&Xi(n.key,t),_a(n.value,t))}},Die=e=>y(e,`ExpressionStatement`)?y(e.expression,`AwaitExpression`):!1,Oie=e=>y(e,`ReturnStatement`)||y(e,`ThrowStatement`)||y(e,`ContinueStatement`)||y(e,`BreakStatement`),kie=e=>{if(!y(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(Oie(t))return!0;if(!y(t,`BlockStatement`))return!1;for(let e of t.body??[])if(Oie(e))return!0;return!1},va=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Aie=(e,t)=>{y(e,`VariableDeclarator`)&&(Xi(e.init,t),_a(e.id,t))},jie=(e,t)=>{if(!y(e,`VariableDeclaration`))return{didIntroduceAwait:!1,didGrowBindings:!1};let n=!1,r=t.size,i=!0;for(;i;){i=!1;for(let r of e.declarations??[]){if(!y(r,`VariableDeclarator`))continue;if(Zi(r.init)||Zi(r.id)){n=!0;let e=t.size;qi(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Aie(r,e),!va(e,t))continue;let a=t.size;qi(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},Mie=new Set([`cancelled`,`canceled`,`isCancelled`,`isCanceled`,`aborted`,`isAborted`,`disposed`,`isDisposed`,`destroyed`,`isDestroyed`,`stopped`,`isStopped`,`mounted`,`isMounted`,`unmounted`,`isUnmounted`,`active`,`isActive`,`stale`,`isStale`,`ignore`,`signal`,`abortSignal`,`abortController`]),Nie=e=>{let t=!1;return A(e,e=>{if(t)return!1;if(!y(e,`MemberExpression`)||e.computed||!y(e.property,`Identifier`)||e.property.name!==`current`||!y(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Pie=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Fie=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Pie)if(t.includes(e))return!0;return!1},Iie=e=>{let t=new Set;return A(e,e=>{(y(e,`Identifier`)||y(e,`PrivateIdentifier`))&&t.add(e.name)}),t},Lie=e=>{if(!e)return!1;let t=new Set;Xi(e,t);for(let e of t)if(Mie.has(e))return!0;for(let t of Iie(e))if(Fie(t))return!0;return Nie(e)},Rie=e=>{if(!e)return!1;let t=!1;return A(e,e=>{if(t)return!1;if(y(e,`CallExpression`))return y(e.callee,`ArrowFunctionExpression`)||y(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(y(e,`ThisExpression`)||y(e,`PrivateIdentifier`))return t=!0,!1}),t},zie=e=>{if(!e)return!1;let t=O(e);if(!y(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=O(e);return y(t,`Literal`)||y(t,`TemplateLiteral`)||y(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Bie=(e,t,n)=>{let r=O(e);if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&pt(i.scope,n))},Vie=(e,t,n)=>{let r=O(e);if(y(r,`MemberExpression`))return!0;if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!pt(i.scope,n))},Hie=(e,t,n)=>{let r=O(e);return!zie(r)||!y(r,`BinaryExpression`)?!1:Bie(r.left,t,n)&&Vie(r.right,t,n)||Bie(r.right,t,n)&&Vie(r.left,t,n)},Uie=(e,t,n)=>{if(!n||!e)return!1;let r=O(e);if(!y(r,`LogicalExpression`)||r.operator!==`&&`&&r.operator!==`||`)return!1;let i=[r.left,r.right];for(;i.length>0;){let e=i.pop();if(!e)continue;let r=O(e);if(y(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Hie(r,t,n))return!1}return!0},Wie=e=>{if(!e)return!1;let n=!1;return A(e,e=>{if(n||t(e)||y(e,`ThrowStatement`))return!1;if(y(e,`CallExpression`)||y(e,`NewExpression`)||y(e,`AssignmentExpression`)||y(e,`UpdateExpression`))return n=!0,!1}),n},Gie=(e,n)=>{if(!e)return!1;let r=new Set;if(Xi(e,r),r.size===0)return!1;let i=b(n);if(!i||!t(i)||!i.body)return!1;let a=!1;return A(i.body,e=>{if(a)return!1;let t=null;if(y(e,`AssignmentExpression`)?t=e.left:y(e,`UpdateExpression`)&&(t=e.argument),!t)return;let n=new Set;qi(t,n),y(t,`Identifier`)&&n.add(t.name);for(let e of n)if(r.has(e))return a=!0,!1}),a},Kie=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(y(n,`VariableDeclaration`)?jie(n,r).didIntroduceAwait&&(i=!0):Die(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(Die(t)){a=!0,o++;continue}if(!y(t,`VariableDeclaration`))break;let n=jie(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},qie=x({id:`async-defer-await`,title:`await before an early-return guard`,severity:`warn`,tags:[`test-noise`],recommendation:"Move the `await` below the early-return guard so the skip path stays fast and avoids unnecessary async work.",create:e=>{let n=t=>{for(let n=0;n<t.length-1;n++){let r=Kie(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!kie(i)||!y(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(Xi(i.test,a),va(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=b(i),s=o?e.scopes.ownScopeFor(o):null;if(Lie(i.test)||Rie(i.test)||zie(i.test)||Uie(i.test,e.scopes,s)||Gie(i.test,i)||Wie(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(Xi(i.consequent,c),va(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},r=e=>{e&&A(e,e=>{if(t(e))return!1;y(e,`BlockStatement`)?n(e.body??[]):y(e,`SwitchCase`)&&n(e.consequent??[])})},i=e=>{t(e)&&e.async&&y(e.body,`BlockStatement`)&&r(e.body)};return{FunctionDeclaration:i,FunctionExpression:i,ArrowFunctionExpression:i}}}),Jie=(e,t,n)=>{let r=new Set;for(let e of t)A(e,e=>{if(!y(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return A(e,e=>{if(i||!y(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},Yie=e=>{let t=e;for(;y(t,`ChainExpression`);)t=t.expression;if(!y(t,`CallExpression`)&&!y(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(y(r,`ChainExpression`)){r=r.expression;continue}if(y(r,`MemberExpression`)){y(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(y(r,`CallExpression`)){r=r.callee;continue}y(r,`Identifier`)&&n.push(r.name);break}return n},ya=e=>{if(y(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&y(t.init,`AwaitExpression`))return t.init.argument??null}return y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Xie=e=>Tne.has(e)?!0:Ene.some(t=>e.startsWith(t)),Zie=e=>e?Yie(e).some(Xie):!1,Qie=e=>e?Yie(e).some(e=>Vr.has(e)):!1,$ie=e=>y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`),eae=e=>{let t=O(e);return y(t,`CallExpression`)?t.arguments.every(e=>{if(y(e,`SpreadElement`))return!1;let t=O(e);return y(t,`Identifier`)||y(t,`Literal`)}):!1},tae=e=>{let t=ya(e);if(!t)return!1;let n=O(t);return!y(n,`CallExpression`)&&!y(n,`NewExpression`)&&!y(n,`ImportExpression`)},nae=(e,t)=>{let n=null;for(let r of e){if(tae(r))return!0;let e=ya(r);if(e&&Xt(e,t.scopes))return!0;let i=e?ia(e,t.scopes):null;if($ie(r)){if(i===null||!e||!eae(e)||n!==null&&n!==i)return!0;n=i}if(Zie(e)||Qie(e)&&i===null)return!0}return!1},rae=e=>{let n=e.parent;for(;n;){if(t(n)){let e=n.parent;if(e&&y(e,`CallExpression`)){let t=e.callee;if(y(t,`MemberExpression`)&&y(t.property,`Identifier`)&&t.property.name===`transaction`||y(t,`Identifier`)&&t.name===`transaction`)return!0}}n=n.parent??null}return!1},iae=(e,t)=>{let n=[];for(let r of e){let e=ya(r);if(e){if(Jie(e,n,t.scopes))return;y(r,`VariableDeclaration`)&&r.declarations[0]?.id&&n.push(r.declarations[0].id)}}t.report({node:e[0],message:`These ${e.length} sequential await statements run one after another even though they look independent, so the page waits longer than it needs to. Run them together with Promise.all() instead`})},aae=x({id:`async-parallel`,title:`Independent awaits run sequentially`,tags:[`test-noise`],severity:`warn`,recommendation:"Use `const [a, b] = await Promise.all([fetchA(), fetchB()])` so independent calls run at the same time",create:e=>{let t=ve(e.filename??``),n=Sne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Hr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||rae(t))return;let n=[],r=()=>{n.length>=3&&(nae(n,e)||iae(n,e)),n.length=0};for(let e of t.body??[])y(e,`VariableDeclaration`)&&e.declarations?.length===1&&y(e.declarations[0].init,`AwaitExpression`)||y(e,`ExpressionStatement`)&&y(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),ba=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`||y(t,`UnaryExpression`)&&t.operator===`void`},oae=e=>{let t=e[0];return t&&y(t,`Identifier`)&&t.name===`this`?e.slice(1):e},sae="Storing an auth token in `localStorage`/`sessionStorage` exposes it to any XSS on the page: JavaScript can read web storage and exfiltrate the token. Keep tokens in an `HttpOnly`, `Secure`, `SameSite` cookie instead.",cae=new Set([`localStorage`,`sessionStorage`]),lae=new Set([`window`,`globalThis`,`self`]),uae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,dae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,fae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,pae=e=>!(!uae.test(e)||dae.test(e)&&!fae.test(e)),mae=e=>y(e,`Identifier`)?cae.has(e.name):y(e,`MemberExpression`)&&!e.computed&&y(e.object,`Identifier`)&&lae.has(e.object.name)&&y(e.property,`Identifier`)?cae.has(e.property.name):!1,xa=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=T(e,e.name);if(!n?.initializer)return null;if(y(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!y(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!y(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=O(n.initializer);return y(a,`Identifier`)?xa(a,t)??a:a},Sa=(e,t)=>{let n=O(e);if(Ca(n,new Set(t)))return!0;if(y(n,`ConditionalExpression`)){let e=O(n.consequent),r=O(n.alternate);return(ba(e)||Sa(e,t))&&(ba(r)||Sa(r,t))&&(!ba(e)||!ba(r))}if(y(n,`LogicalExpression`)){if(n.operator===`&&`)return Sa(n.right,t);let e=O(n.left),r=O(n.right),i=Sa(e,t),a=Sa(r,t);return(i||ba(e))&&(a||ba(r))&&(i||a)}return!1},Ca=(e,n=new Set)=>{let r=O(e);if(n.has(r))return!1;if(n.add(r),mae(r))return!0;if(y(r,`Identifier`)){let e=xa(r);return e?Ca(e,new Set(n)):!1}if(!y(r,`CallExpression`))return!1;let i=O(r.callee);if(!y(i,`Identifier`))return!1;let a=xa(i);if(!t(a))return!1;if(y(a,`ArrowFunctionExpression`)&&!y(a.body,`BlockStatement`))return Sa(a.body,n);let o=!1;for(let e of tn(a)){if(!e.argument)continue;let t=O(e.argument);if(!ba(t)){if(!Sa(t,n))return!1;o=!0}}return o},hae=e=>{if(y(e,`Literal`)&&typeof e.value==`string`)return e.value;if(y(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(y(e,`Identifier`)&&e.name!==`undefined`){let t=T(e,e.name);return!t?.initializer||y(t.initializer,`Identifier`)?null:hae(t.initializer)}return null},gae=e=>!e.computed&&y(e.property,`Identifier`)?e.property.name:e.computed&&y(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,wa=(e,t,n,r,i=new Set)=>{let a=O(e);if(i.has(a))return null;if(i.add(a),y(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=xa(a);return s?wa(s,t,n,r,i):null}if(r&&y(a,`CallExpression`)&&y(a.callee,`MemberExpression`)&&!a.callee.computed&&y(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&y(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?wa(e,t,n,!0,i):null}return null},Ta=new WeakMap,_ae=(e,n)=>{let r=Ta.get(e);if(r)return r;if(!y(e,`FunctionDeclaration`)&&!y(e,`FunctionExpression`)&&!y(e,`ArrowFunctionExpression`))return Ta.set(e,[]),[];let i=oae(e.params).map(e=>{let t=O(e),r=y(t,`Identifier`)?t:y(t,`AssignmentPattern`)&&y(t.left,`Identifier`)?t.left:null;return r?n.symbolFor(r)?.id??null:null}),a=[];return A(e.body,r=>{if(r!==e.body&&t(r))return!1;if(!y(r,`CallExpression`))return;let o=O(r.callee);if(!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`)||o.property.name!==`setItem`||!Ca(o.object))return;let s=r.arguments[0],c=r.arguments[1];if(!s||!c)return;let l=wa(s,i,n,!1),u=wa(c,i,n,!0);l===null||u===null||a.push({keyParameterIndex:l,valueParameterIndex:u})}),Ta.set(e,a),a},vae=x({id:`auth-token-in-web-storage`,title:`Auth token in web storage`,severity:`warn`,recommendation:"Don't persist auth tokens (JWTs, access/refresh tokens, secrets) in `localStorage`/`sessionStorage`; they're readable by any XSS. Use an `HttpOnly` cookie set by the server.",create:Se(e=>({CallExpression(t){let n=O(t.callee),r=[];if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`setItem`&&Ca(O(n.object))){let e=t.arguments[0];e&&r.push(e)}else if(y(n,`Identifier`)){let i=xa(n),a=i?_ae(i,e.scopes):[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&r.push(n)}}r.some(e=>{let t=hae(e);return t!==null&&pae(t)})&&e.report({node:t,message:sae})},AssignmentExpression(t){let n=t.left;if(!y(n,`MemberExpression`)||!Ca(n.object))return;let r=gae(n);!r||!pae(r)||e.report({node:n,message:sae})}}))}),yae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,bae=new Set(`off.on.name.honorific-prefix.given-name.additional-name.family-name.honorific-suffix.nickname.email.username.new-password.current-password.one-time-code.organization-title.organization.street-address.address-line1.address-line2.address-line3.address-level4.address-level3.address-level2.address-level1.country.country-name.postal-code.cc-name.cc-given-name.cc-additional-name.cc-family-name.cc-number.cc-exp.cc-exp-month.cc-exp-year.cc-csc.cc-type.transaction-currency.transaction-amount.language.bday.bday-day.bday-month.bday-year.sex.tel.tel-country-code.tel-national.tel-area-code.tel-local.tel-extension.impp.url.photo`.split(`.`)),xae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Sae=new Set([`shipping`,`billing`]),Cae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),wae=e=>{let t=e.toLowerCase().split(/\s+/).filter(e=>e.length>0);if(t.length===0)return!0;let n=0;t[n]?.startsWith(`section-`)&&(n+=1),n<t.length&&Sae.has(t[n])&&(n+=1);let r=n<t.length&&Cae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?xae.has(i):bae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Tae=new Set([`input`,`textarea`,`select`,`form`]),Eae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},Ea=x({id:`autocomplete-valid`,title:`Invalid autocomplete value`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Use a valid autofill token in `autoComplete` so browsers can fill the right field reliably.",category:`Accessibility`,create:Se(e=>{let t=Eae(e.settings);return{JSXOpeningElement:n=>{let r=hr(n,e.settings);if(!Tae.has(r)&&!t.inputComponents.has(r))return;let i=P(n.attributes,`autoComplete`);if(!i)return;let a=dr(i);a&&(wae(a)||e.report({node:i,message:yae(a)}))}}})}),Dae=e=>{let t=e;for(;t;){if(y(t,`MemberExpression`)){if(y(t.property,`Identifier`)&&t.property.name===`document`||y(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(y(t,`Identifier`)&&t.name===`document`)}return!1},Da=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`Identifier`)?t.name===`createElement`:y(t,`MemberExpression`)&&(t.computed?y(t.property,`Literal`)&&t.property.value===`createElement`:y(t.property,`Identifier`)&&t.property.name===`createElement`)?!Dae(t.object):!1},Oa="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Oae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.buttonHasType??{}:{};return{button:n.button??!0,submit:n.submit??!0,reset:n.reset??!0}},ka=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Aa=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return ka(r.value,t);if(y(r,`TemplateLiteral`)){let e=In(r);if(e!==null)return ka(e,t)}if(y(r,`ConditionalExpression`))return Aa(r.consequent,t,n)&&Aa(r.alternate,t,n);if(y(r,`Identifier`)){if(n.has(r.name))return!1;let e=T(r,r.name);return!e?.initializer||!ja(e)?!1:Aa(e.initializer,t,new Set(n).add(r.name))}return!1},ja=e=>{let t=e.bindingIdentifier.parent;if(!t||!y(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&y(n,`VariableDeclaration`)&&n.kind===`const`)},kae=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Aae=e=>{let t=e;for(;t.parent&&kae.has(t.parent.type);)t=t.parent;return t},Ma=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Aae(e),r=n.parent;if(!r)return!1;if(r.type===`FunctionDeclaration`||r.type===`FunctionExpression`||r.type===`ArrowFunctionExpression`)return r.params.some(e=>e===n);if(y(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!y(e,`Identifier`))return!1;let n=T(e,e.name);return n?Ma(n.bindingIdentifier,t):!1}return!1},jae=e=>{let t=T(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!y(n,`Property`)||n.computed||n.value!==t||!Ma(n)?!1:y(n.key,`Identifier`)?n.key.name===`type`:y(n.key,`Literal`)?n.key.value===`type`:!1},Mae=/Type$/,Nae=(e,t)=>{if(!Mae.test(e.name))return!1;let n=T(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!y(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!y(i,`Property`)||i.computed||i.value!==r||!Ma(i)?!1:Aa(r.right,t)},Na=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`)){if(r.name===`type`||jae(r)||Nae(r,t))return!0;if(n.has(r.name))return!1;let e=T(r,r.name);if(!e?.initializer||!ja(e))return!1;let i=O(e.initializer);return!y(i,`ConditionalExpression`)&&!y(i,`LogicalExpression`)?!1:Na(i,t,new Set(n).add(r.name))}if(y(r,`MemberExpression`)&&!r.computed&&y(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(y(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Na(r.left,t,n);if(y(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Na(e,t,n))&&e.every(e=>Na(e,t,n)||Aa(e,t))}return!1},Pae=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Fae={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},Pa=e=>{for(let t of Pae){let n=he(e,e.name,t);if(n!==null)return n}return null},Fa=e=>e.computed?null:y(e.key,`Identifier`)?e.key.name:y(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,Iae=e=>{if(y(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(y(e,`ReturnStatement`))return e.argument?(t.push(e.argument),!0):!1;let r=e;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e],i=Array.isArray(t)?t:[t];for(let e of i){if(!e||typeof e!=`object`||!(`type`in e))continue;let t=e;if(!(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Lae=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!y(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Fa(n);if(!r)return!1;let i=n.parent;if(!i||!y(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!y(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!y(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=O(a.init);if(!y(s,`CallExpression`))return!1;let c=O(s.callee);if(!y(c,`Identifier`))return!1;let l=Pa(c);if(l!==null)return Fae[l]===r;let u=T(c,c.name)?.initializer;if(!u||!y(u,`FunctionDeclaration`)&&!y(u,`FunctionExpression`)&&!y(u,`ArrowFunctionExpression`))return!1;let d=Iae(u);return!d||d.length===0?!1:d.every(e=>{let n=O(e);if(!y(n,`ObjectExpression`))return!1;for(let e of n.properties){if(y(e,`SpreadElement`)||!y(e,`Property`))return!1;if(Fa(e)===r)return Ia(e.value,t)}return!0})},Ia=(e,t=new Set)=>{let n=O(e);if(y(n,`ObjectExpression`))return n.properties.every(e=>{if(y(e,`SpreadElement`))return Ia(e.argument,t);if(!y(e,`Property`))return!1;let n=Fa(e);return n!==null&&n!==`type`});if(y(n,`CallExpression`)){let e=O(n.callee);return!y(e,`Identifier`)||Pa(e)!==`mergeProps`?!1:n.arguments.every(e=>!y(e,`SpreadElement`)&&Ia(e,t))}if(y(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=T(n,n.name);return r?r.initializer&&ja(r)?Ia(r.initializer,e):Lae(r,e):!1}return!1},La=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Rae=e=>{let t=L(e.attributes,`form`,!1);return!!(t&&I(t)?.trim())},zae=e=>!!_r(e?_n(e,`form`):void 0)?.trim(),Bae=e=>{if(!y(e,`CallExpression`)||!Da(e))return!1;let t=e.arguments[0];return!!(t&&y(t,`Literal`)&&t.value===`form`)},Ra=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)&&j(t.openingElement)===`form`||Bae(t))return!0;t=t.parent}return!1},za=x({id:`button-has-type`,title:`Button missing explicit type`,severity:`warn`,recommendation:'Set an explicit button `type` so plain buttons do not submit forms by accident: `type="button"`, `"submit"`, or `"reset"`.',create:e=>{let t=Oae(e.settings),n=ct(e.filename);return{JSXOpeningElement(r){if(n||j(r)!==`button`)return;let i=P(r.attributes,`type`);if(!i){if(!Rae(r)&&!Ra(r)||F(r.attributes)&&!r.attributes.every(e=>!y(e,`JSXSpreadAttribute`)||Ia(e.argument)))return;e.report({node:r.name,message:Oa});return}let a=i.value;if(!a){La(e,i);return}if(y(a,`Literal`)){Aa(a,t)||La(e,i);return}if(y(a,`JSXExpressionContainer`)){let n=a.expression;if(!n||n.type===`JSXEmptyExpression`||Na(n,t))return;Aa(n,t)||La(e,i)}},CallExpression(r){if(n||!Da(r))return;let i=r.arguments[0];if(!i||!y(i,`Literal`)||i.value!==`button`)return;let a=r.arguments[1],o=zae(a)||Ra(r);if(!a||ba(a)){if(!o)return;e.report({node:r,message:Oa});return}if(!y(a,`ObjectExpression`))return;let s=null,c=!1;for(let e of a.properties){if(y(e,`SpreadElement`)){c=!0;continue}if(!y(e,`Property`))continue;let t=e.key;if(y(t,`Identifier`)&&t.name===`type`||y(t,`Literal`)&&t.value===`type`){s=e.value;break}}if(!s){if(!o||c&&!a.properties.every(e=>!y(e,`SpreadElement`)||Ia(e.argument)))return;e.report({node:a,message:Oa});return}Na(s,t)||Aa(s,t)||La(e,s)}}}}),Vae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Ba=e=>y(e,`Identifier`)||y(e,`MemberExpression`)&&!e.computed,Va=e=>!e.value||!y(e.value,`JSXExpressionContainer`)?!1:Ba(e.value.expression),Hae=e=>{if(!e.value)return!0;if(y(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return y(t,`Literal`)&&t.value===!0}return!1},Uae=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(y(c,`JSXSpreadAttribute`)){o=!0;continue}if(!y(c,`JSXAttribute`))continue;let e=Cn(c.name);e===`checked`?(t=c,n=Va(c)):e===`defaultChecked`&&!r?(r=c,i=Va(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Hae(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Wae=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(y(c,`SpreadElement`)){o=!0;continue}if(!y(c,`Property`))continue;let e=c.key,l=null;if(y(e,`Identifier`)?l=e.name:y(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Ba(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Ba(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;y(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ha=x({id:`checked-requires-onchange-or-readonly`,title:`Checked input without onChange`,severity:`warn`,recommendation:"Add `onChange`, `readOnly`, or `defaultChecked` so React knows whether the checkbox is editable, display-only, or uncontrolled.",category:`Correctness`,create:e=>{let t=Vae(e.settings),n=n=>{n.checkedNode&&n.defaultCheckedNode&&!n.bothCheckedAndDefaultForwarded&&!t.ignoreExclusiveCheckedAttribute&&e.report({node:n.checkedNode,message:"This input mixes `checked` with `defaultChecked`, so React can't tell whether it is controlled or uncontrolled."}),n.checkedNode&&!n.hasOnChangeOrReadOnly&&!n.hasSpread&&!n.hasTruthyDisabled&&!t.ignoreMissingProperties&&e.report({node:n.checkedNode,message:"Your users can't toggle this input because `checked` has no `onChange`."})};return{JSXOpeningElement(e){j(e)===`input`&&n(Uae(e.attributes))},CallExpression(e){if(!Da(e))return;let t=e.arguments[0];if(!t||!y(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!y(r,`ObjectExpression`)||n(Wae(r))}}}}),Ua=(e,n,r)=>{let i=new Map,a=e,o=e.parent;for(;o&&!(t(o)||((y(o,`ConditionalExpression`)||y(o,`IfStatement`))&&(o.consequent===a&&i.set(o,`consequent`),o.alternate===a&&i.set(o,`alternate`)),o===r));)a=o,o=o.parent??null;let s=n,c=n.parent;for(;c&&!t(c);){if(y(c,`ConditionalExpression`)||y(c,`IfStatement`)){let e=i.get(c);if(e===`consequent`&&c.alternate===s||e===`alternate`&&c.consequent===s)return!0}if(c===r)break;s=c,c=c.parent??null}return!1},Wa=(t,n,r,i=t)=>{let a=new Set,o=n.filter(e=>{if(r.cfg.enclosingFunction(e)!==t)return!1;let n=e;for(;n&&n!==i;)n=n.parent??null;return n===i}),s=new Set(o),c=new Map;for(;o.length>0;){let t=o.pop();if(!t)break;if(t===i){a.add(t);continue}let n=t,r=n.parent??null,l=null,u=null,d=!1;for(;r&&r!==i;){if(y(r,`ConditionalExpression`)){let t=r.consequent===n,i=r.alternate===n;if(t||i){let i=Dn(e(r.test));if(i!==null){if(i!==t){d=!0;break}n=r,r=n.parent??null;continue}l=r,u=t?`consequent`:`alternate`;break}}if(y(r,`LogicalExpression`)&&r.right===n){let t=Dn(e(r.left));if(!(r.operator===`&&`&&t===!0||r.operator===`||`&&t===!1)){d=!0;break}}if(y(r,`AssignmentPattern`)&&r.right===n){d=!0;break}n=r,r=n.parent??null}if(d)continue;if(!l||!u){a.add(t);continue}let f=c.get(l)??new Set;f.add(u),c.set(l,f),f.has(`alternate`)&&f.has(`consequent`)&&!s.has(l)&&(s.add(l),o.push(l))}return a},Ga=(e,t,n,r=e)=>{let i=n.cfg.enclosingFunction(e);if(!i)return!1;let a=n.cfg.cfgFor(i);if(!a)return!1;let o=a.blockOf(e);if(!o)return!1;let s=D(r),c=new Set([...Wa(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=D(e);return t===o&&s!==null&&n!==null&&n<s?[]:[t]}));if(c.has(o))return!0;let l=new Set([o]),u=[o];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors)if(!c.has(t.to)){if(t.to===a.exit)return!1;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return c.size>0},Ka=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Wa(e,t,n)].flatMap(e=>{let t=i.blockOf(e);return t?[t]:[]}));if(a.size===0)return!1;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;if(!a.has(e)){for(let t of e.successors)if(!(r.ignoreThrowEdges&&t.kind===`throw`)){if(t.to===i.exit)return!1;o.has(t.to)||(o.add(t.to),s.push(t.to))}}}return!0},qa=`Component`,Ja=`PureComponent`,Gae=e=>!y(e,`MemberExpression`)||!y(e.object,`Identifier`)||e.object.name!==`React`||!y(e.property,`Identifier`)?!1:e.property.name===qa||e.property.name===Ja,Ya=e=>{if(!y(e,`ClassDeclaration`)&&!y(e,`ClassExpression`))return!1;let t=e.superClass;return t?Gae(t)?!0:y(t,`Identifier`)?t.name===qa||t.name===Ja:!1:!1},Kae=e=>{let t=e,n=e.parent;for(;n;){if(y(n,`IfStatement`)&&y(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||y(n,`ConditionalExpression`)&&y(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(y(n,`WhileStatement`)||y(n,`ForStatement`))&&n.body===t&&n.test&&y(n.test,`Literal`)&&!n.test.value||y(n,`LogicalExpression`)&&n.right===t&&y(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},B=(e,t)=>{if(Kae(e))return!1;let n=t.cfg.enclosingFunction(e);if(!n)return!0;let r=t.cfg.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},qae=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Jae=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Xa=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=O(n.object);return y(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&C(n)===`now`},Za=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Literal`))return typeof r.value==`number`;if(y(r,`CallExpression`))return Xa(r,t);if(y(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||e.declarationNode.range[0]>=r.range[0]||n.has(e.id)||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Za(e.initializer,t,n))}return y(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&Za(r.argument,t,n):!y(r,`BinaryExpression`)||!Jae.has(r.operator)?!1:Za(r.left,t,new Set(n))&&Za(r.right,t,new Set(n))},Qa=(e,t)=>{if(Xa(e,t))return!0;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=O(n.object);if(!y(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=C(n);if(r.name===`console`)return qae.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&Za(a,t))},V=({node:e,scopes:t})=>{let n=O(e);if(y(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(y(n,`ThisExpression`))return`this`;if(!y(n,`MemberExpression`))return null;let r=V({node:n.object,scopes:t}),i=C(n);return r&&i?`${r}.${i}`:null},Yae=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Xae=e=>{if(y(e,`FunctionDeclaration`))return e.id&&y(e.id,`Identifier`)?e.id:null;let t=v(e),n=t.parent;if(!n||!y(n,`VariableDeclarator`)||n.init!==t||!y(n.id,`Identifier`))return null;let r=n.parent;return!r||!y(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},$a=(e,n,r,i)=>{let a=new Set,o=(e,s)=>{if(a.has(e))return;a.add(e);let c=new Map(s),l=new Map;A(e,n=>{if(n!==e&&t(n)){let e=Xae(n);return e&&n.body&&(!i||i(n))&&c.set(e,n.body),!1}let r=y(n,`VariableDeclarator`)&&n.init?O(n.init):null;if(y(n,`VariableDeclarator`)&&y(n.id,`Identifier`)&&y(r,`Identifier`)&&n.parent&&y(n.parent,`VariableDeclaration`)&&n.parent.kind===`const`){let e=T(r,r.name)?.bindingIdentifier;e&&l.set(n.id,e)}});for(let[e,t]of l){let n=t,r=new Set([e]);for(;l.has(n)&&!r.has(n);)r.add(n),n=l.get(n)??n;let i=c.get(n);i&&c.set(e,i)}let u=(e,a=!1)=>{if(!a&&t(e)||(n(e),yte(e,e=>u(e)),!y(e,`CallExpression`)))return;let s=O(e.callee);if(t(s)){s.body&&(!i||i(s))&&o(s.body,c);return}if(y(s,`Identifier`)){let e=T(s,s.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&o(t,c);return}if(!(!y(s,`MemberExpression`)||!Yae.has(C(s)??``)))for(let n of e.arguments??[]){if(r&&!r(e,n))continue;let a=O(n);if(t(a))a.body&&(!i||i(a))&&o(a.body,c);else if(y(a,`Identifier`)){let e=T(a,a.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&o(t,c)}}};u(e,!0),a.delete(e)};o(e,new Map)},eo=(e,n)=>{if(!t(e))return;let r=e.body;r&&A(r,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:n(e))},to=(e,t,n,r=e,i=new Set)=>{let a=O(e);if(y(a,`ObjectExpression`))return a;if(!y(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||Ht(o,r,n)||t.some(e=>Wn(a,e,r,n))?null:(i.add(o.id),to(o.initializer,t,n,r,i))},no=new Set([`window`,`globalThis`,`global`,`self`]),Zae=new Set([`body`,`documentElement`,`visualViewport`]),Qae=new Set([`initPlaces`,`places`]),ro=new Set([`forceUpdate`,`setState`]),io=`mobx-react`,ao=`disposeOnUnmount`,$ae=[`handler`],oo=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),eoe=new Map([[`removeEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`removeListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`off`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`unsubscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),so=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),toe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),co=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),lo=(e,t)=>{let n=b(e);if(!n)return!1;let r=[];if(eo(n,t=>{y(t,`AwaitExpression`)&&t.range[0]<e.range[0]&&r.push(t)}),r.length===0)return!1;let i=t.cfg?.cfgFor(n),a=i?.blockOf(e);if(!i||!a)return!0;let o=new Set([i.entry]),s=[i.entry];for(;s.length>0;){let e=s.pop();if(!e)break;for(let t of e.successors)o.has(t.to)||(o.add(t.to),s.push(t.to))}let c=!1;for(let e of r){if(c)break;let t=i.blockOf(e);if(!t||!o.has(t))continue;if(t===a){c=!0;break}let n=new Set([t]),r=[t];for(;r.length>0;){let e=r.pop();if(!e)break;for(let t of e.successors){if(t.to===a){c=!0;break}n.has(t.to)||(n.add(t.to),r.push(t.to))}}}return c},uo=e=>{if(!y(e,`CallExpression`))return null;let t=O(e.callee);return y(t,`Identifier`)?t.name:null},fo=(e,t)=>{let n=uo(e),r=y(e,`CallExpression`)?O(e.callee):null;return!!(n&&y(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&he(e,n,`mobx`)===`runInAction`)},po=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(y(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?O(i.init):null;return y(e,`Property`)&&y(n,`ObjectPattern`)&&y(a,`Identifier`)&&no.has(a.name)&&t.isGlobalReference(a)?S(e,{allowComputedString:!0}):null}let a=r.initializer?O(r.initializer):null;if(y(a,`Identifier`))return po(a,t,n);if(!y(a,`MemberExpression`))return null;let o=O(a.object);return y(o,`Identifier`)&&no.has(o.name)&&t.isGlobalReference(o)?C(a):null},mo=(e,t)=>{if(!y(e,`CallExpression`))return null;let n=O(e.callee);if(uo(e)&&y(n,`Identifier`))return po(n,t);if(!y(n,`MemberExpression`))return null;let r=O(n.object);return!y(r,`Identifier`)||!no.has(r.name)||T(r,r.name)?null:C(n)},ho=e=>y(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:S(e,{allowComputedString:!0}),go=new WeakMap,_o=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},vo=e=>{let n=go.get(e);if(n)return n;let r=new Set,i=new Map,a=new Map;if(y(e,`ClassBody`)){for(let n of e.body){let e=ho(n);e&&(y(n,`MethodDefinition`)&&(n.kind===`get`||n.kind===`set`)&&r.add(e),(y(n,`MethodDefinition`)||y(n,`PropertyDefinition`))&&n.value&&t(n.value)&&i.set(e,n.value))}A(e,t=>{let n=y(t,`AssignmentExpression`)?O(t.left):y(t,`UpdateExpression`)?O(t.argument):null;if(!y(n,`MemberExpression`)||!y(O(n.object),`ThisExpression`))return;let r=C(n);if(!r)return;let i=_o(t,e),o=a.get(r)??[];o.push({node:t,enclosingMemberName:i?ho(i):null,isAssignment:y(t,`AssignmentExpression`)}),a.set(r,o)})}let o={accessorNames:r,memberFunctionsByName:i,instanceWritesByName:a};return go.set(e,o),o},yo=(e,t,n)=>{if(!e||!y(e,`ClassBody`))return null;let r=vo(e),i=r.memberFunctionsByName.get(t);return i?(r.instanceWritesByName.get(t)??[]).some(e=>e.isAssignment&&(!n||e.node.range[0]<=n.range[0]))?null:i:null},bo=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),$a(e,e=>{let i=n(e);if(i===!1||!y(e,`CallExpression`))return i;let a=O(e.callee);if(!y(a,`MemberExpression`)||!y(O(a.object),`ThisExpression`))return;let o=C(a),s=o?yo(t,o,e):null;s&&bo(s,t,n,r)}))},noe=(e,t,n)=>{let r=new Set,i=new Map,a=(e,o)=>{let s=i.get(e);s===!0||s===o||(i.set(e,o),$a(e,e=>{if(n.cfg&&!B(e,n))return!1;if(o&&r.add(e),!y(e,`CallExpression`))return;let i=O(e.callee);if(!y(i,`MemberExpression`)||!y(O(i.object),`ThisExpression`))return;let s=C(i),c=s?yo(t,s,e):null;c&&a(c,o||lo(e,n))}))};return a(e,!1),r},roe=(e,t,n,r)=>{let i=b(e),a=b(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return A(n??t,t=>{if(!y(t,`CallExpression`))return;let i=O(t.callee);if((y(i,`Identifier`)?M(i,r.scopes):y(i,`MemberExpression`)&&y(O(i.object),`ThisExpression`)?yo(n,C(i)??``,t):null)!==e)return;let a=b(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(lo(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},xo=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return $a(e,e=>{if(i)return!1;if(fo(e,n))return i=!0,!1;if(!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||!y(O(a.object),`ThisExpression`))return;let o=C(a);if(o&&ro.has(o))return i=!0,!1;let s=o?yo(t,o,e):null;if(s&&xo(s,t,n,r))return i=!0,!1}),i},So=(e,n,r=new Set)=>{let i=O(e);if(r.has(i))return null;if(r.add(i),t(i))return i;if(y(i,`Identifier`)){let e=T(i,i.name)?.initializer;return e?So(e,n,r):null}let a=y(i,`CallExpression`)?O(i.callee):null,o=(y(i,`CallExpression`)&&y(a,`MemberExpression`)&&C(a)===`bind`&&i.arguments?.[0]&&y(O(i.arguments[0]),`ThisExpression`)?O(a.object):null)??i,s=y(o,`MemberExpression`)&&y(O(o.object),`ThisExpression`)?C(o):null;return s?yo(n,s,i):null},ioe=(e,n,r)=>{let i=So(e,n);if(!t(i))return!1;let a=i.body;if(!a)return!1;let o=!1;return $a(a,e=>{if(o)return;if(fo(e,r)){o=!0;return}if(!y(e,`CallExpression`))return;let t=O(e.callee);if(y(t,`MemberExpression`)&&y(O(t.object),`ThisExpression`)){let i=C(t);if(i&&ro.has(i)){o=!0;return}let a=i?yo(n,i,e):null;if(a&&!xo(a,n,r))return;o=!0}}),o},aoe=(e,t,n)=>{let r=new Set,i=new Set;bo(e,t,e=>{if(y(e,`VariableDeclarator`)){let t=e.init?O(e.init):null,i=y(t,`CallExpression`)?O(t.callee):null;if(t&&(y(t,`NewExpression`)||y(t,`ObjectExpression`)||y(t,`ArrayExpression`)||y(t,`CallExpression`)&&y(i,`Identifier`)&&Qae.has(i.name))){let t=new Set;qi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}else if(y(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;qi(e.id,t);let i=n.scopeFor(e);for(let e of t){let t=i.symbolsByName.get(e);t&&r.add(t.id)}}}}if(y(e,`AssignmentExpression`)&&y(e.left,`MemberExpression`)){let t=O(e.right),r=y(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(y(e,`CallExpression`))for(let t of e.arguments??[]){let e=O(t),a=y(e,`Identifier`)?n.symbolFor(e):null;a&&r.has(a.id)&&i.add(a.id)}});for(let e of i)r.delete(e);return r},ooe=e=>{let t=O(e);for(;y(t,`MemberExpression`);){let e=O(t.object);if(y(e,`ThisExpression`))return C(t);t=e}return null},Co=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!y(n,`ClassBody`))return!0;let r=vo(n);if(r.accessorNames.has(e))return!1;let i=_o(t,n),a=i?ho(i):null;return!(r.instanceWritesByName.get(e)??[]).some(({node:e,enclosingMemberName:n})=>{let r=a===`componentDidMount`&&n===`componentDidMount`&&e.range[0]<=t.range[0],i=a===`constructor`&&n===`constructor`&&e.range[0]<=t.range[0],o=a===`componentWillUnmount`&&n===`componentDidMount`,s=a===`componentWillUnmount`&&n===`componentWillUnmount`&&e.range[0]>t.range[0];return!(n===`constructor`&&a!==`constructor`)&&!r&&!i&&!o&&!s&&!((a===`constructor`||a===`componentDidMount`)&&n===`componentWillUnmount`)})},soe=(e,n)=>{if(!y(n,`ClassBody`))return!1;let r=e.parent;for(;r&&r!==n;){if(t(r))return r.parent?.parent===n;if(y(r,`IfStatement`)||y(r,`ConditionalExpression`)||y(r,`LogicalExpression`)||y(r,`SwitchStatement`)||y(r,`TryStatement`)||y(r,`CatchClause`)||y(r,`ForStatement`)||y(r,`ForInStatement`)||y(r,`ForOfStatement`)||y(r,`WhileStatement`)||y(r,`DoWhileStatement`))return!1;r=r.parent}return!1},coe=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=v(e.identifier),r=t.parent;if(!y(r,`AssignmentExpression`)||r.right!==t||!y(r.left,`MemberExpression`)||!y(O(r.left.object),`ThisExpression`)||!soe(r,n))return[];let i=C(r.left);return i&&Co(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!y(a,`AssignmentExpression`))return null;let o=b(r.declarationNode);if(!o||b(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return eo(o,e=>{if(y(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},wo=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=coe(i,t,n);if(a)return wo(a,t,n,r);if(e.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=O(e.initializer);return y(a,`Identifier`)||y(a,`MemberExpression`)?wo(a,t,n,r):`${i.name}#${e.id}`}return e.kind===`const`||e.kind===`function`&&e.references.every(e=>e.flag===`read`)||e.kind===`import`?`${i.name}#${e.id}`:null}if(y(i,`ThisExpression`))return`this`;if(!y(i,`MemberExpression`))return null;let a=ooe(i);if(!a){let e=O(i.object),n=C(i);return!y(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Zae.has(n)?null:`${e.name}.${n}`}if(a&&(!y(O(i.object),`ThisExpression`)||!Co(a,i,n)))return null;let o=wo(i.object,t,n,r),s=C(i);return o&&s?`${o}.${s}`:null},To=(e,t,n)=>{let r=O(e);return y(r,`Literal`)?JSON.stringify(r.value):wo(r,t,n)},Eo=(e,t,n)=>{let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(y(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=wo(r,t,n);return i?`reference:${i}`:null},loe=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||Ht(r,n,t)||Wn(n,`capture`,n,t))return null;let i=V({node:n,scopes:t});return i?`options:${i}`:null},Do=(e,t)=>{let n=O(e);return y(n,`Literal`)?!n.value:y(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Oo=(e,t,n,r)=>{let i=O(e.callee);if(!y(i,`MemberExpression`))return null;let a=C(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:$ae}:t,s=o.captureOptionsIndex===void 0?o.identityArgumentKinds.length:o.captureOptionsIndex+1;if(e.arguments.length<o.identityArgumentKinds.length||e.arguments.length>s)return null;let c=To(i.object,n,r);if(!c)return null;let l=[];for(let[t,i]of o.identityArgumentKinds.entries()){let a=e.arguments?.[t];if(!a||y(a,`SpreadElement`))return null;let o=i===`event`?Eo(a,n,r):To(a,n,r);if(!o)return null;l.push(o)}let u=`${c}|${l.join(`|`)}`;if(o.captureOptionsIndex===void 0)return u;let d=e.arguments?.[o.captureOptionsIndex];if(d&&y(d,`SpreadElement`))return null;let f=`false`;if(d){let e=O(d);if(Do(e,n))f=`false`;else if(y(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=to(d,[`capture`],n),t=loe(d,n);if(!e||e.properties.some(e=>!y(e,`Property`)||S(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`capture`);if(r&&y(r,`Property`)&&Do(r.value,n))f=`false`;else if(r&&y(r,`Property`)&&y(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},uoe=(e,t,n,r)=>{let i=Oo(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},ko=(e,t,n)=>{let r=O(e.callee);if(!y(r,`MemberExpression`))return[];let i=wo(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||y(o,`SpreadElement`))return a;let s=Eo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},doe=(e,t,n)=>{let r=e.arguments[2];if(!r||y(r,`SpreadElement`))return null;let i=to(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`signal`);if(!a||!y(a,`Property`))return null;let o=O(a.value);if(!y(o,`MemberExpression`)||C(o)!==`signal`)return null;let s=wo(o.object,t,n);return s?`abort:${s}`:null},Ao=(e,t,n,r,i)=>{let a=toe.get(t)??[n.releaseMethodName],o=Oo(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?doe(e,r,i):null;return c&&s.push(c),so.has(t)?[...s,...ko(e,r,i)]:s},jo=(e,t,n)=>{let r=v(e),i=r.parent,a=y(i,`AssignmentExpression`)&&i.right===r?i.left:y(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?wo(a,t,n):null},foe=(e,t)=>{let n=O(e.callee);if(y(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&he(e,n.name,io)===ao;if(!y(n,`MemberExpression`))return!1;let r=O(n.object);return C(n)===ao&&y(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&Jn(e,r.name,io)},Mo=(e,t,n)=>{let r=O(e.callee);if(y(r,`MemberExpression`)){let i=C(r),a=i?eoe.get(i):void 0;if(a){let r=uoe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=ko(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!y(O(r.object),`ThisExpression`)){let e=wo(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=wo(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=wo(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=mo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!y(a,`SpreadElement`)){let e=wo(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},No=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return $a(e,e=>{if(a||e.range[0]>=r)return;if(y(e,`ThrowStatement`)||y(e,`NewExpression`))return a=!0,!1;if(!y(e,`CallExpression`)||Mo(e,n,t).length>0||Qa(e,n))return;let o=O(e.callee);if(y(o,`MemberExpression`)){if(y(O(o.object),`ThisExpression`)){let r=C(o),a=r?yo(t,r,e):null;if(a&&!No(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=M(o,n);if(!(s&&!No(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},poe=(e,n,r)=>{let i=new Map;return bo(e,n,e=>{if(!y(e,`CallExpression`))return;let a=e.arguments?.[0],o=a&&!y(a,`SpreadElement`)?O(a):null;if(!foe(e,r.scopes)||!y(o,`ThisExpression`))return;let s=e.arguments?.[1];if(!s||y(s,`SpreadElement`))return;let c=So(s,n);if(!t(c))return;let l=new Map;bo(c,n,e=>{if(y(e,`CallExpression`))for(let t of Mo(e,r.scopes,n)){let n=l.get(t)??[];n.push(e),l.set(t,n)}});for(let[t,n]of l){if(!Ka(c,n,r))continue;let a=i.get(t)??[];a.push(e),i.set(t,a)}}),i},Po=(e,n,r,i=new Set)=>{let a=new Set;if(!e||!t(e)||i.has(e))return a;i.add(e);let o=null;$a(e,t=>{y(t,`AwaitExpression`)&&b(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])});let s=new Map;bo(e,n,t=>{if(!y(t,`CallExpression`)||o!==null&&b(t)===e&&t.range[0]>o)return;let a=No(e,n,r.scopes,t.range[0]),c=O(t.callee);if(y(c,`Identifier`)){let e=Po(M(c,r.scopes),n,r,i);for(let n of a?[]:e){let e=s.get(n)??[];e.push(t),s.set(n,e)}}if(y(c,`MemberExpression`)&&y(O(c.object),`ThisExpression`)){let e=C(c),a=Po(e?yo(n,e,t):null,n,r,i);for(let e of a){let n=s.get(e)??[];n.push(t),s.set(e,n)}}for(let e of a?[]:Mo(t,r.scopes,n)){let n=s.get(e)??[];n.push(t),s.set(e,n)}});for(let[t,n]of s)Ka(e,n,r)&&a.add(t);return a},Fo=(e,n,r,i=new Set)=>{let a=new Map,o=new Map;if(!e||!t(e)||i.has(e))return a;i.add(e);let s=null;$a(e,t=>{y(t,`AwaitExpression`)&&b(t)===e&&(s===null||t.range[0]<s)&&(s=t.range[0])}),$a(e,t=>{if(!y(t,`CallExpression`)||s!==null&&b(t)===e&&t.range[0]>s||No(e,n,r.scopes,t.range[0]))return;for(let i of Mo(t,r.scopes,n)){let n=o.get(i)??[];n.push(t),o.set(i,n),Ka(e,[t],r)&&a.set(i,(a.get(i)??0)+1)}if(!Ka(e,[t],r))return;let c=O(t.callee),l=y(c,`MemberExpression`)&&y(O(c.object),`ThisExpression`)?C(c):null,u=Fo(l?yo(n,l,t):y(c,`Identifier`)?M(c,r.scopes):null,n,r,new Set(i));for(let[e,t]of u)a.set(e,(a.get(e)??0)+t)});for(let[t,n]of o){if(!Ka(e,n,r))continue;let i=1;[...n.keys()].every(t=>Ka(e,n.filter(e=>e!==n[t]),r))&&(i+=1),a.set(t,Math.max(a.get(t)??0,i))}return a},moe=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(y(e,`CallExpression`))for(let i of Mo(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},Io=(e,n)=>{let r=e.parent;for(;r&&r!==n;){if(t(r))return null;if(y(r,`ForStatement`)||y(r,`ForInStatement`)||y(r,`ForOfStatement`)||y(r,`WhileStatement`)||y(r,`DoWhileStatement`))return r;r=r.parent}return null},hoe=(e,t,n)=>{let r=n.scopes,i=new Map;bo(e,t,e=>{if(!y(e,`CallExpression`))return;if(n.cfg&&!B(e,n))return!1;let a=O(e.callee);if(!y(a,`MemberExpression`))return;let o=C(a),s=o?oo.get(o):void 0;if(!s)return;let c=Oo(e,s,r,t);if(!c)return;let l=i.get(c)??[];l.push(e),i.set(c,l)});let a=new Map;for(let[t,n]of i){if(n.some(t=>!!Io(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Ua(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},Lo=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||Ht(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Lo(a,t,n,r)):!1}if(y(i,`MemberExpression`)){let e=C(i),a=O(i.object);if(e!==`current`)return Lo(a,t,n,r);if(!y(t,`ClassBody`)||!y(a,`MemberExpression`))return!1;let o=C(a),s=O(a.object);if(!o||!y(s,`ThisExpression`))return!1;let c=t.body?.find(e=>ho(e)===o);if(!c||!y(c,`PropertyDefinition`)||c.static||!y(c.value,`CallExpression`)||!k(c.value,`createRef`,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!1,resolveNamedAliases:!0}))return!1;let l=i;for(;l&&l.parent!==t;)l=l.parent;let u=l?Bo(l):null,d=!1;return u&&$a(u,e=>{if(d||e.range[0]>=i.range[0]||!y(e,`AssignmentExpression`))return;let t=O(e.left);y(t,`MemberExpression`)&&y(O(t.object),`ThisExpression`)&&C(t)===o&&(d=!0)}),!d}return!1},Ro=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||Ht(e,i,n))return!1;let a=T(i,i.name)?.initializer;return a?(r.add(e.id),Ro(a,t,n,r)):!1}if(!y(i,`CallExpression`))return!1;let a=O(i.callee);if(!y(a,`MemberExpression`))return!1;let o=C(a),s=O(a.object);if((o===`select`||o===`selectAll`)&&y(s,`Identifier`)&&(Jn(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!y(e,`SpreadElement`)&&Lo(e,t,n))}return Ro(a.object,t,n,r)},goe=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!y(e,`CallExpression`))return null;let c=O(e.callee),l=y(c,`MemberExpression`)?C(c):null;if(l&&oo.has(l)&&y(c,`MemberExpression`)){let u=oo.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=O(c.object),m=Lo(p,i,s),h=Ro(p,i,s);for(;;){if(p=O(p),y(p,`CallExpression`)){p=O(p.callee);continue}if(y(p,`MemberExpression`)){p=O(p.object);continue}break}let g=y(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,ee=u?Oo(e,u,s,i):null,te=u?Ao(e,l,u,s,i):[],ne=te.flatMap(e=>n.get(e)??[]),re=te.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ie=ne.filter(t=>Ga(e,[t],a)).length,ae=Io(e),oe=!!(ae&&ne.some(t=>Io(t)===ae&&Ga(e,[t],a))),se=ee?r.get(ee)??1:1,ce=!!(ee&&(Ga(e,re,a)||Ga(e,ne,a)&&(l===`addEventListener`||oe||ie>=se)));if(!(!f&&!_&&!ce&&!m&&!h))return null;let le=jo(e,s,i),ue=O(c.object),de=y(ue,`Identifier`)?he(e,ue.name,`react-native`):null,fe=y(ue,`Identifier`)&&(de!==null&&co.has(de)||s.isGlobalReference(ue)&&co.has(ue.name)),pe=l===`subscribe`&&le?[`returned:unsubscribe:${le}`,`returned:call:${le}`]:(l===`addEventListener`||l===`addListener`)&&fe&&le?[`returned:remove:${le}`]:[];return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:so.has(l)?ee:null,registrationCount:so.has(l)?se:1,releaseKeys:u?[...Ao(e,l,u,s,i),...pe]:pe}}let u=mo(e,s);if(u===`setInterval`){let t=jo(e,s,i);return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!ioe(e.arguments[0],i,s))return null;let t=jo(e,s,i);return{isAcquiredAfterSuspension:o||lo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},zo=e=>(y(e,`MethodDefinition`)||y(e,`PropertyDefinition`))&&t(e.value)?e.value:null,Bo=e=>{let n=zo(e);return n&&t(n)?n.body??null:null},Vo=x({id:`class-component-missing-component-will-unmount-teardown`,title:`Class component acquires a resource with no teardown`,severity:`warn`,category:`Bugs`,requires:[`react`],recommendation:"Release listeners and timers acquired in `componentDidMount`/`constructor` by adding a `componentWillUnmount` that removes them (or use MobX `disposeOnUnmount`).",create:e=>({ClassBody(t){let n=t.parent;if(!n||!Ya(n))return;let r=t.body??[],i=r.find(e=>ho(e)===`componentWillUnmount`),a=Po(i?zo(i):null,t,e),o=Fo(i?zo(i):null,t,e);for(let n of r){let r=ho(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=Bo(n);if(!i)continue;let s=aoe(i,t,e.scopes),c=moe(i,t,e.scopes),l=hoe(i,t,e),u=noe(i,t,e),d=[];if(bo(i,t,n=>{if(e.cfg&&!B(n,e))return!1;let r=goe(n,s,c,l,t,e,u.has(n)||roe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=poe(i,t,e),p=d.find(t=>{if(t.isAcquiredAfterSuspension||t.releaseKeys.length===0)return!0;if(t.releaseKeys.some(e=>a.has(e))){if(t.listenerIdentityKey&&t.registrationCount>1){let e=t.releaseKeys.some(e=>e.startsWith(`listener:removeAllListeners:`)&&a.has(e)),n=t.releaseKeys.reduce((e,t)=>t.startsWith(`listener:removeAllListeners:`)?e:e+(o.get(t)??0),0);if(!e&&n<t.registrationCount)return!0}return!1}return!t.releaseKeys.some(n=>{let r=f.get(n)??[];return Ga(t.node,r,e)})});if(p){e.report({node:p.node,message:"This class registers a listener or timer during mount without a matching teardown on every unmount path, so it can keep firing after the component unmounts; release it in `componentWillUnmount`."});return}}}})}),Ho=(e,t,n={})=>{if(!e||!t)return e===t;let r=O(e),i=O(t);if(r!==e||i!==t)return Ho(r,i,n);if(e.type!==t.type)return!1;if(y(e,`ThisExpression`))return!0;if(y(e,`Identifier`)&&y(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(y(e,`PrivateIdentifier`)&&y(t,`PrivateIdentifier`))return e.name===t.name;if(y(e,`Literal`)&&y(t,`Literal`))return e.value===t.value;if(y(e,`MemberExpression`)&&y(t,`MemberExpression`))return e.computed===t.computed?Ho(e.object,t.object,n)&&Ho(e.property,t.property,e.computed?n:{}):!1;if(y(e,`CallExpression`)&&y(t,`CallExpression`)){if(!Ho(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Ho(e,i[t],n)):!1}return!1},_oe=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),voe=/button|link|nav|anchor/i,yoe=/(?:button|link|anchor)$/i,Uo=/^[A-Z]/,boe=[`onClick`,`onPress`],Wo=e=>ba(O(e)),Go=(e,t)=>{let n=O(e);if(ba(n))return!0;let r=w(n,t);return r?.kind!==`const`||!r.initializer?!1:ba(O(r.initializer))},Ko=(e,t,n=new Set)=>{let r=O(e);if(Go(r,t))return null;if(y(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return Go(e,t)?Ko(i,t,n):Go(i,t)?Ko(e,t,n):null}if(y(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&y(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Ko(e.initializer,t,n)):r}if(y(r,`ArrowFunctionExpression`)||y(r,`FunctionExpression`)||y(r,`FunctionDeclaration`)){let e=O(r.body);if(!y(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return y(t,`ExpressionStatement`)?t.expression:y(t,`ReturnStatement`)&&t.argument?O(t.argument):null}return r},qo=(e,t)=>!e.value||!y(e.value,`JSXExpressionContainer`)?null:Ko(e.value.expression,t),Jo=(e,t)=>{let n=P(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(y(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!y(n.value,`JSXExpressionContainer`))return!0;let r=O(n.value.expression);return!y(r,`Literal`)||r.value!==!1},Yo=(e,t)=>{let n=P(e.attributes,t);if(!n?.value)return!1;if(y(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!y(n.value,`JSXExpressionContainer`))return!0;let r=O(n.value.expression);return y(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!Wo(r)},Xo=e=>{if(y(e,`JSXText`))return e.value.trim().length>0;if(y(e,`JSXElement`))return Zo(e);if(y(e,`JSXFragment`))return e.children.some(e=>Xo(e));if(!y(e,`JSXExpressionContainer`))return!1;let t=O(e.expression);return y(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:Wo(t)?!1:y(t,`JSXElement`)?Zo(t):y(t,`JSXFragment`)?t.children.some(e=>Xo(e)):!0},Zo=e=>Yo(e.openingElement,`aria-label`)||Yo(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Xo(e)),xoe=e=>{let t=P(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=Mi(t.value);return n!==null&&n<0},Soe=(e,t)=>br(e,t)||Jo(e,`hidden`),Coe=(e,t)=>{let n=e.openingElement,r=xr(n.name);if(!r)return!1;if(xi.has(r)){if(!_oe.has(r))return!1}else if(t){if(!Uo.test(r)||!yoe.test(r))return!1}else if(!Uo.test(r)||!voe.test(r))return!1;return t?r===`a`&&!P(n.attributes,`href`)||Jo(n,`disabled`)||Jo(n,`isDisabled`)||Jo(n,`aria-disabled`)||xoe(n)?!1:Zo(e):!0},Qo=(e,t,n,r)=>{let i=e=>Qo(e,t,n,r);if(y(e,`JSXElement`)){if(t&&Soe(e.openingElement,r))return!1;if(Coe(e,t!==null)){if(!t)return!0;for(let r of boe){let i=P(e.openingElement.attributes,r),a=i?qo(i,n):null;if(a&&Ho(t,a))return!0}}return e.children.some(e=>i(e))}return y(e,`JSXFragment`)?e.children.some(e=>i(e)):t?y(e,`JSXExpressionContainer`)?i(e.expression):y(e,`LogicalExpression`)?i(e.left)||i(e.right):y(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},$o=(e,t,n,r)=>{if(!e||!y(e,`JSXElement`))return!1;let i=t?qo(t,n):null;return t&&!i?!1:e.children.some(e=>Qo(e,i,n,r))},woe=new Set([`focus`,`select`]),Toe=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Eoe=new Set([`getElementById`,`querySelector`]),Doe=new Set([`global`,`globalThis`,`window`]),Ooe=e=>{if(!e)return null;let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return null;let n=O(t.callee);if(!y(n,`MemberExpression`))return null;let r=n.property;return y(r,`Identifier`)?r.name:null},es=(e,t)=>{let n=Ooe(e);return n!==null&&(woe.has(n)||t&&Toe.has(n))},koe=(e,t)=>{let n=O(e);return y(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!y(n,`MemberExpression`)||!y(n.object,`Identifier`)||!y(n.property,`Identifier`)||n.property.name!==`document`?!1:Doe.has(n.object.name)&&t.isGlobalReference(n.object)},ts=e=>{let t=O(e);return y(t,`Identifier`)||y(t,`Literal`)?!0:y(t,`TemplateLiteral`)&&t.expressions.every(e=>ts(e))},Aoe=(e,t)=>{if(!y(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!y(n.id,`Identifier`)||!n.init)return null;let r=O(n.init);if(!y(r,`CallExpression`)||r.arguments.length!==1||y(r.arguments[0],`SpreadElement`)||!ts(r.arguments[0]))return null;let i=O(r.callee);return!y(i,`MemberExpression`)||!y(i.property,`Identifier`)||!Eoe.has(i.property.name)||!koe(i.object,t)?null:n.id.name},ns=e=>y(e,`ReturnStatement`)?e.argument===null:!y(e,`BlockStatement`)||e.body.length!==1?!1:ns(e.body[0]),joe=e=>{if(!y(e,`IfStatement`)||e.alternate||!ns(e.consequent))return!1;let t=O(e.test),n=y(t,`ChainExpression`)?t.expression:t;if(!y(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=O(n.callee),i=y(r,`MemberExpression`)?O(r.object):null;return y(r,`MemberExpression`)&&y(r.property,`Identifier`)&&r.property.name===`closest`&&y(i,`MemberExpression`)&&y(i.object,`Identifier`)&&y(i.property,`Identifier`)&&i.property.name===`target`&&y(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Moe=(e,t)=>{if(!y(e,`ExpressionStatement`))return!1;let n=O(e.expression);if(!y(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=O(n.callee);if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return y(i,`Identifier`)&&i.name===t&&y(r.property,`Identifier`)&&r.property.name===`focus`},Noe=(e,t,n)=>{if(!e)return!1;if(es(e,n))return!0;if(!y(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!joe(r[0]),a=r[i],o=a?Aoe(a,t):null;return o?r.length===i+2&&Moe(r[i+1],o):i>0?!1:r.every(e=>y(e,`ExpressionStatement`)&&es(e.expression,n))},rs=(e,t)=>ba(e)&&(!y(e,`Identifier`)||t.isGlobalReference(e)),is=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ConditionalExpression`)){let e=O(r.consequent),i=O(r.alternate),a=null;return rs(e,t)&&(a=is(i,t,n)),rs(i,t)&&(a=is(e,t,n)),a?{...a,isConditional:!0}:null}if(y(r,`Identifier`)){let e=t.symbolFor(r);return!e?.initializer||![`const`,`let`,`function`].includes(e.kind)||e.references.some(e=>e.flag!==`read`)||n.has(e.id)?null:(n.add(e.id),is(e.initializer,t,n))}return y(r,`ArrowFunctionExpression`)||y(r,`FunctionExpression`)||y(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},as=(e,t)=>{let n=is(e,t);return n?Noe(n.handlerFunction.body??null,t,!n.isConditional):!1},os=(e,t)=>!e.value||!y(e.value,`JSXExpressionContainer`)?!1:as(e.value.expression,t),ss=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=dr(t);return n!==null&&si.has(n)},cs=e=>{if(y(e,`Identifier`)||y(e,`PrivateIdentifier`))return e.name},ls=e=>{if(y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`))return e},Poe=(e,t)=>{for(let n of e.body){if(!y(n,`MethodDefinition`)&&!y(n,`PropertyDefinition`)||cs(n.key)!==t)continue;let e=ls(n.value);if(e)return e}},us=(e,t)=>{for(let n of e.properties){if(!y(n,`Property`)||cs(n.key)!==t)continue;let e=ls(n.value);if(e)return e}},ds=e=>{let t=cs(e.property);if(t===void 0)return;let n=e.object;if(y(n,`ThisExpression`)){let n=e.parent;for(;n;){if(y(n,`ClassBody`))return Poe(n,t);if(y(n,`ObjectExpression`)){let e=us(n,t);if(e)return e}n=n.parent}return}if(y(n,`Identifier`)){let e=T(n,n.name);if(y(e?.initializer,`ObjectExpression`))return us(e.initializer,t)}},Foe=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),fs=e=>{if(!e)return!1;let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return!1;let n=t.callee;return!y(n,`MemberExpression`)||!y(n.property,`Identifier`)?!1:Foe.has(n.property.name)},ps=e=>{if(!e)return!1;if(fs(e))return!0;if(y(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!y(e,`ExpressionStatement`)||!fs(e.expression))return!1;return!0}return!1},ms=e=>{if(!e.value||!y(e.value,`JSXExpressionContainer`))return!1;let t=O(e.value.expression);return y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)?ps(t.body):y(t,`MemberExpression`)?ps(ds(t)?.body):!1},hs=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],gs=[`onClick`,`onClickCapture`],Ioe=new Set([...gs,...hs].map(e=>e.toLowerCase())),Loe=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Roe=(e,t)=>{let n=O(e);if(y(n,`ObjectExpression`))return n;if(!y(n,`Identifier`))return null;let r=w(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=O(r.initializer);return y(i,`ObjectExpression`)?i:null},_s=(e,t,n,r)=>{let i=Roe(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(y(e,`SpreadElement`)){if(!_s(e.argument,t,n,r)){a=!1;break}continue}if(!y(e,`Property`)){a=!1;break}let i=S(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Loe.has(o)){a=!1;break}Ioe.has(o)&&n.set(o,e.value)}return r.delete(i),a},zoe=(e,t)=>{let n=new Map;for(let r of e)if(y(r,`JSXSpreadAttribute`)&&!_s(r.argument,t,n,new Set))return null;return n},Boe=new Set([`tr`,`td`,`th`,`canvas`]),Voe=new Set([`motion`,`styled`]),Hoe=e=>{let t=e.name;if(!y(t,`JSXMemberExpression`))return null;let n=t.object;if(!y(n,`JSXIdentifier`)||!Voe.has(n.name))return null;let r=t.property.name;return r&&xi.has(r)?r:null},Uoe=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Woe=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!y(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Uoe.has(r.toLowerCase()))},Goe=e=>{if(!y(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!y(e,`MemberExpression`))return null;let t=e.property;return y(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},vs=e=>{if(!e||typeof e!=`object`)return!1;if(Goe(e))return!0;let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n)){for(let e of n)if(e&&typeof e==`object`&&typeof e.type==`string`&&vs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&vs(n))return!0}return!1},ys=e=>{let t=O(e);if(y(t,`Identifier`)){let e=T(t,t.name);if(!e?.initializer)return null;t=O(e.initializer)}return y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`)?t:null},Koe=e=>!e.value||!y(e.value,`JSXExpressionContainer`)?null:ys(e.value.expression),qoe=e=>{let t=Koe(e);return t?vs(t.body??null):!1},Joe=(e,t)=>e===`li`&&!!(P(t.attributes,`onMouseEnter`)||P(t.attributes,`onMouseOver`)),bs=x({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=ct(e.filename);return{JSXOpeningElement(n){if(t)return;let r=Hoe(n)??hr(n,e.settings);if(!xi.has(r)||r===`label`||!Boe.has(r)&&ji(r,n))return;let i=zoe(n.attributes,e.scopes);if(!i)return;let a=P(n.attributes,`onClick`)??P(n.attributes,`onClickCapture`),o=gs.map(e=>i.get(e.toLowerCase())).find(e=>e!==void 0);if(!a&&!o||a&&ms(a)||a&&os(a,e.scopes)||o&&as(o,e.scopes))return;let s=o?ys(o):null;s&&vs(s.body??null)||Woe(n)||Joe(r,n)||a&&qoe(a)||$o(n.parent,null,e.scopes,e.settings)||a&&$o(n.parent,a,e.scopes,e.settings)||br(n,e.settings)||ss(n)||hs.some(e=>P(n.attributes,e)||i.has(e.toLowerCase()))||e.report({node:n.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),xs=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=O(e.callee);if(!y(r,`MemberExpression`)||r.computed)return!1;let i=O(r.object);return y(i,`Identifier`)&&i.name===t&&y(r.property,`Identifier`)&&r.property.name===n},Ss=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=O(n.object);return y(r,`Identifier`)&&r.name===`localStorage`&&y(n.property,`Identifier`)&&n.property.name===t},Yoe=e=>{let n=e.handler;if(!n)return!1;let r=!1,i=!1;return A(n.body,e=>{if(t(e))return!1;y(e,`ReturnStatement`)&&(r=!0),y(e,`ThrowStatement`)&&(i=!0)}),r&&!i},Xoe=(e,n)=>{let r=O(e);if(!y(r,`Identifier`))return null;let i=n.symbolFor(r);if(!i)return null;let a=i.kind===`function`?i.declarationNode:i.initializer;return t(a)?a:null},Zoe=(e,n)=>{if(!t(e))return!1;let r=e.params?.[0];if(!r||!y(r,`Identifier`))return!1;let i=n.symbolFor(r);if(!i)return!1;let a=new Set([i.id]),o=!1;return A(e.body,e=>{if(t(e))return!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.init){let t=O(e.init);if(y(t,`Identifier`)){let r=n.symbolFor(t);if(r&&a.has(r.id)){let t=n.symbolFor(e.id);t&&a.add(t.id)}}}if(!y(e,`UnaryExpression`)||e.operator!==`typeof`)return;let r=O(e.argument);if(!y(r,`MemberExpression`))return;let i=O(r.object);if(!y(i,`Identifier`))return;let s=n.symbolFor(i);s&&a.has(s.id)&&(o=!0)}),o},Cs=(e,t)=>{e.set(t,(e.get(t)??0)+1)},Qoe=e=>{let t=e.parent;return!!(t&&y(t,`ReturnStatement`)&&t.argument===e)},$oe=({programNode:e,scopes:n,resolveKey:r})=>{let i=new Map,a=new Map,o=new Set;A(e,e=>{if(!y(e,`CallExpression`)||!Ss(e,`getItem`))return;let t=e.arguments?.[0];if(!t)return;let n=r(t);n!==null&&Cs(i,n)}),A(e,e=>{if(!y(e,`TryStatement`)||!Yoe(e))return;let i=new Map,s=new Map;A(e.block,e=>{if(t(e))return!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.init){let t=O(e.init);if(y(t,`CallExpression`)&&Ss(t,`getItem`)){let a=t.arguments?.[0],o=n.symbolFor(e.id);if(a&&o){let e=r(a);e!==null&&i.set(o.id,e)}}if(y(t,`CallExpression`)&&xs(t,`JSON`,`parse`)){let r=t.arguments?.[0],a=n.symbolFor(e.id);if(r&&y(r,`Identifier`)&&a){let e=n.symbolFor(r);e&&i.has(e.id)&&s.set(a.id,e.id)}}}if(!y(e,`ConditionalExpression`)||!Qoe(e))return;let c=O(e.test);if(!y(c,`CallExpression`))return;let l=c.arguments?.[0];if(!l||!y(l,`Identifier`))return;let u=n.symbolFor(l);if(!u)return;let d=s.get(u.id);if(d===void 0)return;let f=O(e.consequent);if(!y(f,`Identifier`)||n.symbolFor(f)?.id!==u.id)return;let p=Xoe(c.callee,n);if(!p||!Zoe(p,n))return;let m=i.get(d);m===void 0||o.has(d)||(o.add(d),Cs(a,m))})});let s=new Set;for(let[e,t]of i)a.get(e)===t&&s.add(e);return s},ese=/(?:[._:-]v\d+|@\d+|\bv\d+\b)/i,tse=/[a-z]V\d+/,nse=e=>ese.test(e)||tse.test(e),rse=e=>xs(e,`JSON`,`stringify`),ws=(e,t)=>{if(y(e,`Literal`))return typeof e.value==`string`?e.value:null;if(!y(e,`Identifier`))return null;let n=t.scopes.symbolFor(e);if(!n||n.kind!==`const`)return null;let r=n.initializer;return y(r,`Literal`)&&typeof r.value==`string`?r.value:null},Ts=x({id:`client-localstorage-no-version`,title:`Unversioned localStorage key`,tags:[`test-noise`],severity:`warn`,category:`Correctness`,recommendation:`Put a version in the storage key (e.g. "myKey:v1"). If you change the data shape later, old saved data can be ignored instead of crashing the app.`,create:e=>{let t=null,n=null;return{Program(e){t=e},CallExpression(r){if(!y(r.callee,`MemberExpression`))return;let i=O(r.callee.object);if(!y(i,`Identifier`)||i.name!==`localStorage`||!y(r.callee.property,`Identifier`)||r.callee.property.name!==`setItem`)return;let a=r.arguments?.[0];if(!a)return;let o=r.arguments?.[1];if(!o||!rse(o))return;let s=ws(a,e);s!==null&&(nse(s)||(n===null&&t&&(n=$oe({programNode:t,scopes:e.scopes,resolveKey:t=>ws(t,e)})),!n?.has(s)&&e.report({node:a,message:`${i.name}.setItem("${s}", JSON.stringify(...)) has no version, so changing the data shape later crashes your users' saved sessions. Add one to the key (e.g. "${s}:v1").`})))}}}}),Es=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ds=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Es(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Os=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],ks=(e,t,n,r)=>{if(!y(t,`MemberExpression`))return;let i=C(t),a=z(t.object,r);i&&a&&(Es(e.memberMutationCandidatesByReceiverIdentity,a,n),Ds(e,a,i,n))},ise=(e,t,n)=>{if(y(t,`AssignmentExpression`)){let r=O(t.left),i=z(r,n);i&&Es(e.receiverAssignmentCandidatesByIdentity,i,t),ks(e,r,t,n)}else y(t,`UnaryExpression`)&&t.operator===`delete`&&ks(e,O(t.argument),t,n);if(!y(t,`CallExpression`))return;let r=O(t.callee);if(!y(r,`MemberExpression`)||C(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(y(i,`Literal`)&&typeof i.value==`string`&&a&&!y(a,`SpreadElement`)){let r=z(a,n);r&&(Es(e.memberMutationCandidatesByReceiverIdentity,r,t),Ds(e,r,i.value,t))}},As=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=O(e.callee);if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return C(r)===`defineProperty`&&y(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&y(e.arguments[1],`Literal`)&&e.arguments[1].value===t},ase=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},js=(e,t)=>{let n=O(e);return y(n,`MemberExpression`)&&C(n)===t?n.object:null},Ms=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Ns=(e,t)=>{let n=y(e,`FunctionDeclaration`)?e.id:y(e.parent,`VariableDeclarator`)&&e.parent.init===e&&y(e.parent.id,`Identifier`)?e.parent.id:null,r=n?t.scopes.scopeFor(e).symbolsByName.get(n.name):void 0;if(!r||r.references.length===0)return null;let i=[];for(let n of r.references){let r=n.identifier.parent;if(!y(r,`CallExpression`)||O(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},ose=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!y(i,`MethodDefinition`)||!y(a,`MethodDefinition`)||i.parent!==a.parent||!y(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Ps=(e,t,n,r=new Map)=>{let i=r.get(e)??new Set;if(i.has(t))return!1;let a=new Map(r);a.set(e,new Set([...i,t]));let o=n.cfg.enclosingFunction(e),s=n.cfg.enclosingFunction(t);if(!o||!s)return!1;if(o!==s){if(ose(o,s,e,n))return!0;if(Ms(o,s)){let t=Ns(s,n);return!t&&y(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Ps(e,t,n,a)))}if(Ms(s,o)){let r=Ns(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Ps(e,t,n,a)))}let r=Ns(o,n),i=Ns(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Ps(e,t,n,a)||r.some(e=>Ps(e,t,n,a))):!1}let c=n.cfg.cfgFor(s),l=c?.blockOf(e),u=c?.blockOf(t);if(!c||!l||!u||l===u)return e.range[0]<t.range[0];let d=new Set,f=l===c.entry?[]:[c.entry];for(;f.length>0;){let e=f.shift();if(!(!e||d.has(e))){if(e===u)return!1;d.add(e);for(let t of e.successors)t.to!==l&&f.push(t.to)}}return!0},sse=(e,t,n)=>{let r=n.cfg.enclosingFunction(t);if(!r||e.length<2||e.some(e=>n.cfg.enclosingFunction(e)!==r))return!1;let i=n.cfg.cfgFor(r),a=i?.blockOf(t);if(!i||!a)return!1;let o=new Set(e.map(e=>i.blockOf(e)).filter(e=>e!==null));if(e.some(e=>i.blockOf(e)===a&&e.range[0]<t.range[0]))return!0;o.delete(a);let s=new Set,c=[i.entry];for(;c.length>0;){let e=c.shift();if(!(!e||s.has(e)||o.has(e))){if(e===a)return!1;s.add(e);for(let t of e.successors)c.push(t.to)}}return!0},Fs=(e,n)=>{if(!y(e,`CallExpression`))return null;let r=O(e.callee);if(!y(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer??i?.declarationNode;return a&&t(O(a))?O(a):null},Is=(e,t,n,r)=>Rs(e,n).some(e=>e.callExpression!==t&&Ps(e.callExpression,t,n)&&zs(e.callExpression,e.argumentIndex,n,r,new Map)),cse=(e,n,r,i)=>{let a=Fs(O(e),r);if(!a||!t(a))return!1;let o=[];return A(a.body,e=>{if(e!==a.body&&t(e))return!1;y(e,`ReturnStatement`)&&e.argument&&o.push(e)}),o.length>0&&o.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let t=z(e.argument,r);if(!t)return!1;let a=O(e.argument),o=y(a,`Identifier`)?r.scopes.symbolFor(a):null;return o&&Is(o,e,r,i)?!0:!!i.memberMutationCandidatesByReceiverIdentity.get(t)?.some(t=>{let i=!!js(y(t,`AssignmentExpression`)?t.left:y(t,`UnaryExpression`)?t.argument:t,n);return y(t,`CallExpression`)&&(i=As(t,n,r)),i&&Ps(t,e,r)})})},Ls=new WeakMap,Rs=(e,t,n=new Set)=>{let r=Ls.get(e);if(r)return r;if(n.has(e))return[];let i=new Set(n);i.add(e);let a=new Map,o=(e,t)=>{let n=a.get(e)??new Set;n.add(t),a.set(e,n)},s=e=>{if(e)for(let n of Rs(e,t,i))o(n.callExpression,n.argumentIndex)};for(let n of e.references){let e=n.identifier,r=!0;for(;e.parent&&r;){let t=e.parent;r=!1,O(t)===e?(e=t,r=!0):y(t,`Property`)&&t.value===e&&y(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(y(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||y(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||y(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(y(i,`VariableDeclarator`)&&i.init===e&&y(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(y(i,`AssignmentExpression`)&&i.right===e){let e=O(i.left),n=y(e,`Identifier`)?e:y(e,`MemberExpression`)&&y(O(e.object),`Identifier`)?O(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(y(i,`CallExpression`)){let t=i.arguments.findIndex(t=>t===e);t>=0&&o(i,t)}}let c=[...a].flatMap(([e,t])=>[...t].map(t=>({argumentIndex:t,callExpression:e})));return Ls.set(e,c),c},lse=(e,n,r)=>{if(!t(e))return!1;if(y(e,`ArrowFunctionExpression`)&&!y(e.body,`BlockStatement`))return z(e.body,r)===n;let i=[];return A(e.body,n=>{if(n!==e.body&&t(n))return!1;y(n,`ReturnStatement`)&&i.push(n)}),i.length>0&&i.every(e=>y(e,`ReturnStatement`)&&e.argument&&z(e.argument,r)===n)},use=(e,t)=>{let n=e;for(;n.parent&&O(n.parent)===n;)n=n.parent;let r=n.parent;if(!y(r,`VariableDeclarator`)||r.init!==n||!y(r.id,`Identifier`))return null;let i=t.scopes.scopeFor(r);for(;i;){let e=i.symbolsByName.get(r.id.name);if(e)return e;i=i.parent}return null},zs=(e,n,r,i,a)=>{let o=Fs(e,r);if(!o||!t(o))return!0;if(o.generator)return!1;let s=a.get(o)??new Set;if(s.has(n))return!1;s.add(n),a.set(o,s);let c=o.params[n];if(!y(c,`Identifier`))return!0;let l=r.scopes.ownScopeFor(o)?.symbolsByName.get(c.name);if(!l)return!0;let u=`symbol:${l.id}`;if(i.memberMutationCandidatesByReceiverIdentity.get(u)?.some(e=>r.cfg.enclosingFunction(e)===o)||Rs(l,r).some(e=>r.cfg.enclosingFunction(e.callExpression)===o?zs(e.callExpression,e.argumentIndex,r,i,a):!1))return!0;if(!lse(o,u,r))return!1;let d=use(e,r);return d?Rs(d,r).some(e=>zs(e.callExpression,e.argumentIndex,r,i,a)):!1},dse=(e,t,n,r,i,a=[],o)=>{if(cse(t,n,i,e))return!0;let s=z(t,i),c=O(t),l=y(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&Is(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Os(e,s,n):[],...a.flatMap(t=>Os(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!ase(i.scopes.scopeFor(e),u)&&!Ps(e,r,i))continue;let t=null;if(y(e,`AssignmentExpression`)){if(s!==null&&z(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Ps(e,r,i)){d=!0;break}continue}t=js(e.left,n)}else if(y(e,`UnaryExpression`)&&e.operator===`delete`)t=js(e.argument,n);else if(y(e,`CallExpression`)&&As(e,n,i)){let n=e.arguments[0];t=n&&!y(n,`SpreadElement`)?n:null}if(!t)continue;let c=z(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Ps(e,r,i)&&(d=!0))}return d||sse(p,r,i)},Bs=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>ise(t,n,e),hasProvenMutation:(n,r,i,a,o)=>dse(t,n,r,i,e,a,o)}},Vs=(e,t)=>!!(e&&y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&e.property.name===t),Hs=e=>Ci(e)||(e.kind!==`let`&&e.kind!==`var`||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||!e.references.every(e=>e.flag===`read`)||e.scope.symbols.some(t=>t!==e&&t.name===e.name)?null:e.initializer),Us=e=>y(e,`Identifier`)?e.name:y(e,`Literal`)&&typeof e.value==`string`?e.value:null,Ws=e=>{if(!y(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&y(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!y(n,`Property`)||!y(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!y(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!y(a,`TSTypeLiteral`))return null;let o=Us(n.key);if(!o)return null;for(let e of a.members)if(y(e,`TSPropertySignature`)&&Us(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},Gs=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&y(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>y(e,`TSTypeParameter`)&&y(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},Ks=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},qs=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(y(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=O(n.object);return y(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},fse=new Set(`AbortSignal.Document.DocumentFragment.Element.EventTarget.HTMLElement.HTMLAnchorElement.HTMLButtonElement.HTMLCanvasElement.HTMLDivElement.HTMLFormElement.HTMLIFrameElement.HTMLImageElement.HTMLInputElement.HTMLLabelElement.HTMLLIElement.HTMLMediaElement.HTMLParagraphElement.HTMLSelectElement.HTMLSpanElement.HTMLTableElement.HTMLTextAreaElement.HTMLUListElement.HTMLVideoElement.MediaQueryList.Node.ShadowRoot.SVGElement.SVGSVGElement.Window.XMLDocument`.split(`.`)),pse=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Js=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),Ys=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),mse=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),Xs=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],hse=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:fse.has(e)||pse.test(e),Zs=(e,t,n)=>{if(y(e,`TSTypeReference`)){if(!y(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return hse(r,n)&&!Ks(e,r,t)&&!Gs(e,r)}if(!y(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(y(i,`TSNullKeyword`)||y(i,`TSUndefinedKeyword`))){if(!Zs(i,t,n))return!1;r=!0}return r},gse=(e,t)=>!y(e,`TSTypeReference`)||!y(e.typeName,`Identifier`)||!Zs(e,t,`dom-event-target`)?null:e.typeName.name,Qs=(e,t,n)=>y(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),$s=(e,t,n=new Set)=>{let r=O(e);if(Qs(r,`window`,t))return[`Window`,`EventTarget`];if(Qs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(y(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=Ws(e),a=i?gse(i,t):null;if(a)return Xs(a);let o=Hs(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),$s(o,t,s)}if(y(r,`NewExpression`)){let e=O(r.callee);if(y(e,`Identifier`)&&Js.has(e.name))return Xs(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(y(r,`MemberExpression`)){let e=C(r);if(e===`body`||e===`documentElement`)return Xs(`HTMLElement`)}if(y(r,`CallExpression`)){if(qs(r,t))return Xs(`MediaQueryList`);let e=O(r.callee),i=y(e,`MemberExpression`)?C(e):null;if(i===`matchMedia`&&y(e,`MemberExpression`)&&$s(e.object,t,n).includes(`Window`))return Xs(`MediaQueryList`);if(i===`createElement`)return Xs(`HTMLElement`);if(i===`createElementNS`)return Xs(`SVGElement`);if(i&&Ys.has(i))return Xs(`Element`)}return[`EventTarget`]},ec=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Js]).some(t=>tc(e,t,n,new Set)),_se=(e,t,n)=>{let r=e,i=!1;for(;y(r,`TSAsExpression`)||y(r,`TSTypeAssertion`)||y(r,`TSSatisfiesExpression`);){if(Zs(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(y(a,`Identifier`)){let e=t.symbolFor(a),n=e?Ci(e):null;if(!n)return!1;a=O(n)}return i&&y(a,`Identifier`)||i&&y(a,`MemberExpression`)||i&&y(a,`ObjectExpression`)?!1:i&&y(a,`NewExpression`)?ec(a.callee,n,t):i},vse=e=>{if(!y(e,`MemberExpression`)||!y(O(e.object),`ThisExpression`))return null;let t=C(e);if(!t)return null;let n=e.parent;for(;n&&!y(n,`ClassBody`);){if((y(n,`FunctionDeclaration`)||y(n,`FunctionExpression`))&&!y(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!y(e,`PropertyDefinition`)||e.static)&&Us(e.key)===t)return e;return null},yse=e=>{if(!y(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&y(t,`TSTypeAnnotation`)?t.typeAnnotation:null},bse=(e,n,r)=>{if(!y(e,`CallExpression`))return null;let i=O(e.callee);if(!y(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||a.kind!==`const`&&!(a.kind===`function`&&a.references.every(e=>e.flag===`read`)))return null;let o=a.initializer??a.declarationNode;return!t(o)||o.async||o.generator?null:(r.add(a.id),o)},tc=(e,t,n,r)=>{let i=O(e);if(y(i,`Identifier`)){if(i.name===t&&n.isGlobalReference(i))return!0;let e=n.symbolFor(i);if(!e||r.has(e.id))return!1;let a=Ci(e);return a?(r.add(e.id),tc(a,t,n,r)):!1}if(!y(i,`MemberExpression`)||C(i)!==t)return!1;let a=O(i.object);return Qs(a,`window`,n)||Qs(a,`globalThis`,n)},xse=(e,t,n)=>{let r=O(e);for(;y(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Ci(e);if(!i)return!1;n.add(e.id),r=O(i)}if(!y(r,`CallExpression`)||!k(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!k(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!y(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&Zs(i,t,`dom-event-target`))},nc=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(_se(e,n,t))return!0;let a=O(e);if(y(a,`Identifier`)){if(i&&(Qs(a,`document`,n)||Qs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=Ws(e);if(o&&Zs(o,n,t))return!0;let s=Hs(e);return s?(r.add(e.id),nc(s,t,n,r)):!1}if(y(a,`NewExpression`))return ec(a.callee,t,n);if(y(a,`CallExpression`)){let e=O(a.callee);if(i&&y(e,`MemberExpression`)&&Ys.has(C(e)??``)&&nc(e.object,t,n,r))return!0;let o=bse(a,n,r);return!!(o&&ue(o,n,e=>nc(e,t,n,new Set(r)),void 0,`every`))}if(y(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(y(e,`Literal`)&&e.value===null)&&!(y(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>nc(e,t,n,new Set(r)))}if(!y(a,`MemberExpression`))return!1;let o=vse(a);if(o&&y(o,`PropertyDefinition`)){let e=yse(o);if(e&&Zs(e,n,t)||o.value&&nc(o.value,t,n,r))return!0}if(!i)return!1;let s=C(a);if(s===`current`)return xse(a.object,n,r);let c=O(a.object);return s===`document`&&(Qs(c,`window`,n)||Qs(c,`globalThis`,n))?!0:s!==null&&mse.has(s)&&nc(c,t,n,r)},Sse=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Cse=e=>Sse.test(ve(e??``)),rc=(e,t)=>{let n=O(e);return y(n,`Identifier`)?t.has(n.name):y(n,`SpreadElement`)?rc(n.argument,t):y(n,`ObjectExpression`)?n.properties.some(e=>y(e,`Property`)?rc(e.value,t):y(e,`SpreadElement`)&&rc(e.argument,t)):y(n,`ArrayExpression`)?n.elements.some(e=>e&&rc(e,t)):y(n,`ConditionalExpression`)?rc(n.consequent,t)||rc(n.alternate,t):y(n,`LogicalExpression`)?rc(n.left,t)||rc(n.right,t):y(n,`SequenceExpression`)?n.expressions.some(e=>rc(e,t)):!1},ic=(e,t,n)=>{let r=O(t);if(y(e,`Identifier`)){rc(r,n)&&n.add(e.name);return}if(y(e,`AssignmentPattern`)){ic(e.left,r,n);return}if(y(e,`ObjectPattern`)&&y(r,`ObjectExpression`)){for(let t of e.properties){if(!y(t,`Property`))continue;let e=Us(t.key);if(!e)continue;let i=r.properties.find(t=>y(t,`Property`)&&Us(t.key)===e);y(i,`Property`)&&ic(t.value,i.value,n)}return}if(y(e,`ArrayPattern`)&&y(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&ic(i,e,n)}},wse=(e,n,r)=>{if(!y(e,`CallExpression`)||!r.filename)return!1;let i=O(e.callee);if(!y(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,s=o.parent,c=Yt(o);if(!c||!y(s,`ImportDeclaration`)||typeof s.source.value!=`string`)return!1;let l=St(r.filename,s.source.value,c);if(!l||!t(l))return!1;let u=l.params[n];if(!y(u,`Identifier`))return!1;let d=new Set([u.name]),f=!1;return A(l.body,e=>{if(f)return!1;if(y(e,`VariableDeclarator`)&&e.init){ic(e.id,e.init,d);return}if(y(e,`AssignmentExpression`)&&y(e.left,`Identifier`)&&rc(e.right,d)){d.add(e.left.name);return}if(y(e,`CallExpression`)){let t=O(e.callee);(y(t,`MemberExpression`)&&C(t)===`preventDefault`&&rc(t.object,d)||e.arguments.some(e=>!y(e,`SpreadElement`)&&rc(e,d)))&&(f=!0);return}if(y(e,`NewExpression`)&&e.arguments.some(e=>!y(e,`SpreadElement`)&&rc(e,d))){f=!0;return}let t=y(e,`AssignmentExpression`)?O(e.left):null;y(e,`AssignmentExpression`)&&(y(t,`MemberExpression`)&&rc(t.object,d)||rc(e.right,d))&&(f=!0)}),!f},Tse=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),Ese=new Set([`catch`,`finally`,`then`]),ac=(e,n,r=new Set)=>{let i=(e,r)=>{let a=O(e);if(t(a))return a.async;if(!y(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||r.has(o.id))return!1;let s=o.initializer??o.declarationNode,c=new Set(r);return c.add(o.id),i(s,c)},a=O(e);if(y(a,`Identifier`)){let e=n.symbolFor(a);if(!e||!e.initializer||r.has(e.id))return!1;let t=new Set(r);return t.add(e.id),ac(e.initializer,n,t)}if(y(a,`NewExpression`)){let e=O(a.callee);return y(e,`Identifier`)&&e.name===`Promise`&&n.isGlobalReference(e)}if(!y(a,`CallExpression`))return!1;let o=O(a.callee);if(y(o,`Identifier`))return i(o,r);if(!y(o,`MemberExpression`))return!1;let s=O(o.object);return Ese.has(C(o)??``)?ac(o.object,n,r):!!(Tse.has(C(o)??``)&&y(s,`Identifier`)&&s.name===`Promise`&&n.isGlobalReference(s))},oc=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Dse=new Set([`catch`,`finally`,`then`]),sc=e=>{if(!t(e))return!1;let n=!1;return A(e,r=>{if(n||r!==e&&t(r))return!1;y(r,`CallExpression`)&&y(r.callee,`MemberExpression`)&&C(r.callee)===`preventDefault`&&(n=!0)}),n},Ose=(e,t)=>{let n=!1;return A(e,e=>{if(n)return!1;y(e,`AssignmentExpression`)&&e.operator===`=`&&y(e.left,`Identifier`)&&e.left.name===t&&sc(e.right)&&(n=!0)}),n},kse=e=>{if(!e)return!1;if(sc(e))return!0;if(y(e,`Identifier`)){let t=T(e,e.name);return t?sc(t.initializer??void 0)?!0:Ose(t.scopeOwner,e.name):!1}if(y(e,`MemberExpression`)){let t=ds(e);return t?sc(t):!1}return!1},cc=(e,n)=>{if(!e)return;let r=O(e);if(t(r))return r;if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r),i=e?.initializer??e?.declarationNode;if(i&&t(i))return i;let a=T(r,r.name),o;return e&&a&&A(a.scopeOwner,i=>{if(i.range[0]>=r.range[0])return!1;if(y(i,`AssignmentExpression`)&&i.operator===`=`&&y(i.left,`Identifier`)&&n.scopes.symbolFor(i.left)===e){let e=O(i.right);o=t(e)?e:void 0}}),o}return y(r,`MemberExpression`)?ds(r):void 0},Ase=(e,t,n)=>{if(!wse(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(O(e)===r||y(e,`UnaryExpression`)&&e.operator===`!`||y(e,`LogicalExpression`)){r=e;continue}return y(e,`IfStatement`)&&e.test===r||y(e,`ConditionalExpression`)&&e.test===r||y(e,`WhileStatement`)&&e.test===r||y(e,`DoWhileStatement`)&&e.test===r||y(e,`ForStatement`)&&e.test===r}return!1},jse=(e,n)=>{let r=cc(e,n);if(!r){let t=e?O(e):void 0;if(!t||!y(t,`Identifier`))return!1;let r=n.scopes.symbolFor(t);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<t.range[0]&&e.flag!==`read`))}let i=new Map,a=(e,t=new Set)=>{let r=O(e);if(y(r,`Identifier`)){if(oc.has(r.name)&&n.scopes.isGlobalReference(r))return!0;let e=n.scopes.symbolFor(r);if(!e||t.has(e.id))return!1;let i=Ci(e);if(!i)return!1;let o=new Set(t);return o.add(e.id),a(i,o)}if(!y(r,`MemberExpression`))return!1;let i=O(r.object);return oc.has(C(r)??``)&&y(i,`Identifier`)&&(i.name===`window`||i.name===`globalThis`)&&n.scopes.isGlobalReference(i)},o=e=>{let t=e;for(;t.parent&&O(t.parent)===O(t);)t=t.parent;let r=t.parent;if(y(r,`NewExpression`)){let e=O(r.callee);return r.arguments.some(e=>e===t)&&y(e,`Identifier`)&&e.name===`Promise`&&n.scopes.isGlobalReference(e)}if(!y(r,`CallExpression`))return!1;if(O(r.callee)===O(t))return!0;if(!r.arguments.some(e=>e===t))return!1;let i=O(r.callee);if(a(i))return!1;if(y(i,`Identifier`)||!y(i,`MemberExpression`))return!0;let o=C(i);return!(Dse.has(o??``)&&ac(i.object,n.scopes)||o===`addEventListener`&&nc(i.object,`dom-event-target`,n.scopes))},s=(e,r,a=!1)=>{if(!t(e))return!1;let c=i.get(e)??new Set;if(c.has(r))return!1;c.add(r),i.set(e,c);let l=e.params[r];if(!l)return!a;let u=y(l,`AssignmentPattern`)?l.left:l;if(!y(u,`Identifier`))return!(a&&y(u,`ObjectPattern`));let d=n.scopes.symbolFor(u);if(!d)return!1;let f=new Set([d]),p=new Set,m=e=>{let t=O(e);if(!y(t,`Identifier`))return!1;let r=n.scopes.symbolFor(t);return!!(r&&f.has(r))},h=e=>{let t=O(e);if(m(t))return!0;if(y(t,`SpreadElement`))return h(t.argument);if(y(t,`MemberExpression`)){let e=O(t.object);if(y(e,`Identifier`)){let t=n.scopes.symbolFor(e);if(t&&p.has(t))return!0}let r=C(t);if(y(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>y(e,`Property`)&&cs(e.key)===r);return!!(y(t,`Property`)&&h(t.value))}if(y(e,`ArrayExpression`)&&y(t.property,`Literal`)&&typeof t.property.value==`number`){let n=e.elements[t.property.value];return!!(n&&h(n))}return!1}return y(t,`ObjectExpression`)?t.properties.some(e=>y(e,`Property`)?h(e.value):y(e,`SpreadElement`)&&h(e.argument)):y(t,`ArrayExpression`)?t.elements.some(e=>e&&h(e)):y(t,`ConditionalExpression`)?h(t.consequent)||h(t.alternate):y(t,`LogicalExpression`)?h(t.left)||h(t.right):y(t,`SequenceExpression`)?t.expressions.some(h):!1},g=(e,t)=>{let r=O(t);if(y(e,`Identifier`)){if(!h(r))return;let t=n.scopes.symbolFor(e);t&&f.add(t);return}if(y(e,`AssignmentPattern`)){g(e.left,r);return}if(y(e,`RestElement`)&&y(e.argument,`Identifier`)){if(!h(r))return;let t=n.scopes.symbolFor(e.argument);t&&p.add(t);return}if(y(e,`ObjectPattern`)&&y(r,`ObjectExpression`)){for(let t of e.properties){if(y(t,`RestElement`)){g(t,r);continue}if(!y(t,`Property`))continue;let e=cs(t.key);if(!e)continue;let n=r.properties.find(t=>y(t,`Property`)&&cs(t.key)===e);y(n,`Property`)&&g(t.value,n.value)}return}if(y(e,`ArrayPattern`)&&y(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&g(n,e)}},_=!1;return A(e.body,r=>{if(_||r!==e.body&&t(r)&&!o(r))return!1;if(y(r,`VariableDeclarator`)&&r.init){g(r.id,r.init);return}if(y(r,`AssignmentExpression`)&&h(r.right)){if(y(r.left,`Identifier`)){let e=n.scopes.symbolFor(r.left);e&&f.add(e)}else _=!0;return}if(y(r,`AssignmentExpression`)){let e=O(r.left),t=O(r.right);if(y(e,`MemberExpression`)&&C(e)===`returnValue`&&m(e.object)&&y(t,`Literal`)&&t.value===!1){_=!0;return}}if(y(r,`ReturnStatement`)&&r.argument&&h(r.argument)){_=!0;return}if(y(r,`NewExpression`)){r.arguments.some(e=>!y(e,`SpreadElement`)&&h(e))&&(_=!0);return}if(!y(r,`CallExpression`))return;let i=O(r.callee);if(y(i,`MemberExpression`)&&C(i)===`preventDefault`&&m(i.object)){_=!0;return}let a=r.arguments.findIndex(e=>h(e));if(a<0)return;let c=cc(r.callee,n);(!c&&!Ase(r,a,n)||c&&s(c,a))&&(_=!0)}),_};return s(r,0,!0)},lc=(e,t)=>!!e.properties?.some(e=>y(e,`Property`)&&y(e.key,`Identifier`)&&e.key.name===`passive`&&y(e.value,`Literal`)&&e.value.value===t),uc=x({id:`client-passive-event-listeners`,title:`Non-passive scroll listener`,tags:[`test-noise`],severity:`warn`,recommendation:"Add `{ passive: true }` as the third argument: `addEventListener('touchmove', handler, { passive: true })`. Only do this if the handler doesn't call `event.preventDefault()`, since passive listeners ignore it (which breaks pull-to-refresh, custom gestures, and nested scrolling).",create:e=>{if(Cse(e.filename))return Ae;let t=Bs(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=O(n.callee);if(!Vs(a,`addEventListener`)||!nc(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,$s(a.object,e.scopes),t=>nc(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!y(o,`Literal`)||typeof o.value!=`string`||!uee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||y(c,`SpreadElement`))return;let l=cc(c,e)??c,u=r.get(l);if(u===void 0&&(u=kse(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=jse(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!y(f,`ObjectExpression`)||lc(f,!1)||lc(f,!0))||e.report({node:n,message:`"${s}" listener without { passive: true } makes scrolling janky for your users. Only add it if the handler doesn't call event.preventDefault(), since passive listeners silently ignore preventDefault().`})};return{AssignmentExpression(e){t.record(e)},CallExpression(e){t.record(e),Vs(O(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),H=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},dc=e=>{if(!e.startsWith(`use`))return!1;if(e.length===3)return!0;let t=e.charCodeAt(3);return t>=65&&t<=90||t>=48&&t<=57},fc=e=>H(e)||dc(e),Mse=(t,n)=>{let r=n?e(t):t;return y(r,`Identifier`)?r.name:y(r,`MemberExpression`)&&y(r.property,`Identifier`)?r.property.name:null},pc=(e,t=!1)=>{let n=v(e);for(;;){let e=n.parent;if(!e||!y(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Mse(e.callee,t);if(!r||!Tn.has(r))return n;n=v(e)}},Nse=(e,t)=>{let n=pc(e,t),r=n.parent;return r&&y(r,`VariableDeclarator`)&&y(r.id,`Identifier`)&&r.init===n&&fc(r.id.name)?r.id.name:null},mc=(e,t=!1)=>(y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`))&&e.id?fc(e.id.name)?e.id.name:null:Nse(e,t),hc=e=>y(e,`MemberExpression`)&&!e.computed&&y(e.property,`Identifier`)?e.property.name:null,Pse=[`react`,`use-context-selector`,`react-tracked`],gc=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!y(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Pse.includes(t.source.value)?null:t.source.value},_c=e=>gc(e)!==null&&!!(e&&(y(e.declarationNode,`ImportDefaultSpecifier`)||y(e.declarationNode,`ImportNamespaceSpecifier`))),Fse=(e,t)=>{if(!y(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!y(n.declarationNode,`VariableDeclarator`)||!y(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!y(r,`Property`)||S(r,{allowComputedString:!0})!==`createContext`)return!1;let i=O(n.initializer);return y(i,`Identifier`)&&_c(w(i,t))},Ise=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){if(Fse(n,t))return!0;let e=w(n,t);return gc(e)!==null&&!!(e&&Lt(e.declarationNode)===`createContext`)}if(!y(n,`MemberExpression`)||(hc(n)??(n.computed&&y(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=O(n.object);return y(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:_c(w(r,t)):!1},vc=(e,t)=>{let n=O(e);return y(n,`CallExpression`)&&Ise(n.callee,t)},yc=(e,t)=>{let n=new Set;if(!y(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(y(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!y(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!y(r,`VariableDeclarator`)||!y(r.id,`Identifier`)||!r.init||!E(r.init)||!vc(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},bc=e=>{if(y(e,`FunctionDeclaration`)&&y(e.id,`Identifier`))return e.id;let t=v(e),n=t.parent;if(y(n,`VariableDeclarator`)&&y(n.id,`Identifier`))return n.id;if(y(n,`AssignmentExpression`)&&n.right===t&&y(n.left,`Identifier`))return n.left;if(y(n,`CallExpression`)){let e=n.parent;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`))return e.id}return null},xc=e=>bc(e)?.name??null,Sc=(e,t)=>{let n=bc(e);if(!n)return[];let r=t.scopeFor(e);for(;r;){let e=r.symbols.filter(e=>e.bindingIdentifier===n);if(e.length>0)return e;r=r.parent}return[]},U=(e,t)=>e?.find(e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&e.name.name===t),Lse=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Cc=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(y(t,`VariableDeclaration`))return t.kind===`const`;if(!Lse.has(t.type))return!1;t=t.parent??null}return!1},wc=(e,t)=>{if(!y(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=Lt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Rse=(e,t)=>{if(!wc(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Ye(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Tc=(e,t,n,r)=>{if(!y(e,`JSXIdentifier`))return!1;if(r&&wc(e,n))return!0;let i=n.symbolFor(e);return i?t.has(i.id)||i.scope.symbols.some(n=>n.name===e.name&&t.has(n.id)):!1},Ec=(e,t,n)=>y(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Tc(e.object,t,n,!0):Rse(e,n)||Tc(e,t,n,!1),Dc="Every consumer of this context redraws on each render because its `value` is a fresh object/array/function rebuilt each render — memoize it in component scope (extract mapped providers into a child component first), or move it outside the component.",Oc=new Set([`flatMap`,`map`]),zse=new Set([`forwardRef`,`memo`]),Bse=new Set([`useCallback`,`useMemo`]),Vse=new Set([`createElement`]),kc=e=>{let t=O(e);return y(t,`ObjectExpression`)||y(t,`ArrayExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`)},Ac=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&y(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&rt(n,e.scopeOwner)?!0:!!(e.initializer&&y(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},Hse=e=>t(e.scopeOwner)?e.scopeOwner:b(e.scopeOwner),Use=(e,t)=>{let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=(e[r]??0)-(t[r]??0);if(n!==0)return n}return e.length-t.length},jc=e=>{let t=pc(e);return!!(t.parent&&y(t.parent,`ExportDefaultDeclaration`))},Wse=e=>{if(!y(e,`FunctionExpression`)||!e.id)return!1;let t=v(e);if(pc(e)!==t)return!1;let n=t.parent;return!(n&&y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`))},Gse=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=O(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),y(a,`ConditionalExpression`)){let e=O(a.test);y(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(y(a,`LogicalExpression`)){let e=O(a.left);if(y(e,`Literal`)){let t=a.operator===`&&`&&!!e.value||a.operator===`||`&&!e.value||a.operator===`??`&&e.value===null;r.push(t?a.right:a.left);continue}r.push(a.right),a.operator!==`&&`&&r.push(a.left);continue}if(y(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(y(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(y(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(y(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(y(e,`SpreadElement`)?e.argument:e);continue}if(y(a,`CallExpression`)&&k(a,Vse,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&y(e,`ObjectExpression`))for(let t of e.properties){if(!y(t,`Property`)||t.computed)continue;let e=t.key;(y(e,`Identifier`)&&e.name===`children`||y(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(y(a,`Identifier`)){let e=T(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Cc(e)&&Ac(e,a)&&b(e.bindingIdentifier)===b(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(y(a,`JSXElement`)||y(a,`JSXFragment`)){r.push(...a.children);continue}y(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Mc=(e,t,n)=>ue(t,n.scopes,t=>Gse(t,e,n),n.cfg),Kse=(e,t,n)=>e.arguments[0]===t&&k(e,Bse,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(y(e.callee,`MemberExpression`)&&Oc.has(C(e.callee)??``)),Nc=(e,n,r)=>{let i=e.arguments.findIndex(e=>e===n);if(i<0)return!1;let a=M(e.callee,r.scopes);if(!a||!t(a)||a.async||a.generator)return!1;let o=a.params[i];if(!o||!y(o,`Identifier`)||!(r.scopes.ownScopeFor(a)?.symbolsByName.get(o.name))?.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(n&&y(n,`CallExpression`)&&n.callee===t&&b(n)===a&&rt(n,a)&&r.cfg.isUnconditionalFromEntry(n)&&Mc(n,a,r))}))return!1;let s=b(e);return!!(s&&(mc(s)!==null||jc(s))&&Mc(e,s,r))},qse=(e,t)=>{let n=Sc(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=v(e.identifier),r=n.parent;return!r||!y(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&k(r,zse,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:Kse(r,n,t)||!Nc(r,n,t)})},Jse=(e,t)=>{let n=v(e),r=n.parent;if(!r||!y(r,`CallExpression`))return!1;let i=b(r);return!i||mc(i)===null&&!jc(i)?!1:r.arguments[0]===n&&y(r.callee,`MemberExpression`)&&Oc.has(C(r.callee)??``)&&Mc(r,i,t)?!0:r.callee===n&&Mc(r,i,t)||r.arguments.some(e=>e===n)&&Nc(r,n,t)},Pc=x({id:`context-provider-value-from-unmemoized-local-literal`,title:`Context value from an unmemoized local literal`,tags:[`react-jsx-only`,`test-noise`],severity:`warn`,category:`Performance`,disabledWhen:[`react-compiler`],recommendation:`Memoize the context value in component scope so consumers do not redraw every render. For mapped providers, extract each item into a child component and memoize there.`,create:e=>{let t=t=>e.cfg.isUnconditionalFromEntry(t)&&B(t,e),n=new Set;return{Program(t){n=yc(t,e.scopes)},JSXOpeningElement(r){if(!Ec(r.name,n,e.scopes))return;let i=b(r);if(!i)return;let a=Jse(i,e),o=jc(i);if((Wse(i)||qse(i,e))&&!a&&!o||mc(i)===null&&!o&&!a)return;let s=U(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!y(c,`JSXExpressionContainer`))return;let l=O(c.expression);if(!y(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Jee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:ze(n.identifier)}))).toSorted((e,t)=>Use(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!kc(d.assignedExpression))return;e.report({node:s,message:Dc});return}let f=T(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Ac(f,l)&&Hse(f)===i&&kc(f.initializer)&&e.report({node:s,message:Dc})}}}}),Yse=[`lucide-react`,`lucide-react-native`,`react-feather`,`phosphor-react`,`iconoir-react`,`react-bootstrap-icons`,`@heroicons/react`,`@tabler/icons-react`,`@phosphor-icons/react`,`@radix-ui/react-icons`,`@mui/icons-material`,`@ant-design/icons`,`@primer/octicons-react`],Fc=e=>e===`react-icons`?e:e.startsWith(`react-icons/`)?e.split(`/`).slice(0,2).join(`/`):e===`@fortawesome/react-fontawesome`||/^@fortawesome\/free-[^/]+-svg-icons(?:\/|$)/.test(e)?`@fortawesome`:Yse.find(t=>e===t||e.startsWith(`${t}/`))??null,Xse=/[\p{L}\p{Nd}]/u,Ic=e=>Xse.test(e),Lc=e=>oi.has(e),Rc=(e,t)=>{let n=[],r=0,i=0,a=null,o=!1;for(let s=0;s<e.length;s+=1){let c=e[s];if(o){o=!1;continue}if(c===`\\`){o=!0;continue}if(a){c===a&&(a=null);continue}if(c===`"`||c===`'`){a=c;continue}c===`[`&&(r+=1),c===`]`&&(r=Math.max(0,r-1)),c===`(`&&(i+=1),c===`)`&&(i=Math.max(0,i-1)),r===0&&i===0&&t(c)&&n.push(s)}return n},W=e=>{let t=[],n=0;for(let r of Rc(e,e=>/\s/.test(e))){let i=e.slice(n,r);i&&t.push(i),n=r+1}let r=e.slice(n);return r&&t.push(r),t},Zse=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Qse=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),zc=e=>e.toLowerCase()===`hidden`,$se=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=W(i);if(a.length===0)continue;let o=e>0&&!/^\s/.test(i),s=e<t.length-1&&!/\s$/.test(i);o&&a.shift(),s&&a.pop(),n.push(...a)}return n},ece=e=>{let t=P(e.attributes,`className`)??P(e.attributes,`class`);if(!t)return!1;let n=I(t);return n===null?t.value&&y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`TemplateLiteral`)?$se(t.value.expression).some(zc):!1:W(n).some(zc)},tce=e=>{let t=P(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(y(n,`Literal`))return n.value!==`false`&&!!n.value;if(y(n,`JSXExpressionContainer`)){let e=O(n.expression);if(y(e,`Literal`))return!!e.value}return!0},nce={display:`none`,visibility:`hidden`},rce=e=>{let t=P(e.attributes,`style`);if(!t?.value||!y(t.value,`JSXExpressionContainer`))return!1;let n=O(t.value.expression);if(!y(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!y(e,`Property`)||e.computed)continue;let t=e.key,n=y(t,`Identifier`)?t.name:y(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=nce[n];if(!r)continue;let i=O(e.value);if(y(i,`Literal`)&&i.value===r)return!0}return!1},Bc=(e,t)=>br(e,t)||tce(e)||rce(e),ice=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=P(t.attributes,`type`),r=n?dr(n):null;return!r||r.toLowerCase()!==`file`||!ece(t)?!1:!!P(t.attributes,`ref`)},ace=[`link`,`canvas`],oce=new Set([`alt`,`aria-label`,`aria-labelledby`]),Vc=`label`,sce=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.controlHasAssociatedLabel??{}:{};return{depth:Math.min(n.depth??5,25),labelAttributes:n.labelAttributes??[],controlComponents:n.controlComponents??[],ignoreElements:n.ignoreElements??[],ignoreRoles:n.ignoreRoles??[]}},Hc=(e,t)=>{let n=new Set(t);for(let t of e){if(y(t,`JSXSpreadAttribute`))return!0;if(!y(t,`JSXAttribute`)||!y(t.name,`JSXIdentifier`))continue;let e=Cn(t.name);if(e&&(oce.has(e)||n.has(e)))return t.value?y(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Uc=e=>{if(!e?.value)return!1;let t=e.value;if(y(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(y(t,`JSXExpressionContainer`)){let e=O(t.expression);if(y(e,`JSXEmptyExpression`))return!1;if(y(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(y(e,`TemplateLiteral`)){let t=In(e);if(t!==null)return t.trim().length>0}return!0}return!0},cce=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!y(r,`JSXAttribute`))&&Cn(r.name)?.toLowerCase()===n)return r}},Wc=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(y(r,`SpreadElement`))return null;let e=O(r);if(y(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(y(e,`TemplateLiteral`)){let t=In(e);if(t===null)return null;n.push(t);continue}if(y(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||y(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(y(e,`ArrayExpression`)){let r=Wc(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},Gc=(e,t)=>{if(y(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!y(e,`MemberExpression`))return!1;let n=O(e.object);return y(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Kc=(e,t)=>{let n=O(e);if(y(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(y(n,`TemplateLiteral`)){let e=In(n);return e===null||e.trim().length>0}if(y(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(y(n,`UnaryExpression`)&&n.operator===`void`||y(n,`UnaryExpression`)&&n.operator===`!`||y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`)||y(n,`ClassExpression`))return!1;if(y(n,`ArrayExpression`)){let e=Wc(n,t);return e===null||e.trim().length>0}if(Gc(n,t)||y(n,`CallExpression`)&&Gc(n.callee,t))return!1;if(y(n,`ConditionalExpression`))return Kc(n.consequent,t)&&Kc(n.alternate,t);if(y(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Kc(e,t):!1}if(y(n,`LogicalExpression`)){let e=O(n.left);if(!y(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Kc(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Kc(r?n.right:e,t):Kc(r?e:n.right,t)}return!0},lce=(e,t)=>e?.value?y(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:y(e.value,`JSXExpressionContainer`)?Kc(e.value.expression,t):!0:!1,qc=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},Jc=e=>typeof e==`string`?qc(`literal`,e):typeof e==`number`?qc(`literal`,String(e)):null,Yc=e=>{let t=O(e);if(y(t,`Identifier`))return t.name;if(y(t,`MemberExpression`)){if(t.computed)return null;let e=Yc(t.object),n=t.property;return e===null||!y(n,`Identifier`)?null:`${e}.${n.name}`}return null},uce=e=>{let t=e.quasis??[],n=e.expressions??[],r=[];for(let[e,i]of t.entries())if(r.push(i.value?.cooked??i.value?.raw??``),e<n.length){let t=Yc(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return qc(`template`,r.join(``))},Xc=e=>{let t=O(e);if(y(t,`Literal`)){let e=Jc(t.value);return e===null?[]:[e]}if(y(t,`TemplateLiteral`)){let e=In(t);if(e!==null){let t=qc(`literal`,e);return t===null?[]:[t]}let n=uce(t);return n===null?[]:[n]}if(y(t,`ConditionalExpression`))return[...Xc(t.consequent),...Xc(t.alternate)];let n=Yc(t);if(n!==null){let e=qc(`identifier`,n);return e===null?[]:[e]}return[]},Zc=e=>{if(!e?.value)return[];let t=e.value;if(y(t,`Literal`)){let e=Jc(t.value);return e===null?[]:[e]}return y(t,`JSXExpressionContainer`)?Xc(t.expression):[]},dce=/^Icon($|[A-Z0-9_])|Icon$/,fce=(e,t)=>{if(t.iconComponentNames.has(e)||dce.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},Qc=(e,t,n)=>{let r=O(e);if(y(r,`JSXEmptyExpression`))return!1;if(y(r,`Literal`))return typeof r.value==`string`?Ic(r.value):typeof r.value==`number`;if(y(r,`TemplateLiteral`)){let e=In(r);return e===null||Ic(e)}return y(r,`ConditionalExpression`)?Qc(r.consequent,t,n)||Qc(r.alternate,t,n):y(r,`LogicalExpression`)?r.operator===`&&`?Qc(r.right,t,n):Qc(r.left,t,n)||Qc(r.right,t,n):y(r,`JSXElement`)||y(r,`JSXFragment`)?$c(r,t,n):!0},$c=(e,t,n)=>{if(t>n.depth)return!1;if(y(e,`JSXExpressionContainer`))return Qc(e.expression,t,n);if(y(e,`JSXText`))return Ic(e.value);if(y(e,`JSXFragment`))return e.children.some(e=>$c(e,t+1,n));if(y(e,`JSXElement`)){if(Hc(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=hr(e.openingElement,n.settings);if(H(t)&&!n.controlComponents.includes(t)&&!fce(t,n))return!0}for(let r of e.children)if($c(r,t+1,n))return!0}return!1},el=(e,t)=>Hc(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>$c(e,1,t)),tl=e=>y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`)||y(e,`FunctionDeclaration`),nl=(e,t)=>{if(e===Vc||e===`Label`)return!0;let n=P(t.attributes,`component`);return n?dr(n)===Vc:!1},pce=(e,t)=>{let n=e.parent,r=!1;for(;n&&!y(n,`JSXAttribute`);){if(tl(n)&&(r=!0),y(n,`JSXElement`)){let e=n.openingElement;if(Bc(e,t.settings))return`hidden`;let i=hr(e,t.settings);if(!r&&nl(i,e)&&el(n,t)||H(i)&&Uc(P(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},rl=e=>{let t=e.parent;for(;t;){if(y(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},mce=e=>{let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`))return y(t.id,`Identifier`)?t.id.name:null;if(tl(t)){if(y(t,`FunctionDeclaration`)&&t.id&&y(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},il=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){t.add(n.name);return}if(y(n,`CallExpression`)){let e=O(n.callee);y(e,`Identifier`)&&t.add(e.name);return}if(y(n,`LogicalExpression`)){il(n.left,t),il(n.right,t);return}y(n,`ConditionalExpression`)&&(il(n.consequent,t),il(n.alternate,t))},al=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(y(i,`JSXExpressionContainer`)){il(i.expression,r);continue}(y(i,`JSXElement`)||y(i,`JSXFragment`))&&al(i,t+1,n,r)}},hce=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=P(t.attributes,`type`);if(!n)return!0;let r=dr(n);return r===null?!0:Qse.has(r.toLowerCase())},ol=x({id:`control-has-associated-label`,title:`Control missing accessible label`,tags:[`react-jsx-only`],severity:`warn`,recommendation:`Give every interactive control a label screen readers can read.`,category:`Accessibility`,create:e=>{let t=sce(e.settings),n=ct(e.filename),r=new Set,i=new Set,a=new Set,o=new Set,s=[],c={depth:t.depth,customAttributes:t.labelAttributes,controlComponents:t.controlComponents,settings:e.settings,iconComponentNames:r,iconNamespaceNames:i};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!Fc(t)))for(let t of e.specifiers??[]){if(!y(t.local,`Identifier`))continue;let e=t.local.name;y(t,`ImportNamespaceSpecifier`)?i.add(e):r.add(e)}},JSXElement(r){if(n)return;let i=r.openingElement,l=hr(i,e.settings);if(nl(l,i)&&el(r,c)&&!rl(r)){let e=P(i.attributes,`htmlFor`);for(let t of Zc(e))a.add(t);l===Vc&&al(r,1,c,o)}if(ace.includes(l)||t.ignoreElements.includes(l))return;let u=P(i.attributes,`role`),d=u?dr(u):null;if(d&&t.ignoreRoles.includes(d)||Bc(i,e.settings)||ice(l,i))return;let f=xi.has(l),p=!Zse.has(l)&&ji(l,i),m=d===`separator`&&!P(i.attributes,`tabIndex`),h=d!==null&&Lc(d)&&!m,g=t.controlComponents.includes(l);if(p||f&&h||g){if(l===`input`){let e=P(i.attributes,`type`),t=e?dr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Uc(P(i.attributes,`value`)))return}if(!(f&&lce(cce(i.attributes,`title`),e.scopes))&&!(hce(l,i)&&Uc(P(i.attributes,`placeholder`)))&&!Hc(i.attributes,t.labelAttributes)&&!rl(r)&&pce(r,c)===null){if(l!==`select`){for(let e of r.children)if($c(e,1,c))return}s.push({opening:i,controlIdKeys:Zc(P(i.attributes,`id`)),enclosingBindingName:mce(r)})}}},"Program:exit"(){for(let t of s)t.controlIdKeys.some(e=>a.has(e))||t.enclosingBindingName!==null&&o.has(t.enclosingBindingName)||e.report({node:t.opening,message:"Blind users can't tell what this control does because its name is missing or only a symbol, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}),sl=(t,n,r)=>{let i=O(t);if(y(i,`JSXElement`)){n.push(i.openingElement);for(let e of i.children)sl(e,n,r);return}if(y(i,`JSXFragment`)){for(let e of i.children)sl(e,n,r);return}if(r){if(y(i,`JSXExpressionContainer`)){sl(i.expression,n,!0);return}if(y(i,`ConditionalExpression`)){let t=Dn(e(i.test));if(t!==null){sl(t?i.consequent:i.alternate,n,!0);return}sl(i.consequent,n,!0),sl(i.alternate,n,!0);return}if(y(i,`LogicalExpression`)){for(let e of gt(i))sl(e,n,!0);return}if(y(i,`ArrayExpression`)){for(let e of i.elements)e&&!y(e,`SpreadElement`)&&sl(e,n,!0);return}if(y(i,`SequenceExpression`)){if(i.expressions.length===0)return;sl(e(i),n,!0)}}},cl=(e,t={})=>{let n=[];for(let r of e.children)sl(r,n,t.includeStaticExpressionBranches===!0);return n},gce=new Set([`grid`,`table`,`treegrid`]),_ce=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(y(i,`JSXAttribute`)){if(Cn(i.name)?.toLowerCase()===t)return!1;continue}if(y(i,`JSXSpreadAttribute`)&&qr(i.argument,t,!1,n.scopes))return!0}}return!1},ll=(e,t,n,r)=>n.isUnknown&&_ce(e,t,r),vce=e=>e.attribute?I(e.attribute):_r(e.expression),ul=(e,t,n)=>{if(e.attribute)return Xr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=O(e.expression),i=_r(r);return i===null?y(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Yr(r)||y(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},yce=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=fn(e.attributes,n,!1);if(ll(e,n,r,t))return null;if(ul(r,n.startsWith(`aria-`),t))return!0}return!1},dl=e=>{for(let t of e){if(y(t,`JSXElement`)&&j(t.openingElement)===`caption`)return t;if(y(t,`JSXFragment`)){let e=dl(t.children);if(e)return e}}return null},bce=(e,t)=>br(e.openingElement,t.settings)?!1:Qr(e,t.settings),xce=(e,t,n)=>{let r=e.parent;for(;r;){if(y(r,`JSXElement`)){if(br(r.openingElement,n.settings))return!1;if(j(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Sce=(e,t)=>{let n=e.parent;for(;n;){if(y(n,`JSXElement`)&&br(n.openingElement,t.settings))return!0;n=n.parent}return!1},fl=x({id:`data-table-requires-accessible-name`,title:`Data table has no accessible name`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give data tables a concise caption, or reference an existing visible title with aria-labelledby.`,create:e=>({JSXElement(t){let n=t.openingElement;if(j(n)!==`table`||Mr(e,n)||br(n,e.settings)||Sce(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>ll(n,t,fn(n.attributes,t,!1),e)))return;let r=fn(n.attributes,`children`,!1),i=fn(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=fn(n.attributes,`role`,!1);if(ll(n,`role`,a,e))return;if(a.isPresent){let t=vce(a);if(t===null){if(ul(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>ai.has(e));if(e&&!gce.has(e))return}}if(!cl(t).some(n=>j(n)===`th`&&xce(n,t,e)))return;let o=dl(t.children),s=yce(n,e);s!==null&&(o&&bce(o,e)||s||e.report({node:n,message:`This data table has headers but no accessible name. Add a caption or connect the table to a visible title with aria-labelledby.`}))}})}),pl=(e,n,r)=>{let i=O(e);if(t(i))return[i];if(y(i,`Identifier`)){if(r){let e=w(i,r);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:t(e.declarationNode)?[e.declarationNode]:e.initializer&&t(O(e.initializer))?[O(e.initializer)]:[]}let e=T(n,i.name);return e?.initializer&&t(O(e.initializer))?[O(e.initializer)]:[]}if(y(i,`ConditionalExpression`))return[...pl(i.consequent,n,r),...pl(i.alternate,n,r)];if(y(i,`SequenceExpression`)){let e=i.expressions.at(-1);return e?pl(e,n,r):[]}return[]},ml=(e,n)=>t(e)?y(e.body,`BlockStatement`)?tn(e).flatMap(e=>e.argument?pl(e.argument,e,n):[]):pl(e.body,e,n):[],hl=(e,t,n={})=>{let r=t.symbolFor(e);if(!r)return[];let i=[r.bindingIdentifier],a=[r],o=new Set,s=new Set([r.id]);for(;a.length>0;){let e=a.pop();if(!(!e||o.has(e.id))){o.add(e.id);for(let r of e.references){if(r.flag!==`read`)continue;let e=v(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&y(c,`MemberExpression`)&&c.object===o&&C(c)===`current`&&(o=v(c),c=o.parent),n.includeReactRefContainers&&y(c,`CallExpression`)&&c.arguments[0]===e&&k(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=v(c),c=o.parent),!y(c,`VariableDeclarator`)||c.init!==o||!y(c.id,`Identifier`))continue;let l=t.symbolFor(c.id);!l||s.has(l.id)||(s.add(l.id),i.push(l.bindingIdentifier),a.push(l))}}}return i},gl=(e,t,n)=>k(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),_l=(e,t)=>gl(e,dn,t),Cce=new Set([`useMemo`,`useCallback`,`useRef`]),wce=new Set([`useRef`]),vl=new Set([`debounce`,`throttle`]),yl=new Set([`cancel`,`flush`]),Tce=new Set([`document`,`window`]),Ece=new Set([`then`,`catch`,`finally`]),bl=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),xl=e=>{if(!y(e,`CallExpression`))return!1;let t=O(e.callee);if(y(t,`Identifier`)){if(!vl.has(t.name))return!1;let e=T(t,t.name);return!e?.initializer||!y(e.initializer,`ImportSpecifier`)&&!y(e.initializer,`ImportDefaultSpecifier`)?!1:bl(qe(t,t.name))}if(y(t,`MemberExpression`)&&vl.has(C(t)??``)){let e=O(t.object);if(!y(e,`Identifier`))return!1;let n=T(e,e.name);return!n?.initializer||!y(n.initializer,`ImportNamespaceSpecifier`)&&!y(n.initializer,`ImportDefaultSpecifier`)?!1:bl(qe(e,e.name))}return!1},Dce=e=>{if(!y(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=O(t);if(xl(n))return n;if(!y(n,`ArrowFunctionExpression`)&&!y(n,`FunctionExpression`))return null;if(!y(n.body,`BlockStatement`)){let e=O(n.body);return xl(e)?e:null}for(let e of n.body.body??[])if(y(e,`ReturnStatement`)&&e.argument){let t=O(e.argument);if(xl(t))return t}return null},Oce=(e,t,n)=>{if(!y(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=to(r,[`trailing`],t,n);return i?i.properties.some(e=>y(e,`Property`)&&S(e,{allowComputedString:!0})===`trailing`&&y(e.value,`Literal`)&&e.value.value===!1):!1},Sl=e=>{let t=O(e);for(;y(t,`MemberExpression`);)t=O(t.object);return y(t,`Identifier`)?t:null},Cl=(e,t)=>{let n=Sl(e);return n?t.symbolFor(n)?.id??null:null},wl=(e,t)=>{let n=O(e);if(y(n,`MemberExpression`))return yl.has(C(n)??``)?Cl(n.object,t):null;if(!y(n,`Identifier`))return null;let r=T(n,n.name)?.bindingIdentifier?.parent;if(!y(r,`Property`))return null;let i=y(r.key,`Identifier`)?r.key.name:y(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!yl.has(i))return null;let a=r.parent,o=a?.parent;return!y(a,`ObjectPattern`)||!y(o,`VariableDeclarator`)||!o.init?null:Cl(o.init,t)},kce=(e,n,r)=>{A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`CallExpression`))return;let a=wl(i.callee,r);a!==null&&n.add(a)})},Ace=(e,n)=>{let r=new Set,i=new Set,a=new Set;return A(e,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(_l(e,n)){let r=e.arguments?.[0],o=r?O(r):null;if(o&&t(o)){if($a(o,e=>{if(!y(e,`CallExpression`))return;let t=Cl(e.callee,n);t!==null&&i.add(t)}),y(o.body,`BlockStatement`))for(let e of tn(o)){if(!e.argument)continue;let t=wl(e.argument,n);t!==null&&a.add(t)}else{let e=wl(o.body,n);e!==null&&a.add(e)}for(let e of ml(o))kce(e,a,n)}}if(y(r,`Identifier`)&&r.name===`useUnmount`&&(qe(r,r.name)===`react-use`||!T(r,r.name)))for(let t of e.arguments??[]){let e=wl(t,n);e!==null&&a.add(e)}if(!y(r,`Identifier`)||!dc(r.name))return;let o=T(r,r.name)?.initializer;if(!o||!t(o))return;let s=new Set;A(o,e=>{if(!y(e,`CallExpression`)||!_l(e,n))return;let t=or(e);if(t)for(let e of ml(t))A(e,e=>{if(!y(e,`CallExpression`))return;let t=O(e.callee);if(!y(t,`MemberExpression`)||!yl.has(C(t)??``))return;let n=Sl(t.object);n&&s.add(n.name)})});for(let[t,r]of(o.params??[]).entries()){if(!y(r,`Identifier`)||!s.has(r.name))continue;let i=e.arguments?.[t],o=i?Cl(i,n):null;o!==null&&a.add(o)}}),A(e,i=>{if(i!==e&&t(i))return!1;if(!y(i,`ReturnStatement`)||!i.argument)return;let a=O(i.argument);!y(a,`Identifier`)&&!y(a,`ObjectExpression`)&&!y(a,`ArrayExpression`)||A(a,e=>{if(!y(e,`Identifier`))return;let t=n.symbolFor(e)?.id;t!==void 0&&r.add(t)})}),{escapedSymbolIds:r,invokedSymbolIds:i,releasedSymbolIds:a}},jce=(e,n,r)=>{if(!y(e,`CallExpression`))return null;let i=e.arguments?.[0];if(!i)return null;let a=O(i);if(t(a))return a;if(!y(a,`Identifier`))return null;let o=a.name,s=null;return A(n,e=>{if(s)return!1;if(y(e,`FunctionDeclaration`)&&e.id?.name===o)return s=e,!1;if(y(e,`VariableDeclarator`)&&y(e.id,`Identifier`)&&e.id.name===o&&e.init){let n=O(e.init);if(t(n))return s=n,!1;if(y(n,`CallExpression`)&&gl(n,new Set([`useCallback`]),r)){let e=n.arguments?.[0],r=e?O(e):null;if(r&&t(r))return s=r,!1}}}),s},Tl=new Set([`localStorage`,`sessionStorage`]),Mce=e=>{let t=e;for(;;){let e=t.parent;if(e&&y(e,`MemberExpression`)&&e.object===t&&e.parent&&y(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return y(t,`CallExpression`)&&y(t.callee,`MemberExpression`)&&C(t.callee)===`catch`},Nce=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])qi(n,t);let n=!1;return A(e,e=>{if(n)return!1;if(y(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(y(e,`Identifier`)&&Tce.has(e.name)&&!t.has(e.name)&&!T(e,e.name)&&!(y(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(y(r,`Property`)&&!r.computed&&r.key===e)){if(y(r,`MemberExpression`)&&r.object===e){if(y(r.property,`Identifier`)&&Tl.has(r.property.name))return;let e=r;for(;e.parent&&y(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&y(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&y(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(y(e,`CallExpression`)){let t=e.callee;if(y(t,`Identifier`)&&t.name===`fetch`&&!T(t,t.name)||y(t,`MemberExpression`)&&Ece.has(C(t)??``)&&C(t)!==`catch`&&!Mce(e))return n=!0,!1;if(y(t,`MemberExpression`)&&y(t.object,`Identifier`)&&Tl.has(t.object.name))return}}),n},Pce=e=>{if(!e)return!0;let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`||y(t,`UnaryExpression`)&&t.operator===`void`},Fce=(e,t)=>{if(!y(e,`MemberExpression`)||C(e)!==`current`)return!1;let n=O(e.object);if(!y(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=O(r.initializer);return y(i,`CallExpression`)&&gl(i,wce,t)&&Pce(i.arguments?.[0])},Ice=(e,t)=>{if(!y(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return A(e,e=>{if(r)return!1;if(Fce(e,t)||y(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(y(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])y(e.id,`Identifier`)&&n.add(e.id.name);continue}if(y(t,`IfStatement`)){let e=t.consequent;return(y(e,`ReturnStatement`)||y(e,`BlockStatement`)&&y(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},El=x({id:`debounce-no-cleanup`,title:`Memoized debounce never cancelled on unmount`,severity:`warn`,category:`Bugs`,recommendation:"A debounced/throttled callback holds a pending timer that still fires after unmount, so add `useEffect(() => () => debounced.cancel(), [debounced])` to cancel the trailing invocation when the component tears down.",create:e=>{let t=new WeakMap;return{CallExpression(n){if(!gl(n,Cce,e.scopes))return;let r=Dce(n);if(!r||Oce(r,e.scopes,n))return;let i=v(n),a=i.parent;if(!y(a,`VariableDeclarator`)||a.init!==i||!y(a.id,`Identifier`))return;let o=a.id.name,s=b(n);if(!s)return;let c=t.get(s);c||(c=Ace(s,e.scopes),t.set(s,c));let l=hl(a.id,e.scopes,{includeReactRefContainers:!0}),u=new Set(l.flatMap(t=>{let n=e.scopes.symbolFor(t)?.id;return n===void 0?[]:[n]}));if([...u].some(e=>c.releasedSymbolIds.has(e))||[...u].some(e=>c.escapedSymbolIds.has(e))||![...u].some(e=>c.invokedSymbolIds.has(e)))return;let d=jce(r,s,e.scopes);d&&Nce(d)&&(Ice(d,e.scopes)||e.report({node:r,message:`\`${o}\` keeps a pending debounced/throttled call that fires after unmount because nothing cancels it; return \`() => ${o}.cancel()\` from a useEffect so the trailing call is dropped on teardown.`}))}}}}),Dl=1e3,Ol=new Set([`arial`,`geist`,`helvetica`,`inter`,`lato`,`montserrat`,`open sans`,`plus jakarta sans`,`roboto`,`space grotesk`]),Lce=new Map([[`text-xs`,12],[`text-sm`,14],[`text-base`,16],[`text-lg`,18],[`text-xl`,20],[`text-2xl`,24],[`text-3xl`,30],[`text-4xl`,36],[`text-5xl`,48],[`text-6xl`,60],[`text-7xl`,72],[`text-8xl`,96],[`text-9xl`,128]]),Rce=new Set(`best of breed.best-in-class.built for the modern.cutting-edge.drive engagement.drive growth.drive results.empower your.enterprise-grade.future-proof.game changing.game-changer.harness the power.industry-leading.leverage the power.next-generation.seamless experience.seamlessly integrate.streamline your.supercharge your.transform your business.trusted by leading.trusted by the world.unleash the power.unleash your.unlock your potential.world-class`.split(`.`)),kl=1e3,zce=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),Bce=new Set(`code.pre.kbd.samp.var.tt.markdown.markdownblock.markdowncontent.markdownrenderer.markdowntext.markdownview.mdx.mdxcontent.mdxremote.md.prose.richtext.article.blockquote.quote.trans.translation.translated.fbt.fbs`.split(`.`)),Vce=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Hce=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Uce=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Wce=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Al=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),jl=new Set([`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`]),Gce=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Ml=/[\p{L}\p{N}]\.\.\./u,Nl=e=>S(e,{allowComputedString:!0}),G=(e,t)=>{for(let n of[...e??[]].reverse()){let e=Nl(n);if(!e)return null;if(e===t&&y(n,`Property`))return n}return null},Kce=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=e.identifier;for(;t.parent&&y(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;let n=t.parent;return!!(y(n,`AssignmentExpression`)&&n.left===t||y(n,`UpdateExpression`)&&n.argument===t||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t||y(n,`CallExpression`)&&n.arguments?.some(e=>e===t))}),Pl=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ObjectExpression`))return r;if(!t||!y(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Kce(i))return null;let a=new Set(n);return a.add(i.id),Pl(i.initializer,t,a)},K=(e,t)=>!y(e.name,`JSXIdentifier`)||e.name.name!==`style`||!y(e.value,`JSXExpressionContainer`)?null:Pl(e.value.expression,t),q=e=>{if(!y(e,`JSXOpeningElement`))return null;let t=L(e.attributes??[],`className`);return t?.value?y(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value:y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`Literal`)&&typeof t.value.expression.value==`string`?t.value.expression.value:y(t.value,`JSXExpressionContainer`)&&y(t.value.expression,`TemplateLiteral`)&&t.value.expression.quasis?.length===1?t.value.expression.quasis[0].value?.raw??null:null:null},J=e=>y(e,`Property`)&&y(e.value,`Literal`)&&typeof e.value.value==`string`?e.value.value:null,Fl=[`sm`,`md`,`lg`,`xl`,`2xl`],Il=[``,...Fl],Ll=new Map(Fl.map((e,t)=>[e,t])),Rl=e=>e.replace(/(?<!\\)_/g,` `),qce=new Map([[`hidden`,{isVisible:!1,propertyName:`display`}],[`block`,{isVisible:!0,propertyName:`display`}],[`contents`,{isVisible:!0,propertyName:`display`}],[`flex`,{isVisible:!0,propertyName:`display`}],[`flow-root`,{isVisible:!0,propertyName:`display`}],[`grid`,{isVisible:!0,propertyName:`display`}],[`inline`,{isVisible:!0,propertyName:`display`}],[`inline-block`,{isVisible:!0,propertyName:`display`}],[`inline-flex`,{isVisible:!0,propertyName:`display`}],[`inline-grid`,{isVisible:!0,propertyName:`display`}],[`inline-table`,{isVisible:!0,propertyName:`display`}],[`list-item`,{isVisible:!0,propertyName:`display`}],[`table`,{isVisible:!0,propertyName:`display`}],[`table-caption`,{isVisible:!0,propertyName:`display`}],[`table-cell`,{isVisible:!0,propertyName:`display`}],[`table-column`,{isVisible:!0,propertyName:`display`}],[`table-column-group`,{isVisible:!0,propertyName:`display`}],[`table-footer-group`,{isVisible:!0,propertyName:`display`}],[`table-header-group`,{isVisible:!0,propertyName:`display`}],[`table-row`,{isVisible:!0,propertyName:`display`}],[`table-row-group`,{isVisible:!0,propertyName:`display`}]]),Jce=new Map([[`collapse`,{isVisible:!1,propertyName:`visibility`}],[`invisible`,{isVisible:!1,propertyName:`visibility`}],[`visible`,{isVisible:!0,propertyName:`visibility`}]]),Yce=new Set([`block`,`contents`,`flex`,`flow-root`,`grid`,`inline`,`inline block`,`inline flex`,`inline flow-root`,`inline grid`,`inline table`,`list-item`,`table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row`,`table-row-group`]),zl=(e,t)=>{let n=`[${t}:`;return e.toLowerCase().startsWith(n)&&e.endsWith(`]`)?e.slice(n.length,-1):null},Bl=e=>{let t=qce.get(e)??Jce.get(e);if(t)return{...t,status:`known`};let n=zl(e,`display`);if(n!==null){let e=Rl(n).trim().toLowerCase();return e===`none`?{isVisible:!1,propertyName:`display`,status:`known`}:Yce.has(e)?{isVisible:!0,propertyName:`display`,status:`known`}:{isVisible:null,propertyName:`display`,status:`unknown`}}let r=zl(e,`visibility`);if(r===null)return{isVisible:null,propertyName:null,status:`not-relevant`};let i=Rl(r).trim().toLowerCase();return i===`visible`?{isVisible:!0,propertyName:`visibility`,status:`known`}:i===`hidden`||i===`collapse`?{isVisible:!1,propertyName:`visibility`,status:`known`}:{isVisible:null,propertyName:`visibility`,status:`unknown`}},Xce=(e,t)=>{let n=0;for(let r=t-1;r>=0&&e[r]===`\\`;--r)n+=1;return n%2==1},Y=e=>{let t=[],n=0;for(let r of Rc(e,e=>e===`:`))t.push(e.slice(n,r)),n=r+1;let r=e.slice(n),i=r.endsWith(`!`)&&!Xce(r,r.length-1),a=r.startsWith(`!`)||i;return r.startsWith(`!`)&&(r=r.slice(1)),i&&(r=r.slice(0,-1)),{isImportant:a,utility:r,variants:t}},Zce=e=>{let t=0,n=Il.length;for(let r of e){let e=Il.indexOf(r);if(e>0){t=Math.max(t,e);continue}if(r.startsWith(`max-`)){let e=Il.indexOf(r.slice(4));if(e>0){n=Math.min(n,e);continue}}return null}return{maximumBreakpointIndex:n,minimumBreakpointIndex:t,specificity:e.length}},Vl=(e,t,n)=>{let r=e.filter(({effect:e,scope:r})=>e.propertyName===n&&t>=r.minimumBreakpointIndex&&t<r.maximumBreakpointIndex);if(r.length===0)return!0;let i=r.some(({token:e})=>e.isImportant)?r.filter(({token:e})=>e.isImportant):r,a=Math.max(...i.map(({scope:e})=>e.specificity)),o=i.filter(({scope:e})=>e.specificity===a),s=Math.max(...o.map(({scope:e})=>e.minimumBreakpointIndex)),c=o.filter(({scope:e})=>e.minimumBreakpointIndex===s),l=Math.min(...c.map(({scope:e})=>e.maximumBreakpointIndex)),u=new Set(c.filter(({scope:e})=>e.maximumBreakpointIndex===l).map(({effect:e})=>e.isVisible));return u.size===1?u.values().next().value??null:null},Hl=e=>{let t=[];for(let n of W(e).map(Y)){let e=Bl(n.utility);if(e.status===`not-relevant`)continue;let r=Zce(n.variants);if(r===null)return null;if(!r||r.minimumBreakpointIndex>=r.maximumBreakpointIndex)continue;if(e.status===`unknown`||e.propertyName===null||e.isVisible===null)return null;let i={isVisible:e.isVisible,propertyName:e.propertyName};t.push({effect:i,scope:r,token:n})}let n=[];for(let e=0;e<Il.length;e+=1){let r=Vl(t,e,`display`),i=Vl(t,e,`visibility`);if(r===null||i===null)return null;n.push(r&&i)}return n},Qce=(e,t)=>{if(br(e,t.settings))return!0;let n=L(e.attributes,`style`),r=n?K(n,t.scopes):null;if(r){let e=G(r.properties,`display`);if(e&&J(e)?.toLowerCase()===`none`)return!0;let t=G(r.properties,`visibility`),n=t?J(t)?.toLowerCase():null;if(n===`hidden`||n===`collapse`)return!0}let i=q(e);if(!i)return!1;let a=Hl(i);return!!(a&&a.every(e=>!e))},Ul=(e,t)=>{let n=e;for(;n;){if(y(n,`JSXElement`)&&Qce(n.openingElement,t))return!0;n=n.parent}return!1},Wl=e=>{if(!e||!y(e,`JSXOpeningElement`))return null;if(y(e.name,`JSXIdentifier`))return j(e);if(y(e.name,`JSXMemberExpression`)){let t=e.name;for(;y(t,`JSXMemberExpression`);)t=t.property;if(y(t,`JSXIdentifier`))return t.name}return null},Gl=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)){let e=Wl(t.openingElement);if(e&&Bce.has(e.toLowerCase()))return!0;let n=U(t.openingElement?.attributes??[],`translate`);if(y(n?.value,`Literal`)&&n.value.value===`no`)return!0}t=t.parent}return!1},$ce=/&(?:mdash|#0*8212|#x0*2014);/gi,ele=/(?:^|[/\\])(?:articles?|blog|changelog|content|docs?|posts?)(?:[/\\]|$)/i,tle=/\p{L}[^—\n]*—[^—\n]*\p{L}/u,nle=/\p{L}+/gu,rle=/[\r\n]/u,Kl=e=>e.includes(`—`)&&e.split(rle).some(e=>tle.test(e)&&(e.match(nle)?.length??0)>=5),ql=e=>{let t=O(e);return y(t,`Literal`)?typeof t.value==`string`&&Kl(t.value):y(t,`TemplateLiteral`)?t.quasis.some(e=>Kl(e.value.cooked??e.value.raw??``)):y(t,`ConditionalExpression`)?ql(t.consequent)||ql(t.alternate):y(t,`LogicalExpression`)?ql(t.right):!1},Jl=x({id:`design-no-em-dash-in-jsx-text`,title:`Em dash in JSX text`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Replace em dashes in UI text with commas, colons, semicolons, or parentheses so the copy reads less like AI output.`,create:e=>e.filename&&ele.test(e.filename)?Ae:{JSXExpressionContainer(t){t.parent&&y(t.parent,`JSXAttribute`)||Gl(t)||Ul(t,e)||ql(t.expression)&&e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`})},JSXText(t){Kl((typeof t.value==`string`?t.value:``).replace($ce,`—`))&&(Gl(t)||Ul(t,e)||e.report({node:t,message:`Em dash (—) in UI text reads like AI output to your users.`}))}}}),Yl=(e,t,n)=>{let r=new Set;for(let n of e.matchAll(t))r.add(`${n[1]}${n[2]}`);let i=[];for(let t of e.matchAll(n)){let e=`${t[1]}${t[2]}`;r.has(e)&&i.push({value:e})}return i},Xl=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Zl=x({id:`design-no-redundant-padding-axes`,title:`Redundant padding axes`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching padding axes to `p-N` so duplicated classes do not make spacing harder to scan; keep split axes only when breakpoints differ.",create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Xl(n,`px`)||Xl(n,`py`))return;let r=Yl(n,Vce,Hce);if(r.length!==0)for(let n of r)e.report({node:t,message:`px-${n.value} and py-${n.value} duplicate p-${n.value}, so the class list is noisier without changing spacing.`})}})}),Ql=x({id:`design-no-redundant-size-axes`,title:`Redundant width and height axes`,requires:[`tailwind:3.4`],tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Collapse matching width and height to `size-N` so duplicated classes do not make layout harder to scan.",create:e=>{let t=!1;return{JSXAttribute(n){if(t||!y(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=I(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Xl(r,`w`)||Xl(r,`h`))return;let i=Yl(r,Uce,Wce);if(i.length===0)return;let[a]=i;t=!0,e.report({node:n,message:`w-${a.value} and h-${a.value} duplicate size-${a.value}, so the class list is noisier without changing layout.`})}}}}),ile=e=>e.split(/\s+/).filter(Boolean),$l=x({id:`design-no-space-on-flex-children`,title:`space-* utility on flex children`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:"Use `gap-*` on the flex or grid parent. `space-x-*` and `space-y-*` leave gaps when a child is hidden, miss spacing on wrapped lines, and don't flip in right-to-left layouts.",create:e=>({JSXAttribute(t){if(!y(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`space-`))return;let r=ile(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Al.has(t)){i=!0;break}}if(!i)return;let a=n.match(Gce);if(!a)return;let o=a[1],s=a[2];e.report({node:t,message:`space-${o}-${s} on a flex or grid parent can leave uneven gaps when children hide, wrap, or render in RTL layouts.`})}})}),ale=new Set([`alt`,`aria-label`,`placeholder`,`title`]),ole=e=>{let t=I(e);if(t!==null)return t;let n=e.value;return!n||!y(n,`JSXExpressionContainer`)?null:y(n.expression,`TemplateLiteral`)?In(n.expression):null},eu=(e,t)=>{let n=O(e);if(y(n,`Literal`)){typeof n.value==`string`&&Ml.test(n.value)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(y(n,`TemplateLiteral`)){let e=In(n);e&&Ml.test(e)&&t.report({node:n,message:`Use the real ellipsis character ("…") instead of three period characters.`});return}if(y(n,`ConditionalExpression`)){eu(n.consequent,t),eu(n.alternate,t);return}y(n,`LogicalExpression`)&&eu(n.right,t)},tu=x({id:`design-no-three-period-ellipsis`,title:`Three dots instead of ellipsis`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,category:`Architecture`,recommendation:`Use the real ellipsis character ("…") so UI labels look polished and consistent instead of like three separate periods.`,create:e=>({JSXAttribute(t){let n=Cn(t.name)?.toLowerCase();if(!n||!ale.has(n))return;let r=ole(t);!r||!Ml.test(r)||e.report({node:t.value??t,message:`Use the real ellipsis character ("…") instead of three period characters.`})},JSXExpressionContainer(t){t.parent&&y(t.parent,`JSXAttribute`)||Gl(t)||eu(t.expression,e)},JSXText(t){let n=typeof t.value==`string`?t.value:``;Ml.test(n)&&(Gl(t)||e.report({node:t,message:`Use the real ellipsis character ("…") instead of three period characters.`}))}})}),nu=e=>e===`button`||e===`Button`,sle=e=>nu(e)||e===`a`||e===`Link`,cle=new Set([`back`,`previous`]),ru=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),iu=e=>{if(!y(e,`JSXElement`)&&!y(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(y(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(y(e,`JSXExpressionContainer`)){let t=e.expression;if(y(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(y(t,`TemplateLiteral`)){let e=In(t);if(e!==null){n.push(e);continue}}return null}if(y(e,`JSXFragment`)){let t=iu(e);if(t===null)return null;n.push(t);continue}if(y(e,`JSXElement`))return null}return n.join(``).trim()},lle=e=>{let t=e.parent;for(;t;){if(y(t,`JSXElement`)&&Wl(t.openingElement)===`form`)return t;t=t.parent}return null},au=e=>{for(let t of e.children??[]){if(y(t,`JSXFragment`)){if(au(t))return!0;continue}if(!y(t,`JSXElement`))continue;let e=Wl(t.openingElement);if(e&&sle(e)&&cle.has(ru(iu(t)??``))||au(t))return!0}return!1},ou=x({id:`design-no-vague-button-label`,title:`Vague button label`,tags:[`design`,`test-noise`],severity:`warn`,defaultEnabled:!1,recommendation:`Name the action: "Save changes" instead of "Continue", "Send invite" instead of "Submit". The label is the button's accessible name.`,create:e=>({JSXElement(t){let n=Wl(t.openingElement);if(!n||!nu(n))return;let r=iu(t);if(!r)return;let i=ru(r);if(zce.has(i)){if(i===`continue`){let e=lle(t);if(e&&au(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),ule=e=>{for(let t of e.children)if(!(y(t,`JSXText`)&&t.value.trim().length===0)){if(y(t,`JSXElement`))return t.openingElement;if(!(y(t,`JSXExpressionContainer`)&&y(t.expression,`JSXEmptyExpression`)))return}return null},su=x({id:`details-requires-summary`,title:`Details disclosure has no explicit summary`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Make a meaningful summary the first child of details so users can understand and operate the disclosure.`,create:e=>({JSXElement(t){if(j(t.openingElement)!==`details`)return;let n=ule(t);n!==void 0&&(n&&j(n)===`summary`||e.report({node:n??t.openingElement,message:`This details disclosure has no explicit summary as its first content child, so the browser falls back to an implementation-defined label. Add a meaningful summary first.`}))}})}),dle=new Set([`dialog`,`alertdialog`]),fle=[`aria-label`,`aria-labelledby`,`title`],cu=x({id:`dialog-has-accessible-name`,title:`Dialog without accessible name`,severity:`warn`,recommendation:'Give every `<dialog>` / `role="dialog"` an accessible name with `aria-label` or `aria-labelledby` (referencing the dialog\'s title element).',create:e=>ct(e.filename)?Ae:{JSXOpeningElement(t){if(!y(t.name,`JSXIdentifier`))return;let n=j(t);if(n[0]!==n[0]?.toLowerCase())return;let r=P(t.attributes,`role`),i=r?dr(r):null;(n===`dialog`||i!==null&&dle.has(i))&&(F(t.attributes)||fle.some(e=>P(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),lu=`createReactClass`,uu=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`MemberExpression`)?!!(y(t.object,`Identifier`)&&t.object.name===`React`&&y(t.property,`Identifier`)&&t.property.name===lu):y(t,`Identifier`)?t.name===lu:!1},ple=[`observer`,`lazy`,`withTracking`],mle=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??ple);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},du=(e,t,n)=>{if(!e)return!0;let r=e.match(/^(\d+)\.(\d+)/);if(!r)return!0;let i=Number(r[1]),a=Number(r[2]);return i>t||i===t&&a>=n},fu=new WeakMap,pu=e=>{let t=fu.get(e);if(t!==void 0)return t;let n=!1,r=e=>{if(n)return;if(e.type===`JSXElement`||e.type===`JSXFragment`){n=!0;return}if(y(e,`CallExpression`)&&Da(e)){n=!0;return}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let i=t[e];if(Array.isArray(i))for(let e of i)E(e)&&r(e);else E(i)&&r(i);if(n)return}};return r(e),fu.set(e,n),n},mu=e=>y(e,`MemberExpression`)?!e.computed&&y(e.property,`Identifier`)?e.property.name:e.computed&&y(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,hu=e=>{let t=e.parent;for(;t&&(t.type===`TSAsExpression`||t.type===`TSSatisfiesExpression`||t.type===`TSNonNullExpression`||t.type===`TSTypeAssertion`);)t=t.parent??null;if(!t)return null;if(y(t,`VariableDeclarator`)&&y(t.id,`Identifier`))return t.id.name;if(y(t,`AssignmentExpression`)){let e=t.left;if(y(e,`Identifier`))return e.name;if(y(e,`MemberExpression`))return mu(e)}return null},gu=e=>{let t=e.parent;if(!t||!y(t,`AssignmentExpression`))return!1;let n=t.left;return y(n,`MemberExpression`)&&y(n.object,`Identifier`)&&n.object.name===`module`&&mu(n)===`exports`},hle=e=>{if(!y(e,`CallExpression`))return!1;if(uu(e))return!0;let t=e.callee;return y(t,`MemberExpression`)?mu(t)===`createClass`:!1},gle=e=>{if(!y(e,`CallExpression`))return!1;let t=e.callee;return y(t,`Identifier`)?t.name===`createContext`:y(t,`MemberExpression`)&&mu(t)===`createContext`},_le=e=>(y(e,`FunctionExpression`)||y(e,`FunctionDeclaration`))&&!!e.id?.name,_u=e=>y(e,`CallExpression`)&&e.arguments[0]||null,vu=(e,t)=>{if(!y(e,`CallExpression`))return null;let n=e.callee;if(y(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},vle=(e,t)=>vu(e,t)!==null,yu=e=>{if(!e)return!1;if(du(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},yle=(e,t)=>{if(!vle(e,t.additionalHoCs)||!pu(e))return!1;let n=hu(e),r=d(e);if(n&&r&&wu(n,r))return!1;let i=vu(e,t.additionalHoCs),a=_u(e);return!a||i===`forwardRef`&&y(e.parent,`CallExpression`)&&vu(e.parent,t.additionalHoCs)===`memo`&&_u(e.parent)===e&&yu(t.reactVersion)?!1:i===`memo`&&y(a,`CallExpression`)?vu(a,t.additionalHoCs)===`forwardRef`?!yu(t.reactVersion):!1:_le(a)?!1:y(a,`FunctionExpression`)||y(a,`ArrowFunctionExpression`)},bu=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((y(e,`PropertyDefinition`)||y(e,`MethodDefinition`))&&`static`in e&&e.static&&y(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},xu=e=>{if(y(e,`Identifier`))return[e.name];if(!y(e,`MemberExpression`))return[];let t=xu(e.object),n=mu(e);return n?[...t,n]:t},Su=new WeakMap,Cu=e=>{let t=Su.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(y(e,`AssignmentExpression`)&&y(e.left,`MemberExpression`)&&mu(e.left)===`displayName`){y(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of xu(e.left.object))r.add(t)}let t=e;for(let e of Object.keys(t)){if(e===`parent`)continue;let n=t[e];if(Array.isArray(n))for(let e of n)E(e)&&i(e);else E(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Su.set(e,a),a},wu=(e,t)=>Cu(t).identifierTargets.has(e),ble=(e,t)=>Cu(t).memberPathSegments.has(e),Tu=x({id:`display-name`,title:`Component missing display name`,severity:`warn`,defaultEnabled:!1,recommendation:"Give each component a `displayName` so DevTools shows a clear name.",category:`Architecture`,create:e=>{let t=mle(e.settings),n=!t.ignoreTranspilerName,r=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Ya(e)&&!(e.id&&H(e.id.name)&&n)&&!bu(e)){if(e.id){let t=d(e);if(t&&wu(e.id.name,t))return}r(e.id??e)}},ClassExpression(e){if(Ya(e)&&!(e.id&&H(e.id.name)&&n)&&!bu(e)){if(e.id){let t=d(e);if(t&&wu(e.id.name,t))return}r(e.id??e)}},FunctionExpression(e){if(!pu(e)||e.id&&H(e.id.name)&&n)return;if(y(e.parent,`Property`)&&e.parent.method){let n=e.parent.key,i=y(n,`Identifier`)?n.name:y(n,`Literal`)&&typeof n.value==`string`?n.value:null,a=d(e);if(i&&H(i)&&t.ignoreTranspilerName&&(!a||!ble(i,a))){r(e);return}}let i=hu(e);if(!(i&&H(i)&&n)){if(gu(e)&&!e.id){r(e);return}y(e.parent,`ReturnStatement`)&&!e.id&&r(e)}},ArrowFunctionExpression(e){if(!pu(e))return;if(y(e.parent,`ArrowFunctionExpression`)||y(e.parent,`ReturnStatement`)){r(e);return}let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`)&&y(t.id,`Identifier`)){if(H(t.id.name)&&n)return;break}if(y(t,`ExportDefaultDeclaration`)){r(e);return}if(gu(e)){r(e);return}if(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`ClassDeclaration`)||y(t,`ClassExpression`)||y(t,`Program`))break;t=t.parent??null}},CallExpression(e){if(t.checkContextObjects&&du(t.reactVersion,16,3)&&gle(e)){let t=hu(e);if(t){let n=d(e);if(n&&wu(t,n))return}r(e);return}if(yle(e,t)){r(e);return}if(!hle(e))return;let i=e.arguments[0];if(!i||!y(i,`ObjectExpression`)){r(e);return}let a=!1;for(let e of i.properties){if(!y(e,`Property`)||e.computed)continue;let t=e.key;if(y(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(y(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&y(o,`VariableDeclarator`)&&y(o.id,`Identifier`)&&H(o.id.name)&&n)){if(o&&y(o,`AssignmentExpression`)){let e=o.left;if(y(e,`Identifier`)&&H(e.name)&&n||y(e,`MemberExpression`)&&y(e.property,`Identifier`)&&H(e.property.name)&&n)return}r(e)}}}}}),xle=(e,t,n,r)=>{let i=r===`different`;return i&&t!==n?`The cleanup removes \`${e}\` with a different callback binding and capture ${String(n)}, but it was registered with capture ${String(t)}. Pass the same callback binding and capture flag to both EventTarget calls.`:i?`The cleanup removes \`${e}\` with a different callback binding than the one registered, so \`removeEventListener\` cannot detach that listener. Pass the same callback binding to both calls.`:`The cleanup removes \`${e}\` with capture ${String(n)}, but it was registered with capture ${String(t)}. \`removeEventListener\` must use the same capture flag as \`addEventListener\`.`},Sle=e=>{let t=!1;return A(e,e=>{if(y(e,`CallExpression`))return t=!0,!1}),t},Eu=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,Du=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>Du(e,t)&&Du(n,t)),Cle=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,Ou=(e,t)=>{if(t.abortControllerSymbolId!==null&&Du(e,t.abortControllerSymbolId))return`cancelled`;let n=e.hasUnknownRemovalCall||t.abortControllerSymbolId!==null&&e.hasUnknownAbortCall?`unknown`:`not-cancelled`;for(let r of e.removals){if(r.eventName!==t.eventName||r.capture!==t.capture||r.callbackIdentity===null||Eu(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Cle(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=Ou(r,t),a=Ou(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},wle=(e,t)=>Ou(e,t)!==`not-cancelled`,ku=e=>{if(!e)return null;let t=O(e);return y(t,`MemberExpression`)?!t.computed&&y(t.property,`Identifier`)?t.property.name:t.computed&&y(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},Tle=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Ele=(e,t)=>{if(y(e,`IfStatement`)){if(e.test===t)return!0;let n=Dn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(y(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Dn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(y(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Dn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return y(e,`TryStatement`)?e.finalizer===t:y(e,`SwitchStatement`)?e.discriminant===t:y(e,`ForStatement`)?e.init===t||e.test===t:y(e,`ForInStatement`)||y(e,`ForOfStatement`)?e.right===t:y(e,`WhileStatement`)?e.test===t:!1},Au=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||Tle.has(e.type)&&!Ele(e,r)&&!n?.(e,r))return!0;r=e}return!1},ju=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=O(e);if(y(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!y(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&y(e,`SpreadElement`)){i=null;continue}if(!y(e,`Property`))return null;let r=S(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=O(e.value);if(y(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},Dle=e=>{if(!e)return!1;let t=O(e);if(y(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!y(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!y(e,`Property`))return null;let t=S(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=O(e.value);if(!y(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Ole=new Set([...dn,`useInsertionEffect`]),Mu=e=>e.references.every(e=>e.flag===`read`),kle=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&Mu(e),Nu=e=>e.kind===`const`&&y(e.declarationNode,`VariableDeclarator`)&&y(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,Pu=(e,t,n)=>{if(!y(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!kle(r)||n.has(r.id)||r.kind===`const`&&!Nu(r))return null;n.add(r.id);let i=r.initializer?O(r.initializer):null;if(r.kind===`const`&&y(i,`Identifier`)){let e=Pu(i,t,n);if(e)return e}return r},Fu=(e,n)=>{if(!e)return null;let r=O(e);if(t(r))return{node:r,isConcreteFunction:!0};if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i)return null;let a=i.initializer?O(i.initializer):null;return a&&t(a)?{node:a,isConcreteFunction:!0}:{node:i.bindingIdentifier,isConcreteFunction:!1}},Iu=(e,t)=>{let n=O(e);if(y(n,`Identifier`)){let e=Pu(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?O(e.initializer):null;return y(n,`NewExpression`)&&y(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:y(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)){let e=Iu(n.object,t);return n.property.name===`document`&&(e===`global:window`||e===`global:globalThis`)?`global:document`:n.property.name===`window`&&(e===`global:window`||e===`global:globalThis`)?`global:window`:e===null?null:`${e}.${n.property.name}`}return null},Lu=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(y(r,`Literal`)&&typeof r.value==`string`)return r.value;if(y(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!y(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!Nu(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),Lu(i.initializer,t,n))},Ale=(e,t)=>{let n=zu(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=O(r);if(!n||!y(i,`NewExpression`)||!y(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=O(n);if(!y(a,`Identifier`))return null;let o=Pu(a,t,new Set),s=o?.initializer?O(o.initializer):null;if(!y(s,`NewExpression`)||!y(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Iu(n,t),l=Lu(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Ru=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return null;let r=Pu(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=O(r.initializer);return!y(i,`NewExpression`)||!y(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},zu=(e,t,n)=>{if(!e)return null;let r=O(e);return!y(r,`MemberExpression`)||(ku(r)??(n&&r.computed?Lu(r.property,n):null))!==t?null:r.object},jle=(e,t)=>y(e,`ObjectPattern`)?e.properties.some(e=>!y(e,`Property`)||S(e,{allowComputedString:!0})!==`signal`?!1:(y(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Bu=(e,t,n=new Set)=>{let r=O(e),i=zu(r,`signal`);if(i)return Ru(i,t);if(!y(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!Mu(a))return null;n.add(a.id);let o=a.declarationNode;if(!y(o,`VariableDeclarator`))return null;if(y(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=O(a.initializer);if(y(e,`Identifier`))return Bu(e,t,n);let r=zu(e,`signal`);return r?Ru(r,t):null}return jle(o.id,a.bindingIdentifier)?Ru(a.initializer,t):null},Vu=(e,t,n)=>{let r=O(e);if(y(r,`UnaryExpression`)&&r.operator===`!`){let e=Vu(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(y(r,`BinaryExpression`)){let e=Dn(r.left),i=Dn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=Vu(a,t,n);if(e){let t=r.operator===`==`||r.operator===`===`,n=r.operator===`!=`||r.operator===`!==`,i=t&&!o||n&&o;if(t||n)return i?e===`aborted`?`not-aborted`:`aborted`:e}}return null}let i=zu(r,`aborted`);return i&&Bu(i,n)===t?`aborted`:null},Mle=(e,t,n,r)=>{if(y(e,`IfStatement`)||y(e,`ConditionalExpression`)){let i=Vu(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!y(e,`LogicalExpression`)||e.right!==t)return!1;let i=Vu(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Nle=(e,t,n,r)=>!Au(e,t,(e,t)=>Mle(e,t,n,r)),Ple=(e,t)=>{let n=O(e.callee);if(!y(n,`Identifier`))return null;let r=Pu(n,t,new Set);if(!r?.initializer)return null;let i=O(r.initializer);if(!y(i,`CallExpression`))return null;let a=zu(i.callee,`bind`);if(!a)return null;let o=zu(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Ru(o,t),l=Ru(s,t);return c!==null&&c===l?c:null},Fle=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=O(e);if(!y(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!y(e,`Property`))return n;if(S(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Bu(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Hu=(e,t,n)=>{let r=zu(e.callee,t,n);if(!r)return null;let i=Iu(r,n),a=Lu(e.arguments?.[0],n),o=Fu(e.arguments?.[1],n),s=ju(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ile=(e,t)=>{let n=zu(e.callee,`call`);if(!n||!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!Mu(r)||!y(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!y(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!y(e,`Property`))return!1;let t=y(e.value,`AssignmentPattern`)?e.value.left:e.value;return S(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Iu(i.init,t),s=Iu(a,t);if(o===null||s===null||o!==s)return null;let c=Lu(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Fu(e.arguments?.[2],t),capture:ju(e.arguments?.[3],{allowComputedString:!0})}},Lle=(e,n)=>{if(!e)return null;let r=O(e);if(t(r))return r.body;if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i||!i.initializer)return null;let a=O(i.initializer);return t(a)?a.body:null},Rle=(e,n)=>{let r=[],i=[],a=new Map,o=0;if(!y(e,`BlockStatement`))return{registrations:r,cleanupBodies:i,hasCanonicalCleanupReturn:!1,returnStatementCount:o};let s=e.body[e.body.length-1],c=y(s,`ReturnStatement`);return A(e,s=>{if(s!==e&&t(s)||y(s,`ClassDeclaration`)||y(s,`ClassExpression`))return!1;if(y(s,`CallExpression`)){if(Au(s,e))return;let t=zu(s.callee,`addEventListener`,n),i=t?Iu(t,n):null;i!==null&&a.set(i,(a.get(i)??0)+1);let o=Hu(s,`addEventListener`,n);if(o?.callbackIdentity&&o.capture!==null){let e=Fle(o.node.arguments?.[2],n);r.push({node:o.node,targetKey:o.targetKey,eventName:o.eventName,callbackIdentity:o.callbackIdentity,capture:o.capture,once:Dle(o.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Ale(s,n);if(c){let e=r.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&a.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!Sle(t.callbackIdentity.node)&&r.splice(r.indexOf(t),1)}return}if(y(s,`ReturnStatement`)){o+=1;let e=Lle(s.argument,n);e&&i.push(e)}}),{registrations:r,cleanupBodies:i,hasCanonicalCleanupReturn:c,returnStatementCount:o}},zle=(e,n)=>{let r=O(e.callee);if(!y(r,`Identifier`))return null;let i=Pu(r,n,new Set);if(!i?.initializer||i.kind!==`const`&&i.kind!==`function`)return null;let a=O(i.initializer);return!t(a)||a.async||a.generator?null:{body:a.body,symbolId:i.id}},Uu=(e,n,r=new Set,i=!1)=>{let a=[],o=new Set,s=[],c=!1,l=!1,u=!1,d=y(e,`BlockStatement`)?e.body[e.body.length-1]:null,f=e=>{a.push(...e.removals),l||=e.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)o.add(t);s.push(...e.exhaustiveBranches)},p=e=>{let t=y(e,`BlockStatement`)?e.body:[e];for(let e of t){if(y(e,`BreakStatement`)||y(e,`ContinueStatement`))return!0;if(y(e,`BlockStatement`)){if(p(e))return!0;continue}if(y(e,`IfStatement`)){let t=Dn(e.test);if(t!==null){let i=Uu(e.test,n,new Set(r),!0);if(!i)return!0;f(i);let a=t?e.consequent:e.alternate;if(a&&p(a))return!0;continue}}let t=Uu(e,n,new Set(r),!0);if(!t)return!0;f(t)}return!1};return A(e,m=>{if(m!==e&&t(m)||y(m,`ClassDeclaration`)||y(m,`ClassExpression`))return!1;if(y(m,`ReturnStatement`)&&m===d)return;if(y(m,`ReturnStatement`)||y(m,`ThrowStatement`)||i&&(y(m,`BreakStatement`)||y(m,`ContinueStatement`)))return c=!0,!1;if(y(m,`ForOfStatement`)){let t=O(m.right);return y(t,`ArrayExpression`)&&t.elements.some(e=>e&&!y(e,`SpreadElement`))&&!Au(m,e)&&p(m.body),!1}if((y(m,`IfStatement`)||y(m,`ConditionalExpression`))&&m.alternate&&Dn(m.test)===null&&!Au(m,e)){let e=Uu(m.consequent,n,new Set(r)),t=Uu(m.alternate,n,new Set(r));e&&t&&(s.push({alternate:t,consequent:e}),l||=e.hasUnknownAbortCall&&t.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall&&t.hasUnknownRemovalCall);let i=Uu(m.test,n,new Set(r));return i&&f(i),!1}if(!y(m,`CallExpression`))return;let h=Au(m,e),g=zu(m.callee,`removeEventListener`,n);if(g&&!h){let e=Hu(m,`removeEventListener`,n);e?(a.push(e),u||=e.callbackIdentity===null||e.capture===null):u=!0}if(!g&&!h){let e=Ile(m,n);e&&a.push(e)}let _=zu(m.callee,`abort`);if(_){let t=Ru(_,n);t===null?h||(l=!0):(!h||Nle(m,e,t,n))&&o.add(t);return}if(h)return;let ee=Ple(m,n);if(ee!==null){o.add(ee);return}let te=zle(m,n);if(!te||r.has(te.symbolId))return;r.add(te.symbolId);let ne=Uu(te.body,n,r);ne&&f(ne)}),c?null:{removals:a,abortedControllerSymbolIds:o,exhaustiveBranches:s,hasUnknownAbortCall:l,hasUnknownRemovalCall:u}},Ble=(e,t)=>{let n=Rle(e,t);if(!n.hasCanonicalCleanupReturn||n.returnStatementCount!==1||n.cleanupBodies.length!==1)return null;let r=[],i=new Set,a=[],o=!1,s=!1,c=e=>{r.push(...e.removals),a.push(...e.exhaustiveBranches),o||=e.hasUnknownAbortCall,s||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)i.add(t)},l=Uu(e,t);for(let e of n.cleanupBodies){let n=Uu(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Wu=x({id:`effect-listener-cleanup-mismatch`,title:`Effect cleanup does not match its event listener`,severity:`error`,recommendation:"Pass the same callback binding and capture flag to `addEventListener` and `removeEventListener`, or abort the registration's local AbortController during cleanup.",create:e=>({CallExpression(n){if(!k(n,Ole,e.scopes))return;let r=or(n);if(!t(r))return;let i=Ble(r.body,e);if(i)for(let t of i.registrations){if(t.hasUnknownCancellation||i.hasUnknownRemovalCall||i.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&i.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&i.setupAbortAnalysis&&Du(i.setupAbortAnalysis,t.abortControllerSymbolId)||wle(i,t))continue;let n=i.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),r,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=Eu(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}r??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!r||e.report({node:r.removalNode,message:xle(t.eventName,t.capture,r.removalCapture,r.callbackComparison)})}}})}),Gu=(e,t)=>{if(!e)return null;let n=O(e);if(y(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(y(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=V({node:n,scopes:t});return r?`reference:${r}`:null},Ku=new Map([[`removeEventListener`,{registerMethod:`addEventListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`removeListener`,{registerMethod:`addListener`,requiresEventArgument:!0,allowsHandlerOnlyForm:!0}],[`off`,{registerMethod:`on`,requiresEventArgument:!0,allowsHandlerOnlyForm:!1}],[`unsubscribe`,{registerMethod:`subscribe`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unsub`,{registerMethod:`sub`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unwatch`,{registerMethod:`watch`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}],[`unlisten`,{registerMethod:`listen`,requiresEventArgument:!1,allowsHandlerOnlyForm:!1}]]),Vle=new Map([...Ku.values()].map(e=>[e.registerMethod,e])),Hle=new Set([`off`,`removeEventListener`,`removeListener`]),qu=e=>!!(e&&aa(O(e))),Ju=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return qu(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(qu(a))return{method:n,receiverKey:r,eventKey:Gu(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&qu(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Yu=x({id:`effect-listener-cleanup-reference-mismatch`,title:`Effect cleanup removes the wrong listener reference`,severity:`error`,category:`Bugs`,recommendation:`Removal APIs match by reference identity, so the second inline function passed to the remove call can never equal the one you added; hoist the handler into a single named const (or useCallback) and pass that same reference to both the add and remove calls.`,create:e=>({CallExpression(t){if(!_l(t,e.scopes))return;let n=or(t);if(!n)return;let r=[],i=[];$a(n,t=>{if(!y(t,`CallExpression`))return;let n=O(t.callee);if(!y(n,`MemberExpression`))return;let i=C(n);if(!i)return;let a=V({node:n.object,scopes:e.scopes});if(a===null)return;let o=Vle.get(i);if(!o)return;let s=Ju(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of ml(n))$a(t,t=>{if(!y(t,`CallExpression`))return;let n=O(t.callee);if(!y(n,`MemberExpression`))return;let r=C(n);if(!r||Hle.has(r))return;let a=Ku.get(r);if(!a)return;let o=V({node:n.object,scopes:e.scopes});if(o===null)return;let s=Ju(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Ku.get(t.method);n&&r.some(e=>e.method!==n.registerMethod||e.receiverKey!==t.receiverKey||e.usesHandlerOnlyForm!==t.usesHandlerOnlyForm?!1:!n.requiresEventArgument||t.usesHandlerOnlyForm?!0:e.eventKey!==null&&e.eventKey===t.eventKey)&&e.report({node:t.handlerNode,message:`Your cleanup calls \`${t.method}\` with a brand-new inline function that never equals the handler you added, so the cleanup exists but detaches nothing and the listener leaks; pass one shared named handler to both calls.`})}}})}),Xu=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=D(e),c=D(t);if(!i||!a||!o||s===null||c===null)return!0;if(!B(e,r))return!1;if(a===o)return s<c;let l=new Set([a]),u=[a];for(;u.length>0;){let e=u.pop();if(!e)break;for(let t of e.successors){if(t.to===o)return!0;l.has(t.to)||(l.add(t.to),u.push(t.to))}}return!1},Zu=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Ule=new Set([...Zu,`find`,`findIndex`,`sort`]),Qu=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),$u=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),ed=new Set([...$u,`Map`,`Set`]),td=(e,t,n)=>{let r=O(e);return y(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},nd=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n);return!!((r===`from`||r===`of`)&&td(n.object,`Array`,t))},Wle=(e,t)=>{let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&td(n.object,`Object`,t))},rd=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ArrayExpression`))return r.elements.length===0;if(y(r,`NewExpression`)){let e=O(r.callee);return!!(r.arguments.length===0&&y(e,`Identifier`)&&ed.has(e.name)&&t.isGlobalReference(e))}if(y(r,`CallExpression`)){let e=O(r.callee);if(nd(r,t)){if((y(e,`MemberExpression`)?C(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!y(i,`SpreadElement`)&&rd(i,t,n))}return!!(y(e,`MemberExpression`)&&C(e)!==`concat`&&Qu.has(C(e)??``)&&rd(e.object,t,n))}if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!y(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),rd(i.initializer,t,n))},id=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ArrayExpression`))return!0;if(y(r,`NewExpression`)){let e=O(r.callee);return!!(y(e,`Identifier`)&&$u.has(e.name)&&t.isGlobalReference(e))}if(y(r,`CallExpression`)){if(nd(r,t)||Wle(r,t))return!0;let e=O(r.callee);return!!(y(e,`MemberExpression`)&&Qu.has(C(e)??``)&&id(e.object,t,n))}if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!y(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),id(i.initializer,t,n))},ad=(e,t,n=new Set)=>{let r=O(e);if(!y(r,`NewExpression`)){if(!y(r,`Identifier`))return id(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),ad(e.initializer,t,n))}let i=O(r.callee);return!!(y(i,`Identifier`)&&ed.has(i.name)&&t.isGlobalReference(i))},od=(e,t,n)=>{let r=O(e.callee);if(!y(r,`MemberExpression`))return!1;let i=C(r);if(i===`from`&&td(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!y(t,`SpreadElement`)&&!rd(t,n))}return!!(i&&Ule.has(i)&&e.arguments[0]===t&&!rd(r.object,n)&&(i===`forEach`?ad(r.object,n):id(r.object,n)))},sd=(e,t)=>{let n=O(e.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?!1:y(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Zu.has(n.property.name)&&e.arguments[0]===t},cd=e=>{let t=e.parent;return!!(y(t,`CallExpression`)&&sd(t,e))},Gle=new Set([`then`,`catch`,`finally`]),ld=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Gle.has(e.property.name)&&O(e.object).type===`CallExpression`,ud=e=>{let t=e.parent;for(;t&&Vt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>O(t)===e)?null:ld(O(t.callee))?t:null},dd=(e,n,r)=>{let i=new Set([e]),a=new Map,o=new Set,s=new Set,c=[e],l=e=>{if(e.type!==`Identifier`)return null;let t=r?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},u=e=>{let n=e&&O(e);!t(n)||i.has(n)||(i.add(n),c.push(n))};for(;c.length>0;){let e=c.pop();if(!e)break;A(e,r=>{if(r!==e&&t(r)){if(r.type===`FunctionDeclaration`&&r.id?.type===`Identifier`){let e=l(r.id);e&&a.set(e,r)}return!1}if(r.type===`VariableDeclarator`&&r.id.type===`Identifier`){let e=r.init?O(r.init):null;if(t(e)){let t=l(r.id);t&&a.set(t,e)}return}if(r.type===`AssignmentExpression`){let e=O(r.left);if(e.type===`Identifier`){let t=l(e);t&&s.add(t)}return}if(r.type!==`CallExpression`)return;let i=O(r.callee);if(t(i)){u(i);return}if(i.type===`Identifier`){let e=l(i);e&&o.add(e);return}if(n&&ld(i))for(let e of r.arguments??[])u(e)});for(let e of o)s.has(e)||u(a.get(e))}return i},fd=(e,t)=>dd(e,!0,t),pd=(e,t)=>dd(e,!1,t),Kle=(e,n)=>{let r=new Set,i=[e],a=new Set,o=e=>{!e||!t(e)||e.generator||r.has(e)||(r.add(e),i.push(e))};for(t(e)&&!e.generator&&r.add(e);i.length>0;){let e=i.pop();!e||a.has(e)||(a.add(e),A(e,r=>{if(r!==e&&t(r))return!1;if(r.type===`CallExpression`){o(M(r.callee,n));for(let e of r.arguments)e.type===`SpreadElement`||!od(r,e,n)||o(M(e,n))}}))}return r},md=e=>{let t=b(e);return t?mc(t):null},hd=e=>{let t=e.parent;for(;t;){if(y(t,`VariableDeclarator`))return t;if(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)||y(t,`Program`))return null;t=t.parent??null}return null},qle=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),gd=new Set([`useMemo`,`useState`]),Jle=new Set([`startTransition`]),_d=(e,t)=>{let n=O(e);return!y(n,`MemberExpression`)||n.computed||!y(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!y(n.property,`Identifier`)?!1:n.property.name===`from`},Yle=(e,t)=>{let n=O(e);if(!y(n,`Identifier`))return!1;let r=T(n,n.name);if(!r?.initializer)return!1;let i=hd(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&y(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&_d(i.init,t))},vd=(e,t,n=new Set)=>{let r=O(e);if(!y(r,`Identifier`))return!1;if(r.name===`Array`&&t.isGlobalReference(r))return!0;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)?!1:(n.add(i.id),vd(i.initializer,t,n))},yd=(e,t,n,r)=>{let i=O(e);if(y(i,`ArrayExpression`))return!0;if(y(i,`Identifier`)){let e=w(i,t);return!!(e?.kind===`const`&&e.initializer&&!Dt(i,r,n,t)&&yd(e.initializer,t,n,r))}if(y(i,`NewExpression`))return vd(i.callee,t);if(!y(i,`CallExpression`))return!1;let a=O(i.callee);if(vd(a,t))return!0;if(!y(a,`MemberExpression`))return!1;let o=O(a.object);return!!(y(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&y(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},bd=(e,t,n={})=>{let r=v(e),i=r.parent;if(y(i,`NewExpression`)){let e=O(i.callee);return!!(t&&i.arguments?.[0]===r&&y(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return y(i,`CallExpression`)?i.callee===r||(t?k(i,gd,t,{allowGlobalReactNamespace:!0}):lr(i,gd))&&i.arguments?.[0]===r||t&&k(i,Jle,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(_d(i.callee,t)||Yle(i.callee,t))?!0:y(i.callee,`MemberExpression`)&&!i.callee.computed&&y(i.callee.property,`Identifier`)&&qle.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&yd(i.callee.object,t,i,i.callee.property.name))):!1},xd=new WeakMap,X=(e,t)=>{let n=b(e),r=n??e,i=xd.get(t);i||(i=new WeakMap,xd.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(mc(n))return i.set(r,n),n;if(!bd(n,t))return i.set(r,null),null;n=b(n)}return i.set(r,null),null},Sd=e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Cd=e=>e?We(e)?!0:y(e,`BlockStatement`)?Cd(e.body.at(-1)):y(e,`ContinueStatement`)||y(e,`BreakStatement`):!1,Xle=new Set([`createRef`,`useRef`]),wd=(e,t,n={})=>{let r=y(e,`MemberExpression`)?O(e.object):null;if(!y(e,`MemberExpression`)||C(e)!==`current`||!y(r,`Identifier`))return null;let i=w(r,t);if(!i?.initializer)return null;let a=O(i.initializer);return y(a,`CallExpression`)&&k(a,n.includeCreateRef?Xle:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Td=(e,t,n=new Set)=>{let r=O(e),i=wd(r,t);if(i)return i;if(!y(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=Hs(a);return o?(n.add(a.id),Td(o,t,n)):null},Ed=(e,t)=>Td(e,t)!==null,Dd=(e,n)=>{A(e,e=>{if(t(e))return!1;n(e)})},Od=e=>!y(e,`CallExpression`)||!y(e.callee,`MemberExpression`)||!y(e.callee.property,`Identifier`)?null:e.callee.property.name,Zle=e=>{let t=Od(e);return t!==null&&ot.has(t)},kd=e=>{let t=Od(e);return t!==null&&(ot.has(t)||t===`observe`)?t:null},Ad=e=>kd(e)!==null,jd=e=>{let t=Od(e);return t===null||!Zee.has(t)?!1:t===`listen`?(y(e,`CallExpression`)?e.arguments??[]:[]).some(e=>y(e,`ArrowFunctionExpression`)||y(e,`FunctionExpression`)):!0},Qle=e=>{let t=Ye(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||y(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(y(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(y(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=Lt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},$le=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return Qle(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),y(r.declarationNode,`VariableDeclarator`)&&y(r.declarationNode.id,`ObjectPattern`)){let e=Md(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!y(t,`Property`)||(y(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=S(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return Md(r.initializer,t,n)},Md=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`))return $le(r,t,n);if(!y(r,`MemberExpression`))return null;let i=C(r);if(!i)return null;let a=Md(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Nd=e=>{let t=e,n=t.parent;for(;n;){if(y(n,`AssignmentExpression`))return n.left===t;if(y(n,`UpdateExpression`)||y(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(y(n,`ForInStatement`)||y(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},eue=new Set([...dn,`useInsertionEffect`]),tue=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),nue=new Set([`@react-native-community/netinfo`]),rue=new Set([`events`,`node:events`,`react-native`]),Pd=new WeakMap,iue=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),aue=new Set([`clear`,`delete`,`set`]),Fd=new WeakMap,Id=new WeakMap,Ld=new WeakMap,Rd=new WeakMap,zd={subscribe:`subscription`,timer:`timer`,socket:`connection`},Bd=(e,t)=>{if(N(e,eue,t.scopes))return!0;let n=O(e.callee);return!!(y(n,`Identifier`)&&tue.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Vd=e=>y(e,`NewExpression`)&&y(e.callee,`Identifier`)&&Je.has(e.callee.name),Z=(e,n,r=new Set,i=new Map)=>{if(!e)return null;let a=O(e);if(y(a,`Identifier`)){let e=n.scopes.symbolFor(a);if(!e)return n.scopes.isGlobalReference(a)?`global:${a.name}`:null;if(r.has(e.id))return`symbol:${e.id}`;r.add(e.id);let t=i.get(e.id);if(t)return Z(t,n,r,i);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=y(o,`Property`)?S(o):null;if(l&&y(s,`ObjectPattern`)&&y(c,`VariableDeclarator`)&&c.id===s){let t=Z(c.init,n,r,i);return t?`${t}.${l}`:`symbol:${e.id}`}let u=e.initializer?O(e.initializer):null;return e.kind===`const`&&u&&(y(u,`Identifier`)||y(u,`MemberExpression`))?Z(u,n,r,i)??`symbol:${e.id}`:`symbol:${e.id}`}if(y(a,`MemberExpression`)&&!a.computed){if(!y(a.property,`Identifier`))return null;let e=Z(a.object,n,r,i);return e?`${e}.${a.property.name}`:null}if(y(a,`ThisExpression`))return`this`;if(y(a,`Literal`)&&(typeof a.value==`string`||typeof a.value==`number`||typeof a.value==`boolean`))return`literal:${String(a.value)}`;if(t(a)){let e=D(a);return e===null?null:`function:${e}`}return null},Hd=(e,n)=>{if(!e)return null;let r=O(e),i=[];for(;y(r,`MemberExpression`)&&!r.computed;){if(!y(r.property,`Identifier`))return null;i.unshift(r.property.name),r=O(r.object)}if(!y(r,`Identifier`))return null;let a=n.scopes.symbolFor(r);if(a&&a.references.every(e=>e.flag===`read`)){let e=a.bindingIdentifier,r=[],o=e.parent;if(y(o,`ArrayPattern`)){let t=o.elements.findIndex(t=>t===e);t>=0&&(r.push(t),e=o)}else if(y(o,`Property`)&&y(o.parent,`ObjectPattern`)){let t=S(o);t&&(r.push(t),e=o.parent)}let s=e.parent,c=s?.parent,l=c?.parent;if(r.length>0&&y(s,`VariableDeclarator`)&&s.id===e&&y(c,`VariableDeclaration`)&&c.declarations.length===1&&y(l,`ForOfStatement`)&&l.left===c&&l.await!==!0){let e=yf(l.right,n);if(e){let a=O(l.right),o=y(a,`Identifier`)?n.scopes.symbolFor(a):null,s=o?.initializer?O(o.initializer):null,c=y(s,`ArrayExpression`)?s.elements.map(e=>{let t=e&&E(e)?e:null;for(let e of r){let n=t?O(t):null;if(typeof e==`number`&&y(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&E(r)?r:null}else if(typeof e==`string`&&y(n,`ObjectExpression`)){let r=n.properties.find(t=>y(t,`Property`)&&S(t)===e);t=y(r,`Property`)&&E(r.value)?r.value:null}else t=null}return t}):void 0;return c?.every(e=>{if(!e)return!0;let i=O(e),a=e=>{if(!y(e,`Identifier`))return!1;let t=n.scopes.symbolFor(e);return!!(t&&(t.kind===`const`||t.kind===`function`||t.kind===`import`||t.kind===`parameter`)&&t.references.every(e=>e.flag===`read`))};return y(i,`Literal`)||y(i,`ArrayExpression`)||y(i,`ObjectExpression`)||t(i)?!0:a(i)||r[0]===1&&y(i,`CallExpression`)&&a(O(i.callee))})===!0?{collectionKey:e,projectedValues:c,projectionKey:[...r.length>0?r.map(e=>`binding:${String(e)}`):[`binding:value`],...i].join(`.`)}:null}}}let o=a?.initializer?O(a.initializer):null;if(a?.kind===`const`&&y(o,`CallExpression`)){let e=Z(o.callee,n),t=[];for(let e of o.arguments){if(!E(e))continue;let r=Hd(e,n);if(r){t.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=Z(e,n);i&&t.push({collectionKey:null,identityKey:i})}let r=new Set(t.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&t.length===o.arguments.length&&r.size===1)return{collectionKey:[...r][0],projectionKey:[`call:${e}:${t.map(({identityKey:e})=>e).join(`:`)}`,...i].join(`.`)}}if(!a||a.kind!==`parameter`)return null;let s=a.bindingIdentifier.parent;for(;s&&!t(s);)s=s.parent;if(!s||!t(s))return null;let c=Rf(s);if(!c)return null;let l=O(c.callee);if(!y(l,`MemberExpression`))return null;let u=Z(l.object,n);if(!u)return null;let d=s.params[0],f=y(a.bindingIdentifier.parent,`AssignmentPattern`)&&a.bindingIdentifier.parent.left===a.bindingIdentifier?a.bindingIdentifier.parent:null,p=y(d,`ObjectPattern`)?Qi(a.bindingIdentifier):null,m=f?Z(f.right,n):null;if(f&&!m)return null;let h=d===a.bindingIdentifier?`value`:p&&m?`${p}=default:${m}`:p;return h?{collectionKey:u,projectionKey:[h,...i].join(`.`)}:null},Ud=(e,t)=>{let n=Hd(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Wd=(e,t)=>Ud(e,t)??Z(e,t),Gd=(e,t)=>{if(!e)return null;let n=Wd(e,t);if(n)return n;let r=O(e);if(y(r,`CallExpression`)){let e=Wd(r.callee,t),n=r.arguments.flatMap(e=>{if(!E(e))return[];let n=Gd(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!y(r,`BinaryExpression`)&&!y(r,`LogicalExpression`))return null;let i=Gd(r.left,t),a=Gd(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},oue=(e,t)=>{let n=O(e);if(y(n,`CallExpression`)&&Gd(n,t))return n;if(!y(n,`Identifier`))return If(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?O(r.initializer):null;return!r||!i?If(n,t):y(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Nd(e.identifier))return!1;let t=v(e.identifier),n=t.parent;if(!y(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=O(n.callee);if(!y(r,`MemberExpression`))return!1;let i=S(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:y(i,`Identifier`)||y(i,`MemberExpression`)?null:If(n,t)},Kd=(e,t,n)=>{let r=Hd(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>ju(e?O(e):null,{allowIndeterminateEntries:!0}));if(e.every(e=>e===!1))return`capture:false`;if(e.every(e=>e===!0))return`capture:true`}let i=e?oue(e,t):null;if(e&&!i)return null;let a=ju(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=O(i);if(!y(o,`ObjectExpression`)){let e=n?Gd(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!y(e,`Property`)){s=null;continue}let n=S(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Gd(e.value,t);s=n?`capture-value:${n}`:null}}return s},sue=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`ObjectExpression`))return Hd(n,t);let r=null;for(let e of n.properties??[]){if(!y(e,`Property`)){r=null;continue}let n=S(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Hd(e.value,t))}return r},qd=(e,t,n,r=!1)=>{let i=Kd(e,n,r);return i!==null&&i===Kd(t,n,r)},Jd=(e,t,n=new Set)=>{let r=Td(e,t.scopes);if(r)return r;let i=O(e);for(;y(i,`MemberExpression`);){let e=Td(i,t.scopes)??wd(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=O(i.object)}if(y(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(e?.kind===`const`&&e.initializer&&!n.has(e.id)){let r=new Set(n);return r.add(e.id),Jd(e.initializer,t,r)}}return null},Yd=(e,t)=>Jd(e,t)!==null,Xd=(e,t)=>{let n=v(e),r=n.parent;if(y(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&Yd(r.left,t)){let e=Z(r.left,t);return e?{anchor:r,key:e}:null}if(!y(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=S(r),a=r.parent;if(!i||!y(a,`ObjectExpression`))return null;let o=v(a),s=o.parent;if(!y(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!Yd(s.left,t))return null;let c=Z(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},Zd=(e,t)=>{let n=v(e),r=Xd(n,t);if(r)return r;let i=n.parent;if(!y(i,`VariableDeclarator`)||i.init!==n||!y(i.id,`Identifier`)||!y(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=Xd(e.identifier,t);return n?[n]:[]}).find(n=>pf(e,[n.anchor],t))??null:null},Qd=(e,n,r)=>{let i=S(e),a=O(e.object),o=y(a,`Identifier`)?r.scopes.symbolFor(a):null,s=b(n);if(!i||!o||!s||!t(s))return null;for(let e of o.references){let t=v(e.identifier),a=t.parent;if(!y(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t||!Yd(a.left,r)||b(a)!==s||!kp(n,[a],s,r))continue;let o=Z(a.left,r);if(o)return{anchor:a,key:`${o}.${i}`}}return null},cue=(e,t)=>{let n=Zd(e,t);if(n)return n;let r=v(e),i=r.parent;return y(i,`AssignmentExpression`)&&i.right===r&&y(i.left,`MemberExpression`)?Qd(i.left,e,t):null},$d=(e,t,n=!1)=>{let r=v(e),i=r.parent;if(y(i,`VariableDeclarator`)&&i.init===r){let r=Z(i.id,t);return n?Zd(e,t)?.key??r:r}if(y(i,`AssignmentExpression`)&&i.right===r){if(n&&y(i.left,`MemberExpression`)){let n=Qd(i.left,e,t);if(n)return n.key}return Z(i.left,t)}return n?Xd(r,t)?.key??null:null},ef=(e,t,n)=>e!==null&&(e===t.handleKey||e===$d(t.node,n)),tf=(e,t)=>{let n=O(e);if(y(n,`MemberExpression`))return tf(n.object,t);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Ye(r):null;return typeof i?.source.value==`string`?i.source.value:null},lue=(e,t)=>{if(e.kind!==`subscribe`||!y(e.node,`CallExpression`))return!1;if(jd(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||lf(e.node,`addListener`,t))return!1;let n=O(e.node.callee);if(!y(n,`MemberExpression`))return!1;let r=tf(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?nue.has(r):r!==`react-native`;let i=O(n.object),a=If(i,t),o=a&&y(a,`NewExpression`)?tf(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&rue.has(o))return!1;let s=y(i,`Identifier`)?t.scopes.symbolFor(i):null,c=y(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!y(i,`Identifier`)||c||s!==null&&(Ws(s)!==null||Hs(s)!==null)?$s(i,t.scopes).length===0:!1},uue=(e,t)=>{let n=O(e),r=Md(n,t.scopes);return y(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},nf=(e,t,n=new Set)=>{let r=O(e);if(y(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;if(r.name===`navigation`)return!0;n.add(e.id);let i=e.initializer?O(e.initializer):null,a=y(i,`CallExpression`)?Md(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&nf(i,t,n))}if(!y(r,`CallExpression`))return!1;let i=O(r.callee);return!!(y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`getParent`&&nf(i.object,t,n))},rf=(e,t)=>{if(lue(e,t))return!0;if(!y(e.node,`CallExpression`))return!1;let n=O(e.node.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&uue(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&nf(n.object,t)},af=(e,t,n)=>{let r=O(e);if(!y(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&Z(r,n)===t.handleKey&&!i.references.some(e=>Nd(e.identifier)))},due=(e,t,n)=>af(e,t,n)&&rf(t,n),of=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!fp.has(t)||n.receiverKey===null||e!==n.receiverKey||!y(n.node,`CallExpression`))return!1;let i=O(n.node.callee);if(!y(i,`MemberExpression`))return!1;let a=If(i.object,r);return a!==null&&Vd(a)},sf=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i);if(!e||r.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Nd(e.identifier)))return null;let t=Hs(e);if(!t)return`symbol:${e.id}`;let a=O(t);if(!y(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(r);return o.add(e.id),sf(a,n,o)??`symbol:${e.id}`}if(t(i)){let e=D(i);return e===null?null:`function:${e}`}return null},fue=(e,t,n)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!y(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Nd(e.identifier));if(a.length!==1)return null;let o=v(a[0].identifier),s=o.parent,c=b(t);return!y(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kp(t,[s],c,n)?null:`symbol:${i.id}`},cf=(e,t,n=new Set)=>{let r=O(e);if($s(r,t.scopes).includes(`MediaQueryList`))return!0;if(y(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Hs(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),cf(i,t,a)}if(!y(r,`CallExpression`)||!k(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=or(r,t.scopes);return!!(i&&ue(i,t.scopes,e=>{let r=O(e);return y(r,`Literal`)&&r.value===null||y(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||cf(r,t,new Set(n))},t.cfg,`every`))},lf=(e,t,n)=>{let r=O(e.callee);return e.arguments?.length===1&&y(r,`MemberExpression`)&&!r.computed&&y(r.property,`Identifier`)&&r.property.name===t&&cf(r.object,n)},uf=(e,t)=>{let n=O(e.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:lf(e,`addListener`,t)?{receiverKey:sf(n.object,t)??fue(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:sf(e.arguments?.[0],t)}:{receiverKey:Wd(n.object,t),registrationVerbName:n.property.name,eventKey:Wd(e.arguments?.[0],t),handlerKey:Wd(e.arguments?.[1],t)}},df=e=>{if(e.kind!==`subscribe`||!y(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&E(t)?t:null},ff=(e,t)=>{let n=e;for(;y(n,`CallExpression`);){let e=y(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!y(e,`MemberExpression`)||e.computed||!y(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Wd(e.object,t);n=O(e.object)}return null},pue=(e,t)=>{let n=e,r=v(n);for(;y(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=v(r.parent),t=e.parent;if(!y(t,`CallExpression`)||t.callee!==e)break;n=t,r=v(n)}return n===e||kd(n)!==`subscribe`||ff(n,t)===null?null:$d(n,t,!0)},mue=(e,n)=>{let r=fd(e,n.scopes),i=[...r];for(;i.length>0;){let e=i.pop();!e||!t(e)||A(e.body,a=>{if(a!==e.body&&t(a))return!1;if(!y(a,`CallExpression`))return;let o=null;if(y(a.callee,`Identifier`)&&Ie.has(a.callee.name)){let e=a.arguments?.[0];o=e&&E(e)?e:null}else{let e=a.arguments?.find(e=>E(e)&&ud(e)===a);e&&E(e)&&(o=e);let t=kd(a);t!==null&&(o=df({kind:`subscribe`,node:a,resourceName:t,handleKey:null,...uf(a,n)}))}let s=o?M(o,n.scopes):null;!s||r.has(s)||(r.add(s),i.push(s))})}return r},hue=(e,n)=>{let r=[];if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`))return r;let i=null;if(y(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];y(n,`ReturnStatement`)&&n.argument&&(i=n.argument)}let a=mue(e,n);return A(e,o=>{if(o!==e&&t(o)&&(o===i||!a.has(o)&&!cd(o)))return!1;if(Vd(o)){r.push({kind:`socket`,node:o,resourceName:y(o.callee,`Identifier`)?o.callee.name:`WebSocket`,handleKey:$d(o,n,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!y(o,`CallExpression`))return;if(y(o.callee,`Identifier`)&&Ie.has(o.callee.name)){if(o.callee.name===`setTimeout`&&(Mp(o)||Np(o,n)))return;r.push({kind:`timer`,node:o,resourceName:o.callee.name,handleKey:$d(o,n,!0),receiverKey:null,registrationVerbName:o.callee.name,eventKey:null,handlerKey:null});return}let s=kd(o);if(s!==null){let e=uf(o,n);r.push({kind:`subscribe`,node:o,resourceName:s,handleKey:(s===`on`?pue(o,n):null)??$d(o,n,!0),...e})}}),r.filter(e=>B(e.node,n))},pf=(e,t,n)=>{let r=e,i=b(r);for(;i&&cd(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!y(e,`CallExpression`))break;r=e,i=b(r)}return Ga(r,t,n,e)},gue=(e,t,n)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.body,`BlockStatement`))return t;let r=[];return Dd(e.body,e=>{y(y(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=D(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=D(r);return i!==null&&i>t&&Cp(r,e,n)});return!pf(e.node,i,n)})},mf=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=y(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Nd(e.identifier));return r&&y(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&y(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},hf=(e,n)=>{if(!e)return!1;let r=O(e),i=new Set;if(A(r,e=>{if(!y(e,`Identifier`))return;let t=n.scopes.symbolFor(e);t&&i.add(t.id)}),i.size===0)return!1;let a=(e,t)=>{let r=!1;return A(e,e=>{if(!y(e,`Identifier`)||t&&!Nd(e))return;let a=n.scopes.symbolFor(e);if(a&&i.has(a.id))return r=!0,!1}),r},o=r.parent;for(;o&&!t(o);){if(y(o,`ForOfStatement`)){let e=O(o.left);if(!y(e,`VariableDeclaration`)&&(a(e,!1)||a(o.body,!0)))return!0}o=o.parent}return!1},gf=(e,t)=>{if(!y(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!y(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!y(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!y(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},_f=(e,t,n)=>{if(!y(e,`Identifier`)||!gf(e,t))return!1;let r=t.scopes.symbolFor(e);return r?n.has(r.id)?!0:(n.add(r.id),r.references.every(e=>{let r=v(e.identifier),i=r.parent;if(y(i,`ForOfStatement`)&&i.right===r||y(i,`MemberExpression`)&&i.object===r&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`push`&&y(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(y(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return y(i.id,`Identifier`)&&y(e,`VariableDeclaration`)&&e.kind===`const`?_f(i.id,t,n):!1}return!1})):!1},vf=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`)||!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?O(i.initializer):null,o=e=>{if(!e)return!1;let t=O(e);if(y(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(y(t,`ArrayExpression`))return!0;if(!y(t,`CallExpression`))return!1;let n=O(t.callee);return!!(y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?_f(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:y(a,`Identifier`)?vf(a,t,n):null},yf=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Pd.get(t);if(i||(i=new Map,Pd.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=vf(e,t);return i.set(r.id,a),a},bf=(e,t,n=new Set)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`)||!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return null;n.add(i.id);let a=i.initializer?O(i.initializer):null,o=e=>{if(!e)return!1;let t=O(e);return y(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):y(t,`ArrayExpression`)&&t.elements.every(e=>e===null||y(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?_f(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:y(a,`Identifier`)?bf(a,t,n):null},xf=(e,n)=>{if(!e)return null;let r=O(e);if(!y(r,`Identifier`))return null;let i=mf(r,n);if(i)return bf(i.right,n);let a=n.scopes.symbolFor(r);if(!a||a.kind!==`parameter`)return null;let o=a.bindingIdentifier.parent;for(;o&&!t(o);)o=o.parent;if(!o||!t(o))return null;let s=o.parent;if(!y(s,`CallExpression`))return null;let c=O(s.callee);if(y(c,`MemberExpression`)&&!c.computed&&y(c.property,`Identifier`)){if(y(c.object,`Identifier`)&&c.object.name===`Array`&&c.property.name===`from`&&s.arguments?.[1]===o)return Z(s.arguments[0],n);if(s.arguments?.[0]===o)return Z(c.object,n)}return null},_ue=(e,t)=>{let n=mf(e,t);return n?Z(n.right,t):xf(e,t)},Sf=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},Cf=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=O(e);if(Sf(i,Z(a,t),n),!y(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!gf(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?O(o.initializer):null,l=null,u=n;if(y(c,`Identifier`))l=c;else if(y(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&y(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,D(c)??1/0))}else if(y(c,`CallExpression`)){let e=O(c.callee);if(y(e,`MemberExpression`)&&!e.computed&&y(e.property,`Identifier`)){let r=e.property.name,i=y(e.object,`Identifier`)&&e.object.name===`Array`&&t.scopes.isGlobalReference(e.object)&&r===`from`&&c.arguments.length===1,a=(r===`slice`||r===`concat`)&&c.arguments.length===0||r===`toReversed`||r===`toSorted`;if(i){let e=c.arguments[0];l=E(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,D(c)??1/0))}}if(!l)return i;for(let[e,n]of Cf(l,t,u,s))Sf(i,e,n);return i},wf=(e,n)=>{let r=mf(e,n);if(r)return Cf(r.right,n);let i=e?O(e):null;if(!y(i,`Identifier`))return new Map;let a=n.scopes.symbolFor(i);if(!a||a.kind!==`parameter`)return new Map;let o=a.bindingIdentifier.parent;for(;o&&!t(o);)o=o.parent;let s=o?.parent,c=y(s,`CallExpression`)?O(s.callee):null;return y(c,`MemberExpression`)?Cf(c.object,n):new Map},Tf=(e,t,n)=>{let r=Pf(t.node,n);return r!==null&&wf(e,n).has(r)},Ef=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=mf(n,t)?.right;return r?yf(r,t):null},Df=(e,t)=>{if(!e)return!1;let n=O(e);return y(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Of=(e,t)=>{if(!e)return null;let n=O(e);if(!y(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);return!r||r.kind!==`const`&&r.kind!==`function`&&r.kind!==`parameter`||!r.references.every(e=>e.flag===`read`&&!Nd(e.identifier))?null:r.id},kf=(e,t)=>{if(!y(e,`BreakStatement`)&&!y(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(y(n,`LabeledStatement`)&&n.label.name===e.label.name)return R(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(y(n,`ForStatement`)||y(n,`ForInStatement`)||y(n,`ForOfStatement`)||y(n,`WhileStatement`)||y(n,`DoWhileStatement`))return n===t;if(y(e,`BreakStatement`)&&y(n,`SwitchStatement`))return!1;n=n.parent}return!1},Af=(e,n,r)=>{if(!(y(n.body,`BlockStatement`)?e.parent===n.body:e===n.body))return!1;let i=b(e),a=!1,o=!1;return A(n.body,s=>{if(a||o||s!==n.body&&t(s))return!1;if(y(s,`ReturnStatement`)||y(s,`ThrowStatement`)&&(!i||!Xu(s,e,i,r))||y(s,`BreakStatement`)&&kf(s,n))return a=!0,!1;if(y(s,`ContinueStatement`)&&kf(s,n)&&(D(s)??-1)<(D(e)??0))return o=!0,!1}),!a&&!o},jf=(e,t,n)=>{let r=v(e).parent;return!!(y(r,`ExpressionStatement`)&&Af(r,t,n))},Mf=(e,n,r)=>{let i=v(e),a=y(i.parent,`ExpressionStatement`)?i.parent:null;if(!a)return null;let o=new Set,s=a.parent;for(;s&&!t(s);){if(y(s,`ForOfStatement`)){if(!Af(a,s,r))return null;let e=Z(s.right,r);e&&o.add(e),a=s}s=s.parent}return[...n].every(e=>o.has(e))?a:null},vue=(e,t,n)=>Mf(e,t,n)!==null,yue=e=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!y(t,`CallExpression`))return null;let n=O(t.callee);return!y(n,`MemberExpression`)||n.computed||!y(n.property,`Identifier`)?null:y(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`&&t.arguments?.[1]===e||n.property.name===`map`&&t.arguments?.[0]===e?t:null},bue=(e,n)=>{let r=b(e);if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`))return null;let i=yue(r);if(!i)return null;if(y(r.body,`BlockStatement`)){let i=v(e),a=i.parent,o=a?.parent;if(!y(a,`VariableDeclarator`)||a.init!==i||!y(a.id,`Identifier`)||!y(o,`VariableDeclaration`)||o.kind!==`const`||o.parent!==r.body)return null;let s=[];A(r.body,e=>{if(e!==r.body&&t(e))return!1;y(e,`ReturnStatement`)&&s.push(e)});let c=s[0],l=r.body.body??[],u=y(c,`ReturnStatement`)&&c.argument?O(c.argument):null,d=n.scopes.symbolFor(a.id);if(s.length!==1||l[l.length-1]!==c||!y(u,`Identifier`)||!d||n.scopes.symbolFor(u)?.id!==d.id||!pf(e,[c],n))return null}else if(v(e)!==r.body)return null;let a=v(i),o=a.parent;return y(o,`VariableDeclarator`)&&o.init===a?Z(o.id,n):null},Nf=(e,t)=>{let n=v(e),r=n.parent,i=y(r,`CallExpression`)?O(r.callee):null;if(!y(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!y(i,`MemberExpression`)||i.computed||!y(i.object,`Identifier`)||!y(i.property,`Identifier`)||i.property.name!==`push`||!gf(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?O(a.initializer):null;return a&&y(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Pf=(e,n)=>{let r=Nf(e,n);if(r)return`symbol:${r.id}`;let i=bue(e,n);if(i!==null)return i;let a=e,o=a.parent;for(;o;){if(t(o))return null;if(y(o,`VariableDeclarator`)&&o.init===a)return Z(o.id,n);a=o,o=a.parent}return null},Ff=(e,t)=>{if(!y(e.node,`CallExpression`))return null;let n=O(e.node.callee);if(!y(n,`MemberExpression`)||n.computed)return null;let r=O(n.object);if(!gf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=v(e.identifier),n=t.parent;if(!y(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=O(n.callee);return y(r,`MemberExpression`)&&!r.computed&&y(r.object,`Identifier`)&&y(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(b(o)!==b(e.node)||!pf(e.node,[o],t))return null;let s=O(o.callee);if(!y(s,`MemberExpression`)||!y(s.object,`Identifier`)||!gf(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?O(c.initializer):null;return!c||!y(l,`ArrayExpression`)||(l.elements?.length??0)!==0||b(c.declarationNode)!==b(e.node)?null:c.references.every(e=>{let t=v(e.identifier),n=t.parent;if(y(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!y(r,`MemberExpression`)||r.object!==t||r.computed||!y(r.property,`Identifier`)||!y(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?Z(s.object,t):null},If=(e,n,r=new Set)=>{if(!e)return null;let i=O(e);if(!y(i,`Identifier`))return i;let a=n.scopes.symbolFor(i),o=(a?.kind===`let`||a?.kind===`var`)&&y(a.declarationNode,`VariableDeclarator`)&&a.declarationNode.id===a.bindingIdentifier&&a.references.every(e=>e.flag===`read`&&!Nd(e.identifier))&&a.scope.symbols.filter(e=>e.name===a.name).length===1,s=a?.kind===`function`&&t(a.declarationNode)?n.scopes.ownScopeFor(a.declarationNode)?.symbols.find(e=>e.name===a.name&&e.declarationNode===a.declarationNode):null,c=a?.kind===`function`&&a.references.every(e=>e.flag===`read`&&!Nd(e.identifier))&&(!s||s.references.every(e=>e.flag===`read`&&!Nd(e.identifier)))&&a.scope.symbols.filter(e=>e.name===a.name).length===1;return!a||a.kind!==`const`&&!o&&!c||!a.initializer||r.has(a.id)?i:(r.add(a.id),If(a.initializer,n,r))},xue=(e,t)=>{let n=If(e,t);return y(n,`ObjectExpression`)?n:null},Lf=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!y(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=xue(n,t);if(!r)return null;for(let e of r.properties??[]){if(!y(e,`Property`)||S(e)!==`signal`)continue;let n=Z(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Rf=e=>{let n=t(e)?e:b(e);if(!n||!t(n)||n.async||n.generator)return null;let r=n.parent;if(!y(r,`CallExpression`)||r.arguments?.[0]!==n)return null;let i=O(r.callee);return y(i,`MemberExpression`)&&!i.computed&&y(i.property,`Identifier`)&&i.property.name===`forEach`?r:null},zf=e=>{let t=v(e),n=t.parent;return y(n,`CallExpression`)&&n.callee===t?n:null},Sue=(e,t,n)=>{let r=bc(e);if(!r||If(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=zf(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return b(o)===t&&B(o,n)?o:null},Bf=(e,t)=>{if(!y(e,`NewExpression`))return!1;let n=O(e.callee);return y(n,`Identifier`)&&s.has(n.name)&&t.scopes.isGlobalReference(n)},Cue=(e,t)=>{if(!e)return!0;let n=O(e);return y(n,`Literal`)&&n.value===null||y(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},wue=(e,n,r,i)=>{if(!t(e)||e.async||e.generator||r.receiverKey===null||!y(r.node,`CallExpression`))return null;let a=O(r.node.callee),o=y(a,`MemberExpression`)?O(a.object):null;if(!o||!y(o,`Identifier`))return null;let s=i.scopes.symbolFor(o),c=s?.declarationNode;if(!s||s.kind!==`let`&&s.kind!==`var`||!y(c,`VariableDeclarator`)||c.id!==s.bindingIdentifier||b(c)!==n||!Cue(c.init,i))return null;let l=[];for(let e of s.references){let t=v(e.identifier),n=t.parent;if(y(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){l.push(n);continue}let r=n,i=r?.parent;if(!y(r,`MemberExpression`)||r.object!==t||!y(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(S(r)??``))return null}if(l.length!==1)return null;let u=l[0];if(!u||!Bf(O(u.right),i)||b(u)!==e||!Xu(u,r.node,e,i))return null;let d=[],f=D(u);if(f===null||(A(e.body,n=>{if(n!==e.body&&t(n))return!1;if(!y(n,`CallExpression`))return;let a=D(n);a===null||a>=f||!Cp(n,r,i)||d.push(Yf(n,e,r.receiverKey??``,i)??n)}),!Ka(e,d,i)))return null;let p=bc(e),m=p?i.scopes.symbolFor(p):null;if(!m)return null;let h=[];for(let t of m.references){let r=zf(t.identifier);if(r&&b(r)===n){h.push(r);continue}let a=v(t.identifier),o=a.parent;if(!o||!Bf(o,i)||b(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&B(g,i)?g:null},Vf=(e,t,n,r)=>{let i=b(e);return!i||i===t?e:Sue(i,t,n)??(r?wue(i,t,r,n):null)??e},Tue=(e,n,r)=>{if(!t(e))return[];let i=bc(e),a=Z(i,r);if(!a)return[];let o=[];return A(n,e=>{if(e!==n&&t(e))return!1;let s=y(e,`CallExpression`)?e.arguments[1]:null;y(e,`CallExpression`)&&ar(e)===`addEventListener`&&(Z(s,r)===a||y(s,`Identifier`)&&s.name===i?.name)&&o.push(e)}),o},Eue=(e,n,r)=>{let i=O(e);if(!y(i,`Identifier`))return null;let a=r.scopes.symbolFor(i),o=a?.initializer?O(a.initializer):null;if(!a||a.kind!==`let`&&a.kind!==`var`||!y(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier||!y(o,`Literal`)||o.value!==null||a.scope.symbols.filter(e=>e.name===a.name).length!==1)return null;let s=a.references.filter(e=>Nd(e.identifier));if(s.length!==1)return null;let c=s[0],l=v(c.identifier),u=l.parent;if(!y(u,`AssignmentExpression`)||u.operator!==`=`||u.left!==l||b(u)!==b(n.node)||!pf(n.node,[u],r))return null;let d=O(u.right);return t(d)?d:null},Hf=(e,n,r,i)=>{if(!t(e)||!y(n,`CallExpression`))return null;let a=new Map(i);for(let t=0;t<e.params.length;t+=1){let i=e.params[t],o=n.arguments?.[t];if(!y(i,`Identifier`)||!o||y(o,`SpreadElement`))continue;let s=r.scopes.symbolFor(i),c=s?.references.some(e=>{let t=v(e.identifier),n=t.parent;return y(n,`AssignmentExpression`)&&n.left===t||y(n,`UpdateExpression`)&&n.argument===t||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!s||c)return null;a.set(s.id,o)}return a},Due=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=y(e,`ChainExpression`)?e.expression:e,i=y(r,`CallExpression`)?O(r.callee):null,a=y(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Pf(t.node,n);if(!y(r,`CallExpression`)||!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||i.property.name!==`forEach`||!y(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==Z(i.object,n))return!1;let c=Cf(i.object,n);return c.has(s)&&!xp(t.node,r,c,n)},Uf=(e,n,r,i=new Set,a=new Map,o=!1)=>{if(!t(e)||i.has(e))return!1;i.add(e);let s=!1,c=[];A(e.body,l=>{if(s||l!==e.body&&t(l)&&!cd(l))return!1;let u=y(l,`ChainExpression`)?l.expression:l;if(Due(l,n,r)){if(o){c.push(l);return}return s=!0,!1}if(Cp(l,n,r,a)){let i=Rf(l),d=y(u,`CallExpression`)?O(u.callee):null,f=y(d,`MemberExpression`)?d.object:d,p=mf(f,r),m=_ue(f,r),h=wf(f,r),g=Ff(n,r)??Pf(n.node,r);if(m!==null&&b(l)!==e){let e=b(l);i&&e&&t(e)&&g!==null&&h.has(g)&&Ka(e,[l],r)&&!xp(n.node,l,h,r)&&c.push(i);return}let _=mf(y(u,`CallExpression`)?u.arguments?.[0]:null,r)??p;if(!_){if(o){let t=Xf(l,e,n,r,a);c.push(t??l);return}return s=!0,!1}let ee=Mf(l,n.kind===`subscribe`&&n.registrationVerbName===`addEventListener`&&y(n.node,`CallExpression`)?new Set([O(n.node.callee),n.node.arguments?.[0],n.node.arguments?.[1],n.node.arguments?.[2]].flatMap(e=>{let t=y(e,`MemberExpression`)?Hd(e.object,r):E(e)?Hd(e,r):null;return t?[t.collectionKey]:[]})):new Set,r);!e.async&&!e.generator&&(jf(l,_,r)||ee!==null)&&(g===null||h.size===0||h.has(g)&&!xp(n.node,l,h,r))&&c.push(ee??_);return}if(!y(u,`CallExpression`))return;let d=If(u.callee,r),f=y(d,`Identifier`)?Eue(d,n,r):d?Op(d,r):null,p=f&&t(f)?Hf(f,u,r,a):null;f&&t(f)&&p&&!f.async&&!f.generator&&Uf(f,n,r,new Set(i),p,o)&&c.push(u)});let l=v(e.body);return o&&c.some(e=>v(e)===l)?!0:s||Ka(e,c,r)},Wf=(e,n,r)=>e.length>0&&e.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);return!!(i&&t(i)&&Uf(i,n,r,new Set,new Map,!0))}),Gf=(e,t,n)=>{let r=O(e);if(!y(r,`CallExpression`))return!1;let i=O(r.callee);if(!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=O(i.object);if(!y(a,`MemberExpression`)||a.computed||!y(a.property,`Identifier`))return!1;let o=Z(a.object,n);if(o===null||o!==Z(r.arguments?.[0],n))return!1;let s=a.property.name;return of(o,s,t,n)?!0:t.kind===`socket`?ef(o,t,n)&&(fp.has(s)||dp.has(s)):t.kind===`subscribe`&&ef(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||vt.has(s))},Kf=(e,n,r)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(Gf(e,n,r))return!0;let i=If(e,r);return i&&Gf(i,n,r)?!0:!!(i&&t(i)&&Uf(i,n,r))};if(!y(e.body,`BlockStatement`))return i(O(e.body));let a=[];return Dd(e.body,e=>{y(e,`ReturnStatement`)&&e.argument&&i(O(e.argument))&&a.push(e)}),Ka(e,a,r)},qf=(e,t,n)=>{let r=Z(e,n);if(r!==null&&(r===t||t.startsWith(`${r}.`)))return!0;let i=O(e);if(!y(i,`BinaryExpression`)||i.operator!==`!=`&&i.operator!==`!==`)return!1;let a=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return Z(i.left,n)===t&&a(i.right)||Z(i.right,n)===t&&a(i.left)},Jf=(e,t,n,r)=>{let i=O(e);if(y(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Dn(O(t))===!1)return!0}if(y(i,`UnaryExpression`)&&i.operator===`!`){let e=O(i.argument);if(y(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Dn(O(i))===!0)return!0}let a=Z(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:qf(i.argument,t,n)}if(y(i,`LogicalExpression`)){let e=Jf(i.left,t,n,r),a=Jf(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(y(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=O(e);return y(t,`Literal`)&&t.value===null||y(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?Z(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Yf=(e,n,r,i,a=new Map)=>{let o=e.parent;for(;o&&o!==n;){if(y(o,`IfStatement`))return o.alternate!==null||!qf(o.test,r,i)||!pf(o.consequent,[e],i)?null:o;o=o.parent}if(t(n)&&y(n.body,`BlockStatement`)){let t=e;for(;t.parent&&t.parent!==n.body;)t=t.parent;let o=n.body.body.findIndex(e=>e===t);for(let e=o-1;e>=0;--e){let t=n.body.body[e];if(y(t,`IfStatement`)&&t.alternate===null&&Cd(t.consequent)&&Jf(t.test,r,i,a))return t}}return null},Xf=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Yf(e,t,n.handleKey,r,i),Oue=(e,t,n)=>{let r=new Set,i=t;for(;i&&i!==n;)r.add(i),i=i.parent??null;let a=e,o=a.parent??null;for(;o&&o!==n;){let e=y(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||y(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||y(o,`LogicalExpression`)&&o.right===a||y(o,`AssignmentPattern`)&&o.right===a||(y(o,`ForStatement`)||y(o,`ForInStatement`)||y(o,`ForOfStatement`)||y(o,`WhileStatement`)||y(o,`DoWhileStatement`))&&o.body===a?a:y(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},kue=(e,n,r,i=!1)=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.body,`BlockStatement`))return!1;let a=r.cfg.cfgFor(e),o=a?.blockOf(n.node),s=D(n.node);if(!a||!o||s===null)return!1;let c=[];return Dd(e.body,l=>{if(!y(l,`CallExpression`))return;let u=D(l),d=Xf(l,e,n,r),f=a.blockOf(l);if(u===null||u>=s||f!==o&&!d&&!i||!d&&Oue(l,n.node,e))return;if(Cp(l,n,r)){c.push(d??l);return}let p=Op(l.callee,r),m=p&&t(p)?Hf(p,l,r,new Map):null;p&&t(p)&&m&&Uf(p,n,r,new Set,m)&&c.push(d??l)}),i?kp(n.node,c,e,r):Ka(e,c,r)},Aue=(e,t,n)=>{let r=b(e);if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`)&&!y(r,`FunctionDeclaration`))return!1;let i=!1;return A(r.body,a=>{if(i)return!1;if(!y(a,`CallExpression`)||b(a)!==r||!Bd(a,n))return;let o=or(a);if(o&&o!==e&&Kf(o,t,n))return i=!0,!1}),i},jue=(e,t,n)=>t.handleKey!==null&&Aue(e,t,n)&&kue(e,t,n,t.registrationVerbName===`setTimeout`),Zf=(e,t,n,r)=>{let i=O(e);if(y(i,`UnaryExpression`)&&i.operator===`!`)return Zf(i.argument,!t,n,r);if(y(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Zf(i.left,t,n,r),...Zf(i.right,t,n,r)]:[];if(y(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Dn(i.left),a=Dn(i.right),o=e??a,s=e===null?i.left:i.right,c=Z(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:y(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=Z(i,r);return a===null?[]:[{bindingIdentifier:y(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Mue=(e,n,r)=>{if(!t(e)||e.async)return[];let i=[];A(e.body,a=>{if(a!==e.body&&t(a))return!1;y(a,`IfStatement`)&&!a.alternate&&!Xu(a.consequent,n,e,r)&&kp(n,[a],e,r)&&i.push(...Zf(a.test,!0,a,r))});let a=n,o=a.parent;for(;o&&o!==e;)y(o,`IfStatement`)&&o.consequent===a&&i.push(...Zf(o.test,!1,o,r)),a=o,o=o.parent;return i},Nue=(e,n,r)=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);if(!i||!t(i)||i.async||i.generator)return!1;let a=!1;return A(i.body,e=>{if(a||e!==i.body&&t(e))return!1;if(y(e,`AssignmentExpression`)&&e.operator===`=`&&Z(e.left,r)===n.key&&Dn(e.right)===n.value&&r.cfg.isUnconditionalFromEntry(e))return a=!0,!1}),a},Pue=(e,n,r,i)=>{let a=D(n);if(!t(e)||a===null)return!0;let o=!1;return A(e.body,n=>{if(o||n!==e.body&&t(n))return!1;let s=D(n);if(s===null||s>=a)return;let c=y(n,`AssignmentExpression`)?n.left:y(n,`UpdateExpression`)?n.argument:null;if(c&&Z(c,i)===r.key)return o=!0,!1}),o},Fue=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(y(a,`TryStatement`)&&a.block===i&&a.handler&&Xu(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Iue=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!y(i.declarationNode,`VariableDeclarator`)||b(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Nd(e.identifier))return!0;let r=v(e.identifier),i=r.parent;return y(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Dn(i.right)===t.value&&n.includes(b(i)??i)})},Lue=(e,n,r,i)=>{if(!t(e))return!0;let a=D(n.guardNode),o=D(r);if(a===null||o===null)return!0;let s=!1;return A(e.body,n=>{if(s||n!==e.body&&t(n))return!1;let c=D(n);if(!(c===null||c<=a||c>=o)&&(y(n,`AwaitExpression`)||y(n,`YieldExpression`)||y(n,`CallExpression`)&&!Qa(n,i.scopes))&&(Xu(n,r,e,i)||Fue(n,r,e,i)))return s=!0,!1}),s},Qf=(e,t)=>{let n=wd(O(e),t.scopes),r=n?.initializer?O(n.initializer):null;if(!y(r,`CallExpression`))return null;let i=r.arguments?.[0]?O(r.arguments[0]):null;return!y(i,`Literal`)||typeof i.value!=`number`?null:Z(e,t)},$f=(e,t)=>{let n=O(e);if(y(n,`LogicalExpression`)&&n.operator===`||`)return $f(n.left,t)??$f(n.right,t);if(!y(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=Qf(n.left,t),i=Qf(n.right,t),a=O(r?n.right:n.left),o=r??i;return o&&y(a,`Identifier`)?o:null},ep=(e,n,r)=>{if(!t(e))return null;let i=null;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(!y(a,`IfStatement`)||a.alternate)return;let o=$f(a.test,r);!o||Xu(a.consequent,n,e,r)||!kp(n,[a],e,r)||(i=o)}),i},Rue=(e,t,n)=>{if(y(e,`UpdateExpression`)&&Z(e.argument,n)===t)return!0;if(!y(e,`AssignmentExpression`)||Z(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=O(e.right);return y(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},zue=(e,n,r)=>{if(!t(e))return!1;let i=!1;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(Rue(a,n,r))return i=!0,!1}),i},tp=(e,n,r)=>e.length>0&&e.every(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return!1;let i=If(e.argument,r);return!!(i&&t(i)&&Uf(i,n,r))}),Bue=(e,t)=>{let n=Z(e,t),r=O(e);if(!y(r,`Identifier`))return n;let i=If(r,t);return i&&i!==r?Z(i,t)??n:n},Vue=(e,t,n)=>{let r=O(e);if(!y(r,`BinaryExpression`)||r.operator!==`===`&&r.operator!==`==`)return null;let i=[{expression:r.left,value:r.right},{expression:r.right,value:r.left}];for(let{expression:e,value:r}of i){let i=O(e),a=O(r);if(!(!y(i,`MemberExpression`)||i.computed||!y(i.property,`Identifier`)||Bue(i.object,n)!==t||!y(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Hue=(e,n,r)=>{if(!t(e)||n.handleKey===null)return!1;let i=n.handleKey.lastIndexOf(`.`);if(i===-1)return!1;let a=n.handleKey.slice(0,i),o=[];A(e.body,i=>{if(i!==e.body&&t(i))return!1;if(!y(i,`IfStatement`)||i.alternate!==null||!Cd(i.consequent)||!kp(n.node,[i],e,r))return;let s=Vue(i.test,a,r);s&&o.push(s)});let s=new Set(o.map(({propertyName:e})=>e));if(s.size!==1)return!1;let c=[...s][0],l=new Set(o.map(({value:e})=>e)),u=X(n.node,r.scopes);if(!u){let e=b(n.node);for(;e&&!mc(e);)e=b(e);u=e}if(!c||!u||!t(u))return!1;let d=new Set,f=!1;return A(u.body,e=>{if(f)return!1;if(!y(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=Z(e.left,r);if(t===`${a}.${c}`)return f=!0,!1;if(t!==a)return;let n=O(e.right);if(y(n,`Literal`)&&n.value===null)return;let i=If(n,r);if(!i||!y(i,`ObjectExpression`))return f=!0,!1;let o=i.properties.find(e=>y(e,`Property`)&&S(e)===c),s=y(o,`Property`)?O(o.value):null;if(!s||!y(s,`Literal`)||typeof s.value!=`string`)return f=!0,!1;d.add(s.value)}),!f&&d.size>0&&[...d].every(e=>l.has(e))},np=(e,n,r)=>{let i=n.handleKey;if(!t(e)||i===null)return!1;let a=D(n.node);if(a===null)return!1;let o=!1,s=[];return A(e.body,c=>{if(o||c!==e.body&&t(c))return!1;if(y(c,`IfStatement`)&&!c.alternate&&qf(c.test,i,r)&&!Xu(c.consequent,n.node,e,r)&&kp(n.node,[c],e,r))return o=!0,!1;let l=D(c);if(l===null||l>=a||!op(c,n,r))return;let u=Xf(c,e,n,r);s.push(u??c)}),o||Hue(e,n,r)||kp(n.node,s,e,r)},rp=(e,t)=>e.kind===`subscribe`?e.handlerKey??Z(df(e),t):e.kind!==`timer`||!y(e.node,`CallExpression`)?null:Z(e.node.arguments?.[0],t),ip=(e,t)=>{let n=bc(e);return new Set([Z(e,t),Z(n,t)].filter(e=>e!==null))},ap=(e,t,n,r)=>Wf(n,t,r)&&pf(Vf(t.node,e,r),n,r),op=(e,n,r)=>{if(Cp(e,n,r))return!0;let i=y(e,`ChainExpression`)?e.expression:e;if(!y(i,`CallExpression`))return!1;let a=If(i.callee,r);return!!(a&&t(a)&&!a.async&&!a.generator&&Uf(a,n,r,new Set,new Map,!0))},Uue=(e,t,n)=>{let r=O(e);if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&y(e.declarationNode,`VariableDeclarator`)&&b(e.declarationNode)===t?e:null}let i=wd(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;y(a,`MemberExpression`);)a=O(a.object);if(!y(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?O(o.initializer):null;return o&&o.kind===`const`&&y(o.declarationNode,`VariableDeclarator`)&&y(s,`ObjectExpression`)&&b(o.declarationNode)===t?o:null},Wue=e=>{let t=e;for(;y(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return v(t)},Gue=(e,n,r,i)=>n.references.every(n=>{let a=Wue(n.identifier);if(Z(a,i)!==e.handleKey)return y(r.left,`Identifier`);if(!Nd(n.identifier))return!0;let o=a.parent;if(o===r)return!0;if(!y(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=O(o.right),c=y(s,`Literal`)&&s.value===null||y(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s),l=b(o);if(!c||!l||!t(l))return!1;let u=[];return A(l.body,n=>{if(n!==l.body&&t(n))return!1;op(n,e,i)&&u.push(n)}),kp(o,u,l,i)}),Kue=(e,t,n)=>{let r=Nf(t.node,n);return!!(r&&b(r.declarationNode)===e)},que=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=ip(t,r);if(!i.has(rp(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&b(e.node)===t&&i.has(rp(e,r)??``));return a.length===1&&a[0]===e},Jue=(e,n,r,i,a)=>{let o=b(n.node),s=v(n.node),c=s.parent,l=n.handleKey!==null&&y(c,`AssignmentExpression`)&&c.operator===`=`&&c.right===s?Uue(c.left,e,a):null,u=Kue(e,n,a);if(n.kind!==`timer`||!o||!t(o)||o===e||o.async||o.generator||!l&&!u||!Wf(i,n,a)||l&&y(c,`AssignmentExpression`)&&!Gue(n,l,c,a))return!1;let d=que(n,o,r,a);if(l&&!d&&!np(o,n,a))return!1;let f=n.node.parent;for(;f&&f!==o;){if(l&&(y(f,`ForStatement`)||y(f,`ForInStatement`)||y(f,`ForOfStatement`)||y(f,`WhileStatement`)||y(f,`DoWhileStatement`)))return!1;f=f.parent}let p=bc(o),m=p?a.scopes.symbolFor(p):null;if(!m||m.references.length===0)return!1;let h=m.references.filter(e=>d&&R(e.identifier,n.node)&&rp(n,a)===Z(e.identifier,a));if(d&&(h.length!==1||m.references.length!==2))return!1;let g=pd(e,a.scopes);return m.references.every(s=>{let c=Z(s.identifier,a);if(h.some(e=>e===s))return!0;let l=r.find(e=>e!==n&&c!==null&&rp(e,a)===c),u=l?df(l):null;if(l&&!(u&&t(u)&&u.async)&&ap(e,l,i,a))return!0;let d=zf(s.identifier);if(!d)return!1;let f=b(d);if(!f||!t(f)||f===o||f.async||f.generator)return!1;if(f===e)return pf(Vf(d,e,a),i,a);let p=ip(f,a),m=r.find(e=>{if(e===n)return!1;let t=df(e),r=t?If(t,a):null;return p.has(rp(e,a)??``)||r===f});return m?ap(e,m,i,a):g.has(f)&&pf(Vf(d,e,a),i,a)})},Yue=(e,t,n,r,i,a)=>{let o=zf(e);if(o){let e=b(o);if(e&&e!==t&&pd(r).has(e))return{generationKey:null};let n=e?ep(e,o,a):null;return n?{generationKey:n}:null}let s=v(e),c=s.parent;if(!y(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!y(c.callee,`Identifier`)||c.callee.name!==`setTimeout`||!a.scopes.isGlobalReference(c.callee))return null;let l={kind:`timer`,node:c,resourceName:c.callee.name,handleKey:$d(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=ep(t,n,a);return l.handleKey!==null&&tp(i,l,a)&&u?{generationKey:u}:null},Xue=(e,n,r,i)=>{let a=b(n.node),o=v(n.node),s=o.parent;if(n.kind!==`subscribe`&&n.kind!==`timer`||n.handleKey===null||!a||!t(a)||a===e||a.async||a.generator||!y(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!wd(O(s.left),i.scopes)||!pd(e).has(a)||!tp(r,n,i)||!Ka(e,r,i))return!1;let c=r.flatMap(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return[];let n=If(e.argument,i);return n&&t(n)?[n]:[]}),l=bc(a),u=l?i.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.map(t=>Yue(t.identifier,a,n.node,e,r,i));if(d.some(e=>e===null))return!1;let f=new Set(d.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(f.size!==1)return!1;let p=f.values().next().value;return typeof p==`string`?[...pd(e),...c].some(e=>zue(e,p,i)):!1},Zue=(e,n,r,i)=>{if(Xue(e,n,r,i))return!0;let a=b(n.node),o=a?ud(a):null;if(n.kind!==`timer`||n.handleKey===null||!a||!t(a)||a===e||a.async||a.generator||!y(n.node,`CallExpression`)||!y(n.node.callee,`Identifier`)||!i.scopes.isGlobalReference(n.node.callee)||!o||!fd(e,i.scopes).has(a)||!pf(o,r,i))return!1;let s=v(n.node),c=s.parent;if(!y(c,`AssignmentExpression`)||c.operator!==`=`||c.right!==s||!y(c.left,`Identifier`))return!1;let l=i.scopes.symbolFor(c.left);if(!l||l.kind!==`let`&&l.kind!==`var`||!y(l.declarationNode,`VariableDeclarator`)||b(l.declarationNode)!==e)return!1;let u=r.flatMap(e=>{if(!y(e,`ReturnStatement`)||!e.argument)return[];let n=If(e.argument,i);return n&&t(n)?[n]:[]});if(u.length!==r.length)return!1;let d=new Map;for(let e of u){if(!t(e))return!1;let r=[];if(A(e.body,a=>{if(a!==e.body&&t(a))return!1;if(y(a,`CallExpression`)&&y(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&Cp(a,n,i)){let t=Xf(a,e,n,i);r.push({anchor:t??a,call:a,handleGuard:t})}}),!Ka(e,r.map(e=>e.anchor),i))return!1;d.set(e,r)}let f=l.references.filter(e=>Nd(e.identifier)),p=f.some(e=>v(e.identifier).parent===c),m=f.some(e=>{let t=v(e.identifier),n=t.parent;if(n===c)return!1;if(!y(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let r=O(n.right);if(!(y(r,`Literal`)&&r.value===null||y(r,`Identifier`)&&r.name===`undefined`&&i.scopes.isGlobalReference(r)))return!0;let a=b(n),o=a?d.get(a):void 0;return!(a&&o&&kp(n,o.map(e=>e.handleGuard&&R(n,e.handleGuard.consequent)?e.call:e.anchor),a,i))});if(!p||m)return!1;let h=n.node.parent;for(;h&&h!==a;){if(y(h,`ForStatement`)||y(h,`ForInStatement`)||y(h,`ForOfStatement`)||y(h,`WhileStatement`)||y(h,`DoWhileStatement`))return!1;h=h.parent}let g=!1;for(let e of n.node.arguments??[])A(e,e=>{if(g||t(e))return!1;if(y(e,`AwaitExpression`)||y(e,`YieldExpression`)||y(e,`CallExpression`)&&!Qa(e,i.scopes))return g=!0,!1});return g?!1:Mue(a,n.node,i).some(t=>Iue(e,t,u,i)&&!Lue(a,t,n.node,i)&&!Pue(a,n.node,t,i)&&r.every(e=>Nue(e,t,i)))},Que=(e,n,r)=>{if(!t(e)||!y(e.body,`BlockStatement`))return!1;let i=new Set;if(A(e.body,e=>{if(!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||ar(e)!==`push`||!y(a.object,`Identifier`))return;let o=e.arguments[0];if(!o||!E(o))return;let s=O(o),c=t(s)?s:If(o,r);if(!c||!t(c))return;let l=!1;if(A(c.body,e=>{if(l||e!==c.body&&t(e))return l?!1:void 0;if(!y(e,`CallExpression`))return;let i=O(e.callee);if(!y(i,`MemberExpression`))return;let a=y(n.node,`CallExpression`)?n.node:null;if(ar(e)===`removeEventListener`&&a&&Wd(i.object,r)===n.receiverKey&&Wd(e.arguments[0],r)===n.eventKey&&Wd(e.arguments[1],r)===n.handlerKey&&qd(a.arguments[2],e.arguments[2],r,!0))return l=!0,!1}),!l)return;let u=v(n.node),d=u.parent,f=v(e),p=f.parent;if(!d||!y(d,`ExpressionStatement`)||d.expression!==u||!p||!y(p,`ExpressionStatement`)||p.expression!==f||!d.parent||!y(d.parent,`BlockStatement`)||d.parent!==p.parent)return;let m=d.parent.body.findIndex(e=>e.range[0]===d.range[0]);if(d.parent.body.findIndex(e=>e.range[0]===p.range[0])!==m+1)return;let h=r.scopes.symbolFor(a.object),g=h?.initializer?O(h.initializer):null;h?.kind!==`const`||!g||!y(g,`ArrayExpression`)||g.elements.length!==0||h.references.every(e=>{let t=v(e.identifier);if(y(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!y(n,`MemberExpression`)||n.object!==t)return!1;let r=v(n).parent;return!!(r&&y(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(S(n)??``))})&&i.add(h)}),i.size===0)return!1;let a=!1;return Dd(e.body,e=>{if(a||!y(e,`ReturnStatement`)||!e.argument)return;let n=O(e.argument),o=t(n)?n:If(e.argument,r);!o||!t(o)||A(o.body,e=>{if(a)return!1;if(!y(e,`CallExpression`))return;let n=O(e.callee);if(y(n,`Identifier`)){let t=mf(n,r),o=t?O(t.right):null,s=y(o,`Identifier`)?r.scopes.symbolFor(o):null;if(t&&s&&i.has(s)&&jf(e,t,r))return a=!0,!1}if(!y(n,`MemberExpression`)||ar(e)!==`forEach`||!y(n.object,`Identifier`))return;let o=r.scopes.symbolFor(n.object);if(!o||!i.has(o))return;let s=e.arguments[0];if(!s||!E(s))return;let c=O(s);if(!t(c))return;let l=c.params[0];if(!l||!y(l,`Identifier`))return;let u=r.scopes.symbolFor(l);return A(c.body,e=>{if(y(e,`CallExpression`)&&y(O(e.callee),`Identifier`)&&r.scopes.symbolFor(O(e.callee))?.id===u?.id)return a=!0,!1}),a?!1:void 0})}),a},$ue=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!y(t.node,`CallExpression`))return!1;let r=O(t.node.callee);if(!y(r,`MemberExpression`))return!1;let i=[r.object,t.node.arguments[0],t.node.arguments[1],t.node.arguments[2]],a=new Set(i.flatMap(e=>{let t=Hd(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Wd(r.object,n),s=Wd(t.node.arguments[0],n),c=Wd(t.node.arguments[1],n),l=Kd(t.node.arguments[2],n,!0),u=!1;return A(e,e=>{if(u||!y(e,`CallExpression`))return u?!1:void 0;if(ar(e)!==`removeEventListener`)return;let r=O(e.callee);if(y(r,`MemberExpression`)&&!(Wd(r.object,n)!==o||Wd(e.arguments[0],n)!==s||Wd(e.arguments[1],n)!==c||Kd(e.arguments[2],n,!0)!==l)&&yp(e,a,n)&&!xp(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},sp=(e,n)=>{if(e.registrationVerbName!==`setTimeout`||!y(e.node,`CallExpression`))return!1;let r=e.node.arguments[0];if(!r||!E(r))return!1;let i=O(r),a=t(i)?i:If(r,n);if(!a||!t(a)||!y(a.body,`BlockStatement`))return!1;let o=a.body.body[0];if(!o||!y(o,`IfStatement`)||!Cd(o.consequent))return!1;let s=O(o.test);for(;y(s,`LogicalExpression`)&&s.operator===`||`;)s=O(s.left);if(!y(s,`UnaryExpression`)||s.operator!==`!`)return!1;let c=wd(O(s.argument),n.scopes,{resolveNamedAliases:!0});if(!c)return!1;let l=b(e.node),u=null;for(;l;){let e=l.parent;if(e&&y(e,`CallExpression`)&&Bd(e,n)){u=e;break}l=b(l)}let d=X(u||e.node,n.scopes);if(!d){let t=b(e.node);for(;t&&!mc(t);)t=b(t);d=t}if(!d||!t(d))return!1;let f=!1;return A(d.body,e=>{if(f)return!1;if(!y(e,`CallExpression`)||!Bd(e,n))return;let r=or(e);if(!r||!t(r))return;let i=O(r.body);t(i)&&A(i.body,e=>{if(y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),n.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Dn(O(e.right))===!1&&n.cfg.isUnconditionalFromEntry(e))return f=!0,!1}),Dd(r.body,e=>{if(f||!y(e,`ReturnStatement`)||!e.argument)return;let r=If(e.argument,n);!r||!t(r)||A(r.body,e=>{if(y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),n.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Dn(O(e.right))===!1&&n.cfg.isUnconditionalFromEntry(e))return f=!0,!1})})}),f},cp=(e,n,r,i=[n])=>{if(!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||e.async)return!1;if(Que(e,n,r)||$ue(e,n,r)||sp(n,r)||jp(e,n,r)||n.kind===`subscribe`&&b(n.node)===e&&Fp(n.node,!0,!0,r)&&rf(n,r))return!0;if(!y(e.body,`BlockStatement`))return e.body===n.node&&rf(n,r);let a=v(n.node),o=a.parent,s=y(o,`AssignmentExpression`)&&o.operator===`=`&&o.right===a&&y(o.left,`Identifier`)?r.scopes.symbolFor(o.left):null,c=n.kind===`timer`&&b(n.node)!==e&&!!(s&&(s.kind===`let`||s.kind===`var`)&&y(s.declarationNode,`VariableDeclarator`)&&b(s.declarationNode)===e),l=[];if(Dd(e.body,e=>{if(!y(e,`ReturnStatement`))return;let i=D(e),a=D(n.node);if(i!==null&&a!==null&&i<a)return;let o=e.argument?O(e.argument):null;if(!o)return;if(Gf(o,n,r)){l.push(e);return}if(n.kind===`subscribe`&&(o===n.node||D(o)!==null&&D(o)===D(n.node))&&rf(n,r)){l.push(e);return}if(n.kind===`subscribe`&&due(o,n,r)){l.push(e);return}if(y(o,`Identifier`)&&(o.name===`undefined`&&r.scopes.isGlobalReference(o)||!r.scopes.symbolFor(o)?.initializer))return;let s=If(o,r);if(s&&Gf(s,n,r)){l.push(e);return}!s||!t(s)||Uf(s,n,r,new Set,new Map,c)&&l.push(e)}),Zue(e,n,l,r)||Jue(e,n,i,l,r))return!0;let u=b(n.node),d=u?Tue(u,e,r):[];return n.kind===`subscribe`&&d.length>0&&d.every(e=>pf(e,l,r))?!0:pf(Vf(n.node,e,r,n),l,r)},ede=(e,t,n)=>{for(let r of t)if(!cp(e,r,n,t)&&!jue(e,r,n))return r;return null},lp=(e,t,n=new Set)=>{let r=O(e);if(y(r,`NewExpression`)&&y(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(y(r,`MemberExpression`))return lp(r.object,t,n);if(!y(r,`Identifier`))return!1;let i=t.scopes.symbolFor(r);if(!i||n.has(i.id))return!1;if(n.add(i.id),i.initializer)return lp(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(y(a,`Property`)&&y(o,`ObjectPattern`)&&y(s,`VariableDeclarator`)&&s.init&&lp(s.init,t,n))},tde=(e,t)=>{if(!y(e,`Property`))return!1;let n=y(e.key,`Identifier`)?e.key.name:y(e.key,`Literal`)?e.key.value:null;return n===`signal`?!lp(e.value,t):n===`once`?y(e.value,`Literal`)&&e.value.value===!0:!1},nde=(e,t)=>y(e,`CallExpression`)&&(e.arguments??[]).some(e=>y(e,`ObjectExpression`)&&(e.properties??[]).some(e=>tde(e,t))),up=new Map([[`addEventListener`,new Set([`removeEventListener`,`abort`])],[`addListener`,new Set([`removeListener`,`off`,`abort`])],[`on`,new Set([`off`,`removeListener`,`on`])],[`subscribe`,new Set([`unsubscribe`,`unsub`])],[`sub`,new Set([`unsub`,`unsubscribe`])],[`watch`,new Set([`unwatch`,`close`])],[`listen`,new Set([`unlisten`,`close`])],[`observe`,new Set([`disconnect`,`unobserve`])]]),dp=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),fp=new Set([`close`]),rde=new Set([`removeChannel`,`removeAllChannels`]),pp=e=>{let t=y(e,`ChainExpression`)?e.expression:e;if(!y(t,`CallExpression`))return null;let n=O(t.callee);if(y(n,`Identifier`))return $e.has(n.name)||An.has(n.name)||dp.has(n.name)?n.name:null;if(y(n,`MemberExpression`)&&y(n.property,`Identifier`)){let e=n.property.name;return An.has(e)||vt.has(e)||rde.has(e)||e===`on`?e:null}return null},ide=(e,n,r)=>{let i=b(e),a=b(n.node);if(!i||!a||!t(a)||!Tp(i,r)||!Td(e,r.scopes))return!1;let o=Lf(n,r),s=Z(e,r);if(o===null||s===null)return!1;let c=a.body,l=[],u=[];A(c,e=>{if(e!==c&&t(e))return!1;if(y(e,`AssignmentExpression`)&&Z(e.left,r)===s&&Z(e.right,r)===o){u.push(e);return}if(!y(e,`CallExpression`))return;let n=y(e.callee,`ChainExpression`)?e.callee.expression:O(e.callee);y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)&&n.property.name===`abort`&&Z(n.object,r)===s&&l.push(e)});let d=u.filter(e=>kp(e,l,a,r));return kp(n.node,d,a,r)},mp=e=>y(e,`JSXAttribute`)&&y(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hp=(e,t)=>{let n=bc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(y(n,`JSXExpressionContainer`)&&n.expression===t&&mp(n.parent))}):!1},gp=(e,n,r)=>{let i=bc(e);if(!i)return!1;let a=n.scopes.symbolFor(i);if(!a)return!1;let o=e=>{let t=y(e,`Property`)?S(e):null;if(!y(e,`Property`)||!y(e.parent,`ObjectExpression`)||r&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let n=v(e.parent),i=n.parent;if(!y(i,`ReturnStatement`)||i.argument!==n)return!1;let a=b(i);return!!(a&&dc(bc(a)?.name??``))};if(a.references.some(e=>{let t=v(e.identifier),n=t.parent;return y(n,`Property`)&&n.value===t?o(n):!1}))return!0;let s=b(e);if(!s||!t(s)||!dc(bc(s)?.name??``))return!1;let c=!1;return A(s.body,e=>{if(c)return!1;if(y(e,`Property`)&&y(e.value,`Identifier`)&&e.value.name===i.name&&o(e))return c=!0,!1}),c},ade=e=>{if(!t(e))return!1;let n=e.params[0];if(!n)return!1;let r=(y(n,`Identifier`)?n:y(n,`AssignmentPattern`)&&y(n.left,`Identifier`)?n.left:null)?.typeAnnotation,i=y(r,`TSTypeAnnotation`)?r.typeAnnotation:null;return!!(y(i,`TSNullKeyword`)||y(i,`TSUnionType`)&&i.types.some(e=>y(e,`TSNullKeyword`)))},ode=(e,n)=>{if(!t(e))return!1;let r=bc(e),i=b(e),a=i?bc(i):null;if(!r||!i||!t(i)||!a||!dc(a.name))return!1;let o=new Set;if(A(i.body,e=>{if(!y(e,`Property`)||!y(e.value,`Identifier`)||e.value.name!==r.name||!y(e.parent,`ObjectExpression`))return;let t=v(e.parent);if(y(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=S(e);t&&o.add(t)}}),o.size===0)return!1;let s=n.scopes.symbolFor(a);if(!s||s.references.length===0)return!1;let c=!1;for(let e of s.references){let t=v(e.identifier),r=t.parent,i=r?.parent;if(!y(r,`CallExpression`)||r.callee!==t||!y(i,`VariableDeclarator`)||i.init!==r||!y(i.id,`Identifier`))return!1;let a=n.scopes.symbolFor(i.id);if(!a)return!1;for(let e of a.references){let t=v(e.identifier),n=t.parent;if(!y(n,`MemberExpression`)||n.object!==t||!o.has(S(n)??``))continue;let r=v(n),i=r.parent;if(!y(i,`JSXExpressionContainer`)||i.expression!==r||!mp(i.parent))return!1;c=!0}}return c},_p=(e,t)=>hp(e,t)||gp(e,t,!0)||ode(e,t)||ade(e)&&gp(e,t,!1),vp=(e,n)=>{if(!t(e)||!e.returnType)return!1;let r=!1;if(A(e.returnType,e=>{if(y(e,`TSFunctionType`))return r=!0,!1}),!r)return!1;let i=bc(e),a=i?n.scopes.symbolFor(i):null;return a?a.references.some(e=>{let t=v(e.identifier),n=t.parent;return!!(y(n,`JSXExpressionContainer`)&&n.expression===t&&y(n.parent,`JSXAttribute`))}):!1},sde=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(y(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=O(o.test);if(!y(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[O(e.left),O(e.right)],a=t.some(e=>qf(e,n,i)),s=t.some(e=>{if(!y(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=Z(e.left,i),a=Z(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},cde=(e,n,r,i)=>{if(!t(e))return[];let a=[];return A(e.body,o=>{if(o!==e.body&&t(o))return!1;if(!y(o,`IfStatement`)||o.alternate!==null||!Cd(o.consequent))return;let s=O(o.test);if(!y(s,`BinaryExpression`)||s.operator!==`===`&&s.operator!==`==`)return;let c=Z(s.left,i),l=Z(s.right,i);(c===n&&l===r||l===n&&c===r)&&a.push(o)}),a},lde=(e,n,r)=>{if(!y(n.node,`CallExpression`))return!1;let i=b(n.node);if(!i||!t(i)||i!==b(e)||!_p(i,r))return!1;let a=O(n.node.callee),o=O(e.callee),s=y(o,`MemberExpression`)?Jd(o.object,r):null;if(!y(a,`MemberExpression`)||a.computed||!y(a.property,`Identifier`)||a.property.name!==`addEventListener`||!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`)||o.property.name!==`removeEventListener`||!s)return!1;let c=Z(O(a.object),r),l=Z(i.params?.[0],r),u=Z(o.object,r),d=Z(e.arguments?.[1],r);if(c===null||c!==l||u===null||n.eventKey===null||n.eventKey!==Z(e.arguments?.[0],r)||n.handlerKey===null)return!1;if(n.handlerKey!==d){if(!qd(n.node.arguments?.[2],e.arguments?.[2],r))return!1;let a=D(e),o=[];return A(i.body,e=>{if(e!==i.body&&t(e))return!1;if(!y(e,`AssignmentExpression`)||e.operator!==`=`||!y(O(e.right),`ObjectExpression`)||wd(O(e.left),r.scopes)?.id!==s.id)return;let l=Z(e.left,r),f=O(e.right);if(!l||u!==`${l}.element`||d!==`${l}.handler`||a===null||(D(e)??-1)<=a||!y(f,`ObjectExpression`))return;let p=f.properties.find(e=>y(e,`Property`)&&S(e)===`element`),m=f.properties.find(e=>y(e,`Property`)&&S(e)===`handler`);y(p,`Property`)&&y(m,`Property`)&&Z(p.value,r)===c&&Z(m.value,r)===n.handlerKey&&o.push(e)}),Ka(i,[Yf(e,i,u,r)??e],r)&&pf(n.node,o,r)}if(!qd(n.node.arguments?.[2],e.arguments?.[2],r))return!1;let f=D(e),p=[],m=i.body;A(m,e=>{if(e!==m&&t(e))return!1;y(e,`AssignmentExpression`)&&e.operator===`=`&&wd(O(e.left),r.scopes)?.id===s.id&&Z(e.right,r)===c&&f!==null&&(D(e)??-1)>f&&p.push(e)});let h=Yf(e,i,u,r)??sde(e,i,u,c,r)??e,g=p.filter(e=>kp(e,[h],i,r));return Ka(i,[h,...cde(i,u,c,r)],r)&&kp(n.node,g,i,r)},yp=(e,n,r)=>{let i=v(e),a=new Set,o=new Set;for(;;){let e=b(i);if(!e||!t(e)||a.has(e))return null;a.add(e);let s=e.body===i,c=i.parent,l=y(e.body,`BlockStatement`)&&y(c,`ExpressionStatement`)&&c.parent===e.body;if(!s&&!l||!Ka(e,[l?c:i],r))return null;let u=Rf(e);if(!u)return o.size===n.size&&Tp(e,r)?e:null;let d=O(u.callee);if(!y(d,`MemberExpression`))return null;let f=Z(d.object,r);if(!f||!n.has(f))return null;o.add(f),i=v(u)}},bp=e=>{let n=new Set,r=e;for(;;){let e=b(r);if(!e||!t(e)||n.has(e))break;n.add(e),r=e}return n},xp=(e,n,r,i)=>{let a=D(e),o=D(n);if(a===null||o===null)return!0;let s=bp(e),c=bp(n),l=(e,t)=>e!==null&&t<=(r.get(e)??-1/0),u=(e,n,a,o)=>{if(o&&y(e,`ReturnStatement`)&&l(Z(e.argument,i),n))return!0;if(y(e,`AssignmentExpression`)){let t=Z(e.left,i),a=O(e.left);return l(Z(e.right,i),n)&&!l(t,n)||!!(t&&[...r].some(([e,r])=>n<=r&&(t===e||t===`${e}.length`)))||y(a,`MemberExpression`)&&a.computed&&l(Z(a.object,i),n)}if(y(e,`UnaryExpression`)&&e.operator===`delete`){let t=O(e.argument);return y(t,`MemberExpression`)&&l(Z(t.object,i),n)}if(y(e,`UpdateExpression`)){let t=Z(e.argument,i);return!!(t&&[...r].some(([e,r])=>n<=r&&t===`${e}.length`))}if(!y(e,`CallExpression`)&&!y(e,`NewExpression`))return!1;let s=e.arguments.some(e=>E(e)?l(Z(e,i),n)&&xf(e,i)===null:!1),c=O(e.callee),d=y(e,`CallExpression`)&&y(c,`MemberExpression`)&&!c.computed&&y(c.object,`Identifier`)&&c.object.name===`Array`&&i.scopes.isGlobalReference(c.object)&&y(c.property,`Identifier`)&&c.property.name===`from`;return s&&!d||y(c,`MemberExpression`)&&!c.computed&&y(c.property,`Identifier`)&&(iue.has(c.property.name)||aue.has(c.property.name))&&l(Z(c.object,i),n)?!0:y(e,`CallExpression`)?[M(e.callee,i.scopes),...e.arguments.flatMap(t=>E(t)&&sd(e,t)?[M(t,i.scopes)]:[])].some(e=>{if(!e||!t(e)||e.generator||a.has(e))return!1;let r=new Set(a);r.add(e);let i=!1;return A(e.body,a=>{if(i||a!==e.body&&t(a))return!1;if(u(a,n,r,!1))return i=!0,!1}),i}):!1},d=e;for(;d.parent;)d=d.parent;let f=!1;return A(d,e=>{if(f)return!1;let t=D(e);if(t===null)return;let n=i.cfg.enclosingFunction(e);if(!n)return;let r=s.has(n)&&t>a,l=c.has(n)&&t<o;if(!(!r&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Sp=(e,t)=>ar(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,ude=(e,n,r)=>{let i=O(e.callee),a=O(n.callee);if(!y(i,`MemberExpression`)||!y(a,`MemberExpression`))return!0;let o=ar(e),s=ar(n),c=n.arguments?.[+!Sp(e,n)],l=b(n),u=Wd(e.arguments?.[0],r),d=Wd(n.arguments?.[0],r),f=s===`off`&&!c&&(n.arguments?.length===0||u!==null&&u===d);if(l&&t(l)&&Tp(l,r)&&Ka(l,[n],r)&&(s!==null&&dp.has(s)||f))return!0;let p=[i.object,e.arguments?.[0],e.arguments?.[1],a.object,n.arguments?.[0],n.arguments?.[1]].flatMap(e=>{let t=Hd(e,r);return t?[t]:[]});if(o===`addEventListener`&&s===`removeEventListener`)for(let t of[e.arguments?.[2],n.arguments?.[2]]){let e=sue(t,r);e&&p.push(e)}if(p.length===0)return!0;let m=new Set(p.map(e=>e.collectionKey));return!yp(n,m,r)&&!vue(n,m,r)?!1:!xp(e,n,new Map([...m].map(e=>[e,1/0])),r)},Cp=(e,n,r,i=new Map)=>{let a=y(e,`ChainExpression`)?e.expression:e;if(!y(a,`CallExpression`))return!1;let o=O(a.callee);if(n.kind===`timer`){let e=n.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!y(o,`Identifier`)||!$e.has(o.name)||o.name!==e)return!1;if(ef(Z(a.arguments?.[0],r,new Set,i),n,r))return!0;let t=Pf(n.node,r);return t!==null&&t===xf(a.arguments?.[0],r)}if(y(o,`Identifier`)&&n.kind===`subscribe`&&(af(o,n,r)&&(n.registrationVerbName!==`addEventListener`&&n.registrationVerbName!==`addListener`||rf(n,r))||n.registrationVerbName===`addListener`&&Tf(o,n,r)))return!0;let s=pp(a);if(!s||!y(o,`MemberExpression`)||o.computed||!y(o.property,`Identifier`))return!1;let c=Wd(o.object,r),l=Wd(a.arguments?.[0],r),u=n.registrationVerbName?up.get(n.registrationVerbName):null,d=Ff(n,r),f=mf(o.object,r),p=f?Z(f.right,r):xf(o.object,r);if(u&&wp(s,u)&&d!==null&&d===p&&(s!==`unobserve`||n.eventKey!==null&&l===n.eventKey)||lde(a,n,r)||of(c,s,n,r))return!0;if(n.kind===`socket`)return ef(c,n,r)&&(fp.has(s)||dp.has(s));if(n.kind===`subscribe`&&y(n.node,`CallExpression`)&&(s===`removeChannel`||s===`removeAllChannels`)&&c===ff(n.node,r)&&(s===`removeAllChannels`||ef(Z(a.arguments?.[0],r,new Set,i),n,r))||(ef(c,n,r)||n.kind===`subscribe`&&Tf(o.object,n,r))&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||vt.has(s))||s===`abort`&&c===Lf(n,r)||s===`abort`&&ide(o.object,n,r))return!0;if(n.registrationVerbName===`addListener`&&s===`removeListener`&&y(n.node,`CallExpression`)&&n.node.arguments?.length===1){if(a.arguments?.length!==1)return!1;let e=If(n.node.arguments[0],r);if(!lf(n.node,`addListener`,r)&&!t(e))return!1}if(n.registrationVerbName===`addEventListener`&&s===`removeEventListener`&&y(n.node,`CallExpression`)&&(!y(O(n.node.callee),`MemberExpression`)||!qd(n.node.arguments?.[2],a.arguments?.[2],r,!0))||y(n.node,`CallExpression`)&&!ude(n.node,a,r))return!1;let m=y(n.node,`CallExpression`)?O(n.node.callee):null,h=y(m,`MemberExpression`)?Ef(m.object,r):null,g=Ef(o.object,r);if(!(h!==null&&h===g)&&(n.receiverKey===null||c!==n.receiverKey))return!1;if(n.registrationVerbName===`subscribe`&&(s===`unsubscribe`||s===`unsub`)&&n.handleKey!==null&&Z(a.arguments?.[0],r)===n.handleKey)return!0;let _=n.registrationVerbName?up.get(n.registrationVerbName):null;if(!_||!wp(s,_))return!1;let ee=y(n.node,`CallExpression`)?n.node.arguments?.[0]:null,te=a.arguments?.[0];if(hf(ee,r)||hf(te,r))return!1;if(n.eventKey!==null&&l!==null&&n.eventKey!==l){if(!y(n.node,`CallExpression`))return!1;let e=Ud(n.node.arguments?.[0],r),t=Ud(a.arguments?.[0],r);if((e!==null||t!==null)&&e!==t)return!1;let i=mf(ee,r),c=mf(te,r);if(i===null!=(c===null))return!1;let l=xf(n.node.arguments?.[0],r),u=xf(a.arguments?.[0],r);if(l===null||l!==u)return!1;if(i&&c){let e=Of(n.node.arguments?.[1],r),t=Of(a.arguments?.[1],r);if(n.registrationVerbName!==`addEventListener`||s!==`removeEventListener`)return!1;let i=O(n.node.callee);if(!y(i,`MemberExpression`)||!Df(i.object,r)||!Df(o.object,r)||e===null||e!==t||!qd(n.node.arguments?.[2],a.arguments?.[2],r)||!jf(a,c,r))return!1}}if(s===`on`){let e=a.arguments?.[1];return y(e,`Literal`)&&e.value===null}if(s===`removeEventListener`||s===`removeListener`||s===`off`){let e=y(n.node,`CallExpression`)&&Sp(n.node,a),t=e?a.arguments?.[0]:a.arguments?.[1];if(!t)return s===`off`;let i=e?n.handlerKey??n.eventKey:n.handlerKey,o=y(n.node,`CallExpression`)?n.node.arguments?.[+!e]:null;return i!==null&&Wd(t,r)===i||o!==null&&If(t,r)===If(o,r)}return s===`unobserve`&&n.eventKey!==null?l===n.eventKey:!0},wp=(e,t)=>t.has(e)||dp.has(e),Tp=(e,n)=>{let r=b(e);if(!r||!t(r))return!1;let i=r.parent;if(!y(i,`CallExpression`)||!Bd(i,n))return!1;if(!y(r.body,`BlockStatement`))return If(r.body,n)===e;let a=!1;return Dd(r.body,t=>{y(t,`ReturnStatement`)&&t.argument&&If(t.argument,n)===e&&(a=!0)}),a},Ep=(e,t)=>{if(Wp(e,t)||Tp(e,t))return!0;let n=bc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>b(t.identifier)!==e):!1},dde=(e,n,r)=>{if(!t(e)||e.async||e.generator)return[];let i=b(n.node);if(!i||!t(i))return[];let a=new Map,o=e=>{let n=v(e),o=n.parent;if(!y(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==n)return;let s=Jd(o.left,r),c=Z(o.left,r),l=b(o),u=D(o);if(!s&&y(o.left,`MemberExpression`)){let e=S(o.left),n=O(o.left.object),i=y(n,`Identifier`)?r.scopes.symbolFor(n):null;if(!e||!i||!l||!t(l))return;for(let t of i.references){let n=v(t.identifier),i=n.parent;if(!y(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==n||!Jd(i.left,r)||b(i)!==l)continue;let o=Z(i.left,r),s=D(i);!o||s===null||a.set(s,{assignmentNode:i,refCurrentKey:`${o}.${e}`,retainedFunction:l})}return}!s||!c||!l||l!==i||u===null||a.set(u,{assignmentNode:o,refCurrentKey:c,retainedFunction:l})};o(e);let s=bc(e),c=s?r.scopes.symbolFor(s):null;for(let e of c?.references??[])o(e.identifier);return A(i.body,n=>{if(n!==i.body&&t(n))return!1;y(n,`AssignmentExpression`)&&If(n.right,r)===e&&o(n.right)}),[...a.values()]},fde=(e,t,n)=>kp(t.node,[e.assignmentNode],e.retainedFunction,n)||pf(t.node,[e.assignmentNode],n),pde=(e,n,r)=>{let i=!1;return A(e.retainedFunction.body,a=>{if(i||a!==e.retainedFunction.body&&t(a))return!1;if(!y(a,`AssignmentExpression`)||a===e.assignmentNode||Z(a.left,r)!==e.refCurrentKey||!Xu(n.node,a,e.retainedFunction,r))return;let o=If(a.right,r);if(!o||!t(o)||!Uf(o,n,r))return i=!0,!1}),i},mde=(e,n,r)=>{let i=b(e.retainedFunction);if(!i||!t(i))return!1;let a=n=>{if(!t(n))return!1;let i=!1;return A(n.body,a=>{if(i||a!==n.body&&t(a))return!1;if(y(a,`CallExpression`)&&Z(a.callee,r)===e.refCurrentKey){let t=v(a),o=t.parent,s=y(n.body,`BlockStatement`)&&y(o,`ExpressionStatement`)&&o.parent===n.body,c=n.body===t,l=!!Yf(a,n,e.refCurrentKey,r);if((s||c||l)&&!Ap(n,a,e.refCurrentKey,r))return i=!0,!1}}),i},o=e=>{if(!t(e))return!1;if(!y(e.body,`BlockStatement`)){let t=Op(e.body,r);return!!(t&&a(t))}let n=[];return Dd(e.body,e=>{if(!y(e,`ReturnStatement`)||!e.argument)return;let t=Op(e.argument,r);!t||!a(t)||n.push(e)}),Ka(e,n,r)},s=!1;return A(i.body,e=>{if(s)return!1;if(!y(e,`CallExpression`)||b(e)!==i||!k(e,`useEffect`,r.scopes))return;let t=or(e);if(t&&o(t))return s=!0,!1}),s},hde=(e,n,r)=>{if(!hp(e.retainedFunction,r)&&!(()=>{if(!t(e.retainedFunction))return!1;let i=v(e.retainedFunction).parent;if(!y(i,`CallExpression`)||!k(i,`useCallback`,r.scopes))return!1;let a=e.retainedFunction.params?.[0],o=Z(a,r);return!o||n.receiverKey!==o?!1:_p(e.retainedFunction,r)})())return!1;let i=[];return A(e.retainedFunction.body,n=>{if(n!==e.retainedFunction.body&&t(n))return!1;y(n,`CallExpression`)&&Z(n.callee,r)===e.refCurrentKey&&i.push(n)}),kp(n.node,i,e.retainedFunction,r)},gde=(e,t,n)=>{let r=b(e);return r?dde(r,t,n).some(e=>fde(e,t,n)&&!pde(e,t,n)&&(mde(e,t,n)||hde(e,t,n))):!1},_de=(e,n,r,i)=>{if(r.kind!==`subscribe`||r.registrationVerbName!==`addEventListener`||r.receiverKey===null||r.eventKey===null||!y(r.node,`CallExpression`)||!t(n)||n.async||n.generator||!y(n.body,`BlockStatement`)||!Ka(n,[e],i))return!1;let a=y(e,`ChainExpression`)?e.expression:e;if(!y(a,`CallExpression`)||!qd(r.node.arguments?.[2],a.arguments?.[2],i))return!1;let o=b(n);if(!o||!t(o))return!1;let s=[];return A(o.body,e=>{if(e!==o.body&&t(e))return!1;if(!y(e,`CallExpression`))return;let a=uf(e,i);a.registrationVerbName===`addEventListener`&&a.receiverKey===r.receiverKey&&If(e.arguments?.[1],i)===n&&s.push(e)}),s.some(e=>e===r.node)?!0:pf(r.node,s,i)||kp(r.node,s,o,i)},vde=(e,n,r)=>{if(!B(e,r))return!1;let i=b(e);if(!i||i===b(n.node)||gde(e,n,r))return!0;let a=b(n.node);return a&&t(a)&&Lp(a,r)&&Ide(a,i,r)?Fde(a,i,n,r):_de(e,i,n,r)?!0:Ep(i,r)},Dp=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Ld.get(t);r||(r=new WeakMap,Ld.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];A(n,n=>{let r=y(n,`ChainExpression`)?n.expression:n;if(!y(r,`CallExpression`))return;let i=y(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(y(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pp(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cp(n,e,t)&&vde(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Op=(e,n)=>{let r=If(e,n);return t(r)?r:!y(r,`CallExpression`)||!k(r,`useCallback`,n.scopes)?null:or(r)},yde=(e,n,r)=>{if(!t(e)||n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.handlerKey===null||!n.receiverKey?.startsWith(`global:`)||!n.eventKey?.startsWith(`literal:`))return null;let i=D(n.node),a=r.cfg.cfgFor(e),o=a?.blockOf(n.node);if(i===null||!a||!o)return null;let s=[];return A(e.body,c=>{if(c!==e.body&&t(c))return!1;if(!y(c,`AssignmentExpression`)||c.operator!==`=`)return;let l=D(c),u=O(c.left);if(l===null||l>=i||a.blockOf(c)!==o||!y(u,`MemberExpression`)||!wd(u,r.scopes))return;let d=Z(u,r),f=Z(u.object,r),p=O(c.right);if(!d||!f||!y(p,`ObjectExpression`))return;let m=p.properties??[];if(!m.some(e=>!y(e,`Property`)))for(let e of m){if(!y(e,`Property`))continue;let t=S(e);if(t&&Z(e.value,r)===n.handlerKey){let e=`${d}.${t}`;s.push({handlerKey:e,refCurrentKey:d,refKey:f,assignmentNode:c})}}}),s.length===1?s[0]:null},kp=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=D(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=D(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},bde=(e,n,r,i)=>{if(!t(e))return!1;let a=e.body,o=[];return A(a,e=>{if(e!==a&&t(e))return!1;y(e,`CallExpression`)&&Op(e.callee,i)===n&&o.push(e)}),kp(r,o,e,i)},xde=(e,n,r,i,a,o)=>{if(!t(n))return!1;let s=y(e,`ChainExpression`)?e.expression:e;if(!y(s,`CallExpression`)||!y(s.callee,`MemberExpression`)||s.callee.computed||!y(s.callee.property,`Identifier`)||s.callee.property.name!==`removeEventListener`||!y(r.node,`CallExpression`)||r.node.arguments?.[2]!==void 0||s.arguments?.[2]!==void 0)return!1;let c=v(e).parent,l=c?.parent,u=l?.parent,d=l===n.body,f=!!(y(l,`BlockStatement`)&&y(u,`IfStatement`)&&u.consequent===l&&u.alternate===null&&Z(u.test,o)===a);return!y(c,`ExpressionStatement`)||!y(n.body,`BlockStatement`)||!d&&!f?!1:r.receiverKey!==null&&r.receiverKey===Z(s.callee.object,o)&&r.eventKey!==null&&r.eventKey===Z(s.arguments?.[0],o)&&Z(s.arguments?.[1],o)===i},Sde=(e,t,n)=>{let r=e.parent,i=y(r,`BlockStatement`)?r.parent:r,a=y(r,`BlockStatement`)?r:e;if(!y(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=O(i.test);return y(o,`UnaryExpression`)&&o.operator===`!`&&Z(o.argument,n)===t},Ap=(e,n,r,i)=>{if(!t(e))return!0;let a=D(n);if(a===null)return!0;let o=!1;return A(e.body,n=>{if(o||n!==e.body&&t(n))return!1;if(!y(n,`ReturnStatement`))return;let s=D(n);if((s===null||s<a)&&!Sde(n,r,i))return o=!0,!1}),o},Cde=(e,n,r,i,a)=>{if(!t(e)||!t(n)||e.async||e.generator)return!1;let o=yde(r,i,a);if(!o||!bde(r,e,o.assignmentNode,a))return!1;let s=null;if(A(e.body,n=>{if(s||n!==e.body&&t(n))return!1;if(xde(n,e,i,o.handlerKey,o.refCurrentKey,a))return s=n,!1}),!s||Ap(e,s,o.refCurrentKey,a))return!1;let c=!1;return A(n.body,t=>{if(c)return!1;if(y(t,`UnaryExpression`)&&t.operator===`delete`){let e=O(t.argument);return Z(e,a)===o.handlerKey||y(e,`MemberExpression`)&&Z(e.object,a)===o.refCurrentKey?(c=!0,!1):void 0}if(y(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=Z(e,a);return t!==null&&(t===o.refKey||t===o.refCurrentKey)})?(c=!0,!1):void 0;if(!y(t,`AssignmentExpression`))return;let n=O(t.left);if(y(n,`MemberExpression`)&&n.computed&&Z(n.object,a)===o.refCurrentKey)return c=!0,!1;let s=Z(t.left,a);if(s===o.handlerKey)return c=!0,!1;if(s!==o.refCurrentKey)return;let l=O(t.right);if(y(l,`Literal`)&&l.value===null&&b(t)===e)return;let u=(y(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>y(e,`Property`))&&u.some(e=>y(e,`Property`)&&`${o.refCurrentKey}.${S(e)??``}`===o.handlerKey&&Z(e.value,a)===i.handlerKey);if(b(t)!==r||!d)return c=!0,!1}),!c},wde=(e,n,r,i,a)=>{let o=e=>{let t=Op(e,a);return!!(t&&Cde(t,n,r,i,a))};if(!t(e))return!1;if(!y(e.body,`BlockStatement`))return o(O(e.body));let s=[];return Dd(e.body,e=>{y(e,`ReturnStatement`)&&e.argument&&o(O(e.argument))&&s.push(e)}),Ka(e,s,a)},Tde=(e,n,r)=>{let i=bc(e),a=i?r.scopes.symbolFor(i):null;if(!a||a.references.length===0)return!1;let o=new Set(n.flatMap(e=>{let n=or(e);return n&&t(n)?[n]:[]}));return a.references.every(e=>{let r=v(e.identifier),i=r.parent,a=y(i,`CallExpression`)?b(i):null;if(y(i,`CallExpression`)&&i.callee===r&&a&&t(a)&&o.has(a))return!0;let s=r.parent,c=s?.parent;return!!(y(s,`ArrayExpression`)&&y(c,`CallExpression`)&&c.arguments?.[1]===s&&n.includes(c))})},jp=(e,n,r)=>{let i=b(e);if(!i||!t(i))return!1;let a=Rd.get(r);a||(a=new WeakMap,Rd.set(r,a));let o=a.get(i);if(!o){let e=[];A(i.body,t=>{y(t,`CallExpression`)&&b(t)===i&&Bd(t,r)&&e.push(t)}),o=e,a.set(i,o)}if(n.kind===`timer`){let t=cue(n.node,r),i=np(e,n,r),a=e.parent,s=!!(y(a,`CallExpression`)&&or(a)===e&&Bd(a,r)),c=i&&(!s||r.cfg.isUnconditionalFromEntry(n.node)),l=o.some(e=>{let t=or(e);return!!(t&&Kf(t,n,r))});return!!(t&&l&&(c||Tde(e,o,r)))}for(let t of o){let a=v(t).parent;if(!y(a,`ExpressionStatement`)||a.parent!==i.body)continue;let o=or(t);if(o&&wde(o,i,e,n,r))return!0}return!1},Ede=(e,t)=>{let n=bc(e);if(!n)return!1;let r=new Set,i=e=>{let n=t.scopes.symbolFor(e);return!n||r.has(n.id)||n.references.length===0?!1:(r.add(n.id),n.references.every(e=>{let n=v(e.identifier);for(;y(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=v(n.parent);let r=n.parent;if(y(r,`CallExpression`)&&r.arguments?.[0]===n)return k(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(y(r,`VariableDeclarator`)&&r.init===n&&y(r.id,`Identifier`)&&y(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Dde=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Mp=e=>{if(!y(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?O(r):null;if(!n||!t(n)||!i||!y(i,`Literal`)||i.value!==0)return!1;let a=!1,o=!1;return A(n.body,e=>{if(o)return!1;if(!y(e,`CallExpression`))return;let t=ar(e);if(!t||!Dde.has(t))return o=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(a=!0)}),a&&!o},Ode=(e,n)=>{if(!e||!t(e))return!1;let r=bc(e),i=r?n.scopes.symbolFor(r):null;return i?i.references.some(t=>{let n=v(t.identifier),r=n.parent;return!!(y(r,`CallExpression`)&&r.arguments[1]===n&&kd(r)===`addEventListener`&&b(r)===b(e))}):!1},kde=(e,n)=>{if(!y(e,`CallExpression`)||!n.filename)return!1;let r=O(e.callee);if(!y(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?Ye(i):null,o=i?Yt(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let s=pn(n.filename,a.source.value,o);if(!s||!t(s.functionNode))return!1;let c=new Set,l=e=>{if(!t(e)||c.has(e))return!1;c.add(e);let n=!0;return A(e.body,r=>{if(!n||r!==e.body&&t(r))return!1;if(y(r,`CallExpression`)){let e=O(r.callee);if(!y(e,`Identifier`))return n=!1,!1;let i=[];return A(s.programNode,n=>{if(t(n)&&bc(n)?.name===e.name)return i.push(n),!1}),i.length!==1||!l(i[0])?(n=!1,!1):void 0}if(y(r,`NewExpression`)||y(r,`AssignmentExpression`)||y(r,`UpdateExpression`)||y(r,`AwaitExpression`)||y(r,`YieldExpression`)||y(r,`ThrowStatement`)||y(r,`UnaryExpression`)&&r.operator===`delete`)return n=!1,!1}),n};return l(s.functionNode)},Ade=(e,n,r)=>{if(!t(n)||!kde(e,r))return!1;let i=e.parent;for(;i&&i!==n.body;){if(y(i,`AssignmentExpression`)&&R(e,i.right)&&Yd(O(i.left),r))return!0;i=i.parent}return!1},Np=(e,n)=>{if(!y(e,`CallExpression`))return!1;let r=e.arguments[0],i=e.arguments[1],a=i?O(i):null;if(!r||!t(r)||!a||!y(a,`Literal`)||typeof a.value!=`number`||a.value<0||a.value>300)return!1;let o=!1,s=!1;return A(r.body,e=>{if(s||e!==r.body&&t(e))return!1;if(y(e,`CallExpression`)&&Ade(e,r,n))return;if(y(e,`CallExpression`)||y(e,`UpdateExpression`))return s=!0,!1;if(!y(e,`AssignmentExpression`))return;let i=O(e.left);if(y(i,`MemberExpression`)&&Yd(i,n)){o=!0;return}return s=!0,!1}),!s&&(o||Ode(b(e),n))},Pp=(e,t)=>{let n=v(e);for(;y(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=v(n.parent);let r=n.parent;return y(r,`ReturnStatement`)&&r.argument===n&&b(r)===t?r:null},Fp=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(y(a,`ReturnStatement`)&&a.argument===i||y(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(y(a,`ChainExpression`)||y(a,`TSAsExpression`)||y(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(y(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||y(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(y(a,`VariableDeclarator`)&&a.init===i&&y(a.id,`Identifier`)&&y(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=b(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:pf(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Pp(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},jde=(e,n,r)=>{if(!t(e))return null;let i=e.body;if(!i)return null;let a=null,o=r?.allowReturnedResourceEscape!==!1&&!e.async&&!Wp(e,n),s=o&&r?.requireCallableReturnedResource!==!0,c=Ede(e,n),l=t=>{if(c)return cp(e,t,n);if(t.kind!==`timer`)return!!(r?.allowReturnedResourceEscape===!0||_p(e,n)||vp(e,n))&&Kf(e,t,n)||Dp(t,n)||jp(e,t,n);if((r?.allowReturnedResourceEscape===!0||_p(e,n)||vp(e,n))&&Kf(e,t,n)||!r?.isEffectInvoked&&(Zd(t.node,n)!==null||np(e,t,n))&&Dp(t,n)||sp(t,n)||jp(e,t,n))return!0;let i=b(e),a=i?.parent;return!!(i&&y(a,`CallExpression`)&&Bd(a,n)&&cp(i,t,n))};return A(i,e=>{if(a!==null||t(e)||!B(e,n))return!1;if(Vd(e)&&!Fp(e,s,!1,n)){let t={kind:`socket`,node:e,resourceName:y(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:$d(e,n),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!l(t))return a=t,!1}if(y(e,`CallExpression`)){if(y(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||r?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&n.scopes.isGlobalReference(e.callee))&&(r?.allowReturnedTimerEscape===!1||!Fp(e,!0,o,n))&&!Mp(e)&&!Np(e,n)){let t={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:$d(e,n,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!l(t))return a=t,!1}if(Ad(e)&&(!Fp(e,o,o,n)||r?.requireCallableReturnedResource===!0&&!jd(e))){let t=uf(e,n),r={kind:`subscribe`,node:e,resourceName:t.registrationVerbName??`subscribe`,handleKey:$d(e,n),...t};return!nde(e,n)&&!l(r)&&(a=r),!1}}}),a},Ip=(e,n)=>{if(!t(e)||e.generator)return null;let r=v(e),i=r.parent;if(!y(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r)return null;let a=wd(O(i.left),n.scopes);if(!a)return null;let o=X(i,n.scopes);return!t(o)||b(i)!==o||b(a.bindingIdentifier)!==o||!B(i,n)?null:{assignmentNode:i,functionNode:e,refSymbol:a}},Lp=(e,t)=>Ip(e,t)?.refSymbol??null,Rp=(e,t,n)=>{let r=v(e),i=r.parent;if(y(i,`VariableDeclarator`)&&i.init===r&&y(i.id,`Identifier`)&&y(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?pf(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Pp(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(y(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=v(e);continue}if(y(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=v(e);continue}if(y(e,`LogicalExpression`)&&e.right===r){r=v(e);continue}break}let a=r.parent;return!!(y(a,`ReturnStatement`)&&a.argument===r&&b(a)===t||y(t,`ArrowFunctionExpression`)&&t.body===r)},Mde=(e,t,n)=>y(e,`CallExpression`)&&wd(O(e.callee),n.scopes)?.id===t.id,Nde=(e,n)=>{let r=new Map;A(e.body,e=>{if(!t(e))return;let i=Ip(e,n);if(i){let e=r.get(i.refSymbol.id)??[];e.push(i),r.set(i.refSymbol.id,e)}return!1});for(let[e,t]of r){let i=t.filter(e=>!pf(e.assignmentNode,t.filter(t=>t!==e).map(e=>e.assignmentNode),n));i.length===0?r.delete(e):r.set(e,i)}return r},zp=(e,n,r)=>{if(!t(e))return[];let i=[],a=[];return A(e.body,o=>{if(o!==e.body&&t(o))return!1;y(o,`AssignmentExpression`)&&B(o,r)&&wd(O(o.left),r.scopes)?.id===n.id&&i.push(o),Mde(o,n,r)&&B(o,r)&&a.push(o)}),a.filter(t=>!kp(t,i,e,r))},Bp=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Pde=(e,n)=>{let r=Fd.get(n);r||(r=new WeakMap,Fd.set(n,r));let i=r.get(e);if(i)return i;let a=Nde(e,n),o=new Map;A(e.body,r=>{if(r!==e.body&&t(r))return!1;if(!y(r,`CallExpression`)||b(r)!==e||!Bd(r,n))return;let i=or(r);if(t(i))for(let e of a.values()){let t=e[0]?.refSymbol;if(t)for(let e of zp(i,t,n))Bp(o,t.id,!i.async&&Rp(e,i,n))}});let s=!0;for(;s;){s=!1;for(let e of a.values()){let t=e[0]?.refSymbol;if(!t)continue;let r=o.get(t.id);if(r)for(let t of e)for(let e of a.values()){let i=e[0]?.refSymbol;if(i)for(let e of zp(t.functionNode,i,n)){let a=r.doesEffectOwnEveryResult&&!t.functionNode.async&&Rp(e,t.functionNode,n);Bp(o,i.id,a)&&(s=!0)}}}}let c={callbackDefinitionsByRefSymbolId:a,usageByRefSymbolId:o};return r.set(e,c),c},Vp=(e,n)=>{if(!t(e))return null;let r=Ip(e,n),i=X(e,n.scopes);if(!r||!t(i))return null;let a=Pde(i,n);return a.callbackDefinitionsByRefSymbolId.get(r.refSymbol.id)?.some(t=>t.functionNode===e)?a.usageByRefSymbolId.get(r.refSymbol.id)??null:null},Fde=(n,r,i,a)=>{if(!t(n)||n.async||Vp(n,a)?.doesEffectOwnEveryResult!==!0||!y(n.body,`BlockStatement`))return!1;let o=n=>{let i=Op(e(n),a);if(!i)return!1;if(i===r)return!0;if(!t(i))return!1;let o=[];return A(i.body,e=>{if(e!==i.body&&t(e))return!1;y(e,`CallExpression`)&&Op(e.callee,a)===r&&o.push(e)}),Ka(i,o,a)},s=[];return Dd(n.body,e=>{y(e,`ReturnStatement`)&&e.argument&&o(e.argument)&&s.push(e)}),pf(i.node,s,a)},Ide=(e,n,r)=>{if(!t(e)||!y(e.body,`BlockStatement`))return!1;let i=!1;return Dd(e.body,e=>{i||!y(e,`ReturnStatement`)||!e.argument||A(e.argument,e=>{if(Op(e,r)===n)return i=!0,!1})}),i},Hp=e=>y(e,`FunctionDeclaration`)?md(e)!==null:!y(e,`ArrowFunctionExpression`)&&!y(e,`FunctionExpression`)||!y(e.parent,`VariableDeclarator`)?!1:md(e)!==null,Up=e=>{let t=v(e),n=t.parent;return y(n,`JSXExpressionContainer`)&&n.expression===t&&Sd(n.parent)},Wp=(e,n)=>{if(!t(e))return!1;let r=v(e),i=r.parent;if(y(i,`CallExpression`)&&i.arguments?.[0]===r&&N(i,`useCallback`,n.scopes)&&Up(i))return!0;let a=e.parent;if(Up(e))return!0;if(!y(a,`Property`)||a.value!==e||a.computed)return!1;let o=S(a);if(!o||!/^on[A-Z]/.test(o))return!1;let s=a.parent;if(!y(s,`ObjectExpression`))return!1;let c=s.parent;return(y(c,`CallExpression`)&&c.arguments.some(e=>e===s)||y(c,`JSXExpressionContainer`))&&X(a,n.scopes)!==null},Gp=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=O(e);return y(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:y(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||y(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:y(n,`ArrayExpression`)||y(n,`ArrowFunctionExpression`)||y(n,`ClassExpression`)||y(n,`FunctionExpression`)||y(n,`NewExpression`)||y(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Kp=(e,t,n)=>{let r=O(e),i=Gp(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(y(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(y(r,`UnaryExpression`)&&r.operator===`!`){let e=Kp(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(y(r,`LogicalExpression`)){let e=Kp(r.left,t,n),i=Kp(r.right,t,n);return r.operator===`&&`?e===`falsy`||i===`falsy`?`falsy`:e===`truthy`&&i===`truthy`?`truthy`:`unknown`:r.operator===`||`?e===`truthy`||i===`truthy`?`truthy`:e===`falsy`&&i===`falsy`?`falsy`:`unknown`:`unknown`}if(y(r,`ConditionalExpression`)){let e=Kp(r.test,t,n);if(e===`truthy`)return Kp(r.consequent,t,n);if(e===`falsy`)return Kp(r.alternate,t,n);let i=Kp(r.consequent,t,n);return i===Kp(r.alternate,t,n)?i:`unknown`}return y(r,`CallExpression`)&&y(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&E(r.arguments[0])?Kp(r.arguments[0],t,n):`unknown`},Lde=(e,n,r,i)=>{let a=new Map;if(!t(e)||!n.isDirect)return a;for(let[t,o]of e.params.entries()){let e=n.call.arguments[t],s=e&&E(e)?e:null,c=null,l=Gp(s,i);if(y(o,`Identifier`)?c=o:y(o,`AssignmentPattern`)&&y(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Gp(o.right,i))):y(o,`RestElement`)&&y(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=i.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<r.range[0]);a.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return a},Rde=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Lde(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(y(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!y(t,`IfStatement`)||t.alternate||!Cd(t.consequent))&&Kp(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(y(o,`IfStatement`)||y(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):y(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((y(o,`WhileStatement`)||y(o,`DoWhileStatement`))&&o.body===a||y(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Kp(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},zde=(e,n)=>{if(!t(e))return[];let r=b(e);if(!r||!t(r))return[];let i=Id.get(n);i||(i=new WeakMap,Id.set(n,i));let a=i.get(r);if(a)return a.get(e)??[];let o=new Map,s=(e,t,n)=>{if(!e)return;let r=o.get(e)??[];r.push({call:t,isDirect:n}),o.set(e,r)};return A(r.body,e=>{if(!y(e,`CallExpression`)||b(e)!==r||!Bd(e,n))return;let i=or(e);!i||!t(i)||A(i.body,e=>{if(e!==i.body&&t(e))return!1;if(!(!y(e,`CallExpression`)||!B(e,n))){s(Op(e.callee,n),e,!0);for(let t of e.arguments)!E(t)||!sd(e,t)||s(Op(t,n),e,!1)}})}),i.set(r,o),o.get(e)??[]},qp=x({id:`effect-needs-cleanup`,title:`Effect subscription or timer never cleaned up`,severity:`error`,tags:[`test-noise`],recommendation:"Return a cleanup function that stops the subscription or timer: `return () => target.removeEventListener(name, handler)` for listeners, `return () => clearInterval(id)` or `clearTimeout(id)` for timers, `return () => observer.disconnect()` for observers, `return () => socket.close()` for connections, or `return unsubscribe` if the subscribe call already gave you one.",create:e=>{let n=n=>{let r=Vp(n,e);if(!r&&!Ep(n,e))return;let i=zde(n,e),a=i.length>0,o=jde(n,e,r?{allowReturnedResourceEscape:r.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:a?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!o||a&&o.resourceName===`setTimeout`&&(!B(o.node,e)||t(n)&&n.params.length>0&&!e.cfg.isUnconditionalFromEntry(o.node)&&i.every(t=>Rde(n,o.node,t,e))))return;let s=zd[o.kind];e.report({node:o.node,message:`\`${o.resourceName}\` creates a ${s} in a function that outlives the render, with no cleanup path. Store the handle and release it, or move this into a useEffect that returns cleanup, so it does not leak after unmount.`})};return{CallExpression(t){if(N(t,`useCallback`,e.scopes)){let r=or(t);r&&!Wp(r,e)&&n(r);return}if(!Bd(t,e))return;let r=or(t);if(!r)return;let i=gue(r,hue(r,e),e);if(i.length===0)return;let a=ede(r,i,e);if(!a)return;let o=zd[a.kind],s=ar(t)??`effect`;e.report({node:t,message:`\`${a.resourceName}\` creates a ${o} in ${s} without guaranteed cleanup. Return a cleanup function that owns every allocation so it does not leak after unmount.`})},FunctionDeclaration(e){Hp(e)&&n(e)},ArrowFunctionExpression(t){(Hp(t)||Wp(t,e)||Lp(t,e))&&n(t)},FunctionExpression(t){(Hp(t)||Wp(t,e)||Lp(t,e))&&n(t)}}}}),Bde=new Set([`window`,`globalThis`,`self`]),Vde=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),Hde=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=v(e.identifier),n=t.parent;return!y(n,`MemberExpression`)||n.object!==t?!1:y(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(y(n.parent,`CallExpression`)&&n.parent.callee===n&&Vde.has(C(n)??``))}),Ude=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||Hde(e))return null;r.add(e.id);let i=Hs(e);if(!i)return n;let a=O(i);if(!y(a,`Identifier`))return n;n=a}},Wde=e=>{let t=b(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(y(n,`ConditionalExpression`)||y(n,`IfStatement`)||y(n,`LogicalExpression`)||y(n,`SwitchStatement`)||y(n,`ForStatement`)||y(n,`ForInStatement`)||y(n,`ForOfStatement`)||y(n,`WhileStatement`)||y(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Jp=(e,n,r)=>{let i=b(e);if(!i||!t(i))return null;let a=v(i),o=a.parent;if(!y(o,`CallExpression`)||!o.arguments.some(e=>e===a))return null;let s=O(o.callee);if(!y(s,`MemberExpression`)||C(s)!==`forEach`||i.async||!Wde(o))return null;let c=O(s.object);if(!y(c,`Identifier`))return null;let l=Ude(c,r);if(!l)return null;let u=V({node:l,scopes:r.scopes});if(!u)return null;let d=new Set,f=e=>{let t=O(e);if(y(t,`Identifier`)){let e=r.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let n=i.params.findIndex(t=>r.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(n>=0)return`$${n}`;let a=Hs(e);return a&&!d.has(e.id)&&b(e.declarationNode)===i?(d.add(e.id),f(a)):V({node:t,scopes:r.scopes})}if(y(t,`Literal`))return JSON.stringify(t.value);if(y(t,`MemberExpression`)){let e=f(t.object),n=C(t);return e&&n?`${e}.${n}`:null}if(y(t,`CallExpression`)){let e=O(t.callee);if(!y(e,`MemberExpression`)||C(e)!==`getElementById`)return null;let n=O(e.object);if(!y(n,`Identifier`)||n.name!==`document`||!r.scopes.isGlobalReference(n))return null;let i=t.arguments.map(e=>y(e,`SpreadElement`)?null:f(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},p=f(n);if(!p)return null;d.clear();let m=[],h=e,g=e.parent??null;for(;g&&g!==i;){if(y(g,`IfStatement`)){let e=g.consequent===h?`truthy`:`falsy`,t=f(g.test);if(!t)return null;m.push(`${e}:${t}`)}else if(y(g,`ConditionalExpression`)||y(g,`LogicalExpression`)||y(g,`SwitchStatement`)||y(g,`ForStatement`)||y(g,`ForInStatement`)||y(g,`ForOfStatement`)||y(g,`WhileStatement`)||y(g,`DoWhileStatement`))return null;h=g,g=g.parent??null}return g===i?`${u}:${m.join(`&`)}:${p}`:null},Yp=(e,t,n)=>{let r=T(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=v(e),a=i.parent;if(!(y(a,`VariableDeclarator`)&&a.id===e)&&!(y(a,`VariableDeclarator`)&&a.init===i)&&!(y(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(y(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(y(a,`MemberExpression`)&&a.object===i){let e=C(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!y(r,`CallExpression`)||r.callee!==a)return;if(e===`observe`){t.didObserve=!0,t.didReleaseAll=!1,t.observationCalls.push(r);let e=r.arguments?.[0],i=e?Jp(r,e,n):null,a=e?V({node:e,scopes:n.scopes}):null;i?t.observedIterationTargetKeys.add(i):a?t.observedTargetKeys.add(a):t.didObserveUnknownTarget=!0;return}if(e===`disconnect`&&t.didObserve){t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear();return}if(e===`unobserve`&&t.didObserve){let e=r.arguments?.[0],i=e?Jp(r,e,n):null,a=e?V({node:e,scopes:n.scopes}):null;i&&t.observedIterationTargetKeys.has(i)?t.observedIterationTargetKeys.delete(i):a&&t.observedTargetKeys.has(a)&&t.observedTargetKeys.delete(a)}return}if(y(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=O(a.callee);if(y(e,`MemberExpression`)&&C(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Gde=(e,t,n)=>{let r=!1;return $a(e,e=>{y(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Kde=(e,n,r,i)=>{if(!r)return!1;let a=O(e);if(!y(a,`MemberExpression`)||C(a)!==`target`)return!1;let o=O(a.object);if(!y(o,`Identifier`))return!1;let s=i.symbolFor(o)?.bindingIdentifier;if(!s)return!1;let c=b(o);if(!c||c===n||!t(c))return!1;let l=v(c),u=l.parent;if(!y(u,`CallExpression`)||!u.arguments.some(e=>e===l))return!1;let d=O(u.callee);return y(d,`MemberExpression`)&&C(d)===`forEach`&&Gde(d.object,r,i)&&(c.params??[]).some(e=>i.symbolFor(e)?.bindingIdentifier===s)},qde=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?O(e.arguments[0]):null;if(!r||!y(r,`ArrowFunctionExpression`)&&!y(r,`FunctionExpression`))return n;let i=r,a=i.params?.[0],o=a?t.symbolFor(a)?.bindingIdentifier??null:null,s=i.params?.[1];if(!s||!y(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&$a(i,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(!y(r,`MemberExpression`))return;let a=O(r.object);if(!y(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=C(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Kde(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=V({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},Xp=(e,t)=>{let n=O(e),r=y(n,`Identifier`)?T(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},Zp=(e,t,n=new Set)=>{let r=O(e);if(n.has(r))return!1;if(n.add(r),y(r,`Identifier`)){let e=T(r,r.name)?.initializer;return e?Zp(e,t,n):!1}let i=y(r,`CallExpression`)?O(r.callee):null,a=y(i,`MemberExpression`)?O(i.object):null;if(!y(r,`CallExpression`)||!y(i,`MemberExpression`)||C(i)!==`bind`||!y(a,`MemberExpression`)||C(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&Xp(a.object,t)&&Xp(o,t))},Jde=(e,t)=>{let n=new Set;for(let r of e.bindingIdentifiers){let e=t.scopes.symbolFor(r);if(e)for(let t of e.references){let e=v(t.identifier),r=e.parent;if(!y(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=O(r.callee);y(i,`MemberExpression`)&&C(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!Ga(e,[r],t)))return null;let i=O(r.callee);if(!y(i,`MemberExpression`))return null;let a=O(i.object);if(!y(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?O(o.initializer):null;return!o||o.kind!==`const`||!y(s,`ArrayExpression`)||(s.elements?.length??0)!==0||b(o.declarationNode)!==b(e.construction)||!o.references.every(e=>{let t=v(e.identifier),n=t.parent,r=n?.parent;return!!(y(n,`MemberExpression`)&&n.object===t&&y(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(C(n)??``))})?null:V({node:a,scopes:t.scopes})},Yde=(e,n)=>{if(!t(e)||e.async||e.generator)return!1;let r=e.params?.[0];if(!r||!y(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r)?.bindingIdentifier;if(!i)return!1;let a=[];return $a(e,e=>{if(!y(e,`CallExpression`))return;let t=O(e.callee);if(!y(t,`MemberExpression`)||C(t)!==`disconnect`)return;let r=O(t.object);y(r,`Identifier`)&&n.scopes.symbolFor(r)?.bindingIdentifier===i&&a.push(e)}),Ka(e,a,n)},Xde=(e,n,r,i)=>{let a=e=>{if(!t(e)||e.async||e.generator)return!1;let n=[];return A(e.body,t=>{if(!y(t,`CallExpression`)||b(t)!==e)return;let a=O(t.callee);if(!y(a,`MemberExpression`)||C(a)!==`forEach`||V({node:a.object,scopes:i.scopes})!==r)return;let o=t.arguments?.[0];o&&Yde(o,i)&&n.push(t)}),Ka(e,n,i)};if(!t(e))return!1;if(!y(e.body,`BlockStatement`)){let t=pl(e.body,e,i.scopes);return t.length>0&&t.every(a)}let o=tn(e).filter(e=>{if(!e.argument)return!1;let t=pl(e.argument,e,i.scopes);return t.length>0&&t.every(a)});return n.every(e=>Ga(e,o,i))},Qp=x({id:`effect-observer-needs-disconnect`,title:`Observer created in an effect never disconnected`,severity:`error`,category:`Bugs`,recommendation:"Return a cleanup function that calls `observer.disconnect()` (or `observer.unobserve(node)`) so the observer stops firing callbacks against detached nodes after unmount instead of leaking on every mount.",create:e=>({CallExpression(n){if(!_l(n,e.scopes))return;let r=or(n);if(!t(r))return;let i=new Map;if($a(r,t=>{if(!y(t,`NewExpression`))return;let n=O(t.callee);if(!(y(n,`Identifier`)?s.has(n.name)&&!T(n,n.name):y(n,`MemberExpression`)&&y(O(n.object),`Identifier`)&&Bde.has(O(n.object).name)&&!T(n.object,O(n.object).name)&&s.has(C(n)??``)))return;let r=v(t),a=r.parent;if(!y(a,`VariableDeclarator`)||a.init!==r||!(y(a.id,`Identifier`)&&a.id.name))return;let o=qde(t,e.scopes);i.set(a.id,{construction:t,bindingIdentifier:a.id,bindingIdentifiers:new Set([a.id]),didObserve:!1,didObserveUnknownTarget:!1,didReleaseAll:!1,didReleaseAllViaCallbackParameter:o.didReleaseAll||o.didReleaseObservedEntries,callbackReleasedTargetKeys:o.releasedTargetKeys,didEscape:!1,observationCalls:[],observedIterationTargetKeys:new Set,observedTargetKeys:new Set})}),i.size===0)return;for(let t of[...i.values()]){let n=hl(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)i.set(e,t)}let a=new Set(i.values());$a(r,t=>{if(!y(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,r=n?i.get(n):void 0;r&&Yp(t,r,e)});for(let t of ml(r))$a(t,t=>{if(!y(t,`Identifier`))return;let n=T(t,t.name)?.bindingIdentifier,r=n?i.get(n):void 0;r&&Yp(t,r,e)});for(let n of a){for(let e of n.callbackReleasedTargetKeys)n.observedTargetKeys.delete(e);let r=n.construction.arguments?.[0];!r||!t(O(r))||$a(O(r),t=>{if(!y(t,`Identifier`))return;let r=T(t,t.name)?.bindingIdentifier;r&&i.get(r)===n&&Yp(t,n,e)})}let o=y(r.body,`BlockStatement`)?tn(r).flatMap(e=>e.argument?[e.argument]:[]):[r.body];for(let t of a){o.some(e=>Zp(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let n=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||n)continue;let i=Jde(t,e);i&&Xde(r,t.observationCalls,i,e)||e.report({node:t.construction,message:"This observer is created and started in the effect but never disconnected, so it keeps firing against detached nodes and leaks one observer per mount; return a cleanup that calls `disconnect()` or `unobserve()`."})}}})}),$p=`cancelAnimationFrame`,em=`collection-values:`,Zde=new Set([`min`,`max`]),tm=e=>y(e,`CallExpression`)&&rm(e,`requestAnimationFrame`),nm=new Set([`window`,`globalThis`,`self`]),rm=(e,t)=>{let n=O(e.callee);if(y(n,`Identifier`))return n.name===t&&!T(n,n.name);if(!y(n,`MemberExpression`)||C(n)!==t)return!1;let r=O(n.object);return y(r,`Identifier`)&&nm.has(r.name)&&!T(r,r.name)},im=e=>{if(!e)return null;let n=O(e);if(y(n,`ArrowFunctionExpression`)||y(n,`FunctionExpression`))return n;if(y(n,`Identifier`)){let e=T(n,n.name)?.initializer;if(t(e))return e}return null},am=(e,t,n)=>{let r=new Set,i=O(e);if(y(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of hl(e,n))r.add(t)}if((y(t,`FunctionExpression`)||y(t,`FunctionDeclaration`))&&t.id&&y(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of hl(e,n))r.add(t)}return r},om=(e,t,n)=>{let r=O(e);return y(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Qde=(e,t,n)=>{let r=!1;return $a(e,e=>{if(r)return!1;if(!tm(e))return;let i=e.arguments?.[0];if(i&&om(i,t,n))return r=!0,!1}),r},$de=(e,t)=>{let n=[];return $a(e,e=>{if(!tm(e))return;let r=e.arguments?.[0];if(!r)return;let i=im(r);i&&Qde(i,am(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},sm=e=>{let t=O(e);if(y(t,`Identifier`)){let e=T(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=sm(e.initializer);if(t&&t!==n)return t}return n}if(!y(t,`MemberExpression`))return null;let n=sm(t.object),r=C(t);return n&&r?`${n}.${r}`:null},efe=e=>{let t=v(e),n=t.parent;if(y(n,`AssignmentExpression`)&&n.right===t)return sm(n.left);if(y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`))return sm(n.id);if(y(n,`CallExpression`)&&y(n.callee,`MemberExpression`)){let e=C(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?sm(n.callee.object):null;if(i)return`${em}${i}`}return null},cm=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=am(n,e.scheduledFunction,t),i=[e.rafCall];return $a(e.scheduledFunction,e=>{if(!tm(e))return;let n=e.arguments?.[0];n&&om(n,r,t)&&i.push(e)}),i},tfe=e=>{let t=v(e),n=t.parent;return y(n,`AssignmentExpression`)&&n.right===t?n.left:y(n,`VariableDeclarator`)&&n.init===t&&y(n.id,`Identifier`)?n.id:null},lm=(e,n,r)=>{let i=[...r].filter(n=>{let r=n;for(;r&&r!==e;){if(t(r))return!1;r=r.parent}return r===e}).map(e=>e.range[0]),a=!1;return A(e,o=>{if(a||o!==e&&t(o))return!1;let s=y(o,`AssignmentExpression`)?o.left:y(o,`UpdateExpression`)?o.argument:null;if(s&&!r.has(s)&&sm(s)===n&&i.some(e=>e<s.range[0]))return a=!0,!1}),a},nfe=(e,t,n)=>{let r=cm(e,n),i=r.map(efe),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(em))return a;let o=new Set(r.flatMap(e=>{let t=tfe(e);return t?[t]:[]}));return lm(t,a,o)||lm(e.scheduledFunction,a,o)?null:a},rfe=(e,n,r)=>{let i=!1;return $a(e,e=>{if(i||!y(e,`CallExpression`))return;let a=O(e.callee);if(!y(a,`MemberExpression`)||C(a)!==`forEach`||sm(a.object)!==n)return;let o=e.arguments?.[0],s=o&&!y(o,`SpreadElement`)?im(o):null;if(!t(s))return;let c=s.params?.[0];y(c,`Identifier`)&&A(s,e=>{if(i||e!==s&&t(e))return!1;if(!y(e,`CallExpression`))return;let n=e.arguments?.[0];if(um(e)&&y(n,`Identifier`)&&r.symbolFor(n)?.bindingIdentifier===r.symbolFor(c)?.bindingIdentifier)return i=!0,!1})}),i},ife=(e,t,n)=>{if(t.startsWith(em))return rfe(e,t.slice(18),n);let r=!1;return $a(e,e=>{if(r||!y(e,`CallExpression`)||!um(e))return;let n=e.arguments?.[0];n&&sm(n)===t&&(r=!0)}),r},um=e=>{if(rm(e,$p))return!0;let t=O(e.callee);if(!y(t,`Identifier`))return!1;let n=T(t,t.name)?.bindingIdentifier?.parent;if(!y(n,`Property`)||(y(n.key,`Identifier`)?n.key.name:y(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==$p)return!1;let r=n.parent,i=r?.parent;if(!y(r,`ObjectPattern`)||!y(i,`VariableDeclarator`))return!1;let a=i.init?O(i.init):null;return y(a,`Identifier`)&&nm.has(a.name)&&!T(a,a.name)},afe=(e,t)=>{$a(e,e=>{let n=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(y(n,`Identifier`)){let e=sm(n);e&&t.add(e)}else if(y(n,`MemberExpression`)){let e=sm(n);e&&t.add(e)}})},ofe=(e,t,n)=>{if(y(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!y(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return hm(e.right);if(e.operator!==`=`)return!1;let r=O(e.right),i=y(r,`BinaryExpression`)?O(r.left):null;return y(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&y(i,`Identifier`)&&sm(i)===t&&hm(r.right)},dm=(e,t)=>{let n=new Set,r=new Set;$a(e,e=>{let i=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(!y(i,`Identifier`))return;let a=sm(i);a&&(ofe(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},sfe=(e,t)=>{let n=y(e,`AssignmentExpression`)?e.left:y(e,`UpdateExpression`)?e.argument:null;if(!y(n,`Identifier`)&&!y(n,`MemberExpression`))return;let r=sm(n);if(!r)return;if(y(e,`UpdateExpression`)||y(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!y(e,`AssignmentExpression`))return;let i=O(e.right);if(!y(i,`Literal`)||typeof i.value!=`boolean`){t.booleanValues.delete(r),t.changedFromSnapshotKeys.delete(r);return}t.changedFromSnapshotKeys.delete(r),t.booleanValues.set(r,i.value)},cfe=e=>y(e,`IfStatement`)||y(e,`ConditionalExpression`)||y(e,`LogicalExpression`)||y(e,`SwitchStatement`)||y(e,`TryStatement`)||y(e,`ForStatement`)||y(e,`ForInStatement`)||y(e,`ForOfStatement`)||y(e,`WhileStatement`)||y(e,`DoWhileStatement`),lfe=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(cfe(n))return!1;n=n.parent}return n===t||e===t},ufe=(e,n)=>{let r={booleanValues:new Map,changedFromSnapshotKeys:new Set},i=new Set,a=e=>{i.has(e)||(i.add(e),$a(e,i=>{if(!lfe(i,e)||(sfe(i,r),!y(i,`CallExpression`)))return;let o=i.callee;if(y(o,`Identifier`)){let e=sm(o);A(n,n=>{y(n,`VariableDeclarator`)&&y(n.id,`Identifier`)&&sm(n.id)===e&&n.init&&t(n.init)&&a(n.init)});return}if(y(o,`MemberExpression`)){let e=sm(o);if(!e)return;if(C(o)===`abort`){let e=sm(o.object);e&&r.booleanValues.set(`${e}.signal.aborted`,!0)}A(n,n=>{y(n,`AssignmentExpression`)&&y(n.left,`MemberExpression`)&&sm(n.left)===e&&n.right&&t(n.right)&&a(n.right)})}}))};return a(e),r},fm=(e,t)=>{let n=O(e);if(y(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(y(n,`Identifier`)||y(n,`MemberExpression`)){let e=sm(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(y(n,`UnaryExpression`)&&n.operator===`!`){let e=fm(n.argument,t);return e===null?null:!e}if(y(n,`LogicalExpression`)){let e=fm(n.left,t);if(n.operator===`??`)return e;let r=fm(n.right,t);return n.operator===`&&`?e===!1||r===!1?!1:e===!0?r:null:e===!0||r===!0?!0:e===!1?r:null}if(!y(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=fm(n.left,t),o=fm(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=sm(n.left),c=sm(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},pm=e=>y(e,`ReturnStatement`)||y(e,`ThrowStatement`)?!0:y(e,`BlockStatement`)&&!!e.body?.some(e=>pm(e))||y(e,`IfStatement`)&&!!e.alternate&&pm(e.consequent)&&pm(e.alternate),mm=(e,t,n)=>{let r=fm(e,n);return r!==null&&r!==t},dfe=(e,t,n)=>{let r=fm(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},ffe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((y(e,`IfStatement`)||y(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&mm(e.test,e.consequent===r,n)||y(e,`LogicalExpression`)&&e.right===r&&dfe(e.left,e.operator,n))return!0;if(y(e,`BlockStatement`)){let t=e.body.findIndex(e=>e===r);if(t>=0)for(let r of e.body.slice(0,t)){let e=r;if(y(e,`IfStatement`)&&(pm(e.consequent)&&mm(e.test,!1,n)||e.alternate&&pm(e.alternate)&&mm(e.test,!0,n)))return!0}}r=e}return!1},pfe=(e,t,n)=>{let r=cm(e,n).slice(1);return r.length>0&&r.every(n=>ffe(n,e.scheduledFunction,t))},hm=e=>y(e,`Literal`)&&typeof e.value==`number`&&e.value>0,mfe=(e,t)=>{let n=O(e);return y(n,`Literal`)&&typeof n.value==`number`||y(n,`Identifier`)&&!t.has(sm(n)??``)},gm=(e,t,n)=>{let r=O(e);if(y(r,`Identifier`)){let e=sm(r);return e?t.has(e):!1}if(y(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return gm(r.left,t,n)&&mfe(r.right,n);if(r.operator===`*`||r.operator===`/`)return gm(r.left,t,n)&&hm(r.right)}if(!y(r,`CallExpression`))return!1;let i=O(r.callee),a=y(i,`MemberExpression`)?O(i.object):null;if(!y(i,`MemberExpression`)||!y(a,`Identifier`)||a.name!==`Math`||T(a,a.name)||!Zde.has(C(i)??``))return!1;let o=!1;for(let e of r.arguments){if(gm(e,t,n)){o=!0;continue}if(!y(e,`Literal`)||typeof e.value!=`number`)return!1}return o},_m=(e,t,n,r,i)=>{let a=O(e);if(y(a,`UnaryExpression`)&&a.operator===`!`)return _m(a.argument,t,n,r,!i);if(y(a,`LogicalExpression`)&&a.operator!==`??`)return _m(a.left,t,n,r,i)&&_m(a.right,t,n,r,i);if(!y(a,`BinaryExpression`))return!1;let o=gm(a.left,t,r)&&y(a.right,`Literal`)&&typeof a.right.value==`number`,s=y(a.left,`Literal`)&&typeof a.left.value==`number`&&gm(a.right,t,r),c=(a.operator===`<`||a.operator===`<=`)&&o||(a.operator===`>`||a.operator===`>=`)&&s,l=(a.operator===`>`||a.operator===`>=`)&&o||(a.operator===`<`||a.operator===`<=`)&&s;if(i?c:l)return!0;let u=gm(a.left,n,r)&&y(a.right,`Literal`)&&typeof a.right.value==`number`,d=y(a.left,`Literal`)&&typeof a.left.value==`number`&&gm(a.right,n,r),f=(a.operator===`>`||a.operator===`>=`)&&u||(a.operator===`<`||a.operator===`<=`)&&d,p=(a.operator===`<`||a.operator===`<=`)&&u||(a.operator===`>`||a.operator===`>=`)&&d;return i?f:p},hfe=(e,n)=>{let r=e.scheduledFunction,i=new Set;afe(r,i);let a=dm(r,!0),o=dm(r,!1);if(t(r)){for(let e of r.params??[])if(y(e,`Identifier`)){let t=sm(e);t&&!i.has(t)&&a.add(t)}}let s=!0;for(;s;)s=!1,$a(r,e=>{if(!y(e,`VariableDeclarator`)||!e.init)return;let t=y(e.id,`Identifier`)?sm(e.id):null;!t||a.has(t)||o.has(t)||i.has(t)||(gm(e.init,a,i)?(a.add(t),s=!0):gm(e.init,o,i)&&(o.add(t),s=!0))});if(a.size===0&&o.size===0)return!1;let c=cm(e,n).slice(1);if(c.length===0)return!1;for(let e of c){let t=!1,n=e,s=e.parent;for(;s&&s!==r;){if((y(s,`IfStatement`)||y(s,`ConditionalExpression`))&&(s.consequent===n||s.alternate===n)&&_m(s.test,a,o,i,s.consequent===n)){t=!0;break}n=s,s=s.parent??null}if(!t)return!1}return!0},vm=x({id:`effect-raf-loop-needs-cancel`,title:`requestAnimationFrame loop never cancelled`,severity:`warn`,category:`Bugs`,recommendation:"Store the frame id and return a cleanup that calls `cancelAnimationFrame(id)` so self-scheduling work cannot continue after unmount.",create:e=>({CallExpression(t){if(!_l(t,e.scopes))return;let n=or(t);if(!n)return;let r=ml(n);for(let t of $de(n,e.scopes)){if(hfe(t,e.scopes))continue;let i=nfe(t,n,e.scopes);i&&r.some(t=>ife(t,i,e.scopes))||r.some(r=>pfe(t,ufe(r,n),e.scopes))||e.report({node:t.rafCall,message:`This requestAnimationFrame loop can schedule another frame but is never cancelled, so pending work may continue after unmount; store every frame id in one handle and cancel that handle from the returned effect cleanup.`})}}})}),gfe=new Set([`removeEventListener`,`removeListener`,`off`]),_fe=/(?:duration|delay|timeout|ms)$/i,vfe=e=>{let t=O(e);if(y(t,`Literal`)&&typeof t.value==`number`)return!0;if(!y(t,`Identifier`))return!1;if(_fe.test(t.name))return!0;let n=T(t,t.name);if(!n?.initializer)return!1;let r=O(n.initializer);return y(r,`Literal`)&&typeof r.value==`number`},yfe=e=>{let t=O(e);return aa(t)?!0:y(t,`CallExpression`)&&y(t.callee,`MemberExpression`)&&C(t.callee)===`bind`},bfe=new Set([`addEventListener`,`addListener`,`on`,`once`]),ym=`handler-only`,xfe=(e,t)=>{let n=new Set;return A(e,e=>{if(!y(e,`CallExpression`))return;let r=O(e.callee);if(!y(r,`MemberExpression`))return;let i=C(r);if(!i||!bfe.has(i))return;let a=V({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?ym:Gu(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},bm=x({id:`effect-remove-listener-inline-handler`,title:`removeEventListener called with a fresh inline handler`,severity:`error`,category:`Bugs`,tags:[`test-noise`],recommendation:"Removal APIs match the listener by reference equality, so a fresh inline arrow, function expression, or `.bind(...)` result can never equal the registered handler; hoist the handler into a named const and pass that same reference to both the add and remove calls.",create:e=>{let t=new WeakMap;return{CallExpression(n){let r=O(n.callee);if(!y(r,`MemberExpression`))return;let i=C(r);if(!i||!gfe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&vfe(a[0])||!yfe(s))return;let c=V({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?ym:Gu(a[0],e.scopes),u=d(n);if(!c||!l||!u)return;let f=t.get(u);f||(f=xfe(u,e.scopes),t.set(u,f)),f.has(JSON.stringify([c,l]))&&e.report({node:s,message:`\`${i}\` gets a brand-new function reference here that never equals the registered listener, so this removal silently no-ops; pass the same named handler to both the add and remove calls.`})}}}}),Sfe=new Set([`columnheader`,`rowheader`]),Cfe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=L(e.attributes,t,!1);if(!n)continue;let r=I(n);if(r===null||r.trim().length>0)return!0}return!1},xm=x({id:`empty-table-header`,title:`Table header has no accessible text`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Give every table header concise text or an explicit accessible name.`,create:e=>({JSXElement(t){let n=t.openingElement,r=j(n);if(/^[A-Z]/.test(r))return;let i=L(n.attributes,`role`,!1),a=i?I(i)?.toLowerCase():null;r!==`th`&&(!a||!Sfe.has(a))||Qr(t,e.settings)||Cfe(n)||e.report({node:n,message:`This table header has no accessible text, so users cannot tell what its cells represent. Add header text or an accessible name.`})}})}),wfe=(e,n)=>{let r=n.ownScopeFor(e)??n.scopeFor(e),i=[],a=new Set;return A(e,o=>{if(o!==e&&t(o)){let e=Cm(o,n);for(let t of e)t.resolvedSymbol&&!pt(t.resolvedSymbol.scope,r)&&(a.has(t.id)||(i.push(t),a.add(t.id)));return!1}let s=n.referenceFor(o);s&&s.resolvedSymbol&&(pt(s.resolvedSymbol.scope,r)||a.has(s.id)||(i.push(s),a.add(s.id)))}),i},Sm=new WeakMap,Cm=(e,t)=>{let n=Sm.get(t);n||(n=new WeakMap,Sm.set(t,n));let r=n.get(e);if(r)return r;let i=wfe(e,t);return n.set(e,i),i};let wm=0;const Tm=e=>{let t={id:wm++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Em=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Dm=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Om=(e,n,r)=>{if(e.nodeBlock.set(n,r),t(n)){e.nestedFunctions.push(n);return}let i=n,a=_t[n.type]??Object.keys(i);for(let t of a){if(t===`parent`)continue;let n=i[t];if(Array.isArray(n))for(let t of n)E(t)&&Om(e,t,r);else E(n)&&Om(e,n,r)}},Tfe=e=>{switch(e.type){case`IfStatement`:case`WhileStatement`:case`DoWhileStatement`:case`ForStatement`:case`ForInStatement`:case`ForOfStatement`:case`SwitchStatement`:case`TryStatement`:case`ReturnStatement`:case`ThrowStatement`:case`BreakStatement`:case`ContinueStatement`:case`BlockStatement`:case`LabeledStatement`:return!0;default:return!1}},km=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=km(e.argument);return t===null?null:!t}return null},Am=e=>e===null||km(e)===!0,jm=(e,t)=>{if(t===null){if(e.loopStack.length>0){let t=e.loopStack[e.loopStack.length-1];return{merge:t.merge,header:t.header}}return e.switchStack.length>0?{merge:e.switchStack[e.switchStack.length-1].merge,header:null}:null}for(let n=e.labelStack.length-1;n>=0;n--){let r=e.labelStack[n];if(r.label===t)return{merge:r.merge,header:r.header}}return null},Mm=(e,t,n)=>{let r=n;for(let n of t)r=Nm(e,n,r);return r},Nm=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Tfe(t))return Dm(e,n,t),Om(e,t,n),n;if(t.type===`BlockStatement`)return Mm(e,t.body,n);if(t.type===`LabeledStatement`){let r=Tm(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Nm(e,a,n);return e.labelStack.pop(),Em(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Om(e,t.argument,n),Em(n,e.exit,`uncond`),Tm(e);if(t.type===`ThrowStatement`){t.argument&&Om(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Em(n,r.catch,`uncond`):r?.finally?Em(n,r.finally,`uncond`):Em(n,e.exit,`throw`),Tm(e)}if(t.type===`BreakStatement`){let r=jm(e,t.label?t.label.name:null);return r?Em(n,r.merge,`uncond`):Em(n,e.exit,`uncond`),Tm(e)}if(t.type===`ContinueStatement`){let r=jm(e,t.label?t.label.name:null);return r?.header&&Em(n,r.header,`uncond`),Tm(e)}if(t.type===`IfStatement`){Om(e,t.test,n);let r=Tm(e),i=Tm(e);if(Em(n,r,`cond`),Em(Nm(e,t.consequent,r),i,`uncond`),t.alternate){let r=Tm(e);Em(n,r,`cond`),Em(Nm(e,t.alternate,r),i,`uncond`)}else Em(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Am(t.test);Om(e,t.test,n);let a=Tm(e),o=Tm(e),s=Tm(e);r?Em(n,o,`uncond`):(Em(n,a,`uncond`),Em(a,o,i?`uncond`:`cond`),i||Em(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Nm(e,t.body,o);return e.loopStack.pop(),r?(Em(c,a,`uncond`),Em(a,o,i?`uncond`:`cond`),i||Em(a,s,`cond`)):Em(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Om(e,t.init,n),t.test&&Om(e,t.test,n);let r=Tm(e),i=Tm(e),a=Tm(e),o=Am(t.test??null);Em(n,r,`uncond`),Em(r,i,o?`uncond`:`cond`),o||Em(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Nm(e,t.body,i);return e.loopStack.pop(),t.update&&Om(e,t.update,r),Em(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Om(e,t.right,n),Om(e,t.left,n);let r=Tm(e),i=Tm(e),a=Tm(e);Em(n,r,`uncond`),Em(r,i,`cond`),Em(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Nm(e,t.body,i);return e.loopStack.pop(),Em(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Om(e,t.discriminant,n);let r=Tm(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Tm(e);Em(n,t,`cond`),i&&Em(i,t,`uncond`),i=Mm(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Em(i,r,`uncond`),a||Em(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Tm(e),i=Tm(e),a=null,o=null;t.handler&&(a=Tm(e)),t.finalizer&&(o=Tm(e)),Em(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Mm(e,t.block.body,r);if(e.tryStack.pop(),a&&Em(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Nm(e,n,a);o?Em(r,o,`uncond`):Em(r,i,`uncond`)}return o&&t.finalizer?(Em(s,o,`uncond`),Em(Mm(e,t.finalizer.body,o),i,`uncond`)):Em(s,i,`uncond`),i}return Dm(e,n,t),Om(e,t,n),n},Efe=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Tm(r),a=Tm(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Mm(r,t.body,i):(Om(r,t,i),o=i),Em(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Dfe=e=>{let t=t=>{let n=new Set,r=[];e.entry!==t&&r.push(e.entry);let i=0;for(;i<r.length;){let e=r[i];if(i+=1,!n.has(e)){n.add(e);for(let n of e.successors)n.kind!==`throw`&&n.to!==t&&r.push(n.to)}}return n},n=t(null),r=new Set;r.add(e.entry),r.add(e.exit);for(let i of e.blocks)if(!r.has(i)){if(!n.has(i)){r.add(i);continue}t(i).has(e.exit)||r.add(i)}return r},Ofe=e=>{wm=0;let n=new Map,r=[],i=(e,t)=>{let i=Efe(e,t,r);n.set(e,{cfg:i,unconditionalSet:Dfe(i)})};e.type===`Program`&&i(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<r.length;e+=1){let a=r[e];!t(a)||!a.body||n.has(a)||i(a,a.body)}let a=e=>n.get(e)||(!t(e)||!e.body?null:(i(e,e.body),n.get(e)??null)),o=e=>{let n=e;for(;n;){if(t(n)||n.type===`Program`)return n;n=n.parent??null}return null};return{cfgFor:e=>a(e)?.cfg??null,enclosingFunction:o,isUnconditionalFromEntry:e=>{let t=o(e);if(!t)return!0;let n=a(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},kfe=e=>{let t=O(e);return y(t,`ObjectExpression`)?`object`:y(t,`ArrayExpression`)?`array`:y(t,`ArrowFunctionExpression`)||y(t,`FunctionExpression`)?`function`:y(t,`JSXElement`)||y(t,`JSXFragment`)?`JSX`:y(t,`NewExpression`)?`instance`:null},Pm=(e,t,n=new Set)=>{let r=kfe(e);if(r)return{bindingName:null,kind:r};let i=O(e);if(!y(i,`Identifier`))return null;let a=t.symbolFor(i);if(!a||a.scope.kind===`module`||a.kind!==`const`||!a.initializer||n.has(a.id)||a.references.some(e=>e.flag!==`read`)||!y(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=Pm(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},Afe=new Set([...Ut,`useImperativeHandle`,`useInsertionEffect`]),jfe=new WeakMap,Mfe=new WeakMap,Nfe=new WeakMap,Pfe=e=>{let t=jfe.get(e.programNode);if(t)return t;let n=ht(e.programNode);return jfe.set(e.programNode,n),n},Ffe=e=>{let t=Mfe.get(e.programNode);if(t)return t;let n=Ofe(e.programNode);return Mfe.set(e.programNode,n),n},Ife=(e,t)=>{let n=t.enclosingFunction(e);if(!n)return!0;let r=t.cfgFor(n);if(!r)return!0;let i=r.blockOf(e);if(!i)return!0;let a=new Set([r.entry]),o=[r.entry];for(;o.length>0;){let e=o.pop();if(!e)break;if(e===i)return!0;for(let t of e.successors)a.has(t.to)||(a.add(t.to),o.push(t.to))}return!1},Lfe=(e,t)=>{let n=mc(e)??t??``;return n!==`use`&&dc(n)},Rfe=(e,t)=>{if(!y(e,`Identifier`))return null;let n=w(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!y(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=Yt(n.initializer);return a?{exportedName:a,source:i}:null},zfe=(e,t,n)=>{if(!n)return null;let r=Rfe(e,t);if(!r)return null;let i=y(e,`Identifier`)?e.name:``;if(r.source===`react`||!dc(i)&&!dc(r.exportedName))return null;let a=pn(n,r.source,r.exportedName);return!a||!Lfe(a.functionNode,r.exportedName)?null:{cfg:Ffe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Pfe(a)}},Fm=(e,t,n,r=new Set)=>{let i=O(e);if(y(i,`Identifier`)){let e=w(i,t);if(!e||r.has(e.id))return null;if(Me(e)){let t=Lt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Im(e)?null:(r.add(e.id),Fm(e.initializer,t,n,r))}if(y(i,`MemberExpression`)){let e=C(i);if(!e||!n.has(e))return null;let r=O(i.object);return!y(r,`Identifier`)||!Oe(r,t)?null:e===`useImperativeHandle`?2:1}if(!y(i,`ConditionalExpression`))return null;let a=Fm(i.consequent,t,n,new Set(r)),o=Fm(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Bfe=(e,t,n,r)=>{if(!n)return null;let i=Rfe(O(e.callee),t);if(!i)return null;let a=Sn(n,i.source,i.exportedName);return a?Fm(a.exportedNode,Pfe(a),r):null},Vfe=(e,t,n,r)=>{let i=O(e.callee),a=M(i,t);if(a&&Lfe(a)){let e=d(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return zfe(i,t,r)},Hfe=e=>{if(!t(e))return[];let n=[];for(let[t,r]of(e.params??[]).entries()){let e=O(r);if(y(e,`Identifier`)){n.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:t,propertyName:null});continue}if(y(e,`AssignmentPattern`)&&y(e.left,`Identifier`)){n.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:t,propertyName:null});continue}if(y(e,`ObjectPattern`))for(let r of e.properties??[]){if(!y(r,`Property`))continue;let e=S(r,{allowComputedString:!0});if(!e)continue;let i=O(r.value);y(i,`Identifier`)?n.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:t,propertyName:e}):y(i,`AssignmentPattern`)&&y(i.left,`Identifier`)&&n.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:t,propertyName:e})}}return n},Ufe=(e,t,n=new Set)=>{let r=O(e);if(y(r,`ObjectExpression`))return r;if(!y(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Im(i)?null:(n.add(i.id),Ufe(i.initializer,t,n))},Wfe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(y(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(y(r,`Property`)&&S(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Gfe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>y(e,`SpreadElement`)))return{expression:null,isProvenOmitted:!1};let r=e.arguments?.[t.parameterIndex];if(!r)return{expression:null,isProvenOmitted:!0};if(t.propertyName===null)return{expression:r,isProvenOmitted:!1};let i=Ufe(r,n);return i?Wfe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Im=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&y(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(y(n,`AssignmentExpression`)&&n.left===e||y(n,`UpdateExpression`)&&n.argument===e||y(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(y(n,`CallExpression`)&&n.callee===e&&y(e,`MemberExpression`)){let t=C(e);if(t&&(Ir.has(t)||Lr.has(t)))return!0}}return!1},Lm=(e,t,n,r,i=new Set)=>{let a=O(e);if(!y(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Im(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!y(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),Lm(o.initializer,t,n,r,i))},Rm=(e,t,n,r=new Set)=>{if(Lm(e,`list`,t,n))return!0;let i=O(e);if(y(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Im(e)?!1:(r.add(e.id),Rm(e.initializer,t,n,r))}return y(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?y(e,`SpreadElement`)?Lm(e.argument,`list`,t,n):Lm(e,`value`,t,n):!1):!1},Kfe=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Hfe(t.functionNode)){let o=Gfe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Im(s)||(Lm(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(Lm(o.expression,`list`,n,r)||Rm(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},qfe=(e,n,r,i,a)=>{if(!t(e.functionNode))return!1;let o=e.functionNode;if(r<0||i.has(o)||[...n.valueSymbolIds,...n.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?Im(n):!1}))return!1;let s=new Set(i);s.add(o);let c=!1;return A(o.body,i=>{if(c||i!==o.body&&t(i))return!1;if(!y(i,`CallExpression`)||!Ife(i,e.cfg))return;if(k(i,a,e.scopes,{allowGlobalReactNamespace:!0})){let t=O(i.callee),r=(y(t,`Identifier`)?t.name:y(t,`MemberExpression`)?C(t):null)===`useImperativeHandle`?2:1,a=i.arguments?.[r];return a&&!y(a,`SpreadElement`)&&Rm(a,e.scopes,n)?(c=!0,!1):void 0}let l=Bfe(i,e.scopes,e.filePath,a);if(l!==null){let t=i.arguments?.[l];return t&&!y(t,`SpreadElement`)&&Rm(t,e.scopes,n)?(c=!0,!1):void 0}if(r===0)return;let u=Vfe(i,e.scopes,e.cfg,e.filePath);if(!u)return;let d=Kfe(i,u,e.scopes,n);if(!(d.valueSymbolIds.size===0&&d.listSymbolIds.size===0)&&qfe(u,d,r-1,s,a))return c=!0,!1}),c},Jfe=(e,t,n=Afe)=>{let r=Nfe.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Nfe.set(e,new Map([[n,a]]));let o=Vfe(e,t.scopes,t.cfg,t.filename);if(!o||!X(e,t.scopes)||!Ife(e,t.cfg))return a;for(let r of Hfe(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Im(i))continue;let s=Gfe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=Pm(c,s.expression?t.scopes:o.scopes);l&&qfe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(y(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},Yfe=new WeakMap,Xfe=e=>{let t=new Map;if(!y(e,`Program`))return t;for(let n of e.body){let e=y(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!y(e,`TSInterfaceDeclaration`)&&!y(e,`TSTypeAliasDeclaration`)||!y(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},zm=(e,t)=>{let n=d(e);if(!n)return[];let r=Yfe.get(n);return r||(r=Xfe(n),Yfe.set(n,r)),r.get(t)??[]},Zfe=e=>y(e,`Identifier`)?e.name:y(e,`MemberExpression`)&&!e.computed&&y(e.object,`Identifier`)&&e.object.name===`React`&&y(e.property,`Identifier`)?`React.${e.property.name}`:null,Bm=e=>{let t=e.parent;if(!t||!y(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=Zfe(t.callee);return n!==null&&Ot.has(n)},Qfe=new Set([`function`,`arrow-function`,`method`]),Vm=e=>{let t=e.scope;for(;t;){if(Qfe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},$fe=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),Q=e=>{let t=e;for(;$fe.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Hm=(e,t)=>{let n=Q(e);if(y(n,`Identifier`)){let e=t?w(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&y(r,`ImportDeclaration`)&&r.source.value===`react`?Lt(e.declarationNode)??n.name:n.name}return y(n,`MemberExpression`)&&!n.computed&&y(n.property,`Identifier`)?n.property.name:null},Um=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,epe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,tpe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,npe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,rpe=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ipe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ape=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Wm=e=>`\`${e}\` re-runs on every render with no dependency array.`,ope=e=>`\`${e}\` crashes without a function as its first argument.`,spe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",cpe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Gm=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,lpe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,upe=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,dpe=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,fpe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,ppe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,mpe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,hpe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,gpe=e=>{let t=e?.[`react-doctor`],n=e?.[`react-hooks`],r=typeof t==`object`&&t?t.exhaustiveDeps??{}:{},i=typeof n==`object`&&n?n:{};return{additionalHooks:r.additionalHooks??r.additionalEffectHooks??i.additionalHooks??i.additionalEffectHooks??``,additionalEffectHooks:r.additionalEffectHooks??i.additionalEffectHooks??``,enableDangerousAutofixThisMayCauseInfiniteLoops:r.enableDangerousAutofixThisMayCauseInfiniteLoops??!1,experimental_autoDependenciesHooks:r.experimental_autoDependenciesHooks??i.experimental_autoDependenciesHooks??[],requireExplicitEffectDeps:r.requireExplicitEffectDeps??i.requireExplicitEffectDeps??!1}},_pe=new Set([`===`,`!==`]),vpe=(e,t)=>{let n=e.declarationNode;if(!y(n,`VariableDeclarator`)||!y(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!y(i,`Identifier`))return null;let a=n.init?O(n.init):null;return!a||!k(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},ype=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=v(n.identifier),i=r.parent;if(!y(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||b(i)!==t)return null;let a=O(i.arguments[0]);return y(a,`ArrowFunctionExpression`)||y(a,`FunctionExpression`)||y(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},bpe=(e,t)=>{if(!y(e,`CallExpression`))return!1;let n=O(e.callee);if(!y(n,`MemberExpression`))return!1;let r=C(n),i=O(n.object);return!!(r===`is`&&y(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},xpe=(e,t)=>{let n=O(e);return y(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},Spe=(e,t,n)=>{let r=O(e);if(y(t,`BinaryExpression`)&&_pe.has(t.operator))return O(t.left)===r?xpe(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:O(t.right)===r?xpe(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!y(t,`CallExpression`)||!bpe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return y(i,`SpreadElement`)||y(a,`SpreadElement`)?null:O(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:O(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Cpe=(e,t,n)=>{let r=e.parent;for(;r&&R(r,t);){let i=Spe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},wpe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!R(e,t))return!1;if(y(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(y(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!Vt.has(e.type))return!1;a=e}return i===r},Tpe=(e,t)=>{let n=new Set,r=O(e);for(;y(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Ci(e);if(!i||!y(O(i),`Identifier`))break;n.add(e.id),r=O(i)}return r},Epe=(e,t,n)=>{let r=Tpe(e,n),i=Tpe(t,n);if(r===i)return!0;if(y(r,`Identifier`)&&y(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return y(r,`Literal`)&&y(i,`Literal`)?Object.is(r.value,i.value):!1},Dpe=e=>{let t=v(e).parent;if(!y(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(y(n,`ArrayExpression`)&&n.elements.length)},Ope=e=>{if(y(e,`ReturnStatement`)||y(e,`ThrowStatement`))return!0;if(!y(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&Ope(t))},kpe=(e,t)=>{if(!y(e,`IfStatement`)||e.alternate||!Ope(e.consequent))return!1;let n=e.parent;if(!y(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&R(t,e))},Ape=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(y(i,`IfStatement`)&&R(e,i.test)&&(R(t,i.consequent)||i.alternate&&R(t,i.alternate)||kpe(i,t))){let n=R(t,i.consequent);if(n===(!!(i.alternate&&R(t,i.alternate))||kpe(i,t)))return null;let a=Cpe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return wpe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},jpe=(e,t,n)=>{if(!Dpe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=vpe(e,n);if(!r)return!1;let i=ype(r,t);if(!i)return!1;let a=e.references.filter(e=>R(e.identifier,t));if(a.length!==1)return!1;let o=v(a[0].identifier);if(y(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=Ape(a[0].identifier,i.callExpression,t,n);return!!(s&&Epe(s,i.writtenValue,n))},Mpe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Npe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Ppe=(e,t)=>{let n=new Set,r=e.split(`
|
|
2
2
|
`);for(let e=0;e<r.length;e++){let i=r[e];if(!i.includes(`-disable`))continue;let a=Mpe.exec(i);if(a&&t.test(a[1]??``)){n.add(e+2);continue}let o=Npe.exec(i);o&&t.test(o[1]??``)&&n.add(e+1)}return n},Fpe=e=>{let t=[],n=[],r=0,i=0;for(let a=0;a<e.length;a++)e[a]===`
|
|
3
3
|
`&&(t.push(a),r+=Buffer.byteLength(e.slice(i,a+1),`utf8`),n.push(r-1),i=a+1);return{utf16:t,utf8:n}},Ipe=(e,t)=>{let n=Ppe(e,t);if(n.size===0)return null;let r=Fpe(e);return{suppressedLines:n,utf16NewlineOffsets:r.utf16,utf8NewlineOffsets:r.utf8}},Lpe=(e,t)=>{let n=0,r=t.length-1,i=0;for(;n<=r;){let a=Math.floor((n+r)/2);t[a]<e?(i=a+1,n=a+1):r=a-1}return i+1},Rpe=e=>{let t=RegExp(`(?:^|[\\s,/])${e}(?:$|[\\s,:])`),n=new Map,r=e=>{if(!e)return null;let r=n.get(e);if(r!==void 0)return r;let i=null;try{i=Ipe(Qn(e,`utf8`),t)}catch{i=null}return n.set(e,i),i};return{clearCache:()=>n.clear(),isSuppressedAt:(e,t)=>{if(t===null)return!1;let n=r(e);return n?n.suppressedLines.has(Lpe(t,n.utf16NewlineOffsets))||n.suppressedLines.has(Lpe(t,n.utf8NewlineOffsets)):!1}}},zpe=Rpe(`exhaustive-deps`),Bpe=zpe.isSuppressedAt;zpe.clearCache;const Vpe=new Set([`useEventCallback`,`useStableCallback`,`useMemoizedFn`,`usePersistFn`,`useLatestCallback`,`useCallbackRef`,`useEvent`]),Km=(e,t)=>{if(e.references.some(e=>e.flag!==`read`))return!1;let n=e.declarationNode;for(;n&&n.type!==`VariableDeclarator`;)n=n.parent??null;if(!n||!y(n,`VariableDeclarator`))return!1;let r=n.init;if(!r)return!1;let i=Q(r);if(e.kind===`const`&&(y(i,`Literal`)&&(i.value===null||typeof i.value==`number`||typeof i.value==`string`||typeof i.value==`boolean`)||y(i,`TemplateLiteral`)&&In(i)!==null))return!0;if(!y(i,`CallExpression`))return!1;let a=Hm(i.callee,t);if(!a)return!1;if(a===`useRef`||a===`useEffectEvent`||Vpe.has(a))return!0;if(a===`useState`||a===`useReducer`||a===`useActionState`||a===`useTransition`){if(!y(n.id,`ArrayPattern`))return!1;let t=n.id.elements[1];if(!t)return!1;let r=y(t,`AssignmentPattern`)?t.left:t;return y(r,`Identifier`)&&e.bindingIdentifier===r}return!1},qm=e=>{if(e.kind===`function`&&y(e.declarationNode,`FunctionDeclaration`))return e.declarationNode;let t=e.initializer?Q(e.initializer):null;return t&&(y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`))?t:null},Jm=(e,t)=>{let n=e.initializer;return!!(n&&R(t,n))},Hpe=new Set([`useCallback`,`useMemo`]),Upe=(e,t,n)=>{if(n.has(e.id))return!0;if(e.references.some(e=>e.flag!==`read`))return!1;let r=e.declarationNode;for(;r&&r.type!==`VariableDeclarator`;)r=r.parent??null;if(!r||!y(r,`VariableDeclarator`)||r.id!==e.bindingIdentifier||!r.init)return!1;let i=Q(r.init);if(!y(i,`CallExpression`))return!1;let a=Hm(i.callee,t);if(!a||!Hpe.has(a))return!1;let o=i.arguments[1];if(!o||!E(o))return!1;let s=Q(o);if(!y(s,`ArrayExpression`))return!1;n.add(e.id);let c=e=>{let r=Q(e);if(y(r,`Literal`))return!0;if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?Vm(i)?!0:Ym(i,t,n):!1},l=s.elements.every(e=>e!==null&&c(e));return l||n.delete(e.id),l},Wpe=(e,t)=>{for(let n of e.properties){let e=n;if(!y(e,`Property`))return null;if(e.computed)continue;let r=e.key;if((y(r,`Identifier`)?r.name:y(r,`Literal`)&&typeof r.value==`string`?r.value:null)===t)return Q(e.value)}return null},Gpe=(e,t,n)=>{if(e.kind!==`const`||!t.startsWith(`${e.name}.`)||e.references.some(e=>e.flag!==`read`))return!1;let r=e.initializer?Q(e.initializer):null;if(!r||!y(r,`ObjectExpression`))return!1;let i=t.slice(e.name.length+1).split(`.`),a=r;for(let e of i){if(!y(a,`ObjectExpression`))return!1;let t=Wpe(a,e);if(!t)return!1;a=t}return y(a,`CallExpression`)&&Hm(a.callee,n)===`useRef`},Kpe=(e,t,n)=>{if(n.has(e.id))return!0;let r=qm(e);if(!r)return!1;n.add(e.id);for(let i of Cm(r,t)){let r=i.resolvedSymbol;if(r&&r.id!==e.id&&!Vm(r)&&!Ym(r,t,n))return n.delete(e.id),!1}return!0},qpe=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=w(e.bindingIdentifier,t);return n!==null&&n!==e&&n.kind===`import`},Jpe=e=>{let t=v(e);for(;t.parent;){let e=t.parent;if(y(e,`AssignmentExpression`))return e.left===t;if(y(e,`UpdateExpression`))return e.argument===t;if(y(e,`UnaryExpression`))return e.operator===`delete`&&e.argument===t;if(y(e,`ForInStatement`)||y(e,`ForOfStatement`))return e.left===t;if(y(e,`ArrayPattern`)&&e.elements.some(e=>e===t)||y(e,`ObjectPattern`)&&e.properties.some(e=>e===t)||y(e,`RestElement`)&&e.argument===t||y(e,`AssignmentPattern`)&&e.left===t||y(e,`Property`)&&e.value===t&&y(e.parent,`ObjectPattern`)){t=e;continue}return!1}return!1},Ype=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=e.initializer?Q(e.initializer):null;if(!y(n,`AssignmentExpression`)||n.operator!==`??=`)return!1;let r=wd(Q(n.left),t);return r?r.references.every(e=>{let t=v(e.identifier).parent;if(!y(t,`MemberExpression`)||Q(t.object)!==e.identifier||C(t)!==`current`)return!1;let r=v(t),i=r.parent;return y(i,`AssignmentExpression`)&&i.left===r?i===n:!Jpe(r)}):!1},Ym=(e,t,n=new Set)=>Km(e,t)||Ype(e,t)||qpe(e,t)||Kpe(e,t,n)||Upe(e,t,n),Xm=(e,t)=>{let n=e.initializer?O(e.initializer):null;return!n||!y(n,`CallExpression`)?!1:k(n,`useEffectEvent`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0})},Zm=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!y(e,`Identifier`))return null;let r=t.scopeFor(e);for(;;){let t=r.symbolsByName.get(e.name);if(t)return t;if(!r.parent)return null;r=r.parent}},Xpe=new Set([`ComponentClass`,`ComponentType`,`FC`,`FunctionComponent`]),Zpe=(e,t)=>{let n=Zm(e,t);return!!(n&&Me(n)&&(y(n.declarationNode,`ImportDefaultSpecifier`)||y(n.declarationNode,`ImportNamespaceSpecifier`)))},Qm=(e,t,n)=>{if(!e)return!1;if(y(e,`TSTypeAnnotation`))return Qm(e.typeAnnotation,t,n);if(y(e,`TSIntersectionType`))return(e.types??[]).some(e=>Qm(e,t,n));if(!y(e,`TSTypeReference`))return!1;let r=e.typeName;if(y(r,`TSQualifiedName`))return y(r.left,`Identifier`)&&y(r.right,`Identifier`)&&Xpe.has(r.right.name)&&Zpe(r.left,t);if(!y(r,`Identifier`))return!1;let i=Zm(r,t);if(!i||n.has(i.id))return!1;if(Me(i)){let e=Lt(i.declarationNode);return!!(e&&Xpe.has(e))}return y(i.declarationNode,`TSTypeAliasDeclaration`)?(n.add(i.id),Qm(i.declarationNode.typeAnnotation,t,n)):!1},$m=(e,t)=>{let n=e.bindingIdentifier;return y(n,`Identifier`)&&Qm(n.typeAnnotation,t,new Set)},eh=new Set([`useEffect`,`useLayoutEffect`,`useCallback`,`useMemo`,`useImperativeHandle`,`useInsertionEffect`]),th=new Set([`useMemo`,`useCallback`]),nh=new Set([`useEffect`,`useLayoutEffect`,`useInsertionEffect`]),Qpe=new Set([`useEffect`,`useLayoutEffect`]),$pe=new Set([`Array`,`ReadonlyArray`]),eme=e=>{if(!e)return null;try{return new RegExp(e)}catch{return null}},tme=e=>{let t=e.callee;return y(t,`Identifier`)?t.name:y(t,`MemberExpression`)&&y(t.object,`Identifier`)&&y(t.property,`Identifier`)&&!t.computed?`${t.object.name}.${t.property.name}`:null},nme=e=>{if((y(e,`FunctionDeclaration`)||y(e,`FunctionExpression`))&&e.id)return e.id.name;let t=e.parent;for(;t&&y(t,`CallExpression`);){let e=tme(t);if(e&&Ot.has(e))t=t.parent??null;else break}return t&&y(t,`VariableDeclarator`)&&y(t.id,`Identifier`)?t.id.name:null},rme=e=>{let t=e.parent;for(;t;){if(y(t,`FunctionDeclaration`)||y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)){if(Bm(t))return t;let e=nme(t);if(e&&fc(e))return t}t=t.parent??null}return null},ime=e=>+(e===`useImperativeHandle`),ame=e=>e===`useImperativeHandle`?2:1,rh=e=>{if(!y(e,`ObjectPattern`))return null;let t=e.properties[0];if(!t||!y(t,`Property`))return null;let n=t.key,r=t.value,i=y(n,`Identifier`)?n.name:y(n,`Literal`)&&typeof n.value==`string`?n.value:null;if(!i)return null;let a=rh(r);return a?`${i}.${a}`:i},ih=e=>{let t=e.identifier;return y(t,`Identifier`)||y(t,`JSXIdentifier`)?t.name:``},ome=e=>{let t=e.indexOf(`.current`);if(t===-1)return e;let n=t+8;return n===e.length||e[n]===`.`?e.slice(0,t):e},sme=e=>{let t=e.identifier,n=t.parent??null;if(n&&n.type===`ChainExpression`&&(n=n.parent??null),!n||!y(n,`MemberExpression`)||n.object!==t){if(n&&y(n,`VariableDeclarator`)&&n.init===t){let t=rh(n.id),r=ih(e);if(t&&r)return`${r}.${t}`}return ih(e)}let r=n;for(;;){let e=r.parent;if(!e)break;let t=$fe.has(e.type),n=t?e.parent:e,i=t?e:r;if(n&&y(n,`MemberExpression`)&&n.object===i){r=n;continue}break}let i=ah(r);if(i===null)return ih(e);let a=r.parent;if(a&&y(a,`VariableDeclarator`)&&a.init===r){let e=rh(a.id);if(e)return ome(`${i}.${e}`)}let o=ome(i);if(o!==i)return o;if(e.flag!==`read`){let e=i.lastIndexOf(`.`);if(e!==-1)return i.slice(0,e)}return i},cme=e=>{let t=Q(e);if(y(t,`Identifier`))return t.name;if(y(t,`MemberExpression`))return ah(t);if(y(t,`CallExpression`)&&(t.arguments?.length??0)===0){let e=Q(t.callee);if(y(e,`Identifier`))return e.name;if(y(e,`MemberExpression`)&&!ch(e))return ah(e)}return null},lme=e=>{let t=v(e);for(;t.parent;){let e=t.parent;if((y(e,`IfStatement`)||y(e,`WhileStatement`)||y(e,`DoWhileStatement`)||y(e,`ConditionalExpression`))&&e.test===t)return!0;if(y(e,`UnaryExpression`)&&e.operator===`!`||y(e,`LogicalExpression`)){t=e;continue}return!1}return!1},ume=(e,t)=>{if(!e)return!1;let n=Q(e);return y(n,`ArrayExpression`)?n.elements.some(e=>{if(!e)return!1;let n=Q(e);return y(n,`Identifier`)&&n.name===t}):!1},ah=e=>{let t=Q(e);if(y(t,`Identifier`))return t.name;if(y(t,`ThisExpression`))return`this`;if(y(t,`MemberExpression`)){let e=ah(t.object);if(e&&t.computed)return e;if(e&&!t.computed&&y(t.property,`Identifier`))return`${e}.${t.property.name}`}return null},dme=(e,t,n,r,i=!1)=>{let a=new Set,o=new Set,s=new Set,c=new Set,l=rme(e),u=l?t.ownScopeFor(l):null;for(let l of Cm(e,t)){let d=l.resolvedSymbol;if(!d||Jm(d,e))continue;if(i&&jpe(d,e,t)){o.add(d.name);continue}if(Ym(d,t)){o.add(d.name);continue}if(Vm(d)){s.add(d.name);continue}if(u&&!pt(d.scope,u)){c.add(d.name);continue}let f=sme(l);if(f&&!(f===d.name&&lme(l.identifier)&&[...r??[]].some(e=>e.startsWith(`${d.name}.`)))){if(Gpe(d,f,t)){o.add(f);continue}if(f===d.name){if(n?.has(f)){a.add(f);continue}let e=vme(l,d,t)??xme(l,d,t)??gme(d,t);if(e){e.size===0&&o.add(f);for(let t of e)a.add(t);continue}}a.add(f)}}return{keys:a,stableCapturedNames:o,moduleScopeCapturedNames:s,outerFunctionCapturedNames:c}},fme=e=>y(e,`Literal`)||y(e,`TemplateLiteral`)&&In(e)!==null,pme=e=>y(e,`Literal`)&&typeof e.value!=`string`,oh=(e,t)=>t===e||t.startsWith(`${e}.`),mme=(e,t)=>{for(let n of t)if(n!==e&&e.startsWith(`${n}.`))return!0;return!1},sh=e=>{let t=Q(e);return y(t,`Identifier`)?t:y(t,`MemberExpression`)?sh(t.object):null},ch=e=>{let t=Q(e);return y(t,`MemberExpression`)?t.computed?!0:ch(t.object):!1},hme=(e,t,n)=>{let r=new Set;for(let i of e){let e=lh(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},lh=(e,t,n)=>{let r=Q(e);if(y(r,`Literal`)&&(r.value===null||typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`)||y(r,`TemplateLiteral`)&&In(r)!==null)return new Set;if(y(r,`Identifier`)){let e=t.symbolFor(r);if(!e)return null;if(Vm(e)||Ym(e,t))return new Set;if(e.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&e.references.every(e=>e.flag===`read`)){if(n.has(e.id))return null;n.add(e.id);let r=lh(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(y(r,`MemberExpression`)){if(ch(r))return null;let e=ah(r),n=sh(r),i=n?t.symbolFor(n):null;return!e||!i?null:Vm(i)||Gpe(i,e,t)||Ym(i,t)?new Set:new Set([e])}return y(r,`LogicalExpression`)?hme([r.left,r.right],t,n):y(r,`ConditionalExpression`)?hme([r.test,r.consequent,r.alternate],t,n):null},gme=(e,t)=>e.kind!==`const`||!e.initializer||!y(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?null:lh(e.initializer,t,new Set([e.id])),uh=e=>{let t=Q(e);return y(t,`Literal`)||y(t,`Identifier`)?!0:y(t,`MemberExpression`)?uh(t.object)&&(!t.computed||uh(t.property)):y(t,`BinaryExpression`)||y(t,`LogicalExpression`)?uh(t.left)&&uh(t.right):y(t,`UnaryExpression`)?t.operator!==`delete`&&uh(t.argument):y(t,`ConditionalExpression`)?uh(t.test)&&uh(t.consequent)&&uh(t.alternate):y(t,`TemplateLiteral`)?t.expressions.every(e=>uh(e)):!1},dh=e=>y(e,`BlockStatement`)?e.body.every(e=>dh(e)):y(e,`ReturnStatement`)?!e.argument||uh(e.argument):y(e,`IfStatement`)?uh(e.test)&&dh(e.consequent)&&(!e.alternate||dh(e.alternate)):!1,_me=e=>!y(e,`FunctionDeclaration`)&&!y(e,`FunctionExpression`)&&!y(e,`ArrowFunctionExpression`)||e.async||e.generator?!1:y(e.body,`BlockStatement`)?dh(e.body):uh(e.body),vme=(e,t,n)=>{if(t.references.some(e=>e.flag!==`read`))return null;let r=v(e.identifier),i=r.parent;if(!y(i,`CallExpression`)||i.callee!==r)return null;let a=qm(t);if(!a||!_me(a))return null;let o=new Set;for(let e of Cm(a,n)){let r=e.resolvedSymbol;if(!r||r.id===t.id||Vm(r)||Ym(r,n))continue;let i=sme(e);if(!i)return null;if(i===r.name){let e=gme(r,n);if(e){for(let t of e)o.add(t);continue}}o.add(i)}return o.size>0?o:null},fh=(e,t,n)=>{let r=new Set;for(let i of e){let e=ph(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},ph=(e,t,n)=>{let r=Q(e);if(y(r,`Literal`))return new Set;if(y(r,`Identifier`)){if(t.isGlobalReference(r))return new Set;let e=t.symbolFor(r);if(!e)return null;if(Vm(e)||Ym(e,t))return new Set;if(e.kind===`const`&&e.initializer&&y(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&e.references.every(e=>e.flag===`read`)&&!n.has(e.id)){n.add(e.id);let r=ph(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(y(r,`MemberExpression`)){if(ch(r))return null;let e=ah(r),n=sh(r),i=n?t.symbolFor(n):null;return!e||!i?null:Vm(i)||Ym(i,t)?new Set:new Set([e])}if(y(r,`BinaryExpression`)||y(r,`LogicalExpression`))return fh([r.left,r.right],t,n);if(y(r,`UnaryExpression`)&&r.operator!==`delete`)return ph(r.argument,t,n);if(y(r,`ConditionalExpression`))return fh([r.test,r.consequent,r.alternate],t,n);if(y(r,`TemplateLiteral`))return fh(r.expressions,t,n);if(y(r,`NewExpression`)){let e=Q(r.callee);if(!y(e,`Identifier`)||e.name!==`Error`||!t.isGlobalReference(e))return null;let i=[];for(let e of r.arguments){if(!E(e)||y(e,`SpreadElement`))return null;i.push(e)}return fh(i,t,n)}return null},yme=(e,t,n)=>{let r=new Set,i=e;for(;i.parent&&i.parent!==t;){let e=i.parent;if(y(e,`IfStatement`)){if(e.test===i)return null;let t=ph(e.test,n,new Set);if(!t)return null;for(let e of t)r.add(e)}else if(!y(e,`ExpressionStatement`)&&!y(e,`BlockStatement`))return null;i=e}return i.parent===t?r:null},bme=(e,t)=>{let n=v(e),r=n.parent;return y(r,`CallExpression`)&&r.arguments.some(e=>e===n)&&k(r,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})},xme=(e,t,n)=>{if(t.kind!==`let`||!y(t.declarationNode,`VariableDeclarator`)||t.declarationNode.id!==t.bindingIdentifier)return null;let r=b(t.bindingIdentifier);if(!r)return null;let i=b(e.identifier);if(!i||i===r)return null;let a=new Set;if(t.initializer){let e=ph(t.initializer,n,new Set([t.id]));if(!e)return null;for(let t of e)a.add(t)}let o=0;for(let e of t.references){if(e.flag===`read`){if(b(e.identifier)!==i&&!bme(e.identifier,n))return null;continue}if(e.flag!==`write`)return null;let s=v(e.identifier),c=s.parent;if(!y(c,`AssignmentExpression`)||c.operator!==`=`||c.left!==s||b(s)!==r)return null;let l=ph(c.right,n,new Set([t.id])),u=yme(c,r,n);if(!l||!u)return null;for(let e of l)a.add(e);for(let e of u)a.add(e);o+=1}return o>0&&a.size>0?a:null},Sme=(e,t)=>{let n=mh(e,t),r=n?.initializer?Q(n.initializer):null;return!!(r&&y(r,`CallExpression`)&&Hm(r.callee,t)===`useCallback`)},Cme=(e,t)=>{let n=sh(e);if(!n)return!1;let r=t.symbolFor(n);return!r||Vm(r)?!1:!Sme(e,t)},mh=(e,t)=>{let n=sh(e);return n?t.symbolFor(n):null},wme=e=>{let t=Q(e);return y(t,`CallExpression`)&&(t.arguments?.length??0)===0?t.callee:e},Tme=e=>y(e,`Literal`)?!!e.regex:!1,Eme=(e,t,n)=>{let r=Q(e),i=Q(t);if(!y(r,`Identifier`)||!y(i,`Identifier`))return!1;let a=n.symbolFor(r),o=n.symbolFor(i);return!!(a&&o&&a.id===o.id)},Dme=(e,t)=>{let n=Q(e);return y(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)||y(n,`UnaryExpression`)&&n.operator===`void`},Ome=(e,t)=>{let n=e.bindingIdentifier.parent?.parent;if(y(n,`ObjectPattern`)){let e=n.typeAnnotation;if(e&&y(e,`TSTypeAnnotation`))return e.typeAnnotation}let r=b(e.bindingIdentifier);if(!r)return null;let i=v(r),a=i.parent;if(!y(a,`VariableDeclarator`)||a.init!==i||!y(a.id,`Identifier`))return null;let o=t.symbolFor(a.id);if(!o||!$m(o,t))return null;let s=a.id.typeAnnotation;if(!s||!y(s,`TSTypeAnnotation`))return null;let c=s.typeAnnotation;return y(c,`TSTypeReference`)?c.typeArguments?.params[0]??null:null},hh=(e,t,n,r=new Set)=>{if(y(e,`TSTypeAnnotation`))return hh(e.typeAnnotation,t,n,r);if(y(e,`TSIntersectionType`)){for(let i of e.types){let e=hh(i,t,n,r);if(e)return e}return null}if(y(e,`TSTypeAliasDeclaration`))return hh(e.typeAnnotation,t,n,r);let i=y(e,`TSTypeLiteral`)?e.members:y(e,`TSInterfaceDeclaration`)?e.body.body:null;if(i){for(let e of i)if(!(!y(e,`TSPropertySignature`)||Us(e.key)!==t))return e.typeAnnotation?.typeAnnotation??null;return null}if(!y(e,`TSTypeReference`)||!y(e.typeName,`Identifier`)||r.has(e.typeName.name))return null;let a=new Set(r).add(e.typeName.name);for(let r of zm(n,e.typeName.name)){let e=hh(r,t,n,a);if(e)return e}return null},gh=(e,t,n=new Set)=>{if(y(e,`TSTypeAnnotation`))return gh(e.typeAnnotation,t,n);if(y(e,`TSNullKeyword`)||y(e,`TSAnyKeyword`)||y(e,`TSUnknownKeyword`))return!1;if(y(e,`TSUnionType`))return e.types.every(e=>gh(e,t,n));if(!y(e,`TSTypeReference`))return!0;if(!y(e.typeName,`Identifier`)||n.has(e.typeName.name))return!1;let r=zm(t,e.typeName.name);if(r.length===0)return qe(t,e.typeName.name)===null&&$pe.has(e.typeName.name);let i=new Set(n).add(e.typeName.name);return r.every(e=>y(e,`TSTypeAliasDeclaration`)?gh(e.typeAnnotation,t,i):y(e,`TSInterfaceDeclaration`))},kme=(e,t)=>{let n=Q(e);if(!y(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=Ws(r);if(i)return gh(i,n);let a=r.bindingIdentifier.parent;if(!y(a,`Property`))return!1;let o=Us(a.key),s=Ome(r,t);if(!o||!s)return!1;let c=hh(s,o,n);return!!(c&&gh(c,n))},_h=(e,t,n=new Set)=>{let r=Q(e);if(y(r,`ArrayExpression`)||y(r,`ObjectExpression`)||y(r,`ClassExpression`)||y(r,`NewExpression`)||y(r,`TemplateLiteral`))return!0;if(y(r,`Literal`))return r.value!==null;if(y(r,`LogicalExpression`)&&r.operator===`??`)return _h(r.right,t,n);if(y(r,`ConditionalExpression`))return _h(r.consequent,t,n)&&_h(r.alternate,t,n);if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||n.has(i.id))return!1;let a=new Set(n).add(i.id);return _h(i.initializer,t,a)},Ame=(e,t)=>{let n=Q(e);if(!y(n,`Identifier`))return null;let r=t.symbolFor(n),i=r?.declarationNode;if(!r||!i||!y(i,`VariableDeclarator`)||!y(i.id,`ArrayPattern`)||i.id.elements[0]!==r.bindingIdentifier||!y(i.init,`CallExpression`)||!k(i.init,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let a=i.init.arguments[0];return E(a)&&!y(a,`SpreadElement`)?a:null},jme=(e,t)=>{let n=Q(e);if(!y(n,`ConditionalExpression`))return!1;let r=Q(n.test);if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r),a=i?.initializer?Q(i.initializer):null;if(i?.kind!==`const`||!a||!y(a,`BinaryExpression`)||a.operator!==`!==`&&a.operator!==`!=`)return!1;let o=null;if(Dme(a.right,t)?o=a.left:Dme(a.left,t)&&(o=a.right),!o||!Eme(n.consequent,o,t))return!1;let s=Ame(n.alternate,t);return!!(s&&_h(s,t)&&kme(o,t))},vh=(e,t,n=!1)=>{if(!e)return!1;let r=Q(e);return Tme(r)?!0:y(r,`ConditionalExpression`)?vh(r.consequent,t,!0)||vh(r.alternate,t,!0):y(r,`LogicalExpression`)?r.operator===`??`&&jme(r.left,t)?vh(r.left,t,!0):vh(r.left,t,!0)||vh(r.right,t,!0):y(r,`ObjectExpression`)||y(r,`ArrayExpression`)||n&&(y(r,`ArrowFunctionExpression`)||y(r,`FunctionExpression`))||y(r,`ClassExpression`)||y(r,`ClassDeclaration`)||y(r,`JSXElement`)||y(r,`JSXFragment`)||y(r,`AssignmentExpression`)||y(r,`NewExpression`)},yh=(e,t,n=new Set)=>{let r=Q(e);if(vh(r,t))return!0;if(y(r,`ConditionalExpression`))return yh(r.consequent,t,n)||yh(r.alternate,t,n);if(y(r,`LogicalExpression`))return yh(r.left,t,n)||yh(r.right,t,n);if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);return!i||n.has(i.id)?!1:i.kind===`let`||i.kind===`var`?!0:i.kind!==`const`||!i.initializer?!1:(n.add(i.id),yh(i.initializer,t,n))},Mme=(e,t,n)=>{if(!Cme(t,n))return!1;if(nh.has(e))return!0;if(e!==`useMemo`)return!1;let r=mh(t,n);return!!(r&&!Ym(r,n)&&!vh(r.initializer,n))},Nme=e=>y(e.declarationNode,`VariableDeclarator`)&&y(e.declarationNode.id,`Identifier`)||y(e.declarationNode,`ClassDeclaration`),Pme=e=>qm(e)!==null,Fme=new Set([`Array`,`Date`,`Error`,`Map`,`Object`,`RegExp`,`Set`,`WeakMap`,`WeakSet`]),Ime=e=>{if(!e)return null;let t=y(e,`AssignmentPattern`)?e.left:e;return y(t,`Identifier`)?t:null},Lme=(e,t)=>{let n=new Set,r=t.symbolFor(e);for(;r?.kind===`const`&&y(r.declarationNode,`VariableDeclarator`)&&r.declarationNode.id===r.bindingIdentifier&&r.initializer;){if(n.has(r.id))return null;n.add(r.id);let e=Q(r.initializer);if(!y(e,`Identifier`))return r;r=t.symbolFor(e)}return r},Rme=(e,t)=>{let n=Lme(e,t);if(!n||!y(n.declarationNode,`VariableDeclarator`))return null;let r=n.declarationNode;if(!y(r.id,`ArrayPattern`))return null;let i=r.id.elements?.[1],a=E(i)?Ime(i):null;if(!a||a!==n.bindingIdentifier)return null;let o=r.init?Q(r.init):null;if(!o||!y(o,`CallExpression`)||!k(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let s=r.id.elements?.[0],c=E(s)?Ime(s):null;return{setterSymbol:n,stateSymbol:c?t.symbolFor(c):null}},bh=(e,t,n,r=new Set)=>{if(!t)return!1;let i=Q(e);if(y(i,`Identifier`)){let e=n.referenceFor(i);if(e?.flag!==`write`&&e?.resolvedSymbol?.id===t.id)return!0;let a=e?.resolvedSymbol;if(a?.kind===`const`&&a.initializer&&!Vm(a)&&!r.has(a.id)){let e=new Set(r);return e.add(a.id),bh(a.initializer,t,n,e)}return!1}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let r=a[e];if(Array.isArray(r)){if(r.some(e=>E(e)&&bh(e,t,n)))return!0}else if(E(r)&&bh(r,t,n))return!0}return!1},xh=(e,t,n=new Set)=>{let r=Q(e);if(y(r,`ObjectExpression`)||y(r,`ArrayExpression`)||y(r,`JSXElement`)||y(r,`JSXFragment`)||Tme(r))return!0;if(y(r,`SequenceExpression`)){let e=r.expressions.at(-1);return!!(e&&xh(e,t))}if(y(r,`ConditionalExpression`))return xh(r.consequent,t,n)&&xh(r.alternate,t,n);if(y(r,`LogicalExpression`))return xh(r.left,t,n)&&xh(r.right,t,n);if(y(r,`CallExpression`)){let e=Q(r.callee);return y(e,`Identifier`)&&t.isGlobalReference(e)&&(e.name===`Array`||e.name===`Object`)&&(e.name===`Array`||r.arguments.length===0)}if(y(r,`NewExpression`)){let e=Q(r.callee);return y(e,`Identifier`)&&t.isGlobalReference(e)&&Fme.has(e.name)&&(e.name!==`Object`||r.arguments.length===0)}if(!y(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||Vm(i)||n.has(i.id))return!1;let a=new Set(n);return a.add(i.id),xh(i.initializer,t,a)},zme=e=>{let t=Q(e);return y(t,`Literal`)&&(typeof t.value==`number`&&t.value!==0||typeof t.value==`bigint`&&t.value!==0n||typeof t.value==`string`&&t.value.length>0)},Sh=(e,t,n)=>{let r=Q(e);if(xh(r,n))return!0;if(y(r,`ConditionalExpression`)){let e=Sh(r.consequent,t,n),i=Sh(r.alternate,t,n);return bh(r.test,t,n)?e&&i:e||i}return bh(r,t,n)?y(r,`UnaryExpression`)?r.operator===`!`:y(r,`UpdateExpression`)?!0:y(r,`BinaryExpression`)?(r.operator===`+`||r.operator===`-`)&&bh(r.left,t,n)&&zme(r.right):!1:!1},Bme=(e,t,n)=>{let r=Q(e);if(!y(r,`ConditionalExpression`))return!1;let i=Q(r.test);if(!y(i,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(i.operator))return!1;let a=e=>{let r=Q(e);return y(r,`Identifier`)&&n.symbolFor(r)?.id===t?.id},o=null;if(a(i.left)&&(o=i.right),a(i.right)&&(o=i.left),!o||!yh(o,n))return!1;let s=e=>{let t=Q(e),r=Q(o);return y(t,`Identifier`)?y(r,`Identifier`)&&n.symbolFor(t)?.id===n.symbolFor(r)?.id:y(t,`Literal`)&&y(r,`Literal`)&&t.value===r.value};return i.operator===`===`||i.operator===`==`?a(r.consequent)&&s(r.alternate):s(r.consequent)&&a(r.alternate)},Vme=(e,t)=>{let n=Q(e);if(!y(n,`ArrowFunctionExpression`)&&!y(n,`FunctionExpression`))return!1;let r=n.params?.[0];if(!r||!y(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!y(n.body,`BlockStatement`))return Bme(n.body,i,t)||Sh(n.body,i,t);if(n.body.body.length!==1)return!1;let a=n.body.body[0];return!y(a,`ReturnStatement`)||!E(a.argument)?!1:Bme(a.argument,i,t)||Sh(a.argument,i,t)},Hme=(e,t)=>{let n=e.parent;if(!n||!y(n,`CallExpression`)||n.callee!==e)return!1;let r=Rme(e,t),i=n.arguments?.[0];return!r||!i||!E(i)?!1:Vme(i,t)?!0:Sh(i,r.stateSymbol,t)},Ume=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(y(i,`FunctionDeclaration`)||y(i,`FunctionExpression`)||y(i,`ArrowFunctionExpression`)))return;if(y(i,`Identifier`)){let e=Rme(i,t);if(e&&Hme(i,t)){n=e.setterSymbol.name;return}}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let t=a[e];if(Array.isArray(t))for(let e of t)E(e)&&r(e);else E(t)&&r(t)}};return r(e),n},Wme=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set,a=e=>{if(y(e,`AssignmentExpression`)&&y(e.left,`Identifier`)){let a=t.symbolFor(e.left);a&&!i.has(a.name)&&!Vm(a)&&!pt(a.scope,n)&&(i.add(a.name),r.push({name:a.name,node:e.left}))}let o=e;for(let e of Object.keys(o)){if(e===`parent`)continue;let t=o[e];if(Array.isArray(t))for(let e of t)E(e)&&a(e);else E(t)&&a(t)}};return a(e),r},Ch=e=>{let t=ah(e);if(!t)return null;let n=t.indexOf(`.current`);return n===-1?null:t.slice(0,n+8)},Gme=(e,t)=>{let n=null,r=t=>{if(n||t!==e&&(y(t,`FunctionExpression`)||y(t,`ArrowFunctionExpression`)))return;if(y(t,`ReturnStatement`)){let e=t.argument;if(e&&(y(e,`FunctionExpression`)||y(e,`ArrowFunctionExpression`))){n=e;return}}let i=t;for(let e of Object.keys(i)){if(e===`parent`)continue;let t=i[e];if(Array.isArray(t))for(let e of t)E(e)&&r(e);else E(t)&&r(t)}};if(r(e),!n)return null;let i=null,a=n=>{if(i)return;if(y(n,`MemberExpression`)){let r=Ch(n);if(r){let a=sh(n),o=a?t.symbolFor(a):null,s=t.ownScopeFor(e)??t.scopeFor(e);if(!o||!pt(o.scope,s)){i={refCurrentName:r,refSymbol:o};return}}}let r=n;for(let e of Object.keys(r)){if(e===`parent`)continue;let t=r[e];if(Array.isArray(t))for(let e of t)E(e)&&a(e);else E(t)&&a(t)}};return a(n),i},Kme=e=>{if(!e)return!1;for(let t of e.references){let e=t.identifier.parent;if(!e||!y(e,`MemberExpression`)||e.object!==t.identifier||Ch(e)===null)continue;let n=e.parent;if(n&&y(n,`AssignmentExpression`)&&n.left===e||n&&y(n,`UpdateExpression`)&&n.argument===e)return!0}return!1},qme=(e,t)=>{if(!e)return!1;let n=e.initializer?Q(e.initializer):null;if(!n||!y(n,`CallExpression`)||Hm(n.callee,t)!==`useRef`)return!1;let r=n.arguments[0];if(!r||!E(r))return!1;let i=Q(r);return!(y(i,`Literal`)&&i.value===null||y(i,`Identifier`)&&i.name===`undefined`)},Jme=(e,t)=>{let n=!1,r=i=>{if(n||i!==e&&(y(i,`FunctionExpression`)||y(i,`ArrowFunctionExpression`)))return;if(y(i,`AssignmentExpression`)&&Ch(i.left)===t){n=!0;return}let a=i;for(let e of Object.keys(a)){if(e===`parent`)continue;let t=a[e];if(Array.isArray(t))for(let e of t)E(e)&&r(e);else E(t)&&r(t)}};return r(e),n},Yme=(e,t,n)=>{let r=sh(e);if(!r)return!1;let i=n.symbolFor(r);if(!i||Vm(i))return!1;let a=rme(t),o=a?n.ownScopeFor(a):null;return!!(o&&!pt(i.scope,o))},Xme=(e,t,n)=>{let r=Cm(e,n).find(e=>e.resolvedSymbol?.name===t)?.resolvedSymbol??null;if(!r)return!1;let i=!1,a=e=>{if(i)return;if(y(e,`CallExpression`)){let a=Q(e.callee);if(y(a,`MemberExpression`)){let e=Q(a.object),o=!1;for(;e&&y(e,`MemberExpression`);){if(y(e.property,`Identifier`)&&e.property.name===`current`){o=!0;break}e=Q(e.object)}if(!o&&e&&y(e,`Identifier`)&&e.name===t&&n.symbolFor(e)===r){i=!0;return}}}let o=e;for(let e of Object.keys(o)){if(e===`parent`)continue;let t=o[e];if(Array.isArray(t))for(let e of t)E(e)&&a(e);else E(t)&&a(t)}};return a(e),i},Zme=(e,t,n,r)=>{let i=[...e].filter(e=>e.startsWith(`props.`));i.length<2||t.has(`props`)||i.every(e=>[...t].some(t=>oh(t,e)))||Xme(n,`props`,r)&&e.add(`props`)},Qme=x({id:`exhaustive-deps`,title:`Missing effect dependencies`,severity:`warn`,tags:[`test-noise`],recommendation:`Don't blindly add missing dependencies. Read the hook callback first.
|
|
4
4
|
|