oxlint-plugin-react-doctor 0.9.18-dev.9a79847 → 0.9.18-dev.a1df4e5

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 CHANGED
@@ -1,4 +1,4 @@
1
- import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Ba as f,Bi as p,Bn as m,Br as h,Bt as g,C as _,Ca as v,Ci as y,Cn as b,Cr as ee,Ct as te,D as ne,Da as re,Di as ie,Dn as ae,Dr as oe,Dt as se,E as ce,Ea as le,Ei as ue,En as de,Er as fe,Et as pe,F as me,Fa as he,Fi as ge,Fn as _e,Fr as ve,Ft as eee,G as ye,Ga as tee,Gi as x,Gn as be,Gr as xe,Gt as nee,H as ree,Ha as Se,Hi as Ce,Hn as we,Hr as Te,Ht as Ee,I as iee,Ia as aee,Ii as oee,In as De,Ir as see,It as cee,J as Oe,Ja as lee,Ji as S,Jn as ke,Jr as Ae,Jt as je,K as uee,Ka as dee,Ki as fee,Kn as Me,Kr as pee,Kt as C,L as Ne,La as Pe,Li as Fe,Ln as Ie,Lr as mee,Lt as hee,M as gee,Ma as _ee,Mi as Le,Mn as Re,Mr as vee,Mt as yee,N as ze,Na as bee,Ni as Be,Nn as xee,Nr as Ve,Nt as See,O as Cee,Oa as wee,Oi as Tee,On as Eee,Or as Dee,Ot as Oee,P as kee,Pa as Aee,Pi as He,Pn as Ue,Pr as We,Pt as jee,Q as Ge,Qi as Mee,Qn as Ke,Qr as Nee,Qt as qe,R as Je,Ra as Pee,Ri as Ye,Rn as Xe,Rr as Fee,Rt as Ze,S as Qe,Sa as $e,Si as Iee,Sn as Lee,Sr as Ree,St as zee,T as et,Ta as Bee,Ti as Vee,Tn as tt,Tr as nt,Tt as Hee,U as Uee,Ua as rt,Ui as it,Un as at,Ur as ot,Ut as Wee,V as Gee,Va as st,Vi as ct,Vn as Kee,Vr as lt,Vt as qee,W as ut,Wa as Jee,Wi as w,Wn as dt,Wr as ft,Wt as Yee,X as pt,Xi as mt,Xn as ht,Xr as Xee,Xt as gt,Y as _t,Yi as vt,Yn as yt,Yr as Zee,Yt as bt,Z as Qee,Zi as xt,Zn as $ee,Zr as St,Zt as Ct,_ as ete,_a as wt,_i as tte,_n as Tt,_r as Et,_t as nte,a as rte,aa as Dt,ai as Ot,an as ite,ar as ate,at as ote,b as kt,ba as T,bi as At,bn as ste,br as cte,bt as lte,c as ute,ca as E,ci as dte,cn as fte,cr as pte,ct as jt,d as Mt,da as Nt,di as mte,dn as hte,dr as gte,dt as Pt,ea as Ft,ei as _te,en as It,er as D,et as Lt,f as Rt,fa as zt,fi as vte,fn as Bt,fr as Vt,ft as yte,g as Ht,ga as Ut,gi as bte,gn as Wt,gr as Gt,gt as xte,h as Kt,ha as Ste,hi as Cte,hn as O,hr as qt,ht as wte,i as Tte,ii as Ete,in as Jt,ir as Dte,it as Yt,j as Ote,ja as kte,ji as Ate,jn as Xt,jr as jte,jt as Mte,k as Zt,ka as Qt,ki as $t,kn as en,kr as Nte,kt as Pte,l as tn,la as nn,li as Fte,ln as rn,lr as Ite,lt as an,m as on,ma as Lte,mi as Rte,mn as sn,mr as zte,mt as Bte,n as Vte,ni as Hte,nn as Ute,nr as cn,nt as ln,o as Wte,oa as un,oi as dn,on as Gte,or as fn,ot as pn,p as mn,pa as hn,pi as Kte,pn as k,pr as qte,pt as gn,q as _n,qa as Jte,qi as vn,qn as yn,qr as bn,qt as Yte,r as Xte,ri as Zte,rn as xn,rr as Sn,rt as Cn,s as Qte,sa as A,si as wn,sn as $te,sr as Tn,st as ene,t as tne,ta as j,ti as nne,tn as rne,tr as En,tt as ine,u as ane,ua as one,ui as sne,un as cne,ur as lne,ut as une,v as dne,va as M,vi as fne,vn as Dn,vr as On,vt as pne,w as kn,wa as mne,wi as An,wn as jn,wr as Mn,wt as hne,x as Nn,xa as Pn,xi as Fn,xn as In,xr as Ln,xt as gne,y as Rn,ya as N,yi as _ne,yn as zn,yr as Bn,yt as vne,z as Vn,za as yne,zi as P,zn as F,zr as Hn,zt as bne}from"./capability-BcLhLM_e.js";import*as Un from"node:fs";import{readFileSync as xne}from"node:fs";import*as Wn from"node:path";import{visitorKeys as Sne}from"oxc-parser";import{analyze as Cne}from"eslint-scope";import{Features as wne,transform as Gn}from"lightningcss";import{visit as Kn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as Tne}from"@shaderfrog/glsl-parser/index.js";const Ene=Symbol.for(`react-doctor.reset-filesystem-caches`),qn=e=>C({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>Jt}),Jn=qn({id:`activity-wraps-effect-heavy-subtree`,severity:`warn`,category:`Bugs`,requires:[`react`,`react:19.2`],title:`Activity wraps an effect-heavy subtree`,recommendation:`Retired: Activity intentionally cleans up effects while hidden and preserves component state.`}),Yn=e=>!v(e,`CallExpression`)&&!v(e,`NewExpression`)?null:v(e.callee,`Identifier`)?e.callee.name:v(e.callee,`MemberExpression`)&&v(e.callee.property,`Identifier`)?e.callee.property.name:null,Xn=(e,t)=>{if(!v(e,`CallExpression`)&&!v(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return v(n,`ArrowFunctionExpression`)||v(n,`FunctionExpression`)?n:t?P(n,t):null},Zn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=M(r),v(r,`MemberExpression`)){r=r.object;continue}if(n&&v(r,`CallExpression`)){if(!v(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return v(r,`Identifier`)?r:null},Qn=(e,t)=>Zn(e,t)?.name??null,$n=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=Yn(e);return n?typeof t==`string`?n===t:t.has(n):!1},Dne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},er=(e,t,n)=>D(e,t,n,Dne),One=new Set([`useCallback`,`useEffectEvent`]),kne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),Ane=/^use\w*(?:Throttle|Debounce)/i,jne=e=>{let t=Yn(e);return t!==null&&Ane.test(t)},Mne=(e,t)=>{if(!er(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return v(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Nne=(e,t)=>v(e,`CallExpression`)?er(e,One,t)||$n(e,kne)||Mne(e,t)||jne(e):v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&e.property.name===`current`,Pne=(e,t,n)=>{let r=O(e,t);return!!(r?.initializer&&er(r.initializer,`useRef`,n))},tr=C({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(!er(t,Tn,e.scopes)||(t.arguments?.length??0)<2)return;let n=Xn(t);if(!n||!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return;let r=t.arguments[1];if(!v(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)v(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(s(n.body,e=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!l.has(e.callee.property.name))return;let t=Qn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];v(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let c=O(t,a);c?.initializer&&Nne(c.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!Pne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),nr=e=>{let t=e.value;return t&&v(t,`Literal`)&&typeof t.value==`string`?t.value:null},I=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!v(t,`JSXAttribute`))continue;let e=Tt(t.name);if(e&&e.toLowerCase()===n)return t}},rr=Object.freeze({}),Fne=new WeakMap,Ine=e=>{if(!e)return rr;let t=Fne.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:rr;return Fne.set(e,r),r},Lne=(e,t)=>{let n=k(e);if(t.polymorphicPropName){let n=I(e.attributes,t.polymorphicPropName);if(n){let e=nr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Rne=new WeakMap,ir=(e,t)=>{let n=Rne.get(e);if(n&&n.settings===t)return n.elementType;let r=Lne(e,Ine(t));return Rne.set(e,{settings:t,elementType:r}),r},zne=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},L=e=>e.some(e=>v(e,`JSXSpreadAttribute`)),ar=e=>{if(!e)return null;let t=M(e);return v(t,`Literal`)&&typeof t.value==`string`?t.value:v(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},R=e=>{if(!v(e,`JSXAttribute`))return null;let t=nr(e);if(t!==null)return t;let n=e.value;if(n&&v(n,`JSXExpressionContainer`)){let e=n.expression;if(v(e,`Literal`)&&typeof e.value==`string`)return e.value;if(v(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},or=e=>e.attribute?R(e.attribute):ar(e.expression),Bne=e=>{let t=e.expression??e.attribute?.value;return t?M(v(t,`JSXExpressionContainer`)?t.expression:t):null},sr=(e,t)=>{if(ir(e,t).toLowerCase()===`input`&&or(Mt(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=Mt(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=or(n);if(e!==null)return e.length>0;let t=Bne(n);if(v(t,`Literal`)&&t.value)return!0}let r=Mt(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=or(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Bne(r);return v(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},cr=e=>{if(v(e,`JSXIdentifier`))return e.name;if(v(e,`JSXMemberExpression`)){let t=cr(e.object);return t?`${t}.${e.property.name}`:null}return null},Vne=[`next/og`,`@vercel/og`,`satori`],Hne=new Set([`next/og`,`@vercel/og`]),lr=e=>{let t=e.parent;for(;t;){if(v(t,`ImportDeclaration`))return t;if(v(t,`Program`))return null;t=t.parent}return null},ur=e=>typeof e.source.value==`string`?e.source.value:null,Une=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!v(r,`ImportSpecifier`))return!1;let i=lr(r),a=i?ur(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return v(o,`Identifier`)&&o.name===t||v(o,`Literal`)&&o.value===t},Wne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=lr(t);if(!n||ur(n)!==`satori`)return!1;if(v(t,`ImportDefaultSpecifier`))return!0;if(!v(t,`ImportSpecifier`))return!1;let r=t.imported;return v(r,`Identifier`)&&r.name===`satori`||v(r,`Literal`)&&r.value===`satori`},dr=(e,t)=>{if(!v(e,`CallExpression`)&&!v(e,`NewExpression`))return!1;let n=M(e.callee);if(v(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(Une(e,`ImageResponse`,Hne)||Wne(e)))}if(!v(n,`MemberExpression`)||N(n)!==`ImageResponse`||!v(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(!v(i,`ImportNamespaceSpecifier`))return!1;let a=lr(i),o=a?ur(a):null;return!!(o&&Hne.has(o))},Gne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Fn}$`),fr=e=>e?Gne.test(Wn.basename(e)):!1,Kne=new WeakMap,qne=e=>e?fr(Ke(e)):!1,Jne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},pr=(e,t,n,r,i)=>{if(!A(e))return;if(v(e,`ArrowFunctionExpression`)){let a=M(e.body);if(!v(a,`BlockStatement`)){mr(a,t,n,r,i);return}}let a=e.body;v(a,`BlockStatement`)&&s(a,e=>{if(e!==a&&A(e))return!1;v(e,`ReturnStatement`)&&e.argument&&mr(M(e.argument),t,n,r,i)})},Yne=(e,t,n)=>{let r=!1;return s(e,e=>{if(r)return!1;if(v(e,`JSXOpeningElement`)&&!n.has(e)&&cr(e.name)===t)return r=!0,!1}),r},Xne=(e,t,n,r,i)=>{let a=cr(n.name);if(!a||a.includes(`.`)||!Jne(a)||i.has(a)||Yne(e,a,r))return;let o=O(n,a);o?.initializer&&(i.add(a),mr(M(o.initializer),e,t,r,i))},Zne=(e,t)=>{let n=e.parent;for(;n;){if(dr(n,t))return!0;n=n.parent??null}return!1},Qne=(e,t,n)=>{let r=!1;return s(e,e=>{if(r)return!1;if(v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===t&&!Zne(e,n))return r=!0,!1}),r},$ne=(e,t,n,r,i)=>{s(e,e=>{v(e,`JSXOpeningElement`)&&(r.add(e),Xne(t,n,e,r,i))})},mr=(e,t,n,r,i)=>{let a=M(e);if(v(a,`JSXElement`)||v(a,`JSXFragment`)){$ne(a,t,n,r,i);return}if(A(a)){pr(a,t,n,r,i);return}if(v(a,`ConditionalExpression`)){mr(a.consequent,t,n,r,i),mr(a.alternate,t,n,r,i);return}if(v(a,`LogicalExpression`)){mr(a.left,t,n,r,i),mr(a.right,t,n,r,i);return}if(v(a,`CallExpression`)){let e=a.callee;if(A(e)){pr(e,t,n,r,i);return}if(!v(e,`Identifier`)||i.has(e.name)||Yne(t,e.name,r)||Qne(t,e.name,n))return;let o=O(e,e.name);if(!o?.initializer||!A(M(o.initializer)))return;i.add(e.name),pr(M(o.initializer),t,n,r,i);return}if(v(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=O(a,a.name);if(!e?.initializer)return;mr(M(e.initializer),t,n,r,i)}},ere=(e,t)=>{let n=Kne.get(e);if(n)return n;let r=new WeakSet;return Me(e,Vne)&&s(e,n=>{if(!(!v(n,`CallExpression`)&&!v(n,`NewExpression`))&&dr(n,t))for(let i of n.arguments)mr(i,e,t,r,new Set)}),Kne.set(e,r),r},hr=(e,t)=>{if(qne(e.filename))return!0;if(!t)return!1;let n=w(t);if(!n)return!1;let r=ere(n,e.scopes);return r.has(t)?!0:v(t,`JSXElement`)?r.has(t.openingElement):!1},gr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],_r=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),tre=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),vr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),yr=new Set([`add`,`clear`,`delete`,`set`]),br=new Set([`map`,`filter`,`forEach`,`flatMap`]),xr=new Set([`then`,`catch`,`finally`]),nre=new Set([`values`,`keys`,`entries`]),rre=/\.browser\.[cm]?[jt]sx?$/,ire=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(`.`)),are=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],ore=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(`.`)),sre=[`findBy`,`findAllBy`],Sr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.yieldNow.yieldTo.yieldToBrowser.slice.sliceYield.nextFrame.breathe.onYield.onProgress.progress.onStep.step.stage.runStage.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(`.`)),Cr=e=>typeof e!=`string`||e.length===0?!1:ire.has(e)?!0:are.some(t=>e.startsWith(t)),cre=new Set([`it`,`test`]),lre=new Set([`concurrent`,`only`,`skip`]),ure=new Set([`doMock`,`mock`,`unstable_mockModule`]),dre=new Set([`jest`,`vi`]),fre=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),pre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),mre=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__/`)},hre=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=at(e,e.name);return!!(r&&fre.has(r.source)&&r.exportedName&&t.has(r.exportedName))},gre=(e,t,n)=>mre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),wr=(e,t,n)=>hre(e,t,n)||gre(e,t,n),Tr=e=>{let t=M(e);if(v(t,`Identifier`))return t;if(v(t,`MemberExpression`)){let e=N(t);return!e||!lre.has(e)?null:Tr(t.object)}let n=v(t,`CallExpression`)?M(t.callee):v(t,`TaggedTemplateExpression`)?M(t.tag):null;return!v(n,`MemberExpression`)||N(n)!==`each`?null:Tr(n.object)},_re=(e,t)=>{let n=S(e),r=n.parent;if(!r||!v(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Tr(r.callee);return!!(i&&wr(i,cre,t))},vre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!v(r,`Literal`)||typeof r.value!=`string`)return!1;let i=M(e.callee);if(!v(i,`MemberExpression`))return!1;let a=N(i);if(!a||!ure.has(a))return!1;let o=M(i.object);return v(o,`Identifier`)&&wr(o,dre,n)},yre=(e,t)=>{let n=e.parent;for(;n;){if(A(n)){let e=S(n),r=e.parent;if(r&&v(r,`CallExpression`)&&vre(r,e,t))return!0}n=n.parent}return!1},bre=(e,t,n)=>{let r=e.parent,i=null;for(r&&v(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(A(r))return!1;if(v(r,`JSXAttribute`)&&(i=r),v(r,`JSXElement`)){let e=r.openingElement.name;if(v(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=at(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!pre.has(a.source)&&!Cr(a.source)&&i?.parent===r.openingElement&&v(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},Er=(e,t)=>{if(yre(e,t))return!0;let n=j(e);return!n||!_re(n,t)?!1:bre(e,n,t)},xre=e=>{let t=e.parent;return t?v(t,`JSXSpreadAttribute`)||v(t,`SpreadElement`)?t.argument===e:v(t,`VariableDeclarator`)&&t.init===e:!1},Dr=(e,t,n,r,i)=>{let a=M(e);if(r&&v(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`||!xre(e.identifier)))return!0;i.add(e.id);let o=Dr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!v(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(v(e,`SpreadElement`)){if(Dr(e.argument,t,n,r,i))return!0;continue}if(!v(e,`Property`))return!0;let a=T(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Or=(e,t,n=!0,r)=>Dr(e,t,n,r,new Set),z=(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(v(a,`JSXSpreadAttribute`)){if(Or(a.argument,t,n))return null;continue}if(!v(a,`JSXAttribute`))continue;let o=Tt(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},kr=(e,t)=>e.some(e=>v(e,`JSXSpreadAttribute`)&&Or(e.argument,t,!1)),Ar=e=>{let t=M(e);return v(t,`UnaryExpression`)&&t.operator===`void`&&v(M(t.argument),`Literal`)},jr=(e,t={})=>{if(!e?.value)return!1;let n=R(e);if(n!==null)return n.trim().length>0;if(!v(e.value,`JSXExpressionContainer`))return!0;let r=M(e.value.expression);return v(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:v(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Ar(r)},Sre=(e,t,n)=>{let{openingElement:r}=e;if(r===n||sr(r,t))return!1;if(v(r.name,`JSXMemberExpression`)||v(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=z(r.attributes,`aria-label`,!1);if(jr(i,{booleanValuesRender:!0})||!i&&kr(r.attributes,`aria-label`))return!0;if(v(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=z(r.attributes,`alt`,!1);return jr(e)||!e&&kr(r.attributes,`alt`)}return Mr(e,t,n)},Cre=(e,t,n)=>{for(let r of e){if(v(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(v(r,`JSXElement`)){if(Sre(r,t,n))return!0;continue}if(v(r,`JSXFragment`)){if(Cre(r.children,t,n))return!0;continue}if(v(r,`JSXExpressionContainer`)){let e=M(r.expression);if(v(e,`JSXEmptyExpression`))continue;if(v(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Ar(e)||v(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Mr=(e,t,n)=>{if(Cre(e.children,t,n))return!0;let r=z(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(jr(r)||!r&&kr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=z(e.openingElement.attributes,`children`,!1);return!!(jr(i)||!i&&kr(e.openingElement.attributes,`children`))},Nr=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},wre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Tre=e=>!!(v(e,`Identifier`)&&e.name===`undefined`||v(e,`Literal`)&&e.value===null),Pr=e=>Tre(e)?!0:v(e,`ConditionalExpression`)?Pr(e.consequent)||Pr(e.alternate):!1,Fr=e=>{if(!e.value)return!1;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!Pr(t):!0}return!0},Ere=e=>{if(!e)return!1;let t=nr(e);return t===`presentation`||t===`none`},Ir=e=>{if(!e.value)return!1;if(v(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:v(t,`Identifier`)&&t.name===`undefined`?!1:v(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Dre=(e,t,n)=>{let r=I(e.attributes,`alt`);if(r){Fr(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(Ere(I(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=I(e.attributes,`aria-label`);if(i){Ir(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=I(e.attributes,`aria-labelledby`);if(a){Ir(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.'})},Ore=(e,t,n,r)=>{let i=I(e.attributes,`aria-label`),a=I(e.attributes,`aria-labelledby`),o=i&&Ir(i)||a&&Ir(a),s=I(e.attributes,`title`),c=s?nr(s):null,l=!!(c&&c.length>0);o||l||Mr(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."})},kre=(e,t,n)=>{let r=I(e.attributes,`aria-label`),i=I(e.attributes,`aria-labelledby`);if(r&&Ir(r)||i&&Ir(i))return;let a=I(e.attributes,`alt`);(!a||!Fr(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`."})},Are=(e,t,n)=>{let r=I(e.attributes,`aria-label`),i=I(e.attributes,`aria-labelledby`);if(r&&Ir(r)||i&&Ir(i))return;let a=I(e.attributes,`alt`);(!a||!Fr(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`."})},jre=C({id:`alt-text`,diffScope:`jsx-element`,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=>{let t=Nr(e.settings);if(t&&hr(e))return Jt;let n=wre(e.settings),r=!n.elements||n.elements.includes(`img`),i=!n.elements||n.elements.includes(`object`),a=!n.elements||n.elements.includes(`area`),o=!n.elements||n.elements.includes(`input[type="image"]`),s=new Set(n.img??[]),c=new Set(n.object??[]),l=new Set(n.area??[]),u=new Set(n[`input[type="image"]`]??[]),d=zne(e.settings);return{JSXOpeningElement(n){if(t&&Er(n,e))return;if(!d&&v(n.name,`JSXIdentifier`)){let e=n.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!s.has(e)&&!c.has(e)&&!l.has(e)&&!u.has(e))return}if(t&&hr(e,n)||t&&L(n.attributes))return;let f=ir(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&sr(n,e.settings))return;Dre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&v(t,`JSXElement`)&&Ore(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){kre(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=I(n.attributes,`type`);return e?nr(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&Are(n,n,e)}}}}),Mre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Nre=[`click here`,`here`,`link`,`a link`,`learn more`],Pre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Nre}},Fre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),Ire=e=>v(e,`Literal`)&&typeof e.value==`string`?e.value:v(e,`TemplateLiteral`)?it(e):null,Lre=(e,t)=>{let n=e.openingElement,r=I(n.attributes,`aria-label`);if(r){let e=nr(r);if(e!==null)return e}if(ir(n,t)===`img`){let e=I(n.attributes,`alt`);if(e){let t=nr(e);if(t!==null)return t}}if(sr(n,t))return null;let i=[];for(let n of e.children){let e=n;if(v(e,`JSXText`))i.push(e.value);else if(v(e,`JSXElement`)){let n=Lre(e,t);n!==null&&i.push(n)}else if(v(e,`JSXExpressionContainer`)){let t=Ire(e.expression);t!==null&&i.push(t)}}return i.join(``)},Rre=C({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(It(e.filename))return Jt;let t=Pre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(ir(t.openingElement,e.settings)!==`a`)return;let r=Lre(t,e.settings);if(r===null||r.trim().length===0)return;let i=Fre(r);n.has(i)&&e.report({node:t.openingElement.name,message:Mre(i)})}}}}),Lr=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(`.`)),Rr=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(`.`)),zre=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(`.`)),Bre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),zr=new Set([`presentation`,`none`]),Vre=e=>e.trim().split(/\s+/).find(e=>Lr.has(e))===`link`,Hre=e=>{let t=e.parent;for(;t;){if(v(t,`JSXAttribute`)){let e=t.parent;return e&&v(e,`JSXOpeningElement`)?cr(e.name)===`Trans`:!1}t=t.parent??null}return!1},Ure=e=>e.children.some(e=>{if(!v(e,`JSXElement`))return!1;let t=e,n=cr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!I(t.openingElement.attributes,`aria-hidden`)}),Br=C({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=Nr(e.settings),n=It(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(ir(i,e.settings)!==`a`)return;let a=I(i.attributes,`href`),o=I(i.attributes,`role`),s=o?on(o,e.scopes):[],c=s===null||s.some(e=>Vre(e));if(!(t&&!a&&!c)&&!sr(i,e.settings)&&!(Mr(r,e.settings)||!t&&Ure(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(I(i.attributes,e))return;t&&Hre(r)||e.report({node:i.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),Vr=[`href`],Hr=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return Vr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return Vr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?Vr:r},Ur="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Wr="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Gr="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Wre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Hr(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Kr=(e,t)=>e.aspects===null||e.aspects.has(t),Gre=e=>{let t=e.parent;if(!t||!v(t,`JSXElement`))return!1;let n=t.parent;if(!n||!v(n,`JSXElement`))return!1;let r=cr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Kre=e=>!!I(e.attributes,`role`)&&!!I(e.attributes,`tabindex`)&&(!!I(e.attributes,`onkeydown`)||!!I(e.attributes,`onkeyup`)),qr=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},qre=e=>{if(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(t,`Identifier`)&&t.name===`undefined`||v(t,`Literal`)&&t.value===null)return!0}return!!v(e,`JSXFragment`)},Jre=e=>{let t=e.value;if(!t)return`nullish`;if(v(t,`Literal`))return typeof t.value==`string`&&qr(t.value,new Set)?`invalid`:`valid`;if(v(t,`JSXExpressionContainer`)){let e=t.expression;return v(e,`Identifier`)&&e.name===`undefined`?`nullish`:v(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&qr(e.value,new Set)?`invalid`:`valid`:v(e,`TemplateLiteral`)&&e.expressions.length===0&&qr(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return v(t,`JSXFragment`)?`nullish`:`valid`},Jr=C({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=Wre(e.settings),n=Nr(e.settings),r=zne(e.settings),i=It(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=ir(a,e.settings),s=cr(a.name);if(o!==`a`&&(n||!s||!t.components.has(s))||n&&!r&&o!==`a`)return;if(!n){let n=!1,r=!1;for(let e of t.hrefAttributeNames){let t=I(a.attributes,e);if(!t)continue;let i=Jre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=L(a.attributes),o=!!I(a.attributes,`onClick`);if(!n){!i&&Kr(t,`noHref`)&&(!o||!Kr(t,`preferButton`))&&e.report({node:a.name,message:Ur}),!i&&o&&Kr(t,`preferButton`)&&e.report({node:a.name,message:Gr});return}r&&(o&&Kr(t,`preferButton`)?e.report({node:a.name,message:Gr}):Kr(t,`invalidHref`)&&e.report({node:a.name,message:Wr}));return}let c;for(let e of t.hrefAttributeNames)if(c=I(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Wr});return}let n=on(c,e.scopes);if(n===null?qre(c.value):n.length>0&&n.every(e=>qr(e,t.validHrefs))){let t=!!I(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Gr:Wr})}return}L(a.attributes)||Gre(a)||Kre(a)||e.report({node:a.name,message:Ur})}}}}),Yr=C({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(It(e.filename))return Jt;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(ir(n,e.settings)!==`a`)return;let r=null;for(let t of Hr(e.settings))if(r=z(n.attributes,t,!1),r)break;if(!r)return;let i=R(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=ane({configuredRootDirectory:gt(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.`})}}}}),Yre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Xr=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(`.`)),Zr=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(`.`)),Qr=e=>e.kind!==`const`||!v(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Xre=new Set([``,`plaintext-only`,`true`]),$r={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},ei={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},ti={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},ni={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Zre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),ri=(e,t,n)=>{let r=M(e);if(v(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?$r:ei;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Xre.has(e)?$r:e===`false`?ei:ti}return ti}if(v(r,`ConditionalExpression`))return Zre(ri(r.consequent,t,n),ri(r.alternate,t,n));if(v(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return ni;let i=Qr(e);if(!i)return ni;let a=new Set(n);return a.add(e.id),ri(i,t,a)}return ni},ii=(e,t)=>{let n=I(e.attributes,`contenteditable`);return n?n.value?v(n.value,`Literal`)?ri(n.value,t,new Set):v(n.value,`JSXExpressionContainer`)?ri(n.value.expression,t,new Set):ni:$r:null},Qre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(v(r,`JSXElement`)){let e=r.openingElement;if(!Xr.has(ir(e,n)))return!1;let i=ii(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)=>ii(e,t)?.canBeEnabled?!Qre(e,t,n):!1,oi=(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=I(t.attributes,`type`);if(e){let t=nr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return I(t.attributes,`href`)!==void 0;case`img`:return I(t.attributes,`usemap`)!==void 0;default:return!1}},si=e=>{if(!e)return null;if(v(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(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(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(v(t,`UnaryExpression`)&&t.operator===`-`&&v(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(v(t,`TemplateLiteral`)){let e=it(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(v(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return v(t.test,`Literal`)?si(e(t.test.value?t.consequent:t.alternate)):si(e(t.consequent))}}return null},ci="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",li=C({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(!I(t.attributes,`aria-activedescendant`))return;let n=ir(t,e.settings);if(!Xr.has(n))return;let r=I(t.attributes,`tabIndex`);if(r){let n=si(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:ci});return}oi(n,t)||ai(t,e.scopes,e.settings)||e.report({node:t.name,message:ci})}})}),$re=[`aria-label`,`aria-labelledby`,`alt`,`title`],ui=(e,t)=>{let n=z(e.attributes,t,!1);if(!n)return!1;let r=R(n);return r===null?null:r.trim().length>0},di=C({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(L(n.attributes))return;if(ui(n,`aria-brailleroledescription`)===!0&&ui(n,`aria-roledescription`)===!1){let t=z(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(ui(n,`aria-braillelabel`)!==!0||Mr(t,e.settings)||$re.map(e=>ui(n,e)).some(e=>e===!0||e===null))return;let r=z(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.`})}})}),fi=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`}]]),eie=e=>fi.has(e),tie=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.`,pi=C({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(!v(t.name,`JSXIdentifier`))return;let n=Tt(t.name);!n||!n.startsWith(`aria-`)||eie(n)||e.report({node:t.name,message:tie(n)})}})}),nie={"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`]}},rie=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(`, `)}`}},mi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${rie(t)}.`,iie=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}},hi=e=>{if(v(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(v(e,`TemplateLiteral`)){let t=it(e);return t===null?null:t.length>0}if(v(e,`UnaryExpression`)&&e.operator===`!`){let t=hi(e.argument);return t===null?null:!t}return null},aie=e=>{if(v(e,`Literal`))return!0;if(v(e,`JSXExpressionContainer`)){let t=e.expression;return v(t,`Literal`)?t.value!==null:v(t,`TemplateLiteral`)?!0:v(t,`UnaryExpression`)&&t.operator===`!`?hi(t.argument)!==null:!1}return!1},gi=(e,t)=>{if(v(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(v(e,`JSXExpressionContainer`)){let n=e.expression;if(v(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(v(n,`TemplateLiteral`))return it(n)?.toLowerCase()??null;if(t&&v(n,`UnaryExpression`)&&n.operator===`!`){let e=hi(n.argument);return e===null?null:String(!e)}}return null},oie=e=>{if(!v(e,`JSXExpressionContainer`))return!1;let t=e.expression;return v(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},sie=(e,t)=>{if(!aie(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=gi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=gi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return oie(t)?!0:gi(t,!1)!==null;case`integer`:case`number`:{let e=gi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(v(t,`JSXExpressionContainer`)){let e=t.expression;if(v(e,`Literal`)&&typeof e.value==`number`||v(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&v(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(oie(t))return!0;let e=gi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=gi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=gi(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))}}},cie=C({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(!v(t.name,`JSXIdentifier`))return;let n=Tt(t.name);if(!n)return;let r=n.toLowerCase(),i=nie[r];if(i){if(!t.value){iie(i)||e.report({node:t,message:mi(r,i)});return}sie(i,t.value)||e.report({node:t,message:mi(r,i)})}}})}),_i=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,lie=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Nr(e)}},uie=C({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=lie(e.settings);return{JSXOpeningElement(n){let r=I(n.attributes,`role`);if(!r)return;let i=ir(n,e.settings);if(t.ignoreNonDOM&&!Xr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:_i(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Lr.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:_i(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:_i(``)});return}if(v(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:_i(``)});return}a([o.value]);return}if(v(o,`JSXExpressionContainer`)){let t=o.expression;if(v(t,`Literal`)&&t.value===null){e.report({node:r,message:_i(``)});return}if(v(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:_i(``)});return}let n=on(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:_i(``)})}}}}),die=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,fie=C({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=ir(t,e.settings);if(Yre.has(n))for(let r of t.attributes){if(!v(r,`JSXAttribute`)||!v(r.name,`JSXIdentifier`))continue;let t=Tt(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:die(n,t)})}}})}),vi=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t||v(e,`FunctionDeclaration`)||v(e,`FunctionExpression`)||v(e,`ArrowFunctionExpression`))return!1;if(v(e,`AwaitExpression`))return t=!0,!1}),t},yi=e=>{let t=e;v(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!v(n,`Property`)||n.value!==t||!n.parent||!v(n.parent,`ObjectPattern`)?null:T(n,{allowComputedString:!0})},pie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),bi=(e,t)=>{let n=M(e);return v(n,`Literal`)?!0:v(n,`Identifier`)?t.has(n.name):v(n,`BinaryExpression`)||v(n,`LogicalExpression`)?bi(n.left,t)&&bi(n.right,t):v(n,`UnaryExpression`)?n.operator!==`delete`&&bi(n.argument,t):v(n,`ConditionalExpression`)?bi(n.test,t)&&bi(n.consequent,t)&&bi(n.alternate,t):v(n,`TemplateLiteral`)?n.expressions.every(e=>bi(e,t)):!1},xi=(e,t,n)=>{let r=M(e);if(!v(r,`CallExpression`)||!r.arguments.every(e=>!v(e,`SpreadElement`)&&bi(e,t)))return!1;let i=M(r.callee);if(!v(i,`MemberExpression`)||N(i)!==`resolve`)return!1;let a=M(i.object);return v(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},mie=(e,t,n)=>!v(e,`ExpressionStatement`)||!v(e.expression,`AwaitExpression`)?!1:xi(e.expression.argument,t,n),hie=(e,t)=>{if(!v(e,`ExpressionStatement`)||!v(e.expression,`AssignmentExpression`)||!pie.has(e.expression.operator))return!1;let n=M(e.expression.left);if(!v(n,`MemberExpression`)||N(n)===null)return!1;let r=M(n.object);return v(r,`Identifier`)&&t.has(r.name)&&v(M(e.expression.right),`Literal`)},gie=(e,t)=>{if(!A(e))return!1;let n=new Set;for(let t of e.params){if(!v(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!v(e.body,`BlockStatement`))return xi(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(v(r,`ReturnStatement`)&&r.argument&&xi(r.argument,n,t))}if(!v(e.body,`BlockStatement`))return bi(e.body,n);let r=e.body.body;for(let e=0;e<r.length;e++){let i=r[e],a=e===r.length-1;if(!mie(i,n,t)&&!(v(i,`ExpressionStatement`)&&bi(i.expression,n)))return hie(i,n)?a:!v(i,`ReturnStatement`)||!a?!1:!i.argument||bi(i.argument,n)||xi(i.argument,n,t)}return!0},_ie=(e,t)=>v(e,`Property`)?Ce(e,t,{allowConstTemplateLiteral:!0}):null,vie=(e,t)=>v(e,`MemberExpression`)?Ce(e,t,{allowConstTemplateLiteral:!0}):null,Si=(e,t,n,r,i)=>{let a=M(e);if(v(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||b(e,n,r)||ae(a,t,r)?null:(i.add(e.id),Si(e.initializer,t,n,r,i))}if(!v(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!v(e,`Property`)||e.kind!==`init`)return null;let n=_ie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!v(o,`Property`))return null;let s=M(o.value);return A(s)?s:Ci(s,n,r,i)},Ci=(e,t,n,r)=>{let i=M(e);if(A(i))return i;if(v(i,`MemberExpression`)){let e=vie(i,n);return e===null?null:Si(M(i.object),e,t,n,r)}if(!v(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||b(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=M(a.initializer),s=yi(a.bindingIdentifier);return s===null?A(o)?o:a.kind===`const`?Ci(o,t,n,r):null:Si(o,s,t,n,r)},wi=(e,t)=>{let n=M(e);return!v(n,`CallExpression`)||de(n,t)?null:Ci(n.callee,n,t,new Set)},Ti=(e,t)=>{let n=wi(e,t);return n&&gie(n,t)?n:null},B=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},yie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=e.arguments.findIndex(e=>e===t);if(r<0||e.arguments.some(e=>v(e,`SpreadElement`)))return!1;let i=wi(e,n);if(!i||!A(i)||i.generator)return!1;let a=i.params[r];if(!v(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||o.references.some(e=>e.flag!==`read`))return!1;let s=i.body,c=!v(s,`BlockStatement`);if(v(s,`BlockStatement`)){let e=s.body[0];if(v(e,`ReturnStatement`)){if(!e.argument)return!1;s=e.argument,c=!0}else if(v(e,`VariableDeclaration`)&&e.declarations.length===1){let t=e.declarations[0].init;if(!t)return!1;s=t}else if(v(e,`ExpressionStatement`))s=e.expression;else return!1}if(s=M(s),v(s,`AwaitExpression`))s=M(s.argument);else if(!c)return!1;if(!v(s,`CallExpression`))return!1;let l=s.callee;if(!v(l,`MemberExpression`)||!v(l.object,`Identifier`)||l.object.name!==`Promise`||!n.isGlobalReference(l.object))return!1;let u=N(l);if(u!==`all`&&u!==`allSettled`)return!1;let d=s.arguments[0];if(!d)return!1;let f=M(d);return v(f,`Identifier`)&&n.symbolFor(f)===o},Ei=e=>!!(e&&(v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`))),bie=(e,t)=>{if(!v(e,`LogicalExpression`))return!1;let n=S(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?B(t,n):!!(e.operator===`||`&&r&&B(t,r));return v(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):v(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(v(r,`WhileStatement`)||v(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||v(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?B(t,r.body):!1},Di=(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(v(c,`LogicalExpression`)&&c.right===s||v(c,`ConditionalExpression`)&&c.test!==s||v(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(v(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||v(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!B(t,e)&&!bie(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)},V=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e)return t.scopes.isGlobalReference(r)?`global:${r.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let i=e.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=v(i,`Property`)?T(i):null;if(s&&v(a,`ObjectPattern`)&&v(o,`VariableDeclarator`)&&o.id===a){let r=V(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?M(e.initializer):null;return e.kind===`const`&&c&&(v(c,`Identifier`)||v(c,`MemberExpression`))?V(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(v(r,`MemberExpression`)){let e=T(r,{allowComputedString:!0});if(!e)return null;let i=V(r.object,t,n);return i?`${i}.${e}`:null}if(v(r,`ThisExpression`))return`this`;if(v(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(A(r)){let e=F(r);return e===null?null:`function:${e}`}return null},xie=new Set(gr),Sie=new Set([`push`,`unshift`]),Cie=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),wie=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),Tie=e=>v(e,`Identifier`)?e.name:v(e,`MemberExpression`)&&v(e.property,`Identifier`)?e.property.name:null,Oi=e=>v(e,`ForStatement`)||v(e,`ForInStatement`)||v(e,`ForOfStatement`)||v(e,`WhileStatement`)||v(e,`DoWhileStatement`)?e.body:null,ki=(e,t=!1,n)=>{let r=null;return s(e,i=>{if(r||i!==e&&A(i)||t&&i!==e&&xie.has(i.type))return!1;v(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Ai=e=>{if(v(e,`Identifier`))return Sr.has(e.name);if(v(e,`MemberExpression`)&&v(e.property,`Identifier`)){let t=M(e.object);return e.property.name===`check`&&v(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:Sr.has(e.property.name)}return!1},Eie=(e,t)=>{if(v(e.callee,`Identifier`)&&Cie.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!Cie.has(e.callee.property.name))return!1;let n=M(e.callee.object);return v(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Die=(e,t,n=new Set)=>{if(!A(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return s(e.body,a=>{if(a!==e.body&&A(a))return!1;if(v(a,`NewExpression`)&&v(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=S(a),n=e.parent,i=v(n,`ReturnStatement`)&&n.argument===e||v(n,`AwaitExpression`)&&n.argument===e||A(n)&&n.body===e,o=a.arguments[0];i&&A(o)&&s(o.body,e=>{if(e!==o.body&&A(e))return!1;v(e,`CallExpression`)&&Eie(e,t)&&(r=!0)})}if(!v(a,`CallExpression`)||Eie(a,t))return;let o=wi(a,t.scopes);if(o!==null){Die(o,t,n)&&(i=!0);return}Ai(a.callee)&&(i=!0)}),r||i},Oie=(e,t)=>{if(!v(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!v(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(v(e,`SpreadElement`))return!1;let t=M(e);return v(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=wi(n,t.scopes);if(r!==null&&Die(r,t))return!0;if(Ti(n,t.scopes)!==null)return!1;let i=Tie(n.callee);return r!==null&&i&&wie.has(i)?!1:Ai(n.callee)},kie=(e,t)=>v(e,`AwaitExpression`)&&!!e.argument&&de(e.argument,t.scopes),Aie=new Set([`all`,`allSettled`,`race`,`any`]),ji=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return!v(t,`MemberExpression`)||t.computed||!v(t.object,`Identifier`)||t.object.name!==`Promise`||!v(t.property,`Identifier`)?!1:Aie.has(t.property.name)},jie=e=>v(e,`AwaitExpression`)?ji(e.argument):!1,Mie=e=>{if(!v(e,`AwaitExpression`))return!1;let t=e.argument;if(!v(t,`NewExpression`)||!v(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(v(n,`Identifier`)&&Sr.has(n.name))return!0;if(!Ei(n))return!1;let r=n.params?.[0],i=v(r,`Identifier`)?r.name:null,a=!1;return s(n.body,e=>{if(a)return!1;if(v(e,`CallExpression`)&&Ai(e.callee)||i&&v(e,`AssignmentExpression`)&&v(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Nie=e=>{let t=e;for(;v(t,`MemberExpression`);)t=t.object;return v(t,`Identifier`)?t.name:null},Pie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Fie=(e,t)=>!!t&&e.references.some(e=>{let n=S(e.identifier),r=n.parent;return v(r,`ReturnStatement`)&&r.argument===n&&j(r)===t}),Mi=(e,t,n)=>{if(v(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(v(e,`ObjectPattern`)){for(let r of e.properties??[])v(r,`Property`)&&r.value?Mi(r.value,t,n):v(r,`RestElement`)&&r.argument&&Mi(r.argument,t,n);return}if(v(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Mi(r,t,n);return}v(e,`AssignmentPattern`)&&e.left&&Mi(e.left,t,n)},Ni=(e,t)=>{let n=new Set;return s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},Iie=(e,t)=>{let n=new Set;if(v(e,`ForOfStatement`)||v(e,`ForInStatement`))if(v(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Mi(r.id,t,n);else Mi(e.left,t,n);return n},Lie=(e,t,n=null)=>{let r=new Set,i=[];s(e,a=>{if(a!==e&&A(a))return!1;if(v(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Mi(a.id,t,e),n&&B(n,a.init)||!n&&vi(a.init))for(let t of e)r.add(t);let o=Ni(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(v(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Mi(a.left,t,e),n&&B(n,a.right)||!n&&vi(a.right))for(let t of e)r.add(t);let o=Ni(a.right,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o})}});let a=!0;for(;a;){a=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of i)if(!r.has(e)){for(let n of t)if(r.has(n)){r.add(e),a=!0;break}}}return r},Rie=e=>v(e,`Identifier`)?e:v(e,`AssignmentPattern`)&&v(e.left,`Identifier`)?e.left:null,zie=(e,t)=>{if(!v(e,`AwaitExpression`))return!1;let n=e.argument;if(!v(n,`CallExpression`))return!1;let r=wi(n,t.scopes);if(!A(r))return!1;let i=j(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Lie(r.body,t.scopes),c=new Set;for(let[e,a]of r.params.entries()){let r=Rie(a);if(!r)continue;let o=n.arguments[e];if(!v(o,`Identifier`))continue;let s=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);s&&l&&(Fie(l,i)||l.id===s.id)&&c.add(s.id)}let l=!1;return s(r.body,e=>{if(l||e!==r.body&&A(e))return!1;if(!v(e,`CallExpression`))return;let n=e.callee;if(!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)||!Sie.has(n.property.name))return;let s=!1;for(let n of e.arguments??[]){if(vi(n)){s=!0;break}let e=Ni(n,t.scopes);for(let t of e)if(o.has(t)){s=!0;break}if(s)break}if(!s)return;let u=n.object;for(;v(u,`MemberExpression`);)u=u.object;if(!v(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(c.has(d.id)||!Pie(d.scope,a)&&Fie(d,i)))return l=!0,!1}),l},Bie=e=>{if(!v(e,`AwaitExpression`))return null;let t=M(e.argument);return v(t,`CallExpression`)&&v(M(t.callee),`MemberExpression`)?t:null},Vie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=Iie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ni(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Hie=e=>{if(!v(e,`CallExpression`))return null;let t=M(e.callee);return v(t,`MemberExpression`)?t.object:null},Pi=e=>{let t=M(e);for(;v(t,`MemberExpression`);)t=M(t.object);return t},Uie=(e,t,n,r)=>{let i=Oi(n);if(!i)return!1;let a=Pi(e);if(v(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||B(e.bindingIdentifier,n))return!1}else if(!v(a,`ThisExpression`))return!1;let o=!1;return s(i,e=>{if(o||e!==i&&A(e))return!1;let n=null;if(v(e,`AssignmentExpression`)?n=e.left:(v(e,`UpdateExpression`)||v(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&V(n,r)===t)return o=!0,!1}),!o},Wie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=Hie(e);return!r||V(r,n)!==t?!1:!v(S(e).parent,`ExpressionStatement`)},Gie=(e,t,n,r)=>{let i=Oi(t);if(!i)return!1;let a=!1,o=!1;return s(i,t=>{if(a&&o||t!==i&&A(t))return!1;B(t,e)||Wie(t,n,r)&&(Di(t,e,r)&&(a=!0),Di(e,t,r)&&(o=!0))}),a&&o},Kie=(e,t)=>{let n=j(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||j(e.identifier)!==n)return!1;let r=S(e.identifier),i=r.parent;if(!v(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=M(i.callee);return v(a,`MemberExpression`)?v(Pi(a.object),`ThisExpression`):!1})},qie=(e,t,n)=>{let r=new Set;return s(t,i=>{if(i!==t&&A(i))return!1;let a=null,o=null;v(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):v(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!B(e,o))&&Mi(a,n.scopes,r)}),r},Jie=(e,t,n)=>{let r=M(e);if(!v(r,`MemberExpression`))return!1;let i=Pi(r);if(!v(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Yie=(e,t,n)=>{let r=Oi(t);if(!r)return!1;let i=qie(e,r,n);if(i.size===0)return!1;let a=!1;return s(r,o=>{if(a||o!==r&&A(o))return!1;if(!v(o,`CallExpression`)||!Di(e,o,n))return;let s=o.callee;if(!v(s,`MemberExpression`)||s.computed||!v(s.property,`Identifier`)||!Sie.has(s.property.name))return;let c=Pi(s.object);if(!v(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||B(l.bindingIdentifier,t)||!Kie(l,t))){for(let e of o.arguments)if(Jie(e,i,n))return a=!0,!1}}),a},Xie=(e,t,n)=>{let r=Bie(e);if(!r||!Vie(r,t,n))return!1;let i=Hie(r);if(!i)return!1;let a=V(i,n);return!a||!Uie(i,a,t,n)?!1:Gie(e,t,a,n)||v(Pi(i),`ThisExpression`)&&v(M(i),`MemberExpression`)&&Yie(e,t,n)},Zie=(e,t)=>kie(e,t)||Oie(e,t)||jie(e)||Mie(e)||zie(e,t),Fi=(e,t)=>{if(v(e,`Identifier`))t.add(e.name);else if(v(e,`ObjectPattern`))for(let n of e.properties??[])v(n,`Property`)&&n.value?Fi(n.value,t):v(n,`RestElement`)&&n.argument&&Fi(n.argument,t);else if(v(e,`ArrayPattern`))for(let n of e.elements??[])n&&Fi(n,t);else v(e,`AssignmentPattern`)&&e.left&&Fi(e.left,t)},Qie=new Set([`push`,`unshift`,`splice`]),Ii=(e,t)=>{let n=[];s(e,t=>{if(t!==e&&A(t))return!1;if(!v(t,`VariableDeclarator`)||!t.init||!v(t.id,`Identifier`))return;let r=new Set;mt(t.init,r),n.push({declaredName:t.id.name,referencedNames:r})});let r=!0;for(;r;){r=!1;for(let{declaredName:e,referencedNames:i}of n)if(!t.has(e)){for(let n of i)if(t.has(n)){t.add(e),r=!0;break}}}},$ie=e=>{let t=new Set,n=new Set;if(s(e,r=>{if(r!==e&&A(r))return!1;if(v(r,`AssignmentExpression`)&&r.left){Fi(r.left,t);return}if(v(r,`AwaitExpression`)&&r.argument){mt(r.argument,n);return}if(!v(r,`CallExpression`))return;let i=r.callee;v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&Qie.has(i.property.name)&&v(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;Ii(e,t);for(let e of t)if(n.has(e))return!0;return!1},eae=new Set([...gr,`SwitchStatement`]),tae=e=>{let t=new Set;return s(e,n=>{if(n!==e&&A(n))return!1;v(n,`VariableDeclarator`)&&n.id&&vi(n.init)&&Fi(n.id,t),v(n,`AssignmentExpression`)&&n.left&&vi(n.right)&&Fi(n.left,t)}),t},Li=(e,t)=>{if(!e)return!1;if(vi(e))return!0;let n=new Set;mt(e,n);for(let e of n)if(t.has(e))return!0;return!1},nae=(e,t,n)=>{if(e.label)return v(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(eae.has(r.type))return!1;r=r.parent}return!0},rae=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Ri=e=>{if(!e)return!1;if(rae.has(e.type))return!0;if(v(e,`BlockStatement`)){let t=e.body??[];return Ri(t[t.length-1])}return!1},iae=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(v(r,`IfStatement`)&&Li(r.test,n)&&(Ri(r.consequent)||Ri(r.alternate)))return!0}return!1},aae=(e,t,n)=>{if(v(e,`ReturnStatement`)&&e.argument&&Li(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(v(a,`IfStatement`)){if(Li(a.test,n))return!0;r=!0}if(v(a,`TryStatement`)&&a.handler&&i===a.block&&vi(a.block)&&!r||v(a,`SwitchStatement`)&&Li(a.discriminant,n)||v(a,`BlockStatement`)&&iae(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},oae=(e,t)=>{let n=tae(e);Ii(e,n);let r=!1;return s(e,i=>{if(r||i!==e&&A(i))return!1;if((v(i,`ReturnStatement`)||v(i,`BreakStatement`)&&nae(i,e,t))&&aae(i,e,n))return r=!0,!1}),r},sae=new Set([...Qie,`pop`,`shift`]),cae=e=>{let t=new Set;return s(e,n=>{if(n!==e&&A(n))return!1;if(v(n,`AssignmentExpression`)&&n.left){Fi(n.left,t);let e=Nie(n.left);e&&t.add(e);return}if(!v(n,`CallExpression`))return;let r=n.callee;if(v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&sae.has(r.property.name)){let e=Nie(r.object);e&&t.add(e)}}),t},lae=(e,t)=>{if(!e)return!1;let n=new Set;if(mt(e,n),n.size===0)return!1;let r=cae(t),i=tae(t);Ii(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},uae=e=>{let t=e.parent;return v(t,`LabeledStatement`)&&v(t.label,`Identifier`)?t.label.name:null},dae=(e,t)=>{let n=!1;return s(e,e=>{if(n||Ei(e)||v(e,`FunctionDeclaration`))return!1;if(v(e,`AwaitExpression`)&&Zie(e,t))return n=!0,!1}),n},fae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),pae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),mae=e=>{let t=e;for(;;){t=S(t);let e=t.parent;if(!e)return t;if(v(e,`SpreadElement`)||v(e,`ArrayExpression`)){t=e;continue}if(v(e,`LogicalExpression`)){t=e;continue}if(v(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(v(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(v(n,`CallExpression`)&&n.callee===e&&!e.computed&&v(e.property,`Identifier`)&&pae.has(e.property.name)){t=n;continue}}return t}},zi=e=>{let t=e;for(;t.parent&&!A(t);)t=t.parent;return t},hae=(e,t)=>{let n=!1;return s(t,t=>{if(n)return!1;if(!ji(t))return;let r=new Set;for(let e of t.arguments??[])mt(e,r);if(r.has(e))return n=!0,!1}),n},gae=(e,t)=>{let n=mae(e),r=n.parent;if(v(r,`CallExpression`)&&ji(r)&&(r.arguments??[]).some(e=>e===n)||v(r,`CallExpression`)&&yie(r,n,t.scopes))return!0;let i=null;return v(r,`VariableDeclarator`)&&r.init===n&&v(r.id,`Identifier`)?i=r.id.name:v(r,`AssignmentExpression`)&&r.right===n&&v(r.left,`Identifier`)&&(i=r.left.name),!i||!r?!1:hae(i,zi(r))},_ae=e=>{let t=zi(e);if(!A(t))return!1;let n=null;return v(t,`FunctionDeclaration`)&&v(t.id,`Identifier`)?n=t.id.name:v(t.parent,`VariableDeclarator`)&&v(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:hae(n,zi(t.parent))},vae=C({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:`Consider concurrent calls only for independent asynchronous work. Shared queues or synchronous work may not benefit. Preserve resource limits, transaction ordering, and failure/cancellation semantics; observe all callback promises.`,create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!ki(i,!0)||dae(i,e)||(v(n,`WhileStatement`)||v(n,`DoWhileStatement`))&&lae(n.test,i)||$ie(i)||oae(i,uae(n))||_ae(n))return;let a=ki(i,!0,t=>Xie(t,n,e));a&&e.report({node:a,message:`This ${r} waits before starting the next iteration. If iterations perform independent asynchronous work, consider bounded concurrency; await syntax alone does not establish a speedup.`})};return{ImportDeclaration(e){Cr(e.source?.value)&&(t=!0)},ForStatement(e){n(e,`for-loop`)},ForInStatement(e){n(e,`for…in loop`)},ForOfStatement(e){e.await||n(e,`for…of loop`)},WhileStatement(e){n(e,`while-loop`)},DoWhileStatement(e){n(e,`do-while loop`)},CallExpression(n){if(t||!v(n.callee,`MemberExpression`)||!v(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!fae.has(r))return;let i=n.arguments?.[0];if(!i||!Ei(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&gae(n,e))return;let o=ki(a);if(o){let t=r===`forEach`?"Async callback in .forEach returns a promise that .forEach ignores. Use a `for…of` loop to await each operation, or collect and observe promises when concurrent work is safe.":`Async callback in .${r} returns a promise that the array method does not await. Check that its consumer observes completion and handles rejections; callbacks may already overlap.`;e.report({node:o,message:t})}}}}}),Bi=(e,t)=>{if(e){if(v(e,`AssignmentPattern`)){mt(e.right,t),Bi(e.left,t);return}if(v(e,`RestElement`)){Bi(e.argument,t);return}if(v(e,`ArrayPattern`)){for(let n of e.elements??[])Bi(n,t);return}if(v(e,`ObjectPattern`))for(let n of e.properties??[])v(n,`RestElement`)?Bi(n.argument,t):v(n,`Property`)&&(n.computed&&mt(n.key,t),Bi(n.value,t))}},yae=e=>v(e,`ExpressionStatement`)?v(e.expression,`AwaitExpression`):!1,bae=e=>v(e,`ReturnStatement`)||v(e,`ThrowStatement`)||v(e,`ContinueStatement`)||v(e,`BreakStatement`),xae=e=>{if(!v(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(bae(t))return!0;if(!v(t,`BlockStatement`))return!1;for(let e of t.body??[])if(bae(e))return!0;return!1},Vi=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Sae=(e,t)=>{v(e,`VariableDeclarator`)&&(mt(e.init,t),Bi(e.id,t))},Cae=(e,t)=>{if(!v(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(!v(r,`VariableDeclarator`))continue;if(vi(r.init)||vi(r.id)){n=!0;let e=t.size;xt(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Sae(r,e),!Vi(e,t))continue;let a=t.size;xt(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},wae=new Set(`cancelled.canceled.isCancelled.isCanceled.aborted.isAborted.disposed.isDisposed.destroyed.isDestroyed.stopped.isStopped.mounted.isMounted.unmounted.isUnmounted.active.isActive.stale.isStale.live.isLive.ignore.signal.abortSignal.abortController`.split(`.`)),Tae=e=>{let t=!1;return s(e,e=>{if(t)return!1;if(!v(e,`MemberExpression`)||e.computed||!v(e.property,`Identifier`)||e.property.name!==`current`||!v(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Eae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Dae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Eae)if(t.includes(e))return!0;return!1},Oae=e=>{let t=new Set;return s(e,e=>{(v(e,`Identifier`)||v(e,`PrivateIdentifier`))&&t.add(e.name)}),t},kae=e=>{if(!e)return!1;let t=new Set;mt(e,t);for(let e of t)if(wae.has(e))return!0;for(let t of Oae(e))if(wae.has(t)||Dae(t))return!0;return Tae(e)},Aae=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t)return!1;if(v(e,`CallExpression`))return v(e.callee,`ArrowFunctionExpression`)||v(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(v(e,`ThisExpression`)||v(e,`PrivateIdentifier`))return t=!0,!1}),t},jae=e=>{if(!e)return!1;let t=M(e);if(!v(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=M(e);return v(t,`Literal`)||v(t,`TemplateLiteral`)||v(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Mae=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`parameter`||i.kind===`const`&&i.initializer)&&un(i.scope,n))},Nae=(e,t,n)=>{let r=M(e);if(v(r,`MemberExpression`))return!0;if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!un(i.scope,n))},Pae=(e,t,n)=>{let r=M(e);return!jae(r)||!v(r,`BinaryExpression`)?!1:Mae(r.left,t,n)&&Nae(r.right,t,n)||Mae(r.right,t,n)&&Nae(r.left,t,n)},Fae=(e,t,n)=>{if(!n||!e)return!1;let r=M(e);if(!v(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=M(e);if(v(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Pae(r,t,n))return!1}return!0},Iae=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t||A(e)||v(e,`ThrowStatement`))return!1;if(v(e,`CallExpression`)||v(e,`NewExpression`)||v(e,`AssignmentExpression`)||v(e,`UpdateExpression`))return t=!0,!1}),t},Lae=(e,t)=>{if(!e)return!1;let n=new Set;if(mt(e,n),n.size===0)return!1;let r=j(t);if(!r||!A(r)||!r.body)return!1;let i=!1;return s(r.body,e=>{if(i)return!1;let t=null;if(v(e,`AssignmentExpression`)?t=e.left:v(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;xt(t,r),v(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Rae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(v(n,`VariableDeclaration`)?Cae(n,r).didIntroduceAwait&&(i=!0):yae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(yae(t)){a=!0,o++;continue}if(!v(t,`VariableDeclaration`))break;let n=Cae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},zae=C({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 t=t=>{for(let n=0;n<t.length-1;n++){let r=Rae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!xae(i)||!v(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(mt(i.test,a),Vi(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=j(i),s=o?e.scopes.ownScopeFor(o):null;if(kae(i.test)||Aae(i.test)||jae(i.test)||Fae(i.test,e.scopes,s)||Lae(i.test,i)||Iae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(mt(i.consequent,c),Vi(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}},n=e=>{e&&s(e,e=>{if(A(e))return!1;v(e,`BlockStatement`)?t(e.body??[]):v(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{A(e)&&e.async&&v(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Bae=(e,t,n)=>{let r=new Set;for(let e of t)s(e,e=>{if(!v(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return s(e,e=>{if(i||!v(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},Vae=e=>v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`cookies`,Hi=e=>Vae(e)?!0:v(e,`AwaitExpression`)&&e.argument?Vae(e.argument):!1,Hae=new Set([`headers`,`searchParams`]),Uae=e=>v(e,`AwaitExpression`)&&e.argument?e.argument:e,Ui=e=>v(e,`NewExpression`)&&v(e.callee,`Identifier`)&&St.has(e.callee.name),Wi=e=>!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.object,`Identifier`)||!v(e.callee.property,`Identifier`)?!1:Xee.has(e.callee.object.name)&&Zee.has(e.callee.property.name),Gi=e=>v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`headers`,Ki=new Set([`createHash`,`createHmac`,`createSign`,`createVerify`,`createCipheriv`,`createDecipheriv`]),qi=e=>v(e,`CallExpression`)?v(e.callee,`Identifier`)?Ki.has(e.callee.name):v(e.callee,`MemberExpression`)&&v(e.callee.property,`Identifier`)&&Ki.has(e.callee.property.name):!1,Ji=e=>v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&Hae.has(e.property.name),Wae=e=>{let t=Uae(e);return!!(Ui(t)||Wi(t)||Ji(t)||Gi(t)||qi(t))},Gae=(e,t)=>!!(Ui(e)||Wi(e)||Ji(e)||Gi(e)||qi(e)||v(e,`Identifier`)&&t.has(e.name)),Kae=(e,t)=>{let n=e;for(;n;){if(Gae(n,t))return!0;if(v(n,`MemberExpression`)){n=n.object;continue}if(v(n,`ChainExpression`)){n=n.expression;continue}if(v(n,`AwaitExpression`)){n=n.argument;continue}if(v(n,`TSNonNullExpression`)||v(n,`TSAsExpression`)){n=n.expression;continue}return!1}return!1},Yi=new Set,qae=new Set([`set`,`append`,`delete`]),Xi=e=>v(e,`Property`)&&v(e.key,`Identifier`)&&e.key.name===`method`&&v(e.value,`Literal`)&&typeof e.value.value==`string`&&bn.has(e.value.value.toUpperCase()),Jae=(e,t)=>Hi(e)?!0:v(e,`Identifier`)?t.has(e.name):!1,Yae=(e,t,n,r=!0)=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!qae.has(e.callee.property.name))return null;let i=M(e.callee.object);return!n?.(i)&&(!r||!Jae(i,t))?null:e.callee.property.name},Zi=e=>{if(!v(e,`CallExpression`)||!v(e.callee,`Identifier`)||e.callee.name!==`fetch`)return!1;let t=e.arguments?.[1];return!t||!v(t,`ObjectExpression`)?!1:!!t.properties?.some(Xi)},Xae=(e,t,n,r=!0)=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`))return!1;let{property:i,object:a}=e.callee;if(!v(i,`Identifier`)||!Ae.has(i.name))return!1;let o=M(a);return!(n?.(o)||r&&Kae(o,t))},Zae=e=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`))return`.unknown()`;let t=e.callee.property.name,n=M(e.callee.object),r=v(n,`Identifier`)?n.name:null;return r?`${r}.${t}()`:`.${t}()`},Qi=(e,t={})=>{let n=t.locallyScopedSafeBindings??Yi,r=t.locallyScopedCookieBindings??Yi,i=null;return s(e,a=>{if(i)return;if(a!==e&&A(a)&&t.shouldTraverseNestedFunction&&!t.shouldTraverseNestedFunction(a))return!1;let o=Yae(a,r,t.isCookieReceiver,t.useDefaultCookieReceiverDetection);if(o){i=`cookies().${o}()`;return}if(Zi(a)&&v(a,`CallExpression`)){let e=a.arguments[1];if(!v(e,`ObjectExpression`))return;let t=e.properties.find(Xi);if(!t||!v(t,`Property`)||!v(t.value,`Literal`))return;i=`fetch() with method ${t.value.value}`;return}Xae(a,n,t.isSafeReceiver,t.useDefaultSafeReceiverDetection)&&(i=Zae(a))}),i},$i=e=>{let t=e;for(;v(t,`ChainExpression`);)t=t.expression;if(!v(t,`CallExpression`)&&!v(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(v(r,`ChainExpression`)){r=r.expression;continue}if(v(r,`MemberExpression`)){v(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(v(r,`CallExpression`)){r=r.callee;continue}v(r,`Identifier`)&&n.push(r.name);break}return n},ea=e=>{if(v(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&v(t.init,`AwaitExpression`))return t.init.argument??null}return v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Qae=e=>ore.has(e)?!0:sre.some(t=>e.startsWith(t)),$ae=e=>e?$i(e).some(Qae):!1,eoe=e=>e?$i(e).some(e=>Sr.has(e)):!1,toe=e=>v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`),noe=e=>{let t=M(e);return v(t,`CallExpression`)?t.arguments.every(e=>{if(v(e,`SpreadElement`))return!1;let t=M(e);return v(t,`Identifier`)||v(t,`Literal`)}):!1},roe=e=>{let t=ea(e);if(!t)return!1;let n=M(t);return!v(n,`CallExpression`)&&!v(n,`NewExpression`)&&!v(n,`ImportExpression`)},ioe=(e,t)=>{let n=null;for(let r of e){if(roe(r))return!0;let e=ea(r);if(e&&de(e,t.scopes)||e&&Qi(e,{shouldTraverseNestedFunction:()=>!1}))return!0;let i=e?Ti(e,t.scopes):null;if(toe(r)){if(i===null||!e||!noe(e)||n!==null&&n!==i)return!0;n=i}if($ae(e)||eoe(e)&&i===null)return!0}return!1},aoe=e=>{let t=e.parent;for(;t;){if(A(t)){let e=t.parent;if(e&&v(e,`CallExpression`)){let t=e.callee;if(v(t,`MemberExpression`)&&v(t.property,`Identifier`)&&t.property.name===`transaction`||v(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},ooe=(e,t)=>{let n=[];for(let r of e){let e=ea(r);if(e){if(Bae(e,n,t.scopes))return;v(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`})},soe=C({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=Ke(e.filename??``),n=rre.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Cr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||aoe(t))return;let n=[],r=()=>{n.length>=3&&(ioe(n,e)||ooe(n,e)),n.length=0};for(let e of t.body??[])v(e,`VariableDeclaration`)&&e.declarations?.length===1&&v(e.declarations[0].init,`AwaitExpression`)||v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),ta=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`||v(t,`UnaryExpression`)&&t.operator===`void`},na=e=>{let t=e[0];return t&&v(t,`Identifier`)&&t.name===`this`?e.slice(1):e},ra="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.",ia=new Set([`localStorage`,`sessionStorage`]),coe=new Set([`window`,`globalThis`,`self`]),loe=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,uoe=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,doe=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,aa=e=>!(!loe.test(e)||uoe.test(e)&&!doe.test(e)),foe=e=>v(e,`Identifier`)?ia.has(e.name):v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&coe.has(e.object.name)&&v(e.property,`Identifier`)?ia.has(e.property.name):!1,oa=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=O(e,e.name);if(!n?.initializer)return null;if(v(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!v(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!v(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=M(n.initializer);return v(a,`Identifier`)?oa(a,t)??a:a},sa=(e,t)=>{let n=M(e);if(ca(n,new Set(t)))return!0;if(v(n,`ConditionalExpression`)){let e=M(n.consequent),r=M(n.alternate);return(ta(e)||sa(e,t))&&(ta(r)||sa(r,t))&&(!ta(e)||!ta(r))}if(v(n,`LogicalExpression`)){if(n.operator===`&&`)return sa(n.right,t);let e=M(n.left),r=M(n.right),i=sa(e,t),a=sa(r,t);return(i||ta(e))&&(a||ta(r))&&(i||a)}return!1},ca=(e,t=new Set)=>{let n=M(e);if(t.has(n))return!1;if(t.add(n),foe(n))return!0;if(v(n,`Identifier`)){let e=oa(n);return e?ca(e,new Set(t)):!1}if(!v(n,`CallExpression`))return!1;let r=M(n.callee);if(!v(r,`Identifier`))return!1;let i=oa(r);if(!A(i))return!1;if(v(i,`ArrowFunctionExpression`)&&!v(i.body,`BlockStatement`))return sa(i.body,t);let a=!1;for(let e of Ie(i)){if(!e.argument)continue;let n=M(e.argument);if(!ta(n)){if(!sa(n,t))return!1;a=!0}}return a},la=e=>{if(v(e,`Literal`)&&typeof e.value==`string`)return e.value;if(v(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(v(e,`Identifier`)&&e.name!==`undefined`){let t=O(e,e.name);return!t?.initializer||v(t.initializer,`Identifier`)?null:la(t.initializer)}return null},poe=e=>!e.computed&&v(e.property,`Identifier`)?e.property.name:e.computed&&v(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,ua=(e,t,n,r,i=new Set)=>{let a=M(e);if(i.has(a))return null;if(i.add(a),v(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=oa(a);return s?ua(s,t,n,r,i):null}if(r&&v(a,`CallExpression`)&&v(a.callee,`MemberExpression`)&&!a.callee.computed&&v(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&v(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?ua(e,t,n,!0,i):null}return null},da=new WeakMap,moe=(e,t)=>{let n=da.get(e);if(n)return n;if(!v(e,`FunctionDeclaration`)&&!v(e,`FunctionExpression`)&&!v(e,`ArrowFunctionExpression`))return da.set(e,[]),[];let r=na(e.params).map(e=>{let n=M(e),r=v(n,`Identifier`)?n:v(n,`AssignmentPattern`)&&v(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return s(e.body,n=>{if(n!==e.body&&A(n))return!1;if(!v(n,`CallExpression`))return;let a=M(n.callee);if(!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`)||a.property.name!==`setItem`||!ca(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=ua(o,r,t,!1),l=ua(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),da.set(e,i),i},hoe=C({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:i(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=la(e);return t!==null&&aa(t)})&&e.report({node:t,message:ra})},i=(t,n)=>{let i=oa(n),a=i?moe(i,e.scopes):[],o=[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&o.push(n)}r(t,o)};return{MemberExpression(e){!t&&!e.computed&&v(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=M(e.callee);if(v(t,`MemberExpression`)&&!t.computed&&v(t.property,`Identifier`)&&t.property.name===`setItem`&&ca(M(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else v(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=M(e.callee);v(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!v(n,`MemberExpression`))return;let r=poe(n);!r||!aa(r)||ca(n.object)&&e.report({node:n,message:ra})}}})}),goe=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,_oe=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(`.`)),voe=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),yoe=new Set([`shipping`,`billing`]),boe=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),xoe=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&&yoe.has(t[n])&&(n+=1);let r=n<t.length&&boe.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?voe.has(i):_oe.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Soe=new Set([`input`,`textarea`,`select`,`form`]),Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},fa=C({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:i(e=>{let t=Coe(e.settings);return{JSXOpeningElement:n=>{let r=ir(n,e.settings);if(!Soe.has(r)&&!t.inputComponents.has(r))return;let i=I(n.attributes,`autoComplete`);if(!i)return;let a=nr(i);a&&(xoe(a)||e.report({node:i,message:goe(a)}))}}})}),H=(e,t)=>e?.find(e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&e.name.name===t),pa=e=>cr(e)?.split(`.`).at(-1)??null,woe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!v(t,`ImportDeclaration`)||xn(t)||v(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ma=e=>{let t=woe(e);if(!t||!v(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},ha=(e,t,n,r)=>{if(!v(e,`JSXMemberExpression`))return null;if(v(e.object,`JSXIdentifier`)){let i=x(e.object,r.scopes);if(!i)return null;let a=ma(i);return a===null||!t.test(a)?null:Pn(i.declarationNode)===n?e.property.name:null}if(!v(e.object,`JSXMemberExpression`)||!v(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=x(e.object.object,r.scopes);if(!i||!v(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ma(i);return a!==null&&t.test(a)?e.property.name:null},ga=(e,t)=>{let n=M(e);if(v(n,`JSXElement`)){_a(n,t);return}if(v(n,`JSXFragment`)){va(n.children,t);return}if(v(n,`ConditionalExpression`)){ga(n.consequent,t),ga(n.alternate,t);return}if(v(n,`LogicalExpression`)){n.operator!==`&&`&&ga(n.left,t),ga(n.right,t);return}if(v(n,`ArrayExpression`)){for(let e of n.elements)e&&(v(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ga(e,t));return}if(v(n,`Literal`)){if(typeof n.value==`string`||typeof n.value==`number`){let e=String(n.value);e.trim().length>0&&t.onStaticText?.(e)}return}if(v(n,`TemplateLiteral`)){let e=n.quasis.map(e=>e.value.cooked??e.value.raw??``).join(` `);(e.trim().length>0||n.expressions.length>0)&&t.onStaticText?.(e);return}v(n,`JSXEmptyExpression`)||v(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},_a=(e,t)=>{t.onElement(e)!==!1&&va(e.children,t)},va=(e,t)=>{for(let n of e)v(n,`JSXElement`)?_a(n,t):v(n,`JSXFragment`)?va(n.children,t):v(n,`JSXExpressionContainer`)?ga(n.expression,t):v(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},ya=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{s(e,e=>{v(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return va(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=H(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},Toe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],ba=[`aria-label`,`aria-labelledby`,`title`],Eoe=e=>{if(!e.value||!v(e.value,`JSXExpressionContainer`))return!0;let t=M(e.value.expression);if(!v(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return L(n)||ba.some(e=>I(n,e))},Doe=(e,t,n)=>{if(ha(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=pa(e);return r===`Title`||r===`${t.namespaceName}Title`},xa=C({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of Toe){if(ha(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(L(t.attributes))return;let r=H(t.attributes,`render`);if(r&&Eoe(r)||ba.some(e=>I(t.attributes,e)))return;let i=t.parent;if(!i||!v(i,`JSXElement`)||i.children.length===0)return;let a=ya(i.children,{isPartElementName:t=>Doe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(ha(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=pa(r);return i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`}});if(a.foundPart||a.sawOpaqueContent)return;e.report({node:t.name,message:`This ${n.namespaceName}.Popup renders no ${n.namespaceName}.Title, so the dialog has no accessible name and assistive technology announces an unnamed dialog. Add a Title part (visually hidden if the design shows no heading) or an aria-label.`});return}}})}),Ooe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,Sa=[`aria-label`,`aria-labelledby`],Ca=(e,t)=>ha(e,Ooe,`Field`,t),wa=(e,t)=>{if(Ca(e,t)===`Label`)return!0;let n=pa(e);return n===`label`||n===`Label`||n===`FieldLabel`},koe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(v(r,`JSXElement`)&&Ca(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},Aoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return va(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(wa(a,t))return n.hasLabel=!0,!1;let o=Ca(a,t);if((o===`Control`||koe(i,e,t))&&Sa.some(e=>I(i.attributes,e)))return n.hasLabel=!0,!1;L(i.attributes)&&(n.sawUnprovableContent=!0);let c=H(i.attributes,`render`);if(c?.value&&s(c.value,e=>{v(e,`JSXOpeningElement`)&&Sa.some(t=>I(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let l=pa(a);return l!==null&&/^[A-Z]/.test(l)&&l!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,s(e,e=>{v(e,`JSXOpeningElement`)&&wa(e.name,t)&&(n.hasLabel=!0)})}}),n},Ta=C({id:`base-ui-field-requires-label`,title:`Base UI field control without a label`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Field.Root that wraps a Field.Control a Field.Label (visually hidden when the design shows no label) or name the control directly with aria-label.`,create:e=>({JSXOpeningElement(t){if(Ca(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!v(n,`JSXElement`)||n.children.length===0)return;let r=Aoe(n,e);!r.hasControl||r.hasLabel||r.sawUnprovableContent||e.report({node:t.name,message:`This Field.Root wraps a Field.Control but renders no Field.Label, so the field has no accessible name. Add a Field.Label (visually hidden if the design shows no label) or an aria-label on the control.`})}})}),Ea=(e,t)=>{let n=e.parent?.parent;for(;n;){if(v(n,`JSXAttribute`))return`unprovable`;if(v(n,`JSXElement`)){let e=n.openingElement.name,r=t(e);if(r===`required`)return`inside-required`;if(r===`root`)return`inside-root-without-required`;let i=pa(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},joe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,Da=(e,t)=>ha(e,joe,`Tabs`,t),Moe=C({id:`base-ui-tabs-tab-requires-list`,title:`Base UI tab is outside Tabs.List`,severity:`warn`,category:`Correctness`,requires:[`base-ui`],matchByOccurrence:!0,recommendation:`Render each Base UI Tabs.Tab inside Tabs.List so the tablist role and arrow-key focus handling cover every tab.`,create:e=>({JSXOpeningElement(t){Da(t.name,e)===`Tab`&&Ea(t,t=>{let n=Da(t,e);return n===`List`?`required`:n===`Root`?`root`:null})===`inside-root-without-required`&&e.report({node:t,message:`This Tabs.Tab is outside Tabs.List, so it misses the tablist grouping and arrow-key focus handling Base UI provides through the list. Nest it inside Tabs.List.`})}})}),Noe=e=>{let t=e;for(;t;){if(v(t,`MemberExpression`)){if(v(t.property,`Identifier`)&&t.property.name===`document`||v(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(v(t,`Identifier`)&&t.name===`document`)}return!1},Oa=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`Identifier`)?t.name===`createElement`:v(t,`MemberExpression`)&&(t.computed?v(t.property,`Literal`)&&t.property.value===`createElement`:v(t.property,`Identifier`)&&t.property.name===`createElement`)?!Noe(t.object):!1},ka="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Poe=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}},Aa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,ja=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return Aa(r.value,t);if(v(r,`TemplateLiteral`)){let e=it(r);if(e!==null)return Aa(e,t)}if(v(r,`ConditionalExpression`))return ja(r.consequent,t,n)&&ja(r.alternate,t,n);if(v(r,`Identifier`)){if(n.has(r.name))return!1;let e=O(r,r.name);return!e?.initializer||!Ma(e)?!1:ja(e.initializer,t,new Set(n).add(r.name))}return!1},Ma=e=>{let t=e.bindingIdentifier.parent;if(!t||!v(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&v(n,`VariableDeclaration`)&&n.kind===`const`)},Foe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Ioe=e=>{let t=e;for(;t.parent&&Foe.has(t.parent.type);)t=t.parent;return t},Na=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Ioe(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(v(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!v(e,`Identifier`))return!1;let n=O(e,e.name);return n?Na(n.bindingIdentifier,t):!1}return!1},Loe=e=>{let t=O(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!v(n,`Property`)||n.computed||n.value!==t||!Na(n)?!1:v(n.key,`Identifier`)?n.key.name===`type`:v(n.key,`Literal`)?n.key.value===`type`:!1},Roe=/Type$/,zoe=(e,t)=>{if(!Roe.test(e.name))return!1;let n=O(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!v(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!v(i,`Property`)||i.computed||i.value!==r||!Na(i)?!1:ja(r.right,t)},Pa=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Identifier`)){if(r.name===`type`||Loe(r)||zoe(r,t))return!0;if(n.has(r.name))return!1;let e=O(r,r.name);if(!e?.initializer||!Ma(e))return!1;let i=M(e.initializer);return!v(i,`ConditionalExpression`)&&!v(i,`LogicalExpression`)?!1:Pa(i,t,new Set(n).add(r.name))}if(v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(v(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Pa(r.left,t,n);if(v(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Pa(e,t,n))&&e.every(e=>Pa(e,t,n)||ja(e,t))}return!1},Boe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Voe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},Fa=e=>{for(let t of Boe){let n=be(e,e.name,t);if(n!==null)return n}return null},Ia=e=>e.computed?null:v(e.key,`Identifier`)?e.key.name:v(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,Hoe=e=>{if(v(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(v(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(!(v(t,`FunctionDeclaration`)||v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Uoe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!v(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Ia(n);if(!r)return!1;let i=n.parent;if(!i||!v(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!v(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!v(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=M(a.init);if(!v(s,`CallExpression`))return!1;let c=M(s.callee);if(!v(c,`Identifier`))return!1;let l=Fa(c);if(l!==null)return Voe[l]===r;let u=O(c,c.name)?.initializer;if(!u||!v(u,`FunctionDeclaration`)&&!v(u,`FunctionExpression`)&&!v(u,`ArrowFunctionExpression`))return!1;let d=Hoe(u);return!d||d.length===0?!1:d.every(e=>{let n=M(e);if(!v(n,`ObjectExpression`))return!1;for(let e of n.properties){if(v(e,`SpreadElement`)||!v(e,`Property`))return!1;if(Ia(e)===r)return La(e.value,t)}return!0})},La=(e,t=new Set)=>{let n=M(e);if(v(n,`ObjectExpression`))return n.properties.every(e=>{if(v(e,`SpreadElement`))return La(e.argument,t);if(!v(e,`Property`))return!1;let n=Ia(e);return n!==null&&n!==`type`});if(v(n,`CallExpression`)){let e=M(n.callee);return!v(e,`Identifier`)||Fa(e)!==`mergeProps`?!1:n.arguments.every(e=>!v(e,`SpreadElement`)&&La(e,t))}if(v(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=O(n,n.name);return r?r.initializer&&Ma(r)?La(r.initializer,e):Uoe(r,e):!1}return!1},Ra=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Woe=e=>{let t=z(e.attributes,`form`,!1);return!!(t&&R(t)?.trim())},Goe=e=>!!ar(e?Ge(e,`form`):void 0)?.trim(),Koe=e=>{if(!v(e,`CallExpression`)||!Oa(e))return!1;let t=e.arguments[0];return!!(t&&v(t,`Literal`)&&t.value===`form`)},za=e=>{let t=e.parent;for(;t;){if(v(t,`JSXElement`)&&k(t.openingElement)===`form`||Koe(t))return!0;t=t.parent}return!1},Ba=C({diffScope:`jsx-element`,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=Poe(e.settings),n=Nr(e.settings),r=It(e.filename);return{JSXOpeningElement(i){if(n&&r||k(i)!==`button`)return;let a=I(i.attributes,`type`);if(!a){if(n&&!Woe(i)&&!za(i)||L(i.attributes)&&!i.attributes.every(e=>!v(e,`JSXSpreadAttribute`)||La(e.argument)))return;e.report({node:i.name,message:ka});return}let o=a.value;if(!o){Ra(e,a);return}if(v(o,`Literal`)){ja(o,t)||Ra(e,a);return}if(v(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Pa(n,t))return;ja(n,t)||Ra(e,a)}},CallExpression(i){if(n&&r||!Oa(i))return;let a=i.arguments[0];if(!a||!v(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=Goe(o)||za(i);if(!o||ta(o)){if(n&&!s)return;e.report({node:i,message:ka});return}if(!v(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(v(e,`SpreadElement`)){l=!0;continue}if(!v(e,`Property`))continue;let t=e.key;if(v(t,`Identifier`)&&t.name===`type`||v(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!v(e,`SpreadElement`)||La(e.argument)))return;e.report({node:o,message:ka});return}Pa(c,t)||ja(c,t)||Ra(e,c)}}}}),qoe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Va=e=>v(e,`Identifier`)||v(e,`MemberExpression`)&&!e.computed,Ha=e=>!e.value||!v(e.value,`JSXExpressionContainer`)?!1:Va(e.value.expression),Joe=e=>{if(!e.value)return!0;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return v(t,`Literal`)&&t.value===!0}return!1},Yoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(v(c,`JSXSpreadAttribute`)){o=!0;continue}if(!v(c,`JSXAttribute`))continue;let e=Tt(c.name);e===`checked`?(t=c,n=Ha(c)):e===`defaultChecked`&&!r?(r=c,i=Ha(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Joe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Xoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(v(c,`SpreadElement`)){o=!0;continue}if(!v(c,`Property`))continue;let e=c.key,l=null;if(v(e,`Identifier`)?l=e.name:v(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Va(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Va(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;v(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ua=C({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=qoe(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){k(e)===`input`&&n(Yoe(e.attributes))},CallExpression(e){if(!Oa(e))return;let t=e.arguments[0];if(!t||!v(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!v(r,`ObjectExpression`)||n(Xoe(r))}}}}),Wa=C({id:`circular-dependency`,title:`Runtime import cycle`,severity:`warn`,execution:`project`,defaultEnabled:!1,recommendation:`Break the runtime cycle by extracting shared code into a lower-level module or inverting one dependency.`}),Ga=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(A(a)||((v(a,`ConditionalExpression`)||v(a,`IfStatement`))&&(a.consequent===i&&r.set(a,`consequent`),a.alternate===i&&r.set(a,`alternate`)),a===n));)i=a,a=a.parent??null;let o=t,s=t.parent;for(;s&&!A(s);){if(v(s,`ConditionalExpression`)||v(s,`IfStatement`)){let e=r.get(s);if(e===`consequent`&&s.alternate===o||e===`alternate`&&s.consequent===o)return!0}if(s===n)break;o=s,s=s.parent??null}return!1},Ka=(e,t,n,r=e)=>{let i=new Set,a=t.filter(t=>{if(n.cfg.enclosingFunction(t)!==e)return!1;let i=t;for(;i&&i!==r;)i=i.parent??null;return i===r}),o=new Set(a),s=new Map;for(;a.length>0;){let e=a.pop();if(!e)break;if(e===r){i.add(e);continue}let t=e,n=t.parent??null,c=null,l=null,u=!1;for(;n&&n!==r;){if(v(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=Kt(Cn(n.test));if(r!==null){if(r!==e){u=!0;break}t=n,n=t.parent??null;continue}c=n,l=e?`consequent`:`alternate`;break}}if(v(n,`LogicalExpression`)&&n.right===t){let e=Kt(Cn(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(v(n,`AssignmentPattern`)&&n.right===t){u=!0;break}t=n,n=t.parent??null}if(u)continue;if(!c||!l){i.add(e);continue}let d=s.get(c)??new Set;d.add(l),s.set(c,d),d.has(`alternate`)&&d.has(`consequent`)&&!o.has(c)&&(o.add(c),a.push(c))}return i},qa=(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=F(r),c=new Set([...Ka(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=F(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},Ja=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Ka(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},Ya=`Component`,Xa=`PureComponent`,Zoe=e=>!v(e,`MemberExpression`)||!v(e.object,`Identifier`)||e.object.name!==`React`||!v(e.property,`Identifier`)?!1:e.property.name===Ya||e.property.name===Xa,Za=e=>{if(!v(e,`ClassDeclaration`)&&!v(e,`ClassExpression`))return!1;let t=e.superClass;return t?Zoe(t)?!0:v(t,`Identifier`)?t.name===Ya||t.name===Xa:!1:!1},Qoe=e=>{let t=e,n=e.parent;for(;n;){if(v(n,`IfStatement`)&&v(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||v(n,`ConditionalExpression`)&&v(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(v(n,`WhileStatement`)||v(n,`ForStatement`))&&n.body===t&&n.test&&v(n.test,`Literal`)&&!n.test.value||v(n,`LogicalExpression`)&&n.right===t&&v(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},U=(e,t)=>{if(Qoe(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},$oe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),ese=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Qa=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=M(n.object);return v(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&N(n)===`now`},$a=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Literal`))return typeof r.value==`number`;if(v(r,`CallExpression`))return Qa(r,t);if(v(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),$a(e.initializer,t,n))}return v(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&$a(r.argument,t,n):!v(r,`BinaryExpression`)||!ese.has(r.operator)?!1:$a(r.left,t,new Set(n))&&$a(r.right,t,new Set(n))},eo=(e,t)=>{if(Qa(e,t))return!0;let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=M(n.object);if(!v(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=N(n);if(r.name===`console`)return $oe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&$a(a,t))},W=({node:e,scopes:t})=>{let n=M(e);if(v(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(v(n,`ThisExpression`))return`this`;if(!v(n,`MemberExpression`))return null;let r=W({node:n.object,scopes:t}),i=N(n);return r&&i?`${r}.${i}`:null},tse=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),nse=e=>{if(v(e,`FunctionDeclaration`))return e.id&&v(e.id,`Identifier`)?e.id:null;let t=S(e),n=t.parent;if(!n||!v(n,`VariableDeclarator`)||n.init!==t||!v(n.id,`Identifier`))return null;let r=n.parent;return!r||!v(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},to=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let c=new Map(o),l=new Map;s(e,t=>{if(t!==e&&A(t)){let e=nse(t);return e&&t.body&&(!r||r(t))&&c.set(e,t.body),!1}let n=v(t,`VariableDeclarator`)&&t.init?M(t.init):null;if(v(t,`VariableDeclarator`)&&v(t.id,`Identifier`)&&v(n,`Identifier`)&&t.parent&&v(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=O(n,n.name)?.bindingIdentifier;e&&l.set(t.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,i=!1)=>{if(!i&&A(e)||(t(e),$t(e,e=>u(e)),!v(e,`CallExpression`)))return;let o=M(e.callee);if(A(o)){o.body&&(!r||r(o))&&a(o.body,c);return}if(v(o,`Identifier`)){let e=O(o,o.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&a(t,c);return}if(!(!v(o,`MemberExpression`)||!tse.has(N(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=M(t);if(A(i))i.body&&(!r||r(i))&&a(i.body,c);else if(v(i,`Identifier`)){let e=O(i,i.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&a(t,c)}}};u(e,!0),i.delete(e)};a(e,new Map)},no=(e,t)=>{if(!A(e))return;let n=e.body;n&&s(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},ro=(e,t,n,r=e,i=new Set)=>{let a=M(e);if(v(a,`ObjectExpression`))return a;if(!v(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||b(o,r,n)||t.some(e=>c(a,e,r,n))?null:(i.add(o.id),ro(o.initializer,t,n,r,i))},io=new Set([`window`,`globalThis`,`global`,`self`]),rse=new Set([`body`,`documentElement`,`visualViewport`]),ise=new Set([`initPlaces`,`places`]),ao=new Set([`forceUpdate`,`setState`]),oo=`mobx-react`,so=`disposeOnUnmount`,ase=[`handler`],co=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`]}]]),ose=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`]}]]),lo=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),sse=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),uo=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),fo=(e,t)=>{let n=j(e);if(!n)return!1;let r=[];if(no(n,t=>{v(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},po=e=>{if(!v(e,`CallExpression`))return null;let t=M(e.callee);return v(t,`Identifier`)?t.name:null},mo=(e,t)=>{let n=po(e),r=v(e,`CallExpression`)?M(e.callee):null;return!!(n&&v(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&be(e,n,`mobx`)===`runInAction`)},ho=(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(v(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?M(i.init):null;return v(e,`Property`)&&v(n,`ObjectPattern`)&&v(a,`Identifier`)&&io.has(a.name)&&t.isGlobalReference(a)?T(e,{allowComputedString:!0}):null}let a=r.initializer?M(r.initializer):null;if(v(a,`Identifier`))return ho(a,t,n);if(!v(a,`MemberExpression`))return null;let o=M(a.object);return v(o,`Identifier`)&&io.has(o.name)&&t.isGlobalReference(o)?N(a):null},go=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=M(e.callee);if(po(e)&&v(n,`Identifier`))return ho(n,t);if(!v(n,`MemberExpression`))return null;let r=M(n.object);return!v(r,`Identifier`)||!io.has(r.name)||O(r,r.name)?null:N(n)},_o=e=>v(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:T(e,{allowComputedString:!0}),vo=new WeakMap,cse=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},lse=e=>{let t=vo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(v(e,`ClassBody`)){for(let t of e.body){let e=_o(t);e&&(v(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(v(t,`MethodDefinition`)||v(t,`PropertyDefinition`))&&t.value&&A(t.value)&&r.set(e,t.value))}s(e,t=>{let n=v(t,`AssignmentExpression`)?M(t.left):v(t,`UpdateExpression`)?M(t.argument):null;if(!v(n,`MemberExpression`)||!v(M(n.object),`ThisExpression`))return;let r=N(n);if(!r)return;let a=cse(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?_o(a):null,isAssignment:v(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return vo.set(e,a),a},yo=(e,t,n)=>{if(!e||!v(e,`ClassBody`))return null;let r=lse(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),to(e,e=>{let i=n(e);if(i===!1||!v(e,`CallExpression`))return i;let a=M(e.callee);if(!v(a,`MemberExpression`)||!v(M(a.object),`ThisExpression`))return;let o=N(a),s=o?yo(t,o,e):null;s&&bo(s,t,n,r)}))},use=(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),to(e,e=>{if(n.cfg&&!U(e,n))return!1;if(o&&r.add(e),!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||!v(M(i.object),`ThisExpression`))return;let s=N(i),c=s?yo(t,s,e):null;c&&a(c,o||fo(e,n))}))};return a(e,!1),r},dse=(e,t,n,r)=>{let i=j(e),a=j(t);if(!i||!a||i===a)return!1;let o=new Map,c=new Set,l=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(c.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};c.add(e);let u={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return s(n??t,t=>{if(!v(t,`CallExpression`))return;let i=M(t.callee);if((v(i,`Identifier`)?P(i,r.scopes):v(i,`MemberExpression`)&&v(M(i.object),`ThisExpression`)?yo(n,N(i)??``,t):null)!==e)return;let a=j(t);if(!a)return;let o=l(a);o.canInvokeAfterSuspension&&(u.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(fo(t,r)?u.canInvokeAfterSuspension=!0:u.canInvokeBeforeSuspension=!0)}),c.delete(e),o.set(e,u),u};return l(i).canInvokeAfterSuspension},fse=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return to(e,e=>{if(i)return!1;if(mo(e,n))return i=!0,!1;if(!v(e,`CallExpression`))return;let a=M(e.callee);if(!v(a,`MemberExpression`)||!v(M(a.object),`ThisExpression`))return;let o=N(a);if(o&&ao.has(o))return i=!0,!1;let s=o?yo(t,o,e):null;if(s&&fse(s,t,n,r))return i=!0,!1}),i},xo=(e,t,n=new Set)=>{let r=M(e);if(n.has(r))return null;if(n.add(r),A(r))return r;if(v(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?xo(e,t,n):null}let i=v(r,`CallExpression`)?M(r.callee):null,a=(v(r,`CallExpression`)&&v(i,`MemberExpression`)&&N(i)===`bind`&&r.arguments?.[0]&&v(M(r.arguments[0]),`ThisExpression`)?M(i.object):null)??r,o=v(a,`MemberExpression`)&&v(M(a.object),`ThisExpression`)?N(a):null;return o?yo(t,o,r):null},pse=(e,t,n)=>{let r=xo(e,t);if(!A(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return to(i,e=>{if(a)return;if(mo(e,n)){a=!0;return}if(!v(e,`CallExpression`))return;let r=M(e.callee);if(v(r,`MemberExpression`)&&v(M(r.object),`ThisExpression`)){let i=N(r);if(i&&ao.has(i)){a=!0;return}let o=i?yo(t,i,e):null;if(o&&!fse(o,t,n))return;a=!0}}),a},mse=(e,t,n)=>{let r=new Set,i=new Set;bo(e,t,e=>{if(v(e,`VariableDeclarator`)){let t=e.init?M(e.init):null,i=v(t,`CallExpression`)?M(t.callee):null;if(t&&(v(t,`NewExpression`)||v(t,`ObjectExpression`)||v(t,`ArrayExpression`)||v(t,`CallExpression`)&&v(i,`Identifier`)&&ise.has(i.name))){let t=new Set;xt(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(v(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;xt(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(v(e,`AssignmentExpression`)&&v(e.left,`MemberExpression`)){let t=M(e.right),r=v(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(v(e,`CallExpression`))for(let t of e.arguments??[]){let e=M(t),a=v(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},hse=e=>{let t=M(e);for(;v(t,`MemberExpression`);){let e=M(t.object);if(v(e,`ThisExpression`))return N(t);t=e}return null},gse=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!v(n,`ClassBody`))return!0;let r=lse(n);if(r.accessorNames.has(e))return!1;let i=cse(t,n),a=i?_o(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`)})},_se=(e,t)=>{if(!v(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(A(n))return n.parent?.parent===t;if(v(n,`IfStatement`)||v(n,`ConditionalExpression`)||v(n,`LogicalExpression`)||v(n,`SwitchStatement`)||v(n,`TryStatement`)||v(n,`CatchClause`)||v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return!1;n=n.parent}return!1},vse=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=S(e.identifier),r=t.parent;if(!v(r,`AssignmentExpression`)||r.right!==t||!v(r.left,`MemberExpression`)||!v(M(r.left.object),`ThisExpression`)||!_se(r,n))return[];let i=N(r.left);return i&&gse(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!v(a,`AssignmentExpression`))return null;let o=j(r.declarationNode);if(!o||j(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 no(o,e=>{if(v(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},So=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=vse(i,t,n);if(a)return So(a,t,n,r);if(e.kind===`const`&&e.initializer&&v(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=M(e.initializer);return v(a,`Identifier`)||v(a,`MemberExpression`)?So(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(v(i,`ThisExpression`))return`this`;if(!v(i,`MemberExpression`))return null;let a=hse(i);if(!a){let e=M(i.object),n=N(i);return!v(e,`Identifier`)||!t.isGlobalReference(e)||!n||!rse.has(n)?null:`${e.name}.${n}`}if(a&&(!v(M(i.object),`ThisExpression`)||!gse(a,i,n)))return null;let o=So(i.object,t,n,r),s=N(i);return o&&s?`${o}.${s}`:null},yse=(e,t,n)=>{let r=M(e);return v(r,`Literal`)?JSON.stringify(r.value):So(r,t,n)},bse=(e,t,n)=>{let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(v(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=So(r,t,n);return i?`reference:${i}`:null},xse=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||b(r,n,t)||c(n,`capture`,n,t))return null;let i=W({node:n,scopes:t});return i?`options:${i}`:null},Sse=(e,t)=>{let n=M(e);return v(n,`Literal`)?!n.value:v(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Co=(e,t,n,r)=>{let i=M(e.callee);if(!v(i,`MemberExpression`))return null;let a=N(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:ase}: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=yse(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||v(a,`SpreadElement`))return null;let o=i===`event`?bse(a,n,r):yse(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&&v(d,`SpreadElement`))return null;let f=`false`;if(d){let e=M(d);if(Sse(e,n))f=`false`;else if(v(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=ro(d,[`capture`],n),t=xse(d,n);if(!e||e.properties.some(e=>!v(e,`Property`)||T(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`capture`);if(r&&v(r,`Property`)&&Sse(r.value,n))f=`false`;else if(r&&v(r,`Property`)&&v(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},Cse=(e,t,n,r)=>{let i=Co(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},wse=(e,t,n)=>{let r=M(e.callee);if(!v(r,`MemberExpression`))return[];let i=So(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||v(o,`SpreadElement`))return a;let s=bse(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},Tse=(e,t,n)=>{let r=e.arguments[2];if(!r||v(r,`SpreadElement`))return null;let i=ro(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`signal`);if(!a||!v(a,`Property`))return null;let o=M(a.value);if(!v(o,`MemberExpression`)||N(o)!==`signal`)return null;let s=So(o.object,t,n);return s?`abort:${s}`:null},Ese=(e,t,n,r,i)=>{let a=sse.get(t)??[n.releaseMethodName],o=Co(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?Tse(e,r,i):null;return c&&s.push(c),lo.has(t)?[...s,...wse(e,r,i)]:s},wo=(e,t,n)=>{let r=S(e),i=r.parent,a=v(i,`AssignmentExpression`)&&i.right===r?i.left:v(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?So(a,t,n):null},Dse=(e,t)=>{let n=M(e.callee);if(v(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&be(e,n.name,oo)===so;if(!v(n,`MemberExpression`))return!1;let r=M(n.object);return N(n)===so&&v(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&yt(e,r.name,oo)},To=(e,t,n)=>{let r=M(e.callee);if(v(r,`MemberExpression`)){let i=N(r),a=i?ose.get(i):void 0;if(a){let r=Cse(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=wse(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!v(M(r.object),`ThisExpression`)){let e=So(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=So(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=So(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=go(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!v(a,`SpreadElement`)){let e=So(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},Eo=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return to(e,e=>{if(a||e.range[0]>=r)return;if(v(e,`ThrowStatement`)||v(e,`NewExpression`))return a=!0,!1;if(!v(e,`CallExpression`)||To(e,n,t).length>0||eo(e,n))return;let o=M(e.callee);if(v(o,`MemberExpression`)){if(v(M(o.object),`ThisExpression`)){let r=N(o),a=r?yo(t,r,e):null;if(a&&!Eo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=P(o,n);if(!(s&&!Eo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Ose=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(!v(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!v(i,`SpreadElement`)?M(i):null;if(!Dse(e,n.scopes)||!v(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||v(o,`SpreadElement`))return;let s=xo(o,t);if(!A(s))return;let c=new Map;bo(s,t,e=>{if(v(e,`CallExpression`))for(let r of To(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!Ja(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},Do=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!A(e)||r.has(e))return i;r.add(e);let a=null;to(e,t=>{v(t,`AwaitExpression`)&&j(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;bo(e,t,i=>{if(!v(i,`CallExpression`)||a!==null&&j(i)===e&&i.range[0]>a)return;let s=Eo(e,t,n.scopes,i.range[0]),c=M(i.callee);if(v(c,`Identifier`)){let e=Do(P(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(v(c,`MemberExpression`)&&v(M(c.object),`ThisExpression`)){let e=N(c),a=Do(e?yo(t,e,i):null,t,n,r);for(let e of a){let t=o.get(e)??[];t.push(i),o.set(e,t)}}for(let e of s?[]:To(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)Ja(e,r,n)&&i.add(t);return i},kse=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!A(e)||r.has(e))return i;r.add(e);let o=null;to(e,t=>{v(t,`AwaitExpression`)&&j(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),to(e,s=>{if(!v(s,`CallExpression`)||o!==null&&j(s)===e&&s.range[0]>o||Eo(e,t,n.scopes,s.range[0]))return;for(let r of To(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),Ja(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Ja(e,[s],n))return;let c=M(s.callee),l=v(c,`MemberExpression`)&&v(M(c.object),`ThisExpression`)?N(c):null,u=kse(l?yo(t,l,s):v(c,`Identifier`)?P(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Ja(e,r,n))continue;let a=1;[...r.keys()].every(t=>Ja(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},Ase=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(v(e,`CallExpression`))for(let i of To(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},Oo=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(A(n))return null;if(v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return n;n=n.parent}return null},jse=(e,t,n)=>{let r=n.scopes,i=new Map;bo(e,t,e=>{if(!v(e,`CallExpression`))return;if(n.cfg&&!U(e,n))return!1;let a=M(e.callee);if(!v(a,`MemberExpression`))return;let o=N(a),s=o?co.get(o):void 0;if(!s)return;let c=Co(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=>!!Oo(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Ga(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},ko=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||b(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),ko(a,t,n,r)):!1}if(v(i,`MemberExpression`)){let e=N(i),a=M(i.object);if(e!==`current`)return ko(a,t,n,r);if(!v(t,`ClassBody`)||!v(a,`MemberExpression`))return!1;let o=N(a),s=M(a.object);if(!o||!v(s,`ThisExpression`))return!1;let c=t.body?.find(e=>_o(e)===o);if(!c||!v(c,`PropertyDefinition`)||c.static||!v(c.value,`CallExpression`)||!D(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?Nse(l):null,d=!1;return u&&to(u,e=>{if(d||e.range[0]>=i.range[0]||!v(e,`AssignmentExpression`))return;let t=M(e.left);v(t,`MemberExpression`)&&v(M(t.object),`ThisExpression`)&&N(t)===o&&(d=!0)}),!d}return!1},Ao=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||b(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),Ao(a,t,n,r)):!1}if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(!v(a,`MemberExpression`))return!1;let o=N(a),s=M(a.object);if((o===`select`||o===`selectAll`)&&v(s,`Identifier`)&&(yt(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!v(e,`SpreadElement`)&&ko(e,t,n))}return Ao(a.object,t,n,r)},Mse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!v(e,`CallExpression`))return null;let c=M(e.callee),l=v(c,`MemberExpression`)?N(c):null;if(l&&co.has(l)&&v(c,`MemberExpression`)){let u=co.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=M(c.object),m=ko(p,i,s),h=Ao(p,i,s);for(;;){if(p=M(p),v(p,`CallExpression`)){p=M(p.callee);continue}if(v(p,`MemberExpression`)){p=M(p.object);continue}break}let g=v(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,y=u?Co(e,u,s,i):null,b=u?Ese(e,l,u,s,i):[],ee=b.flatMap(e=>n.get(e)??[]),te=b.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ne=ee.filter(t=>qa(e,[t],a)).length,re=Oo(e),ie=!!(re&&ee.some(t=>Oo(t)===re&&qa(e,[t],a))),ae=y?r.get(y)??1:1,oe=!!(y&&(qa(e,te,a)||qa(e,ee,a)&&(l===`addEventListener`||ie||ne>=ae)));if(!(!f&&!_&&!oe&&!m&&!h))return null;let se=wo(e,s,i),ce=M(c.object),le=v(ce,`Identifier`)?be(e,ce.name,`react-native`):null,ue=v(ce,`Identifier`)&&(le!==null&&uo.has(le)||s.isGlobalReference(ce)&&uo.has(ce.name)),de=l===`subscribe`&&se?[`returned:unsubscribe:${se}`,`returned:call:${se}`]:(l===`addEventListener`||l===`addListener`)&&ue&&se?[`returned:remove:${se}`]:[];return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:lo.has(l)?y:null,registrationCount:lo.has(l)?ae:1,releaseKeys:u?[...Ese(e,l,u,s,i),...de]:de}}let u=go(e,s);if(u===`setInterval`){let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!pse(e.arguments[0],i,s))return null;let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},jo=e=>(v(e,`MethodDefinition`)||v(e,`PropertyDefinition`))&&A(e.value)?e.value:null,Nse=e=>{let t=jo(e);return t&&A(t)?t.body??null:null},Pse=C({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||!Za(n))return;let r=t.body??[],i=r.find(e=>_o(e)===`componentWillUnmount`),a=Do(i?jo(i):null,t,e),o=kse(i?jo(i):null,t,e);for(let n of r){let r=_o(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=Nse(n);if(!i)continue;let s=mse(i,t,e.scopes),c=Ase(i,t,e.scopes),l=jse(i,t,e),u=use(i,t,e),d=[];if(bo(i,t,n=>{if(e.cfg&&!U(n,e))return!1;let r=Mse(n,s,c,l,t,e,u.has(n)||dse(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Ose(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 qa(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}}}})}),Fse=(e,t,n,r)=>{if(!A(e)||e.generator||r.has(e))return!1;r.add(e);let i=e.params[t];if(!v(i,`Identifier`))return!1;let a=n.symbolFor(i);if(!a)return!1;let o=M(e.body);if(v(o,`BlockStatement`)){let e=o.body[0];if(v(e,`ExpressionStatement`))o=e.expression;else if(v(e,`ReturnStatement`)&&e.argument)o=e.argument;else return!1}if(o=M(o),!v(o,`CallExpression`)||o.optional)return!1;if(v(o.callee,`MemberExpression`)&&N(o.callee)===`stopPropagation`&&v(o.callee.object,`Identifier`)&&n.symbolFor(o.callee.object)===a)return!0;let s=P(o.callee,n);return s?o.arguments.some((e,t)=>v(e,`Identifier`)&&n.symbolFor(e)===a&&Fse(s,t,n,new Set(r))):!1},Ise=(e,t)=>{if(!v(e.value,`JSXExpressionContainer`))return!1;let n=P(e.value.expression,t);return!!(n&&Fse(n,0,t,new Set))},Mo=(e,t,n={})=>{if(!e||!t)return e===t;let r=M(e),i=M(t);if(r!==e||i!==t)return Mo(r,i,n);if(e.type!==t.type)return!1;if(v(e,`ThisExpression`))return!0;if(v(e,`Identifier`)&&v(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(v(e,`PrivateIdentifier`)&&v(t,`PrivateIdentifier`))return e.name===t.name;if(v(e,`Literal`)&&v(t,`Literal`))return e.value===t.value;if(v(e,`MemberExpression`)&&v(t,`MemberExpression`))return e.computed===t.computed?Mo(e.object,t.object,n)&&Mo(e.property,t.property,e.computed?n:{}):!1;if(v(e,`CallExpression`)&&v(t,`CallExpression`)){if(!Mo(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Mo(e,i[t],n)):!1}return!1},Lse=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),Rse=/button|link|nav|anchor/i,zse=/(?:button|link|anchor)$/i,Bse=/^[A-Z]/,Vse=[`onClick`,`onPress`],Hse=e=>ta(M(e)),No=(e,t)=>{let n=M(e);if(ta(n))return!0;let r=x(n,t);return r?.kind!==`const`||!r.initializer?!1:ta(M(r.initializer))},Po=(e,t,n=new Set)=>{let r=M(e);if(No(r,t))return null;if(v(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return No(e,t)?Po(i,t,n):No(i,t)?Po(e,t,n):null}if(v(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&v(e.declarationNode,`VariableDeclarator`)&&v(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Po(e.initializer,t,n)):r}if(v(r,`ArrowFunctionExpression`)||v(r,`FunctionExpression`)||v(r,`FunctionDeclaration`)){let e=M(r.body);if(!v(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return v(t,`ExpressionStatement`)?t.expression:v(t,`ReturnStatement`)&&t.argument?M(t.argument):null}return r},Use=(e,t)=>!e.value||!v(e.value,`JSXExpressionContainer`)?null:Po(e.value.expression,t),Fo=(e,t)=>{let n=I(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(v(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!v(n.value,`JSXExpressionContainer`))return!0;let r=M(n.value.expression);return!v(r,`Literal`)||r.value!==!1},Wse=(e,t)=>{let n=I(e.attributes,t);if(!n?.value)return!1;if(v(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!v(n.value,`JSXExpressionContainer`))return!0;let r=M(n.value.expression);return v(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!Hse(r)},Io=e=>{if(v(e,`JSXText`))return e.value.trim().length>0;if(v(e,`JSXElement`))return Lo(e);if(v(e,`JSXFragment`))return e.children.some(e=>Io(e));if(!v(e,`JSXExpressionContainer`))return!1;let t=M(e.expression);return v(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:Hse(t)?!1:v(t,`JSXElement`)?Lo(t):v(t,`JSXFragment`)?t.children.some(e=>Io(e)):!0},Lo=e=>Wse(e.openingElement,`aria-label`)||Wse(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Io(e)),Gse=e=>{let t=I(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=si(t.value);return n!==null&&n<0},Kse=(e,t)=>sr(e,t)||Fo(e,`hidden`),qse=(e,t)=>{let n=e.openingElement,r=cr(n.name);if(!r)return!1;if(Xr.has(r)){if(!Lse.has(r))return!1}else if(t){if(!Bse.test(r)||!zse.test(r))return!1}else if(!Bse.test(r)||!Rse.test(r))return!1;return t?r===`a`&&!I(n.attributes,`href`)||Fo(n,`disabled`)||Fo(n,`isDisabled`)||Fo(n,`aria-disabled`)||Gse(n)?!1:Lo(e):!0},Jse=(e,t,n,r,i)=>{let a=e=>Jse(e,t,n,r,i);if(v(e,`JSXElement`)){if(i){let t=I(e.openingElement.attributes,`onClick`),r=I(e.openingElement.attributes,`onClickCapture`);if(t&&Ise(t,n)||r&&Ise(r,n))return!1}if(t&&Kse(e.openingElement,r))return!1;if(qse(e,t!==null)){if(!t)return!0;for(let r of Vse){let i=I(e.openingElement.attributes,r),a=i?Use(i,n):null;if(a&&Mo(t,a))return!0}}return e.children.some(e=>a(e))}return v(e,`JSXFragment`)?e.children.some(e=>a(e)):t?v(e,`JSXExpressionContainer`)?a(e.expression):v(e,`LogicalExpression`)?a(e.left)||a(e.right):v(e,`ConditionalExpression`)?a(e.consequent)||a(e.alternate):!1:!1},Ro=(e,t,n,r,i=!1)=>{if(!e||!v(e,`JSXElement`))return!1;let a=t?Use(t,n):null;return t&&!a?!1:e.children.some(e=>Jse(e,a,n,r,i))},Yse=new Set([`focus`,`select`]),Xse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Zse=new Set([`getElementById`,`querySelector`]),Qse=new Set([`global`,`globalThis`,`window`]),$se=e=>{if(!e)return null;let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return null;let n=M(t.callee);if(!v(n,`MemberExpression`))return null;let r=n.property;return v(r,`Identifier`)?r.name:null},ece=(e,t)=>{let n=$se(e);return n!==null&&(Yse.has(n)||t&&Xse.has(n))},tce=(e,t)=>{let n=M(e);return v(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!v(n,`MemberExpression`)||!v(n.object,`Identifier`)||!v(n.property,`Identifier`)||n.property.name!==`document`?!1:Qse.has(n.object.name)&&t.isGlobalReference(n.object)},nce=e=>{let t=M(e);return v(t,`Identifier`)||v(t,`Literal`)?!0:v(t,`TemplateLiteral`)&&t.expressions.every(e=>nce(e))},rce=(e,t)=>{if(!v(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!v(n.id,`Identifier`)||!n.init)return null;let r=M(n.init);if(!v(r,`CallExpression`)||r.arguments.length!==1||v(r.arguments[0],`SpreadElement`)||!nce(r.arguments[0]))return null;let i=M(r.callee);return!v(i,`MemberExpression`)||!v(i.property,`Identifier`)||!Zse.has(i.property.name)||!tce(i.object,t)?null:n.id.name},ice=e=>v(e,`ReturnStatement`)?e.argument===null:!v(e,`BlockStatement`)||e.body.length!==1?!1:ice(e.body[0]),ace=e=>{if(!v(e,`IfStatement`)||e.alternate||!ice(e.consequent))return!1;let t=M(e.test),n=v(t,`ChainExpression`)?t.expression:t;if(!v(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=M(n.callee),i=v(r,`MemberExpression`)?M(r.object):null;return v(r,`MemberExpression`)&&v(r.property,`Identifier`)&&r.property.name===`closest`&&v(i,`MemberExpression`)&&v(i.object,`Identifier`)&&v(i.property,`Identifier`)&&i.property.name===`target`&&v(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},oce=(e,t)=>{if(!v(e,`ExpressionStatement`))return!1;let n=M(e.expression);if(!v(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=M(n.callee);if(!v(r,`MemberExpression`))return!1;let i=M(r.object);return v(i,`Identifier`)&&i.name===t&&v(r.property,`Identifier`)&&r.property.name===`focus`},sce=(e,t,n)=>{if(!e)return!1;if(ece(e,n))return!0;if(!v(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!ace(r[0]),a=r[i],o=a?rce(a,t):null;return o?r.length===i+2&&oce(r[i+1],o):i>0?!1:r.every(e=>v(e,`ExpressionStatement`)&&ece(e.expression,n))},cce=(e,t)=>ta(e)&&(!v(e,`Identifier`)||t.isGlobalReference(e)),zo=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ConditionalExpression`)){let e=M(r.consequent),i=M(r.alternate),a=null;return cce(e,t)&&(a=zo(i,t,n)),cce(i,t)&&(a=zo(e,t,n)),a?{...a,isConditional:!0}:null}if(v(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),zo(e.initializer,t,n))}return v(r,`ArrowFunctionExpression`)||v(r,`FunctionExpression`)||v(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},lce=(e,t)=>{let n=zo(e,t);return n?sce(n.handlerFunction.body??null,t,!n.isConditional):!1},uce=(e,t)=>!e.value||!v(e.value,`JSXExpressionContainer`)?!1:lce(e.value.expression,t),Bo=e=>{let t=I(e.attributes,`role`);if(!t)return!1;let n=nr(t);return n!==null&&zr.has(n)},Vo=e=>{if(v(e,`Identifier`)||v(e,`PrivateIdentifier`))return e.name},dce=e=>{if(v(e,`FunctionExpression`)||v(e,`ArrowFunctionExpression`))return e},fce=(e,t)=>{for(let n of e.body){if(!v(n,`MethodDefinition`)&&!v(n,`PropertyDefinition`)||Vo(n.key)!==t)continue;let e=dce(n.value);if(e)return e}},pce=(e,t)=>{for(let n of e.properties){if(!v(n,`Property`)||Vo(n.key)!==t)continue;let e=dce(n.value);if(e)return e}},Ho=e=>{let t=Vo(e.property);if(t===void 0)return;let n=e.object;if(v(n,`ThisExpression`)){let n=e.parent;for(;n;){if(v(n,`ClassBody`))return fce(n,t);if(v(n,`ObjectExpression`)){let e=pce(n,t);if(e)return e}n=n.parent}return}if(v(n,`Identifier`)){let e=O(n,n.name);if(v(e?.initializer,`ObjectExpression`))return pce(e.initializer,t)}},mce=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),hce=e=>{if(!e)return!1;let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return!1;let n=t.callee;return!v(n,`MemberExpression`)||!v(n.property,`Identifier`)?!1:mce.has(n.property.name)},gce=e=>{if(!e)return!1;if(hce(e))return!0;if(v(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!v(e,`ExpressionStatement`)||!hce(e.expression))return!1;return!0}return!1},Uo=e=>{if(!e.value||!v(e.value,`JSXExpressionContainer`))return!1;let t=M(e.value.expression);return v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)?gce(t.body):v(t,`MemberExpression`)?gce(Ho(t)?.body):!1},_ce=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],vce=[`onClick`,`onClickCapture`],yce=new Set([...vce,..._ce].map(e=>e.toLowerCase())),bce=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),xce=(e,t)=>{let n=M(e);if(v(n,`ObjectExpression`))return n;if(!v(n,`Identifier`))return null;let r=x(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=M(r.initializer);return v(i,`ObjectExpression`)?i:null},Sce=(e,t,n,r)=>{let i=xce(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(v(e,`SpreadElement`)){if(!Sce(e.argument,t,n,r)){a=!1;break}continue}if(!v(e,`Property`)){a=!1;break}let i=T(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(bce.has(o)){a=!1;break}yce.has(o)&&n.set(o,e.value)}return r.delete(i),a},Cce=(e,t)=>{let n=new Map;for(let r of e)if(v(r,`JSXSpreadAttribute`)&&!Sce(r.argument,t,n,new Set))return null;return n},wce=new Set([`tr`,`td`,`th`,`canvas`]),Tce=new Set([`motion`,`styled`]),Ece=e=>{let t=e.name;if(!v(t,`JSXMemberExpression`))return null;let n=t.object;if(!v(n,`JSXIdentifier`)||!Tce.has(n.name))return null;let r=t.property.name;return r&&Xr.has(r)?r:null},Dce=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Oce=e=>{let t=I(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!v(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Dce.has(r.toLowerCase()))},kce=e=>{if(!v(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!v(e,`MemberExpression`))return null;let t=e.property;return v(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},Wo=e=>{if(!e||typeof e!=`object`)return!1;if(kce(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`&&Wo(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&Wo(n))return!0}return!1},Ace=e=>{let t=M(e);if(v(t,`Identifier`)){let e=O(t,t.name);if(!e?.initializer)return null;t=M(e.initializer)}return v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`)?t:null},jce=e=>!e.value||!v(e.value,`JSXExpressionContainer`)?null:Ace(e.value.expression),Mce=e=>{let t=jce(e);return t?Wo(t.body??null):!1},Nce=(e,t)=>e===`li`&&!!(I(t.attributes,`onMouseEnter`)||I(t.attributes,`onMouseOver`)),Pce=C({id:`click-events-have-key-events`,diffScope:`jsx-element`,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=Nr(e.settings),n=It(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Ece(r)??ir(r,e.settings);if(!Xr.has(i)||i===`label`||!wce.has(i)&&oi(i,r))return;let a=Cce(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=I(r.attributes,`onClick`)??I(r.attributes,`onClickCapture`),c=vce.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Uo(s)||s&&uce(s,e.scopes)||c&&lce(c,e.scopes))return;let l=c?Ace(c):null;l&&Wo(l.body??null)||Oce(r)||Nce(i,r)||s&&Mce(s)||Ro(r.parent,null,e.scopes,e.settings,!I(r.attributes,`onClickCapture`)&&!o.has(`onclickcapture`))||s&&Ro(r.parent,s,e.scopes,e.settings)||sr(r,e.settings)||Bo(r)||_ce.some(e=>I(r.attributes,e)||o.has(e.toLowerCase()))||e.report({node:r.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),Fce=qn({id:`client-localstorage-no-version`,severity:`warn`,category:`Bugs`,requires:[`react`],tags:[`test-noise`],title:`Unversioned localStorage key`,recommendation:`Retired: Storage can keep its version in the payload or use a separate migration path.`}),Go=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ice=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Go(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Ko=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],qo=(e,t,n,r)=>{if(!v(t,`MemberExpression`))return;let i=N(t),a=V(t.object,r);i&&a&&(Go(e.memberMutationCandidatesByReceiverIdentity,a,n),Ice(e,a,i,n))},Lce=(e,t,n)=>{if(v(t,`AssignmentExpression`)){let r=M(t.left),i=V(r,n);i&&Go(e.receiverAssignmentCandidatesByIdentity,i,t),qo(e,r,t,n)}else v(t,`UnaryExpression`)&&t.operator===`delete`&&qo(e,M(t.argument),t,n);if(!v(t,`CallExpression`))return;let r=M(t.callee);if(!v(r,`MemberExpression`)||N(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(v(i,`Literal`)&&typeof i.value==`string`&&a&&!v(a,`SpreadElement`)){let r=V(a,n);r&&(Go(e.memberMutationCandidatesByReceiverIdentity,r,t),Ice(e,r,i.value,t))}},Jo=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=M(e.callee);if(!v(r,`MemberExpression`))return!1;let i=M(r.object);return N(r)===`defineProperty`&&v(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&v(e.arguments[1],`Literal`)&&e.arguments[1].value===t},Rce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Yo=(e,t)=>{let n=M(e);return v(n,`MemberExpression`)&&N(n)===t?n.object:null},Xo=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Zo=(e,t)=>{let n=v(e,`FunctionDeclaration`)?e.id:v(e.parent,`VariableDeclarator`)&&e.parent.init===e&&v(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(!v(r,`CallExpression`)||M(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},zce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!v(i,`MethodDefinition`)||!v(a,`MethodDefinition`)||i.parent!==a.parent||!v(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Qo=(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(zce(o,s,e,n))return!0;if(Xo(o,s)){let t=Zo(s,n);return!t&&v(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Qo(e,t,n,a)))}if(Xo(s,o)){let r=Zo(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Qo(e,t,n,a)))}let r=Zo(o,n),i=Zo(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Qo(e,t,n,a)||r.some(e=>Qo(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},Bce=(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},Vce=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&A(M(i))?M(i):null},Hce=(e,t,n,r)=>$o(e,n).some(e=>e.callExpression!==t&&Qo(e.callExpression,t,n)&&es(e.callExpression,e.argumentIndex,n,r,new Map)),Uce=(e,t,n,r)=>{let i=Vce(M(e),n);if(!i||!A(i))return!1;let a=[];return s(i.body,e=>{if(e!==i.body&&A(e))return!1;v(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let i=V(e.argument,n);if(!i)return!1;let a=M(e.argument),o=v(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&Hce(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Yo(v(r,`AssignmentExpression`)?r.left:v(r,`UnaryExpression`)?r.argument:r,t);return v(r,`CallExpression`)&&(i=Jo(r,t,n)),i&&Qo(r,e,n)})})},Wce=new WeakMap,$o=(e,t,n=new Set)=>{let r=Wce.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 $o(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,M(t)===e?(e=t,r=!0):v(t,`Property`)&&t.value===e&&v(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(v(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||v(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||v(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(v(i,`VariableDeclarator`)&&i.init===e&&v(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(v(i,`AssignmentExpression`)&&i.right===e){let e=M(i.left),n=v(e,`Identifier`)?e:v(e,`MemberExpression`)&&v(M(e.object),`Identifier`)?M(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(v(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 Wce.set(e,c),c},Gce=(e,t,n)=>{if(!A(e))return!1;if(v(e,`ArrowFunctionExpression`)&&!v(e.body,`BlockStatement`))return V(e.body,n)===t;let r=[];return s(e.body,t=>{if(t!==e.body&&A(t))return!1;v(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>v(e,`ReturnStatement`)&&e.argument&&V(e.argument,n)===t)},Kce=(e,t)=>{let n=e;for(;n.parent&&M(n.parent)===n;)n=n.parent;let r=n.parent;if(!v(r,`VariableDeclarator`)||r.init!==n||!v(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},es=(e,t,n,r,i)=>{let a=Vce(e,n);if(!a||!A(a))return!0;if(a.generator)return!1;let o=i.get(a)??new Set;if(o.has(t))return!1;o.add(t),i.set(a,o);let s=a.params[t];if(!v(s,`Identifier`))return!0;let c=n.scopes.ownScopeFor(a)?.symbolsByName.get(s.name);if(!c)return!0;let l=`symbol:${c.id}`;if(r.memberMutationCandidatesByReceiverIdentity.get(l)?.some(e=>n.cfg.enclosingFunction(e)===a)||$o(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?es(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!Gce(a,l,n))return!1;let u=Kce(e,n);return u?$o(u,n).some(e=>es(e.callExpression,e.argumentIndex,n,r,i)):!1},qce=(e,t,n,r,i,a=[],o)=>{if(Uce(t,n,i,e))return!0;let s=V(t,i),c=M(t),l=v(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&Hce(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Ko(e,s,n):[],...a.flatMap(t=>Ko(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!Rce(i.scopes.scopeFor(e),u)&&!Qo(e,r,i))continue;let t=null;if(v(e,`AssignmentExpression`)){if(s!==null&&V(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Qo(e,r,i)){d=!0;break}continue}t=Yo(e.left,n)}else if(v(e,`UnaryExpression`)&&e.operator===`delete`)t=Yo(e.argument,n);else if(v(e,`CallExpression`)&&Jo(e,n,i)){let n=e.arguments[0];t=n&&!v(n,`SpreadElement`)?n:null}if(!t)continue;let c=V(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Qo(e,r,i)&&(d=!0))}return d||Bce(p,r,i)},Jce=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>Lce(t,n,e),hasProvenMutation:(n,r,i,a,o)=>qce(t,n,r,i,e,a,o)}},ts=(e,t)=>!!(e&&v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&e.property.name===t),ns=e=>Qr(e)||(e.kind!==`let`&&e.kind!==`var`||!v(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),rs=e=>v(e,`Identifier`)?e.name:v(e,`Literal`)&&typeof e.value==`string`?e.value:null,is=e=>{if(!v(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&v(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!v(n,`Property`)||!v(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!v(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!v(a,`TSTypeLiteral`))return null;let o=rs(n.key);if(!o)return null;for(let e of a.members)if(v(e,`TSPropertySignature`)&&rs(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},as=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},Yce=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=M(e.callee);if(v(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=M(n.object);return v(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},Xce=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(`.`)),Zce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Qce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),$ce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),ele=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),os=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`],tle=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:Xce.has(e)||Zce.test(e),ss=(e,t,n)=>{if(v(e,`TSTypeReference`)){if(!v(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return tle(r,n)&&!as(e,r,t)&&!we(e,r)}if(!v(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(v(i,`TSNullKeyword`)||v(i,`TSUndefinedKeyword`))){if(!ss(i,t,n))return!1;r=!0}return r},nle=(e,t)=>!v(e,`TSTypeReference`)||!v(e.typeName,`Identifier`)||!ss(e,t,`dom-event-target`)?null:e.typeName.name,cs=(e,t,n)=>v(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),ls=(e,t,n=new Set)=>{let r=M(e);if(cs(r,`window`,t))return[`Window`,`EventTarget`];if(cs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(v(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=is(e),a=i?nle(i,t):null;if(a)return os(a);let o=ns(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),ls(o,t,s)}if(v(r,`NewExpression`)){let e=M(r.callee);if(v(e,`Identifier`)&&Qce.has(e.name))return os(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(v(r,`MemberExpression`)){let e=N(r);if(e===`body`||e===`documentElement`)return os(`HTMLElement`)}if(v(r,`CallExpression`)){if(Yce(r,t))return os(`MediaQueryList`);let e=M(r.callee),i=v(e,`MemberExpression`)?N(e):null;if(i===`matchMedia`&&v(e,`MemberExpression`)&&ls(e.object,t,n).includes(`Window`))return os(`MediaQueryList`);if(i===`createElement`)return os(`HTMLElement`);if(i===`createElementNS`)return os(`SVGElement`);if(i&&$ce.has(i))return os(`Element`)}return[`EventTarget`]},us=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Qce]).some(t=>ds(e,t,n,new Set)),rle=(e,t,n)=>{let r=e,i=!1;for(;v(r,`TSAsExpression`)||v(r,`TSTypeAssertion`)||v(r,`TSSatisfiesExpression`);){if(ss(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(v(a,`Identifier`)){let e=t.symbolFor(a),n=e?Qr(e):null;if(!n)return!1;a=M(n)}return i&&v(a,`Identifier`)||i&&v(a,`MemberExpression`)||i&&v(a,`ObjectExpression`)?!1:i&&v(a,`NewExpression`)?us(a.callee,n,t):i},ile=e=>{if(!v(e,`MemberExpression`)||!v(M(e.object),`ThisExpression`))return null;let t=N(e);if(!t)return null;let n=e.parent;for(;n&&!v(n,`ClassBody`);){if((v(n,`FunctionDeclaration`)||v(n,`FunctionExpression`))&&!v(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!v(e,`PropertyDefinition`)||e.static)&&rs(e.key)===t)return e;return null},ale=e=>{if(!v(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&v(t,`TSTypeAnnotation`)?t.typeAnnotation:null},ole=(e,t,n)=>{if(!v(e,`CallExpression`))return null;let r=M(e.callee);if(!v(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||n.has(i.id)||i.kind!==`const`&&!(i.kind===`function`&&i.references.every(e=>e.flag===`read`)))return null;let a=i.initializer??i.declarationNode;return!A(a)||a.async||a.generator?null:(n.add(i.id),a)},ds=(e,t,n,r)=>{let i=M(e);if(v(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=Qr(e);return a?(r.add(e.id),ds(a,t,n,r)):!1}if(!v(i,`MemberExpression`)||N(i)!==t)return!1;let a=M(i.object);return cs(a,`window`,n)||cs(a,`globalThis`,n)},sle=(e,t,n)=>{let r=M(e);for(;v(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Qr(e);if(!i)return!1;n.add(e.id),r=M(i)}if(!v(r,`CallExpression`)||!D(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!D(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!v(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&ss(i,t,`dom-event-target`))},fs=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(rle(e,n,t))return!0;let a=M(e);if(v(a,`Identifier`)){if(i&&(cs(a,`document`,n)||cs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=is(e);if(o&&ss(o,n,t))return!0;let s=ns(e);return s?(r.add(e.id),fs(s,t,n,r)):!1}if(v(a,`NewExpression`))return us(a.callee,t,n);if(v(a,`CallExpression`)){let e=M(a.callee);if(i&&v(e,`MemberExpression`)&&$ce.has(N(e)??``)&&fs(e.object,t,n,r))return!0;let o=ole(a,n,r);return!!(o&&Ue(o,n,e=>fs(e,t,n,new Set(r)),void 0,`every`))}if(v(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(v(e,`Literal`)&&e.value===null)&&!(v(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>fs(e,t,n,new Set(r)))}if(!v(a,`MemberExpression`))return!1;let o=ile(a);if(o&&v(o,`PropertyDefinition`)){let e=ale(o);if(e&&ss(e,n,t)||o.value&&fs(o.value,t,n,r))return!0}if(!i)return!1;let s=N(a);if(s===`current`)return sle(a.object,n,r);let c=M(a.object);return s===`document`&&(cs(c,`window`,n)||cs(c,`globalThis`,n))?!0:s!==null&&ele.has(s)&&fs(c,t,n,r)},cle=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,lle=e=>cle.test(Ke(e??``)),ps=(e,t)=>{let n=M(e);return v(n,`Identifier`)?t.has(n.name):v(n,`SpreadElement`)?ps(n.argument,t):v(n,`ObjectExpression`)?n.properties.some(e=>v(e,`Property`)?ps(e.value,t):v(e,`SpreadElement`)&&ps(e.argument,t)):v(n,`ArrayExpression`)?n.elements.some(e=>e&&ps(e,t)):v(n,`ConditionalExpression`)?ps(n.consequent,t)||ps(n.alternate,t):v(n,`LogicalExpression`)?ps(n.left,t)||ps(n.right,t):v(n,`SequenceExpression`)?n.expressions.some(e=>ps(e,t)):!1},ms=(e,t,n)=>{let r=M(t);if(v(e,`Identifier`)){ps(r,n)&&n.add(e.name);return}if(v(e,`AssignmentPattern`)){ms(e.left,r,n);return}if(v(e,`ObjectPattern`)&&v(r,`ObjectExpression`)){for(let t of e.properties){if(!v(t,`Property`))continue;let e=rs(t.key);if(!e)continue;let i=r.properties.find(t=>v(t,`Property`)&&rs(t.key)===e);v(i,`Property`)&&ms(t.value,i.value,n)}return}if(v(e,`ArrayPattern`)&&v(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&ms(i,e,n)}},ule=(e,n,r)=>{if(!v(e,`CallExpression`)||!r.filename)return!1;let i=M(e.callee);if(!v(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,c=o.parent,l=t(o);if(!l||!v(c,`ImportDeclaration`)||typeof c.source.value!=`string`)return!1;let u=Le(r.filename,c.source.value,l);if(!u||!A(u))return!1;let d=u.params[n];if(!v(d,`Identifier`))return!1;let f=new Set([d.name]),p=!1;return s(u.body,e=>{if(p)return!1;if(v(e,`VariableDeclarator`)&&e.init){ms(e.id,e.init,f);return}if(v(e,`AssignmentExpression`)&&v(e.left,`Identifier`)&&ps(e.right,f)){f.add(e.left.name);return}if(v(e,`CallExpression`)){let t=M(e.callee);(v(t,`MemberExpression`)&&N(t)===`preventDefault`&&ps(t.object,f)||e.arguments.some(e=>!v(e,`SpreadElement`)&&ps(e,f)))&&(p=!0);return}if(v(e,`NewExpression`)&&e.arguments.some(e=>!v(e,`SpreadElement`)&&ps(e,f))){p=!0;return}let t=v(e,`AssignmentExpression`)?M(e.left):null;v(e,`AssignmentExpression`)&&(v(t,`MemberExpression`)&&ps(t.object,f)||ps(e.right,f))&&(p=!0)}),!p},dle=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),fle=new Set([`catch`,`finally`,`then`]),hs=(e,t,n=new Set)=>{let r=(e,n)=>{let i=M(e);if(A(i))return i.async;if(!v(i,`Identifier`))return!1;let a=t.symbolFor(i);if(!a||n.has(a.id))return!1;let o=a.initializer??a.declarationNode,s=new Set(n);return s.add(a.id),r(o,s)},i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);if(!e||!e.initializer||n.has(e.id))return!1;let r=new Set(n);return r.add(e.id),hs(e.initializer,t,r)}if(v(i,`NewExpression`)){let e=M(i.callee);return v(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(v(a,`Identifier`))return r(a,n);if(!v(a,`MemberExpression`))return!1;let o=M(a.object);return fle.has(N(a)??``)?hs(a.object,t,n):!!(dle.has(N(a)??``)&&v(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},gs=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),ple=new Set([`catch`,`finally`,`then`]),_s=e=>{if(!A(e))return!1;let t=!1;return s(e,n=>{if(t||n!==e&&A(n))return!1;v(n,`CallExpression`)&&v(n.callee,`MemberExpression`)&&N(n.callee)===`preventDefault`&&(t=!0)}),t},mle=(e,t)=>{let n=!1;return s(e,e=>{if(n)return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&v(e.left,`Identifier`)&&e.left.name===t&&_s(e.right)&&(n=!0)}),n},hle=e=>{if(!e)return!1;if(_s(e))return!0;if(v(e,`Identifier`)){let t=O(e,e.name);return t?_s(t.initializer??void 0)?!0:mle(t.scopeOwner,e.name):!1}if(v(e,`MemberExpression`)){let t=Ho(e);return t?_s(t):!1}return!1},vs=(e,t)=>{if(!e)return;let n=M(e);if(A(n))return n;if(v(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&A(r))return r;let i=O(n,n.name),a;return e&&i&&s(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(v(r,`AssignmentExpression`)&&r.operator===`=`&&v(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=M(r.right);a=A(e)?e:void 0}}),a}return v(n,`MemberExpression`)?Ho(n):void 0},gle=(e,t,n)=>{if(!ule(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(M(e)===r||v(e,`UnaryExpression`)&&e.operator===`!`||v(e,`LogicalExpression`)){r=e;continue}return v(e,`IfStatement`)&&e.test===r||v(e,`ConditionalExpression`)&&e.test===r||v(e,`WhileStatement`)&&e.test===r||v(e,`DoWhileStatement`)&&e.test===r||v(e,`ForStatement`)&&e.test===r}return!1},_le=(e,t)=>{let n=vs(e,t);if(!n){let n=e?M(e):void 0;if(!n||!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<n.range[0]&&e.flag!==`read`))}let r=new Map,i=(e,n=new Set)=>{let r=M(e);if(v(r,`Identifier`)){if(gs.has(r.name)&&t.scopes.isGlobalReference(r))return!0;let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let a=Qr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!v(r,`MemberExpression`))return!1;let a=M(r.object);return gs.has(N(r)??``)&&v(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&M(n.parent)===M(n);)n=n.parent;let r=n.parent;if(v(r,`NewExpression`)){let e=M(r.callee);return r.arguments.some(e=>e===n)&&v(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!v(r,`CallExpression`))return!1;if(M(r.callee)===M(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=M(r.callee);if(i(a))return!1;if(v(a,`Identifier`)||!v(a,`MemberExpression`))return!0;let o=N(a);return!(ple.has(o??``)&&hs(a.object,t.scopes)||o===`addEventListener`&&fs(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!A(e))return!1;let c=r.get(e)??new Set;if(c.has(n))return!1;c.add(n),r.set(e,c);let l=e.params[n];if(!l)return!i;let u=v(l,`AssignmentPattern`)?l.left:l;if(!v(u,`Identifier`))return!(i&&v(u,`ObjectPattern`));let d=t.scopes.symbolFor(u);if(!d)return!1;let f=new Set([d]),p=new Set,m=e=>{let n=M(e);if(!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&f.has(r))},h=e=>{let n=M(e);if(m(n))return!0;if(v(n,`SpreadElement`))return h(n.argument);if(v(n,`MemberExpression`)){let e=M(n.object);if(v(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&p.has(n))return!0}let r=N(n);if(v(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>v(e,`Property`)&&Vo(e.key)===r);return!!(v(t,`Property`)&&h(t.value))}if(v(e,`ArrayExpression`)&&v(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&h(t))}return!1}return v(n,`ObjectExpression`)?n.properties.some(e=>v(e,`Property`)?h(e.value):v(e,`SpreadElement`)&&h(e.argument)):v(n,`ArrayExpression`)?n.elements.some(e=>e&&h(e)):v(n,`ConditionalExpression`)?h(n.consequent)||h(n.alternate):v(n,`LogicalExpression`)?h(n.left)||h(n.right):v(n,`SequenceExpression`)?n.expressions.some(h):!1},g=(e,n)=>{let r=M(n);if(v(e,`Identifier`)){if(!h(r))return;let n=t.scopes.symbolFor(e);n&&f.add(n);return}if(v(e,`AssignmentPattern`)){g(e.left,r);return}if(v(e,`RestElement`)&&v(e.argument,`Identifier`)){if(!h(r))return;let n=t.scopes.symbolFor(e.argument);n&&p.add(n);return}if(v(e,`ObjectPattern`)&&v(r,`ObjectExpression`)){for(let t of e.properties){if(v(t,`RestElement`)){g(t,r);continue}if(!v(t,`Property`))continue;let e=Vo(t.key);if(!e)continue;let n=r.properties.find(t=>v(t,`Property`)&&Vo(t.key)===e);v(n,`Property`)&&g(t.value,n.value)}return}if(v(e,`ArrayPattern`)&&v(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&g(n,e)}},_=!1;return s(e.body,n=>{if(_||n!==e.body&&A(n)&&!a(n))return!1;if(v(n,`VariableDeclarator`)&&n.init){g(n.id,n.init);return}if(v(n,`AssignmentExpression`)&&h(n.right)){if(v(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&f.add(e)}else _=!0;return}if(v(n,`AssignmentExpression`)){let e=M(n.left),t=M(n.right);if(v(e,`MemberExpression`)&&N(e)===`returnValue`&&m(e.object)&&v(t,`Literal`)&&t.value===!1){_=!0;return}}if(v(n,`ReturnStatement`)&&n.argument&&h(n.argument)){_=!0;return}if(v(n,`NewExpression`)){n.arguments.some(e=>!v(e,`SpreadElement`)&&h(e))&&(_=!0);return}if(!v(n,`CallExpression`))return;let r=M(n.callee);if(v(r,`MemberExpression`)&&N(r)===`preventDefault`&&m(r.object)){_=!0;return}let i=n.arguments.findIndex(e=>h(e));if(i<0)return;let s=vs(n.callee,t);(!s&&!gle(n,i,t)||s&&o(s,i))&&(_=!0)}),_};return o(n,0,!0)},ys=(e,t)=>!!e.properties?.some(e=>v(e,`Property`)&&v(e.key,`Identifier`)&&e.key.name===`passive`&&v(e.value,`Literal`)&&e.value.value===t),bs=C({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(lle(e.filename))return Jt;let t=Jce(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=M(n.callee);if(!ts(a,`addEventListener`)||!fs(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,ls(a.object,e.scopes),t=>fs(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!v(o,`Literal`)||typeof o.value!=`string`||!mee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||v(c,`SpreadElement`))return;let l=vs(c,e)??c,u=r.get(l);if(u===void 0&&(u=hle(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=_le(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!v(f,`ObjectExpression`)||ys(f,!1)||ys(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),ts(M(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),xs=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},Ss=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},Cs=e=>xs(e)||Ss(e),vle=(e,t)=>{let n=t?Cn(e):e;return v(n,`Identifier`)?n.name:v(n,`MemberExpression`)&&v(n.property,`Identifier`)?n.property.name:null},ws=(e,t=!1)=>{let n=S(e);for(;;){let e=n.parent;if(!e||!v(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=vle(e.callee,t);if(!r||!fn.has(r))return n;n=S(e)}},yle=(e,t)=>{let n=ws(e,t),r=n.parent;return r&&v(r,`VariableDeclarator`)&&v(r.id,`Identifier`)&&r.init===n&&Cs(r.id.name)?r.id.name:null},Ts=(e,t=!1)=>(v(e,`FunctionDeclaration`)||v(e,`FunctionExpression`))&&e.id?Cs(e.id.name)?e.id.name:null:yle(e,t),Es=e=>v(e,`MemberExpression`)&&!e.computed&&v(e.property,`Identifier`)?e.property.name:null,ble=[`react`,`use-context-selector`,`react-tracked`],Ds=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!v(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!ble.includes(t.source.value)?null:t.source.value},Os=e=>Ds(e)!==null&&!!(e&&(v(e.declarationNode,`ImportDefaultSpecifier`)||v(e.declarationNode,`ImportNamespaceSpecifier`))),xle=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!v(n.declarationNode,`VariableDeclarator`)||!v(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!v(r,`Property`)||T(r,{allowComputedString:!0})!==`createContext`)return!1;let i=M(n.initializer);return v(i,`Identifier`)&&Os(x(i,t))},Sle=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){if(xle(n,t))return!0;let e=x(n,t);return Ds(e)!==null&&!!(e&&Pn(e.declarationNode)===`createContext`)}if(!v(n,`MemberExpression`)||(Es(n)??(n.computed&&v(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=M(n.object);return v(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Os(x(r,t)):!1},ks=(e,t)=>{let n=M(e);return v(n,`CallExpression`)&&Sle(n.callee,t)},Cle=(e,t)=>{let n=new Set;if(!v(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(v(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!v(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!v(r,`VariableDeclarator`)||!v(r.id,`Identifier`)||!r.init||!E(r.init)||!ks(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},As=e=>{if(v(e,`FunctionDeclaration`)&&v(e.id,`Identifier`))return e.id;let t=S(e),n=t.parent;if(v(n,`VariableDeclarator`)&&v(n.id,`Identifier`))return n.id;if(v(n,`AssignmentExpression`)&&n.right===t&&v(n.left,`Identifier`))return n.left;if(v(n,`CallExpression`)){let e=n.parent;if(v(e,`VariableDeclarator`)&&v(e.id,`Identifier`))return e.id}return null},js=e=>As(e)?.name??null,Ms=(e,t)=>{let n=As(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[]},wle=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Ns=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(v(t,`VariableDeclaration`))return t.kind===`const`;if(!wle.has(t.type))return!1;t=t.parent??null}return!1},Tle=(e,t)=>{if(!v(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=Pn(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Ele=(e,t)=>{if(!Tle(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=$e(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Dle=(e,t,n,r)=>{if(!v(e,`JSXIdentifier`))return!1;if(r&&Tle(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},Ole=(e,t,n)=>v(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Dle(e.object,t,n,!0):Ele(e,n)||Dle(e,t,n,!1),kle="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.",Ale=new Set([`flatMap`,`map`]),jle=new Set([`forwardRef`,`memo`]),Mle=new Set([`useCallback`,`useMemo`]),Nle=new Set([`createElement`]),Ple=e=>{let t=M(e);return v(t,`ObjectExpression`)||v(t,`ArrayExpression`)||v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`)},Fle=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&v(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&p(n,e.scopeOwner)?!0:!!(e.initializer&&v(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},Ile=e=>A(e.scopeOwner)?e.scopeOwner:j(e.scopeOwner),Lle=(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},Ps=e=>{let t=ws(e);return!!(t.parent&&v(t.parent,`ExportDefaultDeclaration`))},Rle=e=>{if(!v(e,`FunctionExpression`)||!e.id)return!1;let t=S(e);if(ws(e)!==t)return!1;let n=t.parent;return!(n&&v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`))},zle=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=M(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),v(a,`ConditionalExpression`)){let e=M(a.test);v(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(v(a,`LogicalExpression`)){let e=M(a.left);if(v(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(v(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(v(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(v(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(v(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(v(e,`SpreadElement`)?e.argument:e);continue}if(v(a,`CallExpression`)&&D(a,Nle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&v(e,`ObjectExpression`))for(let t of e.properties){if(!v(t,`Property`)||t.computed)continue;let e=t.key;(v(e,`Identifier`)&&e.name===`children`||v(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(v(a,`Identifier`)){let e=O(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Ns(e)&&Fle(e,a)&&j(e.bindingIdentifier)===j(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(v(a,`JSXElement`)||v(a,`JSXFragment`)){r.push(...a.children);continue}v(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Fs=(e,t,n)=>Ue(t,n.scopes,t=>zle(t,e,n),n.cfg),Ble=(e,t,n)=>e.arguments[0]===t&&D(e,Mle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(v(e.callee,`MemberExpression`)&&Ale.has(N(e.callee)??``)),Vle=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=P(e.callee,n.scopes);if(!i||!A(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!v(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=S(e.identifier),r=t.parent;return!!(r&&v(r,`CallExpression`)&&r.callee===t&&j(r)===i&&p(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Fs(r,i,n))}))return!1;let o=j(e);return!!(o&&(Ts(o)!==null||Ps(o))&&Fs(e,o,n))},Hle=(e,t)=>{let n=Ms(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=S(e.identifier),r=n.parent;return!r||!v(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&D(r,jle,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:Ble(r,n,t)||!Vle(r,n,t)})},Ule=(e,t)=>{let n=S(e),r=n.parent;if(!r||!v(r,`CallExpression`))return!1;let i=j(r);return!i||Ts(i)===null&&!Ps(i)?!1:r.arguments[0]===n&&v(r.callee,`MemberExpression`)&&Ale.has(N(r.callee)??``)&&Fs(r,i,t)?!0:r.callee===n&&Fs(r,i,t)||r.arguments.some(e=>e===n)&&Vle(r,n,t)},Wle=C({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)&&U(t,e),n=new Set;return{Program(t){n=Cle(t,e.scopes)},JSXOpeningElement(r){if(!Ole(r.name,n,e.scopes))return;let i=j(r);if(!i)return;let a=Ule(i,e),o=Ps(i);if((Rle(i)||Hle(i,e))&&!a&&!o||Ts(i)===null&&!o&&!a)return;let s=H(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!v(c,`JSXExpressionContainer`))return;let l=M(c.expression);if(!v(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Lee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:m(n.identifier)}))).toSorted((e,t)=>Lle(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!Ple(d.assignedExpression))return;e.report({node:s,message:kle});return}let f=O(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Fle(f,l)&&Ile(f)===i&&Ple(f.initializer)&&e.report({node:s,message:kle})}}}}),Gle=[`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`],Is=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`:Gle.find(t=>e===t||e.startsWith(`${t}/`))??null,Kle=/[\p{L}\p{Nd}]/u,Ls=e=>Kle.test(e),Rs=e=>Rr.has(e),zs=(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},G=e=>{let t=[],n=0;for(let r of zs(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},qle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Jle=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),Yle=e=>e.toLowerCase()===`hidden`,Xle=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=G(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},Zle=e=>{let t=I(e.attributes,`className`)??I(e.attributes,`class`);if(!t)return!1;let n=R(t);return n===null?t.value&&v(t.value,`JSXExpressionContainer`)&&v(t.value.expression,`TemplateLiteral`)?Xle(t.value.expression).some(Yle):!1:G(n).some(Yle)},Qle=e=>{let t=I(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(v(n,`Literal`))return n.value!==`false`&&!!n.value;if(v(n,`JSXExpressionContainer`)){let e=M(n.expression);if(v(e,`Literal`))return!!e.value}return!0},$le={display:`none`,visibility:`hidden`},eue=e=>{let t=I(e.attributes,`style`);if(!t?.value||!v(t.value,`JSXExpressionContainer`))return!1;let n=M(t.value.expression);if(!v(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!v(e,`Property`)||e.computed)continue;let t=e.key,n=v(t,`Identifier`)?t.name:v(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=$le[n];if(!r)continue;let i=M(e.value);if(v(i,`Literal`)&&i.value===r)return!0}return!1},tue=(e,t)=>sr(e,t)||Qle(e)||eue(e),nue=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=I(t.attributes,`type`),r=n?nr(n):null;return!r||r.toLowerCase()!==`file`||!Zle(t)?!1:!!I(t.attributes,`ref`)},rue=[`link`,`canvas`],iue=new Set([`alt`,`aria-label`,`aria-labelledby`]),Bs=`label`,aue=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??[]}},Vs=(e,t)=>{let n=new Set(t);for(let t of e){if(v(t,`JSXSpreadAttribute`))return!0;if(!v(t,`JSXAttribute`)||!v(t.name,`JSXIdentifier`))continue;let e=Tt(t.name);if(e&&(iue.has(e)||n.has(e)))return t.value?v(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Hs=e=>{if(!e?.value)return!1;let t=e.value;if(v(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(v(t,`JSXExpressionContainer`)){let e=M(t.expression);if(v(e,`JSXEmptyExpression`))return!1;if(v(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(v(e,`TemplateLiteral`)){let t=it(e);if(t!==null)return t.trim().length>0}return!0}return!0},oue=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!v(r,`JSXAttribute`))&&Tt(r.name)?.toLowerCase()===n)return r}},sue=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(v(r,`SpreadElement`))return null;let e=M(r);if(v(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(v(e,`TemplateLiteral`)){let t=it(e);if(t===null)return null;n.push(t);continue}if(v(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||v(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(v(e,`ArrayExpression`)){let r=sue(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},cue=(e,t)=>{if(v(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!v(e,`MemberExpression`))return!1;let n=M(e.object);return v(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Us=(e,t)=>{let n=M(e);if(v(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(v(n,`TemplateLiteral`)){let e=it(n);return e===null||e.trim().length>0}if(v(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(v(n,`UnaryExpression`)&&n.operator===`void`||v(n,`UnaryExpression`)&&n.operator===`!`||v(n,`ArrowFunctionExpression`)||v(n,`FunctionExpression`)||v(n,`ClassExpression`))return!1;if(v(n,`ArrayExpression`)){let e=sue(n,t);return e===null||e.trim().length>0}if(cue(n,t)||v(n,`CallExpression`)&&cue(n.callee,t))return!1;if(v(n,`ConditionalExpression`))return Us(n.consequent,t)&&Us(n.alternate,t);if(v(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Us(e,t):!1}if(v(n,`LogicalExpression`)){let e=M(n.left);if(!v(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Us(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Us(r?n.right:e,t):Us(r?e:n.right,t)}return!0},lue=(e,t)=>e?.value?v(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:v(e.value,`JSXExpressionContainer`)?Us(e.value.expression,t):!0:!1,Ws=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},uue=e=>typeof e==`string`?Ws(`literal`,e):typeof e==`number`?Ws(`literal`,String(e)):null,Gs=e=>{let t=M(e);if(v(t,`Identifier`))return t.name;if(v(t,`MemberExpression`)){if(t.computed)return null;let e=Gs(t.object),n=t.property;return e===null||!v(n,`Identifier`)?null:`${e}.${n.name}`}return null},due=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=Gs(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return Ws(`template`,r.join(``))},Ks=e=>{let t=M(e);if(v(t,`Literal`)){let e=uue(t.value);return e===null?[]:[e]}if(v(t,`TemplateLiteral`)){let e=it(t);if(e!==null){let t=Ws(`literal`,e);return t===null?[]:[t]}let n=due(t);return n===null?[]:[n]}if(v(t,`ConditionalExpression`))return[...Ks(t.consequent),...Ks(t.alternate)];let n=Gs(t);if(n!==null){let e=Ws(`identifier`,n);return e===null?[]:[e]}return[]},fue=e=>{if(!e?.value)return[];let t=e.value;if(v(t,`Literal`)){let e=uue(t.value);return e===null?[]:[e]}return v(t,`JSXExpressionContainer`)?Ks(t.expression):[]},pue=/^Icon($|[A-Z0-9_])|Icon$/,mue=(e,t)=>{if(t.iconComponentNames.has(e)||pue.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},qs=(e,t,n)=>{let r=M(e);if(v(r,`JSXEmptyExpression`))return!1;if(v(r,`Literal`))return typeof r.value==`string`?Ls(r.value):typeof r.value==`number`;if(v(r,`TemplateLiteral`)){let e=it(r);return e===null||Ls(e)}return v(r,`ConditionalExpression`)?qs(r.consequent,t,n)||qs(r.alternate,t,n):v(r,`LogicalExpression`)?r.operator===`&&`?qs(r.right,t,n):qs(r.left,t,n)||qs(r.right,t,n):v(r,`JSXElement`)||v(r,`JSXFragment`)?Js(r,t,n):!0},Js=(e,t,n)=>{if(t>n.depth)return!1;if(v(e,`JSXExpressionContainer`))return qs(e.expression,t,n);if(v(e,`JSXText`))return Ls(e.value);if(v(e,`JSXFragment`))return e.children.some(e=>Js(e,t+1,n));if(v(e,`JSXElement`)){if(Vs(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=ir(e.openingElement,n.settings);if(xs(t)&&!n.controlComponents.includes(t)&&!mue(t,n))return!0}for(let r of e.children)if(Js(r,t+1,n))return!0}return!1},hue=(e,t)=>Vs(e.openingElement.attributes,t.customAttributes)||v(e.openingElement.name,`JSXIdentifier`)&&e.openingElement.name.name===Bs&&lue(I(e.openingElement.attributes,`title`),t.scopes)?!0:e.children.some(e=>Js(e,1,t)),gue=e=>v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`)||v(e,`FunctionDeclaration`),Ys=(e,t)=>{if(e===Bs||e===`Label`)return!0;let n=I(t.attributes,`component`);return n?nr(n)===Bs:!1},_ue=(e,t)=>{let n=e.parent,r=!1;for(;n&&!v(n,`JSXAttribute`);){if(gue(n)&&(r=!0),v(n,`JSXElement`)){let e=n.openingElement;if(tue(e,t.settings))return`hidden`;let i=ir(e,t.settings);if(!r&&Ys(i,e)&&hue(n,t)||xs(i)&&Hs(I(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Xs=e=>{let t=e.parent;for(;t;){if(v(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},vue=e=>{let t=e.parent;for(;t;){if(v(t,`VariableDeclarator`))return v(t.id,`Identifier`)?t.id.name:null;if(gue(t)){if(v(t,`FunctionDeclaration`)&&t.id&&v(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&v(e,`VariableDeclarator`)&&v(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Zs=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){t.add(n.name);return}if(v(n,`CallExpression`)){let e=M(n.callee);v(e,`Identifier`)&&t.add(e.name);return}if(v(n,`LogicalExpression`)){Zs(n.left,t),Zs(n.right,t);return}v(n,`ConditionalExpression`)&&(Zs(n.consequent,t),Zs(n.alternate,t))},Qs=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(v(i,`JSXExpressionContainer`)){Zs(i.expression,r);continue}(v(i,`JSXElement`)||v(i,`JSXFragment`))&&Qs(i,t+1,n,r)}},yue=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=I(t.attributes,`type`);if(!n)return!0;let r=nr(n);return r===null?!0:Jle.has(r.toLowerCase())},$s=C({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=Nr(e.settings),n=aue(e.settings),r=It(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={scopes:e.scopes,depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!Is(t)))for(let t of e.specifiers??[]){if(!v(t.local,`Identifier`))continue;let e=t.local.name;v(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=ir(a,e.settings);if(Ys(u,a)&&hue(i,l)&&!Xs(i)){let e=I(a.attributes,`htmlFor`);for(let t of fue(e))o.add(t);u===Bs&&Qs(i,1,l,s)}if(rue.includes(u)||n.ignoreElements.includes(u))return;let d=I(a.attributes,`role`),f=d?nr(d):null;if(f&&n.ignoreRoles.includes(f)||tue(a,e.settings)||nue(u,a))return;let p=Xr.has(u),m=(!t||!qle.has(u))&&oi(u,a),h=t&&f===`separator`&&!I(a.attributes,`tabIndex`),g=f!==null&&Rs(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=I(a.attributes,`type`),t=e?nr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Hs(I(a.attributes,`value`)))return}if(!(p&&lue(oue(a.attributes,`title`),e.scopes))&&!(yue(u,a)&&Hs(I(a.attributes,`placeholder`)))&&!Vs(a.attributes,n.labelAttributes)&&!Xs(i)&&_ue(i,l)===null){if(u!==`select`){for(let e of i.children)if(Js(e,1,l))return}c.push({opening:a,controlIdKeys:fue(I(a.attributes,`id`)),enclosingBindingName:vue(i)})}}},"Program:exit"(){for(let t of c)t.controlIdKeys.some(e=>o.has(e))||t.enclosingBindingName!==null&&s.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`."})}}}}),ec=(e,t,n)=>{let r=M(e);if(v(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)ec(e,t,n);return}if(v(r,`JSXFragment`)){for(let e of r.children)ec(e,t,n);return}if(n){if(v(r,`JSXExpressionContainer`)){ec(r.expression,t,!0);return}if(v(r,`ConditionalExpression`)){let e=Kt(Cn(r.test));if(e!==null){ec(e?r.consequent:r.alternate,t,!0);return}ec(r.consequent,t,!0),ec(r.alternate,t,!0);return}if(v(r,`LogicalExpression`)){for(let e of ln(r))ec(e,t,!0);return}if(v(r,`ArrayExpression`)){for(let e of r.elements)e&&!v(e,`SpreadElement`)&&ec(e,t,!0);return}if(v(r,`SequenceExpression`)){if(r.expressions.length===0)return;ec(Cn(r),t,!0)}}},tc=(e,t={})=>{let n=[];for(let r of e.children)ec(r,n,t.includeStaticExpressionBranches===!0);return n},bue=new Set([`grid`,`table`,`treegrid`]),xue=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(v(i,`JSXAttribute`)){if(Tt(i.name)?.toLowerCase()===t)return!1;continue}if(v(i,`JSXSpreadAttribute`)&&Or(i.argument,t,!1,n.scopes))return!0}}return!1},nc=(e,t,n,r)=>n.isUnknown&&xue(e,t,r),Sue=e=>e.attribute?R(e.attribute):ar(e.expression),rc=(e,t,n)=>{if(e.attribute)return jr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=M(e.expression),i=ar(r);return i===null?v(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Ar(r)||v(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Cue=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=Mt(e.attributes,n,!1);if(nc(e,n,r,t))return null;if(rc(r,n.startsWith(`aria-`),t))return!0}return!1},ic=e=>{for(let t of e){if(v(t,`JSXElement`)&&k(t.openingElement)===`caption`)return t;if(v(t,`JSXFragment`)){let e=ic(t.children);if(e)return e}}return null},wue=(e,t)=>sr(e.openingElement,t.settings)?!1:Mr(e,t.settings),Tue=(e,t,n)=>{let r=e.parent;for(;r;){if(v(r,`JSXElement`)){if(sr(r.openingElement,n.settings))return!1;if(k(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Eue=(e,t)=>{let n=e.parent;for(;n;){if(v(n,`JSXElement`)&&sr(n.openingElement,t.settings))return!0;n=n.parent}return!1},ac=C({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(k(n)!==`table`||hr(e,n)||sr(n,e.settings)||Eue(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>nc(n,t,Mt(n.attributes,t,!1),e)))return;let r=Mt(n.attributes,`children`,!1),i=Mt(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=Mt(n.attributes,`role`,!1);if(nc(n,`role`,a,e))return;if(a.isPresent){let t=Sue(a);if(t===null){if(rc(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Lr.has(e));if(e&&!bue.has(e))return}}if(!tc(t).some(n=>k(n)===`th`&&Tue(n,t,e)))return;let o=ic(t.children),s=Cue(n,e);s!==null&&(o&&wue(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.`}))}})}),oc=(e,t,n)=>{let r=M(e);if(A(r))return[r];if(v(r,`Identifier`)){if(n){let e=x(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:A(e.declarationNode)?[e.declarationNode]:e.initializer&&A(M(e.initializer))?[M(e.initializer)]:[]}let e=O(t,r.name);return e?.initializer&&A(M(e.initializer))?[M(e.initializer)]:[]}if(v(r,`ConditionalExpression`))return[...oc(r.consequent,t,n),...oc(r.alternate,t,n)];if(v(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?oc(e,t,n):[]}return[]},sc=(e,t)=>A(e)?v(e.body,`BlockStatement`)?Ie(e).flatMap(e=>e.argument?oc(e.argument,e,t):[]):oc(e.body,e,t):[],cc=(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=S(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&v(c,`MemberExpression`)&&c.object===o&&N(c)===`current`&&(o=S(c),c=o.parent),n.includeReactRefContainers&&v(c,`CallExpression`)&&c.arguments[0]===e&&D(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=S(c),c=o.parent),!v(c,`VariableDeclarator`)||c.init!==o||!v(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},lc=(e,t,n)=>D(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),uc=(e,t)=>lc(e,Tn,t),Due=new Set([`useMemo`,`useCallback`,`useRef`]),Oue=new Set([`useRef`]),dc=new Set([`debounce`,`throttle`]),fc=new Set([`cancel`,`flush`]),kue=new Set([`document`,`window`]),Aue=new Set([`then`,`catch`,`finally`]),pc=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),mc=e=>{if(!v(e,`CallExpression`))return!1;let t=M(e.callee);if(v(t,`Identifier`)){if(!dc.has(t.name))return!1;let e=O(t,t.name);return!e?.initializer||!v(e.initializer,`ImportSpecifier`)&&!v(e.initializer,`ImportDefaultSpecifier`)?!1:pc(dt(t,t.name))}if(v(t,`MemberExpression`)&&dc.has(N(t)??``)){let e=M(t.object);if(!v(e,`Identifier`))return!1;let n=O(e,e.name);return!n?.initializer||!v(n.initializer,`ImportNamespaceSpecifier`)&&!v(n.initializer,`ImportDefaultSpecifier`)?!1:pc(dt(e,e.name))}return!1},jue=e=>{if(!v(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=M(t);if(mc(n))return n;if(!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return null;if(!v(n.body,`BlockStatement`)){let e=M(n.body);return mc(e)?e:null}for(let e of n.body.body??[])if(v(e,`ReturnStatement`)&&e.argument){let t=M(e.argument);if(mc(t))return t}return null},Mue=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=ro(r,[`trailing`],t,n);return i?i.properties.some(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`trailing`&&v(e.value,`Literal`)&&e.value.value===!1):!1},hc=e=>{let t=M(e);for(;v(t,`MemberExpression`);)t=M(t.object);return v(t,`Identifier`)?t:null},gc=(e,t)=>{let n=hc(e);return n?t.symbolFor(n)?.id??null:null},_c=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`))return fc.has(N(n)??``)?gc(n.object,t):null;if(!v(n,`Identifier`))return null;let r=O(n,n.name)?.bindingIdentifier?.parent;if(!v(r,`Property`))return null;let i=v(r.key,`Identifier`)?r.key.name:v(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!fc.has(i))return null;let a=r.parent,o=a?.parent;return!v(a,`ObjectPattern`)||!v(o,`VariableDeclarator`)||!o.init?null:gc(o.init,t)},Nue=(e,t,n)=>{s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`CallExpression`))return;let i=_c(r.callee,n);i!==null&&t.add(i)})},Pue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return s(e,e=>{if(!v(e,`CallExpression`))return;let n=M(e.callee);if(uc(e,t)){let n=e.arguments?.[0],a=n?M(n):null;if(a&&A(a)){if(to(a,e=>{if(!v(e,`CallExpression`))return;let n=gc(e.callee,t);n!==null&&r.add(n)}),v(a.body,`BlockStatement`))for(let e of Ie(a)){if(!e.argument)continue;let n=_c(e.argument,t);n!==null&&i.add(n)}else{let e=_c(a.body,t);e!==null&&i.add(e)}for(let e of sc(a))Nue(e,i,t)}}if(v(n,`Identifier`)&&n.name===`useUnmount`&&(dt(n,n.name)===`react-use`||!O(n,n.name)))for(let n of e.arguments??[]){let e=_c(n,t);e!==null&&i.add(e)}if(!v(n,`Identifier`)||!Ss(n.name))return;let a=O(n,n.name)?.initializer;if(!a||!A(a))return;let o=new Set;s(a,e=>{if(!v(e,`CallExpression`)||!uc(e,t))return;let n=Xn(e);if(n)for(let e of sc(n))s(e,e=>{if(!v(e,`CallExpression`))return;let t=M(e.callee);if(!v(t,`MemberExpression`)||!fc.has(N(t)??``))return;let n=hc(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!v(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?gc(a,t):null;s!==null&&i.add(s)}}),s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`ReturnStatement`)||!r.argument)return;let i=M(r.argument);!v(i,`Identifier`)&&!v(i,`ObjectExpression`)&&!v(i,`ArrayExpression`)||s(i,e=>{if(!v(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},Fue=(e,t,n)=>{if(!v(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=M(r);if(A(i))return i;if(!v(i,`Identifier`))return null;let a=i.name,o=null;return s(t,e=>{if(o)return!1;if(v(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(v(e,`VariableDeclarator`)&&v(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=M(e.init);if(A(t))return o=t,!1;if(v(t,`CallExpression`)&&lc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?M(e):null;if(n&&A(n))return o=n,!1}}}),o},vc=new Set([`localStorage`,`sessionStorage`]),Iue=e=>{let t=e;for(;;){let e=t.parent;if(e&&v(e,`MemberExpression`)&&e.object===t&&e.parent&&v(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return v(t,`CallExpression`)&&v(t.callee,`MemberExpression`)&&N(t.callee)===`catch`},Lue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])xt(n,t);let n=!1;return s(e,e=>{if(n)return!1;if(v(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(v(e,`Identifier`)&&kue.has(e.name)&&!t.has(e.name)&&!O(e,e.name)&&!(v(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(v(r,`Property`)&&!r.computed&&r.key===e)){if(v(r,`MemberExpression`)&&r.object===e){if(v(r.property,`Identifier`)&&vc.has(r.property.name))return;let e=r;for(;e.parent&&v(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&v(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&v(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(v(e,`CallExpression`)){let t=e.callee;if(v(t,`Identifier`)&&t.name===`fetch`&&!O(t,t.name)||v(t,`MemberExpression`)&&Aue.has(N(t)??``)&&N(t)!==`catch`&&!Iue(e))return n=!0,!1;if(v(t,`MemberExpression`)&&v(t.object,`Identifier`)&&vc.has(t.object.name))return}}),n},Rue=e=>{if(!e)return!0;let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`||v(t,`UnaryExpression`)&&t.operator===`void`},zue=(e,t)=>{if(!v(e,`MemberExpression`)||N(e)!==`current`)return!1;let n=M(e.object);if(!v(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=M(r.initializer);return v(i,`CallExpression`)&&lc(i,Oue,t)&&Rue(i.arguments?.[0])},Bue=(e,t)=>{if(!v(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return s(e,e=>{if(r)return!1;if(zue(e,t)||v(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(v(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])v(e.id,`Identifier`)&&n.add(e.id.name);continue}if(v(t,`IfStatement`)){let e=t.consequent;return(v(e,`ReturnStatement`)||v(e,`BlockStatement`)&&v(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},yc=C({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(!lc(n,Due,e.scopes))return;let r=jue(n);if(!r||Mue(r,e.scopes,n))return;let i=S(n),a=i.parent;if(!v(a,`VariableDeclarator`)||a.init!==i||!v(a.id,`Identifier`))return;let o=a.id.name,s=j(n);if(!s)return;let c=t.get(s);c||(c=Pue(s,e.scopes),t.set(s,c));let l=cc(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=Fue(r,s,e.scopes);d&&Lue(d)&&(Bue(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.`}))}}}}),bc=qn({id:`design-no-em-dash-in-jsx-text`,severity:`warn`,category:`Maintainability`,requires:[`react`],tags:[`design`,`test-noise`],title:`Em dash in JSX text`,recommendation:`Retired: Visual and writing preferences belong in an explicit design guide, not a general defect check.`}),xc=1e3,Vue=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]]),Hue=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(`.`)),Sc=1e3,Uue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),Wue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Gue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Kue=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,que=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Cc=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),wc=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`]),Jue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Tc=(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},Ec=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Dc=C({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(!v(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=R(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Ec(n,`px`)||Ec(n,`py`))return;let r=Tc(n,Wue,Gue);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.`})}})}),Oc=C({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||!v(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=R(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Ec(r,`w`)||Ec(r,`h`))return;let i=Tc(r,Kue,que);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.`})}}}}),Yue=e=>e.split(/\s+/).filter(Boolean),kc=C({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(!v(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=R(t);if(!n||!n.includes(`space-`))return;let r=Yue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Cc.has(t)){i=!0;break}}if(!i)return;let a=n.match(Jue);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.`})}})}),Ac=qn({id:`design-no-three-period-ellipsis`,severity:`warn`,category:`Maintainability`,requires:[`react`],tags:[`design`,`test-noise`],title:`Three dots instead of ellipsis`,recommendation:`Retired: Visual and writing preferences belong in an explicit design guide, not a general defect check.`}),jc=e=>{if(!e||!v(e,`JSXOpeningElement`))return null;if(v(e.name,`JSXIdentifier`))return k(e);if(v(e.name,`JSXMemberExpression`)){let t=e.name;for(;v(t,`JSXMemberExpression`);)t=t.property;if(v(t,`JSXIdentifier`))return t.name}return null},Mc=e=>e===`button`||e===`Button`,Xue=e=>Mc(e)||e===`a`||e===`Link`,Zue=new Set([`back`,`previous`]),Nc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Pc=e=>{if(!v(e,`JSXElement`)&&!v(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(v(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(v(t,`TemplateLiteral`)){let e=it(t);if(e!==null){n.push(e);continue}}return null}if(v(e,`JSXFragment`)){let t=Pc(e);if(t===null)return null;n.push(t);continue}if(v(e,`JSXElement`))return null}return n.join(``).trim()},Que=e=>{let t=e.parent;for(;t;){if(v(t,`JSXElement`)&&jc(t.openingElement)===`form`)return t;t=t.parent}return null},Fc=e=>{for(let t of e.children??[]){if(v(t,`JSXFragment`)){if(Fc(t))return!0;continue}if(!v(t,`JSXElement`))continue;let e=jc(t.openingElement);if(e&&Xue(e)&&Zue.has(Nc(Pc(t)??``))||Fc(t))return!0}return!1},Ic=C({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=jc(t.openingElement);if(!n||!Mc(n))return;let r=Pc(t);if(!r)return;let i=Nc(r);if(Uue.has(i)){if(i===`continue`){let e=Que(t);if(e&&Fc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),$ue=e=>{for(let t of e.children)if(!(v(t,`JSXText`)&&t.value.trim().length===0)){if(v(t,`JSXElement`))return t.openingElement;if(!(v(t,`JSXExpressionContainer`)&&v(t.expression,`JSXEmptyExpression`)))return}return null},Lc=C({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(k(t.openingElement)!==`details`)return;let n=$ue(t);n!==void 0&&(n&&k(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.`}))}})}),ede=new Set([`dialog`,`alertdialog`]),tde=[`aria-label`,`aria-labelledby`,`title`],Rc=C({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=>It(e.filename)?Jt:{JSXOpeningElement(t){if(!v(t.name,`JSXIdentifier`))return;let n=k(t);if(n[0]!==n[0]?.toLowerCase())return;let r=I(t.attributes,`role`),i=r?nr(r):null;(n===`dialog`||i!==null&&ede.has(i))&&(L(t.attributes)||tde.some(e=>I(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."}))}}}),zc=`createReactClass`,Bc=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`MemberExpression`)?!!(v(t.object,`Identifier`)&&t.object.name===`React`&&v(t.property,`Identifier`)&&(t.property.name===zc||t.property.name===`createClass`)):v(t,`Identifier`)?t.name===zc:!1},nde=(e,t,n,r)=>{let i=M(e);if(i.type===`JSXElement`||i.type===`JSXFragment`||Oa(i))return!0;if(v(i,`ArrayExpression`))return i.elements.some(e=>e&&t(e));if(v(i,`CallExpression`))return i.arguments.some(e=>ste(e,r)&&n(e));if(v(i,`SequenceExpression`)){let e=i.expressions.at(-1);return!!(e&&t(e))}return!1},Vc=(e,t,n)=>{let r=xee(t,e=>nde(e,r.expressionMatches,r.functionMatches,t),n);return r.functionMatches(e)},Hc=(e,t)=>{let n=e.params[0];if(!v(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r||r.references.some(e=>e.flag!==`read`))return!1;let i=e=>{let n=M(e);if(v(n,`LogicalExpression`)){if(n.operator===`&&`)return i(n.left)||i(n.right);if(n.operator===`||`)return i(n.left)&&i(n.right)}if(!v(n,`BinaryExpression`)||n.operator!==`===`)return!1;let a=M(n.left),o=M(n.right);return v(a,`Identifier`)&&t.symbolFor(a)?.id===r.id&&v(o,`Literal`)&&o.value===null||v(o,`Identifier`)&&t.symbolFor(o)?.id===r.id&&v(a,`Literal`)&&a.value===null},a=!1,o=!0;return s(e.body,t=>{if(!o)return!1;if(!v(t,`JSXElement`)&&!v(t,`JSXFragment`)&&!Oa(t))return;a=!0;let n=t;for(;n.parent&&n.parent!==e;){let e=n.parent;if((v(e,`IfStatement`)||v(e,`ConditionalExpression`))&&e.consequent===n&&i(e.test)||v(e,`LogicalExpression`)&&e.operator===`&&`&&e.right===n&&i(e.left))return!1;n=e}return o=!1,!1}),a&&o},rde=[`observer`,`lazy`,`withTracking`],ide=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??rde);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},Uc=(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},Wc=new WeakMap,Gc=e=>{let t=Wc.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(v(e,`CallExpression`)&&Oa(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),Wc.set(e,n),n},Kc=e=>{let t=!1;return s(e,e=>{if(v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},qc=e=>v(e,`MemberExpression`)?!e.computed&&v(e.property,`Identifier`)?e.property.name:e.computed&&v(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,Jc=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(v(t,`VariableDeclarator`)&&v(t.id,`Identifier`))return t.id.name;if(v(t,`AssignmentExpression`)){let e=t.left;if(v(e,`Identifier`))return e.name;if(v(e,`MemberExpression`))return qc(e)}return null},Yc=e=>{let t=e.parent;if(!t||!v(t,`AssignmentExpression`))return!1;let n=t.left;return v(n,`MemberExpression`)&&v(n.object,`Identifier`)&&n.object.name===`module`&&qc(n)===`exports`},ade=e=>{if(!v(e,`CallExpression`))return!1;if(Bc(e))return!0;let t=e.callee;return v(t,`MemberExpression`)?qc(t)===`createClass`:!1},ode=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`Identifier`)?t.name===`createContext`:v(t,`MemberExpression`)&&qc(t)===`createContext`},sde=e=>(v(e,`FunctionExpression`)||v(e,`FunctionDeclaration`))&&!!e.id?.name,Xc=e=>v(e,`CallExpression`)&&e.arguments[0]||null,Zc=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=e.callee;if(v(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},cde=(e,t)=>Zc(e,t)!==null,Qc=e=>{if(!e)return!1;if(Uc(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},lde=(e,t)=>{if(!cde(e,t.additionalHoCs)||!Gc(e))return!1;let n=Jc(e),r=w(e);if(n&&r&&rl(n,r))return!1;let i=Zc(e,t.additionalHoCs),a=Xc(e);return!a||i===`forwardRef`&&v(e.parent,`CallExpression`)&&Zc(e.parent,t.additionalHoCs)===`memo`&&Xc(e.parent)===e&&Qc(t.reactVersion)?!1:i===`memo`&&v(a,`CallExpression`)?Zc(a,t.additionalHoCs)===`forwardRef`?!Qc(t.reactVersion):!1:sde(a)?!1:v(a,`FunctionExpression`)||v(a,`ArrowFunctionExpression`)},$c=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((v(e,`PropertyDefinition`)||v(e,`MethodDefinition`))&&`static`in e&&e.static&&v(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},el=e=>{if(v(e,`Identifier`))return[e.name];if(!v(e,`MemberExpression`))return[];let t=el(e.object),n=qc(e);return n?[...t,n]:t},tl=new WeakMap,nl=e=>{let t=tl.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(v(e,`AssignmentExpression`)&&v(e.left,`MemberExpression`)&&qc(e.left)===`displayName`){v(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of el(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 tl.set(e,a),a},rl=(e,t)=>nl(t).identifierTargets.has(e),ude=(e,t)=>nl(t).memberPathSegments.has(e),il=C({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=ide(e.settings),n=Nr(e.settings),r=!t.ignoreTranspilerName,i=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Za(e)&&!(e.id&&xs(e.id.name)&&r)&&!$c(e)){if(e.id){let t=w(e);if(t&&rl(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Za(e)&&!(e.id&&xs(e.id.name)&&r)&&!$c(e)){if(e.id){let t=w(e);if(t&&rl(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!Gc(a)||n&&!Vc(a,e.scopes,e.cfg))return;if(!n&&!a.id&&Yc(a)){i(a);return}if(!n&&!Dn(a,e.scopes,e.cfg)&&!Kc(a)||a.id&&xs(a.id.name)&&r)return;if(v(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=v(e,`Identifier`)?e.name:v(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=w(a);if(n&&xs(n)&&t.ignoreTranspilerName&&(!r||!ude(n,r))){i(a);return}}let o=Jc(a);if(!(o&&xs(o)&&r)){if(Yc(a)&&!a.id){i(a);return}if(v(a.parent,`ReturnStatement`)&&!a.id){if(n&&Hc(a,e.scopes))return;i(a)}}},ArrowFunctionExpression(t){if(n&&(v(t.parent,`ReturnStatement`)||v(t.parent,`ArrowFunctionExpression`))&&Hc(t,e.scopes))return;let a=v(t.parent,`ExportDefaultDeclaration`);if(!Gc(t)&&!a||n&&!Vc(t,e.scopes,e.cfg))return;if(!n&&Yc(t)){i(t);return}if(!n&&!Dn(t,e.scopes,e.cfg)&&!Kc(t))return;if(v(t.parent,`ArrowFunctionExpression`)||v(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(v(o,`VariableDeclarator`)&&v(o.id,`Identifier`)){if(xs(o.id.name)&&r)return;break}if(v(o,`ExportDefaultDeclaration`)){i(t);return}if(Yc(t)){i(t);return}if(v(o,`FunctionDeclaration`)||v(o,`FunctionExpression`)||v(o,`ArrowFunctionExpression`)||v(o,`ClassDeclaration`)||v(o,`ClassExpression`)||v(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&v(t.parent,`ExportDefaultDeclaration`)&&Dn(t,e.scopes,e.cfg)){if(t.id){let e=w(t);if(e&&rl(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&Uc(t.reactVersion,16,3)&&ode(e)){let t=Jc(e);if(t){let n=w(e);if(n&&rl(t,n))return}i(e);return}if(lde(e,t)){i(e);return}if(!ade(e))return;let n=e.arguments[0];if(!n||!v(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!v(e,`Property`)||e.computed)continue;let t=e.key;if(v(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(v(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&v(o,`VariableDeclarator`)&&v(o.id,`Identifier`)&&xs(o.id.name)&&r)){if(o&&v(o,`AssignmentExpression`)){let e=o.left;if(v(e,`Identifier`)&&xs(e.name)&&r||v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&xs(e.property.name)&&r)return}i(e)}}}}}),al=C({id:`duplicate-jsx-subtree`,title:`Duplicated JSX structure`,severity:`warn`,execution:`project`,recommendation:`Extract a shared component when the repeated JSX trees represent the same UI concept and should evolve together.`}),dde=(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\`.`},fde=e=>{let t=!1;return s(e,e=>{if(v(e,`CallExpression`))return t=!0,!1}),t},ol=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,sl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>sl(e,t)&&sl(n,t)),pde=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,cl=(e,t)=>{if(t.abortControllerSymbolId!==null&&sl(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||ol(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=pde(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=cl(r,t),a=cl(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},mde=(e,t)=>cl(e,t)!==`not-cancelled`,ll=e=>{if(!e)return null;let t=M(e);return v(t,`MemberExpression`)?!t.computed&&v(t.property,`Identifier`)?t.property.name:t.computed&&v(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},hde=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),gde=(e,t)=>{if(v(e,`IfStatement`)){if(e.test===t)return!0;let n=Kt(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(v(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Kt(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(v(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Kt(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return v(e,`TryStatement`)?e.finalizer===t:v(e,`SwitchStatement`)?e.discriminant===t:v(e,`ForStatement`)?e.init===t||e.test===t:v(e,`ForInStatement`)||v(e,`ForOfStatement`)?e.right===t:v(e,`WhileStatement`)?e.test===t:!1},ul=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||hde.has(e.type)&&!gde(e,r)&&!n?.(e,r))return!0;r=e}return!1},dl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=M(e);if(v(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(v(r,`ConditionalExpression`)){let e={allowComputedString:t,allowIndeterminateEntries:n},i=dl(r.consequent,e);return i===dl(r.alternate,e)?i:null}if(!v(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&v(e,`SpreadElement`)){i=null;continue}if(!v(e,`Property`))return null;let r=T(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=M(e.value);if(v(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},_de=e=>{if(!e)return!1;let t=M(e);if(v(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!v(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!v(e,`Property`))return null;let t=T(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=M(e.value);if(!v(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},vde=new Set([...Tn,`useInsertionEffect`]),fl=e=>e.references.every(e=>e.flag===`read`),yde=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&fl(e),pl=e=>e.kind===`const`&&v(e.declarationNode,`VariableDeclarator`)&&v(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,ml=(e,t,n)=>{if(!v(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!yde(r)||n.has(r.id)||r.kind===`const`&&!pl(r))return null;n.add(r.id);let i=r.initializer?M(r.initializer):null;if(r.kind===`const`&&v(i,`Identifier`)){let e=ml(i,t,n);if(e)return e}return r},hl=(e,t)=>{if(!e)return null;let n=M(e);if(A(n))return{node:n,isConcreteFunction:!0};if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r)return null;let i=r.initializer?M(r.initializer):null;return i&&A(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},gl=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){let e=ml(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?M(e.initializer):null;return v(n,`NewExpression`)&&v(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:v(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)){let e=gl(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},_l=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return r.value;if(v(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!v(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!pl(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),_l(i.initializer,t,n))},bde=(e,t)=>{let n=yl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=M(r);if(!n||!v(i,`NewExpression`)||!v(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=M(n);if(!v(a,`Identifier`))return null;let o=ml(a,t,new Set),s=o?.initializer?M(o.initializer):null;if(!v(s,`NewExpression`)||!v(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=gl(n,t),l=_l(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},vl=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=M(r.initializer);return!v(i,`NewExpression`)||!v(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},yl=(e,t,n)=>{if(!e)return null;let r=M(e);return!v(r,`MemberExpression`)||(ll(r)??(n&&r.computed?_l(r.property,n):null))!==t?null:r.object},xde=(e,t)=>v(e,`ObjectPattern`)?e.properties.some(e=>!v(e,`Property`)||T(e,{allowComputedString:!0})!==`signal`?!1:(v(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,bl=(e,t,n=new Set)=>{let r=M(e),i=yl(r,`signal`);if(i)return vl(i,t);if(!v(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!fl(a))return null;n.add(a.id);let o=a.declarationNode;if(!v(o,`VariableDeclarator`))return null;if(v(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=M(a.initializer);if(v(e,`Identifier`))return bl(e,t,n);let r=yl(e,`signal`);return r?vl(r,t):null}return xde(o.id,a.bindingIdentifier)?vl(a.initializer,t):null},xl=(e,t,n)=>{let r=M(e);if(v(r,`UnaryExpression`)&&r.operator===`!`){let e=xl(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(v(r,`BinaryExpression`)){let e=Kt(r.left),i=Kt(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=xl(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=yl(r,`aborted`);return i&&bl(i,n)===t?`aborted`:null},Sde=(e,t,n,r)=>{if(v(e,`IfStatement`)||v(e,`ConditionalExpression`)){let i=xl(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!v(e,`LogicalExpression`)||e.right!==t)return!1;let i=xl(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Cde=(e,t,n,r)=>!ul(e,t,(e,t)=>Sde(e,t,n,r)),wde=(e,t)=>{let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r?.initializer)return null;let i=M(r.initializer);if(!v(i,`CallExpression`))return null;let a=yl(i.callee,`bind`);if(!a)return null;let o=yl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=vl(o,t),l=vl(s,t);return c!==null&&c===l?c:null},Tde=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=M(e);if(!v(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!v(e,`Property`))return n;if(T(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=bl(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Sl=(e,t,n)=>{let r=yl(e.callee,t,n);if(!r)return null;let i=gl(r,n),a=_l(e.arguments?.[0],n),o=hl(e.arguments?.[1],n),s=dl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ede=(e,t)=>{let n=yl(e.callee,`call`);if(!n||!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!fl(r)||!v(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!v(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!v(e,`Property`))return!1;let t=v(e.value,`AssignmentPattern`)?e.value.left:e.value;return T(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=gl(i.init,t),s=gl(a,t);if(o===null||s===null||o!==s)return null;let c=_l(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:hl(e.arguments?.[2],t),capture:dl(e.arguments?.[3],{allowComputedString:!0})}},Dde=(e,t)=>{if(!e)return null;let n=M(e);if(A(n))return n.body;if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r||!r.initializer)return null;let i=M(r.initializer);return A(i)?i.body:null},Ode=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!v(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],c=v(o,`ReturnStatement`);return s(e,o=>{if(o!==e&&A(o)||v(o,`ClassDeclaration`)||v(o,`ClassExpression`))return!1;if(v(o,`CallExpression`)){if(ul(o,e))return;let r=yl(o.callee,`addEventListener`,t),a=r?gl(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Sl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Tde(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:_de(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=bde(o,t);if(c){let e=n.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&i.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!fde(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(v(o,`ReturnStatement`)){a+=1;let e=Dde(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:c,returnStatementCount:a}},kde=(e,t)=>{let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=M(r.initializer);return!A(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Cl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],c=!1,l=!1,u=!1,d=v(e,`BlockStatement`)?e.body[e.body.length-1]:null,f=e=>{i.push(...e.removals),l||=e.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},p=e=>{let r=v(e,`BlockStatement`)?e.body:[e];for(let e of r){if(v(e,`BreakStatement`)||v(e,`ContinueStatement`))return!0;if(v(e,`BlockStatement`)){if(p(e))return!0;continue}if(v(e,`IfStatement`)){let r=Kt(e.test);if(r!==null){let i=Cl(e.test,t,new Set(n),!0);if(!i)return!0;f(i);let a=r?e.consequent:e.alternate;if(a&&p(a))return!0;continue}}let r=Cl(e,t,new Set(n),!0);if(!r)return!0;f(r)}return!1};return s(e,s=>{if(s!==e&&A(s)||v(s,`ClassDeclaration`)||v(s,`ClassExpression`))return!1;if(v(s,`ReturnStatement`)&&s===d)return;if(v(s,`ReturnStatement`)||v(s,`ThrowStatement`)||r&&(v(s,`BreakStatement`)||v(s,`ContinueStatement`)))return c=!0,!1;if(v(s,`ForOfStatement`)){let t=M(s.right);return v(t,`ArrayExpression`)&&t.elements.some(e=>e&&!v(e,`SpreadElement`))&&!ul(s,e)&&p(s.body),!1}if((v(s,`IfStatement`)||v(s,`ConditionalExpression`))&&s.alternate&&Kt(s.test)===null&&!ul(s,e)){let e=Cl(s.consequent,t,new Set(n)),r=Cl(s.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),l||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=Cl(s.test,t,new Set(n));return i&&f(i),!1}if(!v(s,`CallExpression`))return;let m=ul(s,e),h=yl(s.callee,`removeEventListener`,t);if(h&&!m){let e=Sl(s,`removeEventListener`,t);e?(i.push(e),u||=e.callbackIdentity===null||e.capture===null):u=!0}if(!h&&!m){let e=Ede(s,t);e&&i.push(e)}let g=yl(s.callee,`abort`);if(g){let n=vl(g,t);n===null?m||(l=!0):(!m||Cde(s,e,n,t))&&a.add(n);return}if(m)return;let _=wde(s,t);if(_!==null){a.add(_);return}let y=kde(s,t);if(!y||n.has(y.symbolId))return;n.add(y.symbolId);let b=Cl(y.body,t,n);b&&f(b)}),c?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:l,hasUnknownRemovalCall:u}},Ade=(e,t)=>{let n=Ode(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=Cl(e,t);for(let e of n.cleanupBodies){let n=Cl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},wl=C({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(t){if(!D(t,vde,e.scopes))return;let n=Xn(t);if(!A(n))return;let r=Ade(n.body,e);if(r)for(let t of r.registrations){if(t.hasUnknownCancellation||r.hasUnknownRemovalCall||r.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&r.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&r.setupAbortAnalysis&&sl(r.setupAbortAnalysis,t.abortControllerSymbolId)||mde(r,t))continue;let n=r.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),i,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=ol(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}i??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!i||e.report({node:i.removalNode,message:dde(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),jde=new Set([`global`,`globalThis`,`self`,`window`]),Tl=(e,t,n=new Set)=>{let r=e;for(;;){let e=M(r);if(!v(e,`Identifier`))return!1;if((e.name===`globalThis`||e.name===`window`||e.name===`self`||e.name===`global`)&&t.isGlobalReference(e))return!0;let i=t.symbolFor(e);if(!i?.initializer||i.kind!==`const`||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`))return!1;let a=i.declarationNode,o=a.init;if(!o)return!1;let s=v(a.id,`Identifier`)&&a.id===i.bindingIdentifier&&o===i.initializer,c=i.bindingIdentifier.parent,l=yi(i.bindingIdentifier),u=v(a.id,`ObjectPattern`)&&v(c,`Property`)&&c.value===i.bindingIdentifier&&c.parent===a.id&&l!==null&&jde.has(l);if(!s&&!u)return!1;n.add(i.id),r=o}},El=(e,t,n,r=new Set)=>{let i=e;for(;;){let e=M(i);if(!v(e,`Identifier`))return v(e,`MemberExpression`)&&N(e)===t&&Tl(e.object,n);if(e.name===t&&n.isGlobalReference(e))return!0;let a=n.symbolFor(e);if(!a||a.kind!==`const`||r.has(a.id))return!1;r.add(a.id);let o=a.declarationNode,s=a.bindingIdentifier,c=s.parent;if(yi(s)===t&&v(o,`VariableDeclarator`)&&v(o.id,`ObjectPattern`)&&v(c,`Property`)&&c.value===s&&c.parent===o.id&&o.init)return Tl(o.init,n);let l=Qr(a);if(!l)return!1;i=l}},Dl=(e,t)=>{if(!t.filename||e.arguments.some(e=>v(e,`SpreadElement`)))return null;let n=Ut(e.callee,t.scopes);if(!n?.importedName)return null;let r=Be(t.filename,n.source,n.importedName),i=r?.functionNode;if(!r||!i||!A(i)||i.async||i.generator)return null;let a=i.body,o=v(a,`BlockStatement`)&&a.body.length===1?a.body[0]:a,s=o;if(v(o,`ExpressionStatement`)?s=o.expression:v(o,`ReturnStatement`)&&(s=o.argument),!s)return null;let c=M(s);if(!v(c,`CallExpression`)||!v(c.callee,`MemberExpression`))return null;let l=N(c.callee);if(l!==`addEventListener`&&l!==`removeEventListener`)return null;let u=Dt(r.programNode),d=c.callee.object,f=[`document`,`window`].find(e=>El(d,e,u));if(!f)return null;let[p,m]=c.arguments.slice(0,2).map(t=>{if(!v(t,`Identifier`))return null;let n=u.symbolFor(t),r=i.params.findIndex(e=>v(e,`Identifier`)&&u.symbolFor(e)===n);return r<0?null:e.arguments[r]});return p&&m?{method:l,receiverKey:`global:${f}`,eventNode:p,handlerNode:m}:null},Ol=(e,t)=>{if(!e)return null;let n=M(e);if(v(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(v(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=W({node:n,scopes:t});return r?`reference:${r}`:null},kl=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}]]),Mde=new Map([...kl.values()].map(e=>[e.registerMethod,e])),Nde=new Set([`off`,`removeEventListener`,`removeListener`]),Al=e=>!!(e&&Ei(M(e))),jl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return Al(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(Al(a))return{method:n,receiverKey:r,eventKey:Ol(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&Al(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Ml=C({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(!uc(t,e.scopes))return;let n=Xn(t);if(!n)return;let r=[],i=[];to(n,t=>{if(!v(t,`CallExpression`))return;let n=Dl(t,e);if(n?.method===`addEventListener`&&Al(n.handlerNode)){r.push({method:n.method,receiverKey:n.receiverKey,eventKey:Ol(n.eventNode,e.scopes),usesHandlerOnlyForm:!1,handlerNode:n.handlerNode});return}let i=M(t.callee);if(!v(i,`MemberExpression`))return;let a=N(i);if(!a)return;let o=W({node:i.object,scopes:e.scopes});if(o===null)return;let s=Mde.get(a);if(!s)return;let c=jl(t,s,a,o,e.scopes);c&&r.push(c)});for(let t of sc(n))to(t,t=>{if(!v(t,`CallExpression`))return;let n=Dl(t,e);if(n?.method===`removeEventListener`&&Al(n.handlerNode)){i.push({method:n.method,receiverKey:n.receiverKey,eventKey:Ol(n.eventNode,e.scopes),usesHandlerOnlyForm:!1,handlerNode:n.handlerNode});return}let r=M(t.callee);if(!v(r,`MemberExpression`))return;let a=N(r);if(!a||Nde.has(a))return;let o=kl.get(a);if(!o)return;let s=W({node:r.object,scopes:e.scopes});if(s===null)return;let c=jl(t,o,a,s,e.scopes);c&&i.push(c)});for(let t of i){let n=kl.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.`})}}})}),Pde=e=>{let t=e.parent,n=t?.parent,r=n?.parent;if(!v(t,`Property`)||t.value!==e||!v(n,`ObjectExpression`)||!v(r,`CallExpression`)||r.arguments[0]!==n||!v(r.callee,`MemberExpression`)||N(r.callee)!==`extend`||!v(r.callee.object,`MemberExpression`)||N(r.callee.object)!==`Layer`)return!1;let i=T(t);return i!==`onAdd`&&i!==`onRemove`?!1:n.properties.some(e=>v(e,`Property`)&&T(e)===(i===`onAdd`?`onRemove`:`onAdd`)&&A(e.value))},Nl=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!v(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}},Fde=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e),r=n?.bindingIdentifier,i=n?.initializer;if(!n||n.references.some(e=>e.flag!==`read`)||!v(r,`Identifier`)||!v(i,`CallExpression`))return!1;let a=Ut(i.callee,t.scopes);if(a?.source!==`react-admin`||a.importedName!==`useDataProvider`)return!1;let o=r.typeAnnotation,s=v(o,`TSTypeAnnotation`)?o.typeAnnotation:null;if(!v(s,`TSTypeReference`)||!v(s.typeName,`Identifier`))return!1;let c=Nl(s.typeName,t.scopes),l=c?$e(c):null;if(!c||Pn(c.declarationNode)!==`ApiPlatformAdminDataProvider`||!l)return!1;let u=l.source.value;return u===`@api-platform/admin`||typeof u==`string`&&u.startsWith(`.`)&&!!(t.filename&&zt(t.filename)?.name===`@api-platform/admin`)},Pl=(e,t)=>{if(!Te.has(e.name))return!1;if(t.isGlobalReference(e))return!0;let n=Ut(e,t);return!!(n&&(n.source===`timers`||n.source===`node:timers`)&&n.importedName===e.name)},Ide=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=j(n);if(!i||!A(i)||i===t||!v(i.body,`BlockStatement`)||!qa(n,Ie(i).filter(e=>{let t=e.argument?M(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=As(i),o=a?e.scopes.symbolFor(a):null;if(!o||o.references.length!==1)return!1;let s=o.references[0];if(!s)return!1;let c=S(s.identifier),l=c.parent,u=v(l,`CallExpression`)?S(l):null,d=u?.parent;if(!v(l,`CallExpression`)||l.callee!==c||!v(d,`AssignmentExpression`)||d.operator!==`=`||d.right!==u||!v(d.left,`Identifier`)||j(d)!==t)return!1;let f=e.scopes.symbolFor(d.left),p=f?.initializer?M(f.initializer):null;if(!f||f.kind!==`let`&&f.kind!==`var`||!v(f.declarationNode,`VariableDeclarator`)||j(f.declarationNode)!==t||!p||!A(p)||!v(p.body,`BlockStatement`)||p.body.body.length!==0)return!1;let m=new Map;for(let e of f.references){let t=S(e.identifier),n=t.parent;if(n===d&&d.left===t)continue;if(!v(n,`CallExpression`)||n.callee!==t)return!1;let r=j(n);if(!r)return!1;let i=m.get(r)??[];i.push(n),m.set(r,i)}return qa(d,Ie(t).filter(t=>{let n=t.argument?P(t.argument,e.scopes):null;return!!(n&&Ja(n,m.get(n)??[],e))}),e,d)},Fl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=F(e),c=F(t);if(!i||!a||!o||s===null||c===null)return!0;if(!U(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},Lde=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Rde=new Set([...Lde,`find`,`findIndex`,`sort`]),zde=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Bde=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),Vde=new Set([...Bde,`Map`,`Set`]),Il=(e,t,n)=>{let r=M(e);return v(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Hde=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n);return!!((r===`from`||r===`of`)&&Il(n.object,`Array`,t))},Ude=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&Il(n.object,`Object`,t))},Ll=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ArrayExpression`))return r.elements.length===0;if(v(r,`NewExpression`)){let e=M(r.callee);return!!(r.arguments.length===0&&v(e,`Identifier`)&&Vde.has(e.name)&&t.isGlobalReference(e))}if(v(r,`CallExpression`)){let e=M(r.callee);if(Hde(r,t)){if((v(e,`MemberExpression`)?N(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!v(i,`SpreadElement`)&&Ll(i,t,n))}return!!(v(e,`MemberExpression`)&&N(e)!==`concat`&&zde.has(N(e)??``)&&Ll(e.object,t,n))}if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Ll(i.initializer,t,n))},Rl=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ArrayExpression`))return!0;if(v(r,`NewExpression`)){let e=M(r.callee);return!!(v(e,`Identifier`)&&Bde.has(e.name)&&t.isGlobalReference(e))}if(v(r,`CallExpression`)){if(Hde(r,t)||Ude(r,t))return!0;let e=M(r.callee);return!!(v(e,`MemberExpression`)&&zde.has(N(e)??``)&&Rl(e.object,t,n))}if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Rl(i.initializer,t,n))},Wde=(e,t,n=new Set)=>{let r=M(e);if(!v(r,`NewExpression`)){if(!v(r,`Identifier`))return Rl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!v(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Wde(e.initializer,t,n))}let i=M(r.callee);return!!(v(i,`Identifier`)&&Vde.has(i.name)&&t.isGlobalReference(i))},zl=(e,t,n)=>{let r=M(e.callee);if(!v(r,`MemberExpression`))return!1;let i=N(r);if(i===`from`&&Il(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!v(t,`SpreadElement`)&&!Ll(t,n))}return!!(i&&Rde.has(i)&&e.arguments[0]===t&&!Ll(r.object,n)&&(i===`forEach`?Wde(r.object,n):Rl(r.object,n)))},Bl=(e,t)=>{let n=M(e.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?!1:v(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Lde.has(n.property.name)&&e.arguments[0]===t},Vl=e=>{let t=e.parent;return!!(v(t,`CallExpression`)&&Bl(t,e))},Gde=new Set([`then`,`catch`,`finally`]),Kde=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Gde.has(e.property.name)&&M(e.object).type===`CallExpression`,Hl=e=>{let t=e.parent;for(;t&&wt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>M(t)===e)?null:Kde(M(t.callee))?t:null},qde=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,c=[e],l=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},u=e=>{let t=e&&M(e);!A(t)||r.has(t)||(r.add(t),c.push(t))};for(;c.length>0;){let e=c.pop();if(!e)break;s(e,n=>{if(n!==e&&A(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=l(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?M(n.init):null;if(A(e)){let t=l(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=M(n.left);if(e.type===`Identifier`){let t=l(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=M(n.callee);if(A(r)){u(r);return}if(r.type===`Identifier`){let e=l(r);e&&a.add(e);return}if(t&&Kde(r))for(let e of n.arguments??[])u(e)});for(let e of a)o.has(e)||u(i.get(e))}return r},Ul=(e,t)=>qde(e,!0,t),Wl=(e,t)=>qde(e,!1,t),Jde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!A(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(A(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),s(e,n=>{if(n!==e&&A(n))return!1;if(n.type===`CallExpression`){a(P(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!zl(n,e,t)||a(P(e,t))}}))}return n},Gl=e=>{let t=j(e);return t?Ts(t):null},Kl=e=>{let t=e.parent;for(;t;){if(v(t,`VariableDeclarator`))return t;if(v(t,`FunctionDeclaration`)||v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`)||v(t,`Program`))return null;t=t.parent??null}return null},Yde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),Xde=new Set([`useMemo`,`useState`]),Zde=new Set([`startTransition`]),Qde=(e,t)=>{let n=M(e);return!v(n,`MemberExpression`)||n.computed||!v(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!v(n.property,`Identifier`)?!1:n.property.name===`from`},$de=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return!1;let r=O(n,n.name);if(!r?.initializer)return!1;let i=Kl(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&v(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&Qde(i.init,t))},ql=(e,t,n=new Set)=>{let r=M(e);if(!v(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),ql(i.initializer,t,n))},efe=(e,t,n,r)=>{let i=M(e);if(v(i,`ArrayExpression`))return!0;if(v(i,`Identifier`)){let e=x(i,t);return!!(e?.kind===`const`&&e.initializer&&!Xt(i,r,n,t)&&efe(e.initializer,t,n,r))}if(v(i,`NewExpression`))return ql(i.callee,t);if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(ql(a,t))return!0;if(!v(a,`MemberExpression`))return!1;let o=M(a.object);return!!(v(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&v(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},Jl=(e,t,n={})=>{let r=S(e),i=r.parent;if(v(i,`NewExpression`)){let e=M(i.callee);return!!(t&&i.arguments?.[0]===r&&v(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return v(i,`CallExpression`)?i.callee===r||(t?D(i,Xde,t,{allowGlobalReactNamespace:!0}):$n(i,Xde))&&i.arguments?.[0]===r||t&&D(i,Zde,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(Qde(i.callee,t)||$de(i.callee,t))?!0:v(i.callee,`MemberExpression`)&&!i.callee.computed&&v(i.callee.property,`Identifier`)&&Yde.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&efe(i.callee.object,t,i,i.callee.property.name))):!1},tfe=new WeakMap,K=(e,t)=>{let n=j(e),r=n??e,i=tfe.get(t);i||(i=new WeakMap,tfe.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(Ts(n))return i.set(r,n),n;if(!Jl(n,t))return i.set(r,null),null;n=j(n)}return i.set(r,null),null},Yl=e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Xl=e=>e?De(e)?!0:v(e,`BlockStatement`)?Xl(e.body.at(-1)):v(e,`ContinueStatement`)||v(e,`BreakStatement`):!1,nfe=new Set([`createRef`,`useRef`]),Zl=(e,t,n={})=>{let r=v(e,`MemberExpression`)?M(e.object):null;if(!v(e,`MemberExpression`)||N(e)!==`current`||!v(r,`Identifier`))return null;let i=x(r,t);if(!i?.initializer)return null;let a=M(i.initializer);return v(a,`CallExpression`)&&D(a,n.includeCreateRef?nfe:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Ql=(e,t,n=new Set)=>{let r=M(e),i=Zl(r,t);if(i)return i;if(!v(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=ns(a);return o?(n.add(a.id),Ql(o,t,n)):null},rfe=(e,t)=>Ql(e,t)!==null,$l=(e,t)=>{s(e,e=>{if(A(e))return!1;t(e)})},eu=e=>!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)?null:e.callee.property.name,ife=e=>{let t=eu(e);return t!==null&&l.has(t)},tu=e=>{let t=eu(e);return t!==null&&(l.has(t)||t===`observe`)?t:null},afe=e=>tu(e)!==null,nu=e=>{let t=eu(e);return t===null||!ate.has(t)?!1:t===`listen`?(v(e,`CallExpression`)?e.arguments??[]:[]).some(e=>v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`)):!0},ru=e=>{let t=e,n=t.parent;for(;n;){if(v(n,`AssignmentExpression`))return n.left===t;if(v(n,`UpdateExpression`)||v(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(v(n,`ForInStatement`)||v(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},ofe=new Set([...Tn,`useInsertionEffect`]),sfe=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),cfe=new Set([`@react-native-community/netinfo`]),lfe=new Set([`events`,`node:events`,`react-native`]),ufe=new WeakMap,dfe=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),ffe=new Set([`clear`,`delete`,`set`]),pfe=new WeakMap,mfe=new WeakMap,hfe=new WeakMap,gfe=new WeakMap,_fe={subscribe:`subscription`,timer:`timer`,socket:`connection`},iu=(e,t)=>{if(er(e,ofe,t.scopes))return!0;let n=M(e.callee);return!!(v(n,`Identifier`)&&sfe.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},au=e=>v(e,`NewExpression`)&&v(e.callee,`Identifier`)&&Hn.has(e.callee.name),q=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=M(e);if(v(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e)return t.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let a=r.get(e.id);if(a)return q(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=v(o,`Property`)?T(o):null;if(l&&v(s,`ObjectPattern`)&&v(c,`VariableDeclarator`)&&c.id===s){let i=q(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?M(e.initializer):null;return e.kind===`const`&&u&&(v(u,`Identifier`)||v(u,`MemberExpression`))?q(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(v(i,`MemberExpression`)&&!i.computed){if(!v(i.property,`Identifier`))return null;let e=q(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(v(i,`ThisExpression`))return`this`;if(v(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(A(i)){let e=F(i);return e===null?null:`function:${e}`}return null},ou=(e,t)=>{if(!e)return null;let n=M(e),r=[];for(;v(n,`MemberExpression`)&&!n.computed;){if(!v(n.property,`Identifier`))return null;r.unshift(n.property.name),n=M(n.object)}if(!v(n,`Identifier`))return null;let i=t.scopes.symbolFor(n);if(i&&i.references.every(e=>e.flag===`read`)){let e=i.bindingIdentifier,n=[],a=e.parent;if(v(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(v(a,`Property`)&&v(a.parent,`ObjectPattern`)){let t=T(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&v(o,`VariableDeclarator`)&&o.id===e&&v(s,`VariableDeclaration`)&&s.declarations.length===1&&v(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Ife(c.right,t);if(e){let i=M(c.right),a=v(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?M(a.initializer):null,s=v(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&E(e)?e:null;for(let e of n){let n=t?M(t):null;if(typeof e==`number`&&v(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&E(r)?r:null}else if(typeof e==`string`&&v(n,`ObjectExpression`)){let r=n.properties.find(t=>v(t,`Property`)&&T(t)===e);t=v(r,`Property`)&&E(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=M(e),i=e=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!!(n&&(n.kind===`const`||n.kind===`function`||n.kind===`import`||n.kind===`parameter`)&&n.references.every(e=>e.flag===`read`))};return v(r,`Literal`)||v(r,`ArrayExpression`)||v(r,`ObjectExpression`)||A(r)?!0:i(r)||n[0]===1&&v(r,`CallExpression`)&&i(M(r.callee))})===!0?{collectionKey:e,projectedValues:s,projectionKey:[...n.length>0?n.map(e=>`binding:${String(e)}`):[`binding:value`],...r].join(`.`)}:null}}}let a=i?.initializer?M(i.initializer):null;if(i?.kind===`const`&&v(a,`CallExpression`)){let e=q(a.callee,t),n=[];for(let e of a.arguments){if(!E(e))continue;let r=ou(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=q(e,t);i&&n.push({collectionKey:null,identityKey:i})}let i=new Set(n.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&n.length===a.arguments.length&&i.size===1)return{collectionKey:[...i][0],projectionKey:[`call:${e}:${n.map(({identityKey:e})=>e).join(`:`)}`,...r].join(`.`)}}if(!i||i.kind!==`parameter`)return null;let o=i.bindingIdentifier.parent;for(;o&&!A(o);)o=o.parent;if(!o||!A(o))return null;let s=Iu(o);if(!s)return null;let c=M(s.callee);if(!v(c,`MemberExpression`))return null;let l=q(c.object,t);if(!l)return null;let u=o.params[0],d=v(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=v(u,`ObjectPattern`)?yi(i.bindingIdentifier):null,p=d?q(d.right,t):null;if(d&&!p)return null;let m=u===i.bindingIdentifier?`value`:f&&p?`${f}=default:${p}`:f;return m?{collectionKey:l,projectionKey:[m,...r].join(`.`)}:null},su=(e,t)=>{let n=ou(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},cu=(e,t)=>su(e,t)??q(e,t),lu=(e,t)=>{if(!e)return null;let n=cu(e,t);if(n)return n;let r=M(e);if(v(r,`CallExpression`)){let e=cu(r.callee,t),n=r.arguments.flatMap(e=>{if(!E(e))return[];let n=lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!v(r,`BinaryExpression`)&&!v(r,`LogicalExpression`))return null;let i=lu(r.left,t),a=lu(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},vfe=(e,t)=>{let n=M(e);if(v(n,`CallExpression`)&&lu(n,t))return n;if(!v(n,`Identifier`))return Fu(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?M(r.initializer):null;return!r||!i?Fu(n,t):!v(i,`ObjectExpression`)&&!v(i,`ConditionalExpression`)?v(i,`Identifier`)||v(i,`MemberExpression`)?null:Fu(n,t):r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||ru(e.identifier))return!1;let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=M(n.callee);if(!v(r,`MemberExpression`))return!1;let i=T(r);return i===`addEventListener`||i===`removeEventListener`})?i:null},uu=(e,t,n)=>{let r=ou(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>dl(e?M(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?vfe(e,t):null;if(e&&!i)return null;let a=dl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=M(i);if(!v(o,`ObjectExpression`)){let e=n?lu(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!v(e,`Property`)){s=null;continue}let n=T(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=lu(e.value,t);s=n?`capture-value:${n}`:null}}return s},yfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`ObjectExpression`))return ou(n,t);let r=null;for(let e of n.properties??[]){if(!v(e,`Property`)){r=null;continue}let n=T(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=ou(e.value,t))}return r},du=(e,t,n,r=!1)=>{let i=uu(e,n,r);return i!==null&&i===uu(t,n,r)},fu=(e,t,n=new Set)=>{let r=Ql(e,t.scopes);if(r)return r;let i=M(e);for(;v(i,`MemberExpression`);){let e=Ql(i,t.scopes)??Zl(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=M(i.object)}if(v(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),fu(e.initializer,t,r)}}return null},pu=(e,t)=>fu(e,t)!==null,mu=(e,t)=>{let n=S(e),r=n.parent;if(v(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&pu(r.left,t)){let e=q(r.left,t);return e?{anchor:r,key:e}:null}if(!v(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=T(r),a=r.parent;if(!i||!v(a,`ObjectExpression`))return null;let o=S(a),s=o.parent;if(!v(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!pu(s.left,t))return null;let c=q(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},hu=(e,t)=>{let n=S(e),r=mu(n,t);if(r)return r;let i=n.parent;if(!v(i,`VariableDeclarator`)||i.init!==n||!v(i.id,`Identifier`)||!v(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=mu(e.identifier,t);return n?[n]:[]}).find(n=>Du(e,[n.anchor],t))??null:null},bfe=(e,t,n)=>{let r=T(e),i=M(e.object),a=v(i,`Identifier`)?n.scopes.symbolFor(i):null,o=j(t);if(!r||!a||!o||!A(o))return null;for(let e of a.references){let i=S(e.identifier),a=i.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!pu(a.left,n)||j(a)!==o||!Ud(t,[a],o,n))continue;let s=q(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},xfe=(e,t)=>{let n=hu(e,t);if(n)return n;let r=S(e),i=r.parent;return v(i,`AssignmentExpression`)&&i.right===r&&v(i.left,`MemberExpression`)?bfe(i.left,e,t):null},gu=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`MemberExpression`)){if(pu(i,n)){let e=q(i,n);return e?new Set([e]):null}let e=T(i);if(!e)return null;let a=gu(i.object,t,n,r);return a&&a.size>0?new Set([...a].map(t=>`${t}.${e}`)):null}if(v(i,`ConditionalExpression`)){let e=gu(i.consequent,t,n,r),a=gu(i.alternate,t,n,r);return e&&a?new Set([...e,...a]):null}if(!v(i,`Identifier`))return null;let a=n.scopes.symbolFor(i);if(!a||r.has(a.id))return null;let o=new Set(r);o.add(a.id);let s=a.initializer?M(a.initializer):null;if(v(s,`CallExpression`)&&D(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=q(i,n);return e?new Set([e]):null}if(a.kind===`const`&&a.initializer){let e=gu(a.initializer,t,n,o);if(e)return e}let c=j(t),l=a.references.flatMap(e=>{let r=S(e.identifier),i=r.parent;if(!c||!v(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||j(i)!==c||!pu(i.left,n)||!Ud(t,[i],c,n))return[];let a=q(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=j(a.bindingIdentifier);if(!u||!A(u))return null;let d=u.params.findIndex(e=>M(e)===a.bindingIdentifier),f=As(u),p=f?n.scopes.symbolFor(f):null;if(d<0||!p)return null;let m=[];for(let e of p.references){let t=S(e.identifier),r=t.parent;if(v(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!E(e))return null;let t=gu(e,r,n,o);if(!t||t.size===0)return null;m.push(t);continue}let i=t.parent,a=i?.parent;if(!(v(i,`ArrayExpression`)&&v(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},Sfe=(e,t)=>{let n=xfe(e,t);if(n)return new Set([n.key]);let r=S(e),i=r.parent;return!v(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:gu(i.left,i,t)??new Set},_u=(e,t,n=!1)=>{let r=S(e),i=r.parent;if(v(i,`VariableDeclarator`)&&i.init===r){let r=q(i.id,t);return n?hu(e,t)?.key??r:r}if(v(i,`AssignmentExpression`)&&i.right===r){if(n&&v(i.left,`MemberExpression`)){let n=bfe(i.left,e,t);if(n)return n.key}return q(i.left,t)}return n?mu(r,t)?.key??null:null},vu=(e,t,n)=>e!==null&&(e===t.handleKey||e===_u(t.node,n)),yu=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`))return yu(n.object,t);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?$e(r):null;return typeof i?.source.value==`string`?i.source.value:null},Cfe=(e,t)=>{if(e.kind!==`subscribe`||!v(e.node,`CallExpression`))return!1;if(nu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||wu(e.node,`addListener`,t))return!1;let n=M(e.node.callee);if(!v(n,`MemberExpression`))return!1;let r=yu(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?cfe.has(r):r!==`react-native`;let i=M(n.object),a=Fu(i,t),o=a&&v(a,`NewExpression`)?yu(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&lfe.has(o))return!1;let s=v(i,`Identifier`)?t.scopes.symbolFor(i):null,c=v(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!v(i,`Identifier`)||c||s!==null&&(is(s)!==null||ns(s)!==null)?ls(i,t.scopes).length===0:!1},wfe=(e,t)=>{let n=M(e),r=Ut(n,t.scopes);return v(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},bu=(e,t,n=new Set)=>{let r=M(e);if(v(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?M(e.initializer):null,a=v(i,`CallExpression`)?Ut(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&bu(i,t,n))}if(!v(r,`CallExpression`))return!1;let i=M(r.callee);return!!(v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`getParent`&&bu(i.object,t,n))},xu=(e,t)=>{if(Cfe(e,t))return!0;if(!v(e.node,`CallExpression`))return!1;let n=M(e.node.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&wfe(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&bu(n.object,t)},Tfe=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&q(r,n)===t.handleKey&&!i.references.some(e=>ru(e.identifier)))},Efe=(e,t,n)=>Tfe(e,t,n)&&xu(t,n),Dfe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!Ed.has(t)||n.receiverKey===null||e!==n.receiverKey||!v(n.node,`CallExpression`))return!1;let i=M(n.node.callee);if(!v(i,`MemberExpression`))return!1;let a=Fu(i.object,r);return a!==null&&au(a)},Su=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!ru(e.identifier)))return null;let i=ns(e);if(!i)return`symbol:${e.id}`;let a=M(i);if(!v(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),Su(a,t,o)??`symbol:${e.id}`}if(A(r)){let e=F(r);return e===null?null:`function:${e}`}return null},Ofe=(e,t,n)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!v(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||ru(e.identifier));if(a.length!==1)return null;let o=S(a[0].identifier),s=o.parent,c=j(t);return!v(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!Ud(t,[s],c,n)?null:`symbol:${i.id}`},Cu=(e,t,n=new Set)=>{let r=M(e);if(ls(r,t.scopes).includes(`MediaQueryList`))return!0;if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=ns(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),Cu(i,t,a)}if(!v(r,`CallExpression`)||!D(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=Xn(r,t.scopes);return!!(i&&Ue(i,t.scopes,e=>{let r=M(e);return v(r,`Literal`)&&r.value===null||v(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||Cu(r,t,new Set(n))},t.cfg,`every`))},wu=(e,t,n)=>{let r=M(e.callee);return e.arguments?.length===1&&v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===t&&Cu(r.object,n)},Tu=(e,t)=>{let n=M(e.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:wu(e,`addListener`,t)?{receiverKey:Su(n.object,t)??Ofe(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:Su(e.arguments?.[0],t)}:{receiverKey:cu(n.object,t),registrationVerbName:n.property.name,eventKey:cu(e.arguments?.[0],t),handlerKey:cu(e.arguments?.[1],t)}},Eu=e=>{if(e.kind!==`subscribe`||!v(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},kfe=(e,t)=>{let n=e;for(;v(n,`CallExpression`);){let e=v(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!v(e,`MemberExpression`)||e.computed||!v(e.property,`Identifier`))return null;if(e.property.name===`channel`)return cu(e.object,t);n=M(e.object)}return null},Afe=(e,t)=>{let n=e,r=S(n);for(;v(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=S(r.parent),t=e.parent;if(!v(t,`CallExpression`)||t.callee!==e)break;n=t,r=S(n)}return n===e||tu(n)!==`subscribe`||kfe(n,t)===null?null:_u(n,t,!0)},jfe=(e,t)=>{let n=Ul(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!A(e)||s(e.body,i=>{if(i!==e.body&&A(i))return!1;if(!v(i,`CallExpression`))return;let a=null;if(v(i.callee,`Identifier`)&&Pl(i.callee,t.scopes)){let e=i.arguments?.[0];a=e&&E(e)?e:null}else{let e=i.arguments?.find(e=>E(e)&&Hl(e)===i);e&&E(e)&&(a=e);let n=tu(i);n!==null&&(a=Eu({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...Tu(i,t)}))}let o=a?P(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},Mfe=(e,t)=>{let n=[];if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`))return n;let r=null;if(v(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];v(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=jfe(e,t);return s(e,a=>{if(a!==e&&A(a)&&(a===r||!i.has(a)&&!Vl(a)))return!1;if(au(a)){n.push({kind:`socket`,node:a,resourceName:v(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!v(a,`CallExpression`))return;if(v(a.callee,`Identifier`)&&Pl(a.callee,t.scopes)){if(a.callee.name===`setTimeout`&&(Yd(a)||Xd(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=tu(a);if(o!==null){let e=Tu(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Afe(a,t):null)??_u(a,t,!0),...e})}}),n.filter(e=>U(e.node,t))},Du=(e,t,n)=>{let r=e,i=j(r);for(;i&&Vl(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!v(e,`CallExpression`))break;r=e,i=j(r)}return qa(r,t,n,e)},Nfe=(e,t,n)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.body,`BlockStatement`))return t;let r=[];return $l(e.body,e=>{v(v(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=F(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=F(r);return i!==null&&i>t&&Ld(r,e,n)});return!Du(e.node,i,n)})},Ou=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=v(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!ru(e.identifier));return r&&v(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&v(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Pfe=(e,t)=>{if(!e)return!1;let n=M(e),r=new Set;if(s(n,e=>{if(!v(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return s(e,e=>{if(!v(e,`Identifier`)||n&&!ru(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!A(a);){if(v(a,`ForOfStatement`)){let e=M(a.left);if(!v(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},ku=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!v(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!v(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!v(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Au=(e,t,n)=>{if(!v(e,`Identifier`)||!ku(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=S(e.identifier),i=r.parent;if(v(i,`ForOfStatement`)&&i.right===r||v(i,`MemberExpression`)&&i.object===r&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`push`&&v(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(v(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return v(i.id,`Identifier`)&&v(e,`VariableDeclaration`)&&e.kind===`const`?Au(i.id,t,n):!1}return!1})):!1},Ffe=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`)||!ku(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?M(i.initializer):null,o=e=>{if(!e)return!1;let t=M(e);if(v(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(v(t,`ArrayExpression`))return!0;if(!v(t,`CallExpression`))return!1;let n=M(t.callee);return!!(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:v(a,`Identifier`)?Ffe(a,t,n):null},Ife=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=ufe.get(t);if(i||(i=new Map,ufe.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Ffe(e,t);return i.set(r.id,a),a},Lfe=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`)||!ku(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?M(i.initializer):null,o=e=>{if(!e)return!1;let t=M(e);return v(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):v(t,`ArrayExpression`)&&t.elements.every(e=>e===null||v(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:v(a,`Identifier`)?Lfe(a,t,n):null},ju=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=Ou(n,t);if(r)return Lfe(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!A(a);)a=a.parent;if(!a||!A(a))return null;let o=a.parent;if(!v(o,`CallExpression`))return null;let s=M(o.callee);if(v(s,`MemberExpression`)&&!s.computed&&v(s.property,`Identifier`)){if(v(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return q(o.arguments[0],t);if(o.arguments?.[0]===a)return q(s.object,t)}return null},Rfe=(e,t)=>{let n=Ou(e,t);return n?q(n.right,t):ju(e,t)},zfe=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},Mu=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=M(e);if(zfe(i,q(a,t),n),!v(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!ku(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?M(o.initializer):null,l=null,u=n;if(v(c,`Identifier`))l=c;else if(v(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&v(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,F(c)??1/0))}else if(v(c,`CallExpression`)){let e=M(c.callee);if(v(e,`MemberExpression`)&&!e.computed&&v(e.property,`Identifier`)){let r=e.property.name,i=v(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,F(c)??1/0))}}if(!l)return i;for(let[e,n]of Mu(l,t,u,s))zfe(i,e,n);return i},Bfe=(e,t)=>{let n=Ou(e,t);if(n)return Mu(n.right,t);let r=e?M(e):null;if(!v(r,`Identifier`))return new Map;let i=t.scopes.symbolFor(r);if(!i||i.kind!==`parameter`)return new Map;let a=i.bindingIdentifier.parent;for(;a&&!A(a);)a=a.parent;let o=a?.parent,s=v(o,`CallExpression`)?M(o.callee):null;return v(s,`MemberExpression`)?Mu(s.object,t):new Map},Vfe=(e,t,n)=>{let r=Pu(t.node,n);return r!==null&&Bfe(e,n).has(r)},Hfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=Ou(n,t)?.right;return r?Ife(r,t):null},Ufe=(e,t)=>{if(!e)return!1;let n=M(e);return v(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Wfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(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`&&!ru(e.identifier))?null:r.id},Gfe=(e,t)=>{if(!v(e,`BreakStatement`)&&!v(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(v(n,`LabeledStatement`)&&n.label.name===e.label.name)return B(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return n===t;if(v(e,`BreakStatement`)&&v(n,`SwitchStatement`))return!1;n=n.parent}return!1},Kfe=(e,t,n)=>{if(!(v(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=j(e),i=!1,a=!1;return s(t.body,o=>{if(i||a||o!==t.body&&A(o))return!1;if(v(o,`ReturnStatement`)||v(o,`ThrowStatement`)&&(!r||!Fl(o,e,r,n))||v(o,`BreakStatement`)&&Gfe(o,t))return i=!0,!1;if(v(o,`ContinueStatement`)&&Gfe(o,t)&&(F(o)??-1)<(F(e)??0))return a=!0,!1}),!i&&!a},Nu=(e,t,n)=>{let r=S(e).parent;return!!(v(r,`ExpressionStatement`)&&Kfe(r,t,n))},qfe=(e,t,n)=>{let r=S(e),i=v(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!A(o);){if(v(o,`ForOfStatement`)){if(!Kfe(i,o,n))return null;let e=q(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},Jfe=(e,t,n)=>qfe(e,t,n)!==null,Yfe=e=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!v(t,`CallExpression`))return null;let n=M(t.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?null:v(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},Xfe=(e,t)=>{let n=j(e);if(!n||!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return null;let r=Yfe(n);if(!r)return null;if(v(n.body,`BlockStatement`)){let r=S(e),i=r.parent,a=i?.parent;if(!v(i,`VariableDeclarator`)||i.init!==r||!v(i.id,`Identifier`)||!v(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];s(n.body,e=>{if(e!==n.body&&A(e))return!1;v(e,`ReturnStatement`)&&o.push(e)});let c=o[0],l=n.body.body??[],u=v(c,`ReturnStatement`)&&c.argument?M(c.argument):null,d=t.scopes.symbolFor(i.id);if(o.length!==1||l[l.length-1]!==c||!v(u,`Identifier`)||!d||t.scopes.symbolFor(u)?.id!==d.id||!Du(e,[c],t))return null}else if(S(e)!==n.body)return null;let i=S(r),a=i.parent;return v(a,`VariableDeclarator`)&&a.init===i?q(a.id,t):null},Zfe=(e,t)=>{let n=S(e),r=n.parent,i=v(r,`CallExpression`)?M(r.callee):null;if(!v(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!v(i,`MemberExpression`)||i.computed||!v(i.object,`Identifier`)||!v(i.property,`Identifier`)||i.property.name!==`push`||!ku(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?M(a.initializer):null;return a&&v(o,`ArrayExpression`)?a:null},Pu=(e,t)=>{let n=Zfe(e,t);if(n)return`symbol:${n.id}`;let r=Xfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(A(a))return null;if(v(a,`VariableDeclarator`)&&a.init===i)return q(a.id,t);i=a,a=i.parent}return null},Qfe=(e,t)=>{if(!v(e.node,`CallExpression`))return null;let n=M(e.node.callee);if(!v(n,`MemberExpression`)||n.computed)return null;let r=M(n.object);if(!ku(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=M(n.callee);return v(r,`MemberExpression`)&&!r.computed&&v(r.object,`Identifier`)&&v(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(j(o)!==j(e.node)||!Du(e.node,[o],t))return null;let s=M(o.callee);if(!v(s,`MemberExpression`)||!v(s.object,`Identifier`)||!ku(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?M(c.initializer):null;return!c||!v(l,`ArrayExpression`)||(l.elements?.length??0)!==0||j(c.declarationNode)!==j(e.node)?null:c.references.every(e=>{let t=S(e.identifier),n=t.parent;if(v(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!v(r,`MemberExpression`)||r.object!==t||r.computed||!v(r.property,`Identifier`)||!v(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?q(s.object,t):null},Fu=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&v(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!ru(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&A(i.declarationNode)?t.scopes.ownScopeFor(i.declarationNode)?.symbols.find(e=>e.name===i.name&&e.declarationNode===i.declarationNode):null,s=i?.kind===`function`&&i.references.every(e=>e.flag===`read`&&!ru(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!ru(e.identifier)))&&i.scope.symbols.filter(e=>e.name===i.name).length===1;return!i||i.kind!==`const`&&!a&&!s||!i.initializer||n.has(i.id)?r:(n.add(i.id),Fu(i.initializer,t,n))},$fe=(e,t)=>{let n=Fu(e,t);return v(n,`ObjectExpression`)?n:null},epe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=$fe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!v(e,`Property`)||T(e)!==`signal`)continue;let n=q(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},tpe=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)&&n.property.name===`signal`)return q(n.object,t);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?M(r.initializer):null;if(v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`signal`)return q(i.object,t);let a=r.bindingIdentifier.parent;return!v(a,`Property`)||T(a)!==`signal`||!v(a.parent,`ObjectPattern`)||!v(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:q(a.parent.parent.init,t)},npe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node,r=j(e.node);if(!r||!A(r))return null;let i=null;return s(r.body,a=>{if(i||a!==r.body&&A(a))return!1;if(!v(a,`CallExpression`)||Yn(a)!==`addEventListener`)return;let o=M(a.callee);if(!v(o,`MemberExpression`))return;let c=a.arguments[0]?M(a.arguments[0]):null;if(!v(c,`Literal`)||c.value!==`abort`)return;let l=tpe(o.object,t);if(!l)return;let u=Fu(a.arguments[1],t);if(!u||!A(u)||u.async||u.generator)return;let d=[];if(s(u.body,r=>{if(r!==u.body&&A(r))return!1;if(!v(r,`CallExpression`))return;let i=M(r.callee);!v(i,`MemberExpression`)||Yn(r)!==`removeEventListener`||cu(i.object,t)!==e.receiverKey||cu(r.arguments[0],t)!==e.eventKey||cu(r.arguments[1],t)!==e.handlerKey||!du(n.arguments[2],r.arguments[2],t,!0)||d.push(r)}),Ja(u,d,t))return i=l,!1}),i},rpe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?M(e.node.arguments[0]):null,r=M(e.node.callee);return v(n,`Literal`)&&n.value===`abort`&&v(r,`MemberExpression`)?tpe(r.object,t):null},Iu=e=>{let t=A(e)?e:j(e);if(!t||!A(t)||t.async||t.generator)return null;let n=t.parent;if(!v(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=M(n.callee);return v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Lu=e=>{let t=S(e),n=t.parent;return v(n,`CallExpression`)&&n.callee===t?n:null},Ru=(e,t,n)=>{let r=As(e);if(!r||Fu(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=Lu(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return j(o)===t&&U(o,n)?o:null},zu=(e,t)=>{if(!v(e,`NewExpression`))return!1;let n=M(e.callee);return v(n,`Identifier`)&&ve.has(n.name)&&t.scopes.isGlobalReference(n)},Bu=(e,t)=>{if(!e)return!0;let n=M(e);return v(n,`Literal`)&&n.value===null||v(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},ipe=(e,t,n,r)=>{if(!A(e)||e.async||e.generator||n.receiverKey===null||!v(n.node,`CallExpression`))return null;let i=M(n.node.callee),a=v(i,`MemberExpression`)?M(i.object):null;if(!a||!v(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),c=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!v(c,`VariableDeclarator`)||c.id!==o.bindingIdentifier||j(c)!==t||!Bu(c.init,r))return null;let l=[];for(let e of o.references){let t=S(e.identifier),n=t.parent;if(v(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){l.push(n);continue}let r=n,i=r?.parent;if(!v(r,`MemberExpression`)||r.object!==t||!v(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(T(r)??``))return null}if(l.length!==1)return null;let u=l[0];if(!u||!zu(M(u.right),r)||j(u)!==e||!Fl(u,n.node,e,r))return null;let d=[],f=F(u);if(f===null||(s(e.body,t=>{if(t!==e.body&&A(t))return!1;if(!v(t,`CallExpression`))return;let i=F(t);i===null||i>=f||!Ld(t,n,r)||d.push(Yu(t,e,n.receiverKey??``,r)??t)}),!Ja(e,d,r)))return null;let p=As(e),m=p?r.scopes.symbolFor(p):null;if(!m)return null;let h=[];for(let n of m.references){let i=Lu(n.identifier);if(i&&j(i)===t){h.push(i);continue}let a=S(n.identifier),o=a.parent;if(!o||!zu(o,r)||j(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&U(g,r)?g:null},Vu=(e,t,n,r)=>{let i=j(e);return!i||i===t?e:Ru(i,t,n)??(r?ipe(i,t,r,n):null)??e},ape=(e,t,n)=>{if(!A(e))return[];let r=As(e),i=q(r,n);if(!i)return[];let a=[];return s(t,e=>{if(e!==t&&A(e))return!1;let o=v(e,`CallExpression`)?e.arguments[1]:null;v(e,`CallExpression`)&&Yn(e)===`addEventListener`&&(q(o,n)===i||v(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},ope=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?M(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!v(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>ru(e.identifier));if(o.length!==1)return null;let s=o[0],c=S(s.identifier),l=c.parent;if(!v(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||j(l)!==j(t.node)||!Du(t.node,[l],n))return null;let u=M(l.right);return A(u)?u:null},Hu=(e,t,n,r)=>{if(!A(e)||!v(t,`CallExpression`))return null;let i=new Map(r);for(let r=0;r<e.params.length;r+=1){let a=e.params[r],o=t.arguments?.[r],s=v(a,`AssignmentPattern`)?M(a.left):a;if(!v(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=S(e.identifier),n=t.parent;return v(n,`AssignmentExpression`)&&n.left===t||v(n,`UpdateExpression`)&&n.argument===t||v(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){v(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}v(o,`SpreadElement`)||i.set(c.id,o)}return i},spe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=v(e,`ChainExpression`)?e.expression:e,i=v(r,`CallExpression`)?M(r.callee):null,a=v(r,`CallExpression`)?r.arguments[0]:null,o=Pu(t.node,n);if(!v(r,`CallExpression`)||!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`forEach`||!v(a,`Identifier`)||!ot.has(a.name)||!n.scopes.isGlobalReference(a)||o===null||o!==q(i.object,n))return!1;let s=Mu(i.object,n);return s.has(o)&&!Fd(t.node,r,s,n)},Uu=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!A(e)||r.has(e))return!1;r.add(e);let o=!1,c=[];s(e.body,s=>{if(o||s!==e.body&&A(s)&&!Vl(s))return!1;let l=v(s,`ChainExpression`)?s.expression:s;if(spe(s,t,n)){if(a){c.push(s);return}return o=!0,!1}if(Ld(s,t,n,i)){let r=Iu(s),u=v(l,`CallExpression`)?M(l.callee):null,d=v(u,`MemberExpression`)?u.object:u,f=Ou(d,n),p=Rfe(d,n),m=Bfe(d,n),h=Qfe(t,n)??Pu(t.node,n);if(p!==null&&j(s)!==e){let e=j(s);r&&e&&A(e)&&h!==null&&m.has(h)&&Ja(e,[s],n)&&!Fd(t.node,s,m,n)&&c.push(r);return}let g=Ou(v(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Xu(s,e,t,n,i);c.push(r??s);return}return o=!0,!1}let _=qfe(s,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&v(t.node,`CallExpression`)?new Set([M(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=v(e,`MemberExpression`)?ou(e.object,n):E(e)?ou(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Nu(s,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!Fd(t.node,s,m,n))&&c.push(_??g);return}if(!v(l,`CallExpression`))return;let u=Fu(l.callee,n),d=v(u,`Identifier`)?ope(u,t,n):u?Hd(u,n):null,f=d&&A(d)?Hu(d,l,n,i):null;if(d&&A(d)&&f&&!d.async&&!d.generator&&Uu(d,t,n,new Set(r),f,a)){let r=Xu(s,e,t,n,i)??dpe(s,e,t,n);c.push(r??l)}});let l=S(e.body);return a&&c.some(e=>S(e)===l)?!0:o||Ja(e,c,n)},Wu=(e,t,n)=>e.length>0&&e.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&A(r)&&Uu(r,t,n,new Set,new Map,!0))}),Gu=(e,t,n)=>{let r=M(e);if(!v(r,`CallExpression`))return!1;let i=M(r.callee);if(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=M(i.object);if(!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`))return!1;let o=q(a.object,n);if(o===null||o!==q(r.arguments?.[0],n))return!1;let s=a.property.name;return Dfe(o,s,t,n)?!0:t.kind===`socket`?vu(o,t,n)&&(Ed.has(s)||Td.has(s)):t.kind===`subscribe`&&vu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||cn.has(s))},Ku=(e,t,n,r=!1)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(Gu(e,t,n))return!0;let r=Fu(e,n),i=Hd(e,n);return r&&Gu(r,t,n)?!0:!!(i&&A(i)&&Uu(i,t,n))};if(!v(e.body,`BlockStatement`))return i(M(e.body));let a=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&i(M(e.argument))&&a.push(e)}),r?Du(Vu(t.node,e,n,t),a,n):Ja(e,a,n)},qu=(e,t,n,r=new Map)=>{let i=q(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=M(e);if(!v(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return q(a.left,n,new Set,r)===t&&o(a.right)||q(a.right,n,new Set,r)===t&&o(a.left)},Ju=(e,t,n,r)=>{let i=M(e),a=e=>{let t=M(e);if(v(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&v(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(v(t,`LogicalExpression`)){let e=a(t.left),n=a(t.right);return t.operator===`&&`?e||n:e&&n}return!1};if(a(i))return!0;if(v(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Kt(M(t))===!1)return!0}if(v(i,`UnaryExpression`)&&i.operator===`!`){let e=M(i.argument);if(v(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Kt(M(i))===!0)return!0}let a=q(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:qu(i.argument,t,n,r)}if(v(i,`LogicalExpression`)){let e=Ju(i.left,t,n,r),a=Ju(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(v(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?q(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Yu=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(v(a,`IfStatement`)){if(!qu(a.test,n,r,i)||!Du(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(A(t)&&v(t.body,`BlockStatement`)){let a=o??e;for(;a.parent&&a.parent!==t.body;)a=a.parent;let s=t.body.body.findIndex(e=>e===a);for(let e=s-1;e>=0;--e){let a=t.body.body[e];if(v(a,`IfStatement`)&&a.alternate===null&&Xl(a.consequent)&&Ju(a.test,n,r,i))return a}}return o},Xu=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Yu(e,t,n.handleKey,r,i),cpe=(e,t,n,r)=>{if(!A(t)||n.handleKey===null)return null;let i=e=>{let t=M(e);return v(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(v(a,`IfStatement`)&&B(e,a.consequent)&&(o=i(a.test).map(e=>q(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!v(a,`IfStatement`)||!o)return null;let c=K(n.node,r.scopes);if(!c){let e=j(n.node);for(;e&&!Ts(e);)e=j(e);c=e}if(!c||!A(c))return null;let l=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},u=[],d=[];if(s(c.body,e=>{if(!v(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=q(e.left,r);t===o&&u.push(e),t===n.handleKey&&v(M(e.right),`CallExpression`)&&Yn(M(e.right))===`setTimeout`&&d.push(e)}),u.length===0||d.length===0)return null;let f=fu(u[0].left,r),p=f?.initializer?M(f.initializer):null,m=v(p,`CallExpression`)&&p.arguments[0]&&E(p.arguments[0])?p.arguments[0]:null;if(!m||!l(m))return null;let h=e=>{if(qu(e,o,r))return!0;let t=!1;return s(e,e=>{if(t)return!1;if(v(e,`MemberExpression`)&&q(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},g=()=>{let e=As(j(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||n.callee!==t)return!1;let i=j(n);if(!i||!A(i))return!1;if(Ud(n,u.filter(e=>j(e)===i&&!l(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(v(a,`IfStatement`)&&B(n,a.consequent)&&h(a.test))return!0;a=a.parent??null}return!1})};if(!d.every(e=>{let t=j(e);return!t||!A(t)?!1:Ud(e,u.filter(e=>j(e)===t&&!l(e.right)),t,r)||g()}))return null;let _=e=>{if(!A(e))return!1;let t=e.parent,i=t?.parent;return!!(v(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&v(i,`AssignmentExpression`)&&q(i.left,r)===n.handleKey)},y=t=>{let i=j(t);if(!i||!A(i))return!1;if(_(i))return!0;let a=[];return s(i.body,t=>{if(t!==i.body&&A(t))return!1;(t===e||fd(t,n,r))&&a.push(t)}),Ud(t,a,i,r)||Du(t,a,r)};return u.every(e=>!l(e.right)||y(e))?a:null},lpe=new WeakMap,upe=new WeakMap,dpe=(e,t,n,r)=>{let i=lpe.get(e);if(i||(i=new WeakMap,lpe.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=upe.get(e);if(a||(a=new WeakSet,upe.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=cpe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},Zu=(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=v(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||v(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||v(o,`LogicalExpression`)&&o.right===a||v(o,`AssignmentPattern`)&&o.right===a||(v(o,`ForStatement`)||v(o,`ForInStatement`)||v(o,`ForOfStatement`)||v(o,`WhileStatement`)||v(o,`DoWhileStatement`))&&o.body===a?a:v(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},fpe=(e,t,n,r=!1)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=F(t.node);if(!i||!a||o===null)return!1;let s=[];return $l(e.body,c=>{if(!v(c,`CallExpression`))return;let l=F(c),u=Xu(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&Zu(c,t.node,e))return;if(Ld(c,t,n)){s.push(u??c);return}let f=Hd(c.callee,n),p=f&&A(f)?Hu(f,c,n,new Map):null;f&&A(f)&&p&&Uu(f,t,n,new Set,p)&&s.push(u??c)}),r?Ud(t.node,s,e,n):Ja(e,s,n)},ppe=(e,t,n)=>{let r=j(e);if(!r||!v(r,`ArrowFunctionExpression`)&&!v(r,`FunctionExpression`)&&!v(r,`FunctionDeclaration`))return!1;let i=!1;return s(r.body,a=>{if(i)return!1;if(!v(a,`CallExpression`)||j(a)!==r||!iu(a,n))return;let o=Xn(a);if(o&&o!==e&&Ku(o,t,n))return i=!0,!1}),i},mpe=(e,t,n)=>t.handleKey!==null&&ppe(e,t,n)&&fpe(e,t,n,t.registrationVerbName===`setTimeout`),Qu=(e,t,n,r)=>{let i=M(e);if(v(i,`UnaryExpression`)&&i.operator===`!`)return Qu(i.argument,!t,n,r);if(v(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Qu(i.left,t,n,r),...Qu(i.right,t,n,r)]:[];if(v(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Kt(i.left),a=Kt(i.right),o=e??a,s=e===null?i.left:i.right,c=q(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:v(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=q(i,r);return a===null?[]:[{bindingIdentifier:v(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},$u=(e,t,n,r=!1)=>{if(!A(e)||e.async&&!r)return[];let i=[];s(e.body,r=>{if(r!==e.body&&A(r))return!1;v(r,`IfStatement`)&&!r.alternate&&!Fl(r.consequent,t,e,n)&&Ud(t,[r],e,n)&&i.push(...Qu(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)v(o,`IfStatement`)&&o.consequent===a&&i.push(...Qu(o.test,!1,o,n)),a=o,o=o.parent;return i},ed=(e,t,n)=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);if(!r||!A(r)||r.async||r.generator)return!1;let i=!1;return s(r.body,e=>{if(i||e!==r.body&&A(e))return!1;if(v(e,`AssignmentExpression`)&&e.operator===`=`&&q(e.left,n)===t.key&&Kt(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},td=(e,t,n,r)=>{let i=F(t);if(!A(e)||i===null)return!0;let a=!1;return s(e.body,t=>{if(a||t!==e.body&&A(t))return!1;let o=F(t);if(o===null||o>=i)return;let s=v(t,`AssignmentExpression`)?t.left:v(t,`UpdateExpression`)?t.argument:null;if(s&&q(s,r)===n.key)return a=!0,!1}),a},hpe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(v(a,`TryStatement`)&&a.block===i&&a.handler&&Fl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},nd=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!v(i.declarationNode,`VariableDeclarator`)||j(i.declarationNode)!==e?!1:i.references.every(e=>{if(!ru(e.identifier))return!0;let r=S(e.identifier),i=r.parent;return v(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Kt(i.right)===t.value&&n.includes(j(i)??i)})},gpe=(e,t,n,r)=>{let i=[];s(t.guardNode,e=>{if(i.length===0&&v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&v(e.property,`Identifier`)&&q(e,r)===t.key)return i.push(e),!1});let a=i[0];if(!a)return!1;let o=r.scopes.symbolFor(a.object),c=o?.initializer?M(o.initializer):null;if(!o||o.kind!==`const`||!v(o.declarationNode,`VariableDeclarator`)||j(o.declarationNode)!==e||!v(c,`ObjectExpression`)||c.properties.length!==1)return!1;let l=c.properties[0];return!v(l,`Property`)||T(l)!==T(a)||Kt(l.value)!==!t.value?!1:o.references.every(e=>{let i=pd(e.identifier);if(!v(i,`MemberExpression`)||q(i,r)!==t.key)return!1;if(!ru(e.identifier))return!0;let a=i.parent;return v(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&Kt(a.right)===t.value&&n.includes(j(a)??a)})},rd=(e,t,n,r)=>{if(!A(e))return!0;let i=F(t.guardNode),a=F(n);if(i===null||a===null)return!0;let o=!1;return s(e.body,t=>{if(o||t!==e.body&&A(t))return!1;let s=F(t);if(!(s===null||s<=i||s>=a)&&(v(t,`AwaitExpression`)||v(t,`YieldExpression`)||v(t,`CallExpression`)&&!eo(t,r.scopes))&&(Fl(t,n,e,r)||hpe(t,n,e,r)))return o=!0,!1}),o},_pe=(e,t,n,r,i)=>{let a=S(t),o=v(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:Ru(t,e,i);if(!A(t)||!t.async||t.generator||!o||j(o)!==e||!Ul(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(v(s,`ForStatement`)||v(s,`ForInStatement`)||v(s,`ForOfStatement`)||v(s,`WhileStatement`)||v(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,i);return t&&A(t)?[t]:[]});return c.length===r.length?$u(t,n,i,!0).some(a=>(nd(e,a,c,i)||gpe(e,a,c,i))&&!rd(t,a,n,i)&&!td(t,n,a,i)&&r.every(e=>ed(e,a,i))):!1},id=(e,t)=>{let n=Zl(M(e),t.scopes),r=n?.initializer?M(n.initializer):null;if(!v(r,`CallExpression`))return null;let i=r.arguments?.[0]?M(r.arguments[0]):null;return!v(i,`Literal`)||typeof i.value!=`number`?null:q(e,t)},ad=(e,t)=>{let n=M(e);if(v(n,`LogicalExpression`)&&n.operator===`||`)return ad(n.left,t)??ad(n.right,t);if(!v(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=id(n.left,t),i=id(n.right,t),a=M(r?n.right:n.left),o=r??i;return o&&v(a,`Identifier`)?o:null},od=(e,t,n)=>{if(!A(e))return null;let r=null;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(!v(i,`IfStatement`)||i.alternate)return;let a=ad(i.test,n);!a||Fl(i.consequent,t,e,n)||!Ud(t,[i],e,n)||(r=a)}),r},vpe=(e,t,n)=>{if(v(e,`UpdateExpression`)&&q(e.argument,n)===t)return!0;if(!v(e,`AssignmentExpression`)||q(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=M(e.right);return v(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},ype=(e,t,n)=>{if(!A(e))return!1;let r=!1;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(vpe(i,t,n))return r=!0,!1}),r},sd=(e,t,n)=>e.length>0&&e.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&A(r)&&Uu(r,t,n))}),bpe=(e,t)=>{let n=q(e,t),r=M(e);if(!v(r,`Identifier`))return n;let i=Fu(r,t);return i&&i!==r?q(i,t)??n:n},xpe=(e,t,n)=>{let r=M(e);if(!v(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=M(e),a=M(r);if(!(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||bpe(i.object,n)!==t||!v(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Spe=(e,t,n)=>{if(!A(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];s(e.body,r=>{if(r!==e.body&&A(r))return!1;if(!v(r,`IfStatement`)||r.alternate!==null||!Xl(r.consequent)||!Ud(t.node,[r],e,n))return;let o=xpe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let c=[...o][0],l=new Set(a.map(({value:e})=>e)),u=K(t.node,n.scopes);if(!u){let e=j(t.node);for(;e&&!Ts(e);)e=j(e);u=e}if(!c||!u||!A(u))return!1;let d=new Set,f=!1;return s(u.body,e=>{if(f)return!1;if(!v(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=q(e.left,n);if(t===`${i}.${c}`)return f=!0,!1;if(t!==i)return;let r=M(e.right);if(v(r,`Literal`)&&r.value===null)return;let a=Fu(r,n);if(!a||!v(a,`ObjectExpression`))return f=!0,!1;let o=a.properties.find(e=>v(e,`Property`)&&T(e)===c),s=v(o,`Property`)?M(o.value):null;if(!s||!v(s,`Literal`)||typeof s.value!=`string`)return f=!0,!1;d.add(s.value)}),!f&&d.size>0&&[...d].every(e=>l.has(e))},Cpe=(e,t,n)=>{if(!A(e)||t.handleKey===null)return!1;let r=F(t.node);if(r===null)return!1;let i=e=>{let t=M(e);return v(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=M(e),r=q(t,n);if(r)return r;if(!v(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?q(a,n):null},o=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},c=e=>{if(!A(e))return!1;let r=e.parent,i=r?.parent;return!!(v(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Yn(r)===`setTimeout`&&v(i,`AssignmentExpression`)&&q(i.left,n)===t.handleKey)},l=e=>{let r=j(e);if(!r||!A(r))return!1;let i=[];return s(r.body,a=>{if(a!==r.body&&A(a))return!1;let o=F(a),s=F(e);o!==null&&s!==null&&o<s&&fd(a,t,n)&&i.push(Xu(a,r,t,n)??a)}),Ud(e,i,r,n)},u=null,d=null,f=null,p=null;if(s(e.body,o=>{if(u||!v(o,`IfStatement`))return;let s=F(o);if(s===null||s>=r||Fl(o.consequent,t.node,e,n))return;let c=i(o.test),l=c.map(a).filter(e=>e!==null);if(l.includes(t.handleKey??``)){d=l.find(e=>e!==t.handleKey)??null;for(let e of c){let t=M(e);if(!v(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=q(t.left,n),i=q(t.right,n);if(r&&i){f=r,p=i;break}}d&&f&&p&&(u=o)}}),!u||!d||!f||!p)return!1;let m=K(t.node,n.scopes);if(!m){let e=j(t.node);for(;e&&!Ts(e);)e=j(e);m=e}if(!m||!A(m))return!1;let h=[],g=[],_=[],y=[];if(s(m.body,e=>{if(v(e,`AssignmentExpression`)){let r=q(e.left,n);r===d&&h.push(e),r===f&&g.push(e),r===p&&_.push(e),r===t.handleKey&&v(M(e.right),`CallExpression`)&&Yn(M(e.right))===`setTimeout`&&y.push(e)}v(e,`UpdateExpression`)&&q(e.argument,n)===p&&_.push(e)}),y.length===0)return!1;let b=h.length>0?fu(h[0].left,n)?.initializer:null,ee=b&&v(b,`CallExpression`)?b.arguments[0]:null;return!(!ee||!E(ee)||!o(ee)||!y.every(e=>{let t=j(e);return!t||!A(t)?!1:Ud(e,h.filter(e=>j(e)===t&&!o(e.right)),t,n)})||h.filter(e=>o(e.right)&&!c(j(e)??e)&&!l(e)).length>0||g.some(e=>q(e.right,n)!==p)||_.some(e=>!l(e)))},cd=(e,t,n)=>{let r=t.handleKey;if(!A(e)||r===null)return!1;let i=F(t.node);if(i===null)return!1;let a=!1,o=[];return s(e.body,s=>{if(a||s!==e.body&&A(s))return!1;if(v(s,`IfStatement`)&&!s.alternate&&qu(s.test,r,n)&&!Fl(s.consequent,t.node,e,n)&&Ud(t.node,[s],e,n))return a=!0,!1;let c=F(s);if(c===null||c>=i||!fd(s,t,n))return;let l=Xu(s,e,t,n);o.push(l??s)}),a||Cpe(e,t,n)||Spe(e,t,n)||Ud(t.node,o,e,n)},ld=(e,t)=>e.kind===`subscribe`?e.handlerKey??q(Eu(e),t):e.kind!==`timer`||!v(e.node,`CallExpression`)?null:q(e.node.arguments?.[0],t),ud=(e,t)=>{let n=As(e);return new Set([q(e,t),q(n,t)].filter(e=>e!==null))},dd=(e,t,n,r)=>Wu(n,t,r)&&Du(Vu(t.node,e,r),n,r),fd=(e,t,n)=>{if(Ld(e,t,n))return!0;let r=v(e,`ChainExpression`)?e.expression:e;if(!v(r,`CallExpression`))return!1;let i=Fu(r.callee,n),a=A(i)?i:Hd(r.callee,n),o=a&&A(a)?Hu(a,r,n,new Map):null;return!!(a&&A(a)&&o&&!a.async&&!a.generator&&Uu(a,t,n,new Set,o,!0))},wpe=(e,t,n)=>{let r=M(e);if(v(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&v(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode)===t?e:null}let i=Zl(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;v(a,`MemberExpression`);)a=M(a.object);if(!v(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?M(o.initializer):null;return o&&o.kind===`const`&&v(o.declarationNode,`VariableDeclarator`)&&v(s,`ObjectExpression`)&&j(o.declarationNode)===t?o:null},pd=e=>{let t=e;for(;v(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return S(t)},Tpe=(e,t)=>{let n=new Set,r=new Set,i=ld(e,t);if(i&&n.add(i),e.kind!==`timer`||!v(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!v(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?j(o.bindingIdentifier):null;if(!o||!s||!A(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=As(s),u=l?t.scopes.symbolFor(l):null;if(c<0||!u)return n;for(let e of u.references){let i=Lu(e.identifier);if(!v(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!E(a))return n;let o=q(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},md=(e,t,n,r)=>{if(!A(e)||t.handleKey===null)return!1;let i=ud(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||j(n.node)===e)return!1;let a=Tpe(n,r);return[...i].some(e=>a.has(e))})},Epe=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Lu(n.identifier),s=r?j(r):null;if(!r||!s||!A(s))return!1;if(s===e)o+=1;else if(!md(s,t,[t],i))return!1;let c=a.get(s)??[];c.push(r),a.set(s,c)}return o>1?!1:[...a.entries()].every(([e,t])=>t.every((n,r)=>t.slice(r+1).every(t=>!Fl(n,t,e,i)&&!Fl(t,n,e,i))))},hd=(e,t,n,r,i)=>t.references.every(t=>{let a=pd(t.identifier);if(q(a,i)!==e.handleKey)return v(n.left,`Identifier`);if(!ru(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!v(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let c=M(o.right),l=j(o),u=r.find(t=>t.kind===`timer`&&t.node===c&&t.handleKey===e.handleKey),d=j(e.node),f=d?ud(d,i):new Set;if(u&&(l&&md(l,e,r,i)||f.has(ld(u,i)??``)))return!0;if(u&&l===d){let t=S(o).parent,n=t?.parent;if(!v(t,`ExpressionStatement`)||!v(n,`BlockStatement`))return!1;let r=n.body[n.body.findIndex(e=>e===t)-1],a=v(r,`ExpressionStatement`)?M(r.expression):null;return!!(v(a,`CallExpression`)&&v(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&Ld(a,e,i))}if(!(v(c,`Literal`)&&(c.value===null||e.registrationVerbName===`requestAnimationFrame`&&c.value===0)||v(c,`Identifier`)&&c.name===`undefined`&&i.scopes.isGlobalReference(c))||!l||!A(l))return!1;if(md(l,e,r,i)||e.registrationVerbName===`requestAnimationFrame`&&ud(l,i).has(ld(e,i)??``)&&Fl(o,e.node,l,i))return!0;let p=[];return s(l.body,t=>{if(t!==l.body&&A(t))return!1;fd(t,e,i)&&p.push(t)}),Ud(o,p,l,i)}),Dpe=(e,t,n)=>{let r=Zfe(t.node,n);return!!(r&&j(r.declarationNode)===e)},Ope=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`&&e.registrationVerbName!==`requestAnimationFrame`)return!1;let i=ud(t,r);if(!i.has(ld(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&j(e.node)===t&&i.has(ld(e,r)??``));return a.length===1&&a[0]===e},gd=(e,t,n,r,i)=>{let a=j(t.node),o=S(t.node),s=o.parent,c=t.handleKey!==null&&v(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?wpe(s.left,e,i):null,l=Dpe(e,t,i);if(t.kind!==`timer`||!a||!A(a)||a===e||a.async||a.generator||!c&&!l||!Wu(r,t,i)||c&&v(s,`AssignmentExpression`)&&!hd(t,c,s,n,i))return!1;if(md(a,t,n,i))return!0;let u=As(a),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.length===1?Lu(d.references[0].identifier):null,p=Ope(t,a,n,i);if(c&&!p&&!cd(a,t,i)&&!f&&!Epe(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(v(m,`ForStatement`)||v(m,`ForInStatement`)||v(m,`ForOfStatement`)||v(m,`WhileStatement`)||v(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&B(e.identifier,t.node)&&ld(t,i)===q(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=Wl(e,i.scopes);return d.references.every(o=>{let s=q(o.identifier,i),c=S(o.identifier).parent;if(h.some(e=>e===o))return!0;let l=n.find(e=>e!==t&&s!==null&&ld(e,i)===s&&(B(o.identifier,e.node)||c&&Ld(c,e,i))),u=l?Eu(l):null;if(l&&!(u&&A(u)&&u.async)&&dd(e,l,r,i))return!0;let d=Lu(o.identifier);if(!d)return!1;let f=j(d);if(!f||!A(f)||f===a||f.generator)return!1;if(f.async)return _pe(e,f,d,r,i);if(md(f,t,n,i))return!0;if(f===e)return Du(Vu(d,e,i),r,i);let p=ud(f,i),m=n.find(e=>{if(e===t)return!1;let n=Eu(e),r=n?Fu(n,i):null;return p.has(ld(e,i)??``)||r===f});return m?dd(e,m,r,i):g.has(f)&&Du(Vu(d,e,i),r,i)})},kpe=(e,t,n,r,i,a)=>{let o=Lu(e);if(o){let e=j(o);if(e&&e!==t&&Wl(r).has(e))return{generationKey:null};let n=e?od(e,o,a):null;return n?{generationKey:n}:null}let s=S(e),c=s.parent;if(!v(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!v(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:_u(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=od(t,n,a);return l.handleKey!==null&&sd(i,l,a)&&u?{generationKey:u}:null},Ape=(e,t,n,r)=>{let i=j(t.node),a=S(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!A(i)||i===e||i.async||i.generator||!v(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!Zl(M(o.left),r.scopes)||!Wl(e).has(i)||!sd(n,t,r)||!Ja(e,n,r))return!1;let s=n.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&A(t)?[t]:[]}),c=As(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>kpe(a.identifier,i,t.node,e,n,r));if(u.some(e=>e===null))return!1;let d=new Set(u.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(d.size!==1)return!1;let f=d.values().next().value;return typeof f==`string`?[...Wl(e),...s].some(e=>ype(e,f,r)):!1},jpe=(e,t,n,r)=>{if(Ape(e,t,n,r))return!0;let i=j(t.node),a=i?Hl(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!A(i)||i===e||i.async||i.generator||!v(t.node,`CallExpression`)||!v(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!Ul(e,r.scopes).has(i)||!Du(a,n,r))return!1;let o=S(t.node),c=o.parent;if(!v(c,`AssignmentExpression`)||c.operator!==`=`||c.right!==o||!v(c.left,`Identifier`))return!1;let l=r.scopes.symbolFor(c.left);if(!l||l.kind!==`let`&&l.kind!==`var`||!v(l.declarationNode,`VariableDeclarator`)||j(l.declarationNode)!==e)return!1;let u=n.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&A(t)?[t]:[]});if(u.length!==n.length)return!1;let d=new Map;for(let e of u){if(!A(e))return!1;let n=[];if(s(e.body,i=>{if(i!==e.body&&A(i))return!1;if(v(i,`CallExpression`)&&v(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Ld(i,t,r)){let a=Xu(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Ja(e,n.map(e=>e.anchor),r))return!1;d.set(e,n)}let f=l.references.filter(e=>ru(e.identifier)),p=f.some(e=>S(e.identifier).parent===c),m=t.node.arguments,h=f.some(e=>{let t=S(e.identifier),n=t.parent;if(n===c)return!1;if(!v(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=M(n.right);if(!(v(i,`Literal`)&&i.value===null||v(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=j(n);if(a&&A(a)&&m.some(e=>{let t=M(e);return A(t)&&t===a}))return!1;let o=j(n),s=o?d.get(o):void 0;return!(o&&s&&Ud(n,s.map(e=>e.handleGuard&&B(n,e.handleGuard.consequent)?e.call:e.anchor),o,r))});if(!p||h)return!1;let g=t.node.parent;for(;g&&g!==i;){if(v(g,`ForStatement`)||v(g,`ForInStatement`)||v(g,`ForOfStatement`)||v(g,`WhileStatement`)||v(g,`DoWhileStatement`))return!1;g=g.parent}let _=!1;for(let e of t.node.arguments??[])s(e,e=>{if(_||A(e))return!1;if(v(e,`AwaitExpression`)||v(e,`YieldExpression`)||v(e,`CallExpression`)&&!eo(e,r.scopes))return _=!0,!1});return _?!1:$u(i,t.node,r).some(a=>nd(e,a,u,r)&&!rd(i,a,t.node,r)&&!td(i,t.node,a,r)&&n.every(e=>ed(e,a,r)))},Mpe=(e,t,n)=>{if(!A(e)||!v(e.body,`BlockStatement`))return!1;let r=new Set;if(s(e.body,e=>{if(!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||Yn(e)!==`push`||!v(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!E(a))return;let o=M(a),c=A(o)?o:Fu(a,n);if(!c||!A(c))return;let l=!1;if(s(c.body,e=>{if(l||e!==c.body&&A(e))return l?!1:void 0;if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let i=v(t.node,`CallExpression`)?t.node:null;if(Yn(e)===`removeEventListener`&&i&&cu(r.object,n)===t.receiverKey&&cu(e.arguments[0],n)===t.eventKey&&cu(e.arguments[1],n)===t.handlerKey&&du(i.arguments[2],e.arguments[2],n,!0))return l=!0,!1}),!l)return;let u=S(t.node),d=u.parent,f=S(e),p=f.parent;if(!d||!v(d,`ExpressionStatement`)||d.expression!==u||!p||!v(p,`ExpressionStatement`)||p.expression!==f||!d.parent||!v(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=n.scopes.symbolFor(i.object),g=h?.initializer?M(h.initializer):null;h?.kind!==`const`||!g||!v(g,`ArrayExpression`)||g.elements.length!==0||h.references.every(e=>{let t=S(e.identifier);if(v(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!v(n,`MemberExpression`)||n.object!==t)return!1;let r=S(n).parent;return!!(r&&v(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(T(n)??``))})&&r.add(h)}),r.size===0)return!1;let i=!1;return $l(e.body,e=>{if(i||!v(e,`ReturnStatement`)||!e.argument)return;let t=M(e.argument),a=A(t)?t:Fu(e.argument,n);!a||!A(a)||s(a.body,e=>{if(i)return!1;if(!v(e,`CallExpression`))return;let t=M(e.callee);if(v(t,`Identifier`)){let a=Ou(t,n),o=a?M(a.right):null,s=v(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Nu(e,a,n))return i=!0,!1}if(!v(t,`MemberExpression`)||Yn(e)!==`forEach`||!v(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!E(o))return;let c=M(o);if(!A(c))return;let l=c.params[0];if(!l||!v(l,`Identifier`))return;let u=n.scopes.symbolFor(l);return s(c.body,e=>{if(v(e,`CallExpression`)&&v(M(e.callee),`Identifier`)&&n.scopes.symbolFor(M(e.callee))?.id===u?.id)return i=!0,!1}),i?!1:void 0})}),i},Npe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!v(t.node,`CallExpression`))return!1;let r=M(t.node.callee);if(!v(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=ou(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=cu(r.object,n),c=cu(t.node.arguments[0],n),l=cu(t.node.arguments[1],n),u=uu(t.node.arguments[2],n,!0),d=!1;return s(e,e=>{if(d||!v(e,`CallExpression`))return d?!1:void 0;if(Yn(e)!==`removeEventListener`)return;let r=M(e.callee);if(v(r,`MemberExpression`)&&!(cu(r.object,n)!==o||cu(e.arguments[0],n)!==c||cu(e.arguments[1],n)!==l||uu(e.arguments[2],n,!0)!==u)&&Nd(e,a,n)&&!Fd(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return d=!0,!1}),d},_d=(e,t)=>{let n=M(e);return v(n,`MemberExpression`)?fu(n,t):null},vd=(e,t)=>{let n=M(e);if(v(n,`LogicalExpression`)&&n.operator===`||`){let e=vd(n.left,t),r=vd(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(v(n,`UnaryExpression`)&&n.operator===`!`){let e=_d(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(v(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=_d(n.left,t),r=_d(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},Ppe=(e,t)=>{let n=M(e);if(!v(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=_d(n.left,t),i=_d(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},yd=(e,t,n,r=new Set)=>{if(!A(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!v(a,`BlockStatement`)){let e=M(a);if(!v(e,`CallExpression`))return null;let r=Fu(e.callee,n);return r?yd(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!v(r,`VariableDeclaration`)){if(v(r,`ExpressionStatement`)){let o=M(r.expression);if(v(o,`AssignmentExpression`)){let e=q(o.left,n),r=M(o.right),i=v(r,`Literal`)&&r.value===null||v(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(v(o,`CallExpression`)&&e===a.body.length-1){let e=Fu(o.callee,n);return e?yd(e,t,n,i):null}return null}return v(r,`IfStatement`)?Xl(r.consequent)?vd(r.test,n):!r.alternate&&e===a.body.length-1?Ppe(r.test,n):null:null}}return null},bd=(e,t,n,r=new Set)=>{if(!A(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return s(e.body,r=>{if(a||r!==e.body&&A(r))return!1;if(v(r,`UpdateExpression`))return fu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(v(r,`AssignmentExpression`))return fu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?Kt(M(r.right))===!1:Kt(M(r.right))!==!0))?(a=!0,!1):void 0;if(!v(r,`CallExpression`))return;let o=Fu(r.callee,n);if(o&&bd(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},Fpe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!v(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&E(n)?M(n):null,i=r?A(r)?r:Fu(r,t):null;if(!i)return!1;let a=yd(i,e,t);if(!a)return!1;let o=K(e.node,t.scopes);if(!o){let t=j(e.node);for(;t&&!Ts(t);)t=j(t);o=t}if(!o||!A(o))return!1;let c=!1;return s(o.body,e=>{if(c)return!1;if(!v(e,`CallExpression`)||!iu(e,t))return;let n=Xn(e);!n||!A(n)||$l(n.body,e=>{if(c||!v(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);n&&bd(n,a,t)&&(c=!0)})}),c},Ipe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!A(e)||!v(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&E(r)?M(r):null,a=i?A(i)?i:Fu(i,n):null;if(!a)return!1;let o=yd(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let c=[];return s(e.body,t=>{if(t!==e.body&&A(t))return!1;if(v(t,`UpdateExpression`)&&fu(t.argument,n)?.id===o.refSymbol.id){c.push(t);return}v(t,`AssignmentExpression`)&&t.operator!==`=`&&fu(t.left,n)?.id===o.refSymbol.id&&c.push(t)}),Ud(t.node,c,e,n)},xd=(e,t)=>{if(Fpe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!v(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!E(n))return!1;let r=M(n),i=A(r)?r:Fu(n,t);if(!i||!A(i)||!v(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!v(a,`IfStatement`)||!Xl(a.consequent))return!1;let o=M(a.test);for(;v(o,`LogicalExpression`)&&o.operator===`||`;)o=M(o.left);if(!v(o,`UnaryExpression`)||o.operator!==`!`)return!1;let c=Zl(M(o.argument),t.scopes,{resolveNamedAliases:!0});if(!c)return!1;let l=j(e.node),u=null;for(;l;){let e=l.parent;if(e&&v(e,`CallExpression`)&&iu(e,t)){u=e;break}l=j(l)}let d=K(u||e.node,t.scopes);if(!d){let t=j(e.node);for(;t&&!Ts(t);)t=j(t);d=t}if(!d||!A(d))return!1;let f=!1;return s(d.body,e=>{if(f)return!1;if(!v(e,`CallExpression`)||!iu(e,t))return;let n=Xn(e);if(!n||!A(n))return;let r=M(n.body);A(r)&&s(r.body,e=>{if(v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),t.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Kt(M(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return f=!0,!1}),$l(n.body,e=>{if(f||!v(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);!n||!A(n)||s(n.body,e=>{if(v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),t.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Kt(M(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return f=!0,!1})})}),f},Lpe=(e,t,n,r,i)=>{if(t.registrationVerbName!==`observe`||!v(t.node,`CallExpression`)||!v(t.node.callee,`MemberExpression`))return!1;let a=M(t.node.callee.object),o=v(a,`Identifier`)?i.scopes.symbolFor(a):null,c=j(t.node);if(!o||!c||!A(c)||c===e||c.async||c.generator||j(o.declarationNode)!==e||!Bu(o.initializer,i)||!Wu(r,t,i))return!1;let l=o.references.flatMap(e=>{let t=e.identifier.parent;return v(t,`AssignmentExpression`)&&t.left===e.identifier&&t.operator===`=`&&zu(M(t.right),i)?[t]:[]});if(l.length!==1)return!1;let u=l[0];if(!u||j(u)!==c||!Di(u,t.node,i)||!hd({...t,node:u.right,handleKey:t.receiverKey},o,u,n,i))return!1;let d=e=>v(e,`LogicalExpression`)&&e.operator===`||`?d(e.left)||d(e.right):q(e,i)===t.receiverKey,f=!1;if(s(c.body,e=>{if(e!==c.body&&A(e))return!1;v(e,`IfStatement`)&&d(M(e.test))&&!Fl(e.consequent,u,c,i)&&Di(e,u,i)&&(f=!0)}),!f)return!1;let p=As(c),m=p?i.scopes.symbolFor(p):null;return!m||m.references.length===0?!1:m.references.every(a=>{let o=Lu(a.identifier),s=o?j(o):null;if(!o||!s||!A(s)||s.async||s.generator)return!1;if(s===e)return Du(o,r,i);let c=As(s),l=c?i.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=q(c,i),d=n.filter(n=>n!==t&&n.handlerKey===u&&n.registrationVerbName===`addEventListener`&&j(n.node)===e);return d.length>0&&d.every(t=>dd(e,t,r,i))&&l.references.every(e=>{let t=e.identifier.parent;return d.some(e=>e.node===t||t&&Ld(t,e,i))})})},Rpe=(e,t,n,r)=>{let i=j(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!i||!A(e)||!v(e.body,`BlockStatement`))return!1;let a=[];if($l(e.body,e=>{if(!v(e,`ReturnStatement`)||!e.argument)return;let r=Hd(e.argument,n);if(!r||!A(r))return;let i=[];s(r.body,e=>{if(e!==r.body&&A(e))return!1;let a=v(e,`ChainExpression`)?e.expression:e,o=v(a,`CallExpression`)?M(a.callee):null;v(a,`CallExpression`)&&v(o,`MemberExpression`)&&!o.computed&&v(o.property,`Identifier`)&&o.property.name===`disconnect`&&q(o.object,n)===t.receiverKey&&i.push(e)}),Ja(r,i,n)&&a.push(e)}),Vl(i))return Du(t.node,a,n);let o=v(t.node,`CallExpression`)&&v(t.node.callee,`MemberExpression`)?M(t.node.callee.object):null,c=v(o,`Identifier`)?n.scopes.symbolFor(o):null;if(!c||j(c.declarationNode)!==e)return!1;if(i===e)return c.kind===`const`&&!!(c.initializer&&zu(M(c.initializer),n))&&Ja(e,a,n);if(!A(i)||i.async||i.generator||!Bu(c.initializer,n))return!1;let l=c.references.filter(e=>e.flag!==`read`);if(l.length!==1)return!1;let u=S(l[0].identifier).parent;if(!v(u,`AssignmentExpression`)||u.operator!==`=`||j(u)!==i||!zu(M(u.right),n)||u.parent?.parent!==i.body)return!1;let d=As(i),f=d?n.scopes.symbolFor(d):null;if(!f||f.references.length!==2)return!1;let p=f.references.flatMap(t=>{let n=Lu(t.identifier);return n&&j(n)===e?[n]:[]});if(p.length!==1||p[0].parent?.parent!==e.body||!Du(p[0],a,n))return!1;let m=f.references.find(e=>!Lu(e.identifier)),h=m&&S(m.identifier).parent;if(!v(h,`CallExpression`)||!v(h.callee,`Identifier`)||h.callee.name!==`requestAnimationFrame`||!n.scopes.isGlobalReference(h.callee)||h.arguments[0]!==m?.identifier||j(h)!==i)return!1;let g={kind:`timer`,node:h,resourceName:`requestAnimationFrame`,registrationVerbName:`requestAnimationFrame`,handleKey:_u(h,n),receiverKey:null,eventKey:null,handlerKey:null};return!Fl(h,u,i,n)&&!Fl(u,h,i,n)&&gd(e,g,[...r,g],a,n)},zpe=(e,t,n)=>Ide({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>A(e)&&Uu(e,t,n)}),Sd=(e,t,n,r=[t])=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async)return!1;if(Mpe(e,t,n)||Npe(e,t,n)||Rpe(e,t,n,r)||zpe(e,t,n)||xd(t,n)||Jd(e,t,n)||t.kind===`subscribe`&&j(t.node)===e&&Qd(t.node,!0,!0,n)&&xu(t,n))return!0;if(!v(e.body,`BlockStatement`))return e.body===t.node&&xu(t,n);let i=S(t.node),a=i.parent,o=v(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&v(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`subscribe`&&t.registrationVerbName===`observe`||t.kind===`timer`&&(j(t.node)===e&&v(a,`VariableDeclarator`)||!!(o&&(o.kind===`let`||o.kind===`var`)&&v(o.declarationNode,`VariableDeclarator`)&&j(o.declarationNode)===e)),c=[];if($l(e.body,e=>{if(!v(e,`ReturnStatement`))return;let r=F(e),i=F(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?M(e.argument):null;if(!a)return;if(Gu(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||F(a)!==null&&F(a)===F(t.node))&&xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&Efe(a,t,n)){c.push(e);return}if(v(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Fu(a,n);if(o&&Gu(o,t,n)){c.push(e);return}!o||!A(o)||Uu(o,t,n,new Set,new Map,s)&&c.push(e)}),Lpe(e,t,r,c,n)||jpe(e,t,c,n)||gd(e,t,r,c,n))return!0;let l=j(t.node),u=l?ape(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>Du(e,c,n))?!0:Du(Vu(t.node,e,n,t),c,n)},Bpe=(e,t,n)=>{for(let r of t)if(!Sd(e,r,n,t)&&!mpe(e,r,n))return r;return null},Cd=(e,t,n=new Set)=>{let r=M(e);if(v(r,`NewExpression`)&&v(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(v(r,`MemberExpression`))return Cd(r.object,t,n);if(!v(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 Cd(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(v(a,`Property`)&&v(o,`ObjectPattern`)&&v(s,`VariableDeclarator`)&&s.init&&Cd(s.init,t,n))},Vpe=(e,t)=>{if(!v(e,`Property`))return!1;let n=v(e.key,`Identifier`)?e.key.name:v(e.key,`Literal`)?e.key.value:null;return n===`signal`?!Cd(e.value,t):n===`once`?v(e.value,`Literal`)&&e.value.value===!0:!1},Hpe=(e,t)=>v(e,`CallExpression`)&&(e.arguments??[]).some(e=>v(e,`ObjectExpression`)&&(e.properties??[]).some(e=>Vpe(e,t))),wd=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`])]]),Td=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),Ed=new Set([`close`]),Upe=new Set([`removeChannel`,`removeAllChannels`]),Dd=e=>{let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return null;let n=M(t.callee);if(v(n,`Identifier`))return ot.has(n.name)||qt.has(n.name)||Td.has(n.name)?n.name:null;if(v(n,`MemberExpression`)&&v(n.property,`Identifier`)){let e=n.property.name;return qt.has(e)||cn.has(e)||Upe.has(e)||e===`on`?e:null}return null},Wpe=(e,t,n)=>{let r=j(e),i=j(t.node);if(!r||!i||!A(i)||!zd(r,n)||!Ql(e,n.scopes))return!1;let a=epe(t,n),o=q(e,n);if(a===null||o===null)return!1;let c=i.body,l=[],u=[];s(c,e=>{if(e!==c&&A(e))return!1;if(v(e,`AssignmentExpression`)&&q(e.left,n)===o&&q(e.right,n)===a){u.push(e);return}if(!v(e,`CallExpression`))return;let t=v(e.callee,`ChainExpression`)?e.callee.expression:M(e.callee);v(t,`MemberExpression`)&&!t.computed&&v(t.property,`Identifier`)&&t.property.name===`abort`&&q(t.object,n)===o&&l.push(e)});let d=u.filter(e=>Ud(e,l,i,n));return Ud(t.node,d,i,n)},Od=e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),kd=(e,t)=>{let n=As(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(v(n,`JSXExpressionContainer`)&&n.expression===t&&Od(n.parent))}):!1},Ad=(e,t,n)=>{let r=As(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=v(e,`Property`)?T(e):null;if(!v(e,`Property`)||!v(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=S(e.parent),i=r.parent;if(!v(i,`ReturnStatement`)||i.argument!==r)return!1;let a=j(i);return!!(a&&Ss(As(a)?.name??``))};if(i.references.some(e=>{let t=S(e.identifier),r=t.parent;if(!n&&v(r,`ReturnStatement`)&&r.argument===t){let e=j(r);return!!(e&&Ss(As(e)?.name??``))}return v(r,`Property`)&&r.value===t?a(r):!1}))return!0;let o=j(e);if(!o||!A(o)||!Ss(As(o)?.name??``))return!1;let c=!1;return s(o.body,e=>{if(c)return!1;if(v(e,`Property`)&&v(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return c=!0,!1}),c},Gpe=e=>{if(!A(e))return!1;let t=e.params[0];if(!t)return!1;let n=(v(t,`Identifier`)?t:v(t,`AssignmentPattern`)&&v(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=v(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(v(r,`TSNullKeyword`)||v(r,`TSUnionType`)&&r.types.some(e=>v(e,`TSNullKeyword`)))},Kpe=(e,t)=>{if(!A(e))return!1;let n=As(e),r=j(e),i=r?As(r):null;if(!n||!r||!A(r)||!i||!Ss(i.name))return!1;let a=new Set;if(s(r.body,e=>{if(!v(e,`Property`)||!v(e.value,`Identifier`)||e.value.name!==n.name||!v(e.parent,`ObjectExpression`))return;let t=S(e.parent);if(v(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=T(e);t&&a.add(t)}}),a.size===0)return!1;let o=t.scopes.symbolFor(i);if(!o||o.references.length===0)return!1;let c=!1;for(let e of o.references){let n=S(e.identifier),r=n.parent,i=r?.parent;if(!v(r,`CallExpression`)||r.callee!==n||!v(i,`VariableDeclarator`)||i.init!==r||!v(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=S(e.identifier),n=t.parent;if(!v(n,`MemberExpression`)||n.object!==t||!a.has(T(n)??``))continue;let r=S(n),i=r.parent;if(!v(i,`JSXExpressionContainer`)||i.expression!==r||!Od(i.parent))return!1;c=!0}}return c},jd=(e,t)=>kd(e,t)||Ad(e,t,!0)||Kpe(e,t)||Gpe(e)&&Ad(e,t,!1),Md=(e,t)=>{if(!A(e)||!e.returnType)return!1;let n=!1;if(s(e.returnType,e=>{if(v(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=As(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(v(n,`JSXExpressionContainer`)&&n.expression===t&&v(n.parent,`JSXAttribute`))}):!1},qpe=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(v(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=M(o.test);if(!v(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[M(e.left),M(e.right)],a=t.some(e=>qu(e,n,i)),s=t.some(e=>{if(!v(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=q(e.left,i),a=q(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Jpe=(e,t,n,r)=>{if(!A(e))return[];let i=[];return s(e.body,a=>{if(a!==e.body&&A(a))return!1;if(!v(a,`IfStatement`)||a.alternate!==null||!Xl(a.consequent))return;let o=M(a.test);if(!v(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=q(o.left,r),c=q(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Ype=(e,t,n)=>{if(!v(t.node,`CallExpression`))return!1;let r=j(t.node);if(!r||!A(r)||r!==j(e)||!jd(r,n))return!1;let i=M(t.node.callee),a=M(e.callee),o=v(a,`MemberExpression`)?fu(a.object,n):null;if(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`addEventListener`||!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let c=q(M(i.object),n),l=q(r.params?.[0],n),u=q(a.object,n),d=q(e.arguments?.[1],n);if(c===null||c!==l||u===null||t.eventKey===null||t.eventKey!==q(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==d){if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=F(e),a=[];return s(r.body,e=>{if(e!==r.body&&A(e))return!1;if(!v(e,`AssignmentExpression`)||e.operator!==`=`||!v(M(e.right),`ObjectExpression`)||Zl(M(e.left),n.scopes)?.id!==o.id)return;let s=q(e.left,n),l=M(e.right);if(!s||u!==`${s}.element`||d!==`${s}.handler`||i===null||(F(e)??-1)<=i||!v(l,`ObjectExpression`))return;let f=l.properties.find(e=>v(e,`Property`)&&T(e)===`element`),p=l.properties.find(e=>v(e,`Property`)&&T(e)===`handler`);v(f,`Property`)&&v(p,`Property`)&&q(f.value,n)===c&&q(p.value,n)===t.handlerKey&&a.push(e)}),Ja(r,[Yu(e,r,u,n)??e],n)&&Du(t.node,a,n)}if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let f=F(e),p=[],m=r.body;s(m,e=>{if(e!==m&&A(e))return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),n.scopes)?.id===o.id&&q(e.right,n)===c&&f!==null&&(F(e)??-1)>f&&p.push(e)});let h=Yu(e,r,u,n)??qpe(e,r,u,c,n)??e,g=p.filter(e=>Ud(e,[h],r,n));return Ja(r,[h,...Jpe(r,u,c,n)],n)&&Ud(t.node,g,r,n)},Xpe=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!v(t.node,`CallExpression`))return!1;let r=j(t.node),i=M(e.callee);if(!r||!A(r)||r!==j(e)||!jd(r,n)||!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=q(r.params[0],n),o=fu(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let c=[];return s(r.body,e=>{if(e!==r.body&&A(e))return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),n.scopes)?.id===o.id&&q(e.right,n)===t.receiverKey&&c.push(e)}),Ja(r,[e],n)&&Du(t.node,c,n)},Nd=(e,t,n)=>{let r=S(e),i=new Set,a=new Set;for(;;){let e=j(r);if(!e||!A(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=v(e.body,`BlockStatement`)&&v(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Ja(e,[c?s:r],n))return null;let l=Iu(e);if(!l){if(a.size!==t.size||e.async||e.generator)return null;if(zd(e,n))return e;let i=As(e),o=(i?n.scopes.symbolFor(i):null)?.references[0],s=o?j(o.identifier):null,c=s?Ru(e,s,n):null;if(!c||!s||!A(s)||v(s.body,`BlockStatement`)&&s.body.body.length!==1)return null;r=S(c);continue}let u=M(l.callee);if(!v(u,`MemberExpression`))return null;let d=q(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=S(l)}},Pd=e=>{let t=new Set,n=e;for(;;){let e=j(n);if(!e||!A(e)||t.has(e))break;t.add(e),n=e}return t},Fd=(e,t,n,r)=>{let i=F(e),a=F(t);if(i===null||a===null)return!0;let o=Pd(e),c=Pd(t),l=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),u=(e,t,i,a)=>{if(a&&v(e,`ReturnStatement`)&&l(q(e.argument,r),t))return!0;if(v(e,`AssignmentExpression`)){let i=q(e.left,r),a=M(e.left);return l(q(e.right,r),t)&&!l(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||v(a,`MemberExpression`)&&a.computed&&l(q(a.object,r),t)}if(v(e,`UnaryExpression`)&&e.operator===`delete`){let n=M(e.argument);return v(n,`MemberExpression`)&&l(q(n.object,r),t)}if(v(e,`UpdateExpression`)){let i=q(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!v(e,`CallExpression`)&&!v(e,`NewExpression`))return!1;let o=e.arguments.some(e=>E(e)?l(q(e,r),t)&&ju(e,r)===null:!1),c=M(e.callee),d=v(e,`CallExpression`)&&v(c,`MemberExpression`)&&!c.computed&&v(c.object,`Identifier`)&&c.object.name===`Array`&&r.scopes.isGlobalReference(c.object)&&v(c.property,`Identifier`)&&c.property.name===`from`;return o&&!d||v(c,`MemberExpression`)&&!c.computed&&v(c.property,`Identifier`)&&(dfe.has(c.property.name)||ffe.has(c.property.name))&&l(q(c.object,r),t)?!0:v(e,`CallExpression`)?[P(e.callee,r.scopes),...e.arguments.flatMap(t=>E(t)&&Bl(e,t)?[P(t,r.scopes)]:[])].some(e=>{if(!e||!A(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(u(i,t,n,!1))return r=!0,!1}),r}):!1},d=e;for(;d.parent;)d=d.parent;let f=!1;return s(d,e=>{if(f)return!1;let t=F(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let s=o.has(n)&&t>i,l=c.has(n)&&t<a;if(!(!s&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Id=(e,t)=>Yn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Zpe=(e,t,n)=>{let r=M(e.callee),i=M(t.callee);if(!v(r,`MemberExpression`)||!v(i,`MemberExpression`))return!0;let a=Yn(e),o=Yn(t),s=t.arguments?.[+!Id(e,t)],c=j(t),l=cu(e.arguments?.[0],n),u=cu(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&A(c)&&zd(c,n)&&Ja(c,[t],n)&&(o!==null&&Td.has(o)||d))return!0;let f=[r.object,e.arguments?.[0],e.arguments?.[1],i.object,t.arguments?.[0],t.arguments?.[1]].flatMap(e=>{let t=ou(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=yfe(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!Nd(t,p,n)&&!Jfe(t,p,n)?!1:!Fd(e,t,new Map([...p].map(e=>[e,1/0])),n)},Ld=(e,t,n,r=new Map)=>{let i=v(e,`ChainExpression`)?e.expression:e;if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(t.kind===`timer`){if(!v(a,`Identifier`)||!(t.registrationVerbName===`requestAnimationFrame`?a.name===`cancelAnimationFrame`:ot.has(a.name))||!n.scopes.isGlobalReference(a))return!1;let e=q(i.arguments?.[0],n,new Set,r);if(vu(e,t,n))return!0;if(r.size>0&&e!==null)return!1;let o=i.arguments?.[0];if(o&&E(o)){let e=gu(o,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let s=Pu(t.node,n);return s!==null&&s===ju(i.arguments?.[0],n)}if(v(a,`Identifier`)&&t.kind===`subscribe`&&(Tfe(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||xu(t,n))||t.registrationVerbName===`addListener`&&Vfe(a,t,n)))return!0;let o=Dd(i);if(!o||!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`))return!1;let s=cu(a.object,n),c=i.arguments[0];if(o===`unsubscribe`&&t.registrationVerbName===`subscribe`&&i.arguments.length===2&&Fde(a.object,n)){let e=j(t.node),r=j(i);if(e&&r){let a=$u(e,t.node,n),o=$u(r,i,n).filter(e=>!B(i,e.guardNode)),s=i,l=i.parent;for(;l&&l!==r;){if(v(l,`LogicalExpression`)||v(l,`ConditionalExpression`)||v(l,`SwitchCase`)||v(l,`ForStatement`)||v(l,`ForOfStatement`)||v(l,`ForInStatement`)||v(l,`WhileStatement`))return!1;v(l,`IfStatement`)&&o.push(...Qu(l.test,l.alternate===s,l,n)),s=l,l=l.parent}o.every(e=>a.some(t=>t.key===e.key&&t.value===e.value)&&!!(e.bindingIdentifier&&n.scopes.symbolFor(e.bindingIdentifier)?.references.every(e=>e.flag===`read`)))&&(c=i.arguments[1])}}let l=cu(c,n),u=t.registrationVerbName?wd.get(t.registrationVerbName):null,d=Qfe(t,n),f=Ou(a.object,n),p=f?q(f.right,n):ju(a.object,n);if(u&&Rd(o,u)&&d!==null&&d===p&&(o!==`unobserve`||t.eventKey!==null&&l===t.eventKey)||Ype(i,t,n)||Xpe(i,t,n)||Dfe(s,o,t,n))return!0;if(t.kind===`socket`)return vu(s,t,n)&&(Ed.has(o)||Td.has(o));if(t.kind===`subscribe`&&v(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===kfe(t.node,n)&&(o===`removeAllChannels`||vu(q(i.arguments?.[0],n,new Set,r),t,n))||(vu(s,t,n)||t.kind===`subscribe`&&Vfe(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||cn.has(o))||o===`abort`&&s===(epe(t,n)??npe(t,n)??rpe(t,n))||o===`abort`&&Wpe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&v(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Fu(t.node.arguments[0],n);if(!wu(t.node,`addListener`,n)&&!A(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&v(t.node,`CallExpression`)&&(!v(M(t.node.callee),`MemberExpression`)||!du(t.node.arguments?.[2],i.arguments?.[2],n,!0))||v(t.node,`CallExpression`)&&!Zpe(t.node,i,n))return!1;let m=v(t.node,`CallExpression`)?M(t.node.callee):null,h=v(m,`MemberExpression`)?Hfe(m.object,n):null,g=Hfe(a.object,n);if(!(h!==null&&h===g)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&q(i.arguments?.[0],n)===t.handleKey)return!0;let _=t.registrationVerbName?wd.get(t.registrationVerbName):null;if(!_||!Rd(o,_))return!1;let y=v(t.node,`CallExpression`)?t.node.arguments?.[0]:null;if(Pfe(y,n)||Pfe(c,n))return!1;if(t.eventKey!==null&&l!==null&&t.eventKey!==l){if(!v(t.node,`CallExpression`))return!1;let e=su(t.node.arguments?.[0],n),r=su(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=Ou(y,n),l=Ou(c,n);if(s===null!=(l===null))return!1;let u=ju(t.node.arguments?.[0],n),d=ju(i.arguments?.[0],n);if(u===null||u!==d)return!1;if(s&&l){let e=Wfe(t.node.arguments?.[1],n),r=Wfe(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=M(t.node.callee);if(!v(s,`MemberExpression`)||!Ufe(s.object,n)||!Ufe(a.object,n)||e===null||e!==r||!du(t.node.arguments?.[2],i.arguments?.[2],n)||!Nu(i,l,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return v(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=v(t.node,`CallExpression`)&&Id(t.node,i),r=e?i.arguments?.[0]:i.arguments?.[1];if(!r)return o===`off`;let a=e?t.handlerKey??t.eventKey:t.handlerKey,s=v(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&cu(r,n)===a||s!==null&&Fu(r,n)===Fu(s,n)}return o===`unobserve`&&t.eventKey!==null?l===t.eventKey:!0},Rd=(e,t)=>t.has(e)||Td.has(e),zd=(e,t)=>{let n=j(e);if(!n||!A(n))return!1;let r=n.parent;if(!v(r,`CallExpression`)||!iu(r,t))return!1;if(!v(n.body,`BlockStatement`))return Fu(n.body,t)===e;let i=!1;return $l(n.body,n=>{v(n,`ReturnStatement`)&&n.argument&&Fu(n.argument,t)===e&&(i=!0)}),i},Bd=(e,t)=>{if(cf(e,t)||zd(e,t))return!0;let n=As(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>j(t.identifier)!==e):!1},Qpe=(e,t,n)=>{if(!A(e)||e.async||e.generator)return[];let r=j(t.node);if(!r||!A(r))return[];let i=new Map,a=e=>{let t=S(e),a=t.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=fu(a.left,n),s=q(a.left,n),c=j(a),l=F(a);if(!o&&v(a.left,`MemberExpression`)){let e=T(a.left),t=M(a.left.object),r=v(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!A(c))return;for(let t of r.references){let r=S(t.identifier),a=r.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!fu(a.left,n)||j(a)!==c)continue;let o=q(a.left,n),s=F(a);!o||s===null||i.set(s,{assignmentNode:a,refCurrentKey:`${o}.${e}`,retainedFunction:c})}return}!o||!s||!c||c!==r||l===null||i.set(l,{assignmentNode:a,refCurrentKey:s,retainedFunction:c})};a(e);let o=As(e),c=o?n.scopes.symbolFor(o):null;for(let e of c?.references??[])a(e.identifier);return s(r.body,t=>{if(t!==r.body&&A(t))return!1;v(t,`AssignmentExpression`)&&Fu(t.right,n)===e&&a(t.right)}),[...i.values()]},$pe=(e,t,n)=>Ud(t.node,[e.assignmentNode],e.retainedFunction,n)||Du(t.node,[e.assignmentNode],n),eme=(e,t,n)=>{let r=!1;return s(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&A(i))return!1;if(!v(i,`AssignmentExpression`)||i===e.assignmentNode||q(i.left,n)!==e.refCurrentKey||!Fl(t.node,i,e.retainedFunction,n))return;let a=Fu(i.right,n);if(!a||!A(a)||!Uu(a,t,n))return r=!0,!1}),r},tme=(e,t,n)=>{let r=j(e.retainedFunction);if(!r||!A(r))return!1;let i=(t,r=new Set)=>{if(!A(t)||t.async||t.generator||r.has(t))return!1;let a=new Set(r);a.add(t);let o=!1;return s(t.body,r=>{if(o||r!==t.body&&A(r))return!1;if(v(r,`CallExpression`)){let c=q(r.callee,n)===e.refCurrentKey,l=c?null:Hd(r.callee,n);if(!c&&(!l||!i(l,a)))return;let u=!1;if(s(t.body,i=>{if(i!==t.body&&A(i))return!1;v(i,`AssignmentExpression`)&&i.range[0]<r.range[0]&&q(i.left,n)===e.refCurrentKey&&(u=!0)}),u)return;let d=S(r),f=d.parent,p=v(t.body,`BlockStatement`)&&v(f,`ExpressionStatement`)&&f.parent===t.body,m=t.body===d,h=!!Yu(r,t,e.refCurrentKey,n);if((p||m||h)&&!Wd(t,r,e.refCurrentKey,n))return o=!0,!1}}),o},a=e=>{if(!A(e))return!1;if(!v(e.body,`BlockStatement`)){let t=Hd(e.body,n);return!!(t&&i(t))}let t=[];return $l(e.body,e=>{if(!v(e,`ReturnStatement`)||!e.argument)return;let r=Hd(e.argument,n);!r||!i(r)||t.push(e)}),Ja(e,t,n)},o=!1;return s(r.body,e=>{if(o)return!1;if(!v(e,`CallExpression`)||j(e)!==r||!D(e,`useEffect`,n.scopes))return;let t=Xn(e);if(t&&a(t))return o=!0,!1}),o},nme=(e,t,n)=>{if(!kd(e.retainedFunction,n)&&!(()=>{if(!A(e.retainedFunction))return!1;let r=S(e.retainedFunction).parent;if(!v(r,`CallExpression`)||!D(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=q(i,n);return!a||t.receiverKey!==a?!1:jd(e.retainedFunction,n)})())return!1;let r=[];return s(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&A(t))return!1;v(t,`CallExpression`)&&q(t.callee,n)===e.refCurrentKey&&r.push(t)}),Ud(t.node,r,e.retainedFunction,n)},rme=(e,t,n)=>{let r=j(e);return r?Qpe(r,t,n).some(e=>$pe(e,t,n)&&!eme(e,t,n)&&(tme(e,t,n)||nme(e,t,n))):!1},ime=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!v(n.node,`CallExpression`)||!A(t)||t.async||t.generator||!v(t.body,`BlockStatement`)||!Ja(t,[e],r))return!1;let i=v(e,`ChainExpression`)?e.expression:e;if(!v(i,`CallExpression`)||!du(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=j(t);if(!a||!A(a))return!1;let o=[];return s(a.body,e=>{if(e!==a.body&&A(e))return!1;if(!v(e,`CallExpression`))return;let i=Tu(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Fu(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:Du(n.node,o,r)||Ud(n.node,o,a,r)},ame=(e,t,n)=>{if(!U(e,n))return!1;let r=j(e);if(!r||r===j(t.node)||rme(e,t,n))return!0;let i=j(t.node);return i&&A(i)&&ef(i,n)&&Tme(i,r,n)?wme(i,r,t,n):ime(e,r,t,n)?!0:Bd(r,n)},Vd=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=hfe.get(t);r||(r=new WeakMap,hfe.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];s(n,n=>{let r=v(n,`ChainExpression`)?n.expression:n;if(!v(r,`CallExpression`))return;let i=v(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(v(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else Dd(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;a=e.kind===`timer`?[...ot].flatMap(e=>i.identifierCallsByName.get(e)??[]):i.potentialNonTimerCalls;let o=!1,c=n=>{if(o)return!1;if(Ld(n,e,t)&&ame(n,e,t))return o=!0,!1};for(let e of a)if(c(e)===!1)break;return o},Hd=(e,t)=>{let n=Fu(e,t);return A(n)?n:!v(n,`CallExpression`)||!D(n,`useCallback`,t.scopes)?null:Xn(n)},ome=(e,t,n)=>{if(!A(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=F(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return s(e.body,s=>{if(s!==e.body&&A(s))return!1;if(!v(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=F(s),l=M(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!v(l,`MemberExpression`)||!Zl(l,n.scopes))return;let u=q(l,n),d=q(l.object,n),f=M(s.right);if(!u||!d||!v(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!v(e,`Property`)))for(let e of p){if(!v(e,`Property`))continue;let r=T(e);if(r&&q(e.value,n)===t.handlerKey){let e=`${u}.${r}`;o.push({handlerKey:e,refCurrentKey:u,refKey:d,assignmentNode:s})}}}),o.length===1?o[0]:null},Ud=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=F(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=F(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},sme=(e,t,n,r)=>{if(!A(e))return!1;let i=e.body,a=[];return s(i,e=>{if(e!==i&&A(e))return!1;v(e,`CallExpression`)&&Hd(e.callee,r)===t&&a.push(e)}),Ud(n,a,e,r)},cme=(e,t,n,r,i,a)=>{if(!A(t))return!1;let o=v(e,`ChainExpression`)?e.expression:e;if(!v(o,`CallExpression`)||!v(o.callee,`MemberExpression`)||o.callee.computed||!v(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!v(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=S(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(v(c,`BlockStatement`)&&v(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&q(l.test,a)===i);return!v(s,`ExpressionStatement`)||!v(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===q(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===q(o.arguments?.[0],a)&&q(o.arguments?.[1],a)===r},lme=(e,t,n)=>{let r=e.parent,i=v(r,`BlockStatement`)?r.parent:r,a=v(r,`BlockStatement`)?r:e;if(!v(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=M(i.test);return v(o,`UnaryExpression`)&&o.operator===`!`&&q(o.argument,n)===t},Wd=(e,t,n,r)=>{if(!A(e))return!0;let i=F(t);if(i===null)return!0;let a=!1;return s(e.body,t=>{if(a||t!==e.body&&A(t))return!1;if(!v(t,`ReturnStatement`))return;let o=F(t);if((o===null||o<i)&&!lme(t,n,r))return a=!0,!1}),a},ume=(e,t,n,r,i)=>{if(!A(e)||!A(t)||e.async||e.generator)return!1;let a=ome(n,r,i);if(!a||!sme(n,e,a.assignmentNode,i))return!1;let o=null;if(s(e.body,t=>{if(o||t!==e.body&&A(t))return!1;if(cme(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Wd(e,o,a.refCurrentKey,i))return!1;let c=!1;return s(t.body,t=>{if(c)return!1;if(v(t,`UnaryExpression`)&&t.operator===`delete`){let e=M(t.argument);return q(e,i)===a.handlerKey||v(e,`MemberExpression`)&&q(e.object,i)===a.refCurrentKey?(c=!0,!1):void 0}if(v(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=q(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(c=!0,!1):void 0;if(!v(t,`AssignmentExpression`))return;let o=M(t.left);if(v(o,`MemberExpression`)&&o.computed&&q(o.object,i)===a.refCurrentKey)return c=!0,!1;let s=q(t.left,i);if(s===a.handlerKey)return c=!0,!1;if(s!==a.refCurrentKey)return;let l=M(t.right);if(v(l,`Literal`)&&l.value===null&&j(t)===e)return;let u=(v(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>v(e,`Property`))&&u.some(e=>v(e,`Property`)&&`${a.refCurrentKey}.${T(e)??``}`===a.handlerKey&&q(e.value,i)===r.handlerKey);if(j(t)!==n||!d)return c=!0,!1}),!c},dme=(e,t,n,r,i)=>{let a=e=>{let a=Hd(e,i);return!!(a&&ume(a,t,n,r,i))};if(!A(e))return!1;if(!v(e.body,`BlockStatement`))return a(M(e.body));let o=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&a(M(e.argument))&&o.push(e)}),Ja(e,o,i)},fme=(e,t,n)=>{let r=As(e),i=r?n.scopes.symbolFor(r):null;if(!i||i.references.length===0)return!1;let a=new Set(t.flatMap(e=>{let t=Xn(e);return t&&A(t)?[t]:[]}));return i.references.every(e=>{let n=S(e.identifier),r=n.parent,i=v(r,`CallExpression`)?j(r):null;if(v(r,`CallExpression`)&&r.callee===n&&i&&A(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(v(o,`ArrayExpression`)&&v(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},Gd=(e,t,n,r)=>{if(!A(e)||!v(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&E(i)?M(i):null,o=a?A(a)?a:Fu(a,r):null;if(!o||!A(o))return!1;let s=(e,i=new Set)=>{if(!A(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(v(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!D(c,`useCallback`,r.scopes)){if(B(c,o)||Zu(c,n.node,t))return!0;let e=j(c);return!!(e&&e!==t&&s(e,a))}let l=As(e),u=l?r.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(v(t,`ArrayExpression`)&&v(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=S(e.identifier),i=r.parent;if(!v(i,`CallExpression`)||i.callee!==r)return!1;if(B(i,o)||Zu(i,n.node,t))return!0;let c=j(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(v(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!D(c,`useCallback`,r.scopes))l=[c];else{let t=As(e),n=t?r.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(B(e,o)||Zu(e,n.node,t))return!0;let r=j(e);return!!(r&&r!==t&&s(r))})},pme=(e,t,n,r)=>{if(!A(t))return!1;let i=t.parent;if(!v(i,`CallExpression`)||Xn(i)!==t||!iu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(v(a,`IfStatement`)&&B(e,a.consequent)){let n=Fu(M(a.test),r)??M(a.test);if(v(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=fu(n.left,r),o=fu(n.right,r),c=i??o,l=M(i?n.right:n.left),u=v(l,`Identifier`)&&l.name===`undefined`&&r.scopes.isGlobalReference(l),d=c?.initializer?M(c.initializer):null,f=v(d,`CallExpression`)&&d.arguments[0]&&E(d.arguments[0])?M(d.arguments[0]):null;if(c&&!(i&&o)&&u&&f&&v(f,`Identifier`)&&f.name===`undefined`&&r.scopes.isGlobalReference(f)){let n=[];s(t.body,e=>{v(e,`AssignmentExpression`)&&e.operator===`=`&&fu(e.left,r)?.id===c.id&&n.push(e)});let i=n.filter(e=>{let t=M(e.right);return!(v(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,l=e.parent??null,u=new Set(i.flatMap(e=>{let t=M(e.right);return v(t,`Identifier`)?[t.name]:[]})),d=e=>{let t=M(e);if(v(t,`LogicalExpression`)&&t.operator===`&&`)return d(t.left)||d(t.right);if(!v(t,`CallExpression`)||Yn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!E(n))return!1;let r=M(n);return v(r,`Identifier`)&&u.has(r.name)};for(;l&&l!==a;){if(v(l,`IfStatement`)&&B(e,l.consequent)&&d(l.test)){o=!0;break}l=l.parent??null}if(o&&Ud(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,c=null,l=null,u=null;for(;o&&o!==t;){if(v(o,`IfStatement`)&&B(e,o.consequent)){let e=M(o.test),t=v(e,`UnaryExpression`)&&e.operator===`!`,n=fu(t?e.argument:e,r),i=n?.initializer?M(n.initializer):null,a=v(i,`CallExpression`)&&i.arguments[0]?Kt(M(i.arguments[0])):null,s=!t;if(n&&a===s){c=o,l=n,u=s;break}}o=o.parent??null}if(!c||!l||u===null)return!1;let d=j(l.declarationNode);if(!d||!A(d))return!1;let f=[],p=!1;return s(d.body,e=>{if(p)return!1;if(v(e,`UpdateExpression`)&&fu(e.argument,r)?.id===l.id)return p=!0,!1;if(!(!v(e,`AssignmentExpression`)||fu(e.left,r)?.id!==l.id)){if(e.operator!==`=`||Kt(M(e.right))===null)return p=!0,!1;f.push(e)}}),p||!Ud(e,f.filter(e=>Kt(M(e.right))===!u),t,r)?!1:f.every(e=>{if(Kt(M(e.right))===!u)return!0;let t=j(e);if(!t||!A(t))return!1;let i=t.parent;if(!v(i,`ReturnStatement`)||i.argument!==t)return!1;let a=j(i);return!!(a&&A(a)&&Ku(a,n,r))})},Kd=(e,t,n,r)=>{let i=j(e);if(!i||!A(i))return!1;let a=v(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&E(a)?M(a):null,s=o?A(o)?o:P(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=As(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(v(t,`ArrayExpression`)&&v(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=S(e.identifier),i=r.parent;return!!(v(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(B(i,s)||Zu(i,n.node,t)))}))return!0;let o=j(i);if(o&&o!==t&&A(o)&&!v(o.body,`BlockStatement`)&&M(o.body)===i){let e=As(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=S(e.identifier),a=i.parent,o=a?.parent,c=o?j(o):null;return!!(v(a,`CallExpression`)&&a.callee===i&&v(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(B(o,s)||Zu(o,n.node,t)||c&&Gd(c,t,n,r)))}))return!0}}if(qd(i,i,t,n,r)||Gd(i,t,n,r)||pme(e,i,n,r)||cd(i,{...n,node:e},r))return!0;let c=i.parent;return!!(v(c,`CallExpression`)&&Xn(c)===i&&iu(c,r)&&Ku(i,n,r))},qd=(e,t,n,r,i)=>{let a=e.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!pu(a.left,i))return!1;let o=q(a.left,i),c=j(t);if(!o||!c||!A(c))return!1;let l=!1,u=!1;return s(c.body,e=>{if(u)return!1;if(!v(e,`MemberExpression`)||q(e,i)!==o)return;let a=S(e),c=a.parent;if(v(c,`AssignmentExpression`)&&c.left===a)return Hd(c.right,i)===t?void 0:(u=!0,!1);if(v(c,`IfStatement`)&&c.test===a){let e=!1;if(s(c.consequent,t=>{if(v(t,`CallExpression`)&&q(M(t.callee),i)===o)return e=!0,!1}),e)return}if(v(c,`CallExpression`)&&c.callee===a&&Kd(c,n,r,i)){l=!0;return}return u=!0,!1}),l&&!u},mme=(e,t,n)=>{let r=As(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?qd(e,e,e,t,n):i.references.every(r=>{let i=S(r.identifier),a=i.parent;if(v(a,`CallExpression`)&&a.callee===i){let r=j(a),i=!!(r&&Gd(r,e,t,n)),o=Kd(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return v(o,`ArrayExpression`)&&v(s,`CallExpression`)&&s.arguments?.[1]===o?!0:qd(i,e,e,t,n)})},Jd=(e,t,n)=>{let r=j(e);if(!r||!A(r))return!1;let i=gfe.get(n);i||(i=new WeakMap,gfe.set(n,i));let a=i.get(r);if(!a){let e=[];s(r.body,t=>{v(t,`CallExpression`)&&j(t)===r&&iu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=Sfe(t.node,n),i=cd(e,t,n),o=e.parent,s=!!(v(o,`CallExpression`)&&Xn(o)===e&&iu(o,n)),c=i&&(!s||n.cfg.isUnconditionalFromEntry(t.node)),l=(r.size>0?[...r].map(e=>({...t,handleKey:e})):[t]).every(e=>a.some(t=>{let r=Xn(t);return!!(r&&Ku(r,e,n))}));return!!(r.size>0&&l&&(c||Ipe(e,t,n)||mme(e,t,n)||fme(e,a,n)))}for(let i of a){let a=S(i).parent;if(!v(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Xn(i);if(o&&dme(o,r,e,t,n))return!0}return!1},hme=(e,t)=>{let n=As(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=S(e.identifier);for(;v(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=S(n.parent);let r=n.parent;if(v(r,`CallExpression`)&&r.arguments?.[0]===n)return D(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(v(r,`VariableDeclarator`)&&r.init===n&&v(r.id,`Identifier`)&&v(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},gme=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Yd=e=>{if(!v(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?M(n):null;if(!t||!A(t)||!r||!v(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return s(t.body,e=>{if(a)return!1;if(!v(e,`CallExpression`))return;let t=Yn(e);if(!t||!gme.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},_me=(e,t)=>{if(!e||!A(e))return!1;let n=As(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=S(t.identifier),r=n.parent;return!!(v(r,`CallExpression`)&&r.arguments[1]===n&&tu(r)===`addEventListener`&&j(r)===j(e))}):!1},vme=(e,n)=>{if(!v(e,`CallExpression`)||!n.filename)return!1;let r=M(e.callee);if(!v(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?$e(i):null,o=i?t(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let c=Be(n.filename,a.source.value,o);if(!c||!A(c.functionNode))return!1;let l=new Set,u=e=>{if(!A(e)||l.has(e))return!1;l.add(e);let t=!0;return s(e.body,n=>{if(!t||n!==e.body&&A(n))return!1;if(v(n,`CallExpression`)){let e=M(n.callee);if(!v(e,`Identifier`))return t=!1,!1;let r=[];return s(c.programNode,t=>{if(A(t)&&As(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!u(r[0])?(t=!1,!1):void 0}if(v(n,`NewExpression`)||v(n,`AssignmentExpression`)||v(n,`UpdateExpression`)||v(n,`AwaitExpression`)||v(n,`YieldExpression`)||v(n,`ThrowStatement`)||v(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return u(c.functionNode)},yme=(e,t,n)=>{if(!A(t)||!vme(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(v(r,`AssignmentExpression`)&&B(e,r.right)&&pu(M(r.left),n))return!0;r=r.parent}return!1},Xd=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?M(r):null;if(!n||!A(n)||!i||!v(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return s(n.body,e=>{if(o||e!==n.body&&A(e))return!1;if(v(e,`CallExpression`)&&yme(e,n,t))return;if(v(e,`CallExpression`)||v(e,`UpdateExpression`))return o=!0,!1;if(!v(e,`AssignmentExpression`))return;let r=M(e.left);if(v(r,`MemberExpression`)&&pu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||_me(j(e),t))},Zd=(e,t)=>{let n=S(e);for(;v(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=S(n.parent);let r=n.parent;return v(r,`ReturnStatement`)&&r.argument===n&&j(r)===t?r:null},Qd=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(v(a,`ReturnStatement`)&&a.argument===i||v(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(v(a,`ChainExpression`)||v(a,`TSAsExpression`)||v(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(v(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||v(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(v(a,`VariableDeclarator`)&&a.init===i&&v(a.id,`Identifier`)&&v(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=j(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:Du(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Zd(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},bme=(e,t,n)=>{if(!A(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!cf(e,t),o=a&&n?.requireCallableReturnedResource!==!0,c=hme(e,t),l=r=>{if(c)return Sd(e,r,t);if(r.kind!==`timer`){let i=jd(e,t);return!!(n?.allowReturnedResourceEscape===!0||i||Md(e,t))&&Ku(e,r,t,i)||Vd(r,t)||Jd(e,r,t)}let i=jd(e,t);if((n?.allowReturnedResourceEscape===!0||i||Md(e,t))&&Ku(e,r,t,i)||!n?.isEffectInvoked&&(hu(r.node,t)!==null||cd(e,r,t))&&Vd(r,t)||xd(r,t)||Jd(e,r,t))return!0;let a=j(e),o=a?.parent;return!!(a&&v(o,`CallExpression`)&&iu(o,t)&&Sd(a,r,t))};return s(r,e=>{if(i!==null||A(e)||!U(e,t))return!1;if(au(e)&&!Qd(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:v(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:_u(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!l(n))return i=n,!1}if(v(e,`CallExpression`)){if(v(e.callee,`Identifier`)&&Pl(e.callee,t.scopes)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0)&&(n?.allowReturnedTimerEscape===!1||!Qd(e,!0,a,t))&&!Yd(e)&&!Xd(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:_u(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!l(n))return i=n,!1}if(afe(e)&&(!Qd(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!nu(e))){let n=Tu(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:_u(e,t),...n};return!Hpe(e,t)&&!l(r)&&(i=r),!1}}}),i},$d=(e,t)=>{if(!A(e)||e.generator)return null;let n=S(e),r=n.parent;if(!v(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=Zl(M(r.left),t.scopes);if(!i)return null;let a=K(r,t.scopes);return!A(a)||j(r)!==a||j(i.bindingIdentifier)!==a||!U(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},ef=(e,t)=>$d(e,t)?.refSymbol??null,tf=(e,t,n)=>{let r=S(e),i=r.parent;if(v(i,`VariableDeclarator`)&&i.init===r&&v(i.id,`Identifier`)&&v(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?Du(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Zd(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(v(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=S(e);continue}if(v(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=S(e);continue}if(v(e,`LogicalExpression`)&&e.right===r){r=S(e);continue}break}let a=r.parent;return!!(v(a,`ReturnStatement`)&&a.argument===r&&j(a)===t||v(t,`ArrowFunctionExpression`)&&t.body===r)},xme=(e,t,n)=>v(e,`CallExpression`)&&Zl(M(e.callee),n.scopes)?.id===t.id,Sme=(e,t)=>{let n=new Map;s(e.body,e=>{if(!A(e))return;let r=$d(e,t);if(r){let e=n.get(r.refSymbol.id)??[];e.push(r),n.set(r.refSymbol.id,e)}return!1});for(let[e,r]of n){let i=r.filter(e=>!Du(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},nf=(e,t,n)=>{if(!A(e))return[];let r=[],i=[];return s(e.body,a=>{if(a!==e.body&&A(a))return!1;v(a,`AssignmentExpression`)&&U(a,n)&&Zl(M(a.left),n.scopes)?.id===t.id&&r.push(a),xme(a,t,n)&&U(a,n)&&i.push(a)}),i.filter(t=>!Ud(t,r,e,n))},rf=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Cme=(e,t)=>{let n=pfe.get(t);n||(n=new WeakMap,pfe.set(t,n));let r=n.get(e);if(r)return r;let i=Sme(e,t),a=new Map;s(e.body,n=>{if(n!==e.body&&A(n))return!1;if(!v(n,`CallExpression`)||j(n)!==e||!iu(n,t))return;let r=Xn(n);if(A(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of nf(r,n,t))rf(a,n.id,!r.async&&tf(e,r,t))}});let o=!0;for(;o;){o=!1;for(let e of i.values()){let n=e[0]?.refSymbol;if(!n)continue;let r=a.get(n.id);if(r)for(let n of e)for(let e of i.values()){let i=e[0]?.refSymbol;if(i)for(let e of nf(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&tf(e,n.functionNode,t);rf(a,i.id,s)&&(o=!0)}}}}let c={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,c),c},af=(e,t)=>{if(!A(e))return null;let n=$d(e,t),r=K(e,t.scopes);if(!n||!A(r))return null;let i=Cme(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},wme=(e,t,n,r)=>{if(!A(e)||e.async||af(e,r)?.doesEffectOwnEveryResult!==!0||!v(e.body,`BlockStatement`))return!1;let i=e=>{let n=Hd(Cn(e),r);if(!n)return!1;if(n===t)return!0;if(!A(n))return!1;let i=[];return s(n.body,e=>{if(e!==n.body&&A(e))return!1;v(e,`CallExpression`)&&Hd(e.callee,r)===t&&i.push(e)}),Ja(n,i,r)},a=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),Du(n.node,a,r)},Tme=(e,t,n)=>{if(!A(e)||!v(e.body,`BlockStatement`))return!1;let r=!1;return $l(e.body,e=>{r||!v(e,`ReturnStatement`)||!e.argument||s(e.argument,e=>{if(Hd(e,n)===t)return r=!0,!1})}),r},of=e=>v(e,`FunctionDeclaration`)?Gl(e)!==null:!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.parent,`VariableDeclarator`)?!1:Gl(e)!==null,sf=e=>{let t=S(e),n=t.parent;return v(n,`JSXExpressionContainer`)&&n.expression===t&&Yl(n.parent)},cf=(e,t)=>{if(!A(e)||Pde(e))return!1;let n=S(e),r=n.parent;if(v(r,`CallExpression`)&&r.arguments?.[0]===n&&er(r,`useCallback`,t.scopes)&&sf(r))return!0;let i=e.parent;if(sf(e))return!0;if(!v(i,`Property`)||i.value!==e||i.computed)return!1;let a=T(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!v(o,`ObjectExpression`))return!1;let s=o.parent;return(v(s,`CallExpression`)&&s.arguments.some(e=>e===o)||v(s,`JSXExpressionContainer`))&&K(i,t.scopes)!==null},lf=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=M(e);return v(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:v(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||v(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:v(n,`ArrayExpression`)||v(n,`ArrowFunctionExpression`)||v(n,`ClassExpression`)||v(n,`FunctionExpression`)||v(n,`NewExpression`)||v(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},uf=(e,t,n)=>{let r=M(e),i=lf(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(v(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(v(r,`UnaryExpression`)&&r.operator===`!`){let e=uf(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(v(r,`LogicalExpression`)){let e=uf(r.left,t,n),i=uf(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(v(r,`ConditionalExpression`)){let e=uf(r.test,t,n);if(e===`truthy`)return uf(r.consequent,t,n);if(e===`falsy`)return uf(r.alternate,t,n);let i=uf(r.consequent,t,n);return i===uf(r.alternate,t,n)?i:`unknown`}return v(r,`CallExpression`)&&v(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&E(r.arguments[0])?uf(r.arguments[0],t,n):`unknown`},Eme=(e,t,n,r)=>{let i=new Map;if(!A(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&E(e)?e:null,c=null,l=lf(s,r);if(v(o,`Identifier`)?c=o:v(o,`AssignmentPattern`)&&v(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=lf(o.right,r))):v(o,`RestElement`)&&v(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=r.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<n.range[0]);i.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return i},Dme=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Eme(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(v(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!v(t,`IfStatement`)||t.alternate||!Xl(t.consequent))&&uf(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(v(o,`IfStatement`)||v(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):v(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((v(o,`WhileStatement`)||v(o,`DoWhileStatement`))&&o.body===a||v(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=uf(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},Ome=(e,t)=>{if(!A(e))return[];let n=j(e);if(!n||!A(n))return[];let r=mfe.get(t);r||(r=new WeakMap,mfe.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return s(n.body,e=>{if(!v(e,`CallExpression`)||j(e)!==n||!iu(e,t))return;let r=Xn(e);!r||!A(r)||s(r.body,e=>{if(e!==r.body&&A(e))return!1;if(!(!v(e,`CallExpression`)||!U(e,t))){o(Hd(e.callee,t),e,!0);for(let n of e.arguments)!E(n)||!Bl(e,n)||o(Hd(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},df=C({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 t=t=>{let n=af(t,e);if(!n&&!Bd(t,e))return;let r=Ome(t,e),i=r.length>0,a=bme(t,e,n?{allowReturnedResourceEscape:n.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:i?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!a||i&&a.resourceName===`setTimeout`&&(!U(a.node,e)||A(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>Dme(t,a.node,n,e))))return;let o=_fe[a.kind];e.report({node:a.node,message:`\`${a.resourceName}\` creates a ${o} 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(n){if(er(n,`useCallback`,e.scopes)){let r=Xn(n);r&&!cf(r,e)&&t(r);return}if(!iu(n,e))return;let r=Xn(n);if(!r)return;let i=Nfe(r,Mfe(r,e),e);if(i.length===0)return;let a=Bpe(r,i,e);if(!a)return;let o=_fe[a.kind],s=Yn(n)??`effect`;e.report({node:n,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){of(e)&&t(e)},ArrowFunctionExpression(n){(of(n)||cf(n,e)||ef(n,e))&&t(n)},FunctionExpression(n){(of(n)||cf(n,e)||ef(n,e))&&t(n)}}}}),kme=new Set([`window`,`globalThis`,`self`]),Ame=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),jme=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=S(e.identifier),n=t.parent;return!v(n,`MemberExpression`)||n.object!==t?!1:v(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(v(n.parent,`CallExpression`)&&n.parent.callee===n&&Ame.has(N(n)??``))}),Mme=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||jme(e))return null;r.add(e.id);let i=ns(e);if(!i)return n;let a=M(i);if(!v(a,`Identifier`))return n;n=a}},Nme=e=>{let t=j(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(v(n,`ConditionalExpression`)||v(n,`IfStatement`)||v(n,`LogicalExpression`)||v(n,`SwitchStatement`)||v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},ff=(e,t,n)=>{let r=j(e);if(!r||!A(r))return null;let i=S(r),a=i.parent;if(!v(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=M(a.callee);if(!v(o,`MemberExpression`)||N(o)!==`forEach`||r.async||!Nme(a))return null;let s=M(o.object);if(!v(s,`Identifier`))return null;let c=Mme(s,n);if(!c)return null;let l=W({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=M(e);if(v(t,`Identifier`)){let e=n.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let i=r.params.findIndex(t=>n.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(i>=0)return`$${i}`;let a=ns(e);return a&&!u.has(e.id)&&j(e.declarationNode)===r?(u.add(e.id),d(a)):W({node:t,scopes:n.scopes})}if(v(t,`Literal`))return JSON.stringify(t.value);if(v(t,`MemberExpression`)){let e=d(t.object),n=N(t);return e&&n?`${e}.${n}`:null}if(v(t,`CallExpression`)){let e=M(t.callee);if(!v(e,`MemberExpression`)||N(e)!==`getElementById`)return null;let r=M(e.object);if(!v(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>v(e,`SpreadElement`)?null:d(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},f=d(t);if(!f)return null;u.clear();let p=[],m=e,h=e.parent??null;for(;h&&h!==r;){if(v(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(v(h,`ConditionalExpression`)||v(h,`LogicalExpression`)||v(h,`SwitchStatement`)||v(h,`ForStatement`)||v(h,`ForInStatement`)||v(h,`ForOfStatement`)||v(h,`WhileStatement`)||v(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},pf=(e,t,n)=>{let r=O(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=S(e),a=i.parent;if(!(v(a,`VariableDeclarator`)&&a.id===e)&&!(v(a,`VariableDeclarator`)&&a.init===i)&&!(v(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(v(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(v(a,`MemberExpression`)&&a.object===i){let e=N(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!v(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?ff(r,e,n):null,a=e?W({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?ff(r,e,n):null,a=e?W({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(v(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=M(a.callee);if(v(e,`MemberExpression`)&&N(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Pme=(e,t,n)=>{let r=!1;return to(e,e=>{v(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Fme=(e,t,n,r)=>{if(!n)return!1;let i=M(e);if(!v(i,`MemberExpression`)||N(i)!==`target`)return!1;let a=M(i.object);if(!v(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=j(a);if(!s||s===t||!A(s))return!1;let c=S(s),l=c.parent;if(!v(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=M(l.callee);return v(u,`MemberExpression`)&&N(u)===`forEach`&&Pme(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},Ime=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?M(e.arguments[0]):null;if(!r||!v(r,`ArrowFunctionExpression`)&&!v(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||!v(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&to(i,e=>{if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let a=M(r.object);if(!v(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=N(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Fme(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=W({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},mf=(e,t)=>{let n=M(e),r=v(n,`Identifier`)?O(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},hf=(e,t,n=new Set)=>{let r=M(e);if(n.has(r))return!1;if(n.add(r),v(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?hf(e,t,n):!1}let i=v(r,`CallExpression`)?M(r.callee):null,a=v(i,`MemberExpression`)?M(i.object):null;if(!v(r,`CallExpression`)||!v(i,`MemberExpression`)||N(i)!==`bind`||!v(a,`MemberExpression`)||N(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&mf(a.object,t)&&mf(o,t))},Lme=(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=S(t.identifier),r=e.parent;if(!v(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=M(r.callee);v(i,`MemberExpression`)&&N(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!qa(e,[r],t)))return null;let i=M(r.callee);if(!v(i,`MemberExpression`))return null;let a=M(i.object);if(!v(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?M(o.initializer):null;return!o||o.kind!==`const`||!v(s,`ArrayExpression`)||(s.elements?.length??0)!==0||j(o.declarationNode)!==j(e.construction)||!o.references.every(e=>{let t=S(e.identifier),n=t.parent,r=n?.parent;return!!(v(n,`MemberExpression`)&&n.object===t&&v(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(N(n)??``))})?null:W({node:a,scopes:t.scopes})},Rme=(e,t)=>{if(!A(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return to(e,e=>{if(!v(e,`CallExpression`))return;let n=M(e.callee);if(!v(n,`MemberExpression`)||N(n)!==`disconnect`)return;let a=M(n.object);v(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Ja(e,i,t)},zme=(e,t,n,r)=>{let i=e=>{if(!A(e)||e.async||e.generator)return!1;let t=[];return s(e.body,i=>{if(!v(i,`CallExpression`)||j(i)!==e)return;let a=M(i.callee);if(!v(a,`MemberExpression`)||N(a)!==`forEach`||W({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Rme(o,r)&&t.push(i)}),Ja(e,t,r)};if(!A(e))return!1;if(!v(e.body,`BlockStatement`)){let t=oc(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=Ie(e).filter(e=>{if(!e.argument)return!1;let t=oc(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>qa(e,a,r))},Bme=(e,t,n)=>Ide({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!A(e))return!1;let r=[];return s(e.body,n=>{if(n!==e.body&&A(n))return!1;let i=v(n,`ChainExpression`)?n.expression:n,a=v(i,`CallExpression`)?M(i.callee):null;v(i,`CallExpression`)&&v(a,`MemberExpression`)&&N(a)===`disconnect`&&mf(a.object,t.bindingIdentifiers)&&r.push(n)}),Ja(e,r,n)}}),gf=C({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(t){if(!uc(t,e.scopes))return;let n=Xn(t);if(!A(n))return;let r=new Map;if(to(n,t=>{if(!v(t,`NewExpression`))return;let n=M(t.callee);if(!(v(n,`Identifier`)?ve.has(n.name)&&!O(n,n.name):v(n,`MemberExpression`)&&v(M(n.object),`Identifier`)&&kme.has(M(n.object).name)&&!O(n.object,M(n.object).name)&&ve.has(N(n)??``)))return;let i=S(t),a=i.parent;if(!v(a,`VariableDeclarator`)||a.init!==i||!(v(a.id,`Identifier`)&&a.id.name))return;let o=Ime(t,e.scopes);r.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})}),r.size===0)return;for(let t of[...r.values()]){let n=cc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());to(n,t=>{if(!v(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&pf(t,i,e)});for(let t of sc(n))to(t,t=>{if(!v(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&pf(t,i,e)});for(let t of i){for(let e of t.callbackReleasedTargetKeys)t.observedTargetKeys.delete(e);let n=t.construction.arguments?.[0];!n||!A(M(n))||to(M(n),n=>{if(!v(n,`Identifier`))return;let i=O(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&pf(n,t,e)})}let a=v(n.body,`BlockStatement`)?Ie(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>hf(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let r=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||r||Bme(n,t,e))continue;let i=Lme(t,e);i&&zme(n,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()`."})}}})}),_f=`cancelAnimationFrame`,vf=`collection-values:`,Vme=new Set([`min`,`max`]),yf=e=>v(e,`CallExpression`)&&xf(e,`requestAnimationFrame`),bf=new Set([`window`,`globalThis`,`self`]),xf=(e,t)=>{let n=M(e.callee);if(v(n,`Identifier`))return n.name===t&&!O(n,n.name);if(!v(n,`MemberExpression`)||N(n)!==t)return!1;let r=M(n.object);return v(r,`Identifier`)&&bf.has(r.name)&&!O(r,r.name)},Sf=e=>{if(!e)return null;let t=M(e);if(v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`))return t;if(v(t,`Identifier`)){let e=O(t,t.name)?.initializer;if(A(e))return e}return null},Cf=(e,t,n)=>{let r=new Set,i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of cc(e,n))r.add(t)}if((v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`))&&t.id&&v(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of cc(e,n))r.add(t)}return r},wf=(e,t,n)=>{let r=M(e);return v(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Hme=(e,t,n)=>{let r=!1;return to(e,e=>{if(r)return!1;if(!yf(e))return;let i=e.arguments?.[0];if(i&&wf(i,t,n))return r=!0,!1}),r},Ume=(e,t)=>{let n=[];return to(e,e=>{if(!yf(e))return;let r=e.arguments?.[0];if(!r)return;let i=Sf(r);i&&Hme(i,Cf(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},Tf=e=>{let t=M(e);if(v(t,`Identifier`)){let e=O(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=Tf(e.initializer);if(t&&t!==n)return t}return n}if(!v(t,`MemberExpression`))return null;let n=Tf(t.object),r=N(t);return n&&r?`${n}.${r}`:null},Wme=e=>{let t=S(e),n=t.parent;if(v(n,`AssignmentExpression`)&&n.right===t)return Tf(n.left);if(v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`))return Tf(n.id);if(v(n,`CallExpression`)&&v(n.callee,`MemberExpression`)){let e=N(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?Tf(n.callee.object):null;if(i)return`${vf}${i}`}return null},Ef=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=Cf(n,e.scheduledFunction,t),i=[e.rafCall];return to(e.scheduledFunction,e=>{if(!yf(e))return;let n=e.arguments?.[0];n&&wf(n,r,t)&&i.push(e)}),i},Gme=e=>{let t=S(e),n=t.parent;return v(n,`AssignmentExpression`)&&n.right===t?n.left:v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`)?n.id:null},Df=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(A(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return s(e,a=>{if(i||a!==e&&A(a))return!1;let o=v(a,`AssignmentExpression`)?a.left:v(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&Tf(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},Kme=(e,t,n)=>{let r=Ef(e,n),i=r.map(Wme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(vf))return a;let o=new Set(r.flatMap(e=>{let t=Gme(e);return t?[t]:[]}));return Df(t,a,o)||Df(e.scheduledFunction,a,o)?null:a},qme=(e,t,n)=>{let r=!1;return to(e,e=>{if(r||!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||N(i)!==`forEach`||Tf(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!v(a,`SpreadElement`)?Sf(a):null;if(!A(o))return;let c=o.params?.[0];v(c,`Identifier`)&&s(o,e=>{if(r||e!==o&&A(e))return!1;if(!v(e,`CallExpression`))return;let t=e.arguments?.[0];if(Of(e)&&v(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(c)?.bindingIdentifier)return r=!0,!1})}),r},Jme=(e,t,n)=>{if(t.startsWith(vf))return qme(e,t.slice(18),n);let r=!1;return to(e,e=>{if(r||!v(e,`CallExpression`)||!Of(e))return;let n=e.arguments?.[0];n&&Tf(n)===t&&(r=!0)}),r},Of=e=>{if(xf(e,_f))return!0;let t=M(e.callee);if(!v(t,`Identifier`))return!1;let n=O(t,t.name)?.bindingIdentifier?.parent;if(!v(n,`Property`)||(v(n.key,`Identifier`)?n.key.name:v(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==_f)return!1;let r=n.parent,i=r?.parent;if(!v(r,`ObjectPattern`)||!v(i,`VariableDeclarator`))return!1;let a=i.init?M(i.init):null;return v(a,`Identifier`)&&bf.has(a.name)&&!O(a,a.name)},Yme=(e,t)=>{to(e,e=>{let n=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(v(n,`Identifier`)){let e=Tf(n);e&&t.add(e)}else if(v(n,`MemberExpression`)){let e=Tf(n);e&&t.add(e)}})},Xme=(e,t,n)=>{if(v(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!v(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return Nf(e.right);if(e.operator!==`=`)return!1;let r=M(e.right),i=v(r,`BinaryExpression`)?M(r.left):null;return v(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&v(i,`Identifier`)&&Tf(i)===t&&Nf(r.right)},kf=(e,t)=>{let n=new Set,r=new Set;to(e,e=>{let i=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(!v(i,`Identifier`))return;let a=Tf(i);a&&(Xme(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},Zme=(e,t)=>{let n=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(!v(n,`Identifier`)&&!v(n,`MemberExpression`))return;let r=Tf(n);if(!r)return;if(v(e,`UpdateExpression`)||v(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!v(e,`AssignmentExpression`))return;let i=M(e.right);if(!v(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)},Qme=e=>v(e,`IfStatement`)||v(e,`ConditionalExpression`)||v(e,`LogicalExpression`)||v(e,`SwitchStatement`)||v(e,`TryStatement`)||v(e,`ForStatement`)||v(e,`ForInStatement`)||v(e,`ForOfStatement`)||v(e,`WhileStatement`)||v(e,`DoWhileStatement`),$me=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(Qme(n))return!1;n=n.parent}return n===t||e===t},ehe=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),to(e,r=>{if(!$me(r,e)||(Zme(r,n),!v(r,`CallExpression`)))return;let a=r.callee;if(v(a,`Identifier`)){let e=Tf(a);s(t,t=>{v(t,`VariableDeclarator`)&&v(t.id,`Identifier`)&&Tf(t.id)===e&&t.init&&A(t.init)&&i(t.init)});return}if(v(a,`MemberExpression`)){let e=Tf(a);if(!e)return;if(N(a)===`abort`){let e=Tf(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}s(t,t=>{v(t,`AssignmentExpression`)&&v(t.left,`MemberExpression`)&&Tf(t.left)===e&&t.right&&A(t.right)&&i(t.right)})}}))};return i(e),n},Af=(e,t)=>{let n=M(e);if(v(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(v(n,`Identifier`)||v(n,`MemberExpression`)){let e=Tf(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(v(n,`UnaryExpression`)&&n.operator===`!`){let e=Af(n.argument,t);return e===null?null:!e}if(v(n,`LogicalExpression`)){let e=Af(n.left,t);if(n.operator===`??`)return e;let r=Af(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(!v(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=Af(n.left,t),o=Af(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=Tf(n.left),c=Tf(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},jf=e=>v(e,`ReturnStatement`)||v(e,`ThrowStatement`)?!0:v(e,`BlockStatement`)&&!!e.body?.some(e=>jf(e))||v(e,`IfStatement`)&&!!e.alternate&&jf(e.consequent)&&jf(e.alternate),Mf=(e,t,n)=>{let r=Af(e,n);return r!==null&&r!==t},the=(e,t,n)=>{let r=Af(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},nhe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((v(e,`IfStatement`)||v(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&Mf(e.test,e.consequent===r,n)||v(e,`LogicalExpression`)&&e.right===r&&the(e.left,e.operator,n))return!0;if(v(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(v(e,`IfStatement`)&&(jf(e.consequent)&&Mf(e.test,!1,n)||e.alternate&&jf(e.alternate)&&Mf(e.test,!0,n)))return!0}}r=e}return!1},rhe=(e,t,n)=>{let r=Ef(e,n).slice(1);return r.length>0&&r.every(n=>nhe(n,e.scheduledFunction,t))},Nf=e=>v(e,`Literal`)&&typeof e.value==`number`&&e.value>0,ihe=(e,t)=>{let n=M(e);return v(n,`Literal`)&&typeof n.value==`number`||v(n,`Identifier`)&&!t.has(Tf(n)??``)},Pf=(e,t,n)=>{let r=M(e);if(v(r,`Identifier`)){let e=Tf(r);return e?t.has(e):!1}if(v(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return Pf(r.left,t,n)&&ihe(r.right,n);if(r.operator===`*`||r.operator===`/`)return Pf(r.left,t,n)&&Nf(r.right)}if(!v(r,`CallExpression`))return!1;let i=M(r.callee),a=v(i,`MemberExpression`)?M(i.object):null;if(!v(i,`MemberExpression`)||!v(a,`Identifier`)||a.name!==`Math`||O(a,a.name)||!Vme.has(N(i)??``))return!1;let o=!1;for(let e of r.arguments){if(Pf(e,t,n)){o=!0;continue}if(!v(e,`Literal`)||typeof e.value!=`number`)return!1}return o},Ff=(e,t,n,r,i)=>{let a=M(e);if(v(a,`UnaryExpression`)&&a.operator===`!`)return Ff(a.argument,t,n,r,!i);if(v(a,`LogicalExpression`)&&a.operator!==`??`)return Ff(a.left,t,n,r,i)&&Ff(a.right,t,n,r,i);if(!v(a,`BinaryExpression`))return!1;let o=Pf(a.left,t,r)&&v(a.right,`Literal`)&&typeof a.right.value==`number`,s=v(a.left,`Literal`)&&typeof a.left.value==`number`&&Pf(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=Pf(a.left,n,r)&&v(a.right,`Literal`)&&typeof a.right.value==`number`,d=v(a.left,`Literal`)&&typeof a.left.value==`number`&&Pf(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},ahe=(e,t)=>{let n=e.scheduledFunction,r=new Set;Yme(n,r);let i=kf(n,!0),a=kf(n,!1);if(A(n)){for(let e of n.params??[])if(v(e,`Identifier`)){let t=Tf(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,to(n,e=>{if(!v(e,`VariableDeclarator`)||!e.init)return;let t=v(e.id,`Identifier`)?Tf(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(Pf(e.init,i,r)?(i.add(t),o=!0):Pf(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=Ef(e,t).slice(1);if(s.length===0)return!1;for(let e of s){let t=!1,o=e,s=e.parent;for(;s&&s!==n;){if((v(s,`IfStatement`)||v(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&Ff(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},If=C({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(!uc(t,e.scopes))return;let n=Xn(t);if(!n)return;let r=sc(n);for(let t of Ume(n,e.scopes)){if(ahe(t,e.scopes))continue;let i=Kme(t,n,e.scopes);i&&r.some(t=>Jme(t,i,e.scopes))||r.some(r=>rhe(t,ehe(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.`})}}})}),ohe=new Set([`removeEventListener`,`removeListener`,`off`]),she=/(?:duration|delay|timeout|ms)$/i,che=e=>{let t=M(e);if(v(t,`Literal`)&&typeof t.value==`number`)return!0;if(!v(t,`Identifier`))return!1;if(she.test(t.name))return!0;let n=O(t,t.name);if(!n?.initializer)return!1;let r=M(n.initializer);return v(r,`Literal`)&&typeof r.value==`number`},lhe=e=>{let t=M(e);return Ei(t)?!0:v(t,`CallExpression`)&&v(t.callee,`MemberExpression`)&&N(t.callee)===`bind`},uhe=new Set([`addEventListener`,`addListener`,`on`,`once`]),Lf=`handler-only`,dhe=(e,t)=>{let n=new Set;return s(e,e=>{if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let i=N(r);if(!i||!uhe.has(i))return;let a=W({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Lf:Ol(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},Rf=C({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=M(n.callee);if(!v(r,`MemberExpression`))return;let i=N(r);if(!i||!ohe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&che(a[0])||!lhe(s))return;let c=W({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Lf:Ol(a[0],e.scopes),u=w(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=dhe(u,e.scopes),t.set(u,d)),d.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.`})}}}}),fhe=new Set([`columnheader`,`rowheader`]),phe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=z(e.attributes,t,!1);if(!n)continue;let r=R(n);if(r===null||r.trim().length>0)return!0}return!1},zf=C({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=k(n);if(/^[A-Z]/.test(r))return;let i=z(n.attributes,`role`,!1),a=i?R(i)?.toLowerCase():null;r!==`th`&&(!a||!fhe.has(a))||Mr(t,e.settings)||phe(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.`})}})}),mhe=(e,t,n)=>{let r=e.declarationNode;if(!n||e.references.some(e=>e.flag!==`read`)||!v(r,`VariableDeclarator`)||!v(r.id,`ArrayPattern`)||r.id.elements[1]!==e.bindingIdentifier||!v(r.init,`CallExpression`))return!1;let i=Ut(r.init.callee,t);if(i?.source!==`@xstate/react`||i.importedName!==`useService`)return!1;let a=one(n,`@xstate/react`);if(!a||a.version.major!==1||a.version.isPrerelease||a.declaredRange&&!/^[~^]?1(?:\.\d+){1,2}$/.test(a.declaredRange))return!1;let o=r.init.arguments[0];if(!v(o,`Identifier`)||en(o,`send`,t))return!1;let s=x(o,t),c=t;if(s?.kind===`import`){let e=Ut(o,t),r=e?.source.startsWith(`.`)&&e.importedName?He(n,e.source,e.importedName):null,i=r?.exportedNode.parent;if(!r||!v(i,`VariableDeclarator`)||!v(i.id,`Identifier`))return!1;c=Dt(r.programNode),s=c.symbolFor(i.id)}if(!s||s.kind!==`const`||s.scope.kind!==`module`||s.references.some(e=>e.flag!==`read`)||!v(s.initializer,`CallExpression`))return!1;let l=Ut(s.initializer.callee,c);return l?.source!==`xstate`||l.importedName!==`interpret`||en(s.bindingIdentifier,`send`,c)?!1:s.references.every(e=>{let t=e.identifier.parent;if(!v(t,`MemberExpression`))return!0;let n=t.parent;return!(v(n,`AssignmentExpression`)&&n.left===t)&&!(v(n,`UpdateExpression`)||v(n,`UnaryExpression`)&&n.operator===`delete`)})},hhe=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return s(e,a=>{if(a!==e&&A(a)){let e=Vf(a,t);for(let t of e)t.resolvedSymbol&&!un(t.resolvedSymbol.scope,n)&&(i.has(t.id)||(r.push(t),i.add(t.id)));return!1}let o=t.referenceFor(a);o&&o.resolvedSymbol&&(un(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},Bf=new WeakMap,Vf=(e,t)=>{let n=Bf.get(t);n||(n=new WeakMap,Bf.set(t,n));let r=n.get(e);if(r)return r;let i=hhe(e,t);return n.set(e,i),i};let Hf=0;const Uf=e=>{let t={id:Hf++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Wf=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Gf=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Kf=(e,t,n)=>{if(e.nodeBlock.set(t,n),A(t)){e.nestedFunctions.push(t);return}let r=t,i=nn[t.type]??Object.keys(r);for(let t=0;t<i.length;t+=1){let a=i[t];if(a===void 0||a===`parent`)continue;let o=r[a];if(Array.isArray(o))for(let t=0;t<o.length;t+=1){let r=o[t];E(r)&&Kf(e,r,n)}else E(o)&&Kf(e,o,n)}},ghe=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}},qf=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=qf(e.argument);return t===null?null:!t}return null},Jf=e=>e===null||qf(e)===!0,Yf=(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},Xf=(e,t,n)=>{let r=n;for(let n of t)r=Zf(e,n,r);return r},Zf=(e,t,n)=>{if(e.nodeBlock.set(t,n),!ghe(t))return Gf(e,n,t),Kf(e,t,n),n;if(t.type===`BlockStatement`)return Xf(e,t.body,n);if(t.type===`LabeledStatement`){let r=Uf(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Zf(e,a,n);return e.labelStack.pop(),Wf(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Kf(e,t.argument,n),Wf(n,e.exit,`uncond`),Uf(e);if(t.type===`ThrowStatement`){t.argument&&Kf(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Wf(n,r.catch,`uncond`):r?.finally?Wf(n,r.finally,`uncond`):Wf(n,e.exit,`throw`),Uf(e)}if(t.type===`BreakStatement`){let r=Yf(e,t.label?t.label.name:null);return r?Wf(n,r.merge,`uncond`):Wf(n,e.exit,`uncond`),Uf(e)}if(t.type===`ContinueStatement`){let r=Yf(e,t.label?t.label.name:null);return r?.header&&Wf(n,r.header,`uncond`),Uf(e)}if(t.type===`IfStatement`){Kf(e,t.test,n);let r=Uf(e),i=Uf(e);if(Wf(n,r,`cond`),Wf(Zf(e,t.consequent,r),i,`uncond`),t.alternate){let r=Uf(e);Wf(n,r,`cond`),Wf(Zf(e,t.alternate,r),i,`uncond`)}else Wf(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Jf(t.test);Kf(e,t.test,n);let a=Uf(e),o=Uf(e),s=Uf(e);r?Wf(n,o,`uncond`):(Wf(n,a,`uncond`),Wf(a,o,i?`uncond`:`cond`),i||Wf(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Zf(e,t.body,o);return e.loopStack.pop(),r?(Wf(c,a,`uncond`),Wf(a,o,i?`uncond`:`cond`),i||Wf(a,s,`cond`)):Wf(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Kf(e,t.init,n),t.test&&Kf(e,t.test,n);let r=Uf(e),i=Uf(e),a=Uf(e),o=Jf(t.test??null);Wf(n,r,`uncond`),Wf(r,i,o?`uncond`:`cond`),o||Wf(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Zf(e,t.body,i);return e.loopStack.pop(),t.update&&Kf(e,t.update,r),Wf(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Kf(e,t.right,n),Kf(e,t.left,n);let r=Uf(e),i=Uf(e),a=Uf(e);Wf(n,r,`uncond`),Wf(r,i,`cond`),Wf(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Zf(e,t.body,i);return e.loopStack.pop(),Wf(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Kf(e,t.discriminant,n);let r=Uf(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Uf(e);Wf(n,t,`cond`),i&&Wf(i,t,`uncond`),i=Xf(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Wf(i,r,`uncond`),a||Wf(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Uf(e),i=Uf(e),a=null,o=null;t.handler&&(a=Uf(e)),t.finalizer&&(o=Uf(e)),Wf(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Xf(e,t.block.body,r);if(e.tryStack.pop(),a&&Wf(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Zf(e,n,a);o?Wf(r,o,`uncond`):Wf(r,i,`uncond`)}return o&&t.finalizer?(Wf(s,o,`uncond`),Wf(Xf(e,t.finalizer.body,o),i,`uncond`)):Wf(s,i,`uncond`),i}return Gf(e,n,t),Kf(e,t,n),n},_he=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Uf(r),a=Uf(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Xf(r,t.body,i):(Kf(r,t,i),o=i),Wf(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},vhe=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},Qf=e=>{Hf=0;let t=new Map,n=[],r=(e,r)=>{let i=_he(e,r,n);t.set(e,{cfg:i,unconditionalSet:vhe(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!A(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!A(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(A(t)||t.type===`Program`)return t;t=t.parent??null}return null};return{cfgFor:e=>i(e)?.cfg??null,enclosingFunction:a,isUnconditionalFromEntry:e=>{let t=a(e);if(!t)return!0;let n=i(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},yhe=e=>{let t=M(e);return v(t,`ObjectExpression`)?`object`:v(t,`ArrayExpression`)?`array`:v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)?`function`:v(t,`JSXElement`)||v(t,`JSXFragment`)?`JSX`:v(t,`NewExpression`)?`instance`:null},$f=(e,t,n=new Set)=>{let r=yhe(e);if(r)return{bindingName:null,kind:r};let i=M(e);if(!v(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`)||!v(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=$f(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},bhe=new Set([...Et,`useImperativeHandle`,`useInsertionEffect`]),ep=new WeakMap,tp=new WeakMap,np=new WeakMap,rp=e=>{let t=ep.get(e.programNode);if(t)return t;let n=Dt(e.programNode);return ep.set(e.programNode,n),n},xhe=e=>{let t=tp.get(e.programNode);if(t)return t;let n=Qf(e.programNode);return tp.set(e.programNode,n),n},ip=(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},ap=(e,t)=>{let n=Ts(e)??t??``;return n!==`use`&&Ss(n)},op=(e,n)=>{if(!v(e,`Identifier`))return null;let r=x(e,n);if(r?.kind!==`import`||!r.initializer)return null;let i=r.initializer.parent;if(!i||!v(i,`ImportDeclaration`))return null;let a=i.source?.value;if(typeof a!=`string`)return null;let o=t(r.initializer);return o?{exportedName:o,source:a}:null},She=(e,t,n)=>{if(!n)return null;let r=op(e,t);if(!r)return null;let i=v(e,`Identifier`)?e.name:``;if(r.source===`react`||!Ss(i)&&!Ss(r.exportedName))return null;let a=Be(n,r.source,r.exportedName);return!a||!ap(a.functionNode,r.exportedName)?null:{cfg:xhe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:rp(a)}},sp=(e,t,r,i=new Set)=>{let a=M(e);if(v(a,`Identifier`)){let e=x(a,t);if(!e||i.has(e.id))return null;if(n(e)){let t=Pn(e.declarationNode);return!t||!r.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||fp(e)?null:(i.add(e.id),sp(e.initializer,t,r,i))}if(v(a,`MemberExpression`)){let e=N(a);if(!e||!r.has(e))return null;let n=M(a.object);return!v(n,`Identifier`)||!En(n,t)?null:e===`useImperativeHandle`?2:1}if(!v(a,`ConditionalExpression`))return null;let o=sp(a.consequent,t,r,new Set(i)),s=sp(a.alternate,t,r,new Set(i));return o!==null&&o===s?o:null},Che=(e,t,n,r)=>{if(!n)return null;let i=op(M(e.callee),t);if(!i)return null;let a=He(n,i.source,i.exportedName);return a?sp(a.exportedNode,rp(a),r):null},cp=(e,t,n,r)=>{let i=M(e.callee),a=P(i,t);if(a&&ap(a)){let e=w(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return She(i,t,r)},lp=e=>{if(!A(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=M(r);if(v(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(v(e,`AssignmentPattern`)&&v(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(v(e,`ObjectPattern`))for(let r of e.properties??[]){if(!v(r,`Property`))continue;let e=T(r,{allowComputedString:!0});if(!e)continue;let i=M(r.value);v(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):v(i,`AssignmentPattern`)&&v(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},up=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ObjectExpression`))return r;if(!v(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||fp(i)?null:(n.add(i.id),up(i.initializer,t,n))},whe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(v(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(v(r,`Property`)&&T(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},dp=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>v(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=up(r,n);return i?whe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},fp=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&v(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(v(n,`AssignmentExpression`)&&n.left===e||v(n,`UpdateExpression`)&&n.argument===e||v(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(v(n,`CallExpression`)&&n.callee===e&&v(e,`MemberExpression`)){let t=N(e);if(t&&(vr.has(t)||yr.has(t)))return!0}}return!1},pp=(e,t,n,r,i=new Set)=>{let a=M(e);if(!v(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||fp(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!v(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),pp(o.initializer,t,n,r,i))},mp=(e,t,n,r=new Set)=>{if(pp(e,`list`,t,n))return!0;let i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||fp(e)?!1:(r.add(e.id),mp(e.initializer,t,n,r))}return v(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?v(e,`SpreadElement`)?pp(e.argument,`list`,t,n):pp(e,`value`,t,n):!1):!1},The=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of lp(t.functionNode)){let o=dp(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||fp(s)||(pp(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(pp(o.expression,`list`,n,r)||mp(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},hp=(e,t,n,r,i)=>{if(!A(e.functionNode))return!1;let a=e.functionNode;if(n<0||r.has(a)||[...t.valueSymbolIds,...t.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?fp(n):!1}))return!1;let o=new Set(r);o.add(a);let c=!1;return s(a.body,r=>{if(c||r!==a.body&&A(r))return!1;if(!v(r,`CallExpression`)||!ip(r,e.cfg))return;if(D(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=M(r.callee),i=(v(n,`Identifier`)?n.name:v(n,`MemberExpression`)?N(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!v(a,`SpreadElement`)&&mp(a,e.scopes,t)?(c=!0,!1):void 0}let s=Che(r,e.scopes,e.filePath,i);if(s!==null){let n=r.arguments?.[s];return n&&!v(n,`SpreadElement`)&&mp(n,e.scopes,t)?(c=!0,!1):void 0}if(n===0)return;let l=cp(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=The(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&hp(l,u,n-1,o,i))return c=!0,!1}),c},gp=(e,t,n=bhe)=>{let r=np.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):np.set(e,new Map([[n,a]]));let o=cp(e,t.scopes,t.cfg,t.filename);if(!o||!K(e,t.scopes)||!ip(e,t.cfg))return a;for(let r of lp(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||fp(i))continue;let s=dp(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=$f(c,s.expression?t.scopes:o.scopes);l&&hp(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(v(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},_p=new WeakMap,Ehe=e=>{let t=new Map;if(!v(e,`Program`))return t;for(let n of e.body){let e=v(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!v(e,`TSInterfaceDeclaration`)&&!v(e,`TSTypeAliasDeclaration`)||!v(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},vp=(e,t)=>{let n=w(e);if(!n)return[];let r=_p.get(n);return r||(r=Ehe(n),_p.set(n,r)),r.get(t)??[]},Dhe=e=>v(e,`Identifier`)?e.name:v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&e.object.name===`React`&&v(e.property,`Identifier`)?`React.${e.property.name}`:null,yp=(e,t)=>{let n=e.parent;if(v(n,`CallExpression`)&&n.arguments[0]===e){let e=Dhe(n.callee);if(e!==null&&nt.has(e))return!0}return t?Ms(e,t).some(e=>e.references.some(n=>{let r=S(n.identifier),i=r.parent;return!!(v(i,`CallExpression`)&&i.arguments[0]===r&&!b(e,n.identifier,t)&&D(i,nt,t,{resolveNamedAliases:!0}))})):!1},Ohe=new Set([`function`,`arrow-function`,`method`]),bp=e=>{let t=e.scope;for(;t;){if(Ohe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},xp=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),J=e=>{let t=e;for(;xp.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Sp=(e,t)=>{let n=J(e);if(v(n,`Identifier`)){let e=t?x(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&v(r,`ImportDeclaration`)&&r.source.value===`react`?Pn(e.declarationNode)??n.name:n.name}return v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)?n.property.name:null},Cp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,khe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,Ahe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,jhe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,wp=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,Mhe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,Nhe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Tp=e=>`\`${e}\` re-runs on every render with no dependency array.`,Phe=e=>`\`${e}\` crashes without a function as its first argument.`,Fhe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",Ihe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Ep=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,Lhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,Dp=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,Op=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,Rhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,zhe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,Bhe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,Vhe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,Hhe=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}},Uhe=new Set([`===`,`!==`]),Whe=(e,t)=>{let n=e.declarationNode;if(!v(n,`VariableDeclarator`)||!v(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!v(i,`Identifier`))return null;let a=n.init?M(n.init):null;return!a||!D(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},Ghe=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=S(n.identifier),i=r.parent;if(!v(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||j(i)!==t)return null;let a=M(i.arguments[0]);return v(a,`ArrowFunctionExpression`)||v(a,`FunctionExpression`)||v(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},Khe=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n),i=M(n.object);return!!(r===`is`&&v(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},kp=(e,t)=>{let n=M(e);return v(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},qhe=(e,t,n)=>{let r=M(e);if(v(t,`BinaryExpression`)&&Uhe.has(t.operator))return M(t.left)===r?kp(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:M(t.right)===r?kp(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!v(t,`CallExpression`)||!Khe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return v(i,`SpreadElement`)||v(a,`SpreadElement`)?null:M(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:M(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Jhe=(e,t,n)=>{let r=e.parent;for(;r&&B(r,t);){let i=qhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Yhe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!B(e,t))return!1;if(v(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(v(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!wt.has(e.type))return!1;a=e}return i===r},Ap=(e,t)=>{let n=new Set,r=M(e);for(;v(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Qr(e);if(!i||!v(M(i),`Identifier`))break;n.add(e.id),r=M(i)}return r},Xhe=(e,t,n)=>{let r=Ap(e,n),i=Ap(t,n);if(r===i)return!0;if(v(r,`Identifier`)&&v(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return v(r,`Literal`)&&v(i,`Literal`)?Object.is(r.value,i.value):!1},Zhe=e=>{let t=S(e).parent;if(!v(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(v(n,`ArrayExpression`)&&n.elements.length)},jp=e=>{if(v(e,`ReturnStatement`)||v(e,`ThrowStatement`))return!0;if(!v(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&jp(t))},Mp=(e,t)=>{if(!v(e,`IfStatement`)||e.alternate||!jp(e.consequent))return!1;let n=e.parent;if(!v(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&B(t,e))},Qhe=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(v(i,`IfStatement`)&&B(e,i.test)&&(B(t,i.consequent)||i.alternate&&B(t,i.alternate)||Mp(i,t))){let n=B(t,i.consequent);if(n===(!!(i.alternate&&B(t,i.alternate))||Mp(i,t)))return null;let a=Jhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Yhe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},$he=(e,t,n)=>{if(!Zhe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=Whe(e,n);if(!r)return!1;let i=Ghe(r,t);if(!i)return!1;let a=e.references.filter(e=>B(e.identifier,t));if(a.length!==1)return!1;let o=S(a[0].identifier);if(v(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=Qhe(a[0].identifier,i.callExpression,t,n);return!!(s&&Xhe(s,i.writtenValue,n))},ege=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,tge=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,nge=(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,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Ba as f,Bi as p,Bn as m,Br as h,Bt as g,C as _,Ca as v,Ci as y,Cn as b,Cr as ee,Ct as te,D as ne,Da as re,Di as ie,Dn as ae,Dr as oe,Dt as se,E as ce,Ea as le,Ei as ue,En as de,Er as fe,Et as pe,F as me,Fa as he,Fi as ge,Fn as _e,Fr as ve,Ft as eee,G as ye,Ga as tee,Gi as x,Gn as be,Gr as xe,Gt as nee,H as ree,Ha as Se,Hi as Ce,Hn as we,Hr as Te,Ht as Ee,I as iee,Ia as aee,Ii as oee,In as De,Ir as see,It as cee,J as Oe,Ja as lee,Ji as S,Jn as ke,Jr as Ae,Jt as je,K as uee,Ka as dee,Ki as fee,Kn as Me,Kr as pee,Kt as C,L as Ne,La as Pe,Li as Fe,Ln as Ie,Lr as mee,Lt as hee,M as gee,Ma as _ee,Mi as Le,Mn as Re,Mr as vee,Mt as yee,N as ze,Na as bee,Ni as Be,Nn as xee,Nr as Ve,Nt as See,O as Cee,Oa as wee,Oi as Tee,On as Eee,Or as Dee,Ot as Oee,P as kee,Pa as Aee,Pi as He,Pn as Ue,Pr as We,Pt as jee,Q as Ge,Qi as Mee,Qn as Ke,Qr as Nee,Qt as qe,R as Je,Ra as Pee,Ri as Ye,Rn as Xe,Rr as Fee,Rt as Ze,S as Qe,Sa as $e,Si as Iee,Sn as Lee,Sr as Ree,St as zee,T as et,Ta as Bee,Ti as Vee,Tn as tt,Tr as nt,Tt as Hee,U as Uee,Ua as rt,Ui as it,Un as at,Ur as ot,Ut as Wee,V as Gee,Va as st,Vi as ct,Vn as Kee,Vr as lt,Vt as qee,W as ut,Wa as Jee,Wi as w,Wn as dt,Wr as ft,Wt as Yee,X as pt,Xi as mt,Xn as ht,Xr as Xee,Xt as gt,Y as _t,Yi as vt,Yn as yt,Yr as Zee,Yt as bt,Z as Qee,Zi as xt,Zn as $ee,Zr as St,Zt as Ct,_ as ete,_a as wt,_i as tte,_n as Tt,_r as Et,_t as nte,a as rte,aa as Dt,ai as Ot,an as ite,ar as ate,at as ote,b as kt,ba as T,bi as At,bn as ste,br as cte,bt as lte,c as ute,ca as E,ci as dte,cn as fte,cr as pte,ct as jt,d as Mt,da as Nt,di as mte,dn as hte,dr as gte,dt as Pt,ea as Ft,ei as _te,en as It,er as D,et as Lt,f as Rt,fa as zt,fi as vte,fn as Bt,fr as Vt,ft as yte,g as Ht,ga as Ut,gi as bte,gn as Wt,gr as Gt,gt as xte,h as Kt,ha as Ste,hi as Cte,hn as O,hr as qt,ht as wte,i as Tte,ii as Ete,in as Jt,ir as Dte,it as Yt,j as Ote,ja as kte,ji as Ate,jn as Xt,jr as jte,jt as Mte,k as Zt,ka as Qt,ki as $t,kn as en,kr as Nte,kt as Pte,l as tn,la as nn,li as Fte,ln as rn,lr as Ite,lt as an,m as on,ma as Lte,mi as Rte,mn as sn,mr as zte,mt as Bte,n as Vte,ni as Hte,nn as Ute,nr as cn,nt as ln,o as Wte,oa as un,oi as dn,on as Gte,or as fn,ot as pn,p as mn,pa as hn,pi as Kte,pn as k,pr as qte,pt as gn,q as _n,qa as Jte,qi as vn,qn as yn,qr as bn,qt as Yte,r as Xte,ri as Zte,rn as xn,rr as Sn,rt as Cn,s as Qte,sa as A,si as wn,sn as $te,sr as Tn,st as ene,t as tne,ta as j,ti as nne,tn as rne,tr as En,tt as ine,u as ane,ua as one,ui as sne,un as cne,ur as lne,ut as une,v as dne,va as M,vi as fne,vn as Dn,vr as On,vt as pne,w as kn,wa as mne,wi as An,wn as jn,wr as Mn,wt as hne,x as Nn,xa as Pn,xi as Fn,xn as In,xr as Ln,xt as gne,y as Rn,ya as N,yi as _ne,yn as zn,yr as Bn,yt as vne,z as Vn,za as yne,zi as P,zn as F,zr as Hn,zt as bne}from"./capability-FtYEg12v.js";import*as Un from"node:fs";import{readFileSync as xne}from"node:fs";import*as Wn from"node:path";import{visitorKeys as Sne}from"oxc-parser";import{analyze as Cne}from"eslint-scope";import{Features as wne,transform as Gn}from"lightningcss";import{visit as Kn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as Tne}from"@shaderfrog/glsl-parser/index.js";const Ene=Symbol.for(`react-doctor.reset-filesystem-caches`),qn=e=>C({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>Jt}),Jn=qn({id:`activity-wraps-effect-heavy-subtree`,severity:`warn`,category:`Bugs`,requires:[`react`,`react:19.2`],title:`Activity wraps an effect-heavy subtree`,recommendation:`Retired: Activity intentionally cleans up effects while hidden and preserves component state.`}),Yn=e=>!v(e,`CallExpression`)&&!v(e,`NewExpression`)?null:v(e.callee,`Identifier`)?e.callee.name:v(e.callee,`MemberExpression`)&&v(e.callee.property,`Identifier`)?e.callee.property.name:null,Xn=(e,t)=>{if(!v(e,`CallExpression`)&&!v(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return v(n,`ArrowFunctionExpression`)||v(n,`FunctionExpression`)?n:t?P(n,t):null},Zn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=M(r),v(r,`MemberExpression`)){r=r.object;continue}if(n&&v(r,`CallExpression`)){if(!v(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return v(r,`Identifier`)?r:null},Qn=(e,t)=>Zn(e,t)?.name??null,$n=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=Yn(e);return n?typeof t==`string`?n===t:t.has(n):!1},Dne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},er=(e,t,n)=>D(e,t,n,Dne),One=new Set([`useCallback`,`useEffectEvent`]),kne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),Ane=/^use\w*(?:Throttle|Debounce)/i,jne=e=>{let t=Yn(e);return t!==null&&Ane.test(t)},Mne=(e,t)=>{if(!er(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return v(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Nne=(e,t)=>v(e,`CallExpression`)?er(e,One,t)||$n(e,kne)||Mne(e,t)||jne(e):v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&e.property.name===`current`,Pne=(e,t,n)=>{let r=O(e,t);return!!(r?.initializer&&er(r.initializer,`useRef`,n))},tr=C({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(!er(t,Tn,e.scopes)||(t.arguments?.length??0)<2)return;let n=Xn(t);if(!n||!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return;let r=t.arguments[1];if(!v(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)v(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(s(n.body,e=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!l.has(e.callee.property.name))return;let t=Qn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];v(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let c=O(t,a);c?.initializer&&Nne(c.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!Pne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),nr=e=>{let t=e.value;return t&&v(t,`Literal`)&&typeof t.value==`string`?t.value:null},I=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!v(t,`JSXAttribute`))continue;let e=Tt(t.name);if(e&&e.toLowerCase()===n)return t}},rr=Object.freeze({}),Fne=new WeakMap,Ine=e=>{if(!e)return rr;let t=Fne.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:rr;return Fne.set(e,r),r},Lne=(e,t)=>{let n=k(e);if(t.polymorphicPropName){let n=I(e.attributes,t.polymorphicPropName);if(n){let e=nr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Rne=new WeakMap,ir=(e,t)=>{let n=Rne.get(e);if(n&&n.settings===t)return n.elementType;let r=Lne(e,Ine(t));return Rne.set(e,{settings:t,elementType:r}),r},zne=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},L=e=>e.some(e=>v(e,`JSXSpreadAttribute`)),ar=e=>{if(!e)return null;let t=M(e);return v(t,`Literal`)&&typeof t.value==`string`?t.value:v(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},R=e=>{if(!v(e,`JSXAttribute`))return null;let t=nr(e);if(t!==null)return t;let n=e.value;if(n&&v(n,`JSXExpressionContainer`)){let e=n.expression;if(v(e,`Literal`)&&typeof e.value==`string`)return e.value;if(v(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},or=e=>e.attribute?R(e.attribute):ar(e.expression),Bne=e=>{let t=e.expression??e.attribute?.value;return t?M(v(t,`JSXExpressionContainer`)?t.expression:t):null},sr=(e,t)=>{if(ir(e,t).toLowerCase()===`input`&&or(Mt(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=Mt(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=or(n);if(e!==null)return e.length>0;let t=Bne(n);if(v(t,`Literal`)&&t.value)return!0}let r=Mt(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=or(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Bne(r);return v(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},cr=e=>{if(v(e,`JSXIdentifier`))return e.name;if(v(e,`JSXMemberExpression`)){let t=cr(e.object);return t?`${t}.${e.property.name}`:null}return null},Vne=[`next/og`,`@vercel/og`,`satori`],Hne=new Set([`next/og`,`@vercel/og`]),lr=e=>{let t=e.parent;for(;t;){if(v(t,`ImportDeclaration`))return t;if(v(t,`Program`))return null;t=t.parent}return null},ur=e=>typeof e.source.value==`string`?e.source.value:null,Une=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!v(r,`ImportSpecifier`))return!1;let i=lr(r),a=i?ur(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return v(o,`Identifier`)&&o.name===t||v(o,`Literal`)&&o.value===t},Wne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=lr(t);if(!n||ur(n)!==`satori`)return!1;if(v(t,`ImportDefaultSpecifier`))return!0;if(!v(t,`ImportSpecifier`))return!1;let r=t.imported;return v(r,`Identifier`)&&r.name===`satori`||v(r,`Literal`)&&r.value===`satori`},dr=(e,t)=>{if(!v(e,`CallExpression`)&&!v(e,`NewExpression`))return!1;let n=M(e.callee);if(v(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(Une(e,`ImageResponse`,Hne)||Wne(e)))}if(!v(n,`MemberExpression`)||N(n)!==`ImageResponse`||!v(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(!v(i,`ImportNamespaceSpecifier`))return!1;let a=lr(i),o=a?ur(a):null;return!!(o&&Hne.has(o))},Gne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Fn}$`),fr=e=>e?Gne.test(Wn.basename(e)):!1,Kne=new WeakMap,qne=e=>e?fr(Ke(e)):!1,Jne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},pr=(e,t,n,r,i)=>{if(!A(e))return;if(v(e,`ArrowFunctionExpression`)){let a=M(e.body);if(!v(a,`BlockStatement`)){mr(a,t,n,r,i);return}}let a=e.body;v(a,`BlockStatement`)&&s(a,e=>{if(e!==a&&A(e))return!1;v(e,`ReturnStatement`)&&e.argument&&mr(M(e.argument),t,n,r,i)})},Yne=(e,t,n)=>{let r=!1;return s(e,e=>{if(r)return!1;if(v(e,`JSXOpeningElement`)&&!n.has(e)&&cr(e.name)===t)return r=!0,!1}),r},Xne=(e,t,n,r,i)=>{let a=cr(n.name);if(!a||a.includes(`.`)||!Jne(a)||i.has(a)||Yne(e,a,r))return;let o=O(n,a);o?.initializer&&(i.add(a),mr(M(o.initializer),e,t,r,i))},Zne=(e,t)=>{let n=e.parent;for(;n;){if(dr(n,t))return!0;n=n.parent??null}return!1},Qne=(e,t,n)=>{let r=!1;return s(e,e=>{if(r)return!1;if(v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===t&&!Zne(e,n))return r=!0,!1}),r},$ne=(e,t,n,r,i)=>{s(e,e=>{v(e,`JSXOpeningElement`)&&(r.add(e),Xne(t,n,e,r,i))})},mr=(e,t,n,r,i)=>{let a=M(e);if(v(a,`JSXElement`)||v(a,`JSXFragment`)){$ne(a,t,n,r,i);return}if(A(a)){pr(a,t,n,r,i);return}if(v(a,`ConditionalExpression`)){mr(a.consequent,t,n,r,i),mr(a.alternate,t,n,r,i);return}if(v(a,`LogicalExpression`)){mr(a.left,t,n,r,i),mr(a.right,t,n,r,i);return}if(v(a,`CallExpression`)){let e=a.callee;if(A(e)){pr(e,t,n,r,i);return}if(!v(e,`Identifier`)||i.has(e.name)||Yne(t,e.name,r)||Qne(t,e.name,n))return;let o=O(e,e.name);if(!o?.initializer||!A(M(o.initializer)))return;i.add(e.name),pr(M(o.initializer),t,n,r,i);return}if(v(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=O(a,a.name);if(!e?.initializer)return;mr(M(e.initializer),t,n,r,i)}},ere=(e,t)=>{let n=Kne.get(e);if(n)return n;let r=new WeakSet;return Me(e,Vne)&&s(e,n=>{if(!(!v(n,`CallExpression`)&&!v(n,`NewExpression`))&&dr(n,t))for(let i of n.arguments)mr(i,e,t,r,new Set)}),Kne.set(e,r),r},hr=(e,t)=>{if(qne(e.filename))return!0;if(!t)return!1;let n=w(t);if(!n)return!1;let r=ere(n,e.scopes);return r.has(t)?!0:v(t,`JSXElement`)?r.has(t.openingElement):!1},gr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],_r=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),tre=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),vr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),yr=new Set([`add`,`clear`,`delete`,`set`]),br=new Set([`map`,`filter`,`forEach`,`flatMap`]),xr=new Set([`then`,`catch`,`finally`]),nre=new Set([`values`,`keys`,`entries`]),rre=/\.browser\.[cm]?[jt]sx?$/,ire=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(`.`)),are=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],ore=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(`.`)),sre=[`findBy`,`findAllBy`],Sr=new Set(`sleep.delay.wait.pause.throttle.debounce.tick.nextTick.advanceTimersByTime.advanceTimersByTimeAsync.runAllTimers.runAllTimersAsync.runOnlyPendingTimers.runOnlyPendingTimersAsync.setTimeout.setInterval.setImmediate.queueMicrotask.requestAnimationFrame.requestIdleCallback.yieldNow.yieldTo.yieldToBrowser.slice.sliceYield.nextFrame.breathe.onYield.onProgress.progress.onStep.step.stage.runStage.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(`.`)),Cr=e=>typeof e!=`string`||e.length===0?!1:ire.has(e)?!0:are.some(t=>e.startsWith(t)),cre=new Set([`it`,`test`]),lre=new Set([`concurrent`,`only`,`skip`]),ure=new Set([`doMock`,`mock`,`unstable_mockModule`]),dre=new Set([`jest`,`vi`]),fre=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),pre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),mre=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__/`)},hre=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=at(e,e.name);return!!(r&&fre.has(r.source)&&r.exportedName&&t.has(r.exportedName))},gre=(e,t,n)=>mre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),wr=(e,t,n)=>hre(e,t,n)||gre(e,t,n),Tr=e=>{let t=M(e);if(v(t,`Identifier`))return t;if(v(t,`MemberExpression`)){let e=N(t);return!e||!lre.has(e)?null:Tr(t.object)}let n=v(t,`CallExpression`)?M(t.callee):v(t,`TaggedTemplateExpression`)?M(t.tag):null;return!v(n,`MemberExpression`)||N(n)!==`each`?null:Tr(n.object)},_re=(e,t)=>{let n=S(e),r=n.parent;if(!r||!v(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Tr(r.callee);return!!(i&&wr(i,cre,t))},vre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!v(r,`Literal`)||typeof r.value!=`string`)return!1;let i=M(e.callee);if(!v(i,`MemberExpression`))return!1;let a=N(i);if(!a||!ure.has(a))return!1;let o=M(i.object);return v(o,`Identifier`)&&wr(o,dre,n)},yre=(e,t)=>{let n=e.parent;for(;n;){if(A(n)){let e=S(n),r=e.parent;if(r&&v(r,`CallExpression`)&&vre(r,e,t))return!0}n=n.parent}return!1},bre=(e,t,n)=>{let r=e.parent,i=null;for(r&&v(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(A(r))return!1;if(v(r,`JSXAttribute`)&&(i=r),v(r,`JSXElement`)){let e=r.openingElement.name;if(v(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=at(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!pre.has(a.source)&&!Cr(a.source)&&i?.parent===r.openingElement&&v(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},Er=(e,t)=>{if(yre(e,t))return!0;let n=j(e);return!n||!_re(n,t)?!1:bre(e,n,t)},xre=e=>{let t=e.parent;return t?v(t,`JSXSpreadAttribute`)||v(t,`SpreadElement`)?t.argument===e:v(t,`VariableDeclarator`)&&t.init===e:!1},Dr=(e,t,n,r,i)=>{let a=M(e);if(r&&v(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`||!xre(e.identifier)))return!0;i.add(e.id);let o=Dr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!v(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(v(e,`SpreadElement`)){if(Dr(e.argument,t,n,r,i))return!0;continue}if(!v(e,`Property`))return!0;let a=T(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Or=(e,t,n=!0,r)=>Dr(e,t,n,r,new Set),z=(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(v(a,`JSXSpreadAttribute`)){if(Or(a.argument,t,n))return null;continue}if(!v(a,`JSXAttribute`))continue;let o=Tt(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},kr=(e,t)=>e.some(e=>v(e,`JSXSpreadAttribute`)&&Or(e.argument,t,!1)),Ar=e=>{let t=M(e);return v(t,`UnaryExpression`)&&t.operator===`void`&&v(M(t.argument),`Literal`)},jr=(e,t={})=>{if(!e?.value)return!1;let n=R(e);if(n!==null)return n.trim().length>0;if(!v(e.value,`JSXExpressionContainer`))return!0;let r=M(e.value.expression);return v(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:v(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Ar(r)},Sre=(e,t,n)=>{let{openingElement:r}=e;if(r===n||sr(r,t))return!1;if(v(r.name,`JSXMemberExpression`)||v(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=z(r.attributes,`aria-label`,!1);if(jr(i,{booleanValuesRender:!0})||!i&&kr(r.attributes,`aria-label`))return!0;if(v(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=z(r.attributes,`alt`,!1);return jr(e)||!e&&kr(r.attributes,`alt`)}return Mr(e,t,n)},Cre=(e,t,n)=>{for(let r of e){if(v(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(v(r,`JSXElement`)){if(Sre(r,t,n))return!0;continue}if(v(r,`JSXFragment`)){if(Cre(r.children,t,n))return!0;continue}if(v(r,`JSXExpressionContainer`)){let e=M(r.expression);if(v(e,`JSXEmptyExpression`))continue;if(v(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Ar(e)||v(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},Mr=(e,t,n)=>{if(Cre(e.children,t,n))return!0;let r=z(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(jr(r)||!r&&kr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=z(e.openingElement.attributes,`children`,!1);return!!(jr(i)||!i&&kr(e.openingElement.attributes,`children`))},Nr=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},wre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Tre=e=>!!(v(e,`Identifier`)&&e.name===`undefined`||v(e,`Literal`)&&e.value===null),Pr=e=>Tre(e)?!0:v(e,`ConditionalExpression`)?Pr(e.consequent)||Pr(e.alternate):!1,Fr=e=>{if(!e.value)return!1;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!Pr(t):!0}return!0},Ere=e=>{if(!e)return!1;let t=nr(e);return t===`presentation`||t===`none`},Ir=e=>{if(!e.value)return!1;if(v(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:v(t,`Identifier`)&&t.name===`undefined`?!1:v(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Dre=(e,t,n)=>{let r=I(e.attributes,`alt`);if(r){Fr(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(Ere(I(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=I(e.attributes,`aria-label`);if(i){Ir(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=I(e.attributes,`aria-labelledby`);if(a){Ir(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.'})},Ore=(e,t,n,r)=>{let i=I(e.attributes,`aria-label`),a=I(e.attributes,`aria-labelledby`),o=i&&Ir(i)||a&&Ir(a),s=I(e.attributes,`title`),c=s?nr(s):null,l=!!(c&&c.length>0);o||l||Mr(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."})},kre=(e,t,n)=>{let r=I(e.attributes,`aria-label`),i=I(e.attributes,`aria-labelledby`);if(r&&Ir(r)||i&&Ir(i))return;let a=I(e.attributes,`alt`);(!a||!Fr(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`."})},Are=(e,t,n)=>{let r=I(e.attributes,`aria-label`),i=I(e.attributes,`aria-labelledby`);if(r&&Ir(r)||i&&Ir(i))return;let a=I(e.attributes,`alt`);(!a||!Fr(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`."})},jre=C({id:`alt-text`,diffScope:`jsx-element`,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=>{let t=Nr(e.settings);if(t&&hr(e))return Jt;let n=wre(e.settings),r=!n.elements||n.elements.includes(`img`),i=!n.elements||n.elements.includes(`object`),a=!n.elements||n.elements.includes(`area`),o=!n.elements||n.elements.includes(`input[type="image"]`),s=new Set(n.img??[]),c=new Set(n.object??[]),l=new Set(n.area??[]),u=new Set(n[`input[type="image"]`]??[]),d=zne(e.settings);return{JSXOpeningElement(n){if(t&&Er(n,e))return;if(!d&&v(n.name,`JSXIdentifier`)){let e=n.name.name;if(e!==`img`&&e!==`object`&&e!==`area`&&e.toLowerCase()!==`input`&&!s.has(e)&&!c.has(e)&&!l.has(e)&&!u.has(e))return}if(t&&hr(e,n)||t&&L(n.attributes))return;let f=ir(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&sr(n,e.settings))return;Dre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&v(t,`JSXElement`)&&Ore(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){kre(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=I(n.attributes,`type`);return e?nr(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&Are(n,n,e)}}}}),Mre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,Nre=[`click here`,`here`,`link`,`a link`,`learn more`],Pre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??Nre}},Fre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),Ire=e=>v(e,`Literal`)&&typeof e.value==`string`?e.value:v(e,`TemplateLiteral`)?it(e):null,Lre=(e,t)=>{let n=e.openingElement,r=I(n.attributes,`aria-label`);if(r){let e=nr(r);if(e!==null)return e}if(ir(n,t)===`img`){let e=I(n.attributes,`alt`);if(e){let t=nr(e);if(t!==null)return t}}if(sr(n,t))return null;let i=[];for(let n of e.children){let e=n;if(v(e,`JSXText`))i.push(e.value);else if(v(e,`JSXElement`)){let n=Lre(e,t);n!==null&&i.push(n)}else if(v(e,`JSXExpressionContainer`)){let t=Ire(e.expression);t!==null&&i.push(t)}}return i.join(``)},Rre=C({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(It(e.filename))return Jt;let t=Pre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(ir(t.openingElement,e.settings)!==`a`)return;let r=Lre(t,e.settings);if(r===null||r.trim().length===0)return;let i=Fre(r);n.has(i)&&e.report({node:t.openingElement.name,message:Mre(i)})}}}}),Lr=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(`.`)),Rr=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(`.`)),zre=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(`.`)),Bre=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),zr=new Set([`presentation`,`none`]),Vre=e=>e.trim().split(/\s+/).find(e=>Lr.has(e))===`link`,Hre=e=>{let t=e.parent;for(;t;){if(v(t,`JSXAttribute`)){let e=t.parent;return e&&v(e,`JSXOpeningElement`)?cr(e.name)===`Trans`:!1}t=t.parent??null}return!1},Ure=e=>e.children.some(e=>{if(!v(e,`JSXElement`))return!1;let t=e,n=cr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!I(t.openingElement.attributes,`aria-hidden`)}),Br=C({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=Nr(e.settings),n=It(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(ir(i,e.settings)!==`a`)return;let a=I(i.attributes,`href`),o=I(i.attributes,`role`),s=o?on(o,e.scopes):[],c=s===null||s.some(e=>Vre(e));if(!(t&&!a&&!c)&&!sr(i,e.settings)&&!(Mr(r,e.settings)||!t&&Ure(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(I(i.attributes,e))return;t&&Hre(r)||e.report({node:i.name,message:"Blind users can't follow this link because screen readers announce nothing, so add visible text, `aria-label`, or `aria-labelledby`."})}}}}}),Vr=[`href`],Hr=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return Vr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return Vr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?Vr:r},Ur="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Wr="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Gr="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Wre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Hr(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Kr=(e,t)=>e.aspects===null||e.aspects.has(t),Gre=e=>{let t=e.parent;if(!t||!v(t,`JSXElement`))return!1;let n=t.parent;if(!n||!v(n,`JSXElement`))return!1;let r=cr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Kre=e=>!!I(e.attributes,`role`)&&!!I(e.attributes,`tabindex`)&&(!!I(e.attributes,`onkeydown`)||!!I(e.attributes,`onkeyup`)),qr=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},qre=e=>{if(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(t,`Identifier`)&&t.name===`undefined`||v(t,`Literal`)&&t.value===null)return!0}return!!v(e,`JSXFragment`)},Jre=e=>{let t=e.value;if(!t)return`nullish`;if(v(t,`Literal`))return typeof t.value==`string`&&qr(t.value,new Set)?`invalid`:`valid`;if(v(t,`JSXExpressionContainer`)){let e=t.expression;return v(e,`Identifier`)&&e.name===`undefined`?`nullish`:v(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&qr(e.value,new Set)?`invalid`:`valid`:v(e,`TemplateLiteral`)&&e.expressions.length===0&&qr(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return v(t,`JSXFragment`)?`nullish`:`valid`},Jr=C({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=Wre(e.settings),n=Nr(e.settings),r=zne(e.settings),i=It(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=ir(a,e.settings),s=cr(a.name);if(o!==`a`&&(n||!s||!t.components.has(s))||n&&!r&&o!==`a`)return;if(!n){let n=!1,r=!1;for(let e of t.hrefAttributeNames){let t=I(a.attributes,e);if(!t)continue;let i=Jre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=L(a.attributes),o=!!I(a.attributes,`onClick`);if(!n){!i&&Kr(t,`noHref`)&&(!o||!Kr(t,`preferButton`))&&e.report({node:a.name,message:Ur}),!i&&o&&Kr(t,`preferButton`)&&e.report({node:a.name,message:Gr});return}r&&(o&&Kr(t,`preferButton`)?e.report({node:a.name,message:Gr}):Kr(t,`invalidHref`)&&e.report({node:a.name,message:Wr}));return}let c;for(let e of t.hrefAttributeNames)if(c=I(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Wr});return}let n=on(c,e.scopes);if(n===null?qre(c.value):n.length>0&&n.every(e=>qr(e,t.validHrefs))){let t=!!I(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Gr:Wr})}return}L(a.attributes)||Gre(a)||Kre(a)||e.report({node:a.name,message:Ur})}}}}),Yr=C({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(It(e.filename))return Jt;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(ir(n,e.settings)!==`a`)return;let r=null;for(let t of Hr(e.settings))if(r=z(n.attributes,t,!1),r)break;if(!r)return;let i=R(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=ane({configuredRootDirectory:gt(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.`})}}}}),Yre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Xr=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(`.`)),Zr=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(`.`)),Qr=e=>e.kind!==`const`||!v(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Xre=new Set([``,`plaintext-only`,`true`]),$r={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},ei={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},ti={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},ni={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Zre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),ri=(e,t,n)=>{let r=M(e);if(v(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?$r:ei;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Xre.has(e)?$r:e===`false`?ei:ti}return ti}if(v(r,`ConditionalExpression`))return Zre(ri(r.consequent,t,n),ri(r.alternate,t,n));if(v(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return ni;let i=Qr(e);if(!i)return ni;let a=new Set(n);return a.add(e.id),ri(i,t,a)}return ni},ii=(e,t)=>{let n=I(e.attributes,`contenteditable`);return n?n.value?v(n.value,`Literal`)?ri(n.value,t,new Set):v(n.value,`JSXExpressionContainer`)?ri(n.value.expression,t,new Set):ni:$r:null},Qre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(v(r,`JSXElement`)){let e=r.openingElement;if(!Xr.has(ir(e,n)))return!1;let i=ii(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)=>ii(e,t)?.canBeEnabled?!Qre(e,t,n):!1,oi=(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=I(t.attributes,`type`);if(e){let t=nr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return I(t.attributes,`href`)!==void 0;case`img`:return I(t.attributes,`usemap`)!==void 0;default:return!1}},si=e=>{if(!e)return null;if(v(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(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(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(v(t,`UnaryExpression`)&&t.operator===`-`&&v(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(v(t,`TemplateLiteral`)){let e=it(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(v(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return v(t.test,`Literal`)?si(e(t.test.value?t.consequent:t.alternate)):si(e(t.consequent))}}return null},ci="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",li=C({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(!I(t.attributes,`aria-activedescendant`))return;let n=ir(t,e.settings);if(!Xr.has(n))return;let r=I(t.attributes,`tabIndex`);if(r){let n=si(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:ci});return}oi(n,t)||ai(t,e.scopes,e.settings)||e.report({node:t.name,message:ci})}})}),$re=[`aria-label`,`aria-labelledby`,`alt`,`title`],ui=(e,t)=>{let n=z(e.attributes,t,!1);if(!n)return!1;let r=R(n);return r===null?null:r.trim().length>0},di=C({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(L(n.attributes))return;if(ui(n,`aria-brailleroledescription`)===!0&&ui(n,`aria-roledescription`)===!1){let t=z(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(ui(n,`aria-braillelabel`)!==!0||Mr(t,e.settings)||$re.map(e=>ui(n,e)).some(e=>e===!0||e===null))return;let r=z(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.`})}})}),fi=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`}]]),eie=e=>fi.has(e),tie=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.`,pi=C({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(!v(t.name,`JSXIdentifier`))return;let n=Tt(t.name);!n||!n.startsWith(`aria-`)||eie(n)||e.report({node:t.name,message:tie(n)})}})}),nie={"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`]}},rie=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(`, `)}`}},mi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${rie(t)}.`,iie=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}},hi=e=>{if(v(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(v(e,`TemplateLiteral`)){let t=it(e);return t===null?null:t.length>0}if(v(e,`UnaryExpression`)&&e.operator===`!`){let t=hi(e.argument);return t===null?null:!t}return null},aie=e=>{if(v(e,`Literal`))return!0;if(v(e,`JSXExpressionContainer`)){let t=e.expression;return v(t,`Literal`)?t.value!==null:v(t,`TemplateLiteral`)?!0:v(t,`UnaryExpression`)&&t.operator===`!`?hi(t.argument)!==null:!1}return!1},gi=(e,t)=>{if(v(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(v(e,`JSXExpressionContainer`)){let n=e.expression;if(v(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(v(n,`TemplateLiteral`))return it(n)?.toLowerCase()??null;if(t&&v(n,`UnaryExpression`)&&n.operator===`!`){let e=hi(n.argument);return e===null?null:String(!e)}}return null},oie=e=>{if(!v(e,`JSXExpressionContainer`))return!1;let t=e.expression;return v(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},sie=(e,t)=>{if(!aie(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=gi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=gi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return oie(t)?!0:gi(t,!1)!==null;case`integer`:case`number`:{let e=gi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(v(t,`JSXExpressionContainer`)){let e=t.expression;if(v(e,`Literal`)&&typeof e.value==`number`||v(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&v(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(oie(t))return!0;let e=gi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=gi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=gi(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))}}},cie=C({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(!v(t.name,`JSXIdentifier`))return;let n=Tt(t.name);if(!n)return;let r=n.toLowerCase(),i=nie[r];if(i){if(!t.value){iie(i)||e.report({node:t,message:mi(r,i)});return}sie(i,t.value)||e.report({node:t,message:mi(r,i)})}}})}),_i=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,lie=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Nr(e)}},uie=C({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=lie(e.settings);return{JSXOpeningElement(n){let r=I(n.attributes,`role`);if(!r)return;let i=ir(n,e.settings);if(t.ignoreNonDOM&&!Xr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:_i(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Lr.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:_i(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:_i(``)});return}if(v(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:_i(``)});return}a([o.value]);return}if(v(o,`JSXExpressionContainer`)){let t=o.expression;if(v(t,`Literal`)&&t.value===null){e.report({node:r,message:_i(``)});return}if(v(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:_i(``)});return}let n=on(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:_i(``)})}}}}),die=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,fie=C({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=ir(t,e.settings);if(Yre.has(n))for(let r of t.attributes){if(!v(r,`JSXAttribute`)||!v(r.name,`JSXIdentifier`))continue;let t=Tt(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:die(n,t)})}}})}),vi=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t||v(e,`FunctionDeclaration`)||v(e,`FunctionExpression`)||v(e,`ArrowFunctionExpression`))return!1;if(v(e,`AwaitExpression`))return t=!0,!1}),t},yi=e=>{let t=e;v(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!v(n,`Property`)||n.value!==t||!n.parent||!v(n.parent,`ObjectPattern`)?null:T(n,{allowComputedString:!0})},pie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),bi=(e,t)=>{let n=M(e);return v(n,`Literal`)?!0:v(n,`Identifier`)?t.has(n.name):v(n,`BinaryExpression`)||v(n,`LogicalExpression`)?bi(n.left,t)&&bi(n.right,t):v(n,`UnaryExpression`)?n.operator!==`delete`&&bi(n.argument,t):v(n,`ConditionalExpression`)?bi(n.test,t)&&bi(n.consequent,t)&&bi(n.alternate,t):v(n,`TemplateLiteral`)?n.expressions.every(e=>bi(e,t)):!1},xi=(e,t,n)=>{let r=M(e);if(!v(r,`CallExpression`)||!r.arguments.every(e=>!v(e,`SpreadElement`)&&bi(e,t)))return!1;let i=M(r.callee);if(!v(i,`MemberExpression`)||N(i)!==`resolve`)return!1;let a=M(i.object);return v(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},mie=(e,t,n)=>!v(e,`ExpressionStatement`)||!v(e.expression,`AwaitExpression`)?!1:xi(e.expression.argument,t,n),hie=(e,t)=>{if(!v(e,`ExpressionStatement`)||!v(e.expression,`AssignmentExpression`)||!pie.has(e.expression.operator))return!1;let n=M(e.expression.left);if(!v(n,`MemberExpression`)||N(n)===null)return!1;let r=M(n.object);return v(r,`Identifier`)&&t.has(r.name)&&v(M(e.expression.right),`Literal`)},gie=(e,t)=>{if(!A(e))return!1;let n=new Set;for(let t of e.params){if(!v(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!v(e.body,`BlockStatement`))return xi(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(v(r,`ReturnStatement`)&&r.argument&&xi(r.argument,n,t))}if(!v(e.body,`BlockStatement`))return bi(e.body,n);let r=e.body.body;for(let e=0;e<r.length;e++){let i=r[e],a=e===r.length-1;if(!mie(i,n,t)&&!(v(i,`ExpressionStatement`)&&bi(i.expression,n)))return hie(i,n)?a:!v(i,`ReturnStatement`)||!a?!1:!i.argument||bi(i.argument,n)||xi(i.argument,n,t)}return!0},_ie=(e,t)=>v(e,`Property`)?Ce(e,t,{allowConstTemplateLiteral:!0}):null,vie=(e,t)=>v(e,`MemberExpression`)?Ce(e,t,{allowConstTemplateLiteral:!0}):null,Si=(e,t,n,r,i)=>{let a=M(e);if(v(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||b(e,n,r)||ae(a,t,r)?null:(i.add(e.id),Si(e.initializer,t,n,r,i))}if(!v(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!v(e,`Property`)||e.kind!==`init`)return null;let n=_ie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!v(o,`Property`))return null;let s=M(o.value);return A(s)?s:Ci(s,n,r,i)},Ci=(e,t,n,r)=>{let i=M(e);if(A(i))return i;if(v(i,`MemberExpression`)){let e=vie(i,n);return e===null?null:Si(M(i.object),e,t,n,r)}if(!v(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||b(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=M(a.initializer),s=yi(a.bindingIdentifier);return s===null?A(o)?o:a.kind===`const`?Ci(o,t,n,r):null:Si(o,s,t,n,r)},wi=(e,t)=>{let n=M(e);return!v(n,`CallExpression`)||de(n,t)?null:Ci(n.callee,n,t,new Set)},Ti=(e,t)=>{let n=wi(e,t);return n&&gie(n,t)?n:null},B=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},yie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=e.arguments.findIndex(e=>e===t);if(r<0||e.arguments.some(e=>v(e,`SpreadElement`)))return!1;let i=wi(e,n);if(!i||!A(i)||i.generator)return!1;let a=i.params[r];if(!v(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||o.references.some(e=>e.flag!==`read`))return!1;let s=i.body,c=!v(s,`BlockStatement`);if(v(s,`BlockStatement`)){let e=s.body[0];if(v(e,`ReturnStatement`)){if(!e.argument)return!1;s=e.argument,c=!0}else if(v(e,`VariableDeclaration`)&&e.declarations.length===1){let t=e.declarations[0].init;if(!t)return!1;s=t}else if(v(e,`ExpressionStatement`))s=e.expression;else return!1}if(s=M(s),v(s,`AwaitExpression`))s=M(s.argument);else if(!c)return!1;if(!v(s,`CallExpression`))return!1;let l=s.callee;if(!v(l,`MemberExpression`)||!v(l.object,`Identifier`)||l.object.name!==`Promise`||!n.isGlobalReference(l.object))return!1;let u=N(l);if(u!==`all`&&u!==`allSettled`)return!1;let d=s.arguments[0];if(!d)return!1;let f=M(d);return v(f,`Identifier`)&&n.symbolFor(f)===o},Ei=e=>!!(e&&(v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`))),bie=(e,t)=>{if(!v(e,`LogicalExpression`))return!1;let n=S(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?B(t,n):!!(e.operator===`||`&&r&&B(t,r));return v(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):v(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(v(r,`WhileStatement`)||v(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||v(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?B(t,r.body):!1},Di=(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(v(c,`LogicalExpression`)&&c.right===s||v(c,`ConditionalExpression`)&&c.test!==s||v(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(v(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||v(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!B(t,e)&&!bie(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)},V=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e)return t.scopes.isGlobalReference(r)?`global:${r.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let i=e.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=v(i,`Property`)?T(i):null;if(s&&v(a,`ObjectPattern`)&&v(o,`VariableDeclarator`)&&o.id===a){let r=V(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?M(e.initializer):null;return e.kind===`const`&&c&&(v(c,`Identifier`)||v(c,`MemberExpression`))?V(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(v(r,`MemberExpression`)){let e=T(r,{allowComputedString:!0});if(!e)return null;let i=V(r.object,t,n);return i?`${i}.${e}`:null}if(v(r,`ThisExpression`))return`this`;if(v(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(A(r)){let e=F(r);return e===null?null:`function:${e}`}return null},xie=new Set(gr),Sie=new Set([`push`,`unshift`]),Cie=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),wie=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),Tie=e=>v(e,`Identifier`)?e.name:v(e,`MemberExpression`)&&v(e.property,`Identifier`)?e.property.name:null,Oi=e=>v(e,`ForStatement`)||v(e,`ForInStatement`)||v(e,`ForOfStatement`)||v(e,`WhileStatement`)||v(e,`DoWhileStatement`)?e.body:null,ki=(e,t=!1,n)=>{let r=null;return s(e,i=>{if(r||i!==e&&A(i)||t&&i!==e&&xie.has(i.type))return!1;v(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Ai=e=>{if(v(e,`Identifier`))return Sr.has(e.name);if(v(e,`MemberExpression`)&&v(e.property,`Identifier`)){let t=M(e.object);return e.property.name===`check`&&v(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:Sr.has(e.property.name)}return!1},Eie=(e,t)=>{if(v(e.callee,`Identifier`)&&Cie.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!Cie.has(e.callee.property.name))return!1;let n=M(e.callee.object);return v(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Die=(e,t,n=new Set)=>{if(!A(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return s(e.body,a=>{if(a!==e.body&&A(a))return!1;if(v(a,`NewExpression`)&&v(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=S(a),n=e.parent,i=v(n,`ReturnStatement`)&&n.argument===e||v(n,`AwaitExpression`)&&n.argument===e||A(n)&&n.body===e,o=a.arguments[0];i&&A(o)&&s(o.body,e=>{if(e!==o.body&&A(e))return!1;v(e,`CallExpression`)&&Eie(e,t)&&(r=!0)})}if(!v(a,`CallExpression`)||Eie(a,t))return;let o=wi(a,t.scopes);if(o!==null){Die(o,t,n)&&(i=!0);return}Ai(a.callee)&&(i=!0)}),r||i},Oie=(e,t)=>{if(!v(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!v(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(v(e,`SpreadElement`))return!1;let t=M(e);return v(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=wi(n,t.scopes);if(r!==null&&Die(r,t))return!0;if(Ti(n,t.scopes)!==null)return!1;let i=Tie(n.callee);return r!==null&&i&&wie.has(i)?!1:Ai(n.callee)},kie=(e,t)=>v(e,`AwaitExpression`)&&!!e.argument&&de(e.argument,t.scopes),Aie=new Set([`all`,`allSettled`,`race`,`any`]),ji=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return!v(t,`MemberExpression`)||t.computed||!v(t.object,`Identifier`)||t.object.name!==`Promise`||!v(t.property,`Identifier`)?!1:Aie.has(t.property.name)},jie=e=>v(e,`AwaitExpression`)?ji(e.argument):!1,Mie=e=>{if(!v(e,`AwaitExpression`))return!1;let t=e.argument;if(!v(t,`NewExpression`)||!v(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(v(n,`Identifier`)&&Sr.has(n.name))return!0;if(!Ei(n))return!1;let r=n.params?.[0],i=v(r,`Identifier`)?r.name:null,a=!1;return s(n.body,e=>{if(a)return!1;if(v(e,`CallExpression`)&&Ai(e.callee)||i&&v(e,`AssignmentExpression`)&&v(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Nie=e=>{let t=e;for(;v(t,`MemberExpression`);)t=t.object;return v(t,`Identifier`)?t.name:null},Pie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Fie=(e,t)=>!!t&&e.references.some(e=>{let n=S(e.identifier),r=n.parent;return v(r,`ReturnStatement`)&&r.argument===n&&j(r)===t}),Mi=(e,t,n)=>{if(v(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(v(e,`ObjectPattern`)){for(let r of e.properties??[])v(r,`Property`)&&r.value?Mi(r.value,t,n):v(r,`RestElement`)&&r.argument&&Mi(r.argument,t,n);return}if(v(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Mi(r,t,n);return}v(e,`AssignmentPattern`)&&e.left&&Mi(e.left,t,n)},Ni=(e,t)=>{let n=new Set;return s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},Iie=(e,t)=>{let n=new Set;if(v(e,`ForOfStatement`)||v(e,`ForInStatement`))if(v(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Mi(r.id,t,n);else Mi(e.left,t,n);return n},Lie=(e,t,n=null)=>{let r=new Set,i=[];s(e,a=>{if(a!==e&&A(a))return!1;if(v(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Mi(a.id,t,e),n&&B(n,a.init)||!n&&vi(a.init))for(let t of e)r.add(t);let o=Ni(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(v(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Mi(a.left,t,e),n&&B(n,a.right)||!n&&vi(a.right))for(let t of e)r.add(t);let o=Ni(a.right,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o})}});let a=!0;for(;a;){a=!1;for(let{declaredSymbolId:e,referencedSymbolIds:t}of i)if(!r.has(e)){for(let n of t)if(r.has(n)){r.add(e),a=!0;break}}}return r},Rie=e=>v(e,`Identifier`)?e:v(e,`AssignmentPattern`)&&v(e.left,`Identifier`)?e.left:null,zie=(e,t)=>{if(!v(e,`AwaitExpression`))return!1;let n=e.argument;if(!v(n,`CallExpression`))return!1;let r=wi(n,t.scopes);if(!A(r))return!1;let i=j(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Lie(r.body,t.scopes),c=new Set;for(let[e,a]of r.params.entries()){let r=Rie(a);if(!r)continue;let o=n.arguments[e];if(!v(o,`Identifier`))continue;let s=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);s&&l&&(Fie(l,i)||l.id===s.id)&&c.add(s.id)}let l=!1;return s(r.body,e=>{if(l||e!==r.body&&A(e))return!1;if(!v(e,`CallExpression`))return;let n=e.callee;if(!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)||!Sie.has(n.property.name))return;let s=!1;for(let n of e.arguments??[]){if(vi(n)){s=!0;break}let e=Ni(n,t.scopes);for(let t of e)if(o.has(t)){s=!0;break}if(s)break}if(!s)return;let u=n.object;for(;v(u,`MemberExpression`);)u=u.object;if(!v(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(c.has(d.id)||!Pie(d.scope,a)&&Fie(d,i)))return l=!0,!1}),l},Bie=e=>{if(!v(e,`AwaitExpression`))return null;let t=M(e.argument);return v(t,`CallExpression`)&&v(M(t.callee),`MemberExpression`)?t:null},Vie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=Iie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ni(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Hie=e=>{if(!v(e,`CallExpression`))return null;let t=M(e.callee);return v(t,`MemberExpression`)?t.object:null},Pi=e=>{let t=M(e);for(;v(t,`MemberExpression`);)t=M(t.object);return t},Uie=(e,t,n,r)=>{let i=Oi(n);if(!i)return!1;let a=Pi(e);if(v(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||B(e.bindingIdentifier,n))return!1}else if(!v(a,`ThisExpression`))return!1;let o=!1;return s(i,e=>{if(o||e!==i&&A(e))return!1;let n=null;if(v(e,`AssignmentExpression`)?n=e.left:(v(e,`UpdateExpression`)||v(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&V(n,r)===t)return o=!0,!1}),!o},Wie=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=Hie(e);return!r||V(r,n)!==t?!1:!v(S(e).parent,`ExpressionStatement`)},Gie=(e,t,n,r)=>{let i=Oi(t);if(!i)return!1;let a=!1,o=!1;return s(i,t=>{if(a&&o||t!==i&&A(t))return!1;B(t,e)||Wie(t,n,r)&&(Di(t,e,r)&&(a=!0),Di(e,t,r)&&(o=!0))}),a&&o},Kie=(e,t)=>{let n=j(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||j(e.identifier)!==n)return!1;let r=S(e.identifier),i=r.parent;if(!v(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=M(i.callee);return v(a,`MemberExpression`)?v(Pi(a.object),`ThisExpression`):!1})},qie=(e,t,n)=>{let r=new Set;return s(t,i=>{if(i!==t&&A(i))return!1;let a=null,o=null;v(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):v(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!B(e,o))&&Mi(a,n.scopes,r)}),r},Jie=(e,t,n)=>{let r=M(e);if(!v(r,`MemberExpression`))return!1;let i=Pi(r);if(!v(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Yie=(e,t,n)=>{let r=Oi(t);if(!r)return!1;let i=qie(e,r,n);if(i.size===0)return!1;let a=!1;return s(r,o=>{if(a||o!==r&&A(o))return!1;if(!v(o,`CallExpression`)||!Di(e,o,n))return;let s=o.callee;if(!v(s,`MemberExpression`)||s.computed||!v(s.property,`Identifier`)||!Sie.has(s.property.name))return;let c=Pi(s.object);if(!v(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||B(l.bindingIdentifier,t)||!Kie(l,t))){for(let e of o.arguments)if(Jie(e,i,n))return a=!0,!1}}),a},Xie=(e,t,n)=>{let r=Bie(e);if(!r||!Vie(r,t,n))return!1;let i=Hie(r);if(!i)return!1;let a=V(i,n);return!a||!Uie(i,a,t,n)?!1:Gie(e,t,a,n)||v(Pi(i),`ThisExpression`)&&v(M(i),`MemberExpression`)&&Yie(e,t,n)},Zie=(e,t)=>kie(e,t)||Oie(e,t)||jie(e)||Mie(e)||zie(e,t),Fi=(e,t)=>{if(v(e,`Identifier`))t.add(e.name);else if(v(e,`ObjectPattern`))for(let n of e.properties??[])v(n,`Property`)&&n.value?Fi(n.value,t):v(n,`RestElement`)&&n.argument&&Fi(n.argument,t);else if(v(e,`ArrayPattern`))for(let n of e.elements??[])n&&Fi(n,t);else v(e,`AssignmentPattern`)&&e.left&&Fi(e.left,t)},Qie=new Set([`push`,`unshift`,`splice`]),Ii=(e,t)=>{let n=[];s(e,t=>{if(t!==e&&A(t))return!1;if(!v(t,`VariableDeclarator`)||!t.init||!v(t.id,`Identifier`))return;let r=new Set;mt(t.init,r),n.push({declaredName:t.id.name,referencedNames:r})});let r=!0;for(;r;){r=!1;for(let{declaredName:e,referencedNames:i}of n)if(!t.has(e)){for(let n of i)if(t.has(n)){t.add(e),r=!0;break}}}},$ie=e=>{let t=new Set,n=new Set;if(s(e,r=>{if(r!==e&&A(r))return!1;if(v(r,`AssignmentExpression`)&&r.left){Fi(r.left,t);return}if(v(r,`AwaitExpression`)&&r.argument){mt(r.argument,n);return}if(!v(r,`CallExpression`))return;let i=r.callee;v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&Qie.has(i.property.name)&&v(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;Ii(e,t);for(let e of t)if(n.has(e))return!0;return!1},eae=new Set([...gr,`SwitchStatement`]),tae=e=>{let t=new Set;return s(e,n=>{if(n!==e&&A(n))return!1;v(n,`VariableDeclarator`)&&n.id&&vi(n.init)&&Fi(n.id,t),v(n,`AssignmentExpression`)&&n.left&&vi(n.right)&&Fi(n.left,t)}),t},Li=(e,t)=>{if(!e)return!1;if(vi(e))return!0;let n=new Set;mt(e,n);for(let e of n)if(t.has(e))return!0;return!1},nae=(e,t,n)=>{if(e.label)return v(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(eae.has(r.type))return!1;r=r.parent}return!0},rae=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Ri=e=>{if(!e)return!1;if(rae.has(e.type))return!0;if(v(e,`BlockStatement`)){let t=e.body??[];return Ri(t[t.length-1])}return!1},iae=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(v(r,`IfStatement`)&&Li(r.test,n)&&(Ri(r.consequent)||Ri(r.alternate)))return!0}return!1},aae=(e,t,n)=>{if(v(e,`ReturnStatement`)&&e.argument&&Li(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(v(a,`IfStatement`)){if(Li(a.test,n))return!0;r=!0}if(v(a,`TryStatement`)&&a.handler&&i===a.block&&vi(a.block)&&!r||v(a,`SwitchStatement`)&&Li(a.discriminant,n)||v(a,`BlockStatement`)&&iae(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},oae=(e,t)=>{let n=tae(e);Ii(e,n);let r=!1;return s(e,i=>{if(r||i!==e&&A(i))return!1;if((v(i,`ReturnStatement`)||v(i,`BreakStatement`)&&nae(i,e,t))&&aae(i,e,n))return r=!0,!1}),r},sae=new Set([...Qie,`pop`,`shift`]),cae=e=>{let t=new Set;return s(e,n=>{if(n!==e&&A(n))return!1;if(v(n,`AssignmentExpression`)&&n.left){Fi(n.left,t);let e=Nie(n.left);e&&t.add(e);return}if(!v(n,`CallExpression`))return;let r=n.callee;if(v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&sae.has(r.property.name)){let e=Nie(r.object);e&&t.add(e)}}),t},lae=(e,t)=>{if(!e)return!1;let n=new Set;if(mt(e,n),n.size===0)return!1;let r=cae(t),i=tae(t);Ii(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},uae=e=>{let t=e.parent;return v(t,`LabeledStatement`)&&v(t.label,`Identifier`)?t.label.name:null},dae=(e,t)=>{let n=!1;return s(e,e=>{if(n||Ei(e)||v(e,`FunctionDeclaration`))return!1;if(v(e,`AwaitExpression`)&&Zie(e,t))return n=!0,!1}),n},fae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),pae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),mae=e=>{let t=e;for(;;){t=S(t);let e=t.parent;if(!e)return t;if(v(e,`SpreadElement`)||v(e,`ArrayExpression`)){t=e;continue}if(v(e,`LogicalExpression`)){t=e;continue}if(v(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(v(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(v(n,`CallExpression`)&&n.callee===e&&!e.computed&&v(e.property,`Identifier`)&&pae.has(e.property.name)){t=n;continue}}return t}},zi=e=>{let t=e;for(;t.parent&&!A(t);)t=t.parent;return t},hae=(e,t)=>{let n=!1;return s(t,t=>{if(n)return!1;if(!ji(t))return;let r=new Set;for(let e of t.arguments??[])mt(e,r);if(r.has(e))return n=!0,!1}),n},gae=(e,t)=>{let n=mae(e),r=n.parent;if(v(r,`CallExpression`)&&ji(r)&&(r.arguments??[]).some(e=>e===n)||v(r,`CallExpression`)&&yie(r,n,t.scopes))return!0;let i=null;return v(r,`VariableDeclarator`)&&r.init===n&&v(r.id,`Identifier`)?i=r.id.name:v(r,`AssignmentExpression`)&&r.right===n&&v(r.left,`Identifier`)&&(i=r.left.name),!i||!r?!1:hae(i,zi(r))},_ae=e=>{let t=zi(e);if(!A(t))return!1;let n=null;return v(t,`FunctionDeclaration`)&&v(t.id,`Identifier`)?n=t.id.name:v(t.parent,`VariableDeclarator`)&&v(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:hae(n,zi(t.parent))},vae=C({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:`Consider concurrent calls only for independent asynchronous work. Shared queues or synchronous work may not benefit. Preserve resource limits, transaction ordering, and failure/cancellation semantics; observe all callback promises.`,create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!ki(i,!0)||dae(i,e)||(v(n,`WhileStatement`)||v(n,`DoWhileStatement`))&&lae(n.test,i)||$ie(i)||oae(i,uae(n))||_ae(n))return;let a=ki(i,!0,t=>Xie(t,n,e));a&&e.report({node:a,message:`This ${r} waits before starting the next iteration. If iterations perform independent asynchronous work, consider bounded concurrency; await syntax alone does not establish a speedup.`})};return{ImportDeclaration(e){Cr(e.source?.value)&&(t=!0)},ForStatement(e){n(e,`for-loop`)},ForInStatement(e){n(e,`for…in loop`)},ForOfStatement(e){e.await||n(e,`for…of loop`)},WhileStatement(e){n(e,`while-loop`)},DoWhileStatement(e){n(e,`do-while loop`)},CallExpression(n){if(t||!v(n.callee,`MemberExpression`)||!v(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!fae.has(r))return;let i=n.arguments?.[0];if(!i||!Ei(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&gae(n,e))return;let o=ki(a);if(o){let t=r===`forEach`?"Async callback in .forEach returns a promise that .forEach ignores. Use a `for…of` loop to await each operation, or collect and observe promises when concurrent work is safe.":`Async callback in .${r} returns a promise that the array method does not await. Check that its consumer observes completion and handles rejections; callbacks may already overlap.`;e.report({node:o,message:t})}}}}}),Bi=(e,t)=>{if(e){if(v(e,`AssignmentPattern`)){mt(e.right,t),Bi(e.left,t);return}if(v(e,`RestElement`)){Bi(e.argument,t);return}if(v(e,`ArrayPattern`)){for(let n of e.elements??[])Bi(n,t);return}if(v(e,`ObjectPattern`))for(let n of e.properties??[])v(n,`RestElement`)?Bi(n.argument,t):v(n,`Property`)&&(n.computed&&mt(n.key,t),Bi(n.value,t))}},yae=e=>v(e,`ExpressionStatement`)?v(e.expression,`AwaitExpression`):!1,bae=e=>v(e,`ReturnStatement`)||v(e,`ThrowStatement`)||v(e,`ContinueStatement`)||v(e,`BreakStatement`),xae=e=>{if(!v(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(bae(t))return!0;if(!v(t,`BlockStatement`))return!1;for(let e of t.body??[])if(bae(e))return!0;return!1},Vi=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Sae=(e,t)=>{v(e,`VariableDeclarator`)&&(mt(e.init,t),Bi(e.id,t))},Cae=(e,t)=>{if(!v(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(!v(r,`VariableDeclarator`))continue;if(vi(r.init)||vi(r.id)){n=!0;let e=t.size;xt(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Sae(r,e),!Vi(e,t))continue;let a=t.size;xt(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},wae=new Set(`cancelled.canceled.isCancelled.isCanceled.aborted.isAborted.disposed.isDisposed.destroyed.isDestroyed.stopped.isStopped.mounted.isMounted.unmounted.isUnmounted.active.isActive.stale.isStale.live.isLive.ignore.signal.abortSignal.abortController`.split(`.`)),Tae=e=>{let t=!1;return s(e,e=>{if(t)return!1;if(!v(e,`MemberExpression`)||e.computed||!v(e.property,`Identifier`)||e.property.name!==`current`||!v(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Eae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Dae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Eae)if(t.includes(e))return!0;return!1},Oae=e=>{let t=new Set;return s(e,e=>{(v(e,`Identifier`)||v(e,`PrivateIdentifier`))&&t.add(e.name)}),t},kae=e=>{if(!e)return!1;let t=new Set;mt(e,t);for(let e of t)if(wae.has(e))return!0;for(let t of Oae(e))if(wae.has(t)||Dae(t))return!0;return Tae(e)},Aae=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t)return!1;if(v(e,`CallExpression`))return v(e.callee,`ArrowFunctionExpression`)||v(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(v(e,`ThisExpression`)||v(e,`PrivateIdentifier`))return t=!0,!1}),t},jae=e=>{if(!e)return!1;let t=M(e);if(!v(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=M(e);return v(t,`Literal`)||v(t,`TemplateLiteral`)||v(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Mae=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`parameter`||i.kind===`const`&&i.initializer)&&un(i.scope,n))},Nae=(e,t,n)=>{let r=M(e);if(v(r,`MemberExpression`))return!0;if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!un(i.scope,n))},Pae=(e,t,n)=>{let r=M(e);return!jae(r)||!v(r,`BinaryExpression`)?!1:Mae(r.left,t,n)&&Nae(r.right,t,n)||Mae(r.right,t,n)&&Nae(r.left,t,n)},Fae=(e,t,n)=>{if(!n||!e)return!1;let r=M(e);if(!v(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=M(e);if(v(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Pae(r,t,n))return!1}return!0},Iae=e=>{if(!e)return!1;let t=!1;return s(e,e=>{if(t||A(e)||v(e,`ThrowStatement`))return!1;if(v(e,`CallExpression`)||v(e,`NewExpression`)||v(e,`AssignmentExpression`)||v(e,`UpdateExpression`))return t=!0,!1}),t},Lae=(e,t)=>{if(!e)return!1;let n=new Set;if(mt(e,n),n.size===0)return!1;let r=j(t);if(!r||!A(r)||!r.body)return!1;let i=!1;return s(r.body,e=>{if(i)return!1;let t=null;if(v(e,`AssignmentExpression`)?t=e.left:v(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;xt(t,r),v(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Rae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(v(n,`VariableDeclaration`)?Cae(n,r).didIntroduceAwait&&(i=!0):yae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(yae(t)){a=!0,o++;continue}if(!v(t,`VariableDeclaration`))break;let n=Cae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},zae=C({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 t=t=>{for(let n=0;n<t.length-1;n++){let r=Rae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!xae(i)||!v(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(mt(i.test,a),Vi(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=j(i),s=o?e.scopes.ownScopeFor(o):null;if(kae(i.test)||Aae(i.test)||jae(i.test)||Fae(i.test,e.scopes,s)||Lae(i.test,i)||Iae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(mt(i.consequent,c),Vi(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}},n=e=>{e&&s(e,e=>{if(A(e))return!1;v(e,`BlockStatement`)?t(e.body??[]):v(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{A(e)&&e.async&&v(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Bae=(e,t,n)=>{let r=new Set;for(let e of t)s(e,e=>{if(!v(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return s(e,e=>{if(i||!v(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},Vae=e=>v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`cookies`,Hi=e=>Vae(e)?!0:v(e,`AwaitExpression`)&&e.argument?Vae(e.argument):!1,Hae=new Set([`headers`,`searchParams`]),Uae=e=>v(e,`AwaitExpression`)&&e.argument?e.argument:e,Ui=e=>v(e,`NewExpression`)&&v(e.callee,`Identifier`)&&St.has(e.callee.name),Wi=e=>!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.object,`Identifier`)||!v(e.callee.property,`Identifier`)?!1:Xee.has(e.callee.object.name)&&Zee.has(e.callee.property.name),Gi=e=>v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`headers`,Ki=new Set([`createHash`,`createHmac`,`createSign`,`createVerify`,`createCipheriv`,`createDecipheriv`]),qi=e=>v(e,`CallExpression`)?v(e.callee,`Identifier`)?Ki.has(e.callee.name):v(e.callee,`MemberExpression`)&&v(e.callee.property,`Identifier`)&&Ki.has(e.callee.property.name):!1,Ji=e=>v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&Hae.has(e.property.name),Wae=e=>{let t=Uae(e);return!!(Ui(t)||Wi(t)||Ji(t)||Gi(t)||qi(t))},Gae=(e,t)=>!!(Ui(e)||Wi(e)||Ji(e)||Gi(e)||qi(e)||v(e,`Identifier`)&&t.has(e.name)),Kae=(e,t)=>{let n=e;for(;n;){if(Gae(n,t))return!0;if(v(n,`MemberExpression`)){n=n.object;continue}if(v(n,`ChainExpression`)){n=n.expression;continue}if(v(n,`AwaitExpression`)){n=n.argument;continue}if(v(n,`TSNonNullExpression`)||v(n,`TSAsExpression`)){n=n.expression;continue}return!1}return!1},Yi=new Set,qae=new Set([`set`,`append`,`delete`]),Xi=e=>v(e,`Property`)&&v(e.key,`Identifier`)&&e.key.name===`method`&&v(e.value,`Literal`)&&typeof e.value.value==`string`&&bn.has(e.value.value.toUpperCase()),Jae=(e,t)=>Hi(e)?!0:v(e,`Identifier`)?t.has(e.name):!1,Yae=(e,t,n,r=!0)=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)||!qae.has(e.callee.property.name))return null;let i=M(e.callee.object);return!n?.(i)&&(!r||!Jae(i,t))?null:e.callee.property.name},Zi=e=>{if(!v(e,`CallExpression`)||!v(e.callee,`Identifier`)||e.callee.name!==`fetch`)return!1;let t=e.arguments?.[1];return!t||!v(t,`ObjectExpression`)?!1:!!t.properties?.some(Xi)},Xae=(e,t,n,r=!0)=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`))return!1;let{property:i,object:a}=e.callee;if(!v(i,`Identifier`)||!Ae.has(i.name))return!1;let o=M(a);return!(n?.(o)||r&&Kae(o,t))},Zae=e=>{if(!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`))return`.unknown()`;let t=e.callee.property.name,n=M(e.callee.object),r=v(n,`Identifier`)?n.name:null;return r?`${r}.${t}()`:`.${t}()`},Qi=(e,t={})=>{let n=t.locallyScopedSafeBindings??Yi,r=t.locallyScopedCookieBindings??Yi,i=null;return s(e,a=>{if(i)return;if(a!==e&&A(a)&&t.shouldTraverseNestedFunction&&!t.shouldTraverseNestedFunction(a))return!1;let o=Yae(a,r,t.isCookieReceiver,t.useDefaultCookieReceiverDetection);if(o){i=`cookies().${o}()`;return}if(Zi(a)&&v(a,`CallExpression`)){let e=a.arguments[1];if(!v(e,`ObjectExpression`))return;let t=e.properties.find(Xi);if(!t||!v(t,`Property`)||!v(t.value,`Literal`))return;i=`fetch() with method ${t.value.value}`;return}Xae(a,n,t.isSafeReceiver,t.useDefaultSafeReceiverDetection)&&(i=Zae(a))}),i},$i=e=>{let t=e;for(;v(t,`ChainExpression`);)t=t.expression;if(!v(t,`CallExpression`)&&!v(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(v(r,`ChainExpression`)){r=r.expression;continue}if(v(r,`MemberExpression`)){v(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(v(r,`CallExpression`)){r=r.callee;continue}v(r,`Identifier`)&&n.push(r.name);break}return n},ea=e=>{if(v(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&v(t.init,`AwaitExpression`))return t.init.argument??null}return v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Qae=e=>ore.has(e)?!0:sre.some(t=>e.startsWith(t)),$ae=e=>e?$i(e).some(Qae):!1,eoe=e=>e?$i(e).some(e=>Sr.has(e)):!1,toe=e=>v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`),noe=e=>{let t=M(e);return v(t,`CallExpression`)?t.arguments.every(e=>{if(v(e,`SpreadElement`))return!1;let t=M(e);return v(t,`Identifier`)||v(t,`Literal`)}):!1},roe=e=>{let t=ea(e);if(!t)return!1;let n=M(t);return!v(n,`CallExpression`)&&!v(n,`NewExpression`)&&!v(n,`ImportExpression`)},ioe=(e,t)=>{let n=null;for(let r of e){if(roe(r))return!0;let e=ea(r);if(e&&de(e,t.scopes)||e&&Qi(e,{shouldTraverseNestedFunction:()=>!1}))return!0;let i=e?Ti(e,t.scopes):null;if(toe(r)){if(i===null||!e||!noe(e)||n!==null&&n!==i)return!0;n=i}if($ae(e)||eoe(e)&&i===null)return!0}return!1},aoe=e=>{let t=e.parent;for(;t;){if(A(t)){let e=t.parent;if(e&&v(e,`CallExpression`)){let t=e.callee;if(v(t,`MemberExpression`)&&v(t.property,`Identifier`)&&t.property.name===`transaction`||v(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},ooe=(e,t)=>{let n=[];for(let r of e){let e=ea(r);if(e){if(Bae(e,n,t.scopes))return;v(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`})},soe=C({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=Ke(e.filename??``),n=rre.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Cr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||aoe(t))return;let n=[],r=()=>{n.length>=3&&(ioe(n,e)||ooe(n,e)),n.length=0};for(let e of t.body??[])v(e,`VariableDeclaration`)&&e.declarations?.length===1&&v(e.declarations[0].init,`AwaitExpression`)||v(e,`ExpressionStatement`)&&v(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),ta=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`||v(t,`UnaryExpression`)&&t.operator===`void`},na=e=>{let t=e[0];return t&&v(t,`Identifier`)&&t.name===`this`?e.slice(1):e},ra="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.",ia=new Set([`localStorage`,`sessionStorage`]),coe=new Set([`window`,`globalThis`,`self`]),loe=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,uoe=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,doe=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,aa=e=>!(!loe.test(e)||uoe.test(e)&&!doe.test(e)),foe=e=>v(e,`Identifier`)?ia.has(e.name):v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&coe.has(e.object.name)&&v(e.property,`Identifier`)?ia.has(e.property.name):!1,oa=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=O(e,e.name);if(!n?.initializer)return null;if(v(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!v(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!v(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=M(n.initializer);return v(a,`Identifier`)?oa(a,t)??a:a},sa=(e,t)=>{let n=M(e);if(ca(n,new Set(t)))return!0;if(v(n,`ConditionalExpression`)){let e=M(n.consequent),r=M(n.alternate);return(ta(e)||sa(e,t))&&(ta(r)||sa(r,t))&&(!ta(e)||!ta(r))}if(v(n,`LogicalExpression`)){if(n.operator===`&&`)return sa(n.right,t);let e=M(n.left),r=M(n.right),i=sa(e,t),a=sa(r,t);return(i||ta(e))&&(a||ta(r))&&(i||a)}return!1},ca=(e,t=new Set)=>{let n=M(e);if(t.has(n))return!1;if(t.add(n),foe(n))return!0;if(v(n,`Identifier`)){let e=oa(n);return e?ca(e,new Set(t)):!1}if(!v(n,`CallExpression`))return!1;let r=M(n.callee);if(!v(r,`Identifier`))return!1;let i=oa(r);if(!A(i))return!1;if(v(i,`ArrowFunctionExpression`)&&!v(i.body,`BlockStatement`))return sa(i.body,t);let a=!1;for(let e of Ie(i)){if(!e.argument)continue;let n=M(e.argument);if(!ta(n)){if(!sa(n,t))return!1;a=!0}}return a},la=e=>{if(v(e,`Literal`)&&typeof e.value==`string`)return e.value;if(v(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(v(e,`Identifier`)&&e.name!==`undefined`){let t=O(e,e.name);return!t?.initializer||v(t.initializer,`Identifier`)?null:la(t.initializer)}return null},poe=e=>!e.computed&&v(e.property,`Identifier`)?e.property.name:e.computed&&v(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,ua=(e,t,n,r,i=new Set)=>{let a=M(e);if(i.has(a))return null;if(i.add(a),v(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=oa(a);return s?ua(s,t,n,r,i):null}if(r&&v(a,`CallExpression`)&&v(a.callee,`MemberExpression`)&&!a.callee.computed&&v(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&v(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?ua(e,t,n,!0,i):null}return null},da=new WeakMap,moe=(e,t)=>{let n=da.get(e);if(n)return n;if(!v(e,`FunctionDeclaration`)&&!v(e,`FunctionExpression`)&&!v(e,`ArrowFunctionExpression`))return da.set(e,[]),[];let r=na(e.params).map(e=>{let n=M(e),r=v(n,`Identifier`)?n:v(n,`AssignmentPattern`)&&v(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return s(e.body,n=>{if(n!==e.body&&A(n))return!1;if(!v(n,`CallExpression`))return;let a=M(n.callee);if(!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`)||a.property.name!==`setItem`||!ca(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=ua(o,r,t,!1),l=ua(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),da.set(e,i),i},hoe=C({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:i(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=la(e);return t!==null&&aa(t)})&&e.report({node:t,message:ra})},i=(t,n)=>{let i=oa(n),a=i?moe(i,e.scopes):[],o=[];for(let e of a){let n=t.arguments[e.keyParameterIndex];n&&t.arguments[e.valueParameterIndex]&&o.push(n)}r(t,o)};return{MemberExpression(e){!t&&!e.computed&&v(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=M(e.callee);if(v(t,`MemberExpression`)&&!t.computed&&v(t.property,`Identifier`)&&t.property.name===`setItem`&&ca(M(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else v(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=M(e.callee);v(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!v(n,`MemberExpression`))return;let r=poe(n);!r||!aa(r)||ca(n.object)&&e.report({node:n,message:ra})}}})}),goe=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,_oe=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(`.`)),voe=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),yoe=new Set([`shipping`,`billing`]),boe=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),xoe=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&&yoe.has(t[n])&&(n+=1);let r=n<t.length&&boe.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?voe.has(i):_oe.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Soe=new Set([`input`,`textarea`,`select`,`form`]),Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},fa=C({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:i(e=>{let t=Coe(e.settings);return{JSXOpeningElement:n=>{let r=ir(n,e.settings);if(!Soe.has(r)&&!t.inputComponents.has(r))return;let i=I(n.attributes,`autoComplete`);if(!i)return;let a=nr(i);a&&(xoe(a)||e.report({node:i,message:goe(a)}))}}})}),H=(e,t)=>e?.find(e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&e.name.name===t),pa=e=>cr(e)?.split(`.`).at(-1)??null,woe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!v(t,`ImportDeclaration`)||xn(t)||v(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ma=e=>{let t=woe(e);if(!t||!v(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},ha=(e,t,n,r)=>{if(!v(e,`JSXMemberExpression`))return null;if(v(e.object,`JSXIdentifier`)){let i=x(e.object,r.scopes);if(!i)return null;let a=ma(i);return a===null||!t.test(a)?null:Pn(i.declarationNode)===n?e.property.name:null}if(!v(e.object,`JSXMemberExpression`)||!v(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=x(e.object.object,r.scopes);if(!i||!v(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ma(i);return a!==null&&t.test(a)?e.property.name:null},ga=(e,t)=>{let n=M(e);if(v(n,`JSXElement`)){_a(n,t);return}if(v(n,`JSXFragment`)){va(n.children,t);return}if(v(n,`ConditionalExpression`)){ga(n.consequent,t),ga(n.alternate,t);return}if(v(n,`LogicalExpression`)){n.operator!==`&&`&&ga(n.left,t),ga(n.right,t);return}if(v(n,`ArrayExpression`)){for(let e of n.elements)e&&(v(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ga(e,t));return}if(v(n,`Literal`)){if(typeof n.value==`string`||typeof n.value==`number`){let e=String(n.value);e.trim().length>0&&t.onStaticText?.(e)}return}if(v(n,`TemplateLiteral`)){let e=n.quasis.map(e=>e.value.cooked??e.value.raw??``).join(` `);(e.trim().length>0||n.expressions.length>0)&&t.onStaticText?.(e);return}v(n,`JSXEmptyExpression`)||v(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},_a=(e,t)=>{t.onElement(e)!==!1&&va(e.children,t)},va=(e,t)=>{for(let n of e)v(n,`JSXElement`)?_a(n,t):v(n,`JSXFragment`)?va(n.children,t):v(n,`JSXExpressionContainer`)?ga(n.expression,t):v(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},ya=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{s(e,e=>{v(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return va(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=H(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},Toe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],ba=[`aria-label`,`aria-labelledby`,`title`],Eoe=e=>{if(!e.value||!v(e.value,`JSXExpressionContainer`))return!0;let t=M(e.value.expression);if(!v(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return L(n)||ba.some(e=>I(n,e))},Doe=(e,t,n)=>{if(ha(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=pa(e);return r===`Title`||r===`${t.namespaceName}Title`},xa=C({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of Toe){if(ha(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(L(t.attributes))return;let r=H(t.attributes,`render`);if(r&&Eoe(r)||ba.some(e=>I(t.attributes,e)))return;let i=t.parent;if(!i||!v(i,`JSXElement`)||i.children.length===0)return;let a=ya(i.children,{isPartElementName:t=>Doe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(ha(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=pa(r);return i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`}});if(a.foundPart||a.sawOpaqueContent)return;e.report({node:t.name,message:`This ${n.namespaceName}.Popup renders no ${n.namespaceName}.Title, so the dialog has no accessible name and assistive technology announces an unnamed dialog. Add a Title part (visually hidden if the design shows no heading) or an aria-label.`});return}}})}),Ooe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,Sa=[`aria-label`,`aria-labelledby`],Ca=(e,t)=>ha(e,Ooe,`Field`,t),wa=(e,t)=>{if(Ca(e,t)===`Label`)return!0;let n=pa(e);return n===`label`||n===`Label`||n===`FieldLabel`},koe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(v(r,`JSXElement`)&&Ca(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},Aoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return va(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(wa(a,t))return n.hasLabel=!0,!1;let o=Ca(a,t);if((o===`Control`||koe(i,e,t))&&Sa.some(e=>I(i.attributes,e)))return n.hasLabel=!0,!1;L(i.attributes)&&(n.sawUnprovableContent=!0);let c=H(i.attributes,`render`);if(c?.value&&s(c.value,e=>{v(e,`JSXOpeningElement`)&&Sa.some(t=>I(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let l=pa(a);return l!==null&&/^[A-Z]/.test(l)&&l!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,s(e,e=>{v(e,`JSXOpeningElement`)&&wa(e.name,t)&&(n.hasLabel=!0)})}}),n},Ta=C({id:`base-ui-field-requires-label`,title:`Base UI field control without a label`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Field.Root that wraps a Field.Control a Field.Label (visually hidden when the design shows no label) or name the control directly with aria-label.`,create:e=>({JSXOpeningElement(t){if(Ca(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!v(n,`JSXElement`)||n.children.length===0)return;let r=Aoe(n,e);!r.hasControl||r.hasLabel||r.sawUnprovableContent||e.report({node:t.name,message:`This Field.Root wraps a Field.Control but renders no Field.Label, so the field has no accessible name. Add a Field.Label (visually hidden if the design shows no label) or an aria-label on the control.`})}})}),Ea=(e,t)=>{let n=e.parent?.parent;for(;n;){if(v(n,`JSXAttribute`))return`unprovable`;if(v(n,`JSXElement`)){let e=n.openingElement.name,r=t(e);if(r===`required`)return`inside-required`;if(r===`root`)return`inside-root-without-required`;let i=pa(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},joe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,Da=(e,t)=>ha(e,joe,`Tabs`,t),Moe=C({id:`base-ui-tabs-tab-requires-list`,title:`Base UI tab is outside Tabs.List`,severity:`warn`,category:`Correctness`,requires:[`base-ui`],matchByOccurrence:!0,recommendation:`Render each Base UI Tabs.Tab inside Tabs.List so the tablist role and arrow-key focus handling cover every tab.`,create:e=>({JSXOpeningElement(t){Da(t.name,e)===`Tab`&&Ea(t,t=>{let n=Da(t,e);return n===`List`?`required`:n===`Root`?`root`:null})===`inside-root-without-required`&&e.report({node:t,message:`This Tabs.Tab is outside Tabs.List, so it misses the tablist grouping and arrow-key focus handling Base UI provides through the list. Nest it inside Tabs.List.`})}})}),Noe=e=>{let t=e;for(;t;){if(v(t,`MemberExpression`)){if(v(t.property,`Identifier`)&&t.property.name===`document`||v(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(v(t,`Identifier`)&&t.name===`document`)}return!1},Oa=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`Identifier`)?t.name===`createElement`:v(t,`MemberExpression`)&&(t.computed?v(t.property,`Literal`)&&t.property.value===`createElement`:v(t.property,`Identifier`)&&t.property.name===`createElement`)?!Noe(t.object):!1},ka="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",Poe=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}},Aa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,ja=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return Aa(r.value,t);if(v(r,`TemplateLiteral`)){let e=it(r);if(e!==null)return Aa(e,t)}if(v(r,`ConditionalExpression`))return ja(r.consequent,t,n)&&ja(r.alternate,t,n);if(v(r,`Identifier`)){if(n.has(r.name))return!1;let e=O(r,r.name);return!e?.initializer||!Ma(e)?!1:ja(e.initializer,t,new Set(n).add(r.name))}return!1},Ma=e=>{let t=e.bindingIdentifier.parent;if(!t||!v(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&v(n,`VariableDeclaration`)&&n.kind===`const`)},Foe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),Ioe=e=>{let t=e;for(;t.parent&&Foe.has(t.parent.type);)t=t.parent;return t},Na=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=Ioe(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(v(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!v(e,`Identifier`))return!1;let n=O(e,e.name);return n?Na(n.bindingIdentifier,t):!1}return!1},Loe=e=>{let t=O(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!v(n,`Property`)||n.computed||n.value!==t||!Na(n)?!1:v(n.key,`Identifier`)?n.key.name===`type`:v(n.key,`Literal`)?n.key.value===`type`:!1},Roe=/Type$/,zoe=(e,t)=>{if(!Roe.test(e.name))return!1;let n=O(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!v(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!v(i,`Property`)||i.computed||i.value!==r||!Na(i)?!1:ja(r.right,t)},Pa=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Identifier`)){if(r.name===`type`||Loe(r)||zoe(r,t))return!0;if(n.has(r.name))return!1;let e=O(r,r.name);if(!e?.initializer||!Ma(e))return!1;let i=M(e.initializer);return!v(i,`ConditionalExpression`)&&!v(i,`LogicalExpression`)?!1:Pa(i,t,new Set(n).add(r.name))}if(v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(v(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Pa(r.left,t,n);if(v(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Pa(e,t,n))&&e.every(e=>Pa(e,t,n)||ja(e,t))}return!1},Boe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],Voe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},Fa=e=>{for(let t of Boe){let n=be(e,e.name,t);if(n!==null)return n}return null},Ia=e=>e.computed?null:v(e.key,`Identifier`)?e.key.name:v(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,Hoe=e=>{if(v(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(v(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(!(v(t,`FunctionDeclaration`)||v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},Uoe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!v(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Ia(n);if(!r)return!1;let i=n.parent;if(!i||!v(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!v(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!v(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=M(a.init);if(!v(s,`CallExpression`))return!1;let c=M(s.callee);if(!v(c,`Identifier`))return!1;let l=Fa(c);if(l!==null)return Voe[l]===r;let u=O(c,c.name)?.initializer;if(!u||!v(u,`FunctionDeclaration`)&&!v(u,`FunctionExpression`)&&!v(u,`ArrowFunctionExpression`))return!1;let d=Hoe(u);return!d||d.length===0?!1:d.every(e=>{let n=M(e);if(!v(n,`ObjectExpression`))return!1;for(let e of n.properties){if(v(e,`SpreadElement`)||!v(e,`Property`))return!1;if(Ia(e)===r)return La(e.value,t)}return!0})},La=(e,t=new Set)=>{let n=M(e);if(v(n,`ObjectExpression`))return n.properties.every(e=>{if(v(e,`SpreadElement`))return La(e.argument,t);if(!v(e,`Property`))return!1;let n=Ia(e);return n!==null&&n!==`type`});if(v(n,`CallExpression`)){let e=M(n.callee);return!v(e,`Identifier`)||Fa(e)!==`mergeProps`?!1:n.arguments.every(e=>!v(e,`SpreadElement`)&&La(e,t))}if(v(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=O(n,n.name);return r?r.initializer&&Ma(r)?La(r.initializer,e):Uoe(r,e):!1}return!1},Ra=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},Woe=e=>{let t=z(e.attributes,`form`,!1);return!!(t&&R(t)?.trim())},Goe=e=>!!ar(e?Ge(e,`form`):void 0)?.trim(),Koe=e=>{if(!v(e,`CallExpression`)||!Oa(e))return!1;let t=e.arguments[0];return!!(t&&v(t,`Literal`)&&t.value===`form`)},za=e=>{let t=e.parent;for(;t;){if(v(t,`JSXElement`)&&k(t.openingElement)===`form`||Koe(t))return!0;t=t.parent}return!1},Ba=C({diffScope:`jsx-element`,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=Poe(e.settings),n=Nr(e.settings),r=It(e.filename);return{JSXOpeningElement(i){if(n&&r||k(i)!==`button`)return;let a=I(i.attributes,`type`);if(!a){if(n&&!Woe(i)&&!za(i)||L(i.attributes)&&!i.attributes.every(e=>!v(e,`JSXSpreadAttribute`)||La(e.argument)))return;e.report({node:i.name,message:ka});return}let o=a.value;if(!o){Ra(e,a);return}if(v(o,`Literal`)){ja(o,t)||Ra(e,a);return}if(v(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Pa(n,t))return;ja(n,t)||Ra(e,a)}},CallExpression(i){if(n&&r||!Oa(i))return;let a=i.arguments[0];if(!a||!v(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=Goe(o)||za(i);if(!o||ta(o)){if(n&&!s)return;e.report({node:i,message:ka});return}if(!v(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(v(e,`SpreadElement`)){l=!0;continue}if(!v(e,`Property`))continue;let t=e.key;if(v(t,`Identifier`)&&t.name===`type`||v(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!v(e,`SpreadElement`)||La(e.argument)))return;e.report({node:o,message:ka});return}Pa(c,t)||ja(c,t)||Ra(e,c)}}}}),qoe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Va=e=>v(e,`Identifier`)||v(e,`MemberExpression`)&&!e.computed,Ha=e=>!e.value||!v(e.value,`JSXExpressionContainer`)?!1:Va(e.value.expression),Joe=e=>{if(!e.value)return!0;if(v(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return v(t,`Literal`)&&t.value===!0}return!1},Yoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(v(c,`JSXSpreadAttribute`)){o=!0;continue}if(!v(c,`JSXAttribute`))continue;let e=Tt(c.name);e===`checked`?(t=c,n=Ha(c)):e===`defaultChecked`&&!r?(r=c,i=Ha(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Joe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Xoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(v(c,`SpreadElement`)){o=!0;continue}if(!v(c,`Property`))continue;let e=c.key,l=null;if(v(e,`Identifier`)?l=e.name:v(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Va(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Va(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;v(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Ua=C({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=qoe(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){k(e)===`input`&&n(Yoe(e.attributes))},CallExpression(e){if(!Oa(e))return;let t=e.arguments[0];if(!t||!v(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!v(r,`ObjectExpression`)||n(Xoe(r))}}}}),Wa=C({id:`circular-dependency`,title:`Runtime import cycle`,severity:`warn`,execution:`project`,defaultEnabled:!1,recommendation:`Break the runtime cycle by extracting shared code into a lower-level module or inverting one dependency.`}),Ga=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(A(a)||((v(a,`ConditionalExpression`)||v(a,`IfStatement`))&&(a.consequent===i&&r.set(a,`consequent`),a.alternate===i&&r.set(a,`alternate`)),a===n));)i=a,a=a.parent??null;let o=t,s=t.parent;for(;s&&!A(s);){if(v(s,`ConditionalExpression`)||v(s,`IfStatement`)){let e=r.get(s);if(e===`consequent`&&s.alternate===o||e===`alternate`&&s.consequent===o)return!0}if(s===n)break;o=s,s=s.parent??null}return!1},Ka=(e,t,n,r=e)=>{let i=new Set,a=t.filter(t=>{if(n.cfg.enclosingFunction(t)!==e)return!1;let i=t;for(;i&&i!==r;)i=i.parent??null;return i===r}),o=new Set(a),s=new Map;for(;a.length>0;){let e=a.pop();if(!e)break;if(e===r){i.add(e);continue}let t=e,n=t.parent??null,c=null,l=null,u=!1;for(;n&&n!==r;){if(v(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=Kt(Cn(n.test));if(r!==null){if(r!==e){u=!0;break}t=n,n=t.parent??null;continue}c=n,l=e?`consequent`:`alternate`;break}}if(v(n,`LogicalExpression`)&&n.right===t){let e=Kt(Cn(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(v(n,`AssignmentPattern`)&&n.right===t){u=!0;break}t=n,n=t.parent??null}if(u)continue;if(!c||!l){i.add(e);continue}let d=s.get(c)??new Set;d.add(l),s.set(c,d),d.has(`alternate`)&&d.has(`consequent`)&&!o.has(c)&&(o.add(c),a.push(c))}return i},qa=(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=F(r),c=new Set([...Ka(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=F(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},Ja=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Ka(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},Ya=`Component`,Xa=`PureComponent`,Zoe=e=>!v(e,`MemberExpression`)||!v(e.object,`Identifier`)||e.object.name!==`React`||!v(e.property,`Identifier`)?!1:e.property.name===Ya||e.property.name===Xa,Za=e=>{if(!v(e,`ClassDeclaration`)&&!v(e,`ClassExpression`))return!1;let t=e.superClass;return t?Zoe(t)?!0:v(t,`Identifier`)?t.name===Ya||t.name===Xa:!1:!1},Qoe=e=>{let t=e,n=e.parent;for(;n;){if(v(n,`IfStatement`)&&v(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||v(n,`ConditionalExpression`)&&v(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(v(n,`WhileStatement`)||v(n,`ForStatement`))&&n.body===t&&n.test&&v(n.test,`Literal`)&&!n.test.value||v(n,`LogicalExpression`)&&n.right===t&&v(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},U=(e,t)=>{if(Qoe(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},$oe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),ese=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Qa=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=M(n.object);return v(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&N(n)===`now`},$a=(e,t,n=new Set)=>{let r=M(e);if(v(r,`Literal`))return typeof r.value==`number`;if(v(r,`CallExpression`))return Qa(r,t);if(v(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),$a(e.initializer,t,n))}return v(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&$a(r.argument,t,n):!v(r,`BinaryExpression`)||!ese.has(r.operator)?!1:$a(r.left,t,new Set(n))&&$a(r.right,t,new Set(n))},eo=(e,t)=>{if(Qa(e,t))return!0;let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=M(n.object);if(!v(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=N(n);if(r.name===`console`)return $oe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&$a(a,t))},W=({node:e,scopes:t})=>{let n=M(e);if(v(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(v(n,`ThisExpression`))return`this`;if(!v(n,`MemberExpression`))return null;let r=W({node:n.object,scopes:t}),i=N(n);return r&&i?`${r}.${i}`:null},tse=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),nse=e=>{if(v(e,`FunctionDeclaration`))return e.id&&v(e.id,`Identifier`)?e.id:null;let t=S(e),n=t.parent;if(!n||!v(n,`VariableDeclarator`)||n.init!==t||!v(n.id,`Identifier`))return null;let r=n.parent;return!r||!v(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},to=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let c=new Map(o),l=new Map;s(e,t=>{if(t!==e&&A(t)){let e=nse(t);return e&&t.body&&(!r||r(t))&&c.set(e,t.body),!1}let n=v(t,`VariableDeclarator`)&&t.init?M(t.init):null;if(v(t,`VariableDeclarator`)&&v(t.id,`Identifier`)&&v(n,`Identifier`)&&t.parent&&v(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=O(n,n.name)?.bindingIdentifier;e&&l.set(t.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,i=!1)=>{if(!i&&A(e)||(t(e),$t(e,e=>u(e)),!v(e,`CallExpression`)))return;let o=M(e.callee);if(A(o)){o.body&&(!r||r(o))&&a(o.body,c);return}if(v(o,`Identifier`)){let e=O(o,o.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&a(t,c);return}if(!(!v(o,`MemberExpression`)||!tse.has(N(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=M(t);if(A(i))i.body&&(!r||r(i))&&a(i.body,c);else if(v(i,`Identifier`)){let e=O(i,i.name)?.bindingIdentifier,t=e?c.get(e):void 0;t&&a(t,c)}}};u(e,!0),i.delete(e)};a(e,new Map)},no=(e,t)=>{if(!A(e))return;let n=e.body;n&&s(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},ro=(e,t,n,r=e,i=new Set)=>{let a=M(e);if(v(a,`ObjectExpression`))return a;if(!v(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||b(o,r,n)||t.some(e=>c(a,e,r,n))?null:(i.add(o.id),ro(o.initializer,t,n,r,i))},io=new Set([`window`,`globalThis`,`global`,`self`]),rse=new Set([`body`,`documentElement`,`visualViewport`]),ise=new Set([`initPlaces`,`places`]),ao=new Set([`forceUpdate`,`setState`]),oo=`mobx-react`,so=`disposeOnUnmount`,ase=[`handler`],co=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`]}]]),ose=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`]}]]),lo=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),sse=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),uo=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),fo=(e,t)=>{let n=j(e);if(!n)return!1;let r=[];if(no(n,t=>{v(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},po=e=>{if(!v(e,`CallExpression`))return null;let t=M(e.callee);return v(t,`Identifier`)?t.name:null},mo=(e,t)=>{let n=po(e),r=v(e,`CallExpression`)?M(e.callee):null;return!!(n&&v(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&be(e,n,`mobx`)===`runInAction`)},ho=(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(v(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?M(i.init):null;return v(e,`Property`)&&v(n,`ObjectPattern`)&&v(a,`Identifier`)&&io.has(a.name)&&t.isGlobalReference(a)?T(e,{allowComputedString:!0}):null}let a=r.initializer?M(r.initializer):null;if(v(a,`Identifier`))return ho(a,t,n);if(!v(a,`MemberExpression`))return null;let o=M(a.object);return v(o,`Identifier`)&&io.has(o.name)&&t.isGlobalReference(o)?N(a):null},go=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=M(e.callee);if(po(e)&&v(n,`Identifier`))return ho(n,t);if(!v(n,`MemberExpression`))return null;let r=M(n.object);return!v(r,`Identifier`)||!io.has(r.name)||O(r,r.name)?null:N(n)},_o=e=>v(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:T(e,{allowComputedString:!0}),vo=new WeakMap,cse=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},lse=e=>{let t=vo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(v(e,`ClassBody`)){for(let t of e.body){let e=_o(t);e&&(v(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(v(t,`MethodDefinition`)||v(t,`PropertyDefinition`))&&t.value&&A(t.value)&&r.set(e,t.value))}s(e,t=>{let n=v(t,`AssignmentExpression`)?M(t.left):v(t,`UpdateExpression`)?M(t.argument):null;if(!v(n,`MemberExpression`)||!v(M(n.object),`ThisExpression`))return;let r=N(n);if(!r)return;let a=cse(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?_o(a):null,isAssignment:v(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return vo.set(e,a),a},yo=(e,t,n)=>{if(!e||!v(e,`ClassBody`))return null;let r=lse(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),to(e,e=>{let i=n(e);if(i===!1||!v(e,`CallExpression`))return i;let a=M(e.callee);if(!v(a,`MemberExpression`)||!v(M(a.object),`ThisExpression`))return;let o=N(a),s=o?yo(t,o,e):null;s&&bo(s,t,n,r)}))},use=(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),to(e,e=>{if(n.cfg&&!U(e,n))return!1;if(o&&r.add(e),!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||!v(M(i.object),`ThisExpression`))return;let s=N(i),c=s?yo(t,s,e):null;c&&a(c,o||fo(e,n))}))};return a(e,!1),r},dse=(e,t,n,r)=>{let i=j(e),a=j(t);if(!i||!a||i===a)return!1;let o=new Map,c=new Set,l=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(c.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};c.add(e);let u={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return s(n??t,t=>{if(!v(t,`CallExpression`))return;let i=M(t.callee);if((v(i,`Identifier`)?P(i,r.scopes):v(i,`MemberExpression`)&&v(M(i.object),`ThisExpression`)?yo(n,N(i)??``,t):null)!==e)return;let a=j(t);if(!a)return;let o=l(a);o.canInvokeAfterSuspension&&(u.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(fo(t,r)?u.canInvokeAfterSuspension=!0:u.canInvokeBeforeSuspension=!0)}),c.delete(e),o.set(e,u),u};return l(i).canInvokeAfterSuspension},fse=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return to(e,e=>{if(i)return!1;if(mo(e,n))return i=!0,!1;if(!v(e,`CallExpression`))return;let a=M(e.callee);if(!v(a,`MemberExpression`)||!v(M(a.object),`ThisExpression`))return;let o=N(a);if(o&&ao.has(o))return i=!0,!1;let s=o?yo(t,o,e):null;if(s&&fse(s,t,n,r))return i=!0,!1}),i},xo=(e,t,n=new Set)=>{let r=M(e);if(n.has(r))return null;if(n.add(r),A(r))return r;if(v(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?xo(e,t,n):null}let i=v(r,`CallExpression`)?M(r.callee):null,a=(v(r,`CallExpression`)&&v(i,`MemberExpression`)&&N(i)===`bind`&&r.arguments?.[0]&&v(M(r.arguments[0]),`ThisExpression`)?M(i.object):null)??r,o=v(a,`MemberExpression`)&&v(M(a.object),`ThisExpression`)?N(a):null;return o?yo(t,o,r):null},pse=(e,t,n)=>{let r=xo(e,t);if(!A(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return to(i,e=>{if(a)return;if(mo(e,n)){a=!0;return}if(!v(e,`CallExpression`))return;let r=M(e.callee);if(v(r,`MemberExpression`)&&v(M(r.object),`ThisExpression`)){let i=N(r);if(i&&ao.has(i)){a=!0;return}let o=i?yo(t,i,e):null;if(o&&!fse(o,t,n))return;a=!0}}),a},mse=(e,t,n)=>{let r=new Set,i=new Set;bo(e,t,e=>{if(v(e,`VariableDeclarator`)){let t=e.init?M(e.init):null,i=v(t,`CallExpression`)?M(t.callee):null;if(t&&(v(t,`NewExpression`)||v(t,`ObjectExpression`)||v(t,`ArrayExpression`)||v(t,`CallExpression`)&&v(i,`Identifier`)&&ise.has(i.name))){let t=new Set;xt(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(v(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;xt(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(v(e,`AssignmentExpression`)&&v(e.left,`MemberExpression`)){let t=M(e.right),r=v(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(v(e,`CallExpression`))for(let t of e.arguments??[]){let e=M(t),a=v(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},hse=e=>{let t=M(e);for(;v(t,`MemberExpression`);){let e=M(t.object);if(v(e,`ThisExpression`))return N(t);t=e}return null},gse=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!v(n,`ClassBody`))return!0;let r=lse(n);if(r.accessorNames.has(e))return!1;let i=cse(t,n),a=i?_o(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`)})},_se=(e,t)=>{if(!v(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(A(n))return n.parent?.parent===t;if(v(n,`IfStatement`)||v(n,`ConditionalExpression`)||v(n,`LogicalExpression`)||v(n,`SwitchStatement`)||v(n,`TryStatement`)||v(n,`CatchClause`)||v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return!1;n=n.parent}return!1},vse=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=S(e.identifier),r=t.parent;if(!v(r,`AssignmentExpression`)||r.right!==t||!v(r.left,`MemberExpression`)||!v(M(r.left.object),`ThisExpression`)||!_se(r,n))return[];let i=N(r.left);return i&&gse(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!v(a,`AssignmentExpression`))return null;let o=j(r.declarationNode);if(!o||j(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 no(o,e=>{if(v(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},So=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=vse(i,t,n);if(a)return So(a,t,n,r);if(e.kind===`const`&&e.initializer&&v(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=M(e.initializer);return v(a,`Identifier`)||v(a,`MemberExpression`)?So(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(v(i,`ThisExpression`))return`this`;if(!v(i,`MemberExpression`))return null;let a=hse(i);if(!a){let e=M(i.object),n=N(i);return!v(e,`Identifier`)||!t.isGlobalReference(e)||!n||!rse.has(n)?null:`${e.name}.${n}`}if(a&&(!v(M(i.object),`ThisExpression`)||!gse(a,i,n)))return null;let o=So(i.object,t,n,r),s=N(i);return o&&s?`${o}.${s}`:null},yse=(e,t,n)=>{let r=M(e);return v(r,`Literal`)?JSON.stringify(r.value):So(r,t,n)},bse=(e,t,n)=>{let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(v(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=So(r,t,n);return i?`reference:${i}`:null},xse=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||b(r,n,t)||c(n,`capture`,n,t))return null;let i=W({node:n,scopes:t});return i?`options:${i}`:null},Sse=(e,t)=>{let n=M(e);return v(n,`Literal`)?!n.value:v(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Co=(e,t,n,r)=>{let i=M(e.callee);if(!v(i,`MemberExpression`))return null;let a=N(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:ase}: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=yse(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||v(a,`SpreadElement`))return null;let o=i===`event`?bse(a,n,r):yse(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&&v(d,`SpreadElement`))return null;let f=`false`;if(d){let e=M(d);if(Sse(e,n))f=`false`;else if(v(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=ro(d,[`capture`],n),t=xse(d,n);if(!e||e.properties.some(e=>!v(e,`Property`)||T(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`capture`);if(r&&v(r,`Property`)&&Sse(r.value,n))f=`false`;else if(r&&v(r,`Property`)&&v(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},Cse=(e,t,n,r)=>{let i=Co(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},wse=(e,t,n)=>{let r=M(e.callee);if(!v(r,`MemberExpression`))return[];let i=So(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||v(o,`SpreadElement`))return a;let s=bse(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},Tse=(e,t,n)=>{let r=e.arguments[2];if(!r||v(r,`SpreadElement`))return null;let i=ro(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`signal`);if(!a||!v(a,`Property`))return null;let o=M(a.value);if(!v(o,`MemberExpression`)||N(o)!==`signal`)return null;let s=So(o.object,t,n);return s?`abort:${s}`:null},Ese=(e,t,n,r,i)=>{let a=sse.get(t)??[n.releaseMethodName],o=Co(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?Tse(e,r,i):null;return c&&s.push(c),lo.has(t)?[...s,...wse(e,r,i)]:s},wo=(e,t,n)=>{let r=S(e),i=r.parent,a=v(i,`AssignmentExpression`)&&i.right===r?i.left:v(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?So(a,t,n):null},Dse=(e,t)=>{let n=M(e.callee);if(v(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&be(e,n.name,oo)===so;if(!v(n,`MemberExpression`))return!1;let r=M(n.object);return N(n)===so&&v(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&yt(e,r.name,oo)},To=(e,t,n)=>{let r=M(e.callee);if(v(r,`MemberExpression`)){let i=N(r),a=i?ose.get(i):void 0;if(a){let r=Cse(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=wse(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!v(M(r.object),`ThisExpression`)){let e=So(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=So(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=So(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=go(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!v(a,`SpreadElement`)){let e=So(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},Eo=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return to(e,e=>{if(a||e.range[0]>=r)return;if(v(e,`ThrowStatement`)||v(e,`NewExpression`))return a=!0,!1;if(!v(e,`CallExpression`)||To(e,n,t).length>0||eo(e,n))return;let o=M(e.callee);if(v(o,`MemberExpression`)){if(v(M(o.object),`ThisExpression`)){let r=N(o),a=r?yo(t,r,e):null;if(a&&!Eo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=P(o,n);if(!(s&&!Eo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Ose=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(!v(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!v(i,`SpreadElement`)?M(i):null;if(!Dse(e,n.scopes)||!v(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||v(o,`SpreadElement`))return;let s=xo(o,t);if(!A(s))return;let c=new Map;bo(s,t,e=>{if(v(e,`CallExpression`))for(let r of To(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!Ja(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},Do=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!A(e)||r.has(e))return i;r.add(e);let a=null;to(e,t=>{v(t,`AwaitExpression`)&&j(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;bo(e,t,i=>{if(!v(i,`CallExpression`)||a!==null&&j(i)===e&&i.range[0]>a)return;let s=Eo(e,t,n.scopes,i.range[0]),c=M(i.callee);if(v(c,`Identifier`)){let e=Do(P(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(v(c,`MemberExpression`)&&v(M(c.object),`ThisExpression`)){let e=N(c),a=Do(e?yo(t,e,i):null,t,n,r);for(let e of a){let t=o.get(e)??[];t.push(i),o.set(e,t)}}for(let e of s?[]:To(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)Ja(e,r,n)&&i.add(t);return i},kse=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!A(e)||r.has(e))return i;r.add(e);let o=null;to(e,t=>{v(t,`AwaitExpression`)&&j(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),to(e,s=>{if(!v(s,`CallExpression`)||o!==null&&j(s)===e&&s.range[0]>o||Eo(e,t,n.scopes,s.range[0]))return;for(let r of To(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),Ja(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Ja(e,[s],n))return;let c=M(s.callee),l=v(c,`MemberExpression`)&&v(M(c.object),`ThisExpression`)?N(c):null,u=kse(l?yo(t,l,s):v(c,`Identifier`)?P(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Ja(e,r,n))continue;let a=1;[...r.keys()].every(t=>Ja(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},Ase=(e,t,n)=>{let r=new Map;return bo(e,t,e=>{if(v(e,`CallExpression`))for(let i of To(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},Oo=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(A(n))return null;if(v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return n;n=n.parent}return null},jse=(e,t,n)=>{let r=n.scopes,i=new Map;bo(e,t,e=>{if(!v(e,`CallExpression`))return;if(n.cfg&&!U(e,n))return!1;let a=M(e.callee);if(!v(a,`MemberExpression`))return;let o=N(a),s=o?co.get(o):void 0;if(!s)return;let c=Co(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=>!!Oo(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>Ga(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},ko=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||b(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),ko(a,t,n,r)):!1}if(v(i,`MemberExpression`)){let e=N(i),a=M(i.object);if(e!==`current`)return ko(a,t,n,r);if(!v(t,`ClassBody`)||!v(a,`MemberExpression`))return!1;let o=N(a),s=M(a.object);if(!o||!v(s,`ThisExpression`))return!1;let c=t.body?.find(e=>_o(e)===o);if(!c||!v(c,`PropertyDefinition`)||c.static||!v(c.value,`CallExpression`)||!D(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?Nse(l):null,d=!1;return u&&to(u,e=>{if(d||e.range[0]>=i.range[0]||!v(e,`AssignmentExpression`))return;let t=M(e.left);v(t,`MemberExpression`)&&v(M(t.object),`ThisExpression`)&&N(t)===o&&(d=!0)}),!d}return!1},Ao=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||b(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),Ao(a,t,n,r)):!1}if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(!v(a,`MemberExpression`))return!1;let o=N(a),s=M(a.object);if((o===`select`||o===`selectAll`)&&v(s,`Identifier`)&&(yt(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!v(e,`SpreadElement`)&&ko(e,t,n))}return Ao(a.object,t,n,r)},Mse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!v(e,`CallExpression`))return null;let c=M(e.callee),l=v(c,`MemberExpression`)?N(c):null;if(l&&co.has(l)&&v(c,`MemberExpression`)){let u=co.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=M(c.object),m=ko(p,i,s),h=Ao(p,i,s);for(;;){if(p=M(p),v(p,`CallExpression`)){p=M(p.callee);continue}if(v(p,`MemberExpression`)){p=M(p.object);continue}break}let g=v(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,y=u?Co(e,u,s,i):null,b=u?Ese(e,l,u,s,i):[],ee=b.flatMap(e=>n.get(e)??[]),te=b.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ne=ee.filter(t=>qa(e,[t],a)).length,re=Oo(e),ie=!!(re&&ee.some(t=>Oo(t)===re&&qa(e,[t],a))),ae=y?r.get(y)??1:1,oe=!!(y&&(qa(e,te,a)||qa(e,ee,a)&&(l===`addEventListener`||ie||ne>=ae)));if(!(!f&&!_&&!oe&&!m&&!h))return null;let se=wo(e,s,i),ce=M(c.object),le=v(ce,`Identifier`)?be(e,ce.name,`react-native`):null,ue=v(ce,`Identifier`)&&(le!==null&&uo.has(le)||s.isGlobalReference(ce)&&uo.has(ce.name)),de=l===`subscribe`&&se?[`returned:unsubscribe:${se}`,`returned:call:${se}`]:(l===`addEventListener`||l===`addListener`)&&ue&&se?[`returned:remove:${se}`]:[];return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:lo.has(l)?y:null,registrationCount:lo.has(l)?ae:1,releaseKeys:u?[...Ese(e,l,u,s,i),...de]:de}}let u=go(e,s);if(u===`setInterval`){let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!pse(e.arguments[0],i,s))return null;let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||fo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},jo=e=>(v(e,`MethodDefinition`)||v(e,`PropertyDefinition`))&&A(e.value)?e.value:null,Nse=e=>{let t=jo(e);return t&&A(t)?t.body??null:null},Pse=C({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||!Za(n))return;let r=t.body??[],i=r.find(e=>_o(e)===`componentWillUnmount`),a=Do(i?jo(i):null,t,e),o=kse(i?jo(i):null,t,e);for(let n of r){let r=_o(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=Nse(n);if(!i)continue;let s=mse(i,t,e.scopes),c=Ase(i,t,e.scopes),l=jse(i,t,e),u=use(i,t,e),d=[];if(bo(i,t,n=>{if(e.cfg&&!U(n,e))return!1;let r=Mse(n,s,c,l,t,e,u.has(n)||dse(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Ose(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 qa(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}}}})}),Fse=(e,t,n,r)=>{if(!A(e)||e.generator||r.has(e))return!1;r.add(e);let i=e.params[t];if(!v(i,`Identifier`))return!1;let a=n.symbolFor(i);if(!a)return!1;let o=M(e.body);if(v(o,`BlockStatement`)){let e=o.body[0];if(v(e,`ExpressionStatement`))o=e.expression;else if(v(e,`ReturnStatement`)&&e.argument)o=e.argument;else return!1}if(o=M(o),!v(o,`CallExpression`)||o.optional)return!1;if(v(o.callee,`MemberExpression`)&&N(o.callee)===`stopPropagation`&&v(o.callee.object,`Identifier`)&&n.symbolFor(o.callee.object)===a)return!0;let s=P(o.callee,n);return s?o.arguments.some((e,t)=>v(e,`Identifier`)&&n.symbolFor(e)===a&&Fse(s,t,n,new Set(r))):!1},Ise=(e,t)=>{if(!v(e.value,`JSXExpressionContainer`))return!1;let n=P(e.value.expression,t);return!!(n&&Fse(n,0,t,new Set))},Mo=(e,t,n={})=>{if(!e||!t)return e===t;let r=M(e),i=M(t);if(r!==e||i!==t)return Mo(r,i,n);if(e.type!==t.type)return!1;if(v(e,`ThisExpression`))return!0;if(v(e,`Identifier`)&&v(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(v(e,`PrivateIdentifier`)&&v(t,`PrivateIdentifier`))return e.name===t.name;if(v(e,`Literal`)&&v(t,`Literal`))return e.value===t.value;if(v(e,`MemberExpression`)&&v(t,`MemberExpression`))return e.computed===t.computed?Mo(e.object,t.object,n)&&Mo(e.property,t.property,e.computed?n:{}):!1;if(v(e,`CallExpression`)&&v(t,`CallExpression`)){if(!Mo(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>Mo(e,i[t],n)):!1}return!1},Lse=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),Rse=/button|link|nav|anchor/i,zse=/(?:button|link|anchor)$/i,Bse=/^[A-Z]/,Vse=[`onClick`,`onPress`],Hse=e=>ta(M(e)),No=(e,t)=>{let n=M(e);if(ta(n))return!0;let r=x(n,t);return r?.kind!==`const`||!r.initializer?!1:ta(M(r.initializer))},Po=(e,t,n=new Set)=>{let r=M(e);if(No(r,t))return null;if(v(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return No(e,t)?Po(i,t,n):No(i,t)?Po(e,t,n):null}if(v(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&v(e.declarationNode,`VariableDeclarator`)&&v(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Po(e.initializer,t,n)):r}if(v(r,`ArrowFunctionExpression`)||v(r,`FunctionExpression`)||v(r,`FunctionDeclaration`)){let e=M(r.body);if(!v(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return v(t,`ExpressionStatement`)?t.expression:v(t,`ReturnStatement`)&&t.argument?M(t.argument):null}return r},Use=(e,t)=>!e.value||!v(e.value,`JSXExpressionContainer`)?null:Po(e.value.expression,t),Fo=(e,t)=>{let n=I(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(v(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!v(n.value,`JSXExpressionContainer`))return!0;let r=M(n.value.expression);return!v(r,`Literal`)||r.value!==!1},Wse=(e,t)=>{let n=I(e.attributes,t);if(!n?.value)return!1;if(v(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!v(n.value,`JSXExpressionContainer`))return!0;let r=M(n.value.expression);return v(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!Hse(r)},Io=e=>{if(v(e,`JSXText`))return e.value.trim().length>0;if(v(e,`JSXElement`))return Lo(e);if(v(e,`JSXFragment`))return e.children.some(e=>Io(e));if(!v(e,`JSXExpressionContainer`))return!1;let t=M(e.expression);return v(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:Hse(t)?!1:v(t,`JSXElement`)?Lo(t):v(t,`JSXFragment`)?t.children.some(e=>Io(e)):!0},Lo=e=>Wse(e.openingElement,`aria-label`)||Wse(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Io(e)),Gse=e=>{let t=I(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=si(t.value);return n!==null&&n<0},Kse=(e,t)=>sr(e,t)||Fo(e,`hidden`),qse=(e,t)=>{let n=e.openingElement,r=cr(n.name);if(!r)return!1;if(Xr.has(r)){if(!Lse.has(r))return!1}else if(t){if(!Bse.test(r)||!zse.test(r))return!1}else if(!Bse.test(r)||!Rse.test(r))return!1;return t?r===`a`&&!I(n.attributes,`href`)||Fo(n,`disabled`)||Fo(n,`isDisabled`)||Fo(n,`aria-disabled`)||Gse(n)?!1:Lo(e):!0},Jse=(e,t,n,r,i)=>{let a=e=>Jse(e,t,n,r,i);if(v(e,`JSXElement`)){if(i){let t=I(e.openingElement.attributes,`onClick`),r=I(e.openingElement.attributes,`onClickCapture`);if(t&&Ise(t,n)||r&&Ise(r,n))return!1}if(t&&Kse(e.openingElement,r))return!1;if(qse(e,t!==null)){if(!t)return!0;for(let r of Vse){let i=I(e.openingElement.attributes,r),a=i?Use(i,n):null;if(a&&Mo(t,a))return!0}}return e.children.some(e=>a(e))}return v(e,`JSXFragment`)?e.children.some(e=>a(e)):t?v(e,`JSXExpressionContainer`)?a(e.expression):v(e,`LogicalExpression`)?a(e.left)||a(e.right):v(e,`ConditionalExpression`)?a(e.consequent)||a(e.alternate):!1:!1},Ro=(e,t,n,r,i=!1)=>{if(!e||!v(e,`JSXElement`))return!1;let a=t?Use(t,n):null;return t&&!a?!1:e.children.some(e=>Jse(e,a,n,r,i))},Yse=new Set([`focus`,`select`]),Xse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Zse=new Set([`getElementById`,`querySelector`]),Qse=new Set([`global`,`globalThis`,`window`]),$se=e=>{if(!e)return null;let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return null;let n=M(t.callee);if(!v(n,`MemberExpression`))return null;let r=n.property;return v(r,`Identifier`)?r.name:null},ece=(e,t)=>{let n=$se(e);return n!==null&&(Yse.has(n)||t&&Xse.has(n))},tce=(e,t)=>{let n=M(e);return v(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!v(n,`MemberExpression`)||!v(n.object,`Identifier`)||!v(n.property,`Identifier`)||n.property.name!==`document`?!1:Qse.has(n.object.name)&&t.isGlobalReference(n.object)},nce=e=>{let t=M(e);return v(t,`Identifier`)||v(t,`Literal`)?!0:v(t,`TemplateLiteral`)&&t.expressions.every(e=>nce(e))},rce=(e,t)=>{if(!v(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!v(n.id,`Identifier`)||!n.init)return null;let r=M(n.init);if(!v(r,`CallExpression`)||r.arguments.length!==1||v(r.arguments[0],`SpreadElement`)||!nce(r.arguments[0]))return null;let i=M(r.callee);return!v(i,`MemberExpression`)||!v(i.property,`Identifier`)||!Zse.has(i.property.name)||!tce(i.object,t)?null:n.id.name},ice=e=>v(e,`ReturnStatement`)?e.argument===null:!v(e,`BlockStatement`)||e.body.length!==1?!1:ice(e.body[0]),ace=e=>{if(!v(e,`IfStatement`)||e.alternate||!ice(e.consequent))return!1;let t=M(e.test),n=v(t,`ChainExpression`)?t.expression:t;if(!v(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=M(n.callee),i=v(r,`MemberExpression`)?M(r.object):null;return v(r,`MemberExpression`)&&v(r.property,`Identifier`)&&r.property.name===`closest`&&v(i,`MemberExpression`)&&v(i.object,`Identifier`)&&v(i.property,`Identifier`)&&i.property.name===`target`&&v(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},oce=(e,t)=>{if(!v(e,`ExpressionStatement`))return!1;let n=M(e.expression);if(!v(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=M(n.callee);if(!v(r,`MemberExpression`))return!1;let i=M(r.object);return v(i,`Identifier`)&&i.name===t&&v(r.property,`Identifier`)&&r.property.name===`focus`},sce=(e,t,n)=>{if(!e)return!1;if(ece(e,n))return!0;if(!v(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!ace(r[0]),a=r[i],o=a?rce(a,t):null;return o?r.length===i+2&&oce(r[i+1],o):i>0?!1:r.every(e=>v(e,`ExpressionStatement`)&&ece(e.expression,n))},cce=(e,t)=>ta(e)&&(!v(e,`Identifier`)||t.isGlobalReference(e)),zo=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ConditionalExpression`)){let e=M(r.consequent),i=M(r.alternate),a=null;return cce(e,t)&&(a=zo(i,t,n)),cce(i,t)&&(a=zo(e,t,n)),a?{...a,isConditional:!0}:null}if(v(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),zo(e.initializer,t,n))}return v(r,`ArrowFunctionExpression`)||v(r,`FunctionExpression`)||v(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},lce=(e,t)=>{let n=zo(e,t);return n?sce(n.handlerFunction.body??null,t,!n.isConditional):!1},uce=(e,t)=>!e.value||!v(e.value,`JSXExpressionContainer`)?!1:lce(e.value.expression,t),Bo=e=>{let t=I(e.attributes,`role`);if(!t)return!1;let n=nr(t);return n!==null&&zr.has(n)},Vo=e=>{if(v(e,`Identifier`)||v(e,`PrivateIdentifier`))return e.name},dce=e=>{if(v(e,`FunctionExpression`)||v(e,`ArrowFunctionExpression`))return e},fce=(e,t)=>{for(let n of e.body){if(!v(n,`MethodDefinition`)&&!v(n,`PropertyDefinition`)||Vo(n.key)!==t)continue;let e=dce(n.value);if(e)return e}},pce=(e,t)=>{for(let n of e.properties){if(!v(n,`Property`)||Vo(n.key)!==t)continue;let e=dce(n.value);if(e)return e}},Ho=e=>{let t=Vo(e.property);if(t===void 0)return;let n=e.object;if(v(n,`ThisExpression`)){let n=e.parent;for(;n;){if(v(n,`ClassBody`))return fce(n,t);if(v(n,`ObjectExpression`)){let e=pce(n,t);if(e)return e}n=n.parent}return}if(v(n,`Identifier`)){let e=O(n,n.name);if(v(e?.initializer,`ObjectExpression`))return pce(e.initializer,t)}},mce=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),hce=e=>{if(!e)return!1;let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return!1;let n=t.callee;return!v(n,`MemberExpression`)||!v(n.property,`Identifier`)?!1:mce.has(n.property.name)},gce=e=>{if(!e)return!1;if(hce(e))return!0;if(v(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!v(e,`ExpressionStatement`)||!hce(e.expression))return!1;return!0}return!1},Uo=e=>{if(!e.value||!v(e.value,`JSXExpressionContainer`))return!1;let t=M(e.value.expression);return v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)?gce(t.body):v(t,`MemberExpression`)?gce(Ho(t)?.body):!1},_ce=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],vce=[`onClick`,`onClickCapture`],yce=new Set([...vce,..._ce].map(e=>e.toLowerCase())),bce=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),xce=(e,t)=>{let n=M(e);if(v(n,`ObjectExpression`))return n;if(!v(n,`Identifier`))return null;let r=x(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=M(r.initializer);return v(i,`ObjectExpression`)?i:null},Sce=(e,t,n,r)=>{let i=xce(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(v(e,`SpreadElement`)){if(!Sce(e.argument,t,n,r)){a=!1;break}continue}if(!v(e,`Property`)){a=!1;break}let i=T(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(bce.has(o)){a=!1;break}yce.has(o)&&n.set(o,e.value)}return r.delete(i),a},Cce=(e,t)=>{let n=new Map;for(let r of e)if(v(r,`JSXSpreadAttribute`)&&!Sce(r.argument,t,n,new Set))return null;return n},wce=new Set([`tr`,`td`,`th`,`canvas`]),Tce=new Set([`motion`,`styled`]),Ece=e=>{let t=e.name;if(!v(t,`JSXMemberExpression`))return null;let n=t.object;if(!v(n,`JSXIdentifier`)||!Tce.has(n.name))return null;let r=t.property.name;return r&&Xr.has(r)?r:null},Dce=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Oce=e=>{let t=I(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!v(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Dce.has(r.toLowerCase()))},kce=e=>{if(!v(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!v(e,`MemberExpression`))return null;let t=e.property;return v(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},Wo=e=>{if(!e||typeof e!=`object`)return!1;if(kce(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`&&Wo(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&Wo(n))return!0}return!1},Ace=e=>{let t=M(e);if(v(t,`Identifier`)){let e=O(t,t.name);if(!e?.initializer)return null;t=M(e.initializer)}return v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`)?t:null},jce=e=>!e.value||!v(e.value,`JSXExpressionContainer`)?null:Ace(e.value.expression),Mce=e=>{let t=jce(e);return t?Wo(t.body??null):!1},Nce=(e,t)=>e===`li`&&!!(I(t.attributes,`onMouseEnter`)||I(t.attributes,`onMouseOver`)),Pce=C({id:`click-events-have-key-events`,diffScope:`jsx-element`,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=Nr(e.settings),n=It(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Ece(r)??ir(r,e.settings);if(!Xr.has(i)||i===`label`||!wce.has(i)&&oi(i,r))return;let a=Cce(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=I(r.attributes,`onClick`)??I(r.attributes,`onClickCapture`),c=vce.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Uo(s)||s&&uce(s,e.scopes)||c&&lce(c,e.scopes))return;let l=c?Ace(c):null;l&&Wo(l.body??null)||Oce(r)||Nce(i,r)||s&&Mce(s)||Ro(r.parent,null,e.scopes,e.settings,!I(r.attributes,`onClickCapture`)&&!o.has(`onclickcapture`))||s&&Ro(r.parent,s,e.scopes,e.settings)||sr(r,e.settings)||Bo(r)||_ce.some(e=>I(r.attributes,e)||o.has(e.toLowerCase()))||e.report({node:r.name,message:"Keyboard users can't trigger this click handler because there's no keyboard one, so add `onKeyUp`, `onKeyDown`, or `onKeyPress`."})}}}}),Fce=qn({id:`client-localstorage-no-version`,severity:`warn`,category:`Bugs`,requires:[`react`],tags:[`test-noise`],title:`Unversioned localStorage key`,recommendation:`Retired: Storage can keep its version in the payload or use a separate migration path.`}),Go=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ice=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Go(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Ko=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],qo=(e,t,n,r)=>{if(!v(t,`MemberExpression`))return;let i=N(t),a=V(t.object,r);i&&a&&(Go(e.memberMutationCandidatesByReceiverIdentity,a,n),Ice(e,a,i,n))},Lce=(e,t,n)=>{if(v(t,`AssignmentExpression`)){let r=M(t.left),i=V(r,n);i&&Go(e.receiverAssignmentCandidatesByIdentity,i,t),qo(e,r,t,n)}else v(t,`UnaryExpression`)&&t.operator===`delete`&&qo(e,M(t.argument),t,n);if(!v(t,`CallExpression`))return;let r=M(t.callee);if(!v(r,`MemberExpression`)||N(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(v(i,`Literal`)&&typeof i.value==`string`&&a&&!v(a,`SpreadElement`)){let r=V(a,n);r&&(Go(e.memberMutationCandidatesByReceiverIdentity,r,t),Ice(e,r,i.value,t))}},Jo=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=M(e.callee);if(!v(r,`MemberExpression`))return!1;let i=M(r.object);return N(r)===`defineProperty`&&v(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&v(e.arguments[1],`Literal`)&&e.arguments[1].value===t},Rce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Yo=(e,t)=>{let n=M(e);return v(n,`MemberExpression`)&&N(n)===t?n.object:null},Xo=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Zo=(e,t)=>{let n=v(e,`FunctionDeclaration`)?e.id:v(e.parent,`VariableDeclarator`)&&e.parent.init===e&&v(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(!v(r,`CallExpression`)||M(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},zce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!v(i,`MethodDefinition`)||!v(a,`MethodDefinition`)||i.parent!==a.parent||!v(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Qo=(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(zce(o,s,e,n))return!0;if(Xo(o,s)){let t=Zo(s,n);return!t&&v(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Qo(e,t,n,a)))}if(Xo(s,o)){let r=Zo(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Qo(e,t,n,a)))}let r=Zo(o,n),i=Zo(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Qo(e,t,n,a)||r.some(e=>Qo(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},Bce=(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},Vce=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&A(M(i))?M(i):null},Hce=(e,t,n,r)=>$o(e,n).some(e=>e.callExpression!==t&&Qo(e.callExpression,t,n)&&es(e.callExpression,e.argumentIndex,n,r,new Map)),Uce=(e,t,n,r)=>{let i=Vce(M(e),n);if(!i||!A(i))return!1;let a=[];return s(i.body,e=>{if(e!==i.body&&A(e))return!1;v(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let i=V(e.argument,n);if(!i)return!1;let a=M(e.argument),o=v(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&Hce(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Yo(v(r,`AssignmentExpression`)?r.left:v(r,`UnaryExpression`)?r.argument:r,t);return v(r,`CallExpression`)&&(i=Jo(r,t,n)),i&&Qo(r,e,n)})})},Wce=new WeakMap,$o=(e,t,n=new Set)=>{let r=Wce.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 $o(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,M(t)===e?(e=t,r=!0):v(t,`Property`)&&t.value===e&&v(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(v(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||v(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||v(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(v(i,`VariableDeclarator`)&&i.init===e&&v(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(v(i,`AssignmentExpression`)&&i.right===e){let e=M(i.left),n=v(e,`Identifier`)?e:v(e,`MemberExpression`)&&v(M(e.object),`Identifier`)?M(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(v(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 Wce.set(e,c),c},Gce=(e,t,n)=>{if(!A(e))return!1;if(v(e,`ArrowFunctionExpression`)&&!v(e.body,`BlockStatement`))return V(e.body,n)===t;let r=[];return s(e.body,t=>{if(t!==e.body&&A(t))return!1;v(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>v(e,`ReturnStatement`)&&e.argument&&V(e.argument,n)===t)},Kce=(e,t)=>{let n=e;for(;n.parent&&M(n.parent)===n;)n=n.parent;let r=n.parent;if(!v(r,`VariableDeclarator`)||r.init!==n||!v(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},es=(e,t,n,r,i)=>{let a=Vce(e,n);if(!a||!A(a))return!0;if(a.generator)return!1;let o=i.get(a)??new Set;if(o.has(t))return!1;o.add(t),i.set(a,o);let s=a.params[t];if(!v(s,`Identifier`))return!0;let c=n.scopes.ownScopeFor(a)?.symbolsByName.get(s.name);if(!c)return!0;let l=`symbol:${c.id}`;if(r.memberMutationCandidatesByReceiverIdentity.get(l)?.some(e=>n.cfg.enclosingFunction(e)===a)||$o(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?es(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!Gce(a,l,n))return!1;let u=Kce(e,n);return u?$o(u,n).some(e=>es(e.callExpression,e.argumentIndex,n,r,i)):!1},qce=(e,t,n,r,i,a=[],o)=>{if(Uce(t,n,i,e))return!0;let s=V(t,i),c=M(t),l=v(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&Hce(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Ko(e,s,n):[],...a.flatMap(t=>Ko(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!Rce(i.scopes.scopeFor(e),u)&&!Qo(e,r,i))continue;let t=null;if(v(e,`AssignmentExpression`)){if(s!==null&&V(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Qo(e,r,i)){d=!0;break}continue}t=Yo(e.left,n)}else if(v(e,`UnaryExpression`)&&e.operator===`delete`)t=Yo(e.argument,n);else if(v(e,`CallExpression`)&&Jo(e,n,i)){let n=e.arguments[0];t=n&&!v(n,`SpreadElement`)?n:null}if(!t)continue;let c=V(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Qo(e,r,i)&&(d=!0))}return d||Bce(p,r,i)},Jce=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>Lce(t,n,e),hasProvenMutation:(n,r,i,a,o)=>qce(t,n,r,i,e,a,o)}},ts=(e,t)=>!!(e&&v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&e.property.name===t),ns=e=>Qr(e)||(e.kind!==`let`&&e.kind!==`var`||!v(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),rs=e=>v(e,`Identifier`)?e.name:v(e,`Literal`)&&typeof e.value==`string`?e.value:null,is=e=>{if(!v(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&v(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!v(n,`Property`)||!v(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!v(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!v(a,`TSTypeLiteral`))return null;let o=rs(n.key);if(!o)return null;for(let e of a.members)if(v(e,`TSPropertySignature`)&&rs(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},as=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},Yce=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=M(e.callee);if(v(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=M(n.object);return v(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},Xce=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(`.`)),Zce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Qce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),$ce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),ele=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),os=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`],tle=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:Xce.has(e)||Zce.test(e),ss=(e,t,n)=>{if(v(e,`TSTypeReference`)){if(!v(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return tle(r,n)&&!as(e,r,t)&&!we(e,r)}if(!v(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(v(i,`TSNullKeyword`)||v(i,`TSUndefinedKeyword`))){if(!ss(i,t,n))return!1;r=!0}return r},nle=(e,t)=>!v(e,`TSTypeReference`)||!v(e.typeName,`Identifier`)||!ss(e,t,`dom-event-target`)?null:e.typeName.name,cs=(e,t,n)=>v(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),ls=(e,t,n=new Set)=>{let r=M(e);if(cs(r,`window`,t))return[`Window`,`EventTarget`];if(cs(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(v(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=is(e),a=i?nle(i,t):null;if(a)return os(a);let o=ns(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),ls(o,t,s)}if(v(r,`NewExpression`)){let e=M(r.callee);if(v(e,`Identifier`)&&Qce.has(e.name))return os(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(v(r,`MemberExpression`)){let e=N(r);if(e===`body`||e===`documentElement`)return os(`HTMLElement`)}if(v(r,`CallExpression`)){if(Yce(r,t))return os(`MediaQueryList`);let e=M(r.callee),i=v(e,`MemberExpression`)?N(e):null;if(i===`matchMedia`&&v(e,`MemberExpression`)&&ls(e.object,t,n).includes(`Window`))return os(`MediaQueryList`);if(i===`createElement`)return os(`HTMLElement`);if(i===`createElementNS`)return os(`SVGElement`);if(i&&$ce.has(i))return os(`Element`)}return[`EventTarget`]},us=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Qce]).some(t=>ds(e,t,n,new Set)),rle=(e,t,n)=>{let r=e,i=!1;for(;v(r,`TSAsExpression`)||v(r,`TSTypeAssertion`)||v(r,`TSSatisfiesExpression`);){if(ss(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(v(a,`Identifier`)){let e=t.symbolFor(a),n=e?Qr(e):null;if(!n)return!1;a=M(n)}return i&&v(a,`Identifier`)||i&&v(a,`MemberExpression`)||i&&v(a,`ObjectExpression`)?!1:i&&v(a,`NewExpression`)?us(a.callee,n,t):i},ile=e=>{if(!v(e,`MemberExpression`)||!v(M(e.object),`ThisExpression`))return null;let t=N(e);if(!t)return null;let n=e.parent;for(;n&&!v(n,`ClassBody`);){if((v(n,`FunctionDeclaration`)||v(n,`FunctionExpression`))&&!v(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!v(e,`PropertyDefinition`)||e.static)&&rs(e.key)===t)return e;return null},ale=e=>{if(!v(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&v(t,`TSTypeAnnotation`)?t.typeAnnotation:null},ole=(e,t,n)=>{if(!v(e,`CallExpression`))return null;let r=M(e.callee);if(!v(r,`Identifier`))return null;let i=t.symbolFor(r);if(!i||n.has(i.id)||i.kind!==`const`&&!(i.kind===`function`&&i.references.every(e=>e.flag===`read`)))return null;let a=i.initializer??i.declarationNode;return!A(a)||a.async||a.generator?null:(n.add(i.id),a)},ds=(e,t,n,r)=>{let i=M(e);if(v(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=Qr(e);return a?(r.add(e.id),ds(a,t,n,r)):!1}if(!v(i,`MemberExpression`)||N(i)!==t)return!1;let a=M(i.object);return cs(a,`window`,n)||cs(a,`globalThis`,n)},sle=(e,t,n)=>{let r=M(e);for(;v(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Qr(e);if(!i)return!1;n.add(e.id),r=M(i)}if(!v(r,`CallExpression`)||!D(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!D(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!v(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&ss(i,t,`dom-event-target`))},fs=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(rle(e,n,t))return!0;let a=M(e);if(v(a,`Identifier`)){if(i&&(cs(a,`document`,n)||cs(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=is(e);if(o&&ss(o,n,t))return!0;let s=ns(e);return s?(r.add(e.id),fs(s,t,n,r)):!1}if(v(a,`NewExpression`))return us(a.callee,t,n);if(v(a,`CallExpression`)){let e=M(a.callee);if(i&&v(e,`MemberExpression`)&&$ce.has(N(e)??``)&&fs(e.object,t,n,r))return!0;let o=ole(a,n,r);return!!(o&&Ue(o,n,e=>fs(e,t,n,new Set(r)),void 0,`every`))}if(v(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(v(e,`Literal`)&&e.value===null)&&!(v(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>fs(e,t,n,new Set(r)))}if(!v(a,`MemberExpression`))return!1;let o=ile(a);if(o&&v(o,`PropertyDefinition`)){let e=ale(o);if(e&&ss(e,n,t)||o.value&&fs(o.value,t,n,r))return!0}if(!i)return!1;let s=N(a);if(s===`current`)return sle(a.object,n,r);let c=M(a.object);return s===`document`&&(cs(c,`window`,n)||cs(c,`globalThis`,n))?!0:s!==null&&ele.has(s)&&fs(c,t,n,r)},cle=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,lle=e=>cle.test(Ke(e??``)),ps=(e,t)=>{let n=M(e);return v(n,`Identifier`)?t.has(n.name):v(n,`SpreadElement`)?ps(n.argument,t):v(n,`ObjectExpression`)?n.properties.some(e=>v(e,`Property`)?ps(e.value,t):v(e,`SpreadElement`)&&ps(e.argument,t)):v(n,`ArrayExpression`)?n.elements.some(e=>e&&ps(e,t)):v(n,`ConditionalExpression`)?ps(n.consequent,t)||ps(n.alternate,t):v(n,`LogicalExpression`)?ps(n.left,t)||ps(n.right,t):v(n,`SequenceExpression`)?n.expressions.some(e=>ps(e,t)):!1},ms=(e,t,n)=>{let r=M(t);if(v(e,`Identifier`)){ps(r,n)&&n.add(e.name);return}if(v(e,`AssignmentPattern`)){ms(e.left,r,n);return}if(v(e,`ObjectPattern`)&&v(r,`ObjectExpression`)){for(let t of e.properties){if(!v(t,`Property`))continue;let e=rs(t.key);if(!e)continue;let i=r.properties.find(t=>v(t,`Property`)&&rs(t.key)===e);v(i,`Property`)&&ms(t.value,i.value,n)}return}if(v(e,`ArrayPattern`)&&v(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&ms(i,e,n)}},ule=(e,n,r)=>{if(!v(e,`CallExpression`)||!r.filename)return!1;let i=M(e.callee);if(!v(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,c=o.parent,l=t(o);if(!l||!v(c,`ImportDeclaration`)||typeof c.source.value!=`string`)return!1;let u=Le(r.filename,c.source.value,l);if(!u||!A(u))return!1;let d=u.params[n];if(!v(d,`Identifier`))return!1;let f=new Set([d.name]),p=!1;return s(u.body,e=>{if(p)return!1;if(v(e,`VariableDeclarator`)&&e.init){ms(e.id,e.init,f);return}if(v(e,`AssignmentExpression`)&&v(e.left,`Identifier`)&&ps(e.right,f)){f.add(e.left.name);return}if(v(e,`CallExpression`)){let t=M(e.callee);(v(t,`MemberExpression`)&&N(t)===`preventDefault`&&ps(t.object,f)||e.arguments.some(e=>!v(e,`SpreadElement`)&&ps(e,f)))&&(p=!0);return}if(v(e,`NewExpression`)&&e.arguments.some(e=>!v(e,`SpreadElement`)&&ps(e,f))){p=!0;return}let t=v(e,`AssignmentExpression`)?M(e.left):null;v(e,`AssignmentExpression`)&&(v(t,`MemberExpression`)&&ps(t.object,f)||ps(e.right,f))&&(p=!0)}),!p},dle=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),fle=new Set([`catch`,`finally`,`then`]),hs=(e,t,n=new Set)=>{let r=(e,n)=>{let i=M(e);if(A(i))return i.async;if(!v(i,`Identifier`))return!1;let a=t.symbolFor(i);if(!a||n.has(a.id))return!1;let o=a.initializer??a.declarationNode,s=new Set(n);return s.add(a.id),r(o,s)},i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);if(!e||!e.initializer||n.has(e.id))return!1;let r=new Set(n);return r.add(e.id),hs(e.initializer,t,r)}if(v(i,`NewExpression`)){let e=M(i.callee);return v(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(v(a,`Identifier`))return r(a,n);if(!v(a,`MemberExpression`))return!1;let o=M(a.object);return fle.has(N(a)??``)?hs(a.object,t,n):!!(dle.has(N(a)??``)&&v(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},gs=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),ple=new Set([`catch`,`finally`,`then`]),_s=e=>{if(!A(e))return!1;let t=!1;return s(e,n=>{if(t||n!==e&&A(n))return!1;v(n,`CallExpression`)&&v(n.callee,`MemberExpression`)&&N(n.callee)===`preventDefault`&&(t=!0)}),t},mle=(e,t)=>{let n=!1;return s(e,e=>{if(n)return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&v(e.left,`Identifier`)&&e.left.name===t&&_s(e.right)&&(n=!0)}),n},hle=e=>{if(!e)return!1;if(_s(e))return!0;if(v(e,`Identifier`)){let t=O(e,e.name);return t?_s(t.initializer??void 0)?!0:mle(t.scopeOwner,e.name):!1}if(v(e,`MemberExpression`)){let t=Ho(e);return t?_s(t):!1}return!1},vs=(e,t)=>{if(!e)return;let n=M(e);if(A(n))return n;if(v(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&A(r))return r;let i=O(n,n.name),a;return e&&i&&s(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(v(r,`AssignmentExpression`)&&r.operator===`=`&&v(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=M(r.right);a=A(e)?e:void 0}}),a}return v(n,`MemberExpression`)?Ho(n):void 0},gle=(e,t,n)=>{if(!ule(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(M(e)===r||v(e,`UnaryExpression`)&&e.operator===`!`||v(e,`LogicalExpression`)){r=e;continue}return v(e,`IfStatement`)&&e.test===r||v(e,`ConditionalExpression`)&&e.test===r||v(e,`WhileStatement`)&&e.test===r||v(e,`DoWhileStatement`)&&e.test===r||v(e,`ForStatement`)&&e.test===r}return!1},_le=(e,t)=>{let n=vs(e,t);if(!n){let n=e?M(e):void 0;if(!n||!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&(r.kind===`let`||r.kind===`var`)&&r.references.some(e=>e.identifier.range[0]<n.range[0]&&e.flag!==`read`))}let r=new Map,i=(e,n=new Set)=>{let r=M(e);if(v(r,`Identifier`)){if(gs.has(r.name)&&t.scopes.isGlobalReference(r))return!0;let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let a=Qr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!v(r,`MemberExpression`))return!1;let a=M(r.object);return gs.has(N(r)??``)&&v(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&M(n.parent)===M(n);)n=n.parent;let r=n.parent;if(v(r,`NewExpression`)){let e=M(r.callee);return r.arguments.some(e=>e===n)&&v(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!v(r,`CallExpression`))return!1;if(M(r.callee)===M(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=M(r.callee);if(i(a))return!1;if(v(a,`Identifier`)||!v(a,`MemberExpression`))return!0;let o=N(a);return!(ple.has(o??``)&&hs(a.object,t.scopes)||o===`addEventListener`&&fs(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!A(e))return!1;let c=r.get(e)??new Set;if(c.has(n))return!1;c.add(n),r.set(e,c);let l=e.params[n];if(!l)return!i;let u=v(l,`AssignmentPattern`)?l.left:l;if(!v(u,`Identifier`))return!(i&&v(u,`ObjectPattern`));let d=t.scopes.symbolFor(u);if(!d)return!1;let f=new Set([d]),p=new Set,m=e=>{let n=M(e);if(!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&f.has(r))},h=e=>{let n=M(e);if(m(n))return!0;if(v(n,`SpreadElement`))return h(n.argument);if(v(n,`MemberExpression`)){let e=M(n.object);if(v(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&p.has(n))return!0}let r=N(n);if(v(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>v(e,`Property`)&&Vo(e.key)===r);return!!(v(t,`Property`)&&h(t.value))}if(v(e,`ArrayExpression`)&&v(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&h(t))}return!1}return v(n,`ObjectExpression`)?n.properties.some(e=>v(e,`Property`)?h(e.value):v(e,`SpreadElement`)&&h(e.argument)):v(n,`ArrayExpression`)?n.elements.some(e=>e&&h(e)):v(n,`ConditionalExpression`)?h(n.consequent)||h(n.alternate):v(n,`LogicalExpression`)?h(n.left)||h(n.right):v(n,`SequenceExpression`)?n.expressions.some(h):!1},g=(e,n)=>{let r=M(n);if(v(e,`Identifier`)){if(!h(r))return;let n=t.scopes.symbolFor(e);n&&f.add(n);return}if(v(e,`AssignmentPattern`)){g(e.left,r);return}if(v(e,`RestElement`)&&v(e.argument,`Identifier`)){if(!h(r))return;let n=t.scopes.symbolFor(e.argument);n&&p.add(n);return}if(v(e,`ObjectPattern`)&&v(r,`ObjectExpression`)){for(let t of e.properties){if(v(t,`RestElement`)){g(t,r);continue}if(!v(t,`Property`))continue;let e=Vo(t.key);if(!e)continue;let n=r.properties.find(t=>v(t,`Property`)&&Vo(t.key)===e);v(n,`Property`)&&g(t.value,n.value)}return}if(v(e,`ArrayPattern`)&&v(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&g(n,e)}},_=!1;return s(e.body,n=>{if(_||n!==e.body&&A(n)&&!a(n))return!1;if(v(n,`VariableDeclarator`)&&n.init){g(n.id,n.init);return}if(v(n,`AssignmentExpression`)&&h(n.right)){if(v(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&f.add(e)}else _=!0;return}if(v(n,`AssignmentExpression`)){let e=M(n.left),t=M(n.right);if(v(e,`MemberExpression`)&&N(e)===`returnValue`&&m(e.object)&&v(t,`Literal`)&&t.value===!1){_=!0;return}}if(v(n,`ReturnStatement`)&&n.argument&&h(n.argument)){_=!0;return}if(v(n,`NewExpression`)){n.arguments.some(e=>!v(e,`SpreadElement`)&&h(e))&&(_=!0);return}if(!v(n,`CallExpression`))return;let r=M(n.callee);if(v(r,`MemberExpression`)&&N(r)===`preventDefault`&&m(r.object)){_=!0;return}let i=n.arguments.findIndex(e=>h(e));if(i<0)return;let s=vs(n.callee,t);(!s&&!gle(n,i,t)||s&&o(s,i))&&(_=!0)}),_};return o(n,0,!0)},ys=(e,t)=>!!e.properties?.some(e=>v(e,`Property`)&&v(e.key,`Identifier`)&&e.key.name===`passive`&&v(e.value,`Literal`)&&e.value.value===t),bs=C({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(lle(e.filename))return Jt;let t=Jce(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=M(n.callee);if(!ts(a,`addEventListener`)||!fs(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,ls(a.object,e.scopes),t=>fs(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!v(o,`Literal`)||typeof o.value!=`string`||!mee.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||v(c,`SpreadElement`))return;let l=vs(c,e)??c,u=r.get(l);if(u===void 0&&(u=hle(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=_le(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!v(f,`ObjectExpression`)||ys(f,!1)||ys(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),ts(M(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),xs=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},Ss=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},Cs=e=>xs(e)||Ss(e),vle=(e,t)=>{let n=t?Cn(e):e;return v(n,`Identifier`)?n.name:v(n,`MemberExpression`)&&v(n.property,`Identifier`)?n.property.name:null},ws=(e,t=!1)=>{let n=S(e);for(;;){let e=n.parent;if(!e||!v(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=vle(e.callee,t);if(!r||!fn.has(r))return n;n=S(e)}},yle=(e,t)=>{let n=ws(e,t),r=n.parent;return r&&v(r,`VariableDeclarator`)&&v(r.id,`Identifier`)&&r.init===n&&Cs(r.id.name)?r.id.name:null},Ts=(e,t=!1)=>(v(e,`FunctionDeclaration`)||v(e,`FunctionExpression`))&&e.id?Cs(e.id.name)?e.id.name:null:yle(e,t),Es=e=>v(e,`MemberExpression`)&&!e.computed&&v(e.property,`Identifier`)?e.property.name:null,ble=[`react`,`use-context-selector`,`react-tracked`],Ds=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!v(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!ble.includes(t.source.value)?null:t.source.value},Os=e=>Ds(e)!==null&&!!(e&&(v(e.declarationNode,`ImportDefaultSpecifier`)||v(e.declarationNode,`ImportNamespaceSpecifier`))),xle=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!v(n.declarationNode,`VariableDeclarator`)||!v(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!v(r,`Property`)||T(r,{allowComputedString:!0})!==`createContext`)return!1;let i=M(n.initializer);return v(i,`Identifier`)&&Os(x(i,t))},Sle=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){if(xle(n,t))return!0;let e=x(n,t);return Ds(e)!==null&&!!(e&&Pn(e.declarationNode)===`createContext`)}if(!v(n,`MemberExpression`)||(Es(n)??(n.computed&&v(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=M(n.object);return v(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Os(x(r,t)):!1},ks=(e,t)=>{let n=M(e);return v(n,`CallExpression`)&&Sle(n.callee,t)},Cle=(e,t)=>{let n=new Set;if(!v(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(v(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!v(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!v(r,`VariableDeclarator`)||!v(r.id,`Identifier`)||!r.init||!E(r.init)||!ks(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},As=e=>{if(v(e,`FunctionDeclaration`)&&v(e.id,`Identifier`))return e.id;let t=S(e),n=t.parent;if(v(n,`VariableDeclarator`)&&v(n.id,`Identifier`))return n.id;if(v(n,`AssignmentExpression`)&&n.right===t&&v(n.left,`Identifier`))return n.left;if(v(n,`CallExpression`)){let e=n.parent;if(v(e,`VariableDeclarator`)&&v(e.id,`Identifier`))return e.id}return null},js=e=>As(e)?.name??null,Ms=(e,t)=>{let n=As(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[]},wle=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Ns=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(v(t,`VariableDeclaration`))return t.kind===`const`;if(!wle.has(t.type))return!1;t=t.parent??null}return!1},Tle=(e,t)=>{if(!v(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=Pn(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Ele=(e,t)=>{if(!Tle(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=$e(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Dle=(e,t,n,r)=>{if(!v(e,`JSXIdentifier`))return!1;if(r&&Tle(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},Ole=(e,t,n)=>v(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Dle(e.object,t,n,!0):Ele(e,n)||Dle(e,t,n,!1),kle="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.",Ale=new Set([`flatMap`,`map`]),jle=new Set([`forwardRef`,`memo`]),Mle=new Set([`useCallback`,`useMemo`]),Nle=new Set([`createElement`]),Ple=e=>{let t=M(e);return v(t,`ObjectExpression`)||v(t,`ArrayExpression`)||v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`)},Fle=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&v(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&p(n,e.scopeOwner)?!0:!!(e.initializer&&v(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},Ile=e=>A(e.scopeOwner)?e.scopeOwner:j(e.scopeOwner),Lle=(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},Ps=e=>{let t=ws(e);return!!(t.parent&&v(t.parent,`ExportDefaultDeclaration`))},Rle=e=>{if(!v(e,`FunctionExpression`)||!e.id)return!1;let t=S(e);if(ws(e)!==t)return!1;let n=t.parent;return!(n&&v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`))},zle=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=M(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),v(a,`ConditionalExpression`)){let e=M(a.test);v(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(v(a,`LogicalExpression`)){let e=M(a.left);if(v(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(v(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(v(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(v(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(v(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(v(e,`SpreadElement`)?e.argument:e);continue}if(v(a,`CallExpression`)&&D(a,Nle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&v(e,`ObjectExpression`))for(let t of e.properties){if(!v(t,`Property`)||t.computed)continue;let e=t.key;(v(e,`Identifier`)&&e.name===`children`||v(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(v(a,`Identifier`)){let e=O(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Ns(e)&&Fle(e,a)&&j(e.bindingIdentifier)===j(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(v(a,`JSXElement`)||v(a,`JSXFragment`)){r.push(...a.children);continue}v(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Fs=(e,t,n)=>Ue(t,n.scopes,t=>zle(t,e,n),n.cfg),Ble=(e,t,n)=>e.arguments[0]===t&&D(e,Mle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(v(e.callee,`MemberExpression`)&&Ale.has(N(e.callee)??``)),Vle=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=P(e.callee,n.scopes);if(!i||!A(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!v(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=S(e.identifier),r=t.parent;return!!(r&&v(r,`CallExpression`)&&r.callee===t&&j(r)===i&&p(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Fs(r,i,n))}))return!1;let o=j(e);return!!(o&&(Ts(o)!==null||Ps(o))&&Fs(e,o,n))},Hle=(e,t)=>{let n=Ms(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=S(e.identifier),r=n.parent;return!r||!v(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&D(r,jle,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:Ble(r,n,t)||!Vle(r,n,t)})},Ule=(e,t)=>{let n=S(e),r=n.parent;if(!r||!v(r,`CallExpression`))return!1;let i=j(r);return!i||Ts(i)===null&&!Ps(i)?!1:r.arguments[0]===n&&v(r.callee,`MemberExpression`)&&Ale.has(N(r.callee)??``)&&Fs(r,i,t)?!0:r.callee===n&&Fs(r,i,t)||r.arguments.some(e=>e===n)&&Vle(r,n,t)},Wle=C({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)&&U(t,e),n=new Set;return{Program(t){n=Cle(t,e.scopes)},JSXOpeningElement(r){if(!Ole(r.name,n,e.scopes))return;let i=j(r);if(!i)return;let a=Ule(i,e),o=Ps(i);if((Rle(i)||Hle(i,e))&&!a&&!o||Ts(i)===null&&!o&&!a)return;let s=H(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!v(c,`JSXExpressionContainer`))return;let l=M(c.expression);if(!v(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Lee(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:m(n.identifier)}))).toSorted((e,t)=>Lle(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!Ple(d.assignedExpression))return;e.report({node:s,message:kle});return}let f=O(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Fle(f,l)&&Ile(f)===i&&Ple(f.initializer)&&e.report({node:s,message:kle})}}}}),Gle=[`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`],Is=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`:Gle.find(t=>e===t||e.startsWith(`${t}/`))??null,Kle=/[\p{L}\p{Nd}]/u,Ls=e=>Kle.test(e),Rs=e=>Rr.has(e),zs=(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},G=e=>{let t=[],n=0;for(let r of zs(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},qle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Jle=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),Yle=e=>e.toLowerCase()===`hidden`,Xle=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=G(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},Zle=e=>{let t=I(e.attributes,`className`)??I(e.attributes,`class`);if(!t)return!1;let n=R(t);return n===null?t.value&&v(t.value,`JSXExpressionContainer`)&&v(t.value.expression,`TemplateLiteral`)?Xle(t.value.expression).some(Yle):!1:G(n).some(Yle)},Qle=e=>{let t=I(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(v(n,`Literal`))return n.value!==`false`&&!!n.value;if(v(n,`JSXExpressionContainer`)){let e=M(n.expression);if(v(e,`Literal`))return!!e.value}return!0},$le={display:`none`,visibility:`hidden`},eue=e=>{let t=I(e.attributes,`style`);if(!t?.value||!v(t.value,`JSXExpressionContainer`))return!1;let n=M(t.value.expression);if(!v(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!v(e,`Property`)||e.computed)continue;let t=e.key,n=v(t,`Identifier`)?t.name:v(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=$le[n];if(!r)continue;let i=M(e.value);if(v(i,`Literal`)&&i.value===r)return!0}return!1},tue=(e,t)=>sr(e,t)||Qle(e)||eue(e),nue=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=I(t.attributes,`type`),r=n?nr(n):null;return!r||r.toLowerCase()!==`file`||!Zle(t)?!1:!!I(t.attributes,`ref`)},rue=[`link`,`canvas`],iue=new Set([`alt`,`aria-label`,`aria-labelledby`]),Bs=`label`,aue=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??[]}},Vs=(e,t)=>{let n=new Set(t);for(let t of e){if(v(t,`JSXSpreadAttribute`))return!0;if(!v(t,`JSXAttribute`)||!v(t.name,`JSXIdentifier`))continue;let e=Tt(t.name);if(e&&(iue.has(e)||n.has(e)))return t.value?v(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Hs=e=>{if(!e?.value)return!1;let t=e.value;if(v(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(v(t,`JSXExpressionContainer`)){let e=M(t.expression);if(v(e,`JSXEmptyExpression`))return!1;if(v(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(v(e,`TemplateLiteral`)){let t=it(e);if(t!==null)return t.trim().length>0}return!0}return!0},oue=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!v(r,`JSXAttribute`))&&Tt(r.name)?.toLowerCase()===n)return r}},sue=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(v(r,`SpreadElement`))return null;let e=M(r);if(v(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(v(e,`TemplateLiteral`)){let t=it(e);if(t===null)return null;n.push(t);continue}if(v(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||v(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(v(e,`ArrayExpression`)){let r=sue(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},cue=(e,t)=>{if(v(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!v(e,`MemberExpression`))return!1;let n=M(e.object);return v(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Us=(e,t)=>{let n=M(e);if(v(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(v(n,`TemplateLiteral`)){let e=it(n);return e===null||e.trim().length>0}if(v(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(v(n,`UnaryExpression`)&&n.operator===`void`||v(n,`UnaryExpression`)&&n.operator===`!`||v(n,`ArrowFunctionExpression`)||v(n,`FunctionExpression`)||v(n,`ClassExpression`))return!1;if(v(n,`ArrayExpression`)){let e=sue(n,t);return e===null||e.trim().length>0}if(cue(n,t)||v(n,`CallExpression`)&&cue(n.callee,t))return!1;if(v(n,`ConditionalExpression`))return Us(n.consequent,t)&&Us(n.alternate,t);if(v(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Us(e,t):!1}if(v(n,`LogicalExpression`)){let e=M(n.left);if(!v(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Us(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Us(r?n.right:e,t):Us(r?e:n.right,t)}return!0},lue=(e,t)=>e?.value?v(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:v(e.value,`JSXExpressionContainer`)?Us(e.value.expression,t):!0:!1,Ws=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},uue=e=>typeof e==`string`?Ws(`literal`,e):typeof e==`number`?Ws(`literal`,String(e)):null,Gs=e=>{let t=M(e);if(v(t,`Identifier`))return t.name;if(v(t,`MemberExpression`)){if(t.computed)return null;let e=Gs(t.object),n=t.property;return e===null||!v(n,`Identifier`)?null:`${e}.${n.name}`}return null},due=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=Gs(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return Ws(`template`,r.join(``))},Ks=e=>{let t=M(e);if(v(t,`Literal`)){let e=uue(t.value);return e===null?[]:[e]}if(v(t,`TemplateLiteral`)){let e=it(t);if(e!==null){let t=Ws(`literal`,e);return t===null?[]:[t]}let n=due(t);return n===null?[]:[n]}if(v(t,`ConditionalExpression`))return[...Ks(t.consequent),...Ks(t.alternate)];let n=Gs(t);if(n!==null){let e=Ws(`identifier`,n);return e===null?[]:[e]}return[]},fue=e=>{if(!e?.value)return[];let t=e.value;if(v(t,`Literal`)){let e=uue(t.value);return e===null?[]:[e]}return v(t,`JSXExpressionContainer`)?Ks(t.expression):[]},pue=/^Icon($|[A-Z0-9_])|Icon$/,mue=(e,t)=>{if(t.iconComponentNames.has(e)||pue.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},qs=(e,t,n)=>{let r=M(e);if(v(r,`JSXEmptyExpression`))return!1;if(v(r,`Literal`))return typeof r.value==`string`?Ls(r.value):typeof r.value==`number`;if(v(r,`TemplateLiteral`)){let e=it(r);return e===null||Ls(e)}return v(r,`ConditionalExpression`)?qs(r.consequent,t,n)||qs(r.alternate,t,n):v(r,`LogicalExpression`)?r.operator===`&&`?qs(r.right,t,n):qs(r.left,t,n)||qs(r.right,t,n):v(r,`JSXElement`)||v(r,`JSXFragment`)?Js(r,t,n):!0},Js=(e,t,n)=>{if(t>n.depth)return!1;if(v(e,`JSXExpressionContainer`))return qs(e.expression,t,n);if(v(e,`JSXText`))return Ls(e.value);if(v(e,`JSXFragment`))return e.children.some(e=>Js(e,t+1,n));if(v(e,`JSXElement`)){if(Vs(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=ir(e.openingElement,n.settings);if(xs(t)&&!n.controlComponents.includes(t)&&!mue(t,n))return!0}for(let r of e.children)if(Js(r,t+1,n))return!0}return!1},hue=(e,t)=>Vs(e.openingElement.attributes,t.customAttributes)||v(e.openingElement.name,`JSXIdentifier`)&&e.openingElement.name.name===Bs&&lue(I(e.openingElement.attributes,`title`),t.scopes)?!0:e.children.some(e=>Js(e,1,t)),gue=e=>v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`)||v(e,`FunctionDeclaration`),Ys=(e,t)=>{if(e===Bs||e===`Label`)return!0;let n=I(t.attributes,`component`);return n?nr(n)===Bs:!1},_ue=(e,t)=>{let n=e.parent,r=!1;for(;n&&!v(n,`JSXAttribute`);){if(gue(n)&&(r=!0),v(n,`JSXElement`)){let e=n.openingElement;if(tue(e,t.settings))return`hidden`;let i=ir(e,t.settings);if(!r&&Ys(i,e)&&hue(n,t)||xs(i)&&Hs(I(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Xs=e=>{let t=e.parent;for(;t;){if(v(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},vue=e=>{let t=e.parent;for(;t;){if(v(t,`VariableDeclarator`))return v(t.id,`Identifier`)?t.id.name:null;if(gue(t)){if(v(t,`FunctionDeclaration`)&&t.id&&v(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&v(e,`VariableDeclarator`)&&v(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Zs=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){t.add(n.name);return}if(v(n,`CallExpression`)){let e=M(n.callee);v(e,`Identifier`)&&t.add(e.name);return}if(v(n,`LogicalExpression`)){Zs(n.left,t),Zs(n.right,t);return}v(n,`ConditionalExpression`)&&(Zs(n.consequent,t),Zs(n.alternate,t))},Qs=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(v(i,`JSXExpressionContainer`)){Zs(i.expression,r);continue}(v(i,`JSXElement`)||v(i,`JSXFragment`))&&Qs(i,t+1,n,r)}},yue=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=I(t.attributes,`type`);if(!n)return!0;let r=nr(n);return r===null?!0:Jle.has(r.toLowerCase())},$s=C({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=Nr(e.settings),n=aue(e.settings),r=It(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={scopes:e.scopes,depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!Is(t)))for(let t of e.specifiers??[]){if(!v(t.local,`Identifier`))continue;let e=t.local.name;v(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=ir(a,e.settings);if(Ys(u,a)&&hue(i,l)&&!Xs(i)){let e=I(a.attributes,`htmlFor`);for(let t of fue(e))o.add(t);u===Bs&&Qs(i,1,l,s)}if(rue.includes(u)||n.ignoreElements.includes(u))return;let d=I(a.attributes,`role`),f=d?nr(d):null;if(f&&n.ignoreRoles.includes(f)||tue(a,e.settings)||nue(u,a))return;let p=Xr.has(u),m=(!t||!qle.has(u))&&oi(u,a),h=t&&f===`separator`&&!I(a.attributes,`tabIndex`),g=f!==null&&Rs(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=I(a.attributes,`type`),t=e?nr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Hs(I(a.attributes,`value`)))return}if(!(p&&lue(oue(a.attributes,`title`),e.scopes))&&!(yue(u,a)&&Hs(I(a.attributes,`placeholder`)))&&!Vs(a.attributes,n.labelAttributes)&&!Xs(i)&&_ue(i,l)===null){if(u!==`select`){for(let e of i.children)if(Js(e,1,l))return}c.push({opening:a,controlIdKeys:fue(I(a.attributes,`id`)),enclosingBindingName:vue(i)})}}},"Program:exit"(){for(let t of c)t.controlIdKeys.some(e=>o.has(e))||t.enclosingBindingName!==null&&s.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`."})}}}}),ec=(e,t,n)=>{let r=M(e);if(v(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)ec(e,t,n);return}if(v(r,`JSXFragment`)){for(let e of r.children)ec(e,t,n);return}if(n){if(v(r,`JSXExpressionContainer`)){ec(r.expression,t,!0);return}if(v(r,`ConditionalExpression`)){let e=Kt(Cn(r.test));if(e!==null){ec(e?r.consequent:r.alternate,t,!0);return}ec(r.consequent,t,!0),ec(r.alternate,t,!0);return}if(v(r,`LogicalExpression`)){for(let e of ln(r))ec(e,t,!0);return}if(v(r,`ArrayExpression`)){for(let e of r.elements)e&&!v(e,`SpreadElement`)&&ec(e,t,!0);return}if(v(r,`SequenceExpression`)){if(r.expressions.length===0)return;ec(Cn(r),t,!0)}}},tc=(e,t={})=>{let n=[];for(let r of e.children)ec(r,n,t.includeStaticExpressionBranches===!0);return n},bue=new Set([`grid`,`table`,`treegrid`]),xue=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(v(i,`JSXAttribute`)){if(Tt(i.name)?.toLowerCase()===t)return!1;continue}if(v(i,`JSXSpreadAttribute`)&&Or(i.argument,t,!1,n.scopes))return!0}}return!1},nc=(e,t,n,r)=>n.isUnknown&&xue(e,t,r),Sue=e=>e.attribute?R(e.attribute):ar(e.expression),rc=(e,t,n)=>{if(e.attribute)return jr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=M(e.expression),i=ar(r);return i===null?v(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Ar(r)||v(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Cue=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=Mt(e.attributes,n,!1);if(nc(e,n,r,t))return null;if(rc(r,n.startsWith(`aria-`),t))return!0}return!1},ic=e=>{for(let t of e){if(v(t,`JSXElement`)&&k(t.openingElement)===`caption`)return t;if(v(t,`JSXFragment`)){let e=ic(t.children);if(e)return e}}return null},wue=(e,t)=>sr(e.openingElement,t.settings)?!1:Mr(e,t.settings),Tue=(e,t,n)=>{let r=e.parent;for(;r;){if(v(r,`JSXElement`)){if(sr(r.openingElement,n.settings))return!1;if(k(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Eue=(e,t)=>{let n=e.parent;for(;n;){if(v(n,`JSXElement`)&&sr(n.openingElement,t.settings))return!0;n=n.parent}return!1},ac=C({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(k(n)!==`table`||hr(e,n)||sr(n,e.settings)||Eue(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>nc(n,t,Mt(n.attributes,t,!1),e)))return;let r=Mt(n.attributes,`children`,!1),i=Mt(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=Mt(n.attributes,`role`,!1);if(nc(n,`role`,a,e))return;if(a.isPresent){let t=Sue(a);if(t===null){if(rc(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Lr.has(e));if(e&&!bue.has(e))return}}if(!tc(t).some(n=>k(n)===`th`&&Tue(n,t,e)))return;let o=ic(t.children),s=Cue(n,e);s!==null&&(o&&wue(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.`}))}})}),oc=(e,t,n)=>{let r=M(e);if(A(r))return[r];if(v(r,`Identifier`)){if(n){let e=x(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:A(e.declarationNode)?[e.declarationNode]:e.initializer&&A(M(e.initializer))?[M(e.initializer)]:[]}let e=O(t,r.name);return e?.initializer&&A(M(e.initializer))?[M(e.initializer)]:[]}if(v(r,`ConditionalExpression`))return[...oc(r.consequent,t,n),...oc(r.alternate,t,n)];if(v(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?oc(e,t,n):[]}return[]},sc=(e,t)=>A(e)?v(e.body,`BlockStatement`)?Ie(e).flatMap(e=>e.argument?oc(e.argument,e,t):[]):oc(e.body,e,t):[],cc=(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=S(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&v(c,`MemberExpression`)&&c.object===o&&N(c)===`current`&&(o=S(c),c=o.parent),n.includeReactRefContainers&&v(c,`CallExpression`)&&c.arguments[0]===e&&D(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=S(c),c=o.parent),!v(c,`VariableDeclarator`)||c.init!==o||!v(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},lc=(e,t,n)=>D(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),uc=(e,t)=>lc(e,Tn,t),Due=new Set([`useMemo`,`useCallback`,`useRef`]),Oue=new Set([`useRef`]),dc=new Set([`debounce`,`throttle`]),fc=new Set([`cancel`,`flush`]),kue=new Set([`document`,`window`]),Aue=new Set([`then`,`catch`,`finally`]),pc=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),mc=e=>{if(!v(e,`CallExpression`))return!1;let t=M(e.callee);if(v(t,`Identifier`)){if(!dc.has(t.name))return!1;let e=O(t,t.name);return!e?.initializer||!v(e.initializer,`ImportSpecifier`)&&!v(e.initializer,`ImportDefaultSpecifier`)?!1:pc(dt(t,t.name))}if(v(t,`MemberExpression`)&&dc.has(N(t)??``)){let e=M(t.object);if(!v(e,`Identifier`))return!1;let n=O(e,e.name);return!n?.initializer||!v(n.initializer,`ImportNamespaceSpecifier`)&&!v(n.initializer,`ImportDefaultSpecifier`)?!1:pc(dt(e,e.name))}return!1},jue=e=>{if(!v(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=M(t);if(mc(n))return n;if(!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return null;if(!v(n.body,`BlockStatement`)){let e=M(n.body);return mc(e)?e:null}for(let e of n.body.body??[])if(v(e,`ReturnStatement`)&&e.argument){let t=M(e.argument);if(mc(t))return t}return null},Mue=(e,t,n)=>{if(!v(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=ro(r,[`trailing`],t,n);return i?i.properties.some(e=>v(e,`Property`)&&T(e,{allowComputedString:!0})===`trailing`&&v(e.value,`Literal`)&&e.value.value===!1):!1},hc=e=>{let t=M(e);for(;v(t,`MemberExpression`);)t=M(t.object);return v(t,`Identifier`)?t:null},gc=(e,t)=>{let n=hc(e);return n?t.symbolFor(n)?.id??null:null},_c=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`))return fc.has(N(n)??``)?gc(n.object,t):null;if(!v(n,`Identifier`))return null;let r=O(n,n.name)?.bindingIdentifier?.parent;if(!v(r,`Property`))return null;let i=v(r.key,`Identifier`)?r.key.name:v(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!fc.has(i))return null;let a=r.parent,o=a?.parent;return!v(a,`ObjectPattern`)||!v(o,`VariableDeclarator`)||!o.init?null:gc(o.init,t)},Nue=(e,t,n)=>{s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`CallExpression`))return;let i=_c(r.callee,n);i!==null&&t.add(i)})},Pue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return s(e,e=>{if(!v(e,`CallExpression`))return;let n=M(e.callee);if(uc(e,t)){let n=e.arguments?.[0],a=n?M(n):null;if(a&&A(a)){if(to(a,e=>{if(!v(e,`CallExpression`))return;let n=gc(e.callee,t);n!==null&&r.add(n)}),v(a.body,`BlockStatement`))for(let e of Ie(a)){if(!e.argument)continue;let n=_c(e.argument,t);n!==null&&i.add(n)}else{let e=_c(a.body,t);e!==null&&i.add(e)}for(let e of sc(a))Nue(e,i,t)}}if(v(n,`Identifier`)&&n.name===`useUnmount`&&(dt(n,n.name)===`react-use`||!O(n,n.name)))for(let n of e.arguments??[]){let e=_c(n,t);e!==null&&i.add(e)}if(!v(n,`Identifier`)||!Ss(n.name))return;let a=O(n,n.name)?.initializer;if(!a||!A(a))return;let o=new Set;s(a,e=>{if(!v(e,`CallExpression`)||!uc(e,t))return;let n=Xn(e);if(n)for(let e of sc(n))s(e,e=>{if(!v(e,`CallExpression`))return;let t=M(e.callee);if(!v(t,`MemberExpression`)||!fc.has(N(t)??``))return;let n=hc(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!v(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?gc(a,t):null;s!==null&&i.add(s)}}),s(e,r=>{if(r!==e&&A(r))return!1;if(!v(r,`ReturnStatement`)||!r.argument)return;let i=M(r.argument);!v(i,`Identifier`)&&!v(i,`ObjectExpression`)&&!v(i,`ArrayExpression`)||s(i,e=>{if(!v(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},Fue=(e,t,n)=>{if(!v(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=M(r);if(A(i))return i;if(!v(i,`Identifier`))return null;let a=i.name,o=null;return s(t,e=>{if(o)return!1;if(v(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(v(e,`VariableDeclarator`)&&v(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=M(e.init);if(A(t))return o=t,!1;if(v(t,`CallExpression`)&&lc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?M(e):null;if(n&&A(n))return o=n,!1}}}),o},vc=new Set([`localStorage`,`sessionStorage`]),Iue=e=>{let t=e;for(;;){let e=t.parent;if(e&&v(e,`MemberExpression`)&&e.object===t&&e.parent&&v(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return v(t,`CallExpression`)&&v(t.callee,`MemberExpression`)&&N(t.callee)===`catch`},Lue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])xt(n,t);let n=!1;return s(e,e=>{if(n)return!1;if(v(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(v(e,`Identifier`)&&kue.has(e.name)&&!t.has(e.name)&&!O(e,e.name)&&!(v(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(v(r,`Property`)&&!r.computed&&r.key===e)){if(v(r,`MemberExpression`)&&r.object===e){if(v(r.property,`Identifier`)&&vc.has(r.property.name))return;let e=r;for(;e.parent&&v(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&v(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&v(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(v(e,`CallExpression`)){let t=e.callee;if(v(t,`Identifier`)&&t.name===`fetch`&&!O(t,t.name)||v(t,`MemberExpression`)&&Aue.has(N(t)??``)&&N(t)!==`catch`&&!Iue(e))return n=!0,!1;if(v(t,`MemberExpression`)&&v(t.object,`Identifier`)&&vc.has(t.object.name))return}}),n},Rue=e=>{if(!e)return!0;let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`||v(t,`UnaryExpression`)&&t.operator===`void`},zue=(e,t)=>{if(!v(e,`MemberExpression`)||N(e)!==`current`)return!1;let n=M(e.object);if(!v(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=M(r.initializer);return v(i,`CallExpression`)&&lc(i,Oue,t)&&Rue(i.arguments?.[0])},Bue=(e,t)=>{if(!v(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return s(e,e=>{if(r)return!1;if(zue(e,t)||v(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(v(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])v(e.id,`Identifier`)&&n.add(e.id.name);continue}if(v(t,`IfStatement`)){let e=t.consequent;return(v(e,`ReturnStatement`)||v(e,`BlockStatement`)&&v(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},yc=C({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(!lc(n,Due,e.scopes))return;let r=jue(n);if(!r||Mue(r,e.scopes,n))return;let i=S(n),a=i.parent;if(!v(a,`VariableDeclarator`)||a.init!==i||!v(a.id,`Identifier`))return;let o=a.id.name,s=j(n);if(!s)return;let c=t.get(s);c||(c=Pue(s,e.scopes),t.set(s,c));let l=cc(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=Fue(r,s,e.scopes);d&&Lue(d)&&(Bue(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.`}))}}}}),bc=qn({id:`design-no-em-dash-in-jsx-text`,severity:`warn`,category:`Maintainability`,requires:[`react`],tags:[`design`,`test-noise`],title:`Em dash in JSX text`,recommendation:`Retired: Visual and writing preferences belong in an explicit design guide, not a general defect check.`}),xc=1e3,Vue=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]]),Hue=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(`.`)),Sc=1e3,Uue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),Wue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Gue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Kue=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,que=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Cc=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),wc=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`]),Jue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Tc=(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},Ec=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Dc=C({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(!v(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=R(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Ec(n,`px`)||Ec(n,`py`))return;let r=Tc(n,Wue,Gue);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.`})}})}),Oc=C({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||!v(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=R(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Ec(r,`w`)||Ec(r,`h`))return;let i=Tc(r,Kue,que);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.`})}}}}),Yue=e=>e.split(/\s+/).filter(Boolean),kc=C({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(!v(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=R(t);if(!n||!n.includes(`space-`))return;let r=Yue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Cc.has(t)){i=!0;break}}if(!i)return;let a=n.match(Jue);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.`})}})}),Ac=qn({id:`design-no-three-period-ellipsis`,severity:`warn`,category:`Maintainability`,requires:[`react`],tags:[`design`,`test-noise`],title:`Three dots instead of ellipsis`,recommendation:`Retired: Visual and writing preferences belong in an explicit design guide, not a general defect check.`}),jc=e=>{if(!e||!v(e,`JSXOpeningElement`))return null;if(v(e.name,`JSXIdentifier`))return k(e);if(v(e.name,`JSXMemberExpression`)){let t=e.name;for(;v(t,`JSXMemberExpression`);)t=t.property;if(v(t,`JSXIdentifier`))return t.name}return null},Mc=e=>e===`button`||e===`Button`,Xue=e=>Mc(e)||e===`a`||e===`Link`,Zue=new Set([`back`,`previous`]),Nc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Pc=e=>{if(!v(e,`JSXElement`)&&!v(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(v(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(v(e,`JSXExpressionContainer`)){let t=e.expression;if(v(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(v(t,`TemplateLiteral`)){let e=it(t);if(e!==null){n.push(e);continue}}return null}if(v(e,`JSXFragment`)){let t=Pc(e);if(t===null)return null;n.push(t);continue}if(v(e,`JSXElement`))return null}return n.join(``).trim()},Que=e=>{let t=e.parent;for(;t;){if(v(t,`JSXElement`)&&jc(t.openingElement)===`form`)return t;t=t.parent}return null},Fc=e=>{for(let t of e.children??[]){if(v(t,`JSXFragment`)){if(Fc(t))return!0;continue}if(!v(t,`JSXElement`))continue;let e=jc(t.openingElement);if(e&&Xue(e)&&Zue.has(Nc(Pc(t)??``))||Fc(t))return!0}return!1},Ic=C({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=jc(t.openingElement);if(!n||!Mc(n))return;let r=Pc(t);if(!r)return;let i=Nc(r);if(Uue.has(i)){if(i===`continue`){let e=Que(t);if(e&&Fc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),$ue=e=>{for(let t of e.children)if(!(v(t,`JSXText`)&&t.value.trim().length===0)){if(v(t,`JSXElement`))return t.openingElement;if(!(v(t,`JSXExpressionContainer`)&&v(t.expression,`JSXEmptyExpression`)))return}return null},Lc=C({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(k(t.openingElement)!==`details`)return;let n=$ue(t);n!==void 0&&(n&&k(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.`}))}})}),ede=new Set([`dialog`,`alertdialog`]),tde=[`aria-label`,`aria-labelledby`,`title`],Rc=C({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=>It(e.filename)?Jt:{JSXOpeningElement(t){if(!v(t.name,`JSXIdentifier`))return;let n=k(t);if(n[0]!==n[0]?.toLowerCase())return;let r=I(t.attributes,`role`),i=r?nr(r):null;(n===`dialog`||i!==null&&ede.has(i))&&(L(t.attributes)||tde.some(e=>I(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."}))}}}),zc=`createReactClass`,Bc=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`MemberExpression`)?!!(v(t.object,`Identifier`)&&t.object.name===`React`&&v(t.property,`Identifier`)&&(t.property.name===zc||t.property.name===`createClass`)):v(t,`Identifier`)?t.name===zc:!1},nde=(e,t,n,r)=>{let i=M(e);if(i.type===`JSXElement`||i.type===`JSXFragment`||Oa(i))return!0;if(v(i,`ArrayExpression`))return i.elements.some(e=>e&&t(e));if(v(i,`CallExpression`))return i.arguments.some(e=>ste(e,r)&&n(e));if(v(i,`SequenceExpression`)){let e=i.expressions.at(-1);return!!(e&&t(e))}return!1},Vc=(e,t,n)=>{let r=xee(t,e=>nde(e,r.expressionMatches,r.functionMatches,t),n);return r.functionMatches(e)},Hc=(e,t)=>{let n=e.params[0];if(!v(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r||r.references.some(e=>e.flag!==`read`))return!1;let i=e=>{let n=M(e);if(v(n,`LogicalExpression`)){if(n.operator===`&&`)return i(n.left)||i(n.right);if(n.operator===`||`)return i(n.left)&&i(n.right)}if(!v(n,`BinaryExpression`)||n.operator!==`===`)return!1;let a=M(n.left),o=M(n.right);return v(a,`Identifier`)&&t.symbolFor(a)?.id===r.id&&v(o,`Literal`)&&o.value===null||v(o,`Identifier`)&&t.symbolFor(o)?.id===r.id&&v(a,`Literal`)&&a.value===null},a=!1,o=!0;return s(e.body,t=>{if(!o)return!1;if(!v(t,`JSXElement`)&&!v(t,`JSXFragment`)&&!Oa(t))return;a=!0;let n=t;for(;n.parent&&n.parent!==e;){let e=n.parent;if((v(e,`IfStatement`)||v(e,`ConditionalExpression`))&&e.consequent===n&&i(e.test)||v(e,`LogicalExpression`)&&e.operator===`&&`&&e.right===n&&i(e.left))return!1;n=e}return o=!1,!1}),a&&o},rde=[`observer`,`lazy`,`withTracking`],ide=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??rde);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},Uc=(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},Wc=new WeakMap,Gc=e=>{let t=Wc.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(v(e,`CallExpression`)&&Oa(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),Wc.set(e,n),n},Kc=e=>{let t=!1;return s(e,e=>{if(v(e,`CallExpression`)&&v(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},qc=e=>v(e,`MemberExpression`)?!e.computed&&v(e.property,`Identifier`)?e.property.name:e.computed&&v(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,Jc=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(v(t,`VariableDeclarator`)&&v(t.id,`Identifier`))return t.id.name;if(v(t,`AssignmentExpression`)){let e=t.left;if(v(e,`Identifier`))return e.name;if(v(e,`MemberExpression`))return qc(e)}return null},Yc=e=>{let t=e.parent;if(!t||!v(t,`AssignmentExpression`))return!1;let n=t.left;return v(n,`MemberExpression`)&&v(n.object,`Identifier`)&&n.object.name===`module`&&qc(n)===`exports`},ade=e=>{if(!v(e,`CallExpression`))return!1;if(Bc(e))return!0;let t=e.callee;return v(t,`MemberExpression`)?qc(t)===`createClass`:!1},ode=e=>{if(!v(e,`CallExpression`))return!1;let t=e.callee;return v(t,`Identifier`)?t.name===`createContext`:v(t,`MemberExpression`)&&qc(t)===`createContext`},sde=e=>(v(e,`FunctionExpression`)||v(e,`FunctionDeclaration`))&&!!e.id?.name,Xc=e=>v(e,`CallExpression`)&&e.arguments[0]||null,Zc=(e,t)=>{if(!v(e,`CallExpression`))return null;let n=e.callee;if(v(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},cde=(e,t)=>Zc(e,t)!==null,Qc=e=>{if(!e)return!1;if(Uc(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},lde=(e,t)=>{if(!cde(e,t.additionalHoCs)||!Gc(e))return!1;let n=Jc(e),r=w(e);if(n&&r&&rl(n,r))return!1;let i=Zc(e,t.additionalHoCs),a=Xc(e);return!a||i===`forwardRef`&&v(e.parent,`CallExpression`)&&Zc(e.parent,t.additionalHoCs)===`memo`&&Xc(e.parent)===e&&Qc(t.reactVersion)?!1:i===`memo`&&v(a,`CallExpression`)?Zc(a,t.additionalHoCs)===`forwardRef`?!Qc(t.reactVersion):!1:sde(a)?!1:v(a,`FunctionExpression`)||v(a,`ArrowFunctionExpression`)},$c=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((v(e,`PropertyDefinition`)||v(e,`MethodDefinition`))&&`static`in e&&e.static&&v(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},el=e=>{if(v(e,`Identifier`))return[e.name];if(!v(e,`MemberExpression`))return[];let t=el(e.object),n=qc(e);return n?[...t,n]:t},tl=new WeakMap,nl=e=>{let t=tl.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(v(e,`AssignmentExpression`)&&v(e.left,`MemberExpression`)&&qc(e.left)===`displayName`){v(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of el(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 tl.set(e,a),a},rl=(e,t)=>nl(t).identifierTargets.has(e),ude=(e,t)=>nl(t).memberPathSegments.has(e),il=C({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=ide(e.settings),n=Nr(e.settings),r=!t.ignoreTranspilerName,i=t=>{e.report({node:t,message:"This component shows up as Anonymous in React DevTools because it has no `displayName`."})};return{ClassDeclaration(e){if(Za(e)&&!(e.id&&xs(e.id.name)&&r)&&!$c(e)){if(e.id){let t=w(e);if(t&&rl(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Za(e)&&!(e.id&&xs(e.id.name)&&r)&&!$c(e)){if(e.id){let t=w(e);if(t&&rl(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!Gc(a)||n&&!Vc(a,e.scopes,e.cfg))return;if(!n&&!a.id&&Yc(a)){i(a);return}if(!n&&!Dn(a,e.scopes,e.cfg)&&!Kc(a)||a.id&&xs(a.id.name)&&r)return;if(v(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=v(e,`Identifier`)?e.name:v(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=w(a);if(n&&xs(n)&&t.ignoreTranspilerName&&(!r||!ude(n,r))){i(a);return}}let o=Jc(a);if(!(o&&xs(o)&&r)){if(Yc(a)&&!a.id){i(a);return}if(v(a.parent,`ReturnStatement`)&&!a.id){if(n&&Hc(a,e.scopes))return;i(a)}}},ArrowFunctionExpression(t){if(n&&(v(t.parent,`ReturnStatement`)||v(t.parent,`ArrowFunctionExpression`))&&Hc(t,e.scopes))return;let a=v(t.parent,`ExportDefaultDeclaration`);if(!Gc(t)&&!a||n&&!Vc(t,e.scopes,e.cfg))return;if(!n&&Yc(t)){i(t);return}if(!n&&!Dn(t,e.scopes,e.cfg)&&!Kc(t))return;if(v(t.parent,`ArrowFunctionExpression`)||v(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(v(o,`VariableDeclarator`)&&v(o.id,`Identifier`)){if(xs(o.id.name)&&r)return;break}if(v(o,`ExportDefaultDeclaration`)){i(t);return}if(Yc(t)){i(t);return}if(v(o,`FunctionDeclaration`)||v(o,`FunctionExpression`)||v(o,`ArrowFunctionExpression`)||v(o,`ClassDeclaration`)||v(o,`ClassExpression`)||v(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&v(t.parent,`ExportDefaultDeclaration`)&&Dn(t,e.scopes,e.cfg)){if(t.id){let e=w(t);if(e&&rl(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&Uc(t.reactVersion,16,3)&&ode(e)){let t=Jc(e);if(t){let n=w(e);if(n&&rl(t,n))return}i(e);return}if(lde(e,t)){i(e);return}if(!ade(e))return;let n=e.arguments[0];if(!n||!v(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!v(e,`Property`)||e.computed)continue;let t=e.key;if(v(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(v(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&v(o,`VariableDeclarator`)&&v(o.id,`Identifier`)&&xs(o.id.name)&&r)){if(o&&v(o,`AssignmentExpression`)){let e=o.left;if(v(e,`Identifier`)&&xs(e.name)&&r||v(e,`MemberExpression`)&&v(e.property,`Identifier`)&&xs(e.property.name)&&r)return}i(e)}}}}}),al=C({id:`duplicate-jsx-subtree`,title:`Duplicated JSX structure`,severity:`warn`,execution:`project`,recommendation:`Extract a shared component when the repeated JSX trees represent the same UI concept and should evolve together.`}),dde=(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\`.`},fde=e=>{let t=!1;return s(e,e=>{if(v(e,`CallExpression`))return t=!0,!1}),t},ol=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,sl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>sl(e,t)&&sl(n,t)),pde=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,cl=(e,t)=>{if(t.abortControllerSymbolId!==null&&sl(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||ol(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=pde(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=cl(r,t),a=cl(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},mde=(e,t)=>cl(e,t)!==`not-cancelled`,ll=e=>{if(!e)return null;let t=M(e);return v(t,`MemberExpression`)?!t.computed&&v(t.property,`Identifier`)?t.property.name:t.computed&&v(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},hde=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),gde=(e,t)=>{if(v(e,`IfStatement`)){if(e.test===t)return!0;let n=Kt(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(v(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Kt(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(v(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Kt(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return v(e,`TryStatement`)?e.finalizer===t:v(e,`SwitchStatement`)?e.discriminant===t:v(e,`ForStatement`)?e.init===t||e.test===t:v(e,`ForInStatement`)||v(e,`ForOfStatement`)?e.right===t:v(e,`WhileStatement`)?e.test===t:!1},ul=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||hde.has(e.type)&&!gde(e,r)&&!n?.(e,r))return!0;r=e}return!1},dl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=M(e);if(v(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(v(r,`ConditionalExpression`)){let e={allowComputedString:t,allowIndeterminateEntries:n},i=dl(r.consequent,e);return i===dl(r.alternate,e)?i:null}if(!v(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&v(e,`SpreadElement`)){i=null;continue}if(!v(e,`Property`))return null;let r=T(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=M(e.value);if(v(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},_de=e=>{if(!e)return!1;let t=M(e);if(v(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!v(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!v(e,`Property`))return null;let t=T(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=M(e.value);if(!v(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},vde=new Set([...Tn,`useInsertionEffect`]),fl=e=>e.references.every(e=>e.flag===`read`),yde=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&fl(e),pl=e=>e.kind===`const`&&v(e.declarationNode,`VariableDeclarator`)&&v(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,ml=(e,t,n)=>{if(!v(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!yde(r)||n.has(r.id)||r.kind===`const`&&!pl(r))return null;n.add(r.id);let i=r.initializer?M(r.initializer):null;if(r.kind===`const`&&v(i,`Identifier`)){let e=ml(i,t,n);if(e)return e}return r},hl=(e,t)=>{if(!e)return null;let n=M(e);if(A(n))return{node:n,isConcreteFunction:!0};if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r)return null;let i=r.initializer?M(r.initializer):null;return i&&A(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},gl=(e,t)=>{let n=M(e);if(v(n,`Identifier`)){let e=ml(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?M(e.initializer):null;return v(n,`NewExpression`)&&v(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:v(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)){let e=gl(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},_l=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Literal`)&&typeof r.value==`string`)return r.value;if(v(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!v(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!pl(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),_l(i.initializer,t,n))},bde=(e,t)=>{let n=yl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=M(r);if(!n||!v(i,`NewExpression`)||!v(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=M(n);if(!v(a,`Identifier`))return null;let o=ml(a,t,new Set),s=o?.initializer?M(o.initializer):null;if(!v(s,`NewExpression`)||!v(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=gl(n,t),l=_l(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},vl=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=M(r.initializer);return!v(i,`NewExpression`)||!v(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},yl=(e,t,n)=>{if(!e)return null;let r=M(e);return!v(r,`MemberExpression`)||(ll(r)??(n&&r.computed?_l(r.property,n):null))!==t?null:r.object},xde=(e,t)=>v(e,`ObjectPattern`)?e.properties.some(e=>!v(e,`Property`)||T(e,{allowComputedString:!0})!==`signal`?!1:(v(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,bl=(e,t,n=new Set)=>{let r=M(e),i=yl(r,`signal`);if(i)return vl(i,t);if(!v(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!fl(a))return null;n.add(a.id);let o=a.declarationNode;if(!v(o,`VariableDeclarator`))return null;if(v(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=M(a.initializer);if(v(e,`Identifier`))return bl(e,t,n);let r=yl(e,`signal`);return r?vl(r,t):null}return xde(o.id,a.bindingIdentifier)?vl(a.initializer,t):null},xl=(e,t,n)=>{let r=M(e);if(v(r,`UnaryExpression`)&&r.operator===`!`){let e=xl(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(v(r,`BinaryExpression`)){let e=Kt(r.left),i=Kt(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=xl(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=yl(r,`aborted`);return i&&bl(i,n)===t?`aborted`:null},Sde=(e,t,n,r)=>{if(v(e,`IfStatement`)||v(e,`ConditionalExpression`)){let i=xl(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!v(e,`LogicalExpression`)||e.right!==t)return!1;let i=xl(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Cde=(e,t,n,r)=>!ul(e,t,(e,t)=>Sde(e,t,n,r)),wde=(e,t)=>{let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r?.initializer)return null;let i=M(r.initializer);if(!v(i,`CallExpression`))return null;let a=yl(i.callee,`bind`);if(!a)return null;let o=yl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=vl(o,t),l=vl(s,t);return c!==null&&c===l?c:null},Tde=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=M(e);if(!v(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!v(e,`Property`))return n;if(T(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=bl(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Sl=(e,t,n)=>{let r=yl(e.callee,t,n);if(!r)return null;let i=gl(r,n),a=_l(e.arguments?.[0],n),o=hl(e.arguments?.[1],n),s=dl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Ede=(e,t)=>{let n=yl(e.callee,`call`);if(!n||!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!fl(r)||!v(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!v(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!v(e,`Property`))return!1;let t=v(e.value,`AssignmentPattern`)?e.value.left:e.value;return T(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=gl(i.init,t),s=gl(a,t);if(o===null||s===null||o!==s)return null;let c=_l(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:hl(e.arguments?.[2],t),capture:dl(e.arguments?.[3],{allowComputedString:!0})}},Dde=(e,t)=>{if(!e)return null;let n=M(e);if(A(n))return n.body;if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r||!r.initializer)return null;let i=M(r.initializer);return A(i)?i.body:null},Ode=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!v(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],c=v(o,`ReturnStatement`);return s(e,o=>{if(o!==e&&A(o)||v(o,`ClassDeclaration`)||v(o,`ClassExpression`))return!1;if(v(o,`CallExpression`)){if(ul(o,e))return;let r=yl(o.callee,`addEventListener`,t),a=r?gl(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Sl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Tde(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:_de(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=bde(o,t);if(c){let e=n.filter(e=>e.targetKey===c.targetKey&&e.eventName===c.eventName),t=e[0];e.length===1&&t?.once&&i.get(c.targetKey)===1&&t.callbackIdentity.isConcreteFunction&&!fde(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(v(o,`ReturnStatement`)){a+=1;let e=Dde(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:c,returnStatementCount:a}},kde=(e,t)=>{let n=M(e.callee);if(!v(n,`Identifier`))return null;let r=ml(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=M(r.initializer);return!A(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Cl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],c=!1,l=!1,u=!1,d=v(e,`BlockStatement`)?e.body[e.body.length-1]:null,f=e=>{i.push(...e.removals),l||=e.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},p=e=>{let r=v(e,`BlockStatement`)?e.body:[e];for(let e of r){if(v(e,`BreakStatement`)||v(e,`ContinueStatement`))return!0;if(v(e,`BlockStatement`)){if(p(e))return!0;continue}if(v(e,`IfStatement`)){let r=Kt(e.test);if(r!==null){let i=Cl(e.test,t,new Set(n),!0);if(!i)return!0;f(i);let a=r?e.consequent:e.alternate;if(a&&p(a))return!0;continue}}let r=Cl(e,t,new Set(n),!0);if(!r)return!0;f(r)}return!1};return s(e,s=>{if(s!==e&&A(s)||v(s,`ClassDeclaration`)||v(s,`ClassExpression`))return!1;if(v(s,`ReturnStatement`)&&s===d)return;if(v(s,`ReturnStatement`)||v(s,`ThrowStatement`)||r&&(v(s,`BreakStatement`)||v(s,`ContinueStatement`)))return c=!0,!1;if(v(s,`ForOfStatement`)){let t=M(s.right);return v(t,`ArrayExpression`)&&t.elements.some(e=>e&&!v(e,`SpreadElement`))&&!ul(s,e)&&p(s.body),!1}if((v(s,`IfStatement`)||v(s,`ConditionalExpression`))&&s.alternate&&Kt(s.test)===null&&!ul(s,e)){let e=Cl(s.consequent,t,new Set(n)),r=Cl(s.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),l||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,u||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=Cl(s.test,t,new Set(n));return i&&f(i),!1}if(!v(s,`CallExpression`))return;let m=ul(s,e),h=yl(s.callee,`removeEventListener`,t);if(h&&!m){let e=Sl(s,`removeEventListener`,t);e?(i.push(e),u||=e.callbackIdentity===null||e.capture===null):u=!0}if(!h&&!m){let e=Ede(s,t);e&&i.push(e)}let g=yl(s.callee,`abort`);if(g){let n=vl(g,t);n===null?m||(l=!0):(!m||Cde(s,e,n,t))&&a.add(n);return}if(m)return;let _=wde(s,t);if(_!==null){a.add(_);return}let y=kde(s,t);if(!y||n.has(y.symbolId))return;n.add(y.symbolId);let b=Cl(y.body,t,n);b&&f(b)}),c?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:l,hasUnknownRemovalCall:u}},Ade=(e,t)=>{let n=Ode(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=Cl(e,t);for(let e of n.cleanupBodies){let n=Cl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},wl=C({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(t){if(!D(t,vde,e.scopes))return;let n=Xn(t);if(!A(n))return;let r=Ade(n.body,e);if(r)for(let t of r.registrations){if(t.hasUnknownCancellation||r.hasUnknownRemovalCall||r.registrations.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName).length>1||t.abortControllerSymbolId!==null&&r.hasUnknownAbortCall||t.abortControllerSymbolId!==null&&r.setupAbortAnalysis&&sl(r.setupAbortAnalysis,t.abortControllerSymbolId)||mde(r,t))continue;let n=r.removals.filter(e=>e.targetKey===t.targetKey&&e.eventName===t.eventName),i,a=!1;for(let e of n){if(!e.callbackIdentity||e.capture===null){a=!0;break}let n=ol(t.callbackIdentity,e.callbackIdentity);if(n===`unknown`){a=!0;break}if(n===`same`&&t.capture===e.capture){a=!0;break}i??={removalNode:e.node,removalCapture:e.capture,callbackComparison:n}}n.length===0||a||!i||e.report({node:i.removalNode,message:dde(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),jde=new Set([`global`,`globalThis`,`self`,`window`]),Tl=(e,t,n=new Set)=>{let r=e;for(;;){let e=M(r);if(!v(e,`Identifier`))return!1;if((e.name===`globalThis`||e.name===`window`||e.name===`self`||e.name===`global`)&&t.isGlobalReference(e))return!0;let i=t.symbolFor(e);if(!i?.initializer||i.kind!==`const`||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`))return!1;let a=i.declarationNode,o=a.init;if(!o)return!1;let s=v(a.id,`Identifier`)&&a.id===i.bindingIdentifier&&o===i.initializer,c=i.bindingIdentifier.parent,l=yi(i.bindingIdentifier),u=v(a.id,`ObjectPattern`)&&v(c,`Property`)&&c.value===i.bindingIdentifier&&c.parent===a.id&&l!==null&&jde.has(l);if(!s&&!u)return!1;n.add(i.id),r=o}},El=(e,t,n,r=new Set)=>{let i=e;for(;;){let e=M(i);if(!v(e,`Identifier`))return v(e,`MemberExpression`)&&N(e)===t&&Tl(e.object,n);if(e.name===t&&n.isGlobalReference(e))return!0;let a=n.symbolFor(e);if(!a||a.kind!==`const`||r.has(a.id))return!1;r.add(a.id);let o=a.declarationNode,s=a.bindingIdentifier,c=s.parent;if(yi(s)===t&&v(o,`VariableDeclarator`)&&v(o.id,`ObjectPattern`)&&v(c,`Property`)&&c.value===s&&c.parent===o.id&&o.init)return Tl(o.init,n);let l=Qr(a);if(!l)return!1;i=l}},Dl=(e,t)=>{if(!t.filename||e.arguments.some(e=>v(e,`SpreadElement`)))return null;let n=Ut(e.callee,t.scopes);if(!n?.importedName)return null;let r=Be(t.filename,n.source,n.importedName),i=r?.functionNode;if(!r||!i||!A(i)||i.async||i.generator)return null;let a=i.body,o=v(a,`BlockStatement`)&&a.body.length===1?a.body[0]:a,s=o;if(v(o,`ExpressionStatement`)?s=o.expression:v(o,`ReturnStatement`)&&(s=o.argument),!s)return null;let c=M(s);if(!v(c,`CallExpression`)||!v(c.callee,`MemberExpression`))return null;let l=N(c.callee);if(l!==`addEventListener`&&l!==`removeEventListener`)return null;let u=Dt(r.programNode),d=c.callee.object,f=[`document`,`window`].find(e=>El(d,e,u));if(!f)return null;let[p,m]=c.arguments.slice(0,2).map(t=>{if(!v(t,`Identifier`))return null;let n=u.symbolFor(t),r=i.params.findIndex(e=>v(e,`Identifier`)&&u.symbolFor(e)===n);return r<0?null:e.arguments[r]});return p&&m?{method:l,receiverKey:`global:${f}`,eventNode:p,handlerNode:m}:null},Ol=(e,t)=>{if(!e)return null;let n=M(e);if(v(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(v(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=W({node:n,scopes:t});return r?`reference:${r}`:null},kl=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}]]),Mde=new Map([...kl.values()].map(e=>[e.registerMethod,e])),Nde=new Set([`off`,`removeEventListener`,`removeListener`]),Al=e=>!!(e&&Ei(M(e))),jl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return Al(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(Al(a))return{method:n,receiverKey:r,eventKey:Ol(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&Al(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Ml=C({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(!uc(t,e.scopes))return;let n=Xn(t);if(!n)return;let r=[],i=[];to(n,t=>{if(!v(t,`CallExpression`))return;let n=Dl(t,e);if(n?.method===`addEventListener`&&Al(n.handlerNode)){r.push({method:n.method,receiverKey:n.receiverKey,eventKey:Ol(n.eventNode,e.scopes),usesHandlerOnlyForm:!1,handlerNode:n.handlerNode});return}let i=M(t.callee);if(!v(i,`MemberExpression`))return;let a=N(i);if(!a)return;let o=W({node:i.object,scopes:e.scopes});if(o===null)return;let s=Mde.get(a);if(!s)return;let c=jl(t,s,a,o,e.scopes);c&&r.push(c)});for(let t of sc(n))to(t,t=>{if(!v(t,`CallExpression`))return;let n=Dl(t,e);if(n?.method===`removeEventListener`&&Al(n.handlerNode)){i.push({method:n.method,receiverKey:n.receiverKey,eventKey:Ol(n.eventNode,e.scopes),usesHandlerOnlyForm:!1,handlerNode:n.handlerNode});return}let r=M(t.callee);if(!v(r,`MemberExpression`))return;let a=N(r);if(!a||Nde.has(a))return;let o=kl.get(a);if(!o)return;let s=W({node:r.object,scopes:e.scopes});if(s===null)return;let c=jl(t,o,a,s,e.scopes);c&&i.push(c)});for(let t of i){let n=kl.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.`})}}})}),Pde=e=>{let t=e.parent,n=t?.parent,r=n?.parent;if(!v(t,`Property`)||t.value!==e||!v(n,`ObjectExpression`)||!v(r,`CallExpression`)||r.arguments[0]!==n||!v(r.callee,`MemberExpression`)||N(r.callee)!==`extend`||!v(r.callee.object,`MemberExpression`)||N(r.callee.object)!==`Layer`)return!1;let i=T(t);return i!==`onAdd`&&i!==`onRemove`?!1:n.properties.some(e=>v(e,`Property`)&&T(e)===(i===`onAdd`?`onRemove`:`onAdd`)&&A(e.value))},Nl=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!v(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}},Fde=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e),r=n?.bindingIdentifier,i=n?.initializer;if(!n||n.references.some(e=>e.flag!==`read`)||!v(r,`Identifier`)||!v(i,`CallExpression`))return!1;let a=Ut(i.callee,t.scopes);if(a?.source!==`react-admin`||a.importedName!==`useDataProvider`)return!1;let o=r.typeAnnotation,s=v(o,`TSTypeAnnotation`)?o.typeAnnotation:null;if(!v(s,`TSTypeReference`)||!v(s.typeName,`Identifier`))return!1;let c=Nl(s.typeName,t.scopes),l=c?$e(c):null;if(!c||Pn(c.declarationNode)!==`ApiPlatformAdminDataProvider`||!l)return!1;let u=l.source.value;return u===`@api-platform/admin`||typeof u==`string`&&u.startsWith(`.`)&&!!(t.filename&&zt(t.filename)?.name===`@api-platform/admin`)},Pl=(e,t)=>{if(!Te.has(e.name))return!1;if(t.isGlobalReference(e))return!0;let n=Ut(e,t);return!!(n&&(n.source===`timers`||n.source===`node:timers`)&&n.importedName===e.name)},Ide=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=j(n);if(!i||!A(i)||i===t||!v(i.body,`BlockStatement`)||!qa(n,Ie(i).filter(e=>{let t=e.argument?M(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=As(i),o=a?e.scopes.symbolFor(a):null;if(!o||o.references.length!==1)return!1;let s=o.references[0];if(!s)return!1;let c=S(s.identifier),l=c.parent,u=v(l,`CallExpression`)?S(l):null,d=u?.parent;if(!v(l,`CallExpression`)||l.callee!==c||!v(d,`AssignmentExpression`)||d.operator!==`=`||d.right!==u||!v(d.left,`Identifier`)||j(d)!==t)return!1;let f=e.scopes.symbolFor(d.left),p=f?.initializer?M(f.initializer):null;if(!f||f.kind!==`let`&&f.kind!==`var`||!v(f.declarationNode,`VariableDeclarator`)||j(f.declarationNode)!==t||!p||!A(p)||!v(p.body,`BlockStatement`)||p.body.body.length!==0)return!1;let m=new Map;for(let e of f.references){let t=S(e.identifier),n=t.parent;if(n===d&&d.left===t)continue;if(!v(n,`CallExpression`)||n.callee!==t)return!1;let r=j(n);if(!r)return!1;let i=m.get(r)??[];i.push(n),m.set(r,i)}return qa(d,Ie(t).filter(t=>{let n=t.argument?P(t.argument,e.scopes):null;return!!(n&&Ja(n,m.get(n)??[],e))}),e,d)},Fl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=F(e),c=F(t);if(!i||!a||!o||s===null||c===null)return!0;if(!U(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},Lde=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),Rde=new Set([...Lde,`find`,`findIndex`,`sort`]),zde=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Bde=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),Vde=new Set([...Bde,`Map`,`Set`]),Il=(e,t,n)=>{let r=M(e);return v(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Hde=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n);return!!((r===`from`||r===`of`)&&Il(n.object,`Array`,t))},Ude=(e,t)=>{let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&Il(n.object,`Object`,t))},Ll=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ArrayExpression`))return r.elements.length===0;if(v(r,`NewExpression`)){let e=M(r.callee);return!!(r.arguments.length===0&&v(e,`Identifier`)&&Vde.has(e.name)&&t.isGlobalReference(e))}if(v(r,`CallExpression`)){let e=M(r.callee);if(Hde(r,t)){if((v(e,`MemberExpression`)?N(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!v(i,`SpreadElement`)&&Ll(i,t,n))}return!!(v(e,`MemberExpression`)&&N(e)!==`concat`&&zde.has(N(e)??``)&&Ll(e.object,t,n))}if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Ll(i.initializer,t,n))},Rl=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ArrayExpression`))return!0;if(v(r,`NewExpression`)){let e=M(r.callee);return!!(v(e,`Identifier`)&&Bde.has(e.name)&&t.isGlobalReference(e))}if(v(r,`CallExpression`)){if(Hde(r,t)||Ude(r,t))return!0;let e=M(r.callee);return!!(v(e,`MemberExpression`)&&zde.has(N(e)??``)&&Rl(e.object,t,n))}if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Rl(i.initializer,t,n))},Wde=(e,t,n=new Set)=>{let r=M(e);if(!v(r,`NewExpression`)){if(!v(r,`Identifier`))return Rl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!v(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Wde(e.initializer,t,n))}let i=M(r.callee);return!!(v(i,`Identifier`)&&Vde.has(i.name)&&t.isGlobalReference(i))},zl=(e,t,n)=>{let r=M(e.callee);if(!v(r,`MemberExpression`))return!1;let i=N(r);if(i===`from`&&Il(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!v(t,`SpreadElement`)&&!Ll(t,n))}return!!(i&&Rde.has(i)&&e.arguments[0]===t&&!Ll(r.object,n)&&(i===`forEach`?Wde(r.object,n):Rl(r.object,n)))},Bl=(e,t)=>{let n=M(e.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?!1:v(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Lde.has(n.property.name)&&e.arguments[0]===t},Vl=e=>{let t=e.parent;return!!(v(t,`CallExpression`)&&Bl(t,e))},Gde=new Set([`then`,`catch`,`finally`]),Kde=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&Gde.has(e.property.name)&&M(e.object).type===`CallExpression`,Hl=e=>{let t=e.parent;for(;t&&wt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>M(t)===e)?null:Kde(M(t.callee))?t:null},qde=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,c=[e],l=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},u=e=>{let t=e&&M(e);!A(t)||r.has(t)||(r.add(t),c.push(t))};for(;c.length>0;){let e=c.pop();if(!e)break;s(e,n=>{if(n!==e&&A(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=l(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?M(n.init):null;if(A(e)){let t=l(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=M(n.left);if(e.type===`Identifier`){let t=l(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=M(n.callee);if(A(r)){u(r);return}if(r.type===`Identifier`){let e=l(r);e&&a.add(e);return}if(t&&Kde(r))for(let e of n.arguments??[])u(e)});for(let e of a)o.has(e)||u(i.get(e))}return r},Ul=(e,t)=>qde(e,!0,t),Wl=(e,t)=>qde(e,!1,t),Jde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!A(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(A(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),s(e,n=>{if(n!==e&&A(n))return!1;if(n.type===`CallExpression`){a(P(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!zl(n,e,t)||a(P(e,t))}}))}return n},Gl=e=>{let t=j(e);return t?Ts(t):null},Kl=e=>{let t=e.parent;for(;t;){if(v(t,`VariableDeclarator`))return t;if(v(t,`FunctionDeclaration`)||v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`)||v(t,`Program`))return null;t=t.parent??null}return null},Yde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),Xde=new Set([`useMemo`,`useState`]),Zde=new Set([`startTransition`]),Qde=(e,t)=>{let n=M(e);return!v(n,`MemberExpression`)||n.computed||!v(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!v(n.property,`Identifier`)?!1:n.property.name===`from`},$de=(e,t)=>{let n=M(e);if(!v(n,`Identifier`))return!1;let r=O(n,n.name);if(!r?.initializer)return!1;let i=Kl(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&v(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&Qde(i.init,t))},ql=(e,t,n=new Set)=>{let r=M(e);if(!v(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),ql(i.initializer,t,n))},efe=(e,t,n,r)=>{let i=M(e);if(v(i,`ArrayExpression`))return!0;if(v(i,`Identifier`)){let e=x(i,t);return!!(e?.kind===`const`&&e.initializer&&!Xt(i,r,n,t)&&efe(e.initializer,t,n,r))}if(v(i,`NewExpression`))return ql(i.callee,t);if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(ql(a,t))return!0;if(!v(a,`MemberExpression`))return!1;let o=M(a.object);return!!(v(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&v(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},Jl=(e,t,n={})=>{let r=S(e),i=r.parent;if(v(i,`NewExpression`)){let e=M(i.callee);return!!(t&&i.arguments?.[0]===r&&v(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return v(i,`CallExpression`)?i.callee===r||(t?D(i,Xde,t,{allowGlobalReactNamespace:!0}):$n(i,Xde))&&i.arguments?.[0]===r||t&&D(i,Zde,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(Qde(i.callee,t)||$de(i.callee,t))?!0:v(i.callee,`MemberExpression`)&&!i.callee.computed&&v(i.callee.property,`Identifier`)&&Yde.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&efe(i.callee.object,t,i,i.callee.property.name))):!1},tfe=new WeakMap,K=(e,t)=>{let n=j(e),r=n??e,i=tfe.get(t);i||(i=new WeakMap,tfe.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(Ts(n))return i.set(r,n),n;if(!Jl(n,t))return i.set(r,null),null;n=j(n)}return i.set(r,null),null},Yl=e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Xl=e=>e?De(e)?!0:v(e,`BlockStatement`)?Xl(e.body.at(-1)):v(e,`ContinueStatement`)||v(e,`BreakStatement`):!1,nfe=new Set([`createRef`,`useRef`]),Zl=(e,t,n={})=>{let r=v(e,`MemberExpression`)?M(e.object):null;if(!v(e,`MemberExpression`)||N(e)!==`current`||!v(r,`Identifier`))return null;let i=x(r,t);if(!i?.initializer)return null;let a=M(i.initializer);return v(a,`CallExpression`)&&D(a,n.includeCreateRef?nfe:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Ql=(e,t,n=new Set)=>{let r=M(e),i=Zl(r,t);if(i)return i;if(!v(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=ns(a);return o?(n.add(a.id),Ql(o,t,n)):null},rfe=(e,t)=>Ql(e,t)!==null,$l=(e,t)=>{s(e,e=>{if(A(e))return!1;t(e)})},eu=e=>!v(e,`CallExpression`)||!v(e.callee,`MemberExpression`)||!v(e.callee.property,`Identifier`)?null:e.callee.property.name,ife=e=>{let t=eu(e);return t!==null&&l.has(t)},tu=e=>{let t=eu(e);return t!==null&&(l.has(t)||t===`observe`)?t:null},afe=e=>tu(e)!==null,nu=e=>{let t=eu(e);return t===null||!ate.has(t)?!1:t===`listen`?(v(e,`CallExpression`)?e.arguments??[]:[]).some(e=>v(e,`ArrowFunctionExpression`)||v(e,`FunctionExpression`)):!0},ru=e=>{let t=e,n=t.parent;for(;n;){if(v(n,`AssignmentExpression`))return n.left===t;if(v(n,`UpdateExpression`)||v(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(v(n,`ForInStatement`)||v(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},ofe=new Set([...Tn,`useInsertionEffect`]),sfe=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),cfe=new Set([`@react-native-community/netinfo`]),lfe=new Set([`events`,`node:events`,`react-native`]),ufe=new WeakMap,dfe=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),ffe=new Set([`clear`,`delete`,`set`]),pfe=new WeakMap,mfe=new WeakMap,hfe=new WeakMap,gfe=new WeakMap,_fe={subscribe:`subscription`,timer:`timer`,socket:`connection`},iu=(e,t)=>{if(er(e,ofe,t.scopes))return!0;let n=M(e.callee);return!!(v(n,`Identifier`)&&sfe.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},au=e=>v(e,`NewExpression`)&&v(e.callee,`Identifier`)&&Hn.has(e.callee.name),q=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=M(e);if(v(i,`Identifier`)){let e=t.scopes.symbolFor(i);if(!e)return t.scopes.isGlobalReference(i)?`global:${i.name}`:null;if(n.has(e.id))return`symbol:${e.id}`;n.add(e.id);let a=r.get(e.id);if(a)return q(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=v(o,`Property`)?T(o):null;if(l&&v(s,`ObjectPattern`)&&v(c,`VariableDeclarator`)&&c.id===s){let i=q(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?M(e.initializer):null;return e.kind===`const`&&u&&(v(u,`Identifier`)||v(u,`MemberExpression`))?q(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(v(i,`MemberExpression`)&&!i.computed){if(!v(i.property,`Identifier`))return null;let e=q(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(v(i,`ThisExpression`))return`this`;if(v(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(A(i)){let e=F(i);return e===null?null:`function:${e}`}return null},ou=(e,t)=>{if(!e)return null;let n=M(e),r=[];for(;v(n,`MemberExpression`)&&!n.computed;){if(!v(n.property,`Identifier`))return null;r.unshift(n.property.name),n=M(n.object)}if(!v(n,`Identifier`))return null;let i=t.scopes.symbolFor(n);if(i&&i.references.every(e=>e.flag===`read`)){let e=i.bindingIdentifier,n=[],a=e.parent;if(v(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(v(a,`Property`)&&v(a.parent,`ObjectPattern`)){let t=T(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&v(o,`VariableDeclarator`)&&o.id===e&&v(s,`VariableDeclaration`)&&s.declarations.length===1&&v(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Ife(c.right,t);if(e){let i=M(c.right),a=v(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?M(a.initializer):null,s=v(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&E(e)?e:null;for(let e of n){let n=t?M(t):null;if(typeof e==`number`&&v(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&E(r)?r:null}else if(typeof e==`string`&&v(n,`ObjectExpression`)){let r=n.properties.find(t=>v(t,`Property`)&&T(t)===e);t=v(r,`Property`)&&E(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=M(e),i=e=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!!(n&&(n.kind===`const`||n.kind===`function`||n.kind===`import`||n.kind===`parameter`)&&n.references.every(e=>e.flag===`read`))};return v(r,`Literal`)||v(r,`ArrayExpression`)||v(r,`ObjectExpression`)||A(r)?!0:i(r)||n[0]===1&&v(r,`CallExpression`)&&i(M(r.callee))})===!0?{collectionKey:e,projectedValues:s,projectionKey:[...n.length>0?n.map(e=>`binding:${String(e)}`):[`binding:value`],...r].join(`.`)}:null}}}let a=i?.initializer?M(i.initializer):null;if(i?.kind===`const`&&v(a,`CallExpression`)){let e=q(a.callee,t),n=[];for(let e of a.arguments){if(!E(e))continue;let r=ou(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=q(e,t);i&&n.push({collectionKey:null,identityKey:i})}let i=new Set(n.flatMap(({collectionKey:e})=>e===null?[]:[e]));if(e&&n.length===a.arguments.length&&i.size===1)return{collectionKey:[...i][0],projectionKey:[`call:${e}:${n.map(({identityKey:e})=>e).join(`:`)}`,...r].join(`.`)}}if(!i||i.kind!==`parameter`)return null;let o=i.bindingIdentifier.parent;for(;o&&!A(o);)o=o.parent;if(!o||!A(o))return null;let s=Iu(o);if(!s)return null;let c=M(s.callee);if(!v(c,`MemberExpression`))return null;let l=q(c.object,t);if(!l)return null;let u=o.params[0],d=v(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=v(u,`ObjectPattern`)?yi(i.bindingIdentifier):null,p=d?q(d.right,t):null;if(d&&!p)return null;let m=u===i.bindingIdentifier?`value`:f&&p?`${f}=default:${p}`:f;return m?{collectionKey:l,projectionKey:[m,...r].join(`.`)}:null},su=(e,t)=>{let n=ou(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},cu=(e,t)=>su(e,t)??q(e,t),lu=(e,t)=>{if(!e)return null;let n=cu(e,t);if(n)return n;let r=M(e);if(v(r,`CallExpression`)){let e=cu(r.callee,t),n=r.arguments.flatMap(e=>{if(!E(e))return[];let n=lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!v(r,`BinaryExpression`)&&!v(r,`LogicalExpression`))return null;let i=lu(r.left,t),a=lu(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},vfe=(e,t)=>{let n=M(e);if(v(n,`CallExpression`)&&lu(n,t))return n;if(!v(n,`Identifier`))return Fu(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?M(r.initializer):null;return!r||!i?Fu(n,t):!v(i,`ObjectExpression`)&&!v(i,`ConditionalExpression`)?v(i,`Identifier`)||v(i,`MemberExpression`)?null:Fu(n,t):r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||ru(e.identifier))return!1;let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=M(n.callee);if(!v(r,`MemberExpression`))return!1;let i=T(r);return i===`addEventListener`||i===`removeEventListener`})?i:null},uu=(e,t,n)=>{let r=ou(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>dl(e?M(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?vfe(e,t):null;if(e&&!i)return null;let a=dl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=M(i);if(!v(o,`ObjectExpression`)){let e=n?lu(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!v(e,`Property`)){s=null;continue}let n=T(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=lu(e.value,t);s=n?`capture-value:${n}`:null}}return s},yfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`ObjectExpression`))return ou(n,t);let r=null;for(let e of n.properties??[]){if(!v(e,`Property`)){r=null;continue}let n=T(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=ou(e.value,t))}return r},du=(e,t,n,r=!1)=>{let i=uu(e,n,r);return i!==null&&i===uu(t,n,r)},fu=(e,t,n=new Set)=>{let r=Ql(e,t.scopes);if(r)return r;let i=M(e);for(;v(i,`MemberExpression`);){let e=Ql(i,t.scopes)??Zl(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=M(i.object)}if(v(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),fu(e.initializer,t,r)}}return null},pu=(e,t)=>fu(e,t)!==null,mu=(e,t)=>{let n=S(e),r=n.parent;if(v(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&pu(r.left,t)){let e=q(r.left,t);return e?{anchor:r,key:e}:null}if(!v(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=T(r),a=r.parent;if(!i||!v(a,`ObjectExpression`))return null;let o=S(a),s=o.parent;if(!v(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!pu(s.left,t))return null;let c=q(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},hu=(e,t)=>{let n=S(e),r=mu(n,t);if(r)return r;let i=n.parent;if(!v(i,`VariableDeclarator`)||i.init!==n||!v(i.id,`Identifier`)||!v(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=mu(e.identifier,t);return n?[n]:[]}).find(n=>Du(e,[n.anchor],t))??null:null},bfe=(e,t,n)=>{let r=T(e),i=M(e.object),a=v(i,`Identifier`)?n.scopes.symbolFor(i):null,o=j(t);if(!r||!a||!o||!A(o))return null;for(let e of a.references){let i=S(e.identifier),a=i.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!pu(a.left,n)||j(a)!==o||!Ud(t,[a],o,n))continue;let s=q(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},xfe=(e,t)=>{let n=hu(e,t);if(n)return n;let r=S(e),i=r.parent;return v(i,`AssignmentExpression`)&&i.right===r&&v(i.left,`MemberExpression`)?bfe(i.left,e,t):null},gu=(e,t,n,r=new Set)=>{let i=M(e);if(v(i,`MemberExpression`)){if(pu(i,n)){let e=q(i,n);return e?new Set([e]):null}let e=T(i);if(!e)return null;let a=gu(i.object,t,n,r);return a&&a.size>0?new Set([...a].map(t=>`${t}.${e}`)):null}if(v(i,`ConditionalExpression`)){let e=gu(i.consequent,t,n,r),a=gu(i.alternate,t,n,r);return e&&a?new Set([...e,...a]):null}if(!v(i,`Identifier`))return null;let a=n.scopes.symbolFor(i);if(!a||r.has(a.id))return null;let o=new Set(r);o.add(a.id);let s=a.initializer?M(a.initializer):null;if(v(s,`CallExpression`)&&D(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=q(i,n);return e?new Set([e]):null}if(a.kind===`const`&&a.initializer){let e=gu(a.initializer,t,n,o);if(e)return e}let c=j(t),l=a.references.flatMap(e=>{let r=S(e.identifier),i=r.parent;if(!c||!v(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||j(i)!==c||!pu(i.left,n)||!Ud(t,[i],c,n))return[];let a=q(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=j(a.bindingIdentifier);if(!u||!A(u))return null;let d=u.params.findIndex(e=>M(e)===a.bindingIdentifier),f=As(u),p=f?n.scopes.symbolFor(f):null;if(d<0||!p)return null;let m=[];for(let e of p.references){let t=S(e.identifier),r=t.parent;if(v(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!E(e))return null;let t=gu(e,r,n,o);if(!t||t.size===0)return null;m.push(t);continue}let i=t.parent,a=i?.parent;if(!(v(i,`ArrayExpression`)&&v(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},Sfe=(e,t)=>{let n=xfe(e,t);if(n)return new Set([n.key]);let r=S(e),i=r.parent;return!v(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:gu(i.left,i,t)??new Set},_u=(e,t,n=!1)=>{let r=S(e),i=r.parent;if(v(i,`VariableDeclarator`)&&i.init===r){let r=q(i.id,t);return n?hu(e,t)?.key??r:r}if(v(i,`AssignmentExpression`)&&i.right===r){if(n&&v(i.left,`MemberExpression`)){let n=bfe(i.left,e,t);if(n)return n.key}return q(i.left,t)}return n?mu(r,t)?.key??null:null},vu=(e,t,n)=>e!==null&&(e===t.handleKey||e===_u(t.node,n)),yu=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`))return yu(n.object,t);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?$e(r):null;return typeof i?.source.value==`string`?i.source.value:null},Cfe=(e,t)=>{if(e.kind!==`subscribe`||!v(e.node,`CallExpression`))return!1;if(nu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||wu(e.node,`addListener`,t))return!1;let n=M(e.node.callee);if(!v(n,`MemberExpression`))return!1;let r=yu(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?cfe.has(r):r!==`react-native`;let i=M(n.object),a=Fu(i,t),o=a&&v(a,`NewExpression`)?yu(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&lfe.has(o))return!1;let s=v(i,`Identifier`)?t.scopes.symbolFor(i):null,c=v(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!v(i,`Identifier`)||c||s!==null&&(is(s)!==null||ns(s)!==null)?ls(i,t.scopes).length===0:!1},wfe=(e,t)=>{let n=M(e),r=Ut(n,t.scopes);return v(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},bu=(e,t,n=new Set)=>{let r=M(e);if(v(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?M(e.initializer):null,a=v(i,`CallExpression`)?Ut(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&bu(i,t,n))}if(!v(r,`CallExpression`))return!1;let i=M(r.callee);return!!(v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`getParent`&&bu(i.object,t,n))},xu=(e,t)=>{if(Cfe(e,t))return!0;if(!v(e.node,`CallExpression`))return!1;let n=M(e.node.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&wfe(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&bu(n.object,t)},Tfe=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&q(r,n)===t.handleKey&&!i.references.some(e=>ru(e.identifier)))},Efe=(e,t,n)=>Tfe(e,t,n)&&xu(t,n),Dfe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!Ed.has(t)||n.receiverKey===null||e!==n.receiverKey||!v(n.node,`CallExpression`))return!1;let i=M(n.node.callee);if(!v(i,`MemberExpression`))return!1;let a=Fu(i.object,r);return a!==null&&au(a)},Su=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!ru(e.identifier)))return null;let i=ns(e);if(!i)return`symbol:${e.id}`;let a=M(i);if(!v(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),Su(a,t,o)??`symbol:${e.id}`}if(A(r)){let e=F(r);return e===null?null:`function:${e}`}return null},Ofe=(e,t,n)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!v(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||ru(e.identifier));if(a.length!==1)return null;let o=S(a[0].identifier),s=o.parent,c=j(t);return!v(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!Ud(t,[s],c,n)?null:`symbol:${i.id}`},Cu=(e,t,n=new Set)=>{let r=M(e);if(ls(r,t.scopes).includes(`MediaQueryList`))return!0;if(v(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=ns(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),Cu(i,t,a)}if(!v(r,`CallExpression`)||!D(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=Xn(r,t.scopes);return!!(i&&Ue(i,t.scopes,e=>{let r=M(e);return v(r,`Literal`)&&r.value===null||v(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||Cu(r,t,new Set(n))},t.cfg,`every`))},wu=(e,t,n)=>{let r=M(e.callee);return e.arguments?.length===1&&v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===t&&Cu(r.object,n)},Tu=(e,t)=>{let n=M(e.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:wu(e,`addListener`,t)?{receiverKey:Su(n.object,t)??Ofe(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:Su(e.arguments?.[0],t)}:{receiverKey:cu(n.object,t),registrationVerbName:n.property.name,eventKey:cu(e.arguments?.[0],t),handlerKey:cu(e.arguments?.[1],t)}},Eu=e=>{if(e.kind!==`subscribe`||!v(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},kfe=(e,t)=>{let n=e;for(;v(n,`CallExpression`);){let e=v(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!v(e,`MemberExpression`)||e.computed||!v(e.property,`Identifier`))return null;if(e.property.name===`channel`)return cu(e.object,t);n=M(e.object)}return null},Afe=(e,t)=>{let n=e,r=S(n);for(;v(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=S(r.parent),t=e.parent;if(!v(t,`CallExpression`)||t.callee!==e)break;n=t,r=S(n)}return n===e||tu(n)!==`subscribe`||kfe(n,t)===null?null:_u(n,t,!0)},jfe=(e,t)=>{let n=Ul(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!A(e)||s(e.body,i=>{if(i!==e.body&&A(i))return!1;if(!v(i,`CallExpression`))return;let a=null;if(v(i.callee,`Identifier`)&&Pl(i.callee,t.scopes)){let e=i.arguments?.[0];a=e&&E(e)?e:null}else{let e=i.arguments?.find(e=>E(e)&&Hl(e)===i);e&&E(e)&&(a=e);let n=tu(i);n!==null&&(a=Eu({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...Tu(i,t)}))}let o=a?P(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},Mfe=(e,t)=>{let n=[];if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`))return n;let r=null;if(v(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];v(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=jfe(e,t);return s(e,a=>{if(a!==e&&A(a)&&(a===r||!i.has(a)&&!Vl(a)))return!1;if(au(a)){n.push({kind:`socket`,node:a,resourceName:v(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!v(a,`CallExpression`))return;if(v(a.callee,`Identifier`)&&Pl(a.callee,t.scopes)){if(a.callee.name===`setTimeout`&&(Yd(a)||Xd(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=tu(a);if(o!==null){let e=Tu(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Afe(a,t):null)??_u(a,t,!0),...e})}}),n.filter(e=>U(e.node,t))},Du=(e,t,n)=>{let r=e,i=j(r);for(;i&&Vl(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!v(e,`CallExpression`))break;r=e,i=j(r)}return qa(r,t,n,e)},Nfe=(e,t,n)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.body,`BlockStatement`))return t;let r=[];return $l(e.body,e=>{v(v(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=F(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=F(r);return i!==null&&i>t&&Ld(r,e,n)});return!Du(e.node,i,n)})},Ou=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=v(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!ru(e.identifier));return r&&v(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&v(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Pfe=(e,t)=>{if(!e)return!1;let n=M(e),r=new Set;if(s(n,e=>{if(!v(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return s(e,e=>{if(!v(e,`Identifier`)||n&&!ru(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!A(a);){if(v(a,`ForOfStatement`)){let e=M(a.left);if(!v(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},ku=(e,t)=>{if(!v(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!v(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!v(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!v(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Au=(e,t,n)=>{if(!v(e,`Identifier`)||!ku(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=S(e.identifier),i=r.parent;if(v(i,`ForOfStatement`)&&i.right===r||v(i,`MemberExpression`)&&i.object===r&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`push`&&v(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(v(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return v(i.id,`Identifier`)&&v(e,`VariableDeclaration`)&&e.kind===`const`?Au(i.id,t,n):!1}return!1})):!1},Ffe=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`)||!ku(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?M(i.initializer):null,o=e=>{if(!e)return!1;let t=M(e);if(v(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(v(t,`ArrayExpression`))return!0;if(!v(t,`CallExpression`))return!1;let n=M(t.callee);return!!(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:v(a,`Identifier`)?Ffe(a,t,n):null},Ife=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=ufe.get(t);if(i||(i=new Map,ufe.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Ffe(e,t);return i.set(r.id,a),a},Lfe=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`)||!ku(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?M(i.initializer):null,o=e=>{if(!e)return!1;let t=M(e);return v(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):v(t,`ArrayExpression`)&&t.elements.every(e=>e===null||v(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:v(a,`Identifier`)?Lfe(a,t,n):null},ju=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=Ou(n,t);if(r)return Lfe(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!A(a);)a=a.parent;if(!a||!A(a))return null;let o=a.parent;if(!v(o,`CallExpression`))return null;let s=M(o.callee);if(v(s,`MemberExpression`)&&!s.computed&&v(s.property,`Identifier`)){if(v(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return q(o.arguments[0],t);if(o.arguments?.[0]===a)return q(s.object,t)}return null},Rfe=(e,t)=>{let n=Ou(e,t);return n?q(n.right,t):ju(e,t)},zfe=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},Mu=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=M(e);if(zfe(i,q(a,t),n),!v(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!ku(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?M(o.initializer):null,l=null,u=n;if(v(c,`Identifier`))l=c;else if(v(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&v(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,F(c)??1/0))}else if(v(c,`CallExpression`)){let e=M(c.callee);if(v(e,`MemberExpression`)&&!e.computed&&v(e.property,`Identifier`)){let r=e.property.name,i=v(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,F(c)??1/0))}}if(!l)return i;for(let[e,n]of Mu(l,t,u,s))zfe(i,e,n);return i},Bfe=(e,t)=>{let n=Ou(e,t);if(n)return Mu(n.right,t);let r=e?M(e):null;if(!v(r,`Identifier`))return new Map;let i=t.scopes.symbolFor(r);if(!i||i.kind!==`parameter`)return new Map;let a=i.bindingIdentifier.parent;for(;a&&!A(a);)a=a.parent;let o=a?.parent,s=v(o,`CallExpression`)?M(o.callee):null;return v(s,`MemberExpression`)?Mu(s.object,t):new Map},Vfe=(e,t,n)=>{let r=Pu(t.node,n);return r!==null&&Bfe(e,n).has(r)},Hfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(n,`Identifier`))return null;let r=Ou(n,t)?.right;return r?Ife(r,t):null},Ufe=(e,t)=>{if(!e)return!1;let n=M(e);return v(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Wfe=(e,t)=>{if(!e)return null;let n=M(e);if(!v(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`&&!ru(e.identifier))?null:r.id},Gfe=(e,t)=>{if(!v(e,`BreakStatement`)&&!v(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(v(n,`LabeledStatement`)&&n.label.name===e.label.name)return B(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return n===t;if(v(e,`BreakStatement`)&&v(n,`SwitchStatement`))return!1;n=n.parent}return!1},Kfe=(e,t,n)=>{if(!(v(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=j(e),i=!1,a=!1;return s(t.body,o=>{if(i||a||o!==t.body&&A(o))return!1;if(v(o,`ReturnStatement`)||v(o,`ThrowStatement`)&&(!r||!Fl(o,e,r,n))||v(o,`BreakStatement`)&&Gfe(o,t))return i=!0,!1;if(v(o,`ContinueStatement`)&&Gfe(o,t)&&(F(o)??-1)<(F(e)??0))return a=!0,!1}),!i&&!a},Nu=(e,t,n)=>{let r=S(e).parent;return!!(v(r,`ExpressionStatement`)&&Kfe(r,t,n))},qfe=(e,t,n)=>{let r=S(e),i=v(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!A(o);){if(v(o,`ForOfStatement`)){if(!Kfe(i,o,n))return null;let e=q(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},Jfe=(e,t,n)=>qfe(e,t,n)!==null,Yfe=e=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!v(t,`CallExpression`))return null;let n=M(t.callee);return!v(n,`MemberExpression`)||n.computed||!v(n.property,`Identifier`)?null:v(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},Xfe=(e,t)=>{let n=j(e);if(!n||!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return null;let r=Yfe(n);if(!r)return null;if(v(n.body,`BlockStatement`)){let r=S(e),i=r.parent,a=i?.parent;if(!v(i,`VariableDeclarator`)||i.init!==r||!v(i.id,`Identifier`)||!v(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];s(n.body,e=>{if(e!==n.body&&A(e))return!1;v(e,`ReturnStatement`)&&o.push(e)});let c=o[0],l=n.body.body??[],u=v(c,`ReturnStatement`)&&c.argument?M(c.argument):null,d=t.scopes.symbolFor(i.id);if(o.length!==1||l[l.length-1]!==c||!v(u,`Identifier`)||!d||t.scopes.symbolFor(u)?.id!==d.id||!Du(e,[c],t))return null}else if(S(e)!==n.body)return null;let i=S(r),a=i.parent;return v(a,`VariableDeclarator`)&&a.init===i?q(a.id,t):null},Zfe=(e,t)=>{let n=S(e),r=n.parent,i=v(r,`CallExpression`)?M(r.callee):null;if(!v(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!v(i,`MemberExpression`)||i.computed||!v(i.object,`Identifier`)||!v(i.property,`Identifier`)||i.property.name!==`push`||!ku(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?M(a.initializer):null;return a&&v(o,`ArrayExpression`)?a:null},Pu=(e,t)=>{let n=Zfe(e,t);if(n)return`symbol:${n.id}`;let r=Xfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(A(a))return null;if(v(a,`VariableDeclarator`)&&a.init===i)return q(a.id,t);i=a,a=i.parent}return null},Qfe=(e,t)=>{if(!v(e.node,`CallExpression`))return null;let n=M(e.node.callee);if(!v(n,`MemberExpression`)||n.computed)return null;let r=M(n.object);if(!ku(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=M(n.callee);return v(r,`MemberExpression`)&&!r.computed&&v(r.object,`Identifier`)&&v(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(j(o)!==j(e.node)||!Du(e.node,[o],t))return null;let s=M(o.callee);if(!v(s,`MemberExpression`)||!v(s.object,`Identifier`)||!ku(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?M(c.initializer):null;return!c||!v(l,`ArrayExpression`)||(l.elements?.length??0)!==0||j(c.declarationNode)!==j(e.node)?null:c.references.every(e=>{let t=S(e.identifier),n=t.parent;if(v(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!v(r,`MemberExpression`)||r.object!==t||r.computed||!v(r.property,`Identifier`)||!v(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?q(s.object,t):null},Fu=(e,t,n=new Set)=>{if(!e)return null;let r=M(e);if(!v(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&v(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!ru(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&A(i.declarationNode)?t.scopes.ownScopeFor(i.declarationNode)?.symbols.find(e=>e.name===i.name&&e.declarationNode===i.declarationNode):null,s=i?.kind===`function`&&i.references.every(e=>e.flag===`read`&&!ru(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!ru(e.identifier)))&&i.scope.symbols.filter(e=>e.name===i.name).length===1;return!i||i.kind!==`const`&&!a&&!s||!i.initializer||n.has(i.id)?r:(n.add(i.id),Fu(i.initializer,t,n))},$fe=(e,t)=>{let n=Fu(e,t);return v(n,`ObjectExpression`)?n:null},epe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=$fe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!v(e,`Property`)||T(e)!==`signal`)continue;let n=q(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},tpe=(e,t)=>{let n=M(e);if(v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)&&n.property.name===`signal`)return q(n.object,t);if(!v(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?M(r.initializer):null;if(v(i,`MemberExpression`)&&!i.computed&&v(i.property,`Identifier`)&&i.property.name===`signal`)return q(i.object,t);let a=r.bindingIdentifier.parent;return!v(a,`Property`)||T(a)!==`signal`||!v(a.parent,`ObjectPattern`)||!v(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:q(a.parent.parent.init,t)},npe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node,r=j(e.node);if(!r||!A(r))return null;let i=null;return s(r.body,a=>{if(i||a!==r.body&&A(a))return!1;if(!v(a,`CallExpression`)||Yn(a)!==`addEventListener`)return;let o=M(a.callee);if(!v(o,`MemberExpression`))return;let c=a.arguments[0]?M(a.arguments[0]):null;if(!v(c,`Literal`)||c.value!==`abort`)return;let l=tpe(o.object,t);if(!l)return;let u=Fu(a.arguments[1],t);if(!u||!A(u)||u.async||u.generator)return;let d=[];if(s(u.body,r=>{if(r!==u.body&&A(r))return!1;if(!v(r,`CallExpression`))return;let i=M(r.callee);!v(i,`MemberExpression`)||Yn(r)!==`removeEventListener`||cu(i.object,t)!==e.receiverKey||cu(r.arguments[0],t)!==e.eventKey||cu(r.arguments[1],t)!==e.handlerKey||!du(n.arguments[2],r.arguments[2],t,!0)||d.push(r)}),Ja(u,d,t))return i=l,!1}),i},rpe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!v(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?M(e.node.arguments[0]):null,r=M(e.node.callee);return v(n,`Literal`)&&n.value===`abort`&&v(r,`MemberExpression`)?tpe(r.object,t):null},Iu=e=>{let t=A(e)?e:j(e);if(!t||!A(t)||t.async||t.generator)return null;let n=t.parent;if(!v(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=M(n.callee);return v(r,`MemberExpression`)&&!r.computed&&v(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Lu=e=>{let t=S(e),n=t.parent;return v(n,`CallExpression`)&&n.callee===t?n:null},Ru=(e,t,n)=>{let r=As(e);if(!r||Fu(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=Lu(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return j(o)===t&&U(o,n)?o:null},zu=(e,t)=>{if(!v(e,`NewExpression`))return!1;let n=M(e.callee);return v(n,`Identifier`)&&ve.has(n.name)&&t.scopes.isGlobalReference(n)},Bu=(e,t)=>{if(!e)return!0;let n=M(e);return v(n,`Literal`)&&n.value===null||v(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},ipe=(e,t,n,r)=>{if(!A(e)||e.async||e.generator||n.receiverKey===null||!v(n.node,`CallExpression`))return null;let i=M(n.node.callee),a=v(i,`MemberExpression`)?M(i.object):null;if(!a||!v(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),c=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!v(c,`VariableDeclarator`)||c.id!==o.bindingIdentifier||j(c)!==t||!Bu(c.init,r))return null;let l=[];for(let e of o.references){let t=S(e.identifier),n=t.parent;if(v(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){l.push(n);continue}let r=n,i=r?.parent;if(!v(r,`MemberExpression`)||r.object!==t||!v(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(T(r)??``))return null}if(l.length!==1)return null;let u=l[0];if(!u||!zu(M(u.right),r)||j(u)!==e||!Fl(u,n.node,e,r))return null;let d=[],f=F(u);if(f===null||(s(e.body,t=>{if(t!==e.body&&A(t))return!1;if(!v(t,`CallExpression`))return;let i=F(t);i===null||i>=f||!Ld(t,n,r)||d.push(Yu(t,e,n.receiverKey??``,r)??t)}),!Ja(e,d,r)))return null;let p=As(e),m=p?r.scopes.symbolFor(p):null;if(!m)return null;let h=[];for(let n of m.references){let i=Lu(n.identifier);if(i&&j(i)===t){h.push(i);continue}let a=S(n.identifier),o=a.parent;if(!o||!zu(o,r)||j(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&U(g,r)?g:null},Vu=(e,t,n,r)=>{let i=j(e);return!i||i===t?e:Ru(i,t,n)??(r?ipe(i,t,r,n):null)??e},ape=(e,t,n)=>{if(!A(e))return[];let r=As(e),i=q(r,n);if(!i)return[];let a=[];return s(t,e=>{if(e!==t&&A(e))return!1;let o=v(e,`CallExpression`)?e.arguments[1]:null;v(e,`CallExpression`)&&Yn(e)===`addEventListener`&&(q(o,n)===i||v(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},ope=(e,t,n)=>{let r=M(e);if(!v(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?M(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!v(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!v(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>ru(e.identifier));if(o.length!==1)return null;let s=o[0],c=S(s.identifier),l=c.parent;if(!v(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||j(l)!==j(t.node)||!Du(t.node,[l],n))return null;let u=M(l.right);return A(u)?u:null},Hu=(e,t,n,r)=>{if(!A(e)||!v(t,`CallExpression`))return null;let i=new Map(r);for(let r=0;r<e.params.length;r+=1){let a=e.params[r],o=t.arguments?.[r],s=v(a,`AssignmentPattern`)?M(a.left):a;if(!v(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=S(e.identifier),n=t.parent;return v(n,`AssignmentExpression`)&&n.left===t||v(n,`UpdateExpression`)&&n.argument===t||v(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){v(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}v(o,`SpreadElement`)||i.set(c.id,o)}return i},spe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=v(e,`ChainExpression`)?e.expression:e,i=v(r,`CallExpression`)?M(r.callee):null,a=v(r,`CallExpression`)?r.arguments[0]:null,o=Pu(t.node,n);if(!v(r,`CallExpression`)||!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`forEach`||!v(a,`Identifier`)||!ot.has(a.name)||!n.scopes.isGlobalReference(a)||o===null||o!==q(i.object,n))return!1;let s=Mu(i.object,n);return s.has(o)&&!Fd(t.node,r,s,n)},Uu=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!A(e)||r.has(e))return!1;r.add(e);let o=!1,c=[];s(e.body,s=>{if(o||s!==e.body&&A(s)&&!Vl(s))return!1;let l=v(s,`ChainExpression`)?s.expression:s;if(spe(s,t,n)){if(a){c.push(s);return}return o=!0,!1}if(Ld(s,t,n,i)){let r=Iu(s),u=v(l,`CallExpression`)?M(l.callee):null,d=v(u,`MemberExpression`)?u.object:u,f=Ou(d,n),p=Rfe(d,n),m=Bfe(d,n),h=Qfe(t,n)??Pu(t.node,n);if(p!==null&&j(s)!==e){let e=j(s);r&&e&&A(e)&&h!==null&&m.has(h)&&Ja(e,[s],n)&&!Fd(t.node,s,m,n)&&c.push(r);return}let g=Ou(v(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Xu(s,e,t,n,i);c.push(r??s);return}return o=!0,!1}let _=qfe(s,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&v(t.node,`CallExpression`)?new Set([M(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=v(e,`MemberExpression`)?ou(e.object,n):E(e)?ou(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Nu(s,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!Fd(t.node,s,m,n))&&c.push(_??g);return}if(!v(l,`CallExpression`))return;let u=Fu(l.callee,n),d=v(u,`Identifier`)?ope(u,t,n):u?Hd(u,n):null,f=d&&A(d)?Hu(d,l,n,i):null;if(d&&A(d)&&f&&!d.async&&!d.generator&&Uu(d,t,n,new Set(r),f,a)){let r=Xu(s,e,t,n,i)??dpe(s,e,t,n);c.push(r??l)}});let l=S(e.body);return a&&c.some(e=>S(e)===l)?!0:o||Ja(e,c,n)},Wu=(e,t,n)=>e.length>0&&e.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&A(r)&&Uu(r,t,n,new Set,new Map,!0))}),Gu=(e,t,n)=>{let r=M(e);if(!v(r,`CallExpression`))return!1;let i=M(r.callee);if(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=M(i.object);if(!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`))return!1;let o=q(a.object,n);if(o===null||o!==q(r.arguments?.[0],n))return!1;let s=a.property.name;return Dfe(o,s,t,n)?!0:t.kind===`socket`?vu(o,t,n)&&(Ed.has(s)||Td.has(s)):t.kind===`subscribe`&&vu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||cn.has(s))},Ku=(e,t,n,r=!1)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(Gu(e,t,n))return!0;let r=Fu(e,n),i=Hd(e,n);return r&&Gu(r,t,n)?!0:!!(i&&A(i)&&Uu(i,t,n))};if(!v(e.body,`BlockStatement`))return i(M(e.body));let a=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&i(M(e.argument))&&a.push(e)}),r?Du(Vu(t.node,e,n,t),a,n):Ja(e,a,n)},qu=(e,t,n,r=new Map)=>{let i=q(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=M(e);if(!v(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return q(a.left,n,new Set,r)===t&&o(a.right)||q(a.right,n,new Set,r)===t&&o(a.left)},Ju=(e,t,n,r)=>{let i=M(e),a=e=>{let t=M(e);if(v(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&v(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(v(t,`LogicalExpression`)){let e=a(t.left),n=a(t.right);return t.operator===`&&`?e||n:e&&n}return!1};if(a(i))return!0;if(v(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Kt(M(t))===!1)return!0}if(v(i,`UnaryExpression`)&&i.operator===`!`){let e=M(i.argument);if(v(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Kt(M(i))===!0)return!0}let a=q(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:qu(i.argument,t,n,r)}if(v(i,`LogicalExpression`)){let e=Ju(i.left,t,n,r),a=Ju(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(v(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?q(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Yu=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(v(a,`IfStatement`)){if(!qu(a.test,n,r,i)||!Du(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(A(t)&&v(t.body,`BlockStatement`)){let a=o??e;for(;a.parent&&a.parent!==t.body;)a=a.parent;let s=t.body.body.findIndex(e=>e===a);for(let e=s-1;e>=0;--e){let a=t.body.body[e];if(v(a,`IfStatement`)&&a.alternate===null&&Xl(a.consequent)&&Ju(a.test,n,r,i))return a}}return o},Xu=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Yu(e,t,n.handleKey,r,i),cpe=(e,t,n,r)=>{if(!A(t)||n.handleKey===null)return null;let i=e=>{let t=M(e);return v(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(v(a,`IfStatement`)&&B(e,a.consequent)&&(o=i(a.test).map(e=>q(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!v(a,`IfStatement`)||!o)return null;let c=K(n.node,r.scopes);if(!c){let e=j(n.node);for(;e&&!Ts(e);)e=j(e);c=e}if(!c||!A(c))return null;let l=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},u=[],d=[];if(s(c.body,e=>{if(!v(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=q(e.left,r);t===o&&u.push(e),t===n.handleKey&&v(M(e.right),`CallExpression`)&&Yn(M(e.right))===`setTimeout`&&d.push(e)}),u.length===0||d.length===0)return null;let f=fu(u[0].left,r),p=f?.initializer?M(f.initializer):null,m=v(p,`CallExpression`)&&p.arguments[0]&&E(p.arguments[0])?p.arguments[0]:null;if(!m||!l(m))return null;let h=e=>{if(qu(e,o,r))return!0;let t=!1;return s(e,e=>{if(t)return!1;if(v(e,`MemberExpression`)&&q(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},g=()=>{let e=As(j(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||n.callee!==t)return!1;let i=j(n);if(!i||!A(i))return!1;if(Ud(n,u.filter(e=>j(e)===i&&!l(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(v(a,`IfStatement`)&&B(n,a.consequent)&&h(a.test))return!0;a=a.parent??null}return!1})};if(!d.every(e=>{let t=j(e);return!t||!A(t)?!1:Ud(e,u.filter(e=>j(e)===t&&!l(e.right)),t,r)||g()}))return null;let _=e=>{if(!A(e))return!1;let t=e.parent,i=t?.parent;return!!(v(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&v(i,`AssignmentExpression`)&&q(i.left,r)===n.handleKey)},y=t=>{let i=j(t);if(!i||!A(i))return!1;if(_(i))return!0;let a=[];return s(i.body,t=>{if(t!==i.body&&A(t))return!1;(t===e||fd(t,n,r))&&a.push(t)}),Ud(t,a,i,r)||Du(t,a,r)};return u.every(e=>!l(e.right)||y(e))?a:null},lpe=new WeakMap,upe=new WeakMap,dpe=(e,t,n,r)=>{let i=lpe.get(e);if(i||(i=new WeakMap,lpe.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=upe.get(e);if(a||(a=new WeakSet,upe.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=cpe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},Zu=(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=v(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||v(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||v(o,`LogicalExpression`)&&o.right===a||v(o,`AssignmentPattern`)&&o.right===a||(v(o,`ForStatement`)||v(o,`ForInStatement`)||v(o,`ForOfStatement`)||v(o,`WhileStatement`)||v(o,`DoWhileStatement`))&&o.body===a?a:v(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},fpe=(e,t,n,r=!1)=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=F(t.node);if(!i||!a||o===null)return!1;let s=[];return $l(e.body,c=>{if(!v(c,`CallExpression`))return;let l=F(c),u=Xu(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&Zu(c,t.node,e))return;if(Ld(c,t,n)){s.push(u??c);return}let f=Hd(c.callee,n),p=f&&A(f)?Hu(f,c,n,new Map):null;f&&A(f)&&p&&Uu(f,t,n,new Set,p)&&s.push(u??c)}),r?Ud(t.node,s,e,n):Ja(e,s,n)},ppe=(e,t,n)=>{let r=j(e);if(!r||!v(r,`ArrowFunctionExpression`)&&!v(r,`FunctionExpression`)&&!v(r,`FunctionDeclaration`))return!1;let i=!1;return s(r.body,a=>{if(i)return!1;if(!v(a,`CallExpression`)||j(a)!==r||!iu(a,n))return;let o=Xn(a);if(o&&o!==e&&Ku(o,t,n))return i=!0,!1}),i},mpe=(e,t,n)=>t.handleKey!==null&&ppe(e,t,n)&&fpe(e,t,n,t.registrationVerbName===`setTimeout`),Qu=(e,t,n,r)=>{let i=M(e);if(v(i,`UnaryExpression`)&&i.operator===`!`)return Qu(i.argument,!t,n,r);if(v(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Qu(i.left,t,n,r),...Qu(i.right,t,n,r)]:[];if(v(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Kt(i.left),a=Kt(i.right),o=e??a,s=e===null?i.left:i.right,c=q(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:v(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=q(i,r);return a===null?[]:[{bindingIdentifier:v(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},$u=(e,t,n,r=!1)=>{if(!A(e)||e.async&&!r)return[];let i=[];s(e.body,r=>{if(r!==e.body&&A(r))return!1;v(r,`IfStatement`)&&!r.alternate&&!Fl(r.consequent,t,e,n)&&Ud(t,[r],e,n)&&i.push(...Qu(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)v(o,`IfStatement`)&&o.consequent===a&&i.push(...Qu(o.test,!1,o,n)),a=o,o=o.parent;return i},ed=(e,t,n)=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);if(!r||!A(r)||r.async||r.generator)return!1;let i=!1;return s(r.body,e=>{if(i||e!==r.body&&A(e))return!1;if(v(e,`AssignmentExpression`)&&e.operator===`=`&&q(e.left,n)===t.key&&Kt(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},td=(e,t,n,r)=>{let i=F(t);if(!A(e)||i===null)return!0;let a=!1;return s(e.body,t=>{if(a||t!==e.body&&A(t))return!1;let o=F(t);if(o===null||o>=i)return;let s=v(t,`AssignmentExpression`)?t.left:v(t,`UpdateExpression`)?t.argument:null;if(s&&q(s,r)===n.key)return a=!0,!1}),a},hpe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(v(a,`TryStatement`)&&a.block===i&&a.handler&&Fl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},nd=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!v(i.declarationNode,`VariableDeclarator`)||j(i.declarationNode)!==e?!1:i.references.every(e=>{if(!ru(e.identifier))return!0;let r=S(e.identifier),i=r.parent;return v(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Kt(i.right)===t.value&&n.includes(j(i)??i)})},gpe=(e,t,n,r)=>{let i=[];s(t.guardNode,e=>{if(i.length===0&&v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&v(e.property,`Identifier`)&&q(e,r)===t.key)return i.push(e),!1});let a=i[0];if(!a)return!1;let o=r.scopes.symbolFor(a.object),c=o?.initializer?M(o.initializer):null;if(!o||o.kind!==`const`||!v(o.declarationNode,`VariableDeclarator`)||j(o.declarationNode)!==e||!v(c,`ObjectExpression`)||c.properties.length!==1)return!1;let l=c.properties[0];return!v(l,`Property`)||T(l)!==T(a)||Kt(l.value)!==!t.value?!1:o.references.every(e=>{let i=pd(e.identifier);if(!v(i,`MemberExpression`)||q(i,r)!==t.key)return!1;if(!ru(e.identifier))return!0;let a=i.parent;return v(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&Kt(a.right)===t.value&&n.includes(j(a)??a)})},rd=(e,t,n,r)=>{if(!A(e))return!0;let i=F(t.guardNode),a=F(n);if(i===null||a===null)return!0;let o=!1;return s(e.body,t=>{if(o||t!==e.body&&A(t))return!1;let s=F(t);if(!(s===null||s<=i||s>=a)&&(v(t,`AwaitExpression`)||v(t,`YieldExpression`)||v(t,`CallExpression`)&&!eo(t,r.scopes))&&(Fl(t,n,e,r)||hpe(t,n,e,r)))return o=!0,!1}),o},_pe=(e,t,n,r,i)=>{let a=S(t),o=v(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:Ru(t,e,i);if(!A(t)||!t.async||t.generator||!o||j(o)!==e||!Ul(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(v(s,`ForStatement`)||v(s,`ForInStatement`)||v(s,`ForOfStatement`)||v(s,`WhileStatement`)||v(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,i);return t&&A(t)?[t]:[]});return c.length===r.length?$u(t,n,i,!0).some(a=>(nd(e,a,c,i)||gpe(e,a,c,i))&&!rd(t,a,n,i)&&!td(t,n,a,i)&&r.every(e=>ed(e,a,i))):!1},id=(e,t)=>{let n=Zl(M(e),t.scopes),r=n?.initializer?M(n.initializer):null;if(!v(r,`CallExpression`))return null;let i=r.arguments?.[0]?M(r.arguments[0]):null;return!v(i,`Literal`)||typeof i.value!=`number`?null:q(e,t)},ad=(e,t)=>{let n=M(e);if(v(n,`LogicalExpression`)&&n.operator===`||`)return ad(n.left,t)??ad(n.right,t);if(!v(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=id(n.left,t),i=id(n.right,t),a=M(r?n.right:n.left),o=r??i;return o&&v(a,`Identifier`)?o:null},od=(e,t,n)=>{if(!A(e))return null;let r=null;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(!v(i,`IfStatement`)||i.alternate)return;let a=ad(i.test,n);!a||Fl(i.consequent,t,e,n)||!Ud(t,[i],e,n)||(r=a)}),r},vpe=(e,t,n)=>{if(v(e,`UpdateExpression`)&&q(e.argument,n)===t)return!0;if(!v(e,`AssignmentExpression`)||q(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=M(e.right);return v(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},ype=(e,t,n)=>{if(!A(e))return!1;let r=!1;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(vpe(i,t,n))return r=!0,!1}),r},sd=(e,t,n)=>e.length>0&&e.every(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&A(r)&&Uu(r,t,n))}),bpe=(e,t)=>{let n=q(e,t),r=M(e);if(!v(r,`Identifier`))return n;let i=Fu(r,t);return i&&i!==r?q(i,t)??n:n},xpe=(e,t,n)=>{let r=M(e);if(!v(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=M(e),a=M(r);if(!(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||bpe(i.object,n)!==t||!v(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Spe=(e,t,n)=>{if(!A(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];s(e.body,r=>{if(r!==e.body&&A(r))return!1;if(!v(r,`IfStatement`)||r.alternate!==null||!Xl(r.consequent)||!Ud(t.node,[r],e,n))return;let o=xpe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let c=[...o][0],l=new Set(a.map(({value:e})=>e)),u=K(t.node,n.scopes);if(!u){let e=j(t.node);for(;e&&!Ts(e);)e=j(e);u=e}if(!c||!u||!A(u))return!1;let d=new Set,f=!1;return s(u.body,e=>{if(f)return!1;if(!v(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=q(e.left,n);if(t===`${i}.${c}`)return f=!0,!1;if(t!==i)return;let r=M(e.right);if(v(r,`Literal`)&&r.value===null)return;let a=Fu(r,n);if(!a||!v(a,`ObjectExpression`))return f=!0,!1;let o=a.properties.find(e=>v(e,`Property`)&&T(e)===c),s=v(o,`Property`)?M(o.value):null;if(!s||!v(s,`Literal`)||typeof s.value!=`string`)return f=!0,!1;d.add(s.value)}),!f&&d.size>0&&[...d].every(e=>l.has(e))},Cpe=(e,t,n)=>{if(!A(e)||t.handleKey===null)return!1;let r=F(t.node);if(r===null)return!1;let i=e=>{let t=M(e);return v(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=M(e),r=q(t,n);if(r)return r;if(!v(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?q(a,n):null},o=e=>{let t=M(e);return v(t,`Literal`)&&t.value===null||v(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},c=e=>{if(!A(e))return!1;let r=e.parent,i=r?.parent;return!!(v(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Yn(r)===`setTimeout`&&v(i,`AssignmentExpression`)&&q(i.left,n)===t.handleKey)},l=e=>{let r=j(e);if(!r||!A(r))return!1;let i=[];return s(r.body,a=>{if(a!==r.body&&A(a))return!1;let o=F(a),s=F(e);o!==null&&s!==null&&o<s&&fd(a,t,n)&&i.push(Xu(a,r,t,n)??a)}),Ud(e,i,r,n)},u=null,d=null,f=null,p=null;if(s(e.body,o=>{if(u||!v(o,`IfStatement`))return;let s=F(o);if(s===null||s>=r||Fl(o.consequent,t.node,e,n))return;let c=i(o.test),l=c.map(a).filter(e=>e!==null);if(l.includes(t.handleKey??``)){d=l.find(e=>e!==t.handleKey)??null;for(let e of c){let t=M(e);if(!v(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=q(t.left,n),i=q(t.right,n);if(r&&i){f=r,p=i;break}}d&&f&&p&&(u=o)}}),!u||!d||!f||!p)return!1;let m=K(t.node,n.scopes);if(!m){let e=j(t.node);for(;e&&!Ts(e);)e=j(e);m=e}if(!m||!A(m))return!1;let h=[],g=[],_=[],y=[];if(s(m.body,e=>{if(v(e,`AssignmentExpression`)){let r=q(e.left,n);r===d&&h.push(e),r===f&&g.push(e),r===p&&_.push(e),r===t.handleKey&&v(M(e.right),`CallExpression`)&&Yn(M(e.right))===`setTimeout`&&y.push(e)}v(e,`UpdateExpression`)&&q(e.argument,n)===p&&_.push(e)}),y.length===0)return!1;let b=h.length>0?fu(h[0].left,n)?.initializer:null,ee=b&&v(b,`CallExpression`)?b.arguments[0]:null;return!(!ee||!E(ee)||!o(ee)||!y.every(e=>{let t=j(e);return!t||!A(t)?!1:Ud(e,h.filter(e=>j(e)===t&&!o(e.right)),t,n)})||h.filter(e=>o(e.right)&&!c(j(e)??e)&&!l(e)).length>0||g.some(e=>q(e.right,n)!==p)||_.some(e=>!l(e)))},cd=(e,t,n)=>{let r=t.handleKey;if(!A(e)||r===null)return!1;let i=F(t.node);if(i===null)return!1;let a=!1,o=[];return s(e.body,s=>{if(a||s!==e.body&&A(s))return!1;if(v(s,`IfStatement`)&&!s.alternate&&qu(s.test,r,n)&&!Fl(s.consequent,t.node,e,n)&&Ud(t.node,[s],e,n))return a=!0,!1;let c=F(s);if(c===null||c>=i||!fd(s,t,n))return;let l=Xu(s,e,t,n);o.push(l??s)}),a||Cpe(e,t,n)||Spe(e,t,n)||Ud(t.node,o,e,n)},ld=(e,t)=>e.kind===`subscribe`?e.handlerKey??q(Eu(e),t):e.kind!==`timer`||!v(e.node,`CallExpression`)?null:q(e.node.arguments?.[0],t),ud=(e,t)=>{let n=As(e);return new Set([q(e,t),q(n,t)].filter(e=>e!==null))},dd=(e,t,n,r)=>Wu(n,t,r)&&Du(Vu(t.node,e,r),n,r),fd=(e,t,n)=>{if(Ld(e,t,n))return!0;let r=v(e,`ChainExpression`)?e.expression:e;if(!v(r,`CallExpression`))return!1;let i=Fu(r.callee,n),a=A(i)?i:Hd(r.callee,n),o=a&&A(a)?Hu(a,r,n,new Map):null;return!!(a&&A(a)&&o&&!a.async&&!a.generator&&Uu(a,t,n,new Set,o,!0))},wpe=(e,t,n)=>{let r=M(e);if(v(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&v(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode)===t?e:null}let i=Zl(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;v(a,`MemberExpression`);)a=M(a.object);if(!v(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?M(o.initializer):null;return o&&o.kind===`const`&&v(o.declarationNode,`VariableDeclarator`)&&v(s,`ObjectExpression`)&&j(o.declarationNode)===t?o:null},pd=e=>{let t=e;for(;v(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return S(t)},Tpe=(e,t)=>{let n=new Set,r=new Set,i=ld(e,t);if(i&&n.add(i),e.kind!==`timer`||!v(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!v(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?j(o.bindingIdentifier):null;if(!o||!s||!A(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=As(s),u=l?t.scopes.symbolFor(l):null;if(c<0||!u)return n;for(let e of u.references){let i=Lu(e.identifier);if(!v(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!E(a))return n;let o=q(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},md=(e,t,n,r)=>{if(!A(e)||t.handleKey===null)return!1;let i=ud(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||j(n.node)===e)return!1;let a=Tpe(n,r);return[...i].some(e=>a.has(e))})},Epe=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Lu(n.identifier),s=r?j(r):null;if(!r||!s||!A(s))return!1;if(s===e)o+=1;else if(!md(s,t,[t],i))return!1;let c=a.get(s)??[];c.push(r),a.set(s,c)}return o>1?!1:[...a.entries()].every(([e,t])=>t.every((n,r)=>t.slice(r+1).every(t=>!Fl(n,t,e,i)&&!Fl(t,n,e,i))))},hd=(e,t,n,r,i)=>t.references.every(t=>{let a=pd(t.identifier);if(q(a,i)!==e.handleKey)return v(n.left,`Identifier`);if(!ru(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!v(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let c=M(o.right),l=j(o),u=r.find(t=>t.kind===`timer`&&t.node===c&&t.handleKey===e.handleKey),d=j(e.node),f=d?ud(d,i):new Set;if(u&&(l&&md(l,e,r,i)||f.has(ld(u,i)??``)))return!0;if(u&&l===d){let t=S(o).parent,n=t?.parent;if(!v(t,`ExpressionStatement`)||!v(n,`BlockStatement`))return!1;let r=n.body[n.body.findIndex(e=>e===t)-1],a=v(r,`ExpressionStatement`)?M(r.expression):null;return!!(v(a,`CallExpression`)&&v(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&Ld(a,e,i))}if(!(v(c,`Literal`)&&(c.value===null||e.registrationVerbName===`requestAnimationFrame`&&c.value===0)||v(c,`Identifier`)&&c.name===`undefined`&&i.scopes.isGlobalReference(c))||!l||!A(l))return!1;if(md(l,e,r,i)||e.registrationVerbName===`requestAnimationFrame`&&ud(l,i).has(ld(e,i)??``)&&Fl(o,e.node,l,i))return!0;let p=[];return s(l.body,t=>{if(t!==l.body&&A(t))return!1;fd(t,e,i)&&p.push(t)}),Ud(o,p,l,i)}),Dpe=(e,t,n)=>{let r=Zfe(t.node,n);return!!(r&&j(r.declarationNode)===e)},Ope=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`&&e.registrationVerbName!==`requestAnimationFrame`)return!1;let i=ud(t,r);if(!i.has(ld(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&j(e.node)===t&&i.has(ld(e,r)??``));return a.length===1&&a[0]===e},gd=(e,t,n,r,i)=>{let a=j(t.node),o=S(t.node),s=o.parent,c=t.handleKey!==null&&v(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?wpe(s.left,e,i):null,l=Dpe(e,t,i);if(t.kind!==`timer`||!a||!A(a)||a===e||a.async||a.generator||!c&&!l||!Wu(r,t,i)||c&&v(s,`AssignmentExpression`)&&!hd(t,c,s,n,i))return!1;if(md(a,t,n,i))return!0;let u=As(a),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.length===1?Lu(d.references[0].identifier):null,p=Ope(t,a,n,i);if(c&&!p&&!cd(a,t,i)&&!f&&!Epe(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(v(m,`ForStatement`)||v(m,`ForInStatement`)||v(m,`ForOfStatement`)||v(m,`WhileStatement`)||v(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&B(e.identifier,t.node)&&ld(t,i)===q(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=Wl(e,i.scopes);return d.references.every(o=>{let s=q(o.identifier,i),c=S(o.identifier).parent;if(h.some(e=>e===o))return!0;let l=n.find(e=>e!==t&&s!==null&&ld(e,i)===s&&(B(o.identifier,e.node)||c&&Ld(c,e,i))),u=l?Eu(l):null;if(l&&!(u&&A(u)&&u.async)&&dd(e,l,r,i))return!0;let d=Lu(o.identifier);if(!d)return!1;let f=j(d);if(!f||!A(f)||f===a||f.generator)return!1;if(f.async)return _pe(e,f,d,r,i);if(md(f,t,n,i))return!0;if(f===e)return Du(Vu(d,e,i),r,i);let p=ud(f,i),m=n.find(e=>{if(e===t)return!1;let n=Eu(e),r=n?Fu(n,i):null;return p.has(ld(e,i)??``)||r===f});return m?dd(e,m,r,i):g.has(f)&&Du(Vu(d,e,i),r,i)})},kpe=(e,t,n,r,i,a)=>{let o=Lu(e);if(o){let e=j(o);if(e&&e!==t&&Wl(r).has(e))return{generationKey:null};let n=e?od(e,o,a):null;return n?{generationKey:n}:null}let s=S(e),c=s.parent;if(!v(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!v(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:_u(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=od(t,n,a);return l.handleKey!==null&&sd(i,l,a)&&u?{generationKey:u}:null},Ape=(e,t,n,r)=>{let i=j(t.node),a=S(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!A(i)||i===e||i.async||i.generator||!v(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!Zl(M(o.left),r.scopes)||!Wl(e).has(i)||!sd(n,t,r)||!Ja(e,n,r))return!1;let s=n.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&A(t)?[t]:[]}),c=As(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>kpe(a.identifier,i,t.node,e,n,r));if(u.some(e=>e===null))return!1;let d=new Set(u.flatMap(e=>e?.generationKey?[e.generationKey]:[]));if(d.size!==1)return!1;let f=d.values().next().value;return typeof f==`string`?[...Wl(e),...s].some(e=>ype(e,f,r)):!1},jpe=(e,t,n,r)=>{if(Ape(e,t,n,r))return!0;let i=j(t.node),a=i?Hl(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!A(i)||i===e||i.async||i.generator||!v(t.node,`CallExpression`)||!v(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!Ul(e,r.scopes).has(i)||!Du(a,n,r))return!1;let o=S(t.node),c=o.parent;if(!v(c,`AssignmentExpression`)||c.operator!==`=`||c.right!==o||!v(c.left,`Identifier`))return!1;let l=r.scopes.symbolFor(c.left);if(!l||l.kind!==`let`&&l.kind!==`var`||!v(l.declarationNode,`VariableDeclarator`)||j(l.declarationNode)!==e)return!1;let u=n.flatMap(e=>{if(!v(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&A(t)?[t]:[]});if(u.length!==n.length)return!1;let d=new Map;for(let e of u){if(!A(e))return!1;let n=[];if(s(e.body,i=>{if(i!==e.body&&A(i))return!1;if(v(i,`CallExpression`)&&v(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Ld(i,t,r)){let a=Xu(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Ja(e,n.map(e=>e.anchor),r))return!1;d.set(e,n)}let f=l.references.filter(e=>ru(e.identifier)),p=f.some(e=>S(e.identifier).parent===c),m=t.node.arguments,h=f.some(e=>{let t=S(e.identifier),n=t.parent;if(n===c)return!1;if(!v(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=M(n.right);if(!(v(i,`Literal`)&&i.value===null||v(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=j(n);if(a&&A(a)&&m.some(e=>{let t=M(e);return A(t)&&t===a}))return!1;let o=j(n),s=o?d.get(o):void 0;return!(o&&s&&Ud(n,s.map(e=>e.handleGuard&&B(n,e.handleGuard.consequent)?e.call:e.anchor),o,r))});if(!p||h)return!1;let g=t.node.parent;for(;g&&g!==i;){if(v(g,`ForStatement`)||v(g,`ForInStatement`)||v(g,`ForOfStatement`)||v(g,`WhileStatement`)||v(g,`DoWhileStatement`))return!1;g=g.parent}let _=!1;for(let e of t.node.arguments??[])s(e,e=>{if(_||A(e))return!1;if(v(e,`AwaitExpression`)||v(e,`YieldExpression`)||v(e,`CallExpression`)&&!eo(e,r.scopes))return _=!0,!1});return _?!1:$u(i,t.node,r).some(a=>nd(e,a,u,r)&&!rd(i,a,t.node,r)&&!td(i,t.node,a,r)&&n.every(e=>ed(e,a,r)))},Mpe=(e,t,n)=>{if(!A(e)||!v(e.body,`BlockStatement`))return!1;let r=new Set;if(s(e.body,e=>{if(!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||Yn(e)!==`push`||!v(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!E(a))return;let o=M(a),c=A(o)?o:Fu(a,n);if(!c||!A(c))return;let l=!1;if(s(c.body,e=>{if(l||e!==c.body&&A(e))return l?!1:void 0;if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let i=v(t.node,`CallExpression`)?t.node:null;if(Yn(e)===`removeEventListener`&&i&&cu(r.object,n)===t.receiverKey&&cu(e.arguments[0],n)===t.eventKey&&cu(e.arguments[1],n)===t.handlerKey&&du(i.arguments[2],e.arguments[2],n,!0))return l=!0,!1}),!l)return;let u=S(t.node),d=u.parent,f=S(e),p=f.parent;if(!d||!v(d,`ExpressionStatement`)||d.expression!==u||!p||!v(p,`ExpressionStatement`)||p.expression!==f||!d.parent||!v(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=n.scopes.symbolFor(i.object),g=h?.initializer?M(h.initializer):null;h?.kind!==`const`||!g||!v(g,`ArrayExpression`)||g.elements.length!==0||h.references.every(e=>{let t=S(e.identifier);if(v(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!v(n,`MemberExpression`)||n.object!==t)return!1;let r=S(n).parent;return!!(r&&v(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(T(n)??``))})&&r.add(h)}),r.size===0)return!1;let i=!1;return $l(e.body,e=>{if(i||!v(e,`ReturnStatement`)||!e.argument)return;let t=M(e.argument),a=A(t)?t:Fu(e.argument,n);!a||!A(a)||s(a.body,e=>{if(i)return!1;if(!v(e,`CallExpression`))return;let t=M(e.callee);if(v(t,`Identifier`)){let a=Ou(t,n),o=a?M(a.right):null,s=v(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Nu(e,a,n))return i=!0,!1}if(!v(t,`MemberExpression`)||Yn(e)!==`forEach`||!v(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!E(o))return;let c=M(o);if(!A(c))return;let l=c.params[0];if(!l||!v(l,`Identifier`))return;let u=n.scopes.symbolFor(l);return s(c.body,e=>{if(v(e,`CallExpression`)&&v(M(e.callee),`Identifier`)&&n.scopes.symbolFor(M(e.callee))?.id===u?.id)return i=!0,!1}),i?!1:void 0})}),i},Npe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!v(t.node,`CallExpression`))return!1;let r=M(t.node.callee);if(!v(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=ou(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=cu(r.object,n),c=cu(t.node.arguments[0],n),l=cu(t.node.arguments[1],n),u=uu(t.node.arguments[2],n,!0),d=!1;return s(e,e=>{if(d||!v(e,`CallExpression`))return d?!1:void 0;if(Yn(e)!==`removeEventListener`)return;let r=M(e.callee);if(v(r,`MemberExpression`)&&!(cu(r.object,n)!==o||cu(e.arguments[0],n)!==c||cu(e.arguments[1],n)!==l||uu(e.arguments[2],n,!0)!==u)&&Nd(e,a,n)&&!Fd(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return d=!0,!1}),d},_d=(e,t)=>{let n=M(e);return v(n,`MemberExpression`)?fu(n,t):null},vd=(e,t)=>{let n=M(e);if(v(n,`LogicalExpression`)&&n.operator===`||`){let e=vd(n.left,t),r=vd(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(v(n,`UnaryExpression`)&&n.operator===`!`){let e=_d(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(v(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=_d(n.left,t),r=_d(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},Ppe=(e,t)=>{let n=M(e);if(!v(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=_d(n.left,t),i=_d(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},yd=(e,t,n,r=new Set)=>{if(!A(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!v(a,`BlockStatement`)){let e=M(a);if(!v(e,`CallExpression`))return null;let r=Fu(e.callee,n);return r?yd(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!v(r,`VariableDeclaration`)){if(v(r,`ExpressionStatement`)){let o=M(r.expression);if(v(o,`AssignmentExpression`)){let e=q(o.left,n),r=M(o.right),i=v(r,`Literal`)&&r.value===null||v(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(v(o,`CallExpression`)&&e===a.body.length-1){let e=Fu(o.callee,n);return e?yd(e,t,n,i):null}return null}return v(r,`IfStatement`)?Xl(r.consequent)?vd(r.test,n):!r.alternate&&e===a.body.length-1?Ppe(r.test,n):null:null}}return null},bd=(e,t,n,r=new Set)=>{if(!A(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return s(e.body,r=>{if(a||r!==e.body&&A(r))return!1;if(v(r,`UpdateExpression`))return fu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(v(r,`AssignmentExpression`))return fu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?Kt(M(r.right))===!1:Kt(M(r.right))!==!0))?(a=!0,!1):void 0;if(!v(r,`CallExpression`))return;let o=Fu(r.callee,n);if(o&&bd(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},Fpe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!v(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&E(n)?M(n):null,i=r?A(r)?r:Fu(r,t):null;if(!i)return!1;let a=yd(i,e,t);if(!a)return!1;let o=K(e.node,t.scopes);if(!o){let t=j(e.node);for(;t&&!Ts(t);)t=j(t);o=t}if(!o||!A(o))return!1;let c=!1;return s(o.body,e=>{if(c)return!1;if(!v(e,`CallExpression`)||!iu(e,t))return;let n=Xn(e);!n||!A(n)||$l(n.body,e=>{if(c||!v(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);n&&bd(n,a,t)&&(c=!0)})}),c},Ipe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!A(e)||!v(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&E(r)?M(r):null,a=i?A(i)?i:Fu(i,n):null;if(!a)return!1;let o=yd(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let c=[];return s(e.body,t=>{if(t!==e.body&&A(t))return!1;if(v(t,`UpdateExpression`)&&fu(t.argument,n)?.id===o.refSymbol.id){c.push(t);return}v(t,`AssignmentExpression`)&&t.operator!==`=`&&fu(t.left,n)?.id===o.refSymbol.id&&c.push(t)}),Ud(t.node,c,e,n)},xd=(e,t)=>{if(Fpe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!v(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!E(n))return!1;let r=M(n),i=A(r)?r:Fu(n,t);if(!i||!A(i)||!v(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!v(a,`IfStatement`)||!Xl(a.consequent))return!1;let o=M(a.test);for(;v(o,`LogicalExpression`)&&o.operator===`||`;)o=M(o.left);if(!v(o,`UnaryExpression`)||o.operator!==`!`)return!1;let c=Zl(M(o.argument),t.scopes,{resolveNamedAliases:!0});if(!c)return!1;let l=j(e.node),u=null;for(;l;){let e=l.parent;if(e&&v(e,`CallExpression`)&&iu(e,t)){u=e;break}l=j(l)}let d=K(u||e.node,t.scopes);if(!d){let t=j(e.node);for(;t&&!Ts(t);)t=j(t);d=t}if(!d||!A(d))return!1;let f=!1;return s(d.body,e=>{if(f)return!1;if(!v(e,`CallExpression`)||!iu(e,t))return;let n=Xn(e);if(!n||!A(n))return;let r=M(n.body);A(r)&&s(r.body,e=>{if(v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),t.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Kt(M(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return f=!0,!1}),$l(n.body,e=>{if(f||!v(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);!n||!A(n)||s(n.body,e=>{if(v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),t.scopes,{resolveNamedAliases:!0})?.id===c?.id&&Kt(M(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return f=!0,!1})})}),f},Lpe=(e,t,n,r,i)=>{if(t.registrationVerbName!==`observe`||!v(t.node,`CallExpression`)||!v(t.node.callee,`MemberExpression`))return!1;let a=M(t.node.callee.object),o=v(a,`Identifier`)?i.scopes.symbolFor(a):null,c=j(t.node);if(!o||!c||!A(c)||c===e||c.async||c.generator||j(o.declarationNode)!==e||!Bu(o.initializer,i)||!Wu(r,t,i))return!1;let l=o.references.flatMap(e=>{let t=e.identifier.parent;return v(t,`AssignmentExpression`)&&t.left===e.identifier&&t.operator===`=`&&zu(M(t.right),i)?[t]:[]});if(l.length!==1)return!1;let u=l[0];if(!u||j(u)!==c||!Di(u,t.node,i)||!hd({...t,node:u.right,handleKey:t.receiverKey},o,u,n,i))return!1;let d=e=>v(e,`LogicalExpression`)&&e.operator===`||`?d(e.left)||d(e.right):q(e,i)===t.receiverKey,f=!1;if(s(c.body,e=>{if(e!==c.body&&A(e))return!1;v(e,`IfStatement`)&&d(M(e.test))&&!Fl(e.consequent,u,c,i)&&Di(e,u,i)&&(f=!0)}),!f)return!1;let p=As(c),m=p?i.scopes.symbolFor(p):null;return!m||m.references.length===0?!1:m.references.every(a=>{let o=Lu(a.identifier),s=o?j(o):null;if(!o||!s||!A(s)||s.async||s.generator)return!1;if(s===e)return Du(o,r,i);let c=As(s),l=c?i.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=q(c,i),d=n.filter(n=>n!==t&&n.handlerKey===u&&n.registrationVerbName===`addEventListener`&&j(n.node)===e);return d.length>0&&d.every(t=>dd(e,t,r,i))&&l.references.every(e=>{let t=e.identifier.parent;return d.some(e=>e.node===t||t&&Ld(t,e,i))})})},Rpe=(e,t,n,r)=>{let i=j(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!i||!A(e)||!v(e.body,`BlockStatement`))return!1;let a=[];if($l(e.body,e=>{if(!v(e,`ReturnStatement`)||!e.argument)return;let r=Hd(e.argument,n);if(!r||!A(r))return;let i=[];s(r.body,e=>{if(e!==r.body&&A(e))return!1;let a=v(e,`ChainExpression`)?e.expression:e,o=v(a,`CallExpression`)?M(a.callee):null;v(a,`CallExpression`)&&v(o,`MemberExpression`)&&!o.computed&&v(o.property,`Identifier`)&&o.property.name===`disconnect`&&q(o.object,n)===t.receiverKey&&i.push(e)}),Ja(r,i,n)&&a.push(e)}),Vl(i))return Du(t.node,a,n);let o=v(t.node,`CallExpression`)&&v(t.node.callee,`MemberExpression`)?M(t.node.callee.object):null,c=v(o,`Identifier`)?n.scopes.symbolFor(o):null;if(!c||j(c.declarationNode)!==e)return!1;if(i===e)return c.kind===`const`&&!!(c.initializer&&zu(M(c.initializer),n))&&Ja(e,a,n);if(!A(i)||i.async||i.generator||!Bu(c.initializer,n))return!1;let l=c.references.filter(e=>e.flag!==`read`);if(l.length!==1)return!1;let u=S(l[0].identifier).parent;if(!v(u,`AssignmentExpression`)||u.operator!==`=`||j(u)!==i||!zu(M(u.right),n)||u.parent?.parent!==i.body)return!1;let d=As(i),f=d?n.scopes.symbolFor(d):null;if(!f||f.references.length!==2)return!1;let p=f.references.flatMap(t=>{let n=Lu(t.identifier);return n&&j(n)===e?[n]:[]});if(p.length!==1||p[0].parent?.parent!==e.body||!Du(p[0],a,n))return!1;let m=f.references.find(e=>!Lu(e.identifier)),h=m&&S(m.identifier).parent;if(!v(h,`CallExpression`)||!v(h.callee,`Identifier`)||h.callee.name!==`requestAnimationFrame`||!n.scopes.isGlobalReference(h.callee)||h.arguments[0]!==m?.identifier||j(h)!==i)return!1;let g={kind:`timer`,node:h,resourceName:`requestAnimationFrame`,registrationVerbName:`requestAnimationFrame`,handleKey:_u(h,n),receiverKey:null,eventKey:null,handlerKey:null};return!Fl(h,u,i,n)&&!Fl(u,h,i,n)&&gd(e,g,[...r,g],a,n)},zpe=(e,t,n)=>Ide({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>A(e)&&Uu(e,t,n)}),Sd=(e,t,n,r=[t])=>{if(!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||e.async)return!1;if(Mpe(e,t,n)||Npe(e,t,n)||Rpe(e,t,n,r)||zpe(e,t,n)||xd(t,n)||Jd(e,t,n)||t.kind===`subscribe`&&j(t.node)===e&&Qd(t.node,!0,!0,n)&&xu(t,n))return!0;if(!v(e.body,`BlockStatement`))return e.body===t.node&&xu(t,n);let i=S(t.node),a=i.parent,o=v(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&v(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`subscribe`&&t.registrationVerbName===`observe`||t.kind===`timer`&&(j(t.node)===e&&v(a,`VariableDeclarator`)||!!(o&&(o.kind===`let`||o.kind===`var`)&&v(o.declarationNode,`VariableDeclarator`)&&j(o.declarationNode)===e)),c=[];if($l(e.body,e=>{if(!v(e,`ReturnStatement`))return;let r=F(e),i=F(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?M(e.argument):null;if(!a)return;if(Gu(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||F(a)!==null&&F(a)===F(t.node))&&xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&Efe(a,t,n)){c.push(e);return}if(v(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Fu(a,n);if(o&&Gu(o,t,n)){c.push(e);return}!o||!A(o)||Uu(o,t,n,new Set,new Map,s)&&c.push(e)}),Lpe(e,t,r,c,n)||jpe(e,t,c,n)||gd(e,t,r,c,n))return!0;let l=j(t.node),u=l?ape(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>Du(e,c,n))?!0:Du(Vu(t.node,e,n,t),c,n)},Bpe=(e,t,n)=>{for(let r of t)if(!Sd(e,r,n,t)&&!mpe(e,r,n))return r;return null},Cd=(e,t,n=new Set)=>{let r=M(e);if(v(r,`NewExpression`)&&v(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(v(r,`MemberExpression`))return Cd(r.object,t,n);if(!v(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 Cd(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(v(a,`Property`)&&v(o,`ObjectPattern`)&&v(s,`VariableDeclarator`)&&s.init&&Cd(s.init,t,n))},Vpe=(e,t)=>{if(!v(e,`Property`))return!1;let n=v(e.key,`Identifier`)?e.key.name:v(e.key,`Literal`)?e.key.value:null;return n===`signal`?!Cd(e.value,t):n===`once`?v(e.value,`Literal`)&&e.value.value===!0:!1},Hpe=(e,t)=>v(e,`CallExpression`)&&(e.arguments??[]).some(e=>v(e,`ObjectExpression`)&&(e.properties??[]).some(e=>Vpe(e,t))),wd=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`])]]),Td=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),Ed=new Set([`close`]),Upe=new Set([`removeChannel`,`removeAllChannels`]),Dd=e=>{let t=v(e,`ChainExpression`)?e.expression:e;if(!v(t,`CallExpression`))return null;let n=M(t.callee);if(v(n,`Identifier`))return ot.has(n.name)||qt.has(n.name)||Td.has(n.name)?n.name:null;if(v(n,`MemberExpression`)&&v(n.property,`Identifier`)){let e=n.property.name;return qt.has(e)||cn.has(e)||Upe.has(e)||e===`on`?e:null}return null},Wpe=(e,t,n)=>{let r=j(e),i=j(t.node);if(!r||!i||!A(i)||!zd(r,n)||!Ql(e,n.scopes))return!1;let a=epe(t,n),o=q(e,n);if(a===null||o===null)return!1;let c=i.body,l=[],u=[];s(c,e=>{if(e!==c&&A(e))return!1;if(v(e,`AssignmentExpression`)&&q(e.left,n)===o&&q(e.right,n)===a){u.push(e);return}if(!v(e,`CallExpression`))return;let t=v(e.callee,`ChainExpression`)?e.callee.expression:M(e.callee);v(t,`MemberExpression`)&&!t.computed&&v(t.property,`Identifier`)&&t.property.name===`abort`&&q(t.object,n)===o&&l.push(e)});let d=u.filter(e=>Ud(e,l,i,n));return Ud(t.node,d,i,n)},Od=e=>v(e,`JSXAttribute`)&&v(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),kd=(e,t)=>{let n=As(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(v(n,`JSXExpressionContainer`)&&n.expression===t&&Od(n.parent))}):!1},Ad=(e,t,n)=>{let r=As(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=v(e,`Property`)?T(e):null;if(!v(e,`Property`)||!v(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=S(e.parent),i=r.parent;if(!v(i,`ReturnStatement`)||i.argument!==r)return!1;let a=j(i);return!!(a&&Ss(As(a)?.name??``))};if(i.references.some(e=>{let t=S(e.identifier),r=t.parent;if(!n&&v(r,`ReturnStatement`)&&r.argument===t){let e=j(r);return!!(e&&Ss(As(e)?.name??``))}return v(r,`Property`)&&r.value===t?a(r):!1}))return!0;let o=j(e);if(!o||!A(o)||!Ss(As(o)?.name??``))return!1;let c=!1;return s(o.body,e=>{if(c)return!1;if(v(e,`Property`)&&v(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return c=!0,!1}),c},Gpe=e=>{if(!A(e))return!1;let t=e.params[0];if(!t)return!1;let n=(v(t,`Identifier`)?t:v(t,`AssignmentPattern`)&&v(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=v(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(v(r,`TSNullKeyword`)||v(r,`TSUnionType`)&&r.types.some(e=>v(e,`TSNullKeyword`)))},Kpe=(e,t)=>{if(!A(e))return!1;let n=As(e),r=j(e),i=r?As(r):null;if(!n||!r||!A(r)||!i||!Ss(i.name))return!1;let a=new Set;if(s(r.body,e=>{if(!v(e,`Property`)||!v(e.value,`Identifier`)||e.value.name!==n.name||!v(e.parent,`ObjectExpression`))return;let t=S(e.parent);if(v(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=T(e);t&&a.add(t)}}),a.size===0)return!1;let o=t.scopes.symbolFor(i);if(!o||o.references.length===0)return!1;let c=!1;for(let e of o.references){let n=S(e.identifier),r=n.parent,i=r?.parent;if(!v(r,`CallExpression`)||r.callee!==n||!v(i,`VariableDeclarator`)||i.init!==r||!v(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=S(e.identifier),n=t.parent;if(!v(n,`MemberExpression`)||n.object!==t||!a.has(T(n)??``))continue;let r=S(n),i=r.parent;if(!v(i,`JSXExpressionContainer`)||i.expression!==r||!Od(i.parent))return!1;c=!0}}return c},jd=(e,t)=>kd(e,t)||Ad(e,t,!0)||Kpe(e,t)||Gpe(e)&&Ad(e,t,!1),Md=(e,t)=>{if(!A(e)||!e.returnType)return!1;let n=!1;if(s(e.returnType,e=>{if(v(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=As(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(v(n,`JSXExpressionContainer`)&&n.expression===t&&v(n.parent,`JSXAttribute`))}):!1},qpe=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(v(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=M(o.test);if(!v(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[M(e.left),M(e.right)],a=t.some(e=>qu(e,n,i)),s=t.some(e=>{if(!v(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=q(e.left,i),a=q(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Jpe=(e,t,n,r)=>{if(!A(e))return[];let i=[];return s(e.body,a=>{if(a!==e.body&&A(a))return!1;if(!v(a,`IfStatement`)||a.alternate!==null||!Xl(a.consequent))return;let o=M(a.test);if(!v(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=q(o.left,r),c=q(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Ype=(e,t,n)=>{if(!v(t.node,`CallExpression`))return!1;let r=j(t.node);if(!r||!A(r)||r!==j(e)||!jd(r,n))return!1;let i=M(t.node.callee),a=M(e.callee),o=v(a,`MemberExpression`)?fu(a.object,n):null;if(!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`addEventListener`||!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let c=q(M(i.object),n),l=q(r.params?.[0],n),u=q(a.object,n),d=q(e.arguments?.[1],n);if(c===null||c!==l||u===null||t.eventKey===null||t.eventKey!==q(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==d){if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=F(e),a=[];return s(r.body,e=>{if(e!==r.body&&A(e))return!1;if(!v(e,`AssignmentExpression`)||e.operator!==`=`||!v(M(e.right),`ObjectExpression`)||Zl(M(e.left),n.scopes)?.id!==o.id)return;let s=q(e.left,n),l=M(e.right);if(!s||u!==`${s}.element`||d!==`${s}.handler`||i===null||(F(e)??-1)<=i||!v(l,`ObjectExpression`))return;let f=l.properties.find(e=>v(e,`Property`)&&T(e)===`element`),p=l.properties.find(e=>v(e,`Property`)&&T(e)===`handler`);v(f,`Property`)&&v(p,`Property`)&&q(f.value,n)===c&&q(p.value,n)===t.handlerKey&&a.push(e)}),Ja(r,[Yu(e,r,u,n)??e],n)&&Du(t.node,a,n)}if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let f=F(e),p=[],m=r.body;s(m,e=>{if(e!==m&&A(e))return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),n.scopes)?.id===o.id&&q(e.right,n)===c&&f!==null&&(F(e)??-1)>f&&p.push(e)});let h=Yu(e,r,u,n)??qpe(e,r,u,c,n)??e,g=p.filter(e=>Ud(e,[h],r,n));return Ja(r,[h,...Jpe(r,u,c,n)],n)&&Ud(t.node,g,r,n)},Xpe=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!v(t.node,`CallExpression`))return!1;let r=j(t.node),i=M(e.callee);if(!r||!A(r)||r!==j(e)||!jd(r,n)||!v(i,`MemberExpression`)||i.computed||!v(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=q(r.params[0],n),o=fu(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let c=[];return s(r.body,e=>{if(e!==r.body&&A(e))return!1;v(e,`AssignmentExpression`)&&e.operator===`=`&&Zl(M(e.left),n.scopes)?.id===o.id&&q(e.right,n)===t.receiverKey&&c.push(e)}),Ja(r,[e],n)&&Du(t.node,c,n)},Nd=(e,t,n)=>{let r=S(e),i=new Set,a=new Set;for(;;){let e=j(r);if(!e||!A(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=v(e.body,`BlockStatement`)&&v(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Ja(e,[c?s:r],n))return null;let l=Iu(e);if(!l){if(a.size!==t.size||e.async||e.generator)return null;if(zd(e,n))return e;let i=As(e),o=(i?n.scopes.symbolFor(i):null)?.references[0],s=o?j(o.identifier):null,c=s?Ru(e,s,n):null;if(!c||!s||!A(s)||v(s.body,`BlockStatement`)&&s.body.body.length!==1)return null;r=S(c);continue}let u=M(l.callee);if(!v(u,`MemberExpression`))return null;let d=q(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=S(l)}},Pd=e=>{let t=new Set,n=e;for(;;){let e=j(n);if(!e||!A(e)||t.has(e))break;t.add(e),n=e}return t},Fd=(e,t,n,r)=>{let i=F(e),a=F(t);if(i===null||a===null)return!0;let o=Pd(e),c=Pd(t),l=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),u=(e,t,i,a)=>{if(a&&v(e,`ReturnStatement`)&&l(q(e.argument,r),t))return!0;if(v(e,`AssignmentExpression`)){let i=q(e.left,r),a=M(e.left);return l(q(e.right,r),t)&&!l(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||v(a,`MemberExpression`)&&a.computed&&l(q(a.object,r),t)}if(v(e,`UnaryExpression`)&&e.operator===`delete`){let n=M(e.argument);return v(n,`MemberExpression`)&&l(q(n.object,r),t)}if(v(e,`UpdateExpression`)){let i=q(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!v(e,`CallExpression`)&&!v(e,`NewExpression`))return!1;let o=e.arguments.some(e=>E(e)?l(q(e,r),t)&&ju(e,r)===null:!1),c=M(e.callee),d=v(e,`CallExpression`)&&v(c,`MemberExpression`)&&!c.computed&&v(c.object,`Identifier`)&&c.object.name===`Array`&&r.scopes.isGlobalReference(c.object)&&v(c.property,`Identifier`)&&c.property.name===`from`;return o&&!d||v(c,`MemberExpression`)&&!c.computed&&v(c.property,`Identifier`)&&(dfe.has(c.property.name)||ffe.has(c.property.name))&&l(q(c.object,r),t)?!0:v(e,`CallExpression`)?[P(e.callee,r.scopes),...e.arguments.flatMap(t=>E(t)&&Bl(e,t)?[P(t,r.scopes)]:[])].some(e=>{if(!e||!A(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return s(e.body,i=>{if(r||i!==e.body&&A(i))return!1;if(u(i,t,n,!1))return r=!0,!1}),r}):!1},d=e;for(;d.parent;)d=d.parent;let f=!1;return s(d,e=>{if(f)return!1;let t=F(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let s=o.has(n)&&t>i,l=c.has(n)&&t<a;if(!(!s&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Id=(e,t)=>Yn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Zpe=(e,t,n)=>{let r=M(e.callee),i=M(t.callee);if(!v(r,`MemberExpression`)||!v(i,`MemberExpression`))return!0;let a=Yn(e),o=Yn(t),s=t.arguments?.[+!Id(e,t)],c=j(t),l=cu(e.arguments?.[0],n),u=cu(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&A(c)&&zd(c,n)&&Ja(c,[t],n)&&(o!==null&&Td.has(o)||d))return!0;let f=[r.object,e.arguments?.[0],e.arguments?.[1],i.object,t.arguments?.[0],t.arguments?.[1]].flatMap(e=>{let t=ou(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=yfe(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!Nd(t,p,n)&&!Jfe(t,p,n)?!1:!Fd(e,t,new Map([...p].map(e=>[e,1/0])),n)},Ld=(e,t,n,r=new Map)=>{let i=v(e,`ChainExpression`)?e.expression:e;if(!v(i,`CallExpression`))return!1;let a=M(i.callee);if(t.kind===`timer`){if(!v(a,`Identifier`)||!(t.registrationVerbName===`requestAnimationFrame`?a.name===`cancelAnimationFrame`:ot.has(a.name))||!n.scopes.isGlobalReference(a))return!1;let e=q(i.arguments?.[0],n,new Set,r);if(vu(e,t,n))return!0;if(r.size>0&&e!==null)return!1;let o=i.arguments?.[0];if(o&&E(o)){let e=gu(o,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let s=Pu(t.node,n);return s!==null&&s===ju(i.arguments?.[0],n)}if(v(a,`Identifier`)&&t.kind===`subscribe`&&(Tfe(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||xu(t,n))||t.registrationVerbName===`addListener`&&Vfe(a,t,n)))return!0;let o=Dd(i);if(!o||!v(a,`MemberExpression`)||a.computed||!v(a.property,`Identifier`))return!1;let s=cu(a.object,n),c=i.arguments[0];if(o===`unsubscribe`&&t.registrationVerbName===`subscribe`&&i.arguments.length===2&&Fde(a.object,n)){let e=j(t.node),r=j(i);if(e&&r){let a=$u(e,t.node,n),o=$u(r,i,n).filter(e=>!B(i,e.guardNode)),s=i,l=i.parent;for(;l&&l!==r;){if(v(l,`LogicalExpression`)||v(l,`ConditionalExpression`)||v(l,`SwitchCase`)||v(l,`ForStatement`)||v(l,`ForOfStatement`)||v(l,`ForInStatement`)||v(l,`WhileStatement`))return!1;v(l,`IfStatement`)&&o.push(...Qu(l.test,l.alternate===s,l,n)),s=l,l=l.parent}o.every(e=>a.some(t=>t.key===e.key&&t.value===e.value)&&!!(e.bindingIdentifier&&n.scopes.symbolFor(e.bindingIdentifier)?.references.every(e=>e.flag===`read`)))&&(c=i.arguments[1])}}let l=cu(c,n),u=t.registrationVerbName?wd.get(t.registrationVerbName):null,d=Qfe(t,n),f=Ou(a.object,n),p=f?q(f.right,n):ju(a.object,n);if(u&&Rd(o,u)&&d!==null&&d===p&&(o!==`unobserve`||t.eventKey!==null&&l===t.eventKey)||Ype(i,t,n)||Xpe(i,t,n)||Dfe(s,o,t,n))return!0;if(t.kind===`socket`)return vu(s,t,n)&&(Ed.has(o)||Td.has(o));if(t.kind===`subscribe`&&v(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===kfe(t.node,n)&&(o===`removeAllChannels`||vu(q(i.arguments?.[0],n,new Set,r),t,n))||(vu(s,t,n)||t.kind===`subscribe`&&Vfe(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||cn.has(o))||o===`abort`&&s===(epe(t,n)??npe(t,n)??rpe(t,n))||o===`abort`&&Wpe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&v(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Fu(t.node.arguments[0],n);if(!wu(t.node,`addListener`,n)&&!A(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&v(t.node,`CallExpression`)&&(!v(M(t.node.callee),`MemberExpression`)||!du(t.node.arguments?.[2],i.arguments?.[2],n,!0))||v(t.node,`CallExpression`)&&!Zpe(t.node,i,n))return!1;let m=v(t.node,`CallExpression`)?M(t.node.callee):null,h=v(m,`MemberExpression`)?Hfe(m.object,n):null,g=Hfe(a.object,n);if(!(h!==null&&h===g)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&q(i.arguments?.[0],n)===t.handleKey)return!0;let _=t.registrationVerbName?wd.get(t.registrationVerbName):null;if(!_||!Rd(o,_))return!1;let y=v(t.node,`CallExpression`)?t.node.arguments?.[0]:null;if(Pfe(y,n)||Pfe(c,n))return!1;if(t.eventKey!==null&&l!==null&&t.eventKey!==l){if(!v(t.node,`CallExpression`))return!1;let e=su(t.node.arguments?.[0],n),r=su(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=Ou(y,n),l=Ou(c,n);if(s===null!=(l===null))return!1;let u=ju(t.node.arguments?.[0],n),d=ju(i.arguments?.[0],n);if(u===null||u!==d)return!1;if(s&&l){let e=Wfe(t.node.arguments?.[1],n),r=Wfe(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=M(t.node.callee);if(!v(s,`MemberExpression`)||!Ufe(s.object,n)||!Ufe(a.object,n)||e===null||e!==r||!du(t.node.arguments?.[2],i.arguments?.[2],n)||!Nu(i,l,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return v(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=v(t.node,`CallExpression`)&&Id(t.node,i),r=e?i.arguments?.[0]:i.arguments?.[1];if(!r)return o===`off`;let a=e?t.handlerKey??t.eventKey:t.handlerKey,s=v(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&cu(r,n)===a||s!==null&&Fu(r,n)===Fu(s,n)}return o===`unobserve`&&t.eventKey!==null?l===t.eventKey:!0},Rd=(e,t)=>t.has(e)||Td.has(e),zd=(e,t)=>{let n=j(e);if(!n||!A(n))return!1;let r=n.parent;if(!v(r,`CallExpression`)||!iu(r,t))return!1;if(!v(n.body,`BlockStatement`))return Fu(n.body,t)===e;let i=!1;return $l(n.body,n=>{v(n,`ReturnStatement`)&&n.argument&&Fu(n.argument,t)===e&&(i=!0)}),i},Bd=(e,t)=>{if(cf(e,t)||zd(e,t))return!0;let n=As(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>j(t.identifier)!==e):!1},Qpe=(e,t,n)=>{if(!A(e)||e.async||e.generator)return[];let r=j(t.node);if(!r||!A(r))return[];let i=new Map,a=e=>{let t=S(e),a=t.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=fu(a.left,n),s=q(a.left,n),c=j(a),l=F(a);if(!o&&v(a.left,`MemberExpression`)){let e=T(a.left),t=M(a.left.object),r=v(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!A(c))return;for(let t of r.references){let r=S(t.identifier),a=r.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!fu(a.left,n)||j(a)!==c)continue;let o=q(a.left,n),s=F(a);!o||s===null||i.set(s,{assignmentNode:a,refCurrentKey:`${o}.${e}`,retainedFunction:c})}return}!o||!s||!c||c!==r||l===null||i.set(l,{assignmentNode:a,refCurrentKey:s,retainedFunction:c})};a(e);let o=As(e),c=o?n.scopes.symbolFor(o):null;for(let e of c?.references??[])a(e.identifier);return s(r.body,t=>{if(t!==r.body&&A(t))return!1;v(t,`AssignmentExpression`)&&Fu(t.right,n)===e&&a(t.right)}),[...i.values()]},$pe=(e,t,n)=>Ud(t.node,[e.assignmentNode],e.retainedFunction,n)||Du(t.node,[e.assignmentNode],n),eme=(e,t,n)=>{let r=!1;return s(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&A(i))return!1;if(!v(i,`AssignmentExpression`)||i===e.assignmentNode||q(i.left,n)!==e.refCurrentKey||!Fl(t.node,i,e.retainedFunction,n))return;let a=Fu(i.right,n);if(!a||!A(a)||!Uu(a,t,n))return r=!0,!1}),r},tme=(e,t,n)=>{let r=j(e.retainedFunction);if(!r||!A(r))return!1;let i=(t,r=new Set)=>{if(!A(t)||t.async||t.generator||r.has(t))return!1;let a=new Set(r);a.add(t);let o=!1;return s(t.body,r=>{if(o||r!==t.body&&A(r))return!1;if(v(r,`CallExpression`)){let c=q(r.callee,n)===e.refCurrentKey,l=c?null:Hd(r.callee,n);if(!c&&(!l||!i(l,a)))return;let u=!1;if(s(t.body,i=>{if(i!==t.body&&A(i))return!1;v(i,`AssignmentExpression`)&&i.range[0]<r.range[0]&&q(i.left,n)===e.refCurrentKey&&(u=!0)}),u)return;let d=S(r),f=d.parent,p=v(t.body,`BlockStatement`)&&v(f,`ExpressionStatement`)&&f.parent===t.body,m=t.body===d,h=!!Yu(r,t,e.refCurrentKey,n);if((p||m||h)&&!Wd(t,r,e.refCurrentKey,n))return o=!0,!1}}),o},a=e=>{if(!A(e))return!1;if(!v(e.body,`BlockStatement`)){let t=Hd(e.body,n);return!!(t&&i(t))}let t=[];return $l(e.body,e=>{if(!v(e,`ReturnStatement`)||!e.argument)return;let r=Hd(e.argument,n);!r||!i(r)||t.push(e)}),Ja(e,t,n)},o=!1;return s(r.body,e=>{if(o)return!1;if(!v(e,`CallExpression`)||j(e)!==r||!D(e,`useEffect`,n.scopes))return;let t=Xn(e);if(t&&a(t))return o=!0,!1}),o},nme=(e,t,n)=>{if(!kd(e.retainedFunction,n)&&!(()=>{if(!A(e.retainedFunction))return!1;let r=S(e.retainedFunction).parent;if(!v(r,`CallExpression`)||!D(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=q(i,n);return!a||t.receiverKey!==a?!1:jd(e.retainedFunction,n)})())return!1;let r=[];return s(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&A(t))return!1;v(t,`CallExpression`)&&q(t.callee,n)===e.refCurrentKey&&r.push(t)}),Ud(t.node,r,e.retainedFunction,n)},rme=(e,t,n)=>{let r=j(e);return r?Qpe(r,t,n).some(e=>$pe(e,t,n)&&!eme(e,t,n)&&(tme(e,t,n)||nme(e,t,n))):!1},ime=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!v(n.node,`CallExpression`)||!A(t)||t.async||t.generator||!v(t.body,`BlockStatement`)||!Ja(t,[e],r))return!1;let i=v(e,`ChainExpression`)?e.expression:e;if(!v(i,`CallExpression`)||!du(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=j(t);if(!a||!A(a))return!1;let o=[];return s(a.body,e=>{if(e!==a.body&&A(e))return!1;if(!v(e,`CallExpression`))return;let i=Tu(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Fu(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:Du(n.node,o,r)||Ud(n.node,o,a,r)},ame=(e,t,n)=>{if(!U(e,n))return!1;let r=j(e);if(!r||r===j(t.node)||rme(e,t,n))return!0;let i=j(t.node);return i&&A(i)&&ef(i,n)&&Tme(i,r,n)?wme(i,r,t,n):ime(e,r,t,n)?!0:Bd(r,n)},Vd=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=hfe.get(t);r||(r=new WeakMap,hfe.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];s(n,n=>{let r=v(n,`ChainExpression`)?n.expression:n;if(!v(r,`CallExpression`))return;let i=v(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(v(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else Dd(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;a=e.kind===`timer`?[...ot].flatMap(e=>i.identifierCallsByName.get(e)??[]):i.potentialNonTimerCalls;let o=!1,c=n=>{if(o)return!1;if(Ld(n,e,t)&&ame(n,e,t))return o=!0,!1};for(let e of a)if(c(e)===!1)break;return o},Hd=(e,t)=>{let n=Fu(e,t);return A(n)?n:!v(n,`CallExpression`)||!D(n,`useCallback`,t.scopes)?null:Xn(n)},ome=(e,t,n)=>{if(!A(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=F(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return s(e.body,s=>{if(s!==e.body&&A(s))return!1;if(!v(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=F(s),l=M(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!v(l,`MemberExpression`)||!Zl(l,n.scopes))return;let u=q(l,n),d=q(l.object,n),f=M(s.right);if(!u||!d||!v(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!v(e,`Property`)))for(let e of p){if(!v(e,`Property`))continue;let r=T(e);if(r&&q(e.value,n)===t.handlerKey){let e=`${u}.${r}`;o.push({handlerKey:e,refCurrentKey:u,refKey:d,assignmentNode:s})}}}),o.length===1?o[0]:null},Ud=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=F(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=F(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},sme=(e,t,n,r)=>{if(!A(e))return!1;let i=e.body,a=[];return s(i,e=>{if(e!==i&&A(e))return!1;v(e,`CallExpression`)&&Hd(e.callee,r)===t&&a.push(e)}),Ud(n,a,e,r)},cme=(e,t,n,r,i,a)=>{if(!A(t))return!1;let o=v(e,`ChainExpression`)?e.expression:e;if(!v(o,`CallExpression`)||!v(o.callee,`MemberExpression`)||o.callee.computed||!v(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!v(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=S(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(v(c,`BlockStatement`)&&v(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&q(l.test,a)===i);return!v(s,`ExpressionStatement`)||!v(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===q(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===q(o.arguments?.[0],a)&&q(o.arguments?.[1],a)===r},lme=(e,t,n)=>{let r=e.parent,i=v(r,`BlockStatement`)?r.parent:r,a=v(r,`BlockStatement`)?r:e;if(!v(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=M(i.test);return v(o,`UnaryExpression`)&&o.operator===`!`&&q(o.argument,n)===t},Wd=(e,t,n,r)=>{if(!A(e))return!0;let i=F(t);if(i===null)return!0;let a=!1;return s(e.body,t=>{if(a||t!==e.body&&A(t))return!1;if(!v(t,`ReturnStatement`))return;let o=F(t);if((o===null||o<i)&&!lme(t,n,r))return a=!0,!1}),a},ume=(e,t,n,r,i)=>{if(!A(e)||!A(t)||e.async||e.generator)return!1;let a=ome(n,r,i);if(!a||!sme(n,e,a.assignmentNode,i))return!1;let o=null;if(s(e.body,t=>{if(o||t!==e.body&&A(t))return!1;if(cme(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Wd(e,o,a.refCurrentKey,i))return!1;let c=!1;return s(t.body,t=>{if(c)return!1;if(v(t,`UnaryExpression`)&&t.operator===`delete`){let e=M(t.argument);return q(e,i)===a.handlerKey||v(e,`MemberExpression`)&&q(e.object,i)===a.refCurrentKey?(c=!0,!1):void 0}if(v(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=q(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(c=!0,!1):void 0;if(!v(t,`AssignmentExpression`))return;let o=M(t.left);if(v(o,`MemberExpression`)&&o.computed&&q(o.object,i)===a.refCurrentKey)return c=!0,!1;let s=q(t.left,i);if(s===a.handlerKey)return c=!0,!1;if(s!==a.refCurrentKey)return;let l=M(t.right);if(v(l,`Literal`)&&l.value===null&&j(t)===e)return;let u=(v(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>v(e,`Property`))&&u.some(e=>v(e,`Property`)&&`${a.refCurrentKey}.${T(e)??``}`===a.handlerKey&&q(e.value,i)===r.handlerKey);if(j(t)!==n||!d)return c=!0,!1}),!c},dme=(e,t,n,r,i)=>{let a=e=>{let a=Hd(e,i);return!!(a&&ume(a,t,n,r,i))};if(!A(e))return!1;if(!v(e.body,`BlockStatement`))return a(M(e.body));let o=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&a(M(e.argument))&&o.push(e)}),Ja(e,o,i)},fme=(e,t,n)=>{let r=As(e),i=r?n.scopes.symbolFor(r):null;if(!i||i.references.length===0)return!1;let a=new Set(t.flatMap(e=>{let t=Xn(e);return t&&A(t)?[t]:[]}));return i.references.every(e=>{let n=S(e.identifier),r=n.parent,i=v(r,`CallExpression`)?j(r):null;if(v(r,`CallExpression`)&&r.callee===n&&i&&A(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(v(o,`ArrayExpression`)&&v(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},Gd=(e,t,n,r)=>{if(!A(e)||!v(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&E(i)?M(i):null,o=a?A(a)?a:Fu(a,r):null;if(!o||!A(o))return!1;let s=(e,i=new Set)=>{if(!A(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(v(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!D(c,`useCallback`,r.scopes)){if(B(c,o)||Zu(c,n.node,t))return!0;let e=j(c);return!!(e&&e!==t&&s(e,a))}let l=As(e),u=l?r.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(v(t,`ArrayExpression`)&&v(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=S(e.identifier),i=r.parent;if(!v(i,`CallExpression`)||i.callee!==r)return!1;if(B(i,o)||Zu(i,n.node,t))return!0;let c=j(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(v(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!D(c,`useCallback`,r.scopes))l=[c];else{let t=As(e),n=t?r.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=S(e.identifier),n=t.parent;if(!v(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(B(e,o)||Zu(e,n.node,t))return!0;let r=j(e);return!!(r&&r!==t&&s(r))})},pme=(e,t,n,r)=>{if(!A(t))return!1;let i=t.parent;if(!v(i,`CallExpression`)||Xn(i)!==t||!iu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(v(a,`IfStatement`)&&B(e,a.consequent)){let n=Fu(M(a.test),r)??M(a.test);if(v(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=fu(n.left,r),o=fu(n.right,r),c=i??o,l=M(i?n.right:n.left),u=v(l,`Identifier`)&&l.name===`undefined`&&r.scopes.isGlobalReference(l),d=c?.initializer?M(c.initializer):null,f=v(d,`CallExpression`)&&d.arguments[0]&&E(d.arguments[0])?M(d.arguments[0]):null;if(c&&!(i&&o)&&u&&f&&v(f,`Identifier`)&&f.name===`undefined`&&r.scopes.isGlobalReference(f)){let n=[];s(t.body,e=>{v(e,`AssignmentExpression`)&&e.operator===`=`&&fu(e.left,r)?.id===c.id&&n.push(e)});let i=n.filter(e=>{let t=M(e.right);return!(v(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,l=e.parent??null,u=new Set(i.flatMap(e=>{let t=M(e.right);return v(t,`Identifier`)?[t.name]:[]})),d=e=>{let t=M(e);if(v(t,`LogicalExpression`)&&t.operator===`&&`)return d(t.left)||d(t.right);if(!v(t,`CallExpression`)||Yn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!E(n))return!1;let r=M(n);return v(r,`Identifier`)&&u.has(r.name)};for(;l&&l!==a;){if(v(l,`IfStatement`)&&B(e,l.consequent)&&d(l.test)){o=!0;break}l=l.parent??null}if(o&&Ud(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,c=null,l=null,u=null;for(;o&&o!==t;){if(v(o,`IfStatement`)&&B(e,o.consequent)){let e=M(o.test),t=v(e,`UnaryExpression`)&&e.operator===`!`,n=fu(t?e.argument:e,r),i=n?.initializer?M(n.initializer):null,a=v(i,`CallExpression`)&&i.arguments[0]?Kt(M(i.arguments[0])):null,s=!t;if(n&&a===s){c=o,l=n,u=s;break}}o=o.parent??null}if(!c||!l||u===null)return!1;let d=j(l.declarationNode);if(!d||!A(d))return!1;let f=[],p=!1;return s(d.body,e=>{if(p)return!1;if(v(e,`UpdateExpression`)&&fu(e.argument,r)?.id===l.id)return p=!0,!1;if(!(!v(e,`AssignmentExpression`)||fu(e.left,r)?.id!==l.id)){if(e.operator!==`=`||Kt(M(e.right))===null)return p=!0,!1;f.push(e)}}),p||!Ud(e,f.filter(e=>Kt(M(e.right))===!u),t,r)?!1:f.every(e=>{if(Kt(M(e.right))===!u)return!0;let t=j(e);if(!t||!A(t))return!1;let i=t.parent;if(!v(i,`ReturnStatement`)||i.argument!==t)return!1;let a=j(i);return!!(a&&A(a)&&Ku(a,n,r))})},Kd=(e,t,n,r)=>{let i=j(e);if(!i||!A(i))return!1;let a=v(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&E(a)?M(a):null,s=o?A(o)?o:P(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=As(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(v(t,`ArrayExpression`)&&v(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=S(e.identifier),i=r.parent;return!!(v(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(B(i,s)||Zu(i,n.node,t)))}))return!0;let o=j(i);if(o&&o!==t&&A(o)&&!v(o.body,`BlockStatement`)&&M(o.body)===i){let e=As(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=S(e.identifier),a=i.parent,o=a?.parent,c=o?j(o):null;return!!(v(a,`CallExpression`)&&a.callee===i&&v(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(B(o,s)||Zu(o,n.node,t)||c&&Gd(c,t,n,r)))}))return!0}}if(qd(i,i,t,n,r)||Gd(i,t,n,r)||pme(e,i,n,r)||cd(i,{...n,node:e},r))return!0;let c=i.parent;return!!(v(c,`CallExpression`)&&Xn(c)===i&&iu(c,r)&&Ku(i,n,r))},qd=(e,t,n,r,i)=>{let a=e.parent;if(!v(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!pu(a.left,i))return!1;let o=q(a.left,i),c=j(t);if(!o||!c||!A(c))return!1;let l=!1,u=!1;return s(c.body,e=>{if(u)return!1;if(!v(e,`MemberExpression`)||q(e,i)!==o)return;let a=S(e),c=a.parent;if(v(c,`AssignmentExpression`)&&c.left===a)return Hd(c.right,i)===t?void 0:(u=!0,!1);if(v(c,`IfStatement`)&&c.test===a){let e=!1;if(s(c.consequent,t=>{if(v(t,`CallExpression`)&&q(M(t.callee),i)===o)return e=!0,!1}),e)return}if(v(c,`CallExpression`)&&c.callee===a&&Kd(c,n,r,i)){l=!0;return}return u=!0,!1}),l&&!u},mme=(e,t,n)=>{let r=As(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?qd(e,e,e,t,n):i.references.every(r=>{let i=S(r.identifier),a=i.parent;if(v(a,`CallExpression`)&&a.callee===i){let r=j(a),i=!!(r&&Gd(r,e,t,n)),o=Kd(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return v(o,`ArrayExpression`)&&v(s,`CallExpression`)&&s.arguments?.[1]===o?!0:qd(i,e,e,t,n)})},Jd=(e,t,n)=>{let r=j(e);if(!r||!A(r))return!1;let i=gfe.get(n);i||(i=new WeakMap,gfe.set(n,i));let a=i.get(r);if(!a){let e=[];s(r.body,t=>{v(t,`CallExpression`)&&j(t)===r&&iu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=Sfe(t.node,n),i=cd(e,t,n),o=e.parent,s=!!(v(o,`CallExpression`)&&Xn(o)===e&&iu(o,n)),c=i&&(!s||n.cfg.isUnconditionalFromEntry(t.node)),l=(r.size>0?[...r].map(e=>({...t,handleKey:e})):[t]).every(e=>a.some(t=>{let r=Xn(t);return!!(r&&Ku(r,e,n))}));return!!(r.size>0&&l&&(c||Ipe(e,t,n)||mme(e,t,n)||fme(e,a,n)))}for(let i of a){let a=S(i).parent;if(!v(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Xn(i);if(o&&dme(o,r,e,t,n))return!0}return!1},hme=(e,t)=>{let n=As(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=S(e.identifier);for(;v(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=S(n.parent);let r=n.parent;if(v(r,`CallExpression`)&&r.arguments?.[0]===n)return D(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(v(r,`VariableDeclarator`)&&r.init===n&&v(r.id,`Identifier`)&&v(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},gme=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Yd=e=>{if(!v(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?M(n):null;if(!t||!A(t)||!r||!v(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return s(t.body,e=>{if(a)return!1;if(!v(e,`CallExpression`))return;let t=Yn(e);if(!t||!gme.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},_me=(e,t)=>{if(!e||!A(e))return!1;let n=As(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=S(t.identifier),r=n.parent;return!!(v(r,`CallExpression`)&&r.arguments[1]===n&&tu(r)===`addEventListener`&&j(r)===j(e))}):!1},vme=(e,n)=>{if(!v(e,`CallExpression`)||!n.filename)return!1;let r=M(e.callee);if(!v(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?$e(i):null,o=i?t(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let c=Be(n.filename,a.source.value,o);if(!c||!A(c.functionNode))return!1;let l=new Set,u=e=>{if(!A(e)||l.has(e))return!1;l.add(e);let t=!0;return s(e.body,n=>{if(!t||n!==e.body&&A(n))return!1;if(v(n,`CallExpression`)){let e=M(n.callee);if(!v(e,`Identifier`))return t=!1,!1;let r=[];return s(c.programNode,t=>{if(A(t)&&As(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!u(r[0])?(t=!1,!1):void 0}if(v(n,`NewExpression`)||v(n,`AssignmentExpression`)||v(n,`UpdateExpression`)||v(n,`AwaitExpression`)||v(n,`YieldExpression`)||v(n,`ThrowStatement`)||v(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return u(c.functionNode)},yme=(e,t,n)=>{if(!A(t)||!vme(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(v(r,`AssignmentExpression`)&&B(e,r.right)&&pu(M(r.left),n))return!0;r=r.parent}return!1},Xd=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?M(r):null;if(!n||!A(n)||!i||!v(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return s(n.body,e=>{if(o||e!==n.body&&A(e))return!1;if(v(e,`CallExpression`)&&yme(e,n,t))return;if(v(e,`CallExpression`)||v(e,`UpdateExpression`))return o=!0,!1;if(!v(e,`AssignmentExpression`))return;let r=M(e.left);if(v(r,`MemberExpression`)&&pu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||_me(j(e),t))},Zd=(e,t)=>{let n=S(e);for(;v(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=S(n.parent);let r=n.parent;return v(r,`ReturnStatement`)&&r.argument===n&&j(r)===t?r:null},Qd=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(v(a,`ReturnStatement`)&&a.argument===i||v(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(v(a,`ChainExpression`)||v(a,`TSAsExpression`)||v(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(v(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||v(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(v(a,`VariableDeclarator`)&&a.init===i&&v(a.id,`Identifier`)&&v(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=j(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:Du(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Zd(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},bme=(e,t,n)=>{if(!A(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!cf(e,t),o=a&&n?.requireCallableReturnedResource!==!0,c=hme(e,t),l=r=>{if(c)return Sd(e,r,t);if(r.kind!==`timer`){let i=jd(e,t);return!!(n?.allowReturnedResourceEscape===!0||i||Md(e,t))&&Ku(e,r,t,i)||Vd(r,t)||Jd(e,r,t)}let i=jd(e,t);if((n?.allowReturnedResourceEscape===!0||i||Md(e,t))&&Ku(e,r,t,i)||!n?.isEffectInvoked&&(hu(r.node,t)!==null||cd(e,r,t))&&Vd(r,t)||xd(r,t)||Jd(e,r,t))return!0;let a=j(e),o=a?.parent;return!!(a&&v(o,`CallExpression`)&&iu(o,t)&&Sd(a,r,t))};return s(r,e=>{if(i!==null||A(e)||!U(e,t))return!1;if(au(e)&&!Qd(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:v(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:_u(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!l(n))return i=n,!1}if(v(e,`CallExpression`)){if(v(e.callee,`Identifier`)&&Pl(e.callee,t.scopes)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0)&&(n?.allowReturnedTimerEscape===!1||!Qd(e,!0,a,t))&&!Yd(e)&&!Xd(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:_u(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!l(n))return i=n,!1}if(afe(e)&&(!Qd(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!nu(e))){let n=Tu(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:_u(e,t),...n};return!Hpe(e,t)&&!l(r)&&(i=r),!1}}}),i},$d=(e,t)=>{if(!A(e)||e.generator)return null;let n=S(e),r=n.parent;if(!v(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=Zl(M(r.left),t.scopes);if(!i)return null;let a=K(r,t.scopes);return!A(a)||j(r)!==a||j(i.bindingIdentifier)!==a||!U(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},ef=(e,t)=>$d(e,t)?.refSymbol??null,tf=(e,t,n)=>{let r=S(e),i=r.parent;if(v(i,`VariableDeclarator`)&&i.init===r&&v(i.id,`Identifier`)&&v(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?Du(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Zd(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(v(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=S(e);continue}if(v(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=S(e);continue}if(v(e,`LogicalExpression`)&&e.right===r){r=S(e);continue}break}let a=r.parent;return!!(v(a,`ReturnStatement`)&&a.argument===r&&j(a)===t||v(t,`ArrowFunctionExpression`)&&t.body===r)},xme=(e,t,n)=>v(e,`CallExpression`)&&Zl(M(e.callee),n.scopes)?.id===t.id,Sme=(e,t)=>{let n=new Map;s(e.body,e=>{if(!A(e))return;let r=$d(e,t);if(r){let e=n.get(r.refSymbol.id)??[];e.push(r),n.set(r.refSymbol.id,e)}return!1});for(let[e,r]of n){let i=r.filter(e=>!Du(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},nf=(e,t,n)=>{if(!A(e))return[];let r=[],i=[];return s(e.body,a=>{if(a!==e.body&&A(a))return!1;v(a,`AssignmentExpression`)&&U(a,n)&&Zl(M(a.left),n.scopes)?.id===t.id&&r.push(a),xme(a,t,n)&&U(a,n)&&i.push(a)}),i.filter(t=>!Ud(t,r,e,n))},rf=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Cme=(e,t)=>{let n=pfe.get(t);n||(n=new WeakMap,pfe.set(t,n));let r=n.get(e);if(r)return r;let i=Sme(e,t),a=new Map;s(e.body,n=>{if(n!==e.body&&A(n))return!1;if(!v(n,`CallExpression`)||j(n)!==e||!iu(n,t))return;let r=Xn(n);if(A(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of nf(r,n,t))rf(a,n.id,!r.async&&tf(e,r,t))}});let o=!0;for(;o;){o=!1;for(let e of i.values()){let n=e[0]?.refSymbol;if(!n)continue;let r=a.get(n.id);if(r)for(let n of e)for(let e of i.values()){let i=e[0]?.refSymbol;if(i)for(let e of nf(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&tf(e,n.functionNode,t);rf(a,i.id,s)&&(o=!0)}}}}let c={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,c),c},af=(e,t)=>{if(!A(e))return null;let n=$d(e,t),r=K(e,t.scopes);if(!n||!A(r))return null;let i=Cme(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},wme=(e,t,n,r)=>{if(!A(e)||e.async||af(e,r)?.doesEffectOwnEveryResult!==!0||!v(e.body,`BlockStatement`))return!1;let i=e=>{let n=Hd(Cn(e),r);if(!n)return!1;if(n===t)return!0;if(!A(n))return!1;let i=[];return s(n.body,e=>{if(e!==n.body&&A(e))return!1;v(e,`CallExpression`)&&Hd(e.callee,r)===t&&i.push(e)}),Ja(n,i,r)},a=[];return $l(e.body,e=>{v(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),Du(n.node,a,r)},Tme=(e,t,n)=>{if(!A(e)||!v(e.body,`BlockStatement`))return!1;let r=!1;return $l(e.body,e=>{r||!v(e,`ReturnStatement`)||!e.argument||s(e.argument,e=>{if(Hd(e,n)===t)return r=!0,!1})}),r},of=e=>v(e,`FunctionDeclaration`)?Gl(e)!==null:!v(e,`ArrowFunctionExpression`)&&!v(e,`FunctionExpression`)||!v(e.parent,`VariableDeclarator`)?!1:Gl(e)!==null,sf=e=>{let t=S(e),n=t.parent;return v(n,`JSXExpressionContainer`)&&n.expression===t&&Yl(n.parent)},cf=(e,t)=>{if(!A(e)||Pde(e))return!1;let n=S(e),r=n.parent;if(v(r,`CallExpression`)&&r.arguments?.[0]===n&&er(r,`useCallback`,t.scopes)&&sf(r))return!0;let i=e.parent;if(sf(e))return!0;if(!v(i,`Property`)||i.value!==e||i.computed)return!1;let a=T(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!v(o,`ObjectExpression`))return!1;let s=o.parent;return(v(s,`CallExpression`)&&s.arguments.some(e=>e===o)||v(s,`JSXExpressionContainer`))&&K(i,t.scopes)!==null},lf=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=M(e);return v(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:v(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||v(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:v(n,`ArrayExpression`)||v(n,`ArrowFunctionExpression`)||v(n,`ClassExpression`)||v(n,`FunctionExpression`)||v(n,`NewExpression`)||v(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},uf=(e,t,n)=>{let r=M(e),i=lf(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(v(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(v(r,`UnaryExpression`)&&r.operator===`!`){let e=uf(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(v(r,`LogicalExpression`)){let e=uf(r.left,t,n),i=uf(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(v(r,`ConditionalExpression`)){let e=uf(r.test,t,n);if(e===`truthy`)return uf(r.consequent,t,n);if(e===`falsy`)return uf(r.alternate,t,n);let i=uf(r.consequent,t,n);return i===uf(r.alternate,t,n)?i:`unknown`}return v(r,`CallExpression`)&&v(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&E(r.arguments[0])?uf(r.arguments[0],t,n):`unknown`},Eme=(e,t,n,r)=>{let i=new Map;if(!A(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&E(e)?e:null,c=null,l=lf(s,r);if(v(o,`Identifier`)?c=o:v(o,`AssignmentPattern`)&&v(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=lf(o.right,r))):v(o,`RestElement`)&&v(o.argument,`Identifier`)&&(c=o.argument,l={isDefinitelyUndefined:!1,truthiness:`truthy`}),!c)continue;let u=r.scopes.symbolFor(c);if(!u)continue;let d=u.references.some(e=>e.flag!==`read`&&e.identifier.range[0]<n.range[0]);i.set(u.id,d?{isDefinitelyUndefined:!1,truthiness:`unknown`}:l)}return i},Dme=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=Eme(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(v(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!v(t,`IfStatement`)||t.alternate||!Xl(t.consequent))&&uf(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(v(o,`IfStatement`)||v(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):v(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((v(o,`WhileStatement`)||v(o,`DoWhileStatement`))&&o.body===a||v(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=uf(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},Ome=(e,t)=>{if(!A(e))return[];let n=j(e);if(!n||!A(n))return[];let r=mfe.get(t);r||(r=new WeakMap,mfe.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return s(n.body,e=>{if(!v(e,`CallExpression`)||j(e)!==n||!iu(e,t))return;let r=Xn(e);!r||!A(r)||s(r.body,e=>{if(e!==r.body&&A(e))return!1;if(!(!v(e,`CallExpression`)||!U(e,t))){o(Hd(e.callee,t),e,!0);for(let n of e.arguments)!E(n)||!Bl(e,n)||o(Hd(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},df=C({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 t=t=>{let n=af(t,e);if(!n&&!Bd(t,e))return;let r=Ome(t,e),i=r.length>0,a=bme(t,e,n?{allowReturnedResourceEscape:n.doesEffectOwnEveryResult,allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0,requireCallableReturnedResource:!0}:i?{allowReturnedTimerEscape:!1,includeOneShotTimers:!0,isEffectInvoked:!0}:void 0);if(!a||i&&a.resourceName===`setTimeout`&&(!U(a.node,e)||A(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>Dme(t,a.node,n,e))))return;let o=_fe[a.kind];e.report({node:a.node,message:`\`${a.resourceName}\` creates a ${o} 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(n){if(er(n,`useCallback`,e.scopes)){let r=Xn(n);r&&!cf(r,e)&&t(r);return}if(!iu(n,e))return;let r=Xn(n);if(!r)return;let i=Nfe(r,Mfe(r,e),e);if(i.length===0)return;let a=Bpe(r,i,e);if(!a)return;let o=_fe[a.kind],s=Yn(n)??`effect`;e.report({node:n,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){of(e)&&t(e)},ArrowFunctionExpression(n){(of(n)||cf(n,e)||ef(n,e))&&t(n)},FunctionExpression(n){(of(n)||cf(n,e)||ef(n,e))&&t(n)}}}}),kme=new Set([`window`,`globalThis`,`self`]),Ame=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),jme=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=S(e.identifier),n=t.parent;return!v(n,`MemberExpression`)||n.object!==t?!1:v(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(v(n.parent,`CallExpression`)&&n.parent.callee===n&&Ame.has(N(n)??``))}),Mme=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||jme(e))return null;r.add(e.id);let i=ns(e);if(!i)return n;let a=M(i);if(!v(a,`Identifier`))return n;n=a}},Nme=e=>{let t=j(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(v(n,`ConditionalExpression`)||v(n,`IfStatement`)||v(n,`LogicalExpression`)||v(n,`SwitchStatement`)||v(n,`ForStatement`)||v(n,`ForInStatement`)||v(n,`ForOfStatement`)||v(n,`WhileStatement`)||v(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},ff=(e,t,n)=>{let r=j(e);if(!r||!A(r))return null;let i=S(r),a=i.parent;if(!v(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=M(a.callee);if(!v(o,`MemberExpression`)||N(o)!==`forEach`||r.async||!Nme(a))return null;let s=M(o.object);if(!v(s,`Identifier`))return null;let c=Mme(s,n);if(!c)return null;let l=W({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=M(e);if(v(t,`Identifier`)){let e=n.scopes.symbolFor(t);if(!e||e.references.some(e=>e.flag!==`read`))return null;let i=r.params.findIndex(t=>n.scopes.symbolFor(t)?.bindingIdentifier===e?.bindingIdentifier);if(i>=0)return`$${i}`;let a=ns(e);return a&&!u.has(e.id)&&j(e.declarationNode)===r?(u.add(e.id),d(a)):W({node:t,scopes:n.scopes})}if(v(t,`Literal`))return JSON.stringify(t.value);if(v(t,`MemberExpression`)){let e=d(t.object),n=N(t);return e&&n?`${e}.${n}`:null}if(v(t,`CallExpression`)){let e=M(t.callee);if(!v(e,`MemberExpression`)||N(e)!==`getElementById`)return null;let r=M(e.object);if(!v(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>v(e,`SpreadElement`)?null:d(e));return i.every(e=>e!==null)?`document.getElementById(${i.join(`,`)})`:null}return null},f=d(t);if(!f)return null;u.clear();let p=[],m=e,h=e.parent??null;for(;h&&h!==r;){if(v(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(v(h,`ConditionalExpression`)||v(h,`LogicalExpression`)||v(h,`SwitchStatement`)||v(h,`ForStatement`)||v(h,`ForInStatement`)||v(h,`ForOfStatement`)||v(h,`WhileStatement`)||v(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},pf=(e,t,n)=>{let r=O(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=S(e),a=i.parent;if(!(v(a,`VariableDeclarator`)&&a.id===e)&&!(v(a,`VariableDeclarator`)&&a.init===i)&&!(v(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(v(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(v(a,`MemberExpression`)&&a.object===i){let e=N(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!v(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?ff(r,e,n):null,a=e?W({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?ff(r,e,n):null,a=e?W({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(v(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=M(a.callee);if(v(e,`MemberExpression`)&&N(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Pme=(e,t,n)=>{let r=!1;return to(e,e=>{v(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Fme=(e,t,n,r)=>{if(!n)return!1;let i=M(e);if(!v(i,`MemberExpression`)||N(i)!==`target`)return!1;let a=M(i.object);if(!v(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=j(a);if(!s||s===t||!A(s))return!1;let c=S(s),l=c.parent;if(!v(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=M(l.callee);return v(u,`MemberExpression`)&&N(u)===`forEach`&&Pme(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},Ime=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?M(e.arguments[0]):null;if(!r||!v(r,`ArrowFunctionExpression`)&&!v(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||!v(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&to(i,e=>{if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let a=M(r.object);if(!v(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=N(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Fme(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=W({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},mf=(e,t)=>{let n=M(e),r=v(n,`Identifier`)?O(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},hf=(e,t,n=new Set)=>{let r=M(e);if(n.has(r))return!1;if(n.add(r),v(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?hf(e,t,n):!1}let i=v(r,`CallExpression`)?M(r.callee):null,a=v(i,`MemberExpression`)?M(i.object):null;if(!v(r,`CallExpression`)||!v(i,`MemberExpression`)||N(i)!==`bind`||!v(a,`MemberExpression`)||N(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&mf(a.object,t)&&mf(o,t))},Lme=(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=S(t.identifier),r=e.parent;if(!v(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=M(r.callee);v(i,`MemberExpression`)&&N(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!qa(e,[r],t)))return null;let i=M(r.callee);if(!v(i,`MemberExpression`))return null;let a=M(i.object);if(!v(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?M(o.initializer):null;return!o||o.kind!==`const`||!v(s,`ArrayExpression`)||(s.elements?.length??0)!==0||j(o.declarationNode)!==j(e.construction)||!o.references.every(e=>{let t=S(e.identifier),n=t.parent,r=n?.parent;return!!(v(n,`MemberExpression`)&&n.object===t&&v(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(N(n)??``))})?null:W({node:a,scopes:t.scopes})},Rme=(e,t)=>{if(!A(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!v(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return to(e,e=>{if(!v(e,`CallExpression`))return;let n=M(e.callee);if(!v(n,`MemberExpression`)||N(n)!==`disconnect`)return;let a=M(n.object);v(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Ja(e,i,t)},zme=(e,t,n,r)=>{let i=e=>{if(!A(e)||e.async||e.generator)return!1;let t=[];return s(e.body,i=>{if(!v(i,`CallExpression`)||j(i)!==e)return;let a=M(i.callee);if(!v(a,`MemberExpression`)||N(a)!==`forEach`||W({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Rme(o,r)&&t.push(i)}),Ja(e,t,r)};if(!A(e))return!1;if(!v(e.body,`BlockStatement`)){let t=oc(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=Ie(e).filter(e=>{if(!e.argument)return!1;let t=oc(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>qa(e,a,r))},Bme=(e,t,n)=>Ide({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!A(e))return!1;let r=[];return s(e.body,n=>{if(n!==e.body&&A(n))return!1;let i=v(n,`ChainExpression`)?n.expression:n,a=v(i,`CallExpression`)?M(i.callee):null;v(i,`CallExpression`)&&v(a,`MemberExpression`)&&N(a)===`disconnect`&&mf(a.object,t.bindingIdentifiers)&&r.push(n)}),Ja(e,r,n)}}),gf=C({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(t){if(!uc(t,e.scopes))return;let n=Xn(t);if(!A(n))return;let r=new Map;if(to(n,t=>{if(!v(t,`NewExpression`))return;let n=M(t.callee);if(!(v(n,`Identifier`)?ve.has(n.name)&&!O(n,n.name):v(n,`MemberExpression`)&&v(M(n.object),`Identifier`)&&kme.has(M(n.object).name)&&!O(n.object,M(n.object).name)&&ve.has(N(n)??``)))return;let i=S(t),a=i.parent;if(!v(a,`VariableDeclarator`)||a.init!==i||!(v(a.id,`Identifier`)&&a.id.name))return;let o=Ime(t,e.scopes);r.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})}),r.size===0)return;for(let t of[...r.values()]){let n=cc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());to(n,t=>{if(!v(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&pf(t,i,e)});for(let t of sc(n))to(t,t=>{if(!v(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&pf(t,i,e)});for(let t of i){for(let e of t.callbackReleasedTargetKeys)t.observedTargetKeys.delete(e);let n=t.construction.arguments?.[0];!n||!A(M(n))||to(M(n),n=>{if(!v(n,`Identifier`))return;let i=O(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&pf(n,t,e)})}let a=v(n.body,`BlockStatement`)?Ie(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>hf(e,t.bindingIdentifiers))&&(t.didReleaseAll=!0,t.didObserveUnknownTarget=!1,t.observedIterationTargetKeys.clear(),t.observedTargetKeys.clear());let r=!t.didObserveUnknownTarget&&t.observedIterationTargetKeys.size===0&&t.observedTargetKeys.size===0;if(!t.didObserve||t.didReleaseAll||t.didReleaseAllViaCallbackParameter||r||Bme(n,t,e))continue;let i=Lme(t,e);i&&zme(n,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()`."})}}})}),_f=`cancelAnimationFrame`,vf=`collection-values:`,Vme=new Set([`min`,`max`]),yf=e=>v(e,`CallExpression`)&&xf(e,`requestAnimationFrame`),bf=new Set([`window`,`globalThis`,`self`]),xf=(e,t)=>{let n=M(e.callee);if(v(n,`Identifier`))return n.name===t&&!O(n,n.name);if(!v(n,`MemberExpression`)||N(n)!==t)return!1;let r=M(n.object);return v(r,`Identifier`)&&bf.has(r.name)&&!O(r,r.name)},Sf=e=>{if(!e)return null;let t=M(e);if(v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`))return t;if(v(t,`Identifier`)){let e=O(t,t.name)?.initializer;if(A(e))return e}return null},Cf=(e,t,n)=>{let r=new Set,i=M(e);if(v(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of cc(e,n))r.add(t)}if((v(t,`FunctionExpression`)||v(t,`FunctionDeclaration`))&&t.id&&v(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of cc(e,n))r.add(t)}return r},wf=(e,t,n)=>{let r=M(e);return v(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Hme=(e,t,n)=>{let r=!1;return to(e,e=>{if(r)return!1;if(!yf(e))return;let i=e.arguments?.[0];if(i&&wf(i,t,n))return r=!0,!1}),r},Ume=(e,t)=>{let n=[];return to(e,e=>{if(!yf(e))return;let r=e.arguments?.[0];if(!r)return;let i=Sf(r);i&&Hme(i,Cf(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},Tf=e=>{let t=M(e);if(v(t,`Identifier`)){let e=O(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=Tf(e.initializer);if(t&&t!==n)return t}return n}if(!v(t,`MemberExpression`))return null;let n=Tf(t.object),r=N(t);return n&&r?`${n}.${r}`:null},Wme=e=>{let t=S(e),n=t.parent;if(v(n,`AssignmentExpression`)&&n.right===t)return Tf(n.left);if(v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`))return Tf(n.id);if(v(n,`CallExpression`)&&v(n.callee,`MemberExpression`)){let e=N(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?Tf(n.callee.object):null;if(i)return`${vf}${i}`}return null},Ef=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=Cf(n,e.scheduledFunction,t),i=[e.rafCall];return to(e.scheduledFunction,e=>{if(!yf(e))return;let n=e.arguments?.[0];n&&wf(n,r,t)&&i.push(e)}),i},Gme=e=>{let t=S(e),n=t.parent;return v(n,`AssignmentExpression`)&&n.right===t?n.left:v(n,`VariableDeclarator`)&&n.init===t&&v(n.id,`Identifier`)?n.id:null},Df=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(A(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return s(e,a=>{if(i||a!==e&&A(a))return!1;let o=v(a,`AssignmentExpression`)?a.left:v(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&Tf(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},Kme=(e,t,n)=>{let r=Ef(e,n),i=r.map(Wme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(vf))return a;let o=new Set(r.flatMap(e=>{let t=Gme(e);return t?[t]:[]}));return Df(t,a,o)||Df(e.scheduledFunction,a,o)?null:a},qme=(e,t,n)=>{let r=!1;return to(e,e=>{if(r||!v(e,`CallExpression`))return;let i=M(e.callee);if(!v(i,`MemberExpression`)||N(i)!==`forEach`||Tf(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!v(a,`SpreadElement`)?Sf(a):null;if(!A(o))return;let c=o.params?.[0];v(c,`Identifier`)&&s(o,e=>{if(r||e!==o&&A(e))return!1;if(!v(e,`CallExpression`))return;let t=e.arguments?.[0];if(Of(e)&&v(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(c)?.bindingIdentifier)return r=!0,!1})}),r},Jme=(e,t,n)=>{if(t.startsWith(vf))return qme(e,t.slice(18),n);let r=!1;return to(e,e=>{if(r||!v(e,`CallExpression`)||!Of(e))return;let n=e.arguments?.[0];n&&Tf(n)===t&&(r=!0)}),r},Of=e=>{if(xf(e,_f))return!0;let t=M(e.callee);if(!v(t,`Identifier`))return!1;let n=O(t,t.name)?.bindingIdentifier?.parent;if(!v(n,`Property`)||(v(n.key,`Identifier`)?n.key.name:v(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==_f)return!1;let r=n.parent,i=r?.parent;if(!v(r,`ObjectPattern`)||!v(i,`VariableDeclarator`))return!1;let a=i.init?M(i.init):null;return v(a,`Identifier`)&&bf.has(a.name)&&!O(a,a.name)},Yme=(e,t)=>{to(e,e=>{let n=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(v(n,`Identifier`)){let e=Tf(n);e&&t.add(e)}else if(v(n,`MemberExpression`)){let e=Tf(n);e&&t.add(e)}})},Xme=(e,t,n)=>{if(v(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!v(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return Nf(e.right);if(e.operator!==`=`)return!1;let r=M(e.right),i=v(r,`BinaryExpression`)?M(r.left):null;return v(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&v(i,`Identifier`)&&Tf(i)===t&&Nf(r.right)},kf=(e,t)=>{let n=new Set,r=new Set;to(e,e=>{let i=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(!v(i,`Identifier`))return;let a=Tf(i);a&&(Xme(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},Zme=(e,t)=>{let n=v(e,`AssignmentExpression`)?e.left:v(e,`UpdateExpression`)?e.argument:null;if(!v(n,`Identifier`)&&!v(n,`MemberExpression`))return;let r=Tf(n);if(!r)return;if(v(e,`UpdateExpression`)||v(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!v(e,`AssignmentExpression`))return;let i=M(e.right);if(!v(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)},Qme=e=>v(e,`IfStatement`)||v(e,`ConditionalExpression`)||v(e,`LogicalExpression`)||v(e,`SwitchStatement`)||v(e,`TryStatement`)||v(e,`ForStatement`)||v(e,`ForInStatement`)||v(e,`ForOfStatement`)||v(e,`WhileStatement`)||v(e,`DoWhileStatement`),$me=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(Qme(n))return!1;n=n.parent}return n===t||e===t},ehe=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),to(e,r=>{if(!$me(r,e)||(Zme(r,n),!v(r,`CallExpression`)))return;let a=r.callee;if(v(a,`Identifier`)){let e=Tf(a);s(t,t=>{v(t,`VariableDeclarator`)&&v(t.id,`Identifier`)&&Tf(t.id)===e&&t.init&&A(t.init)&&i(t.init)});return}if(v(a,`MemberExpression`)){let e=Tf(a);if(!e)return;if(N(a)===`abort`){let e=Tf(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}s(t,t=>{v(t,`AssignmentExpression`)&&v(t.left,`MemberExpression`)&&Tf(t.left)===e&&t.right&&A(t.right)&&i(t.right)})}}))};return i(e),n},Af=(e,t)=>{let n=M(e);if(v(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(v(n,`Identifier`)||v(n,`MemberExpression`)){let e=Tf(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(v(n,`UnaryExpression`)&&n.operator===`!`){let e=Af(n.argument,t);return e===null?null:!e}if(v(n,`LogicalExpression`)){let e=Af(n.left,t);if(n.operator===`??`)return e;let r=Af(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(!v(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=Af(n.left,t),o=Af(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=Tf(n.left),c=Tf(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},jf=e=>v(e,`ReturnStatement`)||v(e,`ThrowStatement`)?!0:v(e,`BlockStatement`)&&!!e.body?.some(e=>jf(e))||v(e,`IfStatement`)&&!!e.alternate&&jf(e.consequent)&&jf(e.alternate),Mf=(e,t,n)=>{let r=Af(e,n);return r!==null&&r!==t},the=(e,t,n)=>{let r=Af(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},nhe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((v(e,`IfStatement`)||v(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&Mf(e.test,e.consequent===r,n)||v(e,`LogicalExpression`)&&e.right===r&&the(e.left,e.operator,n))return!0;if(v(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(v(e,`IfStatement`)&&(jf(e.consequent)&&Mf(e.test,!1,n)||e.alternate&&jf(e.alternate)&&Mf(e.test,!0,n)))return!0}}r=e}return!1},rhe=(e,t,n)=>{let r=Ef(e,n).slice(1);return r.length>0&&r.every(n=>nhe(n,e.scheduledFunction,t))},Nf=e=>v(e,`Literal`)&&typeof e.value==`number`&&e.value>0,ihe=(e,t)=>{let n=M(e);return v(n,`Literal`)&&typeof n.value==`number`||v(n,`Identifier`)&&!t.has(Tf(n)??``)},Pf=(e,t,n)=>{let r=M(e);if(v(r,`Identifier`)){let e=Tf(r);return e?t.has(e):!1}if(v(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return Pf(r.left,t,n)&&ihe(r.right,n);if(r.operator===`*`||r.operator===`/`)return Pf(r.left,t,n)&&Nf(r.right)}if(!v(r,`CallExpression`))return!1;let i=M(r.callee),a=v(i,`MemberExpression`)?M(i.object):null;if(!v(i,`MemberExpression`)||!v(a,`Identifier`)||a.name!==`Math`||O(a,a.name)||!Vme.has(N(i)??``))return!1;let o=!1;for(let e of r.arguments){if(Pf(e,t,n)){o=!0;continue}if(!v(e,`Literal`)||typeof e.value!=`number`)return!1}return o},Ff=(e,t,n,r,i)=>{let a=M(e);if(v(a,`UnaryExpression`)&&a.operator===`!`)return Ff(a.argument,t,n,r,!i);if(v(a,`LogicalExpression`)&&a.operator!==`??`)return Ff(a.left,t,n,r,i)&&Ff(a.right,t,n,r,i);if(!v(a,`BinaryExpression`))return!1;let o=Pf(a.left,t,r)&&v(a.right,`Literal`)&&typeof a.right.value==`number`,s=v(a.left,`Literal`)&&typeof a.left.value==`number`&&Pf(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=Pf(a.left,n,r)&&v(a.right,`Literal`)&&typeof a.right.value==`number`,d=v(a.left,`Literal`)&&typeof a.left.value==`number`&&Pf(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},ahe=(e,t)=>{let n=e.scheduledFunction,r=new Set;Yme(n,r);let i=kf(n,!0),a=kf(n,!1);if(A(n)){for(let e of n.params??[])if(v(e,`Identifier`)){let t=Tf(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,to(n,e=>{if(!v(e,`VariableDeclarator`)||!e.init)return;let t=v(e.id,`Identifier`)?Tf(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(Pf(e.init,i,r)?(i.add(t),o=!0):Pf(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=Ef(e,t).slice(1);if(s.length===0)return!1;for(let e of s){let t=!1,o=e,s=e.parent;for(;s&&s!==n;){if((v(s,`IfStatement`)||v(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&Ff(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},If=C({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(!uc(t,e.scopes))return;let n=Xn(t);if(!n)return;let r=sc(n);for(let t of Ume(n,e.scopes)){if(ahe(t,e.scopes))continue;let i=Kme(t,n,e.scopes);i&&r.some(t=>Jme(t,i,e.scopes))||r.some(r=>rhe(t,ehe(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.`})}}})}),ohe=new Set([`removeEventListener`,`removeListener`,`off`]),she=/(?:duration|delay|timeout|ms)$/i,che=e=>{let t=M(e);if(v(t,`Literal`)&&typeof t.value==`number`)return!0;if(!v(t,`Identifier`))return!1;if(she.test(t.name))return!0;let n=O(t,t.name);if(!n?.initializer)return!1;let r=M(n.initializer);return v(r,`Literal`)&&typeof r.value==`number`},lhe=e=>{let t=M(e);return Ei(t)?!0:v(t,`CallExpression`)&&v(t.callee,`MemberExpression`)&&N(t.callee)===`bind`},uhe=new Set([`addEventListener`,`addListener`,`on`,`once`]),Lf=`handler-only`,dhe=(e,t)=>{let n=new Set;return s(e,e=>{if(!v(e,`CallExpression`))return;let r=M(e.callee);if(!v(r,`MemberExpression`))return;let i=N(r);if(!i||!uhe.has(i))return;let a=W({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Lf:Ol(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},Rf=C({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=M(n.callee);if(!v(r,`MemberExpression`))return;let i=N(r);if(!i||!ohe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&che(a[0])||!lhe(s))return;let c=W({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Lf:Ol(a[0],e.scopes),u=w(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=dhe(u,e.scopes),t.set(u,d)),d.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.`})}}}}),fhe=new Set([`columnheader`,`rowheader`]),phe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=z(e.attributes,t,!1);if(!n)continue;let r=R(n);if(r===null||r.trim().length>0)return!0}return!1},zf=C({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=k(n);if(/^[A-Z]/.test(r))return;let i=z(n.attributes,`role`,!1),a=i?R(i)?.toLowerCase():null;r!==`th`&&(!a||!fhe.has(a))||Mr(t,e.settings)||phe(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.`})}})}),mhe=(e,t,n)=>{let r=e.declarationNode;if(!n||e.references.some(e=>e.flag!==`read`)||!v(r,`VariableDeclarator`)||!v(r.id,`ArrayPattern`)||r.id.elements[1]!==e.bindingIdentifier||!v(r.init,`CallExpression`))return!1;let i=Ut(r.init.callee,t);if(i?.source!==`@xstate/react`||i.importedName!==`useService`)return!1;let a=one(n,`@xstate/react`);if(!a||a.version.major!==1||a.version.isPrerelease||a.declaredRange&&!/^[~^]?1(?:\.\d+){1,2}$/.test(a.declaredRange))return!1;let o=r.init.arguments[0];if(!v(o,`Identifier`)||en(o,`send`,t))return!1;let s=x(o,t),c=t;if(s?.kind===`import`){let e=Ut(o,t),r=e?.source.startsWith(`.`)&&e.importedName?He(n,e.source,e.importedName):null,i=r?.exportedNode.parent;if(!r||!v(i,`VariableDeclarator`)||!v(i.id,`Identifier`))return!1;c=Dt(r.programNode),s=c.symbolFor(i.id)}if(!s||s.kind!==`const`||s.scope.kind!==`module`||s.references.some(e=>e.flag!==`read`)||!v(s.initializer,`CallExpression`))return!1;let l=Ut(s.initializer.callee,c);return l?.source!==`xstate`||l.importedName!==`interpret`||en(s.bindingIdentifier,`send`,c)?!1:s.references.every(e=>{let t=e.identifier.parent;if(!v(t,`MemberExpression`))return!0;let n=t.parent;return!(v(n,`AssignmentExpression`)&&n.left===t)&&!(v(n,`UpdateExpression`)||v(n,`UnaryExpression`)&&n.operator===`delete`)})},hhe=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return s(e,a=>{if(a!==e&&A(a)){let e=Vf(a,t);for(let t of e)t.resolvedSymbol&&!un(t.resolvedSymbol.scope,n)&&(i.has(t.id)||(r.push(t),i.add(t.id)));return!1}let o=t.referenceFor(a);o&&o.resolvedSymbol&&(un(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},Bf=new WeakMap,Vf=(e,t)=>{let n=Bf.get(t);n||(n=new WeakMap,Bf.set(t,n));let r=n.get(e);if(r)return r;let i=hhe(e,t);return n.set(e,i),i};let Hf=0;const Uf=e=>{let t={id:Hf++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Wf=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Gf=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Kf=(e,t,n)=>{if(e.nodeBlock.set(t,n),A(t)){e.nestedFunctions.push(t);return}let r=t,i=nn[t.type]??Object.keys(r);for(let t=0;t<i.length;t+=1){let a=i[t];if(a===void 0||a===`parent`)continue;let o=r[a];if(Array.isArray(o))for(let t=0;t<o.length;t+=1){let r=o[t];E(r)&&Kf(e,r,n)}else E(o)&&Kf(e,o,n)}},ghe=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}},qf=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=qf(e.argument);return t===null?null:!t}return null},Jf=e=>e===null||qf(e)===!0,Yf=(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},Xf=(e,t,n)=>{let r=n;for(let n of t)r=Zf(e,n,r);return r},Zf=(e,t,n)=>{if(e.nodeBlock.set(t,n),!ghe(t))return Gf(e,n,t),Kf(e,t,n),n;if(t.type===`BlockStatement`)return Xf(e,t.body,n);if(t.type===`LabeledStatement`){let r=Uf(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Zf(e,a,n);return e.labelStack.pop(),Wf(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Kf(e,t.argument,n),Wf(n,e.exit,`uncond`),Uf(e);if(t.type===`ThrowStatement`){t.argument&&Kf(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Wf(n,r.catch,`uncond`):r?.finally?Wf(n,r.finally,`uncond`):Wf(n,e.exit,`throw`),Uf(e)}if(t.type===`BreakStatement`){let r=Yf(e,t.label?t.label.name:null);return r?Wf(n,r.merge,`uncond`):Wf(n,e.exit,`uncond`),Uf(e)}if(t.type===`ContinueStatement`){let r=Yf(e,t.label?t.label.name:null);return r?.header&&Wf(n,r.header,`uncond`),Uf(e)}if(t.type===`IfStatement`){Kf(e,t.test,n);let r=Uf(e),i=Uf(e);if(Wf(n,r,`cond`),Wf(Zf(e,t.consequent,r),i,`uncond`),t.alternate){let r=Uf(e);Wf(n,r,`cond`),Wf(Zf(e,t.alternate,r),i,`uncond`)}else Wf(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Jf(t.test);Kf(e,t.test,n);let a=Uf(e),o=Uf(e),s=Uf(e);r?Wf(n,o,`uncond`):(Wf(n,a,`uncond`),Wf(a,o,i?`uncond`:`cond`),i||Wf(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Zf(e,t.body,o);return e.loopStack.pop(),r?(Wf(c,a,`uncond`),Wf(a,o,i?`uncond`:`cond`),i||Wf(a,s,`cond`)):Wf(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Kf(e,t.init,n),t.test&&Kf(e,t.test,n);let r=Uf(e),i=Uf(e),a=Uf(e),o=Jf(t.test??null);Wf(n,r,`uncond`),Wf(r,i,o?`uncond`:`cond`),o||Wf(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Zf(e,t.body,i);return e.loopStack.pop(),t.update&&Kf(e,t.update,r),Wf(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Kf(e,t.right,n),Kf(e,t.left,n);let r=Uf(e),i=Uf(e),a=Uf(e);Wf(n,r,`uncond`),Wf(r,i,`cond`),Wf(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Zf(e,t.body,i);return e.loopStack.pop(),Wf(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Kf(e,t.discriminant,n);let r=Uf(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Uf(e);Wf(n,t,`cond`),i&&Wf(i,t,`uncond`),i=Xf(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Wf(i,r,`uncond`),a||Wf(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Uf(e),i=Uf(e),a=null,o=null;t.handler&&(a=Uf(e)),t.finalizer&&(o=Uf(e)),Wf(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Xf(e,t.block.body,r);if(e.tryStack.pop(),a&&Wf(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Zf(e,n,a);o?Wf(r,o,`uncond`):Wf(r,i,`uncond`)}return o&&t.finalizer?(Wf(s,o,`uncond`),Wf(Xf(e,t.finalizer.body,o),i,`uncond`)):Wf(s,i,`uncond`),i}return Gf(e,n,t),Kf(e,t,n),n},_he=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Uf(r),a=Uf(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Xf(r,t.body,i):(Kf(r,t,i),o=i),Wf(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},vhe=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},Qf=e=>{Hf=0;let t=new Map,n=[],r=(e,r)=>{let i=_he(e,r,n);t.set(e,{cfg:i,unconditionalSet:vhe(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!A(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!A(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(A(t)||t.type===`Program`)return t;t=t.parent??null}return null};return{cfgFor:e=>i(e)?.cfg??null,enclosingFunction:a,isUnconditionalFromEntry:e=>{let t=a(e);if(!t)return!0;let n=i(t);if(!n)return!0;let r=n.cfg.blockOf(e);return r?n.unconditionalSet.has(r):!0}}},yhe=e=>{let t=M(e);return v(t,`ObjectExpression`)?`object`:v(t,`ArrayExpression`)?`array`:v(t,`ArrowFunctionExpression`)||v(t,`FunctionExpression`)?`function`:v(t,`JSXElement`)||v(t,`JSXFragment`)?`JSX`:v(t,`NewExpression`)?`instance`:null},$f=(e,t,n=new Set)=>{let r=yhe(e);if(r)return{bindingName:null,kind:r};let i=M(e);if(!v(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`)||!v(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=$f(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},bhe=new Set([...Et,`useImperativeHandle`,`useInsertionEffect`]),ep=new WeakMap,tp=new WeakMap,np=new WeakMap,rp=e=>{let t=ep.get(e.programNode);if(t)return t;let n=Dt(e.programNode);return ep.set(e.programNode,n),n},xhe=e=>{let t=tp.get(e.programNode);if(t)return t;let n=Qf(e.programNode);return tp.set(e.programNode,n),n},ip=(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},ap=(e,t)=>{let n=Ts(e)??t??``;return n!==`use`&&Ss(n)},op=(e,n)=>{if(!v(e,`Identifier`))return null;let r=x(e,n);if(r?.kind!==`import`||!r.initializer)return null;let i=r.initializer.parent;if(!i||!v(i,`ImportDeclaration`))return null;let a=i.source?.value;if(typeof a!=`string`)return null;let o=t(r.initializer);return o?{exportedName:o,source:a}:null},She=(e,t,n)=>{if(!n)return null;let r=op(e,t);if(!r)return null;let i=v(e,`Identifier`)?e.name:``;if(r.source===`react`||!Ss(i)&&!Ss(r.exportedName))return null;let a=Be(n,r.source,r.exportedName);return!a||!ap(a.functionNode,r.exportedName)?null:{cfg:xhe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:rp(a)}},sp=(e,t,r,i=new Set)=>{let a=M(e);if(v(a,`Identifier`)){let e=x(a,t);if(!e||i.has(e.id))return null;if(n(e)){let t=Pn(e.declarationNode);return!t||!r.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||fp(e)?null:(i.add(e.id),sp(e.initializer,t,r,i))}if(v(a,`MemberExpression`)){let e=N(a);if(!e||!r.has(e))return null;let n=M(a.object);return!v(n,`Identifier`)||!En(n,t)?null:e===`useImperativeHandle`?2:1}if(!v(a,`ConditionalExpression`))return null;let o=sp(a.consequent,t,r,new Set(i)),s=sp(a.alternate,t,r,new Set(i));return o!==null&&o===s?o:null},Che=(e,t,n,r)=>{if(!n)return null;let i=op(M(e.callee),t);if(!i)return null;let a=He(n,i.source,i.exportedName);return a?sp(a.exportedNode,rp(a),r):null},cp=(e,t,n,r)=>{let i=M(e.callee),a=P(i,t);if(a&&ap(a)){let e=w(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return She(i,t,r)},lp=e=>{if(!A(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=M(r);if(v(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(v(e,`AssignmentPattern`)&&v(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(v(e,`ObjectPattern`))for(let r of e.properties??[]){if(!v(r,`Property`))continue;let e=T(r,{allowComputedString:!0});if(!e)continue;let i=M(r.value);v(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):v(i,`AssignmentPattern`)&&v(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},up=(e,t,n=new Set)=>{let r=M(e);if(v(r,`ObjectExpression`))return r;if(!v(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||fp(i)?null:(n.add(i.id),up(i.initializer,t,n))},whe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(v(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(v(r,`Property`)&&T(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},dp=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>v(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=up(r,n);return i?whe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},fp=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&v(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(v(n,`AssignmentExpression`)&&n.left===e||v(n,`UpdateExpression`)&&n.argument===e||v(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(v(n,`CallExpression`)&&n.callee===e&&v(e,`MemberExpression`)){let t=N(e);if(t&&(vr.has(t)||yr.has(t)))return!0}}return!1},pp=(e,t,n,r,i=new Set)=>{let a=M(e);if(!v(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||fp(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!v(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),pp(o.initializer,t,n,r,i))},mp=(e,t,n,r=new Set)=>{if(pp(e,`list`,t,n))return!0;let i=M(e);if(v(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||fp(e)?!1:(r.add(e.id),mp(e.initializer,t,n,r))}return v(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?v(e,`SpreadElement`)?pp(e.argument,`list`,t,n):pp(e,`value`,t,n):!1):!1},The=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of lp(t.functionNode)){let o=dp(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||fp(s)||(pp(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(pp(o.expression,`list`,n,r)||mp(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},hp=(e,t,n,r,i)=>{if(!A(e.functionNode))return!1;let a=e.functionNode;if(n<0||r.has(a)||[...t.valueSymbolIds,...t.listSymbolIds].some(t=>{let n=e.scopes.ownScopeFor(e.functionNode)?.symbols.find(e=>e.id===t);return n?fp(n):!1}))return!1;let o=new Set(r);o.add(a);let c=!1;return s(a.body,r=>{if(c||r!==a.body&&A(r))return!1;if(!v(r,`CallExpression`)||!ip(r,e.cfg))return;if(D(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=M(r.callee),i=(v(n,`Identifier`)?n.name:v(n,`MemberExpression`)?N(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!v(a,`SpreadElement`)&&mp(a,e.scopes,t)?(c=!0,!1):void 0}let s=Che(r,e.scopes,e.filePath,i);if(s!==null){let n=r.arguments?.[s];return n&&!v(n,`SpreadElement`)&&mp(n,e.scopes,t)?(c=!0,!1):void 0}if(n===0)return;let l=cp(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=The(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&hp(l,u,n-1,o,i))return c=!0,!1}),c},gp=(e,t,n=bhe)=>{let r=np.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):np.set(e,new Map([[n,a]]));let o=cp(e,t.scopes,t.cfg,t.filename);if(!o||!K(e,t.scopes)||!ip(e,t.cfg))return a;for(let r of lp(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||fp(i))continue;let s=dp(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=$f(c,s.expression?t.scopes:o.scopes);l&&hp(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(v(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},_p=new WeakMap,Ehe=e=>{let t=new Map;if(!v(e,`Program`))return t;for(let n of e.body){let e=v(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!v(e,`TSInterfaceDeclaration`)&&!v(e,`TSTypeAliasDeclaration`)||!v(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},vp=(e,t)=>{let n=w(e);if(!n)return[];let r=_p.get(n);return r||(r=Ehe(n),_p.set(n,r)),r.get(t)??[]},Dhe=e=>v(e,`Identifier`)?e.name:v(e,`MemberExpression`)&&!e.computed&&v(e.object,`Identifier`)&&e.object.name===`React`&&v(e.property,`Identifier`)?`React.${e.property.name}`:null,yp=(e,t)=>{let n=e.parent;if(v(n,`CallExpression`)&&n.arguments[0]===e){let e=Dhe(n.callee);if(e!==null&&nt.has(e))return!0}return t?Ms(e,t).some(e=>e.references.some(n=>{let r=S(n.identifier),i=r.parent;return!!(v(i,`CallExpression`)&&i.arguments[0]===r&&!b(e,n.identifier,t)&&D(i,nt,t,{resolveNamedAliases:!0}))})):!1},Ohe=new Set([`function`,`arrow-function`,`method`]),bp=e=>{let t=e.scope;for(;t;){if(Ohe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},xp=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),J=e=>{let t=e;for(;xp.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Sp=(e,t)=>{let n=J(e);if(v(n,`Identifier`)){let e=t?x(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&v(r,`ImportDeclaration`)&&r.source.value===`react`?Pn(e.declarationNode)??n.name:n.name}return v(n,`MemberExpression`)&&!n.computed&&v(n.property,`Identifier`)?n.property.name:null},Cp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,khe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,Ahe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,jhe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,wp=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,Mhe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,Nhe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,Tp=e=>`\`${e}\` re-runs on every render with no dependency array.`,Phe=e=>`\`${e}\` crashes without a function as its first argument.`,Fhe=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",Ihe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Ep=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,Lhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,Dp=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,Op=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,Rhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,zhe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,Bhe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,Vhe=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,Hhe=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}},Uhe=new Set([`===`,`!==`]),Whe=(e,t)=>{let n=e.declarationNode;if(!v(n,`VariableDeclarator`)||!v(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!v(i,`Identifier`))return null;let a=n.init?M(n.init):null;return!a||!D(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},Ghe=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=S(n.identifier),i=r.parent;if(!v(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||j(i)!==t)return null;let a=M(i.arguments[0]);return v(a,`ArrowFunctionExpression`)||v(a,`FunctionExpression`)||v(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},Khe=(e,t)=>{if(!v(e,`CallExpression`))return!1;let n=M(e.callee);if(!v(n,`MemberExpression`))return!1;let r=N(n),i=M(n.object);return!!(r===`is`&&v(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},kp=(e,t)=>{let n=M(e);return v(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},qhe=(e,t,n)=>{let r=M(e);if(v(t,`BinaryExpression`)&&Uhe.has(t.operator))return M(t.left)===r?kp(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:M(t.right)===r?kp(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!v(t,`CallExpression`)||!Khe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return v(i,`SpreadElement`)||v(a,`SpreadElement`)?null:M(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:M(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},Jhe=(e,t,n)=>{let r=e.parent;for(;r&&B(r,t);){let i=qhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Yhe=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!B(e,t))return!1;if(v(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(v(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!wt.has(e.type))return!1;a=e}return i===r},Ap=(e,t)=>{let n=new Set,r=M(e);for(;v(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Qr(e);if(!i||!v(M(i),`Identifier`))break;n.add(e.id),r=M(i)}return r},Xhe=(e,t,n)=>{let r=Ap(e,n),i=Ap(t,n);if(r===i)return!0;if(v(r,`Identifier`)&&v(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return v(r,`Literal`)&&v(i,`Literal`)?Object.is(r.value,i.value):!1},Zhe=e=>{let t=S(e).parent;if(!v(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(v(n,`ArrayExpression`)&&n.elements.length)},jp=e=>{if(v(e,`ReturnStatement`)||v(e,`ThrowStatement`))return!0;if(!v(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&jp(t))},Mp=(e,t)=>{if(!v(e,`IfStatement`)||e.alternate||!jp(e.consequent))return!1;let n=e.parent;if(!v(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&B(t,e))},Qhe=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(v(i,`IfStatement`)&&B(e,i.test)&&(B(t,i.consequent)||i.alternate&&B(t,i.alternate)||Mp(i,t))){let n=B(t,i.consequent);if(n===(!!(i.alternate&&B(t,i.alternate))||Mp(i,t)))return null;let a=Jhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Yhe(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},$he=(e,t,n)=>{if(!Zhe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=Whe(e,n);if(!r)return!1;let i=Ghe(r,t);if(!i)return!1;let a=e.references.filter(e=>B(e.identifier,t));if(a.length!==1)return!1;let o=S(a[0].identifier);if(v(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=Qhe(a[0].identifier,i.callExpression,t,n);return!!(s&&Xhe(s,i.writtenValue,n))},ege=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,tge=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,nge=(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=ege.exec(i);if(a&&t.test(a[1]??``)){n.add(e+2);continue}let o=tge.exec(i);o&&t.test(o[1]??``)&&n.add(e+1)}return n},rge=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}},ige=(e,t)=>{let n=nge(e,t);if(n.size===0)return null;let r=rge(e);return{suppressedLines:n,utf16NewlineOffsets:r.utf16,utf8NewlineOffsets:r.utf8}},Np=(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},Pp=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=ige(xne(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(Np(t,n.utf16NewlineOffsets))||n.suppressedLines.has(Np(t,n.utf8NewlineOffsets)):!1}}},Fp=Pp(`exhaustive-deps`),age=Fp.isSuppressedAt;Fp.clearCache;const oge=new Set([`useEventCallback`,`useStableCallback`,`useMemoizedFn`,`usePersistFn`,`useLatestCallback`,`useCallbackRef`,`useEvent`]),Ip=(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||!v(n,`VariableDeclarator`))return!1;let r=n.init;if(!r)return!1;let i=J(r);if(e.kind===`const`&&(v(i,`Literal`)&&(i.value===null||typeof i.value==`number`||typeof i.value==`string`||typeof i.value==`boolean`)||v(i,`TemplateLiteral`)&&it(i)!==null))return!0;if(!v(i,`CallExpression`))return!1;let a=Sp(i.callee,t);if(!a)return!1;if(a===`useRef`||a===`useEffectEvent`||oge.has(a))return!0;if(a===`useState`||a===`useReducer`||a===`useActionState`||a===`useTransition`){if(!v(n.id,`ArrayPattern`))return!1;let t=n.id.elements[1];if(!t)return!1;let r=v(t,`AssignmentPattern`)?t.left:t;return v(r,`Identifier`)&&e.bindingIdentifier===r}return!1},Lp=e=>{if(e.kind===`function`&&v(e.declarationNode,`FunctionDeclaration`))return e.declarationNode;let t=e.initializer?J(e.initializer):null;return t&&(v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`))?t:null},Rp=(e,t)=>{let n=e.initializer;return!!(n&&B(t,n))},sge=new Set([`useCallback`,`useMemo`]),cge=(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||!v(r,`VariableDeclarator`)||r.id!==e.bindingIdentifier||!r.init)return!1;let i=J(r.init);if(!v(i,`CallExpression`))return!1;let a=Sp(i.callee,t);if(!a||!sge.has(a))return!1;let o=i.arguments[1];if(!o||!E(o))return!1;let s=J(o);if(!v(s,`ArrayExpression`))return!1;n.add(e.id);let c=e=>{let r=J(e);if(v(r,`Literal`))return!0;if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?bp(i)?!0:Bp(i,t,n):!1},l=s.elements.every(e=>e!==null&&c(e));return l||n.delete(e.id),l},lge=(e,t)=>{for(let n of e.properties){let e=n;if(!v(e,`Property`))return null;if(e.computed)continue;let r=e.key;if((v(r,`Identifier`)?r.name:v(r,`Literal`)&&typeof r.value==`string`?r.value:null)===t)return J(e.value)}return null},zp=(e,t,n)=>{if(e.kind!==`const`||!t.startsWith(`${e.name}.`)||e.references.some(e=>e.flag!==`read`))return!1;let r=e.initializer?J(e.initializer):null;if(!r||!v(r,`ObjectExpression`))return!1;let i=t.slice(e.name.length+1).split(`.`),a=r;for(let e of i){if(!v(a,`ObjectExpression`))return!1;let t=lge(a,e);if(!t)return!1;a=t}return v(a,`CallExpression`)&&Sp(a.callee,n)===`useRef`},uge=(e,t,n)=>{if(n.has(e.id))return!0;let r=Lp(e);if(!r)return!1;n.add(e.id);for(let i of Vf(r,t)){let r=i.resolvedSymbol;if(r&&r.id!==e.id&&!bp(r)&&!Bp(r,t,n))return n.delete(e.id),!1}return!0},dge=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=x(e.bindingIdentifier,t);return n!==null&&n!==e&&n.kind===`import`},fge=e=>{let t=S(e);for(;t.parent;){let e=t.parent;if(v(e,`AssignmentExpression`))return e.left===t;if(v(e,`UpdateExpression`))return e.argument===t;if(v(e,`UnaryExpression`))return e.operator===`delete`&&e.argument===t;if(v(e,`ForInStatement`)||v(e,`ForOfStatement`))return e.left===t;if(v(e,`ArrayPattern`)&&e.elements.some(e=>e===t)||v(e,`ObjectPattern`)&&e.properties.some(e=>e===t)||v(e,`RestElement`)&&e.argument===t||v(e,`AssignmentPattern`)&&e.left===t||v(e,`Property`)&&e.value===t&&v(e.parent,`ObjectPattern`)){t=e;continue}return!1}return!1},pge=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=e.initializer?J(e.initializer):null;if(!v(n,`AssignmentExpression`)||n.operator!==`??=`)return!1;let r=Zl(J(n.left),t);return r?r.references.every(e=>{let t=S(e.identifier).parent;if(!v(t,`MemberExpression`)||J(t.object)!==e.identifier||N(t)!==`current`)return!1;let r=S(t),i=r.parent;return v(i,`AssignmentExpression`)&&i.left===r?i===n:!fge(r)}):!1},Bp=(e,t,n=new Set)=>Ip(e,t)||pge(e,t)||dge(e,t)||uge(e,t,n)||cge(e,t,n),Vp=(e,t)=>{let n=e.initializer?M(e.initializer):null;return!n||!v(n,`CallExpression`)?!1:D(n,`useEffectEvent`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0})},Hp=new Set([`ComponentClass`,`ComponentType`,`FC`,`FunctionComponent`]),mge=(e,t)=>{let r=Nl(e,t);return!!(r&&n(r)&&(v(r.declarationNode,`ImportDefaultSpecifier`)||v(r.declarationNode,`ImportNamespaceSpecifier`)))},Up=(e,t,r)=>{if(!e)return!1;if(v(e,`TSTypeAnnotation`))return Up(e.typeAnnotation,t,r);if(v(e,`TSIntersectionType`))return(e.types??[]).some(e=>Up(e,t,r));if(!v(e,`TSTypeReference`))return!1;let i=e.typeName;if(v(i,`TSQualifiedName`))return v(i.left,`Identifier`)&&v(i.right,`Identifier`)&&Hp.has(i.right.name)&&mge(i.left,t);if(!v(i,`Identifier`))return!1;let a=Nl(i,t);if(!a||r.has(a.id))return!1;if(n(a)){let e=Pn(a.declarationNode);return!!(e&&Hp.has(e))}return v(a.declarationNode,`TSTypeAliasDeclaration`)?(r.add(a.id),Up(a.declarationNode.typeAnnotation,t,r)):!1},Wp=(e,t)=>{let n=e.bindingIdentifier;return v(n,`Identifier`)&&Up(n.typeAnnotation,t,new Set)},Gp=new Set([`useEffect`,`useLayoutEffect`,`useCallback`,`useMemo`,`useImperativeHandle`,`useInsertionEffect`]),Kp=new Set([`useMemo`,`useCallback`]),qp=new Set([`useEffect`,`useLayoutEffect`,`useInsertionEffect`]),hge=new Set([`useEffect`,`useLayoutEffect`]),gge=new Set([`Array`,`ReadonlyArray`]),_ge=e=>{if(!e)return null;try{return new RegExp(e)}catch{return null}},vge=e=>{let t=e.callee;return v(t,`Identifier`)?t.name:v(t,`MemberExpression`)&&v(t.object,`Identifier`)&&v(t.property,`Identifier`)&&!t.computed?`${t.object.name}.${t.property.name}`:null},yge=e=>{if((v(e,`FunctionDeclaration`)||v(e,`FunctionExpression`))&&e.id)return e.id.name;let t=e.parent;for(;t&&v(t,`CallExpression`);){let e=vge(t);if(e&&nt.has(e))t=t.parent??null;else break}return t&&v(t,`VariableDeclarator`)&&v(t.id,`Identifier`)?t.id.name:null},Jp=e=>{let t=e.parent;for(;t;){if(v(t,`FunctionDeclaration`)||v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`)){if(yp(t))return t;let e=yge(t);if(e&&Cs(e))return t}t=t.parent??null}return null},bge=e=>+(e===`useImperativeHandle`),xge=e=>e===`useImperativeHandle`?2:1,Yp=e=>{if(!v(e,`ObjectPattern`))return null;let t=e.properties[0];if(!t||!v(t,`Property`))return null;let n=t.key,r=t.value,i=v(n,`Identifier`)?n.name:v(n,`Literal`)&&typeof n.value==`string`?n.value:null;if(!i)return null;let a=Yp(r);return a?`${i}.${a}`:i},Xp=e=>{let t=e.identifier;return v(t,`Identifier`)||v(t,`JSXIdentifier`)?t.name:``},Zp=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},Qp=e=>{let t=e.identifier,n=t.parent??null;if(n&&n.type===`ChainExpression`&&(n=n.parent??null),!n||!v(n,`MemberExpression`)||n.object!==t){if(n&&v(n,`VariableDeclarator`)&&n.init===t){let t=Yp(n.id),r=Xp(e);if(t&&r)return`${r}.${t}`}return Xp(e)}let r=n;for(;;){let e=r.parent;if(!e)break;let t=xp.has(e.type),n=t?e.parent:e,i=t?e:r;if(n&&v(n,`MemberExpression`)&&n.object===i){r=n;continue}break}let i=$p(r);if(i===null)return Xp(e);let a=r.parent;if(a&&v(a,`VariableDeclarator`)&&a.init===r){let e=Yp(a.id);if(e)return Zp(`${i}.${e}`)}let o=Zp(i);if(o!==i)return o;if(e.flag!==`read`){let e=i.lastIndexOf(`.`);if(e!==-1)return i.slice(0,e)}return i},Sge=e=>{let t=J(e);if(v(t,`Identifier`))return t.name;if(v(t,`MemberExpression`))return $p(t);if(v(t,`CallExpression`)&&(t.arguments?.length??0)===0){let e=J(t.callee);if(v(e,`Identifier`))return e.name;if(v(e,`MemberExpression`)&&!im(e))return $p(e)}return null},Cge=e=>{let t=S(e);for(;t.parent;){let e=t.parent;if((v(e,`IfStatement`)||v(e,`WhileStatement`)||v(e,`DoWhileStatement`)||v(e,`ConditionalExpression`))&&e.test===t)return!0;if(v(e,`UnaryExpression`)&&e.operator===`!`||v(e,`LogicalExpression`)){t=e;continue}return!1}return!1},wge=(e,t)=>{if(!e)return!1;let n=J(e);return v(n,`ArrayExpression`)?n.elements.some(e=>{if(!e)return!1;let n=J(e);return v(n,`Identifier`)&&n.name===t}):!1},$p=e=>{let t=J(e);if(v(t,`Identifier`))return t.name;if(v(t,`ThisExpression`))return`this`;if(v(t,`MemberExpression`)){let e=$p(t.object);if(e&&t.computed)return e;if(e&&!t.computed&&v(t.property,`Identifier`))return`${e}.${t.property.name}`}return null},Tge=(e,t)=>{let n=S(e.identifier),r=n.parent;if(!v(r,`CallExpression`)||r.callee===n)return null;let i=r.arguments.findIndex(e=>e===n),a=P(r.callee,t);if(i<0||r.arguments.slice(0,i).some(e=>v(e,`SpreadElement`))||!a||!A(a)||a.async||a.generator)return null;let o=a.params[i];if(!v(o,`Identifier`))return null;let s=t.symbolFor(o);if(!s||s.references.length===0)return null;let c=new Set;for(let t of s.references){let n=t.identifier.parent;if(t.flag!==`read`||!v(n,`MemberExpression`)||n.object!==t.identifier)return null;let r=N(n),i=S(n);if(!r||v(i.parent,`CallExpression`)&&i.parent.callee===i||ru(n))return null;c.add(`${Xp(e)}.${r}`)}return c},em=(e,t,n,r,i=!1,a)=>{let o=new Set,s=new Set,c=new Set,l=new Set,u=Jp(e),d=u?t.ownScopeFor(u):null;for(let u of Vf(e,t)){let f=u.resolvedSymbol;if(!f||Rp(f,e))continue;if(i&&$he(f,e,t)){s.add(f.name);continue}if(Bp(f,t)||mhe(f,t,a)){s.add(f.name);continue}if(bp(f)){c.add(f.name);continue}if(d&&!un(f.scope,d)){l.add(f.name);continue}let p=Qp(u);if(p&&!(p===f.name&&Cge(u.identifier)&&[...r??[]].some(e=>e.startsWith(`${f.name}.`)))){if(zp(f,p,t)){s.add(p);continue}if(p===f.name){if(n?.has(p)){o.add(p);continue}let e=Tge(u,t)??kge(u,f,t)??Mge(u,f,t)??sm(f,t);if(e){e.size===0&&s.add(p);for(let t of e)o.add(t);continue}}o.add(p)}}return{keys:o,stableCapturedNames:s,moduleScopeCapturedNames:c,outerFunctionCapturedNames:l}},tm=e=>v(e,`Literal`)||v(e,`TemplateLiteral`)&&it(e)!==null,Ege=e=>v(e,`Literal`)&&typeof e.value!=`string`,nm=(e,t)=>t===e||t.startsWith(`${e}.`),Dge=(e,t)=>{for(let n of t)if(n!==e&&e.startsWith(`${n}.`))return!0;return!1},rm=e=>{let t=J(e);return v(t,`Identifier`)?t:v(t,`MemberExpression`)?rm(t.object):null},im=e=>{let t=J(e);return v(t,`MemberExpression`)?t.computed?!0:im(t.object):!1},am=(e,t,n)=>{let r=new Set;for(let i of e){let e=om(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},om=(e,t,n)=>{let r=J(e);if(v(r,`Literal`)&&(r.value===null||typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`)||v(r,`TemplateLiteral`)&&it(r)!==null)return new Set;if(v(r,`Identifier`)){let e=t.symbolFor(r);if(!e)return null;if(bp(e)||Bp(e,t))return new Set;if(e.kind===`const`&&e.initializer&&v(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=om(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(v(r,`MemberExpression`)){if(im(r))return null;let e=$p(r),n=rm(r),i=n?t.symbolFor(n):null;return!e||!i?null:bp(i)||zp(i,e,t)||Bp(i,t)?new Set:new Set([e])}return v(r,`LogicalExpression`)?am([r.left,r.right],t,n):v(r,`ConditionalExpression`)?am([r.test,r.consequent,r.alternate],t,n):null},sm=(e,t)=>e.kind!==`const`||!e.initializer||!v(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?null:om(e.initializer,t,new Set([e.id])),cm=e=>{let t=J(e);return v(t,`Literal`)||v(t,`Identifier`)?!0:v(t,`MemberExpression`)?cm(t.object)&&(!t.computed||cm(t.property)):v(t,`BinaryExpression`)||v(t,`LogicalExpression`)?cm(t.left)&&cm(t.right):v(t,`UnaryExpression`)?t.operator!==`delete`&&cm(t.argument):v(t,`ConditionalExpression`)?cm(t.test)&&cm(t.consequent)&&cm(t.alternate):v(t,`TemplateLiteral`)?t.expressions.every(e=>cm(e)):!1},lm=e=>v(e,`BlockStatement`)?e.body.every(e=>lm(e)):v(e,`ReturnStatement`)?!e.argument||cm(e.argument):v(e,`IfStatement`)?cm(e.test)&&lm(e.consequent)&&(!e.alternate||lm(e.alternate)):!1,Oge=e=>!v(e,`FunctionDeclaration`)&&!v(e,`FunctionExpression`)&&!v(e,`ArrowFunctionExpression`)||e.async||e.generator?!1:v(e.body,`BlockStatement`)?lm(e.body):cm(e.body),kge=(e,t,n)=>{if(t.references.some(e=>e.flag!==`read`))return null;let r=S(e.identifier),i=r.parent;if(!v(i,`CallExpression`)||i.callee!==r)return null;let a=Lp(t);if(!a||!Oge(a))return null;let o=new Set;for(let e of Vf(a,n)){let r=e.resolvedSymbol;if(!r||r.id===t.id||bp(r)||Bp(r,n))continue;let i=Qp(e);if(!i)return null;if(i===r.name){let e=sm(r,n);if(e){for(let t of e)o.add(t);continue}}o.add(i)}return o.size>0?o:null},um=(e,t,n)=>{let r=new Set;for(let i of e){let e=dm(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},dm=(e,t,n)=>{let r=J(e);if(v(r,`Literal`))return new Set;if(v(r,`Identifier`)){if(t.isGlobalReference(r))return new Set;let e=t.symbolFor(r);if(!e)return null;if(bp(e)||Bp(e,t))return new Set;if(e.kind===`const`&&e.initializer&&v(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=dm(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(v(r,`MemberExpression`)){if(im(r))return null;let e=$p(r),n=rm(r),i=n?t.symbolFor(n):null;return!e||!i?null:bp(i)||Bp(i,t)?new Set:new Set([e])}if(v(r,`BinaryExpression`)||v(r,`LogicalExpression`))return um([r.left,r.right],t,n);if(v(r,`UnaryExpression`)&&r.operator!==`delete`)return dm(r.argument,t,n);if(v(r,`ConditionalExpression`))return um([r.test,r.consequent,r.alternate],t,n);if(v(r,`TemplateLiteral`))return um(r.expressions,t,n);if(v(r,`NewExpression`)){let e=J(r.callee);if(!v(e,`Identifier`)||e.name!==`Error`||!t.isGlobalReference(e))return null;let i=[];for(let e of r.arguments){if(!E(e)||v(e,`SpreadElement`))return null;i.push(e)}return um(i,t,n)}return null},Age=(e,t,n)=>{let r=new Set,i=e;for(;i.parent&&i.parent!==t;){let e=i.parent;if(v(e,`IfStatement`)){if(e.test===i)return null;let t=dm(e.test,n,new Set);if(!t)return null;for(let e of t)r.add(e)}else if(!v(e,`ExpressionStatement`)&&!v(e,`BlockStatement`))return null;i=e}return i.parent===t?r:null},jge=(e,t)=>{let n=S(e),r=n.parent;return v(r,`CallExpression`)&&r.arguments.some(e=>e===n)&&D(r,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})},Mge=(e,t,n)=>{if(t.kind!==`let`||!v(t.declarationNode,`VariableDeclarator`)||t.declarationNode.id!==t.bindingIdentifier)return null;let r=j(t.bindingIdentifier);if(!r)return null;let i=j(e.identifier);if(!i||i===r)return null;let a=new Set;if(t.initializer){let e=dm(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(j(e.identifier)!==i&&!jge(e.identifier,n))return null;continue}if(e.flag!==`write`)return null;let s=S(e.identifier),c=s.parent;if(!v(c,`AssignmentExpression`)||c.operator!==`=`||c.left!==s||j(s)!==r)return null;let l=dm(c.right,n,new Set([t.id])),u=Age(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},Nge=(e,t)=>{let n=fm(e,t),r=n?.initializer?J(n.initializer):null;return!!(r&&v(r,`CallExpression`)&&Sp(r.callee,t)===`useCallback`)},Pge=(e,t)=>{let n=rm(e);if(!n)return!1;let r=t.symbolFor(n);return!r||bp(r)?!1:!Nge(e,t)},fm=(e,t)=>{let n=rm(e);return n?t.symbolFor(n):null},Fge=e=>{let t=J(e);return v(t,`CallExpression`)&&(t.arguments?.length??0)===0?t.callee:e},pm=e=>v(e,`Literal`)?!!e.regex:!1,Ige=(e,t,n)=>{let r=J(e),i=J(t);if(!v(r,`Identifier`)||!v(i,`Identifier`))return!1;let a=n.symbolFor(r),o=n.symbolFor(i);return!!(a&&o&&a.id===o.id)},mm=(e,t)=>{let n=J(e);return v(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)||v(n,`UnaryExpression`)&&n.operator===`void`},Lge=(e,t)=>{let n=e.bindingIdentifier.parent?.parent;if(v(n,`ObjectPattern`)){let e=n.typeAnnotation;if(e&&v(e,`TSTypeAnnotation`))return e.typeAnnotation}let r=j(e.bindingIdentifier);if(!r)return null;let i=S(r),a=i.parent;if(!v(a,`VariableDeclarator`)||a.init!==i||!v(a.id,`Identifier`))return null;let o=t.symbolFor(a.id);if(!o||!Wp(o,t))return null;let s=a.id.typeAnnotation;if(!s||!v(s,`TSTypeAnnotation`))return null;let c=s.typeAnnotation;return v(c,`TSTypeReference`)?c.typeArguments?.params[0]??null:null},hm=(e,t,n,r=new Set)=>{if(v(e,`TSTypeAnnotation`))return hm(e.typeAnnotation,t,n,r);if(v(e,`TSIntersectionType`)){for(let i of e.types){let e=hm(i,t,n,r);if(e)return e}return null}if(v(e,`TSTypeAliasDeclaration`))return hm(e.typeAnnotation,t,n,r);let i=v(e,`TSTypeLiteral`)?e.members:v(e,`TSInterfaceDeclaration`)?e.body.body:null;if(i){for(let e of i)if(!(!v(e,`TSPropertySignature`)||rs(e.key)!==t))return e.typeAnnotation?.typeAnnotation??null;return null}if(!v(e,`TSTypeReference`)||!v(e.typeName,`Identifier`)||r.has(e.typeName.name))return null;let a=new Set(r).add(e.typeName.name);for(let r of vp(n,e.typeName.name)){let e=hm(r,t,n,a);if(e)return e}return null},gm=(e,t,n=new Set)=>{if(v(e,`TSTypeAnnotation`))return gm(e.typeAnnotation,t,n);if(v(e,`TSNullKeyword`)||v(e,`TSAnyKeyword`)||v(e,`TSUnknownKeyword`))return!1;if(v(e,`TSUnionType`))return e.types.every(e=>gm(e,t,n));if(!v(e,`TSTypeReference`))return!0;if(!v(e.typeName,`Identifier`)||n.has(e.typeName.name))return!1;let r=vp(t,e.typeName.name);if(r.length===0)return dt(t,e.typeName.name)===null&&gge.has(e.typeName.name);let i=new Set(n).add(e.typeName.name);return r.every(e=>v(e,`TSTypeAliasDeclaration`)?gm(e.typeAnnotation,t,i):v(e,`TSInterfaceDeclaration`))},Rge=(e,t)=>{let n=J(e);if(!v(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=is(r);if(i)return gm(i,n);let a=r.bindingIdentifier.parent;if(!v(a,`Property`))return!1;let o=rs(a.key),s=Lge(r,t);if(!o||!s)return!1;let c=hm(s,o,n);return!!(c&&gm(c,n))},_m=(e,t,n=new Set)=>{let r=J(e);if(v(r,`ArrayExpression`)||v(r,`ObjectExpression`)||v(r,`ClassExpression`)||v(r,`NewExpression`)||v(r,`TemplateLiteral`))return!0;if(v(r,`Literal`))return r.value!==null;if(v(r,`LogicalExpression`)&&r.operator===`??`)return _m(r.right,t,n);if(v(r,`ConditionalExpression`))return _m(r.consequent,t,n)&&_m(r.alternate,t,n);if(!v(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 _m(i.initializer,t,a)},zge=(e,t)=>{let n=J(e);if(!v(n,`Identifier`))return null;let r=t.symbolFor(n),i=r?.declarationNode;if(!r||!i||!v(i,`VariableDeclarator`)||!v(i.id,`ArrayPattern`)||i.id.elements[0]!==r.bindingIdentifier||!v(i.init,`CallExpression`)||!D(i.init,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let a=i.init.arguments[0];if(!E(a)||v(a,`SpreadElement`))return null;let o=J(a);return v(o,`ArrowFunctionExpression`)&&!o.async&&!v(o.body,`BlockStatement`)?o.body:a},vm=(e,t)=>{let n=J(e);if(!v(n,`ConditionalExpression`))return!1;let r=J(n.test);if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r),a=i?.initializer?J(i.initializer):null;if(i?.kind!==`const`||!a||!v(a,`BinaryExpression`)||a.operator!==`!==`&&a.operator!==`!=`)return!1;let o=null;mm(a.right,t)?o=a.left:mm(a.left,t)&&(o=a.right);let s=J(n.consequent),c=v(s,`LogicalExpression`)&&s.operator===`??`?s.left:s;if(!o||!Ige(c,o,t))return!1;let l=zge(n.alternate,t);return!!(l&&_m(l,t)&&Rge(o,t))},ym=(e,t,n=!1)=>{if(!e)return!1;let r=J(e);return pm(r)?!0:v(r,`ConditionalExpression`)?vm(r,t)?!1:ym(r.consequent,t,!0)||ym(r.alternate,t,!0):v(r,`LogicalExpression`)?r.operator===`??`&&vm(r.left,t)?ym(r.left,t,!0):ym(r.left,t,!0)||ym(r.right,t,!0):v(r,`ObjectExpression`)||v(r,`ArrayExpression`)||n&&(v(r,`ArrowFunctionExpression`)||v(r,`FunctionExpression`))||v(r,`ClassExpression`)||v(r,`ClassDeclaration`)||v(r,`JSXElement`)||v(r,`JSXFragment`)||v(r,`AssignmentExpression`)||v(r,`NewExpression`)},bm=(e,t,n=new Set)=>{let r=J(e);if(ym(r,t))return!0;if(v(r,`ConditionalExpression`))return bm(r.consequent,t,n)||bm(r.alternate,t,n);if(v(r,`LogicalExpression`))return bm(r.left,t,n)||bm(r.right,t,n);if(!v(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),bm(i.initializer,t,n))},Bge=(e,t,n)=>{if(!Pge(t,n))return!1;if(qp.has(e))return!0;if(e!==`useMemo`)return!1;let r=fm(t,n);return!!(r&&!Bp(r,n)&&!ym(r.initializer,n))},Vge=e=>v(e.declarationNode,`VariableDeclarator`)&&v(e.declarationNode.id,`Identifier`)||v(e.declarationNode,`ClassDeclaration`),Hge=e=>Lp(e)!==null,Uge=new Set([`Array`,`Date`,`Error`,`Map`,`Object`,`RegExp`,`Set`,`WeakMap`,`WeakSet`]),xm=e=>{if(!e)return null;let t=v(e,`AssignmentPattern`)?e.left:e;return v(t,`Identifier`)?t:null},Wge=(e,t)=>{let n=new Set,r=t.symbolFor(e);for(;r?.kind===`const`&&v(r.declarationNode,`VariableDeclarator`)&&r.declarationNode.id===r.bindingIdentifier&&r.initializer;){if(n.has(r.id))return null;n.add(r.id);let e=J(r.initializer);if(!v(e,`Identifier`))return r;r=t.symbolFor(e)}return r},Sm=(e,t)=>{let n=Wge(e,t);if(!n||!v(n.declarationNode,`VariableDeclarator`))return null;let r=n.declarationNode;if(!v(r.id,`ArrayPattern`))return null;let i=r.id.elements?.[1],a=E(i)?xm(i):null;if(!a||a!==n.bindingIdentifier)return null;let o=r.init?J(r.init):null;if(!o||!v(o,`CallExpression`)||!D(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let s=r.id.elements?.[0],c=E(s)?xm(s):null;return{setterSymbol:n,stateSymbol:c?t.symbolFor(c):null}},Cm=(e,t,n,r=new Set)=>{if(!t)return!1;let i=J(e);if(v(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&&!bp(a)&&!r.has(a.id)){let e=new Set(r);return e.add(a.id),Cm(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)&&Cm(e,t,n)))return!0}else if(E(r)&&Cm(r,t,n))return!0}return!1},wm=(e,t,n=new Set)=>{let r=J(e);if(v(r,`ObjectExpression`)||v(r,`ArrayExpression`)||v(r,`JSXElement`)||v(r,`JSXFragment`)||pm(r))return!0;if(v(r,`SequenceExpression`)){let e=r.expressions.at(-1);return!!(e&&wm(e,t))}if(v(r,`ConditionalExpression`))return wm(r.consequent,t,n)&&wm(r.alternate,t,n);if(v(r,`LogicalExpression`))return wm(r.left,t,n)&&wm(r.right,t,n);if(v(r,`CallExpression`)){let e=J(r.callee);return v(e,`Identifier`)&&t.isGlobalReference(e)&&(e.name===`Array`||e.name===`Object`)&&(e.name===`Array`||r.arguments.length===0)}if(v(r,`NewExpression`)){let e=J(r.callee);return v(e,`Identifier`)&&t.isGlobalReference(e)&&Uge.has(e.name)&&(e.name!==`Object`||r.arguments.length===0)}if(!v(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||bp(i)||n.has(i.id))return!1;let a=new Set(n);return a.add(i.id),wm(i.initializer,t,a)},Gge=e=>{let t=J(e);return v(t,`Literal`)&&(typeof t.value==`number`&&t.value!==0||typeof t.value==`bigint`&&t.value!==0n||typeof t.value==`string`&&t.value.length>0)},Tm=(e,t,n)=>{let r=J(e);if(wm(r,n))return!0;if(v(r,`ConditionalExpression`)){let e=Tm(r.consequent,t,n),i=Tm(r.alternate,t,n);return Cm(r.test,t,n)?e&&i:e||i}return Cm(r,t,n)?v(r,`UnaryExpression`)?r.operator===`!`:v(r,`UpdateExpression`)?!0:v(r,`BinaryExpression`)?(r.operator===`+`||r.operator===`-`)&&Cm(r.left,t,n)&&Gge(r.right):!1:!1},Em=(e,t,n)=>{let r=J(e);if(!v(r,`ConditionalExpression`))return!1;let i=J(r.test);if(!v(i,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(i.operator))return!1;let a=e=>{let r=J(e);return v(r,`Identifier`)&&n.symbolFor(r)?.id===t?.id},o=null;if(a(i.left)&&(o=i.right),a(i.right)&&(o=i.left),!o||!bm(o,n))return!1;let s=e=>{let t=J(e),r=J(o);return v(t,`Identifier`)?v(r,`Identifier`)&&n.symbolFor(t)?.id===n.symbolFor(r)?.id:v(t,`Literal`)&&v(r,`Literal`)&&t.value===r.value};return i.operator===`===`||i.operator===`==`?a(r.consequent)&&s(r.alternate):s(r.consequent)&&a(r.alternate)},Kge=(e,t)=>{let n=J(e);if(!v(n,`ArrowFunctionExpression`)&&!v(n,`FunctionExpression`))return!1;let r=n.params?.[0];if(!r||!v(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!v(n.body,`BlockStatement`))return Em(n.body,i,t)||Tm(n.body,i,t);if(n.body.body.length!==1)return!1;let a=n.body.body[0];return!v(a,`ReturnStatement`)||!E(a.argument)?!1:Em(a.argument,i,t)||Tm(a.argument,i,t)},qge=(e,t)=>{let n=e.parent;if(!n||!v(n,`CallExpression`)||n.callee!==e)return!1;let r=Sm(e,t),i=n.arguments?.[0];return!r||!i||!E(i)?!1:Kge(i,t)?!0:Tm(i,r.stateSymbol,t)},Jge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(v(i,`FunctionDeclaration`)||v(i,`FunctionExpression`)||v(i,`ArrowFunctionExpression`)))return;if(v(i,`Identifier`)){let e=Sm(i,t);if(e&&qge(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},Yge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(v(i,`FunctionDeclaration`)||v(i,`FunctionExpression`)||v(i,`ArrowFunctionExpression`)))return;if(v(i,`Identifier`)){let e=Sm(i,t);if(e){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},Xge=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set,a=e=>{if(v(e,`AssignmentExpression`)&&v(e.left,`Identifier`)){let a=t.symbolFor(e.left);a&&!i.has(a.name)&&!bp(a)&&!un(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},Dm=e=>{let t=$p(e);if(!t)return null;let n=t.indexOf(`.current`);return n===-1?null:t.slice(0,n+8)},Zge=(e,t)=>{let n=null,r=t=>{if(n||t!==e&&(v(t,`FunctionExpression`)||v(t,`ArrowFunctionExpression`)))return;if(v(t,`ReturnStatement`)){let e=t.argument;if(e&&(v(e,`FunctionExpression`)||v(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(v(n,`MemberExpression`)){let r=Dm(n);if(r){let a=rm(n),o=a?t.symbolFor(a):null,s=t.ownScopeFor(e)??t.scopeFor(e);if(!o||!un(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},Qge=e=>{if(!e)return!1;for(let t of e.references){let e=t.identifier.parent;if(!e||!v(e,`MemberExpression`)||e.object!==t.identifier||Dm(e)===null)continue;let n=e.parent;if(n&&v(n,`AssignmentExpression`)&&n.left===e||n&&v(n,`UpdateExpression`)&&n.argument===e)return!0}return!1},$ge=(e,t)=>{if(!e)return!1;let n=e.initializer?J(e.initializer):null;if(!n||!v(n,`CallExpression`)||Sp(n.callee,t)!==`useRef`)return!1;let r=n.arguments[0];if(!r||!E(r))return!1;let i=J(r);return!(v(i,`Literal`)&&i.value===null||v(i,`Identifier`)&&i.name===`undefined`)},e_e=(e,t)=>{let n=!1,r=i=>{if(n||i!==e&&(v(i,`FunctionExpression`)||v(i,`ArrowFunctionExpression`)))return;if(v(i,`AssignmentExpression`)&&Dm(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},t_e=(e,t,n)=>{let r=rm(e);if(!r)return!1;let i=n.symbolFor(r);if(!i||bp(i))return!1;let a=Jp(t),o=a?n.ownScopeFor(a):null;return!!(o&&!un(i.scope,o))},n_e=(e,t,n)=>{let r=Vf(e,n).find(e=>e.resolvedSymbol?.name===t)?.resolvedSymbol??null;if(!r)return!1;let i=!1;return s(e,e=>{if(i)return!1;if(v(e,`CallExpression`)){let a=J(e.callee);if(v(a,`MemberExpression`)){let e=J(a.object),o=!1;for(;e&&v(e,`MemberExpression`);){if(v(e.property,`Identifier`)&&e.property.name===`current`){o=!0;break}e=J(e.object)}if(!o&&e&&v(e,`Identifier`)&&e.name===t&&n.symbolFor(e)===r)return i=!0,!1}}}),i},r_e=(e,t,n,r,i)=>{let a=[...e].filter(e=>e.startsWith(`props.`));if(a.length<2||t.has(`props`))return;let o=a.every(e=>[...t].some(t=>nm(t,e)));i&&o||n_e(n,`props`,r)&&e.add(`props`)},Om=C({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