oxlint-plugin-react-doctor 0.9.14-dev.83466a8 → 0.9.14-dev.8a950f0

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Bi as f,Bn as p,Br as m,Bt as h,C as g,Ca as _,Ci as v,Cn as ee,Cr as te,Ct as ne,D as re,Da as ie,Di as ae,Dn as oe,Dr as se,Dt as ce,E as le,Ea as ue,Ei as de,En as fe,Er as pe,Et as me,F as he,Fi as eee,Fn as ge,Fr as tee,Ft as nee,G as ree,Gi as iee,Gn as _e,Gr as ve,Gt as aee,H as oee,Hi as see,Hn as ye,Hr as be,Ht as cee,I as lee,In as xe,Ir as Se,It as uee,J as dee,Ji as Ce,Jn as we,Jr as Te,Jt as Ee,K as De,Ki as fee,Kn as Oe,Kr as ke,Kt as pee,L as mee,Ln as Ae,Lr as je,Lt as hee,M as Me,Ma as gee,Mi as _ee,Mn as Ne,Mr as vee,Mt as yee,N as Pe,Na as bee,Ni as xee,Nn as Fe,Nr as Ie,Nt as See,O as Cee,Oa as Le,Oi as Re,On as ze,Or as Be,Ot as wee,P as Ve,Pi as Tee,Pn as He,Pr as Ue,Pt as Eee,Q as We,Qi as Ge,Qn as Ke,Qr as qe,Qt as Je,R as Ye,Rn as Xe,Rr as Ze,Rt as Dee,S as Qe,Sa as $e,Si as Oee,Sn as et,Sr as tt,St as kee,T as Aee,Ta as jee,Ti as Mee,Tn as nt,Tr as Nee,Tt as Pee,U as Fee,Ui as Iee,Un as rt,Ur as Lee,Ut as Ree,V as it,Vi as zee,Vn as at,Vr as Bee,Vt as ot,W as Vee,Wi as Hee,Wn as st,Wr as ct,Wt as y,X as lt,Xi as Uee,Xn as b,Xr as ut,Xt as dt,Y as ft,Yi as pt,Yn as x,Yr as Wee,Yt as mt,Z as Gee,Zi as Kee,Zn as S,Zr as qee,Zt as ht,_ as Jee,_a as Yee,_i as Xee,_n as gt,_r as Zee,_t as Qee,a as $ee,aa as C,ai as ete,an as tte,ar as w,at as nte,b as rte,ba as _t,bi as vt,bn as ite,br as yt,bt as ate,c as ote,ca as ste,ci as bt,cn as xt,cr as cte,ct as St,d as Ct,da as lte,di as T,dn as wt,dr as Tt,dt as Et,ea as Dt,ei as Ot,en as ute,er as kt,et as At,f as jt,fa as dte,fi as fte,fn as E,fr as pte,ft as mte,g as Mt,ga as hte,gi as Nt,gn as Pt,gr as Ft,gt as gte,h as It,ha as Lt,hi as Rt,hn as zt,hr as _te,ht as vte,i as yte,ia as D,ii as O,in as bte,ir as k,it as Bt,j as Vt,ja as xte,ji as Ht,jn as Ut,jr as Ste,jt as Cte,k as wte,ka as Tte,ki as Wt,kn as Gt,kr as Kt,kt as Ete,l as qt,la as Dte,li as Ote,ln as kte,lr as Ate,lt as Jt,m as Yt,ma as Xt,mi as Zt,mn as A,mr as jte,mt as Mte,n as Nte,na as Qt,ni as Pte,nn as $t,nr as j,nt as en,o as Fte,oa as M,oi as Ite,on as Lte,or as tn,ot as nn,p as rn,pa as Rte,pi as an,pn as on,pr as zte,pt as sn,q as cn,qi as Bte,qn as ln,qr as un,qt as dn,r as Vte,ra as fn,ri as Hte,rn as pn,rr as mn,rt as hn,s as gn,sa as Ute,si as Wte,sn as Gte,sr as _n,st as Kte,t as qte,ta as vn,ti as Jte,tn as Yte,tr as yn,tt as bn,u as xn,ua as Xte,ui as Sn,un as Zte,ur as Cn,ut as Qte,v as $te,va as ene,vi as wn,vn as tne,vr as nne,vt as rne,w as Tn,wa as ine,wi as En,wn as Dn,wr as ane,wt as one,x as On,xa as sne,xi as N,xn as kn,xr as An,xt as cne,y as jn,ya as Mn,yi as Nn,yn as Pn,yr as Fn,yt as lne,z as In,zi as une,zn as Ln,zr as dne,zt as fne}from"./capability-43d6SuoY.js";import{visitorKeys as pne}from"oxc-parser";import*as Rn from"node:fs";import{readFileSync as mne}from"node:fs";import*as zn from"node:path";import{analyze as hne}from"eslint-scope";import{Features as gne,transform as Bn}from"lightningcss";import{visit as Vn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as _ne}from"@shaderfrog/glsl-parser/index.js";const vne=Symbol.for(`react-doctor.reset-filesystem-caches`),Hn=e=>y({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>pn}),Un=Hn({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.`}),Wn=e=>!D(e,`CallExpression`)&&!D(e,`NewExpression`)?null:D(e.callee,`Identifier`)?e.callee.name:D(e.callee,`MemberExpression`)&&D(e.callee.property,`Identifier`)?e.callee.property.name:null,Gn=(e,t)=>{if(!D(e,`CallExpression`)&&!D(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return D(n,`ArrowFunctionExpression`)||D(n,`FunctionExpression`)?n:t?c(n,t):null},Kn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=N(r),D(r,`MemberExpression`)){r=r.object;continue}if(n&&D(r,`CallExpression`)){if(!D(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return D(r,`Identifier`)?r:null},qn=(e,t)=>Kn(e,t)?.name??null,Jn=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=Wn(e);return n?typeof t==`string`?n===t:t.has(n):!1},yne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},Yn=(e,t,n)=>j(e,t,n,yne),bne=new Set([`useCallback`,`useEffectEvent`]),xne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),Sne=/^use\w*(?:Throttle|Debounce)/i,Cne=e=>{let t=Wn(e);return t!==null&&Sne.test(t)},wne=(e,t)=>{if(!Yn(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return D(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Tne=(e,t)=>D(e,`CallExpression`)?Yn(e,bne,t)||Jn(e,xne)||wne(e,t)||Cne(e):D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&e.property.name===`current`,Ene=(e,t,n)=>{let r=A(e,t);return!!(r?.initializer&&Yn(r.initializer,`useRef`,n))},Xn=y({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(!Yn(t,Tt,e.scopes)||(t.arguments?.length??0)<2)return;let n=Gn(t);if(!n||!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return;let r=t.arguments[1];if(!D(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)D(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(T(n.body,e=>{if(!D(e,`CallExpression`)||!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)||!Ie.has(e.callee.property.name))return;let t=qn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];D(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=A(t,a);s?.initializer&&Tne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!Ene(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),Zn=e=>{let t=e.value;return t&&D(t,`Literal`)&&typeof t.value==`string`?t.value:null},P=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!D(t,`JSXAttribute`))continue;let e=Pt(t.name);if(e&&e.toLowerCase()===n)return t}},Qn=Object.freeze({}),$n=new WeakMap,Dne=e=>{if(!e)return Qn;let t=$n.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:Qn;return $n.set(e,r),r},One=(e,t)=>{let n=E(e);if(t.polymorphicPropName){let n=P(e.attributes,t.polymorphicPropName);if(n){let e=Zn(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},er=new WeakMap,tr=(e,t)=>{let n=er.get(e);if(n&&n.settings===t)return n.elementType;let r=One(e,Dne(t));return er.set(e,{settings:t,elementType:r}),r},nr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},F=e=>e.some(e=>D(e,`JSXSpreadAttribute`)),rr=e=>{if(!e)return null;let t=N(e);return D(t,`Literal`)&&typeof t.value==`string`?t.value:D(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},I=e=>{if(!D(e,`JSXAttribute`))return null;let t=Zn(e);if(t!==null)return t;let n=e.value;if(n&&D(n,`JSXExpressionContainer`)){let e=n.expression;if(D(e,`Literal`)&&typeof e.value==`string`)return e.value;if(D(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},ir=e=>e.attribute?I(e.attribute):rr(e.expression),kne=e=>{let t=e.expression??e.attribute?.value;return t?N(D(t,`JSXExpressionContainer`)?t.expression:t):null},ar=(e,t)=>{if(tr(e,t).toLowerCase()===`input`&&ir(qt(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=qt(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=ir(n);if(e!==null)return e.length>0;let t=kne(n);if(D(t,`Literal`)&&t.value)return!0}let r=qt(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=ir(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=kne(r);return D(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},or=e=>{if(D(e,`JSXIdentifier`))return e.name;if(D(e,`JSXMemberExpression`)){let t=or(e.object);return t?`${t}.${e.property.name}`:null}return null},Ane=[`next/og`,`@vercel/og`,`satori`],jne=new Set([`next/og`,`@vercel/og`]),sr=e=>{let t=e.parent;for(;t;){if(D(t,`ImportDeclaration`))return t;if(D(t,`Program`))return null;t=t.parent}return null},cr=e=>typeof e.source.value==`string`?e.source.value:null,Mne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!D(r,`ImportSpecifier`))return!1;let i=sr(r),a=i?cr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return D(o,`Identifier`)&&o.name===t||D(o,`Literal`)&&o.value===t},Nne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=sr(t);if(!n||cr(n)!==`satori`)return!1;if(D(t,`ImportDefaultSpecifier`))return!0;if(!D(t,`ImportSpecifier`))return!1;let r=t.imported;return D(r,`Identifier`)&&r.name===`satori`||D(r,`Literal`)&&r.value===`satori`},lr=(e,t)=>{if(!D(e,`CallExpression`)&&!D(e,`NewExpression`))return!1;let n=N(e.callee);if(D(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(Mne(e,`ImageResponse`,jne)||Nne(e)))}if(!D(n,`MemberExpression`)||O(n)!==`ImageResponse`||!D(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(!D(i,`ImportNamespaceSpecifier`))return!1;let a=sr(i),o=a?cr(a):null;return!!(o&&jne.has(o))},Pne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${pt}$`),ur=e=>e?Pne.test(zn.basename(e)):!1,Fne=new WeakMap,Ine=e=>e?ur(kt(e)):!1,Lne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},dr=(e,t,n,r,i)=>{if(!C(e))return;if(D(e,`ArrowFunctionExpression`)){let a=N(e.body);if(!D(a,`BlockStatement`)){fr(a,t,n,r,i);return}}let a=e.body;D(a,`BlockStatement`)&&T(a,e=>{if(e!==a&&C(e))return!1;D(e,`ReturnStatement`)&&e.argument&&fr(N(e.argument),t,n,r,i)})},Rne=(e,t,n)=>{let r=!1;return T(e,e=>{if(r)return!1;if(D(e,`JSXOpeningElement`)&&!n.has(e)&&or(e.name)===t)return r=!0,!1}),r},zne=(e,t,n,r,i)=>{let a=or(n.name);if(!a||a.includes(`.`)||!Lne(a)||i.has(a)||Rne(e,a,r))return;let o=A(n,a);o?.initializer&&(i.add(a),fr(N(o.initializer),e,t,r,i))},Bne=(e,t)=>{let n=e.parent;for(;n;){if(lr(n,t))return!0;n=n.parent??null}return!1},Vne=(e,t,n)=>{let r=!1;return T(e,e=>{if(r)return!1;if(D(e,`CallExpression`)&&D(e.callee,`Identifier`)&&e.callee.name===t&&!Bne(e,n))return r=!0,!1}),r},Hne=(e,t,n,r,i)=>{T(e,e=>{D(e,`JSXOpeningElement`)&&(r.add(e),zne(t,n,e,r,i))})},fr=(e,t,n,r,i)=>{let a=N(e);if(D(a,`JSXElement`)||D(a,`JSXFragment`)){Hne(a,t,n,r,i);return}if(C(a)){dr(a,t,n,r,i);return}if(D(a,`ConditionalExpression`)){fr(a.consequent,t,n,r,i),fr(a.alternate,t,n,r,i);return}if(D(a,`LogicalExpression`)){fr(a.left,t,n,r,i),fr(a.right,t,n,r,i);return}if(D(a,`CallExpression`)){let e=a.callee;if(C(e)){dr(e,t,n,r,i);return}if(!D(e,`Identifier`)||i.has(e.name)||Rne(t,e.name,r)||Vne(t,e.name,n))return;let o=A(e,e.name);if(!o?.initializer||!C(N(o.initializer)))return;i.add(e.name),dr(N(o.initializer),t,n,r,i);return}if(D(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=A(a,a.name);if(!e?.initializer)return;fr(N(e.initializer),t,n,r,i)}},Une=(e,t)=>{let n=Fne.get(e);if(n)return n;let r=new WeakSet;return _e(e,Ane)&&T(e,n=>{if(!(!D(n,`CallExpression`)&&!D(n,`NewExpression`))&&lr(n,t))for(let i of n.arguments)fr(i,e,t,r,new Set)}),Fne.set(e,r),r},pr=(e,t)=>{if(Ine(e.filename))return!0;if(!t)return!1;let n=x(t);if(!n)return!1;let r=Une(n,e.scopes);return r.has(t)?!0:D(t,`JSXElement`)?r.has(t.openingElement):!1},mr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],hr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),gr=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),_r=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),vr=new Set([`add`,`clear`,`delete`,`set`]),yr=new Set([`map`,`filter`,`forEach`,`flatMap`]),br=new Set([`then`,`catch`,`finally`]),Wne=new Set([`values`,`keys`,`entries`]),Gne=/\.browser\.[cm]?[jt]sx?$/,Kne=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(`.`)),qne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],Jne=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(`.`)),Yne=[`findBy`,`findAllBy`],xr=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(`.`)),Sr=e=>typeof e!=`string`||e.length===0?!1:Kne.has(e)?!0:qne.some(t=>e.startsWith(t)),Xne=new Set([`it`,`test`]),Zne=new Set([`concurrent`,`only`,`skip`]),Qne=new Set([`doMock`,`mock`,`unstable_mockModule`]),$ne=new Set([`jest`,`vi`]),ere=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),tre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),nre=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__/`)},rre=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=ye(e,e.name);return!!(r&&ere.has(r.source)&&r.exportedName&&t.has(r.exportedName))},ire=(e,t,n)=>nre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),are=(e,t,n)=>rre(e,t,n)||ire(e,t,n),Cr=e=>{let t=N(e);if(D(t,`Identifier`))return t;if(D(t,`MemberExpression`)){let e=O(t);return!e||!Zne.has(e)?null:Cr(t.object)}let n=D(t,`CallExpression`)?N(t.callee):D(t,`TaggedTemplateExpression`)?N(t.tag):null;return!D(n,`MemberExpression`)||O(n)!==`each`?null:Cr(n.object)},ore=(e,t)=>{let n=S(e),r=n.parent;if(!r||!D(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Cr(r.callee);return!!(i&&are(i,Xne,t))},sre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!D(r,`Literal`)||typeof r.value!=`string`)return!1;let i=N(e.callee);if(!D(i,`MemberExpression`))return!1;let a=O(i);if(!a||!Qne.has(a))return!1;let o=N(i.object);return D(o,`Identifier`)&&are(o,$ne,n)},cre=(e,t)=>{let n=e.parent;for(;n;){if(C(n)){let e=S(n),r=e.parent;if(r&&D(r,`CallExpression`)&&sre(r,e,t))return!0}n=n.parent}return!1},lre=(e,t,n)=>{let r=e.parent,i=null;for(r&&D(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(C(r))return!1;if(D(r,`JSXAttribute`)&&(i=r),D(r,`JSXElement`)){let e=r.openingElement.name;if(D(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=ye(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!tre.has(a.source)&&!Sr(a.source)&&i?.parent===r.openingElement&&D(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},wr=(e,t)=>{if(cre(e,t))return!0;let n=b(e);return!n||!ore(n,t)?!1:lre(e,n,t)},ure=e=>{let t=e.parent;return t?D(t,`JSXSpreadAttribute`)||D(t,`SpreadElement`)?t.argument===e:D(t,`VariableDeclarator`)&&t.init===e:!1},Tr=(e,t,n,r,i)=>{let a=N(e);if(r&&D(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`||!ure(e.identifier)))return!0;i.add(e.id);let o=Tr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!D(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(D(e,`SpreadElement`)){if(Tr(e.argument,t,n,r,i))return!0;continue}if(!D(e,`Property`))return!0;let a=w(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Er=(e,t,n=!0,r)=>Tr(e,t,n,r,new Set),L=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(D(a,`JSXSpreadAttribute`)){if(Er(a.argument,t,n))return null;continue}if(!D(a,`JSXAttribute`))continue;let o=Pt(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Dr=(e,t)=>e.some(e=>D(e,`JSXSpreadAttribute`)&&Er(e.argument,t,!1)),Or=e=>{let t=N(e);return D(t,`UnaryExpression`)&&t.operator===`void`&&D(N(t.argument),`Literal`)},kr=(e,t={})=>{if(!e?.value)return!1;let n=I(e);if(n!==null)return n.trim().length>0;if(!D(e.value,`JSXExpressionContainer`))return!0;let r=N(e.value.expression);return D(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:D(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Or(r)},dre=(e,t,n)=>{let{openingElement:r}=e;if(r===n||ar(r,t))return!1;if(D(r.name,`JSXMemberExpression`)||D(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=L(r.attributes,`aria-label`,!1);if(kr(i,{booleanValuesRender:!0})||!i&&Dr(r.attributes,`aria-label`))return!0;if(D(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=L(r.attributes,`alt`,!1);return kr(e)||!e&&Dr(r.attributes,`alt`)}return jr(e,t,n)},Ar=(e,t,n)=>{for(let r of e){if(D(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(D(r,`JSXElement`)){if(dre(r,t,n))return!0;continue}if(D(r,`JSXFragment`)){if(Ar(r.children,t,n))return!0;continue}if(D(r,`JSXExpressionContainer`)){let e=N(r.expression);if(D(e,`JSXEmptyExpression`))continue;if(D(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Or(e)||D(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},jr=(e,t,n)=>{if(Ar(e.children,t,n))return!0;let r=L(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(kr(r)||!r&&Dr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=L(e.openingElement.attributes,`children`,!1);return!!(kr(i)||!i&&Dr(e.openingElement.attributes,`children`))},Mr=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},fre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},pre=e=>!!(D(e,`Identifier`)&&e.name===`undefined`||D(e,`Literal`)&&e.value===null),Nr=e=>pre(e)?!0:D(e,`ConditionalExpression`)?Nr(e.consequent)||Nr(e.alternate):!1,Pr=e=>{if(!e.value)return!1;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!Nr(t):!0}return!0},mre=e=>{if(!e)return!1;let t=Zn(e);return t===`presentation`||t===`none`},Fr=e=>{if(!e.value)return!1;if(D(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:D(t,`Identifier`)&&t.name===`undefined`?!1:D(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},hre=(e,t,n)=>{let r=P(e.attributes,`alt`);if(r){Pr(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(mre(P(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=P(e.attributes,`aria-label`);if(i){Fr(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=P(e.attributes,`aria-labelledby`);if(a){Fr(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.'})},gre=(e,t,n,r)=>{let i=P(e.attributes,`aria-label`),a=P(e.attributes,`aria-labelledby`),o=i&&Fr(i)||a&&Fr(a),s=P(e.attributes,`title`),c=s?Zn(s):null,l=!!(c&&c.length>0);o||l||jr(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."})},_re=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&Fr(r)||i&&Fr(i))return;let a=P(e.attributes,`alt`);(!a||!Pr(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`."})},vre=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&Fr(r)||i&&Fr(i))return;let a=P(e.attributes,`alt`);(!a||!Pr(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`."})},yre=y({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{let t=Mr(e.settings);if(t&&pr(e))return pn;let n=fre(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=nr(e.settings);return{JSXOpeningElement(n){if(t&&wr(n,e))return;if(!d&&D(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&&pr(e,n)||t&&F(n.attributes))return;let f=tr(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&ar(n,e.settings))return;hre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&D(t,`JSXElement`)&&gre(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){_re(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=P(n.attributes,`type`);return e?Zn(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&vre(n,n,e)}}}}),bre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,xre=[`click here`,`here`,`link`,`a link`,`learn more`],Sre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??xre}},Cre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),wre=e=>D(e,`Literal`)&&typeof e.value==`string`?e.value:D(e,`TemplateLiteral`)?Fe(e):null,Tre=(e,t)=>{let n=e.openingElement,r=P(n.attributes,`aria-label`);if(r){let e=Zn(r);if(e!==null)return e}if(tr(n,t)===`img`){let e=P(n.attributes,`alt`);if(e){let t=Zn(e);if(t!==null)return t}}if(ar(n,t))return null;let i=[];for(let n of e.children){let e=n;if(D(e,`JSXText`))i.push(e.value);else if(D(e,`JSXElement`)){let n=Tre(e,t);n!==null&&i.push(n)}else if(D(e,`JSXExpressionContainer`)){let t=wre(e.expression);t!==null&&i.push(t)}}return i.join(``)},Ere=y({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(Je(e.filename))return pn;let t=Sre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(tr(t.openingElement,e.settings)!==`a`)return;let r=Tre(t,e.settings);if(r===null||r.trim().length===0)return;let i=Cre(r);n.has(i)&&e.report({node:t.openingElement.name,message:bre(i)})}}}}),Ir=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(`.`)),Lr=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(`.`)),Dre=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(`.`)),Ore=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),Rr=new Set([`presentation`,`none`]),kre=e=>e.trim().split(/\s+/).find(e=>Ir.has(e))===`link`,Are=e=>{let t=e.parent;for(;t;){if(D(t,`JSXAttribute`)){let e=t.parent;return e&&D(e,`JSXOpeningElement`)?or(e.name)===`Trans`:!1}t=t.parent??null}return!1},jre=e=>e.children.some(e=>{if(!D(e,`JSXElement`))return!1;let t=e,n=or(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!P(t.openingElement.attributes,`aria-hidden`)}),Mre=y({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=Mr(e.settings),n=Je(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(tr(i,e.settings)!==`a`)return;let a=P(i.attributes,`href`),o=P(i.attributes,`role`),s=o?jt(o,e.scopes):[],c=s===null||s.some(e=>kre(e));if(!(t&&!a&&!c)&&!ar(i,e.settings)&&!(jr(r,e.settings)||!t&&jre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(P(i.attributes,e))return;t&&Are(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`."})}}}}}),zr=[`href`],Nre=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return zr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return zr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?zr:r},Pre="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Br="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Vr="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Fre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Nre(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Hr=(e,t)=>e.aspects===null||e.aspects.has(t),Ire=e=>{let t=e.parent;if(!t||!D(t,`JSXElement`))return!1;let n=t.parent;if(!n||!D(n,`JSXElement`))return!1;let r=or(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Lre=e=>!!P(e.attributes,`role`)&&!!P(e.attributes,`tabindex`)&&(!!P(e.attributes,`onkeydown`)||!!P(e.attributes,`onkeyup`)),Ur=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},Rre=e=>{if(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(t,`Identifier`)&&t.name===`undefined`||D(t,`Literal`)&&t.value===null)return!0}return!!D(e,`JSXFragment`)},zre=e=>{let t=e.value;if(!t)return`nullish`;if(D(t,`Literal`))return typeof t.value==`string`&&Ur(t.value,new Set)?`invalid`:`valid`;if(D(t,`JSXExpressionContainer`)){let e=t.expression;return D(e,`Identifier`)&&e.name===`undefined`?`nullish`:D(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Ur(e.value,new Set)?`invalid`:`valid`:D(e,`TemplateLiteral`)&&e.expressions.length===0&&Ur(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return D(t,`JSXFragment`)?`nullish`:`valid`},Wr=y({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=Fre(e.settings),n=Mr(e.settings),r=nr(e.settings),i=Je(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=tr(a,e.settings),s=or(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=P(a.attributes,e);if(!t)continue;let i=zre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=F(a.attributes),o=!!P(a.attributes,`onClick`);if(!n){!i&&Hr(t,`noHref`)&&(!o||!Hr(t,`preferButton`))&&e.report({node:a.name,message:Pre}),!i&&o&&Hr(t,`preferButton`)&&e.report({node:a.name,message:Vr});return}r&&(o&&Hr(t,`preferButton`)?e.report({node:a.name,message:Vr}):Hr(t,`invalidHref`)&&e.report({node:a.name,message:Br}));return}let c;for(let e of t.hrefAttributeNames)if(c=P(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Br});return}let n=jt(c,e.scopes);if(n===null?Rre(c.value):n.length>0&&n.every(e=>Ur(e,t.validHrefs))){let t=!!P(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Vr:Br})}return}F(a.attributes)||Ire(a)||Lre(a)||e.report({node:a.name,message:Pre})}}}}),Gr=y({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(Je(e.filename))return pn;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(tr(n,e.settings)!==`a`)return;let r=null;for(let t of Nre(e.settings))if(r=L(n.attributes,t,!1),r)break;if(!r)return;let i=I(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=ote({configuredRootDirectory:Ee(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.`})}}}}),Bre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Kr=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(`.`)),qr=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(`.`)),Jr=e=>e.kind!==`const`||!D(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Vre=new Set([``,`plaintext-only`,`true`]),Yr={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Xr={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},Zr={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Qr={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),$r=(e,t,n)=>{let r=N(e);if(D(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?Yr:Xr;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Vre.has(e)?Yr:e===`false`?Xr:Zr}return Zr}if(D(r,`ConditionalExpression`))return Hre($r(r.consequent,t,n),$r(r.alternate,t,n));if(D(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Qr;let i=Jr(e);if(!i)return Qr;let a=new Set(n);return a.add(e.id),$r(i,t,a)}return Qr},ei=(e,t)=>{let n=P(e.attributes,`contenteditable`);return n?n.value?D(n.value,`Literal`)?$r(n.value,t,new Set):D(n.value,`JSXExpressionContainer`)?$r(n.value.expression,t,new Set):Qr:Yr:null},Ure=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(D(r,`JSXElement`)){let e=r.openingElement;if(!Kr.has(tr(e,n)))return!1;let i=ei(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},ti=(e,t,n)=>ei(e,t)?.canBeEnabled?!Ure(e,t,n):!1,ni=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=P(t.attributes,`type`);if(e){let t=Zn(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return P(t.attributes,`href`)!==void 0;case`img`:return P(t.attributes,`usemap`)!==void 0;default:return!1}},ri=e=>{if(!e)return null;if(D(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(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(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(D(t,`UnaryExpression`)&&t.operator===`-`&&D(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(D(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return D(t.test,`Literal`)?ri(e(t.test.value?t.consequent:t.alternate)):ri(e(t.consequent))}}return null},ii="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",ai=y({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!P(t.attributes,`aria-activedescendant`))return;let n=tr(t,e.settings);if(!Kr.has(n))return;let r=P(t.attributes,`tabIndex`);if(r){let n=ri(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:ii});return}ni(n,t)||ti(t,e.scopes,e.settings)||e.report({node:t.name,message:ii})}})}),Wre=[`aria-label`,`aria-labelledby`,`alt`,`title`],oi=(e,t)=>{let n=L(e.attributes,t,!1);if(!n)return!1;let r=I(n);return r===null?null:r.trim().length>0},si=y({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(F(n.attributes))return;if(oi(n,`aria-brailleroledescription`)===!0&&oi(n,`aria-roledescription`)===!1){let t=L(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(oi(n,`aria-braillelabel`)!==!0||jr(t,e.settings)||Wre.map(e=>oi(n,e)).some(e=>e===!0||e===null))return;let r=L(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),ci=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`}]]),Gre=e=>ci.has(e),Kre=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.`,li=y({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(!D(t.name,`JSXIdentifier`))return;let n=Pt(t.name);!n||!n.startsWith(`aria-`)||Gre(n)||e.report({node:t.name,message:Kre(n)})}})}),qre={"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`]}},Jre=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(`, `)}`}},ui=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${Jre(t)}.`,Yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},di=e=>{if(D(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(D(e,`TemplateLiteral`)){let t=Fe(e);return t===null?null:t.length>0}if(D(e,`UnaryExpression`)&&e.operator===`!`){let t=di(e.argument);return t===null?null:!t}return null},Xre=e=>{if(D(e,`Literal`))return!0;if(D(e,`JSXExpressionContainer`)){let t=e.expression;return D(t,`Literal`)?t.value!==null:D(t,`TemplateLiteral`)?!0:D(t,`UnaryExpression`)&&t.operator===`!`?di(t.argument)!==null:!1}return!1},fi=(e,t)=>{if(D(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(D(e,`JSXExpressionContainer`)){let n=e.expression;if(D(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(D(n,`TemplateLiteral`))return Fe(n)?.toLowerCase()??null;if(t&&D(n,`UnaryExpression`)&&n.operator===`!`){let e=di(n.argument);return e===null?null:String(!e)}}return null},pi=e=>{if(!D(e,`JSXExpressionContainer`))return!1;let t=e.expression;return D(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},Zre=(e,t)=>{if(!Xre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=fi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=fi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return pi(t)?!0:fi(t,!1)!==null;case`integer`:case`number`:{let e=fi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(D(t,`JSXExpressionContainer`)){let e=t.expression;if(D(e,`Literal`)&&typeof e.value==`number`||D(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&D(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(pi(t))return!0;let e=fi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=fi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=fi(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))}}},mi=y({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(!D(t.name,`JSXIdentifier`))return;let n=Pt(t.name);if(!n)return;let r=n.toLowerCase(),i=qre[r];if(i){if(!t.value){Yre(i)||e.report({node:t,message:ui(r,i)});return}Zre(i,t.value)||e.report({node:t,message:ui(r,i)})}}})}),hi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Qre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Mr(e)}},gi=y({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=Qre(e.settings);return{JSXOpeningElement(n){let r=P(n.attributes,`role`);if(!r)return;let i=tr(n,e.settings);if(t.ignoreNonDOM&&!Kr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:hi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Ir.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:hi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:hi(``)});return}if(D(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:hi(``)});return}a([o.value]);return}if(D(o,`JSXExpressionContainer`)){let t=o.expression;if(D(t,`Literal`)&&t.value===null){e.report({node:r,message:hi(``)});return}if(D(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:hi(``)});return}let n=jt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:hi(``)})}}}}),$re=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,eie=y({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=tr(t,e.settings);if(Bre.has(n))for(let r of t.attributes){if(!D(r,`JSXAttribute`)||!D(r.name,`JSXIdentifier`))continue;let t=Pt(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:$re(n,t)})}}})}),_i=(e,t)=>{if(e){if(D(e,`Identifier`)){t.add(e.name);return}if(D(e,`AssignmentPattern`)){_i(e.left,t);return}if(D(e,`RestElement`)){_i(e.argument,t);return}if(D(e,`ArrayPattern`)){for(let n of e.elements??[])_i(n,t);return}if(D(e,`ObjectPattern`))for(let n of e.properties??[]){if(D(n,`RestElement`)){_i(n.argument,t);continue}D(n,`Property`)&&_i(n.value,t)}}},vi=(e,t,n)=>{if(e&&!D(e,`Identifier`)){if(D(e,`AssignmentPattern`)){yi(e.right,t,n),vi(e.left,t,n);return}if(D(e,`RestElement`)){vi(e.argument,t,n);return}if(D(e,`ArrayPattern`)){for(let r of e.elements??[])vi(r,t,n);return}if(D(e,`ObjectPattern`))for(let r of e.properties??[]){if(D(r,`RestElement`)){vi(r.argument,t,n);continue}D(r,`Property`)&&(r.computed&&yi(r.key,t,n),vi(r.value,t,n))}}},tie=(e,t,n)=>{if(!D(e,`FunctionDeclaration`)&&!D(e,`FunctionExpression`)&&!D(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])_i(t,r);for(let n of e.params??[])vi(n,t,r);yi(e.body,t,r)},yi=(e,t,n)=>{if(!e)return;if(D(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(D(e,`MemberExpression`)){yi(e.object,t,n),e.computed&&yi(e.property,t,n);return}if(D(e,`Property`)){e.computed&&yi(e.key,t,n),yi(e.value,t,n);return}if(D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`)){tie(e,t,n);return}if(D(e,`TSAsExpression`)||D(e,`TSSatisfiesExpression`)||D(e,`TSTypeAssertion`)||D(e,`TSNonNullExpression`)||D(e,`TSInstantiationExpression`)){yi(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||ste.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)M(e)&&yi(e,t,n);else M(i)&&yi(i,t,n)}},bi=(e,t)=>yi(e,t,new Set),xi=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t||D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`))return!1;if(D(e,`AwaitExpression`))return t=!0,!1}),t},Si=e=>{let t=e;D(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!D(n,`Property`)||n.value!==t||!n.parent||!D(n.parent,`ObjectPattern`)?null:w(n,{allowComputedString:!0})},nie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Ci=(e,t)=>{let n=N(e);return D(n,`Literal`)?!0:D(n,`Identifier`)?t.has(n.name):D(n,`BinaryExpression`)||D(n,`LogicalExpression`)?Ci(n.left,t)&&Ci(n.right,t):D(n,`UnaryExpression`)?n.operator!==`delete`&&Ci(n.argument,t):D(n,`ConditionalExpression`)?Ci(n.test,t)&&Ci(n.consequent,t)&&Ci(n.alternate,t):D(n,`TemplateLiteral`)?n.expressions.every(e=>Ci(e,t)):!1},wi=(e,t,n)=>{let r=N(e);if(!D(r,`CallExpression`)||!r.arguments.every(e=>!D(e,`SpreadElement`)&&Ci(e,t)))return!1;let i=N(r.callee);if(!D(i,`MemberExpression`)||O(i)!==`resolve`)return!1;let a=N(i.object);return D(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},rie=(e,t,n)=>!D(e,`ExpressionStatement`)||!D(e.expression,`AwaitExpression`)?!1:wi(e.expression.argument,t,n),iie=(e,t)=>{if(!D(e,`ExpressionStatement`)||!D(e.expression,`AssignmentExpression`)||!nie.has(e.expression.operator))return!1;let n=N(e.expression.left);if(!D(n,`MemberExpression`)||O(n)===null)return!1;let r=N(n.object);return D(r,`Identifier`)&&t.has(r.name)&&D(N(e.expression.right),`Literal`)},aie=(e,t)=>{if(!C(e))return!1;let n=new Set;for(let t of e.params){if(!D(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!D(e.body,`BlockStatement`))return wi(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(D(r,`ReturnStatement`)&&r.argument&&wi(r.argument,n,t))}if(!D(e.body,`BlockStatement`))return Ci(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(!rie(i,n,t)&&!(D(i,`ExpressionStatement`)&&Ci(i.expression,n)))return iie(i,n)?a:!D(i,`ReturnStatement`)||!a?!1:!i.argument||Ci(i.argument,n)||wi(i.argument,n,t)}return!0},oie=(e,t)=>D(e,`Property`)?Ne(e,t,{allowConstTemplateLiteral:!0}):null,sie=(e,t)=>D(e,`MemberExpression`)?Ne(e,t,{allowConstTemplateLiteral:!0}):null,Ti=(e,t,n,r,i)=>{let a=N(e);if(D(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||kn(e,n,r)||nt(a,t,r)?null:(i.add(e.id),Ti(e.initializer,t,n,r,i))}if(!D(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!D(e,`Property`)||e.kind!==`init`)return null;let n=oie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!D(o,`Property`))return null;let s=N(o.value);return C(s)?s:Ei(s,n,r,i)},Ei=(e,t,n,r)=>{let i=N(e);if(C(i))return i;if(D(i,`MemberExpression`)){let e=sie(i,n);return e===null?null:Ti(N(i.object),e,t,n,r)}if(!D(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||kn(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=N(a.initializer),s=Si(a.bindingIdentifier);return s===null?C(o)?o:a.kind===`const`?Ei(o,t,n,r):null:Ti(o,s,t,n,r)},Di=(e,t)=>{let n=N(e);return!D(n,`CallExpression`)||Dn(n,t)?null:Ei(n.callee,n,t,new Set)},Oi=(e,t)=>{let n=Di(e,t);return n&&aie(n,t)?n:null},R=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},ki=e=>!!(e&&(D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`))),cie=(e,t)=>{if(!D(e,`LogicalExpression`))return!1;let n=S(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?R(t,n):!!(e.operator===`||`&&r&&R(t,r));return D(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):D(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(D(r,`WhileStatement`)||D(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||D(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?R(t,r.body):!1},Ai=(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(D(c,`LogicalExpression`)&&c.right===s||D(c,`ConditionalExpression`)&&c.test!==s||D(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(D(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||D(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!R(t,e)&&!cie(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},z=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(D(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=D(i,`Property`)?w(i):null;if(s&&D(a,`ObjectPattern`)&&D(o,`VariableDeclarator`)&&o.id===a){let r=z(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?N(e.initializer):null;return e.kind===`const`&&c&&(D(c,`Identifier`)||D(c,`MemberExpression`))?z(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(D(r,`MemberExpression`)){let e=w(r,{allowComputedString:!0});if(!e)return null;let i=z(r.object,t,n);return i?`${i}.${e}`:null}if(D(r,`ThisExpression`))return`this`;if(D(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(C(r)){let e=p(r);return e===null?null:`function:${e}`}return null},lie=new Set(mr),uie=new Set([`push`,`unshift`]),die=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),fie=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),pie=e=>D(e,`Identifier`)?e.name:D(e,`MemberExpression`)&&D(e.property,`Identifier`)?e.property.name:null,ji=e=>D(e,`ForStatement`)||D(e,`ForInStatement`)||D(e,`ForOfStatement`)||D(e,`WhileStatement`)||D(e,`DoWhileStatement`)?e.body:null,Mi=(e,t=!1,n)=>{let r=null;return T(e,i=>{if(r||i!==e&&C(i)||t&&i!==e&&lie.has(i.type))return!1;D(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Ni=e=>{if(D(e,`Identifier`))return xr.has(e.name);if(D(e,`MemberExpression`)&&D(e.property,`Identifier`)){let t=N(e.object);return e.property.name===`check`&&D(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:xr.has(e.property.name)}return!1},mie=(e,t)=>{if(D(e.callee,`Identifier`)&&die.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)||!die.has(e.callee.property.name))return!1;let n=N(e.callee.object);return D(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},hie=(e,t,n=new Set)=>{if(!C(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return T(e.body,a=>{if(a!==e.body&&C(a))return!1;if(D(a,`NewExpression`)&&D(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=S(a),n=e.parent,i=D(n,`ReturnStatement`)&&n.argument===e||D(n,`AwaitExpression`)&&n.argument===e||C(n)&&n.body===e,o=a.arguments[0];i&&C(o)&&T(o.body,e=>{if(e!==o.body&&C(e))return!1;D(e,`CallExpression`)&&mie(e,t)&&(r=!0)})}if(!D(a,`CallExpression`)||mie(a,t))return;let o=Di(a,t.scopes);if(o!==null){hie(o,t,n)&&(i=!0);return}Ni(a.callee)&&(i=!0)}),r||i},gie=(e,t)=>{if(!D(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!D(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(D(e,`SpreadElement`))return!1;let t=N(e);return D(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=Di(n,t.scopes);if(r!==null&&hie(r,t))return!0;if(Oi(n,t.scopes)!==null)return!1;let i=pie(n.callee);return r!==null&&i&&fie.has(i)?!1:Ni(n.callee)},_ie=(e,t)=>D(e,`AwaitExpression`)&&!!e.argument&&Dn(e.argument,t.scopes),vie=new Set([`all`,`allSettled`,`race`,`any`]),Pi=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return!D(t,`MemberExpression`)||t.computed||!D(t.object,`Identifier`)||t.object.name!==`Promise`||!D(t.property,`Identifier`)?!1:vie.has(t.property.name)},yie=e=>D(e,`AwaitExpression`)?Pi(e.argument):!1,bie=e=>{if(!D(e,`AwaitExpression`))return!1;let t=e.argument;if(!D(t,`NewExpression`)||!D(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(D(n,`Identifier`)&&xr.has(n.name))return!0;if(!ki(n))return!1;let r=n.params?.[0],i=D(r,`Identifier`)?r.name:null,a=!1;return T(n.body,e=>{if(a)return!1;if(D(e,`CallExpression`)&&Ni(e.callee)||i&&D(e,`AssignmentExpression`)&&D(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},xie=e=>{let t=e;for(;D(t,`MemberExpression`);)t=t.object;return D(t,`Identifier`)?t.name:null},Sie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Cie=(e,t)=>!!t&&e.references.some(e=>{let n=S(e.identifier),r=n.parent;return D(r,`ReturnStatement`)&&r.argument===n&&b(r)===t}),Fi=(e,t,n)=>{if(D(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(D(e,`ObjectPattern`)){for(let r of e.properties??[])D(r,`Property`)&&r.value?Fi(r.value,t,n):D(r,`RestElement`)&&r.argument&&Fi(r.argument,t,n);return}if(D(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Fi(r,t,n);return}D(e,`AssignmentPattern`)&&e.left&&Fi(e.left,t,n)},Ii=(e,t)=>{let n=new Set;return T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},wie=(e,t)=>{let n=new Set;if(D(e,`ForOfStatement`)||D(e,`ForInStatement`))if(D(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Fi(r.id,t,n);else Fi(e.left,t,n);return n},Tie=(e,t,n=null)=>{let r=new Set,i=[];T(e,a=>{if(a!==e&&C(a))return!1;if(D(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Fi(a.id,t,e),n&&R(n,a.init)||!n&&xi(a.init))for(let t of e)r.add(t);let o=Ii(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(D(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Fi(a.left,t,e),n&&R(n,a.right)||!n&&xi(a.right))for(let t of e)r.add(t);let o=Ii(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},Eie=e=>D(e,`Identifier`)?e:D(e,`AssignmentPattern`)&&D(e.left,`Identifier`)?e.left:null,Die=(e,t)=>{if(!D(e,`AwaitExpression`))return!1;let n=e.argument;if(!D(n,`CallExpression`))return!1;let r=Di(n,t.scopes);if(!C(r))return!1;let i=b(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Tie(r.body,t.scopes),s=new Set;for(let[e,a]of r.params.entries()){let r=Eie(a);if(!r)continue;let o=n.arguments[e];if(!D(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Cie(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return T(r.body,e=>{if(c||e!==r.body&&C(e))return!1;if(!D(e,`CallExpression`))return;let n=e.callee;if(!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)||!uie.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(xi(n)){l=!0;break}let e=Ii(n,t.scopes);for(let t of e)if(o.has(t)){l=!0;break}if(l)break}if(!l)return;let u=n.object;for(;D(u,`MemberExpression`);)u=u.object;if(!D(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Sie(d.scope,a)&&Cie(d,i)))return c=!0,!1}),c},Oie=e=>{if(!D(e,`AwaitExpression`))return null;let t=N(e.argument);return D(t,`CallExpression`)&&D(N(t.callee),`MemberExpression`)?t:null},kie=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=wie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ii(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Aie=e=>{if(!D(e,`CallExpression`))return null;let t=N(e.callee);return D(t,`MemberExpression`)?t.object:null},Li=e=>{let t=N(e);for(;D(t,`MemberExpression`);)t=N(t.object);return t},jie=(e,t,n,r)=>{let i=ji(n);if(!i)return!1;let a=Li(e);if(D(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||R(e.bindingIdentifier,n))return!1}else if(!D(a,`ThisExpression`))return!1;let o=!1;return T(i,e=>{if(o||e!==i&&C(e))return!1;let n=null;if(D(e,`AssignmentExpression`)?n=e.left:(D(e,`UpdateExpression`)||D(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&z(n,r)===t)return o=!0,!1}),!o},Mie=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=Aie(e);return!r||z(r,n)!==t?!1:!D(S(e).parent,`ExpressionStatement`)},Nie=(e,t,n,r)=>{let i=ji(t);if(!i)return!1;let a=!1,o=!1;return T(i,t=>{if(a&&o||t!==i&&C(t))return!1;R(t,e)||Mie(t,n,r)&&(Ai(t,e,r)&&(a=!0),Ai(e,t,r)&&(o=!0))}),a&&o},Pie=(e,t)=>{let n=b(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||b(e.identifier)!==n)return!1;let r=S(e.identifier),i=r.parent;if(!D(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=N(i.callee);return D(a,`MemberExpression`)?D(Li(a.object),`ThisExpression`):!1})},Fie=(e,t,n)=>{let r=new Set;return T(t,i=>{if(i!==t&&C(i))return!1;let a=null,o=null;D(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):D(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!R(e,o))&&Fi(a,n.scopes,r)}),r},Iie=(e,t,n)=>{let r=N(e);if(!D(r,`MemberExpression`))return!1;let i=Li(r);if(!D(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Lie=(e,t,n)=>{let r=ji(t);if(!r)return!1;let i=Fie(e,r,n);if(i.size===0)return!1;let a=!1;return T(r,o=>{if(a||o!==r&&C(o))return!1;if(!D(o,`CallExpression`)||!Ai(e,o,n))return;let s=o.callee;if(!D(s,`MemberExpression`)||s.computed||!D(s.property,`Identifier`)||!uie.has(s.property.name))return;let c=Li(s.object);if(!D(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||R(l.bindingIdentifier,t)||!Pie(l,t))){for(let e of o.arguments)if(Iie(e,i,n))return a=!0,!1}}),a},Rie=(e,t,n)=>{let r=Oie(e);if(!r||!kie(r,t,n))return!1;let i=Aie(r);if(!i)return!1;let a=z(i,n);return!a||!jie(i,a,t,n)?!1:Nie(e,t,a,n)||D(Li(i),`ThisExpression`)&&D(N(i),`MemberExpression`)&&Lie(e,t,n)},zie=(e,t)=>_ie(e,t)||gie(e,t)||yie(e)||bie(e)||Die(e,t),Ri=(e,t)=>{if(D(e,`Identifier`))t.add(e.name);else if(D(e,`ObjectPattern`))for(let n of e.properties??[])D(n,`Property`)&&n.value?Ri(n.value,t):D(n,`RestElement`)&&n.argument&&Ri(n.argument,t);else if(D(e,`ArrayPattern`))for(let n of e.elements??[])n&&Ri(n,t);else D(e,`AssignmentPattern`)&&e.left&&Ri(e.left,t)},Bie=new Set([`push`,`unshift`,`splice`]),zi=(e,t)=>{let n=[];T(e,t=>{if(t!==e&&C(t))return!1;if(!D(t,`VariableDeclarator`)||!t.init||!D(t.id,`Identifier`))return;let r=new Set;bi(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}}}},Vie=e=>{let t=new Set,n=new Set;if(T(e,r=>{if(r!==e&&C(r))return!1;if(D(r,`AssignmentExpression`)&&r.left){Ri(r.left,t);return}if(D(r,`AwaitExpression`)&&r.argument){bi(r.argument,n);return}if(!D(r,`CallExpression`))return;let i=r.callee;D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&Bie.has(i.property.name)&&D(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;zi(e,t);for(let e of t)if(n.has(e))return!0;return!1},Hie=new Set([...mr,`SwitchStatement`]),Uie=e=>{let t=new Set;return T(e,n=>{if(n!==e&&C(n))return!1;D(n,`VariableDeclarator`)&&n.id&&xi(n.init)&&Ri(n.id,t),D(n,`AssignmentExpression`)&&n.left&&xi(n.right)&&Ri(n.left,t)}),t},Bi=(e,t)=>{if(!e)return!1;if(xi(e))return!0;let n=new Set;bi(e,n);for(let e of n)if(t.has(e))return!0;return!1},Wie=(e,t,n)=>{if(e.label)return D(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(Hie.has(r.type))return!1;r=r.parent}return!0},Gie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Vi=e=>{if(!e)return!1;if(Gie.has(e.type))return!0;if(D(e,`BlockStatement`)){let t=e.body??[];return Vi(t[t.length-1])}return!1},Kie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(D(r,`IfStatement`)&&Bi(r.test,n)&&(Vi(r.consequent)||Vi(r.alternate)))return!0}return!1},qie=(e,t,n)=>{if(D(e,`ReturnStatement`)&&e.argument&&Bi(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(D(a,`IfStatement`)){if(Bi(a.test,n))return!0;r=!0}if(D(a,`TryStatement`)&&a.handler&&i===a.block&&xi(a.block)&&!r||D(a,`SwitchStatement`)&&Bi(a.discriminant,n)||D(a,`BlockStatement`)&&Kie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Jie=(e,t)=>{let n=Uie(e);zi(e,n);let r=!1;return T(e,i=>{if(r||i!==e&&C(i))return!1;if((D(i,`ReturnStatement`)||D(i,`BreakStatement`)&&Wie(i,e,t))&&qie(i,e,n))return r=!0,!1}),r},Yie=new Set([...Bie,`pop`,`shift`]),Xie=e=>{let t=new Set;return T(e,n=>{if(n!==e&&C(n))return!1;if(D(n,`AssignmentExpression`)&&n.left){Ri(n.left,t);let e=xie(n.left);e&&t.add(e);return}if(!D(n,`CallExpression`))return;let r=n.callee;if(D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&Yie.has(r.property.name)){let e=xie(r.object);e&&t.add(e)}}),t},Zie=(e,t)=>{if(!e)return!1;let n=new Set;if(bi(e,n),n.size===0)return!1;let r=Xie(t),i=Uie(t);zi(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Qie=e=>{let t=e.parent;return D(t,`LabeledStatement`)&&D(t.label,`Identifier`)?t.label.name:null},$ie=(e,t)=>{let n=!1;return T(e,e=>{if(n||ki(e)||D(e,`FunctionDeclaration`))return!1;if(D(e,`AwaitExpression`)&&zie(e,t))return n=!0,!1}),n},eae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),tae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),nae=e=>{let t=e;for(;;){t=S(t);let e=t.parent;if(!e)return t;if(D(e,`SpreadElement`)||D(e,`ArrayExpression`)){t=e;continue}if(D(e,`LogicalExpression`)){t=e;continue}if(D(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(D(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(D(n,`CallExpression`)&&n.callee===e&&!e.computed&&D(e.property,`Identifier`)&&tae.has(e.property.name)){t=n;continue}}return t}},Hi=e=>{let t=e;for(;t.parent&&!C(t);)t=t.parent;return t},rae=(e,t)=>{let n=!1;return T(t,t=>{if(n)return!1;if(!Pi(t))return;let r=new Set;for(let e of t.arguments??[])bi(e,r);if(r.has(e))return n=!0,!1}),n},iae=e=>{let t=nae(e),n=t.parent;if(D(n,`CallExpression`)&&Pi(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`)?r=n.id.name:D(n,`AssignmentExpression`)&&n.right===t&&D(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:rae(r,Hi(n))},aae=e=>{let t=Hi(e);if(!C(t))return!1;let n=null;return D(t,`FunctionDeclaration`)&&D(t.id,`Identifier`)?n=t.id.name:D(t.parent,`VariableDeclarator`)&&D(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:rae(n,Hi(t.parent))},oae=y({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!Mi(i,!0)||$ie(i,e)||(D(n,`WhileStatement`)||D(n,`DoWhileStatement`))&&Zie(n.test,i)||Vie(i)||Jie(i,Qie(n))||aae(n))return;let a=Mi(i,!0,t=>Rie(t,n,e));a&&e.report({node:a,message:`This makes the ${r} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ImportDeclaration(e){Sr(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||!D(n.callee,`MemberExpression`)||!D(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!eae.has(r))return;let i=n.arguments?.[0];if(!i||!ki(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&iae(n))return;let o=Mi(a);if(o){let t=r===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${r} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:o,message:t})}}}}}),Ui=(e,t)=>{if(e){if(D(e,`AssignmentPattern`)){bi(e.right,t),Ui(e.left,t);return}if(D(e,`RestElement`)){Ui(e.argument,t);return}if(D(e,`ArrayPattern`)){for(let n of e.elements??[])Ui(n,t);return}if(D(e,`ObjectPattern`))for(let n of e.properties??[])D(n,`RestElement`)?Ui(n.argument,t):D(n,`Property`)&&(n.computed&&bi(n.key,t),Ui(n.value,t))}},sae=e=>D(e,`ExpressionStatement`)?D(e.expression,`AwaitExpression`):!1,cae=e=>D(e,`ReturnStatement`)||D(e,`ThrowStatement`)||D(e,`ContinueStatement`)||D(e,`BreakStatement`),lae=e=>{if(!D(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(cae(t))return!0;if(!D(t,`BlockStatement`))return!1;for(let e of t.body??[])if(cae(e))return!0;return!1},Wi=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},uae=(e,t)=>{D(e,`VariableDeclarator`)&&(bi(e.init,t),Ui(e.id,t))},dae=(e,t)=>{if(!D(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(!D(r,`VariableDeclarator`))continue;if(xi(r.init)||xi(r.id)){n=!0;let e=t.size;_i(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(uae(r,e),!Wi(e,t))continue;let a=t.size;_i(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},fae=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(`.`)),pae=e=>{let t=!1;return T(e,e=>{if(t)return!1;if(!D(e,`MemberExpression`)||e.computed||!D(e.property,`Identifier`)||e.property.name!==`current`||!D(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},mae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],hae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of mae)if(t.includes(e))return!0;return!1},gae=e=>{let t=new Set;return T(e,e=>{(D(e,`Identifier`)||D(e,`PrivateIdentifier`))&&t.add(e.name)}),t},_ae=e=>{if(!e)return!1;let t=new Set;bi(e,t);for(let e of t)if(fae.has(e))return!0;for(let t of gae(e))if(fae.has(t)||hae(t))return!0;return pae(e)},vae=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t)return!1;if(D(e,`CallExpression`))return D(e.callee,`ArrowFunctionExpression`)||D(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(D(e,`ThisExpression`)||D(e,`PrivateIdentifier`))return t=!0,!1}),t},yae=e=>{if(!e)return!1;let t=N(e);if(!D(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=N(e);return D(t,`Literal`)||D(t,`TemplateLiteral`)||D(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},bae=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&fn(i.scope,n))},xae=(e,t,n)=>{let r=N(e);if(D(r,`MemberExpression`))return!0;if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!fn(i.scope,n))},Sae=(e,t,n)=>{let r=N(e);return!yae(r)||!D(r,`BinaryExpression`)?!1:bae(r.left,t,n)&&xae(r.right,t,n)||bae(r.right,t,n)&&xae(r.left,t,n)},Cae=(e,t,n)=>{if(!n||!e)return!1;let r=N(e);if(!D(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=N(e);if(D(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Sae(r,t,n))return!1}return!0},wae=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t||C(e)||D(e,`ThrowStatement`))return!1;if(D(e,`CallExpression`)||D(e,`NewExpression`)||D(e,`AssignmentExpression`)||D(e,`UpdateExpression`))return t=!0,!1}),t},Tae=(e,t)=>{if(!e)return!1;let n=new Set;if(bi(e,n),n.size===0)return!1;let r=b(t);if(!r||!C(r)||!r.body)return!1;let i=!1;return T(r.body,e=>{if(i)return!1;let t=null;if(D(e,`AssignmentExpression`)?t=e.left:D(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;_i(t,r),D(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Eae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(D(n,`VariableDeclaration`)?dae(n,r).didIntroduceAwait&&(i=!0):sae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(sae(t)){a=!0,o++;continue}if(!D(t,`VariableDeclaration`))break;let n=dae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},Gi=y({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=Eae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!lae(i)||!D(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(bi(i.test,a),Wi(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=b(i),s=o?e.scopes.ownScopeFor(o):null;if(_ae(i.test)||vae(i.test)||yae(i.test)||Cae(i.test,e.scopes,s)||Tae(i.test,i)||wae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(bi(i.consequent,c),Wi(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&&T(e,e=>{if(C(e))return!1;D(e,`BlockStatement`)?t(e.body??[]):D(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{C(e)&&e.async&&D(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Ki=(e,t,n)=>{let r=new Set;for(let e of t)T(e,e=>{if(!D(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return T(e,e=>{if(i||!D(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},qi=e=>{let t=e;for(;D(t,`ChainExpression`);)t=t.expression;if(!D(t,`CallExpression`)&&!D(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(D(r,`ChainExpression`)){r=r.expression;continue}if(D(r,`MemberExpression`)){D(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(D(r,`CallExpression`)){r=r.callee;continue}D(r,`Identifier`)&&n.push(r.name);break}return n},Ji=e=>{if(D(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&D(t.init,`AwaitExpression`))return t.init.argument??null}return D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Dae=e=>Jne.has(e)?!0:Yne.some(t=>e.startsWith(t)),Oae=e=>e?qi(e).some(Dae):!1,kae=e=>e?qi(e).some(e=>xr.has(e)):!1,Aae=e=>D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`),jae=e=>{let t=N(e);return D(t,`CallExpression`)?t.arguments.every(e=>{if(D(e,`SpreadElement`))return!1;let t=N(e);return D(t,`Identifier`)||D(t,`Literal`)}):!1},Mae=e=>{let t=Ji(e);if(!t)return!1;let n=N(t);return!D(n,`CallExpression`)&&!D(n,`NewExpression`)&&!D(n,`ImportExpression`)},Nae=(e,t)=>{let n=null;for(let r of e){if(Mae(r))return!0;let e=Ji(r);if(e&&Dn(e,t.scopes))return!0;let i=e?Oi(e,t.scopes):null;if(Aae(r)){if(i===null||!e||!jae(e)||n!==null&&n!==i)return!0;n=i}if(Oae(e)||kae(e)&&i===null)return!0}return!1},Pae=e=>{let t=e.parent;for(;t;){if(C(t)){let e=t.parent;if(e&&D(e,`CallExpression`)){let t=e.callee;if(D(t,`MemberExpression`)&&D(t.property,`Identifier`)&&t.property.name===`transaction`||D(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},Fae=(e,t)=>{let n=[];for(let r of e){let e=Ji(r);if(e){if(Ki(e,n,t.scopes))return;D(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`})},Iae=y({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=kt(e.filename??``),n=Gne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Sr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Pae(t))return;let n=[],r=()=>{n.length>=3&&(Nae(n,e)||Fae(n,e)),n.length=0};for(let e of t.body??[])D(e,`VariableDeclaration`)&&e.declarations?.length===1&&D(e.declarations[0].init,`AwaitExpression`)||D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),Yi=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`||D(t,`UnaryExpression`)&&t.operator===`void`},Xi=e=>{let t=e[0];return t&&D(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Zi="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.",Qi=new Set([`localStorage`,`sessionStorage`]),Lae=new Set([`window`,`globalThis`,`self`]),Rae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,zae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,Bae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,$i=e=>!(!Rae.test(e)||zae.test(e)&&!Bae.test(e)),Vae=e=>D(e,`Identifier`)?Qi.has(e.name):D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&Lae.has(e.object.name)&&D(e.property,`Identifier`)?Qi.has(e.property.name):!1,ea=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=A(e,e.name);if(!n?.initializer)return null;if(D(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!D(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!D(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=N(n.initializer);return D(a,`Identifier`)?ea(a,t)??a:a},ta=(e,t)=>{let n=N(e);if(na(n,new Set(t)))return!0;if(D(n,`ConditionalExpression`)){let e=N(n.consequent),r=N(n.alternate);return(Yi(e)||ta(e,t))&&(Yi(r)||ta(r,t))&&(!Yi(e)||!Yi(r))}if(D(n,`LogicalExpression`)){if(n.operator===`&&`)return ta(n.right,t);let e=N(n.left),r=N(n.right),i=ta(e,t),a=ta(r,t);return(i||Yi(e))&&(a||Yi(r))&&(i||a)}return!1},na=(e,t=new Set)=>{let n=N(e);if(t.has(n))return!1;if(t.add(n),Vae(n))return!0;if(D(n,`Identifier`)){let e=ea(n);return e?na(e,new Set(t)):!1}if(!D(n,`CallExpression`))return!1;let r=N(n.callee);if(!D(r,`Identifier`))return!1;let i=ea(r);if(!C(i))return!1;if(D(i,`ArrowFunctionExpression`)&&!D(i.body,`BlockStatement`))return ta(i.body,t);let a=!1;for(let e of Xe(i)){if(!e.argument)continue;let n=N(e.argument);if(!Yi(n)){if(!ta(n,t))return!1;a=!0}}return a},ra=e=>{if(D(e,`Literal`)&&typeof e.value==`string`)return e.value;if(D(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(D(e,`Identifier`)&&e.name!==`undefined`){let t=A(e,e.name);return!t?.initializer||D(t.initializer,`Identifier`)?null:ra(t.initializer)}return null},Hae=e=>!e.computed&&D(e.property,`Identifier`)?e.property.name:e.computed&&D(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,ia=(e,t,n,r,i=new Set)=>{let a=N(e);if(i.has(a))return null;if(i.add(a),D(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=ea(a);return s?ia(s,t,n,r,i):null}if(r&&D(a,`CallExpression`)&&D(a.callee,`MemberExpression`)&&!a.callee.computed&&D(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&D(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?ia(e,t,n,!0,i):null}return null},aa=new WeakMap,Uae=(e,t)=>{let n=aa.get(e);if(n)return n;if(!D(e,`FunctionDeclaration`)&&!D(e,`FunctionExpression`)&&!D(e,`ArrowFunctionExpression`))return aa.set(e,[]),[];let r=Xi(e.params).map(e=>{let n=N(e),r=D(n,`Identifier`)?n:D(n,`AssignmentPattern`)&&D(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return T(e.body,n=>{if(n!==e.body&&C(n))return!1;if(!D(n,`CallExpression`))return;let a=N(n.callee);if(!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`)||a.property.name!==`setItem`||!na(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=ia(o,r,t,!1),l=ia(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),aa.set(e,i),i},Wae=y({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:ht(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=ra(e);return t!==null&&$i(t)})&&e.report({node:t,message:Zi})},i=(t,n)=>{let i=ea(n),a=i?Uae(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&&D(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=N(e.callee);if(D(t,`MemberExpression`)&&!t.computed&&D(t.property,`Identifier`)&&t.property.name===`setItem`&&na(N(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else D(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=N(e.callee);D(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!D(n,`MemberExpression`))return;let r=Hae(n);!r||!$i(r)||na(n.object)&&e.report({node:n,message:Zi})}}})}),Gae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,Kae=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(`.`)),qae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Jae=new Set([`shipping`,`billing`]),Yae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),Xae=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&&Jae.has(t[n])&&(n+=1);let r=n<t.length&&Yae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?qae.has(i):Kae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Zae=new Set([`input`,`textarea`,`select`,`form`]),Qae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},oa=y({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:ht(e=>{let t=Qae(e.settings);return{JSXOpeningElement:n=>{let r=tr(n,e.settings);if(!Zae.has(r)&&!t.inputComponents.has(r))return;let i=P(n.attributes,`autoComplete`);if(!i)return;let a=Zn(i);a&&(Xae(a)||e.report({node:i,message:Gae(a)}))}}})}),B=(e,t)=>e?.find(e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&e.name.name===t),sa=e=>or(e)?.split(`.`).at(-1)??null,$ae=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!D(t,`ImportDeclaration`)||$t(t)||D(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ca=e=>{let t=$ae(e);if(!t||!D(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},la=(e,t,n,r)=>{if(!D(e,`JSXMemberExpression`))return null;if(D(e.object,`JSXIdentifier`)){let i=k(e.object,r.scopes);if(!i)return null;let a=ca(i);return a===null||!t.test(a)?null:bt(i.declarationNode)===n?e.property.name:null}if(!D(e.object,`JSXMemberExpression`)||!D(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=k(e.object.object,r.scopes);if(!i||!D(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ca(i);return a!==null&&t.test(a)?e.property.name:null},ua=(e,t)=>{let n=N(e);if(D(n,`JSXElement`)){da(n,t);return}if(D(n,`JSXFragment`)){fa(n.children,t);return}if(D(n,`ConditionalExpression`)){ua(n.consequent,t),ua(n.alternate,t);return}if(D(n,`LogicalExpression`)){n.operator!==`&&`&&ua(n.left,t),ua(n.right,t);return}if(D(n,`ArrayExpression`)){for(let e of n.elements)e&&(D(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ua(e,t));return}if(D(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(D(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}D(n,`JSXEmptyExpression`)||D(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},da=(e,t)=>{t.onElement(e)!==!1&&fa(e.children,t)},fa=(e,t)=>{for(let n of e)D(n,`JSXElement`)?da(n,t):D(n,`JSXFragment`)?fa(n.children,t):D(n,`JSXExpressionContainer`)?ua(n.expression,t):D(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},pa=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{T(e,e=>{D(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return fa(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=B(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},eoe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],ma=[`aria-label`,`aria-labelledby`,`title`],toe=e=>{if(!e.value||!D(e.value,`JSXExpressionContainer`))return!0;let t=N(e.value.expression);if(!D(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return F(n)||ma.some(e=>P(n,e))},noe=(e,t,n)=>{if(la(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=sa(e);return r===`Title`||r===`${t.namespaceName}Title`},ha=y({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 eoe){if(la(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(F(t.attributes))return;let r=B(t.attributes,`render`);if(r&&toe(r)||ma.some(e=>P(t.attributes,e)))return;let i=t.parent;if(!i||!D(i,`JSXElement`)||i.children.length===0)return;let a=pa(i.children,{isPartElementName:t=>noe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(la(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=sa(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}}})}),roe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,ga=[`aria-label`,`aria-labelledby`],_a=(e,t)=>la(e,roe,`Field`,t),va=(e,t)=>{if(_a(e,t)===`Label`)return!0;let n=sa(e);return n===`label`||n===`Label`||n===`FieldLabel`},ioe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(D(r,`JSXElement`)&&_a(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},aoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return fa(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(va(a,t))return n.hasLabel=!0,!1;let o=_a(a,t);if((o===`Control`||ioe(i,e,t))&&ga.some(e=>P(i.attributes,e)))return n.hasLabel=!0,!1;F(i.attributes)&&(n.sawUnprovableContent=!0);let s=B(i.attributes,`render`);if(s?.value&&T(s.value,e=>{D(e,`JSXOpeningElement`)&&ga.some(t=>P(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=sa(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,T(e,e=>{D(e,`JSXOpeningElement`)&&va(e.name,t)&&(n.hasLabel=!0)})}}),n},ya=y({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(_a(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!D(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.`})}})}),ba=(e,t)=>{let n=e.parent?.parent;for(;n;){if(D(n,`JSXAttribute`))return`unprovable`;if(D(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=sa(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},ooe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,xa=(e,t)=>la(e,ooe,`Tabs`,t),soe=y({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){xa(t.name,e)===`Tab`&&ba(t,t=>{let n=xa(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.`})}})}),coe=e=>{let t=e;for(;t;){if(D(t,`MemberExpression`)){if(D(t.property,`Identifier`)&&t.property.name===`document`||D(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(D(t,`Identifier`)&&t.name===`document`)}return!1},Sa=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`Identifier`)?t.name===`createElement`:D(t,`MemberExpression`)&&(t.computed?D(t.property,`Literal`)&&t.property.value===`createElement`:D(t.property,`Identifier`)&&t.property.name===`createElement`)?!coe(t.object):!1},Ca="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",loe=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}},wa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Ta=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return wa(r.value,t);if(D(r,`TemplateLiteral`)){let e=Fe(r);if(e!==null)return wa(e,t)}if(D(r,`ConditionalExpression`))return Ta(r.consequent,t,n)&&Ta(r.alternate,t,n);if(D(r,`Identifier`)){if(n.has(r.name))return!1;let e=A(r,r.name);return!e?.initializer||!Ea(e)?!1:Ta(e.initializer,t,new Set(n).add(r.name))}return!1},Ea=e=>{let t=e.bindingIdentifier.parent;if(!t||!D(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&D(n,`VariableDeclaration`)&&n.kind===`const`)},uoe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),doe=e=>{let t=e;for(;t.parent&&uoe.has(t.parent.type);)t=t.parent;return t},Da=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=doe(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(D(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!D(e,`Identifier`))return!1;let n=A(e,e.name);return n?Da(n.bindingIdentifier,t):!1}return!1},foe=e=>{let t=A(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!D(n,`Property`)||n.computed||n.value!==t||!Da(n)?!1:D(n.key,`Identifier`)?n.key.name===`type`:D(n.key,`Literal`)?n.key.value===`type`:!1},poe=/Type$/,moe=(e,t)=>{if(!poe.test(e.name))return!1;let n=A(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!D(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!D(i,`Property`)||i.computed||i.value!==r||!Da(i)?!1:Ta(r.right,t)},Oa=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Identifier`)){if(r.name===`type`||foe(r)||moe(r,t))return!0;if(n.has(r.name))return!1;let e=A(r,r.name);if(!e?.initializer||!Ea(e))return!1;let i=N(e.initializer);return!D(i,`ConditionalExpression`)&&!D(i,`LogicalExpression`)?!1:Oa(i,t,new Set(n).add(r.name))}if(D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(D(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Oa(r.left,t,n);if(D(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Oa(e,t,n))&&e.every(e=>Oa(e,t,n)||Ta(e,t))}return!1},hoe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],goe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},ka=e=>{for(let t of hoe){let n=st(e,e.name,t);if(n!==null)return n}return null},Aa=e=>e.computed?null:D(e.key,`Identifier`)?e.key.name:D(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,_oe=e=>{if(D(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(D(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(!(D(t,`FunctionDeclaration`)||D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},voe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!D(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Aa(n);if(!r)return!1;let i=n.parent;if(!i||!D(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!D(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!D(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=N(a.init);if(!D(s,`CallExpression`))return!1;let c=N(s.callee);if(!D(c,`Identifier`))return!1;let l=ka(c);if(l!==null)return goe[l]===r;let u=A(c,c.name)?.initializer;if(!u||!D(u,`FunctionDeclaration`)&&!D(u,`FunctionExpression`)&&!D(u,`ArrowFunctionExpression`))return!1;let d=_oe(u);return!d||d.length===0?!1:d.every(e=>{let n=N(e);if(!D(n,`ObjectExpression`))return!1;for(let e of n.properties){if(D(e,`SpreadElement`)||!D(e,`Property`))return!1;if(Aa(e)===r)return ja(e.value,t)}return!0})},ja=(e,t=new Set)=>{let n=N(e);if(D(n,`ObjectExpression`))return n.properties.every(e=>{if(D(e,`SpreadElement`))return ja(e.argument,t);if(!D(e,`Property`))return!1;let n=Aa(e);return n!==null&&n!==`type`});if(D(n,`CallExpression`)){let e=N(n.callee);return!D(e,`Identifier`)||ka(e)!==`mergeProps`?!1:n.arguments.every(e=>!D(e,`SpreadElement`)&&ja(e,t))}if(D(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=A(n,n.name);return r?r.initializer&&Ea(r)?ja(r.initializer,e):voe(r,e):!1}return!1},Ma=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},yoe=e=>{let t=L(e.attributes,`form`,!1);return!!(t&&I(t)?.trim())},boe=e=>!!rr(e?lt(e,`form`):void 0)?.trim(),xoe=e=>{if(!D(e,`CallExpression`)||!Sa(e))return!1;let t=e.arguments[0];return!!(t&&D(t,`Literal`)&&t.value===`form`)},Na=e=>{let t=e.parent;for(;t;){if(D(t,`JSXElement`)&&E(t.openingElement)===`form`||xoe(t))return!0;t=t.parent}return!1},Pa=y({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=loe(e.settings),n=Mr(e.settings),r=Je(e.filename);return{JSXOpeningElement(i){if(n&&r||E(i)!==`button`)return;let a=P(i.attributes,`type`);if(!a){if(n&&!yoe(i)&&!Na(i)||F(i.attributes)&&!i.attributes.every(e=>!D(e,`JSXSpreadAttribute`)||ja(e.argument)))return;e.report({node:i.name,message:Ca});return}let o=a.value;if(!o){Ma(e,a);return}if(D(o,`Literal`)){Ta(o,t)||Ma(e,a);return}if(D(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Oa(n,t))return;Ta(n,t)||Ma(e,a)}},CallExpression(i){if(n&&r||!Sa(i))return;let a=i.arguments[0];if(!a||!D(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=boe(o)||Na(i);if(!o||Yi(o)){if(n&&!s)return;e.report({node:i,message:Ca});return}if(!D(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(D(e,`SpreadElement`)){l=!0;continue}if(!D(e,`Property`))continue;let t=e.key;if(D(t,`Identifier`)&&t.name===`type`||D(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!D(e,`SpreadElement`)||ja(e.argument)))return;e.report({node:o,message:Ca});return}Oa(c,t)||Ta(c,t)||Ma(e,c)}}}}),Soe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Fa=e=>D(e,`Identifier`)||D(e,`MemberExpression`)&&!e.computed,Ia=e=>!e.value||!D(e.value,`JSXExpressionContainer`)?!1:Fa(e.value.expression),Coe=e=>{if(!e.value)return!0;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return D(t,`Literal`)&&t.value===!0}return!1},woe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(D(c,`JSXSpreadAttribute`)){o=!0;continue}if(!D(c,`JSXAttribute`))continue;let e=Pt(c.name);e===`checked`?(t=c,n=Ia(c)):e===`defaultChecked`&&!r?(r=c,i=Ia(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Coe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Toe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(D(c,`SpreadElement`)){o=!0;continue}if(!D(c,`Property`))continue;let e=c.key,l=null;if(D(e,`Identifier`)?l=e.name:D(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Fa(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Fa(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;D(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},La=y({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=Soe(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){E(e)===`input`&&n(woe(e.attributes))},CallExpression(e){if(!Sa(e))return;let t=e.arguments[0];if(!t||!D(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!D(r,`ObjectExpression`)||n(Toe(r))}}}}),Ra=y({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.`}),za=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(C(a)||((D(a,`ConditionalExpression`)||D(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&&!C(s);){if(D(s,`ConditionalExpression`)||D(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},Ba=(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(D(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=rn(en(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(D(n,`LogicalExpression`)&&n.right===t){let e=rn(en(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(D(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},Va=(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=p(r),c=new Set([...Ba(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=p(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},Ha=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Ba(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},Ua=`Component`,Wa=`PureComponent`,Eoe=e=>!D(e,`MemberExpression`)||!D(e.object,`Identifier`)||e.object.name!==`React`||!D(e.property,`Identifier`)?!1:e.property.name===Ua||e.property.name===Wa,Ga=e=>{if(!D(e,`ClassDeclaration`)&&!D(e,`ClassExpression`))return!1;let t=e.superClass;return t?Eoe(t)?!0:D(t,`Identifier`)?t.name===Ua||t.name===Wa:!1:!1},Doe=e=>{let t=e,n=e.parent;for(;n;){if(D(n,`IfStatement`)&&D(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||D(n,`ConditionalExpression`)&&D(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(D(n,`WhileStatement`)||D(n,`ForStatement`))&&n.body===t&&n.test&&D(n.test,`Literal`)&&!n.test.value||D(n,`LogicalExpression`)&&n.right===t&&D(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},V=(e,t)=>{if(Doe(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},Ooe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),koe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Ka=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=N(n.object);return D(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&O(n)===`now`},qa=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Literal`))return typeof r.value==`number`;if(D(r,`CallExpression`))return Ka(r,t);if(D(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),qa(e.initializer,t,n))}return D(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&qa(r.argument,t,n):!D(r,`BinaryExpression`)||!koe.has(r.operator)?!1:qa(r.left,t,new Set(n))&&qa(r.right,t,new Set(n))},Ja=(e,t)=>{if(Ka(e,t))return!0;let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=N(n.object);if(!D(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=O(n);if(r.name===`console`)return Ooe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&qa(a,t))},Ya=({node:e,scopes:t})=>{let n=N(e);if(D(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(D(n,`ThisExpression`))return`this`;if(!D(n,`MemberExpression`))return null;let r=Ya({node:n.object,scopes:t}),i=O(n);return r&&i?`${r}.${i}`:null},Aoe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),joe=e=>{if(D(e,`FunctionDeclaration`))return e.id&&D(e.id,`Identifier`)?e.id:null;let t=S(e),n=t.parent;if(!n||!D(n,`VariableDeclarator`)||n.init!==t||!D(n.id,`Identifier`))return null;let r=n.parent;return!r||!D(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},Xa=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let s=new Map(o),c=new Map;T(e,t=>{if(t!==e&&C(t)){let e=joe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=D(t,`VariableDeclarator`)&&t.init?N(t.init):null;if(D(t,`VariableDeclarator`)&&D(t.id,`Identifier`)&&D(n,`Identifier`)&&t.parent&&D(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=A(n,n.name)?.bindingIdentifier;e&&c.set(t.id,e)}});for(let[e,t]of c){let n=t,r=new Set([e]);for(;c.has(n)&&!r.has(n);)r.add(n),n=c.get(n)??n;let i=s.get(n);i&&s.set(e,i)}let l=(e,i=!1)=>{if(!i&&C(e)||(t(e),Sn(e,e=>l(e)),!D(e,`CallExpression`)))return;let o=N(e.callee);if(C(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(D(o,`Identifier`)){let e=A(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!D(o,`MemberExpression`)||!Aoe.has(O(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=N(t);if(C(i))i.body&&(!r||r(i))&&a(i.body,s);else if(D(i,`Identifier`)){let e=A(i,i.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s)}}};l(e,!0),i.delete(e)};a(e,new Map)},Za=(e,t)=>{if(!C(e))return;let n=e.body;n&&T(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Qa=(e,t,n,r=e,i=new Set)=>{let a=N(e);if(D(a,`ObjectExpression`))return a;if(!D(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||kn(o,r,n)||t.some(e=>ze(a,e,r,n))?null:(i.add(o.id),Qa(o.initializer,t,n,r,i))},$a=new Set([`window`,`globalThis`,`global`,`self`]),Moe=new Set([`body`,`documentElement`,`visualViewport`]),Noe=new Set([`initPlaces`,`places`]),eo=new Set([`forceUpdate`,`setState`]),to=`mobx-react`,no=`disposeOnUnmount`,Poe=[`handler`],ro=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`]}]]),Foe=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`]}]]),io=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Ioe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),ao=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),oo=(e,t)=>{let n=b(e);if(!n)return!1;let r=[];if(Za(n,t=>{D(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},so=e=>{if(!D(e,`CallExpression`))return null;let t=N(e.callee);return D(t,`Identifier`)?t.name:null},co=(e,t)=>{let n=so(e),r=D(e,`CallExpression`)?N(e.callee):null;return!!(n&&D(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&st(e,n,`mobx`)===`runInAction`)},lo=(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(D(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?N(i.init):null;return D(e,`Property`)&&D(n,`ObjectPattern`)&&D(a,`Identifier`)&&$a.has(a.name)&&t.isGlobalReference(a)?w(e,{allowComputedString:!0}):null}let a=r.initializer?N(r.initializer):null;if(D(a,`Identifier`))return lo(a,t,n);if(!D(a,`MemberExpression`))return null;let o=N(a.object);return D(o,`Identifier`)&&$a.has(o.name)&&t.isGlobalReference(o)?O(a):null},uo=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=N(e.callee);if(so(e)&&D(n,`Identifier`))return lo(n,t);if(!D(n,`MemberExpression`))return null;let r=N(n.object);return!D(r,`Identifier`)||!$a.has(r.name)||A(r,r.name)?null:O(n)},fo=e=>D(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:w(e,{allowComputedString:!0}),po=new WeakMap,mo=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},ho=e=>{let t=po.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(D(e,`ClassBody`)){for(let t of e.body){let e=fo(t);e&&(D(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(D(t,`MethodDefinition`)||D(t,`PropertyDefinition`))&&t.value&&C(t.value)&&r.set(e,t.value))}T(e,t=>{let n=D(t,`AssignmentExpression`)?N(t.left):D(t,`UpdateExpression`)?N(t.argument):null;if(!D(n,`MemberExpression`)||!D(N(n.object),`ThisExpression`))return;let r=O(n);if(!r)return;let a=mo(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?fo(a):null,isAssignment:D(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return po.set(e,a),a},go=(e,t,n)=>{if(!e||!D(e,`ClassBody`))return null;let r=ho(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},_o=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),Xa(e,e=>{let i=n(e);if(i===!1||!D(e,`CallExpression`))return i;let a=N(e.callee);if(!D(a,`MemberExpression`)||!D(N(a.object),`ThisExpression`))return;let o=O(a),s=o?go(t,o,e):null;s&&_o(s,t,n,r)}))},Loe=(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),Xa(e,e=>{if(n.cfg&&!V(e,n))return!1;if(o&&r.add(e),!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||!D(N(i.object),`ThisExpression`))return;let s=O(i),c=s?go(t,s,e):null;c&&a(c,o||oo(e,n))}))};return a(e,!1),r},Roe=(e,t,n,r)=>{let i=b(e),a=b(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,l=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let u={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return T(n??t,t=>{if(!D(t,`CallExpression`))return;let i=N(t.callee);if((D(i,`Identifier`)?c(i,r.scopes):D(i,`MemberExpression`)&&D(N(i.object),`ThisExpression`)?go(n,O(i)??``,t):null)!==e)return;let a=b(t);if(!a)return;let o=l(a);o.canInvokeAfterSuspension&&(u.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(oo(t,r)?u.canInvokeAfterSuspension=!0:u.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,u),u};return l(i).canInvokeAfterSuspension},vo=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return Xa(e,e=>{if(i)return!1;if(co(e,n))return i=!0,!1;if(!D(e,`CallExpression`))return;let a=N(e.callee);if(!D(a,`MemberExpression`)||!D(N(a.object),`ThisExpression`))return;let o=O(a);if(o&&eo.has(o))return i=!0,!1;let s=o?go(t,o,e):null;if(s&&vo(s,t,n,r))return i=!0,!1}),i},yo=(e,t,n=new Set)=>{let r=N(e);if(n.has(r))return null;if(n.add(r),C(r))return r;if(D(r,`Identifier`)){let e=A(r,r.name)?.initializer;return e?yo(e,t,n):null}let i=D(r,`CallExpression`)?N(r.callee):null,a=(D(r,`CallExpression`)&&D(i,`MemberExpression`)&&O(i)===`bind`&&r.arguments?.[0]&&D(N(r.arguments[0]),`ThisExpression`)?N(i.object):null)??r,o=D(a,`MemberExpression`)&&D(N(a.object),`ThisExpression`)?O(a):null;return o?go(t,o,r):null},zoe=(e,t,n)=>{let r=yo(e,t);if(!C(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return Xa(i,e=>{if(a)return;if(co(e,n)){a=!0;return}if(!D(e,`CallExpression`))return;let r=N(e.callee);if(D(r,`MemberExpression`)&&D(N(r.object),`ThisExpression`)){let i=O(r);if(i&&eo.has(i)){a=!0;return}let o=i?go(t,i,e):null;if(o&&!vo(o,t,n))return;a=!0}}),a},Boe=(e,t,n)=>{let r=new Set,i=new Set;_o(e,t,e=>{if(D(e,`VariableDeclarator`)){let t=e.init?N(e.init):null,i=D(t,`CallExpression`)?N(t.callee):null;if(t&&(D(t,`NewExpression`)||D(t,`ObjectExpression`)||D(t,`ArrayExpression`)||D(t,`CallExpression`)&&D(i,`Identifier`)&&Noe.has(i.name))){let t=new Set;_i(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(D(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;_i(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(D(e,`AssignmentExpression`)&&D(e.left,`MemberExpression`)){let t=N(e.right),r=D(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(D(e,`CallExpression`))for(let t of e.arguments??[]){let e=N(t),a=D(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},Voe=e=>{let t=N(e);for(;D(t,`MemberExpression`);){let e=N(t.object);if(D(e,`ThisExpression`))return O(t);t=e}return null},bo=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!D(n,`ClassBody`))return!0;let r=ho(n);if(r.accessorNames.has(e))return!1;let i=mo(t,n),a=i?fo(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`)})},Hoe=(e,t)=>{if(!D(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(C(n))return n.parent?.parent===t;if(D(n,`IfStatement`)||D(n,`ConditionalExpression`)||D(n,`LogicalExpression`)||D(n,`SwitchStatement`)||D(n,`TryStatement`)||D(n,`CatchClause`)||D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return!1;n=n.parent}return!1},Uoe=(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(!D(r,`AssignmentExpression`)||r.right!==t||!D(r.left,`MemberExpression`)||!D(N(r.left.object),`ThisExpression`)||!Hoe(r,n))return[];let i=O(r.left);return i&&bo(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!D(a,`AssignmentExpression`))return null;let o=b(r.declarationNode);if(!o||b(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return Za(o,e=>{if(D(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},xo=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=Uoe(i,t,n);if(a)return xo(a,t,n,r);if(e.kind===`const`&&e.initializer&&D(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=N(e.initializer);return D(a,`Identifier`)||D(a,`MemberExpression`)?xo(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(D(i,`ThisExpression`))return`this`;if(!D(i,`MemberExpression`))return null;let a=Voe(i);if(!a){let e=N(i.object),n=O(i);return!D(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Moe.has(n)?null:`${e.name}.${n}`}if(a&&(!D(N(i.object),`ThisExpression`)||!bo(a,i,n)))return null;let o=xo(i.object,t,n,r),s=O(i);return o&&s?`${o}.${s}`:null},So=(e,t,n)=>{let r=N(e);return D(r,`Literal`)?JSON.stringify(r.value):xo(r,t,n)},Woe=(e,t,n)=>{let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(D(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=xo(r,t,n);return i?`reference:${i}`:null},Goe=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||kn(r,n,t)||ze(n,`capture`,n,t))return null;let i=Ya({node:n,scopes:t});return i?`options:${i}`:null},Koe=(e,t)=>{let n=N(e);return D(n,`Literal`)?!n.value:D(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Co=(e,t,n,r)=>{let i=N(e.callee);if(!D(i,`MemberExpression`))return null;let a=O(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Poe}: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=So(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||D(a,`SpreadElement`))return null;let o=i===`event`?Woe(a,n,r):So(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&&D(d,`SpreadElement`))return null;let f=`false`;if(d){let e=N(d);if(Koe(e,n))f=`false`;else if(D(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Qa(d,[`capture`],n),t=Goe(d,n);if(!e||e.properties.some(e=>!D(e,`Property`)||w(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`capture`);if(r&&D(r,`Property`)&&Koe(r.value,n))f=`false`;else if(r&&D(r,`Property`)&&D(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},qoe=(e,t,n,r)=>{let i=Co(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},Joe=(e,t,n)=>{let r=N(e.callee);if(!D(r,`MemberExpression`))return[];let i=xo(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||D(o,`SpreadElement`))return a;let s=Woe(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},Yoe=(e,t,n)=>{let r=e.arguments[2];if(!r||D(r,`SpreadElement`))return null;let i=Qa(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`signal`);if(!a||!D(a,`Property`))return null;let o=N(a.value);if(!D(o,`MemberExpression`)||O(o)!==`signal`)return null;let s=xo(o.object,t,n);return s?`abort:${s}`:null},Xoe=(e,t,n,r,i)=>{let a=Ioe.get(t)??[n.releaseMethodName],o=Co(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?Yoe(e,r,i):null;return c&&s.push(c),io.has(t)?[...s,...Joe(e,r,i)]:s},wo=(e,t,n)=>{let r=S(e),i=r.parent,a=D(i,`AssignmentExpression`)&&i.right===r?i.left:D(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?xo(a,t,n):null},Zoe=(e,t)=>{let n=N(e.callee);if(D(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&st(e,n.name,to)===no;if(!D(n,`MemberExpression`))return!1;let r=N(n.object);return O(n)===no&&D(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&we(e,r.name,to)},To=(e,t,n)=>{let r=N(e.callee);if(D(r,`MemberExpression`)){let i=O(r),a=i?Foe.get(i):void 0;if(a){let r=qoe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=Joe(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!D(N(r.object),`ThisExpression`)){let e=xo(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=xo(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=xo(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=uo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!D(a,`SpreadElement`)){let e=xo(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 Xa(e,e=>{if(a||e.range[0]>=r)return;if(D(e,`ThrowStatement`)||D(e,`NewExpression`))return a=!0,!1;if(!D(e,`CallExpression`)||To(e,n,t).length>0||Ja(e,n))return;let o=N(e.callee);if(D(o,`MemberExpression`)){if(D(N(o.object),`ThisExpression`)){let r=O(o),a=r?go(t,r,e):null;if(a&&!Eo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=c(o,n);if(!(s&&!Eo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Qoe=(e,t,n)=>{let r=new Map;return _o(e,t,e=>{if(!D(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!D(i,`SpreadElement`)?N(i):null;if(!Zoe(e,n.scopes)||!D(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||D(o,`SpreadElement`))return;let s=yo(o,t);if(!C(s))return;let c=new Map;_o(s,t,e=>{if(D(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(!Ha(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||!C(e)||r.has(e))return i;r.add(e);let a=null;Xa(e,t=>{D(t,`AwaitExpression`)&&b(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;_o(e,t,i=>{if(!D(i,`CallExpression`)||a!==null&&b(i)===e&&i.range[0]>a)return;let s=Eo(e,t,n.scopes,i.range[0]),l=N(i.callee);if(D(l,`Identifier`)){let e=Do(c(l,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(D(l,`MemberExpression`)&&D(N(l.object),`ThisExpression`)){let e=O(l),a=Do(e?go(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)Ha(e,r,n)&&i.add(t);return i},$oe=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!C(e)||r.has(e))return i;r.add(e);let o=null;Xa(e,t=>{D(t,`AwaitExpression`)&&b(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),Xa(e,s=>{if(!D(s,`CallExpression`)||o!==null&&b(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),Ha(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Ha(e,[s],n))return;let l=N(s.callee),u=D(l,`MemberExpression`)&&D(N(l.object),`ThisExpression`)?O(l):null,d=$oe(u?go(t,u,s):D(l,`Identifier`)?c(l,n.scopes):null,t,n,new Set(r));for(let[e,t]of d)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Ha(e,r,n))continue;let a=1;[...r.keys()].every(t=>Ha(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},ese=(e,t,n)=>{let r=new Map;return _o(e,t,e=>{if(D(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(C(n))return null;if(D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return n;n=n.parent}return null},tse=(e,t,n)=>{let r=n.scopes,i=new Map;_o(e,t,e=>{if(!D(e,`CallExpression`))return;if(n.cfg&&!V(e,n))return!1;let a=N(e.callee);if(!D(a,`MemberExpression`))return;let o=O(a),s=o?ro.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=>za(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=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||kn(e,i,n))return!1;let a=A(i,i.name)?.initializer;return a?(r.add(e.id),ko(a,t,n,r)):!1}if(D(i,`MemberExpression`)){let e=O(i),a=N(i.object);if(e!==`current`)return ko(a,t,n,r);if(!D(t,`ClassBody`)||!D(a,`MemberExpression`))return!1;let o=O(a),s=N(a.object);if(!o||!D(s,`ThisExpression`))return!1;let c=t.body?.find(e=>fo(e)===o);if(!c||!D(c,`PropertyDefinition`)||c.static||!D(c.value,`CallExpression`)||!j(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?rse(l):null,d=!1;return u&&Xa(u,e=>{if(d||e.range[0]>=i.range[0]||!D(e,`AssignmentExpression`))return;let t=N(e.left);D(t,`MemberExpression`)&&D(N(t.object),`ThisExpression`)&&O(t)===o&&(d=!0)}),!d}return!1},Ao=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||kn(e,i,n))return!1;let a=A(i,i.name)?.initializer;return a?(r.add(e.id),Ao(a,t,n,r)):!1}if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(!D(a,`MemberExpression`))return!1;let o=O(a),s=N(a.object);if((o===`select`||o===`selectAll`)&&D(s,`Identifier`)&&(we(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!D(e,`SpreadElement`)&&ko(e,t,n))}return Ao(a.object,t,n,r)},nse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!D(e,`CallExpression`))return null;let c=N(e.callee),l=D(c,`MemberExpression`)?O(c):null;if(l&&ro.has(l)&&D(c,`MemberExpression`)){let u=ro.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=N(c.object),m=ko(p,i,s),h=Ao(p,i,s);for(;;){if(p=N(p),D(p,`CallExpression`)){p=N(p.callee);continue}if(D(p,`MemberExpression`)){p=N(p.object);continue}break}let g=D(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,v=u?Co(e,u,s,i):null,ee=u?Xoe(e,l,u,s,i):[],te=ee.flatMap(e=>n.get(e)??[]),ne=ee.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),re=te.filter(t=>Va(e,[t],a)).length,ie=Oo(e),ae=!!(ie&&te.some(t=>Oo(t)===ie&&Va(e,[t],a))),oe=v?r.get(v)??1:1,se=!!(v&&(Va(e,ne,a)||Va(e,te,a)&&(l===`addEventListener`||ae||re>=oe)));if(!(!f&&!_&&!se&&!m&&!h))return null;let ce=wo(e,s,i),le=N(c.object),ue=D(le,`Identifier`)?st(e,le.name,`react-native`):null,de=D(le,`Identifier`)&&(ue!==null&&ao.has(ue)||s.isGlobalReference(le)&&ao.has(le.name)),fe=l===`subscribe`&&ce?[`returned:unsubscribe:${ce}`,`returned:call:${ce}`]:(l===`addEventListener`||l===`addListener`)&&de&&ce?[`returned:remove:${ce}`]:[];return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:io.has(l)?v:null,registrationCount:io.has(l)?oe:1,releaseKeys:u?[...Xoe(e,l,u,s,i),...fe]:fe}}let u=uo(e,s);if(u===`setInterval`){let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!zoe(e.arguments[0],i,s))return null;let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},jo=e=>(D(e,`MethodDefinition`)||D(e,`PropertyDefinition`))&&C(e.value)?e.value:null,rse=e=>{let t=jo(e);return t&&C(t)?t.body??null:null},ise=y({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||!Ga(n))return;let r=t.body??[],i=r.find(e=>fo(e)===`componentWillUnmount`),a=Do(i?jo(i):null,t,e),o=$oe(i?jo(i):null,t,e);for(let n of r){let r=fo(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=rse(n);if(!i)continue;let s=Boe(i,t,e.scopes),c=ese(i,t,e.scopes),l=tse(i,t,e),u=Loe(i,t,e),d=[];if(_o(i,t,n=>{if(e.cfg&&!V(n,e))return!1;let r=nse(n,s,c,l,t,e,u.has(n)||Roe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Qoe(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 Va(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}}}})}),Mo=(e,t,n={})=>{if(!e||!t)return e===t;let r=N(e),i=N(t);if(r!==e||i!==t)return Mo(r,i,n);if(e.type!==t.type)return!1;if(D(e,`ThisExpression`))return!0;if(D(e,`Identifier`)&&D(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(D(e,`PrivateIdentifier`)&&D(t,`PrivateIdentifier`))return e.name===t.name;if(D(e,`Literal`)&&D(t,`Literal`))return e.value===t.value;if(D(e,`MemberExpression`)&&D(t,`MemberExpression`))return e.computed===t.computed?Mo(e.object,t.object,n)&&Mo(e.property,t.property,e.computed?n:{}):!1;if(D(e,`CallExpression`)&&D(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},ase=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),ose=/button|link|nav|anchor/i,sse=/(?:button|link|anchor)$/i,cse=/^[A-Z]/,lse=[`onClick`,`onPress`],use=e=>Yi(N(e)),No=(e,t)=>{let n=N(e);if(Yi(n))return!0;let r=k(n,t);return r?.kind!==`const`||!r.initializer?!1:Yi(N(r.initializer))},Po=(e,t,n=new Set)=>{let r=N(e);if(No(r,t))return null;if(D(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(D(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&D(e.declarationNode,`VariableDeclarator`)&&D(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Po(e.initializer,t,n)):r}if(D(r,`ArrowFunctionExpression`)||D(r,`FunctionExpression`)||D(r,`FunctionDeclaration`)){let e=N(r.body);if(!D(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return D(t,`ExpressionStatement`)?t.expression:D(t,`ReturnStatement`)&&t.argument?N(t.argument):null}return r},dse=(e,t)=>!e.value||!D(e.value,`JSXExpressionContainer`)?null:Po(e.value.expression,t),Fo=(e,t)=>{let n=P(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(D(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!D(n.value,`JSXExpressionContainer`))return!0;let r=N(n.value.expression);return!D(r,`Literal`)||r.value!==!1},fse=(e,t)=>{let n=P(e.attributes,t);if(!n?.value)return!1;if(D(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!D(n.value,`JSXExpressionContainer`))return!0;let r=N(n.value.expression);return D(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!use(r)},Io=e=>{if(D(e,`JSXText`))return e.value.trim().length>0;if(D(e,`JSXElement`))return Lo(e);if(D(e,`JSXFragment`))return e.children.some(e=>Io(e));if(!D(e,`JSXExpressionContainer`))return!1;let t=N(e.expression);return D(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:use(t)?!1:D(t,`JSXElement`)?Lo(t):D(t,`JSXFragment`)?t.children.some(e=>Io(e)):!0},Lo=e=>fse(e.openingElement,`aria-label`)||fse(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Io(e)),pse=e=>{let t=P(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=ri(t.value);return n!==null&&n<0},mse=(e,t)=>ar(e,t)||Fo(e,`hidden`),hse=(e,t)=>{let n=e.openingElement,r=or(n.name);if(!r)return!1;if(Kr.has(r)){if(!ase.has(r))return!1}else if(t){if(!cse.test(r)||!sse.test(r))return!1}else if(!cse.test(r)||!ose.test(r))return!1;return t?r===`a`&&!P(n.attributes,`href`)||Fo(n,`disabled`)||Fo(n,`isDisabled`)||Fo(n,`aria-disabled`)||pse(n)?!1:Lo(e):!0},gse=(e,t,n,r)=>{let i=e=>gse(e,t,n,r);if(D(e,`JSXElement`)){if(t&&mse(e.openingElement,r))return!1;if(hse(e,t!==null)){if(!t)return!0;for(let r of lse){let i=P(e.openingElement.attributes,r),a=i?dse(i,n):null;if(a&&Mo(t,a))return!0}}return e.children.some(e=>i(e))}return D(e,`JSXFragment`)?e.children.some(e=>i(e)):t?D(e,`JSXExpressionContainer`)?i(e.expression):D(e,`LogicalExpression`)?i(e.left)||i(e.right):D(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},Ro=(e,t,n,r)=>{if(!e||!D(e,`JSXElement`))return!1;let i=t?dse(t,n):null;return t&&!i?!1:e.children.some(e=>gse(e,i,n,r))},_se=new Set([`focus`,`select`]),vse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),yse=new Set([`getElementById`,`querySelector`]),bse=new Set([`global`,`globalThis`,`window`]),xse=e=>{if(!e)return null;let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return null;let n=N(t.callee);if(!D(n,`MemberExpression`))return null;let r=n.property;return D(r,`Identifier`)?r.name:null},Sse=(e,t)=>{let n=xse(e);return n!==null&&(_se.has(n)||t&&vse.has(n))},Cse=(e,t)=>{let n=N(e);return D(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!D(n,`MemberExpression`)||!D(n.object,`Identifier`)||!D(n.property,`Identifier`)||n.property.name!==`document`?!1:bse.has(n.object.name)&&t.isGlobalReference(n.object)},wse=e=>{let t=N(e);return D(t,`Identifier`)||D(t,`Literal`)?!0:D(t,`TemplateLiteral`)&&t.expressions.every(e=>wse(e))},Tse=(e,t)=>{if(!D(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!D(n.id,`Identifier`)||!n.init)return null;let r=N(n.init);if(!D(r,`CallExpression`)||r.arguments.length!==1||D(r.arguments[0],`SpreadElement`)||!wse(r.arguments[0]))return null;let i=N(r.callee);return!D(i,`MemberExpression`)||!D(i.property,`Identifier`)||!yse.has(i.property.name)||!Cse(i.object,t)?null:n.id.name},Ese=e=>D(e,`ReturnStatement`)?e.argument===null:!D(e,`BlockStatement`)||e.body.length!==1?!1:Ese(e.body[0]),Dse=e=>{if(!D(e,`IfStatement`)||e.alternate||!Ese(e.consequent))return!1;let t=N(e.test),n=D(t,`ChainExpression`)?t.expression:t;if(!D(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=N(n.callee),i=D(r,`MemberExpression`)?N(r.object):null;return D(r,`MemberExpression`)&&D(r.property,`Identifier`)&&r.property.name===`closest`&&D(i,`MemberExpression`)&&D(i.object,`Identifier`)&&D(i.property,`Identifier`)&&i.property.name===`target`&&D(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Ose=(e,t)=>{if(!D(e,`ExpressionStatement`))return!1;let n=N(e.expression);if(!D(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=N(n.callee);if(!D(r,`MemberExpression`))return!1;let i=N(r.object);return D(i,`Identifier`)&&i.name===t&&D(r.property,`Identifier`)&&r.property.name===`focus`},kse=(e,t,n)=>{if(!e)return!1;if(Sse(e,n))return!0;if(!D(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!Dse(r[0]),a=r[i],o=a?Tse(a,t):null;return o?r.length===i+2&&Ose(r[i+1],o):i>0?!1:r.every(e=>D(e,`ExpressionStatement`)&&Sse(e.expression,n))},Ase=(e,t)=>Yi(e)&&(!D(e,`Identifier`)||t.isGlobalReference(e)),zo=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ConditionalExpression`)){let e=N(r.consequent),i=N(r.alternate),a=null;return Ase(e,t)&&(a=zo(i,t,n)),Ase(i,t)&&(a=zo(e,t,n)),a?{...a,isConditional:!0}:null}if(D(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 D(r,`ArrowFunctionExpression`)||D(r,`FunctionExpression`)||D(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},jse=(e,t)=>{let n=zo(e,t);return n?kse(n.handlerFunction.body??null,t,!n.isConditional):!1},Mse=(e,t)=>!e.value||!D(e.value,`JSXExpressionContainer`)?!1:jse(e.value.expression,t),Bo=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=Zn(t);return n!==null&&Rr.has(n)},Vo=e=>{if(D(e,`Identifier`)||D(e,`PrivateIdentifier`))return e.name},Nse=e=>{if(D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`))return e},Pse=(e,t)=>{for(let n of e.body){if(!D(n,`MethodDefinition`)&&!D(n,`PropertyDefinition`)||Vo(n.key)!==t)continue;let e=Nse(n.value);if(e)return e}},Fse=(e,t)=>{for(let n of e.properties){if(!D(n,`Property`)||Vo(n.key)!==t)continue;let e=Nse(n.value);if(e)return e}},Ho=e=>{let t=Vo(e.property);if(t===void 0)return;let n=e.object;if(D(n,`ThisExpression`)){let n=e.parent;for(;n;){if(D(n,`ClassBody`))return Pse(n,t);if(D(n,`ObjectExpression`)){let e=Fse(n,t);if(e)return e}n=n.parent}return}if(D(n,`Identifier`)){let e=A(n,n.name);if(D(e?.initializer,`ObjectExpression`))return Fse(e.initializer,t)}},Ise=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Lse=e=>{if(!e)return!1;let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return!1;let n=t.callee;return!D(n,`MemberExpression`)||!D(n.property,`Identifier`)?!1:Ise.has(n.property.name)},Rse=e=>{if(!e)return!1;if(Lse(e))return!0;if(D(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!D(e,`ExpressionStatement`)||!Lse(e.expression))return!1;return!0}return!1},Uo=e=>{if(!e.value||!D(e.value,`JSXExpressionContainer`))return!1;let t=N(e.value.expression);return D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)?Rse(t.body):D(t,`MemberExpression`)?Rse(Ho(t)?.body):!1},zse=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],Bse=[`onClick`,`onClickCapture`],Vse=new Set([...Bse,...zse].map(e=>e.toLowerCase())),Hse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Use=(e,t)=>{let n=N(e);if(D(n,`ObjectExpression`))return n;if(!D(n,`Identifier`))return null;let r=k(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=N(r.initializer);return D(i,`ObjectExpression`)?i:null},Wse=(e,t,n,r)=>{let i=Use(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(D(e,`SpreadElement`)){if(!Wse(e.argument,t,n,r)){a=!1;break}continue}if(!D(e,`Property`)){a=!1;break}let i=w(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Hse.has(o)){a=!1;break}Vse.has(o)&&n.set(o,e.value)}return r.delete(i),a},Gse=(e,t)=>{let n=new Map;for(let r of e)if(D(r,`JSXSpreadAttribute`)&&!Wse(r.argument,t,n,new Set))return null;return n},Kse=new Set([`tr`,`td`,`th`,`canvas`]),qse=new Set([`motion`,`styled`]),Jse=e=>{let t=e.name;if(!D(t,`JSXMemberExpression`))return null;let n=t.object;if(!D(n,`JSXIdentifier`)||!qse.has(n.name))return null;let r=t.property.name;return r&&Kr.has(r)?r:null},Yse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Xse=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!D(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Yse.has(r.toLowerCase()))},Zse=e=>{if(!D(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!D(e,`MemberExpression`))return null;let t=e.property;return D(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},Wo=e=>{if(!e||typeof e!=`object`)return!1;if(Zse(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},Qse=e=>{let t=N(e);if(D(t,`Identifier`)){let e=A(t,t.name);if(!e?.initializer)return null;t=N(e.initializer)}return D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`)?t:null},$se=e=>!e.value||!D(e.value,`JSXExpressionContainer`)?null:Qse(e.value.expression),ece=e=>{let t=$se(e);return t?Wo(t.body??null):!1},tce=(e,t)=>e===`li`&&!!(P(t.attributes,`onMouseEnter`)||P(t.attributes,`onMouseOver`)),nce=y({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=Mr(e.settings),n=Je(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Jse(r)??tr(r,e.settings);if(!Kr.has(i)||i===`label`||!Kse.has(i)&&ni(i,r))return;let a=Gse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=P(r.attributes,`onClick`)??P(r.attributes,`onClickCapture`),c=Bse.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Uo(s)||s&&Mse(s,e.scopes)||c&&jse(c,e.scopes))return;let l=c?Qse(c):null;l&&Wo(l.body??null)||Xse(r)||tce(i,r)||s&&ece(s)||Ro(r.parent,null,e.scopes,e.settings)||s&&Ro(r.parent,s,e.scopes,e.settings)||ar(r,e.settings)||Bo(r)||zse.some(e=>P(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`."})}}}}),rce=Hn({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)},ace=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],oce=(e,t,n,r)=>{if(!D(t,`MemberExpression`))return;let i=O(t),a=z(t.object,r);i&&a&&(Go(e.memberMutationCandidatesByReceiverIdentity,a,n),ice(e,a,i,n))},sce=(e,t,n)=>{if(D(t,`AssignmentExpression`)){let r=N(t.left),i=z(r,n);i&&Go(e.receiverAssignmentCandidatesByIdentity,i,t),oce(e,r,t,n)}else D(t,`UnaryExpression`)&&t.operator===`delete`&&oce(e,N(t.argument),t,n);if(!D(t,`CallExpression`))return;let r=N(t.callee);if(!D(r,`MemberExpression`)||O(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(D(i,`Literal`)&&typeof i.value==`string`&&a&&!D(a,`SpreadElement`)){let r=z(a,n);r&&(Go(e.memberMutationCandidatesByReceiverIdentity,r,t),ice(e,r,i.value,t))}},cce=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=N(e.callee);if(!D(r,`MemberExpression`))return!1;let i=N(r.object);return O(r)===`defineProperty`&&D(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&D(e.arguments[1],`Literal`)&&e.arguments[1].value===t},lce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Ko=(e,t)=>{let n=N(e);return D(n,`MemberExpression`)&&O(n)===t?n.object:null},uce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},qo=(e,t)=>{let n=D(e,`FunctionDeclaration`)?e.id:D(e.parent,`VariableDeclarator`)&&e.parent.init===e&&D(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(!D(r,`CallExpression`)||N(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},dce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!D(i,`MethodDefinition`)||!D(a,`MethodDefinition`)||i.parent!==a.parent||!D(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Jo=(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(dce(o,s,e,n))return!0;if(uce(o,s)){let t=qo(s,n);return!t&&D(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Jo(e,t,n,a)))}if(uce(s,o)){let r=qo(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Jo(e,t,n,a)))}let r=qo(o,n),i=qo(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Jo(e,t,n,a)||r.some(e=>Jo(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},fce=(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},pce=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&C(N(i))?N(i):null},mce=(e,t,n,r)=>Yo(e,n).some(e=>e.callExpression!==t&&Jo(e.callExpression,t,n)&&Xo(e.callExpression,e.argumentIndex,n,r,new Map)),hce=(e,t,n,r)=>{let i=pce(N(e),n);if(!i||!C(i))return!1;let a=[];return T(i.body,e=>{if(e!==i.body&&C(e))return!1;D(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let i=z(e.argument,n);if(!i)return!1;let a=N(e.argument),o=D(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&mce(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Ko(D(r,`AssignmentExpression`)?r.left:D(r,`UnaryExpression`)?r.argument:r,t);return D(r,`CallExpression`)&&(i=cce(r,t,n)),i&&Jo(r,e,n)})})},gce=new WeakMap,Yo=(e,t,n=new Set)=>{let r=gce.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 Yo(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,N(t)===e?(e=t,r=!0):D(t,`Property`)&&t.value===e&&D(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(D(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||D(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||D(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(D(i,`VariableDeclarator`)&&i.init===e&&D(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(D(i,`AssignmentExpression`)&&i.right===e){let e=N(i.left),n=D(e,`Identifier`)?e:D(e,`MemberExpression`)&&D(N(e.object),`Identifier`)?N(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(D(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 gce.set(e,c),c},_ce=(e,t,n)=>{if(!C(e))return!1;if(D(e,`ArrowFunctionExpression`)&&!D(e.body,`BlockStatement`))return z(e.body,n)===t;let r=[];return T(e.body,t=>{if(t!==e.body&&C(t))return!1;D(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>D(e,`ReturnStatement`)&&e.argument&&z(e.argument,n)===t)},vce=(e,t)=>{let n=e;for(;n.parent&&N(n.parent)===n;)n=n.parent;let r=n.parent;if(!D(r,`VariableDeclarator`)||r.init!==n||!D(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},Xo=(e,t,n,r,i)=>{let a=pce(e,n);if(!a||!C(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(!D(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)||Yo(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?Xo(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!_ce(a,l,n))return!1;let u=vce(e,n);return u?Yo(u,n).some(e=>Xo(e.callExpression,e.argumentIndex,n,r,i)):!1},yce=(e,t,n,r,i,a=[],o)=>{if(hce(t,n,i,e))return!0;let s=z(t,i),c=N(t),l=D(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&mce(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?ace(e,s,n):[],...a.flatMap(t=>ace(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!lce(i.scopes.scopeFor(e),u)&&!Jo(e,r,i))continue;let t=null;if(D(e,`AssignmentExpression`)){if(s!==null&&z(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Jo(e,r,i)){d=!0;break}continue}t=Ko(e.left,n)}else if(D(e,`UnaryExpression`)&&e.operator===`delete`)t=Ko(e.argument,n);else if(D(e,`CallExpression`)&&cce(e,n,i)){let n=e.arguments[0];t=n&&!D(n,`SpreadElement`)?n:null}if(!t)continue;let c=z(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Jo(e,r,i)&&(d=!0))}return d||fce(p,r,i)},Zo=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>sce(t,n,e),hasProvenMutation:(n,r,i,a,o)=>yce(t,n,r,i,e,a,o)}},Qo=(e,t)=>!!(e&&D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&e.property.name===t),$o=e=>Jr(e)||(e.kind!==`let`&&e.kind!==`var`||!D(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),es=e=>D(e,`Identifier`)?e.name:D(e,`Literal`)&&typeof e.value==`string`?e.value:null,ts=e=>{if(!D(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&D(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!D(n,`Property`)||!D(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!D(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!D(a,`TSTypeLiteral`))return null;let o=es(n.key);if(!o)return null;for(let e of a.members)if(D(e,`TSPropertySignature`)&&es(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},ns=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&D(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>D(e,`TSTypeParameter`)&&D(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},rs=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},bce=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=N(e.callee);if(D(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=N(n.object);return D(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(`.`)),Sce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Cce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),wce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),Tce=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),is=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`],Ece=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:xce.has(e)||Sce.test(e),as=(e,t,n)=>{if(D(e,`TSTypeReference`)){if(!D(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return Ece(r,n)&&!rs(e,r,t)&&!ns(e,r)}if(!D(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(D(i,`TSNullKeyword`)||D(i,`TSUndefinedKeyword`))){if(!as(i,t,n))return!1;r=!0}return r},Dce=(e,t)=>!D(e,`TSTypeReference`)||!D(e.typeName,`Identifier`)||!as(e,t,`dom-event-target`)?null:e.typeName.name,os=(e,t,n)=>D(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),ss=(e,t,n=new Set)=>{let r=N(e);if(os(r,`window`,t))return[`Window`,`EventTarget`];if(os(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(D(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=ts(e),a=i?Dce(i,t):null;if(a)return is(a);let o=$o(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),ss(o,t,s)}if(D(r,`NewExpression`)){let e=N(r.callee);if(D(e,`Identifier`)&&Cce.has(e.name))return is(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(D(r,`MemberExpression`)){let e=O(r);if(e===`body`||e===`documentElement`)return is(`HTMLElement`)}if(D(r,`CallExpression`)){if(bce(r,t))return is(`MediaQueryList`);let e=N(r.callee),i=D(e,`MemberExpression`)?O(e):null;if(i===`matchMedia`&&D(e,`MemberExpression`)&&ss(e.object,t,n).includes(`Window`))return is(`MediaQueryList`);if(i===`createElement`)return is(`HTMLElement`);if(i===`createElementNS`)return is(`SVGElement`);if(i&&wce.has(i))return is(`Element`)}return[`EventTarget`]},Oce=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Cce]).some(t=>Nce(e,t,n,new Set)),kce=(e,t,n)=>{let r=e,i=!1;for(;D(r,`TSAsExpression`)||D(r,`TSTypeAssertion`)||D(r,`TSSatisfiesExpression`);){if(as(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(D(a,`Identifier`)){let e=t.symbolFor(a),n=e?Jr(e):null;if(!n)return!1;a=N(n)}return i&&D(a,`Identifier`)||i&&D(a,`MemberExpression`)||i&&D(a,`ObjectExpression`)?!1:i&&D(a,`NewExpression`)?Oce(a.callee,n,t):i},Ace=e=>{if(!D(e,`MemberExpression`)||!D(N(e.object),`ThisExpression`))return null;let t=O(e);if(!t)return null;let n=e.parent;for(;n&&!D(n,`ClassBody`);){if((D(n,`FunctionDeclaration`)||D(n,`FunctionExpression`))&&!D(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!D(e,`PropertyDefinition`)||e.static)&&es(e.key)===t)return e;return null},jce=e=>{if(!D(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&D(t,`TSTypeAnnotation`)?t.typeAnnotation:null},Mce=(e,t,n)=>{if(!D(e,`CallExpression`))return null;let r=N(e.callee);if(!D(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!C(a)||a.async||a.generator?null:(n.add(i.id),a)},Nce=(e,t,n,r)=>{let i=N(e);if(D(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=Jr(e);return a?(r.add(e.id),Nce(a,t,n,r)):!1}if(!D(i,`MemberExpression`)||O(i)!==t)return!1;let a=N(i.object);return os(a,`window`,n)||os(a,`globalThis`,n)},Pce=(e,t,n)=>{let r=N(e);for(;D(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Jr(e);if(!i)return!1;n.add(e.id),r=N(i)}if(!D(r,`CallExpression`)||!j(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!j(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!D(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&as(i,t,`dom-event-target`))},cs=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(kce(e,n,t))return!0;let a=N(e);if(D(a,`Identifier`)){if(i&&(os(a,`document`,n)||os(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=ts(e);if(o&&as(o,n,t))return!0;let s=$o(e);return s?(r.add(e.id),cs(s,t,n,r)):!1}if(D(a,`NewExpression`))return Oce(a.callee,t,n);if(D(a,`CallExpression`)){let e=N(a.callee);if(i&&D(e,`MemberExpression`)&&wce.has(O(e)??``)&&cs(e.object,t,n,r))return!0;let o=Mce(a,n,r);return!!(o&&ge(o,n,e=>cs(e,t,n,new Set(r)),void 0,`every`))}if(D(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(D(e,`Literal`)&&e.value===null)&&!(D(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>cs(e,t,n,new Set(r)))}if(!D(a,`MemberExpression`))return!1;let o=Ace(a);if(o&&D(o,`PropertyDefinition`)){let e=jce(o);if(e&&as(e,n,t)||o.value&&cs(o.value,t,n,r))return!0}if(!i)return!1;let s=O(a);if(s===`current`)return Pce(a.object,n,r);let c=N(a.object);return s===`document`&&(os(c,`window`,n)||os(c,`globalThis`,n))?!0:s!==null&&Tce.has(s)&&cs(c,t,n,r)},Fce=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Ice=e=>Fce.test(kt(e??``)),ls=(e,t)=>{let n=N(e);return D(n,`Identifier`)?t.has(n.name):D(n,`SpreadElement`)?ls(n.argument,t):D(n,`ObjectExpression`)?n.properties.some(e=>D(e,`Property`)?ls(e.value,t):D(e,`SpreadElement`)&&ls(e.argument,t)):D(n,`ArrayExpression`)?n.elements.some(e=>e&&ls(e,t)):D(n,`ConditionalExpression`)?ls(n.consequent,t)||ls(n.alternate,t):D(n,`LogicalExpression`)?ls(n.left,t)||ls(n.right,t):D(n,`SequenceExpression`)?n.expressions.some(e=>ls(e,t)):!1},us=(e,t,n)=>{let r=N(t);if(D(e,`Identifier`)){ls(r,n)&&n.add(e.name);return}if(D(e,`AssignmentPattern`)){us(e.left,r,n);return}if(D(e,`ObjectPattern`)&&D(r,`ObjectExpression`)){for(let t of e.properties){if(!D(t,`Property`))continue;let e=es(t.key);if(!e)continue;let i=r.properties.find(t=>D(t,`Property`)&&es(t.key)===e);D(i,`Property`)&&us(t.value,i.value,n)}return}if(D(e,`ArrayPattern`)&&D(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&us(i,e,n)}},Lce=(e,t,n)=>{if(!D(e,`CallExpression`)||!n.filename)return!1;let r=N(e.callee);if(!D(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`import`)return!1;let a=i.declarationNode,o=a.parent,s=v(a);if(!s||!D(o,`ImportDeclaration`)||typeof o.source.value!=`string`)return!1;let c=an(n.filename,o.source.value,s);if(!c||!C(c))return!1;let l=c.params[t];if(!D(l,`Identifier`))return!1;let u=new Set([l.name]),d=!1;return T(c.body,e=>{if(d)return!1;if(D(e,`VariableDeclarator`)&&e.init){us(e.id,e.init,u);return}if(D(e,`AssignmentExpression`)&&D(e.left,`Identifier`)&&ls(e.right,u)){u.add(e.left.name);return}if(D(e,`CallExpression`)){let t=N(e.callee);(D(t,`MemberExpression`)&&O(t)===`preventDefault`&&ls(t.object,u)||e.arguments.some(e=>!D(e,`SpreadElement`)&&ls(e,u)))&&(d=!0);return}if(D(e,`NewExpression`)&&e.arguments.some(e=>!D(e,`SpreadElement`)&&ls(e,u))){d=!0;return}let t=D(e,`AssignmentExpression`)?N(e.left):null;D(e,`AssignmentExpression`)&&(D(t,`MemberExpression`)&&ls(t.object,u)||ls(e.right,u))&&(d=!0)}),!d},Rce=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),zce=new Set([`catch`,`finally`,`then`]),ds=(e,t,n=new Set)=>{let r=(e,n)=>{let i=N(e);if(C(i))return i.async;if(!D(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=N(e);if(D(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),ds(e.initializer,t,r)}if(D(i,`NewExpression`)){let e=N(i.callee);return D(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(D(a,`Identifier`))return r(a,n);if(!D(a,`MemberExpression`))return!1;let o=N(a.object);return zce.has(O(a)??``)?ds(a.object,t,n):!!(Rce.has(O(a)??``)&&D(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Bce=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Vce=new Set([`catch`,`finally`,`then`]),fs=e=>{if(!C(e))return!1;let t=!1;return T(e,n=>{if(t||n!==e&&C(n))return!1;D(n,`CallExpression`)&&D(n.callee,`MemberExpression`)&&O(n.callee)===`preventDefault`&&(t=!0)}),t},Hce=(e,t)=>{let n=!1;return T(e,e=>{if(n)return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&D(e.left,`Identifier`)&&e.left.name===t&&fs(e.right)&&(n=!0)}),n},Uce=e=>{if(!e)return!1;if(fs(e))return!0;if(D(e,`Identifier`)){let t=A(e,e.name);return t?fs(t.initializer??void 0)?!0:Hce(t.scopeOwner,e.name):!1}if(D(e,`MemberExpression`)){let t=Ho(e);return t?fs(t):!1}return!1},ps=(e,t)=>{if(!e)return;let n=N(e);if(C(n))return n;if(D(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&C(r))return r;let i=A(n,n.name),a;return e&&i&&T(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(D(r,`AssignmentExpression`)&&r.operator===`=`&&D(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=N(r.right);a=C(e)?e:void 0}}),a}return D(n,`MemberExpression`)?Ho(n):void 0},Wce=(e,t,n)=>{if(!Lce(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(N(e)===r||D(e,`UnaryExpression`)&&e.operator===`!`||D(e,`LogicalExpression`)){r=e;continue}return D(e,`IfStatement`)&&e.test===r||D(e,`ConditionalExpression`)&&e.test===r||D(e,`WhileStatement`)&&e.test===r||D(e,`DoWhileStatement`)&&e.test===r||D(e,`ForStatement`)&&e.test===r}return!1},Gce=(e,t)=>{let n=ps(e,t);if(!n){let n=e?N(e):void 0;if(!n||!D(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=N(e);if(D(r,`Identifier`)){if(Bce.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=Jr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!D(r,`MemberExpression`))return!1;let a=N(r.object);return Bce.has(O(r)??``)&&D(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&N(n.parent)===N(n);)n=n.parent;let r=n.parent;if(D(r,`NewExpression`)){let e=N(r.callee);return r.arguments.some(e=>e===n)&&D(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!D(r,`CallExpression`))return!1;if(N(r.callee)===N(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=N(r.callee);if(i(a))return!1;if(D(a,`Identifier`)||!D(a,`MemberExpression`))return!0;let o=O(a);return!(Vce.has(o??``)&&ds(a.object,t.scopes)||o===`addEventListener`&&cs(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!C(e))return!1;let s=r.get(e)??new Set;if(s.has(n))return!1;s.add(n),r.set(e,s);let c=e.params[n];if(!c)return!i;let l=D(c,`AssignmentPattern`)?c.left:c;if(!D(l,`Identifier`))return!(i&&D(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=N(e);if(!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=N(e);if(p(n))return!0;if(D(n,`SpreadElement`))return m(n.argument);if(D(n,`MemberExpression`)){let e=N(n.object);if(D(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=O(n);if(D(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>D(e,`Property`)&&Vo(e.key)===r);return!!(D(t,`Property`)&&m(t.value))}if(D(e,`ArrayExpression`)&&D(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return D(n,`ObjectExpression`)?n.properties.some(e=>D(e,`Property`)?m(e.value):D(e,`SpreadElement`)&&m(e.argument)):D(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):D(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):D(n,`LogicalExpression`)?m(n.left)||m(n.right):D(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=N(n);if(D(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(D(e,`AssignmentPattern`)){h(e.left,r);return}if(D(e,`RestElement`)&&D(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(D(e,`ObjectPattern`)&&D(r,`ObjectExpression`)){for(let t of e.properties){if(D(t,`RestElement`)){h(t,r);continue}if(!D(t,`Property`))continue;let e=Vo(t.key);if(!e)continue;let n=r.properties.find(t=>D(t,`Property`)&&Vo(t.key)===e);D(n,`Property`)&&h(t.value,n.value)}return}if(D(e,`ArrayPattern`)&&D(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return T(e.body,n=>{if(g||n!==e.body&&C(n)&&!a(n))return!1;if(D(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(D(n,`AssignmentExpression`)&&m(n.right)){if(D(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(D(n,`AssignmentExpression`)){let e=N(n.left),t=N(n.right);if(D(e,`MemberExpression`)&&O(e)===`returnValue`&&p(e.object)&&D(t,`Literal`)&&t.value===!1){g=!0;return}}if(D(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(D(n,`NewExpression`)){n.arguments.some(e=>!D(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!D(n,`CallExpression`))return;let r=N(n.callee);if(D(r,`MemberExpression`)&&O(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=ps(n.callee,t);(!s&&!Wce(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},ms=(e,t)=>!!e.properties?.some(e=>D(e,`Property`)&&D(e.key,`Identifier`)&&e.key.name===`passive`&&D(e.value,`Literal`)&&e.value.value===t),hs=y({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(Ice(e.filename))return pn;let t=Zo(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=N(n.callee);if(!Qo(a,`addEventListener`)||!cs(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,ss(a.object,e.scopes),t=>cs(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!D(o,`Literal`)||typeof o.value!=`string`||!m.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||D(c,`SpreadElement`))return;let l=ps(c,e)??c,u=r.get(l);if(u===void 0&&(u=Uce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=Gce(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!D(f,`ObjectExpression`)||ms(f,!1)||ms(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),Qo(N(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),gs=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},_s=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},vs=e=>gs(e)||_s(e),Kce=(e,t)=>{let n=t?en(e):e;return D(n,`Identifier`)?n.name:D(n,`MemberExpression`)&&D(n.property,`Identifier`)?n.property.name:null},ys=(e,t=!1)=>{let n=S(e);for(;;){let e=n.parent;if(!e||!D(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Kce(e.callee,t);if(!r||!Cn.has(r))return n;n=S(e)}},qce=(e,t)=>{let n=ys(e,t),r=n.parent;return r&&D(r,`VariableDeclarator`)&&D(r.id,`Identifier`)&&r.init===n&&vs(r.id.name)?r.id.name:null},bs=(e,t=!1)=>(D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`))&&e.id?vs(e.id.name)?e.id.name:null:qce(e,t),xs=e=>D(e,`MemberExpression`)&&!e.computed&&D(e.property,`Identifier`)?e.property.name:null,Jce=[`react`,`use-context-selector`,`react-tracked`],Ss=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!D(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Jce.includes(t.source.value)?null:t.source.value},Cs=e=>Ss(e)!==null&&!!(e&&(D(e.declarationNode,`ImportDefaultSpecifier`)||D(e.declarationNode,`ImportNamespaceSpecifier`))),Yce=(e,t)=>{if(!D(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!D(n.declarationNode,`VariableDeclarator`)||!D(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!D(r,`Property`)||w(r,{allowComputedString:!0})!==`createContext`)return!1;let i=N(n.initializer);return D(i,`Identifier`)&&Cs(k(i,t))},Xce=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){if(Yce(n,t))return!0;let e=k(n,t);return Ss(e)!==null&&!!(e&&bt(e.declarationNode)===`createContext`)}if(!D(n,`MemberExpression`)||(xs(n)??(n.computed&&D(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=N(n.object);return D(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Cs(k(r,t)):!1},ws=(e,t)=>{let n=N(e);return D(n,`CallExpression`)&&Xce(n.callee,t)},Ts=(e,t)=>{let n=new Set;if(!D(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(D(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!D(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!D(r,`VariableDeclarator`)||!D(r.id,`Identifier`)||!r.init||!M(r.init)||!ws(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Es=e=>{if(D(e,`FunctionDeclaration`)&&D(e.id,`Identifier`))return e.id;let t=S(e),n=t.parent;if(D(n,`VariableDeclarator`)&&D(n.id,`Identifier`))return n.id;if(D(n,`AssignmentExpression`)&&n.right===t&&D(n.left,`Identifier`))return n.left;if(D(n,`CallExpression`)){let e=n.parent;if(D(e,`VariableDeclarator`)&&D(e.id,`Identifier`))return e.id}return null},Ds=e=>Es(e)?.name??null,Os=(e,t)=>{let n=Es(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[]},Zce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),ks=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(D(t,`VariableDeclaration`))return t.kind===`const`;if(!Zce.has(t.type))return!1;t=t.parent??null}return!1},As=(e,t)=>{if(!D(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=bt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Qce=(e,t)=>{if(!As(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=bn(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},js=(e,t,n,r)=>{if(!D(e,`JSXIdentifier`))return!1;if(r&&As(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},Ms=(e,t,n)=>D(e,`JSXMemberExpression`)?e.property.name===`Provider`&&js(e.object,t,n,!0):Qce(e,n)||js(e,t,n,!1),Ns="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.",Ps=new Set([`flatMap`,`map`]),$ce=new Set([`forwardRef`,`memo`]),ele=new Set([`useCallback`,`useMemo`]),tle=new Set([`createElement`]),Fs=e=>{let t=N(e);return D(t,`ObjectExpression`)||D(t,`ArrayExpression`)||D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`)},nle=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&D(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&Ut(n,e.scopeOwner)?!0:!!(e.initializer&&D(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},rle=e=>C(e.scopeOwner)?e.scopeOwner:b(e.scopeOwner),ile=(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},Is=e=>{let t=ys(e);return!!(t.parent&&D(t.parent,`ExportDefaultDeclaration`))},ale=e=>{if(!D(e,`FunctionExpression`)||!e.id)return!1;let t=S(e);if(ys(e)!==t)return!1;let n=t.parent;return!(n&&D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`))},ole=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=N(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),D(a,`ConditionalExpression`)){let e=N(a.test);D(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(D(a,`LogicalExpression`)){let e=N(a.left);if(D(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(D(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(D(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(D(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(D(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(D(e,`SpreadElement`)?e.argument:e);continue}if(D(a,`CallExpression`)&&j(a,tle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&D(e,`ObjectExpression`))for(let t of e.properties){if(!D(t,`Property`)||t.computed)continue;let e=t.key;(D(e,`Identifier`)&&e.name===`children`||D(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(D(a,`Identifier`)){let e=A(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&ks(e)&&nle(e,a)&&b(e.bindingIdentifier)===b(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(D(a,`JSXElement`)||D(a,`JSXFragment`)){r.push(...a.children);continue}D(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Ls=(e,t,n)=>ge(t,n.scopes,t=>ole(t,e,n),n.cfg),sle=(e,t,n)=>e.arguments[0]===t&&j(e,ele,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(D(e.callee,`MemberExpression`)&&Ps.has(O(e.callee)??``)),cle=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=c(e.callee,n.scopes);if(!i||!C(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!D(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=S(e.identifier),r=t.parent;return!!(r&&D(r,`CallExpression`)&&r.callee===t&&b(r)===i&&Ut(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Ls(r,i,n))}))return!1;let o=b(e);return!!(o&&(bs(o)!==null||Is(o))&&Ls(e,o,n))},lle=(e,t)=>{let n=Os(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||!D(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&j(r,$ce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:sle(r,n,t)||!cle(r,n,t)})},ule=(e,t)=>{let n=S(e),r=n.parent;if(!r||!D(r,`CallExpression`))return!1;let i=b(r);return!i||bs(i)===null&&!Is(i)?!1:r.arguments[0]===n&&D(r.callee,`MemberExpression`)&&Ps.has(O(r.callee)??``)&&Ls(r,i,t)?!0:r.callee===n&&Ls(r,i,t)||r.arguments.some(e=>e===n)&&cle(r,n,t)},dle=y({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)&&V(t,e),n=new Set;return{Program(t){n=Ts(t,e.scopes)},JSXOpeningElement(r){if(!Ms(r.name,n,e.scopes))return;let i=b(r);if(!i)return;let a=ule(i,e),o=Is(i);if((ale(i)||lle(i,e))&&!a&&!o||bs(i)===null&&!o&&!a)return;let s=B(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!D(c,`JSXExpressionContainer`))return;let l=N(c.expression);if(!D(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:ite(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:at(n.identifier)}))).toSorted((e,t)=>ile(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!Fs(d.assignedExpression))return;e.report({node:s,message:Ns});return}let f=A(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&nle(f,l)&&rle(f)===i&&Fs(f.initializer)&&e.report({node:s,message:Ns})}}}}),fle=[`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`],Rs=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`:fle.find(t=>e===t||e.startsWith(`${t}/`))??null,ple=/[\p{L}\p{Nd}]/u,zs=e=>ple.test(e),Bs=e=>Lr.has(e),Vs=(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},H=e=>{let t=[],n=0;for(let r of Vs(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},mle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),hle=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),gle=e=>e.toLowerCase()===`hidden`,_le=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=H(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},vle=e=>{let t=P(e.attributes,`className`)??P(e.attributes,`class`);if(!t)return!1;let n=I(t);return n===null?t.value&&D(t.value,`JSXExpressionContainer`)&&D(t.value.expression,`TemplateLiteral`)?_le(t.value.expression).some(gle):!1:H(n).some(gle)},yle=e=>{let t=P(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(D(n,`Literal`))return n.value!==`false`&&!!n.value;if(D(n,`JSXExpressionContainer`)){let e=N(n.expression);if(D(e,`Literal`))return!!e.value}return!0},ble={display:`none`,visibility:`hidden`},xle=e=>{let t=P(e.attributes,`style`);if(!t?.value||!D(t.value,`JSXExpressionContainer`))return!1;let n=N(t.value.expression);if(!D(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!D(e,`Property`)||e.computed)continue;let t=e.key,n=D(t,`Identifier`)?t.name:D(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=ble[n];if(!r)continue;let i=N(e.value);if(D(i,`Literal`)&&i.value===r)return!0}return!1},Sle=(e,t)=>ar(e,t)||yle(e)||xle(e),Cle=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=P(t.attributes,`type`),r=n?Zn(n):null;return!r||r.toLowerCase()!==`file`||!vle(t)?!1:!!P(t.attributes,`ref`)},wle=[`link`,`canvas`],Tle=new Set([`alt`,`aria-label`,`aria-labelledby`]),Hs=`label`,Ele=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??[]}},Us=(e,t)=>{let n=new Set(t);for(let t of e){if(D(t,`JSXSpreadAttribute`))return!0;if(!D(t,`JSXAttribute`)||!D(t.name,`JSXIdentifier`))continue;let e=Pt(t.name);if(e&&(Tle.has(e)||n.has(e)))return t.value?D(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Ws=e=>{if(!e?.value)return!1;let t=e.value;if(D(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(D(t,`JSXExpressionContainer`)){let e=N(t.expression);if(D(e,`JSXEmptyExpression`))return!1;if(D(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(D(e,`TemplateLiteral`)){let t=Fe(e);if(t!==null)return t.trim().length>0}return!0}return!0},Dle=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!D(r,`JSXAttribute`))&&Pt(r.name)?.toLowerCase()===n)return r}},Ole=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(D(r,`SpreadElement`))return null;let e=N(r);if(D(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(D(e,`TemplateLiteral`)){let t=Fe(e);if(t===null)return null;n.push(t);continue}if(D(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||D(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(D(e,`ArrayExpression`)){let r=Ole(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},kle=(e,t)=>{if(D(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!D(e,`MemberExpression`))return!1;let n=N(e.object);return D(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Gs=(e,t)=>{let n=N(e);if(D(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(D(n,`TemplateLiteral`)){let e=Fe(n);return e===null||e.trim().length>0}if(D(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(D(n,`UnaryExpression`)&&n.operator===`void`||D(n,`UnaryExpression`)&&n.operator===`!`||D(n,`ArrowFunctionExpression`)||D(n,`FunctionExpression`)||D(n,`ClassExpression`))return!1;if(D(n,`ArrayExpression`)){let e=Ole(n,t);return e===null||e.trim().length>0}if(kle(n,t)||D(n,`CallExpression`)&&kle(n.callee,t))return!1;if(D(n,`ConditionalExpression`))return Gs(n.consequent,t)&&Gs(n.alternate,t);if(D(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Gs(e,t):!1}if(D(n,`LogicalExpression`)){let e=N(n.left);if(!D(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Gs(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Gs(r?n.right:e,t):Gs(r?e:n.right,t)}return!0},Ale=(e,t)=>e?.value?D(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:D(e.value,`JSXExpressionContainer`)?Gs(e.value.expression,t):!0:!1,Ks=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},jle=e=>typeof e==`string`?Ks(`literal`,e):typeof e==`number`?Ks(`literal`,String(e)):null,qs=e=>{let t=N(e);if(D(t,`Identifier`))return t.name;if(D(t,`MemberExpression`)){if(t.computed)return null;let e=qs(t.object),n=t.property;return e===null||!D(n,`Identifier`)?null:`${e}.${n.name}`}return null},Mle=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=qs(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return Ks(`template`,r.join(``))},Js=e=>{let t=N(e);if(D(t,`Literal`)){let e=jle(t.value);return e===null?[]:[e]}if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e!==null){let t=Ks(`literal`,e);return t===null?[]:[t]}let n=Mle(t);return n===null?[]:[n]}if(D(t,`ConditionalExpression`))return[...Js(t.consequent),...Js(t.alternate)];let n=qs(t);if(n!==null){let e=Ks(`identifier`,n);return e===null?[]:[e]}return[]},Nle=e=>{if(!e?.value)return[];let t=e.value;if(D(t,`Literal`)){let e=jle(t.value);return e===null?[]:[e]}return D(t,`JSXExpressionContainer`)?Js(t.expression):[]},Ple=/^Icon($|[A-Z0-9_])|Icon$/,Fle=(e,t)=>{if(t.iconComponentNames.has(e)||Ple.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},Ys=(e,t,n)=>{let r=N(e);if(D(r,`JSXEmptyExpression`))return!1;if(D(r,`Literal`))return typeof r.value==`string`?zs(r.value):typeof r.value==`number`;if(D(r,`TemplateLiteral`)){let e=Fe(r);return e===null||zs(e)}return D(r,`ConditionalExpression`)?Ys(r.consequent,t,n)||Ys(r.alternate,t,n):D(r,`LogicalExpression`)?r.operator===`&&`?Ys(r.right,t,n):Ys(r.left,t,n)||Ys(r.right,t,n):D(r,`JSXElement`)||D(r,`JSXFragment`)?Xs(r,t,n):!0},Xs=(e,t,n)=>{if(t>n.depth)return!1;if(D(e,`JSXExpressionContainer`))return Ys(e.expression,t,n);if(D(e,`JSXText`))return zs(e.value);if(D(e,`JSXFragment`))return e.children.some(e=>Xs(e,t+1,n));if(D(e,`JSXElement`)){if(Us(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=tr(e.openingElement,n.settings);if(gs(t)&&!n.controlComponents.includes(t)&&!Fle(t,n))return!0}for(let r of e.children)if(Xs(r,t+1,n))return!0}return!1},Ile=(e,t)=>Us(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>Xs(e,1,t)),Lle=e=>D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`)||D(e,`FunctionDeclaration`),Rle=(e,t)=>{if(e===Hs||e===`Label`)return!0;let n=P(t.attributes,`component`);return n?Zn(n)===Hs:!1},zle=(e,t)=>{let n=e.parent,r=!1;for(;n&&!D(n,`JSXAttribute`);){if(Lle(n)&&(r=!0),D(n,`JSXElement`)){let e=n.openingElement;if(Sle(e,t.settings))return`hidden`;let i=tr(e,t.settings);if(!r&&Rle(i,e)&&Ile(n,t)||gs(i)&&Ws(P(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Ble=e=>{let t=e.parent;for(;t;){if(D(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},Vle=e=>{let t=e.parent;for(;t;){if(D(t,`VariableDeclarator`))return D(t.id,`Identifier`)?t.id.name:null;if(Lle(t)){if(D(t,`FunctionDeclaration`)&&t.id&&D(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&D(e,`VariableDeclarator`)&&D(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Zs=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){t.add(n.name);return}if(D(n,`CallExpression`)){let e=N(n.callee);D(e,`Identifier`)&&t.add(e.name);return}if(D(n,`LogicalExpression`)){Zs(n.left,t),Zs(n.right,t);return}D(n,`ConditionalExpression`)&&(Zs(n.consequent,t),Zs(n.alternate,t))},Hle=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(D(i,`JSXExpressionContainer`)){Zs(i.expression,r);continue}(D(i,`JSXElement`)||D(i,`JSXFragment`))&&Hle(i,t+1,n,r)}},Ule=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=P(t.attributes,`type`);if(!n)return!0;let r=Zn(n);return r===null?!0:hle.has(r.toLowerCase())},Wle=y({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=Mr(e.settings),n=Ele(e.settings),r=Je(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={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`||!Rs(t)))for(let t of e.specifiers??[]){if(!D(t.local,`Identifier`))continue;let e=t.local.name;D(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=tr(a,e.settings);if(Rle(u,a)&&Ile(i,l)&&!Ble(i)){let e=P(a.attributes,`htmlFor`);for(let t of Nle(e))o.add(t);u===Hs&&Hle(i,1,l,s)}if(wle.includes(u)||n.ignoreElements.includes(u))return;let d=P(a.attributes,`role`),f=d?Zn(d):null;if(f&&n.ignoreRoles.includes(f)||Sle(a,e.settings)||Cle(u,a))return;let p=Kr.has(u),m=(!t||!mle.has(u))&&ni(u,a),h=t&&f===`separator`&&!P(a.attributes,`tabIndex`),g=f!==null&&Bs(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=P(a.attributes,`type`),t=e?Zn(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Ws(P(a.attributes,`value`)))return}if(!(p&&Ale(Dle(a.attributes,`title`),e.scopes))&&!(Ule(u,a)&&Ws(P(a.attributes,`placeholder`)))&&!Us(a.attributes,n.labelAttributes)&&!Ble(i)&&zle(i,l)===null){if(u!==`select`){for(let e of i.children)if(Xs(e,1,l))return}c.push({opening:a,controlIdKeys:Nle(P(a.attributes,`id`)),enclosingBindingName:Vle(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`."})}}}}),Qs=(e,t,n)=>{let r=N(e);if(D(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)Qs(e,t,n);return}if(D(r,`JSXFragment`)){for(let e of r.children)Qs(e,t,n);return}if(n){if(D(r,`JSXExpressionContainer`)){Qs(r.expression,t,!0);return}if(D(r,`ConditionalExpression`)){let e=rn(en(r.test));if(e!==null){Qs(e?r.consequent:r.alternate,t,!0);return}Qs(r.consequent,t,!0),Qs(r.alternate,t,!0);return}if(D(r,`LogicalExpression`)){for(let e of At(r))Qs(e,t,!0);return}if(D(r,`ArrayExpression`)){for(let e of r.elements)e&&!D(e,`SpreadElement`)&&Qs(e,t,!0);return}if(D(r,`SequenceExpression`)){if(r.expressions.length===0)return;Qs(en(r),t,!0)}}},$s=(e,t={})=>{let n=[];for(let r of e.children)Qs(r,n,t.includeStaticExpressionBranches===!0);return n},Gle=new Set([`grid`,`table`,`treegrid`]),Kle=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(D(i,`JSXAttribute`)){if(Pt(i.name)?.toLowerCase()===t)return!1;continue}if(D(i,`JSXSpreadAttribute`)&&Er(i.argument,t,!1,n.scopes))return!0}}return!1},ec=(e,t,n,r)=>n.isUnknown&&Kle(e,t,r),qle=e=>e.attribute?I(e.attribute):rr(e.expression),tc=(e,t,n)=>{if(e.attribute)return kr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=N(e.expression),i=rr(r);return i===null?D(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Or(r)||D(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Jle=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=qt(e.attributes,n,!1);if(ec(e,n,r,t))return null;if(tc(r,n.startsWith(`aria-`),t))return!0}return!1},nc=e=>{for(let t of e){if(D(t,`JSXElement`)&&E(t.openingElement)===`caption`)return t;if(D(t,`JSXFragment`)){let e=nc(t.children);if(e)return e}}return null},Yle=(e,t)=>ar(e.openingElement,t.settings)?!1:jr(e,t.settings),Xle=(e,t,n)=>{let r=e.parent;for(;r;){if(D(r,`JSXElement`)){if(ar(r.openingElement,n.settings))return!1;if(E(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Zle=(e,t)=>{let n=e.parent;for(;n;){if(D(n,`JSXElement`)&&ar(n.openingElement,t.settings))return!0;n=n.parent}return!1},rc=y({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(E(n)!==`table`||pr(e,n)||ar(n,e.settings)||Zle(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>ec(n,t,qt(n.attributes,t,!1),e)))return;let r=qt(n.attributes,`children`,!1),i=qt(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=qt(n.attributes,`role`,!1);if(ec(n,`role`,a,e))return;if(a.isPresent){let t=qle(a);if(t===null){if(tc(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Ir.has(e));if(e&&!Gle.has(e))return}}if(!$s(t).some(n=>E(n)===`th`&&Xle(n,t,e)))return;let o=nc(t.children),s=Jle(n,e);s!==null&&(o&&Yle(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.`}))}})}),ic=(e,t,n)=>{let r=N(e);if(C(r))return[r];if(D(r,`Identifier`)){if(n){let e=k(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:C(e.declarationNode)?[e.declarationNode]:e.initializer&&C(N(e.initializer))?[N(e.initializer)]:[]}let e=A(t,r.name);return e?.initializer&&C(N(e.initializer))?[N(e.initializer)]:[]}if(D(r,`ConditionalExpression`))return[...ic(r.consequent,t,n),...ic(r.alternate,t,n)];if(D(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?ic(e,t,n):[]}return[]},ac=(e,t)=>C(e)?D(e.body,`BlockStatement`)?Xe(e).flatMap(e=>e.argument?ic(e.argument,e,t):[]):ic(e.body,e,t):[],oc=(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&&D(c,`MemberExpression`)&&c.object===o&&O(c)===`current`&&(o=S(c),c=o.parent),n.includeReactRefContainers&&D(c,`CallExpression`)&&c.arguments[0]===e&&j(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=S(c),c=o.parent),!D(c,`VariableDeclarator`)||c.init!==o||!D(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},sc=(e,t,n)=>j(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),cc=(e,t)=>sc(e,Tt,t),Qle=new Set([`useMemo`,`useCallback`,`useRef`]),$le=new Set([`useRef`]),lc=new Set([`debounce`,`throttle`]),uc=new Set([`cancel`,`flush`]),eue=new Set([`document`,`window`]),tue=new Set([`then`,`catch`,`finally`]),dc=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),fc=e=>{if(!D(e,`CallExpression`))return!1;let t=N(e.callee);if(D(t,`Identifier`)){if(!lc.has(t.name))return!1;let e=A(t,t.name);return!e?.initializer||!D(e.initializer,`ImportSpecifier`)&&!D(e.initializer,`ImportDefaultSpecifier`)?!1:dc(rt(t,t.name))}if(D(t,`MemberExpression`)&&lc.has(O(t)??``)){let e=N(t.object);if(!D(e,`Identifier`))return!1;let n=A(e,e.name);return!n?.initializer||!D(n.initializer,`ImportNamespaceSpecifier`)&&!D(n.initializer,`ImportDefaultSpecifier`)?!1:dc(rt(e,e.name))}return!1},nue=e=>{if(!D(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=N(t);if(fc(n))return n;if(!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return null;if(!D(n.body,`BlockStatement`)){let e=N(n.body);return fc(e)?e:null}for(let e of n.body.body??[])if(D(e,`ReturnStatement`)&&e.argument){let t=N(e.argument);if(fc(t))return t}return null},rue=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Qa(r,[`trailing`],t,n);return i?i.properties.some(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`trailing`&&D(e.value,`Literal`)&&e.value.value===!1):!1},pc=e=>{let t=N(e);for(;D(t,`MemberExpression`);)t=N(t.object);return D(t,`Identifier`)?t:null},mc=(e,t)=>{let n=pc(e);return n?t.symbolFor(n)?.id??null:null},hc=(e,t)=>{let n=N(e);if(D(n,`MemberExpression`))return uc.has(O(n)??``)?mc(n.object,t):null;if(!D(n,`Identifier`))return null;let r=A(n,n.name)?.bindingIdentifier?.parent;if(!D(r,`Property`))return null;let i=D(r.key,`Identifier`)?r.key.name:D(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!uc.has(i))return null;let a=r.parent,o=a?.parent;return!D(a,`ObjectPattern`)||!D(o,`VariableDeclarator`)||!o.init?null:mc(o.init,t)},iue=(e,t,n)=>{T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`CallExpression`))return;let i=hc(r.callee,n);i!==null&&t.add(i)})},aue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return T(e,e=>{if(!D(e,`CallExpression`))return;let n=N(e.callee);if(cc(e,t)){let n=e.arguments?.[0],a=n?N(n):null;if(a&&C(a)){if(Xa(a,e=>{if(!D(e,`CallExpression`))return;let n=mc(e.callee,t);n!==null&&r.add(n)}),D(a.body,`BlockStatement`))for(let e of Xe(a)){if(!e.argument)continue;let n=hc(e.argument,t);n!==null&&i.add(n)}else{let e=hc(a.body,t);e!==null&&i.add(e)}for(let e of ac(a))iue(e,i,t)}}if(D(n,`Identifier`)&&n.name===`useUnmount`&&(rt(n,n.name)===`react-use`||!A(n,n.name)))for(let n of e.arguments??[]){let e=hc(n,t);e!==null&&i.add(e)}if(!D(n,`Identifier`)||!_s(n.name))return;let a=A(n,n.name)?.initializer;if(!a||!C(a))return;let o=new Set;T(a,e=>{if(!D(e,`CallExpression`)||!cc(e,t))return;let n=Gn(e);if(n)for(let e of ac(n))T(e,e=>{if(!D(e,`CallExpression`))return;let t=N(e.callee);if(!D(t,`MemberExpression`)||!uc.has(O(t)??``))return;let n=pc(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!D(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?mc(a,t):null;s!==null&&i.add(s)}}),T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`ReturnStatement`)||!r.argument)return;let i=N(r.argument);!D(i,`Identifier`)&&!D(i,`ObjectExpression`)&&!D(i,`ArrayExpression`)||T(i,e=>{if(!D(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},oue=(e,t,n)=>{if(!D(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=N(r);if(C(i))return i;if(!D(i,`Identifier`))return null;let a=i.name,o=null;return T(t,e=>{if(o)return!1;if(D(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(D(e,`VariableDeclarator`)&&D(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=N(e.init);if(C(t))return o=t,!1;if(D(t,`CallExpression`)&&sc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?N(e):null;if(n&&C(n))return o=n,!1}}}),o},gc=new Set([`localStorage`,`sessionStorage`]),sue=e=>{let t=e;for(;;){let e=t.parent;if(e&&D(e,`MemberExpression`)&&e.object===t&&e.parent&&D(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return D(t,`CallExpression`)&&D(t.callee,`MemberExpression`)&&O(t.callee)===`catch`},cue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])_i(n,t);let n=!1;return T(e,e=>{if(n)return!1;if(D(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(D(e,`Identifier`)&&eue.has(e.name)&&!t.has(e.name)&&!A(e,e.name)&&!(D(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(D(r,`Property`)&&!r.computed&&r.key===e)){if(D(r,`MemberExpression`)&&r.object===e){if(D(r.property,`Identifier`)&&gc.has(r.property.name))return;let e=r;for(;e.parent&&D(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&D(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&D(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(D(e,`CallExpression`)){let t=e.callee;if(D(t,`Identifier`)&&t.name===`fetch`&&!A(t,t.name)||D(t,`MemberExpression`)&&tue.has(O(t)??``)&&O(t)!==`catch`&&!sue(e))return n=!0,!1;if(D(t,`MemberExpression`)&&D(t.object,`Identifier`)&&gc.has(t.object.name))return}}),n},lue=e=>{if(!e)return!0;let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`||D(t,`UnaryExpression`)&&t.operator===`void`},uue=(e,t)=>{if(!D(e,`MemberExpression`)||O(e)!==`current`)return!1;let n=N(e.object);if(!D(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=N(r.initializer);return D(i,`CallExpression`)&&sc(i,$le,t)&&lue(i.arguments?.[0])},due=(e,t)=>{if(!D(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return T(e,e=>{if(r)return!1;if(uue(e,t)||D(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(D(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])D(e.id,`Identifier`)&&n.add(e.id.name);continue}if(D(t,`IfStatement`)){let e=t.consequent;return(D(e,`ReturnStatement`)||D(e,`BlockStatement`)&&D(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},_c=y({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(!sc(n,Qle,e.scopes))return;let r=nue(n);if(!r||rue(r,e.scopes,n))return;let i=S(n),a=i.parent;if(!D(a,`VariableDeclarator`)||a.init!==i||!D(a.id,`Identifier`))return;let o=a.id.name,s=b(n);if(!s)return;let c=t.get(s);c||(c=aue(s,e.scopes),t.set(s,c));let l=oc(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=oue(r,s,e.scopes);d&&cue(d)&&(due(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.`}))}}}}),vc=Hn({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.`}),yc=1e3,fue=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]]),pue=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(`.`)),bc=1e3,mue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),hue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,gue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,_ue=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,vue=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,xc=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Sc=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`]),yue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Cc=(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},wc=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Tc=y({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(!D(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||wc(n,`px`)||wc(n,`py`))return;let r=Cc(n,hue,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.`})}})}),Ec=y({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||!D(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=I(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||wc(r,`w`)||wc(r,`h`))return;let i=Cc(r,_ue,vue);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.`})}}}}),bue=e=>e.split(/\s+/).filter(Boolean),Dc=y({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(!D(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`space-`))return;let r=bue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(xc.has(t)){i=!0;break}}if(!i)return;let a=n.match(yue);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.`})}})}),Oc=Hn({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.`}),kc=e=>{if(!e||!D(e,`JSXOpeningElement`))return null;if(D(e.name,`JSXIdentifier`))return E(e);if(D(e.name,`JSXMemberExpression`)){let t=e.name;for(;D(t,`JSXMemberExpression`);)t=t.property;if(D(t,`JSXIdentifier`))return t.name}return null},Ac=e=>e===`button`||e===`Button`,xue=e=>Ac(e)||e===`a`||e===`Link`,Sue=new Set([`back`,`previous`]),jc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Mc=e=>{if(!D(e,`JSXElement`)&&!D(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(D(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e!==null){n.push(e);continue}}return null}if(D(e,`JSXFragment`)){let t=Mc(e);if(t===null)return null;n.push(t);continue}if(D(e,`JSXElement`))return null}return n.join(``).trim()},Cue=e=>{let t=e.parent;for(;t;){if(D(t,`JSXElement`)&&kc(t.openingElement)===`form`)return t;t=t.parent}return null},Nc=e=>{for(let t of e.children??[]){if(D(t,`JSXFragment`)){if(Nc(t))return!0;continue}if(!D(t,`JSXElement`))continue;let e=kc(t.openingElement);if(e&&xue(e)&&Sue.has(jc(Mc(t)??``))||Nc(t))return!0}return!1},Pc=y({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=kc(t.openingElement);if(!n||!Ac(n))return;let r=Mc(t);if(!r)return;let i=jc(r);if(mue.has(i)){if(i===`continue`){let e=Cue(t);if(e&&Nc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),wue=e=>{for(let t of e.children)if(!(D(t,`JSXText`)&&t.value.trim().length===0)){if(D(t,`JSXElement`))return t.openingElement;if(!(D(t,`JSXExpressionContainer`)&&D(t.expression,`JSXEmptyExpression`)))return}return null},Fc=y({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(E(t.openingElement)!==`details`)return;let n=wue(t);n!==void 0&&(n&&E(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.`}))}})}),Tue=new Set([`dialog`,`alertdialog`]),Eue=[`aria-label`,`aria-labelledby`,`title`],Ic=y({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=>Je(e.filename)?pn:{JSXOpeningElement(t){if(!D(t.name,`JSXIdentifier`))return;let n=E(t);if(n[0]!==n[0]?.toLowerCase())return;let r=P(t.attributes,`role`),i=r?Zn(r):null;(n===`dialog`||i!==null&&Tue.has(i))&&(F(t.attributes)||Eue.some(e=>P(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),Lc=`createReactClass`,Rc=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`MemberExpression`)?!!(D(t.object,`Identifier`)&&t.object.name===`React`&&D(t.property,`Identifier`)&&t.property.name===Lc):D(t,`Identifier`)?t.name===Lc:!1},Due=[`observer`,`lazy`,`withTracking`],Oue=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??Due);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},zc=(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},Bc=new WeakMap,Vc=e=>{let t=Bc.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(D(e,`CallExpression`)&&Sa(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)M(e)&&r(e);else M(i)&&r(i);if(n)return}};return r(e),Bc.set(e,n),n},Hc=e=>{let t=!1;return T(e,e=>{if(D(e,`CallExpression`)&&D(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},Uc=e=>D(e,`MemberExpression`)?!e.computed&&D(e.property,`Identifier`)?e.property.name:e.computed&&D(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,Wc=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(D(t,`VariableDeclarator`)&&D(t.id,`Identifier`))return t.id.name;if(D(t,`AssignmentExpression`)){let e=t.left;if(D(e,`Identifier`))return e.name;if(D(e,`MemberExpression`))return Uc(e)}return null},Gc=e=>{let t=e.parent;if(!t||!D(t,`AssignmentExpression`))return!1;let n=t.left;return D(n,`MemberExpression`)&&D(n.object,`Identifier`)&&n.object.name===`module`&&Uc(n)===`exports`},kue=e=>{if(!D(e,`CallExpression`))return!1;if(Rc(e))return!0;let t=e.callee;return D(t,`MemberExpression`)?Uc(t)===`createClass`:!1},Aue=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`Identifier`)?t.name===`createContext`:D(t,`MemberExpression`)&&Uc(t)===`createContext`},jue=e=>(D(e,`FunctionExpression`)||D(e,`FunctionDeclaration`))&&!!e.id?.name,Kc=e=>D(e,`CallExpression`)&&e.arguments[0]||null,qc=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=e.callee;if(D(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},Mue=(e,t)=>qc(e,t)!==null,Jc=e=>{if(!e)return!1;if(zc(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},Nue=(e,t)=>{if(!Mue(e,t.additionalHoCs)||!Vc(e))return!1;let n=Wc(e),r=x(e);if(n&&r&&$c(n,r))return!1;let i=qc(e,t.additionalHoCs),a=Kc(e);return!a||i===`forwardRef`&&D(e.parent,`CallExpression`)&&qc(e.parent,t.additionalHoCs)===`memo`&&Kc(e.parent)===e&&Jc(t.reactVersion)?!1:i===`memo`&&D(a,`CallExpression`)?qc(a,t.additionalHoCs)===`forwardRef`?!Jc(t.reactVersion):!1:jue(a)?!1:D(a,`FunctionExpression`)||D(a,`ArrowFunctionExpression`)},Yc=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((D(e,`PropertyDefinition`)||D(e,`MethodDefinition`))&&`static`in e&&e.static&&D(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},Xc=e=>{if(D(e,`Identifier`))return[e.name];if(!D(e,`MemberExpression`))return[];let t=Xc(e.object),n=Uc(e);return n?[...t,n]:t},Zc=new WeakMap,Qc=e=>{let t=Zc.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(D(e,`AssignmentExpression`)&&D(e.left,`MemberExpression`)&&Uc(e.left)===`displayName`){D(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of Xc(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)M(e)&&i(e);else M(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Zc.set(e,a),a},$c=(e,t)=>Qc(t).identifierTargets.has(e),Pue=(e,t)=>Qc(t).memberPathSegments.has(e),el=y({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=Oue(e.settings),n=Mr(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(Ga(e)&&!(e.id&&gs(e.id.name)&&r)&&!Yc(e)){if(e.id){let t=x(e);if(t&&$c(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Ga(e)&&!(e.id&&gs(e.id.name)&&r)&&!Yc(e)){if(e.id){let t=x(e);if(t&&$c(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!Vc(a))return;if(!n&&!a.id&&Gc(a)){i(a);return}if(!n&&!gt(a,e.scopes,e.cfg)&&!Hc(a)||a.id&&gs(a.id.name)&&r)return;if(D(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=D(e,`Identifier`)?e.name:D(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=x(a);if(n&&gs(n)&&t.ignoreTranspilerName&&(!r||!Pue(n,r))){i(a);return}}let o=Wc(a);if(!(o&&gs(o)&&r)){if(Gc(a)&&!a.id){i(a);return}D(a.parent,`ReturnStatement`)&&!a.id&&i(a)}},ArrowFunctionExpression(t){let a=D(t.parent,`ExportDefaultDeclaration`);if(!Vc(t)&&!a)return;if(!n&&Gc(t)){i(t);return}if(!n&&!gt(t,e.scopes,e.cfg)&&!Hc(t))return;if(D(t.parent,`ArrowFunctionExpression`)||D(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(D(o,`VariableDeclarator`)&&D(o.id,`Identifier`)){if(gs(o.id.name)&&r)return;break}if(D(o,`ExportDefaultDeclaration`)){i(t);return}if(Gc(t)){i(t);return}if(D(o,`FunctionDeclaration`)||D(o,`FunctionExpression`)||D(o,`ArrowFunctionExpression`)||D(o,`ClassDeclaration`)||D(o,`ClassExpression`)||D(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&D(t.parent,`ExportDefaultDeclaration`)&&gt(t,e.scopes,e.cfg)){if(t.id){let e=x(t);if(e&&$c(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&zc(t.reactVersion,16,3)&&Aue(e)){let t=Wc(e);if(t){let n=x(e);if(n&&$c(t,n))return}i(e);return}if(Nue(e,t)){i(e);return}if(!kue(e))return;let n=e.arguments[0];if(!n||!D(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!D(e,`Property`)||e.computed)continue;let t=e.key;if(D(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(D(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&D(o,`VariableDeclarator`)&&D(o.id,`Identifier`)&&gs(o.id.name)&&r)){if(o&&D(o,`AssignmentExpression`)){let e=o.left;if(D(e,`Identifier`)&&gs(e.name)&&r||D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&gs(e.property.name)&&r)return}i(e)}}}}}),tl=y({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.`}),Fue=(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\`.`},Iue=e=>{let t=!1;return T(e,e=>{if(D(e,`CallExpression`))return t=!0,!1}),t},nl=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,rl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>rl(e,t)&&rl(n,t)),Lue=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,il=(e,t)=>{if(t.abortControllerSymbolId!==null&&rl(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||nl(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Lue(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=il(r,t),a=il(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},Rue=(e,t)=>il(e,t)!==`not-cancelled`,al=e=>{if(!e)return null;let t=N(e);return D(t,`MemberExpression`)?!t.computed&&D(t.property,`Identifier`)?t.property.name:t.computed&&D(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},zue=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Bue=(e,t)=>{if(D(e,`IfStatement`)){if(e.test===t)return!0;let n=rn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(D(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=rn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(D(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=rn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return D(e,`TryStatement`)?e.finalizer===t:D(e,`SwitchStatement`)?e.discriminant===t:D(e,`ForStatement`)?e.init===t||e.test===t:D(e,`ForInStatement`)||D(e,`ForOfStatement`)?e.right===t:D(e,`WhileStatement`)?e.test===t:!1},ol=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||zue.has(e.type)&&!Bue(e,r)&&!n?.(e,r))return!0;r=e}return!1},sl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=N(e);if(D(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!D(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&D(e,`SpreadElement`)){i=null;continue}if(!D(e,`Property`))return null;let r=w(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=N(e.value);if(D(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},Vue=e=>{if(!e)return!1;let t=N(e);if(D(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!D(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!D(e,`Property`))return null;let t=w(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=N(e.value);if(!D(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Hue=new Set([...Tt,`useInsertionEffect`]),cl=e=>e.references.every(e=>e.flag===`read`),Uue=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&cl(e),ll=e=>e.kind===`const`&&D(e.declarationNode,`VariableDeclarator`)&&D(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,ul=(e,t,n)=>{if(!D(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!Uue(r)||n.has(r.id)||r.kind===`const`&&!ll(r))return null;n.add(r.id);let i=r.initializer?N(r.initializer):null;if(r.kind===`const`&&D(i,`Identifier`)){let e=ul(i,t,n);if(e)return e}return r},dl=(e,t)=>{if(!e)return null;let n=N(e);if(C(n))return{node:n,isConcreteFunction:!0};if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r)return null;let i=r.initializer?N(r.initializer):null;return i&&C(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},fl=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){let e=ul(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?N(e.initializer):null;return D(n,`NewExpression`)&&D(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:D(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)){let e=fl(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},pl=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return r.value;if(D(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!D(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!ll(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),pl(i.initializer,t,n))},Wue=(e,t)=>{let n=hl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=N(r);if(!n||!D(i,`NewExpression`)||!D(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=N(n);if(!D(a,`Identifier`))return null;let o=ul(a,t,new Set),s=o?.initializer?N(o.initializer):null;if(!D(s,`NewExpression`)||!D(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=fl(n,t),l=pl(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},ml=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=N(r.initializer);return!D(i,`NewExpression`)||!D(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},hl=(e,t,n)=>{if(!e)return null;let r=N(e);return!D(r,`MemberExpression`)||(al(r)??(n&&r.computed?pl(r.property,n):null))!==t?null:r.object},Gue=(e,t)=>D(e,`ObjectPattern`)?e.properties.some(e=>!D(e,`Property`)||w(e,{allowComputedString:!0})!==`signal`?!1:(D(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,gl=(e,t,n=new Set)=>{let r=N(e),i=hl(r,`signal`);if(i)return ml(i,t);if(!D(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!cl(a))return null;n.add(a.id);let o=a.declarationNode;if(!D(o,`VariableDeclarator`))return null;if(D(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=N(a.initializer);if(D(e,`Identifier`))return gl(e,t,n);let r=hl(e,`signal`);return r?ml(r,t):null}return Gue(o.id,a.bindingIdentifier)?ml(a.initializer,t):null},_l=(e,t,n)=>{let r=N(e);if(D(r,`UnaryExpression`)&&r.operator===`!`){let e=_l(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(D(r,`BinaryExpression`)){let e=rn(r.left),i=rn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=_l(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=hl(r,`aborted`);return i&&gl(i,n)===t?`aborted`:null},Kue=(e,t,n,r)=>{if(D(e,`IfStatement`)||D(e,`ConditionalExpression`)){let i=_l(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!D(e,`LogicalExpression`)||e.right!==t)return!1;let i=_l(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},que=(e,t,n,r)=>!ol(e,t,(e,t)=>Kue(e,t,n,r)),Jue=(e,t)=>{let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r?.initializer)return null;let i=N(r.initializer);if(!D(i,`CallExpression`))return null;let a=hl(i.callee,`bind`);if(!a)return null;let o=hl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=ml(o,t),l=ml(s,t);return c!==null&&c===l?c:null},Yue=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=N(e);if(!D(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!D(e,`Property`))return n;if(w(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=gl(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},vl=(e,t,n)=>{let r=hl(e.callee,t,n);if(!r)return null;let i=fl(r,n),a=pl(e.arguments?.[0],n),o=dl(e.arguments?.[1],n),s=sl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Xue=(e,t)=>{let n=hl(e.callee,`call`);if(!n||!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!cl(r)||!D(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!D(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!D(e,`Property`))return!1;let t=D(e.value,`AssignmentPattern`)?e.value.left:e.value;return w(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=fl(i.init,t),s=fl(a,t);if(o===null||s===null||o!==s)return null;let c=pl(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:dl(e.arguments?.[2],t),capture:sl(e.arguments?.[3],{allowComputedString:!0})}},Zue=(e,t)=>{if(!e)return null;let n=N(e);if(C(n))return n.body;if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r||!r.initializer)return null;let i=N(r.initializer);return C(i)?i.body:null},Que=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!D(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=D(o,`ReturnStatement`);return T(e,o=>{if(o!==e&&C(o)||D(o,`ClassDeclaration`)||D(o,`ClassExpression`))return!1;if(D(o,`CallExpression`)){if(ol(o,e))return;let r=hl(o.callee,`addEventListener`,t),a=r?fl(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=vl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Yue(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:Vue(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Wue(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&&!Iue(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(D(o,`ReturnStatement`)){a+=1;let e=Zue(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},$ue=(e,t)=>{let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=N(r.initializer);return!C(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},yl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=D(e,`BlockStatement`)?e.body[e.body.length-1]:null,d=e=>{i.push(...e.removals),c||=e.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},f=e=>{let r=D(e,`BlockStatement`)?e.body:[e];for(let e of r){if(D(e,`BreakStatement`)||D(e,`ContinueStatement`))return!0;if(D(e,`BlockStatement`)){if(f(e))return!0;continue}if(D(e,`IfStatement`)){let r=rn(e.test);if(r!==null){let i=yl(e.test,t,new Set(n),!0);if(!i)return!0;d(i);let a=r?e.consequent:e.alternate;if(a&&f(a))return!0;continue}}let r=yl(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return T(e,p=>{if(p!==e&&C(p)||D(p,`ClassDeclaration`)||D(p,`ClassExpression`))return!1;if(D(p,`ReturnStatement`)&&p===u)return;if(D(p,`ReturnStatement`)||D(p,`ThrowStatement`)||r&&(D(p,`BreakStatement`)||D(p,`ContinueStatement`)))return s=!0,!1;if(D(p,`ForOfStatement`)){let t=N(p.right);return D(t,`ArrayExpression`)&&t.elements.some(e=>e&&!D(e,`SpreadElement`))&&!ol(p,e)&&f(p.body),!1}if((D(p,`IfStatement`)||D(p,`ConditionalExpression`))&&p.alternate&&rn(p.test)===null&&!ol(p,e)){let e=yl(p.consequent,t,new Set(n)),r=yl(p.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),c||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=yl(p.test,t,new Set(n));return i&&d(i),!1}if(!D(p,`CallExpression`))return;let m=ol(p,e),h=hl(p.callee,`removeEventListener`,t);if(h&&!m){let e=vl(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Xue(p,t);e&&i.push(e)}let g=hl(p.callee,`abort`);if(g){let n=ml(g,t);n===null?m||(c=!0):(!m||que(p,e,n,t))&&a.add(n);return}if(m)return;let _=Jue(p,t);if(_!==null){a.add(_);return}let v=$ue(p,t);if(!v||n.has(v.symbolId))return;n.add(v.symbolId);let ee=yl(v.body,t,n);ee&&d(ee)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},ede=(e,t)=>{let n=Que(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=yl(e,t);for(let e of n.cleanupBodies){let n=yl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},bl=y({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(!j(t,Hue,e.scopes))return;let n=Gn(t);if(!C(n))return;let r=ede(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&&rl(r.setupAbortAnalysis,t.abortControllerSymbolId)||Rue(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=nl(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:Fue(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),xl=(e,t)=>{if(!e)return null;let n=N(e);if(D(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(D(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=Ya({node:n,scopes:t});return r?`reference:${r}`:null},Sl=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}]]),tde=new Map([...Sl.values()].map(e=>[e.registerMethod,e])),nde=new Set([`off`,`removeEventListener`,`removeListener`]),Cl=e=>!!(e&&ki(N(e))),wl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return Cl(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(Cl(a))return{method:n,receiverKey:r,eventKey:xl(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&Cl(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Tl=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!n)return;let r=[],i=[];Xa(n,t=>{if(!D(t,`CallExpression`))return;let n=N(t.callee);if(!D(n,`MemberExpression`))return;let i=O(n);if(!i)return;let a=Ya({node:n.object,scopes:e.scopes});if(a===null)return;let o=tde.get(i);if(!o)return;let s=wl(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of ac(n))Xa(t,t=>{if(!D(t,`CallExpression`))return;let n=N(t.callee);if(!D(n,`MemberExpression`))return;let r=O(n);if(!r||nde.has(r))return;let a=Sl.get(r);if(!a)return;let o=Ya({node:n.object,scopes:e.scopes});if(o===null)return;let s=wl(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Sl.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.`})}}})}),El=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=b(n);if(!i||!C(i)||i===t||!D(i.body,`BlockStatement`)||!Va(n,Xe(i).filter(e=>{let t=e.argument?N(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=Es(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 l=S(s.identifier),u=l.parent,d=D(u,`CallExpression`)?S(u):null,f=d?.parent;if(!D(u,`CallExpression`)||u.callee!==l||!D(f,`AssignmentExpression`)||f.operator!==`=`||f.right!==d||!D(f.left,`Identifier`)||b(f)!==t)return!1;let p=e.scopes.symbolFor(f.left),m=p?.initializer?N(p.initializer):null;if(!p||p.kind!==`let`&&p.kind!==`var`||!D(p.declarationNode,`VariableDeclarator`)||b(p.declarationNode)!==t||!m||!C(m)||!D(m.body,`BlockStatement`)||m.body.body.length!==0)return!1;let h=new Map;for(let e of p.references){let t=S(e.identifier),n=t.parent;if(n===f&&f.left===t)continue;if(!D(n,`CallExpression`)||n.callee!==t)return!1;let r=b(n);if(!r)return!1;let i=h.get(r)??[];i.push(n),h.set(r,i)}return Va(f,Xe(t).filter(t=>{let n=t.argument?c(t.argument,e.scopes):null;return!!(n&&Ha(n,h.get(n)??[],e))}),e,f)},Dl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=p(e),c=p(t);if(!i||!a||!o||s===null||c===null)return!0;if(!V(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},Ol=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),rde=new Set([...Ol,`find`,`findIndex`,`sort`]),kl=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Al=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),jl=new Set([...Al,`Map`,`Set`]),Ml=(e,t,n)=>{let r=N(e);return D(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Nl=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n);return!!((r===`from`||r===`of`)&&Ml(n.object,`Array`,t))},ide=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&Ml(n.object,`Object`,t))},Pl=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ArrayExpression`))return r.elements.length===0;if(D(r,`NewExpression`)){let e=N(r.callee);return!!(r.arguments.length===0&&D(e,`Identifier`)&&jl.has(e.name)&&t.isGlobalReference(e))}if(D(r,`CallExpression`)){let e=N(r.callee);if(Nl(r,t)){if((D(e,`MemberExpression`)?O(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!D(i,`SpreadElement`)&&Pl(i,t,n))}return!!(D(e,`MemberExpression`)&&O(e)!==`concat`&&kl.has(O(e)??``)&&Pl(e.object,t,n))}if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Pl(i.initializer,t,n))},Fl=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ArrayExpression`))return!0;if(D(r,`NewExpression`)){let e=N(r.callee);return!!(D(e,`Identifier`)&&Al.has(e.name)&&t.isGlobalReference(e))}if(D(r,`CallExpression`)){if(Nl(r,t)||ide(r,t))return!0;let e=N(r.callee);return!!(D(e,`MemberExpression`)&&kl.has(O(e)??``)&&Fl(e.object,t,n))}if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Fl(i.initializer,t,n))},Il=(e,t,n=new Set)=>{let r=N(e);if(!D(r,`NewExpression`)){if(!D(r,`Identifier`))return Fl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!D(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Il(e.initializer,t,n))}let i=N(r.callee);return!!(D(i,`Identifier`)&&jl.has(i.name)&&t.isGlobalReference(i))},Ll=(e,t,n)=>{let r=N(e.callee);if(!D(r,`MemberExpression`))return!1;let i=O(r);if(i===`from`&&Ml(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!D(t,`SpreadElement`)&&!Pl(t,n))}return!!(i&&rde.has(i)&&e.arguments[0]===t&&!Pl(r.object,n)&&(i===`forEach`?Il(r.object,n):Fl(r.object,n)))},Rl=(e,t)=>{let n=N(e.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?!1:D(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Ol.has(n.property.name)&&e.arguments[0]===t},zl=e=>{let t=e.parent;return!!(D(t,`CallExpression`)&&Rl(t,e))},ade=new Set([`then`,`catch`,`finally`]),Bl=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&ade.has(e.property.name)&&N(e.object).type===`CallExpression`,Vl=e=>{let t=e.parent;for(;t&&vt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>N(t)===e)?null:Bl(N(t.callee))?t:null},ode=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,s=[e],c=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},l=e=>{let t=e&&N(e);!C(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;T(e,n=>{if(n!==e&&C(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=c(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?N(n.init):null;if(C(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=N(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=N(n.callee);if(C(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&Bl(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},Hl=(e,t)=>ode(e,!0,t),Ul=(e,t)=>ode(e,!1,t),sde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!C(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(C(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),T(e,n=>{if(n!==e&&C(n))return!1;if(n.type===`CallExpression`){a(c(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!Ll(n,e,t)||a(c(e,t))}}))}return n},Wl=e=>{let t=b(e);return t?bs(t):null},Gl=e=>{let t=e.parent;for(;t;){if(D(t,`VariableDeclarator`))return t;if(D(t,`FunctionDeclaration`)||D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`)||D(t,`Program`))return null;t=t.parent??null}return null},cde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),lde=new Set([`useMemo`,`useState`]),ude=new Set([`startTransition`]),dde=(e,t)=>{let n=N(e);return!D(n,`MemberExpression`)||n.computed||!D(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!D(n.property,`Identifier`)?!1:n.property.name===`from`},fde=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return!1;let r=A(n,n.name);if(!r?.initializer)return!1;let i=Gl(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&D(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&dde(i.init,t))},Kl=(e,t,n=new Set)=>{let r=N(e);if(!D(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),Kl(i.initializer,t,n))},pde=(e,t,n,r)=>{let i=N(e);if(D(i,`ArrayExpression`))return!0;if(D(i,`Identifier`)){let e=k(i,t);return!!(e?.kind===`const`&&e.initializer&&!Gt(i,r,n,t)&&pde(e.initializer,t,n,r))}if(D(i,`NewExpression`))return Kl(i.callee,t);if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(Kl(a,t))return!0;if(!D(a,`MemberExpression`))return!1;let o=N(a.object);return!!(D(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&D(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},ql=(e,t,n={})=>{let r=S(e),i=r.parent;if(D(i,`NewExpression`)){let e=N(i.callee);return!!(t&&i.arguments?.[0]===r&&D(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return D(i,`CallExpression`)?i.callee===r||(t?j(i,lde,t,{allowGlobalReactNamespace:!0}):Jn(i,lde))&&i.arguments?.[0]===r||t&&j(i,ude,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(dde(i.callee,t)||fde(i.callee,t))?!0:D(i.callee,`MemberExpression`)&&!i.callee.computed&&D(i.callee.property,`Identifier`)&&cde.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&pde(i.callee.object,t,i,i.callee.property.name))):!1},mde=new WeakMap,U=(e,t)=>{let n=b(e),r=n??e,i=mde.get(t);i||(i=new WeakMap,mde.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(bs(n))return i.set(r,n),n;if(!ql(n,t))return i.set(r,null),null;n=b(n)}return i.set(r,null),null},Jl=e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Yl=e=>e?Ae(e)?!0:D(e,`BlockStatement`)?Yl(e.body.at(-1)):D(e,`ContinueStatement`)||D(e,`BreakStatement`):!1,hde=new Set([`createRef`,`useRef`]),Xl=(e,t,n={})=>{let r=D(e,`MemberExpression`)?N(e.object):null;if(!D(e,`MemberExpression`)||O(e)!==`current`||!D(r,`Identifier`))return null;let i=k(r,t);if(!i?.initializer)return null;let a=N(i.initializer);return D(a,`CallExpression`)&&j(a,n.includeCreateRef?hde:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Zl=(e,t,n=new Set)=>{let r=N(e),i=Xl(r,t);if(i)return i;if(!D(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=$o(a);return o?(n.add(a.id),Zl(o,t,n)):null},gde=(e,t)=>Zl(e,t)!==null,Ql=(e,t)=>{T(e,e=>{if(C(e))return!1;t(e)})},$l=e=>!D(e,`CallExpression`)||!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)?null:e.callee.property.name,_de=e=>{let t=$l(e);return t!==null&&Ie.has(t)},eu=e=>{let t=$l(e);return t!==null&&(Ie.has(t)||t===`observe`)?t:null},vde=e=>eu(e)!==null,tu=e=>{let t=$l(e);return t===null||!Ate.has(t)?!1:t===`listen`?(D(e,`CallExpression`)?e.arguments??[]:[]).some(e=>D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`)):!0},yde=e=>{let t=bn(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||D(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(D(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(D(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=bt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},bde=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return yde(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),D(r.declarationNode,`VariableDeclarator`)&&D(r.declarationNode.id,`ObjectPattern`)){let e=nu(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!D(t,`Property`)||(D(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=w(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return nu(r.initializer,t,n)},nu=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Identifier`))return bde(r,t,n);if(!D(r,`MemberExpression`))return null;let i=O(r);if(!i)return null;let a=nu(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},ru=e=>{let t=e,n=t.parent;for(;n;){if(D(n,`AssignmentExpression`))return n.left===t;if(D(n,`UpdateExpression`)||D(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(D(n,`ForInStatement`)||D(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},xde=new Set([...Tt,`useInsertionEffect`]),Sde=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),Cde=new Set([`@react-native-community/netinfo`]),wde=new Set([`events`,`node:events`,`react-native`]),Tde=new WeakMap,Ede=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),Dde=new Set([`clear`,`delete`,`set`]),Ode=new WeakMap,kde=new WeakMap,Ade=new WeakMap,jde=new WeakMap,Mde={subscribe:`subscription`,timer:`timer`,socket:`connection`},iu=(e,t)=>{if(Yn(e,xde,t.scopes))return!0;let n=N(e.callee);return!!(D(n,`Identifier`)&&Sde.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},au=e=>D(e,`NewExpression`)&&D(e.callee,`Identifier`)&&be.has(e.callee.name),W=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=N(e);if(D(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 W(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=D(o,`Property`)?w(o):null;if(l&&D(s,`ObjectPattern`)&&D(c,`VariableDeclarator`)&&c.id===s){let i=W(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?N(e.initializer):null;return e.kind===`const`&&u&&(D(u,`Identifier`)||D(u,`MemberExpression`))?W(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(D(i,`MemberExpression`)&&!i.computed){if(!D(i.property,`Identifier`))return null;let e=W(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(D(i,`ThisExpression`))return`this`;if(D(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(C(i)){let e=p(i);return e===null?null:`function:${e}`}return null},ou=(e,t)=>{if(!e)return null;let n=N(e),r=[];for(;D(n,`MemberExpression`)&&!n.computed;){if(!D(n.property,`Identifier`))return null;r.unshift(n.property.name),n=N(n.object)}if(!D(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(D(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(D(a,`Property`)&&D(a.parent,`ObjectPattern`)){let t=w(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&D(o,`VariableDeclarator`)&&o.id===e&&D(s,`VariableDeclaration`)&&s.declarations.length===1&&D(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Zde(c.right,t);if(e){let i=N(c.right),a=D(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?N(a.initializer):null,s=D(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&M(e)?e:null;for(let e of n){let n=t?N(t):null;if(typeof e==`number`&&D(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&M(r)?r:null}else if(typeof e==`string`&&D(n,`ObjectExpression`)){let r=n.properties.find(t=>D(t,`Property`)&&w(t)===e);t=D(r,`Property`)&&M(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=N(e),i=e=>{if(!D(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 D(r,`Literal`)||D(r,`ArrayExpression`)||D(r,`ObjectExpression`)||C(r)?!0:i(r)||n[0]===1&&D(r,`CallExpression`)&&i(N(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?N(i.initializer):null;if(i?.kind===`const`&&D(a,`CallExpression`)){let e=W(a.callee,t),n=[];for(let e of a.arguments){if(!M(e))continue;let r=ou(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=W(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&&!C(o);)o=o.parent;if(!o||!C(o))return null;let s=Iu(o);if(!s)return null;let c=N(s.callee);if(!D(c,`MemberExpression`))return null;let l=W(c.object,t);if(!l)return null;let u=o.params[0],d=D(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=D(u,`ObjectPattern`)?Si(i.bindingIdentifier):null,p=d?W(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)??W(e,t),lu=(e,t)=>{if(!e)return null;let n=cu(e,t);if(n)return n;let r=N(e);if(D(r,`CallExpression`)){let e=cu(r.callee,t),n=r.arguments.flatMap(e=>{if(!M(e))return[];let n=lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!D(r,`BinaryExpression`)&&!D(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},Nde=(e,t)=>{let n=N(e);if(D(n,`CallExpression`)&&lu(n,t))return n;if(!D(n,`Identifier`))return Fu(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?N(r.initializer):null;return!r||!i?Fu(n,t):D(i,`ObjectExpression`)?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(!D(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=N(n.callee);if(!D(r,`MemberExpression`))return!1;let i=w(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:D(i,`Identifier`)||D(i,`MemberExpression`)?null:Fu(n,t)},uu=(e,t,n)=>{let r=ou(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>sl(e?N(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?Nde(e,t):null;if(e&&!i)return null;let a=sl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=N(i);if(!D(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(!D(e,`Property`)){s=null;continue}let n=w(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},Pde=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`ObjectExpression`))return ou(n,t);let r=null;for(let e of n.properties??[]){if(!D(e,`Property`)){r=null;continue}let n=w(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=Zl(e,t.scopes);if(r)return r;let i=N(e);for(;D(i,`MemberExpression`);){let e=Zl(i,t.scopes)??Xl(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=N(i.object)}if(D(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(D(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&pu(r.left,t)){let e=W(r.left,t);return e?{anchor:r,key:e}:null}if(!D(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=w(r),a=r.parent;if(!i||!D(a,`ObjectExpression`))return null;let o=S(a),s=o.parent;if(!D(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!pu(s.left,t))return null;let c=W(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(!D(i,`VariableDeclarator`)||i.init!==n||!D(i.id,`Identifier`)||!D(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},Fde=(e,t,n)=>{let r=w(e),i=N(e.object),a=D(i,`Identifier`)?n.scopes.symbolFor(i):null,o=b(t);if(!r||!a||!o||!C(o))return null;for(let e of a.references){let i=S(e.identifier),a=i.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!pu(a.left,n)||b(a)!==o||!kd(t,[a],o,n))continue;let s=W(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},Ide=(e,t)=>{let n=hu(e,t);if(n)return n;let r=S(e),i=r.parent;return D(i,`AssignmentExpression`)&&i.right===r&&D(i.left,`MemberExpression`)?Fde(i.left,e,t):null},gu=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`MemberExpression`)){if(pu(i,n)){let e=W(i,n);return e?new Set([e]):null}let e=w(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(D(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(!D(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?N(a.initializer):null;if(D(s,`CallExpression`)&&j(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=W(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=b(t),l=a.references.flatMap(e=>{let r=S(e.identifier),i=r.parent;if(!c||!D(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||b(i)!==c||!pu(i.left,n)||!kd(t,[i],c,n))return[];let a=W(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=b(a.bindingIdentifier);if(!u||!C(u))return null;let d=u.params.findIndex(e=>N(e)===a.bindingIdentifier),f=Es(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(D(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!M(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(!(D(i,`ArrayExpression`)&&D(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},Lde=(e,t)=>{let n=Ide(e,t);if(n)return new Set([n.key]);let r=S(e),i=r.parent;return!D(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(D(i,`VariableDeclarator`)&&i.init===r){let r=W(i.id,t);return n?hu(e,t)?.key??r:r}if(D(i,`AssignmentExpression`)&&i.right===r){if(n&&D(i.left,`MemberExpression`)){let n=Fde(i.left,e,t);if(n)return n.key}return W(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=N(e);if(D(n,`MemberExpression`))return yu(n.object,t);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?bn(r):null;return typeof i?.source.value==`string`?i.source.value:null},Rde=(e,t)=>{if(e.kind!==`subscribe`||!D(e.node,`CallExpression`))return!1;if(tu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||wu(e.node,`addListener`,t))return!1;let n=N(e.node.callee);if(!D(n,`MemberExpression`))return!1;let r=yu(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?Cde.has(r):r!==`react-native`;let i=N(n.object),a=Fu(i,t),o=a&&D(a,`NewExpression`)?yu(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&wde.has(o))return!1;let s=D(i,`Identifier`)?t.scopes.symbolFor(i):null,c=D(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!D(i,`Identifier`)||c||s!==null&&(ts(s)!==null||$o(s)!==null)?ss(i,t.scopes).length===0:!1},zde=(e,t)=>{let n=N(e),r=nu(n,t.scopes);return D(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},bu=(e,t,n=new Set)=>{let r=N(e);if(D(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?N(e.initializer):null,a=D(i,`CallExpression`)?nu(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&bu(i,t,n))}if(!D(r,`CallExpression`))return!1;let i=N(r.callee);return!!(D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`getParent`&&bu(i.object,t,n))},xu=(e,t)=>{if(Rde(e,t))return!0;if(!D(e.node,`CallExpression`))return!1;let n=N(e.node.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&zde(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&bu(n.object,t)},Bde=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&W(r,n)===t.handleKey&&!i.references.some(e=>ru(e.identifier)))},Vde=(e,t,n)=>Bde(e,t,n)&&xu(t,n),Hde=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!fd.has(t)||n.receiverKey===null||e!==n.receiverKey||!D(n.node,`CallExpression`))return!1;let i=N(n.node.callee);if(!D(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=N(e);if(D(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=$o(e);if(!i)return`symbol:${e.id}`;let a=N(i);if(!D(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),Su(a,t,o)??`symbol:${e.id}`}if(C(r)){let e=p(r);return e===null?null:`function:${e}`}return null},Ude=(e,t,n)=>{if(!e)return null;let r=N(e);if(!D(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!D(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=b(t);return!D(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kd(t,[s],c,n)?null:`symbol:${i.id}`},Cu=(e,t,n=new Set)=>{let r=N(e);if(ss(r,t.scopes).includes(`MediaQueryList`))return!0;if(D(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=$o(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),Cu(i,t,a)}if(!D(r,`CallExpression`)||!j(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=Gn(r,t.scopes);return!!(i&&ge(i,t.scopes,e=>{let r=N(e);return D(r,`Literal`)&&r.value===null||D(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||Cu(r,t,new Set(n))},t.cfg,`every`))},wu=(e,t,n)=>{let r=N(e.callee);return e.arguments?.length===1&&D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===t&&Cu(r.object,n)},Tu=(e,t)=>{let n=N(e.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:wu(e,`addListener`,t)?{receiverKey:Su(n.object,t)??Ude(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`||!D(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&M(t)?t:null},Wde=(e,t)=>{let n=e;for(;D(n,`CallExpression`);){let e=D(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!D(e,`MemberExpression`)||e.computed||!D(e.property,`Identifier`))return null;if(e.property.name===`channel`)return cu(e.object,t);n=N(e.object)}return null},Gde=(e,t)=>{let n=e,r=S(n);for(;D(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=S(r.parent),t=e.parent;if(!D(t,`CallExpression`)||t.callee!==e)break;n=t,r=S(n)}return n===e||eu(n)!==`subscribe`||Wde(n,t)===null?null:_u(n,t,!0)},Kde=(e,t)=>{let n=Hl(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!C(e)||T(e.body,i=>{if(i!==e.body&&C(i))return!1;if(!D(i,`CallExpression`))return;let a=null;if(D(i.callee,`Identifier`)&&ve.has(i.callee.name)){let e=i.arguments?.[0];a=e&&M(e)?e:null}else{let e=i.arguments?.find(e=>M(e)&&Vl(e)===i);e&&M(e)&&(a=e);let n=eu(i);n!==null&&(a=Eu({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...Tu(i,t)}))}let o=a?c(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},qde=(e,t)=>{let n=[];if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`))return n;let r=null;if(D(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];D(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=Kde(e,t);return T(e,a=>{if(a!==e&&C(a)&&(a===r||!i.has(a)&&!zl(a)))return!1;if(au(a)){n.push({kind:`socket`,node:a,resourceName:D(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!D(a,`CallExpression`))return;if(D(a.callee,`Identifier`)&&ve.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Fd(a)||Id(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=eu(a);if(o!==null){let e=Tu(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Gde(a,t):null)??_u(a,t,!0),...e})}}),n.filter(e=>V(e.node,t))},Du=(e,t,n)=>{let r=e,i=b(r);for(;i&&zl(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!D(e,`CallExpression`))break;r=e,i=b(r)}return Va(r,t,n,e)},Jde=(e,t,n)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.body,`BlockStatement`))return t;let r=[];return Ql(e.body,e=>{D(D(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=p(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=p(r);return i!==null&&i>t&&Cd(r,e,n)});return!Du(e.node,i,n)})},Ou=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=D(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!ru(e.identifier));return r&&D(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&D(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Yde=(e,t)=>{if(!e)return!1;let n=N(e),r=new Set;if(T(n,e=>{if(!D(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 T(e,e=>{if(!D(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&&!C(a);){if(D(a,`ForOfStatement`)){let e=N(a.left);if(!D(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},ku=(e,t)=>{if(!D(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!D(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!D(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!D(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Au=(e,t,n)=>{if(!D(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(D(i,`ForOfStatement`)&&i.right===r||D(i,`MemberExpression`)&&i.object===r&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`push`&&D(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(D(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return D(i.id,`Identifier`)&&D(e,`VariableDeclaration`)&&e.kind===`const`?Au(i.id,t,n):!1}return!1})):!1},Xde=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(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?N(i.initializer):null,o=e=>{if(!e)return!1;let t=N(e);if(D(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(D(t,`ArrayExpression`))return!0;if(!D(t,`CallExpression`))return!1;let n=N(t.callee);return!!(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:D(a,`Identifier`)?Xde(a,t,n):null},Zde=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Tde.get(t);if(i||(i=new Map,Tde.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Xde(e,t);return i.set(r.id,a),a},Qde=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(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?N(i.initializer):null,o=e=>{if(!e)return!1;let t=N(e);return D(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):D(t,`ArrayExpression`)&&t.elements.every(e=>e===null||D(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:D(a,`Identifier`)?Qde(a,t,n):null},ju=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=Ou(n,t);if(r)return Qde(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!C(a);)a=a.parent;if(!a||!C(a))return null;let o=a.parent;if(!D(o,`CallExpression`))return null;let s=N(o.callee);if(D(s,`MemberExpression`)&&!s.computed&&D(s.property,`Identifier`)){if(D(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return W(o.arguments[0],t);if(o.arguments?.[0]===a)return W(s.object,t)}return null},$de=(e,t)=>{let n=Ou(e,t);return n?W(n.right,t):ju(e,t)},efe=(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=N(e);if(efe(i,W(a,t),n),!D(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?N(o.initializer):null,l=null,u=n;if(D(c,`Identifier`))l=c;else if(D(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&D(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,p(c)??1/0))}else if(D(c,`CallExpression`)){let e=N(c.callee);if(D(e,`MemberExpression`)&&!e.computed&&D(e.property,`Identifier`)){let r=e.property.name,i=D(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=M(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,p(c)??1/0))}}if(!l)return i;for(let[e,n]of Mu(l,t,u,s))efe(i,e,n);return i},tfe=(e,t)=>{let n=Ou(e,t);if(n)return Mu(n.right,t);let r=e?N(e):null;if(!D(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&&!C(a);)a=a.parent;let o=a?.parent,s=D(o,`CallExpression`)?N(o.callee):null;return D(s,`MemberExpression`)?Mu(s.object,t):new Map},nfe=(e,t,n)=>{let r=Pu(t.node,n);return r!==null&&tfe(e,n).has(r)},rfe=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=Ou(n,t)?.right;return r?Zde(r,t):null},ife=(e,t)=>{if(!e)return!1;let n=N(e);return D(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},afe=(e,t)=>{if(!e)return null;let n=N(e);if(!D(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},ofe=(e,t)=>{if(!D(e,`BreakStatement`)&&!D(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(D(n,`LabeledStatement`)&&n.label.name===e.label.name)return R(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return n===t;if(D(e,`BreakStatement`)&&D(n,`SwitchStatement`))return!1;n=n.parent}return!1},sfe=(e,t,n)=>{if(!(D(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=b(e),i=!1,a=!1;return T(t.body,o=>{if(i||a||o!==t.body&&C(o))return!1;if(D(o,`ReturnStatement`)||D(o,`ThrowStatement`)&&(!r||!Dl(o,e,r,n))||D(o,`BreakStatement`)&&ofe(o,t))return i=!0,!1;if(D(o,`ContinueStatement`)&&ofe(o,t)&&(p(o)??-1)<(p(e)??0))return a=!0,!1}),!i&&!a},Nu=(e,t,n)=>{let r=S(e).parent;return!!(D(r,`ExpressionStatement`)&&sfe(r,t,n))},cfe=(e,t,n)=>{let r=S(e),i=D(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!C(o);){if(D(o,`ForOfStatement`)){if(!sfe(i,o,n))return null;let e=W(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},lfe=(e,t,n)=>cfe(e,t,n)!==null,ufe=e=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!D(t,`CallExpression`))return null;let n=N(t.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?null:D(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},dfe=(e,t)=>{let n=b(e);if(!n||!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return null;let r=ufe(n);if(!r)return null;if(D(n.body,`BlockStatement`)){let r=S(e),i=r.parent,a=i?.parent;if(!D(i,`VariableDeclarator`)||i.init!==r||!D(i.id,`Identifier`)||!D(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];T(n.body,e=>{if(e!==n.body&&C(e))return!1;D(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=D(s,`ReturnStatement`)&&s.argument?N(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!D(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!Du(e,[s],t))return null}else if(S(e)!==n.body)return null;let i=S(r),a=i.parent;return D(a,`VariableDeclarator`)&&a.init===i?W(a.id,t):null},ffe=(e,t)=>{let n=S(e),r=n.parent,i=D(r,`CallExpression`)?N(r.callee):null;if(!D(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!D(i,`MemberExpression`)||i.computed||!D(i.object,`Identifier`)||!D(i.property,`Identifier`)||i.property.name!==`push`||!ku(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?N(a.initializer):null;return a&&D(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Pu=(e,t)=>{let n=ffe(e,t);if(n)return`symbol:${n.id}`;let r=dfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(C(a))return null;if(D(a,`VariableDeclarator`)&&a.init===i)return W(a.id,t);i=a,a=i.parent}return null},pfe=(e,t)=>{if(!D(e.node,`CallExpression`))return null;let n=N(e.node.callee);if(!D(n,`MemberExpression`)||n.computed)return null;let r=N(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(!D(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=N(n.callee);return D(r,`MemberExpression`)&&!r.computed&&D(r.object,`Identifier`)&&D(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(b(o)!==b(e.node)||!Du(e.node,[o],t))return null;let s=N(o.callee);if(!D(s,`MemberExpression`)||!D(s.object,`Identifier`)||!ku(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?N(c.initializer):null;return!c||!D(l,`ArrayExpression`)||(l.elements?.length??0)!==0||b(c.declarationNode)!==b(e.node)?null:c.references.every(e=>{let t=S(e.identifier),n=t.parent;if(D(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!D(r,`MemberExpression`)||r.object!==t||r.computed||!D(r.property,`Identifier`)||!D(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?W(s.object,t):null},Fu=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&D(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`&&C(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))},mfe=(e,t)=>{let n=Fu(e,t);return D(n,`ObjectExpression`)?n:null},hfe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=mfe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!D(e,`Property`)||w(e)!==`signal`)continue;let n=W(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},gfe=(e,t)=>{let n=N(e);if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)&&n.property.name===`signal`)return W(n.object,t);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?N(r.initializer):null;if(D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`signal`)return W(i.object,t);let a=r.bindingIdentifier.parent;return!D(a,`Property`)||w(a)!==`signal`||!D(a.parent,`ObjectPattern`)||!D(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:W(a.parent.parent.init,t)},_fe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node,r=b(e.node);if(!r||!C(r))return null;let i=null;return T(r.body,a=>{if(i||a!==r.body&&C(a))return!1;if(!D(a,`CallExpression`)||Wn(a)!==`addEventListener`)return;let o=N(a.callee);if(!D(o,`MemberExpression`))return;let s=a.arguments[0]?N(a.arguments[0]):null;if(!D(s,`Literal`)||s.value!==`abort`)return;let c=gfe(o.object,t);if(!c)return;let l=Fu(a.arguments[1],t);if(!l||!C(l)||l.async||l.generator)return;let u=[];if(T(l.body,r=>{if(r!==l.body&&C(r))return!1;if(!D(r,`CallExpression`))return;let i=N(r.callee);!D(i,`MemberExpression`)||Wn(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)||u.push(r)}),Ha(l,u,t))return i=c,!1}),i},vfe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?N(e.node.arguments[0]):null,r=N(e.node.callee);return D(n,`Literal`)&&n.value===`abort`&&D(r,`MemberExpression`)?gfe(r.object,t):null},Iu=e=>{let t=C(e)?e:b(e);if(!t||!C(t)||t.async||t.generator)return null;let n=t.parent;if(!D(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=N(n.callee);return D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Lu=e=>{let t=S(e),n=t.parent;return D(n,`CallExpression`)&&n.callee===t?n:null},yfe=(e,t,n)=>{let r=Es(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 b(o)===t&&V(o,n)?o:null},bfe=(e,t)=>{if(!D(e,`NewExpression`))return!1;let n=N(e.callee);return D(n,`Identifier`)&&Ze.has(n.name)&&t.scopes.isGlobalReference(n)},xfe=(e,t)=>{if(!e)return!0;let n=N(e);return D(n,`Literal`)&&n.value===null||D(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},Sfe=(e,t,n,r)=>{if(!C(e)||e.async||e.generator||n.receiverKey===null||!D(n.node,`CallExpression`))return null;let i=N(n.node.callee),a=D(i,`MemberExpression`)?N(i.object):null;if(!a||!D(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!D(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||b(s)!==t||!xfe(s.init,r))return null;let c=[];for(let e of o.references){let t=S(e.identifier),n=t.parent;if(D(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!D(r,`MemberExpression`)||r.object!==t||!D(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(w(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!bfe(N(l.right),r)||b(l)!==e||!Dl(l,n.node,e,r))return null;let u=[],d=p(l);if(d===null||(T(e.body,t=>{if(t!==e.body&&C(t))return!1;if(!D(t,`CallExpression`))return;let i=p(t);i===null||i>=d||!Cd(t,n,r)||u.push(Gu(t,e,n.receiverKey??``,r)??t)}),!Ha(e,u,r)))return null;let f=Es(e),m=f?r.scopes.symbolFor(f):null;if(!m)return null;let h=[];for(let n of m.references){let i=Lu(n.identifier);if(i&&b(i)===t){h.push(i);continue}let a=S(n.identifier),o=a.parent;if(!o||!bfe(o,r)||b(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&V(g,r)?g:null},Ru=(e,t,n,r)=>{let i=b(e);return!i||i===t?e:yfe(i,t,n)??(r?Sfe(i,t,r,n):null)??e},Cfe=(e,t,n)=>{if(!C(e))return[];let r=Es(e),i=W(r,n);if(!i)return[];let a=[];return T(t,e=>{if(e!==t&&C(e))return!1;let o=D(e,`CallExpression`)?e.arguments[1]:null;D(e,`CallExpression`)&&Wn(e)===`addEventListener`&&(W(o,n)===i||D(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},wfe=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?N(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!D(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(!D(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||b(l)!==b(t.node)||!Du(t.node,[l],n))return null;let u=N(l.right);return C(u)?u:null},zu=(e,t,n,r)=>{if(!C(e)||!D(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=D(a,`AssignmentPattern`)?N(a.left):a;if(!D(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=S(e.identifier),n=t.parent;return D(n,`AssignmentExpression`)&&n.left===t||D(n,`UpdateExpression`)&&n.argument===t||D(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){D(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}D(o,`SpreadElement`)||i.set(c.id,o)}return i},Tfe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=D(e,`ChainExpression`)?e.expression:e,i=D(r,`CallExpression`)?N(r.callee):null,a=D(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Pu(t.node,n);if(!D(r,`CallExpression`)||!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`forEach`||!D(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==W(i.object,n))return!1;let c=Mu(i.object,n);return c.has(s)&&!xd(t.node,r,c,n)},Bu=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!C(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];T(e.body,c=>{if(o||c!==e.body&&C(c)&&!zl(c))return!1;let l=D(c,`ChainExpression`)?c.expression:c;if(Tfe(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(Cd(c,t,n,i)){let r=Iu(c),u=D(l,`CallExpression`)?N(l.callee):null,d=D(u,`MemberExpression`)?u.object:u,f=Ou(d,n),p=$de(d,n),m=tfe(d,n),h=pfe(t,n)??Pu(t.node,n);if(p!==null&&b(c)!==e){let e=b(c);r&&e&&C(e)&&h!==null&&m.has(h)&&Ha(e,[c],n)&&!xd(t.node,c,m,n)&&s.push(r);return}let g=Ou(D(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Ku(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=cfe(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&D(t.node,`CallExpression`)?new Set([N(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=D(e,`MemberExpression`)?ou(e.object,n):M(e)?ou(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Nu(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!xd(t.node,c,m,n))&&s.push(_??g);return}if(!D(l,`CallExpression`))return;let u=Fu(l.callee,n),d=D(u,`Identifier`)?wfe(u,t,n):u?Od(u,n):null,f=d&&C(d)?zu(d,l,n,i):null;if(d&&C(d)&&f&&!d.async&&!d.generator&&Bu(d,t,n,new Set(r),f,a)){let r=Ku(c,e,t,n,i)??Afe(c,e,t,n);s.push(r??l)}});let c=S(e.body);return a&&s.some(e=>S(e)===c)?!0:o||Ha(e,s,n)},Efe=(e,t,n)=>e.length>0&&e.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&C(r)&&Bu(r,t,n,new Set,new Map,!0))}),Vu=(e,t,n)=>{let r=N(e);if(!D(r,`CallExpression`))return!1;let i=N(r.callee);if(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=N(i.object);if(!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`))return!1;let o=W(a.object,n);if(o===null||o!==W(r.arguments?.[0],n))return!1;let s=a.property.name;return Hde(o,s,t,n)?!0:t.kind===`socket`?vu(o,t,n)&&(fd.has(s)||dd.has(s)):t.kind===`subscribe`&&vu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||tn.has(s))},Hu=(e,t,n)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async)return!1;let r=e=>{if(Vu(e,t,n))return!0;let r=Fu(e,n),i=Od(e,n);return r&&Vu(r,t,n)?!0:!!(i&&C(i)&&Bu(i,t,n))};if(!D(e.body,`BlockStatement`))return r(N(e.body));let i=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&r(N(e.argument))&&i.push(e)}),Ha(e,i,n)},Uu=(e,t,n,r=new Map)=>{let i=W(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=N(e);if(!D(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return W(a.left,n,new Set,r)===t&&o(a.right)||W(a.right,n,new Set,r)===t&&o(a.left)},Wu=(e,t,n,r)=>{let i=N(e),a=e=>{let t=N(e);if(D(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&D(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(D(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(D(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&rn(N(t))===!1)return!0}if(D(i,`UnaryExpression`)&&i.operator===`!`){let e=N(i.argument);if(D(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&rn(N(i))===!0)return!0}let a=W(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:Uu(i.argument,t,n,r)}if(D(i,`LogicalExpression`)){let e=Wu(i.left,t,n,r),a=Wu(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(D(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?W(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Gu=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(D(a,`IfStatement`)){if(!Uu(a.test,n,r,i)||!Du(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(C(t)&&D(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(D(a,`IfStatement`)&&a.alternate===null&&Yl(a.consequent)&&Wu(a.test,n,r,i))return a}}return o},Ku=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Gu(e,t,n.handleKey,r,i),Dfe=(e,t,n,r)=>{if(!C(t)||n.handleKey===null)return null;let i=e=>{let t=N(e);return D(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(D(a,`IfStatement`)&&R(e,a.consequent)&&(o=i(a.test).map(e=>W(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!D(a,`IfStatement`)||!o)return null;let s=U(n.node,r.scopes);if(!s){let e=b(n.node);for(;e&&!bs(e);)e=b(e);s=e}if(!s||!C(s))return null;let c=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(T(s.body,e=>{if(!D(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=W(e.left,r);t===o&&l.push(e),t===n.handleKey&&D(N(e.right),`CallExpression`)&&Wn(N(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=fu(l[0].left,r),f=d?.initializer?N(d.initializer):null,p=D(f,`CallExpression`)&&f.arguments[0]&&M(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(Uu(e,o,r))return!0;let t=!1;return T(e,e=>{if(t)return!1;if(D(e,`MemberExpression`)&&W(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Es(b(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(!D(n,`CallExpression`)||n.callee!==t)return!1;let i=b(n);if(!i||!C(i))return!1;if(kd(n,l.filter(e=>b(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(D(a,`IfStatement`)&&R(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=b(e);return!t||!C(t)?!1:kd(e,l.filter(e=>b(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!C(e))return!1;let t=e.parent,i=t?.parent;return!!(D(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&D(i,`AssignmentExpression`)&&W(i.left,r)===n.handleKey)},_=t=>{let i=b(t);if(!i||!C(i))return!1;if(g(i))return!0;let a=[];return T(i.body,t=>{if(t!==i.body&&C(t))return!1;(t===e||ed(t,n,r))&&a.push(t)}),kd(t,a,i,r)||Du(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},Ofe=new WeakMap,kfe=new WeakMap,Afe=(e,t,n,r)=>{let i=Ofe.get(e);if(i||(i=new WeakMap,Ofe.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=kfe.get(e);if(a||(a=new WeakSet,kfe.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=Dfe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},qu=(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=D(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||D(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||D(o,`LogicalExpression`)&&o.right===a||D(o,`AssignmentPattern`)&&o.right===a||(D(o,`ForStatement`)||D(o,`ForInStatement`)||D(o,`ForOfStatement`)||D(o,`WhileStatement`)||D(o,`DoWhileStatement`))&&o.body===a?a:D(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},jfe=(e,t,n,r=!1)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=p(t.node);if(!i||!a||o===null)return!1;let s=[];return Ql(e.body,c=>{if(!D(c,`CallExpression`))return;let l=p(c),u=Ku(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&qu(c,t.node,e))return;if(Cd(c,t,n)){s.push(u??c);return}let f=Od(c.callee,n),m=f&&C(f)?zu(f,c,n,new Map):null;f&&C(f)&&m&&Bu(f,t,n,new Set,m)&&s.push(u??c)}),r?kd(t.node,s,e,n):Ha(e,s,n)},Mfe=(e,t,n)=>{let r=b(e);if(!r||!D(r,`ArrowFunctionExpression`)&&!D(r,`FunctionExpression`)&&!D(r,`FunctionDeclaration`))return!1;let i=!1;return T(r.body,a=>{if(i)return!1;if(!D(a,`CallExpression`)||b(a)!==r||!iu(a,n))return;let o=Gn(a);if(o&&o!==e&&Hu(o,t,n))return i=!0,!1}),i},Nfe=(e,t,n)=>t.handleKey!==null&&Mfe(e,t,n)&&jfe(e,t,n,t.registrationVerbName===`setTimeout`),Ju=(e,t,n,r)=>{let i=N(e);if(D(i,`UnaryExpression`)&&i.operator===`!`)return Ju(i.argument,!t,n,r);if(D(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Ju(i.left,t,n,r),...Ju(i.right,t,n,r)]:[];if(D(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=rn(i.left),a=rn(i.right),o=e??a,s=e===null?i.left:i.right,c=W(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:D(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=W(i,r);return a===null?[]:[{bindingIdentifier:D(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Pfe=(e,t,n,r=!1)=>{if(!C(e)||e.async&&!r)return[];let i=[];T(e.body,r=>{if(r!==e.body&&C(r))return!1;D(r,`IfStatement`)&&!r.alternate&&!Dl(r.consequent,t,e,n)&&kd(t,[r],e,n)&&i.push(...Ju(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)D(o,`IfStatement`)&&o.consequent===a&&i.push(...Ju(o.test,!1,o,n)),a=o,o=o.parent;return i},Ffe=(e,t,n)=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);if(!r||!C(r)||r.async||r.generator)return!1;let i=!1;return T(r.body,e=>{if(i||e!==r.body&&C(e))return!1;if(D(e,`AssignmentExpression`)&&e.operator===`=`&&W(e.left,n)===t.key&&rn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},Ife=(e,t,n,r)=>{let i=p(t);if(!C(e)||i===null)return!0;let a=!1;return T(e.body,t=>{if(a||t!==e.body&&C(t))return!1;let o=p(t);if(o===null||o>=i)return;let s=D(t,`AssignmentExpression`)?t.left:D(t,`UpdateExpression`)?t.argument:null;if(s&&W(s,r)===n.key)return a=!0,!1}),a},Lfe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(D(a,`TryStatement`)&&a.block===i&&a.handler&&Dl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Rfe=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!D(i.declarationNode,`VariableDeclarator`)||b(i.declarationNode)!==e?!1:i.references.every(e=>{if(!ru(e.identifier))return!0;let r=S(e.identifier),i=r.parent;return D(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&rn(i.right)===t.value&&n.includes(b(i)??i)})},zfe=(e,t,n,r)=>{let i=[];T(t.guardNode,e=>{if(i.length===0&&D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&D(e.property,`Identifier`)&&W(e,r)===t.key)return i.push(e),!1});let a=i[0];if(!a)return!1;let o=r.scopes.symbolFor(a.object),s=o?.initializer?N(o.initializer):null;if(!o||o.kind!==`const`||!D(o.declarationNode,`VariableDeclarator`)||b(o.declarationNode)!==e||!D(s,`ObjectExpression`)||s.properties.length!==1)return!1;let c=s.properties[0];return!D(c,`Property`)||w(c)!==w(a)||rn(c.value)!==!t.value?!1:o.references.every(e=>{let i=td(e.identifier);if(!D(i,`MemberExpression`)||W(i,r)!==t.key)return!1;if(!ru(e.identifier))return!0;let a=i.parent;return D(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&rn(a.right)===t.value&&n.includes(b(a)??a)})},Bfe=(e,t,n,r)=>{if(!C(e))return!0;let i=p(t.guardNode),a=p(n);if(i===null||a===null)return!0;let o=!1;return T(e.body,t=>{if(o||t!==e.body&&C(t))return!1;let s=p(t);if(!(s===null||s<=i||s>=a)&&(D(t,`AwaitExpression`)||D(t,`YieldExpression`)||D(t,`CallExpression`)&&!Ja(t,r.scopes))&&(Dl(t,n,e,r)||Lfe(t,n,e,r)))return o=!0,!1}),o},Vfe=(e,t,n,r,i)=>{let a=S(t),o=D(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:yfe(t,e,i);if(!C(t)||!t.async||t.generator||!o||b(o)!==e||!Hl(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(D(s,`ForStatement`)||D(s,`ForInStatement`)||D(s,`ForOfStatement`)||D(s,`WhileStatement`)||D(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,i);return t&&C(t)?[t]:[]});return c.length===r.length?Pfe(t,n,i,!0).some(a=>(Rfe(e,a,c,i)||zfe(e,a,c,i))&&!Bfe(t,a,n,i)&&!Ife(t,n,a,i)&&r.every(e=>Ffe(e,a,i))):!1},Hfe=(e,t)=>{let n=Xl(N(e),t.scopes),r=n?.initializer?N(n.initializer):null;if(!D(r,`CallExpression`))return null;let i=r.arguments?.[0]?N(r.arguments[0]):null;return!D(i,`Literal`)||typeof i.value!=`number`?null:W(e,t)},Yu=(e,t)=>{let n=N(e);if(D(n,`LogicalExpression`)&&n.operator===`||`)return Yu(n.left,t)??Yu(n.right,t);if(!D(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=Hfe(n.left,t),i=Hfe(n.right,t),a=N(r?n.right:n.left),o=r??i;return o&&D(a,`Identifier`)?o:null},Ufe=(e,t,n)=>{if(!C(e))return null;let r=null;return T(e.body,i=>{if(r||i!==e.body&&C(i))return!1;if(!D(i,`IfStatement`)||i.alternate)return;let a=Yu(i.test,n);!a||Dl(i.consequent,t,e,n)||!kd(t,[i],e,n)||(r=a)}),r},Wfe=(e,t,n)=>{if(D(e,`UpdateExpression`)&&W(e.argument,n)===t)return!0;if(!D(e,`AssignmentExpression`)||W(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=N(e.right);return D(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Gfe=(e,t,n)=>{if(!C(e))return!1;let r=!1;return T(e.body,i=>{if(r||i!==e.body&&C(i))return!1;if(Wfe(i,t,n))return r=!0,!1}),r},Kfe=(e,t,n)=>e.length>0&&e.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&C(r)&&Bu(r,t,n))}),qfe=(e,t)=>{let n=W(e,t),r=N(e);if(!D(r,`Identifier`))return n;let i=Fu(r,t);return i&&i!==r?W(i,t)??n:n},Jfe=(e,t,n)=>{let r=N(e);if(!D(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=N(e),a=N(r);if(!(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||qfe(i.object,n)!==t||!D(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Yfe=(e,t,n)=>{if(!C(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];T(e.body,r=>{if(r!==e.body&&C(r))return!1;if(!D(r,`IfStatement`)||r.alternate!==null||!Yl(r.consequent)||!kd(t.node,[r],e,n))return;let o=Jfe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let s=[...o][0],c=new Set(a.map(({value:e})=>e)),l=U(t.node,n.scopes);if(!l){let e=b(t.node);for(;e&&!bs(e);)e=b(e);l=e}if(!s||!l||!C(l))return!1;let u=new Set,d=!1;return T(l.body,e=>{if(d)return!1;if(!D(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=W(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=N(e.right);if(D(r,`Literal`)&&r.value===null)return;let a=Fu(r,n);if(!a||!D(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>D(e,`Property`)&&w(e)===s),c=D(o,`Property`)?N(o.value):null;if(!c||!D(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},Xfe=(e,t,n)=>{if(!C(e)||t.handleKey===null)return!1;let r=p(t.node);if(r===null)return!1;let i=e=>{let t=N(e);return D(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=N(e),r=W(t,n);if(r)return r;if(!D(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?W(a,n):null},o=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!C(e))return!1;let r=e.parent,i=r?.parent;return!!(D(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Wn(r)===`setTimeout`&&D(i,`AssignmentExpression`)&&W(i.left,n)===t.handleKey)},c=e=>{let r=b(e);if(!r||!C(r))return!1;let i=[];return T(r.body,a=>{if(a!==r.body&&C(a))return!1;let o=p(a),s=p(e);o!==null&&s!==null&&o<s&&ed(a,t,n)&&i.push(Ku(a,r,t,n)??a)}),kd(e,i,r,n)},l=null,u=null,d=null,f=null;if(T(e.body,o=>{if(l||!D(o,`IfStatement`))return;let s=p(o);if(s===null||s>=r||Dl(o.consequent,t.node,e,n))return;let c=i(o.test),m=c.map(a).filter(e=>e!==null);if(m.includes(t.handleKey??``)){u=m.find(e=>e!==t.handleKey)??null;for(let e of c){let t=N(e);if(!D(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=W(t.left,n),i=W(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let m=U(t.node,n.scopes);if(!m){let e=b(t.node);for(;e&&!bs(e);)e=b(e);m=e}if(!m||!C(m))return!1;let h=[],g=[],_=[],v=[];if(T(m.body,e=>{if(D(e,`AssignmentExpression`)){let r=W(e.left,n);r===u&&h.push(e),r===d&&g.push(e),r===f&&_.push(e),r===t.handleKey&&D(N(e.right),`CallExpression`)&&Wn(N(e.right))===`setTimeout`&&v.push(e)}D(e,`UpdateExpression`)&&W(e.argument,n)===f&&_.push(e)}),v.length===0)return!1;let ee=h.length>0?fu(h[0].left,n)?.initializer:null,te=ee&&D(ee,`CallExpression`)?ee.arguments[0]:null;return!(!te||!M(te)||!o(te)||!v.every(e=>{let t=b(e);return!t||!C(t)?!1:kd(e,h.filter(e=>b(e)===t&&!o(e.right)),t,n)})||h.filter(e=>o(e.right)&&!s(b(e)??e)&&!c(e)).length>0||g.some(e=>W(e.right,n)!==f)||_.some(e=>!c(e)))},Xu=(e,t,n)=>{let r=t.handleKey;if(!C(e)||r===null)return!1;let i=p(t.node);if(i===null)return!1;let a=!1,o=[];return T(e.body,s=>{if(a||s!==e.body&&C(s))return!1;if(D(s,`IfStatement`)&&!s.alternate&&Uu(s.test,r,n)&&!Dl(s.consequent,t.node,e,n)&&kd(t.node,[s],e,n))return a=!0,!1;let c=p(s);if(c===null||c>=i||!ed(s,t,n))return;let l=Ku(s,e,t,n);o.push(l??s)}),a||Xfe(e,t,n)||Yfe(e,t,n)||kd(t.node,o,e,n)},Zu=(e,t)=>e.kind===`subscribe`?e.handlerKey??W(Eu(e),t):e.kind!==`timer`||!D(e.node,`CallExpression`)?null:W(e.node.arguments?.[0],t),Qu=(e,t)=>{let n=Es(e);return new Set([W(e,t),W(n,t)].filter(e=>e!==null))},$u=(e,t,n,r)=>Efe(n,t,r)&&Du(Ru(t.node,e,r),n,r),ed=(e,t,n)=>{if(Cd(e,t,n))return!0;let r=D(e,`ChainExpression`)?e.expression:e;if(!D(r,`CallExpression`))return!1;let i=Fu(r.callee,n),a=C(i)?i:Od(r.callee,n),o=a&&C(a)?zu(a,r,n,new Map):null;return!!(a&&C(a)&&o&&!a.async&&!a.generator&&Bu(a,t,n,new Set,o,!0))},Zfe=(e,t,n)=>{let r=N(e);if(D(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&D(e.declarationNode,`VariableDeclarator`)&&b(e.declarationNode)===t?e:null}let i=Xl(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;D(a,`MemberExpression`);)a=N(a.object);if(!D(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?N(o.initializer):null;return o&&o.kind===`const`&&D(o.declarationNode,`VariableDeclarator`)&&D(s,`ObjectExpression`)&&b(o.declarationNode)===t?o:null},td=e=>{let t=e;for(;D(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return S(t)},Qfe=(e,t)=>{let n=new Set,r=new Set,i=Zu(e,t);if(i&&n.add(i),e.kind!==`timer`||!D(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!D(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?b(o.bindingIdentifier):null;if(!o||!s||!C(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=Es(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(!D(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!M(a))return n;let o=W(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},nd=(e,t,n,r)=>{if(!C(e)||t.handleKey===null)return!1;let i=Qu(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||b(n.node)===e)return!1;let a=Qfe(n,r);return[...i].some(e=>a.has(e))})},$fe=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Lu(n.identifier),s=r?b(r):null;if(!r||!s||!C(s))return!1;if(s===e)o+=1;else if(!nd(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=>!Dl(n,t,e,i)&&!Dl(t,n,e,i))))},epe=(e,t,n,r,i)=>t.references.every(t=>{let a=td(t.identifier);if(W(a,i)!==e.handleKey)return D(n.left,`Identifier`);if(!ru(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!D(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=N(o.right),c=b(o),l=r.find(t=>t.kind===`timer`&&t.node===s&&t.handleKey===e.handleKey),u=b(e.node),d=u?Qu(u,i):new Set;if(l&&(c&&nd(c,e,r,i)||d.has(Zu(l,i)??``)))return!0;if(!(D(s,`Literal`)&&s.value===null||D(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s))||!c||!C(c))return!1;if(nd(c,e,r,i))return!0;let f=[];return T(c.body,t=>{if(t!==c.body&&C(t))return!1;ed(t,e,i)&&f.push(t)}),kd(o,f,c,i)}),tpe=(e,t,n)=>{let r=ffe(t.node,n);return!!(r&&b(r.declarationNode)===e)},npe=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=Qu(t,r);if(!i.has(Zu(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&b(e.node)===t&&i.has(Zu(e,r)??``));return a.length===1&&a[0]===e},rpe=(e,t,n,r,i)=>{let a=b(t.node),o=S(t.node),s=o.parent,c=t.handleKey!==null&&D(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?Zfe(s.left,e,i):null,l=tpe(e,t,i);if(t.kind!==`timer`||!a||!C(a)||a===e||a.async||a.generator||!c&&!l||!Efe(r,t,i)||c&&D(s,`AssignmentExpression`)&&!epe(t,c,s,n,i))return!1;if(nd(a,t,n,i))return!0;let u=Es(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=npe(t,a,n,i);if(c&&!p&&!Xu(a,t,i)&&!f&&!$fe(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(D(m,`ForStatement`)||D(m,`ForInStatement`)||D(m,`ForOfStatement`)||D(m,`WhileStatement`)||D(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&R(e.identifier,t.node)&&Zu(t,i)===W(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=Ul(e,i.scopes);return d.references.every(o=>{let s=W(o.identifier,i);if(h.some(e=>e===o))return!0;let c=n.find(e=>e!==t&&s!==null&&Zu(e,i)===s),l=c?Eu(c):null;if(c&&!(l&&C(l)&&l.async)&&$u(e,c,r,i))return!0;let u=Lu(o.identifier);if(!u)return!1;let d=b(u);if(!d||!C(d)||d===a||d.generator)return!1;if(d.async)return Vfe(e,d,u,r,i);if(nd(d,t,n,i))return!0;if(d===e)return Du(Ru(u,e,i),r,i);let f=Qu(d,i),p=n.find(e=>{if(e===t)return!1;let n=Eu(e),r=n?Fu(n,i):null;return f.has(Zu(e,i)??``)||r===d});return p?$u(e,p,r,i):g.has(d)&&Du(Ru(u,e,i),r,i)})},ipe=(e,t,n,r,i,a)=>{let o=Lu(e);if(o){let e=b(o);if(e&&e!==t&&Ul(r).has(e))return{generationKey:null};let n=e?Ufe(e,o,a):null;return n?{generationKey:n}:null}let s=S(e),c=s.parent;if(!D(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!D(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=Ufe(t,n,a);return l.handleKey!==null&&Kfe(i,l,a)&&u?{generationKey:u}:null},ape=(e,t,n,r)=>{let i=b(t.node),a=S(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!C(i)||i===e||i.async||i.generator||!D(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!Xl(N(o.left),r.scopes)||!Ul(e).has(i)||!Kfe(n,t,r)||!Ha(e,n,r))return!1;let s=n.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&C(t)?[t]:[]}),c=Es(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>ipe(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`?[...Ul(e),...s].some(e=>Gfe(e,f,r)):!1},ope=(e,t,n,r)=>{if(ape(e,t,n,r))return!0;let i=b(t.node),a=i?Vl(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!C(i)||i===e||i.async||i.generator||!D(t.node,`CallExpression`)||!D(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!Hl(e,r.scopes).has(i)||!Du(a,n,r))return!1;let o=S(t.node),s=o.parent;if(!D(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!D(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!D(c.declarationNode,`VariableDeclarator`)||b(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&C(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!C(e))return!1;let n=[];if(T(e.body,i=>{if(i!==e.body&&C(i))return!1;if(D(i,`CallExpression`)&&D(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Cd(i,t,r)){let a=Ku(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Ha(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>ru(e.identifier)),f=d.some(e=>S(e.identifier).parent===s),p=d.some(e=>{let t=S(e.identifier),n=t.parent;if(n===s)return!1;if(!D(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=N(n.right);if(!(D(i,`Literal`)&&i.value===null||D(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=b(n),o=a?u.get(a):void 0;return!(a&&o&&kd(n,o.map(e=>e.handleGuard&&R(n,e.handleGuard.consequent)?e.call:e.anchor),a,r))});if(!f||p)return!1;let m=t.node.parent;for(;m&&m!==i;){if(D(m,`ForStatement`)||D(m,`ForInStatement`)||D(m,`ForOfStatement`)||D(m,`WhileStatement`)||D(m,`DoWhileStatement`))return!1;m=m.parent}let h=!1;for(let e of t.node.arguments??[])T(e,e=>{if(h||C(e))return!1;if(D(e,`AwaitExpression`)||D(e,`YieldExpression`)||D(e,`CallExpression`)&&!Ja(e,r.scopes))return h=!0,!1});return h?!1:Pfe(i,t.node,r).some(a=>Rfe(e,a,l,r)&&!Bfe(i,a,t.node,r)&&!Ife(i,t.node,a,r)&&n.every(e=>Ffe(e,a,r)))},spe=(e,t,n)=>{if(!C(e)||!D(e.body,`BlockStatement`))return!1;let r=new Set;if(T(e.body,e=>{if(!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||Wn(e)!==`push`||!D(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!M(a))return;let o=N(a),s=C(o)?o:Fu(a,n);if(!s||!C(s))return;let c=!1;if(T(s.body,e=>{if(c||e!==s.body&&C(e))return c?!1:void 0;if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let i=D(t.node,`CallExpression`)?t.node:null;if(Wn(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 c=!0,!1}),!c)return;let l=S(t.node),u=l.parent,d=S(e),f=d.parent;if(!u||!D(u,`ExpressionStatement`)||u.expression!==l||!f||!D(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!D(u.parent,`BlockStatement`)||u.parent!==f.parent)return;let p=u.parent.body.findIndex(e=>e.range[0]===u.range[0]);if(u.parent.body.findIndex(e=>e.range[0]===f.range[0])!==p+1)return;let m=n.scopes.symbolFor(i.object),h=m?.initializer?N(m.initializer):null;m?.kind!==`const`||!h||!D(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=S(e.identifier);if(D(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!D(n,`MemberExpression`)||n.object!==t)return!1;let r=S(n).parent;return!!(r&&D(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(w(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return Ql(e.body,e=>{if(i||!D(e,`ReturnStatement`)||!e.argument)return;let t=N(e.argument),a=C(t)?t:Fu(e.argument,n);!a||!C(a)||T(a.body,e=>{if(i)return!1;if(!D(e,`CallExpression`))return;let t=N(e.callee);if(D(t,`Identifier`)){let a=Ou(t,n),o=a?N(a.right):null,s=D(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Nu(e,a,n))return i=!0,!1}if(!D(t,`MemberExpression`)||Wn(e)!==`forEach`||!D(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!M(o))return;let s=N(o);if(!C(s))return;let c=s.params[0];if(!c||!D(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return T(s.body,e=>{if(D(e,`CallExpression`)&&D(N(e.callee),`Identifier`)&&n.scopes.symbolFor(N(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},cpe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!D(t.node,`CallExpression`))return!1;let r=N(t.node.callee);if(!D(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),s=cu(t.node.arguments[0],n),c=cu(t.node.arguments[1],n),l=uu(t.node.arguments[2],n,!0),u=!1;return T(e,e=>{if(u||!D(e,`CallExpression`))return u?!1:void 0;if(Wn(e)!==`removeEventListener`)return;let r=N(e.callee);if(D(r,`MemberExpression`)&&!(cu(r.object,n)!==o||cu(e.arguments[0],n)!==s||cu(e.arguments[1],n)!==c||uu(e.arguments[2],n,!0)!==l)&&yd(e,a,n)&&!xd(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},rd=(e,t)=>{let n=N(e);return D(n,`MemberExpression`)?fu(n,t):null},id=(e,t)=>{let n=N(e);if(D(n,`LogicalExpression`)&&n.operator===`||`){let e=id(n.left,t),r=id(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(D(n,`UnaryExpression`)&&n.operator===`!`){let e=rd(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(D(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=rd(n.left,t),r=rd(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},lpe=(e,t)=>{let n=N(e);if(!D(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=rd(n.left,t),i=rd(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},ad=(e,t,n,r=new Set)=>{if(!C(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!D(a,`BlockStatement`)){let e=N(a);if(!D(e,`CallExpression`))return null;let r=Fu(e.callee,n);return r?ad(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!D(r,`VariableDeclaration`)){if(D(r,`ExpressionStatement`)){let o=N(r.expression);if(D(o,`AssignmentExpression`)){let e=W(o.left,n),r=N(o.right),i=D(r,`Literal`)&&r.value===null||D(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(D(o,`CallExpression`)&&e===a.body.length-1){let e=Fu(o.callee,n);return e?ad(e,t,n,i):null}return null}return D(r,`IfStatement`)?Yl(r.consequent)?id(r.test,n):!r.alternate&&e===a.body.length-1?lpe(r.test,n):null:null}}return null},od=(e,t,n,r=new Set)=>{if(!C(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return T(e.body,r=>{if(a||r!==e.body&&C(r))return!1;if(D(r,`UpdateExpression`))return fu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(D(r,`AssignmentExpression`))return fu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?rn(N(r.right))===!1:rn(N(r.right))!==!0))?(a=!0,!1):void 0;if(!D(r,`CallExpression`))return;let o=Fu(r.callee,n);if(o&&od(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},upe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!D(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&M(n)?N(n):null,i=r?C(r)?r:Fu(r,t):null;if(!i)return!1;let a=ad(i,e,t);if(!a)return!1;let o=U(e.node,t.scopes);if(!o){let t=b(e.node);for(;t&&!bs(t);)t=b(t);o=t}if(!o||!C(o))return!1;let s=!1;return T(o.body,e=>{if(s)return!1;if(!D(e,`CallExpression`)||!iu(e,t))return;let n=Gn(e);!n||!C(n)||Ql(n.body,e=>{if(s||!D(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);n&&od(n,a,t)&&(s=!0)})}),s},dpe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!C(e)||!D(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&M(r)?N(r):null,a=i?C(i)?i:Fu(i,n):null;if(!a)return!1;let o=ad(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return T(e.body,t=>{if(t!==e.body&&C(t))return!1;if(D(t,`UpdateExpression`)&&fu(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}D(t,`AssignmentExpression`)&&t.operator!==`=`&&fu(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),kd(t.node,s,e,n)},sd=(e,t)=>{if(upe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!D(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!M(n))return!1;let r=N(n),i=C(r)?r:Fu(n,t);if(!i||!C(i)||!D(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!D(a,`IfStatement`)||!Yl(a.consequent))return!1;let o=N(a.test);for(;D(o,`LogicalExpression`)&&o.operator===`||`;)o=N(o.left);if(!D(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=Xl(N(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=b(e.node),l=null;for(;c;){let e=c.parent;if(e&&D(e,`CallExpression`)&&iu(e,t)){l=e;break}c=b(c)}let u=U(l||e.node,t.scopes);if(!u){let t=b(e.node);for(;t&&!bs(t);)t=b(t);u=t}if(!u||!C(u))return!1;let d=!1;return T(u.body,e=>{if(d)return!1;if(!D(e,`CallExpression`)||!iu(e,t))return;let n=Gn(e);if(!n||!C(n))return;let r=N(n.body);C(r)&&T(r.body,e=>{if(D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&rn(N(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),Ql(n.body,e=>{if(d||!D(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);!n||!C(n)||T(n.body,e=>{if(D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&rn(N(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},fpe=(e,t,n)=>{let r=b(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!r||!zl(r)||!C(e)||!D(e.body,`BlockStatement`))return!1;let i=[];return Ql(e.body,e=>{if(!D(e,`ReturnStatement`)||!e.argument)return;let r=Od(e.argument,n);if(!r||!C(r))return;let a=[];T(r.body,e=>{if(e!==r.body&&C(e))return!1;let i=D(e,`ChainExpression`)?e.expression:e,o=D(i,`CallExpression`)?N(i.callee):null;D(i,`CallExpression`)&&D(o,`MemberExpression`)&&!o.computed&&D(o.property,`Identifier`)&&o.property.name===`disconnect`&&W(o.object,n)===t.receiverKey&&a.push(e)}),Ha(r,a,n)&&i.push(e)}),Du(t.node,i,n)},ppe=(e,t,n)=>El({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>C(e)&&Bu(e,t,n)}),cd=(e,t,n,r=[t])=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async)return!1;if(spe(e,t,n)||cpe(e,t,n)||fpe(e,t,n)||ppe(e,t,n)||sd(t,n)||Pd(e,t,n)||t.kind===`subscribe`&&b(t.node)===e&&Rd(t.node,!0,!0,n)&&xu(t,n))return!0;if(!D(e.body,`BlockStatement`))return e.body===t.node&&xu(t,n);let i=S(t.node),a=i.parent,o=D(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&D(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&b(t.node)!==e&&!!(o&&(o.kind===`let`||o.kind===`var`)&&D(o.declarationNode,`VariableDeclarator`)&&b(o.declarationNode)===e),c=[];if(Ql(e.body,e=>{if(!D(e,`ReturnStatement`))return;let r=p(e),i=p(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?N(e.argument):null;if(!a)return;if(Vu(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||p(a)!==null&&p(a)===p(t.node))&&xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&Vde(a,t,n)){c.push(e);return}if(D(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Fu(a,n);if(o&&Vu(o,t,n)){c.push(e);return}!o||!C(o)||Bu(o,t,n,new Set,new Map,s)&&c.push(e)}),ope(e,t,c,n)||rpe(e,t,r,c,n))return!0;let l=b(t.node),u=l?Cfe(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>Du(e,c,n))?!0:Du(Ru(t.node,e,n,t),c,n)},mpe=(e,t,n)=>{for(let r of t)if(!cd(e,r,n,t)&&!Nfe(e,r,n))return r;return null},ld=(e,t,n=new Set)=>{let r=N(e);if(D(r,`NewExpression`)&&D(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(D(r,`MemberExpression`))return ld(r.object,t,n);if(!D(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 ld(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(D(a,`Property`)&&D(o,`ObjectPattern`)&&D(s,`VariableDeclarator`)&&s.init&&ld(s.init,t,n))},hpe=(e,t)=>{if(!D(e,`Property`))return!1;let n=D(e.key,`Identifier`)?e.key.name:D(e.key,`Literal`)?e.key.value:null;return n===`signal`?!ld(e.value,t):n===`once`?D(e.value,`Literal`)&&e.value.value===!0:!1},gpe=(e,t)=>D(e,`CallExpression`)&&(e.arguments??[]).some(e=>D(e,`ObjectExpression`)&&(e.properties??[]).some(e=>hpe(e,t))),ud=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`])]]),dd=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),fd=new Set([`close`]),_pe=new Set([`removeChannel`,`removeAllChannels`]),pd=e=>{let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return null;let n=N(t.callee);if(D(n,`Identifier`))return ke.has(n.name)||Fn.has(n.name)||dd.has(n.name)?n.name:null;if(D(n,`MemberExpression`)&&D(n.property,`Identifier`)){let e=n.property.name;return Fn.has(e)||tn.has(e)||_pe.has(e)||e===`on`?e:null}return null},vpe=(e,t,n)=>{let r=b(e),i=b(t.node);if(!r||!i||!C(i)||!Td(r,n)||!Zl(e,n.scopes))return!1;let a=hfe(t,n),o=W(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];T(s,e=>{if(e!==s&&C(e))return!1;if(D(e,`AssignmentExpression`)&&W(e.left,n)===o&&W(e.right,n)===a){l.push(e);return}if(!D(e,`CallExpression`))return;let t=D(e.callee,`ChainExpression`)?e.callee.expression:N(e.callee);D(t,`MemberExpression`)&&!t.computed&&D(t.property,`Identifier`)&&t.property.name===`abort`&&W(t.object,n)===o&&c.push(e)});let u=l.filter(e=>kd(e,c,i,n));return kd(t.node,u,i,n)},md=e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hd=(e,t)=>{let n=Es(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!!(D(n,`JSXExpressionContainer`)&&n.expression===t&&md(n.parent))}):!1},gd=(e,t,n)=>{let r=Es(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=D(e,`Property`)?w(e):null;if(!D(e,`Property`)||!D(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=S(e.parent),i=r.parent;if(!D(i,`ReturnStatement`)||i.argument!==r)return!1;let a=b(i);return!!(a&&_s(Es(a)?.name??``))};if(i.references.some(e=>{let t=S(e.identifier),n=t.parent;return D(n,`Property`)&&n.value===t?a(n):!1}))return!0;let o=b(e);if(!o||!C(o)||!_s(Es(o)?.name??``))return!1;let s=!1;return T(o.body,e=>{if(s)return!1;if(D(e,`Property`)&&D(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},ype=e=>{if(!C(e))return!1;let t=e.params[0];if(!t)return!1;let n=(D(t,`Identifier`)?t:D(t,`AssignmentPattern`)&&D(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=D(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(D(r,`TSNullKeyword`)||D(r,`TSUnionType`)&&r.types.some(e=>D(e,`TSNullKeyword`)))},bpe=(e,t)=>{if(!C(e))return!1;let n=Es(e),r=b(e),i=r?Es(r):null;if(!n||!r||!C(r)||!i||!_s(i.name))return!1;let a=new Set;if(T(r.body,e=>{if(!D(e,`Property`)||!D(e.value,`Identifier`)||e.value.name!==n.name||!D(e.parent,`ObjectExpression`))return;let t=S(e.parent);if(D(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=w(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 s=!1;for(let e of o.references){let n=S(e.identifier),r=n.parent,i=r?.parent;if(!D(r,`CallExpression`)||r.callee!==n||!D(i,`VariableDeclarator`)||i.init!==r||!D(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(!D(n,`MemberExpression`)||n.object!==t||!a.has(w(n)??``))continue;let r=S(n),i=r.parent;if(!D(i,`JSXExpressionContainer`)||i.expression!==r||!md(i.parent))return!1;s=!0}}return s},_d=(e,t)=>hd(e,t)||gd(e,t,!0)||bpe(e,t)||ype(e)&&gd(e,t,!1),vd=(e,t)=>{if(!C(e)||!e.returnType)return!1;let n=!1;if(T(e.returnType,e=>{if(D(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Es(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(D(n,`JSXExpressionContainer`)&&n.expression===t&&D(n.parent,`JSXAttribute`))}):!1},xpe=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(D(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=N(o.test);if(!D(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[N(e.left),N(e.right)],a=t.some(e=>Uu(e,n,i)),s=t.some(e=>{if(!D(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=W(e.left,i),a=W(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Spe=(e,t,n,r)=>{if(!C(e))return[];let i=[];return T(e.body,a=>{if(a!==e.body&&C(a))return!1;if(!D(a,`IfStatement`)||a.alternate!==null||!Yl(a.consequent))return;let o=N(a.test);if(!D(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=W(o.left,r),c=W(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Cpe=(e,t,n)=>{if(!D(t.node,`CallExpression`))return!1;let r=b(t.node);if(!r||!C(r)||r!==b(e)||!_d(r,n))return!1;let i=N(t.node.callee),a=N(e.callee),o=D(a,`MemberExpression`)?fu(a.object,n):null;if(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`addEventListener`||!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=W(N(i.object),n),c=W(r.params?.[0],n),l=W(a.object,n),u=W(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==W(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=p(e),a=[];return T(r.body,e=>{if(e!==r.body&&C(e))return!1;if(!D(e,`AssignmentExpression`)||e.operator!==`=`||!D(N(e.right),`ObjectExpression`)||Xl(N(e.left),n.scopes)?.id!==o.id)return;let c=W(e.left,n),d=N(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(p(e)??-1)<=i||!D(d,`ObjectExpression`))return;let f=d.properties.find(e=>D(e,`Property`)&&w(e)===`element`),m=d.properties.find(e=>D(e,`Property`)&&w(e)===`handler`);D(f,`Property`)&&D(m,`Property`)&&W(f.value,n)===s&&W(m.value,n)===t.handlerKey&&a.push(e)}),Ha(r,[Gu(e,r,l,n)??e],n)&&Du(t.node,a,n)}if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=p(e),f=[],m=r.body;T(m,e=>{if(e!==m&&C(e))return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),n.scopes)?.id===o.id&&W(e.right,n)===s&&d!==null&&(p(e)??-1)>d&&f.push(e)});let h=Gu(e,r,l,n)??xpe(e,r,l,s,n)??e,g=f.filter(e=>kd(e,[h],r,n));return Ha(r,[h,...Spe(r,l,s,n)],n)&&kd(t.node,g,r,n)},wpe=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!D(t.node,`CallExpression`))return!1;let r=b(t.node),i=N(e.callee);if(!r||!C(r)||r!==b(e)||!_d(r,n)||!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=W(r.params[0],n),o=fu(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let s=[];return T(r.body,e=>{if(e!==r.body&&C(e))return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),n.scopes)?.id===o.id&&W(e.right,n)===t.receiverKey&&s.push(e)}),Ha(r,[e],n)&&Du(t.node,s,n)},yd=(e,t,n)=>{let r=S(e),i=new Set,a=new Set;for(;;){let e=b(r);if(!e||!C(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=D(e.body,`BlockStatement`)&&D(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Ha(e,[c?s:r],n))return null;let l=Iu(e);if(!l)return a.size===t.size&&Td(e,n)?e:null;let u=N(l.callee);if(!D(u,`MemberExpression`))return null;let d=W(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=S(l)}},bd=e=>{let t=new Set,n=e;for(;;){let e=b(n);if(!e||!C(e)||t.has(e))break;t.add(e),n=e}return t},xd=(e,t,n,r)=>{let i=p(e),a=p(t);if(i===null||a===null)return!0;let o=bd(e),s=bd(t),l=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),u=(e,t,i,a)=>{if(a&&D(e,`ReturnStatement`)&&l(W(e.argument,r),t))return!0;if(D(e,`AssignmentExpression`)){let i=W(e.left,r),a=N(e.left);return l(W(e.right,r),t)&&!l(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||D(a,`MemberExpression`)&&a.computed&&l(W(a.object,r),t)}if(D(e,`UnaryExpression`)&&e.operator===`delete`){let n=N(e.argument);return D(n,`MemberExpression`)&&l(W(n.object,r),t)}if(D(e,`UpdateExpression`)){let i=W(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!D(e,`CallExpression`)&&!D(e,`NewExpression`))return!1;let o=e.arguments.some(e=>M(e)?l(W(e,r),t)&&ju(e,r)===null:!1),s=N(e.callee),d=D(e,`CallExpression`)&&D(s,`MemberExpression`)&&!s.computed&&D(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&D(s.property,`Identifier`)&&s.property.name===`from`;return o&&!d||D(s,`MemberExpression`)&&!s.computed&&D(s.property,`Identifier`)&&(Ede.has(s.property.name)||Dde.has(s.property.name))&&l(W(s.object,r),t)?!0:D(e,`CallExpression`)?[c(e.callee,r.scopes),...e.arguments.flatMap(t=>M(t)&&Rl(e,t)?[c(t,r.scopes)]:[])].some(e=>{if(!e||!C(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return T(e.body,i=>{if(r||i!==e.body&&C(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 T(d,e=>{if(f)return!1;let t=p(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,l=s.has(n)&&t<a;if(!(!c&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Sd=(e,t)=>Wn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Tpe=(e,t,n)=>{let r=N(e.callee),i=N(t.callee);if(!D(r,`MemberExpression`)||!D(i,`MemberExpression`))return!0;let a=Wn(e),o=Wn(t),s=t.arguments?.[+!Sd(e,t)],c=b(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&&C(c)&&Td(c,n)&&Ha(c,[t],n)&&(o!==null&&dd.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=Pde(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!yd(t,p,n)&&!lfe(t,p,n)?!1:!xd(e,t,new Map([...p].map(e=>[e,1/0])),n)},Cd=(e,t,n,r=new Map)=>{let i=D(e,`ChainExpression`)?e.expression:e;if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(t.kind===`timer`){let e=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!D(a,`Identifier`)||!ke.has(a.name)||a.name!==e)return!1;let o=W(i.arguments?.[0],n,new Set,r);if(vu(o,t,n))return!0;if(r.size>0&&o!==null)return!1;let s=i.arguments?.[0];if(s&&M(s)){let e=gu(s,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let c=Pu(t.node,n);return c!==null&&c===ju(i.arguments?.[0],n)}if(D(a,`Identifier`)&&t.kind===`subscribe`&&(Bde(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||xu(t,n))||t.registrationVerbName===`addListener`&&nfe(a,t,n)))return!0;let o=pd(i);if(!o||!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`))return!1;let s=cu(a.object,n),c=cu(i.arguments?.[0],n),l=t.registrationVerbName?ud.get(t.registrationVerbName):null,u=pfe(t,n),d=Ou(a.object,n),f=d?W(d.right,n):ju(a.object,n);if(l&&wd(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||Cpe(i,t,n)||wpe(i,t,n)||Hde(s,o,t,n))return!0;if(t.kind===`socket`)return vu(s,t,n)&&(fd.has(o)||dd.has(o));if(t.kind===`subscribe`&&D(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===Wde(t.node,n)&&(o===`removeAllChannels`||vu(W(i.arguments?.[0],n,new Set,r),t,n))||(vu(s,t,n)||t.kind===`subscribe`&&nfe(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||tn.has(o))||o===`abort`&&s===(hfe(t,n)??_fe(t,n)??vfe(t,n))||o===`abort`&&vpe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&D(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)&&!C(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&D(t.node,`CallExpression`)&&(!D(N(t.node.callee),`MemberExpression`)||!du(t.node.arguments?.[2],i.arguments?.[2],n,!0))||D(t.node,`CallExpression`)&&!Tpe(t.node,i,n))return!1;let p=D(t.node,`CallExpression`)?N(t.node.callee):null,m=D(p,`MemberExpression`)?rfe(p.object,n):null,h=rfe(a.object,n);if(!(m!==null&&m===h)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&W(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?ud.get(t.registrationVerbName):null;if(!g||!wd(o,g))return!1;let _=D(t.node,`CallExpression`)?t.node.arguments?.[0]:null,v=i.arguments?.[0];if(Yde(_,n)||Yde(v,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!D(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(_,n),c=Ou(v,n);if(s===null!=(c===null))return!1;let l=ju(t.node.arguments?.[0],n),u=ju(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=afe(t.node.arguments?.[1],n),r=afe(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=N(t.node.callee);if(!D(s,`MemberExpression`)||!ife(s.object,n)||!ife(a.object,n)||e===null||e!==r||!du(t.node.arguments?.[2],i.arguments?.[2],n)||!Nu(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return D(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=D(t.node,`CallExpression`)&&Sd(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=D(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?c===t.eventKey:!0},wd=(e,t)=>t.has(e)||dd.has(e),Td=(e,t)=>{let n=b(e);if(!n||!C(n))return!1;let r=n.parent;if(!D(r,`CallExpression`)||!iu(r,t))return!1;if(!D(n.body,`BlockStatement`))return Fu(n.body,t)===e;let i=!1;return Ql(n.body,n=>{D(n,`ReturnStatement`)&&n.argument&&Fu(n.argument,t)===e&&(i=!0)}),i},Ed=(e,t)=>{if(qd(e,t)||Td(e,t))return!0;let n=Es(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>b(t.identifier)!==e):!1},Epe=(e,t,n)=>{if(!C(e)||e.async||e.generator)return[];let r=b(t.node);if(!r||!C(r))return[];let i=new Map,a=e=>{let t=S(e),a=t.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=fu(a.left,n),s=W(a.left,n),c=b(a),l=p(a);if(!o&&D(a.left,`MemberExpression`)){let e=w(a.left),t=N(a.left.object),r=D(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!C(c))return;for(let t of r.references){let r=S(t.identifier),a=r.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!fu(a.left,n)||b(a)!==c)continue;let o=W(a.left,n),s=p(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=Es(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return T(r.body,t=>{if(t!==r.body&&C(t))return!1;D(t,`AssignmentExpression`)&&Fu(t.right,n)===e&&a(t.right)}),[...i.values()]},Dpe=(e,t,n)=>kd(t.node,[e.assignmentNode],e.retainedFunction,n)||Du(t.node,[e.assignmentNode],n),Ope=(e,t,n)=>{let r=!1;return T(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&C(i))return!1;if(!D(i,`AssignmentExpression`)||i===e.assignmentNode||W(i.left,n)!==e.refCurrentKey||!Dl(t.node,i,e.retainedFunction,n))return;let a=Fu(i.right,n);if(!a||!C(a)||!Bu(a,t,n))return r=!0,!1}),r},kpe=(e,t,n)=>{let r=b(e.retainedFunction);if(!r||!C(r))return!1;let i=t=>{if(!C(t))return!1;let r=!1;return T(t.body,i=>{if(r||i!==t.body&&C(i))return!1;if(D(i,`CallExpression`)&&W(i.callee,n)===e.refCurrentKey){let a=S(i),o=a.parent,s=D(t.body,`BlockStatement`)&&D(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!Gu(i,t,e.refCurrentKey,n);if((s||c||l)&&!Ad(t,i,e.refCurrentKey,n))return r=!0,!1}}),r},a=e=>{if(!C(e))return!1;if(!D(e.body,`BlockStatement`)){let t=Od(e.body,n);return!!(t&&i(t))}let t=[];return Ql(e.body,e=>{if(!D(e,`ReturnStatement`)||!e.argument)return;let r=Od(e.argument,n);!r||!i(r)||t.push(e)}),Ha(e,t,n)},o=!1;return T(r.body,e=>{if(o)return!1;if(!D(e,`CallExpression`)||b(e)!==r||!j(e,`useEffect`,n.scopes))return;let t=Gn(e);if(t&&a(t))return o=!0,!1}),o},Ape=(e,t,n)=>{if(!hd(e.retainedFunction,n)&&!(()=>{if(!C(e.retainedFunction))return!1;let r=S(e.retainedFunction).parent;if(!D(r,`CallExpression`)||!j(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=W(i,n);return!a||t.receiverKey!==a?!1:_d(e.retainedFunction,n)})())return!1;let r=[];return T(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&C(t))return!1;D(t,`CallExpression`)&&W(t.callee,n)===e.refCurrentKey&&r.push(t)}),kd(t.node,r,e.retainedFunction,n)},jpe=(e,t,n)=>{let r=b(e);return r?Epe(r,t,n).some(e=>Dpe(e,t,n)&&!Ope(e,t,n)&&(kpe(e,t,n)||Ape(e,t,n))):!1},Mpe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!D(n.node,`CallExpression`)||!C(t)||t.async||t.generator||!D(t.body,`BlockStatement`)||!Ha(t,[e],r))return!1;let i=D(e,`ChainExpression`)?e.expression:e;if(!D(i,`CallExpression`)||!du(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=b(t);if(!a||!C(a))return!1;let o=[];return T(a.body,e=>{if(e!==a.body&&C(e))return!1;if(!D(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)||kd(n.node,o,a,r)},Npe=(e,t,n)=>{if(!V(e,n))return!1;let r=b(e);if(!r||r===b(t.node)||jpe(e,t,n))return!0;let i=b(t.node);return i&&C(i)&&Bd(i,n)&&$pe(i,r,n)?Qpe(i,r,t,n):Mpe(e,r,t,n)?!0:Ed(r,n)},Dd=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Ade.get(t);r||(r=new WeakMap,Ade.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];T(n,n=>{let r=D(n,`ChainExpression`)?n.expression:n;if(!D(r,`CallExpression`))return;let i=D(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(D(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pd(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cd(n,e,t)&&Npe(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Od=(e,t)=>{let n=Fu(e,t);return C(n)?n:!D(n,`CallExpression`)||!j(n,`useCallback`,t.scopes)?null:Gn(n)},Ppe=(e,t,n)=>{if(!C(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=p(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return T(e.body,s=>{if(s!==e.body&&C(s))return!1;if(!D(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=p(s),l=N(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!D(l,`MemberExpression`)||!Xl(l,n.scopes))return;let u=W(l,n),d=W(l.object,n),f=N(s.right);if(!u||!d||!D(f,`ObjectExpression`))return;let m=f.properties??[];if(!m.some(e=>!D(e,`Property`)))for(let e of m){if(!D(e,`Property`))continue;let r=w(e);if(r&&W(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},kd=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=p(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=p(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},Fpe=(e,t,n,r)=>{if(!C(e))return!1;let i=e.body,a=[];return T(i,e=>{if(e!==i&&C(e))return!1;D(e,`CallExpression`)&&Od(e.callee,r)===t&&a.push(e)}),kd(n,a,e,r)},Ipe=(e,t,n,r,i,a)=>{if(!C(t))return!1;let o=D(e,`ChainExpression`)?e.expression:e;if(!D(o,`CallExpression`)||!D(o.callee,`MemberExpression`)||o.callee.computed||!D(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!D(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=!!(D(c,`BlockStatement`)&&D(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&W(l.test,a)===i);return!D(s,`ExpressionStatement`)||!D(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===W(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===W(o.arguments?.[0],a)&&W(o.arguments?.[1],a)===r},Lpe=(e,t,n)=>{let r=e.parent,i=D(r,`BlockStatement`)?r.parent:r,a=D(r,`BlockStatement`)?r:e;if(!D(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=N(i.test);return D(o,`UnaryExpression`)&&o.operator===`!`&&W(o.argument,n)===t},Ad=(e,t,n,r)=>{if(!C(e))return!0;let i=p(t);if(i===null)return!0;let a=!1;return T(e.body,t=>{if(a||t!==e.body&&C(t))return!1;if(!D(t,`ReturnStatement`))return;let o=p(t);if((o===null||o<i)&&!Lpe(t,n,r))return a=!0,!1}),a},Rpe=(e,t,n,r,i)=>{if(!C(e)||!C(t)||e.async||e.generator)return!1;let a=Ppe(n,r,i);if(!a||!Fpe(n,e,a.assignmentNode,i))return!1;let o=null;if(T(e.body,t=>{if(o||t!==e.body&&C(t))return!1;if(Ipe(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Ad(e,o,a.refCurrentKey,i))return!1;let s=!1;return T(t.body,t=>{if(s)return!1;if(D(t,`UnaryExpression`)&&t.operator===`delete`){let e=N(t.argument);return W(e,i)===a.handlerKey||D(e,`MemberExpression`)&&W(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(D(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=W(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!D(t,`AssignmentExpression`))return;let o=N(t.left);if(D(o,`MemberExpression`)&&o.computed&&W(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=W(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=N(t.right);if(D(l,`Literal`)&&l.value===null&&b(t)===e)return;let u=(D(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>D(e,`Property`))&&u.some(e=>D(e,`Property`)&&`${a.refCurrentKey}.${w(e)??``}`===a.handlerKey&&W(e.value,i)===r.handlerKey);if(b(t)!==n||!d)return s=!0,!1}),!s},zpe=(e,t,n,r,i)=>{let a=e=>{let a=Od(e,i);return!!(a&&Rpe(a,t,n,r,i))};if(!C(e))return!1;if(!D(e.body,`BlockStatement`))return a(N(e.body));let o=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&a(N(e.argument))&&o.push(e)}),Ha(e,o,i)},Bpe=(e,t,n)=>{let r=Es(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=Gn(e);return t&&C(t)?[t]:[]}));return i.references.every(e=>{let n=S(e.identifier),r=n.parent,i=D(r,`CallExpression`)?b(r):null;if(D(r,`CallExpression`)&&r.callee===n&&i&&C(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(D(o,`ArrayExpression`)&&D(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},jd=(e,t,n,r)=>{if(!C(e)||!D(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&M(i)?N(i):null,o=a?C(a)?a:Fu(a,r):null;if(!o||!C(o))return!1;let s=(e,i=new Set)=>{if(!C(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(D(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!j(c,`useCallback`,r.scopes)){if(R(c,o)||qu(c,n.node,t))return!0;let e=b(c);return!!(e&&e!==t&&s(e,a))}let l=Es(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!(D(t,`ArrayExpression`)&&D(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=S(e.identifier),i=r.parent;if(!D(i,`CallExpression`)||i.callee!==r)return!1;if(R(i,o)||qu(i,n.node,t))return!0;let c=b(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(D(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!j(c,`useCallback`,r.scopes))l=[c];else{let t=Es(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(!D(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(R(e,o)||qu(e,n.node,t))return!0;let r=b(e);return!!(r&&r!==t&&s(r))})},Vpe=(e,t,n,r)=>{if(!C(t))return!1;let i=t.parent;if(!D(i,`CallExpression`)||Gn(i)!==t||!iu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(D(a,`IfStatement`)&&R(e,a.consequent)){let n=Fu(N(a.test),r)??N(a.test);if(D(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=fu(n.left,r),o=fu(n.right,r),s=i??o,c=N(i?n.right:n.left),l=D(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?N(s.initializer):null,d=D(u,`CallExpression`)&&u.arguments[0]&&M(u.arguments[0])?N(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&D(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];T(t.body,e=>{D(e,`AssignmentExpression`)&&e.operator===`=`&&fu(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=N(e.right);return!(D(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=N(e.right);return D(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=N(e);if(D(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!D(t,`CallExpression`)||Wn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!M(n))return!1;let r=N(n);return D(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(D(c,`IfStatement`)&&R(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&kd(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,s=null,c=null,l=null;for(;o&&o!==t;){if(D(o,`IfStatement`)&&R(e,o.consequent)){let e=N(o.test),t=D(e,`UnaryExpression`)&&e.operator===`!`,n=fu(t?e.argument:e,r),i=n?.initializer?N(n.initializer):null,a=D(i,`CallExpression`)&&i.arguments[0]?rn(N(i.arguments[0])):null,u=!t;if(n&&a===u){s=o,c=n,l=u;break}}o=o.parent??null}if(!s||!c||l===null)return!1;let u=b(c.declarationNode);if(!u||!C(u))return!1;let d=[],f=!1;return T(u.body,e=>{if(f)return!1;if(D(e,`UpdateExpression`)&&fu(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!D(e,`AssignmentExpression`)||fu(e.left,r)?.id!==c.id)){if(e.operator!==`=`||rn(N(e.right))===null)return f=!0,!1;d.push(e)}}),f||!kd(e,d.filter(e=>rn(N(e.right))===!l),t,r)?!1:d.every(e=>{if(rn(N(e.right))===!l)return!0;let t=b(e);if(!t||!C(t))return!1;let i=t.parent;if(!D(i,`ReturnStatement`)||i.argument!==t)return!1;let a=b(i);return!!(a&&C(a)&&Hu(a,n,r))})},Md=(e,t,n,r)=>{let i=b(e);if(!i||!C(i))return!1;let a=D(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&M(a)?N(a):null,s=o?C(o)?o:c(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Es(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(D(t,`ArrayExpression`)&&D(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=S(e.identifier),i=r.parent;return!!(D(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(R(i,s)||qu(i,n.node,t)))}))return!0;let o=b(i);if(o&&o!==t&&C(o)&&!D(o.body,`BlockStatement`)&&N(o.body)===i){let e=Es(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?b(o):null;return!!(D(a,`CallExpression`)&&a.callee===i&&D(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(R(o,s)||qu(o,n.node,t)||c&&jd(c,t,n,r)))}))return!0}}if(Nd(i,i,t,n,r)||jd(i,t,n,r)||Vpe(e,i,n,r)||Xu(i,{...n,node:e},r))return!0;let l=i.parent;return!!(D(l,`CallExpression`)&&Gn(l)===i&&iu(l,r)&&Hu(i,n,r))},Nd=(e,t,n,r,i)=>{let a=e.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!pu(a.left,i))return!1;let o=W(a.left,i),s=b(t);if(!o||!s||!C(s))return!1;let c=!1,l=!1;return T(s.body,e=>{if(l)return!1;if(!D(e,`MemberExpression`)||W(e,i)!==o)return;let a=S(e),s=a.parent;if(D(s,`AssignmentExpression`)&&s.left===a)return Od(s.right,i)===t?void 0:(l=!0,!1);if(D(s,`IfStatement`)&&s.test===a){let e=!1;if(T(s.consequent,t=>{if(D(t,`CallExpression`)&&W(N(t.callee),i)===o)return e=!0,!1}),e)return}if(D(s,`CallExpression`)&&s.callee===a&&Md(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Hpe=(e,t,n)=>{let r=Es(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?Nd(e,e,e,t,n):i.references.every(r=>{let i=S(r.identifier),a=i.parent;if(D(a,`CallExpression`)&&a.callee===i){let r=b(a),i=!!(r&&jd(r,e,t,n)),o=Md(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return D(o,`ArrayExpression`)&&D(s,`CallExpression`)&&s.arguments?.[1]===o?!0:Nd(i,e,e,t,n)})},Pd=(e,t,n)=>{let r=b(e);if(!r||!C(r))return!1;let i=jde.get(n);i||(i=new WeakMap,jde.set(n,i));let a=i.get(r);if(!a){let e=[];T(r.body,t=>{D(t,`CallExpression`)&&b(t)===r&&iu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=Lde(t.node,n),i=Xu(e,t,n),o=e.parent,s=!!(D(o,`CallExpression`)&&Gn(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=Gn(t);return!!(r&&Hu(r,e,n))}));return!!(r.size>0&&l&&(c||dpe(e,t,n)||Hpe(e,t,n)||Bpe(e,a,n)))}for(let i of a){let a=S(i).parent;if(!D(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Gn(i);if(o&&zpe(o,r,e,t,n))return!0}return!1},Upe=(e,t)=>{let n=Es(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(;D(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=S(n.parent);let r=n.parent;if(D(r,`CallExpression`)&&r.arguments?.[0]===n)return j(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(D(r,`VariableDeclarator`)&&r.init===n&&D(r.id,`Identifier`)&&D(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Wpe=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Fd=e=>{if(!D(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?N(n):null;if(!t||!C(t)||!r||!D(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return T(t.body,e=>{if(a)return!1;if(!D(e,`CallExpression`))return;let t=Wn(e);if(!t||!Wpe.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},Gpe=(e,t)=>{if(!e||!C(e))return!1;let n=Es(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=S(t.identifier),r=n.parent;return!!(D(r,`CallExpression`)&&r.arguments[1]===n&&eu(r)===`addEventListener`&&b(r)===b(e))}):!1},Kpe=(e,t)=>{if(!D(e,`CallExpression`)||!t.filename)return!1;let n=N(e.callee);if(!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n),i=r?bn(r):null,a=r?v(r.declarationNode):null;if(!i||typeof i.source.value!=`string`||!a)return!1;let o=Zt(t.filename,i.source.value,a);if(!o||!C(o.functionNode))return!1;let s=new Set,c=e=>{if(!C(e)||s.has(e))return!1;s.add(e);let t=!0;return T(e.body,n=>{if(!t||n!==e.body&&C(n))return!1;if(D(n,`CallExpression`)){let e=N(n.callee);if(!D(e,`Identifier`))return t=!1,!1;let r=[];return T(o.programNode,t=>{if(C(t)&&Es(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!c(r[0])?(t=!1,!1):void 0}if(D(n,`NewExpression`)||D(n,`AssignmentExpression`)||D(n,`UpdateExpression`)||D(n,`AwaitExpression`)||D(n,`YieldExpression`)||D(n,`ThrowStatement`)||D(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return c(o.functionNode)},qpe=(e,t,n)=>{if(!C(t)||!Kpe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(D(r,`AssignmentExpression`)&&R(e,r.right)&&pu(N(r.left),n))return!0;r=r.parent}return!1},Id=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?N(r):null;if(!n||!C(n)||!i||!D(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return T(n.body,e=>{if(o||e!==n.body&&C(e))return!1;if(D(e,`CallExpression`)&&qpe(e,n,t))return;if(D(e,`CallExpression`)||D(e,`UpdateExpression`))return o=!0,!1;if(!D(e,`AssignmentExpression`))return;let r=N(e.left);if(D(r,`MemberExpression`)&&pu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||Gpe(b(e),t))},Ld=(e,t)=>{let n=S(e);for(;D(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=S(n.parent);let r=n.parent;return D(r,`ReturnStatement`)&&r.argument===n&&b(r)===t?r:null},Rd=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(D(a,`ReturnStatement`)&&a.argument===i||D(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(D(a,`ChainExpression`)||D(a,`TSAsExpression`)||D(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(D(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||D(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(D(a,`VariableDeclarator`)&&a.init===i&&D(a.id,`Identifier`)&&D(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=b(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:Du(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Ld(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},Jpe=(e,t,n)=>{if(!C(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!qd(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Upe(e,t),c=r=>{if(s)return cd(e,r,t);if(r.kind!==`timer`)return!!(n?.allowReturnedResourceEscape===!0||_d(e,t)||vd(e,t))&&Hu(e,r,t)||Dd(r,t)||Pd(e,r,t);if((n?.allowReturnedResourceEscape===!0||_d(e,t)||vd(e,t))&&Hu(e,r,t)||!n?.isEffectInvoked&&(hu(r.node,t)!==null||Xu(e,r,t))&&Dd(r,t)||sd(r,t)||Pd(e,r,t))return!0;let i=b(e),a=i?.parent;return!!(i&&D(a,`CallExpression`)&&iu(a,t)&&cd(i,r,t))};return T(r,e=>{if(i!==null||C(e)||!V(e,t))return!1;if(au(e)&&!Rd(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:D(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:_u(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(D(e,`CallExpression`)){if(D(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!Rd(e,!0,a,t))&&!Fd(e)&&!Id(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(!c(n))return i=n,!1}if(vde(e)&&(!Rd(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!tu(e))){let n=Tu(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:_u(e,t),...n};return!gpe(e,t)&&!c(r)&&(i=r),!1}}}),i},zd=(e,t)=>{if(!C(e)||e.generator)return null;let n=S(e),r=n.parent;if(!D(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=Xl(N(r.left),t.scopes);if(!i)return null;let a=U(r,t.scopes);return!C(a)||b(r)!==a||b(i.bindingIdentifier)!==a||!V(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},Bd=(e,t)=>zd(e,t)?.refSymbol??null,Vd=(e,t,n)=>{let r=S(e),i=r.parent;if(D(i,`VariableDeclarator`)&&i.init===r&&D(i.id,`Identifier`)&&D(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=Ld(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(D(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=S(e);continue}if(D(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=S(e);continue}if(D(e,`LogicalExpression`)&&e.right===r){r=S(e);continue}break}let a=r.parent;return!!(D(a,`ReturnStatement`)&&a.argument===r&&b(a)===t||D(t,`ArrowFunctionExpression`)&&t.body===r)},Ype=(e,t,n)=>D(e,`CallExpression`)&&Xl(N(e.callee),n.scopes)?.id===t.id,Xpe=(e,t)=>{let n=new Map;T(e.body,e=>{if(!C(e))return;let r=zd(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},Hd=(e,t,n)=>{if(!C(e))return[];let r=[],i=[];return T(e.body,a=>{if(a!==e.body&&C(a))return!1;D(a,`AssignmentExpression`)&&V(a,n)&&Xl(N(a.left),n.scopes)?.id===t.id&&r.push(a),Ype(a,t,n)&&V(a,n)&&i.push(a)}),i.filter(t=>!kd(t,r,e,n))},Ud=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Zpe=(e,t)=>{let n=Ode.get(t);n||(n=new WeakMap,Ode.set(t,n));let r=n.get(e);if(r)return r;let i=Xpe(e,t),a=new Map;T(e.body,n=>{if(n!==e.body&&C(n))return!1;if(!D(n,`CallExpression`)||b(n)!==e||!iu(n,t))return;let r=Gn(n);if(C(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of Hd(r,n,t))Ud(a,n.id,!r.async&&Vd(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 Hd(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&Vd(e,n.functionNode,t);Ud(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},Wd=(e,t)=>{if(!C(e))return null;let n=zd(e,t),r=U(e,t.scopes);if(!n||!C(r))return null;let i=Zpe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},Qpe=(e,t,n,r)=>{if(!C(e)||e.async||Wd(e,r)?.doesEffectOwnEveryResult!==!0||!D(e.body,`BlockStatement`))return!1;let i=e=>{let n=Od(en(e),r);if(!n)return!1;if(n===t)return!0;if(!C(n))return!1;let i=[];return T(n.body,e=>{if(e!==n.body&&C(e))return!1;D(e,`CallExpression`)&&Od(e.callee,r)===t&&i.push(e)}),Ha(n,i,r)},a=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),Du(n.node,a,r)},$pe=(e,t,n)=>{if(!C(e)||!D(e.body,`BlockStatement`))return!1;let r=!1;return Ql(e.body,e=>{r||!D(e,`ReturnStatement`)||!e.argument||T(e.argument,e=>{if(Od(e,n)===t)return r=!0,!1})}),r},Gd=e=>D(e,`FunctionDeclaration`)?Wl(e)!==null:!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.parent,`VariableDeclarator`)?!1:Wl(e)!==null,Kd=e=>{let t=S(e),n=t.parent;return D(n,`JSXExpressionContainer`)&&n.expression===t&&Jl(n.parent)},qd=(e,t)=>{if(!C(e))return!1;let n=S(e),r=n.parent;if(D(r,`CallExpression`)&&r.arguments?.[0]===n&&Yn(r,`useCallback`,t.scopes)&&Kd(r))return!0;let i=e.parent;if(Kd(e))return!0;if(!D(i,`Property`)||i.value!==e||i.computed)return!1;let a=w(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!D(o,`ObjectExpression`))return!1;let s=o.parent;return(D(s,`CallExpression`)&&s.arguments.some(e=>e===o)||D(s,`JSXExpressionContainer`))&&U(i,t.scopes)!==null},Jd=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=N(e);return D(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:D(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||D(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:D(n,`ArrayExpression`)||D(n,`ArrowFunctionExpression`)||D(n,`ClassExpression`)||D(n,`FunctionExpression`)||D(n,`NewExpression`)||D(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Yd=(e,t,n)=>{let r=N(e),i=Jd(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(D(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(D(r,`UnaryExpression`)&&r.operator===`!`){let e=Yd(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(D(r,`LogicalExpression`)){let e=Yd(r.left,t,n),i=Yd(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(D(r,`ConditionalExpression`)){let e=Yd(r.test,t,n);if(e===`truthy`)return Yd(r.consequent,t,n);if(e===`falsy`)return Yd(r.alternate,t,n);let i=Yd(r.consequent,t,n);return i===Yd(r.alternate,t,n)?i:`unknown`}return D(r,`CallExpression`)&&D(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&M(r.arguments[0])?Yd(r.arguments[0],t,n):`unknown`},eme=(e,t,n,r)=>{let i=new Map;if(!C(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&M(e)?e:null,c=null,l=Jd(s,r);if(D(o,`Identifier`)?c=o:D(o,`AssignmentPattern`)&&D(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Jd(o.right,r))):D(o,`RestElement`)&&D(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},tme=(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(D(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!D(t,`IfStatement`)||t.alternate||!Yl(t.consequent))&&Yd(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(D(o,`IfStatement`)||D(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):D(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((D(o,`WhileStatement`)||D(o,`DoWhileStatement`))&&o.body===a||D(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Yd(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},nme=(e,t)=>{if(!C(e))return[];let n=b(e);if(!n||!C(n))return[];let r=kde.get(t);r||(r=new WeakMap,kde.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 T(n.body,e=>{if(!D(e,`CallExpression`)||b(e)!==n||!iu(e,t))return;let r=Gn(e);!r||!C(r)||T(r.body,e=>{if(e!==r.body&&C(e))return!1;if(!(!D(e,`CallExpression`)||!V(e,t))){o(Od(e.callee,t),e,!0);for(let n of e.arguments)!M(n)||!Rl(e,n)||o(Od(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},Xd=y({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=Wd(t,e);if(!n&&!Ed(t,e))return;let r=nme(t,e),i=r.length>0,a=Jpe(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`&&(!V(a.node,e)||C(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>tme(t,a.node,n,e))))return;let o=Mde[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(Yn(n,`useCallback`,e.scopes)){let r=Gn(n);r&&!qd(r,e)&&t(r);return}if(!iu(n,e))return;let r=Gn(n);if(!r)return;let i=Jde(r,qde(r,e),e);if(i.length===0)return;let a=mpe(r,i,e);if(!a)return;let o=Mde[a.kind],s=Wn(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){Gd(e)&&t(e)},ArrowFunctionExpression(n){(Gd(n)||qd(n,e)||Bd(n,e))&&t(n)},FunctionExpression(n){(Gd(n)||qd(n,e)||Bd(n,e))&&t(n)}}}}),rme=new Set([`window`,`globalThis`,`self`]),ime=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),ame=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=S(e.identifier),n=t.parent;return!D(n,`MemberExpression`)||n.object!==t?!1:D(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(D(n.parent,`CallExpression`)&&n.parent.callee===n&&ime.has(O(n)??``))}),ome=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||ame(e))return null;r.add(e.id);let i=$o(e);if(!i)return n;let a=N(i);if(!D(a,`Identifier`))return n;n=a}},sme=e=>{let t=b(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(D(n,`ConditionalExpression`)||D(n,`IfStatement`)||D(n,`LogicalExpression`)||D(n,`SwitchStatement`)||D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Zd=(e,t,n)=>{let r=b(e);if(!r||!C(r))return null;let i=S(r),a=i.parent;if(!D(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=N(a.callee);if(!D(o,`MemberExpression`)||O(o)!==`forEach`||r.async||!sme(a))return null;let s=N(o.object);if(!D(s,`Identifier`))return null;let c=ome(s,n);if(!c)return null;let l=Ya({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=N(e);if(D(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=$o(e);return a&&!u.has(e.id)&&b(e.declarationNode)===r?(u.add(e.id),d(a)):Ya({node:t,scopes:n.scopes})}if(D(t,`Literal`))return JSON.stringify(t.value);if(D(t,`MemberExpression`)){let e=d(t.object),n=O(t);return e&&n?`${e}.${n}`:null}if(D(t,`CallExpression`)){let e=N(t.callee);if(!D(e,`MemberExpression`)||O(e)!==`getElementById`)return null;let r=N(e.object);if(!D(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>D(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(D(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(D(h,`ConditionalExpression`)||D(h,`LogicalExpression`)||D(h,`SwitchStatement`)||D(h,`ForStatement`)||D(h,`ForInStatement`)||D(h,`ForOfStatement`)||D(h,`WhileStatement`)||D(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},Qd=(e,t,n)=>{let r=A(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=S(e),a=i.parent;if(!(D(a,`VariableDeclarator`)&&a.id===e)&&!(D(a,`VariableDeclarator`)&&a.init===i)&&!(D(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(D(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(D(a,`MemberExpression`)&&a.object===i){let e=O(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!D(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?Zd(r,e,n):null,a=e?Ya({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?Zd(r,e,n):null,a=e?Ya({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(D(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=N(a.callee);if(D(e,`MemberExpression`)&&O(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},cme=(e,t,n)=>{let r=!1;return Xa(e,e=>{D(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},lme=(e,t,n,r)=>{if(!n)return!1;let i=N(e);if(!D(i,`MemberExpression`)||O(i)!==`target`)return!1;let a=N(i.object);if(!D(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=b(a);if(!s||s===t||!C(s))return!1;let c=S(s),l=c.parent;if(!D(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=N(l.callee);return D(u,`MemberExpression`)&&O(u)===`forEach`&&cme(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},ume=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?N(e.arguments[0]):null;if(!r||!D(r,`ArrowFunctionExpression`)&&!D(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||!D(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&Xa(i,e=>{if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let a=N(r.object);if(!D(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=O(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(lme(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=Ya({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},$d=(e,t)=>{let n=N(e),r=D(n,`Identifier`)?A(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},ef=(e,t,n=new Set)=>{let r=N(e);if(n.has(r))return!1;if(n.add(r),D(r,`Identifier`)){let e=A(r,r.name)?.initializer;return e?ef(e,t,n):!1}let i=D(r,`CallExpression`)?N(r.callee):null,a=D(i,`MemberExpression`)?N(i.object):null;if(!D(r,`CallExpression`)||!D(i,`MemberExpression`)||O(i)!==`bind`||!D(a,`MemberExpression`)||O(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&$d(a.object,t)&&$d(o,t))},dme=(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(!D(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=N(r.callee);D(i,`MemberExpression`)&&O(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!Va(e,[r],t)))return null;let i=N(r.callee);if(!D(i,`MemberExpression`))return null;let a=N(i.object);if(!D(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?N(o.initializer):null;return!o||o.kind!==`const`||!D(s,`ArrayExpression`)||(s.elements?.length??0)!==0||b(o.declarationNode)!==b(e.construction)||!o.references.every(e=>{let t=S(e.identifier),n=t.parent,r=n?.parent;return!!(D(n,`MemberExpression`)&&n.object===t&&D(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(O(n)??``))})?null:Ya({node:a,scopes:t.scopes})},fme=(e,t)=>{if(!C(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return Xa(e,e=>{if(!D(e,`CallExpression`))return;let n=N(e.callee);if(!D(n,`MemberExpression`)||O(n)!==`disconnect`)return;let a=N(n.object);D(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Ha(e,i,t)},pme=(e,t,n,r)=>{let i=e=>{if(!C(e)||e.async||e.generator)return!1;let t=[];return T(e.body,i=>{if(!D(i,`CallExpression`)||b(i)!==e)return;let a=N(i.callee);if(!D(a,`MemberExpression`)||O(a)!==`forEach`||Ya({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&fme(o,r)&&t.push(i)}),Ha(e,t,r)};if(!C(e))return!1;if(!D(e.body,`BlockStatement`)){let t=ic(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=Xe(e).filter(e=>{if(!e.argument)return!1;let t=ic(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>Va(e,a,r))},mme=(e,t,n)=>El({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!C(e))return!1;let r=[];return T(e.body,n=>{if(n!==e.body&&C(n))return!1;let i=D(n,`ChainExpression`)?n.expression:n,a=D(i,`CallExpression`)?N(i.callee):null;D(i,`CallExpression`)&&D(a,`MemberExpression`)&&O(a)===`disconnect`&&$d(a.object,t.bindingIdentifiers)&&r.push(n)}),Ha(e,r,n)}}),tf=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!C(n))return;let r=new Map;if(Xa(n,t=>{if(!D(t,`NewExpression`))return;let n=N(t.callee);if(!(D(n,`Identifier`)?Ze.has(n.name)&&!A(n,n.name):D(n,`MemberExpression`)&&D(N(n.object),`Identifier`)&&rme.has(N(n.object).name)&&!A(n.object,N(n.object).name)&&Ze.has(O(n)??``)))return;let i=S(t),a=i.parent;if(!D(a,`VariableDeclarator`)||a.init!==i||!(D(a.id,`Identifier`)&&a.id.name))return;let o=ume(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=oc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());Xa(n,t=>{if(!D(t,`Identifier`))return;let n=A(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qd(t,i,e)});for(let t of ac(n))Xa(t,t=>{if(!D(t,`Identifier`))return;let n=A(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qd(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||!C(N(n))||Xa(N(n),n=>{if(!D(n,`Identifier`))return;let i=A(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&Qd(n,t,e)})}let a=D(n.body,`BlockStatement`)?Xe(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>ef(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||mme(n,t,e))continue;let i=dme(t,e);i&&pme(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()`."})}}})}),nf=`cancelAnimationFrame`,rf=`collection-values:`,hme=new Set([`min`,`max`]),af=e=>D(e,`CallExpression`)&&sf(e,`requestAnimationFrame`),of=new Set([`window`,`globalThis`,`self`]),sf=(e,t)=>{let n=N(e.callee);if(D(n,`Identifier`))return n.name===t&&!A(n,n.name);if(!D(n,`MemberExpression`)||O(n)!==t)return!1;let r=N(n.object);return D(r,`Identifier`)&&of.has(r.name)&&!A(r,r.name)},cf=e=>{if(!e)return null;let t=N(e);if(D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`))return t;if(D(t,`Identifier`)){let e=A(t,t.name)?.initializer;if(C(e))return e}return null},lf=(e,t,n)=>{let r=new Set,i=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of oc(e,n))r.add(t)}if((D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`))&&t.id&&D(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of oc(e,n))r.add(t)}return r},uf=(e,t,n)=>{let r=N(e);return D(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},gme=(e,t,n)=>{let r=!1;return Xa(e,e=>{if(r)return!1;if(!af(e))return;let i=e.arguments?.[0];if(i&&uf(i,t,n))return r=!0,!1}),r},_me=(e,t)=>{let n=[];return Xa(e,e=>{if(!af(e))return;let r=e.arguments?.[0];if(!r)return;let i=cf(r);i&&gme(i,lf(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},df=e=>{let t=N(e);if(D(t,`Identifier`)){let e=A(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=df(e.initializer);if(t&&t!==n)return t}return n}if(!D(t,`MemberExpression`))return null;let n=df(t.object),r=O(t);return n&&r?`${n}.${r}`:null},vme=e=>{let t=S(e),n=t.parent;if(D(n,`AssignmentExpression`)&&n.right===t)return df(n.left);if(D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`))return df(n.id);if(D(n,`CallExpression`)&&D(n.callee,`MemberExpression`)){let e=O(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?df(n.callee.object):null;if(i)return`${rf}${i}`}return null},ff=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=lf(n,e.scheduledFunction,t),i=[e.rafCall];return Xa(e.scheduledFunction,e=>{if(!af(e))return;let n=e.arguments?.[0];n&&uf(n,r,t)&&i.push(e)}),i},yme=e=>{let t=S(e),n=t.parent;return D(n,`AssignmentExpression`)&&n.right===t?n.left:D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`)?n.id:null},pf=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(C(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return T(e,a=>{if(i||a!==e&&C(a))return!1;let o=D(a,`AssignmentExpression`)?a.left:D(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&df(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},bme=(e,t,n)=>{let r=ff(e,n),i=r.map(vme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(rf))return a;let o=new Set(r.flatMap(e=>{let t=yme(e);return t?[t]:[]}));return pf(t,a,o)||pf(e.scheduledFunction,a,o)?null:a},xme=(e,t,n)=>{let r=!1;return Xa(e,e=>{if(r||!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||O(i)!==`forEach`||df(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!D(a,`SpreadElement`)?cf(a):null;if(!C(o))return;let s=o.params?.[0];D(s,`Identifier`)&&T(o,e=>{if(r||e!==o&&C(e))return!1;if(!D(e,`CallExpression`))return;let t=e.arguments?.[0];if(mf(e)&&D(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},Sme=(e,t,n)=>{if(t.startsWith(rf))return xme(e,t.slice(18),n);let r=!1;return Xa(e,e=>{if(r||!D(e,`CallExpression`)||!mf(e))return;let n=e.arguments?.[0];n&&df(n)===t&&(r=!0)}),r},mf=e=>{if(sf(e,nf))return!0;let t=N(e.callee);if(!D(t,`Identifier`))return!1;let n=A(t,t.name)?.bindingIdentifier?.parent;if(!D(n,`Property`)||(D(n.key,`Identifier`)?n.key.name:D(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==nf)return!1;let r=n.parent,i=r?.parent;if(!D(r,`ObjectPattern`)||!D(i,`VariableDeclarator`))return!1;let a=i.init?N(i.init):null;return D(a,`Identifier`)&&of.has(a.name)&&!A(a,a.name)},Cme=(e,t)=>{Xa(e,e=>{let n=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(D(n,`Identifier`)){let e=df(n);e&&t.add(e)}else if(D(n,`MemberExpression`)){let e=df(n);e&&t.add(e)}})},wme=(e,t,n)=>{if(D(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!D(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return yf(e.right);if(e.operator!==`=`)return!1;let r=N(e.right),i=D(r,`BinaryExpression`)?N(r.left):null;return D(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&D(i,`Identifier`)&&df(i)===t&&yf(r.right)},hf=(e,t)=>{let n=new Set,r=new Set;Xa(e,e=>{let i=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(!D(i,`Identifier`))return;let a=df(i);a&&(wme(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},Tme=(e,t)=>{let n=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(!D(n,`Identifier`)&&!D(n,`MemberExpression`))return;let r=df(n);if(!r)return;if(D(e,`UpdateExpression`)||D(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!D(e,`AssignmentExpression`))return;let i=N(e.right);if(!D(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)},Eme=e=>D(e,`IfStatement`)||D(e,`ConditionalExpression`)||D(e,`LogicalExpression`)||D(e,`SwitchStatement`)||D(e,`TryStatement`)||D(e,`ForStatement`)||D(e,`ForInStatement`)||D(e,`ForOfStatement`)||D(e,`WhileStatement`)||D(e,`DoWhileStatement`),Dme=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(Eme(n))return!1;n=n.parent}return n===t||e===t},Ome=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),Xa(e,r=>{if(!Dme(r,e)||(Tme(r,n),!D(r,`CallExpression`)))return;let a=r.callee;if(D(a,`Identifier`)){let e=df(a);T(t,t=>{D(t,`VariableDeclarator`)&&D(t.id,`Identifier`)&&df(t.id)===e&&t.init&&C(t.init)&&i(t.init)});return}if(D(a,`MemberExpression`)){let e=df(a);if(!e)return;if(O(a)===`abort`){let e=df(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}T(t,t=>{D(t,`AssignmentExpression`)&&D(t.left,`MemberExpression`)&&df(t.left)===e&&t.right&&C(t.right)&&i(t.right)})}}))};return i(e),n},gf=(e,t)=>{let n=N(e);if(D(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(D(n,`Identifier`)||D(n,`MemberExpression`)){let e=df(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(D(n,`UnaryExpression`)&&n.operator===`!`){let e=gf(n.argument,t);return e===null?null:!e}if(D(n,`LogicalExpression`)){let e=gf(n.left,t);if(n.operator===`??`)return e;let r=gf(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(!D(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=gf(n.left,t),o=gf(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=df(n.left),c=df(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},_f=e=>D(e,`ReturnStatement`)||D(e,`ThrowStatement`)?!0:D(e,`BlockStatement`)&&!!e.body?.some(e=>_f(e))||D(e,`IfStatement`)&&!!e.alternate&&_f(e.consequent)&&_f(e.alternate),vf=(e,t,n)=>{let r=gf(e,n);return r!==null&&r!==t},kme=(e,t,n)=>{let r=gf(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},Ame=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((D(e,`IfStatement`)||D(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&vf(e.test,e.consequent===r,n)||D(e,`LogicalExpression`)&&e.right===r&&kme(e.left,e.operator,n))return!0;if(D(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(D(e,`IfStatement`)&&(_f(e.consequent)&&vf(e.test,!1,n)||e.alternate&&_f(e.alternate)&&vf(e.test,!0,n)))return!0}}r=e}return!1},jme=(e,t,n)=>{let r=ff(e,n).slice(1);return r.length>0&&r.every(n=>Ame(n,e.scheduledFunction,t))},yf=e=>D(e,`Literal`)&&typeof e.value==`number`&&e.value>0,Mme=(e,t)=>{let n=N(e);return D(n,`Literal`)&&typeof n.value==`number`||D(n,`Identifier`)&&!t.has(df(n)??``)},bf=(e,t,n)=>{let r=N(e);if(D(r,`Identifier`)){let e=df(r);return e?t.has(e):!1}if(D(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return bf(r.left,t,n)&&Mme(r.right,n);if(r.operator===`*`||r.operator===`/`)return bf(r.left,t,n)&&yf(r.right)}if(!D(r,`CallExpression`))return!1;let i=N(r.callee),a=D(i,`MemberExpression`)?N(i.object):null;if(!D(i,`MemberExpression`)||!D(a,`Identifier`)||a.name!==`Math`||A(a,a.name)||!hme.has(O(i)??``))return!1;let o=!1;for(let e of r.arguments){if(bf(e,t,n)){o=!0;continue}if(!D(e,`Literal`)||typeof e.value!=`number`)return!1}return o},xf=(e,t,n,r,i)=>{let a=N(e);if(D(a,`UnaryExpression`)&&a.operator===`!`)return xf(a.argument,t,n,r,!i);if(D(a,`LogicalExpression`)&&a.operator!==`??`)return xf(a.left,t,n,r,i)&&xf(a.right,t,n,r,i);if(!D(a,`BinaryExpression`))return!1;let o=bf(a.left,t,r)&&D(a.right,`Literal`)&&typeof a.right.value==`number`,s=D(a.left,`Literal`)&&typeof a.left.value==`number`&&bf(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=bf(a.left,n,r)&&D(a.right,`Literal`)&&typeof a.right.value==`number`,d=D(a.left,`Literal`)&&typeof a.left.value==`number`&&bf(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},Nme=(e,t)=>{let n=e.scheduledFunction,r=new Set;Cme(n,r);let i=hf(n,!0),a=hf(n,!1);if(C(n)){for(let e of n.params??[])if(D(e,`Identifier`)){let t=df(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,Xa(n,e=>{if(!D(e,`VariableDeclarator`)||!e.init)return;let t=D(e.id,`Identifier`)?df(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(bf(e.init,i,r)?(i.add(t),o=!0):bf(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=ff(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((D(s,`IfStatement`)||D(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&xf(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},Sf=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!n)return;let r=ac(n);for(let t of _me(n,e.scopes)){if(Nme(t,e.scopes))continue;let i=bme(t,n,e.scopes);i&&r.some(t=>Sme(t,i,e.scopes))||r.some(r=>jme(t,Ome(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.`})}}})}),Pme=new Set([`removeEventListener`,`removeListener`,`off`]),Fme=/(?:duration|delay|timeout|ms)$/i,Ime=e=>{let t=N(e);if(D(t,`Literal`)&&typeof t.value==`number`)return!0;if(!D(t,`Identifier`))return!1;if(Fme.test(t.name))return!0;let n=A(t,t.name);if(!n?.initializer)return!1;let r=N(n.initializer);return D(r,`Literal`)&&typeof r.value==`number`},Lme=e=>{let t=N(e);return ki(t)?!0:D(t,`CallExpression`)&&D(t.callee,`MemberExpression`)&&O(t.callee)===`bind`},Rme=new Set([`addEventListener`,`addListener`,`on`,`once`]),Cf=`handler-only`,zme=(e,t)=>{let n=new Set;return T(e,e=>{if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let i=O(r);if(!i||!Rme.has(i))return;let a=Ya({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Cf:xl(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},wf=y({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=N(n.callee);if(!D(r,`MemberExpression`))return;let i=O(r);if(!i||!Pme.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&Ime(a[0])||!Lme(s))return;let c=Ya({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Cf:xl(a[0],e.scopes),u=x(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=zme(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.`})}}}}),Bme=new Set([`columnheader`,`rowheader`]),Vme=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=L(e.attributes,t,!1);if(!n)continue;let r=I(n);if(r===null||r.trim().length>0)return!0}return!1},Tf=y({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=E(n);if(/^[A-Z]/.test(r))return;let i=L(n.attributes,`role`,!1),a=i?I(i)?.toLowerCase():null;r!==`th`&&(!a||!Bme.has(a))||jr(t,e.settings)||Vme(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.`})}})}),Hme=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return T(e,a=>{if(a!==e&&C(a)){let e=Df(a,t);for(let t of e)t.resolvedSymbol&&!fn(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&&(fn(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},Ef=new WeakMap,Df=(e,t)=>{let n=Ef.get(t);n||(n=new WeakMap,Ef.set(t,n));let r=n.get(e);if(r)return r;let i=Hme(e,t);return n.set(e,i),i};let Of=0;const kf=e=>{let t={id:Of++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Af=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},jf=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Mf=(e,t,n)=>{if(e.nodeBlock.set(t,n),C(t)){e.nestedFunctions.push(t);return}let r=t,i=Ute[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];M(r)&&Mf(e,r,n)}else M(o)&&Mf(e,o,n)}},Ume=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}},Nf=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Nf(e.argument);return t===null?null:!t}return null},Pf=e=>e===null||Nf(e)===!0,Ff=(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},If=(e,t,n)=>{let r=n;for(let n of t)r=Lf(e,n,r);return r},Lf=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Ume(t))return jf(e,n,t),Mf(e,t,n),n;if(t.type===`BlockStatement`)return If(e,t.body,n);if(t.type===`LabeledStatement`){let r=kf(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Lf(e,a,n);return e.labelStack.pop(),Af(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Mf(e,t.argument,n),Af(n,e.exit,`uncond`),kf(e);if(t.type===`ThrowStatement`){t.argument&&Mf(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Af(n,r.catch,`uncond`):r?.finally?Af(n,r.finally,`uncond`):Af(n,e.exit,`throw`),kf(e)}if(t.type===`BreakStatement`){let r=Ff(e,t.label?t.label.name:null);return r?Af(n,r.merge,`uncond`):Af(n,e.exit,`uncond`),kf(e)}if(t.type===`ContinueStatement`){let r=Ff(e,t.label?t.label.name:null);return r?.header&&Af(n,r.header,`uncond`),kf(e)}if(t.type===`IfStatement`){Mf(e,t.test,n);let r=kf(e),i=kf(e);if(Af(n,r,`cond`),Af(Lf(e,t.consequent,r),i,`uncond`),t.alternate){let r=kf(e);Af(n,r,`cond`),Af(Lf(e,t.alternate,r),i,`uncond`)}else Af(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Pf(t.test);Mf(e,t.test,n);let a=kf(e),o=kf(e),s=kf(e);r?Af(n,o,`uncond`):(Af(n,a,`uncond`),Af(a,o,i?`uncond`:`cond`),i||Af(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Lf(e,t.body,o);return e.loopStack.pop(),r?(Af(c,a,`uncond`),Af(a,o,i?`uncond`:`cond`),i||Af(a,s,`cond`)):Af(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Mf(e,t.init,n),t.test&&Mf(e,t.test,n);let r=kf(e),i=kf(e),a=kf(e),o=Pf(t.test??null);Af(n,r,`uncond`),Af(r,i,o?`uncond`:`cond`),o||Af(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Lf(e,t.body,i);return e.loopStack.pop(),t.update&&Mf(e,t.update,r),Af(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Mf(e,t.right,n),Mf(e,t.left,n);let r=kf(e),i=kf(e),a=kf(e);Af(n,r,`uncond`),Af(r,i,`cond`),Af(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Lf(e,t.body,i);return e.loopStack.pop(),Af(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Mf(e,t.discriminant,n);let r=kf(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=kf(e);Af(n,t,`cond`),i&&Af(i,t,`uncond`),i=If(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Af(i,r,`uncond`),a||Af(n,r,`cond`),r}if(t.type===`TryStatement`){let r=kf(e),i=kf(e),a=null,o=null;t.handler&&(a=kf(e)),t.finalizer&&(o=kf(e)),Af(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=If(e,t.block.body,r);if(e.tryStack.pop(),a&&Af(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Lf(e,n,a);o?Af(r,o,`uncond`):Af(r,i,`uncond`)}return o&&t.finalizer?(Af(s,o,`uncond`),Af(If(e,t.finalizer.body,o),i,`uncond`)):Af(s,i,`uncond`),i}return jf(e,n,t),Mf(e,t,n),n},Wme=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=kf(r),a=kf(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=If(r,t.body,i):(Mf(r,t,i),o=i),Af(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Gme=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},Rf=e=>{Of=0;let t=new Map,n=[],r=(e,r)=>{let i=Wme(e,r,n);t.set(e,{cfg:i,unconditionalSet:Gme(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!C(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!C(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(C(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}}},Kme=e=>{let t=N(e);return D(t,`ObjectExpression`)?`object`:D(t,`ArrayExpression`)?`array`:D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)?`function`:D(t,`JSXElement`)||D(t,`JSXFragment`)?`JSX`:D(t,`NewExpression`)?`instance`:null},zf=(e,t,n=new Set)=>{let r=Kme(e);if(r)return{bindingName:null,kind:r};let i=N(e);if(!D(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`)||!D(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=zf(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},qme=new Set([...An,`useImperativeHandle`,`useInsertionEffect`]),Bf=new WeakMap,Vf=new WeakMap,Hf=new WeakMap,Uf=e=>{let t=Bf.get(e.programNode);if(t)return t;let n=Qt(e.programNode);return Bf.set(e.programNode,n),n},Jme=e=>{let t=Vf.get(e.programNode);if(t)return t;let n=Rf(e.programNode);return Vf.set(e.programNode,n),n},Wf=(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},Gf=(e,t)=>{let n=bs(e)??t??``;return n!==`use`&&_s(n)},Kf=(e,t)=>{if(!D(e,`Identifier`))return null;let n=k(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!D(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=v(n.initializer);return a?{exportedName:a,source:i}:null},Yme=(e,t,n)=>{if(!n)return null;let r=Kf(e,t);if(!r)return null;let i=D(e,`Identifier`)?e.name:``;if(r.source===`react`||!_s(i)&&!_s(r.exportedName))return null;let a=Zt(n,r.source,r.exportedName);return!a||!Gf(a.functionNode,r.exportedName)?null:{cfg:Jme(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Uf(a)}},qf=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=k(i,t);if(!e||r.has(e.id))return null;if(yn(e)){let t=bt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Qf(e)?null:(r.add(e.id),qf(e.initializer,t,n,r))}if(D(i,`MemberExpression`)){let e=O(i);if(!e||!n.has(e))return null;let r=N(i.object);return!D(r,`Identifier`)||!mn(r,t)?null:e===`useImperativeHandle`?2:1}if(!D(i,`ConditionalExpression`))return null;let a=qf(i.consequent,t,n,new Set(r)),o=qf(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Xme=(e,t,n,r)=>{if(!n)return null;let i=Kf(N(e.callee),t);if(!i)return null;let a=Rt(n,i.source,i.exportedName);return a?qf(a.exportedNode,Uf(a),r):null},Jf=(e,t,n,r)=>{let i=N(e.callee),a=c(i,t);if(a&&Gf(a)){let e=x(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Yme(i,t,r)},Yf=e=>{if(!C(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=N(r);if(D(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(D(e,`AssignmentPattern`)&&D(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(D(e,`ObjectPattern`))for(let r of e.properties??[]){if(!D(r,`Property`))continue;let e=w(r,{allowComputedString:!0});if(!e)continue;let i=N(r.value);D(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):D(i,`AssignmentPattern`)&&D(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Xf=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ObjectExpression`))return r;if(!D(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Qf(i)?null:(n.add(i.id),Xf(i.initializer,t,n))},Zme=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(D(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(D(r,`Property`)&&w(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Zf=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>D(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=Xf(r,n);return i?Zme(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Qf=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&D(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(D(n,`AssignmentExpression`)&&n.left===e||D(n,`UpdateExpression`)&&n.argument===e||D(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(D(n,`CallExpression`)&&n.callee===e&&D(e,`MemberExpression`)){let t=O(e);if(t&&(_r.has(t)||vr.has(t)))return!0}}return!1},$f=(e,t,n,r,i=new Set)=>{let a=N(e);if(!D(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Qf(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!D(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),$f(o.initializer,t,n,r,i))},ep=(e,t,n,r=new Set)=>{if($f(e,`list`,t,n))return!0;let i=N(e);if(D(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Qf(e)?!1:(r.add(e.id),ep(e.initializer,t,n,r))}return D(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?D(e,`SpreadElement`)?$f(e.argument,`list`,t,n):$f(e,`value`,t,n):!1):!1},Qme=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Yf(t.functionNode)){let o=Zf(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Qf(s)||($f(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),($f(o.expression,`list`,n,r)||ep(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},tp=(e,t,n,r,i)=>{if(!C(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?Qf(n):!1}))return!1;let o=new Set(r);o.add(a);let s=!1;return T(a.body,r=>{if(s||r!==a.body&&C(r))return!1;if(!D(r,`CallExpression`)||!Wf(r,e.cfg))return;if(j(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=N(r.callee),i=(D(n,`Identifier`)?n.name:D(n,`MemberExpression`)?O(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!D(a,`SpreadElement`)&&ep(a,e.scopes,t)?(s=!0,!1):void 0}let c=Xme(r,e.scopes,e.filePath,i);if(c!==null){let n=r.arguments?.[c];return n&&!D(n,`SpreadElement`)&&ep(n,e.scopes,t)?(s=!0,!1):void 0}if(n===0)return;let l=Jf(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=Qme(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&tp(l,u,n-1,o,i))return s=!0,!1}),s},np=(e,t,n=qme)=>{let r=Hf.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Hf.set(e,new Map([[n,a]]));let o=Jf(e,t.scopes,t.cfg,t.filename);if(!o||!U(e,t.scopes)||!Wf(e,t.cfg))return a;for(let r of Yf(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Qf(i))continue;let s=Zf(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=zf(c,s.expression?t.scopes:o.scopes);l&&tp(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(D(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},rp=new WeakMap,$me=e=>{let t=new Map;if(!D(e,`Program`))return t;for(let n of e.body){let e=D(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!D(e,`TSInterfaceDeclaration`)&&!D(e,`TSTypeAliasDeclaration`)||!D(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},ip=(e,t)=>{let n=x(e);if(!n)return[];let r=rp.get(n);return r||(r=$me(n),rp.set(n,r)),r.get(t)??[]},ehe=e=>D(e,`Identifier`)?e.name:D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&e.object.name===`React`&&D(e.property,`Identifier`)?`React.${e.property.name}`:null,ap=e=>{let t=e.parent;if(!t||!D(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=ehe(t.callee);return n!==null&&Be.has(n)},the=new Set([`function`,`arrow-function`,`method`]),op=e=>{let t=e.scope;for(;t;){if(the.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},sp=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),G=e=>{let t=e;for(;sp.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},cp=(e,t)=>{let n=G(e);if(D(n,`Identifier`)){let e=t?k(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&D(r,`ImportDeclaration`)&&r.source.value===`react`?bt(e.declarationNode)??n.name:n.name}return D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)?n.property.name:null},lp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,nhe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,rhe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,ihe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,up=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ahe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ohe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,dp=e=>`\`${e}\` re-runs on every render with no dependency array.`,she=e=>`\`${e}\` crashes without a function as its first argument.`,che=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",lhe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,fp=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,uhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,pp=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,mp=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,dhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,fhe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,phe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,mhe=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}},ghe=new Set([`===`,`!==`]),_he=(e,t)=>{let n=e.declarationNode;if(!D(n,`VariableDeclarator`)||!D(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!D(i,`Identifier`))return null;let a=n.init?N(n.init):null;return!a||!j(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},vhe=(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(!D(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||b(i)!==t)return null;let a=N(i.arguments[0]);return D(a,`ArrowFunctionExpression`)||D(a,`FunctionExpression`)||D(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},yhe=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n),i=N(n.object);return!!(r===`is`&&D(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},hp=(e,t)=>{let n=N(e);return D(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},bhe=(e,t,n)=>{let r=N(e);if(D(t,`BinaryExpression`)&&ghe.has(t.operator))return N(t.left)===r?hp(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:N(t.right)===r?hp(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!D(t,`CallExpression`)||!yhe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return D(i,`SpreadElement`)||D(a,`SpreadElement`)?null:N(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:N(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},xhe=(e,t,n)=>{let r=e.parent;for(;r&&R(r,t);){let i=bhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},She=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!R(e,t))return!1;if(D(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(D(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!vt.has(e.type))return!1;a=e}return i===r},gp=(e,t)=>{let n=new Set,r=N(e);for(;D(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Jr(e);if(!i||!D(N(i),`Identifier`))break;n.add(e.id),r=N(i)}return r},Che=(e,t,n)=>{let r=gp(e,n),i=gp(t,n);if(r===i)return!0;if(D(r,`Identifier`)&&D(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return D(r,`Literal`)&&D(i,`Literal`)?Object.is(r.value,i.value):!1},whe=e=>{let t=S(e).parent;if(!D(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(D(n,`ArrayExpression`)&&n.elements.length)},_p=e=>{if(D(e,`ReturnStatement`)||D(e,`ThrowStatement`))return!0;if(!D(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&_p(t))},vp=(e,t)=>{if(!D(e,`IfStatement`)||e.alternate||!_p(e.consequent))return!1;let n=e.parent;if(!D(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&R(t,e))},The=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(D(i,`IfStatement`)&&R(e,i.test)&&(R(t,i.consequent)||i.alternate&&R(t,i.alternate)||vp(i,t))){let n=R(t,i.consequent);if(n===(!!(i.alternate&&R(t,i.alternate))||vp(i,t)))return null;let a=xhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return She(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Ehe=(e,t,n)=>{if(!whe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=_he(e,n);if(!r)return!1;let i=vhe(r,t);if(!i)return!1;let a=e.references.filter(e=>R(e.identifier,t));if(a.length!==1)return!1;let o=S(a[0].identifier);if(D(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=The(a[0].identifier,i.callExpression,t,n);return!!(s&&Che(s,i.writtenValue,n))},Dhe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Ohe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,khe=(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,Bi as f,Bn as p,Br as m,Bt as h,C as g,Ca as _,Ci as v,Cn as ee,Cr as te,Ct as ne,D as re,Da as ie,Di as ae,Dn as oe,Dr as se,Dt as ce,E as le,Ea as ue,Ei as de,En as fe,Er as pe,Et as me,F as he,Fi as eee,Fn as ge,Fr as tee,Ft as nee,G as ree,Gi as iee,Gn as _e,Gr as ve,Gt as aee,H as oee,Hi as see,Hn as ye,Hr as be,Ht as cee,I as lee,In as xe,Ir as Se,It as uee,J as dee,Ji as Ce,Jn as we,Jr as Te,Jt as Ee,K as De,Ki as fee,Kn as Oe,Kr as ke,Kt as pee,L as mee,Ln as Ae,Lr as je,Lt as hee,M as Me,Ma as gee,Mi as _ee,Mn as Ne,Mr as vee,Mt as yee,N as Pe,Na as bee,Ni as xee,Nn as Fe,Nr as Ie,Nt as See,O as Cee,Oa as Le,Oi as Re,On as ze,Or as Be,Ot as wee,P as Ve,Pi as Tee,Pn as He,Pr as Ue,Pt as Eee,Q as We,Qi as Ge,Qn as Ke,Qr as qe,Qt as Je,R as Ye,Rn as Xe,Rr as Ze,Rt as Dee,S as Qe,Sa as $e,Si as Oee,Sn as et,Sr as tt,St as kee,T as Aee,Ta as jee,Ti as Mee,Tn as nt,Tr as Nee,Tt as Pee,U as Fee,Ui as Iee,Un as rt,Ur as Lee,Ut as Ree,V as it,Vi as zee,Vn as at,Vr as Bee,Vt as ot,W as Vee,Wi as Hee,Wn as st,Wr as ct,Wt as y,X as lt,Xi as Uee,Xn as b,Xr as ut,Xt as dt,Y as ft,Yi as pt,Yn as x,Yr as Wee,Yt as mt,Z as Gee,Zi as Kee,Zn as S,Zr as qee,Zt as ht,_ as Jee,_a as Yee,_i as Xee,_n as gt,_r as Zee,_t as Qee,a as $ee,aa as C,ai as ete,an as tte,ar as w,at as nte,b as rte,ba as _t,bi as vt,bn as ite,br as yt,bt as ate,c as ote,ca as ste,ci as bt,cn as xt,cr as cte,ct as St,d as Ct,da as lte,di as T,dn as wt,dr as Tt,dt as Et,ea as Dt,ei as Ot,en as ute,er as kt,et as At,f as jt,fa as dte,fi as fte,fn as E,fr as pte,ft as mte,g as Mt,ga as hte,gi as Nt,gn as Pt,gr as Ft,gt as gte,h as It,ha as Lt,hi as Rt,hn as zt,hr as _te,ht as vte,i as yte,ia as D,ii as O,in as bte,ir as k,it as Bt,j as Vt,ja as xte,ji as Ht,jn as Ut,jr as Ste,jt as Cte,k as wte,ka as Tte,ki as Wt,kn as Gt,kr as Kt,kt as Ete,l as qt,la as Dte,li as Ote,ln as kte,lr as Ate,lt as Jt,m as Yt,ma as Xt,mi as Zt,mn as A,mr as jte,mt as Mte,n as Nte,na as Qt,ni as Pte,nn as $t,nr as j,nt as en,o as Fte,oa as M,oi as Ite,on as Lte,or as tn,ot as nn,p as rn,pa as Rte,pi as an,pn as on,pr as zte,pt as sn,q as cn,qi as Bte,qn as ln,qr as un,qt as dn,r as Vte,ra as fn,ri as Hte,rn as pn,rr as mn,rt as hn,s as gn,sa as Ute,si as Wte,sn as Gte,sr as _n,st as Kte,t as qte,ta as vn,ti as Jte,tn as Yte,tr as yn,tt as bn,u as xn,ua as Xte,ui as Sn,un as Zte,ur as Cn,ut as Qte,v as $te,va as ene,vi as wn,vn as tne,vr as nne,vt as rne,w as Tn,wa as ine,wi as En,wn as Dn,wr as ane,wt as one,x as On,xa as sne,xi as N,xn as kn,xr as An,xt as cne,y as jn,ya as Mn,yi as Nn,yn as Pn,yr as Fn,yt as lne,z as In,zi as une,zn as Ln,zr as dne,zt as fne}from"./capability-43d6SuoY.js";import{visitorKeys as pne}from"oxc-parser";import*as Rn from"node:fs";import{readFileSync as mne}from"node:fs";import*as zn from"node:path";import{analyze as hne}from"eslint-scope";import{Features as gne,transform as Bn}from"lightningcss";import{visit as Vn}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as _ne}from"@shaderfrog/glsl-parser/index.js";const vne=Symbol.for(`react-doctor.reset-filesystem-caches`),Hn=e=>y({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>pn}),Un=Hn({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.`}),Wn=e=>!D(e,`CallExpression`)&&!D(e,`NewExpression`)?null:D(e.callee,`Identifier`)?e.callee.name:D(e.callee,`MemberExpression`)&&D(e.callee.property,`Identifier`)?e.callee.property.name:null,Gn=(e,t)=>{if(!D(e,`CallExpression`)&&!D(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return D(n,`ArrowFunctionExpression`)||D(n,`FunctionExpression`)?n:t?c(n,t):null},Kn=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=N(r),D(r,`MemberExpression`)){r=r.object;continue}if(n&&D(r,`CallExpression`)){if(!D(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return D(r,`Identifier`)?r:null},qn=(e,t)=>Kn(e,t)?.name??null,Jn=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=Wn(e);return n?typeof t==`string`?n===t:t.has(n):!1},yne={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},Yn=(e,t,n)=>j(e,t,n,yne),bne=new Set([`useCallback`,`useEffectEvent`]),xne=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),Sne=/^use\w*(?:Throttle|Debounce)/i,Cne=e=>{let t=Wn(e);return t!==null&&Sne.test(t)},wne=(e,t)=>{if(!Yn(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return D(n,`ArrayExpression`)&&(n.elements?.length??0)===0},Tne=(e,t)=>D(e,`CallExpression`)?Yn(e,bne,t)||Jn(e,xne)||wne(e,t)||Cne(e):D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&e.property.name===`current`,Ene=(e,t,n)=>{let r=A(e,t);return!!(r?.initializer&&Yn(r.initializer,`useRef`,n))},Xn=y({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(!Yn(t,Tt,e.scopes)||(t.arguments?.length??0)<2)return;let n=Gn(t);if(!n||!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return;let r=t.arguments[1];if(!D(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)D(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(T(n.body,e=>{if(!D(e,`CallExpression`)||!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)||!Ie.has(e.callee.property.name))return;let t=qn(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];D(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=A(t,a);s?.initializer&&Tne(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!Ene(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),Zn=e=>{let t=e.value;return t&&D(t,`Literal`)&&typeof t.value==`string`?t.value:null},P=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!D(t,`JSXAttribute`))continue;let e=Pt(t.name);if(e&&e.toLowerCase()===n)return t}},Qn=Object.freeze({}),$n=new WeakMap,Dne=e=>{if(!e)return Qn;let t=$n.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:Qn;return $n.set(e,r),r},One=(e,t)=>{let n=E(e);if(t.polymorphicPropName){let n=P(e.attributes,t.polymorphicPropName);if(n){let e=Zn(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},er=new WeakMap,tr=(e,t)=>{let n=er.get(e);if(n&&n.settings===t)return n.elementType;let r=One(e,Dne(t));return er.set(e,{settings:t,elementType:r}),r},nr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},F=e=>e.some(e=>D(e,`JSXSpreadAttribute`)),rr=e=>{if(!e)return null;let t=N(e);return D(t,`Literal`)&&typeof t.value==`string`?t.value:D(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},I=e=>{if(!D(e,`JSXAttribute`))return null;let t=Zn(e);if(t!==null)return t;let n=e.value;if(n&&D(n,`JSXExpressionContainer`)){let e=n.expression;if(D(e,`Literal`)&&typeof e.value==`string`)return e.value;if(D(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},ir=e=>e.attribute?I(e.attribute):rr(e.expression),kne=e=>{let t=e.expression??e.attribute?.value;return t?N(D(t,`JSXExpressionContainer`)?t.expression:t):null},ar=(e,t)=>{if(tr(e,t).toLowerCase()===`input`&&ir(qt(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=qt(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=ir(n);if(e!==null)return e.length>0;let t=kne(n);if(D(t,`Literal`)&&t.value)return!0}let r=qt(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=ir(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=kne(r);return D(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},or=e=>{if(D(e,`JSXIdentifier`))return e.name;if(D(e,`JSXMemberExpression`)){let t=or(e.object);return t?`${t}.${e.property.name}`:null}return null},Ane=[`next/og`,`@vercel/og`,`satori`],jne=new Set([`next/og`,`@vercel/og`]),sr=e=>{let t=e.parent;for(;t;){if(D(t,`ImportDeclaration`))return t;if(D(t,`Program`))return null;t=t.parent}return null},cr=e=>typeof e.source.value==`string`?e.source.value:null,Mne=(e,t,n)=>{if(e.kind!==`import`)return!1;let r=e.declarationNode;if(!D(r,`ImportSpecifier`))return!1;let i=sr(r),a=i?cr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return D(o,`Identifier`)&&o.name===t||D(o,`Literal`)&&o.value===t},Nne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=sr(t);if(!n||cr(n)!==`satori`)return!1;if(D(t,`ImportDefaultSpecifier`))return!0;if(!D(t,`ImportSpecifier`))return!1;let r=t.imported;return D(r,`Identifier`)&&r.name===`satori`||D(r,`Literal`)&&r.value===`satori`},lr=(e,t)=>{if(!D(e,`CallExpression`)&&!D(e,`NewExpression`))return!1;let n=N(e.callee);if(D(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(Mne(e,`ImageResponse`,jne)||Nne(e)))}if(!D(n,`MemberExpression`)||O(n)!==`ImageResponse`||!D(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(!D(i,`ImportNamespaceSpecifier`))return!1;let a=sr(i),o=a?cr(a):null;return!!(o&&jne.has(o))},Pne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${pt}$`),ur=e=>e?Pne.test(zn.basename(e)):!1,Fne=new WeakMap,Ine=e=>e?ur(kt(e)):!1,Lne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},dr=(e,t,n,r,i)=>{if(!C(e))return;if(D(e,`ArrowFunctionExpression`)){let a=N(e.body);if(!D(a,`BlockStatement`)){fr(a,t,n,r,i);return}}let a=e.body;D(a,`BlockStatement`)&&T(a,e=>{if(e!==a&&C(e))return!1;D(e,`ReturnStatement`)&&e.argument&&fr(N(e.argument),t,n,r,i)})},Rne=(e,t,n)=>{let r=!1;return T(e,e=>{if(r)return!1;if(D(e,`JSXOpeningElement`)&&!n.has(e)&&or(e.name)===t)return r=!0,!1}),r},zne=(e,t,n,r,i)=>{let a=or(n.name);if(!a||a.includes(`.`)||!Lne(a)||i.has(a)||Rne(e,a,r))return;let o=A(n,a);o?.initializer&&(i.add(a),fr(N(o.initializer),e,t,r,i))},Bne=(e,t)=>{let n=e.parent;for(;n;){if(lr(n,t))return!0;n=n.parent??null}return!1},Vne=(e,t,n)=>{let r=!1;return T(e,e=>{if(r)return!1;if(D(e,`CallExpression`)&&D(e.callee,`Identifier`)&&e.callee.name===t&&!Bne(e,n))return r=!0,!1}),r},Hne=(e,t,n,r,i)=>{T(e,e=>{D(e,`JSXOpeningElement`)&&(r.add(e),zne(t,n,e,r,i))})},fr=(e,t,n,r,i)=>{let a=N(e);if(D(a,`JSXElement`)||D(a,`JSXFragment`)){Hne(a,t,n,r,i);return}if(C(a)){dr(a,t,n,r,i);return}if(D(a,`ConditionalExpression`)){fr(a.consequent,t,n,r,i),fr(a.alternate,t,n,r,i);return}if(D(a,`LogicalExpression`)){fr(a.left,t,n,r,i),fr(a.right,t,n,r,i);return}if(D(a,`CallExpression`)){let e=a.callee;if(C(e)){dr(e,t,n,r,i);return}if(!D(e,`Identifier`)||i.has(e.name)||Rne(t,e.name,r)||Vne(t,e.name,n))return;let o=A(e,e.name);if(!o?.initializer||!C(N(o.initializer)))return;i.add(e.name),dr(N(o.initializer),t,n,r,i);return}if(D(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=A(a,a.name);if(!e?.initializer)return;fr(N(e.initializer),t,n,r,i)}},Une=(e,t)=>{let n=Fne.get(e);if(n)return n;let r=new WeakSet;return _e(e,Ane)&&T(e,n=>{if(!(!D(n,`CallExpression`)&&!D(n,`NewExpression`))&&lr(n,t))for(let i of n.arguments)fr(i,e,t,r,new Set)}),Fne.set(e,r),r},pr=(e,t)=>{if(Ine(e.filename))return!0;if(!t)return!1;let n=x(t);if(!n)return!1;let r=Une(n,e.scopes);return r.has(t)?!0:D(t,`JSXElement`)?r.has(t.openingElement):!1},mr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],hr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),gr=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),_r=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),vr=new Set([`add`,`clear`,`delete`,`set`]),yr=new Set([`map`,`filter`,`forEach`,`flatMap`]),br=new Set([`then`,`catch`,`finally`]),Wne=new Set([`values`,`keys`,`entries`]),Gne=/\.browser\.[cm]?[jt]sx?$/,Kne=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(`.`)),qne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],Jne=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(`.`)),Yne=[`findBy`,`findAllBy`],xr=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(`.`)),Sr=e=>typeof e!=`string`||e.length===0?!1:Kne.has(e)?!0:qne.some(t=>e.startsWith(t)),Xne=new Set([`it`,`test`]),Zne=new Set([`concurrent`,`only`,`skip`]),Qne=new Set([`doMock`,`mock`,`unstable_mockModule`]),$ne=new Set([`jest`,`vi`]),ere=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),tre=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),nre=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__/`)},rre=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=ye(e,e.name);return!!(r&&ere.has(r.source)&&r.exportedName&&t.has(r.exportedName))},ire=(e,t,n)=>nre(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),are=(e,t,n)=>rre(e,t,n)||ire(e,t,n),Cr=e=>{let t=N(e);if(D(t,`Identifier`))return t;if(D(t,`MemberExpression`)){let e=O(t);return!e||!Zne.has(e)?null:Cr(t.object)}let n=D(t,`CallExpression`)?N(t.callee):D(t,`TaggedTemplateExpression`)?N(t.tag):null;return!D(n,`MemberExpression`)||O(n)!==`each`?null:Cr(n.object)},ore=(e,t)=>{let n=S(e),r=n.parent;if(!r||!D(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Cr(r.callee);return!!(i&&are(i,Xne,t))},sre=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!D(r,`Literal`)||typeof r.value!=`string`)return!1;let i=N(e.callee);if(!D(i,`MemberExpression`))return!1;let a=O(i);if(!a||!Qne.has(a))return!1;let o=N(i.object);return D(o,`Identifier`)&&are(o,$ne,n)},cre=(e,t)=>{let n=e.parent;for(;n;){if(C(n)){let e=S(n),r=e.parent;if(r&&D(r,`CallExpression`)&&sre(r,e,t))return!0}n=n.parent}return!1},lre=(e,t,n)=>{let r=e.parent,i=null;for(r&&D(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(C(r))return!1;if(D(r,`JSXAttribute`)&&(i=r),D(r,`JSXElement`)){let e=r.openingElement.name;if(D(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=ye(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!tre.has(a.source)&&!Sr(a.source)&&i?.parent===r.openingElement&&D(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},wr=(e,t)=>{if(cre(e,t))return!0;let n=b(e);return!n||!ore(n,t)?!1:lre(e,n,t)},ure=e=>{let t=e.parent;return t?D(t,`JSXSpreadAttribute`)||D(t,`SpreadElement`)?t.argument===e:D(t,`VariableDeclarator`)&&t.init===e:!1},Tr=(e,t,n,r,i)=>{let a=N(e);if(r&&D(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`||!ure(e.identifier)))return!0;i.add(e.id);let o=Tr(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!D(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(D(e,`SpreadElement`)){if(Tr(e.argument,t,n,r,i))return!0;continue}if(!D(e,`Property`))return!0;let a=w(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},Er=(e,t,n=!0,r)=>Tr(e,t,n,r,new Set),L=(e,t,n=!0)=>{let r=n?t:t.toLowerCase();for(let i=e.length-1;i>=0;--i){let a=e[i];if(!a)return null;if(D(a,`JSXSpreadAttribute`)){if(Er(a.argument,t,n))return null;continue}if(!D(a,`JSXAttribute`))continue;let o=Pt(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},Dr=(e,t)=>e.some(e=>D(e,`JSXSpreadAttribute`)&&Er(e.argument,t,!1)),Or=e=>{let t=N(e);return D(t,`UnaryExpression`)&&t.operator===`void`&&D(N(t.argument),`Literal`)},kr=(e,t={})=>{if(!e?.value)return!1;let n=I(e);if(n!==null)return n.trim().length>0;if(!D(e.value,`JSXExpressionContainer`))return!0;let r=N(e.value.expression);return D(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:D(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!Or(r)},dre=(e,t,n)=>{let{openingElement:r}=e;if(r===n||ar(r,t))return!1;if(D(r.name,`JSXMemberExpression`)||D(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=L(r.attributes,`aria-label`,!1);if(kr(i,{booleanValuesRender:!0})||!i&&Dr(r.attributes,`aria-label`))return!0;if(D(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=L(r.attributes,`alt`,!1);return kr(e)||!e&&Dr(r.attributes,`alt`)}return jr(e,t,n)},Ar=(e,t,n)=>{for(let r of e){if(D(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(D(r,`JSXElement`)){if(dre(r,t,n))return!0;continue}if(D(r,`JSXFragment`)){if(Ar(r.children,t,n))return!0;continue}if(D(r,`JSXExpressionContainer`)){let e=N(r.expression);if(D(e,`JSXEmptyExpression`))continue;if(D(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(Or(e)||D(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},jr=(e,t,n)=>{if(Ar(e.children,t,n))return!0;let r=L(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(kr(r)||!r&&Dr(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=L(e.openingElement.attributes,`children`,!1);return!!(kr(i)||!i&&Dr(e.openingElement.attributes,`children`))},Mr=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},fre=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},pre=e=>!!(D(e,`Identifier`)&&e.name===`undefined`||D(e,`Literal`)&&e.value===null),Nr=e=>pre(e)?!0:D(e,`ConditionalExpression`)?Nr(e.consequent)||Nr(e.alternate):!1,Pr=e=>{if(!e.value)return!1;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!Nr(t):!0}return!0},mre=e=>{if(!e)return!1;let t=Zn(e);return t===`presentation`||t===`none`},Fr=e=>{if(!e.value)return!1;if(D(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:D(t,`Identifier`)&&t.name===`undefined`?!1:D(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},hre=(e,t,n)=>{let r=P(e.attributes,`alt`);if(r){Pr(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(mre(P(e.attributes,`role`))){n.report({node:t,message:'Screen readers skip a decorative image more reliably with `alt=""` than `role="presentation"`, so use `alt=""` instead.'});return}let i=P(e.attributes,`aria-label`);if(i){Fr(i)||n.report({node:t,message:"Screen reader users hear nothing here because `aria-label` has no value, so give it a short description."});return}let a=P(e.attributes,`aria-labelledby`);if(a){Fr(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.'})},gre=(e,t,n,r)=>{let i=P(e.attributes,`aria-label`),a=P(e.attributes,`aria-labelledby`),o=i&&Fr(i)||a&&Fr(a),s=P(e.attributes,`title`),c=s?Zn(s):null,l=!!(c&&c.length>0);o||l||jr(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."})},_re=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&Fr(r)||i&&Fr(i))return;let a=P(e.attributes,`alt`);(!a||!Pr(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`."})},vre=(e,t,n)=>{let r=P(e.attributes,`aria-label`),i=P(e.attributes,`aria-labelledby`);if(r&&Fr(r)||i&&Fr(i))return;let a=P(e.attributes,`alt`);(!a||!Pr(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`."})},yre=y({id:`alt-text`,title:`Image missing alt text`,tags:[`react-jsx-only`],severity:`error`,recommendation:"Give every meaningful image an `alt`, `aria-label`, or `aria-labelledby`.",category:`Accessibility`,create:e=>{let t=Mr(e.settings);if(t&&pr(e))return pn;let n=fre(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=nr(e.settings);return{JSXOpeningElement(n){if(t&&wr(n,e))return;if(!d&&D(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&&pr(e,n)||t&&F(n.attributes))return;let f=tr(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&ar(n,e.settings))return;hre(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&D(t,`JSXElement`)&&gre(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){_re(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=P(n.attributes,`type`);return e?Zn(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&vre(n,n,e)}}}}),bre=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,xre=[`click here`,`here`,`link`,`a link`,`learn more`],Sre=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??xre}},Cre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),wre=e=>D(e,`Literal`)&&typeof e.value==`string`?e.value:D(e,`TemplateLiteral`)?Fe(e):null,Tre=(e,t)=>{let n=e.openingElement,r=P(n.attributes,`aria-label`);if(r){let e=Zn(r);if(e!==null)return e}if(tr(n,t)===`img`){let e=P(n.attributes,`alt`);if(e){let t=Zn(e);if(t!==null)return t}}if(ar(n,t))return null;let i=[];for(let n of e.children){let e=n;if(D(e,`JSXText`))i.push(e.value);else if(D(e,`JSXElement`)){let n=Tre(e,t);n!==null&&i.push(n)}else if(D(e,`JSXExpressionContainer`)){let t=wre(e.expression);t!==null&&i.push(t)}}return i.join(``)},Ere=y({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(Je(e.filename))return pn;let t=Sre(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(tr(t.openingElement,e.settings)!==`a`)return;let r=Tre(t,e.settings);if(r===null||r.trim().length===0)return;let i=Cre(r);n.has(i)&&e.report({node:t.openingElement.name,message:bre(i)})}}}}),Ir=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(`.`)),Lr=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(`.`)),Dre=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(`.`)),Ore=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),Rr=new Set([`presentation`,`none`]),kre=e=>e.trim().split(/\s+/).find(e=>Ir.has(e))===`link`,Are=e=>{let t=e.parent;for(;t;){if(D(t,`JSXAttribute`)){let e=t.parent;return e&&D(e,`JSXOpeningElement`)?or(e.name)===`Trans`:!1}t=t.parent??null}return!1},jre=e=>e.children.some(e=>{if(!D(e,`JSXElement`))return!1;let t=e,n=or(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!P(t.openingElement.attributes,`aria-hidden`)}),Mre=y({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=Mr(e.settings),n=Je(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(tr(i,e.settings)!==`a`)return;let a=P(i.attributes,`href`),o=P(i.attributes,`role`),s=o?jt(o,e.scopes):[],c=s===null||s.some(e=>kre(e));if(!(t&&!a&&!c)&&!ar(i,e.settings)&&!(jr(r,e.settings)||!t&&jre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(P(i.attributes,e))return;t&&Are(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`."})}}}}}),zr=[`href`],Nre=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return zr;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return zr;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?zr:r},Pre="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",Br="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",Vr="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",Fre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...Nre(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Hr=(e,t)=>e.aspects===null||e.aspects.has(t),Ire=e=>{let t=e.parent;if(!t||!D(t,`JSXElement`))return!1;let n=t.parent;if(!n||!D(n,`JSXElement`))return!1;let r=or(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},Lre=e=>!!P(e.attributes,`role`)&&!!P(e.attributes,`tabindex`)&&(!!P(e.attributes,`onkeydown`)||!!P(e.attributes,`onkeyup`)),Ur=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},Rre=e=>{if(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(t,`Identifier`)&&t.name===`undefined`||D(t,`Literal`)&&t.value===null)return!0}return!!D(e,`JSXFragment`)},zre=e=>{let t=e.value;if(!t)return`nullish`;if(D(t,`Literal`))return typeof t.value==`string`&&Ur(t.value,new Set)?`invalid`:`valid`;if(D(t,`JSXExpressionContainer`)){let e=t.expression;return D(e,`Identifier`)&&e.name===`undefined`?`nullish`:D(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Ur(e.value,new Set)?`invalid`:`valid`:D(e,`TemplateLiteral`)&&e.expressions.length===0&&Ur(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return D(t,`JSXFragment`)?`nullish`:`valid`},Wr=y({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=Fre(e.settings),n=Mr(e.settings),r=nr(e.settings),i=Je(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=tr(a,e.settings),s=or(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=P(a.attributes,e);if(!t)continue;let i=zre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=F(a.attributes),o=!!P(a.attributes,`onClick`);if(!n){!i&&Hr(t,`noHref`)&&(!o||!Hr(t,`preferButton`))&&e.report({node:a.name,message:Pre}),!i&&o&&Hr(t,`preferButton`)&&e.report({node:a.name,message:Vr});return}r&&(o&&Hr(t,`preferButton`)?e.report({node:a.name,message:Vr}):Hr(t,`invalidHref`)&&e.report({node:a.name,message:Br}));return}let c;for(let e of t.hrefAttributeNames)if(c=P(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:Br});return}let n=jt(c,e.scopes);if(n===null?Rre(c.value):n.length>0&&n.every(e=>Ur(e,t.validHrefs))){let t=!!P(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?Vr:Br})}return}F(a.attributes)||Ire(a)||Lre(a)||e.report({node:a.name,message:Pre})}}}}),Gr=y({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(Je(e.filename))return pn;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(tr(n,e.settings)!==`a`)return;let r=null;for(let t of Nre(e.settings))if(r=L(n.attributes,t,!1),r)break;if(!r)return;let i=I(r);if(!i?.startsWith(`#`)||i.length===1||i.startsWith(`#/`)||i.startsWith(`#!`))return;let a=i.indexOf(`:~:`),o=i.slice(1,a===-1?void 0:a);!o||o.toLowerCase()===`top`||t.push({hrefAttribute:r,targetId:o})},"Program:exit"(){if(!n||t.length===0)return;let r=ote({configuredRootDirectory:Ee(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.`})}}}}),Bre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Kr=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(`.`)),qr=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(`.`)),Jr=e=>e.kind!==`const`||!D(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,Vre=new Set([``,`plaintext-only`,`true`]),Yr={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Xr={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},Zr={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Qr={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},Hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),$r=(e,t,n)=>{let r=N(e);if(D(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?Yr:Xr;if(typeof r.value==`string`){let e=r.value.toLowerCase();return Vre.has(e)?Yr:e===`false`?Xr:Zr}return Zr}if(D(r,`ConditionalExpression`))return Hre($r(r.consequent,t,n),$r(r.alternate,t,n));if(D(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Qr;let i=Jr(e);if(!i)return Qr;let a=new Set(n);return a.add(e.id),$r(i,t,a)}return Qr},ei=(e,t)=>{let n=P(e.attributes,`contenteditable`);return n?n.value?D(n.value,`Literal`)?$r(n.value,t,new Set):D(n.value,`JSXExpressionContainer`)?$r(n.value.expression,t,new Set):Qr:Yr:null},Ure=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(D(r,`JSXElement`)){let e=r.openingElement;if(!Kr.has(tr(e,n)))return!1;let i=ei(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},ti=(e,t,n)=>ei(e,t)?.canBeEnabled?!Ure(e,t,n):!1,ni=(e,t)=>{switch(e){case`audio`:case`button`:case`canvas`:case`datalist`:case`embed`:case`menuitem`:case`option`:case`select`:case`summary`:case`td`:case`th`:case`tr`:case`textarea`:case`video`:return!0;case`input`:{let e=P(t.attributes,`type`);if(e){let t=Zn(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return P(t.attributes,`href`)!==void 0;case`img`:return P(t.attributes,`usemap`)!==void 0;default:return!1}},ri=e=>{if(!e)return null;if(D(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(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(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(D(t,`UnaryExpression`)&&t.operator===`-`&&D(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(D(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return D(t.test,`Literal`)?ri(e(t.test.value?t.consequent:t.alternate)):ri(e(t.consequent))}}return null},ii="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",ai=y({id:`aria-activedescendant-has-tabindex`,title:`aria-activedescendant missing tabindex`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Add `tabIndex` so keyboard users can reach elements that use `aria-activedescendant`.",category:`Accessibility`,create:e=>({JSXOpeningElement(t){if(!P(t.attributes,`aria-activedescendant`))return;let n=tr(t,e.settings);if(!Kr.has(n))return;let r=P(t.attributes,`tabIndex`);if(r){let n=ri(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:ii});return}ni(n,t)||ti(t,e.scopes,e.settings)||e.report({node:t.name,message:ii})}})}),Wre=[`aria-label`,`aria-labelledby`,`alt`,`title`],oi=(e,t)=>{let n=L(e.attributes,t,!1);if(!n)return!1;let r=I(n);return r===null?null:r.trim().length>0},si=y({id:`aria-braille-equivalent`,title:`Braille-only accessible description`,severity:`warn`,category:`Accessibility`,defaultEnabled:!1,recommendation:`Pair braille-specific labels and role descriptions with an equivalent accessible name or role description.`,create:e=>({JSXElement(t){let n=t.openingElement;if(F(n.attributes))return;if(oi(n,`aria-brailleroledescription`)===!0&&oi(n,`aria-roledescription`)===!1){let t=L(n.attributes,`aria-brailleroledescription`,!1);t&&e.report({node:t,message:`This braille role description has no non-braille equivalent. Add a nonempty aria-roledescription for other assistive technologies.`})}if(oi(n,`aria-braillelabel`)!==!0||jr(t,e.settings)||Wre.map(e=>oi(n,e)).some(e=>e===!0||e===null))return;let r=L(n.attributes,`aria-braillelabel`,!1);r&&e.report({node:r,message:`This braille label is the element's only accessible name. Add visible text, aria-label, aria-labelledby, alt, or title for non-braille assistive technology.`})}})}),ci=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`}]]),Gre=e=>ci.has(e),Kre=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.`,li=y({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(!D(t.name,`JSXIdentifier`))return;let n=Pt(t.name);!n||!n.startsWith(`aria-`)||Gre(n)||e.report({node:t.name,message:Kre(n)})}})}),qre={"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`]}},Jre=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(`, `)}`}},ui=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${Jre(t)}.`,Yre=e=>{switch(e.kind){case`boolean`:case`optional-boolean`:case`tristate`:case`string`:return!0;case`token`:case`token-list`:return e.tokens.includes(`true`);default:return!1}},di=e=>{if(D(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(D(e,`TemplateLiteral`)){let t=Fe(e);return t===null?null:t.length>0}if(D(e,`UnaryExpression`)&&e.operator===`!`){let t=di(e.argument);return t===null?null:!t}return null},Xre=e=>{if(D(e,`Literal`))return!0;if(D(e,`JSXExpressionContainer`)){let t=e.expression;return D(t,`Literal`)?t.value!==null:D(t,`TemplateLiteral`)?!0:D(t,`UnaryExpression`)&&t.operator===`!`?di(t.argument)!==null:!1}return!1},fi=(e,t)=>{if(D(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(D(e,`JSXExpressionContainer`)){let n=e.expression;if(D(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(D(n,`TemplateLiteral`))return Fe(n)?.toLowerCase()??null;if(t&&D(n,`UnaryExpression`)&&n.operator===`!`){let e=di(n.argument);return e===null?null:String(!e)}}return null},pi=e=>{if(!D(e,`JSXExpressionContainer`))return!1;let t=e.expression;return D(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},Zre=(e,t)=>{if(!Xre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=fi(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=fi(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return pi(t)?!0:fi(t,!1)!==null;case`integer`:case`number`:{let e=fi(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(D(t,`JSXExpressionContainer`)){let e=t.expression;if(D(e,`Literal`)&&typeof e.value==`number`||D(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&D(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(pi(t))return!0;let e=fi(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=fi(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=fi(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))}}},mi=y({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(!D(t.name,`JSXIdentifier`))return;let n=Pt(t.name);if(!n)return;let r=n.toLowerCase(),i=qre[r];if(i){if(!t.value){Yre(i)||e.report({node:t,message:ui(r,i)});return}Zre(i,t.value)||e.report({node:t,message:ui(r,i)})}}})}),hi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Qre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??Mr(e)}},gi=y({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=Qre(e.settings);return{JSXOpeningElement(n){let r=P(n.attributes,`role`);if(!r)return;let i=tr(n,e.settings);if(t.ignoreNonDOM&&!Kr.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:hi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!Ir.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:hi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:hi(``)});return}if(D(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:hi(``)});return}a([o.value]);return}if(D(o,`JSXExpressionContainer`)){let t=o.expression;if(D(t,`Literal`)&&t.value===null){e.report({node:r,message:hi(``)});return}if(D(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:hi(``)});return}let n=jt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:hi(``)})}}}}),$re=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,eie=y({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=tr(t,e.settings);if(Bre.has(n))for(let r of t.attributes){if(!D(r,`JSXAttribute`)||!D(r.name,`JSXIdentifier`))continue;let t=Pt(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:$re(n,t)})}}})}),_i=(e,t)=>{if(e){if(D(e,`Identifier`)){t.add(e.name);return}if(D(e,`AssignmentPattern`)){_i(e.left,t);return}if(D(e,`RestElement`)){_i(e.argument,t);return}if(D(e,`ArrayPattern`)){for(let n of e.elements??[])_i(n,t);return}if(D(e,`ObjectPattern`))for(let n of e.properties??[]){if(D(n,`RestElement`)){_i(n.argument,t);continue}D(n,`Property`)&&_i(n.value,t)}}},vi=(e,t,n)=>{if(e&&!D(e,`Identifier`)){if(D(e,`AssignmentPattern`)){yi(e.right,t,n),vi(e.left,t,n);return}if(D(e,`RestElement`)){vi(e.argument,t,n);return}if(D(e,`ArrayPattern`)){for(let r of e.elements??[])vi(r,t,n);return}if(D(e,`ObjectPattern`))for(let r of e.properties??[]){if(D(r,`RestElement`)){vi(r.argument,t,n);continue}D(r,`Property`)&&(r.computed&&yi(r.key,t,n),vi(r.value,t,n))}}},tie=(e,t,n)=>{if(!D(e,`FunctionDeclaration`)&&!D(e,`FunctionExpression`)&&!D(e,`ArrowFunctionExpression`))return;let r=new Set(n);for(let t of e.params??[])_i(t,r);for(let n of e.params??[])vi(n,t,r);yi(e.body,t,r)},yi=(e,t,n)=>{if(!e)return;if(D(e,`Identifier`)){n.has(e.name)||t.add(e.name);return}if(D(e,`MemberExpression`)){yi(e.object,t,n),e.computed&&yi(e.property,t,n);return}if(D(e,`Property`)){e.computed&&yi(e.key,t,n),yi(e.value,t,n);return}if(D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`)){tie(e,t,n);return}if(D(e,`TSAsExpression`)||D(e,`TSSatisfiesExpression`)||D(e,`TSTypeAssertion`)||D(e,`TSNonNullExpression`)||D(e,`TSInstantiationExpression`)){yi(e.expression,t,n);return}if(typeof e.type==`string`&&e.type.startsWith(`TS`))return;let r=e;for(let e of Object.keys(r)){if(e===`parent`||ste.has(e))continue;let i=r[e];if(Array.isArray(i))for(let e of i)M(e)&&yi(e,t,n);else M(i)&&yi(i,t,n)}},bi=(e,t)=>yi(e,t,new Set),xi=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t||D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`))return!1;if(D(e,`AwaitExpression`))return t=!0,!1}),t},Si=e=>{let t=e;D(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!D(n,`Property`)||n.value!==t||!n.parent||!D(n.parent,`ObjectPattern`)?null:w(n,{allowComputedString:!0})},nie=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Ci=(e,t)=>{let n=N(e);return D(n,`Literal`)?!0:D(n,`Identifier`)?t.has(n.name):D(n,`BinaryExpression`)||D(n,`LogicalExpression`)?Ci(n.left,t)&&Ci(n.right,t):D(n,`UnaryExpression`)?n.operator!==`delete`&&Ci(n.argument,t):D(n,`ConditionalExpression`)?Ci(n.test,t)&&Ci(n.consequent,t)&&Ci(n.alternate,t):D(n,`TemplateLiteral`)?n.expressions.every(e=>Ci(e,t)):!1},wi=(e,t,n)=>{let r=N(e);if(!D(r,`CallExpression`)||!r.arguments.every(e=>!D(e,`SpreadElement`)&&Ci(e,t)))return!1;let i=N(r.callee);if(!D(i,`MemberExpression`)||O(i)!==`resolve`)return!1;let a=N(i.object);return D(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},rie=(e,t,n)=>!D(e,`ExpressionStatement`)||!D(e.expression,`AwaitExpression`)?!1:wi(e.expression.argument,t,n),iie=(e,t)=>{if(!D(e,`ExpressionStatement`)||!D(e.expression,`AssignmentExpression`)||!nie.has(e.expression.operator))return!1;let n=N(e.expression.left);if(!D(n,`MemberExpression`)||O(n)===null)return!1;let r=N(n.object);return D(r,`Identifier`)&&t.has(r.name)&&D(N(e.expression.right),`Literal`)},aie=(e,t)=>{if(!C(e))return!1;let n=new Set;for(let t of e.params){if(!D(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!D(e.body,`BlockStatement`))return wi(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(D(r,`ReturnStatement`)&&r.argument&&wi(r.argument,n,t))}if(!D(e.body,`BlockStatement`))return Ci(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(!rie(i,n,t)&&!(D(i,`ExpressionStatement`)&&Ci(i.expression,n)))return iie(i,n)?a:!D(i,`ReturnStatement`)||!a?!1:!i.argument||Ci(i.argument,n)||wi(i.argument,n,t)}return!0},oie=(e,t)=>D(e,`Property`)?Ne(e,t,{allowConstTemplateLiteral:!0}):null,sie=(e,t)=>D(e,`MemberExpression`)?Ne(e,t,{allowConstTemplateLiteral:!0}):null,Ti=(e,t,n,r,i)=>{let a=N(e);if(D(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||kn(e,n,r)||nt(a,t,r)?null:(i.add(e.id),Ti(e.initializer,t,n,r,i))}if(!D(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!D(e,`Property`)||e.kind!==`init`)return null;let n=oie(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!D(o,`Property`))return null;let s=N(o.value);return C(s)?s:Ei(s,n,r,i)},Ei=(e,t,n,r)=>{let i=N(e);if(C(i))return i;if(D(i,`MemberExpression`)){let e=sie(i,n);return e===null?null:Ti(N(i.object),e,t,n,r)}if(!D(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||kn(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=N(a.initializer),s=Si(a.bindingIdentifier);return s===null?C(o)?o:a.kind===`const`?Ei(o,t,n,r):null:Ti(o,s,t,n,r)},Di=(e,t)=>{let n=N(e);return!D(n,`CallExpression`)||Dn(n,t)?null:Ei(n.callee,n,t,new Set)},Oi=(e,t)=>{let n=Di(e,t);return n&&aie(n,t)?n:null},R=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},ki=e=>!!(e&&(D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`))),cie=(e,t)=>{if(!D(e,`LogicalExpression`))return!1;let n=S(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?R(t,n):!!(e.operator===`||`&&r&&R(t,r));return D(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):D(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(D(r,`WhileStatement`)||D(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||D(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?R(t,r.body):!1},Ai=(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(D(c,`LogicalExpression`)&&c.right===s||D(c,`ConditionalExpression`)&&c.test!==s||D(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(D(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||D(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!R(t,e)&&!cie(c,t))return!1;s=c,c=c.parent??null}let l=(e,t,n)=>{let r=new Set,i=e===n?[]:[e];for(;i.length>0;){let e=i.shift();if(!(!e||r.has(e))){if(e===t)return!0;r.add(e);for(let t of e.successors)t.to!==n&&i.push(t.to)}}return!1};return!l(i.entry,a)||!l(i.entry,o)?!1:a===o?e.range[0]<t.range[0]:!l(i.entry,o,a)},z=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(D(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=D(i,`Property`)?w(i):null;if(s&&D(a,`ObjectPattern`)&&D(o,`VariableDeclarator`)&&o.id===a){let r=z(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?N(e.initializer):null;return e.kind===`const`&&c&&(D(c,`Identifier`)||D(c,`MemberExpression`))?z(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(D(r,`MemberExpression`)){let e=w(r,{allowComputedString:!0});if(!e)return null;let i=z(r.object,t,n);return i?`${i}.${e}`:null}if(D(r,`ThisExpression`))return`this`;if(D(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(C(r)){let e=p(r);return e===null?null:`function:${e}`}return null},lie=new Set(mr),uie=new Set([`push`,`unshift`]),die=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),fie=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),pie=e=>D(e,`Identifier`)?e.name:D(e,`MemberExpression`)&&D(e.property,`Identifier`)?e.property.name:null,ji=e=>D(e,`ForStatement`)||D(e,`ForInStatement`)||D(e,`ForOfStatement`)||D(e,`WhileStatement`)||D(e,`DoWhileStatement`)?e.body:null,Mi=(e,t=!1,n)=>{let r=null;return T(e,i=>{if(r||i!==e&&C(i)||t&&i!==e&&lie.has(i.type))return!1;D(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},Ni=e=>{if(D(e,`Identifier`))return xr.has(e.name);if(D(e,`MemberExpression`)&&D(e.property,`Identifier`)){let t=N(e.object);return e.property.name===`check`&&D(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:xr.has(e.property.name)}return!1},mie=(e,t)=>{if(D(e.callee,`Identifier`)&&die.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)||!die.has(e.callee.property.name))return!1;let n=N(e.callee.object);return D(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},hie=(e,t,n=new Set)=>{if(!C(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return T(e.body,a=>{if(a!==e.body&&C(a))return!1;if(D(a,`NewExpression`)&&D(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=S(a),n=e.parent,i=D(n,`ReturnStatement`)&&n.argument===e||D(n,`AwaitExpression`)&&n.argument===e||C(n)&&n.body===e,o=a.arguments[0];i&&C(o)&&T(o.body,e=>{if(e!==o.body&&C(e))return!1;D(e,`CallExpression`)&&mie(e,t)&&(r=!0)})}if(!D(a,`CallExpression`)||mie(a,t))return;let o=Di(a,t.scopes);if(o!==null){hie(o,t,n)&&(i=!0);return}Ni(a.callee)&&(i=!0)}),r||i},gie=(e,t)=>{if(!D(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!D(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(D(e,`SpreadElement`))return!1;let t=N(e);return D(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=Di(n,t.scopes);if(r!==null&&hie(r,t))return!0;if(Oi(n,t.scopes)!==null)return!1;let i=pie(n.callee);return r!==null&&i&&fie.has(i)?!1:Ni(n.callee)},_ie=(e,t)=>D(e,`AwaitExpression`)&&!!e.argument&&Dn(e.argument,t.scopes),vie=new Set([`all`,`allSettled`,`race`,`any`]),Pi=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return!D(t,`MemberExpression`)||t.computed||!D(t.object,`Identifier`)||t.object.name!==`Promise`||!D(t.property,`Identifier`)?!1:vie.has(t.property.name)},yie=e=>D(e,`AwaitExpression`)?Pi(e.argument):!1,bie=e=>{if(!D(e,`AwaitExpression`))return!1;let t=e.argument;if(!D(t,`NewExpression`)||!D(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(D(n,`Identifier`)&&xr.has(n.name))return!0;if(!ki(n))return!1;let r=n.params?.[0],i=D(r,`Identifier`)?r.name:null,a=!1;return T(n.body,e=>{if(a)return!1;if(D(e,`CallExpression`)&&Ni(e.callee)||i&&D(e,`AssignmentExpression`)&&D(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},xie=e=>{let t=e;for(;D(t,`MemberExpression`);)t=t.object;return D(t,`Identifier`)?t.name:null},Sie=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Cie=(e,t)=>!!t&&e.references.some(e=>{let n=S(e.identifier),r=n.parent;return D(r,`ReturnStatement`)&&r.argument===n&&b(r)===t}),Fi=(e,t,n)=>{if(D(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(D(e,`ObjectPattern`)){for(let r of e.properties??[])D(r,`Property`)&&r.value?Fi(r.value,t,n):D(r,`RestElement`)&&r.argument&&Fi(r.argument,t,n);return}if(D(e,`ArrayPattern`)){for(let r of e.elements??[])r&&Fi(r,t,n);return}D(e,`AssignmentPattern`)&&e.left&&Fi(e.left,t,n)},Ii=(e,t)=>{let n=new Set;return T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},wie=(e,t)=>{let n=new Set;if(D(e,`ForOfStatement`)||D(e,`ForInStatement`))if(D(e.left,`VariableDeclaration`))for(let r of e.left.declarations)Fi(r.id,t,n);else Fi(e.left,t,n);return n},Tie=(e,t,n=null)=>{let r=new Set,i=[];T(e,a=>{if(a!==e&&C(a))return!1;if(D(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(Fi(a.id,t,e),n&&R(n,a.init)||!n&&xi(a.init))for(let t of e)r.add(t);let o=Ii(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(D(a,`AssignmentExpression`)&&a.left){let e=new Set;if(Fi(a.left,t,e),n&&R(n,a.right)||!n&&xi(a.right))for(let t of e)r.add(t);let o=Ii(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},Eie=e=>D(e,`Identifier`)?e:D(e,`AssignmentPattern`)&&D(e.left,`Identifier`)?e.left:null,Die=(e,t)=>{if(!D(e,`AwaitExpression`))return!1;let n=e.argument;if(!D(n,`CallExpression`))return!1;let r=Di(n,t.scopes);if(!C(r))return!1;let i=b(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=Tie(r.body,t.scopes),s=new Set;for(let[e,a]of r.params.entries()){let r=Eie(a);if(!r)continue;let o=n.arguments[e];if(!D(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Cie(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return T(r.body,e=>{if(c||e!==r.body&&C(e))return!1;if(!D(e,`CallExpression`))return;let n=e.callee;if(!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)||!uie.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(xi(n)){l=!0;break}let e=Ii(n,t.scopes);for(let t of e)if(o.has(t)){l=!0;break}if(l)break}if(!l)return;let u=n.object;for(;D(u,`MemberExpression`);)u=u.object;if(!D(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Sie(d.scope,a)&&Cie(d,i)))return c=!0,!1}),c},Oie=e=>{if(!D(e,`AwaitExpression`))return null;let t=N(e.argument);return D(t,`CallExpression`)&&D(N(t.callee),`MemberExpression`)?t:null},kie=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=wie(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=Ii(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},Aie=e=>{if(!D(e,`CallExpression`))return null;let t=N(e.callee);return D(t,`MemberExpression`)?t.object:null},Li=e=>{let t=N(e);for(;D(t,`MemberExpression`);)t=N(t.object);return t},jie=(e,t,n,r)=>{let i=ji(n);if(!i)return!1;let a=Li(e);if(D(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||R(e.bindingIdentifier,n))return!1}else if(!D(a,`ThisExpression`))return!1;let o=!1;return T(i,e=>{if(o||e!==i&&C(e))return!1;let n=null;if(D(e,`AssignmentExpression`)?n=e.left:(D(e,`UpdateExpression`)||D(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&z(n,r)===t)return o=!0,!1}),!o},Mie=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=Aie(e);return!r||z(r,n)!==t?!1:!D(S(e).parent,`ExpressionStatement`)},Nie=(e,t,n,r)=>{let i=ji(t);if(!i)return!1;let a=!1,o=!1;return T(i,t=>{if(a&&o||t!==i&&C(t))return!1;R(t,e)||Mie(t,n,r)&&(Ai(t,e,r)&&(a=!0),Ai(e,t,r)&&(o=!0))}),a&&o},Pie=(e,t)=>{let n=b(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||b(e.identifier)!==n)return!1;let r=S(e.identifier),i=r.parent;if(!D(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=N(i.callee);return D(a,`MemberExpression`)?D(Li(a.object),`ThisExpression`):!1})},Fie=(e,t,n)=>{let r=new Set;return T(t,i=>{if(i!==t&&C(i))return!1;let a=null,o=null;D(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):D(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!R(e,o))&&Fi(a,n.scopes,r)}),r},Iie=(e,t,n)=>{let r=N(e);if(!D(r,`MemberExpression`))return!1;let i=Li(r);if(!D(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},Lie=(e,t,n)=>{let r=ji(t);if(!r)return!1;let i=Fie(e,r,n);if(i.size===0)return!1;let a=!1;return T(r,o=>{if(a||o!==r&&C(o))return!1;if(!D(o,`CallExpression`)||!Ai(e,o,n))return;let s=o.callee;if(!D(s,`MemberExpression`)||s.computed||!D(s.property,`Identifier`)||!uie.has(s.property.name))return;let c=Li(s.object);if(!D(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||R(l.bindingIdentifier,t)||!Pie(l,t))){for(let e of o.arguments)if(Iie(e,i,n))return a=!0,!1}}),a},Rie=(e,t,n)=>{let r=Oie(e);if(!r||!kie(r,t,n))return!1;let i=Aie(r);if(!i)return!1;let a=z(i,n);return!a||!jie(i,a,t,n)?!1:Nie(e,t,a,n)||D(Li(i),`ThisExpression`)&&D(N(i),`MemberExpression`)&&Lie(e,t,n)},zie=(e,t)=>_ie(e,t)||gie(e,t)||yie(e)||bie(e)||Die(e,t),Ri=(e,t)=>{if(D(e,`Identifier`))t.add(e.name);else if(D(e,`ObjectPattern`))for(let n of e.properties??[])D(n,`Property`)&&n.value?Ri(n.value,t):D(n,`RestElement`)&&n.argument&&Ri(n.argument,t);else if(D(e,`ArrayPattern`))for(let n of e.elements??[])n&&Ri(n,t);else D(e,`AssignmentPattern`)&&e.left&&Ri(e.left,t)},Bie=new Set([`push`,`unshift`,`splice`]),zi=(e,t)=>{let n=[];T(e,t=>{if(t!==e&&C(t))return!1;if(!D(t,`VariableDeclarator`)||!t.init||!D(t.id,`Identifier`))return;let r=new Set;bi(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}}}},Vie=e=>{let t=new Set,n=new Set;if(T(e,r=>{if(r!==e&&C(r))return!1;if(D(r,`AssignmentExpression`)&&r.left){Ri(r.left,t);return}if(D(r,`AwaitExpression`)&&r.argument){bi(r.argument,n);return}if(!D(r,`CallExpression`))return;let i=r.callee;D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&Bie.has(i.property.name)&&D(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;zi(e,t);for(let e of t)if(n.has(e))return!0;return!1},Hie=new Set([...mr,`SwitchStatement`]),Uie=e=>{let t=new Set;return T(e,n=>{if(n!==e&&C(n))return!1;D(n,`VariableDeclarator`)&&n.id&&xi(n.init)&&Ri(n.id,t),D(n,`AssignmentExpression`)&&n.left&&xi(n.right)&&Ri(n.left,t)}),t},Bi=(e,t)=>{if(!e)return!1;if(xi(e))return!0;let n=new Set;bi(e,n);for(let e of n)if(t.has(e))return!0;return!1},Wie=(e,t,n)=>{if(e.label)return D(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(Hie.has(r.type))return!1;r=r.parent}return!0},Gie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),Vi=e=>{if(!e)return!1;if(Gie.has(e.type))return!0;if(D(e,`BlockStatement`)){let t=e.body??[];return Vi(t[t.length-1])}return!1},Kie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(D(r,`IfStatement`)&&Bi(r.test,n)&&(Vi(r.consequent)||Vi(r.alternate)))return!0}return!1},qie=(e,t,n)=>{if(D(e,`ReturnStatement`)&&e.argument&&Bi(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(D(a,`IfStatement`)){if(Bi(a.test,n))return!0;r=!0}if(D(a,`TryStatement`)&&a.handler&&i===a.block&&xi(a.block)&&!r||D(a,`SwitchStatement`)&&Bi(a.discriminant,n)||D(a,`BlockStatement`)&&Kie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Jie=(e,t)=>{let n=Uie(e);zi(e,n);let r=!1;return T(e,i=>{if(r||i!==e&&C(i))return!1;if((D(i,`ReturnStatement`)||D(i,`BreakStatement`)&&Wie(i,e,t))&&qie(i,e,n))return r=!0,!1}),r},Yie=new Set([...Bie,`pop`,`shift`]),Xie=e=>{let t=new Set;return T(e,n=>{if(n!==e&&C(n))return!1;if(D(n,`AssignmentExpression`)&&n.left){Ri(n.left,t);let e=xie(n.left);e&&t.add(e);return}if(!D(n,`CallExpression`))return;let r=n.callee;if(D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&Yie.has(r.property.name)){let e=xie(r.object);e&&t.add(e)}}),t},Zie=(e,t)=>{if(!e)return!1;let n=new Set;if(bi(e,n),n.size===0)return!1;let r=Xie(t),i=Uie(t);zi(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Qie=e=>{let t=e.parent;return D(t,`LabeledStatement`)&&D(t.label,`Identifier`)?t.label.name:null},$ie=(e,t)=>{let n=!1;return T(e,e=>{if(n||ki(e)||D(e,`FunctionDeclaration`))return!1;if(D(e,`AwaitExpression`)&&zie(e,t))return n=!0,!1}),n},eae=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),tae=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),nae=e=>{let t=e;for(;;){t=S(t);let e=t.parent;if(!e)return t;if(D(e,`SpreadElement`)||D(e,`ArrayExpression`)){t=e;continue}if(D(e,`LogicalExpression`)){t=e;continue}if(D(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(D(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(D(n,`CallExpression`)&&n.callee===e&&!e.computed&&D(e.property,`Identifier`)&&tae.has(e.property.name)){t=n;continue}}return t}},Hi=e=>{let t=e;for(;t.parent&&!C(t);)t=t.parent;return t},rae=(e,t)=>{let n=!1;return T(t,t=>{if(n)return!1;if(!Pi(t))return;let r=new Set;for(let e of t.arguments??[])bi(e,r);if(r.has(e))return n=!0,!1}),n},iae=e=>{let t=nae(e),n=t.parent;if(D(n,`CallExpression`)&&Pi(n)&&(n.arguments??[]).some(e=>e===t))return!0;let r=null;return D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`)?r=n.id.name:D(n,`AssignmentExpression`)&&n.right===t&&D(n.left,`Identifier`)&&(r=n.left.name),!r||!n?!1:rae(r,Hi(n))},aae=e=>{let t=Hi(e);if(!C(t))return!1;let n=null;return D(t,`FunctionDeclaration`)&&D(t.id,`Identifier`)?n=t.id.name:D(t.parent,`VariableDeclarator`)&&D(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:rae(n,Hi(t.parent))},oae=y({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:"Collect the items, then use `await Promise.all(items.map(...))` so independent work runs at the same time",create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!Mi(i,!0)||$ie(i,e)||(D(n,`WhileStatement`)||D(n,`DoWhileStatement`))&&Zie(n.test,i)||Vie(i)||Jie(i,Qie(n))||aae(n))return;let a=Mi(i,!0,t=>Rie(t,n,e));a&&e.report({node:a,message:`This makes the ${r} slow because each await runs one after another, so collect the independent calls & run them together with \`await Promise.all(items.map(...))\``})};return{ImportDeclaration(e){Sr(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||!D(n.callee,`MemberExpression`)||!D(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!eae.has(r))return;let i=n.arguments?.[0];if(!i||!ki(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&iae(n))return;let o=Mi(a);if(o){let t=r===`forEach`?"Async callback in .forEach silently drops every await, so the work never finishes before the loop moves on. Use a `for…of` loop, or `await Promise.all(items.map(async (item) => {...}))`":`Async callback in .${r} runs the awaits one after another, so it is slow. Use \`await Promise.all(items.map(async (item) => {...}))\` to run them at the same time`;e.report({node:o,message:t})}}}}}),Ui=(e,t)=>{if(e){if(D(e,`AssignmentPattern`)){bi(e.right,t),Ui(e.left,t);return}if(D(e,`RestElement`)){Ui(e.argument,t);return}if(D(e,`ArrayPattern`)){for(let n of e.elements??[])Ui(n,t);return}if(D(e,`ObjectPattern`))for(let n of e.properties??[])D(n,`RestElement`)?Ui(n.argument,t):D(n,`Property`)&&(n.computed&&bi(n.key,t),Ui(n.value,t))}},sae=e=>D(e,`ExpressionStatement`)?D(e.expression,`AwaitExpression`):!1,cae=e=>D(e,`ReturnStatement`)||D(e,`ThrowStatement`)||D(e,`ContinueStatement`)||D(e,`BreakStatement`),lae=e=>{if(!D(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(cae(t))return!0;if(!D(t,`BlockStatement`))return!1;for(let e of t.body??[])if(cae(e))return!0;return!1},Wi=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},uae=(e,t)=>{D(e,`VariableDeclarator`)&&(bi(e.init,t),Ui(e.id,t))},dae=(e,t)=>{if(!D(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(!D(r,`VariableDeclarator`))continue;if(xi(r.init)||xi(r.id)){n=!0;let e=t.size;_i(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(uae(r,e),!Wi(e,t))continue;let a=t.size;_i(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},fae=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(`.`)),pae=e=>{let t=!1;return T(e,e=>{if(t)return!1;if(!D(e,`MemberExpression`)||e.computed||!D(e.property,`Identifier`)||e.property.name!==`current`||!D(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},mae=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],hae=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of mae)if(t.includes(e))return!0;return!1},gae=e=>{let t=new Set;return T(e,e=>{(D(e,`Identifier`)||D(e,`PrivateIdentifier`))&&t.add(e.name)}),t},_ae=e=>{if(!e)return!1;let t=new Set;bi(e,t);for(let e of t)if(fae.has(e))return!0;for(let t of gae(e))if(fae.has(t)||hae(t))return!0;return pae(e)},vae=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t)return!1;if(D(e,`CallExpression`))return D(e.callee,`ArrowFunctionExpression`)||D(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(D(e,`ThisExpression`)||D(e,`PrivateIdentifier`))return t=!0,!1}),t},yae=e=>{if(!e)return!1;let t=N(e);if(!D(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=N(e);return D(t,`Literal`)||D(t,`TemplateLiteral`)||D(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},bae=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&fn(i.scope,n))},xae=(e,t,n)=>{let r=N(e);if(D(r,`MemberExpression`))return!0;if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!fn(i.scope,n))},Sae=(e,t,n)=>{let r=N(e);return!yae(r)||!D(r,`BinaryExpression`)?!1:bae(r.left,t,n)&&xae(r.right,t,n)||bae(r.right,t,n)&&xae(r.left,t,n)},Cae=(e,t,n)=>{if(!n||!e)return!1;let r=N(e);if(!D(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=N(e);if(D(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Sae(r,t,n))return!1}return!0},wae=e=>{if(!e)return!1;let t=!1;return T(e,e=>{if(t||C(e)||D(e,`ThrowStatement`))return!1;if(D(e,`CallExpression`)||D(e,`NewExpression`)||D(e,`AssignmentExpression`)||D(e,`UpdateExpression`))return t=!0,!1}),t},Tae=(e,t)=>{if(!e)return!1;let n=new Set;if(bi(e,n),n.size===0)return!1;let r=b(t);if(!r||!C(r)||!r.body)return!1;let i=!1;return T(r.body,e=>{if(i)return!1;let t=null;if(D(e,`AssignmentExpression`)?t=e.left:D(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;_i(t,r),D(t,`Identifier`)&&r.add(t.name);for(let e of r)if(n.has(e))return i=!0,!1}),i},Eae=(e,t)=>{let n=e[t],r=new Set,i=!1,a=!1;if(D(n,`VariableDeclaration`)?dae(n,r).didIntroduceAwait&&(i=!0):sae(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(sae(t)){a=!0,o++;continue}if(!D(t,`VariableDeclaration`))break;let n=dae(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},Gi=y({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=Eae(t,n);if(!r||r.guardCandidateIndex>=t.length)continue;let i=t[r.guardCandidateIndex];if(!lae(i)||!D(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(bi(i.test,a),Wi(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=b(i),s=o?e.scopes.ownScopeFor(o):null;if(_ae(i.test)||vae(i.test)||yae(i.test)||Cae(i.test,e.scopes,s)||Tae(i.test,i)||wae(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(bi(i.consequent,c),Wi(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&&T(e,e=>{if(C(e))return!1;D(e,`BlockStatement`)?t(e.body??[]):D(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{C(e)&&e.async&&D(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),Ki=(e,t,n)=>{let r=new Set;for(let e of t)T(e,e=>{if(!D(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return T(e,e=>{if(i||!D(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},qi=e=>{let t=e;for(;D(t,`ChainExpression`);)t=t.expression;if(!D(t,`CallExpression`)&&!D(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(D(r,`ChainExpression`)){r=r.expression;continue}if(D(r,`MemberExpression`)){D(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(D(r,`CallExpression`)){r=r.callee;continue}D(r,`Identifier`)&&n.push(r.name);break}return n},Ji=e=>{if(D(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&D(t.init,`AwaitExpression`))return t.init.argument??null}return D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Dae=e=>Jne.has(e)?!0:Yne.some(t=>e.startsWith(t)),Oae=e=>e?qi(e).some(Dae):!1,kae=e=>e?qi(e).some(e=>xr.has(e)):!1,Aae=e=>D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`),jae=e=>{let t=N(e);return D(t,`CallExpression`)?t.arguments.every(e=>{if(D(e,`SpreadElement`))return!1;let t=N(e);return D(t,`Identifier`)||D(t,`Literal`)}):!1},Mae=e=>{let t=Ji(e);if(!t)return!1;let n=N(t);return!D(n,`CallExpression`)&&!D(n,`NewExpression`)&&!D(n,`ImportExpression`)},Nae=(e,t)=>{let n=null;for(let r of e){if(Mae(r))return!0;let e=Ji(r);if(e&&Dn(e,t.scopes))return!0;let i=e?Oi(e,t.scopes):null;if(Aae(r)){if(i===null||!e||!jae(e)||n!==null&&n!==i)return!0;n=i}if(Oae(e)||kae(e)&&i===null)return!0}return!1},Pae=e=>{let t=e.parent;for(;t;){if(C(t)){let e=t.parent;if(e&&D(e,`CallExpression`)){let t=e.callee;if(D(t,`MemberExpression`)&&D(t.property,`Identifier`)&&t.property.name===`transaction`||D(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},Fae=(e,t)=>{let n=[];for(let r of e){let e=Ji(r);if(e){if(Ki(e,n,t.scopes))return;D(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`})},Iae=y({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=kt(e.filename??``),n=Gne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Sr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Pae(t))return;let n=[],r=()=>{n.length>=3&&(Nae(n,e)||Fae(n,e)),n.length=0};for(let e of t.body??[])D(e,`VariableDeclaration`)&&e.declarations?.length===1&&D(e.declarations[0].init,`AwaitExpression`)||D(e,`ExpressionStatement`)&&D(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),Yi=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`||D(t,`UnaryExpression`)&&t.operator===`void`},Xi=e=>{let t=e[0];return t&&D(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Zi="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.",Qi=new Set([`localStorage`,`sessionStorage`]),Lae=new Set([`window`,`globalThis`,`self`]),Rae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,zae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,Bae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,$i=e=>!(!Rae.test(e)||zae.test(e)&&!Bae.test(e)),Vae=e=>D(e,`Identifier`)?Qi.has(e.name):D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&Lae.has(e.object.name)&&D(e.property,`Identifier`)?Qi.has(e.property.name):!1,ea=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=A(e,e.name);if(!n?.initializer)return null;if(D(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!D(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!D(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=N(n.initializer);return D(a,`Identifier`)?ea(a,t)??a:a},ta=(e,t)=>{let n=N(e);if(na(n,new Set(t)))return!0;if(D(n,`ConditionalExpression`)){let e=N(n.consequent),r=N(n.alternate);return(Yi(e)||ta(e,t))&&(Yi(r)||ta(r,t))&&(!Yi(e)||!Yi(r))}if(D(n,`LogicalExpression`)){if(n.operator===`&&`)return ta(n.right,t);let e=N(n.left),r=N(n.right),i=ta(e,t),a=ta(r,t);return(i||Yi(e))&&(a||Yi(r))&&(i||a)}return!1},na=(e,t=new Set)=>{let n=N(e);if(t.has(n))return!1;if(t.add(n),Vae(n))return!0;if(D(n,`Identifier`)){let e=ea(n);return e?na(e,new Set(t)):!1}if(!D(n,`CallExpression`))return!1;let r=N(n.callee);if(!D(r,`Identifier`))return!1;let i=ea(r);if(!C(i))return!1;if(D(i,`ArrowFunctionExpression`)&&!D(i.body,`BlockStatement`))return ta(i.body,t);let a=!1;for(let e of Xe(i)){if(!e.argument)continue;let n=N(e.argument);if(!Yi(n)){if(!ta(n,t))return!1;a=!0}}return a},ra=e=>{if(D(e,`Literal`)&&typeof e.value==`string`)return e.value;if(D(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(D(e,`Identifier`)&&e.name!==`undefined`){let t=A(e,e.name);return!t?.initializer||D(t.initializer,`Identifier`)?null:ra(t.initializer)}return null},Hae=e=>!e.computed&&D(e.property,`Identifier`)?e.property.name:e.computed&&D(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,ia=(e,t,n,r,i=new Set)=>{let a=N(e);if(i.has(a))return null;if(i.add(a),D(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=ea(a);return s?ia(s,t,n,r,i):null}if(r&&D(a,`CallExpression`)&&D(a.callee,`MemberExpression`)&&!a.callee.computed&&D(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&D(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?ia(e,t,n,!0,i):null}return null},aa=new WeakMap,Uae=(e,t)=>{let n=aa.get(e);if(n)return n;if(!D(e,`FunctionDeclaration`)&&!D(e,`FunctionExpression`)&&!D(e,`ArrowFunctionExpression`))return aa.set(e,[]),[];let r=Xi(e.params).map(e=>{let n=N(e),r=D(n,`Identifier`)?n:D(n,`AssignmentPattern`)&&D(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return T(e.body,n=>{if(n!==e.body&&C(n))return!1;if(!D(n,`CallExpression`))return;let a=N(n.callee);if(!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`)||a.property.name!==`setItem`||!na(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=ia(o,r,t,!1),l=ia(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),aa.set(e,i),i},Wae=y({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:ht(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=ra(e);return t!==null&&$i(t)})&&e.report({node:t,message:Zi})},i=(t,n)=>{let i=ea(n),a=i?Uae(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&&D(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=N(e.callee);if(D(t,`MemberExpression`)&&!t.computed&&D(t.property,`Identifier`)&&t.property.name===`setItem`&&na(N(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else D(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=N(e.callee);D(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!D(n,`MemberExpression`))return;let r=Hae(n);!r||!$i(r)||na(n.object)&&e.report({node:n,message:Zi})}}})}),Gae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,Kae=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(`.`)),qae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Jae=new Set([`shipping`,`billing`]),Yae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),Xae=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&&Jae.has(t[n])&&(n+=1);let r=n<t.length&&Yae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?qae.has(i):Kae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Zae=new Set([`input`,`textarea`,`select`,`form`]),Qae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},oa=y({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:ht(e=>{let t=Qae(e.settings);return{JSXOpeningElement:n=>{let r=tr(n,e.settings);if(!Zae.has(r)&&!t.inputComponents.has(r))return;let i=P(n.attributes,`autoComplete`);if(!i)return;let a=Zn(i);a&&(Xae(a)||e.report({node:i,message:Gae(a)}))}}})}),B=(e,t)=>e?.find(e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&e.name.name===t),sa=e=>or(e)?.split(`.`).at(-1)??null,$ae=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!D(t,`ImportDeclaration`)||$t(t)||D(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},ca=e=>{let t=$ae(e);if(!t||!D(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},la=(e,t,n,r)=>{if(!D(e,`JSXMemberExpression`))return null;if(D(e.object,`JSXIdentifier`)){let i=k(e.object,r.scopes);if(!i)return null;let a=ca(i);return a===null||!t.test(a)?null:bt(i.declarationNode)===n?e.property.name:null}if(!D(e.object,`JSXMemberExpression`)||!D(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=k(e.object.object,r.scopes);if(!i||!D(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=ca(i);return a!==null&&t.test(a)?e.property.name:null},ua=(e,t)=>{let n=N(e);if(D(n,`JSXElement`)){da(n,t);return}if(D(n,`JSXFragment`)){fa(n.children,t);return}if(D(n,`ConditionalExpression`)){ua(n.consequent,t),ua(n.alternate,t);return}if(D(n,`LogicalExpression`)){n.operator!==`&&`&&ua(n.left,t),ua(n.right,t);return}if(D(n,`ArrayExpression`)){for(let e of n.elements)e&&(D(e,`SpreadElement`)?t.onOpaqueExpression?.(e):ua(e,t));return}if(D(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(D(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}D(n,`JSXEmptyExpression`)||D(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},da=(e,t)=>{t.onElement(e)!==!1&&fa(e.children,t)},fa=(e,t)=>{for(let n of e)D(n,`JSXElement`)?da(n,t):D(n,`JSXFragment`)?fa(n.children,t):D(n,`JSXExpressionContainer`)?ua(n.expression,t):D(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},pa=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{T(e,e=>{D(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return fa(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=B(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},eoe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],ma=[`aria-label`,`aria-labelledby`,`title`],toe=e=>{if(!e.value||!D(e.value,`JSXExpressionContainer`))return!0;let t=N(e.value.expression);if(!D(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return F(n)||ma.some(e=>P(n,e))},noe=(e,t,n)=>{if(la(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=sa(e);return r===`Title`||r===`${t.namespaceName}Title`},ha=y({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 eoe){if(la(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(F(t.attributes))return;let r=B(t.attributes,`render`);if(r&&toe(r)||ma.some(e=>P(t.attributes,e)))return;let i=t.parent;if(!i||!D(i,`JSXElement`)||i.children.length===0)return;let a=pa(i.children,{isPartElementName:t=>noe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(la(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=sa(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}}})}),roe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,ga=[`aria-label`,`aria-labelledby`],_a=(e,t)=>la(e,roe,`Field`,t),va=(e,t)=>{if(_a(e,t)===`Label`)return!0;let n=sa(e);return n===`label`||n===`Label`||n===`FieldLabel`},ioe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(D(r,`JSXElement`)&&_a(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},aoe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return fa(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(va(a,t))return n.hasLabel=!0,!1;let o=_a(a,t);if((o===`Control`||ioe(i,e,t))&&ga.some(e=>P(i.attributes,e)))return n.hasLabel=!0,!1;F(i.attributes)&&(n.sawUnprovableContent=!0);let s=B(i.attributes,`render`);if(s?.value&&T(s.value,e=>{D(e,`JSXOpeningElement`)&&ga.some(t=>P(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=sa(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,T(e,e=>{D(e,`JSXOpeningElement`)&&va(e.name,t)&&(n.hasLabel=!0)})}}),n},ya=y({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(_a(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!D(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.`})}})}),ba=(e,t)=>{let n=e.parent?.parent;for(;n;){if(D(n,`JSXAttribute`))return`unprovable`;if(D(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=sa(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},ooe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,xa=(e,t)=>la(e,ooe,`Tabs`,t),soe=y({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){xa(t.name,e)===`Tab`&&ba(t,t=>{let n=xa(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.`})}})}),coe=e=>{let t=e;for(;t;){if(D(t,`MemberExpression`)){if(D(t.property,`Identifier`)&&t.property.name===`document`||D(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(D(t,`Identifier`)&&t.name===`document`)}return!1},Sa=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`Identifier`)?t.name===`createElement`:D(t,`MemberExpression`)&&(t.computed?D(t.property,`Literal`)&&t.property.value===`createElement`:D(t.property,`Identifier`)&&t.property.name===`createElement`)?!coe(t.object):!1},Ca="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",loe=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}},wa=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Ta=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return wa(r.value,t);if(D(r,`TemplateLiteral`)){let e=Fe(r);if(e!==null)return wa(e,t)}if(D(r,`ConditionalExpression`))return Ta(r.consequent,t,n)&&Ta(r.alternate,t,n);if(D(r,`Identifier`)){if(n.has(r.name))return!1;let e=A(r,r.name);return!e?.initializer||!Ea(e)?!1:Ta(e.initializer,t,new Set(n).add(r.name))}return!1},Ea=e=>{let t=e.bindingIdentifier.parent;if(!t||!D(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&D(n,`VariableDeclaration`)&&n.kind===`const`)},uoe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),doe=e=>{let t=e;for(;t.parent&&uoe.has(t.parent.type);)t=t.parent;return t},Da=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=doe(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(D(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!D(e,`Identifier`))return!1;let n=A(e,e.name);return n?Da(n.bindingIdentifier,t):!1}return!1},foe=e=>{let t=A(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!D(n,`Property`)||n.computed||n.value!==t||!Da(n)?!1:D(n.key,`Identifier`)?n.key.name===`type`:D(n.key,`Literal`)?n.key.value===`type`:!1},poe=/Type$/,moe=(e,t)=>{if(!poe.test(e.name))return!1;let n=A(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!D(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!D(i,`Property`)||i.computed||i.value!==r||!Da(i)?!1:Ta(r.right,t)},Oa=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Identifier`)){if(r.name===`type`||foe(r)||moe(r,t))return!0;if(n.has(r.name))return!1;let e=A(r,r.name);if(!e?.initializer||!Ea(e))return!1;let i=N(e.initializer);return!D(i,`ConditionalExpression`)&&!D(i,`LogicalExpression`)?!1:Oa(i,t,new Set(n).add(r.name))}if(D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(D(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Oa(r.left,t,n);if(D(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Oa(e,t,n))&&e.every(e=>Oa(e,t,n)||Ta(e,t))}return!1},hoe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],goe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},ka=e=>{for(let t of hoe){let n=st(e,e.name,t);if(n!==null)return n}return null},Aa=e=>e.computed?null:D(e.key,`Identifier`)?e.key.name:D(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,_oe=e=>{if(D(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(D(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(!(D(t,`FunctionDeclaration`)||D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},voe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!D(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=Aa(n);if(!r)return!1;let i=n.parent;if(!i||!D(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!D(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!D(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=N(a.init);if(!D(s,`CallExpression`))return!1;let c=N(s.callee);if(!D(c,`Identifier`))return!1;let l=ka(c);if(l!==null)return goe[l]===r;let u=A(c,c.name)?.initializer;if(!u||!D(u,`FunctionDeclaration`)&&!D(u,`FunctionExpression`)&&!D(u,`ArrowFunctionExpression`))return!1;let d=_oe(u);return!d||d.length===0?!1:d.every(e=>{let n=N(e);if(!D(n,`ObjectExpression`))return!1;for(let e of n.properties){if(D(e,`SpreadElement`)||!D(e,`Property`))return!1;if(Aa(e)===r)return ja(e.value,t)}return!0})},ja=(e,t=new Set)=>{let n=N(e);if(D(n,`ObjectExpression`))return n.properties.every(e=>{if(D(e,`SpreadElement`))return ja(e.argument,t);if(!D(e,`Property`))return!1;let n=Aa(e);return n!==null&&n!==`type`});if(D(n,`CallExpression`)){let e=N(n.callee);return!D(e,`Identifier`)||ka(e)!==`mergeProps`?!1:n.arguments.every(e=>!D(e,`SpreadElement`)&&ja(e,t))}if(D(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=A(n,n.name);return r?r.initializer&&Ea(r)?ja(r.initializer,e):voe(r,e):!1}return!1},Ma=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},yoe=e=>{let t=L(e.attributes,`form`,!1);return!!(t&&I(t)?.trim())},boe=e=>!!rr(e?lt(e,`form`):void 0)?.trim(),xoe=e=>{if(!D(e,`CallExpression`)||!Sa(e))return!1;let t=e.arguments[0];return!!(t&&D(t,`Literal`)&&t.value===`form`)},Na=e=>{let t=e.parent;for(;t;){if(D(t,`JSXElement`)&&E(t.openingElement)===`form`||xoe(t))return!0;t=t.parent}return!1},Pa=y({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=loe(e.settings),n=Mr(e.settings),r=Je(e.filename);return{JSXOpeningElement(i){if(n&&r||E(i)!==`button`)return;let a=P(i.attributes,`type`);if(!a){if(n&&!yoe(i)&&!Na(i)||F(i.attributes)&&!i.attributes.every(e=>!D(e,`JSXSpreadAttribute`)||ja(e.argument)))return;e.report({node:i.name,message:Ca});return}let o=a.value;if(!o){Ma(e,a);return}if(D(o,`Literal`)){Ta(o,t)||Ma(e,a);return}if(D(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Oa(n,t))return;Ta(n,t)||Ma(e,a)}},CallExpression(i){if(n&&r||!Sa(i))return;let a=i.arguments[0];if(!a||!D(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=boe(o)||Na(i);if(!o||Yi(o)){if(n&&!s)return;e.report({node:i,message:Ca});return}if(!D(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(D(e,`SpreadElement`)){l=!0;continue}if(!D(e,`Property`))continue;let t=e.key;if(D(t,`Identifier`)&&t.name===`type`||D(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!D(e,`SpreadElement`)||ja(e.argument)))return;e.report({node:o,message:Ca});return}Oa(c,t)||Ta(c,t)||Ma(e,c)}}}}),Soe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},Fa=e=>D(e,`Identifier`)||D(e,`MemberExpression`)&&!e.computed,Ia=e=>!e.value||!D(e.value,`JSXExpressionContainer`)?!1:Fa(e.value.expression),Coe=e=>{if(!e.value)return!0;if(D(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return D(t,`Literal`)&&t.value===!0}return!1},woe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(D(c,`JSXSpreadAttribute`)){o=!0;continue}if(!D(c,`JSXAttribute`))continue;let e=Pt(c.name);e===`checked`?(t=c,n=Ia(c)):e===`defaultChecked`&&!r?(r=c,i=Ia(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&Coe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Toe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(D(c,`SpreadElement`)){o=!0;continue}if(!D(c,`Property`))continue;let e=c.key,l=null;if(D(e,`Identifier`)?l=e.name:D(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=Fa(c.value);else if(l===`defaultChecked`&&!r)r=c,i=Fa(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;D(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},La=y({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=Soe(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){E(e)===`input`&&n(woe(e.attributes))},CallExpression(e){if(!Sa(e))return;let t=e.arguments[0];if(!t||!D(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!D(r,`ObjectExpression`)||n(Toe(r))}}}}),Ra=y({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.`}),za=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(C(a)||((D(a,`ConditionalExpression`)||D(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&&!C(s);){if(D(s,`ConditionalExpression`)||D(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},Ba=(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(D(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=rn(en(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(D(n,`LogicalExpression`)&&n.right===t){let e=rn(en(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(D(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},Va=(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=p(r),c=new Set([...Ba(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=p(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},Ha=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...Ba(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},Ua=`Component`,Wa=`PureComponent`,Eoe=e=>!D(e,`MemberExpression`)||!D(e.object,`Identifier`)||e.object.name!==`React`||!D(e.property,`Identifier`)?!1:e.property.name===Ua||e.property.name===Wa,Ga=e=>{if(!D(e,`ClassDeclaration`)&&!D(e,`ClassExpression`))return!1;let t=e.superClass;return t?Eoe(t)?!0:D(t,`Identifier`)?t.name===Ua||t.name===Wa:!1:!1},Doe=e=>{let t=e,n=e.parent;for(;n;){if(D(n,`IfStatement`)&&D(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||D(n,`ConditionalExpression`)&&D(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(D(n,`WhileStatement`)||D(n,`ForStatement`))&&n.body===t&&n.test&&D(n.test,`Literal`)&&!n.test.value||D(n,`LogicalExpression`)&&n.right===t&&D(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},V=(e,t)=>{if(Doe(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},Ooe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),koe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),Ka=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=N(n.object);return D(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&O(n)===`now`},qa=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Literal`))return typeof r.value==`number`;if(D(r,`CallExpression`))return Ka(r,t);if(D(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),qa(e.initializer,t,n))}return D(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&qa(r.argument,t,n):!D(r,`BinaryExpression`)||!koe.has(r.operator)?!1:qa(r.left,t,new Set(n))&&qa(r.right,t,new Set(n))},Ja=(e,t)=>{if(Ka(e,t))return!0;let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=N(n.object);if(!D(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=O(n);if(r.name===`console`)return Ooe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&qa(a,t))},Ya=({node:e,scopes:t})=>{let n=N(e);if(D(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(D(n,`ThisExpression`))return`this`;if(!D(n,`MemberExpression`))return null;let r=Ya({node:n.object,scopes:t}),i=O(n);return r&&i?`${r}.${i}`:null},Aoe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),joe=e=>{if(D(e,`FunctionDeclaration`))return e.id&&D(e.id,`Identifier`)?e.id:null;let t=S(e),n=t.parent;if(!n||!D(n,`VariableDeclarator`)||n.init!==t||!D(n.id,`Identifier`))return null;let r=n.parent;return!r||!D(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},Xa=(e,t,n,r)=>{let i=new Set,a=(e,o)=>{if(i.has(e))return;i.add(e);let s=new Map(o),c=new Map;T(e,t=>{if(t!==e&&C(t)){let e=joe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=D(t,`VariableDeclarator`)&&t.init?N(t.init):null;if(D(t,`VariableDeclarator`)&&D(t.id,`Identifier`)&&D(n,`Identifier`)&&t.parent&&D(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=A(n,n.name)?.bindingIdentifier;e&&c.set(t.id,e)}});for(let[e,t]of c){let n=t,r=new Set([e]);for(;c.has(n)&&!r.has(n);)r.add(n),n=c.get(n)??n;let i=s.get(n);i&&s.set(e,i)}let l=(e,i=!1)=>{if(!i&&C(e)||(t(e),Sn(e,e=>l(e)),!D(e,`CallExpression`)))return;let o=N(e.callee);if(C(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(D(o,`Identifier`)){let e=A(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!D(o,`MemberExpression`)||!Aoe.has(O(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=N(t);if(C(i))i.body&&(!r||r(i))&&a(i.body,s);else if(D(i,`Identifier`)){let e=A(i,i.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s)}}};l(e,!0),i.delete(e)};a(e,new Map)},Za=(e,t)=>{if(!C(e))return;let n=e.body;n&&T(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Qa=(e,t,n,r=e,i=new Set)=>{let a=N(e);if(D(a,`ObjectExpression`))return a;if(!D(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||kn(o,r,n)||t.some(e=>ze(a,e,r,n))?null:(i.add(o.id),Qa(o.initializer,t,n,r,i))},$a=new Set([`window`,`globalThis`,`global`,`self`]),Moe=new Set([`body`,`documentElement`,`visualViewport`]),Noe=new Set([`initPlaces`,`places`]),eo=new Set([`forceUpdate`,`setState`]),to=`mobx-react`,no=`disposeOnUnmount`,Poe=[`handler`],ro=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`]}]]),Foe=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`]}]]),io=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Ioe=new Map([[`addListener`,[`removeListener`,`off`]],[`on`,[`off`,`removeListener`]],[`once`,[`off`,`removeListener`]],[`prependListener`,[`off`,`removeListener`]],[`prependOnceListener`,[`off`,`removeListener`]]]),ao=new Set([`AccessibilityInfo`,`AppState`,`Appearance`,`BackHandler`,`Dimensions`,`Keyboard`,`Linking`,`NetInfo`]),oo=(e,t)=>{let n=b(e);if(!n)return!1;let r=[];if(Za(n,t=>{D(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},so=e=>{if(!D(e,`CallExpression`))return null;let t=N(e.callee);return D(t,`Identifier`)?t.name:null},co=(e,t)=>{let n=so(e),r=D(e,`CallExpression`)?N(e.callee):null;return!!(n&&D(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&st(e,n,`mobx`)===`runInAction`)},lo=(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(D(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?N(i.init):null;return D(e,`Property`)&&D(n,`ObjectPattern`)&&D(a,`Identifier`)&&$a.has(a.name)&&t.isGlobalReference(a)?w(e,{allowComputedString:!0}):null}let a=r.initializer?N(r.initializer):null;if(D(a,`Identifier`))return lo(a,t,n);if(!D(a,`MemberExpression`))return null;let o=N(a.object);return D(o,`Identifier`)&&$a.has(o.name)&&t.isGlobalReference(o)?O(a):null},uo=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=N(e.callee);if(so(e)&&D(n,`Identifier`))return lo(n,t);if(!D(n,`MemberExpression`))return null;let r=N(n.object);return!D(r,`Identifier`)||!$a.has(r.name)||A(r,r.name)?null:O(n)},fo=e=>D(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:w(e,{allowComputedString:!0}),po=new WeakMap,mo=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},ho=e=>{let t=po.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(D(e,`ClassBody`)){for(let t of e.body){let e=fo(t);e&&(D(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(D(t,`MethodDefinition`)||D(t,`PropertyDefinition`))&&t.value&&C(t.value)&&r.set(e,t.value))}T(e,t=>{let n=D(t,`AssignmentExpression`)?N(t.left):D(t,`UpdateExpression`)?N(t.argument):null;if(!D(n,`MemberExpression`)||!D(N(n.object),`ThisExpression`))return;let r=O(n);if(!r)return;let a=mo(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?fo(a):null,isAssignment:D(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return po.set(e,a),a},go=(e,t,n)=>{if(!e||!D(e,`ClassBody`))return null;let r=ho(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},_o=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),Xa(e,e=>{let i=n(e);if(i===!1||!D(e,`CallExpression`))return i;let a=N(e.callee);if(!D(a,`MemberExpression`)||!D(N(a.object),`ThisExpression`))return;let o=O(a),s=o?go(t,o,e):null;s&&_o(s,t,n,r)}))},Loe=(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),Xa(e,e=>{if(n.cfg&&!V(e,n))return!1;if(o&&r.add(e),!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||!D(N(i.object),`ThisExpression`))return;let s=O(i),c=s?go(t,s,e):null;c&&a(c,o||oo(e,n))}))};return a(e,!1),r},Roe=(e,t,n,r)=>{let i=b(e),a=b(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,l=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let u={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return T(n??t,t=>{if(!D(t,`CallExpression`))return;let i=N(t.callee);if((D(i,`Identifier`)?c(i,r.scopes):D(i,`MemberExpression`)&&D(N(i.object),`ThisExpression`)?go(n,O(i)??``,t):null)!==e)return;let a=b(t);if(!a)return;let o=l(a);o.canInvokeAfterSuspension&&(u.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(oo(t,r)?u.canInvokeAfterSuspension=!0:u.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,u),u};return l(i).canInvokeAfterSuspension},vo=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return Xa(e,e=>{if(i)return!1;if(co(e,n))return i=!0,!1;if(!D(e,`CallExpression`))return;let a=N(e.callee);if(!D(a,`MemberExpression`)||!D(N(a.object),`ThisExpression`))return;let o=O(a);if(o&&eo.has(o))return i=!0,!1;let s=o?go(t,o,e):null;if(s&&vo(s,t,n,r))return i=!0,!1}),i},yo=(e,t,n=new Set)=>{let r=N(e);if(n.has(r))return null;if(n.add(r),C(r))return r;if(D(r,`Identifier`)){let e=A(r,r.name)?.initializer;return e?yo(e,t,n):null}let i=D(r,`CallExpression`)?N(r.callee):null,a=(D(r,`CallExpression`)&&D(i,`MemberExpression`)&&O(i)===`bind`&&r.arguments?.[0]&&D(N(r.arguments[0]),`ThisExpression`)?N(i.object):null)??r,o=D(a,`MemberExpression`)&&D(N(a.object),`ThisExpression`)?O(a):null;return o?go(t,o,r):null},zoe=(e,t,n)=>{let r=yo(e,t);if(!C(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return Xa(i,e=>{if(a)return;if(co(e,n)){a=!0;return}if(!D(e,`CallExpression`))return;let r=N(e.callee);if(D(r,`MemberExpression`)&&D(N(r.object),`ThisExpression`)){let i=O(r);if(i&&eo.has(i)){a=!0;return}let o=i?go(t,i,e):null;if(o&&!vo(o,t,n))return;a=!0}}),a},Boe=(e,t,n)=>{let r=new Set,i=new Set;_o(e,t,e=>{if(D(e,`VariableDeclarator`)){let t=e.init?N(e.init):null,i=D(t,`CallExpression`)?N(t.callee):null;if(t&&(D(t,`NewExpression`)||D(t,`ObjectExpression`)||D(t,`ArrayExpression`)||D(t,`CallExpression`)&&D(i,`Identifier`)&&Noe.has(i.name))){let t=new Set;_i(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(D(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;_i(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(D(e,`AssignmentExpression`)&&D(e.left,`MemberExpression`)){let t=N(e.right),r=D(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(D(e,`CallExpression`))for(let t of e.arguments??[]){let e=N(t),a=D(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},Voe=e=>{let t=N(e);for(;D(t,`MemberExpression`);){let e=N(t.object);if(D(e,`ThisExpression`))return O(t);t=e}return null},bo=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!D(n,`ClassBody`))return!0;let r=ho(n);if(r.accessorNames.has(e))return!1;let i=mo(t,n),a=i?fo(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`)})},Hoe=(e,t)=>{if(!D(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(C(n))return n.parent?.parent===t;if(D(n,`IfStatement`)||D(n,`ConditionalExpression`)||D(n,`LogicalExpression`)||D(n,`SwitchStatement`)||D(n,`TryStatement`)||D(n,`CatchClause`)||D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return!1;n=n.parent}return!1},Uoe=(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(!D(r,`AssignmentExpression`)||r.right!==t||!D(r.left,`MemberExpression`)||!D(N(r.left.object),`ThisExpression`)||!Hoe(r,n))return[];let i=O(r.left);return i&&bo(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!D(a,`AssignmentExpression`))return null;let o=b(r.declarationNode);if(!o||b(a)!==o)return null;let s=Math.min(e.range[0],a.range[0]),c=Math.max(e.range[0],a.range[0]),l=!1;return Za(o,e=>{if(D(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},xo=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=Uoe(i,t,n);if(a)return xo(a,t,n,r);if(e.kind===`const`&&e.initializer&&D(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=N(e.initializer);return D(a,`Identifier`)||D(a,`MemberExpression`)?xo(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(D(i,`ThisExpression`))return`this`;if(!D(i,`MemberExpression`))return null;let a=Voe(i);if(!a){let e=N(i.object),n=O(i);return!D(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Moe.has(n)?null:`${e.name}.${n}`}if(a&&(!D(N(i.object),`ThisExpression`)||!bo(a,i,n)))return null;let o=xo(i.object,t,n,r),s=O(i);return o&&s?`${o}.${s}`:null},So=(e,t,n)=>{let r=N(e);return D(r,`Literal`)?JSON.stringify(r.value):xo(r,t,n)},Woe=(e,t,n)=>{let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(D(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=xo(r,t,n);return i?`reference:${i}`:null},Goe=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||kn(r,n,t)||ze(n,`capture`,n,t))return null;let i=Ya({node:n,scopes:t});return i?`options:${i}`:null},Koe=(e,t)=>{let n=N(e);return D(n,`Literal`)?!n.value:D(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Co=(e,t,n,r)=>{let i=N(e.callee);if(!D(i,`MemberExpression`))return null;let a=O(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Poe}: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=So(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||D(a,`SpreadElement`))return null;let o=i===`event`?Woe(a,n,r):So(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&&D(d,`SpreadElement`))return null;let f=`false`;if(d){let e=N(d);if(Koe(e,n))f=`false`;else if(D(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Qa(d,[`capture`],n),t=Goe(d,n);if(!e||e.properties.some(e=>!D(e,`Property`)||w(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`capture`);if(r&&D(r,`Property`)&&Koe(r.value,n))f=`false`;else if(r&&D(r,`Property`)&&D(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},qoe=(e,t,n,r)=>{let i=Co(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},Joe=(e,t,n)=>{let r=N(e.callee);if(!D(r,`MemberExpression`))return[];let i=xo(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||D(o,`SpreadElement`))return a;let s=Woe(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},Yoe=(e,t,n)=>{let r=e.arguments[2];if(!r||D(r,`SpreadElement`))return null;let i=Qa(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`signal`);if(!a||!D(a,`Property`))return null;let o=N(a.value);if(!D(o,`MemberExpression`)||O(o)!==`signal`)return null;let s=xo(o.object,t,n);return s?`abort:${s}`:null},Xoe=(e,t,n,r,i)=>{let a=Ioe.get(t)??[n.releaseMethodName],o=Co(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?Yoe(e,r,i):null;return c&&s.push(c),io.has(t)?[...s,...Joe(e,r,i)]:s},wo=(e,t,n)=>{let r=S(e),i=r.parent,a=D(i,`AssignmentExpression`)&&i.right===r?i.left:D(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?xo(a,t,n):null},Zoe=(e,t)=>{let n=N(e.callee);if(D(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&st(e,n.name,to)===no;if(!D(n,`MemberExpression`))return!1;let r=N(n.object);return O(n)===no&&D(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&we(e,r.name,to)},To=(e,t,n)=>{let r=N(e.callee);if(D(r,`MemberExpression`)){let i=O(r),a=i?Foe.get(i):void 0;if(a){let r=qoe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=Joe(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!D(N(r.object),`ThisExpression`)){let e=xo(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=xo(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=xo(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=uo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!D(a,`SpreadElement`)){let e=xo(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 Xa(e,e=>{if(a||e.range[0]>=r)return;if(D(e,`ThrowStatement`)||D(e,`NewExpression`))return a=!0,!1;if(!D(e,`CallExpression`)||To(e,n,t).length>0||Ja(e,n))return;let o=N(e.callee);if(D(o,`MemberExpression`)){if(D(N(o.object),`ThisExpression`)){let r=O(o),a=r?go(t,r,e):null;if(a&&!Eo(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=c(o,n);if(!(s&&!Eo(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Qoe=(e,t,n)=>{let r=new Map;return _o(e,t,e=>{if(!D(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!D(i,`SpreadElement`)?N(i):null;if(!Zoe(e,n.scopes)||!D(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||D(o,`SpreadElement`))return;let s=yo(o,t);if(!C(s))return;let c=new Map;_o(s,t,e=>{if(D(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(!Ha(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||!C(e)||r.has(e))return i;r.add(e);let a=null;Xa(e,t=>{D(t,`AwaitExpression`)&&b(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;_o(e,t,i=>{if(!D(i,`CallExpression`)||a!==null&&b(i)===e&&i.range[0]>a)return;let s=Eo(e,t,n.scopes,i.range[0]),l=N(i.callee);if(D(l,`Identifier`)){let e=Do(c(l,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(D(l,`MemberExpression`)&&D(N(l.object),`ThisExpression`)){let e=O(l),a=Do(e?go(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)Ha(e,r,n)&&i.add(t);return i},$oe=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!C(e)||r.has(e))return i;r.add(e);let o=null;Xa(e,t=>{D(t,`AwaitExpression`)&&b(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),Xa(e,s=>{if(!D(s,`CallExpression`)||o!==null&&b(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),Ha(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!Ha(e,[s],n))return;let l=N(s.callee),u=D(l,`MemberExpression`)&&D(N(l.object),`ThisExpression`)?O(l):null,d=$oe(u?go(t,u,s):D(l,`Identifier`)?c(l,n.scopes):null,t,n,new Set(r));for(let[e,t]of d)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!Ha(e,r,n))continue;let a=1;[...r.keys()].every(t=>Ha(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},ese=(e,t,n)=>{let r=new Map;return _o(e,t,e=>{if(D(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(C(n))return null;if(D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return n;n=n.parent}return null},tse=(e,t,n)=>{let r=n.scopes,i=new Map;_o(e,t,e=>{if(!D(e,`CallExpression`))return;if(n.cfg&&!V(e,n))return!1;let a=N(e.callee);if(!D(a,`MemberExpression`))return;let o=O(a),s=o?ro.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=>za(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=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||kn(e,i,n))return!1;let a=A(i,i.name)?.initializer;return a?(r.add(e.id),ko(a,t,n,r)):!1}if(D(i,`MemberExpression`)){let e=O(i),a=N(i.object);if(e!==`current`)return ko(a,t,n,r);if(!D(t,`ClassBody`)||!D(a,`MemberExpression`))return!1;let o=O(a),s=N(a.object);if(!o||!D(s,`ThisExpression`))return!1;let c=t.body?.find(e=>fo(e)===o);if(!c||!D(c,`PropertyDefinition`)||c.static||!D(c.value,`CallExpression`)||!j(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?rse(l):null,d=!1;return u&&Xa(u,e=>{if(d||e.range[0]>=i.range[0]||!D(e,`AssignmentExpression`))return;let t=N(e.left);D(t,`MemberExpression`)&&D(N(t.object),`ThisExpression`)&&O(t)===o&&(d=!0)}),!d}return!1},Ao=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||kn(e,i,n))return!1;let a=A(i,i.name)?.initializer;return a?(r.add(e.id),Ao(a,t,n,r)):!1}if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(!D(a,`MemberExpression`))return!1;let o=O(a),s=N(a.object);if((o===`select`||o===`selectAll`)&&D(s,`Identifier`)&&(we(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!D(e,`SpreadElement`)&&ko(e,t,n))}return Ao(a.object,t,n,r)},nse=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!D(e,`CallExpression`))return null;let c=N(e.callee),l=D(c,`MemberExpression`)?O(c):null;if(l&&ro.has(l)&&D(c,`MemberExpression`)){let u=ro.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=N(c.object),m=ko(p,i,s),h=Ao(p,i,s);for(;;){if(p=N(p),D(p,`CallExpression`)){p=N(p.callee);continue}if(D(p,`MemberExpression`)){p=N(p.object);continue}break}let g=D(p,`Identifier`)?s.symbolFor(p):null,_=g?t.has(g.id):!1,v=u?Co(e,u,s,i):null,ee=u?Xoe(e,l,u,s,i):[],te=ee.flatMap(e=>n.get(e)??[]),ne=ee.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),re=te.filter(t=>Va(e,[t],a)).length,ie=Oo(e),ae=!!(ie&&te.some(t=>Oo(t)===ie&&Va(e,[t],a))),oe=v?r.get(v)??1:1,se=!!(v&&(Va(e,ne,a)||Va(e,te,a)&&(l===`addEventListener`||ae||re>=oe)));if(!(!f&&!_&&!se&&!m&&!h))return null;let ce=wo(e,s,i),le=N(c.object),ue=D(le,`Identifier`)?st(e,le.name,`react-native`):null,de=D(le,`Identifier`)&&(ue!==null&&ao.has(ue)||s.isGlobalReference(le)&&ao.has(le.name)),fe=l===`subscribe`&&ce?[`returned:unsubscribe:${ce}`,`returned:call:${ce}`]:(l===`addEventListener`||l===`addListener`)&&de&&ce?[`returned:remove:${ce}`]:[];return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:io.has(l)?v:null,registrationCount:io.has(l)?oe:1,releaseKeys:u?[...Xoe(e,l,u,s,i),...fe]:fe}}let u=uo(e,s);if(u===`setInterval`){let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!zoe(e.arguments[0],i,s))return null;let t=wo(e,s,i);return{isAcquiredAfterSuspension:o||oo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},jo=e=>(D(e,`MethodDefinition`)||D(e,`PropertyDefinition`))&&C(e.value)?e.value:null,rse=e=>{let t=jo(e);return t&&C(t)?t.body??null:null},ise=y({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||!Ga(n))return;let r=t.body??[],i=r.find(e=>fo(e)===`componentWillUnmount`),a=Do(i?jo(i):null,t,e),o=$oe(i?jo(i):null,t,e);for(let n of r){let r=fo(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=rse(n);if(!i)continue;let s=Boe(i,t,e.scopes),c=ese(i,t,e.scopes),l=tse(i,t,e),u=Loe(i,t,e),d=[];if(_o(i,t,n=>{if(e.cfg&&!V(n,e))return!1;let r=nse(n,s,c,l,t,e,u.has(n)||Roe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Qoe(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 Va(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}}}})}),Mo=(e,t,n={})=>{if(!e||!t)return e===t;let r=N(e),i=N(t);if(r!==e||i!==t)return Mo(r,i,n);if(e.type!==t.type)return!1;if(D(e,`ThisExpression`))return!0;if(D(e,`Identifier`)&&D(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(D(e,`PrivateIdentifier`)&&D(t,`PrivateIdentifier`))return e.name===t.name;if(D(e,`Literal`)&&D(t,`Literal`))return e.value===t.value;if(D(e,`MemberExpression`)&&D(t,`MemberExpression`))return e.computed===t.computed?Mo(e.object,t.object,n)&&Mo(e.property,t.property,e.computed?n:{}):!1;if(D(e,`CallExpression`)&&D(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},ase=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),ose=/button|link|nav|anchor/i,sse=/(?:button|link|anchor)$/i,cse=/^[A-Z]/,lse=[`onClick`,`onPress`],use=e=>Yi(N(e)),No=(e,t)=>{let n=N(e);if(Yi(n))return!0;let r=k(n,t);return r?.kind!==`const`||!r.initializer?!1:Yi(N(r.initializer))},Po=(e,t,n=new Set)=>{let r=N(e);if(No(r,t))return null;if(D(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(D(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&D(e.declarationNode,`VariableDeclarator`)&&D(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),Po(e.initializer,t,n)):r}if(D(r,`ArrowFunctionExpression`)||D(r,`FunctionExpression`)||D(r,`FunctionDeclaration`)){let e=N(r.body);if(!D(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return D(t,`ExpressionStatement`)?t.expression:D(t,`ReturnStatement`)&&t.argument?N(t.argument):null}return r},dse=(e,t)=>!e.value||!D(e.value,`JSXExpressionContainer`)?null:Po(e.value.expression,t),Fo=(e,t)=>{let n=P(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(D(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!D(n.value,`JSXExpressionContainer`))return!0;let r=N(n.value.expression);return!D(r,`Literal`)||r.value!==!1},fse=(e,t)=>{let n=P(e.attributes,t);if(!n?.value)return!1;if(D(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!D(n.value,`JSXExpressionContainer`))return!0;let r=N(n.value.expression);return D(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!use(r)},Io=e=>{if(D(e,`JSXText`))return e.value.trim().length>0;if(D(e,`JSXElement`))return Lo(e);if(D(e,`JSXFragment`))return e.children.some(e=>Io(e));if(!D(e,`JSXExpressionContainer`))return!1;let t=N(e.expression);return D(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:use(t)?!1:D(t,`JSXElement`)?Lo(t):D(t,`JSXFragment`)?t.children.some(e=>Io(e)):!0},Lo=e=>fse(e.openingElement,`aria-label`)||fse(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>Io(e)),pse=e=>{let t=P(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=ri(t.value);return n!==null&&n<0},mse=(e,t)=>ar(e,t)||Fo(e,`hidden`),hse=(e,t)=>{let n=e.openingElement,r=or(n.name);if(!r)return!1;if(Kr.has(r)){if(!ase.has(r))return!1}else if(t){if(!cse.test(r)||!sse.test(r))return!1}else if(!cse.test(r)||!ose.test(r))return!1;return t?r===`a`&&!P(n.attributes,`href`)||Fo(n,`disabled`)||Fo(n,`isDisabled`)||Fo(n,`aria-disabled`)||pse(n)?!1:Lo(e):!0},gse=(e,t,n,r)=>{let i=e=>gse(e,t,n,r);if(D(e,`JSXElement`)){if(t&&mse(e.openingElement,r))return!1;if(hse(e,t!==null)){if(!t)return!0;for(let r of lse){let i=P(e.openingElement.attributes,r),a=i?dse(i,n):null;if(a&&Mo(t,a))return!0}}return e.children.some(e=>i(e))}return D(e,`JSXFragment`)?e.children.some(e=>i(e)):t?D(e,`JSXExpressionContainer`)?i(e.expression):D(e,`LogicalExpression`)?i(e.left)||i(e.right):D(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},Ro=(e,t,n,r)=>{if(!e||!D(e,`JSXElement`))return!1;let i=t?dse(t,n):null;return t&&!i?!1:e.children.some(e=>gse(e,i,n,r))},_se=new Set([`focus`,`select`]),vse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),yse=new Set([`getElementById`,`querySelector`]),bse=new Set([`global`,`globalThis`,`window`]),xse=e=>{if(!e)return null;let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return null;let n=N(t.callee);if(!D(n,`MemberExpression`))return null;let r=n.property;return D(r,`Identifier`)?r.name:null},Sse=(e,t)=>{let n=xse(e);return n!==null&&(_se.has(n)||t&&vse.has(n))},Cse=(e,t)=>{let n=N(e);return D(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!D(n,`MemberExpression`)||!D(n.object,`Identifier`)||!D(n.property,`Identifier`)||n.property.name!==`document`?!1:bse.has(n.object.name)&&t.isGlobalReference(n.object)},wse=e=>{let t=N(e);return D(t,`Identifier`)||D(t,`Literal`)?!0:D(t,`TemplateLiteral`)&&t.expressions.every(e=>wse(e))},Tse=(e,t)=>{if(!D(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!D(n.id,`Identifier`)||!n.init)return null;let r=N(n.init);if(!D(r,`CallExpression`)||r.arguments.length!==1||D(r.arguments[0],`SpreadElement`)||!wse(r.arguments[0]))return null;let i=N(r.callee);return!D(i,`MemberExpression`)||!D(i.property,`Identifier`)||!yse.has(i.property.name)||!Cse(i.object,t)?null:n.id.name},Ese=e=>D(e,`ReturnStatement`)?e.argument===null:!D(e,`BlockStatement`)||e.body.length!==1?!1:Ese(e.body[0]),Dse=e=>{if(!D(e,`IfStatement`)||e.alternate||!Ese(e.consequent))return!1;let t=N(e.test),n=D(t,`ChainExpression`)?t.expression:t;if(!D(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=N(n.callee),i=D(r,`MemberExpression`)?N(r.object):null;return D(r,`MemberExpression`)&&D(r.property,`Identifier`)&&r.property.name===`closest`&&D(i,`MemberExpression`)&&D(i.object,`Identifier`)&&D(i.property,`Identifier`)&&i.property.name===`target`&&D(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},Ose=(e,t)=>{if(!D(e,`ExpressionStatement`))return!1;let n=N(e.expression);if(!D(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=N(n.callee);if(!D(r,`MemberExpression`))return!1;let i=N(r.object);return D(i,`Identifier`)&&i.name===t&&D(r.property,`Identifier`)&&r.property.name===`focus`},kse=(e,t,n)=>{if(!e)return!1;if(Sse(e,n))return!0;if(!D(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!Dse(r[0]),a=r[i],o=a?Tse(a,t):null;return o?r.length===i+2&&Ose(r[i+1],o):i>0?!1:r.every(e=>D(e,`ExpressionStatement`)&&Sse(e.expression,n))},Ase=(e,t)=>Yi(e)&&(!D(e,`Identifier`)||t.isGlobalReference(e)),zo=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ConditionalExpression`)){let e=N(r.consequent),i=N(r.alternate),a=null;return Ase(e,t)&&(a=zo(i,t,n)),Ase(i,t)&&(a=zo(e,t,n)),a?{...a,isConditional:!0}:null}if(D(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 D(r,`ArrowFunctionExpression`)||D(r,`FunctionExpression`)||D(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},jse=(e,t)=>{let n=zo(e,t);return n?kse(n.handlerFunction.body??null,t,!n.isConditional):!1},Mse=(e,t)=>!e.value||!D(e.value,`JSXExpressionContainer`)?!1:jse(e.value.expression,t),Bo=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=Zn(t);return n!==null&&Rr.has(n)},Vo=e=>{if(D(e,`Identifier`)||D(e,`PrivateIdentifier`))return e.name},Nse=e=>{if(D(e,`FunctionExpression`)||D(e,`ArrowFunctionExpression`))return e},Pse=(e,t)=>{for(let n of e.body){if(!D(n,`MethodDefinition`)&&!D(n,`PropertyDefinition`)||Vo(n.key)!==t)continue;let e=Nse(n.value);if(e)return e}},Fse=(e,t)=>{for(let n of e.properties){if(!D(n,`Property`)||Vo(n.key)!==t)continue;let e=Nse(n.value);if(e)return e}},Ho=e=>{let t=Vo(e.property);if(t===void 0)return;let n=e.object;if(D(n,`ThisExpression`)){let n=e.parent;for(;n;){if(D(n,`ClassBody`))return Pse(n,t);if(D(n,`ObjectExpression`)){let e=Fse(n,t);if(e)return e}n=n.parent}return}if(D(n,`Identifier`)){let e=A(n,n.name);if(D(e?.initializer,`ObjectExpression`))return Fse(e.initializer,t)}},Ise=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Lse=e=>{if(!e)return!1;let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return!1;let n=t.callee;return!D(n,`MemberExpression`)||!D(n.property,`Identifier`)?!1:Ise.has(n.property.name)},Rse=e=>{if(!e)return!1;if(Lse(e))return!0;if(D(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!D(e,`ExpressionStatement`)||!Lse(e.expression))return!1;return!0}return!1},Uo=e=>{if(!e.value||!D(e.value,`JSXExpressionContainer`))return!1;let t=N(e.value.expression);return D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)?Rse(t.body):D(t,`MemberExpression`)?Rse(Ho(t)?.body):!1},zse=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],Bse=[`onClick`,`onClickCapture`],Vse=new Set([...Bse,...zse].map(e=>e.toLowerCase())),Hse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),Use=(e,t)=>{let n=N(e);if(D(n,`ObjectExpression`))return n;if(!D(n,`Identifier`))return null;let r=k(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=N(r.initializer);return D(i,`ObjectExpression`)?i:null},Wse=(e,t,n,r)=>{let i=Use(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(D(e,`SpreadElement`)){if(!Wse(e.argument,t,n,r)){a=!1;break}continue}if(!D(e,`Property`)){a=!1;break}let i=w(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(Hse.has(o)){a=!1;break}Vse.has(o)&&n.set(o,e.value)}return r.delete(i),a},Gse=(e,t)=>{let n=new Map;for(let r of e)if(D(r,`JSXSpreadAttribute`)&&!Wse(r.argument,t,n,new Set))return null;return n},Kse=new Set([`tr`,`td`,`th`,`canvas`]),qse=new Set([`motion`,`styled`]),Jse=e=>{let t=e.name;if(!D(t,`JSXMemberExpression`))return null;let n=t.object;if(!D(n,`JSXIdentifier`)||!qse.has(n.name))return null;let r=t.property.name;return r&&Kr.has(r)?r:null},Yse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Xse=e=>{let t=P(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!D(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Yse.has(r.toLowerCase()))},Zse=e=>{if(!D(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!D(e,`MemberExpression`))return null;let t=e.property;return D(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},Wo=e=>{if(!e||typeof e!=`object`)return!1;if(Zse(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},Qse=e=>{let t=N(e);if(D(t,`Identifier`)){let e=A(t,t.name);if(!e?.initializer)return null;t=N(e.initializer)}return D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`)?t:null},$se=e=>!e.value||!D(e.value,`JSXExpressionContainer`)?null:Qse(e.value.expression),ece=e=>{let t=$se(e);return t?Wo(t.body??null):!1},tce=(e,t)=>e===`li`&&!!(P(t.attributes,`onMouseEnter`)||P(t.attributes,`onMouseOver`)),nce=y({id:`click-events-have-key-events`,title:`Click handler missing keyboard handler`,tags:[`react-jsx-only`],severity:`warn`,recommendation:"Pair `onClick` with a key handler so keyboard users can trigger it.",category:`Accessibility`,create:e=>{let t=Mr(e.settings),n=Je(e.filename);return{JSXOpeningElement(r){if(n)return;let i=Jse(r)??tr(r,e.settings);if(!Kr.has(i)||i===`label`||!Kse.has(i)&&ni(i,r))return;let a=Gse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=P(r.attributes,`onClick`)??P(r.attributes,`onClickCapture`),c=Bse.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Uo(s)||s&&Mse(s,e.scopes)||c&&jse(c,e.scopes))return;let l=c?Qse(c):null;l&&Wo(l.body??null)||Xse(r)||tce(i,r)||s&&ece(s)||Ro(r.parent,null,e.scopes,e.settings)||s&&Ro(r.parent,s,e.scopes,e.settings)||ar(r,e.settings)||Bo(r)||zse.some(e=>P(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`."})}}}}),rce=Hn({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)},ace=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],oce=(e,t,n,r)=>{if(!D(t,`MemberExpression`))return;let i=O(t),a=z(t.object,r);i&&a&&(Go(e.memberMutationCandidatesByReceiverIdentity,a,n),ice(e,a,i,n))},sce=(e,t,n)=>{if(D(t,`AssignmentExpression`)){let r=N(t.left),i=z(r,n);i&&Go(e.receiverAssignmentCandidatesByIdentity,i,t),oce(e,r,t,n)}else D(t,`UnaryExpression`)&&t.operator===`delete`&&oce(e,N(t.argument),t,n);if(!D(t,`CallExpression`))return;let r=N(t.callee);if(!D(r,`MemberExpression`)||O(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(D(i,`Literal`)&&typeof i.value==`string`&&a&&!D(a,`SpreadElement`)){let r=z(a,n);r&&(Go(e.memberMutationCandidatesByReceiverIdentity,r,t),ice(e,r,i.value,t))}},cce=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=N(e.callee);if(!D(r,`MemberExpression`))return!1;let i=N(r.object);return O(r)===`defineProperty`&&D(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&D(e.arguments[1],`Literal`)&&e.arguments[1].value===t},lce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Ko=(e,t)=>{let n=N(e);return D(n,`MemberExpression`)&&O(n)===t?n.object:null},uce=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},qo=(e,t)=>{let n=D(e,`FunctionDeclaration`)?e.id:D(e.parent,`VariableDeclarator`)&&e.parent.init===e&&D(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(!D(r,`CallExpression`)||N(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},dce=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!D(i,`MethodDefinition`)||!D(a,`MethodDefinition`)||i.parent!==a.parent||!D(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Jo=(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(dce(o,s,e,n))return!0;if(uce(o,s)){let t=qo(s,n);return!t&&D(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Jo(e,t,n,a)))}if(uce(s,o)){let r=qo(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Jo(e,t,n,a)))}let r=qo(o,n),i=qo(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Jo(e,t,n,a)||r.some(e=>Jo(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},fce=(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},pce=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&C(N(i))?N(i):null},mce=(e,t,n,r)=>Yo(e,n).some(e=>e.callExpression!==t&&Jo(e.callExpression,t,n)&&Xo(e.callExpression,e.argumentIndex,n,r,new Map)),hce=(e,t,n,r)=>{let i=pce(N(e),n);if(!i||!C(i))return!1;let a=[];return T(i.body,e=>{if(e!==i.body&&C(e))return!1;D(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let i=z(e.argument,n);if(!i)return!1;let a=N(e.argument),o=D(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&mce(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Ko(D(r,`AssignmentExpression`)?r.left:D(r,`UnaryExpression`)?r.argument:r,t);return D(r,`CallExpression`)&&(i=cce(r,t,n)),i&&Jo(r,e,n)})})},gce=new WeakMap,Yo=(e,t,n=new Set)=>{let r=gce.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 Yo(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,N(t)===e?(e=t,r=!0):D(t,`Property`)&&t.value===e&&D(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(D(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||D(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||D(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(D(i,`VariableDeclarator`)&&i.init===e&&D(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(D(i,`AssignmentExpression`)&&i.right===e){let e=N(i.left),n=D(e,`Identifier`)?e:D(e,`MemberExpression`)&&D(N(e.object),`Identifier`)?N(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(D(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 gce.set(e,c),c},_ce=(e,t,n)=>{if(!C(e))return!1;if(D(e,`ArrowFunctionExpression`)&&!D(e.body,`BlockStatement`))return z(e.body,n)===t;let r=[];return T(e.body,t=>{if(t!==e.body&&C(t))return!1;D(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>D(e,`ReturnStatement`)&&e.argument&&z(e.argument,n)===t)},vce=(e,t)=>{let n=e;for(;n.parent&&N(n.parent)===n;)n=n.parent;let r=n.parent;if(!D(r,`VariableDeclarator`)||r.init!==n||!D(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},Xo=(e,t,n,r,i)=>{let a=pce(e,n);if(!a||!C(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(!D(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)||Yo(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?Xo(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!_ce(a,l,n))return!1;let u=vce(e,n);return u?Yo(u,n).some(e=>Xo(e.callExpression,e.argumentIndex,n,r,i)):!1},yce=(e,t,n,r,i,a=[],o)=>{if(hce(t,n,i,e))return!0;let s=z(t,i),c=N(t),l=D(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&mce(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?ace(e,s,n):[],...a.flatMap(t=>ace(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!lce(i.scopes.scopeFor(e),u)&&!Jo(e,r,i))continue;let t=null;if(D(e,`AssignmentExpression`)){if(s!==null&&z(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Jo(e,r,i)){d=!0;break}continue}t=Ko(e.left,n)}else if(D(e,`UnaryExpression`)&&e.operator===`delete`)t=Ko(e.argument,n);else if(D(e,`CallExpression`)&&cce(e,n,i)){let n=e.arguments[0];t=n&&!D(n,`SpreadElement`)?n:null}if(!t)continue;let c=z(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Jo(e,r,i)&&(d=!0))}return d||fce(p,r,i)},Zo=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>sce(t,n,e),hasProvenMutation:(n,r,i,a,o)=>yce(t,n,r,i,e,a,o)}},Qo=(e,t)=>!!(e&&D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&e.property.name===t),$o=e=>Jr(e)||(e.kind!==`let`&&e.kind!==`var`||!D(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),es=e=>D(e,`Identifier`)?e.name:D(e,`Literal`)&&typeof e.value==`string`?e.value:null,ts=e=>{if(!D(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&D(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!D(n,`Property`)||!D(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!D(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!D(a,`TSTypeLiteral`))return null;let o=es(n.key);if(!o)return null;for(let e of a.members)if(D(e,`TSPropertySignature`)&&es(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},ns=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&D(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>D(e,`TSTypeParameter`)&&D(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},rs=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},bce=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=N(e.callee);if(D(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=N(n.object);return D(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(`.`)),Sce=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,Cce=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),wce=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),Tce=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),is=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`],Ece=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:xce.has(e)||Sce.test(e),as=(e,t,n)=>{if(D(e,`TSTypeReference`)){if(!D(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return Ece(r,n)&&!rs(e,r,t)&&!ns(e,r)}if(!D(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(D(i,`TSNullKeyword`)||D(i,`TSUndefinedKeyword`))){if(!as(i,t,n))return!1;r=!0}return r},Dce=(e,t)=>!D(e,`TSTypeReference`)||!D(e.typeName,`Identifier`)||!as(e,t,`dom-event-target`)?null:e.typeName.name,os=(e,t,n)=>D(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),ss=(e,t,n=new Set)=>{let r=N(e);if(os(r,`window`,t))return[`Window`,`EventTarget`];if(os(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(D(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=ts(e),a=i?Dce(i,t):null;if(a)return is(a);let o=$o(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),ss(o,t,s)}if(D(r,`NewExpression`)){let e=N(r.callee);if(D(e,`Identifier`)&&Cce.has(e.name))return is(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(D(r,`MemberExpression`)){let e=O(r);if(e===`body`||e===`documentElement`)return is(`HTMLElement`)}if(D(r,`CallExpression`)){if(bce(r,t))return is(`MediaQueryList`);let e=N(r.callee),i=D(e,`MemberExpression`)?O(e):null;if(i===`matchMedia`&&D(e,`MemberExpression`)&&ss(e.object,t,n).includes(`Window`))return is(`MediaQueryList`);if(i===`createElement`)return is(`HTMLElement`);if(i===`createElementNS`)return is(`SVGElement`);if(i&&wce.has(i))return is(`Element`)}return[`EventTarget`]},Oce=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...Cce]).some(t=>Nce(e,t,n,new Set)),kce=(e,t,n)=>{let r=e,i=!1;for(;D(r,`TSAsExpression`)||D(r,`TSTypeAssertion`)||D(r,`TSSatisfiesExpression`);){if(as(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(D(a,`Identifier`)){let e=t.symbolFor(a),n=e?Jr(e):null;if(!n)return!1;a=N(n)}return i&&D(a,`Identifier`)||i&&D(a,`MemberExpression`)||i&&D(a,`ObjectExpression`)?!1:i&&D(a,`NewExpression`)?Oce(a.callee,n,t):i},Ace=e=>{if(!D(e,`MemberExpression`)||!D(N(e.object),`ThisExpression`))return null;let t=O(e);if(!t)return null;let n=e.parent;for(;n&&!D(n,`ClassBody`);){if((D(n,`FunctionDeclaration`)||D(n,`FunctionExpression`))&&!D(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!D(e,`PropertyDefinition`)||e.static)&&es(e.key)===t)return e;return null},jce=e=>{if(!D(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&D(t,`TSTypeAnnotation`)?t.typeAnnotation:null},Mce=(e,t,n)=>{if(!D(e,`CallExpression`))return null;let r=N(e.callee);if(!D(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!C(a)||a.async||a.generator?null:(n.add(i.id),a)},Nce=(e,t,n,r)=>{let i=N(e);if(D(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=Jr(e);return a?(r.add(e.id),Nce(a,t,n,r)):!1}if(!D(i,`MemberExpression`)||O(i)!==t)return!1;let a=N(i.object);return os(a,`window`,n)||os(a,`globalThis`,n)},Pce=(e,t,n)=>{let r=N(e);for(;D(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Jr(e);if(!i)return!1;n.add(e.id),r=N(i)}if(!D(r,`CallExpression`)||!j(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!j(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!D(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&as(i,t,`dom-event-target`))},cs=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(kce(e,n,t))return!0;let a=N(e);if(D(a,`Identifier`)){if(i&&(os(a,`document`,n)||os(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=ts(e);if(o&&as(o,n,t))return!0;let s=$o(e);return s?(r.add(e.id),cs(s,t,n,r)):!1}if(D(a,`NewExpression`))return Oce(a.callee,t,n);if(D(a,`CallExpression`)){let e=N(a.callee);if(i&&D(e,`MemberExpression`)&&wce.has(O(e)??``)&&cs(e.object,t,n,r))return!0;let o=Mce(a,n,r);return!!(o&&ge(o,n,e=>cs(e,t,n,new Set(r)),void 0,`every`))}if(D(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(D(e,`Literal`)&&e.value===null)&&!(D(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>cs(e,t,n,new Set(r)))}if(!D(a,`MemberExpression`))return!1;let o=Ace(a);if(o&&D(o,`PropertyDefinition`)){let e=jce(o);if(e&&as(e,n,t)||o.value&&cs(o.value,t,n,r))return!0}if(!i)return!1;let s=O(a);if(s===`current`)return Pce(a.object,n,r);let c=N(a.object);return s===`document`&&(os(c,`window`,n)||os(c,`globalThis`,n))?!0:s!==null&&Tce.has(s)&&cs(c,t,n,r)},Fce=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Ice=e=>Fce.test(kt(e??``)),ls=(e,t)=>{let n=N(e);return D(n,`Identifier`)?t.has(n.name):D(n,`SpreadElement`)?ls(n.argument,t):D(n,`ObjectExpression`)?n.properties.some(e=>D(e,`Property`)?ls(e.value,t):D(e,`SpreadElement`)&&ls(e.argument,t)):D(n,`ArrayExpression`)?n.elements.some(e=>e&&ls(e,t)):D(n,`ConditionalExpression`)?ls(n.consequent,t)||ls(n.alternate,t):D(n,`LogicalExpression`)?ls(n.left,t)||ls(n.right,t):D(n,`SequenceExpression`)?n.expressions.some(e=>ls(e,t)):!1},us=(e,t,n)=>{let r=N(t);if(D(e,`Identifier`)){ls(r,n)&&n.add(e.name);return}if(D(e,`AssignmentPattern`)){us(e.left,r,n);return}if(D(e,`ObjectPattern`)&&D(r,`ObjectExpression`)){for(let t of e.properties){if(!D(t,`Property`))continue;let e=es(t.key);if(!e)continue;let i=r.properties.find(t=>D(t,`Property`)&&es(t.key)===e);D(i,`Property`)&&us(t.value,i.value,n)}return}if(D(e,`ArrayPattern`)&&D(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&us(i,e,n)}},Lce=(e,t,n)=>{if(!D(e,`CallExpression`)||!n.filename)return!1;let r=N(e.callee);if(!D(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`import`)return!1;let a=i.declarationNode,o=a.parent,s=v(a);if(!s||!D(o,`ImportDeclaration`)||typeof o.source.value!=`string`)return!1;let c=an(n.filename,o.source.value,s);if(!c||!C(c))return!1;let l=c.params[t];if(!D(l,`Identifier`))return!1;let u=new Set([l.name]),d=!1;return T(c.body,e=>{if(d)return!1;if(D(e,`VariableDeclarator`)&&e.init){us(e.id,e.init,u);return}if(D(e,`AssignmentExpression`)&&D(e.left,`Identifier`)&&ls(e.right,u)){u.add(e.left.name);return}if(D(e,`CallExpression`)){let t=N(e.callee);(D(t,`MemberExpression`)&&O(t)===`preventDefault`&&ls(t.object,u)||e.arguments.some(e=>!D(e,`SpreadElement`)&&ls(e,u)))&&(d=!0);return}if(D(e,`NewExpression`)&&e.arguments.some(e=>!D(e,`SpreadElement`)&&ls(e,u))){d=!0;return}let t=D(e,`AssignmentExpression`)?N(e.left):null;D(e,`AssignmentExpression`)&&(D(t,`MemberExpression`)&&ls(t.object,u)||ls(e.right,u))&&(d=!0)}),!d},Rce=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),zce=new Set([`catch`,`finally`,`then`]),ds=(e,t,n=new Set)=>{let r=(e,n)=>{let i=N(e);if(C(i))return i.async;if(!D(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=N(e);if(D(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),ds(e.initializer,t,r)}if(D(i,`NewExpression`)){let e=N(i.callee);return D(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(D(a,`Identifier`))return r(a,n);if(!D(a,`MemberExpression`))return!1;let o=N(a.object);return zce.has(O(a)??``)?ds(a.object,t,n):!!(Rce.has(O(a)??``)&&D(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Bce=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),Vce=new Set([`catch`,`finally`,`then`]),fs=e=>{if(!C(e))return!1;let t=!1;return T(e,n=>{if(t||n!==e&&C(n))return!1;D(n,`CallExpression`)&&D(n.callee,`MemberExpression`)&&O(n.callee)===`preventDefault`&&(t=!0)}),t},Hce=(e,t)=>{let n=!1;return T(e,e=>{if(n)return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&D(e.left,`Identifier`)&&e.left.name===t&&fs(e.right)&&(n=!0)}),n},Uce=e=>{if(!e)return!1;if(fs(e))return!0;if(D(e,`Identifier`)){let t=A(e,e.name);return t?fs(t.initializer??void 0)?!0:Hce(t.scopeOwner,e.name):!1}if(D(e,`MemberExpression`)){let t=Ho(e);return t?fs(t):!1}return!1},ps=(e,t)=>{if(!e)return;let n=N(e);if(C(n))return n;if(D(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&C(r))return r;let i=A(n,n.name),a;return e&&i&&T(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(D(r,`AssignmentExpression`)&&r.operator===`=`&&D(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=N(r.right);a=C(e)?e:void 0}}),a}return D(n,`MemberExpression`)?Ho(n):void 0},Wce=(e,t,n)=>{if(!Lce(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(N(e)===r||D(e,`UnaryExpression`)&&e.operator===`!`||D(e,`LogicalExpression`)){r=e;continue}return D(e,`IfStatement`)&&e.test===r||D(e,`ConditionalExpression`)&&e.test===r||D(e,`WhileStatement`)&&e.test===r||D(e,`DoWhileStatement`)&&e.test===r||D(e,`ForStatement`)&&e.test===r}return!1},Gce=(e,t)=>{let n=ps(e,t);if(!n){let n=e?N(e):void 0;if(!n||!D(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=N(e);if(D(r,`Identifier`)){if(Bce.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=Jr(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!D(r,`MemberExpression`))return!1;let a=N(r.object);return Bce.has(O(r)??``)&&D(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&N(n.parent)===N(n);)n=n.parent;let r=n.parent;if(D(r,`NewExpression`)){let e=N(r.callee);return r.arguments.some(e=>e===n)&&D(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!D(r,`CallExpression`))return!1;if(N(r.callee)===N(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=N(r.callee);if(i(a))return!1;if(D(a,`Identifier`)||!D(a,`MemberExpression`))return!0;let o=O(a);return!(Vce.has(o??``)&&ds(a.object,t.scopes)||o===`addEventListener`&&cs(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!C(e))return!1;let s=r.get(e)??new Set;if(s.has(n))return!1;s.add(n),r.set(e,s);let c=e.params[n];if(!c)return!i;let l=D(c,`AssignmentPattern`)?c.left:c;if(!D(l,`Identifier`))return!(i&&D(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=N(e);if(!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=N(e);if(p(n))return!0;if(D(n,`SpreadElement`))return m(n.argument);if(D(n,`MemberExpression`)){let e=N(n.object);if(D(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=O(n);if(D(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>D(e,`Property`)&&Vo(e.key)===r);return!!(D(t,`Property`)&&m(t.value))}if(D(e,`ArrayExpression`)&&D(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return D(n,`ObjectExpression`)?n.properties.some(e=>D(e,`Property`)?m(e.value):D(e,`SpreadElement`)&&m(e.argument)):D(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):D(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):D(n,`LogicalExpression`)?m(n.left)||m(n.right):D(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=N(n);if(D(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(D(e,`AssignmentPattern`)){h(e.left,r);return}if(D(e,`RestElement`)&&D(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(D(e,`ObjectPattern`)&&D(r,`ObjectExpression`)){for(let t of e.properties){if(D(t,`RestElement`)){h(t,r);continue}if(!D(t,`Property`))continue;let e=Vo(t.key);if(!e)continue;let n=r.properties.find(t=>D(t,`Property`)&&Vo(t.key)===e);D(n,`Property`)&&h(t.value,n.value)}return}if(D(e,`ArrayPattern`)&&D(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return T(e.body,n=>{if(g||n!==e.body&&C(n)&&!a(n))return!1;if(D(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(D(n,`AssignmentExpression`)&&m(n.right)){if(D(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(D(n,`AssignmentExpression`)){let e=N(n.left),t=N(n.right);if(D(e,`MemberExpression`)&&O(e)===`returnValue`&&p(e.object)&&D(t,`Literal`)&&t.value===!1){g=!0;return}}if(D(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(D(n,`NewExpression`)){n.arguments.some(e=>!D(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!D(n,`CallExpression`))return;let r=N(n.callee);if(D(r,`MemberExpression`)&&O(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=ps(n.callee,t);(!s&&!Wce(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},ms=(e,t)=>!!e.properties?.some(e=>D(e,`Property`)&&D(e.key,`Identifier`)&&e.key.name===`passive`&&D(e.value,`Literal`)&&e.value.value===t),hs=y({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(Ice(e.filename))return pn;let t=Zo(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=N(n.callee);if(!Qo(a,`addEventListener`)||!cs(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,ss(a.object,e.scopes),t=>cs(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!D(o,`Literal`)||typeof o.value!=`string`||!m.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||D(c,`SpreadElement`))return;let l=ps(c,e)??c,u=r.get(l);if(u===void 0&&(u=Uce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=Gce(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!D(f,`ObjectExpression`)||ms(f,!1)||ms(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),Qo(N(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),gs=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},_s=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},vs=e=>gs(e)||_s(e),Kce=(e,t)=>{let n=t?en(e):e;return D(n,`Identifier`)?n.name:D(n,`MemberExpression`)&&D(n.property,`Identifier`)?n.property.name:null},ys=(e,t=!1)=>{let n=S(e);for(;;){let e=n.parent;if(!e||!D(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=Kce(e.callee,t);if(!r||!Cn.has(r))return n;n=S(e)}},qce=(e,t)=>{let n=ys(e,t),r=n.parent;return r&&D(r,`VariableDeclarator`)&&D(r.id,`Identifier`)&&r.init===n&&vs(r.id.name)?r.id.name:null},bs=(e,t=!1)=>(D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`))&&e.id?vs(e.id.name)?e.id.name:null:qce(e,t),xs=e=>D(e,`MemberExpression`)&&!e.computed&&D(e.property,`Identifier`)?e.property.name:null,Jce=[`react`,`use-context-selector`,`react-tracked`],Ss=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!D(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!Jce.includes(t.source.value)?null:t.source.value},Cs=e=>Ss(e)!==null&&!!(e&&(D(e.declarationNode,`ImportDefaultSpecifier`)||D(e.declarationNode,`ImportNamespaceSpecifier`))),Yce=(e,t)=>{if(!D(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!D(n.declarationNode,`VariableDeclarator`)||!D(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!D(r,`Property`)||w(r,{allowComputedString:!0})!==`createContext`)return!1;let i=N(n.initializer);return D(i,`Identifier`)&&Cs(k(i,t))},Xce=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){if(Yce(n,t))return!0;let e=k(n,t);return Ss(e)!==null&&!!(e&&bt(e.declarationNode)===`createContext`)}if(!D(n,`MemberExpression`)||(xs(n)??(n.computed&&D(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=N(n.object);return D(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Cs(k(r,t)):!1},ws=(e,t)=>{let n=N(e);return D(n,`CallExpression`)&&Xce(n.callee,t)},Ts=(e,t)=>{let n=new Set;if(!D(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(D(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!D(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!D(r,`VariableDeclarator`)||!D(r.id,`Identifier`)||!r.init||!M(r.init)||!ws(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Es=e=>{if(D(e,`FunctionDeclaration`)&&D(e.id,`Identifier`))return e.id;let t=S(e),n=t.parent;if(D(n,`VariableDeclarator`)&&D(n.id,`Identifier`))return n.id;if(D(n,`AssignmentExpression`)&&n.right===t&&D(n.left,`Identifier`))return n.left;if(D(n,`CallExpression`)){let e=n.parent;if(D(e,`VariableDeclarator`)&&D(e.id,`Identifier`))return e.id}return null},Ds=e=>Es(e)?.name??null,Os=(e,t)=>{let n=Es(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[]},Zce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),ks=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(D(t,`VariableDeclaration`))return t.kind===`const`;if(!Zce.has(t.type))return!1;t=t.parent??null}return!1},As=(e,t)=>{if(!D(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=bt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},Qce=(e,t)=>{if(!As(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=bn(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},js=(e,t,n,r)=>{if(!D(e,`JSXIdentifier`))return!1;if(r&&As(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},Ms=(e,t,n)=>D(e,`JSXMemberExpression`)?e.property.name===`Provider`&&js(e.object,t,n,!0):Qce(e,n)||js(e,t,n,!1),Ns="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.",Ps=new Set([`flatMap`,`map`]),$ce=new Set([`forwardRef`,`memo`]),ele=new Set([`useCallback`,`useMemo`]),tle=new Set([`createElement`]),Fs=e=>{let t=N(e);return D(t,`ObjectExpression`)||D(t,`ArrayExpression`)||D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`)},nle=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&D(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&Ut(n,e.scopeOwner)?!0:!!(e.initializer&&D(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},rle=e=>C(e.scopeOwner)?e.scopeOwner:b(e.scopeOwner),ile=(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},Is=e=>{let t=ys(e);return!!(t.parent&&D(t.parent,`ExportDefaultDeclaration`))},ale=e=>{if(!D(e,`FunctionExpression`)||!e.id)return!1;let t=S(e);if(ys(e)!==t)return!1;let n=t.parent;return!(n&&D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`))},ole=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=N(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),D(a,`ConditionalExpression`)){let e=N(a.test);D(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(D(a,`LogicalExpression`)){let e=N(a.left);if(D(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(D(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(D(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(D(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(D(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(D(e,`SpreadElement`)?e.argument:e);continue}if(D(a,`CallExpression`)&&j(a,tle,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&D(e,`ObjectExpression`))for(let t of e.properties){if(!D(t,`Property`)||t.computed)continue;let e=t.key;(D(e,`Identifier`)&&e.name===`children`||D(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(D(a,`Identifier`)){let e=A(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&ks(e)&&nle(e,a)&&b(e.bindingIdentifier)===b(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(D(a,`JSXElement`)||D(a,`JSXFragment`)){r.push(...a.children);continue}D(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Ls=(e,t,n)=>ge(t,n.scopes,t=>ole(t,e,n),n.cfg),sle=(e,t,n)=>e.arguments[0]===t&&j(e,ele,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(D(e.callee,`MemberExpression`)&&Ps.has(O(e.callee)??``)),cle=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=c(e.callee,n.scopes);if(!i||!C(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!D(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=S(e.identifier),r=t.parent;return!!(r&&D(r,`CallExpression`)&&r.callee===t&&b(r)===i&&Ut(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Ls(r,i,n))}))return!1;let o=b(e);return!!(o&&(bs(o)!==null||Is(o))&&Ls(e,o,n))},lle=(e,t)=>{let n=Os(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||!D(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&j(r,$ce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:sle(r,n,t)||!cle(r,n,t)})},ule=(e,t)=>{let n=S(e),r=n.parent;if(!r||!D(r,`CallExpression`))return!1;let i=b(r);return!i||bs(i)===null&&!Is(i)?!1:r.arguments[0]===n&&D(r.callee,`MemberExpression`)&&Ps.has(O(r.callee)??``)&&Ls(r,i,t)?!0:r.callee===n&&Ls(r,i,t)||r.arguments.some(e=>e===n)&&cle(r,n,t)},dle=y({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)&&V(t,e),n=new Set;return{Program(t){n=Ts(t,e.scopes)},JSXOpeningElement(r){if(!Ms(r.name,n,e.scopes))return;let i=b(r);if(!i)return;let a=ule(i,e),o=Is(i);if((ale(i)||lle(i,e))&&!a&&!o||bs(i)===null&&!o&&!a)return;let s=B(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!D(c,`JSXExpressionContainer`))return;let l=N(c.expression);if(!D(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:ite(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:at(n.identifier)}))).toSorted((e,t)=>ile(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!Fs(d.assignedExpression))return;e.report({node:s,message:Ns});return}let f=A(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&nle(f,l)&&rle(f)===i&&Fs(f.initializer)&&e.report({node:s,message:Ns})}}}}),fle=[`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`],Rs=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`:fle.find(t=>e===t||e.startsWith(`${t}/`))??null,ple=/[\p{L}\p{Nd}]/u,zs=e=>ple.test(e),Bs=e=>Lr.has(e),Vs=(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},H=e=>{let t=[],n=0;for(let r of Vs(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},mle=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),hle=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),gle=e=>e.toLowerCase()===`hidden`,_le=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=H(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},vle=e=>{let t=P(e.attributes,`className`)??P(e.attributes,`class`);if(!t)return!1;let n=I(t);return n===null?t.value&&D(t.value,`JSXExpressionContainer`)&&D(t.value.expression,`TemplateLiteral`)?_le(t.value.expression).some(gle):!1:H(n).some(gle)},yle=e=>{let t=P(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(D(n,`Literal`))return n.value!==`false`&&!!n.value;if(D(n,`JSXExpressionContainer`)){let e=N(n.expression);if(D(e,`Literal`))return!!e.value}return!0},ble={display:`none`,visibility:`hidden`},xle=e=>{let t=P(e.attributes,`style`);if(!t?.value||!D(t.value,`JSXExpressionContainer`))return!1;let n=N(t.value.expression);if(!D(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!D(e,`Property`)||e.computed)continue;let t=e.key,n=D(t,`Identifier`)?t.name:D(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=ble[n];if(!r)continue;let i=N(e.value);if(D(i,`Literal`)&&i.value===r)return!0}return!1},Sle=(e,t)=>ar(e,t)||yle(e)||xle(e),Cle=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=P(t.attributes,`type`),r=n?Zn(n):null;return!r||r.toLowerCase()!==`file`||!vle(t)?!1:!!P(t.attributes,`ref`)},wle=[`link`,`canvas`],Tle=new Set([`alt`,`aria-label`,`aria-labelledby`]),Hs=`label`,Ele=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??[]}},Us=(e,t)=>{let n=new Set(t);for(let t of e){if(D(t,`JSXSpreadAttribute`))return!0;if(!D(t,`JSXAttribute`)||!D(t.name,`JSXIdentifier`))continue;let e=Pt(t.name);if(e&&(Tle.has(e)||n.has(e)))return t.value?D(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},Ws=e=>{if(!e?.value)return!1;let t=e.value;if(D(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(D(t,`JSXExpressionContainer`)){let e=N(t.expression);if(D(e,`JSXEmptyExpression`))return!1;if(D(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(D(e,`TemplateLiteral`)){let t=Fe(e);if(t!==null)return t.trim().length>0}return!0}return!0},Dle=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!D(r,`JSXAttribute`))&&Pt(r.name)?.toLowerCase()===n)return r}},Ole=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(D(r,`SpreadElement`))return null;let e=N(r);if(D(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(D(e,`TemplateLiteral`)){let t=Fe(e);if(t===null)return null;n.push(t);continue}if(D(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||D(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(D(e,`ArrayExpression`)){let r=Ole(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},kle=(e,t)=>{if(D(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!D(e,`MemberExpression`))return!1;let n=N(e.object);return D(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},Gs=(e,t)=>{let n=N(e);if(D(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(D(n,`TemplateLiteral`)){let e=Fe(n);return e===null||e.trim().length>0}if(D(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(D(n,`UnaryExpression`)&&n.operator===`void`||D(n,`UnaryExpression`)&&n.operator===`!`||D(n,`ArrowFunctionExpression`)||D(n,`FunctionExpression`)||D(n,`ClassExpression`))return!1;if(D(n,`ArrayExpression`)){let e=Ole(n,t);return e===null||e.trim().length>0}if(kle(n,t)||D(n,`CallExpression`)&&kle(n.callee,t))return!1;if(D(n,`ConditionalExpression`))return Gs(n.consequent,t)&&Gs(n.alternate,t);if(D(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?Gs(e,t):!1}if(D(n,`LogicalExpression`)){let e=N(n.left);if(!D(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return Gs(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?Gs(r?n.right:e,t):Gs(r?e:n.right,t)}return!0},Ale=(e,t)=>e?.value?D(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:D(e.value,`JSXExpressionContainer`)?Gs(e.value.expression,t):!0:!1,Ks=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},jle=e=>typeof e==`string`?Ks(`literal`,e):typeof e==`number`?Ks(`literal`,String(e)):null,qs=e=>{let t=N(e);if(D(t,`Identifier`))return t.name;if(D(t,`MemberExpression`)){if(t.computed)return null;let e=qs(t.object),n=t.property;return e===null||!D(n,`Identifier`)?null:`${e}.${n.name}`}return null},Mle=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=qs(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return Ks(`template`,r.join(``))},Js=e=>{let t=N(e);if(D(t,`Literal`)){let e=jle(t.value);return e===null?[]:[e]}if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e!==null){let t=Ks(`literal`,e);return t===null?[]:[t]}let n=Mle(t);return n===null?[]:[n]}if(D(t,`ConditionalExpression`))return[...Js(t.consequent),...Js(t.alternate)];let n=qs(t);if(n!==null){let e=Ks(`identifier`,n);return e===null?[]:[e]}return[]},Nle=e=>{if(!e?.value)return[];let t=e.value;if(D(t,`Literal`)){let e=jle(t.value);return e===null?[]:[e]}return D(t,`JSXExpressionContainer`)?Js(t.expression):[]},Ple=/^Icon($|[A-Z0-9_])|Icon$/,Fle=(e,t)=>{if(t.iconComponentNames.has(e)||Ple.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},Ys=(e,t,n)=>{let r=N(e);if(D(r,`JSXEmptyExpression`))return!1;if(D(r,`Literal`))return typeof r.value==`string`?zs(r.value):typeof r.value==`number`;if(D(r,`TemplateLiteral`)){let e=Fe(r);return e===null||zs(e)}return D(r,`ConditionalExpression`)?Ys(r.consequent,t,n)||Ys(r.alternate,t,n):D(r,`LogicalExpression`)?r.operator===`&&`?Ys(r.right,t,n):Ys(r.left,t,n)||Ys(r.right,t,n):D(r,`JSXElement`)||D(r,`JSXFragment`)?Xs(r,t,n):!0},Xs=(e,t,n)=>{if(t>n.depth)return!1;if(D(e,`JSXExpressionContainer`))return Ys(e.expression,t,n);if(D(e,`JSXText`))return zs(e.value);if(D(e,`JSXFragment`))return e.children.some(e=>Xs(e,t+1,n));if(D(e,`JSXElement`)){if(Us(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=tr(e.openingElement,n.settings);if(gs(t)&&!n.controlComponents.includes(t)&&!Fle(t,n))return!0}for(let r of e.children)if(Xs(r,t+1,n))return!0}return!1},Ile=(e,t)=>Us(e.openingElement.attributes,t.customAttributes)?!0:e.children.some(e=>Xs(e,1,t)),Lle=e=>D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`)||D(e,`FunctionDeclaration`),Rle=(e,t)=>{if(e===Hs||e===`Label`)return!0;let n=P(t.attributes,`component`);return n?Zn(n)===Hs:!1},zle=(e,t)=>{let n=e.parent,r=!1;for(;n&&!D(n,`JSXAttribute`);){if(Lle(n)&&(r=!0),D(n,`JSXElement`)){let e=n.openingElement;if(Sle(e,t.settings))return`hidden`;let i=tr(e,t.settings);if(!r&&Rle(i,e)&&Ile(n,t)||gs(i)&&Ws(P(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Ble=e=>{let t=e.parent;for(;t;){if(D(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},Vle=e=>{let t=e.parent;for(;t;){if(D(t,`VariableDeclarator`))return D(t.id,`Identifier`)?t.id.name:null;if(Lle(t)){if(D(t,`FunctionDeclaration`)&&t.id&&D(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&D(e,`VariableDeclarator`)&&D(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Zs=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){t.add(n.name);return}if(D(n,`CallExpression`)){let e=N(n.callee);D(e,`Identifier`)&&t.add(e.name);return}if(D(n,`LogicalExpression`)){Zs(n.left,t),Zs(n.right,t);return}D(n,`ConditionalExpression`)&&(Zs(n.consequent,t),Zs(n.alternate,t))},Hle=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(D(i,`JSXExpressionContainer`)){Zs(i.expression,r);continue}(D(i,`JSXElement`)||D(i,`JSXFragment`))&&Hle(i,t+1,n,r)}},Ule=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=P(t.attributes,`type`);if(!n)return!0;let r=Zn(n);return r===null?!0:hle.has(r.toLowerCase())},Wle=y({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=Mr(e.settings),n=Ele(e.settings),r=Je(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={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`||!Rs(t)))for(let t of e.specifiers??[]){if(!D(t.local,`Identifier`))continue;let e=t.local.name;D(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=tr(a,e.settings);if(Rle(u,a)&&Ile(i,l)&&!Ble(i)){let e=P(a.attributes,`htmlFor`);for(let t of Nle(e))o.add(t);u===Hs&&Hle(i,1,l,s)}if(wle.includes(u)||n.ignoreElements.includes(u))return;let d=P(a.attributes,`role`),f=d?Zn(d):null;if(f&&n.ignoreRoles.includes(f)||Sle(a,e.settings)||Cle(u,a))return;let p=Kr.has(u),m=(!t||!mle.has(u))&&ni(u,a),h=t&&f===`separator`&&!P(a.attributes,`tabIndex`),g=f!==null&&Bs(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=P(a.attributes,`type`),t=e?Zn(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&Ws(P(a.attributes,`value`)))return}if(!(p&&Ale(Dle(a.attributes,`title`),e.scopes))&&!(Ule(u,a)&&Ws(P(a.attributes,`placeholder`)))&&!Us(a.attributes,n.labelAttributes)&&!Ble(i)&&zle(i,l)===null){if(u!==`select`){for(let e of i.children)if(Xs(e,1,l))return}c.push({opening:a,controlIdKeys:Nle(P(a.attributes,`id`)),enclosingBindingName:Vle(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`."})}}}}),Qs=(e,t,n)=>{let r=N(e);if(D(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)Qs(e,t,n);return}if(D(r,`JSXFragment`)){for(let e of r.children)Qs(e,t,n);return}if(n){if(D(r,`JSXExpressionContainer`)){Qs(r.expression,t,!0);return}if(D(r,`ConditionalExpression`)){let e=rn(en(r.test));if(e!==null){Qs(e?r.consequent:r.alternate,t,!0);return}Qs(r.consequent,t,!0),Qs(r.alternate,t,!0);return}if(D(r,`LogicalExpression`)){for(let e of At(r))Qs(e,t,!0);return}if(D(r,`ArrayExpression`)){for(let e of r.elements)e&&!D(e,`SpreadElement`)&&Qs(e,t,!0);return}if(D(r,`SequenceExpression`)){if(r.expressions.length===0)return;Qs(en(r),t,!0)}}},$s=(e,t={})=>{let n=[];for(let r of e.children)Qs(r,n,t.includeStaticExpressionBranches===!0);return n},Gle=new Set([`grid`,`table`,`treegrid`]),Kle=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(D(i,`JSXAttribute`)){if(Pt(i.name)?.toLowerCase()===t)return!1;continue}if(D(i,`JSXSpreadAttribute`)&&Er(i.argument,t,!1,n.scopes))return!0}}return!1},ec=(e,t,n,r)=>n.isUnknown&&Kle(e,t,r),qle=e=>e.attribute?I(e.attribute):rr(e.expression),tc=(e,t,n)=>{if(e.attribute)return kr(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=N(e.expression),i=rr(r);return i===null?D(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(Or(r)||D(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Jle=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=qt(e.attributes,n,!1);if(ec(e,n,r,t))return null;if(tc(r,n.startsWith(`aria-`),t))return!0}return!1},nc=e=>{for(let t of e){if(D(t,`JSXElement`)&&E(t.openingElement)===`caption`)return t;if(D(t,`JSXFragment`)){let e=nc(t.children);if(e)return e}}return null},Yle=(e,t)=>ar(e.openingElement,t.settings)?!1:jr(e,t.settings),Xle=(e,t,n)=>{let r=e.parent;for(;r;){if(D(r,`JSXElement`)){if(ar(r.openingElement,n.settings))return!1;if(E(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Zle=(e,t)=>{let n=e.parent;for(;n;){if(D(n,`JSXElement`)&&ar(n.openingElement,t.settings))return!0;n=n.parent}return!1},rc=y({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(E(n)!==`table`||pr(e,n)||ar(n,e.settings)||Zle(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>ec(n,t,qt(n.attributes,t,!1),e)))return;let r=qt(n.attributes,`children`,!1),i=qt(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=qt(n.attributes,`role`,!1);if(ec(n,`role`,a,e))return;if(a.isPresent){let t=qle(a);if(t===null){if(tc(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>Ir.has(e));if(e&&!Gle.has(e))return}}if(!$s(t).some(n=>E(n)===`th`&&Xle(n,t,e)))return;let o=nc(t.children),s=Jle(n,e);s!==null&&(o&&Yle(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.`}))}})}),ic=(e,t,n)=>{let r=N(e);if(C(r))return[r];if(D(r,`Identifier`)){if(n){let e=k(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:C(e.declarationNode)?[e.declarationNode]:e.initializer&&C(N(e.initializer))?[N(e.initializer)]:[]}let e=A(t,r.name);return e?.initializer&&C(N(e.initializer))?[N(e.initializer)]:[]}if(D(r,`ConditionalExpression`))return[...ic(r.consequent,t,n),...ic(r.alternate,t,n)];if(D(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?ic(e,t,n):[]}return[]},ac=(e,t)=>C(e)?D(e.body,`BlockStatement`)?Xe(e).flatMap(e=>e.argument?ic(e.argument,e,t):[]):ic(e.body,e,t):[],oc=(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&&D(c,`MemberExpression`)&&c.object===o&&O(c)===`current`&&(o=S(c),c=o.parent),n.includeReactRefContainers&&D(c,`CallExpression`)&&c.arguments[0]===e&&j(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=S(c),c=o.parent),!D(c,`VariableDeclarator`)||c.init!==o||!D(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},sc=(e,t,n)=>j(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),cc=(e,t)=>sc(e,Tt,t),Qle=new Set([`useMemo`,`useCallback`,`useRef`]),$le=new Set([`useRef`]),lc=new Set([`debounce`,`throttle`]),uc=new Set([`cancel`,`flush`]),eue=new Set([`document`,`window`]),tue=new Set([`then`,`catch`,`finally`]),dc=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),fc=e=>{if(!D(e,`CallExpression`))return!1;let t=N(e.callee);if(D(t,`Identifier`)){if(!lc.has(t.name))return!1;let e=A(t,t.name);return!e?.initializer||!D(e.initializer,`ImportSpecifier`)&&!D(e.initializer,`ImportDefaultSpecifier`)?!1:dc(rt(t,t.name))}if(D(t,`MemberExpression`)&&lc.has(O(t)??``)){let e=N(t.object);if(!D(e,`Identifier`))return!1;let n=A(e,e.name);return!n?.initializer||!D(n.initializer,`ImportNamespaceSpecifier`)&&!D(n.initializer,`ImportDefaultSpecifier`)?!1:dc(rt(e,e.name))}return!1},nue=e=>{if(!D(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=N(t);if(fc(n))return n;if(!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return null;if(!D(n.body,`BlockStatement`)){let e=N(n.body);return fc(e)?e:null}for(let e of n.body.body??[])if(D(e,`ReturnStatement`)&&e.argument){let t=N(e.argument);if(fc(t))return t}return null},rue=(e,t,n)=>{if(!D(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Qa(r,[`trailing`],t,n);return i?i.properties.some(e=>D(e,`Property`)&&w(e,{allowComputedString:!0})===`trailing`&&D(e.value,`Literal`)&&e.value.value===!1):!1},pc=e=>{let t=N(e);for(;D(t,`MemberExpression`);)t=N(t.object);return D(t,`Identifier`)?t:null},mc=(e,t)=>{let n=pc(e);return n?t.symbolFor(n)?.id??null:null},hc=(e,t)=>{let n=N(e);if(D(n,`MemberExpression`))return uc.has(O(n)??``)?mc(n.object,t):null;if(!D(n,`Identifier`))return null;let r=A(n,n.name)?.bindingIdentifier?.parent;if(!D(r,`Property`))return null;let i=D(r.key,`Identifier`)?r.key.name:D(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!uc.has(i))return null;let a=r.parent,o=a?.parent;return!D(a,`ObjectPattern`)||!D(o,`VariableDeclarator`)||!o.init?null:mc(o.init,t)},iue=(e,t,n)=>{T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`CallExpression`))return;let i=hc(r.callee,n);i!==null&&t.add(i)})},aue=(e,t)=>{let n=new Set,r=new Set,i=new Set;return T(e,e=>{if(!D(e,`CallExpression`))return;let n=N(e.callee);if(cc(e,t)){let n=e.arguments?.[0],a=n?N(n):null;if(a&&C(a)){if(Xa(a,e=>{if(!D(e,`CallExpression`))return;let n=mc(e.callee,t);n!==null&&r.add(n)}),D(a.body,`BlockStatement`))for(let e of Xe(a)){if(!e.argument)continue;let n=hc(e.argument,t);n!==null&&i.add(n)}else{let e=hc(a.body,t);e!==null&&i.add(e)}for(let e of ac(a))iue(e,i,t)}}if(D(n,`Identifier`)&&n.name===`useUnmount`&&(rt(n,n.name)===`react-use`||!A(n,n.name)))for(let n of e.arguments??[]){let e=hc(n,t);e!==null&&i.add(e)}if(!D(n,`Identifier`)||!_s(n.name))return;let a=A(n,n.name)?.initializer;if(!a||!C(a))return;let o=new Set;T(a,e=>{if(!D(e,`CallExpression`)||!cc(e,t))return;let n=Gn(e);if(n)for(let e of ac(n))T(e,e=>{if(!D(e,`CallExpression`))return;let t=N(e.callee);if(!D(t,`MemberExpression`)||!uc.has(O(t)??``))return;let n=pc(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!D(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?mc(a,t):null;s!==null&&i.add(s)}}),T(e,r=>{if(r!==e&&C(r))return!1;if(!D(r,`ReturnStatement`)||!r.argument)return;let i=N(r.argument);!D(i,`Identifier`)&&!D(i,`ObjectExpression`)&&!D(i,`ArrayExpression`)||T(i,e=>{if(!D(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},oue=(e,t,n)=>{if(!D(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=N(r);if(C(i))return i;if(!D(i,`Identifier`))return null;let a=i.name,o=null;return T(t,e=>{if(o)return!1;if(D(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(D(e,`VariableDeclarator`)&&D(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=N(e.init);if(C(t))return o=t,!1;if(D(t,`CallExpression`)&&sc(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?N(e):null;if(n&&C(n))return o=n,!1}}}),o},gc=new Set([`localStorage`,`sessionStorage`]),sue=e=>{let t=e;for(;;){let e=t.parent;if(e&&D(e,`MemberExpression`)&&e.object===t&&e.parent&&D(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return D(t,`CallExpression`)&&D(t.callee,`MemberExpression`)&&O(t.callee)===`catch`},cue=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])_i(n,t);let n=!1;return T(e,e=>{if(n)return!1;if(D(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(D(e,`Identifier`)&&eue.has(e.name)&&!t.has(e.name)&&!A(e,e.name)&&!(D(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(D(r,`Property`)&&!r.computed&&r.key===e)){if(D(r,`MemberExpression`)&&r.object===e){if(D(r.property,`Identifier`)&&gc.has(r.property.name))return;let e=r;for(;e.parent&&D(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&D(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&D(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(D(e,`CallExpression`)){let t=e.callee;if(D(t,`Identifier`)&&t.name===`fetch`&&!A(t,t.name)||D(t,`MemberExpression`)&&tue.has(O(t)??``)&&O(t)!==`catch`&&!sue(e))return n=!0,!1;if(D(t,`MemberExpression`)&&D(t.object,`Identifier`)&&gc.has(t.object.name))return}}),n},lue=e=>{if(!e)return!0;let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`||D(t,`UnaryExpression`)&&t.operator===`void`},uue=(e,t)=>{if(!D(e,`MemberExpression`)||O(e)!==`current`)return!1;let n=N(e.object);if(!D(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=N(r.initializer);return D(i,`CallExpression`)&&sc(i,$le,t)&&lue(i.arguments?.[0])},due=(e,t)=>{if(!D(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return T(e,e=>{if(r)return!1;if(uue(e,t)||D(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(D(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])D(e.id,`Identifier`)&&n.add(e.id.name);continue}if(D(t,`IfStatement`)){let e=t.consequent;return(D(e,`ReturnStatement`)||D(e,`BlockStatement`)&&D(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},_c=y({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(!sc(n,Qle,e.scopes))return;let r=nue(n);if(!r||rue(r,e.scopes,n))return;let i=S(n),a=i.parent;if(!D(a,`VariableDeclarator`)||a.init!==i||!D(a.id,`Identifier`))return;let o=a.id.name,s=b(n);if(!s)return;let c=t.get(s);c||(c=aue(s,e.scopes),t.set(s,c));let l=oc(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=oue(r,s,e.scopes);d&&cue(d)&&(due(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.`}))}}}}),vc=Hn({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.`}),yc=1e3,fue=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]]),pue=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(`.`)),bc=1e3,mue=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),hue=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,gue=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,_ue=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,vue=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,xc=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Sc=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`]),yue=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Cc=(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},wc=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),Tc=y({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(!D(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||wc(n,`px`)||wc(n,`py`))return;let r=Cc(n,hue,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.`})}})}),Ec=y({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||!D(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=I(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||wc(r,`w`)||wc(r,`h`))return;let i=Cc(r,_ue,vue);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.`})}}}}),bue=e=>e.split(/\s+/).filter(Boolean),Dc=y({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(!D(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=I(t);if(!n||!n.includes(`space-`))return;let r=bue(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(xc.has(t)){i=!0;break}}if(!i)return;let a=n.match(yue);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.`})}})}),Oc=Hn({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.`}),kc=e=>{if(!e||!D(e,`JSXOpeningElement`))return null;if(D(e.name,`JSXIdentifier`))return E(e);if(D(e.name,`JSXMemberExpression`)){let t=e.name;for(;D(t,`JSXMemberExpression`);)t=t.property;if(D(t,`JSXIdentifier`))return t.name}return null},Ac=e=>e===`button`||e===`Button`,xue=e=>Ac(e)||e===`a`||e===`Link`,Sue=new Set([`back`,`previous`]),jc=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),Mc=e=>{if(!D(e,`JSXElement`)&&!D(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(D(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(D(e,`JSXExpressionContainer`)){let t=e.expression;if(D(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(D(t,`TemplateLiteral`)){let e=Fe(t);if(e!==null){n.push(e);continue}}return null}if(D(e,`JSXFragment`)){let t=Mc(e);if(t===null)return null;n.push(t);continue}if(D(e,`JSXElement`))return null}return n.join(``).trim()},Cue=e=>{let t=e.parent;for(;t;){if(D(t,`JSXElement`)&&kc(t.openingElement)===`form`)return t;t=t.parent}return null},Nc=e=>{for(let t of e.children??[]){if(D(t,`JSXFragment`)){if(Nc(t))return!0;continue}if(!D(t,`JSXElement`))continue;let e=kc(t.openingElement);if(e&&xue(e)&&Sue.has(jc(Mc(t)??``))||Nc(t))return!0}return!1},Pc=y({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=kc(t.openingElement);if(!n||!Ac(n))return;let r=Mc(t);if(!r)return;let i=jc(r);if(mue.has(i)){if(i===`continue`){let e=Cue(t);if(e&&Nc(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),wue=e=>{for(let t of e.children)if(!(D(t,`JSXText`)&&t.value.trim().length===0)){if(D(t,`JSXElement`))return t.openingElement;if(!(D(t,`JSXExpressionContainer`)&&D(t.expression,`JSXEmptyExpression`)))return}return null},Fc=y({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(E(t.openingElement)!==`details`)return;let n=wue(t);n!==void 0&&(n&&E(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.`}))}})}),Tue=new Set([`dialog`,`alertdialog`]),Eue=[`aria-label`,`aria-labelledby`,`title`],Ic=y({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=>Je(e.filename)?pn:{JSXOpeningElement(t){if(!D(t.name,`JSXIdentifier`))return;let n=E(t);if(n[0]!==n[0]?.toLowerCase())return;let r=P(t.attributes,`role`),i=r?Zn(r):null;(n===`dialog`||i!==null&&Tue.has(i))&&(F(t.attributes)||Eue.some(e=>P(t.attributes,e))||e.report({node:t.name,message:"This dialog has no accessible name, so screen readers announce it as just “dialog.” Add `aria-label` or point `aria-labelledby` at its heading."}))}}}),Lc=`createReactClass`,Rc=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`MemberExpression`)?!!(D(t.object,`Identifier`)&&t.object.name===`React`&&D(t.property,`Identifier`)&&t.property.name===Lc):D(t,`Identifier`)?t.name===Lc:!1},Due=[`observer`,`lazy`,`withTracking`],Oue=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??Due);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},zc=(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},Bc=new WeakMap,Vc=e=>{let t=Bc.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(D(e,`CallExpression`)&&Sa(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)M(e)&&r(e);else M(i)&&r(i);if(n)return}};return r(e),Bc.set(e,n),n},Hc=e=>{let t=!1;return T(e,e=>{if(D(e,`CallExpression`)&&D(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},Uc=e=>D(e,`MemberExpression`)?!e.computed&&D(e.property,`Identifier`)?e.property.name:e.computed&&D(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,Wc=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(D(t,`VariableDeclarator`)&&D(t.id,`Identifier`))return t.id.name;if(D(t,`AssignmentExpression`)){let e=t.left;if(D(e,`Identifier`))return e.name;if(D(e,`MemberExpression`))return Uc(e)}return null},Gc=e=>{let t=e.parent;if(!t||!D(t,`AssignmentExpression`))return!1;let n=t.left;return D(n,`MemberExpression`)&&D(n.object,`Identifier`)&&n.object.name===`module`&&Uc(n)===`exports`},kue=e=>{if(!D(e,`CallExpression`))return!1;if(Rc(e))return!0;let t=e.callee;return D(t,`MemberExpression`)?Uc(t)===`createClass`:!1},Aue=e=>{if(!D(e,`CallExpression`))return!1;let t=e.callee;return D(t,`Identifier`)?t.name===`createContext`:D(t,`MemberExpression`)&&Uc(t)===`createContext`},jue=e=>(D(e,`FunctionExpression`)||D(e,`FunctionDeclaration`))&&!!e.id?.name,Kc=e=>D(e,`CallExpression`)&&e.arguments[0]||null,qc=(e,t)=>{if(!D(e,`CallExpression`))return null;let n=e.callee;if(D(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},Mue=(e,t)=>qc(e,t)!==null,Jc=e=>{if(!e)return!1;if(zc(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},Nue=(e,t)=>{if(!Mue(e,t.additionalHoCs)||!Vc(e))return!1;let n=Wc(e),r=x(e);if(n&&r&&$c(n,r))return!1;let i=qc(e,t.additionalHoCs),a=Kc(e);return!a||i===`forwardRef`&&D(e.parent,`CallExpression`)&&qc(e.parent,t.additionalHoCs)===`memo`&&Kc(e.parent)===e&&Jc(t.reactVersion)?!1:i===`memo`&&D(a,`CallExpression`)?qc(a,t.additionalHoCs)===`forwardRef`?!Jc(t.reactVersion):!1:jue(a)?!1:D(a,`FunctionExpression`)||D(a,`ArrowFunctionExpression`)},Yc=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((D(e,`PropertyDefinition`)||D(e,`MethodDefinition`))&&`static`in e&&e.static&&D(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},Xc=e=>{if(D(e,`Identifier`))return[e.name];if(!D(e,`MemberExpression`))return[];let t=Xc(e.object),n=Uc(e);return n?[...t,n]:t},Zc=new WeakMap,Qc=e=>{let t=Zc.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(D(e,`AssignmentExpression`)&&D(e.left,`MemberExpression`)&&Uc(e.left)===`displayName`){D(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of Xc(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)M(e)&&i(e);else M(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Zc.set(e,a),a},$c=(e,t)=>Qc(t).identifierTargets.has(e),Pue=(e,t)=>Qc(t).memberPathSegments.has(e),el=y({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=Oue(e.settings),n=Mr(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(Ga(e)&&!(e.id&&gs(e.id.name)&&r)&&!Yc(e)){if(e.id){let t=x(e);if(t&&$c(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(Ga(e)&&!(e.id&&gs(e.id.name)&&r)&&!Yc(e)){if(e.id){let t=x(e);if(t&&$c(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!Vc(a))return;if(!n&&!a.id&&Gc(a)){i(a);return}if(!n&&!gt(a,e.scopes,e.cfg)&&!Hc(a)||a.id&&gs(a.id.name)&&r)return;if(D(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=D(e,`Identifier`)?e.name:D(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=x(a);if(n&&gs(n)&&t.ignoreTranspilerName&&(!r||!Pue(n,r))){i(a);return}}let o=Wc(a);if(!(o&&gs(o)&&r)){if(Gc(a)&&!a.id){i(a);return}D(a.parent,`ReturnStatement`)&&!a.id&&i(a)}},ArrowFunctionExpression(t){let a=D(t.parent,`ExportDefaultDeclaration`);if(!Vc(t)&&!a)return;if(!n&&Gc(t)){i(t);return}if(!n&&!gt(t,e.scopes,e.cfg)&&!Hc(t))return;if(D(t.parent,`ArrowFunctionExpression`)||D(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(D(o,`VariableDeclarator`)&&D(o.id,`Identifier`)){if(gs(o.id.name)&&r)return;break}if(D(o,`ExportDefaultDeclaration`)){i(t);return}if(Gc(t)){i(t);return}if(D(o,`FunctionDeclaration`)||D(o,`FunctionExpression`)||D(o,`ArrowFunctionExpression`)||D(o,`ClassDeclaration`)||D(o,`ClassExpression`)||D(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&D(t.parent,`ExportDefaultDeclaration`)&&gt(t,e.scopes,e.cfg)){if(t.id){let e=x(t);if(e&&$c(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&zc(t.reactVersion,16,3)&&Aue(e)){let t=Wc(e);if(t){let n=x(e);if(n&&$c(t,n))return}i(e);return}if(Nue(e,t)){i(e);return}if(!kue(e))return;let n=e.arguments[0];if(!n||!D(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!D(e,`Property`)||e.computed)continue;let t=e.key;if(D(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(D(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&D(o,`VariableDeclarator`)&&D(o.id,`Identifier`)&&gs(o.id.name)&&r)){if(o&&D(o,`AssignmentExpression`)){let e=o.left;if(D(e,`Identifier`)&&gs(e.name)&&r||D(e,`MemberExpression`)&&D(e.property,`Identifier`)&&gs(e.property.name)&&r)return}i(e)}}}}}),tl=y({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.`}),Fue=(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\`.`},Iue=e=>{let t=!1;return T(e,e=>{if(D(e,`CallExpression`))return t=!0,!1}),t},nl=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,rl=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>rl(e,t)&&rl(n,t)),Lue=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,il=(e,t)=>{if(t.abortControllerSymbolId!==null&&rl(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||nl(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Lue(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=il(r,t),a=il(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},Rue=(e,t)=>il(e,t)!==`not-cancelled`,al=e=>{if(!e)return null;let t=N(e);return D(t,`MemberExpression`)?!t.computed&&D(t.property,`Identifier`)?t.property.name:t.computed&&D(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},zue=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Bue=(e,t)=>{if(D(e,`IfStatement`)){if(e.test===t)return!0;let n=rn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(D(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=rn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(D(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=rn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return D(e,`TryStatement`)?e.finalizer===t:D(e,`SwitchStatement`)?e.discriminant===t:D(e,`ForStatement`)?e.init===t||e.test===t:D(e,`ForInStatement`)||D(e,`ForOfStatement`)?e.right===t:D(e,`WhileStatement`)?e.test===t:!1},ol=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||zue.has(e.type)&&!Bue(e,r)&&!n?.(e,r))return!0;r=e}return!1},sl=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=N(e);if(D(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!D(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&D(e,`SpreadElement`)){i=null;continue}if(!D(e,`Property`))return null;let r=w(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=N(e.value);if(D(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},Vue=e=>{if(!e)return!1;let t=N(e);if(D(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!D(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!D(e,`Property`))return null;let t=w(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=N(e.value);if(!D(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Hue=new Set([...Tt,`useInsertionEffect`]),cl=e=>e.references.every(e=>e.flag===`read`),Uue=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&cl(e),ll=e=>e.kind===`const`&&D(e.declarationNode,`VariableDeclarator`)&&D(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,ul=(e,t,n)=>{if(!D(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!Uue(r)||n.has(r.id)||r.kind===`const`&&!ll(r))return null;n.add(r.id);let i=r.initializer?N(r.initializer):null;if(r.kind===`const`&&D(i,`Identifier`)){let e=ul(i,t,n);if(e)return e}return r},dl=(e,t)=>{if(!e)return null;let n=N(e);if(C(n))return{node:n,isConcreteFunction:!0};if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r)return null;let i=r.initializer?N(r.initializer):null;return i&&C(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},fl=(e,t)=>{let n=N(e);if(D(n,`Identifier`)){let e=ul(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?N(e.initializer):null;return D(n,`NewExpression`)&&D(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:D(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)){let e=fl(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},pl=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(D(r,`Literal`)&&typeof r.value==`string`)return r.value;if(D(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!D(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!ll(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),pl(i.initializer,t,n))},Wue=(e,t)=>{let n=hl(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=N(r);if(!n||!D(i,`NewExpression`)||!D(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=N(n);if(!D(a,`Identifier`))return null;let o=ul(a,t,new Set),s=o?.initializer?N(o.initializer):null;if(!D(s,`NewExpression`)||!D(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=fl(n,t),l=pl(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},ml=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=N(r.initializer);return!D(i,`NewExpression`)||!D(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},hl=(e,t,n)=>{if(!e)return null;let r=N(e);return!D(r,`MemberExpression`)||(al(r)??(n&&r.computed?pl(r.property,n):null))!==t?null:r.object},Gue=(e,t)=>D(e,`ObjectPattern`)?e.properties.some(e=>!D(e,`Property`)||w(e,{allowComputedString:!0})!==`signal`?!1:(D(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,gl=(e,t,n=new Set)=>{let r=N(e),i=hl(r,`signal`);if(i)return ml(i,t);if(!D(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!cl(a))return null;n.add(a.id);let o=a.declarationNode;if(!D(o,`VariableDeclarator`))return null;if(D(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=N(a.initializer);if(D(e,`Identifier`))return gl(e,t,n);let r=hl(e,`signal`);return r?ml(r,t):null}return Gue(o.id,a.bindingIdentifier)?ml(a.initializer,t):null},_l=(e,t,n)=>{let r=N(e);if(D(r,`UnaryExpression`)&&r.operator===`!`){let e=_l(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(D(r,`BinaryExpression`)){let e=rn(r.left),i=rn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=_l(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=hl(r,`aborted`);return i&&gl(i,n)===t?`aborted`:null},Kue=(e,t,n,r)=>{if(D(e,`IfStatement`)||D(e,`ConditionalExpression`)){let i=_l(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!D(e,`LogicalExpression`)||e.right!==t)return!1;let i=_l(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},que=(e,t,n,r)=>!ol(e,t,(e,t)=>Kue(e,t,n,r)),Jue=(e,t)=>{let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r?.initializer)return null;let i=N(r.initializer);if(!D(i,`CallExpression`))return null;let a=hl(i.callee,`bind`);if(!a)return null;let o=hl(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=ml(o,t),l=ml(s,t);return c!==null&&c===l?c:null},Yue=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=N(e);if(!D(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!D(e,`Property`))return n;if(w(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=gl(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},vl=(e,t,n)=>{let r=hl(e.callee,t,n);if(!r)return null;let i=fl(r,n),a=pl(e.arguments?.[0],n),o=dl(e.arguments?.[1],n),s=sl(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Xue=(e,t)=>{let n=hl(e.callee,`call`);if(!n||!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!cl(r)||!D(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!D(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!D(e,`Property`))return!1;let t=D(e.value,`AssignmentPattern`)?e.value.left:e.value;return w(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=fl(i.init,t),s=fl(a,t);if(o===null||s===null||o!==s)return null;let c=pl(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:dl(e.arguments?.[2],t),capture:sl(e.arguments?.[3],{allowComputedString:!0})}},Zue=(e,t)=>{if(!e)return null;let n=N(e);if(C(n))return n.body;if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r||!r.initializer)return null;let i=N(r.initializer);return C(i)?i.body:null},Que=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!D(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=D(o,`ReturnStatement`);return T(e,o=>{if(o!==e&&C(o)||D(o,`ClassDeclaration`)||D(o,`ClassExpression`))return!1;if(D(o,`CallExpression`)){if(ol(o,e))return;let r=hl(o.callee,`addEventListener`,t),a=r?fl(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=vl(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=Yue(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:Vue(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Wue(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&&!Iue(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(D(o,`ReturnStatement`)){a+=1;let e=Zue(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},$ue=(e,t)=>{let n=N(e.callee);if(!D(n,`Identifier`))return null;let r=ul(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=N(r.initializer);return!C(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},yl=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=D(e,`BlockStatement`)?e.body[e.body.length-1]:null,d=e=>{i.push(...e.removals),c||=e.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall;for(let t of e.abortedControllerSymbolIds)a.add(t);o.push(...e.exhaustiveBranches)},f=e=>{let r=D(e,`BlockStatement`)?e.body:[e];for(let e of r){if(D(e,`BreakStatement`)||D(e,`ContinueStatement`))return!0;if(D(e,`BlockStatement`)){if(f(e))return!0;continue}if(D(e,`IfStatement`)){let r=rn(e.test);if(r!==null){let i=yl(e.test,t,new Set(n),!0);if(!i)return!0;d(i);let a=r?e.consequent:e.alternate;if(a&&f(a))return!0;continue}}let r=yl(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return T(e,p=>{if(p!==e&&C(p)||D(p,`ClassDeclaration`)||D(p,`ClassExpression`))return!1;if(D(p,`ReturnStatement`)&&p===u)return;if(D(p,`ReturnStatement`)||D(p,`ThrowStatement`)||r&&(D(p,`BreakStatement`)||D(p,`ContinueStatement`)))return s=!0,!1;if(D(p,`ForOfStatement`)){let t=N(p.right);return D(t,`ArrayExpression`)&&t.elements.some(e=>e&&!D(e,`SpreadElement`))&&!ol(p,e)&&f(p.body),!1}if((D(p,`IfStatement`)||D(p,`ConditionalExpression`))&&p.alternate&&rn(p.test)===null&&!ol(p,e)){let e=yl(p.consequent,t,new Set(n)),r=yl(p.alternate,t,new Set(n));e&&r&&(o.push({alternate:r,consequent:e}),c||=e.hasUnknownAbortCall&&r.hasUnknownAbortCall,l||=e.hasUnknownRemovalCall&&r.hasUnknownRemovalCall);let i=yl(p.test,t,new Set(n));return i&&d(i),!1}if(!D(p,`CallExpression`))return;let m=ol(p,e),h=hl(p.callee,`removeEventListener`,t);if(h&&!m){let e=vl(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Xue(p,t);e&&i.push(e)}let g=hl(p.callee,`abort`);if(g){let n=ml(g,t);n===null?m||(c=!0):(!m||que(p,e,n,t))&&a.add(n);return}if(m)return;let _=Jue(p,t);if(_!==null){a.add(_);return}let v=$ue(p,t);if(!v||n.has(v.symbolId))return;n.add(v.symbolId);let ee=yl(v.body,t,n);ee&&d(ee)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},ede=(e,t)=>{let n=Que(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=yl(e,t);for(let e of n.cleanupBodies){let n=yl(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},bl=y({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(!j(t,Hue,e.scopes))return;let n=Gn(t);if(!C(n))return;let r=ede(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&&rl(r.setupAbortAnalysis,t.abortControllerSymbolId)||Rue(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=nl(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:Fue(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),xl=(e,t)=>{if(!e)return null;let n=N(e);if(D(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(D(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=Ya({node:n,scopes:t});return r?`reference:${r}`:null},Sl=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}]]),tde=new Map([...Sl.values()].map(e=>[e.registerMethod,e])),nde=new Set([`off`,`removeEventListener`,`removeListener`]),Cl=e=>!!(e&&ki(N(e))),wl=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return Cl(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if(Cl(a))return{method:n,receiverKey:r,eventKey:xl(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&Cl(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},Tl=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!n)return;let r=[],i=[];Xa(n,t=>{if(!D(t,`CallExpression`))return;let n=N(t.callee);if(!D(n,`MemberExpression`))return;let i=O(n);if(!i)return;let a=Ya({node:n.object,scopes:e.scopes});if(a===null)return;let o=tde.get(i);if(!o)return;let s=wl(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of ac(n))Xa(t,t=>{if(!D(t,`CallExpression`))return;let n=N(t.callee);if(!D(n,`MemberExpression`))return;let r=O(n);if(!r||nde.has(r))return;let a=Sl.get(r);if(!a)return;let o=Ya({node:n.object,scopes:e.scopes});if(o===null)return;let s=wl(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Sl.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.`})}}})}),El=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=b(n);if(!i||!C(i)||i===t||!D(i.body,`BlockStatement`)||!Va(n,Xe(i).filter(e=>{let t=e.argument?N(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=Es(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 l=S(s.identifier),u=l.parent,d=D(u,`CallExpression`)?S(u):null,f=d?.parent;if(!D(u,`CallExpression`)||u.callee!==l||!D(f,`AssignmentExpression`)||f.operator!==`=`||f.right!==d||!D(f.left,`Identifier`)||b(f)!==t)return!1;let p=e.scopes.symbolFor(f.left),m=p?.initializer?N(p.initializer):null;if(!p||p.kind!==`let`&&p.kind!==`var`||!D(p.declarationNode,`VariableDeclarator`)||b(p.declarationNode)!==t||!m||!C(m)||!D(m.body,`BlockStatement`)||m.body.body.length!==0)return!1;let h=new Map;for(let e of p.references){let t=S(e.identifier),n=t.parent;if(n===f&&f.left===t)continue;if(!D(n,`CallExpression`)||n.callee!==t)return!1;let r=b(n);if(!r)return!1;let i=h.get(r)??[];i.push(n),h.set(r,i)}return Va(f,Xe(t).filter(t=>{let n=t.argument?c(t.argument,e.scopes):null;return!!(n&&Ha(n,h.get(n)??[],e))}),e,f)},Dl=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=p(e),c=p(t);if(!i||!a||!o||s===null||c===null)return!0;if(!V(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},Ol=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),rde=new Set([...Ol,`find`,`findIndex`,`sort`]),kl=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),Al=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),jl=new Set([...Al,`Map`,`Set`]),Ml=(e,t,n)=>{let r=N(e);return D(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},Nl=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n);return!!((r===`from`||r===`of`)&&Ml(n.object,`Array`,t))},ide=(e,t)=>{let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&Ml(n.object,`Object`,t))},Pl=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ArrayExpression`))return r.elements.length===0;if(D(r,`NewExpression`)){let e=N(r.callee);return!!(r.arguments.length===0&&D(e,`Identifier`)&&jl.has(e.name)&&t.isGlobalReference(e))}if(D(r,`CallExpression`)){let e=N(r.callee);if(Nl(r,t)){if((D(e,`MemberExpression`)?O(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!D(i,`SpreadElement`)&&Pl(i,t,n))}return!!(D(e,`MemberExpression`)&&O(e)!==`concat`&&kl.has(O(e)??``)&&Pl(e.object,t,n))}if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Pl(i.initializer,t,n))},Fl=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ArrayExpression`))return!0;if(D(r,`NewExpression`)){let e=N(r.callee);return!!(D(e,`Identifier`)&&Al.has(e.name)&&t.isGlobalReference(e))}if(D(r,`CallExpression`)){if(Nl(r,t)||ide(r,t))return!0;let e=N(r.callee);return!!(D(e,`MemberExpression`)&&kl.has(O(e)??``)&&Fl(e.object,t,n))}if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),Fl(i.initializer,t,n))},Il=(e,t,n=new Set)=>{let r=N(e);if(!D(r,`NewExpression`)){if(!D(r,`Identifier`))return Fl(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!D(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),Il(e.initializer,t,n))}let i=N(r.callee);return!!(D(i,`Identifier`)&&jl.has(i.name)&&t.isGlobalReference(i))},Ll=(e,t,n)=>{let r=N(e.callee);if(!D(r,`MemberExpression`))return!1;let i=O(r);if(i===`from`&&Ml(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!D(t,`SpreadElement`)&&!Pl(t,n))}return!!(i&&rde.has(i)&&e.arguments[0]===t&&!Pl(r.object,n)&&(i===`forEach`?Il(r.object,n):Fl(r.object,n)))},Rl=(e,t)=>{let n=N(e.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?!1:D(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:Ol.has(n.property.name)&&e.arguments[0]===t},zl=e=>{let t=e.parent;return!!(D(t,`CallExpression`)&&Rl(t,e))},ade=new Set([`then`,`catch`,`finally`]),Bl=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&ade.has(e.property.name)&&N(e.object).type===`CallExpression`,Vl=e=>{let t=e.parent;for(;t&&vt.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>N(t)===e)?null:Bl(N(t.callee))?t:null},ode=(e,t,n)=>{let r=new Set([e]),i=new Map,a=new Set,o=new Set,s=[e],c=e=>{if(e.type!==`Identifier`)return null;let t=n?.symbolFor(e);return t?`symbol:${String(t.id)}`:`name:${e.name}`},l=e=>{let t=e&&N(e);!C(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;T(e,n=>{if(n!==e&&C(n)){if(n.type===`FunctionDeclaration`&&n.id?.type===`Identifier`){let e=c(n.id);e&&i.set(e,n)}return!1}if(n.type===`VariableDeclarator`&&n.id.type===`Identifier`){let e=n.init?N(n.init):null;if(C(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=N(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=N(n.callee);if(C(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&Bl(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},Hl=(e,t)=>ode(e,!0,t),Ul=(e,t)=>ode(e,!1,t),sde=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!C(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(C(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),T(e,n=>{if(n!==e&&C(n))return!1;if(n.type===`CallExpression`){a(c(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!Ll(n,e,t)||a(c(e,t))}}))}return n},Wl=e=>{let t=b(e);return t?bs(t):null},Gl=e=>{let t=e.parent;for(;t;){if(D(t,`VariableDeclarator`))return t;if(D(t,`FunctionDeclaration`)||D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`)||D(t,`Program`))return null;t=t.parent??null}return null},cde=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),lde=new Set([`useMemo`,`useState`]),ude=new Set([`startTransition`]),dde=(e,t)=>{let n=N(e);return!D(n,`MemberExpression`)||n.computed||!D(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!D(n.property,`Identifier`)?!1:n.property.name===`from`},fde=(e,t)=>{let n=N(e);if(!D(n,`Identifier`))return!1;let r=A(n,n.name);if(!r?.initializer)return!1;let i=Gl(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&D(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&dde(i.init,t))},Kl=(e,t,n=new Set)=>{let r=N(e);if(!D(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),Kl(i.initializer,t,n))},pde=(e,t,n,r)=>{let i=N(e);if(D(i,`ArrayExpression`))return!0;if(D(i,`Identifier`)){let e=k(i,t);return!!(e?.kind===`const`&&e.initializer&&!Gt(i,r,n,t)&&pde(e.initializer,t,n,r))}if(D(i,`NewExpression`))return Kl(i.callee,t);if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(Kl(a,t))return!0;if(!D(a,`MemberExpression`))return!1;let o=N(a.object);return!!(D(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&D(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},ql=(e,t,n={})=>{let r=S(e),i=r.parent;if(D(i,`NewExpression`)){let e=N(i.callee);return!!(t&&i.arguments?.[0]===r&&D(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return D(i,`CallExpression`)?i.callee===r||(t?j(i,lde,t,{allowGlobalReactNamespace:!0}):Jn(i,lde))&&i.arguments?.[0]===r||t&&j(i,ude,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(dde(i.callee,t)||fde(i.callee,t))?!0:D(i.callee,`MemberExpression`)&&!i.callee.computed&&D(i.callee.property,`Identifier`)&&cde.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&pde(i.callee.object,t,i,i.callee.property.name))):!1},mde=new WeakMap,U=(e,t)=>{let n=b(e),r=n??e,i=mde.get(t);i||(i=new WeakMap,mde.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(bs(n))return i.set(r,n),n;if(!ql(n,t))return i.set(r,null),null;n=b(n)}return i.set(r,null),null},Jl=e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Yl=e=>e?Ae(e)?!0:D(e,`BlockStatement`)?Yl(e.body.at(-1)):D(e,`ContinueStatement`)||D(e,`BreakStatement`):!1,hde=new Set([`createRef`,`useRef`]),Xl=(e,t,n={})=>{let r=D(e,`MemberExpression`)?N(e.object):null;if(!D(e,`MemberExpression`)||O(e)!==`current`||!D(r,`Identifier`))return null;let i=k(r,t);if(!i?.initializer)return null;let a=N(i.initializer);return D(a,`CallExpression`)&&j(a,n.includeCreateRef?hde:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Zl=(e,t,n=new Set)=>{let r=N(e),i=Xl(r,t);if(i)return i;if(!D(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=$o(a);return o?(n.add(a.id),Zl(o,t,n)):null},gde=(e,t)=>Zl(e,t)!==null,Ql=(e,t)=>{T(e,e=>{if(C(e))return!1;t(e)})},$l=e=>!D(e,`CallExpression`)||!D(e.callee,`MemberExpression`)||!D(e.callee.property,`Identifier`)?null:e.callee.property.name,_de=e=>{let t=$l(e);return t!==null&&Ie.has(t)},eu=e=>{let t=$l(e);return t!==null&&(Ie.has(t)||t===`observe`)?t:null},vde=e=>eu(e)!==null,tu=e=>{let t=$l(e);return t===null||!Ate.has(t)?!1:t===`listen`?(D(e,`CallExpression`)?e.arguments??[]:[]).some(e=>D(e,`ArrowFunctionExpression`)||D(e,`FunctionExpression`)):!0},yde=e=>{let t=bn(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||D(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(D(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(D(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=bt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},bde=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return yde(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),D(r.declarationNode,`VariableDeclarator`)&&D(r.declarationNode.id,`ObjectPattern`)){let e=nu(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!D(t,`Property`)||(D(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=w(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return nu(r.initializer,t,n)},nu=(e,t,n=new Set)=>{let r=N(e);if(D(r,`Identifier`))return bde(r,t,n);if(!D(r,`MemberExpression`))return null;let i=O(r);if(!i)return null;let a=nu(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},ru=e=>{let t=e,n=t.parent;for(;n;){if(D(n,`AssignmentExpression`))return n.left===t;if(D(n,`UpdateExpression`)||D(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(D(n,`ForInStatement`)||D(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},xde=new Set([...Tt,`useInsertionEffect`]),Sde=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),Cde=new Set([`@react-native-community/netinfo`]),wde=new Set([`events`,`node:events`,`react-native`]),Tde=new WeakMap,Ede=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),Dde=new Set([`clear`,`delete`,`set`]),Ode=new WeakMap,kde=new WeakMap,Ade=new WeakMap,jde=new WeakMap,Mde={subscribe:`subscription`,timer:`timer`,socket:`connection`},iu=(e,t)=>{if(Yn(e,xde,t.scopes))return!0;let n=N(e.callee);return!!(D(n,`Identifier`)&&Sde.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},au=e=>D(e,`NewExpression`)&&D(e.callee,`Identifier`)&&be.has(e.callee.name),W=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=N(e);if(D(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 W(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=D(o,`Property`)?w(o):null;if(l&&D(s,`ObjectPattern`)&&D(c,`VariableDeclarator`)&&c.id===s){let i=W(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?N(e.initializer):null;return e.kind===`const`&&u&&(D(u,`Identifier`)||D(u,`MemberExpression`))?W(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(D(i,`MemberExpression`)&&!i.computed){if(!D(i.property,`Identifier`))return null;let e=W(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(D(i,`ThisExpression`))return`this`;if(D(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(C(i)){let e=p(i);return e===null?null:`function:${e}`}return null},ou=(e,t)=>{if(!e)return null;let n=N(e),r=[];for(;D(n,`MemberExpression`)&&!n.computed;){if(!D(n.property,`Identifier`))return null;r.unshift(n.property.name),n=N(n.object)}if(!D(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(D(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(D(a,`Property`)&&D(a.parent,`ObjectPattern`)){let t=w(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&D(o,`VariableDeclarator`)&&o.id===e&&D(s,`VariableDeclaration`)&&s.declarations.length===1&&D(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Zde(c.right,t);if(e){let i=N(c.right),a=D(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?N(a.initializer):null,s=D(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&M(e)?e:null;for(let e of n){let n=t?N(t):null;if(typeof e==`number`&&D(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&M(r)?r:null}else if(typeof e==`string`&&D(n,`ObjectExpression`)){let r=n.properties.find(t=>D(t,`Property`)&&w(t)===e);t=D(r,`Property`)&&M(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=N(e),i=e=>{if(!D(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 D(r,`Literal`)||D(r,`ArrayExpression`)||D(r,`ObjectExpression`)||C(r)?!0:i(r)||n[0]===1&&D(r,`CallExpression`)&&i(N(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?N(i.initializer):null;if(i?.kind===`const`&&D(a,`CallExpression`)){let e=W(a.callee,t),n=[];for(let e of a.arguments){if(!M(e))continue;let r=ou(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=W(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&&!C(o);)o=o.parent;if(!o||!C(o))return null;let s=Iu(o);if(!s)return null;let c=N(s.callee);if(!D(c,`MemberExpression`))return null;let l=W(c.object,t);if(!l)return null;let u=o.params[0],d=D(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=D(u,`ObjectPattern`)?Si(i.bindingIdentifier):null,p=d?W(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)??W(e,t),lu=(e,t)=>{if(!e)return null;let n=cu(e,t);if(n)return n;let r=N(e);if(D(r,`CallExpression`)){let e=cu(r.callee,t),n=r.arguments.flatMap(e=>{if(!M(e))return[];let n=lu(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!D(r,`BinaryExpression`)&&!D(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},Nde=(e,t)=>{let n=N(e);if(D(n,`CallExpression`)&&lu(n,t))return n;if(!D(n,`Identifier`))return Fu(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?N(r.initializer):null;return!r||!i?Fu(n,t):D(i,`ObjectExpression`)?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(!D(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=N(n.callee);if(!D(r,`MemberExpression`))return!1;let i=w(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:D(i,`Identifier`)||D(i,`MemberExpression`)?null:Fu(n,t)},uu=(e,t,n)=>{let r=ou(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>sl(e?N(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?Nde(e,t):null;if(e&&!i)return null;let a=sl(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=N(i);if(!D(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(!D(e,`Property`)){s=null;continue}let n=w(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},Pde=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`ObjectExpression`))return ou(n,t);let r=null;for(let e of n.properties??[]){if(!D(e,`Property`)){r=null;continue}let n=w(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=Zl(e,t.scopes);if(r)return r;let i=N(e);for(;D(i,`MemberExpression`);){let e=Zl(i,t.scopes)??Xl(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=N(i.object)}if(D(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(D(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&pu(r.left,t)){let e=W(r.left,t);return e?{anchor:r,key:e}:null}if(!D(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=w(r),a=r.parent;if(!i||!D(a,`ObjectExpression`))return null;let o=S(a),s=o.parent;if(!D(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!pu(s.left,t))return null;let c=W(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(!D(i,`VariableDeclarator`)||i.init!==n||!D(i.id,`Identifier`)||!D(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},Fde=(e,t,n)=>{let r=w(e),i=N(e.object),a=D(i,`Identifier`)?n.scopes.symbolFor(i):null,o=b(t);if(!r||!a||!o||!C(o))return null;for(let e of a.references){let i=S(e.identifier),a=i.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!pu(a.left,n)||b(a)!==o||!kd(t,[a],o,n))continue;let s=W(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},Ide=(e,t)=>{let n=hu(e,t);if(n)return n;let r=S(e),i=r.parent;return D(i,`AssignmentExpression`)&&i.right===r&&D(i.left,`MemberExpression`)?Fde(i.left,e,t):null},gu=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`MemberExpression`)){if(pu(i,n)){let e=W(i,n);return e?new Set([e]):null}let e=w(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(D(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(!D(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?N(a.initializer):null;if(D(s,`CallExpression`)&&j(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=W(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=b(t),l=a.references.flatMap(e=>{let r=S(e.identifier),i=r.parent;if(!c||!D(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||b(i)!==c||!pu(i.left,n)||!kd(t,[i],c,n))return[];let a=W(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=b(a.bindingIdentifier);if(!u||!C(u))return null;let d=u.params.findIndex(e=>N(e)===a.bindingIdentifier),f=Es(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(D(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!M(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(!(D(i,`ArrayExpression`)&&D(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},Lde=(e,t)=>{let n=Ide(e,t);if(n)return new Set([n.key]);let r=S(e),i=r.parent;return!D(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(D(i,`VariableDeclarator`)&&i.init===r){let r=W(i.id,t);return n?hu(e,t)?.key??r:r}if(D(i,`AssignmentExpression`)&&i.right===r){if(n&&D(i.left,`MemberExpression`)){let n=Fde(i.left,e,t);if(n)return n.key}return W(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=N(e);if(D(n,`MemberExpression`))return yu(n.object,t);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?bn(r):null;return typeof i?.source.value==`string`?i.source.value:null},Rde=(e,t)=>{if(e.kind!==`subscribe`||!D(e.node,`CallExpression`))return!1;if(tu(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||wu(e.node,`addListener`,t))return!1;let n=N(e.node.callee);if(!D(n,`MemberExpression`))return!1;let r=yu(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?Cde.has(r):r!==`react-native`;let i=N(n.object),a=Fu(i,t),o=a&&D(a,`NewExpression`)?yu(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&wde.has(o))return!1;let s=D(i,`Identifier`)?t.scopes.symbolFor(i):null,c=D(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!D(i,`Identifier`)||c||s!==null&&(ts(s)!==null||$o(s)!==null)?ss(i,t.scopes).length===0:!1},zde=(e,t)=>{let n=N(e),r=nu(n,t.scopes);return D(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},bu=(e,t,n=new Set)=>{let r=N(e);if(D(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?N(e.initializer):null,a=D(i,`CallExpression`)?nu(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&bu(i,t,n))}if(!D(r,`CallExpression`))return!1;let i=N(r.callee);return!!(D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`getParent`&&bu(i.object,t,n))},xu=(e,t)=>{if(Rde(e,t))return!0;if(!D(e.node,`CallExpression`))return!1;let n=N(e.node.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&zde(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&bu(n.object,t)},Bde=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&W(r,n)===t.handleKey&&!i.references.some(e=>ru(e.identifier)))},Vde=(e,t,n)=>Bde(e,t,n)&&xu(t,n),Hde=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!fd.has(t)||n.receiverKey===null||e!==n.receiverKey||!D(n.node,`CallExpression`))return!1;let i=N(n.node.callee);if(!D(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=N(e);if(D(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=$o(e);if(!i)return`symbol:${e.id}`;let a=N(i);if(!D(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),Su(a,t,o)??`symbol:${e.id}`}if(C(r)){let e=p(r);return e===null?null:`function:${e}`}return null},Ude=(e,t,n)=>{if(!e)return null;let r=N(e);if(!D(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!D(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=b(t);return!D(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!kd(t,[s],c,n)?null:`symbol:${i.id}`},Cu=(e,t,n=new Set)=>{let r=N(e);if(ss(r,t.scopes).includes(`MediaQueryList`))return!0;if(D(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=$o(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),Cu(i,t,a)}if(!D(r,`CallExpression`)||!j(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=Gn(r,t.scopes);return!!(i&&ge(i,t.scopes,e=>{let r=N(e);return D(r,`Literal`)&&r.value===null||D(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||Cu(r,t,new Set(n))},t.cfg,`every`))},wu=(e,t,n)=>{let r=N(e.callee);return e.arguments?.length===1&&D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===t&&Cu(r.object,n)},Tu=(e,t)=>{let n=N(e.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:wu(e,`addListener`,t)?{receiverKey:Su(n.object,t)??Ude(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`||!D(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&M(t)?t:null},Wde=(e,t)=>{let n=e;for(;D(n,`CallExpression`);){let e=D(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!D(e,`MemberExpression`)||e.computed||!D(e.property,`Identifier`))return null;if(e.property.name===`channel`)return cu(e.object,t);n=N(e.object)}return null},Gde=(e,t)=>{let n=e,r=S(n);for(;D(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=S(r.parent),t=e.parent;if(!D(t,`CallExpression`)||t.callee!==e)break;n=t,r=S(n)}return n===e||eu(n)!==`subscribe`||Wde(n,t)===null?null:_u(n,t,!0)},Kde=(e,t)=>{let n=Hl(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!C(e)||T(e.body,i=>{if(i!==e.body&&C(i))return!1;if(!D(i,`CallExpression`))return;let a=null;if(D(i.callee,`Identifier`)&&ve.has(i.callee.name)){let e=i.arguments?.[0];a=e&&M(e)?e:null}else{let e=i.arguments?.find(e=>M(e)&&Vl(e)===i);e&&M(e)&&(a=e);let n=eu(i);n!==null&&(a=Eu({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...Tu(i,t)}))}let o=a?c(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},qde=(e,t)=>{let n=[];if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`))return n;let r=null;if(D(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];D(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=Kde(e,t);return T(e,a=>{if(a!==e&&C(a)&&(a===r||!i.has(a)&&!zl(a)))return!1;if(au(a)){n.push({kind:`socket`,node:a,resourceName:D(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:_u(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!D(a,`CallExpression`))return;if(D(a.callee,`Identifier`)&&ve.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Fd(a)||Id(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=eu(a);if(o!==null){let e=Tu(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Gde(a,t):null)??_u(a,t,!0),...e})}}),n.filter(e=>V(e.node,t))},Du=(e,t,n)=>{let r=e,i=b(r);for(;i&&zl(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!D(e,`CallExpression`))break;r=e,i=b(r)}return Va(r,t,n,e)},Jde=(e,t,n)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.body,`BlockStatement`))return t;let r=[];return Ql(e.body,e=>{D(D(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=p(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=p(r);return i!==null&&i>t&&Cd(r,e,n)});return!Du(e.node,i,n)})},Ou=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=D(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!ru(e.identifier));return r&&D(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&D(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Yde=(e,t)=>{if(!e)return!1;let n=N(e),r=new Set;if(T(n,e=>{if(!D(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 T(e,e=>{if(!D(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&&!C(a);){if(D(a,`ForOfStatement`)){let e=N(a.left);if(!D(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},ku=(e,t)=>{if(!D(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!D(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!D(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!D(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Au=(e,t,n)=>{if(!D(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(D(i,`ForOfStatement`)&&i.right===r||D(i,`MemberExpression`)&&i.object===r&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`push`&&D(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(D(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return D(i.id,`Identifier`)&&D(e,`VariableDeclaration`)&&e.kind===`const`?Au(i.id,t,n):!1}return!1})):!1},Xde=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(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?N(i.initializer):null,o=e=>{if(!e)return!1;let t=N(e);if(D(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(D(t,`ArrayExpression`))return!0;if(!D(t,`CallExpression`))return!1;let n=N(t.callee);return!!(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Au(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:D(a,`Identifier`)?Xde(a,t,n):null},Zde=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Tde.get(t);if(i||(i=new Map,Tde.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Xde(e,t);return i.set(r.id,a),a},Qde=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(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?N(i.initializer):null,o=e=>{if(!e)return!1;let t=N(e);return D(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):D(t,`ArrayExpression`)&&t.elements.every(e=>e===null||D(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:D(a,`Identifier`)?Qde(a,t,n):null},ju=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=Ou(n,t);if(r)return Qde(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!C(a);)a=a.parent;if(!a||!C(a))return null;let o=a.parent;if(!D(o,`CallExpression`))return null;let s=N(o.callee);if(D(s,`MemberExpression`)&&!s.computed&&D(s.property,`Identifier`)){if(D(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return W(o.arguments[0],t);if(o.arguments?.[0]===a)return W(s.object,t)}return null},$de=(e,t)=>{let n=Ou(e,t);return n?W(n.right,t):ju(e,t)},efe=(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=N(e);if(efe(i,W(a,t),n),!D(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?N(o.initializer):null,l=null,u=n;if(D(c,`Identifier`))l=c;else if(D(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&D(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,p(c)??1/0))}else if(D(c,`CallExpression`)){let e=N(c.callee);if(D(e,`MemberExpression`)&&!e.computed&&D(e.property,`Identifier`)){let r=e.property.name,i=D(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=M(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,p(c)??1/0))}}if(!l)return i;for(let[e,n]of Mu(l,t,u,s))efe(i,e,n);return i},tfe=(e,t)=>{let n=Ou(e,t);if(n)return Mu(n.right,t);let r=e?N(e):null;if(!D(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&&!C(a);)a=a.parent;let o=a?.parent,s=D(o,`CallExpression`)?N(o.callee):null;return D(s,`MemberExpression`)?Mu(s.object,t):new Map},nfe=(e,t,n)=>{let r=Pu(t.node,n);return r!==null&&tfe(e,n).has(r)},rfe=(e,t)=>{if(!e)return null;let n=N(e);if(!D(n,`Identifier`))return null;let r=Ou(n,t)?.right;return r?Zde(r,t):null},ife=(e,t)=>{if(!e)return!1;let n=N(e);return D(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},afe=(e,t)=>{if(!e)return null;let n=N(e);if(!D(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},ofe=(e,t)=>{if(!D(e,`BreakStatement`)&&!D(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(D(n,`LabeledStatement`)&&n.label.name===e.label.name)return R(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return n===t;if(D(e,`BreakStatement`)&&D(n,`SwitchStatement`))return!1;n=n.parent}return!1},sfe=(e,t,n)=>{if(!(D(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=b(e),i=!1,a=!1;return T(t.body,o=>{if(i||a||o!==t.body&&C(o))return!1;if(D(o,`ReturnStatement`)||D(o,`ThrowStatement`)&&(!r||!Dl(o,e,r,n))||D(o,`BreakStatement`)&&ofe(o,t))return i=!0,!1;if(D(o,`ContinueStatement`)&&ofe(o,t)&&(p(o)??-1)<(p(e)??0))return a=!0,!1}),!i&&!a},Nu=(e,t,n)=>{let r=S(e).parent;return!!(D(r,`ExpressionStatement`)&&sfe(r,t,n))},cfe=(e,t,n)=>{let r=S(e),i=D(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!C(o);){if(D(o,`ForOfStatement`)){if(!sfe(i,o,n))return null;let e=W(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},lfe=(e,t,n)=>cfe(e,t,n)!==null,ufe=e=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!D(t,`CallExpression`))return null;let n=N(t.callee);return!D(n,`MemberExpression`)||n.computed||!D(n.property,`Identifier`)?null:D(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},dfe=(e,t)=>{let n=b(e);if(!n||!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return null;let r=ufe(n);if(!r)return null;if(D(n.body,`BlockStatement`)){let r=S(e),i=r.parent,a=i?.parent;if(!D(i,`VariableDeclarator`)||i.init!==r||!D(i.id,`Identifier`)||!D(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];T(n.body,e=>{if(e!==n.body&&C(e))return!1;D(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=D(s,`ReturnStatement`)&&s.argument?N(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!D(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!Du(e,[s],t))return null}else if(S(e)!==n.body)return null;let i=S(r),a=i.parent;return D(a,`VariableDeclarator`)&&a.init===i?W(a.id,t):null},ffe=(e,t)=>{let n=S(e),r=n.parent,i=D(r,`CallExpression`)?N(r.callee):null;if(!D(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!D(i,`MemberExpression`)||i.computed||!D(i.object,`Identifier`)||!D(i.property,`Identifier`)||i.property.name!==`push`||!ku(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?N(a.initializer):null;return a&&D(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Pu=(e,t)=>{let n=ffe(e,t);if(n)return`symbol:${n.id}`;let r=dfe(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(C(a))return null;if(D(a,`VariableDeclarator`)&&a.init===i)return W(a.id,t);i=a,a=i.parent}return null},pfe=(e,t)=>{if(!D(e.node,`CallExpression`))return null;let n=N(e.node.callee);if(!D(n,`MemberExpression`)||n.computed)return null;let r=N(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(!D(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=N(n.callee);return D(r,`MemberExpression`)&&!r.computed&&D(r.object,`Identifier`)&&D(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(b(o)!==b(e.node)||!Du(e.node,[o],t))return null;let s=N(o.callee);if(!D(s,`MemberExpression`)||!D(s.object,`Identifier`)||!ku(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?N(c.initializer):null;return!c||!D(l,`ArrayExpression`)||(l.elements?.length??0)!==0||b(c.declarationNode)!==b(e.node)?null:c.references.every(e=>{let t=S(e.identifier),n=t.parent;if(D(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!D(r,`MemberExpression`)||r.object!==t||r.computed||!D(r.property,`Identifier`)||!D(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?W(s.object,t):null},Fu=(e,t,n=new Set)=>{if(!e)return null;let r=N(e);if(!D(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&D(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`&&C(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))},mfe=(e,t)=>{let n=Fu(e,t);return D(n,`ObjectExpression`)?n:null},hfe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=mfe(n,t);if(!r)return null;for(let e of r.properties??[]){if(!D(e,`Property`)||w(e)!==`signal`)continue;let n=W(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},gfe=(e,t)=>{let n=N(e);if(D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)&&n.property.name===`signal`)return W(n.object,t);if(!D(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?N(r.initializer):null;if(D(i,`MemberExpression`)&&!i.computed&&D(i.property,`Identifier`)&&i.property.name===`signal`)return W(i.object,t);let a=r.bindingIdentifier.parent;return!D(a,`Property`)||w(a)!==`signal`||!D(a.parent,`ObjectPattern`)||!D(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:W(a.parent.parent.init,t)},_fe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node,r=b(e.node);if(!r||!C(r))return null;let i=null;return T(r.body,a=>{if(i||a!==r.body&&C(a))return!1;if(!D(a,`CallExpression`)||Wn(a)!==`addEventListener`)return;let o=N(a.callee);if(!D(o,`MemberExpression`))return;let s=a.arguments[0]?N(a.arguments[0]):null;if(!D(s,`Literal`)||s.value!==`abort`)return;let c=gfe(o.object,t);if(!c)return;let l=Fu(a.arguments[1],t);if(!l||!C(l)||l.async||l.generator)return;let u=[];if(T(l.body,r=>{if(r!==l.body&&C(r))return!1;if(!D(r,`CallExpression`))return;let i=N(r.callee);!D(i,`MemberExpression`)||Wn(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)||u.push(r)}),Ha(l,u,t))return i=c,!1}),i},vfe=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!D(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?N(e.node.arguments[0]):null,r=N(e.node.callee);return D(n,`Literal`)&&n.value===`abort`&&D(r,`MemberExpression`)?gfe(r.object,t):null},Iu=e=>{let t=C(e)?e:b(e);if(!t||!C(t)||t.async||t.generator)return null;let n=t.parent;if(!D(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=N(n.callee);return D(r,`MemberExpression`)&&!r.computed&&D(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Lu=e=>{let t=S(e),n=t.parent;return D(n,`CallExpression`)&&n.callee===t?n:null},yfe=(e,t,n)=>{let r=Es(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 b(o)===t&&V(o,n)?o:null},bfe=(e,t)=>{if(!D(e,`NewExpression`))return!1;let n=N(e.callee);return D(n,`Identifier`)&&Ze.has(n.name)&&t.scopes.isGlobalReference(n)},xfe=(e,t)=>{if(!e)return!0;let n=N(e);return D(n,`Literal`)&&n.value===null||D(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},Sfe=(e,t,n,r)=>{if(!C(e)||e.async||e.generator||n.receiverKey===null||!D(n.node,`CallExpression`))return null;let i=N(n.node.callee),a=D(i,`MemberExpression`)?N(i.object):null;if(!a||!D(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!D(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||b(s)!==t||!xfe(s.init,r))return null;let c=[];for(let e of o.references){let t=S(e.identifier),n=t.parent;if(D(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!D(r,`MemberExpression`)||r.object!==t||!D(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(w(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!bfe(N(l.right),r)||b(l)!==e||!Dl(l,n.node,e,r))return null;let u=[],d=p(l);if(d===null||(T(e.body,t=>{if(t!==e.body&&C(t))return!1;if(!D(t,`CallExpression`))return;let i=p(t);i===null||i>=d||!Cd(t,n,r)||u.push(Gu(t,e,n.receiverKey??``,r)??t)}),!Ha(e,u,r)))return null;let f=Es(e),m=f?r.scopes.symbolFor(f):null;if(!m)return null;let h=[];for(let n of m.references){let i=Lu(n.identifier);if(i&&b(i)===t){h.push(i);continue}let a=S(n.identifier),o=a.parent;if(!o||!bfe(o,r)||b(o)!==e||!o.arguments.some(e=>e===a))return null}let g=h.length===1?h[0]:null;return g&&V(g,r)?g:null},Ru=(e,t,n,r)=>{let i=b(e);return!i||i===t?e:yfe(i,t,n)??(r?Sfe(i,t,r,n):null)??e},Cfe=(e,t,n)=>{if(!C(e))return[];let r=Es(e),i=W(r,n);if(!i)return[];let a=[];return T(t,e=>{if(e!==t&&C(e))return!1;let o=D(e,`CallExpression`)?e.arguments[1]:null;D(e,`CallExpression`)&&Wn(e)===`addEventListener`&&(W(o,n)===i||D(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},wfe=(e,t,n)=>{let r=N(e);if(!D(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?N(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!D(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!D(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(!D(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||b(l)!==b(t.node)||!Du(t.node,[l],n))return null;let u=N(l.right);return C(u)?u:null},zu=(e,t,n,r)=>{if(!C(e)||!D(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=D(a,`AssignmentPattern`)?N(a.left):a;if(!D(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=S(e.identifier),n=t.parent;return D(n,`AssignmentExpression`)&&n.left===t||D(n,`UpdateExpression`)&&n.argument===t||D(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){D(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}D(o,`SpreadElement`)||i.set(c.id,o)}return i},Tfe=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=D(e,`ChainExpression`)?e.expression:e,i=D(r,`CallExpression`)?N(r.callee):null,a=D(r,`CallExpression`)?r.arguments[0]:null,o=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`,s=Pu(t.node,n);if(!D(r,`CallExpression`)||!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`forEach`||!D(a,`Identifier`)||a.name!==o||!n.scopes.isGlobalReference(a)||s===null||s!==W(i.object,n))return!1;let c=Mu(i.object,n);return c.has(s)&&!xd(t.node,r,c,n)},Bu=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!C(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];T(e.body,c=>{if(o||c!==e.body&&C(c)&&!zl(c))return!1;let l=D(c,`ChainExpression`)?c.expression:c;if(Tfe(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(Cd(c,t,n,i)){let r=Iu(c),u=D(l,`CallExpression`)?N(l.callee):null,d=D(u,`MemberExpression`)?u.object:u,f=Ou(d,n),p=$de(d,n),m=tfe(d,n),h=pfe(t,n)??Pu(t.node,n);if(p!==null&&b(c)!==e){let e=b(c);r&&e&&C(e)&&h!==null&&m.has(h)&&Ha(e,[c],n)&&!xd(t.node,c,m,n)&&s.push(r);return}let g=Ou(D(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=Ku(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=cfe(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&D(t.node,`CallExpression`)?new Set([N(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=D(e,`MemberExpression`)?ou(e.object,n):M(e)?ou(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(Nu(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!xd(t.node,c,m,n))&&s.push(_??g);return}if(!D(l,`CallExpression`))return;let u=Fu(l.callee,n),d=D(u,`Identifier`)?wfe(u,t,n):u?Od(u,n):null,f=d&&C(d)?zu(d,l,n,i):null;if(d&&C(d)&&f&&!d.async&&!d.generator&&Bu(d,t,n,new Set(r),f,a)){let r=Ku(c,e,t,n,i)??Afe(c,e,t,n);s.push(r??l)}});let c=S(e.body);return a&&s.some(e=>S(e)===c)?!0:o||Ha(e,s,n)},Efe=(e,t,n)=>e.length>0&&e.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&C(r)&&Bu(r,t,n,new Set,new Map,!0))}),Vu=(e,t,n)=>{let r=N(e);if(!D(r,`CallExpression`))return!1;let i=N(r.callee);if(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=N(i.object);if(!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`))return!1;let o=W(a.object,n);if(o===null||o!==W(r.arguments?.[0],n))return!1;let s=a.property.name;return Hde(o,s,t,n)?!0:t.kind===`socket`?vu(o,t,n)&&(fd.has(s)||dd.has(s)):t.kind===`subscribe`&&vu(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||tn.has(s))},Hu=(e,t,n,r=!1)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(Vu(e,t,n))return!0;let r=Fu(e,n),i=Od(e,n);return r&&Vu(r,t,n)?!0:!!(i&&C(i)&&Bu(i,t,n))};if(!D(e.body,`BlockStatement`))return i(N(e.body));let a=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&i(N(e.argument))&&a.push(e)}),r?Du(Ru(t.node,e,n,t),a,n):Ha(e,a,n)},Uu=(e,t,n,r=new Map)=>{let i=W(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=N(e);if(!D(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return W(a.left,n,new Set,r)===t&&o(a.right)||W(a.right,n,new Set,r)===t&&o(a.left)},Wu=(e,t,n,r)=>{let i=N(e),a=e=>{let t=N(e);if(D(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&D(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(D(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(D(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&rn(N(t))===!1)return!0}if(D(i,`UnaryExpression`)&&i.operator===`!`){let e=N(i.argument);if(D(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&rn(N(i))===!0)return!0}let a=W(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:Uu(i.argument,t,n,r)}if(D(i,`LogicalExpression`)){let e=Wu(i.left,t,n,r),a=Wu(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(D(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?W(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},Gu=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(D(a,`IfStatement`)){if(!Uu(a.test,n,r,i)||!Du(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(C(t)&&D(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(D(a,`IfStatement`)&&a.alternate===null&&Yl(a.consequent)&&Wu(a.test,n,r,i))return a}}return o},Ku=(e,t,n,r,i=new Map)=>n.handleKey===null?null:Gu(e,t,n.handleKey,r,i),Dfe=(e,t,n,r)=>{if(!C(t)||n.handleKey===null)return null;let i=e=>{let t=N(e);return D(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(D(a,`IfStatement`)&&R(e,a.consequent)&&(o=i(a.test).map(e=>W(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!D(a,`IfStatement`)||!o)return null;let s=U(n.node,r.scopes);if(!s){let e=b(n.node);for(;e&&!bs(e);)e=b(e);s=e}if(!s||!C(s))return null;let c=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(T(s.body,e=>{if(!D(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=W(e.left,r);t===o&&l.push(e),t===n.handleKey&&D(N(e.right),`CallExpression`)&&Wn(N(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=fu(l[0].left,r),f=d?.initializer?N(d.initializer):null,p=D(f,`CallExpression`)&&f.arguments[0]&&M(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(Uu(e,o,r))return!0;let t=!1;return T(e,e=>{if(t)return!1;if(D(e,`MemberExpression`)&&W(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Es(b(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(!D(n,`CallExpression`)||n.callee!==t)return!1;let i=b(n);if(!i||!C(i))return!1;if(kd(n,l.filter(e=>b(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(D(a,`IfStatement`)&&R(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=b(e);return!t||!C(t)?!1:kd(e,l.filter(e=>b(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!C(e))return!1;let t=e.parent,i=t?.parent;return!!(D(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&D(i,`AssignmentExpression`)&&W(i.left,r)===n.handleKey)},_=t=>{let i=b(t);if(!i||!C(i))return!1;if(g(i))return!0;let a=[];return T(i.body,t=>{if(t!==i.body&&C(t))return!1;(t===e||ed(t,n,r))&&a.push(t)}),kd(t,a,i,r)||Du(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},Ofe=new WeakMap,kfe=new WeakMap,Afe=(e,t,n,r)=>{let i=Ofe.get(e);if(i||(i=new WeakMap,Ofe.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=kfe.get(e);if(a||(a=new WeakSet,kfe.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=Dfe(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},qu=(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=D(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||D(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||D(o,`LogicalExpression`)&&o.right===a||D(o,`AssignmentPattern`)&&o.right===a||(D(o,`ForStatement`)||D(o,`ForInStatement`)||D(o,`ForOfStatement`)||D(o,`WhileStatement`)||D(o,`DoWhileStatement`))&&o.body===a?a:D(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},jfe=(e,t,n,r=!1)=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=p(t.node);if(!i||!a||o===null)return!1;let s=[];return Ql(e.body,c=>{if(!D(c,`CallExpression`))return;let l=p(c),u=Ku(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&qu(c,t.node,e))return;if(Cd(c,t,n)){s.push(u??c);return}let f=Od(c.callee,n),m=f&&C(f)?zu(f,c,n,new Map):null;f&&C(f)&&m&&Bu(f,t,n,new Set,m)&&s.push(u??c)}),r?kd(t.node,s,e,n):Ha(e,s,n)},Mfe=(e,t,n)=>{let r=b(e);if(!r||!D(r,`ArrowFunctionExpression`)&&!D(r,`FunctionExpression`)&&!D(r,`FunctionDeclaration`))return!1;let i=!1;return T(r.body,a=>{if(i)return!1;if(!D(a,`CallExpression`)||b(a)!==r||!iu(a,n))return;let o=Gn(a);if(o&&o!==e&&Hu(o,t,n))return i=!0,!1}),i},Nfe=(e,t,n)=>t.handleKey!==null&&Mfe(e,t,n)&&jfe(e,t,n,t.registrationVerbName===`setTimeout`),Ju=(e,t,n,r)=>{let i=N(e);if(D(i,`UnaryExpression`)&&i.operator===`!`)return Ju(i.argument,!t,n,r);if(D(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...Ju(i.left,t,n,r),...Ju(i.right,t,n,r)]:[];if(D(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=rn(i.left),a=rn(i.right),o=e??a,s=e===null?i.left:i.right,c=W(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:D(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=W(i,r);return a===null?[]:[{bindingIdentifier:D(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},Pfe=(e,t,n,r=!1)=>{if(!C(e)||e.async&&!r)return[];let i=[];T(e.body,r=>{if(r!==e.body&&C(r))return!1;D(r,`IfStatement`)&&!r.alternate&&!Dl(r.consequent,t,e,n)&&kd(t,[r],e,n)&&i.push(...Ju(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)D(o,`IfStatement`)&&o.consequent===a&&i.push(...Ju(o.test,!1,o,n)),a=o,o=o.parent;return i},Ffe=(e,t,n)=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);if(!r||!C(r)||r.async||r.generator)return!1;let i=!1;return T(r.body,e=>{if(i||e!==r.body&&C(e))return!1;if(D(e,`AssignmentExpression`)&&e.operator===`=`&&W(e.left,n)===t.key&&rn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},Ife=(e,t,n,r)=>{let i=p(t);if(!C(e)||i===null)return!0;let a=!1;return T(e.body,t=>{if(a||t!==e.body&&C(t))return!1;let o=p(t);if(o===null||o>=i)return;let s=D(t,`AssignmentExpression`)?t.left:D(t,`UpdateExpression`)?t.argument:null;if(s&&W(s,r)===n.key)return a=!0,!1}),a},Lfe=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(D(a,`TryStatement`)&&a.block===i&&a.handler&&Dl(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},Rfe=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!D(i.declarationNode,`VariableDeclarator`)||b(i.declarationNode)!==e?!1:i.references.every(e=>{if(!ru(e.identifier))return!0;let r=S(e.identifier),i=r.parent;return D(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&rn(i.right)===t.value&&n.includes(b(i)??i)})},zfe=(e,t,n,r)=>{let i=[];T(t.guardNode,e=>{if(i.length===0&&D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&D(e.property,`Identifier`)&&W(e,r)===t.key)return i.push(e),!1});let a=i[0];if(!a)return!1;let o=r.scopes.symbolFor(a.object),s=o?.initializer?N(o.initializer):null;if(!o||o.kind!==`const`||!D(o.declarationNode,`VariableDeclarator`)||b(o.declarationNode)!==e||!D(s,`ObjectExpression`)||s.properties.length!==1)return!1;let c=s.properties[0];return!D(c,`Property`)||w(c)!==w(a)||rn(c.value)!==!t.value?!1:o.references.every(e=>{let i=td(e.identifier);if(!D(i,`MemberExpression`)||W(i,r)!==t.key)return!1;if(!ru(e.identifier))return!0;let a=i.parent;return D(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&rn(a.right)===t.value&&n.includes(b(a)??a)})},Bfe=(e,t,n,r)=>{if(!C(e))return!0;let i=p(t.guardNode),a=p(n);if(i===null||a===null)return!0;let o=!1;return T(e.body,t=>{if(o||t!==e.body&&C(t))return!1;let s=p(t);if(!(s===null||s<=i||s>=a)&&(D(t,`AwaitExpression`)||D(t,`YieldExpression`)||D(t,`CallExpression`)&&!Ja(t,r.scopes))&&(Dl(t,n,e,r)||Lfe(t,n,e,r)))return o=!0,!1}),o},Vfe=(e,t,n,r,i)=>{let a=S(t),o=D(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:yfe(t,e,i);if(!C(t)||!t.async||t.generator||!o||b(o)!==e||!Hl(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(D(s,`ForStatement`)||D(s,`ForInStatement`)||D(s,`ForOfStatement`)||D(s,`WhileStatement`)||D(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,i);return t&&C(t)?[t]:[]});return c.length===r.length?Pfe(t,n,i,!0).some(a=>(Rfe(e,a,c,i)||zfe(e,a,c,i))&&!Bfe(t,a,n,i)&&!Ife(t,n,a,i)&&r.every(e=>Ffe(e,a,i))):!1},Hfe=(e,t)=>{let n=Xl(N(e),t.scopes),r=n?.initializer?N(n.initializer):null;if(!D(r,`CallExpression`))return null;let i=r.arguments?.[0]?N(r.arguments[0]):null;return!D(i,`Literal`)||typeof i.value!=`number`?null:W(e,t)},Yu=(e,t)=>{let n=N(e);if(D(n,`LogicalExpression`)&&n.operator===`||`)return Yu(n.left,t)??Yu(n.right,t);if(!D(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=Hfe(n.left,t),i=Hfe(n.right,t),a=N(r?n.right:n.left),o=r??i;return o&&D(a,`Identifier`)?o:null},Ufe=(e,t,n)=>{if(!C(e))return null;let r=null;return T(e.body,i=>{if(r||i!==e.body&&C(i))return!1;if(!D(i,`IfStatement`)||i.alternate)return;let a=Yu(i.test,n);!a||Dl(i.consequent,t,e,n)||!kd(t,[i],e,n)||(r=a)}),r},Wfe=(e,t,n)=>{if(D(e,`UpdateExpression`)&&W(e.argument,n)===t)return!0;if(!D(e,`AssignmentExpression`)||W(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=N(e.right);return D(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Gfe=(e,t,n)=>{if(!C(e))return!1;let r=!1;return T(e.body,i=>{if(r||i!==e.body&&C(i))return!1;if(Wfe(i,t,n))return r=!0,!1}),r},Kfe=(e,t,n)=>e.length>0&&e.every(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return!1;let r=Fu(e.argument,n);return!!(r&&C(r)&&Bu(r,t,n))}),qfe=(e,t)=>{let n=W(e,t),r=N(e);if(!D(r,`Identifier`))return n;let i=Fu(r,t);return i&&i!==r?W(i,t)??n:n},Jfe=(e,t,n)=>{let r=N(e);if(!D(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=N(e),a=N(r);if(!(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||qfe(i.object,n)!==t||!D(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},Yfe=(e,t,n)=>{if(!C(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];T(e.body,r=>{if(r!==e.body&&C(r))return!1;if(!D(r,`IfStatement`)||r.alternate!==null||!Yl(r.consequent)||!kd(t.node,[r],e,n))return;let o=Jfe(r.test,i,n);o&&a.push(o)});let o=new Set(a.map(({propertyName:e})=>e));if(o.size!==1)return!1;let s=[...o][0],c=new Set(a.map(({value:e})=>e)),l=U(t.node,n.scopes);if(!l){let e=b(t.node);for(;e&&!bs(e);)e=b(e);l=e}if(!s||!l||!C(l))return!1;let u=new Set,d=!1;return T(l.body,e=>{if(d)return!1;if(!D(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=W(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=N(e.right);if(D(r,`Literal`)&&r.value===null)return;let a=Fu(r,n);if(!a||!D(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>D(e,`Property`)&&w(e)===s),c=D(o,`Property`)?N(o.value):null;if(!c||!D(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},Xfe=(e,t,n)=>{if(!C(e)||t.handleKey===null)return!1;let r=p(t.node);if(r===null)return!1;let i=e=>{let t=N(e);return D(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=N(e),r=W(t,n);if(r)return r;if(!D(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?W(a,n):null},o=e=>{let t=N(e);return D(t,`Literal`)&&t.value===null||D(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!C(e))return!1;let r=e.parent,i=r?.parent;return!!(D(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&Wn(r)===`setTimeout`&&D(i,`AssignmentExpression`)&&W(i.left,n)===t.handleKey)},c=e=>{let r=b(e);if(!r||!C(r))return!1;let i=[];return T(r.body,a=>{if(a!==r.body&&C(a))return!1;let o=p(a),s=p(e);o!==null&&s!==null&&o<s&&ed(a,t,n)&&i.push(Ku(a,r,t,n)??a)}),kd(e,i,r,n)},l=null,u=null,d=null,f=null;if(T(e.body,o=>{if(l||!D(o,`IfStatement`))return;let s=p(o);if(s===null||s>=r||Dl(o.consequent,t.node,e,n))return;let c=i(o.test),m=c.map(a).filter(e=>e!==null);if(m.includes(t.handleKey??``)){u=m.find(e=>e!==t.handleKey)??null;for(let e of c){let t=N(e);if(!D(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=W(t.left,n),i=W(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let m=U(t.node,n.scopes);if(!m){let e=b(t.node);for(;e&&!bs(e);)e=b(e);m=e}if(!m||!C(m))return!1;let h=[],g=[],_=[],v=[];if(T(m.body,e=>{if(D(e,`AssignmentExpression`)){let r=W(e.left,n);r===u&&h.push(e),r===d&&g.push(e),r===f&&_.push(e),r===t.handleKey&&D(N(e.right),`CallExpression`)&&Wn(N(e.right))===`setTimeout`&&v.push(e)}D(e,`UpdateExpression`)&&W(e.argument,n)===f&&_.push(e)}),v.length===0)return!1;let ee=h.length>0?fu(h[0].left,n)?.initializer:null,te=ee&&D(ee,`CallExpression`)?ee.arguments[0]:null;return!(!te||!M(te)||!o(te)||!v.every(e=>{let t=b(e);return!t||!C(t)?!1:kd(e,h.filter(e=>b(e)===t&&!o(e.right)),t,n)})||h.filter(e=>o(e.right)&&!s(b(e)??e)&&!c(e)).length>0||g.some(e=>W(e.right,n)!==f)||_.some(e=>!c(e)))},Xu=(e,t,n)=>{let r=t.handleKey;if(!C(e)||r===null)return!1;let i=p(t.node);if(i===null)return!1;let a=!1,o=[];return T(e.body,s=>{if(a||s!==e.body&&C(s))return!1;if(D(s,`IfStatement`)&&!s.alternate&&Uu(s.test,r,n)&&!Dl(s.consequent,t.node,e,n)&&kd(t.node,[s],e,n))return a=!0,!1;let c=p(s);if(c===null||c>=i||!ed(s,t,n))return;let l=Ku(s,e,t,n);o.push(l??s)}),a||Xfe(e,t,n)||Yfe(e,t,n)||kd(t.node,o,e,n)},Zu=(e,t)=>e.kind===`subscribe`?e.handlerKey??W(Eu(e),t):e.kind!==`timer`||!D(e.node,`CallExpression`)?null:W(e.node.arguments?.[0],t),Qu=(e,t)=>{let n=Es(e);return new Set([W(e,t),W(n,t)].filter(e=>e!==null))},$u=(e,t,n,r)=>Efe(n,t,r)&&Du(Ru(t.node,e,r),n,r),ed=(e,t,n)=>{if(Cd(e,t,n))return!0;let r=D(e,`ChainExpression`)?e.expression:e;if(!D(r,`CallExpression`))return!1;let i=Fu(r.callee,n),a=C(i)?i:Od(r.callee,n),o=a&&C(a)?zu(a,r,n,new Map):null;return!!(a&&C(a)&&o&&!a.async&&!a.generator&&Bu(a,t,n,new Set,o,!0))},Zfe=(e,t,n)=>{let r=N(e);if(D(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&D(e.declarationNode,`VariableDeclarator`)&&b(e.declarationNode)===t?e:null}let i=Xl(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;D(a,`MemberExpression`);)a=N(a.object);if(!D(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?N(o.initializer):null;return o&&o.kind===`const`&&D(o.declarationNode,`VariableDeclarator`)&&D(s,`ObjectExpression`)&&b(o.declarationNode)===t?o:null},td=e=>{let t=e;for(;D(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return S(t)},Qfe=(e,t)=>{let n=new Set,r=new Set,i=Zu(e,t);if(i&&n.add(i),e.kind!==`timer`||!D(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!D(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?b(o.bindingIdentifier):null;if(!o||!s||!C(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=Es(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(!D(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!M(a))return n;let o=W(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},nd=(e,t,n,r)=>{if(!C(e)||t.handleKey===null)return!1;let i=Qu(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||b(n.node)===e)return!1;let a=Qfe(n,r);return[...i].some(e=>a.has(e))})},$fe=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Lu(n.identifier),s=r?b(r):null;if(!r||!s||!C(s))return!1;if(s===e)o+=1;else if(!nd(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=>!Dl(n,t,e,i)&&!Dl(t,n,e,i))))},epe=(e,t,n,r,i)=>t.references.every(t=>{let a=td(t.identifier);if(W(a,i)!==e.handleKey)return D(n.left,`Identifier`);if(!ru(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!D(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=N(o.right),c=b(o),l=r.find(t=>t.kind===`timer`&&t.node===s&&t.handleKey===e.handleKey),u=b(e.node),d=u?Qu(u,i):new Set;if(l&&(c&&nd(c,e,r,i)||d.has(Zu(l,i)??``)))return!0;if(!(D(s,`Literal`)&&s.value===null||D(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s))||!c||!C(c))return!1;if(nd(c,e,r,i))return!0;let f=[];return T(c.body,t=>{if(t!==c.body&&C(t))return!1;ed(t,e,i)&&f.push(t)}),kd(o,f,c,i)}),tpe=(e,t,n)=>{let r=ffe(t.node,n);return!!(r&&b(r.declarationNode)===e)},npe=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=Qu(t,r);if(!i.has(Zu(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&b(e.node)===t&&i.has(Zu(e,r)??``));return a.length===1&&a[0]===e},rpe=(e,t,n,r,i)=>{let a=b(t.node),o=S(t.node),s=o.parent,c=t.handleKey!==null&&D(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?Zfe(s.left,e,i):null,l=tpe(e,t,i);if(t.kind!==`timer`||!a||!C(a)||a===e||a.async||a.generator||!c&&!l||!Efe(r,t,i)||c&&D(s,`AssignmentExpression`)&&!epe(t,c,s,n,i))return!1;if(nd(a,t,n,i))return!0;let u=Es(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=npe(t,a,n,i);if(c&&!p&&!Xu(a,t,i)&&!f&&!$fe(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(D(m,`ForStatement`)||D(m,`ForInStatement`)||D(m,`ForOfStatement`)||D(m,`WhileStatement`)||D(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&R(e.identifier,t.node)&&Zu(t,i)===W(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=Ul(e,i.scopes);return d.references.every(o=>{let s=W(o.identifier,i);if(h.some(e=>e===o))return!0;let c=n.find(e=>e!==t&&s!==null&&Zu(e,i)===s),l=c?Eu(c):null;if(c&&!(l&&C(l)&&l.async)&&$u(e,c,r,i))return!0;let u=Lu(o.identifier);if(!u)return!1;let d=b(u);if(!d||!C(d)||d===a||d.generator)return!1;if(d.async)return Vfe(e,d,u,r,i);if(nd(d,t,n,i))return!0;if(d===e)return Du(Ru(u,e,i),r,i);let f=Qu(d,i),p=n.find(e=>{if(e===t)return!1;let n=Eu(e),r=n?Fu(n,i):null;return f.has(Zu(e,i)??``)||r===d});return p?$u(e,p,r,i):g.has(d)&&Du(Ru(u,e,i),r,i)})},ipe=(e,t,n,r,i,a)=>{let o=Lu(e);if(o){let e=b(o);if(e&&e!==t&&Ul(r).has(e))return{generationKey:null};let n=e?Ufe(e,o,a):null;return n?{generationKey:n}:null}let s=S(e),c=s.parent;if(!D(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!D(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=Ufe(t,n,a);return l.handleKey!==null&&Kfe(i,l,a)&&u?{generationKey:u}:null},ape=(e,t,n,r)=>{let i=b(t.node),a=S(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!C(i)||i===e||i.async||i.generator||!D(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!Xl(N(o.left),r.scopes)||!Ul(e).has(i)||!Kfe(n,t,r)||!Ha(e,n,r))return!1;let s=n.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&C(t)?[t]:[]}),c=Es(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>ipe(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`?[...Ul(e),...s].some(e=>Gfe(e,f,r)):!1},ope=(e,t,n,r)=>{if(ape(e,t,n,r))return!0;let i=b(t.node),a=i?Vl(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!C(i)||i===e||i.async||i.generator||!D(t.node,`CallExpression`)||!D(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!Hl(e,r.scopes).has(i)||!Du(a,n,r))return!1;let o=S(t.node),s=o.parent;if(!D(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!D(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!D(c.declarationNode,`VariableDeclarator`)||b(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!D(e,`ReturnStatement`)||!e.argument)return[];let t=Fu(e.argument,r);return t&&C(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!C(e))return!1;let n=[];if(T(e.body,i=>{if(i!==e.body&&C(i))return!1;if(D(i,`CallExpression`)&&D(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&Cd(i,t,r)){let a=Ku(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!Ha(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>ru(e.identifier)),f=d.some(e=>S(e.identifier).parent===s),p=d.some(e=>{let t=S(e.identifier),n=t.parent;if(n===s)return!1;if(!D(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=N(n.right);if(!(D(i,`Literal`)&&i.value===null||D(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=b(n),o=a?u.get(a):void 0;return!(a&&o&&kd(n,o.map(e=>e.handleGuard&&R(n,e.handleGuard.consequent)?e.call:e.anchor),a,r))});if(!f||p)return!1;let m=t.node.parent;for(;m&&m!==i;){if(D(m,`ForStatement`)||D(m,`ForInStatement`)||D(m,`ForOfStatement`)||D(m,`WhileStatement`)||D(m,`DoWhileStatement`))return!1;m=m.parent}let h=!1;for(let e of t.node.arguments??[])T(e,e=>{if(h||C(e))return!1;if(D(e,`AwaitExpression`)||D(e,`YieldExpression`)||D(e,`CallExpression`)&&!Ja(e,r.scopes))return h=!0,!1});return h?!1:Pfe(i,t.node,r).some(a=>Rfe(e,a,l,r)&&!Bfe(i,a,t.node,r)&&!Ife(i,t.node,a,r)&&n.every(e=>Ffe(e,a,r)))},spe=(e,t,n)=>{if(!C(e)||!D(e.body,`BlockStatement`))return!1;let r=new Set;if(T(e.body,e=>{if(!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||Wn(e)!==`push`||!D(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!M(a))return;let o=N(a),s=C(o)?o:Fu(a,n);if(!s||!C(s))return;let c=!1;if(T(s.body,e=>{if(c||e!==s.body&&C(e))return c?!1:void 0;if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let i=D(t.node,`CallExpression`)?t.node:null;if(Wn(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 c=!0,!1}),!c)return;let l=S(t.node),u=l.parent,d=S(e),f=d.parent;if(!u||!D(u,`ExpressionStatement`)||u.expression!==l||!f||!D(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!D(u.parent,`BlockStatement`)||u.parent!==f.parent)return;let p=u.parent.body.findIndex(e=>e.range[0]===u.range[0]);if(u.parent.body.findIndex(e=>e.range[0]===f.range[0])!==p+1)return;let m=n.scopes.symbolFor(i.object),h=m?.initializer?N(m.initializer):null;m?.kind!==`const`||!h||!D(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=S(e.identifier);if(D(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!D(n,`MemberExpression`)||n.object!==t)return!1;let r=S(n).parent;return!!(r&&D(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(w(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return Ql(e.body,e=>{if(i||!D(e,`ReturnStatement`)||!e.argument)return;let t=N(e.argument),a=C(t)?t:Fu(e.argument,n);!a||!C(a)||T(a.body,e=>{if(i)return!1;if(!D(e,`CallExpression`))return;let t=N(e.callee);if(D(t,`Identifier`)){let a=Ou(t,n),o=a?N(a.right):null,s=D(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&Nu(e,a,n))return i=!0,!1}if(!D(t,`MemberExpression`)||Wn(e)!==`forEach`||!D(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!M(o))return;let s=N(o);if(!C(s))return;let c=s.params[0];if(!c||!D(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return T(s.body,e=>{if(D(e,`CallExpression`)&&D(N(e.callee),`Identifier`)&&n.scopes.symbolFor(N(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},cpe=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!D(t.node,`CallExpression`))return!1;let r=N(t.node.callee);if(!D(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),s=cu(t.node.arguments[0],n),c=cu(t.node.arguments[1],n),l=uu(t.node.arguments[2],n,!0),u=!1;return T(e,e=>{if(u||!D(e,`CallExpression`))return u?!1:void 0;if(Wn(e)!==`removeEventListener`)return;let r=N(e.callee);if(D(r,`MemberExpression`)&&!(cu(r.object,n)!==o||cu(e.arguments[0],n)!==s||cu(e.arguments[1],n)!==c||uu(e.arguments[2],n,!0)!==l)&&yd(e,a,n)&&!xd(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},rd=(e,t)=>{let n=N(e);return D(n,`MemberExpression`)?fu(n,t):null},id=(e,t)=>{let n=N(e);if(D(n,`LogicalExpression`)&&n.operator===`||`){let e=id(n.left,t),r=id(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(D(n,`UnaryExpression`)&&n.operator===`!`){let e=rd(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(D(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=rd(n.left,t),r=rd(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},lpe=(e,t)=>{let n=N(e);if(!D(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=rd(n.left,t),i=rd(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},ad=(e,t,n,r=new Set)=>{if(!C(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!D(a,`BlockStatement`)){let e=N(a);if(!D(e,`CallExpression`))return null;let r=Fu(e.callee,n);return r?ad(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!D(r,`VariableDeclaration`)){if(D(r,`ExpressionStatement`)){let o=N(r.expression);if(D(o,`AssignmentExpression`)){let e=W(o.left,n),r=N(o.right),i=D(r,`Literal`)&&r.value===null||D(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(D(o,`CallExpression`)&&e===a.body.length-1){let e=Fu(o.callee,n);return e?ad(e,t,n,i):null}return null}return D(r,`IfStatement`)?Yl(r.consequent)?id(r.test,n):!r.alternate&&e===a.body.length-1?lpe(r.test,n):null:null}}return null},od=(e,t,n,r=new Set)=>{if(!C(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return T(e.body,r=>{if(a||r!==e.body&&C(r))return!1;if(D(r,`UpdateExpression`))return fu(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(D(r,`AssignmentExpression`))return fu(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?rn(N(r.right))===!1:rn(N(r.right))!==!0))?(a=!0,!1):void 0;if(!D(r,`CallExpression`))return;let o=Fu(r.callee,n);if(o&&od(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},upe=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!D(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&M(n)?N(n):null,i=r?C(r)?r:Fu(r,t):null;if(!i)return!1;let a=ad(i,e,t);if(!a)return!1;let o=U(e.node,t.scopes);if(!o){let t=b(e.node);for(;t&&!bs(t);)t=b(t);o=t}if(!o||!C(o))return!1;let s=!1;return T(o.body,e=>{if(s)return!1;if(!D(e,`CallExpression`)||!iu(e,t))return;let n=Gn(e);!n||!C(n)||Ql(n.body,e=>{if(s||!D(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);n&&od(n,a,t)&&(s=!0)})}),s},dpe=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!C(e)||!D(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&M(r)?N(r):null,a=i?C(i)?i:Fu(i,n):null;if(!a)return!1;let o=ad(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return T(e.body,t=>{if(t!==e.body&&C(t))return!1;if(D(t,`UpdateExpression`)&&fu(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}D(t,`AssignmentExpression`)&&t.operator!==`=`&&fu(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),kd(t.node,s,e,n)},sd=(e,t)=>{if(upe(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!D(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!M(n))return!1;let r=N(n),i=C(r)?r:Fu(n,t);if(!i||!C(i)||!D(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!D(a,`IfStatement`)||!Yl(a.consequent))return!1;let o=N(a.test);for(;D(o,`LogicalExpression`)&&o.operator===`||`;)o=N(o.left);if(!D(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=Xl(N(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=b(e.node),l=null;for(;c;){let e=c.parent;if(e&&D(e,`CallExpression`)&&iu(e,t)){l=e;break}c=b(c)}let u=U(l||e.node,t.scopes);if(!u){let t=b(e.node);for(;t&&!bs(t);)t=b(t);u=t}if(!u||!C(u))return!1;let d=!1;return T(u.body,e=>{if(d)return!1;if(!D(e,`CallExpression`)||!iu(e,t))return;let n=Gn(e);if(!n||!C(n))return;let r=N(n.body);C(r)&&T(r.body,e=>{if(D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&rn(N(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),Ql(n.body,e=>{if(d||!D(e,`ReturnStatement`)||!e.argument)return;let n=Fu(e.argument,t);!n||!C(n)||T(n.body,e=>{if(D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&rn(N(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},fpe=(e,t,n)=>{let r=b(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!r||!zl(r)||!C(e)||!D(e.body,`BlockStatement`))return!1;let i=[];return Ql(e.body,e=>{if(!D(e,`ReturnStatement`)||!e.argument)return;let r=Od(e.argument,n);if(!r||!C(r))return;let a=[];T(r.body,e=>{if(e!==r.body&&C(e))return!1;let i=D(e,`ChainExpression`)?e.expression:e,o=D(i,`CallExpression`)?N(i.callee):null;D(i,`CallExpression`)&&D(o,`MemberExpression`)&&!o.computed&&D(o.property,`Identifier`)&&o.property.name===`disconnect`&&W(o.object,n)===t.receiverKey&&a.push(e)}),Ha(r,a,n)&&i.push(e)}),Du(t.node,i,n)},ppe=(e,t,n)=>El({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>C(e)&&Bu(e,t,n)}),cd=(e,t,n,r=[t])=>{if(!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||e.async)return!1;if(spe(e,t,n)||cpe(e,t,n)||fpe(e,t,n)||ppe(e,t,n)||sd(t,n)||Pd(e,t,n)||t.kind===`subscribe`&&b(t.node)===e&&Rd(t.node,!0,!0,n)&&xu(t,n))return!0;if(!D(e.body,`BlockStatement`))return e.body===t.node&&xu(t,n);let i=S(t.node),a=i.parent,o=D(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&D(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&b(t.node)!==e&&!!(o&&(o.kind===`let`||o.kind===`var`)&&D(o.declarationNode,`VariableDeclarator`)&&b(o.declarationNode)===e),c=[];if(Ql(e.body,e=>{if(!D(e,`ReturnStatement`))return;let r=p(e),i=p(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?N(e.argument):null;if(!a)return;if(Vu(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||p(a)!==null&&p(a)===p(t.node))&&xu(t,n)){c.push(e);return}if(t.kind===`subscribe`&&Vde(a,t,n)){c.push(e);return}if(D(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Fu(a,n);if(o&&Vu(o,t,n)){c.push(e);return}!o||!C(o)||Bu(o,t,n,new Set,new Map,s)&&c.push(e)}),ope(e,t,c,n)||rpe(e,t,r,c,n))return!0;let l=b(t.node),u=l?Cfe(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>Du(e,c,n))?!0:Du(Ru(t.node,e,n,t),c,n)},mpe=(e,t,n)=>{for(let r of t)if(!cd(e,r,n,t)&&!Nfe(e,r,n))return r;return null},ld=(e,t,n=new Set)=>{let r=N(e);if(D(r,`NewExpression`)&&D(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(D(r,`MemberExpression`))return ld(r.object,t,n);if(!D(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 ld(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(D(a,`Property`)&&D(o,`ObjectPattern`)&&D(s,`VariableDeclarator`)&&s.init&&ld(s.init,t,n))},hpe=(e,t)=>{if(!D(e,`Property`))return!1;let n=D(e.key,`Identifier`)?e.key.name:D(e.key,`Literal`)?e.key.value:null;return n===`signal`?!ld(e.value,t):n===`once`?D(e.value,`Literal`)&&e.value.value===!0:!1},gpe=(e,t)=>D(e,`CallExpression`)&&(e.arguments??[]).some(e=>D(e,`ObjectExpression`)&&(e.properties??[]).some(e=>hpe(e,t))),ud=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`])]]),dd=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),fd=new Set([`close`]),_pe=new Set([`removeChannel`,`removeAllChannels`]),pd=e=>{let t=D(e,`ChainExpression`)?e.expression:e;if(!D(t,`CallExpression`))return null;let n=N(t.callee);if(D(n,`Identifier`))return ke.has(n.name)||Fn.has(n.name)||dd.has(n.name)?n.name:null;if(D(n,`MemberExpression`)&&D(n.property,`Identifier`)){let e=n.property.name;return Fn.has(e)||tn.has(e)||_pe.has(e)||e===`on`?e:null}return null},vpe=(e,t,n)=>{let r=b(e),i=b(t.node);if(!r||!i||!C(i)||!Td(r,n)||!Zl(e,n.scopes))return!1;let a=hfe(t,n),o=W(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];T(s,e=>{if(e!==s&&C(e))return!1;if(D(e,`AssignmentExpression`)&&W(e.left,n)===o&&W(e.right,n)===a){l.push(e);return}if(!D(e,`CallExpression`))return;let t=D(e.callee,`ChainExpression`)?e.callee.expression:N(e.callee);D(t,`MemberExpression`)&&!t.computed&&D(t.property,`Identifier`)&&t.property.name===`abort`&&W(t.object,n)===o&&c.push(e)});let u=l.filter(e=>kd(e,c,i,n));return kd(t.node,u,i,n)},md=e=>D(e,`JSXAttribute`)&&D(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),hd=(e,t)=>{let n=Es(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!!(D(n,`JSXExpressionContainer`)&&n.expression===t&&md(n.parent))}):!1},gd=(e,t,n)=>{let r=Es(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=D(e,`Property`)?w(e):null;if(!D(e,`Property`)||!D(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=S(e.parent),i=r.parent;if(!D(i,`ReturnStatement`)||i.argument!==r)return!1;let a=b(i);return!!(a&&_s(Es(a)?.name??``))};if(i.references.some(e=>{let t=S(e.identifier),r=t.parent;if(!n&&D(r,`ReturnStatement`)&&r.argument===t){let e=b(r);return!!(e&&_s(Es(e)?.name??``))}return D(r,`Property`)&&r.value===t?a(r):!1}))return!0;let o=b(e);if(!o||!C(o)||!_s(Es(o)?.name??``))return!1;let s=!1;return T(o.body,e=>{if(s)return!1;if(D(e,`Property`)&&D(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},ype=e=>{if(!C(e))return!1;let t=e.params[0];if(!t)return!1;let n=(D(t,`Identifier`)?t:D(t,`AssignmentPattern`)&&D(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=D(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(D(r,`TSNullKeyword`)||D(r,`TSUnionType`)&&r.types.some(e=>D(e,`TSNullKeyword`)))},bpe=(e,t)=>{if(!C(e))return!1;let n=Es(e),r=b(e),i=r?Es(r):null;if(!n||!r||!C(r)||!i||!_s(i.name))return!1;let a=new Set;if(T(r.body,e=>{if(!D(e,`Property`)||!D(e.value,`Identifier`)||e.value.name!==n.name||!D(e.parent,`ObjectExpression`))return;let t=S(e.parent);if(D(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=w(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 s=!1;for(let e of o.references){let n=S(e.identifier),r=n.parent,i=r?.parent;if(!D(r,`CallExpression`)||r.callee!==n||!D(i,`VariableDeclarator`)||i.init!==r||!D(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(!D(n,`MemberExpression`)||n.object!==t||!a.has(w(n)??``))continue;let r=S(n),i=r.parent;if(!D(i,`JSXExpressionContainer`)||i.expression!==r||!md(i.parent))return!1;s=!0}}return s},_d=(e,t)=>hd(e,t)||gd(e,t,!0)||bpe(e,t)||ype(e)&&gd(e,t,!1),vd=(e,t)=>{if(!C(e)||!e.returnType)return!1;let n=!1;if(T(e.returnType,e=>{if(D(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Es(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=S(e.identifier),n=t.parent;return!!(D(n,`JSXExpressionContainer`)&&n.expression===t&&D(n.parent,`JSXAttribute`))}):!1},xpe=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(D(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=N(o.test);if(!D(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[N(e.left),N(e.right)],a=t.some(e=>Uu(e,n,i)),s=t.some(e=>{if(!D(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=W(e.left,i),a=W(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Spe=(e,t,n,r)=>{if(!C(e))return[];let i=[];return T(e.body,a=>{if(a!==e.body&&C(a))return!1;if(!D(a,`IfStatement`)||a.alternate!==null||!Yl(a.consequent))return;let o=N(a.test);if(!D(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=W(o.left,r),c=W(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Cpe=(e,t,n)=>{if(!D(t.node,`CallExpression`))return!1;let r=b(t.node);if(!r||!C(r)||r!==b(e)||!_d(r,n))return!1;let i=N(t.node.callee),a=N(e.callee),o=D(a,`MemberExpression`)?fu(a.object,n):null;if(!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`addEventListener`||!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=W(N(i.object),n),c=W(r.params?.[0],n),l=W(a.object,n),u=W(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==W(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=p(e),a=[];return T(r.body,e=>{if(e!==r.body&&C(e))return!1;if(!D(e,`AssignmentExpression`)||e.operator!==`=`||!D(N(e.right),`ObjectExpression`)||Xl(N(e.left),n.scopes)?.id!==o.id)return;let c=W(e.left,n),d=N(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(p(e)??-1)<=i||!D(d,`ObjectExpression`))return;let f=d.properties.find(e=>D(e,`Property`)&&w(e)===`element`),m=d.properties.find(e=>D(e,`Property`)&&w(e)===`handler`);D(f,`Property`)&&D(m,`Property`)&&W(f.value,n)===s&&W(m.value,n)===t.handlerKey&&a.push(e)}),Ha(r,[Gu(e,r,l,n)??e],n)&&Du(t.node,a,n)}if(!du(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=p(e),f=[],m=r.body;T(m,e=>{if(e!==m&&C(e))return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),n.scopes)?.id===o.id&&W(e.right,n)===s&&d!==null&&(p(e)??-1)>d&&f.push(e)});let h=Gu(e,r,l,n)??xpe(e,r,l,s,n)??e,g=f.filter(e=>kd(e,[h],r,n));return Ha(r,[h,...Spe(r,l,s,n)],n)&&kd(t.node,g,r,n)},wpe=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!D(t.node,`CallExpression`))return!1;let r=b(t.node),i=N(e.callee);if(!r||!C(r)||r!==b(e)||!_d(r,n)||!D(i,`MemberExpression`)||i.computed||!D(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=W(r.params[0],n),o=fu(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let s=[];return T(r.body,e=>{if(e!==r.body&&C(e))return!1;D(e,`AssignmentExpression`)&&e.operator===`=`&&Xl(N(e.left),n.scopes)?.id===o.id&&W(e.right,n)===t.receiverKey&&s.push(e)}),Ha(r,[e],n)&&Du(t.node,s,n)},yd=(e,t,n)=>{let r=S(e),i=new Set,a=new Set;for(;;){let e=b(r);if(!e||!C(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=D(e.body,`BlockStatement`)&&D(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!Ha(e,[c?s:r],n))return null;let l=Iu(e);if(!l)return a.size===t.size&&Td(e,n)?e:null;let u=N(l.callee);if(!D(u,`MemberExpression`))return null;let d=W(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=S(l)}},bd=e=>{let t=new Set,n=e;for(;;){let e=b(n);if(!e||!C(e)||t.has(e))break;t.add(e),n=e}return t},xd=(e,t,n,r)=>{let i=p(e),a=p(t);if(i===null||a===null)return!0;let o=bd(e),s=bd(t),l=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),u=(e,t,i,a)=>{if(a&&D(e,`ReturnStatement`)&&l(W(e.argument,r),t))return!0;if(D(e,`AssignmentExpression`)){let i=W(e.left,r),a=N(e.left);return l(W(e.right,r),t)&&!l(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||D(a,`MemberExpression`)&&a.computed&&l(W(a.object,r),t)}if(D(e,`UnaryExpression`)&&e.operator===`delete`){let n=N(e.argument);return D(n,`MemberExpression`)&&l(W(n.object,r),t)}if(D(e,`UpdateExpression`)){let i=W(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!D(e,`CallExpression`)&&!D(e,`NewExpression`))return!1;let o=e.arguments.some(e=>M(e)?l(W(e,r),t)&&ju(e,r)===null:!1),s=N(e.callee),d=D(e,`CallExpression`)&&D(s,`MemberExpression`)&&!s.computed&&D(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&D(s.property,`Identifier`)&&s.property.name===`from`;return o&&!d||D(s,`MemberExpression`)&&!s.computed&&D(s.property,`Identifier`)&&(Ede.has(s.property.name)||Dde.has(s.property.name))&&l(W(s.object,r),t)?!0:D(e,`CallExpression`)?[c(e.callee,r.scopes),...e.arguments.flatMap(t=>M(t)&&Rl(e,t)?[c(t,r.scopes)]:[])].some(e=>{if(!e||!C(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return T(e.body,i=>{if(r||i!==e.body&&C(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 T(d,e=>{if(f)return!1;let t=p(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,l=s.has(n)&&t<a;if(!(!c&&!l)&&u(e,t,new Set,!0))return f=!0,!1}),f},Sd=(e,t)=>Wn(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Tpe=(e,t,n)=>{let r=N(e.callee),i=N(t.callee);if(!D(r,`MemberExpression`)||!D(i,`MemberExpression`))return!0;let a=Wn(e),o=Wn(t),s=t.arguments?.[+!Sd(e,t)],c=b(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&&C(c)&&Td(c,n)&&Ha(c,[t],n)&&(o!==null&&dd.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=Pde(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!yd(t,p,n)&&!lfe(t,p,n)?!1:!xd(e,t,new Map([...p].map(e=>[e,1/0])),n)},Cd=(e,t,n,r=new Map)=>{let i=D(e,`ChainExpression`)?e.expression:e;if(!D(i,`CallExpression`))return!1;let a=N(i.callee);if(t.kind===`timer`){let e=t.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;if(!D(a,`Identifier`)||!ke.has(a.name)||a.name!==e)return!1;let o=W(i.arguments?.[0],n,new Set,r);if(vu(o,t,n))return!0;if(r.size>0&&o!==null)return!1;let s=i.arguments?.[0];if(s&&M(s)){let e=gu(s,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let c=Pu(t.node,n);return c!==null&&c===ju(i.arguments?.[0],n)}if(D(a,`Identifier`)&&t.kind===`subscribe`&&(Bde(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||xu(t,n))||t.registrationVerbName===`addListener`&&nfe(a,t,n)))return!0;let o=pd(i);if(!o||!D(a,`MemberExpression`)||a.computed||!D(a.property,`Identifier`))return!1;let s=cu(a.object,n),c=cu(i.arguments?.[0],n),l=t.registrationVerbName?ud.get(t.registrationVerbName):null,u=pfe(t,n),d=Ou(a.object,n),f=d?W(d.right,n):ju(a.object,n);if(l&&wd(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||Cpe(i,t,n)||wpe(i,t,n)||Hde(s,o,t,n))return!0;if(t.kind===`socket`)return vu(s,t,n)&&(fd.has(o)||dd.has(o));if(t.kind===`subscribe`&&D(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===Wde(t.node,n)&&(o===`removeAllChannels`||vu(W(i.arguments?.[0],n,new Set,r),t,n))||(vu(s,t,n)||t.kind===`subscribe`&&nfe(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||tn.has(o))||o===`abort`&&s===(hfe(t,n)??_fe(t,n)??vfe(t,n))||o===`abort`&&vpe(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&D(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)&&!C(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&D(t.node,`CallExpression`)&&(!D(N(t.node.callee),`MemberExpression`)||!du(t.node.arguments?.[2],i.arguments?.[2],n,!0))||D(t.node,`CallExpression`)&&!Tpe(t.node,i,n))return!1;let p=D(t.node,`CallExpression`)?N(t.node.callee):null,m=D(p,`MemberExpression`)?rfe(p.object,n):null,h=rfe(a.object,n);if(!(m!==null&&m===h)&&(t.receiverKey===null||s!==t.receiverKey))return!1;if(t.registrationVerbName===`subscribe`&&(o===`unsubscribe`||o===`unsub`)&&t.handleKey!==null&&W(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?ud.get(t.registrationVerbName):null;if(!g||!wd(o,g))return!1;let _=D(t.node,`CallExpression`)?t.node.arguments?.[0]:null,v=i.arguments?.[0];if(Yde(_,n)||Yde(v,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!D(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(_,n),c=Ou(v,n);if(s===null!=(c===null))return!1;let l=ju(t.node.arguments?.[0],n),u=ju(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=afe(t.node.arguments?.[1],n),r=afe(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=N(t.node.callee);if(!D(s,`MemberExpression`)||!ife(s.object,n)||!ife(a.object,n)||e===null||e!==r||!du(t.node.arguments?.[2],i.arguments?.[2],n)||!Nu(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return D(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=D(t.node,`CallExpression`)&&Sd(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=D(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?c===t.eventKey:!0},wd=(e,t)=>t.has(e)||dd.has(e),Td=(e,t)=>{let n=b(e);if(!n||!C(n))return!1;let r=n.parent;if(!D(r,`CallExpression`)||!iu(r,t))return!1;if(!D(n.body,`BlockStatement`))return Fu(n.body,t)===e;let i=!1;return Ql(n.body,n=>{D(n,`ReturnStatement`)&&n.argument&&Fu(n.argument,t)===e&&(i=!0)}),i},Ed=(e,t)=>{if(qd(e,t)||Td(e,t))return!0;let n=Es(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>b(t.identifier)!==e):!1},Epe=(e,t,n)=>{if(!C(e)||e.async||e.generator)return[];let r=b(t.node);if(!r||!C(r))return[];let i=new Map,a=e=>{let t=S(e),a=t.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=fu(a.left,n),s=W(a.left,n),c=b(a),l=p(a);if(!o&&D(a.left,`MemberExpression`)){let e=w(a.left),t=N(a.left.object),r=D(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!C(c))return;for(let t of r.references){let r=S(t.identifier),a=r.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!fu(a.left,n)||b(a)!==c)continue;let o=W(a.left,n),s=p(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=Es(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return T(r.body,t=>{if(t!==r.body&&C(t))return!1;D(t,`AssignmentExpression`)&&Fu(t.right,n)===e&&a(t.right)}),[...i.values()]},Dpe=(e,t,n)=>kd(t.node,[e.assignmentNode],e.retainedFunction,n)||Du(t.node,[e.assignmentNode],n),Ope=(e,t,n)=>{let r=!1;return T(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&C(i))return!1;if(!D(i,`AssignmentExpression`)||i===e.assignmentNode||W(i.left,n)!==e.refCurrentKey||!Dl(t.node,i,e.retainedFunction,n))return;let a=Fu(i.right,n);if(!a||!C(a)||!Bu(a,t,n))return r=!0,!1}),r},kpe=(e,t,n)=>{let r=b(e.retainedFunction);if(!r||!C(r))return!1;let i=t=>{if(!C(t))return!1;let r=!1;return T(t.body,i=>{if(r||i!==t.body&&C(i))return!1;if(D(i,`CallExpression`)&&W(i.callee,n)===e.refCurrentKey){let a=S(i),o=a.parent,s=D(t.body,`BlockStatement`)&&D(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!Gu(i,t,e.refCurrentKey,n);if((s||c||l)&&!Ad(t,i,e.refCurrentKey,n))return r=!0,!1}}),r},a=e=>{if(!C(e))return!1;if(!D(e.body,`BlockStatement`)){let t=Od(e.body,n);return!!(t&&i(t))}let t=[];return Ql(e.body,e=>{if(!D(e,`ReturnStatement`)||!e.argument)return;let r=Od(e.argument,n);!r||!i(r)||t.push(e)}),Ha(e,t,n)},o=!1;return T(r.body,e=>{if(o)return!1;if(!D(e,`CallExpression`)||b(e)!==r||!j(e,`useEffect`,n.scopes))return;let t=Gn(e);if(t&&a(t))return o=!0,!1}),o},Ape=(e,t,n)=>{if(!hd(e.retainedFunction,n)&&!(()=>{if(!C(e.retainedFunction))return!1;let r=S(e.retainedFunction).parent;if(!D(r,`CallExpression`)||!j(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=W(i,n);return!a||t.receiverKey!==a?!1:_d(e.retainedFunction,n)})())return!1;let r=[];return T(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&C(t))return!1;D(t,`CallExpression`)&&W(t.callee,n)===e.refCurrentKey&&r.push(t)}),kd(t.node,r,e.retainedFunction,n)},jpe=(e,t,n)=>{let r=b(e);return r?Epe(r,t,n).some(e=>Dpe(e,t,n)&&!Ope(e,t,n)&&(kpe(e,t,n)||Ape(e,t,n))):!1},Mpe=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!D(n.node,`CallExpression`)||!C(t)||t.async||t.generator||!D(t.body,`BlockStatement`)||!Ha(t,[e],r))return!1;let i=D(e,`ChainExpression`)?e.expression:e;if(!D(i,`CallExpression`)||!du(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=b(t);if(!a||!C(a))return!1;let o=[];return T(a.body,e=>{if(e!==a.body&&C(e))return!1;if(!D(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)||kd(n.node,o,a,r)},Npe=(e,t,n)=>{if(!V(e,n))return!1;let r=b(e);if(!r||r===b(t.node)||jpe(e,t,n))return!0;let i=b(t.node);return i&&C(i)&&Bd(i,n)&&$pe(i,r,n)?Qpe(i,r,t,n):Mpe(e,r,t,n)?!0:Ed(r,n)},Dd=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Ade.get(t);r||(r=new WeakMap,Ade.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];T(n,n=>{let r=D(n,`ChainExpression`)?n.expression:n;if(!D(r,`CallExpression`))return;let i=D(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(D(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else pd(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;if(e.kind===`timer`){let t=e.registrationVerbName===`setInterval`?`clearInterval`:`clearTimeout`;a=i.identifierCallsByName.get(t)??[]}else a=i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(Cd(n,e,t)&&Npe(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Od=(e,t)=>{let n=Fu(e,t);return C(n)?n:!D(n,`CallExpression`)||!j(n,`useCallback`,t.scopes)?null:Gn(n)},Ppe=(e,t,n)=>{if(!C(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=p(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return T(e.body,s=>{if(s!==e.body&&C(s))return!1;if(!D(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=p(s),l=N(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!D(l,`MemberExpression`)||!Xl(l,n.scopes))return;let u=W(l,n),d=W(l.object,n),f=N(s.right);if(!u||!d||!D(f,`ObjectExpression`))return;let m=f.properties??[];if(!m.some(e=>!D(e,`Property`)))for(let e of m){if(!D(e,`Property`))continue;let r=w(e);if(r&&W(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},kd=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=p(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=p(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},Fpe=(e,t,n,r)=>{if(!C(e))return!1;let i=e.body,a=[];return T(i,e=>{if(e!==i&&C(e))return!1;D(e,`CallExpression`)&&Od(e.callee,r)===t&&a.push(e)}),kd(n,a,e,r)},Ipe=(e,t,n,r,i,a)=>{if(!C(t))return!1;let o=D(e,`ChainExpression`)?e.expression:e;if(!D(o,`CallExpression`)||!D(o.callee,`MemberExpression`)||o.callee.computed||!D(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!D(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=!!(D(c,`BlockStatement`)&&D(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&W(l.test,a)===i);return!D(s,`ExpressionStatement`)||!D(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===W(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===W(o.arguments?.[0],a)&&W(o.arguments?.[1],a)===r},Lpe=(e,t,n)=>{let r=e.parent,i=D(r,`BlockStatement`)?r.parent:r,a=D(r,`BlockStatement`)?r:e;if(!D(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=N(i.test);return D(o,`UnaryExpression`)&&o.operator===`!`&&W(o.argument,n)===t},Ad=(e,t,n,r)=>{if(!C(e))return!0;let i=p(t);if(i===null)return!0;let a=!1;return T(e.body,t=>{if(a||t!==e.body&&C(t))return!1;if(!D(t,`ReturnStatement`))return;let o=p(t);if((o===null||o<i)&&!Lpe(t,n,r))return a=!0,!1}),a},Rpe=(e,t,n,r,i)=>{if(!C(e)||!C(t)||e.async||e.generator)return!1;let a=Ppe(n,r,i);if(!a||!Fpe(n,e,a.assignmentNode,i))return!1;let o=null;if(T(e.body,t=>{if(o||t!==e.body&&C(t))return!1;if(Ipe(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Ad(e,o,a.refCurrentKey,i))return!1;let s=!1;return T(t.body,t=>{if(s)return!1;if(D(t,`UnaryExpression`)&&t.operator===`delete`){let e=N(t.argument);return W(e,i)===a.handlerKey||D(e,`MemberExpression`)&&W(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(D(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=W(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!D(t,`AssignmentExpression`))return;let o=N(t.left);if(D(o,`MemberExpression`)&&o.computed&&W(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=W(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=N(t.right);if(D(l,`Literal`)&&l.value===null&&b(t)===e)return;let u=(D(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>D(e,`Property`))&&u.some(e=>D(e,`Property`)&&`${a.refCurrentKey}.${w(e)??``}`===a.handlerKey&&W(e.value,i)===r.handlerKey);if(b(t)!==n||!d)return s=!0,!1}),!s},zpe=(e,t,n,r,i)=>{let a=e=>{let a=Od(e,i);return!!(a&&Rpe(a,t,n,r,i))};if(!C(e))return!1;if(!D(e.body,`BlockStatement`))return a(N(e.body));let o=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&a(N(e.argument))&&o.push(e)}),Ha(e,o,i)},Bpe=(e,t,n)=>{let r=Es(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=Gn(e);return t&&C(t)?[t]:[]}));return i.references.every(e=>{let n=S(e.identifier),r=n.parent,i=D(r,`CallExpression`)?b(r):null;if(D(r,`CallExpression`)&&r.callee===n&&i&&C(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(D(o,`ArrayExpression`)&&D(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},jd=(e,t,n,r)=>{if(!C(e)||!D(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&M(i)?N(i):null,o=a?C(a)?a:Fu(a,r):null;if(!o||!C(o))return!1;let s=(e,i=new Set)=>{if(!C(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(D(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!j(c,`useCallback`,r.scopes)){if(R(c,o)||qu(c,n.node,t))return!0;let e=b(c);return!!(e&&e!==t&&s(e,a))}let l=Es(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!(D(t,`ArrayExpression`)&&D(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=S(e.identifier),i=r.parent;if(!D(i,`CallExpression`)||i.callee!==r)return!1;if(R(i,o)||qu(i,n.node,t))return!0;let c=b(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(D(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!j(c,`useCallback`,r.scopes))l=[c];else{let t=Es(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(!D(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(R(e,o)||qu(e,n.node,t))return!0;let r=b(e);return!!(r&&r!==t&&s(r))})},Vpe=(e,t,n,r)=>{if(!C(t))return!1;let i=t.parent;if(!D(i,`CallExpression`)||Gn(i)!==t||!iu(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(D(a,`IfStatement`)&&R(e,a.consequent)){let n=Fu(N(a.test),r)??N(a.test);if(D(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=fu(n.left,r),o=fu(n.right,r),s=i??o,c=N(i?n.right:n.left),l=D(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?N(s.initializer):null,d=D(u,`CallExpression`)&&u.arguments[0]&&M(u.arguments[0])?N(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&D(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];T(t.body,e=>{D(e,`AssignmentExpression`)&&e.operator===`=`&&fu(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=N(e.right);return!(D(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=N(e.right);return D(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=N(e);if(D(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!D(t,`CallExpression`)||Wn(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!M(n))return!1;let r=N(n);return D(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(D(c,`IfStatement`)&&R(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&kd(e,i,t,r)&&n.length===i.length)return!0}}}a=a.parent??null}let o=e.parent??null,s=null,c=null,l=null;for(;o&&o!==t;){if(D(o,`IfStatement`)&&R(e,o.consequent)){let e=N(o.test),t=D(e,`UnaryExpression`)&&e.operator===`!`,n=fu(t?e.argument:e,r),i=n?.initializer?N(n.initializer):null,a=D(i,`CallExpression`)&&i.arguments[0]?rn(N(i.arguments[0])):null,u=!t;if(n&&a===u){s=o,c=n,l=u;break}}o=o.parent??null}if(!s||!c||l===null)return!1;let u=b(c.declarationNode);if(!u||!C(u))return!1;let d=[],f=!1;return T(u.body,e=>{if(f)return!1;if(D(e,`UpdateExpression`)&&fu(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!D(e,`AssignmentExpression`)||fu(e.left,r)?.id!==c.id)){if(e.operator!==`=`||rn(N(e.right))===null)return f=!0,!1;d.push(e)}}),f||!kd(e,d.filter(e=>rn(N(e.right))===!l),t,r)?!1:d.every(e=>{if(rn(N(e.right))===!l)return!0;let t=b(e);if(!t||!C(t))return!1;let i=t.parent;if(!D(i,`ReturnStatement`)||i.argument!==t)return!1;let a=b(i);return!!(a&&C(a)&&Hu(a,n,r))})},Md=(e,t,n,r)=>{let i=b(e);if(!i||!C(i))return!1;let a=D(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&M(a)?N(a):null,s=o?C(o)?o:c(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Es(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=S(e.identifier).parent,n=t?.parent;return!(D(t,`ArrayExpression`)&&D(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=S(e.identifier),i=r.parent;return!!(D(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(R(i,s)||qu(i,n.node,t)))}))return!0;let o=b(i);if(o&&o!==t&&C(o)&&!D(o.body,`BlockStatement`)&&N(o.body)===i){let e=Es(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?b(o):null;return!!(D(a,`CallExpression`)&&a.callee===i&&D(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(R(o,s)||qu(o,n.node,t)||c&&jd(c,t,n,r)))}))return!0}}if(Nd(i,i,t,n,r)||jd(i,t,n,r)||Vpe(e,i,n,r)||Xu(i,{...n,node:e},r))return!0;let l=i.parent;return!!(D(l,`CallExpression`)&&Gn(l)===i&&iu(l,r)&&Hu(i,n,r))},Nd=(e,t,n,r,i)=>{let a=e.parent;if(!D(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!pu(a.left,i))return!1;let o=W(a.left,i),s=b(t);if(!o||!s||!C(s))return!1;let c=!1,l=!1;return T(s.body,e=>{if(l)return!1;if(!D(e,`MemberExpression`)||W(e,i)!==o)return;let a=S(e),s=a.parent;if(D(s,`AssignmentExpression`)&&s.left===a)return Od(s.right,i)===t?void 0:(l=!0,!1);if(D(s,`IfStatement`)&&s.test===a){let e=!1;if(T(s.consequent,t=>{if(D(t,`CallExpression`)&&W(N(t.callee),i)===o)return e=!0,!1}),e)return}if(D(s,`CallExpression`)&&s.callee===a&&Md(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Hpe=(e,t,n)=>{let r=Es(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?Nd(e,e,e,t,n):i.references.every(r=>{let i=S(r.identifier),a=i.parent;if(D(a,`CallExpression`)&&a.callee===i){let r=b(a),i=!!(r&&jd(r,e,t,n)),o=Md(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return D(o,`ArrayExpression`)&&D(s,`CallExpression`)&&s.arguments?.[1]===o?!0:Nd(i,e,e,t,n)})},Pd=(e,t,n)=>{let r=b(e);if(!r||!C(r))return!1;let i=jde.get(n);i||(i=new WeakMap,jde.set(n,i));let a=i.get(r);if(!a){let e=[];T(r.body,t=>{D(t,`CallExpression`)&&b(t)===r&&iu(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=Lde(t.node,n),i=Xu(e,t,n),o=e.parent,s=!!(D(o,`CallExpression`)&&Gn(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=Gn(t);return!!(r&&Hu(r,e,n))}));return!!(r.size>0&&l&&(c||dpe(e,t,n)||Hpe(e,t,n)||Bpe(e,a,n)))}for(let i of a){let a=S(i).parent;if(!D(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=Gn(i);if(o&&zpe(o,r,e,t,n))return!0}return!1},Upe=(e,t)=>{let n=Es(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(;D(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=S(n.parent);let r=n.parent;if(D(r,`CallExpression`)&&r.arguments?.[0]===n)return j(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(D(r,`VariableDeclarator`)&&r.init===n&&D(r.id,`Identifier`)&&D(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Wpe=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Fd=e=>{if(!D(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?N(n):null;if(!t||!C(t)||!r||!D(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return T(t.body,e=>{if(a)return!1;if(!D(e,`CallExpression`))return;let t=Wn(e);if(!t||!Wpe.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},Gpe=(e,t)=>{if(!e||!C(e))return!1;let n=Es(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=S(t.identifier),r=n.parent;return!!(D(r,`CallExpression`)&&r.arguments[1]===n&&eu(r)===`addEventListener`&&b(r)===b(e))}):!1},Kpe=(e,t)=>{if(!D(e,`CallExpression`)||!t.filename)return!1;let n=N(e.callee);if(!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n),i=r?bn(r):null,a=r?v(r.declarationNode):null;if(!i||typeof i.source.value!=`string`||!a)return!1;let o=Zt(t.filename,i.source.value,a);if(!o||!C(o.functionNode))return!1;let s=new Set,c=e=>{if(!C(e)||s.has(e))return!1;s.add(e);let t=!0;return T(e.body,n=>{if(!t||n!==e.body&&C(n))return!1;if(D(n,`CallExpression`)){let e=N(n.callee);if(!D(e,`Identifier`))return t=!1,!1;let r=[];return T(o.programNode,t=>{if(C(t)&&Es(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!c(r[0])?(t=!1,!1):void 0}if(D(n,`NewExpression`)||D(n,`AssignmentExpression`)||D(n,`UpdateExpression`)||D(n,`AwaitExpression`)||D(n,`YieldExpression`)||D(n,`ThrowStatement`)||D(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return c(o.functionNode)},qpe=(e,t,n)=>{if(!C(t)||!Kpe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(D(r,`AssignmentExpression`)&&R(e,r.right)&&pu(N(r.left),n))return!0;r=r.parent}return!1},Id=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?N(r):null;if(!n||!C(n)||!i||!D(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return T(n.body,e=>{if(o||e!==n.body&&C(e))return!1;if(D(e,`CallExpression`)&&qpe(e,n,t))return;if(D(e,`CallExpression`)||D(e,`UpdateExpression`))return o=!0,!1;if(!D(e,`AssignmentExpression`))return;let r=N(e.left);if(D(r,`MemberExpression`)&&pu(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||Gpe(b(e),t))},Ld=(e,t)=>{let n=S(e);for(;D(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=S(n.parent);let r=n.parent;return D(r,`ReturnStatement`)&&r.argument===n&&b(r)===t?r:null},Rd=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(D(a,`ReturnStatement`)&&a.argument===i||D(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(D(a,`ChainExpression`)||D(a,`TSAsExpression`)||D(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(D(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||D(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(D(a,`VariableDeclarator`)&&a.init===i&&D(a.id,`Identifier`)&&D(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=b(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:Du(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=Ld(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},Jpe=(e,t,n)=>{if(!C(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!qd(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Upe(e,t),c=r=>{if(s)return cd(e,r,t);if(r.kind!==`timer`){let i=_d(e,t);return!!(n?.allowReturnedResourceEscape===!0||i||vd(e,t))&&Hu(e,r,t,i)||Dd(r,t)||Pd(e,r,t)}let i=_d(e,t);if((n?.allowReturnedResourceEscape===!0||i||vd(e,t))&&Hu(e,r,t,i)||!n?.isEffectInvoked&&(hu(r.node,t)!==null||Xu(e,r,t))&&Dd(r,t)||sd(r,t)||Pd(e,r,t))return!0;let a=b(e),o=a?.parent;return!!(a&&D(o,`CallExpression`)&&iu(o,t)&&cd(a,r,t))};return T(r,e=>{if(i!==null||C(e)||!V(e,t))return!1;if(au(e)&&!Rd(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:D(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:_u(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(D(e,`CallExpression`)){if(D(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!Rd(e,!0,a,t))&&!Fd(e)&&!Id(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(!c(n))return i=n,!1}if(vde(e)&&(!Rd(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!tu(e))){let n=Tu(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:_u(e,t),...n};return!gpe(e,t)&&!c(r)&&(i=r),!1}}}),i},zd=(e,t)=>{if(!C(e)||e.generator)return null;let n=S(e),r=n.parent;if(!D(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=Xl(N(r.left),t.scopes);if(!i)return null;let a=U(r,t.scopes);return!C(a)||b(r)!==a||b(i.bindingIdentifier)!==a||!V(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},Bd=(e,t)=>zd(e,t)?.refSymbol??null,Vd=(e,t,n)=>{let r=S(e),i=r.parent;if(D(i,`VariableDeclarator`)&&i.init===r&&D(i.id,`Identifier`)&&D(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=Ld(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(D(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=S(e);continue}if(D(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=S(e);continue}if(D(e,`LogicalExpression`)&&e.right===r){r=S(e);continue}break}let a=r.parent;return!!(D(a,`ReturnStatement`)&&a.argument===r&&b(a)===t||D(t,`ArrowFunctionExpression`)&&t.body===r)},Ype=(e,t,n)=>D(e,`CallExpression`)&&Xl(N(e.callee),n.scopes)?.id===t.id,Xpe=(e,t)=>{let n=new Map;T(e.body,e=>{if(!C(e))return;let r=zd(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},Hd=(e,t,n)=>{if(!C(e))return[];let r=[],i=[];return T(e.body,a=>{if(a!==e.body&&C(a))return!1;D(a,`AssignmentExpression`)&&V(a,n)&&Xl(N(a.left),n.scopes)?.id===t.id&&r.push(a),Ype(a,t,n)&&V(a,n)&&i.push(a)}),i.filter(t=>!kd(t,r,e,n))},Ud=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},Zpe=(e,t)=>{let n=Ode.get(t);n||(n=new WeakMap,Ode.set(t,n));let r=n.get(e);if(r)return r;let i=Xpe(e,t),a=new Map;T(e.body,n=>{if(n!==e.body&&C(n))return!1;if(!D(n,`CallExpression`)||b(n)!==e||!iu(n,t))return;let r=Gn(n);if(C(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of Hd(r,n,t))Ud(a,n.id,!r.async&&Vd(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 Hd(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&Vd(e,n.functionNode,t);Ud(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},Wd=(e,t)=>{if(!C(e))return null;let n=zd(e,t),r=U(e,t.scopes);if(!n||!C(r))return null;let i=Zpe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},Qpe=(e,t,n,r)=>{if(!C(e)||e.async||Wd(e,r)?.doesEffectOwnEveryResult!==!0||!D(e.body,`BlockStatement`))return!1;let i=e=>{let n=Od(en(e),r);if(!n)return!1;if(n===t)return!0;if(!C(n))return!1;let i=[];return T(n.body,e=>{if(e!==n.body&&C(e))return!1;D(e,`CallExpression`)&&Od(e.callee,r)===t&&i.push(e)}),Ha(n,i,r)},a=[];return Ql(e.body,e=>{D(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),Du(n.node,a,r)},$pe=(e,t,n)=>{if(!C(e)||!D(e.body,`BlockStatement`))return!1;let r=!1;return Ql(e.body,e=>{r||!D(e,`ReturnStatement`)||!e.argument||T(e.argument,e=>{if(Od(e,n)===t)return r=!0,!1})}),r},Gd=e=>D(e,`FunctionDeclaration`)?Wl(e)!==null:!D(e,`ArrowFunctionExpression`)&&!D(e,`FunctionExpression`)||!D(e.parent,`VariableDeclarator`)?!1:Wl(e)!==null,Kd=e=>{let t=S(e),n=t.parent;return D(n,`JSXExpressionContainer`)&&n.expression===t&&Jl(n.parent)},qd=(e,t)=>{if(!C(e))return!1;let n=S(e),r=n.parent;if(D(r,`CallExpression`)&&r.arguments?.[0]===n&&Yn(r,`useCallback`,t.scopes)&&Kd(r))return!0;let i=e.parent;if(Kd(e))return!0;if(!D(i,`Property`)||i.value!==e||i.computed)return!1;let a=w(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!D(o,`ObjectExpression`))return!1;let s=o.parent;return(D(s,`CallExpression`)&&s.arguments.some(e=>e===o)||D(s,`JSXExpressionContainer`))&&U(i,t.scopes)!==null},Jd=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=N(e);return D(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:D(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||D(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:D(n,`ArrayExpression`)||D(n,`ArrowFunctionExpression`)||D(n,`ClassExpression`)||D(n,`FunctionExpression`)||D(n,`NewExpression`)||D(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},Yd=(e,t,n)=>{let r=N(e),i=Jd(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(D(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(D(r,`UnaryExpression`)&&r.operator===`!`){let e=Yd(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(D(r,`LogicalExpression`)){let e=Yd(r.left,t,n),i=Yd(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(D(r,`ConditionalExpression`)){let e=Yd(r.test,t,n);if(e===`truthy`)return Yd(r.consequent,t,n);if(e===`falsy`)return Yd(r.alternate,t,n);let i=Yd(r.consequent,t,n);return i===Yd(r.alternate,t,n)?i:`unknown`}return D(r,`CallExpression`)&&D(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&M(r.arguments[0])?Yd(r.arguments[0],t,n):`unknown`},eme=(e,t,n,r)=>{let i=new Map;if(!C(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&M(e)?e:null,c=null,l=Jd(s,r);if(D(o,`Identifier`)?c=o:D(o,`AssignmentPattern`)&&D(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=Jd(o.right,r))):D(o,`RestElement`)&&D(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},tme=(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(D(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!D(t,`IfStatement`)||t.alternate||!Yl(t.consequent))&&Yd(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(D(o,`IfStatement`)||D(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):D(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((D(o,`WhileStatement`)||D(o,`DoWhileStatement`))&&o.body===a||D(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=Yd(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},nme=(e,t)=>{if(!C(e))return[];let n=b(e);if(!n||!C(n))return[];let r=kde.get(t);r||(r=new WeakMap,kde.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 T(n.body,e=>{if(!D(e,`CallExpression`)||b(e)!==n||!iu(e,t))return;let r=Gn(e);!r||!C(r)||T(r.body,e=>{if(e!==r.body&&C(e))return!1;if(!(!D(e,`CallExpression`)||!V(e,t))){o(Od(e.callee,t),e,!0);for(let n of e.arguments)!M(n)||!Rl(e,n)||o(Od(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},Xd=y({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=Wd(t,e);if(!n&&!Ed(t,e))return;let r=nme(t,e),i=r.length>0,a=Jpe(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`&&(!V(a.node,e)||C(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>tme(t,a.node,n,e))))return;let o=Mde[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(Yn(n,`useCallback`,e.scopes)){let r=Gn(n);r&&!qd(r,e)&&t(r);return}if(!iu(n,e))return;let r=Gn(n);if(!r)return;let i=Jde(r,qde(r,e),e);if(i.length===0)return;let a=mpe(r,i,e);if(!a)return;let o=Mde[a.kind],s=Wn(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){Gd(e)&&t(e)},ArrowFunctionExpression(n){(Gd(n)||qd(n,e)||Bd(n,e))&&t(n)},FunctionExpression(n){(Gd(n)||qd(n,e)||Bd(n,e))&&t(n)}}}}),rme=new Set([`window`,`globalThis`,`self`]),ime=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),ame=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=S(e.identifier),n=t.parent;return!D(n,`MemberExpression`)||n.object!==t?!1:D(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(D(n.parent,`CallExpression`)&&n.parent.callee===n&&ime.has(O(n)??``))}),ome=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||ame(e))return null;r.add(e.id);let i=$o(e);if(!i)return n;let a=N(i);if(!D(a,`Identifier`))return n;n=a}},sme=e=>{let t=b(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(D(n,`ConditionalExpression`)||D(n,`IfStatement`)||D(n,`LogicalExpression`)||D(n,`SwitchStatement`)||D(n,`ForStatement`)||D(n,`ForInStatement`)||D(n,`ForOfStatement`)||D(n,`WhileStatement`)||D(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},Zd=(e,t,n)=>{let r=b(e);if(!r||!C(r))return null;let i=S(r),a=i.parent;if(!D(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=N(a.callee);if(!D(o,`MemberExpression`)||O(o)!==`forEach`||r.async||!sme(a))return null;let s=N(o.object);if(!D(s,`Identifier`))return null;let c=ome(s,n);if(!c)return null;let l=Ya({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=N(e);if(D(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=$o(e);return a&&!u.has(e.id)&&b(e.declarationNode)===r?(u.add(e.id),d(a)):Ya({node:t,scopes:n.scopes})}if(D(t,`Literal`))return JSON.stringify(t.value);if(D(t,`MemberExpression`)){let e=d(t.object),n=O(t);return e&&n?`${e}.${n}`:null}if(D(t,`CallExpression`)){let e=N(t.callee);if(!D(e,`MemberExpression`)||O(e)!==`getElementById`)return null;let r=N(e.object);if(!D(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>D(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(D(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(D(h,`ConditionalExpression`)||D(h,`LogicalExpression`)||D(h,`SwitchStatement`)||D(h,`ForStatement`)||D(h,`ForInStatement`)||D(h,`ForOfStatement`)||D(h,`WhileStatement`)||D(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},Qd=(e,t,n)=>{let r=A(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=S(e),a=i.parent;if(!(D(a,`VariableDeclarator`)&&a.id===e)&&!(D(a,`VariableDeclarator`)&&a.init===i)&&!(D(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(D(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(D(a,`MemberExpression`)&&a.object===i){let e=O(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!D(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?Zd(r,e,n):null,a=e?Ya({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?Zd(r,e,n):null,a=e?Ya({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(D(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=N(a.callee);if(D(e,`MemberExpression`)&&O(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},cme=(e,t,n)=>{let r=!1;return Xa(e,e=>{D(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},lme=(e,t,n,r)=>{if(!n)return!1;let i=N(e);if(!D(i,`MemberExpression`)||O(i)!==`target`)return!1;let a=N(i.object);if(!D(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=b(a);if(!s||s===t||!C(s))return!1;let c=S(s),l=c.parent;if(!D(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=N(l.callee);return D(u,`MemberExpression`)&&O(u)===`forEach`&&cme(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},ume=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?N(e.arguments[0]):null;if(!r||!D(r,`ArrowFunctionExpression`)&&!D(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||!D(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&Xa(i,e=>{if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let a=N(r.object);if(!D(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=O(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(lme(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=Ya({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},$d=(e,t)=>{let n=N(e),r=D(n,`Identifier`)?A(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},ef=(e,t,n=new Set)=>{let r=N(e);if(n.has(r))return!1;if(n.add(r),D(r,`Identifier`)){let e=A(r,r.name)?.initializer;return e?ef(e,t,n):!1}let i=D(r,`CallExpression`)?N(r.callee):null,a=D(i,`MemberExpression`)?N(i.object):null;if(!D(r,`CallExpression`)||!D(i,`MemberExpression`)||O(i)!==`bind`||!D(a,`MemberExpression`)||O(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&$d(a.object,t)&&$d(o,t))},dme=(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(!D(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=N(r.callee);D(i,`MemberExpression`)&&O(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!Va(e,[r],t)))return null;let i=N(r.callee);if(!D(i,`MemberExpression`))return null;let a=N(i.object);if(!D(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?N(o.initializer):null;return!o||o.kind!==`const`||!D(s,`ArrayExpression`)||(s.elements?.length??0)!==0||b(o.declarationNode)!==b(e.construction)||!o.references.every(e=>{let t=S(e.identifier),n=t.parent,r=n?.parent;return!!(D(n,`MemberExpression`)&&n.object===t&&D(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(O(n)??``))})?null:Ya({node:a,scopes:t.scopes})},fme=(e,t)=>{if(!C(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!D(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return Xa(e,e=>{if(!D(e,`CallExpression`))return;let n=N(e.callee);if(!D(n,`MemberExpression`)||O(n)!==`disconnect`)return;let a=N(n.object);D(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),Ha(e,i,t)},pme=(e,t,n,r)=>{let i=e=>{if(!C(e)||e.async||e.generator)return!1;let t=[];return T(e.body,i=>{if(!D(i,`CallExpression`)||b(i)!==e)return;let a=N(i.callee);if(!D(a,`MemberExpression`)||O(a)!==`forEach`||Ya({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&fme(o,r)&&t.push(i)}),Ha(e,t,r)};if(!C(e))return!1;if(!D(e.body,`BlockStatement`)){let t=ic(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=Xe(e).filter(e=>{if(!e.argument)return!1;let t=ic(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>Va(e,a,r))},mme=(e,t,n)=>El({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!C(e))return!1;let r=[];return T(e.body,n=>{if(n!==e.body&&C(n))return!1;let i=D(n,`ChainExpression`)?n.expression:n,a=D(i,`CallExpression`)?N(i.callee):null;D(i,`CallExpression`)&&D(a,`MemberExpression`)&&O(a)===`disconnect`&&$d(a.object,t.bindingIdentifiers)&&r.push(n)}),Ha(e,r,n)}}),tf=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!C(n))return;let r=new Map;if(Xa(n,t=>{if(!D(t,`NewExpression`))return;let n=N(t.callee);if(!(D(n,`Identifier`)?Ze.has(n.name)&&!A(n,n.name):D(n,`MemberExpression`)&&D(N(n.object),`Identifier`)&&rme.has(N(n.object).name)&&!A(n.object,N(n.object).name)&&Ze.has(O(n)??``)))return;let i=S(t),a=i.parent;if(!D(a,`VariableDeclarator`)||a.init!==i||!(D(a.id,`Identifier`)&&a.id.name))return;let o=ume(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=oc(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());Xa(n,t=>{if(!D(t,`Identifier`))return;let n=A(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qd(t,i,e)});for(let t of ac(n))Xa(t,t=>{if(!D(t,`Identifier`))return;let n=A(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&Qd(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||!C(N(n))||Xa(N(n),n=>{if(!D(n,`Identifier`))return;let i=A(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&Qd(n,t,e)})}let a=D(n.body,`BlockStatement`)?Xe(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>ef(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||mme(n,t,e))continue;let i=dme(t,e);i&&pme(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()`."})}}})}),nf=`cancelAnimationFrame`,rf=`collection-values:`,hme=new Set([`min`,`max`]),af=e=>D(e,`CallExpression`)&&sf(e,`requestAnimationFrame`),of=new Set([`window`,`globalThis`,`self`]),sf=(e,t)=>{let n=N(e.callee);if(D(n,`Identifier`))return n.name===t&&!A(n,n.name);if(!D(n,`MemberExpression`)||O(n)!==t)return!1;let r=N(n.object);return D(r,`Identifier`)&&of.has(r.name)&&!A(r,r.name)},cf=e=>{if(!e)return null;let t=N(e);if(D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`))return t;if(D(t,`Identifier`)){let e=A(t,t.name)?.initializer;if(C(e))return e}return null},lf=(e,t,n)=>{let r=new Set,i=N(e);if(D(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of oc(e,n))r.add(t)}if((D(t,`FunctionExpression`)||D(t,`FunctionDeclaration`))&&t.id&&D(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of oc(e,n))r.add(t)}return r},uf=(e,t,n)=>{let r=N(e);return D(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},gme=(e,t,n)=>{let r=!1;return Xa(e,e=>{if(r)return!1;if(!af(e))return;let i=e.arguments?.[0];if(i&&uf(i,t,n))return r=!0,!1}),r},_me=(e,t)=>{let n=[];return Xa(e,e=>{if(!af(e))return;let r=e.arguments?.[0];if(!r)return;let i=cf(r);i&&gme(i,lf(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},df=e=>{let t=N(e);if(D(t,`Identifier`)){let e=A(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=df(e.initializer);if(t&&t!==n)return t}return n}if(!D(t,`MemberExpression`))return null;let n=df(t.object),r=O(t);return n&&r?`${n}.${r}`:null},vme=e=>{let t=S(e),n=t.parent;if(D(n,`AssignmentExpression`)&&n.right===t)return df(n.left);if(D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`))return df(n.id);if(D(n,`CallExpression`)&&D(n.callee,`MemberExpression`)){let e=O(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?df(n.callee.object):null;if(i)return`${rf}${i}`}return null},ff=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=lf(n,e.scheduledFunction,t),i=[e.rafCall];return Xa(e.scheduledFunction,e=>{if(!af(e))return;let n=e.arguments?.[0];n&&uf(n,r,t)&&i.push(e)}),i},yme=e=>{let t=S(e),n=t.parent;return D(n,`AssignmentExpression`)&&n.right===t?n.left:D(n,`VariableDeclarator`)&&n.init===t&&D(n.id,`Identifier`)?n.id:null},pf=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(C(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return T(e,a=>{if(i||a!==e&&C(a))return!1;let o=D(a,`AssignmentExpression`)?a.left:D(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&df(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},bme=(e,t,n)=>{let r=ff(e,n),i=r.map(vme),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(rf))return a;let o=new Set(r.flatMap(e=>{let t=yme(e);return t?[t]:[]}));return pf(t,a,o)||pf(e.scheduledFunction,a,o)?null:a},xme=(e,t,n)=>{let r=!1;return Xa(e,e=>{if(r||!D(e,`CallExpression`))return;let i=N(e.callee);if(!D(i,`MemberExpression`)||O(i)!==`forEach`||df(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!D(a,`SpreadElement`)?cf(a):null;if(!C(o))return;let s=o.params?.[0];D(s,`Identifier`)&&T(o,e=>{if(r||e!==o&&C(e))return!1;if(!D(e,`CallExpression`))return;let t=e.arguments?.[0];if(mf(e)&&D(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},Sme=(e,t,n)=>{if(t.startsWith(rf))return xme(e,t.slice(18),n);let r=!1;return Xa(e,e=>{if(r||!D(e,`CallExpression`)||!mf(e))return;let n=e.arguments?.[0];n&&df(n)===t&&(r=!0)}),r},mf=e=>{if(sf(e,nf))return!0;let t=N(e.callee);if(!D(t,`Identifier`))return!1;let n=A(t,t.name)?.bindingIdentifier?.parent;if(!D(n,`Property`)||(D(n.key,`Identifier`)?n.key.name:D(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==nf)return!1;let r=n.parent,i=r?.parent;if(!D(r,`ObjectPattern`)||!D(i,`VariableDeclarator`))return!1;let a=i.init?N(i.init):null;return D(a,`Identifier`)&&of.has(a.name)&&!A(a,a.name)},Cme=(e,t)=>{Xa(e,e=>{let n=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(D(n,`Identifier`)){let e=df(n);e&&t.add(e)}else if(D(n,`MemberExpression`)){let e=df(n);e&&t.add(e)}})},wme=(e,t,n)=>{if(D(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!D(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return yf(e.right);if(e.operator!==`=`)return!1;let r=N(e.right),i=D(r,`BinaryExpression`)?N(r.left):null;return D(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&D(i,`Identifier`)&&df(i)===t&&yf(r.right)},hf=(e,t)=>{let n=new Set,r=new Set;Xa(e,e=>{let i=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(!D(i,`Identifier`))return;let a=df(i);a&&(wme(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},Tme=(e,t)=>{let n=D(e,`AssignmentExpression`)?e.left:D(e,`UpdateExpression`)?e.argument:null;if(!D(n,`Identifier`)&&!D(n,`MemberExpression`))return;let r=df(n);if(!r)return;if(D(e,`UpdateExpression`)||D(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!D(e,`AssignmentExpression`))return;let i=N(e.right);if(!D(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)},Eme=e=>D(e,`IfStatement`)||D(e,`ConditionalExpression`)||D(e,`LogicalExpression`)||D(e,`SwitchStatement`)||D(e,`TryStatement`)||D(e,`ForStatement`)||D(e,`ForInStatement`)||D(e,`ForOfStatement`)||D(e,`WhileStatement`)||D(e,`DoWhileStatement`),Dme=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(Eme(n))return!1;n=n.parent}return n===t||e===t},Ome=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),Xa(e,r=>{if(!Dme(r,e)||(Tme(r,n),!D(r,`CallExpression`)))return;let a=r.callee;if(D(a,`Identifier`)){let e=df(a);T(t,t=>{D(t,`VariableDeclarator`)&&D(t.id,`Identifier`)&&df(t.id)===e&&t.init&&C(t.init)&&i(t.init)});return}if(D(a,`MemberExpression`)){let e=df(a);if(!e)return;if(O(a)===`abort`){let e=df(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}T(t,t=>{D(t,`AssignmentExpression`)&&D(t.left,`MemberExpression`)&&df(t.left)===e&&t.right&&C(t.right)&&i(t.right)})}}))};return i(e),n},gf=(e,t)=>{let n=N(e);if(D(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(D(n,`Identifier`)||D(n,`MemberExpression`)){let e=df(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(D(n,`UnaryExpression`)&&n.operator===`!`){let e=gf(n.argument,t);return e===null?null:!e}if(D(n,`LogicalExpression`)){let e=gf(n.left,t);if(n.operator===`??`)return e;let r=gf(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(!D(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=gf(n.left,t),o=gf(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=df(n.left),c=df(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},_f=e=>D(e,`ReturnStatement`)||D(e,`ThrowStatement`)?!0:D(e,`BlockStatement`)&&!!e.body?.some(e=>_f(e))||D(e,`IfStatement`)&&!!e.alternate&&_f(e.consequent)&&_f(e.alternate),vf=(e,t,n)=>{let r=gf(e,n);return r!==null&&r!==t},kme=(e,t,n)=>{let r=gf(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},Ame=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((D(e,`IfStatement`)||D(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&vf(e.test,e.consequent===r,n)||D(e,`LogicalExpression`)&&e.right===r&&kme(e.left,e.operator,n))return!0;if(D(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(D(e,`IfStatement`)&&(_f(e.consequent)&&vf(e.test,!1,n)||e.alternate&&_f(e.alternate)&&vf(e.test,!0,n)))return!0}}r=e}return!1},jme=(e,t,n)=>{let r=ff(e,n).slice(1);return r.length>0&&r.every(n=>Ame(n,e.scheduledFunction,t))},yf=e=>D(e,`Literal`)&&typeof e.value==`number`&&e.value>0,Mme=(e,t)=>{let n=N(e);return D(n,`Literal`)&&typeof n.value==`number`||D(n,`Identifier`)&&!t.has(df(n)??``)},bf=(e,t,n)=>{let r=N(e);if(D(r,`Identifier`)){let e=df(r);return e?t.has(e):!1}if(D(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return bf(r.left,t,n)&&Mme(r.right,n);if(r.operator===`*`||r.operator===`/`)return bf(r.left,t,n)&&yf(r.right)}if(!D(r,`CallExpression`))return!1;let i=N(r.callee),a=D(i,`MemberExpression`)?N(i.object):null;if(!D(i,`MemberExpression`)||!D(a,`Identifier`)||a.name!==`Math`||A(a,a.name)||!hme.has(O(i)??``))return!1;let o=!1;for(let e of r.arguments){if(bf(e,t,n)){o=!0;continue}if(!D(e,`Literal`)||typeof e.value!=`number`)return!1}return o},xf=(e,t,n,r,i)=>{let a=N(e);if(D(a,`UnaryExpression`)&&a.operator===`!`)return xf(a.argument,t,n,r,!i);if(D(a,`LogicalExpression`)&&a.operator!==`??`)return xf(a.left,t,n,r,i)&&xf(a.right,t,n,r,i);if(!D(a,`BinaryExpression`))return!1;let o=bf(a.left,t,r)&&D(a.right,`Literal`)&&typeof a.right.value==`number`,s=D(a.left,`Literal`)&&typeof a.left.value==`number`&&bf(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=bf(a.left,n,r)&&D(a.right,`Literal`)&&typeof a.right.value==`number`,d=D(a.left,`Literal`)&&typeof a.left.value==`number`&&bf(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},Nme=(e,t)=>{let n=e.scheduledFunction,r=new Set;Cme(n,r);let i=hf(n,!0),a=hf(n,!1);if(C(n)){for(let e of n.params??[])if(D(e,`Identifier`)){let t=df(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,Xa(n,e=>{if(!D(e,`VariableDeclarator`)||!e.init)return;let t=D(e.id,`Identifier`)?df(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(bf(e.init,i,r)?(i.add(t),o=!0):bf(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=ff(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((D(s,`IfStatement`)||D(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&xf(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},Sf=y({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(!cc(t,e.scopes))return;let n=Gn(t);if(!n)return;let r=ac(n);for(let t of _me(n,e.scopes)){if(Nme(t,e.scopes))continue;let i=bme(t,n,e.scopes);i&&r.some(t=>Sme(t,i,e.scopes))||r.some(r=>jme(t,Ome(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.`})}}})}),Pme=new Set([`removeEventListener`,`removeListener`,`off`]),Fme=/(?:duration|delay|timeout|ms)$/i,Ime=e=>{let t=N(e);if(D(t,`Literal`)&&typeof t.value==`number`)return!0;if(!D(t,`Identifier`))return!1;if(Fme.test(t.name))return!0;let n=A(t,t.name);if(!n?.initializer)return!1;let r=N(n.initializer);return D(r,`Literal`)&&typeof r.value==`number`},Lme=e=>{let t=N(e);return ki(t)?!0:D(t,`CallExpression`)&&D(t.callee,`MemberExpression`)&&O(t.callee)===`bind`},Rme=new Set([`addEventListener`,`addListener`,`on`,`once`]),Cf=`handler-only`,zme=(e,t)=>{let n=new Set;return T(e,e=>{if(!D(e,`CallExpression`))return;let r=N(e.callee);if(!D(r,`MemberExpression`))return;let i=O(r);if(!i||!Rme.has(i))return;let a=Ya({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?Cf:xl(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},wf=y({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=N(n.callee);if(!D(r,`MemberExpression`))return;let i=O(r);if(!i||!Pme.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&Ime(a[0])||!Lme(s))return;let c=Ya({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?Cf:xl(a[0],e.scopes),u=x(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=zme(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.`})}}}}),Bme=new Set([`columnheader`,`rowheader`]),Vme=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=L(e.attributes,t,!1);if(!n)continue;let r=I(n);if(r===null||r.trim().length>0)return!0}return!1},Tf=y({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=E(n);if(/^[A-Z]/.test(r))return;let i=L(n.attributes,`role`,!1),a=i?I(i)?.toLowerCase():null;r!==`th`&&(!a||!Bme.has(a))||jr(t,e.settings)||Vme(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.`})}})}),Hme=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return T(e,a=>{if(a!==e&&C(a)){let e=Df(a,t);for(let t of e)t.resolvedSymbol&&!fn(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&&(fn(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},Ef=new WeakMap,Df=(e,t)=>{let n=Ef.get(t);n||(n=new WeakMap,Ef.set(t,n));let r=n.get(e);if(r)return r;let i=Hme(e,t);return n.set(e,i),i};let Of=0;const kf=e=>{let t={id:Of++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},Af=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},jf=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Mf=(e,t,n)=>{if(e.nodeBlock.set(t,n),C(t)){e.nestedFunctions.push(t);return}let r=t,i=Ute[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];M(r)&&Mf(e,r,n)}else M(o)&&Mf(e,o,n)}},Ume=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}},Nf=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Nf(e.argument);return t===null?null:!t}return null},Pf=e=>e===null||Nf(e)===!0,Ff=(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},If=(e,t,n)=>{let r=n;for(let n of t)r=Lf(e,n,r);return r},Lf=(e,t,n)=>{if(e.nodeBlock.set(t,n),!Ume(t))return jf(e,n,t),Mf(e,t,n),n;if(t.type===`BlockStatement`)return If(e,t.body,n);if(t.type===`LabeledStatement`){let r=kf(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Lf(e,a,n);return e.labelStack.pop(),Af(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Mf(e,t.argument,n),Af(n,e.exit,`uncond`),kf(e);if(t.type===`ThrowStatement`){t.argument&&Mf(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?Af(n,r.catch,`uncond`):r?.finally?Af(n,r.finally,`uncond`):Af(n,e.exit,`throw`),kf(e)}if(t.type===`BreakStatement`){let r=Ff(e,t.label?t.label.name:null);return r?Af(n,r.merge,`uncond`):Af(n,e.exit,`uncond`),kf(e)}if(t.type===`ContinueStatement`){let r=Ff(e,t.label?t.label.name:null);return r?.header&&Af(n,r.header,`uncond`),kf(e)}if(t.type===`IfStatement`){Mf(e,t.test,n);let r=kf(e),i=kf(e);if(Af(n,r,`cond`),Af(Lf(e,t.consequent,r),i,`uncond`),t.alternate){let r=kf(e);Af(n,r,`cond`),Af(Lf(e,t.alternate,r),i,`uncond`)}else Af(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Pf(t.test);Mf(e,t.test,n);let a=kf(e),o=kf(e),s=kf(e);r?Af(n,o,`uncond`):(Af(n,a,`uncond`),Af(a,o,i?`uncond`:`cond`),i||Af(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Lf(e,t.body,o);return e.loopStack.pop(),r?(Af(c,a,`uncond`),Af(a,o,i?`uncond`:`cond`),i||Af(a,s,`cond`)):Af(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Mf(e,t.init,n),t.test&&Mf(e,t.test,n);let r=kf(e),i=kf(e),a=kf(e),o=Pf(t.test??null);Af(n,r,`uncond`),Af(r,i,o?`uncond`:`cond`),o||Af(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Lf(e,t.body,i);return e.loopStack.pop(),t.update&&Mf(e,t.update,r),Af(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Mf(e,t.right,n),Mf(e,t.left,n);let r=kf(e),i=kf(e),a=kf(e);Af(n,r,`uncond`),Af(r,i,`cond`),Af(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Lf(e,t.body,i);return e.loopStack.pop(),Af(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Mf(e,t.discriminant,n);let r=kf(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=kf(e);Af(n,t,`cond`),i&&Af(i,t,`uncond`),i=If(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&Af(i,r,`uncond`),a||Af(n,r,`cond`),r}if(t.type===`TryStatement`){let r=kf(e),i=kf(e),a=null,o=null;t.handler&&(a=kf(e)),t.finalizer&&(o=kf(e)),Af(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=If(e,t.block.body,r);if(e.tryStack.pop(),a&&Af(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Lf(e,n,a);o?Af(r,o,`uncond`):Af(r,i,`uncond`)}return o&&t.finalizer?(Af(s,o,`uncond`),Af(If(e,t.finalizer.body,o),i,`uncond`)):Af(s,i,`uncond`),i}return jf(e,n,t),Mf(e,t,n),n},Wme=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=kf(r),a=kf(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=If(r,t.body,i):(Mf(r,t,i),o=i),Af(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},Gme=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},Rf=e=>{Of=0;let t=new Map,n=[],r=(e,r)=>{let i=Wme(e,r,n);t.set(e,{cfg:i,unconditionalSet:Gme(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!C(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!C(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(C(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}}},Kme=e=>{let t=N(e);return D(t,`ObjectExpression`)?`object`:D(t,`ArrayExpression`)?`array`:D(t,`ArrowFunctionExpression`)||D(t,`FunctionExpression`)?`function`:D(t,`JSXElement`)||D(t,`JSXFragment`)?`JSX`:D(t,`NewExpression`)?`instance`:null},zf=(e,t,n=new Set)=>{let r=Kme(e);if(r)return{bindingName:null,kind:r};let i=N(e);if(!D(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`)||!D(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=zf(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},qme=new Set([...An,`useImperativeHandle`,`useInsertionEffect`]),Bf=new WeakMap,Vf=new WeakMap,Hf=new WeakMap,Uf=e=>{let t=Bf.get(e.programNode);if(t)return t;let n=Qt(e.programNode);return Bf.set(e.programNode,n),n},Jme=e=>{let t=Vf.get(e.programNode);if(t)return t;let n=Rf(e.programNode);return Vf.set(e.programNode,n),n},Wf=(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},Gf=(e,t)=>{let n=bs(e)??t??``;return n!==`use`&&_s(n)},Kf=(e,t)=>{if(!D(e,`Identifier`))return null;let n=k(e,t);if(n?.kind!==`import`||!n.initializer)return null;let r=n.initializer.parent;if(!r||!D(r,`ImportDeclaration`))return null;let i=r.source?.value;if(typeof i!=`string`)return null;let a=v(n.initializer);return a?{exportedName:a,source:i}:null},Yme=(e,t,n)=>{if(!n)return null;let r=Kf(e,t);if(!r)return null;let i=D(e,`Identifier`)?e.name:``;if(r.source===`react`||!_s(i)&&!_s(r.exportedName))return null;let a=Zt(n,r.source,r.exportedName);return!a||!Gf(a.functionNode,r.exportedName)?null:{cfg:Jme(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Uf(a)}},qf=(e,t,n,r=new Set)=>{let i=N(e);if(D(i,`Identifier`)){let e=k(i,t);if(!e||r.has(e.id))return null;if(yn(e)){let t=bt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||Qf(e)?null:(r.add(e.id),qf(e.initializer,t,n,r))}if(D(i,`MemberExpression`)){let e=O(i);if(!e||!n.has(e))return null;let r=N(i.object);return!D(r,`Identifier`)||!mn(r,t)?null:e===`useImperativeHandle`?2:1}if(!D(i,`ConditionalExpression`))return null;let a=qf(i.consequent,t,n,new Set(r)),o=qf(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Xme=(e,t,n,r)=>{if(!n)return null;let i=Kf(N(e.callee),t);if(!i)return null;let a=Rt(n,i.source,i.exportedName);return a?qf(a.exportedNode,Uf(a),r):null},Jf=(e,t,n,r)=>{let i=N(e.callee),a=c(i,t);if(a&&Gf(a)){let e=x(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Yme(i,t,r)},Yf=e=>{if(!C(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=N(r);if(D(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(D(e,`AssignmentPattern`)&&D(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(D(e,`ObjectPattern`))for(let r of e.properties??[]){if(!D(r,`Property`))continue;let e=w(r,{allowComputedString:!0});if(!e)continue;let i=N(r.value);D(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):D(i,`AssignmentPattern`)&&D(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Xf=(e,t,n=new Set)=>{let r=N(e);if(D(r,`ObjectExpression`))return r;if(!D(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||Qf(i)?null:(n.add(i.id),Xf(i.initializer,t,n))},Zme=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(D(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(D(r,`Property`)&&w(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Zf=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>D(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=Xf(r,n);return i?Zme(i,t.propertyName):{expression:null,isProvenOmitted:!1}},Qf=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&D(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(D(n,`AssignmentExpression`)&&n.left===e||D(n,`UpdateExpression`)&&n.argument===e||D(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(D(n,`CallExpression`)&&n.callee===e&&D(e,`MemberExpression`)){let t=O(e);if(t&&(_r.has(t)||vr.has(t)))return!0}}return!1},$f=(e,t,n,r,i=new Set)=>{let a=N(e);if(!D(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||Qf(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!D(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),$f(o.initializer,t,n,r,i))},ep=(e,t,n,r=new Set)=>{if($f(e,`list`,t,n))return!0;let i=N(e);if(D(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||Qf(e)?!1:(r.add(e.id),ep(e.initializer,t,n,r))}return D(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?D(e,`SpreadElement`)?$f(e.argument,`list`,t,n):$f(e,`value`,t,n):!1):!1},Qme=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Yf(t.functionNode)){let o=Zf(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||Qf(s)||($f(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),($f(o.expression,`list`,n,r)||ep(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},tp=(e,t,n,r,i)=>{if(!C(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?Qf(n):!1}))return!1;let o=new Set(r);o.add(a);let s=!1;return T(a.body,r=>{if(s||r!==a.body&&C(r))return!1;if(!D(r,`CallExpression`)||!Wf(r,e.cfg))return;if(j(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=N(r.callee),i=(D(n,`Identifier`)?n.name:D(n,`MemberExpression`)?O(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!D(a,`SpreadElement`)&&ep(a,e.scopes,t)?(s=!0,!1):void 0}let c=Xme(r,e.scopes,e.filePath,i);if(c!==null){let n=r.arguments?.[c];return n&&!D(n,`SpreadElement`)&&ep(n,e.scopes,t)?(s=!0,!1):void 0}if(n===0)return;let l=Jf(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=Qme(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&tp(l,u,n-1,o,i))return s=!0,!1}),s},np=(e,t,n=qme)=>{let r=Hf.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Hf.set(e,new Map([[n,a]]));let o=Jf(e,t.scopes,t.cfg,t.filename);if(!o||!U(e,t.scopes)||!Wf(e,t.cfg))return a;for(let r of Yf(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||Qf(i))continue;let s=Zf(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=zf(c,s.expression?t.scopes:o.scopes);l&&tp(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(D(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},rp=new WeakMap,$me=e=>{let t=new Map;if(!D(e,`Program`))return t;for(let n of e.body){let e=D(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!D(e,`TSInterfaceDeclaration`)&&!D(e,`TSTypeAliasDeclaration`)||!D(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},ip=(e,t)=>{let n=x(e);if(!n)return[];let r=rp.get(n);return r||(r=$me(n),rp.set(n,r)),r.get(t)??[]},ehe=e=>D(e,`Identifier`)?e.name:D(e,`MemberExpression`)&&!e.computed&&D(e.object,`Identifier`)&&e.object.name===`React`&&D(e.property,`Identifier`)?`React.${e.property.name}`:null,ap=e=>{let t=e.parent;if(!t||!D(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=ehe(t.callee);return n!==null&&Be.has(n)},the=new Set([`function`,`arrow-function`,`method`]),op=e=>{let t=e.scope;for(;t;){if(the.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},sp=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),G=e=>{let t=e;for(;sp.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},cp=(e,t)=>{let n=G(e);if(D(n,`Identifier`)){let e=t?k(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&D(r,`ImportDeclaration`)&&r.source.value===`react`?bt(e.declarationNode)??n.name:n.name}return D(n,`MemberExpression`)&&!n.computed&&D(n.property,`Identifier`)?n.property.name:null},lp=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,nhe=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,rhe=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,ihe=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,up=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ahe=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ohe=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,dp=e=>`\`${e}\` re-runs on every render with no dependency array.`,she=e=>`\`${e}\` crashes without a function as its first argument.`,che=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",lhe=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,fp=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,uhe=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,pp=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,mp=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,dhe=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,fhe=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,phe=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,mhe=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}},ghe=new Set([`===`,`!==`]),_he=(e,t)=>{let n=e.declarationNode;if(!D(n,`VariableDeclarator`)||!D(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!D(i,`Identifier`))return null;let a=n.init?N(n.init):null;return!a||!j(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},vhe=(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(!D(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||b(i)!==t)return null;let a=N(i.arguments[0]);return D(a,`ArrowFunctionExpression`)||D(a,`FunctionExpression`)||D(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},yhe=(e,t)=>{if(!D(e,`CallExpression`))return!1;let n=N(e.callee);if(!D(n,`MemberExpression`))return!1;let r=O(n),i=N(n.object);return!!(r===`is`&&D(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},hp=(e,t)=>{let n=N(e);return D(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},bhe=(e,t,n)=>{let r=N(e);if(D(t,`BinaryExpression`)&&ghe.has(t.operator))return N(t.left)===r?hp(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:N(t.right)===r?hp(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!D(t,`CallExpression`)||!yhe(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return D(i,`SpreadElement`)||D(a,`SpreadElement`)?null:N(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:N(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},xhe=(e,t,n)=>{let r=e.parent;for(;r&&R(r,t);){let i=bhe(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},She=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!R(e,t))return!1;if(D(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(D(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!vt.has(e.type))return!1;a=e}return i===r},gp=(e,t)=>{let n=new Set,r=N(e);for(;D(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Jr(e);if(!i||!D(N(i),`Identifier`))break;n.add(e.id),r=N(i)}return r},Che=(e,t,n)=>{let r=gp(e,n),i=gp(t,n);if(r===i)return!0;if(D(r,`Identifier`)&&D(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return D(r,`Literal`)&&D(i,`Literal`)?Object.is(r.value,i.value):!1},whe=e=>{let t=S(e).parent;if(!D(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(D(n,`ArrayExpression`)&&n.elements.length)},_p=e=>{if(D(e,`ReturnStatement`)||D(e,`ThrowStatement`))return!0;if(!D(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&_p(t))},vp=(e,t)=>{if(!D(e,`IfStatement`)||e.alternate||!_p(e.consequent))return!1;let n=e.parent;if(!D(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&R(t,e))},The=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(D(i,`IfStatement`)&&R(e,i.test)&&(R(t,i.consequent)||i.alternate&&R(t,i.alternate)||vp(i,t))){let n=R(t,i.consequent);if(n===(!!(i.alternate&&R(t,i.alternate))||vp(i,t)))return null;let a=xhe(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return She(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Ehe=(e,t,n)=>{if(!whe(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=_he(e,n);if(!r)return!1;let i=vhe(r,t);if(!i)return!1;let a=e.references.filter(e=>R(e.identifier,t));if(a.length!==1)return!1;let o=S(a[0].identifier);if(D(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=The(a[0].identifier,i.callExpression,t,n);return!!(s&&Che(s,i.writtenValue,n))},Dhe=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Ohe=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,khe=(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=Dhe.exec(i);if(a&&t.test(a[1]??``)){n.add(e+2);continue}let o=Ohe.exec(i);o&&t.test(o[1]??``)&&n.add(e+1)}return n},Ahe=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}},jhe=(e,t)=>{let n=khe(e,t);if(n.size===0)return null;let r=Ahe(e);return{suppressedLines:n,utf16NewlineOffsets:r.utf16,utf8NewlineOffsets:r.utf8}},yp=(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},bp=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=jhe(mne(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(yp(t,n.utf16NewlineOffsets))||n.suppressedLines.has(yp(t,n.utf8NewlineOffsets)):!1}}},xp=bp(`exhaustive-deps`),Mhe=xp.isSuppressedAt;xp.clearCache;const Nhe=new Set([`useEventCallback`,`useStableCallback`,`useMemoizedFn`,`usePersistFn`,`useLatestCallback`,`useCallbackRef`,`useEvent`]),Sp=(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||!D(n,`VariableDeclarator`))return!1;let r=n.init;if(!r)return!1;let i=G(r);if(e.kind===`const`&&(D(i,`Literal`)&&(i.value===null||typeof i.value==`number`||typeof i.value==`string`||typeof i.value==`boolean`)||D(i,`TemplateLiteral`)&&Fe(i)!==null))return!0;if(!D(i,`CallExpression`))return!1;let a=cp(i.callee,t);if(!a)return!1;if(a===`useRef`||a===`useEffectEvent`||Nhe.has(a))return!0;if(a===`useState`||a===`useReducer`||a===`useActionState`||a===`useTransition`){if(!D(n.id,`ArrayPattern`))return!1;let t=n.id.elements[1];if(!t)return!1;let r=D(t,`AssignmentPattern`)?t.left:t;return D(r,`Identifier`)&&e.bindingIdentifier===r}return!1},Cp=e=>{if(e.kind===`function`&&D(e.declarationNode,`FunctionDeclaration`))return e.declarationNode;let t=e.initializer?G(e.initializer):null;return t&&(D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`))?t:null},wp=(e,t)=>{let n=e.initializer;return!!(n&&R(t,n))},Phe=new Set([`useCallback`,`useMemo`]),Fhe=(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||!D(r,`VariableDeclarator`)||r.id!==e.bindingIdentifier||!r.init)return!1;let i=G(r.init);if(!D(i,`CallExpression`))return!1;let a=cp(i.callee,t);if(!a||!Phe.has(a))return!1;let o=i.arguments[1];if(!o||!M(o))return!1;let s=G(o);if(!D(s,`ArrayExpression`))return!1;n.add(e.id);let c=e=>{let r=G(e);if(D(r,`Literal`))return!0;if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?op(i)?!0:Ep(i,t,n):!1},l=s.elements.every(e=>e!==null&&c(e));return l||n.delete(e.id),l},Ihe=(e,t)=>{for(let n of e.properties){let e=n;if(!D(e,`Property`))return null;if(e.computed)continue;let r=e.key;if((D(r,`Identifier`)?r.name:D(r,`Literal`)&&typeof r.value==`string`?r.value:null)===t)return G(e.value)}return null},Tp=(e,t,n)=>{if(e.kind!==`const`||!t.startsWith(`${e.name}.`)||e.references.some(e=>e.flag!==`read`))return!1;let r=e.initializer?G(e.initializer):null;if(!r||!D(r,`ObjectExpression`))return!1;let i=t.slice(e.name.length+1).split(`.`),a=r;for(let e of i){if(!D(a,`ObjectExpression`))return!1;let t=Ihe(a,e);if(!t)return!1;a=t}return D(a,`CallExpression`)&&cp(a.callee,n)===`useRef`},Lhe=(e,t,n)=>{if(n.has(e.id))return!0;let r=Cp(e);if(!r)return!1;n.add(e.id);for(let i of Df(r,t)){let r=i.resolvedSymbol;if(r&&r.id!==e.id&&!op(r)&&!Ep(r,t,n))return n.delete(e.id),!1}return!0},Rhe=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=k(e.bindingIdentifier,t);return n!==null&&n!==e&&n.kind===`import`},zhe=e=>{let t=S(e);for(;t.parent;){let e=t.parent;if(D(e,`AssignmentExpression`))return e.left===t;if(D(e,`UpdateExpression`))return e.argument===t;if(D(e,`UnaryExpression`))return e.operator===`delete`&&e.argument===t;if(D(e,`ForInStatement`)||D(e,`ForOfStatement`))return e.left===t;if(D(e,`ArrayPattern`)&&e.elements.some(e=>e===t)||D(e,`ObjectPattern`)&&e.properties.some(e=>e===t)||D(e,`RestElement`)&&e.argument===t||D(e,`AssignmentPattern`)&&e.left===t||D(e,`Property`)&&e.value===t&&D(e.parent,`ObjectPattern`)){t=e;continue}return!1}return!1},Bhe=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=e.initializer?G(e.initializer):null;if(!D(n,`AssignmentExpression`)||n.operator!==`??=`)return!1;let r=Xl(G(n.left),t);return r?r.references.every(e=>{let t=S(e.identifier).parent;if(!D(t,`MemberExpression`)||G(t.object)!==e.identifier||O(t)!==`current`)return!1;let r=S(t),i=r.parent;return D(i,`AssignmentExpression`)&&i.left===r?i===n:!zhe(r)}):!1},Ep=(e,t,n=new Set)=>Sp(e,t)||Bhe(e,t)||Rhe(e,t)||Lhe(e,t,n)||Fhe(e,t,n),Dp=(e,t)=>{let n=e.initializer?N(e.initializer):null;return!n||!D(n,`CallExpression`)?!1:j(n,`useEffectEvent`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0})},Op=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!D(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}},kp=new Set([`ComponentClass`,`ComponentType`,`FC`,`FunctionComponent`]),Vhe=(e,t)=>{let n=Op(e,t);return!!(n&&yn(n)&&(D(n.declarationNode,`ImportDefaultSpecifier`)||D(n.declarationNode,`ImportNamespaceSpecifier`)))},Ap=(e,t,n)=>{if(!e)return!1;if(D(e,`TSTypeAnnotation`))return Ap(e.typeAnnotation,t,n);if(D(e,`TSIntersectionType`))return(e.types??[]).some(e=>Ap(e,t,n));if(!D(e,`TSTypeReference`))return!1;let r=e.typeName;if(D(r,`TSQualifiedName`))return D(r.left,`Identifier`)&&D(r.right,`Identifier`)&&kp.has(r.right.name)&&Vhe(r.left,t);if(!D(r,`Identifier`))return!1;let i=Op(r,t);if(!i||n.has(i.id))return!1;if(yn(i)){let e=bt(i.declarationNode);return!!(e&&kp.has(e))}return D(i.declarationNode,`TSTypeAliasDeclaration`)?(n.add(i.id),Ap(i.declarationNode.typeAnnotation,t,n)):!1},jp=(e,t)=>{let n=e.bindingIdentifier;return D(n,`Identifier`)&&Ap(n.typeAnnotation,t,new Set)},Mp=new Set([`useEffect`,`useLayoutEffect`,`useCallback`,`useMemo`,`useImperativeHandle`,`useInsertionEffect`]),Np=new Set([`useMemo`,`useCallback`]),Pp=new Set([`useEffect`,`useLayoutEffect`,`useInsertionEffect`]),Hhe=new Set([`useEffect`,`useLayoutEffect`]),Uhe=new Set([`Array`,`ReadonlyArray`]),Whe=e=>{if(!e)return null;try{return new RegExp(e)}catch{return null}},Ghe=e=>{let t=e.callee;return D(t,`Identifier`)?t.name:D(t,`MemberExpression`)&&D(t.object,`Identifier`)&&D(t.property,`Identifier`)&&!t.computed?`${t.object.name}.${t.property.name}`:null},Khe=e=>{if((D(e,`FunctionDeclaration`)||D(e,`FunctionExpression`))&&e.id)return e.id.name;let t=e.parent;for(;t&&D(t,`CallExpression`);){let e=Ghe(t);if(e&&Be.has(e))t=t.parent??null;else break}return t&&D(t,`VariableDeclarator`)&&D(t.id,`Identifier`)?t.id.name:null},Fp=e=>{let t=e.parent;for(;t;){if(D(t,`FunctionDeclaration`)||D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`)){if(ap(t))return t;let e=Khe(t);if(e&&vs(e))return t}t=t.parent??null}return null},qhe=e=>+(e===`useImperativeHandle`),Jhe=e=>e===`useImperativeHandle`?2:1,Ip=e=>{if(!D(e,`ObjectPattern`))return null;let t=e.properties[0];if(!t||!D(t,`Property`))return null;let n=t.key,r=t.value,i=D(n,`Identifier`)?n.name:D(n,`Literal`)&&typeof n.value==`string`?n.value:null;if(!i)return null;let a=Ip(r);return a?`${i}.${a}`:i},Lp=e=>{let t=e.identifier;return D(t,`Identifier`)||D(t,`JSXIdentifier`)?t.name:``},Rp=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},zp=e=>{let t=e.identifier,n=t.parent??null;if(n&&n.type===`ChainExpression`&&(n=n.parent??null),!n||!D(n,`MemberExpression`)||n.object!==t){if(n&&D(n,`VariableDeclarator`)&&n.init===t){let t=Ip(n.id),r=Lp(e);if(t&&r)return`${r}.${t}`}return Lp(e)}let r=n;for(;;){let e=r.parent;if(!e)break;let t=sp.has(e.type),n=t?e.parent:e,i=t?e:r;if(n&&D(n,`MemberExpression`)&&n.object===i){r=n;continue}break}let i=Bp(r);if(i===null)return Lp(e);let a=r.parent;if(a&&D(a,`VariableDeclarator`)&&a.init===r){let e=Ip(a.id);if(e)return Rp(`${i}.${e}`)}let o=Rp(i);if(o!==i)return o;if(e.flag!==`read`){let e=i.lastIndexOf(`.`);if(e!==-1)return i.slice(0,e)}return i},Yhe=e=>{let t=G(e);if(D(t,`Identifier`))return t.name;if(D(t,`MemberExpression`))return Bp(t);if(D(t,`CallExpression`)&&(t.arguments?.length??0)===0){let e=G(t.callee);if(D(e,`Identifier`))return e.name;if(D(e,`MemberExpression`)&&!Gp(e))return Bp(e)}return null},Xhe=e=>{let t=S(e);for(;t.parent;){let e=t.parent;if((D(e,`IfStatement`)||D(e,`WhileStatement`)||D(e,`DoWhileStatement`)||D(e,`ConditionalExpression`))&&e.test===t)return!0;if(D(e,`UnaryExpression`)&&e.operator===`!`||D(e,`LogicalExpression`)){t=e;continue}return!1}return!1},Zhe=(e,t)=>{if(!e)return!1;let n=G(e);return D(n,`ArrayExpression`)?n.elements.some(e=>{if(!e)return!1;let n=G(e);return D(n,`Identifier`)&&n.name===t}):!1},Bp=e=>{let t=G(e);if(D(t,`Identifier`))return t.name;if(D(t,`ThisExpression`))return`this`;if(D(t,`MemberExpression`)){let e=Bp(t.object);if(e&&t.computed)return e;if(e&&!t.computed&&D(t.property,`Identifier`))return`${e}.${t.property.name}`}return null},Vp=(e,t,n,r,i=!1)=>{let a=new Set,o=new Set,s=new Set,c=new Set,l=Fp(e),u=l?t.ownScopeFor(l):null;for(let l of Df(e,t)){let d=l.resolvedSymbol;if(!d||wp(d,e))continue;if(i&&Ehe(d,e,t)){o.add(d.name);continue}if(Ep(d,t)){o.add(d.name);continue}if(op(d)){s.add(d.name);continue}if(u&&!fn(d.scope,u)){c.add(d.name);continue}let f=zp(l);if(f&&!(f===d.name&&Xhe(l.identifier)&&[...r??[]].some(e=>e.startsWith(`${d.name}.`)))){if(Tp(d,f,t)){o.add(f);continue}if(f===d.name){if(n?.has(f)){a.add(f);continue}let e=tge(l,d,t)??ige(l,d,t)??Jp(d,t);if(e){e.size===0&&o.add(f);for(let t of e)a.add(t);continue}}a.add(f)}}return{keys:a,stableCapturedNames:o,moduleScopeCapturedNames:s,outerFunctionCapturedNames:c}},Hp=e=>D(e,`Literal`)||D(e,`TemplateLiteral`)&&Fe(e)!==null,Qhe=e=>D(e,`Literal`)&&typeof e.value!=`string`,Up=(e,t)=>t===e||t.startsWith(`${e}.`),$he=(e,t)=>{for(let n of t)if(n!==e&&e.startsWith(`${n}.`))return!0;return!1},Wp=e=>{let t=G(e);return D(t,`Identifier`)?t:D(t,`MemberExpression`)?Wp(t.object):null},Gp=e=>{let t=G(e);return D(t,`MemberExpression`)?t.computed?!0:Gp(t.object):!1},Kp=(e,t,n)=>{let r=new Set;for(let i of e){let e=qp(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},qp=(e,t,n)=>{let r=G(e);if(D(r,`Literal`)&&(r.value===null||typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`)||D(r,`TemplateLiteral`)&&Fe(r)!==null)return new Set;if(D(r,`Identifier`)){let e=t.symbolFor(r);if(!e)return null;if(op(e)||Ep(e,t))return new Set;if(e.kind===`const`&&e.initializer&&D(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=qp(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(D(r,`MemberExpression`)){if(Gp(r))return null;let e=Bp(r),n=Wp(r),i=n?t.symbolFor(n):null;return!e||!i?null:op(i)||Tp(i,e,t)||Ep(i,t)?new Set:new Set([e])}return D(r,`LogicalExpression`)?Kp([r.left,r.right],t,n):D(r,`ConditionalExpression`)?Kp([r.test,r.consequent,r.alternate],t,n):null},Jp=(e,t)=>e.kind!==`const`||!e.initializer||!D(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?null:qp(e.initializer,t,new Set([e.id])),Yp=e=>{let t=G(e);return D(t,`Literal`)||D(t,`Identifier`)?!0:D(t,`MemberExpression`)?Yp(t.object)&&(!t.computed||Yp(t.property)):D(t,`BinaryExpression`)||D(t,`LogicalExpression`)?Yp(t.left)&&Yp(t.right):D(t,`UnaryExpression`)?t.operator!==`delete`&&Yp(t.argument):D(t,`ConditionalExpression`)?Yp(t.test)&&Yp(t.consequent)&&Yp(t.alternate):D(t,`TemplateLiteral`)?t.expressions.every(e=>Yp(e)):!1},Xp=e=>D(e,`BlockStatement`)?e.body.every(e=>Xp(e)):D(e,`ReturnStatement`)?!e.argument||Yp(e.argument):D(e,`IfStatement`)?Yp(e.test)&&Xp(e.consequent)&&(!e.alternate||Xp(e.alternate)):!1,ege=e=>!D(e,`FunctionDeclaration`)&&!D(e,`FunctionExpression`)&&!D(e,`ArrowFunctionExpression`)||e.async||e.generator?!1:D(e.body,`BlockStatement`)?Xp(e.body):Yp(e.body),tge=(e,t,n)=>{if(t.references.some(e=>e.flag!==`read`))return null;let r=S(e.identifier),i=r.parent;if(!D(i,`CallExpression`)||i.callee!==r)return null;let a=Cp(t);if(!a||!ege(a))return null;let o=new Set;for(let e of Df(a,n)){let r=e.resolvedSymbol;if(!r||r.id===t.id||op(r)||Ep(r,n))continue;let i=zp(e);if(!i)return null;if(i===r.name){let e=Jp(r,n);if(e){for(let t of e)o.add(t);continue}}o.add(i)}return o.size>0?o:null},Zp=(e,t,n)=>{let r=new Set;for(let i of e){let e=Qp(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},Qp=(e,t,n)=>{let r=G(e);if(D(r,`Literal`))return new Set;if(D(r,`Identifier`)){if(t.isGlobalReference(r))return new Set;let e=t.symbolFor(r);if(!e)return null;if(op(e)||Ep(e,t))return new Set;if(e.kind===`const`&&e.initializer&&D(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=Qp(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(D(r,`MemberExpression`)){if(Gp(r))return null;let e=Bp(r),n=Wp(r),i=n?t.symbolFor(n):null;return!e||!i?null:op(i)||Ep(i,t)?new Set:new Set([e])}if(D(r,`BinaryExpression`)||D(r,`LogicalExpression`))return Zp([r.left,r.right],t,n);if(D(r,`UnaryExpression`)&&r.operator!==`delete`)return Qp(r.argument,t,n);if(D(r,`ConditionalExpression`))return Zp([r.test,r.consequent,r.alternate],t,n);if(D(r,`TemplateLiteral`))return Zp(r.expressions,t,n);if(D(r,`NewExpression`)){let e=G(r.callee);if(!D(e,`Identifier`)||e.name!==`Error`||!t.isGlobalReference(e))return null;let i=[];for(let e of r.arguments){if(!M(e)||D(e,`SpreadElement`))return null;i.push(e)}return Zp(i,t,n)}return null},nge=(e,t,n)=>{let r=new Set,i=e;for(;i.parent&&i.parent!==t;){let e=i.parent;if(D(e,`IfStatement`)){if(e.test===i)return null;let t=Qp(e.test,n,new Set);if(!t)return null;for(let e of t)r.add(e)}else if(!D(e,`ExpressionStatement`)&&!D(e,`BlockStatement`))return null;i=e}return i.parent===t?r:null},rge=(e,t)=>{let n=S(e),r=n.parent;return D(r,`CallExpression`)&&r.arguments.some(e=>e===n)&&j(r,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})},ige=(e,t,n)=>{if(t.kind!==`let`||!D(t.declarationNode,`VariableDeclarator`)||t.declarationNode.id!==t.bindingIdentifier)return null;let r=b(t.bindingIdentifier);if(!r)return null;let i=b(e.identifier);if(!i||i===r)return null;let a=new Set;if(t.initializer){let e=Qp(t.initializer,n,new Set([t.id]));if(!e)return null;for(let t of e)a.add(t)}let o=0;for(let e of t.references){if(e.flag===`read`){if(b(e.identifier)!==i&&!rge(e.identifier,n))return null;continue}if(e.flag!==`write`)return null;let s=S(e.identifier),c=s.parent;if(!D(c,`AssignmentExpression`)||c.operator!==`=`||c.left!==s||b(s)!==r)return null;let l=Qp(c.right,n,new Set([t.id])),u=nge(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},age=(e,t)=>{let n=$p(e,t),r=n?.initializer?G(n.initializer):null;return!!(r&&D(r,`CallExpression`)&&cp(r.callee,t)===`useCallback`)},oge=(e,t)=>{let n=Wp(e);if(!n)return!1;let r=t.symbolFor(n);return!r||op(r)?!1:!age(e,t)},$p=(e,t)=>{let n=Wp(e);return n?t.symbolFor(n):null},sge=e=>{let t=G(e);return D(t,`CallExpression`)&&(t.arguments?.length??0)===0?t.callee:e},em=e=>D(e,`Literal`)?!!e.regex:!1,cge=(e,t,n)=>{let r=G(e),i=G(t);if(!D(r,`Identifier`)||!D(i,`Identifier`))return!1;let a=n.symbolFor(r),o=n.symbolFor(i);return!!(a&&o&&a.id===o.id)},tm=(e,t)=>{let n=G(e);return D(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)||D(n,`UnaryExpression`)&&n.operator===`void`},lge=(e,t)=>{let n=e.bindingIdentifier.parent?.parent;if(D(n,`ObjectPattern`)){let e=n.typeAnnotation;if(e&&D(e,`TSTypeAnnotation`))return e.typeAnnotation}let r=b(e.bindingIdentifier);if(!r)return null;let i=S(r),a=i.parent;if(!D(a,`VariableDeclarator`)||a.init!==i||!D(a.id,`Identifier`))return null;let o=t.symbolFor(a.id);if(!o||!jp(o,t))return null;let s=a.id.typeAnnotation;if(!s||!D(s,`TSTypeAnnotation`))return null;let c=s.typeAnnotation;return D(c,`TSTypeReference`)?c.typeArguments?.params[0]??null:null},nm=(e,t,n,r=new Set)=>{if(D(e,`TSTypeAnnotation`))return nm(e.typeAnnotation,t,n,r);if(D(e,`TSIntersectionType`)){for(let i of e.types){let e=nm(i,t,n,r);if(e)return e}return null}if(D(e,`TSTypeAliasDeclaration`))return nm(e.typeAnnotation,t,n,r);let i=D(e,`TSTypeLiteral`)?e.members:D(e,`TSInterfaceDeclaration`)?e.body.body:null;if(i){for(let e of i)if(!(!D(e,`TSPropertySignature`)||es(e.key)!==t))return e.typeAnnotation?.typeAnnotation??null;return null}if(!D(e,`TSTypeReference`)||!D(e.typeName,`Identifier`)||r.has(e.typeName.name))return null;let a=new Set(r).add(e.typeName.name);for(let r of ip(n,e.typeName.name)){let e=nm(r,t,n,a);if(e)return e}return null},rm=(e,t,n=new Set)=>{if(D(e,`TSTypeAnnotation`))return rm(e.typeAnnotation,t,n);if(D(e,`TSNullKeyword`)||D(e,`TSAnyKeyword`)||D(e,`TSUnknownKeyword`))return!1;if(D(e,`TSUnionType`))return e.types.every(e=>rm(e,t,n));if(!D(e,`TSTypeReference`))return!0;if(!D(e.typeName,`Identifier`)||n.has(e.typeName.name))return!1;let r=ip(t,e.typeName.name);if(r.length===0)return rt(t,e.typeName.name)===null&&Uhe.has(e.typeName.name);let i=new Set(n).add(e.typeName.name);return r.every(e=>D(e,`TSTypeAliasDeclaration`)?rm(e.typeAnnotation,t,i):D(e,`TSInterfaceDeclaration`))},uge=(e,t)=>{let n=G(e);if(!D(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=ts(r);if(i)return rm(i,n);let a=r.bindingIdentifier.parent;if(!D(a,`Property`))return!1;let o=es(a.key),s=lge(r,t);if(!o||!s)return!1;let c=nm(s,o,n);return!!(c&&rm(c,n))},im=(e,t,n=new Set)=>{let r=G(e);if(D(r,`ArrayExpression`)||D(r,`ObjectExpression`)||D(r,`ClassExpression`)||D(r,`NewExpression`)||D(r,`TemplateLiteral`))return!0;if(D(r,`Literal`))return r.value!==null;if(D(r,`LogicalExpression`)&&r.operator===`??`)return im(r.right,t,n);if(D(r,`ConditionalExpression`))return im(r.consequent,t,n)&&im(r.alternate,t,n);if(!D(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 im(i.initializer,t,a)},dge=(e,t)=>{let n=G(e);if(!D(n,`Identifier`))return null;let r=t.symbolFor(n),i=r?.declarationNode;if(!r||!i||!D(i,`VariableDeclarator`)||!D(i.id,`ArrayPattern`)||i.id.elements[0]!==r.bindingIdentifier||!D(i.init,`CallExpression`)||!j(i.init,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let a=i.init.arguments[0];return M(a)&&!D(a,`SpreadElement`)?a:null},fge=(e,t)=>{let n=G(e);if(!D(n,`ConditionalExpression`))return!1;let r=G(n.test);if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r),a=i?.initializer?G(i.initializer):null;if(i?.kind!==`const`||!a||!D(a,`BinaryExpression`)||a.operator!==`!==`&&a.operator!==`!=`)return!1;let o=null;if(tm(a.right,t)?o=a.left:tm(a.left,t)&&(o=a.right),!o||!cge(n.consequent,o,t))return!1;let s=dge(n.alternate,t);return!!(s&&im(s,t)&&uge(o,t))},am=(e,t,n=!1)=>{if(!e)return!1;let r=G(e);return em(r)?!0:D(r,`ConditionalExpression`)?am(r.consequent,t,!0)||am(r.alternate,t,!0):D(r,`LogicalExpression`)?r.operator===`??`&&fge(r.left,t)?am(r.left,t,!0):am(r.left,t,!0)||am(r.right,t,!0):D(r,`ObjectExpression`)||D(r,`ArrayExpression`)||n&&(D(r,`ArrowFunctionExpression`)||D(r,`FunctionExpression`))||D(r,`ClassExpression`)||D(r,`ClassDeclaration`)||D(r,`JSXElement`)||D(r,`JSXFragment`)||D(r,`AssignmentExpression`)||D(r,`NewExpression`)},om=(e,t,n=new Set)=>{let r=G(e);if(am(r,t))return!0;if(D(r,`ConditionalExpression`))return om(r.consequent,t,n)||om(r.alternate,t,n);if(D(r,`LogicalExpression`))return om(r.left,t,n)||om(r.right,t,n);if(!D(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),om(i.initializer,t,n))},pge=(e,t,n)=>{if(!oge(t,n))return!1;if(Pp.has(e))return!0;if(e!==`useMemo`)return!1;let r=$p(t,n);return!!(r&&!Ep(r,n)&&!am(r.initializer,n))},mge=e=>D(e.declarationNode,`VariableDeclarator`)&&D(e.declarationNode.id,`Identifier`)||D(e.declarationNode,`ClassDeclaration`),hge=e=>Cp(e)!==null,gge=new Set([`Array`,`Date`,`Error`,`Map`,`Object`,`RegExp`,`Set`,`WeakMap`,`WeakSet`]),sm=e=>{if(!e)return null;let t=D(e,`AssignmentPattern`)?e.left:e;return D(t,`Identifier`)?t:null},_ge=(e,t)=>{let n=new Set,r=t.symbolFor(e);for(;r?.kind===`const`&&D(r.declarationNode,`VariableDeclarator`)&&r.declarationNode.id===r.bindingIdentifier&&r.initializer;){if(n.has(r.id))return null;n.add(r.id);let e=G(r.initializer);if(!D(e,`Identifier`))return r;r=t.symbolFor(e)}return r},cm=(e,t)=>{let n=_ge(e,t);if(!n||!D(n.declarationNode,`VariableDeclarator`))return null;let r=n.declarationNode;if(!D(r.id,`ArrayPattern`))return null;let i=r.id.elements?.[1],a=M(i)?sm(i):null;if(!a||a!==n.bindingIdentifier)return null;let o=r.init?G(r.init):null;if(!o||!D(o,`CallExpression`)||!j(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let s=r.id.elements?.[0],c=M(s)?sm(s):null;return{setterSymbol:n,stateSymbol:c?t.symbolFor(c):null}},lm=(e,t,n,r=new Set)=>{if(!t)return!1;let i=G(e);if(D(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&&!op(a)&&!r.has(a.id)){let e=new Set(r);return e.add(a.id),lm(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=>M(e)&&lm(e,t,n)))return!0}else if(M(r)&&lm(r,t,n))return!0}return!1},um=(e,t,n=new Set)=>{let r=G(e);if(D(r,`ObjectExpression`)||D(r,`ArrayExpression`)||D(r,`JSXElement`)||D(r,`JSXFragment`)||em(r))return!0;if(D(r,`SequenceExpression`)){let e=r.expressions.at(-1);return!!(e&&um(e,t))}if(D(r,`ConditionalExpression`))return um(r.consequent,t,n)&&um(r.alternate,t,n);if(D(r,`LogicalExpression`))return um(r.left,t,n)&&um(r.right,t,n);if(D(r,`CallExpression`)){let e=G(r.callee);return D(e,`Identifier`)&&t.isGlobalReference(e)&&(e.name===`Array`||e.name===`Object`)&&(e.name===`Array`||r.arguments.length===0)}if(D(r,`NewExpression`)){let e=G(r.callee);return D(e,`Identifier`)&&t.isGlobalReference(e)&&gge.has(e.name)&&(e.name!==`Object`||r.arguments.length===0)}if(!D(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||op(i)||n.has(i.id))return!1;let a=new Set(n);return a.add(i.id),um(i.initializer,t,a)},vge=e=>{let t=G(e);return D(t,`Literal`)&&(typeof t.value==`number`&&t.value!==0||typeof t.value==`bigint`&&t.value!==0n||typeof t.value==`string`&&t.value.length>0)},dm=(e,t,n)=>{let r=G(e);if(um(r,n))return!0;if(D(r,`ConditionalExpression`)){let e=dm(r.consequent,t,n),i=dm(r.alternate,t,n);return lm(r.test,t,n)?e&&i:e||i}return lm(r,t,n)?D(r,`UnaryExpression`)?r.operator===`!`:D(r,`UpdateExpression`)?!0:D(r,`BinaryExpression`)?(r.operator===`+`||r.operator===`-`)&&lm(r.left,t,n)&&vge(r.right):!1:!1},fm=(e,t,n)=>{let r=G(e);if(!D(r,`ConditionalExpression`))return!1;let i=G(r.test);if(!D(i,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(i.operator))return!1;let a=e=>{let r=G(e);return D(r,`Identifier`)&&n.symbolFor(r)?.id===t?.id},o=null;if(a(i.left)&&(o=i.right),a(i.right)&&(o=i.left),!o||!om(o,n))return!1;let s=e=>{let t=G(e),r=G(o);return D(t,`Identifier`)?D(r,`Identifier`)&&n.symbolFor(t)?.id===n.symbolFor(r)?.id:D(t,`Literal`)&&D(r,`Literal`)&&t.value===r.value};return i.operator===`===`||i.operator===`==`?a(r.consequent)&&s(r.alternate):s(r.consequent)&&a(r.alternate)},yge=(e,t)=>{let n=G(e);if(!D(n,`ArrowFunctionExpression`)&&!D(n,`FunctionExpression`))return!1;let r=n.params?.[0];if(!r||!D(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!D(n.body,`BlockStatement`))return fm(n.body,i,t)||dm(n.body,i,t);if(n.body.body.length!==1)return!1;let a=n.body.body[0];return!D(a,`ReturnStatement`)||!M(a.argument)?!1:fm(a.argument,i,t)||dm(a.argument,i,t)},bge=(e,t)=>{let n=e.parent;if(!n||!D(n,`CallExpression`)||n.callee!==e)return!1;let r=cm(e,t),i=n.arguments?.[0];return!r||!i||!M(i)?!1:yge(i,t)?!0:dm(i,r.stateSymbol,t)},xge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(D(i,`FunctionDeclaration`)||D(i,`FunctionExpression`)||D(i,`ArrowFunctionExpression`)))return;if(D(i,`Identifier`)){let e=cm(i,t);if(e&&bge(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)M(e)&&r(e);else M(t)&&r(t)}};return r(e),n},Sge=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(D(i,`FunctionDeclaration`)||D(i,`FunctionExpression`)||D(i,`ArrowFunctionExpression`)))return;if(D(i,`Identifier`)){let e=cm(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)M(e)&&r(e);else M(t)&&r(t)}};return r(e),n},Cge=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set,a=e=>{if(D(e,`AssignmentExpression`)&&D(e.left,`Identifier`)){let a=t.symbolFor(e.left);a&&!i.has(a.name)&&!op(a)&&!fn(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)M(e)&&a(e);else M(t)&&a(t)}};return a(e),r},pm=e=>{let t=Bp(e);if(!t)return null;let n=t.indexOf(`.current`);return n===-1?null:t.slice(0,n+8)},wge=(e,t)=>{let n=null,r=t=>{if(n||t!==e&&(D(t,`FunctionExpression`)||D(t,`ArrowFunctionExpression`)))return;if(D(t,`ReturnStatement`)){let e=t.argument;if(e&&(D(e,`FunctionExpression`)||D(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)M(e)&&r(e);else M(t)&&r(t)}};if(r(e),!n)return null;let i=null,a=n=>{if(i)return;if(D(n,`MemberExpression`)){let r=pm(n);if(r){let a=Wp(n),o=a?t.symbolFor(a):null,s=t.ownScopeFor(e)??t.scopeFor(e);if(!o||!fn(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)M(e)&&a(e);else M(t)&&a(t)}};return a(n),i},Tge=e=>{if(!e)return!1;for(let t of e.references){let e=t.identifier.parent;if(!e||!D(e,`MemberExpression`)||e.object!==t.identifier||pm(e)===null)continue;let n=e.parent;if(n&&D(n,`AssignmentExpression`)&&n.left===e||n&&D(n,`UpdateExpression`)&&n.argument===e)return!0}return!1},Ege=(e,t)=>{if(!e)return!1;let n=e.initializer?G(e.initializer):null;if(!n||!D(n,`CallExpression`)||cp(n.callee,t)!==`useRef`)return!1;let r=n.arguments[0];if(!r||!M(r))return!1;let i=G(r);return!(D(i,`Literal`)&&i.value===null||D(i,`Identifier`)&&i.name===`undefined`)},Dge=(e,t)=>{let n=!1,r=i=>{if(n||i!==e&&(D(i,`FunctionExpression`)||D(i,`ArrowFunctionExpression`)))return;if(D(i,`AssignmentExpression`)&&pm(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)M(e)&&r(e);else M(t)&&r(t)}};return r(e),n},Oge=(e,t,n)=>{let r=Wp(e);if(!r)return!1;let i=n.symbolFor(r);if(!i||op(i))return!1;let a=Fp(t),o=a?n.ownScopeFor(a):null;return!!(o&&!fn(i.scope,o))},kge=(e,t,n)=>{let r=Df(e,n).find(e=>e.resolvedSymbol?.name===t)?.resolvedSymbol??null;if(!r)return!1;let i=!1;return T(e,e=>{if(i)return!1;if(D(e,`CallExpression`)){let a=G(e.callee);if(D(a,`MemberExpression`)){let e=G(a.object),o=!1;for(;e&&D(e,`MemberExpression`);){if(D(e.property,`Identifier`)&&e.property.name===`current`){o=!0;break}e=G(e.object)}if(!o&&e&&D(e,`Identifier`)&&e.name===t&&n.symbolFor(e)===r)return i=!0,!1}}}),i},Age=(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=>Up(t,e)));i&&o||kge(n,`props`,r)&&e.add(`props`)},mm=y({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