oxlint-plugin-react-doctor 0.9.17-dev.d8c0517 → 0.9.17-dev.f3f167e

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,Ba as f,Bi as p,Bn as m,Br as h,Bt as g,C as _,Ca as v,Ci as ee,Cn as te,Cr as ne,Ct as re,D as ie,Da as ae,Di as oe,Dn as se,Dr as ce,Dt as le,E as ue,Ea as de,Ei as fe,En as pe,Er as me,Et as eee,F as he,Fa as ge,Fi as _e,Fn as ve,Fr as ye,Ft as be,G as xe,Gi as y,Gn as Se,Gr as Ce,Gt as we,H as Te,Hi as Ee,Hn as De,Hr as tee,Ht as nee,I as ree,Ia as Oe,Ii as ke,In as b,Ir as Ae,It as iee,J as je,Ji as Me,Jn as Ne,Jr as aee,Jt as Pe,K as Fe,Ki as Ie,Kn as oee,Kr as see,Kt as Le,L as cee,La as lee,Li as Re,Ln as uee,Lr as ze,Lt as dee,M as Be,Ma as fee,Mi as Ve,Mn as He,Mr as pee,Mt as mee,N as Ue,Na as hee,Ni as We,Nn as Ge,Nr as Ke,Nt as gee,O as qe,Oa as Je,Oi as Ye,On as Xe,Or as Ze,Ot as _ee,P as Qe,Pa as $e,Pi as x,Pn as et,Pr as vee,Pt as yee,Q as tt,Qi as bee,Qn as nt,Qr as rt,Qt as xee,R as it,Ra as at,Ri as ot,Rn as st,Rr as ct,Rt as See,S as Cee,Sa as lt,Si as ut,Sn as dt,Sr as wee,St as Tee,T as Eee,Ta as Dee,Ti as S,Tn as Oee,Tr as kee,Tt as Aee,U as jee,Ui as C,Un as ft,Ur as pt,Ut as w,V as mt,Va as Mee,Vi as T,Vn as ht,Vr as gt,Vt as _t,W as vt,Wi as yt,Wn as bt,Wr as Nee,Wt as Pee,X as xt,Xi as St,Xn as Ct,Xr as Fee,Xt as wt,Y as Tt,Yi as Et,Yn as E,Yr as Iee,Yt as Dt,Z as Ot,Zi as kt,Zn as At,Zr as Lee,Zt as jt,_ as Mt,_a as Ree,_i as zee,_n as Bee,_r as Vee,_t as Hee,a as Uee,aa as Nt,ai as Wee,an as Gee,ar as Kee,at as Pt,b as Ft,ba as qee,bi as Jee,bn as It,br as Lt,bt as Yee,c as Xee,ca as D,ci as Zee,cn as Qee,cr as $ee,ct as Rt,d as zt,da as ete,di as tte,dn as Bt,dr as Vt,dt as nte,ea as Ht,ei as Ut,en as Wt,er as rte,et as Gt,f as Kt,fa as qt,fi as ite,fn as O,fr as Jt,ft as Yt,g as Xt,ga as ate,gi as Zt,gn as Qt,gr as $t,gt as ote,h as en,ha as tn,hi as nn,hn as rn,hr as ste,ht as cte,i as an,ii as lte,in as ute,ir as dte,it as on,j as sn,ja as fte,ji as cn,jn as ln,jr as pte,jt as mte,k as hte,ka as gte,ki as un,kn as dn,kr as fn,kt as _te,l as pn,la as k,li as vte,ln as mn,lr as yte,lt as bte,m as xte,ma as hn,mi as Ste,mn as gn,mr as _n,mt as Cte,n as wte,ni as vn,nn as Tte,nr as yn,nt as bn,o as Ete,oa as xn,oi as Dte,on as Sn,or as Ote,ot as kte,p as Cn,pa as wn,pi as Ate,pn as Tn,pr as En,pt as jte,q as Dn,qi as A,qn as On,qr as kn,qt as An,r as Mte,ri as Nte,rn as Pte,rr as Fte,rt as jn,s as Mn,sa as j,si as Ite,sn as Lte,sr as Nn,st as Pn,t as Rte,ta as M,ti as Fn,tn as In,tr as Ln,tt as Rn,u as zn,ua as Bn,ui as zte,un as N,ur as Vn,ut as Hn,v as Un,va as Bte,vi as Vte,vn as Wn,vr as Gn,vt as Hte,w as Kn,wa as Ute,wi as qn,wn as Jn,wr as Yn,wt as Wte,x as Xn,xa as Gte,xi as Zn,xn as Qn,xr as Kte,xt as qte,y as $n,ya as Jte,yi as er,yn as Yte,yr as tr,yt as Xte,z as nr,za as Zte,zi as P,zn as rr,zr as ir,zt as ar}from"./capability-Dbpf9_qY.js";import*as or from"node:path";import*as sr from"node:fs";import{readFileSync as Qte}from"node:fs";import{visitorKeys as $te}from"oxc-parser";import{analyze as ene}from"eslint-scope";import{Features as tne,transform as cr}from"lightningcss";import{visit as lr}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as nne}from"@shaderfrog/glsl-parser/index.js";const rne=Symbol.for(`react-doctor.reset-filesystem-caches`),ur=e=>w({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>In}),dr=ur({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.`}),fr=e=>!j(e,`CallExpression`)&&!j(e,`NewExpression`)?null:j(e.callee,`Identifier`)?e.callee.name:j(e.callee,`MemberExpression`)&&j(e.callee.property,`Identifier`)?e.callee.property.name:null,pr=(e,t)=>{if(!j(e,`CallExpression`)&&!j(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return j(n,`ArrowFunctionExpression`)||j(n,`FunctionExpression`)?n:t?x(n,t):null},mr=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=A(r),j(r,`MemberExpression`)){r=r.object;continue}if(n&&j(r,`CallExpression`)){if(!j(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return j(r,`Identifier`)?r:null},hr=(e,t)=>mr(e,t)?.name??null,gr=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=fr(e);return n?typeof t==`string`?n===t:t.has(n):!1},ine={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},_r=(e,t,n)=>E(e,t,n,ine),ane=new Set([`useCallback`,`useEffectEvent`]),one=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),sne=/^use\w*(?:Throttle|Debounce)/i,cne=e=>{let t=fr(e);return t!==null&&sne.test(t)},lne=(e,t)=>{if(!_r(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return j(n,`ArrayExpression`)&&(n.elements?.length??0)===0},une=(e,t)=>j(e,`CallExpression`)?_r(e,ane,t)||gr(e,one)||lne(e,t)||cne(e):j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&e.property.name===`current`,dne=(e,t,n)=>{let r=O(e,t);return!!(r?.initializer&&_r(r.initializer,`useRef`,n))},vr=w({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(!_r(t,yn,e.scopes)||(t.arguments?.length??0)<2)return;let n=pr(t);if(!n||!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return;let r=t.arguments[1];if(!j(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)j(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(S(n.body,e=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!Yn.has(e.callee.property.name))return;let t=hr(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];j(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=O(t,a);s?.initializer&&une(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!dne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),yr=e=>{let t=e.value;return t&&j(t,`Literal`)&&typeof t.value==`string`?t.value:null},F=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!j(t,`JSXAttribute`))continue;let e=gn(t.name);if(e&&e.toLowerCase()===n)return t}},br=Object.freeze({}),xr=new WeakMap,fne=e=>{if(!e)return br;let t=xr.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:br;return xr.set(e,r),r},pne=(e,t)=>{let n=N(e);if(t.polymorphicPropName){let n=F(e.attributes,t.polymorphicPropName);if(n){let e=yr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Sr=new WeakMap,Cr=(e,t)=>{let n=Sr.get(e);if(n&&n.settings===t)return n.elementType;let r=pne(e,fne(t));return Sr.set(e,{settings:t,elementType:r}),r},wr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},I=e=>e.some(e=>j(e,`JSXSpreadAttribute`)),Tr=e=>{if(!e)return null;let t=A(e);return j(t,`Literal`)&&typeof t.value==`string`?t.value:j(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},L=e=>{if(!j(e,`JSXAttribute`))return null;let t=yr(e);if(t!==null)return t;let n=e.value;if(n&&j(n,`JSXExpressionContainer`)){let e=n.expression;if(j(e,`Literal`)&&typeof e.value==`string`)return e.value;if(j(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},Er=e=>e.attribute?L(e.attribute):Tr(e.expression),Dr=e=>{let t=e.expression??e.attribute?.value;return t?A(j(t,`JSXExpressionContainer`)?t.expression:t):null},Or=(e,t)=>{if(Cr(e,t).toLowerCase()===`input`&&Er(pn(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=pn(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=Er(n);if(e!==null)return e.length>0;let t=Dr(n);if(j(t,`Literal`)&&t.value)return!0}let r=pn(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=Er(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Dr(r);return j(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},kr=e=>{if(j(e,`JSXIdentifier`))return e.name;if(j(e,`JSXMemberExpression`)){let t=kr(e.object);return t?`${t}.${e.property.name}`:null}return null},Ar=[`next/og`,`@vercel/og`,`satori`],jr=new Set([`next/og`,`@vercel/og`]),Mr=e=>{let t=e.parent;for(;t;){if(j(t,`ImportDeclaration`))return t;if(j(t,`Program`))return null;t=t.parent}return null},Nr=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(!j(r,`ImportSpecifier`))return!1;let i=Mr(r),a=i?Nr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return j(o,`Identifier`)&&o.name===t||j(o,`Literal`)&&o.value===t},hne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=Mr(t);if(!n||Nr(n)!==`satori`)return!1;if(j(t,`ImportDefaultSpecifier`))return!0;if(!j(t,`ImportSpecifier`))return!1;let r=t.imported;return j(r,`Identifier`)&&r.name===`satori`||j(r,`Literal`)&&r.value===`satori`},Pr=(e,t)=>{if(!j(e,`CallExpression`)&&!j(e,`NewExpression`))return!1;let n=A(e.callee);if(j(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(mne(e,`ImageResponse`,jr)||hne(e)))}if(!j(n,`MemberExpression`)||C(n)!==`ImageResponse`||!j(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(!j(i,`ImportNamespaceSpecifier`))return!1;let a=Mr(i),o=a?Nr(a):null;return!!(o&&jr.has(o))},gne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Zt}$`),Fr=e=>e?gne.test(or.basename(e)):!1,Ir=new WeakMap,_ne=e=>e?Fr(On(e)):!1,vne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},Lr=(e,t,n,r,i)=>{if(!D(e))return;if(j(e,`ArrowFunctionExpression`)){let a=A(e.body);if(!j(a,`BlockStatement`)){zr(a,t,n,r,i);return}}let a=e.body;j(a,`BlockStatement`)&&S(a,e=>{if(e!==a&&D(e))return!1;j(e,`ReturnStatement`)&&e.argument&&zr(A(e.argument),t,n,r,i)})},Rr=(e,t,n)=>{let r=!1;return S(e,e=>{if(r)return!1;if(j(e,`JSXOpeningElement`)&&!n.has(e)&&kr(e.name)===t)return r=!0,!1}),r},yne=(e,t,n,r,i)=>{let a=kr(n.name);if(!a||a.includes(`.`)||!vne(a)||i.has(a)||Rr(e,a,r))return;let o=O(n,a);o?.initializer&&(i.add(a),zr(A(o.initializer),e,t,r,i))},bne=(e,t)=>{let n=e.parent;for(;n;){if(Pr(n,t))return!0;n=n.parent??null}return!1},xne=(e,t,n)=>{let r=!1;return S(e,e=>{if(r)return!1;if(j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===t&&!bne(e,n))return r=!0,!1}),r},Sne=(e,t,n,r,i)=>{S(e,e=>{j(e,`JSXOpeningElement`)&&(r.add(e),yne(t,n,e,r,i))})},zr=(e,t,n,r,i)=>{let a=A(e);if(j(a,`JSXElement`)||j(a,`JSXFragment`)){Sne(a,t,n,r,i);return}if(D(a)){Lr(a,t,n,r,i);return}if(j(a,`ConditionalExpression`)){zr(a.consequent,t,n,r,i),zr(a.alternate,t,n,r,i);return}if(j(a,`LogicalExpression`)){zr(a.left,t,n,r,i),zr(a.right,t,n,r,i);return}if(j(a,`CallExpression`)){let e=a.callee;if(D(e)){Lr(e,t,n,r,i);return}if(!j(e,`Identifier`)||i.has(e.name)||Rr(t,e.name,r)||xne(t,e.name,n))return;let o=O(e,e.name);if(!o?.initializer||!D(A(o.initializer)))return;i.add(e.name),Lr(A(o.initializer),t,n,r,i);return}if(j(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=O(a,a.name);if(!e?.initializer)return;zr(A(e.initializer),t,n,r,i)}},Cne=(e,t)=>{let n=Ir.get(e);if(n)return n;let r=new WeakSet;return ht(e,Ar)&&S(e,n=>{if(!(!j(n,`CallExpression`)&&!j(n,`NewExpression`))&&Pr(n,t))for(let i of n.arguments)zr(i,e,t,r,new Set)}),Ir.set(e,r),r},Br=(e,t)=>{if(_ne(e.filename))return!0;if(!t)return!1;let n=p(t);if(!n)return!1;let r=Cne(n,e.scopes);return r.has(t)?!0:j(t,`JSXElement`)?r.has(t.openingElement):!1},Vr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],Hr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Ur=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),Wr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),Gr=new Set([`add`,`clear`,`delete`,`set`]),Kr=new Set([`map`,`filter`,`forEach`,`flatMap`]),qr=new Set([`then`,`catch`,`finally`]),wne=new Set([`values`,`keys`,`entries`]),Tne=/\.browser\.[cm]?[jt]sx?$/,Ene=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(`.`)),Dne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],One=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(`.`)),kne=[`findBy`,`findAllBy`],Jr=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(`.`)),Yr=e=>typeof e!=`string`||e.length===0?!1:Ene.has(e)?!0:Dne.some(t=>e.startsWith(t)),Ane=new Set([`it`,`test`]),jne=new Set([`concurrent`,`only`,`skip`]),Mne=new Set([`doMock`,`mock`,`unstable_mockModule`]),Nne=new Set([`jest`,`vi`]),Pne=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),Fne=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),Ine=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__/`)},Lne=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=st(e,e.name);return!!(r&&Pne.has(r.source)&&r.exportedName&&t.has(r.exportedName))},Rne=(e,t,n)=>Ine(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),Xr=(e,t,n)=>Lne(e,t,n)||Rne(e,t,n),Zr=e=>{let t=A(e);if(j(t,`Identifier`))return t;if(j(t,`MemberExpression`)){let e=C(t);return!e||!jne.has(e)?null:Zr(t.object)}let n=j(t,`CallExpression`)?A(t.callee):j(t,`TaggedTemplateExpression`)?A(t.tag):null;return!j(n,`MemberExpression`)||C(n)!==`each`?null:Zr(n.object)},zne=(e,t)=>{let n=y(e),r=n.parent;if(!r||!j(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Zr(r.callee);return!!(i&&Xr(i,Ane,t))},Bne=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!j(r,`Literal`)||typeof r.value!=`string`)return!1;let i=A(e.callee);if(!j(i,`MemberExpression`))return!1;let a=C(i);if(!a||!Mne.has(a))return!1;let o=A(i.object);return j(o,`Identifier`)&&Xr(o,Nne,n)},Vne=(e,t)=>{let n=e.parent;for(;n;){if(D(n)){let e=y(n),r=e.parent;if(r&&j(r,`CallExpression`)&&Bne(r,e,t))return!0}n=n.parent}return!1},Hne=(e,t,n)=>{let r=e.parent,i=null;for(r&&j(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(D(r))return!1;if(j(r,`JSXAttribute`)&&(i=r),j(r,`JSXElement`)){let e=r.openingElement.name;if(j(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=st(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!Fne.has(a.source)&&!Yr(a.source)&&i?.parent===r.openingElement&&j(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},Qr=(e,t)=>{if(Vne(e,t))return!0;let n=M(e);return!n||!zne(n,t)?!1:Hne(e,n,t)},Une=e=>{let t=e.parent;return t?j(t,`JSXSpreadAttribute`)||j(t,`SpreadElement`)?t.argument===e:j(t,`VariableDeclarator`)&&t.init===e:!1},$r=(e,t,n,r,i)=>{let a=A(e);if(r&&j(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`||!Une(e.identifier)))return!0;i.add(e.id);let o=$r(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!j(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(j(e,`SpreadElement`)){if($r(e.argument,t,n,r,i))return!0;continue}if(!j(e,`Property`))return!0;let a=P(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},ei=(e,t,n=!0,r)=>$r(e,t,n,r,new Set),R=(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(j(a,`JSXSpreadAttribute`)){if(ei(a.argument,t,n))return null;continue}if(!j(a,`JSXAttribute`))continue;let o=gn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},ti=(e,t)=>e.some(e=>j(e,`JSXSpreadAttribute`)&&ei(e.argument,t,!1)),ni=e=>{let t=A(e);return j(t,`UnaryExpression`)&&t.operator===`void`&&j(A(t.argument),`Literal`)},ri=(e,t={})=>{if(!e?.value)return!1;let n=L(e);if(n!==null)return n.trim().length>0;if(!j(e.value,`JSXExpressionContainer`))return!0;let r=A(e.value.expression);return j(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:j(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!ni(r)},Wne=(e,t,n)=>{let{openingElement:r}=e;if(r===n||Or(r,t))return!1;if(j(r.name,`JSXMemberExpression`)||j(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=R(r.attributes,`aria-label`,!1);if(ri(i,{booleanValuesRender:!0})||!i&&ti(r.attributes,`aria-label`))return!0;if(j(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=R(r.attributes,`alt`,!1);return ri(e)||!e&&ti(r.attributes,`alt`)}return ai(e,t,n)},ii=(e,t,n)=>{for(let r of e){if(j(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(j(r,`JSXElement`)){if(Wne(r,t,n))return!0;continue}if(j(r,`JSXFragment`)){if(ii(r.children,t,n))return!0;continue}if(j(r,`JSXExpressionContainer`)){let e=A(r.expression);if(j(e,`JSXEmptyExpression`))continue;if(j(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(ni(e)||j(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},ai=(e,t,n)=>{if(ii(e.children,t,n))return!0;let r=R(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(ri(r)||!r&&ti(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=R(e.openingElement.attributes,`children`,!1);return!!(ri(i)||!i&&ti(e.openingElement.attributes,`children`))},oi=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},Gne=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Kne=e=>!!(j(e,`Identifier`)&&e.name===`undefined`||j(e,`Literal`)&&e.value===null),si=e=>Kne(e)?!0:j(e,`ConditionalExpression`)?si(e.consequent)||si(e.alternate):!1,ci=e=>{if(!e.value)return!1;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!si(t):!0}return!0},qne=e=>{if(!e)return!1;let t=yr(e);return t===`presentation`||t===`none`},li=e=>{if(!e.value)return!1;if(j(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:j(t,`Identifier`)&&t.name===`undefined`?!1:j(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Jne=(e,t,n)=>{let r=F(e.attributes,`alt`);if(r){ci(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(qne(F(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=F(e.attributes,`aria-label`);if(i){li(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=F(e.attributes,`aria-labelledby`);if(a){li(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.'})},Yne=(e,t,n,r)=>{let i=F(e.attributes,`aria-label`),a=F(e.attributes,`aria-labelledby`),o=i&&li(i)||a&&li(a),s=F(e.attributes,`title`),c=s?yr(s):null,l=!!(c&&c.length>0);o||l||ai(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."})},Xne=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&li(r)||i&&li(i))return;let a=F(e.attributes,`alt`);(!a||!ci(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`."})},Zne=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&li(r)||i&&li(i))return;let a=F(e.attributes,`alt`);(!a||!ci(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`."})},ui=w({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=oi(e.settings);if(t&&Br(e))return In;let n=Gne(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=wr(e.settings);return{JSXOpeningElement(n){if(t&&Qr(n,e))return;if(!d&&j(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&&Br(e,n)||t&&I(n.attributes))return;let f=Cr(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&Or(n,e.settings))return;Jne(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&j(t,`JSXElement`)&&Yne(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){Xne(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=F(n.attributes,`type`);return e?yr(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&Zne(n,n,e)}}}}),Qne=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,$ne=[`click here`,`here`,`link`,`a link`,`learn more`],ere=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??$ne}},tre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),nre=e=>j(e,`Literal`)&&typeof e.value==`string`?e.value:j(e,`TemplateLiteral`)?ot(e):null,di=(e,t)=>{let n=e.openingElement,r=F(n.attributes,`aria-label`);if(r){let e=yr(r);if(e!==null)return e}if(Cr(n,t)===`img`){let e=F(n.attributes,`alt`);if(e){let t=yr(e);if(t!==null)return t}}if(Or(n,t))return null;let i=[];for(let n of e.children){let e=n;if(j(e,`JSXText`))i.push(e.value);else if(j(e,`JSXElement`)){let n=di(e,t);n!==null&&i.push(n)}else if(j(e,`JSXExpressionContainer`)){let t=nre(e.expression);t!==null&&i.push(t)}}return i.join(``)},fi=w({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(jt(e.filename))return In;let t=ere(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(Cr(t.openingElement,e.settings)!==`a`)return;let r=di(t,e.settings);if(r===null||r.trim().length===0)return;let i=tre(r);n.has(i)&&e.report({node:t.openingElement.name,message:Qne(i)})}}}}),pi=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(`.`)),mi=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(`.`)),rre=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(`.`)),ire=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),hi=new Set([`presentation`,`none`]),are=e=>e.trim().split(/\s+/).find(e=>pi.has(e))===`link`,ore=e=>{let t=e.parent;for(;t;){if(j(t,`JSXAttribute`)){let e=t.parent;return e&&j(e,`JSXOpeningElement`)?kr(e.name)===`Trans`:!1}t=t.parent??null}return!1},sre=e=>e.children.some(e=>{if(!j(e,`JSXElement`))return!1;let t=e,n=kr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!F(t.openingElement.attributes,`aria-hidden`)}),gi=w({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=oi(e.settings),n=jt(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(Cr(i,e.settings)!==`a`)return;let a=F(i.attributes,`href`),o=F(i.attributes,`role`),s=o?Kt(o,e.scopes):[],c=s===null||s.some(e=>are(e));if(!(t&&!a&&!c)&&!Or(i,e.settings)&&!(ai(r,e.settings)||!t&&sre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(F(i.attributes,e))return;t&&ore(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`."})}}}}}),_i=[`href`],vi=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return _i;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return _i;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?_i:r},yi="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",bi="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",xi="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",cre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...vi(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Si=(e,t)=>e.aspects===null||e.aspects.has(t),lre=e=>{let t=e.parent;if(!t||!j(t,`JSXElement`))return!1;let n=t.parent;if(!n||!j(n,`JSXElement`))return!1;let r=kr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},ure=e=>!!F(e.attributes,`role`)&&!!F(e.attributes,`tabindex`)&&(!!F(e.attributes,`onkeydown`)||!!F(e.attributes,`onkeyup`)),Ci=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},dre=e=>{if(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(t,`Identifier`)&&t.name===`undefined`||j(t,`Literal`)&&t.value===null)return!0}return!!j(e,`JSXFragment`)},fre=e=>{let t=e.value;if(!t)return`nullish`;if(j(t,`Literal`))return typeof t.value==`string`&&Ci(t.value,new Set)?`invalid`:`valid`;if(j(t,`JSXExpressionContainer`)){let e=t.expression;return j(e,`Identifier`)&&e.name===`undefined`?`nullish`:j(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Ci(e.value,new Set)?`invalid`:`valid`:j(e,`TemplateLiteral`)&&e.expressions.length===0&&Ci(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return j(t,`JSXFragment`)?`nullish`:`valid`},wi=w({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=cre(e.settings),n=oi(e.settings),r=wr(e.settings),i=jt(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=Cr(a,e.settings),s=kr(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=F(a.attributes,e);if(!t)continue;let i=fre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=I(a.attributes),o=!!F(a.attributes,`onClick`);if(!n){!i&&Si(t,`noHref`)&&(!o||!Si(t,`preferButton`))&&e.report({node:a.name,message:yi}),!i&&o&&Si(t,`preferButton`)&&e.report({node:a.name,message:xi});return}r&&(o&&Si(t,`preferButton`)?e.report({node:a.name,message:xi}):Si(t,`invalidHref`)&&e.report({node:a.name,message:bi}));return}let c;for(let e of t.hrefAttributeNames)if(c=F(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:bi});return}let n=Kt(c,e.scopes);if(n===null?dre(c.value):n.length>0&&n.every(e=>Ci(e,t.validHrefs))){let t=!!F(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?xi:bi})}return}I(a.attributes)||lre(a)||ure(a)||e.report({node:a.name,message:yi})}}}}),Ti=w({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(jt(e.filename))return In;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(Cr(n,e.settings)!==`a`)return;let r=null;for(let t of vi(e.settings))if(r=R(n.attributes,t,!1),r)break;if(!r)return;let i=L(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=Xee({configuredRootDirectory:An(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.`})}}}}),pre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Ei=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(`.`)),Di=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(`.`)),Oi=e=>e.kind!==`const`||!j(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,mre=new Set([``,`plaintext-only`,`true`]),ki={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Ai={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},ji={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Mi={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),Ni=(e,t,n)=>{let r=A(e);if(j(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?ki:Ai;if(typeof r.value==`string`){let e=r.value.toLowerCase();return mre.has(e)?ki:e===`false`?Ai:ji}return ji}if(j(r,`ConditionalExpression`))return hre(Ni(r.consequent,t,n),Ni(r.alternate,t,n));if(j(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Mi;let i=Oi(e);if(!i)return Mi;let a=new Set(n);return a.add(e.id),Ni(i,t,a)}return Mi},Pi=(e,t)=>{let n=F(e.attributes,`contenteditable`);return n?n.value?j(n.value,`Literal`)?Ni(n.value,t,new Set):j(n.value,`JSXExpressionContainer`)?Ni(n.value.expression,t,new Set):Mi:ki:null},gre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(j(r,`JSXElement`)){let e=r.openingElement;if(!Ei.has(Cr(e,n)))return!1;let i=Pi(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},Fi=(e,t,n)=>Pi(e,t)?.canBeEnabled?!gre(e,t,n):!1,Ii=(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=F(t.attributes,`type`);if(e){let t=yr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return F(t.attributes,`href`)!==void 0;case`img`:return F(t.attributes,`usemap`)!==void 0;default:return!1}},Li=e=>{if(!e)return null;if(j(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(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(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(j(t,`UnaryExpression`)&&t.operator===`-`&&j(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(j(t,`TemplateLiteral`)){let e=ot(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(j(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return j(t.test,`Literal`)?Li(e(t.test.value?t.consequent:t.alternate)):Li(e(t.consequent))}}return null},Ri="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",zi=w({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(!F(t.attributes,`aria-activedescendant`))return;let n=Cr(t,e.settings);if(!Ei.has(n))return;let r=F(t.attributes,`tabIndex`);if(r){let n=Li(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:Ri});return}Ii(n,t)||Fi(t,e.scopes,e.settings)||e.report({node:t.name,message:Ri})}})}),_re=[`aria-label`,`aria-labelledby`,`alt`,`title`],Bi=(e,t)=>{let n=R(e.attributes,t,!1);if(!n)return!1;let r=L(n);return r===null?null:r.trim().length>0},Vi=w({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(I(n.attributes))return;if(Bi(n,`aria-brailleroledescription`)===!0&&Bi(n,`aria-roledescription`)===!1){let t=R(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(Bi(n,`aria-braillelabel`)!==!0||ai(t,e.settings)||_re.map(e=>Bi(n,e)).some(e=>e===!0||e===null))return;let r=R(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.`})}})}),Hi=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`}]]),vre=e=>Hi.has(e),yre=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.`,Ui=w({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(!j(t.name,`JSXIdentifier`))return;let n=gn(t.name);!n||!n.startsWith(`aria-`)||vre(n)||e.report({node:t.name,message:yre(n)})}})}),bre={"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`]}},xre=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(`, `)}`}},Wi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${xre(t)}.`,Sre=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}},Gi=e=>{if(j(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(j(e,`TemplateLiteral`)){let t=ot(e);return t===null?null:t.length>0}if(j(e,`UnaryExpression`)&&e.operator===`!`){let t=Gi(e.argument);return t===null?null:!t}return null},Cre=e=>{if(j(e,`Literal`))return!0;if(j(e,`JSXExpressionContainer`)){let t=e.expression;return j(t,`Literal`)?t.value!==null:j(t,`TemplateLiteral`)?!0:j(t,`UnaryExpression`)&&t.operator===`!`?Gi(t.argument)!==null:!1}return!1},Ki=(e,t)=>{if(j(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(j(e,`JSXExpressionContainer`)){let n=e.expression;if(j(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(j(n,`TemplateLiteral`))return ot(n)?.toLowerCase()??null;if(t&&j(n,`UnaryExpression`)&&n.operator===`!`){let e=Gi(n.argument);return e===null?null:String(!e)}}return null},qi=e=>{if(!j(e,`JSXExpressionContainer`))return!1;let t=e.expression;return j(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},wre=(e,t)=>{if(!Cre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=Ki(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=Ki(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return qi(t)?!0:Ki(t,!1)!==null;case`integer`:case`number`:{let e=Ki(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(j(t,`JSXExpressionContainer`)){let e=t.expression;if(j(e,`Literal`)&&typeof e.value==`number`||j(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&j(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(qi(t))return!0;let e=Ki(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=Ki(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=Ki(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))}}},Ji=w({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(!j(t.name,`JSXIdentifier`))return;let n=gn(t.name);if(!n)return;let r=n.toLowerCase(),i=bre[r];if(i){if(!t.value){Sre(i)||e.report({node:t,message:Wi(r,i)});return}wre(i,t.value)||e.report({node:t,message:Wi(r,i)})}}})}),Yi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Tre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??oi(e)}},Ere=w({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=Tre(e.settings);return{JSXOpeningElement(n){let r=F(n.attributes,`role`);if(!r)return;let i=Cr(n,e.settings);if(t.ignoreNonDOM&&!Ei.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:Yi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!pi.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:Yi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:Yi(``)});return}if(j(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:Yi(``)});return}a([o.value]);return}if(j(o,`JSXExpressionContainer`)){let t=o.expression;if(j(t,`Literal`)&&t.value===null){e.report({node:r,message:Yi(``)});return}if(j(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:Yi(``)});return}let n=Kt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:Yi(``)})}}}}),Dre=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,Ore=w({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=Cr(t,e.settings);if(pre.has(n))for(let r of t.attributes){if(!j(r,`JSXAttribute`)||!j(r.name,`JSXIdentifier`))continue;let t=gn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:Dre(n,t)})}}})}),Xi=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t||j(e,`FunctionDeclaration`)||j(e,`FunctionExpression`)||j(e,`ArrowFunctionExpression`))return!1;if(j(e,`AwaitExpression`))return t=!0,!1}),t},Zi=e=>{let t=e;j(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!j(n,`Property`)||n.value!==t||!n.parent||!j(n.parent,`ObjectPattern`)?null:P(n,{allowComputedString:!0})},kre=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Qi=(e,t)=>{let n=A(e);return j(n,`Literal`)?!0:j(n,`Identifier`)?t.has(n.name):j(n,`BinaryExpression`)||j(n,`LogicalExpression`)?Qi(n.left,t)&&Qi(n.right,t):j(n,`UnaryExpression`)?n.operator!==`delete`&&Qi(n.argument,t):j(n,`ConditionalExpression`)?Qi(n.test,t)&&Qi(n.consequent,t)&&Qi(n.alternate,t):j(n,`TemplateLiteral`)?n.expressions.every(e=>Qi(e,t)):!1},$i=(e,t,n)=>{let r=A(e);if(!j(r,`CallExpression`)||!r.arguments.every(e=>!j(e,`SpreadElement`)&&Qi(e,t)))return!1;let i=A(r.callee);if(!j(i,`MemberExpression`)||C(i)!==`resolve`)return!1;let a=A(i.object);return j(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},Are=(e,t,n)=>!j(e,`ExpressionStatement`)||!j(e.expression,`AwaitExpression`)?!1:$i(e.expression.argument,t,n),jre=(e,t)=>{if(!j(e,`ExpressionStatement`)||!j(e.expression,`AssignmentExpression`)||!kre.has(e.expression.operator))return!1;let n=A(e.expression.left);if(!j(n,`MemberExpression`)||C(n)===null)return!1;let r=A(n.object);return j(r,`Identifier`)&&t.has(r.name)&&j(A(e.expression.right),`Literal`)},Mre=(e,t)=>{if(!D(e))return!1;let n=new Set;for(let t of e.params){if(!j(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!j(e.body,`BlockStatement`))return $i(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(j(r,`ReturnStatement`)&&r.argument&&$i(r.argument,n,t))}if(!j(e.body,`BlockStatement`))return Qi(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(!Are(i,n,t)&&!(j(i,`ExpressionStatement`)&&Qi(i.expression,n)))return jre(i,n)?a:!j(i,`ReturnStatement`)||!a?!1:!i.argument||Qi(i.argument,n)||$i(i.argument,n,t)}return!0},Nre=(e,t)=>j(e,`Property`)?Re(e,t,{allowConstTemplateLiteral:!0}):null,Pre=(e,t)=>j(e,`MemberExpression`)?Re(e,t,{allowConstTemplateLiteral:!0}):null,ea=(e,t,n,r,i)=>{let a=A(e);if(j(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||It(e,n,r)||Jn(a,t,r)?null:(i.add(e.id),ea(e.initializer,t,n,r,i))}if(!j(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!j(e,`Property`)||e.kind!==`init`)return null;let n=Nre(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!j(o,`Property`))return null;let s=A(o.value);return D(s)?s:ta(s,n,r,i)},ta=(e,t,n,r)=>{let i=A(e);if(D(i))return i;if(j(i,`MemberExpression`)){let e=Pre(i,n);return e===null?null:ea(A(i.object),e,t,n,r)}if(!j(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||It(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=A(a.initializer),s=Zi(a.bindingIdentifier);return s===null?D(o)?o:a.kind===`const`?ta(o,t,n,r):null:ea(o,s,t,n,r)},na=(e,t)=>{let n=A(e);return!j(n,`CallExpression`)||te(n,t)?null:ta(n.callee,n,t,new Set)},ra=(e,t)=>{let n=na(e,t);return n&&Mre(n,t)?n:null},z=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},Fre=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=e.arguments.findIndex(e=>e===t);if(r<0||e.arguments.some(e=>j(e,`SpreadElement`)))return!1;let i=na(e,n);if(!i||!D(i)||i.generator)return!1;let a=i.params[r];if(!j(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||o.references.some(e=>e.flag!==`read`))return!1;let s=i.body,c=!j(s,`BlockStatement`);if(j(s,`BlockStatement`)){let e=s.body[0];if(j(e,`ReturnStatement`)){if(!e.argument)return!1;s=e.argument,c=!0}else if(j(e,`VariableDeclaration`)&&e.declarations.length===1){let t=e.declarations[0].init;if(!t)return!1;s=t}else if(j(e,`ExpressionStatement`))s=e.expression;else return!1}if(s=A(s),j(s,`AwaitExpression`))s=A(s.argument);else if(!c)return!1;if(!j(s,`CallExpression`))return!1;let l=s.callee;if(!j(l,`MemberExpression`)||!j(l.object,`Identifier`)||l.object.name!==`Promise`||!n.isGlobalReference(l.object))return!1;let u=C(l);if(u!==`all`&&u!==`allSettled`)return!1;let d=s.arguments[0];if(!d)return!1;let f=A(d);return j(f,`Identifier`)&&n.symbolFor(f)===o},ia=e=>!!(e&&(j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`))),Ire=(e,t)=>{if(!j(e,`LogicalExpression`))return!1;let n=y(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?z(t,n):!!(e.operator===`||`&&r&&z(t,r));return j(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):j(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(j(r,`WhileStatement`)||j(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||j(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?z(t,r.body):!1},aa=(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(j(c,`LogicalExpression`)&&c.right===s||j(c,`ConditionalExpression`)&&c.test!==s||j(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(j(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||j(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!z(t,e)&&!Ire(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)},B=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(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=j(i,`Property`)?P(i):null;if(s&&j(a,`ObjectPattern`)&&j(o,`VariableDeclarator`)&&o.id===a){let r=B(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?A(e.initializer):null;return e.kind===`const`&&c&&(j(c,`Identifier`)||j(c,`MemberExpression`))?B(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(j(r,`MemberExpression`)){let e=P(r,{allowComputedString:!0});if(!e)return null;let i=B(r.object,t,n);return i?`${i}.${e}`:null}if(j(r,`ThisExpression`))return`this`;if(j(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(D(r)){let e=b(r);return e===null?null:`function:${e}`}return null},Lre=new Set(Vr),Rre=new Set([`push`,`unshift`]),zre=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),Bre=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),Vre=e=>j(e,`Identifier`)?e.name:j(e,`MemberExpression`)&&j(e.property,`Identifier`)?e.property.name:null,oa=e=>j(e,`ForStatement`)||j(e,`ForInStatement`)||j(e,`ForOfStatement`)||j(e,`WhileStatement`)||j(e,`DoWhileStatement`)?e.body:null,sa=(e,t=!1,n)=>{let r=null;return S(e,i=>{if(r||i!==e&&D(i)||t&&i!==e&&Lre.has(i.type))return!1;j(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},ca=e=>{if(j(e,`Identifier`))return Jr.has(e.name);if(j(e,`MemberExpression`)&&j(e.property,`Identifier`)){let t=A(e.object);return e.property.name===`check`&&j(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:Jr.has(e.property.name)}return!1},Hre=(e,t)=>{if(j(e.callee,`Identifier`)&&zre.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!zre.has(e.callee.property.name))return!1;let n=A(e.callee.object);return j(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Ure=(e,t,n=new Set)=>{if(!D(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return S(e.body,a=>{if(a!==e.body&&D(a))return!1;if(j(a,`NewExpression`)&&j(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=y(a),n=e.parent,i=j(n,`ReturnStatement`)&&n.argument===e||j(n,`AwaitExpression`)&&n.argument===e||D(n)&&n.body===e,o=a.arguments[0];i&&D(o)&&S(o.body,e=>{if(e!==o.body&&D(e))return!1;j(e,`CallExpression`)&&Hre(e,t)&&(r=!0)})}if(!j(a,`CallExpression`)||Hre(a,t))return;let o=na(a,t.scopes);if(o!==null){Ure(o,t,n)&&(i=!0);return}ca(a.callee)&&(i=!0)}),r||i},Wre=(e,t)=>{if(!j(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!j(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(j(e,`SpreadElement`))return!1;let t=A(e);return j(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=na(n,t.scopes);if(r!==null&&Ure(r,t))return!0;if(ra(n,t.scopes)!==null)return!1;let i=Vre(n.callee);return r!==null&&i&&Bre.has(i)?!1:ca(n.callee)},Gre=(e,t)=>j(e,`AwaitExpression`)&&!!e.argument&&te(e.argument,t.scopes),Kre=new Set([`all`,`allSettled`,`race`,`any`]),la=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return!j(t,`MemberExpression`)||t.computed||!j(t.object,`Identifier`)||t.object.name!==`Promise`||!j(t.property,`Identifier`)?!1:Kre.has(t.property.name)},qre=e=>j(e,`AwaitExpression`)?la(e.argument):!1,Jre=e=>{if(!j(e,`AwaitExpression`))return!1;let t=e.argument;if(!j(t,`NewExpression`)||!j(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(j(n,`Identifier`)&&Jr.has(n.name))return!0;if(!ia(n))return!1;let r=n.params?.[0],i=j(r,`Identifier`)?r.name:null,a=!1;return S(n.body,e=>{if(a)return!1;if(j(e,`CallExpression`)&&ca(e.callee)||i&&j(e,`AssignmentExpression`)&&j(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Yre=e=>{let t=e;for(;j(t,`MemberExpression`);)t=t.object;return j(t,`Identifier`)?t.name:null},Xre=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Zre=(e,t)=>!!t&&e.references.some(e=>{let n=y(e.identifier),r=n.parent;return j(r,`ReturnStatement`)&&r.argument===n&&M(r)===t}),ua=(e,t,n)=>{if(j(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(j(e,`ObjectPattern`)){for(let r of e.properties??[])j(r,`Property`)&&r.value?ua(r.value,t,n):j(r,`RestElement`)&&r.argument&&ua(r.argument,t,n);return}if(j(e,`ArrayPattern`)){for(let r of e.elements??[])r&&ua(r,t,n);return}j(e,`AssignmentPattern`)&&e.left&&ua(e.left,t,n)},da=(e,t)=>{let n=new Set;return S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},Qre=(e,t)=>{let n=new Set;if(j(e,`ForOfStatement`)||j(e,`ForInStatement`))if(j(e.left,`VariableDeclaration`))for(let r of e.left.declarations)ua(r.id,t,n);else ua(e.left,t,n);return n},$re=(e,t,n=null)=>{let r=new Set,i=[];S(e,a=>{if(a!==e&&D(a))return!1;if(j(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(ua(a.id,t,e),n&&z(n,a.init)||!n&&Xi(a.init))for(let t of e)r.add(t);let o=da(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(j(a,`AssignmentExpression`)&&a.left){let e=new Set;if(ua(a.left,t,e),n&&z(n,a.right)||!n&&Xi(a.right))for(let t of e)r.add(t);let o=da(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=>j(e,`Identifier`)?e:j(e,`AssignmentPattern`)&&j(e.left,`Identifier`)?e.left:null,tie=(e,t)=>{if(!j(e,`AwaitExpression`))return!1;let n=e.argument;if(!j(n,`CallExpression`))return!1;let r=na(n,t.scopes);if(!D(r))return!1;let i=M(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=$re(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(!j(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Zre(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return S(r.body,e=>{if(c||e!==r.body&&D(e))return!1;if(!j(e,`CallExpression`))return;let n=e.callee;if(!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)||!Rre.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(Xi(n)){l=!0;break}let e=da(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(;j(u,`MemberExpression`);)u=u.object;if(!j(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Xre(d.scope,a)&&Zre(d,i)))return c=!0,!1}),c},nie=e=>{if(!j(e,`AwaitExpression`))return null;let t=A(e.argument);return j(t,`CallExpression`)&&j(A(t.callee),`MemberExpression`)?t:null},rie=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=Qre(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=da(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},iie=e=>{if(!j(e,`CallExpression`))return null;let t=A(e.callee);return j(t,`MemberExpression`)?t.object:null},fa=e=>{let t=A(e);for(;j(t,`MemberExpression`);)t=A(t.object);return t},aie=(e,t,n,r)=>{let i=oa(n);if(!i)return!1;let a=fa(e);if(j(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||z(e.bindingIdentifier,n))return!1}else if(!j(a,`ThisExpression`))return!1;let o=!1;return S(i,e=>{if(o||e!==i&&D(e))return!1;let n=null;if(j(e,`AssignmentExpression`)?n=e.left:(j(e,`UpdateExpression`)||j(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&B(n,r)===t)return o=!0,!1}),!o},oie=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=iie(e);return!r||B(r,n)!==t?!1:!j(y(e).parent,`ExpressionStatement`)},sie=(e,t,n,r)=>{let i=oa(t);if(!i)return!1;let a=!1,o=!1;return S(i,t=>{if(a&&o||t!==i&&D(t))return!1;z(t,e)||oie(t,n,r)&&(aa(t,e,r)&&(a=!0),aa(e,t,r)&&(o=!0))}),a&&o},cie=(e,t)=>{let n=M(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||M(e.identifier)!==n)return!1;let r=y(e.identifier),i=r.parent;if(!j(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=A(i.callee);return j(a,`MemberExpression`)?j(fa(a.object),`ThisExpression`):!1})},lie=(e,t,n)=>{let r=new Set;return S(t,i=>{if(i!==t&&D(i))return!1;let a=null,o=null;j(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):j(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!z(e,o))&&ua(a,n.scopes,r)}),r},uie=(e,t,n)=>{let r=A(e);if(!j(r,`MemberExpression`))return!1;let i=fa(r);if(!j(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},die=(e,t,n)=>{let r=oa(t);if(!r)return!1;let i=lie(e,r,n);if(i.size===0)return!1;let a=!1;return S(r,o=>{if(a||o!==r&&D(o))return!1;if(!j(o,`CallExpression`)||!aa(e,o,n))return;let s=o.callee;if(!j(s,`MemberExpression`)||s.computed||!j(s.property,`Identifier`)||!Rre.has(s.property.name))return;let c=fa(s.object);if(!j(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||z(l.bindingIdentifier,t)||!cie(l,t))){for(let e of o.arguments)if(uie(e,i,n))return a=!0,!1}}),a},fie=(e,t,n)=>{let r=nie(e);if(!r||!rie(r,t,n))return!1;let i=iie(r);if(!i)return!1;let a=B(i,n);return!a||!aie(i,a,t,n)?!1:sie(e,t,a,n)||j(fa(i),`ThisExpression`)&&j(A(i),`MemberExpression`)&&die(e,t,n)},pie=(e,t)=>Gre(e,t)||Wre(e,t)||qre(e)||Jre(e)||tie(e,t),pa=(e,t)=>{if(j(e,`Identifier`))t.add(e.name);else if(j(e,`ObjectPattern`))for(let n of e.properties??[])j(n,`Property`)&&n.value?pa(n.value,t):j(n,`RestElement`)&&n.argument&&pa(n.argument,t);else if(j(e,`ArrayPattern`))for(let n of e.elements??[])n&&pa(n,t);else j(e,`AssignmentPattern`)&&e.left&&pa(e.left,t)},mie=new Set([`push`,`unshift`,`splice`]),ma=(e,t)=>{let n=[];S(e,t=>{if(t!==e&&D(t))return!1;if(!j(t,`VariableDeclarator`)||!t.init||!j(t.id,`Identifier`))return;let r=new Set;St(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}}}},hie=e=>{let t=new Set,n=new Set;if(S(e,r=>{if(r!==e&&D(r))return!1;if(j(r,`AssignmentExpression`)&&r.left){pa(r.left,t);return}if(j(r,`AwaitExpression`)&&r.argument){St(r.argument,n);return}if(!j(r,`CallExpression`))return;let i=r.callee;j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&mie.has(i.property.name)&&j(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;ma(e,t);for(let e of t)if(n.has(e))return!0;return!1},gie=new Set([...Vr,`SwitchStatement`]),_ie=e=>{let t=new Set;return S(e,n=>{if(n!==e&&D(n))return!1;j(n,`VariableDeclarator`)&&n.id&&Xi(n.init)&&pa(n.id,t),j(n,`AssignmentExpression`)&&n.left&&Xi(n.right)&&pa(n.left,t)}),t},ha=(e,t)=>{if(!e)return!1;if(Xi(e))return!0;let n=new Set;St(e,n);for(let e of n)if(t.has(e))return!0;return!1},vie=(e,t,n)=>{if(e.label)return j(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(gie.has(r.type))return!1;r=r.parent}return!0},yie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),ga=e=>{if(!e)return!1;if(yie.has(e.type))return!0;if(j(e,`BlockStatement`)){let t=e.body??[];return ga(t[t.length-1])}return!1},bie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(j(r,`IfStatement`)&&ha(r.test,n)&&(ga(r.consequent)||ga(r.alternate)))return!0}return!1},xie=(e,t,n)=>{if(j(e,`ReturnStatement`)&&e.argument&&ha(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(j(a,`IfStatement`)){if(ha(a.test,n))return!0;r=!0}if(j(a,`TryStatement`)&&a.handler&&i===a.block&&Xi(a.block)&&!r||j(a,`SwitchStatement`)&&ha(a.discriminant,n)||j(a,`BlockStatement`)&&bie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Sie=(e,t)=>{let n=_ie(e);ma(e,n);let r=!1;return S(e,i=>{if(r||i!==e&&D(i))return!1;if((j(i,`ReturnStatement`)||j(i,`BreakStatement`)&&vie(i,e,t))&&xie(i,e,n))return r=!0,!1}),r},Cie=new Set([...mie,`pop`,`shift`]),wie=e=>{let t=new Set;return S(e,n=>{if(n!==e&&D(n))return!1;if(j(n,`AssignmentExpression`)&&n.left){pa(n.left,t);let e=Yre(n.left);e&&t.add(e);return}if(!j(n,`CallExpression`))return;let r=n.callee;if(j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&Cie.has(r.property.name)){let e=Yre(r.object);e&&t.add(e)}}),t},Tie=(e,t)=>{if(!e)return!1;let n=new Set;if(St(e,n),n.size===0)return!1;let r=wie(t),i=_ie(t);ma(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Eie=e=>{let t=e.parent;return j(t,`LabeledStatement`)&&j(t.label,`Identifier`)?t.label.name:null},Die=(e,t)=>{let n=!1;return S(e,e=>{if(n||ia(e)||j(e,`FunctionDeclaration`))return!1;if(j(e,`AwaitExpression`)&&pie(e,t))return n=!0,!1}),n},Oie=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),kie=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),Aie=e=>{let t=e;for(;;){t=y(t);let e=t.parent;if(!e)return t;if(j(e,`SpreadElement`)||j(e,`ArrayExpression`)){t=e;continue}if(j(e,`LogicalExpression`)){t=e;continue}if(j(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(j(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(j(n,`CallExpression`)&&n.callee===e&&!e.computed&&j(e.property,`Identifier`)&&kie.has(e.property.name)){t=n;continue}}return t}},_a=e=>{let t=e;for(;t.parent&&!D(t);)t=t.parent;return t},jie=(e,t)=>{let n=!1;return S(t,t=>{if(n)return!1;if(!la(t))return;let r=new Set;for(let e of t.arguments??[])St(e,r);if(r.has(e))return n=!0,!1}),n},Mie=(e,t)=>{let n=Aie(e),r=n.parent;if(j(r,`CallExpression`)&&la(r)&&(r.arguments??[]).some(e=>e===n)||j(r,`CallExpression`)&&Fre(r,n,t.scopes))return!0;let i=null;return j(r,`VariableDeclarator`)&&r.init===n&&j(r.id,`Identifier`)?i=r.id.name:j(r,`AssignmentExpression`)&&r.right===n&&j(r.left,`Identifier`)&&(i=r.left.name),!i||!r?!1:jie(i,_a(r))},Nie=e=>{let t=_a(e);if(!D(t))return!1;let n=null;return j(t,`FunctionDeclaration`)&&j(t.id,`Identifier`)?n=t.id.name:j(t.parent,`VariableDeclarator`)&&j(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:jie(n,_a(t.parent))},Pie=w({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:`Consider concurrent calls only for independent asynchronous work. Shared queues or synchronous work may not benefit. Preserve resource limits, transaction ordering, and failure/cancellation semantics; observe all callback promises.`,create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!sa(i,!0)||Die(i,e)||(j(n,`WhileStatement`)||j(n,`DoWhileStatement`))&&Tie(n.test,i)||hie(i)||Sie(i,Eie(n))||Nie(n))return;let a=sa(i,!0,t=>fie(t,n,e));a&&e.report({node:a,message:`This ${r} waits before starting the next iteration. If iterations perform independent asynchronous work, consider bounded concurrency; await syntax alone does not establish a speedup.`})};return{ImportDeclaration(e){Yr(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||!j(n.callee,`MemberExpression`)||!j(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!Oie.has(r))return;let i=n.arguments?.[0];if(!i||!ia(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&Mie(n,e))return;let o=sa(a);if(o){let t=r===`forEach`?"Async callback in .forEach returns a promise that .forEach ignores. Use a `for…of` loop to await each operation, or collect and observe promises when concurrent work is safe.":`Async callback in .${r} returns a promise that the array method does not await. Check that its consumer observes completion and handles rejections; callbacks may already overlap.`;e.report({node:o,message:t})}}}}}),va=(e,t)=>{if(e){if(j(e,`AssignmentPattern`)){St(e.right,t),va(e.left,t);return}if(j(e,`RestElement`)){va(e.argument,t);return}if(j(e,`ArrayPattern`)){for(let n of e.elements??[])va(n,t);return}if(j(e,`ObjectPattern`))for(let n of e.properties??[])j(n,`RestElement`)?va(n.argument,t):j(n,`Property`)&&(n.computed&&St(n.key,t),va(n.value,t))}},Fie=e=>j(e,`ExpressionStatement`)?j(e.expression,`AwaitExpression`):!1,Iie=e=>j(e,`ReturnStatement`)||j(e,`ThrowStatement`)||j(e,`ContinueStatement`)||j(e,`BreakStatement`),Lie=e=>{if(!j(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(Iie(t))return!0;if(!j(t,`BlockStatement`))return!1;for(let e of t.body??[])if(Iie(e))return!0;return!1},ya=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Rie=(e,t)=>{j(e,`VariableDeclarator`)&&(St(e.init,t),va(e.id,t))},zie=(e,t)=>{if(!j(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(!j(r,`VariableDeclarator`))continue;if(Xi(r.init)||Xi(r.id)){n=!0;let e=t.size;kt(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Rie(r,e),!ya(e,t))continue;let a=t.size;kt(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},Bie=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(`.`)),Vie=e=>{let t=!1;return S(e,e=>{if(t)return!1;if(!j(e,`MemberExpression`)||e.computed||!j(e.property,`Identifier`)||e.property.name!==`current`||!j(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Hie=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Uie=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Hie)if(t.includes(e))return!0;return!1},Wie=e=>{let t=new Set;return S(e,e=>{(j(e,`Identifier`)||j(e,`PrivateIdentifier`))&&t.add(e.name)}),t},Gie=e=>{if(!e)return!1;let t=new Set;St(e,t);for(let e of t)if(Bie.has(e))return!0;for(let t of Wie(e))if(Bie.has(t)||Uie(t))return!0;return Vie(e)},Kie=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t)return!1;if(j(e,`CallExpression`))return j(e.callee,`ArrowFunctionExpression`)||j(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(j(e,`ThisExpression`)||j(e,`PrivateIdentifier`))return t=!0,!1}),t},qie=e=>{if(!e)return!1;let t=A(e);if(!j(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=A(e);return j(t,`Literal`)||j(t,`TemplateLiteral`)||j(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Jie=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&i.kind===`const`&&i.initializer&&xn(i.scope,n))},Yie=(e,t,n)=>{let r=A(e);if(j(r,`MemberExpression`))return!0;if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!xn(i.scope,n))},Xie=(e,t,n)=>{let r=A(e);return!qie(r)||!j(r,`BinaryExpression`)?!1:Jie(r.left,t,n)&&Yie(r.right,t,n)||Jie(r.right,t,n)&&Yie(r.left,t,n)},Zie=(e,t,n)=>{if(!n||!e)return!1;let r=A(e);if(!j(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=A(e);if(j(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Xie(r,t,n))return!1}return!0},Qie=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t||D(e)||j(e,`ThrowStatement`))return!1;if(j(e,`CallExpression`)||j(e,`NewExpression`)||j(e,`AssignmentExpression`)||j(e,`UpdateExpression`))return t=!0,!1}),t},$ie=(e,t)=>{if(!e)return!1;let n=new Set;if(St(e,n),n.size===0)return!1;let r=M(t);if(!r||!D(r)||!r.body)return!1;let i=!1;return S(r.body,e=>{if(i)return!1;let t=null;if(j(e,`AssignmentExpression`)?t=e.left:j(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;kt(t,r),j(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(j(n,`VariableDeclaration`)?zie(n,r).didIntroduceAwait&&(i=!0):Fie(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(Fie(t)){a=!0,o++;continue}if(!j(t,`VariableDeclaration`))break;let n=zie(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},tae=w({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(!Lie(i)||!j(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(St(i.test,a),ya(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=M(i),s=o?e.scopes.ownScopeFor(o):null;if(Gie(i.test)||Kie(i.test)||qie(i.test)||Zie(i.test,e.scopes,s)||$ie(i.test,i)||Qie(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(St(i.consequent,c),ya(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},n=e=>{e&&S(e,e=>{if(D(e))return!1;j(e,`BlockStatement`)?t(e.body??[]):j(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{D(e)&&e.async&&j(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),nae=(e,t,n)=>{let r=new Set;for(let e of t)S(e,e=>{if(!j(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return S(e,e=>{if(i||!j(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},rae=e=>j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`cookies`,ba=e=>rae(e)?!0:j(e,`AwaitExpression`)&&e.argument?rae(e.argument):!1,iae=new Set([`headers`,`searchParams`]),aae=e=>j(e,`AwaitExpression`)&&e.argument?e.argument:e,oae=e=>j(e,`NewExpression`)&&j(e.callee,`Identifier`)&&Ce.has(e.callee.name),sae=e=>!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.object,`Identifier`)||!j(e.callee.property,`Identifier`)?!1:Nee.has(e.callee.object.name)&&pt.has(e.callee.property.name),cae=e=>j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`headers`,lae=new Set([`createHash`,`createHmac`,`createSign`,`createVerify`,`createCipheriv`,`createDecipheriv`]),uae=e=>j(e,`CallExpression`)?j(e.callee,`Identifier`)?lae.has(e.callee.name):j(e.callee,`MemberExpression`)&&j(e.callee.property,`Identifier`)&&lae.has(e.callee.property.name):!1,dae=e=>j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&iae.has(e.property.name),fae=e=>{let t=aae(e);return!!(oae(t)||sae(t)||dae(t)||cae(t)||uae(t))},pae=(e,t)=>!!(oae(e)||sae(e)||dae(e)||cae(e)||uae(e)||j(e,`Identifier`)&&t.has(e.name)),mae=(e,t)=>{let n=e;for(;n;){if(pae(n,t))return!0;if(j(n,`MemberExpression`)){n=n.object;continue}if(j(n,`ChainExpression`)){n=n.expression;continue}if(j(n,`AwaitExpression`)){n=n.argument;continue}if(j(n,`TSNonNullExpression`)||j(n,`TSAsExpression`)){n=n.expression;continue}return!1}return!1},hae=new Set,gae=new Set([`set`,`append`,`delete`]),_ae=e=>j(e,`Property`)&&j(e.key,`Identifier`)&&e.key.name===`method`&&j(e.value,`Literal`)&&typeof e.value.value==`string`&&gt.has(e.value.value.toUpperCase()),vae=(e,t)=>ba(e)?!0:j(e,`Identifier`)?t.has(e.name):!1,yae=(e,t,n,r=!0)=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!gae.has(e.callee.property.name))return null;let i=A(e.callee.object);return!n?.(i)&&(!r||!vae(i,t))?null:e.callee.property.name},xa=e=>{if(!j(e,`CallExpression`)||!j(e.callee,`Identifier`)||e.callee.name!==`fetch`)return!1;let t=e.arguments?.[1];return!t||!j(t,`ObjectExpression`)?!1:!!t.properties?.some(_ae)},bae=(e,t,n,r=!0)=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`))return!1;let{property:i,object:a}=e.callee;if(!j(i,`Identifier`)||!tee.has(i.name))return!1;let o=A(a);return!(n?.(o)||r&&mae(o,t))},xae=e=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`))return`.unknown()`;let t=e.callee.property.name,n=A(e.callee.object),r=j(n,`Identifier`)?n.name:null;return r?`${r}.${t}()`:`.${t}()`},Sa=(e,t={})=>{let n=t.locallyScopedSafeBindings??hae,r=t.locallyScopedCookieBindings??hae,i=null;return S(e,a=>{if(i)return;if(a!==e&&D(a)&&t.shouldTraverseNestedFunction&&!t.shouldTraverseNestedFunction(a))return!1;let o=yae(a,r,t.isCookieReceiver,t.useDefaultCookieReceiverDetection);if(o){i=`cookies().${o}()`;return}if(xa(a)&&j(a,`CallExpression`)){let e=a.arguments[1];if(!j(e,`ObjectExpression`))return;let t=e.properties.find(_ae);if(!t||!j(t,`Property`)||!j(t.value,`Literal`))return;i=`fetch() with method ${t.value.value}`;return}bae(a,n,t.isSafeReceiver,t.useDefaultSafeReceiverDetection)&&(i=xae(a))}),i},Sae=e=>{let t=e;for(;j(t,`ChainExpression`);)t=t.expression;if(!j(t,`CallExpression`)&&!j(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(j(r,`ChainExpression`)){r=r.expression;continue}if(j(r,`MemberExpression`)){j(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(j(r,`CallExpression`)){r=r.callee;continue}j(r,`Identifier`)&&n.push(r.name);break}return n},Ca=e=>{if(j(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&j(t.init,`AwaitExpression`))return t.init.argument??null}return j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Cae=e=>One.has(e)?!0:kne.some(t=>e.startsWith(t)),wae=e=>e?Sae(e).some(Cae):!1,Tae=e=>e?Sae(e).some(e=>Jr.has(e)):!1,Eae=e=>j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`),Dae=e=>{let t=A(e);return j(t,`CallExpression`)?t.arguments.every(e=>{if(j(e,`SpreadElement`))return!1;let t=A(e);return j(t,`Identifier`)||j(t,`Literal`)}):!1},Oae=e=>{let t=Ca(e);if(!t)return!1;let n=A(t);return!j(n,`CallExpression`)&&!j(n,`NewExpression`)&&!j(n,`ImportExpression`)},kae=(e,t)=>{let n=null;for(let r of e){if(Oae(r))return!0;let e=Ca(r);if(e&&te(e,t.scopes)||e&&Sa(e,{shouldTraverseNestedFunction:()=>!1}))return!0;let i=e?ra(e,t.scopes):null;if(Eae(r)){if(i===null||!e||!Dae(e)||n!==null&&n!==i)return!0;n=i}if(wae(e)||Tae(e)&&i===null)return!0}return!1},Aae=e=>{let t=e.parent;for(;t;){if(D(t)){let e=t.parent;if(e&&j(e,`CallExpression`)){let t=e.callee;if(j(t,`MemberExpression`)&&j(t.property,`Identifier`)&&t.property.name===`transaction`||j(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},jae=(e,t)=>{let n=[];for(let r of e){let e=Ca(r);if(e){if(nae(e,n,t.scopes))return;j(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`})},Mae=w({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=On(e.filename??``),n=Tne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Yr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Aae(t))return;let n=[],r=()=>{n.length>=3&&(kae(n,e)||jae(n,e)),n.length=0};for(let e of t.body??[])j(e,`VariableDeclaration`)&&e.declarations?.length===1&&j(e.declarations[0].init,`AwaitExpression`)||j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),wa=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`||j(t,`UnaryExpression`)&&t.operator===`void`},Nae=e=>{let t=e[0];return t&&j(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Pae="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.",Fae=new Set([`localStorage`,`sessionStorage`]),Iae=new Set([`window`,`globalThis`,`self`]),Lae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,Rae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,zae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,Bae=e=>!(!Lae.test(e)||Rae.test(e)&&!zae.test(e)),Vae=e=>j(e,`Identifier`)?Fae.has(e.name):j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&Iae.has(e.object.name)&&j(e.property,`Identifier`)?Fae.has(e.property.name):!1,Ta=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=O(e,e.name);if(!n?.initializer)return null;if(j(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!j(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!j(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=A(n.initializer);return j(a,`Identifier`)?Ta(a,t)??a:a},Ea=(e,t)=>{let n=A(e);if(Da(n,new Set(t)))return!0;if(j(n,`ConditionalExpression`)){let e=A(n.consequent),r=A(n.alternate);return(wa(e)||Ea(e,t))&&(wa(r)||Ea(r,t))&&(!wa(e)||!wa(r))}if(j(n,`LogicalExpression`)){if(n.operator===`&&`)return Ea(n.right,t);let e=A(n.left),r=A(n.right),i=Ea(e,t),a=Ea(r,t);return(i||wa(e))&&(a||wa(r))&&(i||a)}return!1},Da=(e,t=new Set)=>{let n=A(e);if(t.has(n))return!1;if(t.add(n),Vae(n))return!0;if(j(n,`Identifier`)){let e=Ta(n);return e?Da(e,new Set(t)):!1}if(!j(n,`CallExpression`))return!1;let r=A(n.callee);if(!j(r,`Identifier`))return!1;let i=Ta(r);if(!D(i))return!1;if(j(i,`ArrowFunctionExpression`)&&!j(i.body,`BlockStatement`))return Ea(i.body,t);let a=!1;for(let e of et(i)){if(!e.argument)continue;let n=A(e.argument);if(!wa(n)){if(!Ea(n,t))return!1;a=!0}}return a},Hae=e=>{if(j(e,`Literal`)&&typeof e.value==`string`)return e.value;if(j(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(j(e,`Identifier`)&&e.name!==`undefined`){let t=O(e,e.name);return!t?.initializer||j(t.initializer,`Identifier`)?null:Hae(t.initializer)}return null},Uae=e=>!e.computed&&j(e.property,`Identifier`)?e.property.name:e.computed&&j(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,Oa=(e,t,n,r,i=new Set)=>{let a=A(e);if(i.has(a))return null;if(i.add(a),j(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=Ta(a);return s?Oa(s,t,n,r,i):null}if(r&&j(a,`CallExpression`)&&j(a.callee,`MemberExpression`)&&!a.callee.computed&&j(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&j(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?Oa(e,t,n,!0,i):null}return null},ka=new WeakMap,Wae=(e,t)=>{let n=ka.get(e);if(n)return n;if(!j(e,`FunctionDeclaration`)&&!j(e,`FunctionExpression`)&&!j(e,`ArrowFunctionExpression`))return ka.set(e,[]),[];let r=Nae(e.params).map(e=>{let n=A(e),r=j(n,`Identifier`)?n:j(n,`AssignmentPattern`)&&j(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return S(e.body,n=>{if(n!==e.body&&D(n))return!1;if(!j(n,`CallExpression`))return;let a=A(n.callee);if(!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`)||a.property.name!==`setItem`||!Da(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=Oa(o,r,t,!1),l=Oa(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),ka.set(e,i),i},Gae=w({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:wt(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=Hae(e);return t!==null&&Bae(t)})&&e.report({node:t,message:Pae})},i=(t,n)=>{let i=Ta(n),a=i?Wae(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&&j(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=A(e.callee);if(j(t,`MemberExpression`)&&!t.computed&&j(t.property,`Identifier`)&&t.property.name===`setItem`&&Da(A(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else j(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=A(e.callee);j(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!j(n,`MemberExpression`))return;let r=Uae(n);!r||!Bae(r)||Da(n.object)&&e.report({node:n,message:Pae})}}})}),Kae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,qae=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(`.`)),Jae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Yae=new Set([`shipping`,`billing`]),Xae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),Zae=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&&Yae.has(t[n])&&(n+=1);let r=n<t.length&&Xae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?Jae.has(i):qae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Qae=new Set([`input`,`textarea`,`select`,`form`]),$ae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},Aa=w({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:wt(e=>{let t=$ae(e.settings);return{JSXOpeningElement:n=>{let r=Cr(n,e.settings);if(!Qae.has(r)&&!t.inputComponents.has(r))return;let i=F(n.attributes,`autoComplete`);if(!i)return;let a=yr(i);a&&(Zae(a)||e.report({node:i,message:Kae(a)}))}}})}),V=(e,t)=>e?.find(e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&e.name.name===t),ja=e=>kr(e)?.split(`.`).at(-1)??null,eoe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!j(t,`ImportDeclaration`)||Wt(t)||j(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},Ma=e=>{let t=eoe(e);if(!t||!j(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},Na=(e,t,n,r)=>{if(!j(e,`JSXMemberExpression`))return null;if(j(e.object,`JSXIdentifier`)){let i=T(e.object,r.scopes);if(!i)return null;let a=Ma(i);return a===null||!t.test(a)?null:rt(i.declarationNode)===n?e.property.name:null}if(!j(e.object,`JSXMemberExpression`)||!j(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=T(e.object.object,r.scopes);if(!i||!j(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=Ma(i);return a!==null&&t.test(a)?e.property.name:null},Pa=(e,t)=>{let n=A(e);if(j(n,`JSXElement`)){Fa(n,t);return}if(j(n,`JSXFragment`)){Ia(n.children,t);return}if(j(n,`ConditionalExpression`)){Pa(n.consequent,t),Pa(n.alternate,t);return}if(j(n,`LogicalExpression`)){n.operator!==`&&`&&Pa(n.left,t),Pa(n.right,t);return}if(j(n,`ArrayExpression`)){for(let e of n.elements)e&&(j(e,`SpreadElement`)?t.onOpaqueExpression?.(e):Pa(e,t));return}if(j(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(j(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}j(n,`JSXEmptyExpression`)||j(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},Fa=(e,t)=>{t.onElement(e)!==!1&&Ia(e.children,t)},Ia=(e,t)=>{for(let n of e)j(n,`JSXElement`)?Fa(n,t):j(n,`JSXFragment`)?Ia(n.children,t):j(n,`JSXExpressionContainer`)?Pa(n.expression,t):j(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},La=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{S(e,e=>{j(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return Ia(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=V(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},toe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],Ra=[`aria-label`,`aria-labelledby`,`title`],noe=e=>{if(!e.value||!j(e.value,`JSXExpressionContainer`))return!0;let t=A(e.value.expression);if(!j(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return I(n)||Ra.some(e=>F(n,e))},roe=(e,t,n)=>{if(Na(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=ja(e);return r===`Title`||r===`${t.namespaceName}Title`},za=w({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of toe){if(Na(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(I(t.attributes))return;let r=V(t.attributes,`render`);if(r&&noe(r)||Ra.some(e=>F(t.attributes,e)))return;let i=t.parent;if(!i||!j(i,`JSXElement`)||i.children.length===0)return;let a=La(i.children,{isPartElementName:t=>roe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(Na(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=ja(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}}})}),ioe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,Ba=[`aria-label`,`aria-labelledby`],Va=(e,t)=>Na(e,ioe,`Field`,t),Ha=(e,t)=>{if(Va(e,t)===`Label`)return!0;let n=ja(e);return n===`label`||n===`Label`||n===`FieldLabel`},aoe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(j(r,`JSXElement`)&&Va(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},ooe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return Ia(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(Ha(a,t))return n.hasLabel=!0,!1;let o=Va(a,t);if((o===`Control`||aoe(i,e,t))&&Ba.some(e=>F(i.attributes,e)))return n.hasLabel=!0,!1;I(i.attributes)&&(n.sawUnprovableContent=!0);let s=V(i.attributes,`render`);if(s?.value&&S(s.value,e=>{j(e,`JSXOpeningElement`)&&Ba.some(t=>F(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=ja(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,S(e,e=>{j(e,`JSXOpeningElement`)&&Ha(e.name,t)&&(n.hasLabel=!0)})}}),n},Ua=w({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(Va(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!j(n,`JSXElement`)||n.children.length===0)return;let r=ooe(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.`})}})}),Wa=(e,t)=>{let n=e.parent?.parent;for(;n;){if(j(n,`JSXAttribute`))return`unprovable`;if(j(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=ja(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},soe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,Ga=(e,t)=>Na(e,soe,`Tabs`,t),coe=w({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){Ga(t.name,e)===`Tab`&&Wa(t,t=>{let n=Ga(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.`})}})}),loe=e=>{let t=e;for(;t;){if(j(t,`MemberExpression`)){if(j(t.property,`Identifier`)&&t.property.name===`document`||j(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(j(t,`Identifier`)&&t.name===`document`)}return!1},Ka=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`Identifier`)?t.name===`createElement`:j(t,`MemberExpression`)&&(t.computed?j(t.property,`Literal`)&&t.property.value===`createElement`:j(t.property,`Identifier`)&&t.property.name===`createElement`)?!loe(t.object):!1},qa="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",uoe=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}},Ja=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Ya=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return Ja(r.value,t);if(j(r,`TemplateLiteral`)){let e=ot(r);if(e!==null)return Ja(e,t)}if(j(r,`ConditionalExpression`))return Ya(r.consequent,t,n)&&Ya(r.alternate,t,n);if(j(r,`Identifier`)){if(n.has(r.name))return!1;let e=O(r,r.name);return!e?.initializer||!Xa(e)?!1:Ya(e.initializer,t,new Set(n).add(r.name))}return!1},Xa=e=>{let t=e.bindingIdentifier.parent;if(!t||!j(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&j(n,`VariableDeclaration`)&&n.kind===`const`)},doe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),foe=e=>{let t=e;for(;t.parent&&doe.has(t.parent.type);)t=t.parent;return t},Za=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=foe(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(j(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!j(e,`Identifier`))return!1;let n=O(e,e.name);return n?Za(n.bindingIdentifier,t):!1}return!1},poe=e=>{let t=O(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!j(n,`Property`)||n.computed||n.value!==t||!Za(n)?!1:j(n.key,`Identifier`)?n.key.name===`type`:j(n.key,`Literal`)?n.key.value===`type`:!1},moe=/Type$/,hoe=(e,t)=>{if(!moe.test(e.name))return!1;let n=O(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!j(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!j(i,`Property`)||i.computed||i.value!==r||!Za(i)?!1:Ya(r.right,t)},Qa=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Identifier`)){if(r.name===`type`||poe(r)||hoe(r,t))return!0;if(n.has(r.name))return!1;let e=O(r,r.name);if(!e?.initializer||!Xa(e))return!1;let i=A(e.initializer);return!j(i,`ConditionalExpression`)&&!j(i,`LogicalExpression`)?!1:Qa(i,t,new Set(n).add(r.name))}if(j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(j(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Qa(r.left,t,n);if(j(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Qa(e,t,n))&&e.every(e=>Qa(e,t,n)||Ya(e,t))}return!1},goe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],_oe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},$a=e=>{for(let t of goe){let n=m(e,e.name,t);if(n!==null)return n}return null},eo=e=>e.computed?null:j(e.key,`Identifier`)?e.key.name:j(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,voe=e=>{if(j(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(j(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(!(j(t,`FunctionDeclaration`)||j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},yoe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!j(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=eo(n);if(!r)return!1;let i=n.parent;if(!i||!j(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!j(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!j(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=A(a.init);if(!j(s,`CallExpression`))return!1;let c=A(s.callee);if(!j(c,`Identifier`))return!1;let l=$a(c);if(l!==null)return _oe[l]===r;let u=O(c,c.name)?.initializer;if(!u||!j(u,`FunctionDeclaration`)&&!j(u,`FunctionExpression`)&&!j(u,`ArrowFunctionExpression`))return!1;let d=voe(u);return!d||d.length===0?!1:d.every(e=>{let n=A(e);if(!j(n,`ObjectExpression`))return!1;for(let e of n.properties){if(j(e,`SpreadElement`)||!j(e,`Property`))return!1;if(eo(e)===r)return to(e.value,t)}return!0})},to=(e,t=new Set)=>{let n=A(e);if(j(n,`ObjectExpression`))return n.properties.every(e=>{if(j(e,`SpreadElement`))return to(e.argument,t);if(!j(e,`Property`))return!1;let n=eo(e);return n!==null&&n!==`type`});if(j(n,`CallExpression`)){let e=A(n.callee);return!j(e,`Identifier`)||$a(e)!==`mergeProps`?!1:n.arguments.every(e=>!j(e,`SpreadElement`)&&to(e,t))}if(j(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=O(n,n.name);return r?r.initializer&&Xa(r)?to(r.initializer,e):yoe(r,e):!1}return!1},no=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},boe=e=>{let t=R(e.attributes,`form`,!1);return!!(t&&L(t)?.trim())},xoe=e=>!!Tr(e?xt(e,`form`):void 0)?.trim(),Soe=e=>{if(!j(e,`CallExpression`)||!Ka(e))return!1;let t=e.arguments[0];return!!(t&&j(t,`Literal`)&&t.value===`form`)},ro=e=>{let t=e.parent;for(;t;){if(j(t,`JSXElement`)&&N(t.openingElement)===`form`||Soe(t))return!0;t=t.parent}return!1},io=w({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=uoe(e.settings),n=oi(e.settings),r=jt(e.filename);return{JSXOpeningElement(i){if(n&&r||N(i)!==`button`)return;let a=F(i.attributes,`type`);if(!a){if(n&&!boe(i)&&!ro(i)||I(i.attributes)&&!i.attributes.every(e=>!j(e,`JSXSpreadAttribute`)||to(e.argument)))return;e.report({node:i.name,message:qa});return}let o=a.value;if(!o){no(e,a);return}if(j(o,`Literal`)){Ya(o,t)||no(e,a);return}if(j(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Qa(n,t))return;Ya(n,t)||no(e,a)}},CallExpression(i){if(n&&r||!Ka(i))return;let a=i.arguments[0];if(!a||!j(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=xoe(o)||ro(i);if(!o||wa(o)){if(n&&!s)return;e.report({node:i,message:qa});return}if(!j(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(j(e,`SpreadElement`)){l=!0;continue}if(!j(e,`Property`))continue;let t=e.key;if(j(t,`Identifier`)&&t.name===`type`||j(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!j(e,`SpreadElement`)||to(e.argument)))return;e.report({node:o,message:qa});return}Qa(c,t)||Ya(c,t)||no(e,c)}}}}),Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},ao=e=>j(e,`Identifier`)||j(e,`MemberExpression`)&&!e.computed,oo=e=>!e.value||!j(e.value,`JSXExpressionContainer`)?!1:ao(e.value.expression),woe=e=>{if(!e.value)return!0;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return j(t,`Literal`)&&t.value===!0}return!1},Toe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(j(c,`JSXSpreadAttribute`)){o=!0;continue}if(!j(c,`JSXAttribute`))continue;let e=gn(c.name);e===`checked`?(t=c,n=oo(c)):e===`defaultChecked`&&!r?(r=c,i=oo(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&woe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Eoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(j(c,`SpreadElement`)){o=!0;continue}if(!j(c,`Property`))continue;let e=c.key,l=null;if(j(e,`Identifier`)?l=e.name:j(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=ao(c.value);else if(l===`defaultChecked`&&!r)r=c,i=ao(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;j(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},so=w({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=Coe(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){N(e)===`input`&&n(Toe(e.attributes))},CallExpression(e){if(!Ka(e))return;let t=e.arguments[0];if(!t||!j(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!j(r,`ObjectExpression`)||n(Eoe(r))}}}}),co=w({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.`}),lo=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(D(a)||((j(a,`ConditionalExpression`)||j(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&&!D(s);){if(j(s,`ConditionalExpression`)||j(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},uo=(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(j(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=Cn(Rn(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(j(n,`LogicalExpression`)&&n.right===t){let e=Cn(Rn(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(j(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},fo=(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=b(r),c=new Set([...uo(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=b(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},po=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...uo(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},mo=`Component`,ho=`PureComponent`,Doe=e=>!j(e,`MemberExpression`)||!j(e.object,`Identifier`)||e.object.name!==`React`||!j(e.property,`Identifier`)?!1:e.property.name===mo||e.property.name===ho,go=e=>{if(!j(e,`ClassDeclaration`)&&!j(e,`ClassExpression`))return!1;let t=e.superClass;return t?Doe(t)?!0:j(t,`Identifier`)?t.name===mo||t.name===ho:!1:!1},Ooe=e=>{let t=e,n=e.parent;for(;n;){if(j(n,`IfStatement`)&&j(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||j(n,`ConditionalExpression`)&&j(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(j(n,`WhileStatement`)||j(n,`ForStatement`))&&n.body===t&&n.test&&j(n.test,`Literal`)&&!n.test.value||j(n,`LogicalExpression`)&&n.right===t&&j(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},H=(e,t)=>{if(Ooe(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},koe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Aoe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),_o=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=A(n.object);return j(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&C(n)===`now`},vo=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Literal`))return typeof r.value==`number`;if(j(r,`CallExpression`))return _o(r,t);if(j(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),vo(e.initializer,t,n))}return j(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&vo(r.argument,t,n):!j(r,`BinaryExpression`)||!Aoe.has(r.operator)?!1:vo(r.left,t,new Set(n))&&vo(r.right,t,new Set(n))},yo=(e,t)=>{if(_o(e,t))return!0;let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=A(n.object);if(!j(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=C(n);if(r.name===`console`)return koe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&vo(a,t))},bo=({node:e,scopes:t})=>{let n=A(e);if(j(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(j(n,`ThisExpression`))return`this`;if(!j(n,`MemberExpression`))return null;let r=bo({node:n.object,scopes:t}),i=C(n);return r&&i?`${r}.${i}`:null},joe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Moe=e=>{if(j(e,`FunctionDeclaration`))return e.id&&j(e.id,`Identifier`)?e.id:null;let t=y(e),n=t.parent;if(!n||!j(n,`VariableDeclarator`)||n.init!==t||!j(n.id,`Identifier`))return null;let r=n.parent;return!r||!j(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},xo=(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;S(e,t=>{if(t!==e&&D(t)){let e=Moe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=j(t,`VariableDeclarator`)&&t.init?A(t.init):null;if(j(t,`VariableDeclarator`)&&j(t.id,`Identifier`)&&j(n,`Identifier`)&&t.parent&&j(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=O(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&&D(e)||(t(e),qn(e,e=>l(e)),!j(e,`CallExpression`)))return;let o=A(e.callee);if(D(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(j(o,`Identifier`)){let e=O(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!j(o,`MemberExpression`)||!joe.has(C(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=A(t);if(D(i))i.body&&(!r||r(i))&&a(i.body,s);else if(j(i,`Identifier`)){let e=O(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)},So=(e,t)=>{if(!D(e))return;let n=e.body;n&&S(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Co=(e,t,n,r=e,i=new Set)=>{let a=A(e);if(j(a,`ObjectExpression`))return a;if(!j(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||It(o,r,n)||t.some(e=>se(a,e,r,n))?null:(i.add(o.id),Co(o.initializer,t,n,r,i))},wo=new Set([`window`,`globalThis`,`global`,`self`]),Noe=new Set([`body`,`documentElement`,`visualViewport`]),Poe=new Set([`initPlaces`,`places`]),To=new Set([`forceUpdate`,`setState`]),Eo=`mobx-react`,Do=`disposeOnUnmount`,Foe=[`handler`],Oo=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Ioe=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`]}]]),ko=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Loe=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`]),jo=(e,t)=>{let n=M(e);if(!n)return!1;let r=[];if(So(n,t=>{j(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},Mo=e=>{if(!j(e,`CallExpression`))return null;let t=A(e.callee);return j(t,`Identifier`)?t.name:null},No=(e,t)=>{let n=Mo(e),r=j(e,`CallExpression`)?A(e.callee):null;return!!(n&&j(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&m(e,n,`mobx`)===`runInAction`)},Po=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(j(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?A(i.init):null;return j(e,`Property`)&&j(n,`ObjectPattern`)&&j(a,`Identifier`)&&wo.has(a.name)&&t.isGlobalReference(a)?P(e,{allowComputedString:!0}):null}let a=r.initializer?A(r.initializer):null;if(j(a,`Identifier`))return Po(a,t,n);if(!j(a,`MemberExpression`))return null;let o=A(a.object);return j(o,`Identifier`)&&wo.has(o.name)&&t.isGlobalReference(o)?C(a):null},Fo=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=A(e.callee);if(Mo(e)&&j(n,`Identifier`))return Po(n,t);if(!j(n,`MemberExpression`))return null;let r=A(n.object);return!j(r,`Identifier`)||!wo.has(r.name)||O(r,r.name)?null:C(n)},Io=e=>j(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:P(e,{allowComputedString:!0}),Lo=new WeakMap,Ro=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},zo=e=>{let t=Lo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(j(e,`ClassBody`)){for(let t of e.body){let e=Io(t);e&&(j(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(j(t,`MethodDefinition`)||j(t,`PropertyDefinition`))&&t.value&&D(t.value)&&r.set(e,t.value))}S(e,t=>{let n=j(t,`AssignmentExpression`)?A(t.left):j(t,`UpdateExpression`)?A(t.argument):null;if(!j(n,`MemberExpression`)||!j(A(n.object),`ThisExpression`))return;let r=C(n);if(!r)return;let a=Ro(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?Io(a):null,isAssignment:j(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return Lo.set(e,a),a},Bo=(e,t,n)=>{if(!e||!j(e,`ClassBody`))return null;let r=zo(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},Vo=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),xo(e,e=>{let i=n(e);if(i===!1||!j(e,`CallExpression`))return i;let a=A(e.callee);if(!j(a,`MemberExpression`)||!j(A(a.object),`ThisExpression`))return;let o=C(a),s=o?Bo(t,o,e):null;s&&Vo(s,t,n,r)}))},Roe=(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),xo(e,e=>{if(n.cfg&&!H(e,n))return!1;if(o&&r.add(e),!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||!j(A(i.object),`ThisExpression`))return;let s=C(i),c=s?Bo(t,s,e):null;c&&a(c,o||jo(e,n))}))};return a(e,!1),r},zoe=(e,t,n,r)=>{let i=M(e),a=M(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return S(n??t,t=>{if(!j(t,`CallExpression`))return;let i=A(t.callee);if((j(i,`Identifier`)?x(i,r.scopes):j(i,`MemberExpression`)&&j(A(i.object),`ThisExpression`)?Bo(n,C(i)??``,t):null)!==e)return;let a=M(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(jo(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},Ho=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return xo(e,e=>{if(i)return!1;if(No(e,n))return i=!0,!1;if(!j(e,`CallExpression`))return;let a=A(e.callee);if(!j(a,`MemberExpression`)||!j(A(a.object),`ThisExpression`))return;let o=C(a);if(o&&To.has(o))return i=!0,!1;let s=o?Bo(t,o,e):null;if(s&&Ho(s,t,n,r))return i=!0,!1}),i},Uo=(e,t,n=new Set)=>{let r=A(e);if(n.has(r))return null;if(n.add(r),D(r))return r;if(j(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?Uo(e,t,n):null}let i=j(r,`CallExpression`)?A(r.callee):null,a=(j(r,`CallExpression`)&&j(i,`MemberExpression`)&&C(i)===`bind`&&r.arguments?.[0]&&j(A(r.arguments[0]),`ThisExpression`)?A(i.object):null)??r,o=j(a,`MemberExpression`)&&j(A(a.object),`ThisExpression`)?C(a):null;return o?Bo(t,o,r):null},Boe=(e,t,n)=>{let r=Uo(e,t);if(!D(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return xo(i,e=>{if(a)return;if(No(e,n)){a=!0;return}if(!j(e,`CallExpression`))return;let r=A(e.callee);if(j(r,`MemberExpression`)&&j(A(r.object),`ThisExpression`)){let i=C(r);if(i&&To.has(i)){a=!0;return}let o=i?Bo(t,i,e):null;if(o&&!Ho(o,t,n))return;a=!0}}),a},Voe=(e,t,n)=>{let r=new Set,i=new Set;Vo(e,t,e=>{if(j(e,`VariableDeclarator`)){let t=e.init?A(e.init):null,i=j(t,`CallExpression`)?A(t.callee):null;if(t&&(j(t,`NewExpression`)||j(t,`ObjectExpression`)||j(t,`ArrayExpression`)||j(t,`CallExpression`)&&j(i,`Identifier`)&&Poe.has(i.name))){let t=new Set;kt(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(j(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;kt(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(j(e,`AssignmentExpression`)&&j(e.left,`MemberExpression`)){let t=A(e.right),r=j(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(j(e,`CallExpression`))for(let t of e.arguments??[]){let e=A(t),a=j(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},Hoe=e=>{let t=A(e);for(;j(t,`MemberExpression`);){let e=A(t.object);if(j(e,`ThisExpression`))return C(t);t=e}return null},Wo=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!j(n,`ClassBody`))return!0;let r=zo(n);if(r.accessorNames.has(e))return!1;let i=Ro(t,n),a=i?Io(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`)})},Uoe=(e,t)=>{if(!j(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(D(n))return n.parent?.parent===t;if(j(n,`IfStatement`)||j(n,`ConditionalExpression`)||j(n,`LogicalExpression`)||j(n,`SwitchStatement`)||j(n,`TryStatement`)||j(n,`CatchClause`)||j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return!1;n=n.parent}return!1},Woe=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=y(e.identifier),r=t.parent;if(!j(r,`AssignmentExpression`)||r.right!==t||!j(r.left,`MemberExpression`)||!j(A(r.left.object),`ThisExpression`)||!Uoe(r,n))return[];let i=C(r.left);return i&&Wo(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!j(a,`AssignmentExpression`))return null;let o=M(r.declarationNode);if(!o||M(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 So(o,e=>{if(j(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},Go=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=Woe(i,t,n);if(a)return Go(a,t,n,r);if(e.kind===`const`&&e.initializer&&j(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=A(e.initializer);return j(a,`Identifier`)||j(a,`MemberExpression`)?Go(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(j(i,`ThisExpression`))return`this`;if(!j(i,`MemberExpression`))return null;let a=Hoe(i);if(!a){let e=A(i.object),n=C(i);return!j(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Noe.has(n)?null:`${e.name}.${n}`}if(a&&(!j(A(i.object),`ThisExpression`)||!Wo(a,i,n)))return null;let o=Go(i.object,t,n,r),s=C(i);return o&&s?`${o}.${s}`:null},Ko=(e,t,n)=>{let r=A(e);return j(r,`Literal`)?JSON.stringify(r.value):Go(r,t,n)},qo=(e,t,n)=>{let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(j(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=Go(r,t,n);return i?`reference:${i}`:null},Goe=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||It(r,n,t)||se(n,`capture`,n,t))return null;let i=bo({node:n,scopes:t});return i?`options:${i}`:null},Jo=(e,t)=>{let n=A(e);return j(n,`Literal`)?!n.value:j(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Yo=(e,t,n,r)=>{let i=A(e.callee);if(!j(i,`MemberExpression`))return null;let a=C(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Foe}: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=Ko(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||j(a,`SpreadElement`))return null;let o=i===`event`?qo(a,n,r):Ko(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&&j(d,`SpreadElement`))return null;let f=`false`;if(d){let e=A(d);if(Jo(e,n))f=`false`;else if(j(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Co(d,[`capture`],n),t=Goe(d,n);if(!e||e.properties.some(e=>!j(e,`Property`)||P(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`capture`);if(r&&j(r,`Property`)&&Jo(r.value,n))f=`false`;else if(r&&j(r,`Property`)&&j(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},Koe=(e,t,n,r)=>{let i=Yo(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},Xo=(e,t,n)=>{let r=A(e.callee);if(!j(r,`MemberExpression`))return[];let i=Go(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||j(o,`SpreadElement`))return a;let s=qo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},qoe=(e,t,n)=>{let r=e.arguments[2];if(!r||j(r,`SpreadElement`))return null;let i=Co(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`signal`);if(!a||!j(a,`Property`))return null;let o=A(a.value);if(!j(o,`MemberExpression`)||C(o)!==`signal`)return null;let s=Go(o.object,t,n);return s?`abort:${s}`:null},Zo=(e,t,n,r,i)=>{let a=Loe.get(t)??[n.releaseMethodName],o=Yo(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?qoe(e,r,i):null;return c&&s.push(c),ko.has(t)?[...s,...Xo(e,r,i)]:s},Qo=(e,t,n)=>{let r=y(e),i=r.parent,a=j(i,`AssignmentExpression`)&&i.right===r?i.left:j(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?Go(a,t,n):null},Joe=(e,t)=>{let n=A(e.callee);if(j(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&m(e,n.name,Eo)===Do;if(!j(n,`MemberExpression`))return!1;let r=A(n.object);return C(n)===Do&&j(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&bt(e,r.name,Eo)},$o=(e,t,n)=>{let r=A(e.callee);if(j(r,`MemberExpression`)){let i=C(r),a=i?Ioe.get(i):void 0;if(a){let r=Koe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=Xo(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!j(A(r.object),`ThisExpression`)){let e=Go(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=Go(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=Go(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=Fo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!j(a,`SpreadElement`)){let e=Go(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},es=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return xo(e,e=>{if(a||e.range[0]>=r)return;if(j(e,`ThrowStatement`)||j(e,`NewExpression`))return a=!0,!1;if(!j(e,`CallExpression`)||$o(e,n,t).length>0||yo(e,n))return;let o=A(e.callee);if(j(o,`MemberExpression`)){if(j(A(o.object),`ThisExpression`)){let r=C(o),a=r?Bo(t,r,e):null;if(a&&!es(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=x(o,n);if(!(s&&!es(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Yoe=(e,t,n)=>{let r=new Map;return Vo(e,t,e=>{if(!j(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!j(i,`SpreadElement`)?A(i):null;if(!Joe(e,n.scopes)||!j(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||j(o,`SpreadElement`))return;let s=Uo(o,t);if(!D(s))return;let c=new Map;Vo(s,t,e=>{if(j(e,`CallExpression`))for(let r of $o(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!po(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},ts=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!D(e)||r.has(e))return i;r.add(e);let a=null;xo(e,t=>{j(t,`AwaitExpression`)&&M(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;Vo(e,t,i=>{if(!j(i,`CallExpression`)||a!==null&&M(i)===e&&i.range[0]>a)return;let s=es(e,t,n.scopes,i.range[0]),c=A(i.callee);if(j(c,`Identifier`)){let e=ts(x(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(j(c,`MemberExpression`)&&j(A(c.object),`ThisExpression`)){let e=C(c),a=ts(e?Bo(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?[]:$o(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)po(e,r,n)&&i.add(t);return i},ns=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!D(e)||r.has(e))return i;r.add(e);let o=null;xo(e,t=>{j(t,`AwaitExpression`)&&M(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),xo(e,s=>{if(!j(s,`CallExpression`)||o!==null&&M(s)===e&&s.range[0]>o||es(e,t,n.scopes,s.range[0]))return;for(let r of $o(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),po(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!po(e,[s],n))return;let c=A(s.callee),l=j(c,`MemberExpression`)&&j(A(c.object),`ThisExpression`)?C(c):null,u=ns(l?Bo(t,l,s):j(c,`Identifier`)?x(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!po(e,r,n))continue;let a=1;[...r.keys()].every(t=>po(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},Xoe=(e,t,n)=>{let r=new Map;return Vo(e,t,e=>{if(j(e,`CallExpression`))for(let i of $o(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},rs=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(D(n))return null;if(j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return n;n=n.parent}return null},Zoe=(e,t,n)=>{let r=n.scopes,i=new Map;Vo(e,t,e=>{if(!j(e,`CallExpression`))return;if(n.cfg&&!H(e,n))return!1;let a=A(e.callee);if(!j(a,`MemberExpression`))return;let o=C(a),s=o?Oo.get(o):void 0;if(!s)return;let c=Yo(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=>!!rs(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>lo(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},is=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||It(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),is(a,t,n,r)):!1}if(j(i,`MemberExpression`)){let e=C(i),a=A(i.object);if(e!==`current`)return is(a,t,n,r);if(!j(t,`ClassBody`)||!j(a,`MemberExpression`))return!1;let o=C(a),s=A(a.object);if(!o||!j(s,`ThisExpression`))return!1;let c=t.body?.find(e=>Io(e)===o);if(!c||!j(c,`PropertyDefinition`)||c.static||!j(c.value,`CallExpression`)||!E(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?ss(l):null,d=!1;return u&&xo(u,e=>{if(d||e.range[0]>=i.range[0]||!j(e,`AssignmentExpression`))return;let t=A(e.left);j(t,`MemberExpression`)&&j(A(t.object),`ThisExpression`)&&C(t)===o&&(d=!0)}),!d}return!1},as=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||It(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),as(a,t,n,r)):!1}if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(!j(a,`MemberExpression`))return!1;let o=C(a),s=A(a.object);if((o===`select`||o===`selectAll`)&&j(s,`Identifier`)&&(bt(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!j(e,`SpreadElement`)&&is(e,t,n))}return as(a.object,t,n,r)},Qoe=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!j(e,`CallExpression`))return null;let c=A(e.callee),l=j(c,`MemberExpression`)?C(c):null;if(l&&Oo.has(l)&&j(c,`MemberExpression`)){let u=Oo.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=A(c.object),h=is(p,i,s),g=as(p,i,s);for(;;){if(p=A(p),j(p,`CallExpression`)){p=A(p.callee);continue}if(j(p,`MemberExpression`)){p=A(p.object);continue}break}let _=j(p,`Identifier`)?s.symbolFor(p):null,v=_?t.has(_.id):!1,ee=u?Yo(e,u,s,i):null,te=u?Zo(e,l,u,s,i):[],ne=te.flatMap(e=>n.get(e)??[]),re=te.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ie=ne.filter(t=>fo(e,[t],a)).length,ae=rs(e),oe=!!(ae&&ne.some(t=>rs(t)===ae&&fo(e,[t],a))),se=ee?r.get(ee)??1:1,ce=!!(ee&&(fo(e,re,a)||fo(e,ne,a)&&(l===`addEventListener`||oe||ie>=se)));if(!(!f&&!v&&!ce&&!h&&!g))return null;let le=Qo(e,s,i),ue=A(c.object),de=j(ue,`Identifier`)?m(e,ue.name,`react-native`):null,fe=j(ue,`Identifier`)&&(de!==null&&Ao.has(de)||s.isGlobalReference(ue)&&Ao.has(ue.name)),pe=l===`subscribe`&&le?[`returned:unsubscribe:${le}`,`returned:call:${le}`]:(l===`addEventListener`||l===`addListener`)&&fe&&le?[`returned:remove:${le}`]:[];return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:ko.has(l)?ee:null,registrationCount:ko.has(l)?se:1,releaseKeys:u?[...Zo(e,l,u,s,i),...pe]:pe}}let u=Fo(e,s);if(u===`setInterval`){let t=Qo(e,s,i);return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!Boe(e.arguments[0],i,s))return null;let t=Qo(e,s,i);return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},os=e=>(j(e,`MethodDefinition`)||j(e,`PropertyDefinition`))&&D(e.value)?e.value:null,ss=e=>{let t=os(e);return t&&D(t)?t.body??null:null},cs=w({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||!go(n))return;let r=t.body??[],i=r.find(e=>Io(e)===`componentWillUnmount`),a=ts(i?os(i):null,t,e),o=ns(i?os(i):null,t,e);for(let n of r){let r=Io(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=ss(n);if(!i)continue;let s=Voe(i,t,e.scopes),c=Xoe(i,t,e.scopes),l=Zoe(i,t,e),u=Roe(i,t,e),d=[];if(Vo(i,t,n=>{if(e.cfg&&!H(n,e))return!1;let r=Qoe(n,s,c,l,t,e,u.has(n)||zoe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Yoe(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 fo(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}}}})}),ls=(e,t,n={})=>{if(!e||!t)return e===t;let r=A(e),i=A(t);if(r!==e||i!==t)return ls(r,i,n);if(e.type!==t.type)return!1;if(j(e,`ThisExpression`))return!0;if(j(e,`Identifier`)&&j(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(j(e,`PrivateIdentifier`)&&j(t,`PrivateIdentifier`))return e.name===t.name;if(j(e,`Literal`)&&j(t,`Literal`))return e.value===t.value;if(j(e,`MemberExpression`)&&j(t,`MemberExpression`))return e.computed===t.computed?ls(e.object,t.object,n)&&ls(e.property,t.property,e.computed?n:{}):!1;if(j(e,`CallExpression`)&&j(t,`CallExpression`)){if(!ls(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>ls(e,i[t],n)):!1}return!1},$oe=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),ese=/button|link|nav|anchor/i,tse=/(?:button|link|anchor)$/i,us=/^[A-Z]/,nse=[`onClick`,`onPress`],ds=e=>wa(A(e)),fs=(e,t)=>{let n=A(e);if(wa(n))return!0;let r=T(n,t);return r?.kind!==`const`||!r.initializer?!1:wa(A(r.initializer))},ps=(e,t,n=new Set)=>{let r=A(e);if(fs(r,t))return null;if(j(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return fs(e,t)?ps(i,t,n):fs(i,t)?ps(e,t,n):null}if(j(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&j(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),ps(e.initializer,t,n)):r}if(j(r,`ArrowFunctionExpression`)||j(r,`FunctionExpression`)||j(r,`FunctionDeclaration`)){let e=A(r.body);if(!j(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return j(t,`ExpressionStatement`)?t.expression:j(t,`ReturnStatement`)&&t.argument?A(t.argument):null}return r},ms=(e,t)=>!e.value||!j(e.value,`JSXExpressionContainer`)?null:ps(e.value.expression,t),hs=(e,t)=>{let n=F(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(j(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!j(n.value,`JSXExpressionContainer`))return!0;let r=A(n.value.expression);return!j(r,`Literal`)||r.value!==!1},gs=(e,t)=>{let n=F(e.attributes,t);if(!n?.value)return!1;if(j(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!j(n.value,`JSXExpressionContainer`))return!0;let r=A(n.value.expression);return j(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!ds(r)},_s=e=>{if(j(e,`JSXText`))return e.value.trim().length>0;if(j(e,`JSXElement`))return vs(e);if(j(e,`JSXFragment`))return e.children.some(e=>_s(e));if(!j(e,`JSXExpressionContainer`))return!1;let t=A(e.expression);return j(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:ds(t)?!1:j(t,`JSXElement`)?vs(t):j(t,`JSXFragment`)?t.children.some(e=>_s(e)):!0},vs=e=>gs(e.openingElement,`aria-label`)||gs(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>_s(e)),rse=e=>{let t=F(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=Li(t.value);return n!==null&&n<0},ise=(e,t)=>Or(e,t)||hs(e,`hidden`),ase=(e,t)=>{let n=e.openingElement,r=kr(n.name);if(!r)return!1;if(Ei.has(r)){if(!$oe.has(r))return!1}else if(t){if(!us.test(r)||!tse.test(r))return!1}else if(!us.test(r)||!ese.test(r))return!1;return t?r===`a`&&!F(n.attributes,`href`)||hs(n,`disabled`)||hs(n,`isDisabled`)||hs(n,`aria-disabled`)||rse(n)?!1:vs(e):!0},ys=(e,t,n,r)=>{let i=e=>ys(e,t,n,r);if(j(e,`JSXElement`)){if(t&&ise(e.openingElement,r))return!1;if(ase(e,t!==null)){if(!t)return!0;for(let r of nse){let i=F(e.openingElement.attributes,r),a=i?ms(i,n):null;if(a&&ls(t,a))return!0}}return e.children.some(e=>i(e))}return j(e,`JSXFragment`)?e.children.some(e=>i(e)):t?j(e,`JSXExpressionContainer`)?i(e.expression):j(e,`LogicalExpression`)?i(e.left)||i(e.right):j(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},bs=(e,t,n,r)=>{if(!e||!j(e,`JSXElement`))return!1;let i=t?ms(t,n):null;return t&&!i?!1:e.children.some(e=>ys(e,i,n,r))},ose=new Set([`focus`,`select`]),sse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),cse=new Set([`getElementById`,`querySelector`]),lse=new Set([`global`,`globalThis`,`window`]),use=e=>{if(!e)return null;let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return null;let n=A(t.callee);if(!j(n,`MemberExpression`))return null;let r=n.property;return j(r,`Identifier`)?r.name:null},xs=(e,t)=>{let n=use(e);return n!==null&&(ose.has(n)||t&&sse.has(n))},dse=(e,t)=>{let n=A(e);return j(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!j(n,`MemberExpression`)||!j(n.object,`Identifier`)||!j(n.property,`Identifier`)||n.property.name!==`document`?!1:lse.has(n.object.name)&&t.isGlobalReference(n.object)},Ss=e=>{let t=A(e);return j(t,`Identifier`)||j(t,`Literal`)?!0:j(t,`TemplateLiteral`)&&t.expressions.every(e=>Ss(e))},fse=(e,t)=>{if(!j(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!j(n.id,`Identifier`)||!n.init)return null;let r=A(n.init);if(!j(r,`CallExpression`)||r.arguments.length!==1||j(r.arguments[0],`SpreadElement`)||!Ss(r.arguments[0]))return null;let i=A(r.callee);return!j(i,`MemberExpression`)||!j(i.property,`Identifier`)||!cse.has(i.property.name)||!dse(i.object,t)?null:n.id.name},Cs=e=>j(e,`ReturnStatement`)?e.argument===null:!j(e,`BlockStatement`)||e.body.length!==1?!1:Cs(e.body[0]),pse=e=>{if(!j(e,`IfStatement`)||e.alternate||!Cs(e.consequent))return!1;let t=A(e.test),n=j(t,`ChainExpression`)?t.expression:t;if(!j(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=A(n.callee),i=j(r,`MemberExpression`)?A(r.object):null;return j(r,`MemberExpression`)&&j(r.property,`Identifier`)&&r.property.name===`closest`&&j(i,`MemberExpression`)&&j(i.object,`Identifier`)&&j(i.property,`Identifier`)&&i.property.name===`target`&&j(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},mse=(e,t)=>{if(!j(e,`ExpressionStatement`))return!1;let n=A(e.expression);if(!j(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=A(n.callee);if(!j(r,`MemberExpression`))return!1;let i=A(r.object);return j(i,`Identifier`)&&i.name===t&&j(r.property,`Identifier`)&&r.property.name===`focus`},hse=(e,t,n)=>{if(!e)return!1;if(xs(e,n))return!0;if(!j(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!pse(r[0]),a=r[i],o=a?fse(a,t):null;return o?r.length===i+2&&mse(r[i+1],o):i>0?!1:r.every(e=>j(e,`ExpressionStatement`)&&xs(e.expression,n))},ws=(e,t)=>wa(e)&&(!j(e,`Identifier`)||t.isGlobalReference(e)),Ts=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ConditionalExpression`)){let e=A(r.consequent),i=A(r.alternate),a=null;return ws(e,t)&&(a=Ts(i,t,n)),ws(i,t)&&(a=Ts(e,t,n)),a?{...a,isConditional:!0}:null}if(j(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),Ts(e.initializer,t,n))}return j(r,`ArrowFunctionExpression`)||j(r,`FunctionExpression`)||j(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},Es=(e,t)=>{let n=Ts(e,t);return n?hse(n.handlerFunction.body??null,t,!n.isConditional):!1},Ds=(e,t)=>!e.value||!j(e.value,`JSXExpressionContainer`)?!1:Es(e.value.expression,t),Os=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=yr(t);return n!==null&&hi.has(n)},ks=e=>{if(j(e,`Identifier`)||j(e,`PrivateIdentifier`))return e.name},As=e=>{if(j(e,`FunctionExpression`)||j(e,`ArrowFunctionExpression`))return e},gse=(e,t)=>{for(let n of e.body){if(!j(n,`MethodDefinition`)&&!j(n,`PropertyDefinition`)||ks(n.key)!==t)continue;let e=As(n.value);if(e)return e}},js=(e,t)=>{for(let n of e.properties){if(!j(n,`Property`)||ks(n.key)!==t)continue;let e=As(n.value);if(e)return e}},Ms=e=>{let t=ks(e.property);if(t===void 0)return;let n=e.object;if(j(n,`ThisExpression`)){let n=e.parent;for(;n;){if(j(n,`ClassBody`))return gse(n,t);if(j(n,`ObjectExpression`)){let e=js(n,t);if(e)return e}n=n.parent}return}if(j(n,`Identifier`)){let e=O(n,n.name);if(j(e?.initializer,`ObjectExpression`))return js(e.initializer,t)}},_se=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Ns=e=>{if(!e)return!1;let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return!1;let n=t.callee;return!j(n,`MemberExpression`)||!j(n.property,`Identifier`)?!1:_se.has(n.property.name)},Ps=e=>{if(!e)return!1;if(Ns(e))return!0;if(j(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!j(e,`ExpressionStatement`)||!Ns(e.expression))return!1;return!0}return!1},Fs=e=>{if(!e.value||!j(e.value,`JSXExpressionContainer`))return!1;let t=A(e.value.expression);return j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)?Ps(t.body):j(t,`MemberExpression`)?Ps(Ms(t)?.body):!1},Is=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],Ls=[`onClick`,`onClickCapture`],vse=new Set([...Ls,...Is].map(e=>e.toLowerCase())),yse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),bse=(e,t)=>{let n=A(e);if(j(n,`ObjectExpression`))return n;if(!j(n,`Identifier`))return null;let r=T(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=A(r.initializer);return j(i,`ObjectExpression`)?i:null},Rs=(e,t,n,r)=>{let i=bse(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(j(e,`SpreadElement`)){if(!Rs(e.argument,t,n,r)){a=!1;break}continue}if(!j(e,`Property`)){a=!1;break}let i=P(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(yse.has(o)){a=!1;break}vse.has(o)&&n.set(o,e.value)}return r.delete(i),a},xse=(e,t)=>{let n=new Map;for(let r of e)if(j(r,`JSXSpreadAttribute`)&&!Rs(r.argument,t,n,new Set))return null;return n},Sse=new Set([`tr`,`td`,`th`,`canvas`]),Cse=new Set([`motion`,`styled`]),wse=e=>{let t=e.name;if(!j(t,`JSXMemberExpression`))return null;let n=t.object;if(!j(n,`JSXIdentifier`)||!Cse.has(n.name))return null;let r=t.property.name;return r&&Ei.has(r)?r:null},Tse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Ese=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!j(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Tse.has(r.toLowerCase()))},Dse=e=>{if(!j(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!j(e,`MemberExpression`))return null;let t=e.property;return j(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},zs=e=>{if(!e||typeof e!=`object`)return!1;if(Dse(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`&&zs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&zs(n))return!0}return!1},Bs=e=>{let t=A(e);if(j(t,`Identifier`)){let e=O(t,t.name);if(!e?.initializer)return null;t=A(e.initializer)}return j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`)?t:null},Ose=e=>!e.value||!j(e.value,`JSXExpressionContainer`)?null:Bs(e.value.expression),kse=e=>{let t=Ose(e);return t?zs(t.body??null):!1},Ase=(e,t)=>e===`li`&&!!(F(t.attributes,`onMouseEnter`)||F(t.attributes,`onMouseOver`)),Vs=w({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=oi(e.settings),n=jt(e.filename);return{JSXOpeningElement(r){if(n)return;let i=wse(r)??Cr(r,e.settings);if(!Ei.has(i)||i===`label`||!Sse.has(i)&&Ii(i,r))return;let a=xse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=F(r.attributes,`onClick`)??F(r.attributes,`onClickCapture`),c=Ls.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Fs(s)||s&&Ds(s,e.scopes)||c&&Es(c,e.scopes))return;let l=c?Bs(c):null;l&&zs(l.body??null)||Ese(r)||Ase(i,r)||s&&kse(s)||bs(r.parent,null,e.scopes,e.settings)||s&&bs(r.parent,s,e.scopes,e.settings)||Or(r,e.settings)||Os(r)||Is.some(e=>F(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`."})}}}}),Hs=ur({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.`}),Us=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ws=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Us(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Gs=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],Ks=(e,t,n,r)=>{if(!j(t,`MemberExpression`))return;let i=C(t),a=B(t.object,r);i&&a&&(Us(e.memberMutationCandidatesByReceiverIdentity,a,n),Ws(e,a,i,n))},jse=(e,t,n)=>{if(j(t,`AssignmentExpression`)){let r=A(t.left),i=B(r,n);i&&Us(e.receiverAssignmentCandidatesByIdentity,i,t),Ks(e,r,t,n)}else j(t,`UnaryExpression`)&&t.operator===`delete`&&Ks(e,A(t.argument),t,n);if(!j(t,`CallExpression`))return;let r=A(t.callee);if(!j(r,`MemberExpression`)||C(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(j(i,`Literal`)&&typeof i.value==`string`&&a&&!j(a,`SpreadElement`)){let r=B(a,n);r&&(Us(e.memberMutationCandidatesByReceiverIdentity,r,t),Ws(e,r,i.value,t))}},qs=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=A(e.callee);if(!j(r,`MemberExpression`))return!1;let i=A(r.object);return C(r)===`defineProperty`&&j(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&j(e.arguments[1],`Literal`)&&e.arguments[1].value===t},Mse=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Js=(e,t)=>{let n=A(e);return j(n,`MemberExpression`)&&C(n)===t?n.object:null},Ys=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Xs=(e,t)=>{let n=j(e,`FunctionDeclaration`)?e.id:j(e.parent,`VariableDeclarator`)&&e.parent.init===e&&j(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(!j(r,`CallExpression`)||A(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},Nse=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!j(i,`MethodDefinition`)||!j(a,`MethodDefinition`)||i.parent!==a.parent||!j(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Zs=(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(Nse(o,s,e,n))return!0;if(Ys(o,s)){let t=Xs(s,n);return!t&&j(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Zs(e,t,n,a)))}if(Ys(s,o)){let r=Xs(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Zs(e,t,n,a)))}let r=Xs(o,n),i=Xs(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Zs(e,t,n,a)||r.some(e=>Zs(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},Pse=(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},Qs=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&D(A(i))?A(i):null},$s=(e,t,n,r)=>tc(e,n).some(e=>e.callExpression!==t&&Zs(e.callExpression,t,n)&&nc(e.callExpression,e.argumentIndex,n,r,new Map)),Fse=(e,t,n,r)=>{let i=Qs(A(e),n);if(!i||!D(i))return!1;let a=[];return S(i.body,e=>{if(e!==i.body&&D(e))return!1;j(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let i=B(e.argument,n);if(!i)return!1;let a=A(e.argument),o=j(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&$s(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Js(j(r,`AssignmentExpression`)?r.left:j(r,`UnaryExpression`)?r.argument:r,t);return j(r,`CallExpression`)&&(i=qs(r,t,n)),i&&Zs(r,e,n)})})},ec=new WeakMap,tc=(e,t,n=new Set)=>{let r=ec.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 tc(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,A(t)===e?(e=t,r=!0):j(t,`Property`)&&t.value===e&&j(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(j(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||j(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||j(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(j(i,`VariableDeclarator`)&&i.init===e&&j(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(j(i,`AssignmentExpression`)&&i.right===e){let e=A(i.left),n=j(e,`Identifier`)?e:j(e,`MemberExpression`)&&j(A(e.object),`Identifier`)?A(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(j(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 ec.set(e,c),c},Ise=(e,t,n)=>{if(!D(e))return!1;if(j(e,`ArrowFunctionExpression`)&&!j(e.body,`BlockStatement`))return B(e.body,n)===t;let r=[];return S(e.body,t=>{if(t!==e.body&&D(t))return!1;j(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>j(e,`ReturnStatement`)&&e.argument&&B(e.argument,n)===t)},Lse=(e,t)=>{let n=e;for(;n.parent&&A(n.parent)===n;)n=n.parent;let r=n.parent;if(!j(r,`VariableDeclarator`)||r.init!==n||!j(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},nc=(e,t,n,r,i)=>{let a=Qs(e,n);if(!a||!D(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(!j(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)||tc(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?nc(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!Ise(a,l,n))return!1;let u=Lse(e,n);return u?tc(u,n).some(e=>nc(e.callExpression,e.argumentIndex,n,r,i)):!1},Rse=(e,t,n,r,i,a=[],o)=>{if(Fse(t,n,i,e))return!0;let s=B(t,i),c=A(t),l=j(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&$s(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Gs(e,s,n):[],...a.flatMap(t=>Gs(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!Mse(i.scopes.scopeFor(e),u)&&!Zs(e,r,i))continue;let t=null;if(j(e,`AssignmentExpression`)){if(s!==null&&B(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Zs(e,r,i)){d=!0;break}continue}t=Js(e.left,n)}else if(j(e,`UnaryExpression`)&&e.operator===`delete`)t=Js(e.argument,n);else if(j(e,`CallExpression`)&&qs(e,n,i)){let n=e.arguments[0];t=n&&!j(n,`SpreadElement`)?n:null}if(!t)continue;let c=B(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Zs(e,r,i)&&(d=!0))}return d||Pse(p,r,i)},rc=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>jse(t,n,e),hasProvenMutation:(n,r,i,a,o)=>Rse(t,n,r,i,e,a,o)}},ic=(e,t)=>!!(e&&j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&e.property.name===t),ac=e=>Oi(e)||(e.kind!==`let`&&e.kind!==`var`||!j(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),oc=e=>j(e,`Identifier`)?e.name:j(e,`Literal`)&&typeof e.value==`string`?e.value:null,sc=e=>{if(!j(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&j(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!j(n,`Property`)||!j(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!j(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!j(a,`TSTypeLiteral`))return null;let o=oc(n.key);if(!o)return null;for(let e of a.members)if(j(e,`TSPropertySignature`)&&oc(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},cc=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&j(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>j(e,`TSTypeParameter`)&&j(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},lc=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},uc=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=A(e.callee);if(j(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=A(n.object);return j(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},zse=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(`.`)),Bse=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,dc=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),fc=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),Vse=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),pc=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],Hse=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:zse.has(e)||Bse.test(e),mc=(e,t,n)=>{if(j(e,`TSTypeReference`)){if(!j(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return Hse(r,n)&&!lc(e,r,t)&&!cc(e,r)}if(!j(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(j(i,`TSNullKeyword`)||j(i,`TSUndefinedKeyword`))){if(!mc(i,t,n))return!1;r=!0}return r},Use=(e,t)=>!j(e,`TSTypeReference`)||!j(e.typeName,`Identifier`)||!mc(e,t,`dom-event-target`)?null:e.typeName.name,hc=(e,t,n)=>j(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),gc=(e,t,n=new Set)=>{let r=A(e);if(hc(r,`window`,t))return[`Window`,`EventTarget`];if(hc(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(j(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=sc(e),a=i?Use(i,t):null;if(a)return pc(a);let o=ac(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),gc(o,t,s)}if(j(r,`NewExpression`)){let e=A(r.callee);if(j(e,`Identifier`)&&dc.has(e.name))return pc(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(j(r,`MemberExpression`)){let e=C(r);if(e===`body`||e===`documentElement`)return pc(`HTMLElement`)}if(j(r,`CallExpression`)){if(uc(r,t))return pc(`MediaQueryList`);let e=A(r.callee),i=j(e,`MemberExpression`)?C(e):null;if(i===`matchMedia`&&j(e,`MemberExpression`)&&gc(e.object,t,n).includes(`Window`))return pc(`MediaQueryList`);if(i===`createElement`)return pc(`HTMLElement`);if(i===`createElementNS`)return pc(`SVGElement`);if(i&&fc.has(i))return pc(`Element`)}return[`EventTarget`]},_c=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...dc]).some(t=>vc(e,t,n,new Set)),Wse=(e,t,n)=>{let r=e,i=!1;for(;j(r,`TSAsExpression`)||j(r,`TSTypeAssertion`)||j(r,`TSSatisfiesExpression`);){if(mc(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(j(a,`Identifier`)){let e=t.symbolFor(a),n=e?Oi(e):null;if(!n)return!1;a=A(n)}return i&&j(a,`Identifier`)||i&&j(a,`MemberExpression`)||i&&j(a,`ObjectExpression`)?!1:i&&j(a,`NewExpression`)?_c(a.callee,n,t):i},Gse=e=>{if(!j(e,`MemberExpression`)||!j(A(e.object),`ThisExpression`))return null;let t=C(e);if(!t)return null;let n=e.parent;for(;n&&!j(n,`ClassBody`);){if((j(n,`FunctionDeclaration`)||j(n,`FunctionExpression`))&&!j(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!j(e,`PropertyDefinition`)||e.static)&&oc(e.key)===t)return e;return null},Kse=e=>{if(!j(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&j(t,`TSTypeAnnotation`)?t.typeAnnotation:null},qse=(e,t,n)=>{if(!j(e,`CallExpression`))return null;let r=A(e.callee);if(!j(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!D(a)||a.async||a.generator?null:(n.add(i.id),a)},vc=(e,t,n,r)=>{let i=A(e);if(j(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=Oi(e);return a?(r.add(e.id),vc(a,t,n,r)):!1}if(!j(i,`MemberExpression`)||C(i)!==t)return!1;let a=A(i.object);return hc(a,`window`,n)||hc(a,`globalThis`,n)},Jse=(e,t,n)=>{let r=A(e);for(;j(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Oi(e);if(!i)return!1;n.add(e.id),r=A(i)}if(!j(r,`CallExpression`)||!E(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!E(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!j(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&mc(i,t,`dom-event-target`))},yc=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(Wse(e,n,t))return!0;let a=A(e);if(j(a,`Identifier`)){if(i&&(hc(a,`document`,n)||hc(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=sc(e);if(o&&mc(o,n,t))return!0;let s=ac(e);return s?(r.add(e.id),yc(s,t,n,r)):!1}if(j(a,`NewExpression`))return _c(a.callee,t,n);if(j(a,`CallExpression`)){let e=A(a.callee);if(i&&j(e,`MemberExpression`)&&fc.has(C(e)??``)&&yc(e.object,t,n,r))return!0;let o=qse(a,n,r);return!!(o&&ln(o,n,e=>yc(e,t,n,new Set(r)),void 0,`every`))}if(j(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(j(e,`Literal`)&&e.value===null)&&!(j(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>yc(e,t,n,new Set(r)))}if(!j(a,`MemberExpression`))return!1;let o=Gse(a);if(o&&j(o,`PropertyDefinition`)){let e=Kse(o);if(e&&mc(e,n,t)||o.value&&yc(o.value,t,n,r))return!0}if(!i)return!1;let s=C(a);if(s===`current`)return Jse(a.object,n,r);let c=A(a.object);return s===`document`&&(hc(c,`window`,n)||hc(c,`globalThis`,n))?!0:s!==null&&Vse.has(s)&&yc(c,t,n,r)},Yse=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Xse=e=>Yse.test(On(e??``)),bc=(e,t)=>{let n=A(e);return j(n,`Identifier`)?t.has(n.name):j(n,`SpreadElement`)?bc(n.argument,t):j(n,`ObjectExpression`)?n.properties.some(e=>j(e,`Property`)?bc(e.value,t):j(e,`SpreadElement`)&&bc(e.argument,t)):j(n,`ArrayExpression`)?n.elements.some(e=>e&&bc(e,t)):j(n,`ConditionalExpression`)?bc(n.consequent,t)||bc(n.alternate,t):j(n,`LogicalExpression`)?bc(n.left,t)||bc(n.right,t):j(n,`SequenceExpression`)?n.expressions.some(e=>bc(e,t)):!1},xc=(e,t,n)=>{let r=A(t);if(j(e,`Identifier`)){bc(r,n)&&n.add(e.name);return}if(j(e,`AssignmentPattern`)){xc(e.left,r,n);return}if(j(e,`ObjectPattern`)&&j(r,`ObjectExpression`)){for(let t of e.properties){if(!j(t,`Property`))continue;let e=oc(t.key);if(!e)continue;let i=r.properties.find(t=>j(t,`Property`)&&oc(t.key)===e);j(i,`Property`)&&xc(t.value,i.value,n)}return}if(j(e,`ArrayPattern`)&&j(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&xc(i,e,n)}},Zse=(e,n,r)=>{if(!j(e,`CallExpression`)||!r.filename)return!1;let i=A(e.callee);if(!j(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,s=o.parent,c=t(o);if(!c||!j(s,`ImportDeclaration`)||typeof s.source.value!=`string`)return!1;let l=oe(r.filename,s.source.value,c);if(!l||!D(l))return!1;let u=l.params[n];if(!j(u,`Identifier`))return!1;let d=new Set([u.name]),f=!1;return S(l.body,e=>{if(f)return!1;if(j(e,`VariableDeclarator`)&&e.init){xc(e.id,e.init,d);return}if(j(e,`AssignmentExpression`)&&j(e.left,`Identifier`)&&bc(e.right,d)){d.add(e.left.name);return}if(j(e,`CallExpression`)){let t=A(e.callee);(j(t,`MemberExpression`)&&C(t)===`preventDefault`&&bc(t.object,d)||e.arguments.some(e=>!j(e,`SpreadElement`)&&bc(e,d)))&&(f=!0);return}if(j(e,`NewExpression`)&&e.arguments.some(e=>!j(e,`SpreadElement`)&&bc(e,d))){f=!0;return}let t=j(e,`AssignmentExpression`)?A(e.left):null;j(e,`AssignmentExpression`)&&(j(t,`MemberExpression`)&&bc(t.object,d)||bc(e.right,d))&&(f=!0)}),!f},Qse=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),$se=new Set([`catch`,`finally`,`then`]),Sc=(e,t,n=new Set)=>{let r=(e,n)=>{let i=A(e);if(D(i))return i.async;if(!j(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=A(e);if(j(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),Sc(e.initializer,t,r)}if(j(i,`NewExpression`)){let e=A(i.callee);return j(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(j(a,`Identifier`))return r(a,n);if(!j(a,`MemberExpression`))return!1;let o=A(a.object);return $se.has(C(a)??``)?Sc(a.object,t,n):!!(Qse.has(C(a)??``)&&j(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Cc=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),ece=new Set([`catch`,`finally`,`then`]),wc=e=>{if(!D(e))return!1;let t=!1;return S(e,n=>{if(t||n!==e&&D(n))return!1;j(n,`CallExpression`)&&j(n.callee,`MemberExpression`)&&C(n.callee)===`preventDefault`&&(t=!0)}),t},tce=(e,t)=>{let n=!1;return S(e,e=>{if(n)return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&j(e.left,`Identifier`)&&e.left.name===t&&wc(e.right)&&(n=!0)}),n},nce=e=>{if(!e)return!1;if(wc(e))return!0;if(j(e,`Identifier`)){let t=O(e,e.name);return t?wc(t.initializer??void 0)?!0:tce(t.scopeOwner,e.name):!1}if(j(e,`MemberExpression`)){let t=Ms(e);return t?wc(t):!1}return!1},Tc=(e,t)=>{if(!e)return;let n=A(e);if(D(n))return n;if(j(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&D(r))return r;let i=O(n,n.name),a;return e&&i&&S(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(j(r,`AssignmentExpression`)&&r.operator===`=`&&j(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=A(r.right);a=D(e)?e:void 0}}),a}return j(n,`MemberExpression`)?Ms(n):void 0},rce=(e,t,n)=>{if(!Zse(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(A(e)===r||j(e,`UnaryExpression`)&&e.operator===`!`||j(e,`LogicalExpression`)){r=e;continue}return j(e,`IfStatement`)&&e.test===r||j(e,`ConditionalExpression`)&&e.test===r||j(e,`WhileStatement`)&&e.test===r||j(e,`DoWhileStatement`)&&e.test===r||j(e,`ForStatement`)&&e.test===r}return!1},ice=(e,t)=>{let n=Tc(e,t);if(!n){let n=e?A(e):void 0;if(!n||!j(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=A(e);if(j(r,`Identifier`)){if(Cc.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=Oi(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!j(r,`MemberExpression`))return!1;let a=A(r.object);return Cc.has(C(r)??``)&&j(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&A(n.parent)===A(n);)n=n.parent;let r=n.parent;if(j(r,`NewExpression`)){let e=A(r.callee);return r.arguments.some(e=>e===n)&&j(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!j(r,`CallExpression`))return!1;if(A(r.callee)===A(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=A(r.callee);if(i(a))return!1;if(j(a,`Identifier`)||!j(a,`MemberExpression`))return!0;let o=C(a);return!(ece.has(o??``)&&Sc(a.object,t.scopes)||o===`addEventListener`&&yc(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!D(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=j(c,`AssignmentPattern`)?c.left:c;if(!j(l,`Identifier`))return!(i&&j(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=A(e);if(!j(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=A(e);if(p(n))return!0;if(j(n,`SpreadElement`))return m(n.argument);if(j(n,`MemberExpression`)){let e=A(n.object);if(j(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=C(n);if(j(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>j(e,`Property`)&&ks(e.key)===r);return!!(j(t,`Property`)&&m(t.value))}if(j(e,`ArrayExpression`)&&j(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return j(n,`ObjectExpression`)?n.properties.some(e=>j(e,`Property`)?m(e.value):j(e,`SpreadElement`)&&m(e.argument)):j(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):j(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):j(n,`LogicalExpression`)?m(n.left)||m(n.right):j(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=A(n);if(j(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(j(e,`AssignmentPattern`)){h(e.left,r);return}if(j(e,`RestElement`)&&j(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(j(e,`ObjectPattern`)&&j(r,`ObjectExpression`)){for(let t of e.properties){if(j(t,`RestElement`)){h(t,r);continue}if(!j(t,`Property`))continue;let e=ks(t.key);if(!e)continue;let n=r.properties.find(t=>j(t,`Property`)&&ks(t.key)===e);j(n,`Property`)&&h(t.value,n.value)}return}if(j(e,`ArrayPattern`)&&j(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return S(e.body,n=>{if(g||n!==e.body&&D(n)&&!a(n))return!1;if(j(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(j(n,`AssignmentExpression`)&&m(n.right)){if(j(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(j(n,`AssignmentExpression`)){let e=A(n.left),t=A(n.right);if(j(e,`MemberExpression`)&&C(e)===`returnValue`&&p(e.object)&&j(t,`Literal`)&&t.value===!1){g=!0;return}}if(j(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(j(n,`NewExpression`)){n.arguments.some(e=>!j(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!j(n,`CallExpression`))return;let r=A(n.callee);if(j(r,`MemberExpression`)&&C(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=Tc(n.callee,t);(!s&&!rce(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},Ec=(e,t)=>!!e.properties?.some(e=>j(e,`Property`)&&j(e.key,`Identifier`)&&e.key.name===`passive`&&j(e.value,`Literal`)&&e.value.value===t),Dc=w({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(Xse(e.filename))return In;let t=rc(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=A(n.callee);if(!ic(a,`addEventListener`)||!yc(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,gc(a.object,e.scopes),t=>yc(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!j(o,`Literal`)||typeof o.value!=`string`||!pte.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||j(c,`SpreadElement`))return;let l=Tc(c,e)??c,u=r.get(l);if(u===void 0&&(u=nce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=ice(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!j(f,`ObjectExpression`)||Ec(f,!1)||Ec(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),ic(A(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),Oc=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},kc=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},Ac=e=>Oc(e)||kc(e),ace=(e,t)=>{let n=t?Rn(e):e;return j(n,`Identifier`)?n.name:j(n,`MemberExpression`)&&j(n.property,`Identifier`)?n.property.name:null},jc=(e,t=!1)=>{let n=y(e);for(;;){let e=n.parent;if(!e||!j(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=ace(e.callee,t);if(!r||!Ln.has(r))return n;n=y(e)}},oce=(e,t)=>{let n=jc(e,t),r=n.parent;return r&&j(r,`VariableDeclarator`)&&j(r.id,`Identifier`)&&r.init===n&&Ac(r.id.name)?r.id.name:null},Mc=(e,t=!1)=>(j(e,`FunctionDeclaration`)||j(e,`FunctionExpression`))&&e.id?Ac(e.id.name)?e.id.name:null:oce(e,t),Nc=e=>j(e,`MemberExpression`)&&!e.computed&&j(e.property,`Identifier`)?e.property.name:null,sce=[`react`,`use-context-selector`,`react-tracked`],Pc=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!j(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!sce.includes(t.source.value)?null:t.source.value},Fc=e=>Pc(e)!==null&&!!(e&&(j(e.declarationNode,`ImportDefaultSpecifier`)||j(e.declarationNode,`ImportNamespaceSpecifier`))),cce=(e,t)=>{if(!j(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!j(n.declarationNode,`VariableDeclarator`)||!j(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!j(r,`Property`)||P(r,{allowComputedString:!0})!==`createContext`)return!1;let i=A(n.initializer);return j(i,`Identifier`)&&Fc(T(i,t))},lce=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){if(cce(n,t))return!0;let e=T(n,t);return Pc(e)!==null&&!!(e&&rt(e.declarationNode)===`createContext`)}if(!j(n,`MemberExpression`)||(Nc(n)??(n.computed&&j(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=A(n.object);return j(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Fc(T(r,t)):!1},Ic=(e,t)=>{let n=A(e);return j(n,`CallExpression`)&&lce(n.callee,t)},Lc=(e,t)=>{let n=new Set;if(!j(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(j(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!j(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!j(r,`VariableDeclarator`)||!j(r.id,`Identifier`)||!r.init||!k(r.init)||!Ic(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Rc=e=>{if(j(e,`FunctionDeclaration`)&&j(e.id,`Identifier`))return e.id;let t=y(e),n=t.parent;if(j(n,`VariableDeclarator`)&&j(n.id,`Identifier`))return n.id;if(j(n,`AssignmentExpression`)&&n.right===t&&j(n.left,`Identifier`))return n.left;if(j(n,`CallExpression`)){let e=n.parent;if(j(e,`VariableDeclarator`)&&j(e.id,`Identifier`))return e.id}return null},zc=e=>Rc(e)?.name??null,Bc=(e,t)=>{let n=Rc(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[]},uce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Vc=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(j(t,`VariableDeclaration`))return t.kind===`const`;if(!uce.has(t.type))return!1;t=t.parent??null}return!1},Hc=(e,t)=>{if(!j(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=rt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},dce=(e,t)=>{if(!Hc(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Me(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Uc=(e,t,n,r)=>{if(!j(e,`JSXIdentifier`))return!1;if(r&&Hc(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},Wc=(e,t,n)=>j(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Uc(e.object,t,n,!0):dce(e,n)||Uc(e,t,n,!1),Gc="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.",Kc=new Set([`flatMap`,`map`]),fce=new Set([`forwardRef`,`memo`]),pce=new Set([`useCallback`,`useMemo`]),mce=new Set([`createElement`]),qc=e=>{let t=A(e);return j(t,`ObjectExpression`)||j(t,`ArrayExpression`)||j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`)},Jc=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&j(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&_e(n,e.scopeOwner)?!0:!!(e.initializer&&j(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},hce=e=>D(e.scopeOwner)?e.scopeOwner:M(e.scopeOwner),gce=(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},Yc=e=>{let t=jc(e);return!!(t.parent&&j(t.parent,`ExportDefaultDeclaration`))},_ce=e=>{if(!j(e,`FunctionExpression`)||!e.id)return!1;let t=y(e);if(jc(e)!==t)return!1;let n=t.parent;return!(n&&j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`))},vce=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=A(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),j(a,`ConditionalExpression`)){let e=A(a.test);j(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(j(a,`LogicalExpression`)){let e=A(a.left);if(j(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(j(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(j(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(j(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(j(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(j(e,`SpreadElement`)?e.argument:e);continue}if(j(a,`CallExpression`)&&E(a,mce,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&j(e,`ObjectExpression`))for(let t of e.properties){if(!j(t,`Property`)||t.computed)continue;let e=t.key;(j(e,`Identifier`)&&e.name===`children`||j(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(j(a,`Identifier`)){let e=O(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Vc(e)&&Jc(e,a)&&M(e.bindingIdentifier)===M(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(j(a,`JSXElement`)||j(a,`JSXFragment`)){r.push(...a.children);continue}j(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Xc=(e,t,n)=>ln(t,n.scopes,t=>vce(t,e,n),n.cfg),yce=(e,t,n)=>e.arguments[0]===t&&E(e,pce,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(j(e.callee,`MemberExpression`)&&Kc.has(C(e.callee)??``)),Zc=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=x(e.callee,n.scopes);if(!i||!D(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!j(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=y(e.identifier),r=t.parent;return!!(r&&j(r,`CallExpression`)&&r.callee===t&&M(r)===i&&_e(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Xc(r,i,n))}))return!1;let o=M(e);return!!(o&&(Mc(o)!==null||Yc(o))&&Xc(e,o,n))},bce=(e,t)=>{let n=Bc(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=y(e.identifier),r=n.parent;return!r||!j(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&E(r,fce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:yce(r,n,t)||!Zc(r,n,t)})},xce=(e,t)=>{let n=y(e),r=n.parent;if(!r||!j(r,`CallExpression`))return!1;let i=M(r);return!i||Mc(i)===null&&!Yc(i)?!1:r.arguments[0]===n&&j(r.callee,`MemberExpression`)&&Kc.has(C(r.callee)??``)&&Xc(r,i,t)?!0:r.callee===n&&Xc(r,i,t)||r.arguments.some(e=>e===n)&&Zc(r,n,t)},Qc=w({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)&&H(t,e),n=new Set;return{Program(t){n=Lc(t,e.scopes)},JSXOpeningElement(r){if(!Wc(r.name,n,e.scopes))return;let i=M(r);if(!i)return;let a=xce(i,e),o=Yc(i);if((_ce(i)||bce(i,e))&&!a&&!o||Mc(i)===null&&!o&&!a)return;let s=V(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!j(c,`JSXExpressionContainer`))return;let l=A(c.expression);if(!j(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Yte(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:uee(n.identifier)}))).toSorted((e,t)=>gce(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!qc(d.assignedExpression))return;e.report({node:s,message:Gc});return}let f=O(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Jc(f,l)&&hce(f)===i&&qc(f.initializer)&&e.report({node:s,message:Gc})}}}}),Sce=[`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`],$c=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`:Sce.find(t=>e===t||e.startsWith(`${t}/`))??null,Cce=/[\p{L}\p{Nd}]/u,el=e=>Cce.test(e),tl=e=>mi.has(e),nl=(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},U=e=>{let t=[],n=0;for(let r of nl(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},wce=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Tce=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),rl=e=>e.toLowerCase()===`hidden`,Ece=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=U(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},Dce=e=>{let t=F(e.attributes,`className`)??F(e.attributes,`class`);if(!t)return!1;let n=L(t);return n===null?t.value&&j(t.value,`JSXExpressionContainer`)&&j(t.value.expression,`TemplateLiteral`)?Ece(t.value.expression).some(rl):!1:U(n).some(rl)},Oce=e=>{let t=F(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(j(n,`Literal`))return n.value!==`false`&&!!n.value;if(j(n,`JSXExpressionContainer`)){let e=A(n.expression);if(j(e,`Literal`))return!!e.value}return!0},kce={display:`none`,visibility:`hidden`},Ace=e=>{let t=F(e.attributes,`style`);if(!t?.value||!j(t.value,`JSXExpressionContainer`))return!1;let n=A(t.value.expression);if(!j(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!j(e,`Property`)||e.computed)continue;let t=e.key,n=j(t,`Identifier`)?t.name:j(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=kce[n];if(!r)continue;let i=A(e.value);if(j(i,`Literal`)&&i.value===r)return!0}return!1},il=(e,t)=>Or(e,t)||Oce(e)||Ace(e),jce=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=F(t.attributes,`type`),r=n?yr(n):null;return!r||r.toLowerCase()!==`file`||!Dce(t)?!1:!!F(t.attributes,`ref`)},Mce=[`link`,`canvas`],Nce=new Set([`alt`,`aria-label`,`aria-labelledby`]),al=`label`,Pce=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??[]}},ol=(e,t)=>{let n=new Set(t);for(let t of e){if(j(t,`JSXSpreadAttribute`))return!0;if(!j(t,`JSXAttribute`)||!j(t.name,`JSXIdentifier`))continue;let e=gn(t.name);if(e&&(Nce.has(e)||n.has(e)))return t.value?j(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},sl=e=>{if(!e?.value)return!1;let t=e.value;if(j(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(j(t,`JSXExpressionContainer`)){let e=A(t.expression);if(j(e,`JSXEmptyExpression`))return!1;if(j(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(j(e,`TemplateLiteral`)){let t=ot(e);if(t!==null)return t.trim().length>0}return!0}return!0},Fce=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!j(r,`JSXAttribute`))&&gn(r.name)?.toLowerCase()===n)return r}},cl=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(j(r,`SpreadElement`))return null;let e=A(r);if(j(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(j(e,`TemplateLiteral`)){let t=ot(e);if(t===null)return null;n.push(t);continue}if(j(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||j(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(j(e,`ArrayExpression`)){let r=cl(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},ll=(e,t)=>{if(j(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!j(e,`MemberExpression`))return!1;let n=A(e.object);return j(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},ul=(e,t)=>{let n=A(e);if(j(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(j(n,`TemplateLiteral`)){let e=ot(n);return e===null||e.trim().length>0}if(j(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(j(n,`UnaryExpression`)&&n.operator===`void`||j(n,`UnaryExpression`)&&n.operator===`!`||j(n,`ArrowFunctionExpression`)||j(n,`FunctionExpression`)||j(n,`ClassExpression`))return!1;if(j(n,`ArrayExpression`)){let e=cl(n,t);return e===null||e.trim().length>0}if(ll(n,t)||j(n,`CallExpression`)&&ll(n.callee,t))return!1;if(j(n,`ConditionalExpression`))return ul(n.consequent,t)&&ul(n.alternate,t);if(j(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?ul(e,t):!1}if(j(n,`LogicalExpression`)){let e=A(n.left);if(!j(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return ul(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?ul(r?n.right:e,t):ul(r?e:n.right,t)}return!0},dl=(e,t)=>e?.value?j(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:j(e.value,`JSXExpressionContainer`)?ul(e.value.expression,t):!0:!1,fl=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},pl=e=>typeof e==`string`?fl(`literal`,e):typeof e==`number`?fl(`literal`,String(e)):null,ml=e=>{let t=A(e);if(j(t,`Identifier`))return t.name;if(j(t,`MemberExpression`)){if(t.computed)return null;let e=ml(t.object),n=t.property;return e===null||!j(n,`Identifier`)?null:`${e}.${n.name}`}return null},Ice=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=ml(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return fl(`template`,r.join(``))},hl=e=>{let t=A(e);if(j(t,`Literal`)){let e=pl(t.value);return e===null?[]:[e]}if(j(t,`TemplateLiteral`)){let e=ot(t);if(e!==null){let t=fl(`literal`,e);return t===null?[]:[t]}let n=Ice(t);return n===null?[]:[n]}if(j(t,`ConditionalExpression`))return[...hl(t.consequent),...hl(t.alternate)];let n=ml(t);if(n!==null){let e=fl(`identifier`,n);return e===null?[]:[e]}return[]},gl=e=>{if(!e?.value)return[];let t=e.value;if(j(t,`Literal`)){let e=pl(t.value);return e===null?[]:[e]}return j(t,`JSXExpressionContainer`)?hl(t.expression):[]},Lce=/^Icon($|[A-Z0-9_])|Icon$/,Rce=(e,t)=>{if(t.iconComponentNames.has(e)||Lce.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},_l=(e,t,n)=>{let r=A(e);if(j(r,`JSXEmptyExpression`))return!1;if(j(r,`Literal`))return typeof r.value==`string`?el(r.value):typeof r.value==`number`;if(j(r,`TemplateLiteral`)){let e=ot(r);return e===null||el(e)}return j(r,`ConditionalExpression`)?_l(r.consequent,t,n)||_l(r.alternate,t,n):j(r,`LogicalExpression`)?r.operator===`&&`?_l(r.right,t,n):_l(r.left,t,n)||_l(r.right,t,n):j(r,`JSXElement`)||j(r,`JSXFragment`)?vl(r,t,n):!0},vl=(e,t,n)=>{if(t>n.depth)return!1;if(j(e,`JSXExpressionContainer`))return _l(e.expression,t,n);if(j(e,`JSXText`))return el(e.value);if(j(e,`JSXFragment`))return e.children.some(e=>vl(e,t+1,n));if(j(e,`JSXElement`)){if(ol(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=Cr(e.openingElement,n.settings);if(Oc(t)&&!n.controlComponents.includes(t)&&!Rce(t,n))return!0}for(let r of e.children)if(vl(r,t+1,n))return!0}return!1},yl=(e,t)=>ol(e.openingElement.attributes,t.customAttributes)||j(e.openingElement.name,`JSXIdentifier`)&&e.openingElement.name.name===al&&dl(F(e.openingElement.attributes,`title`),t.scopes)?!0:e.children.some(e=>vl(e,1,t)),bl=e=>j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`)||j(e,`FunctionDeclaration`),xl=(e,t)=>{if(e===al||e===`Label`)return!0;let n=F(t.attributes,`component`);return n?yr(n)===al:!1},zce=(e,t)=>{let n=e.parent,r=!1;for(;n&&!j(n,`JSXAttribute`);){if(bl(n)&&(r=!0),j(n,`JSXElement`)){let e=n.openingElement;if(il(e,t.settings))return`hidden`;let i=Cr(e,t.settings);if(!r&&xl(i,e)&&yl(n,t)||Oc(i)&&sl(F(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Sl=e=>{let t=e.parent;for(;t;){if(j(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},Bce=e=>{let t=e.parent;for(;t;){if(j(t,`VariableDeclarator`))return j(t.id,`Identifier`)?t.id.name:null;if(bl(t)){if(j(t,`FunctionDeclaration`)&&t.id&&j(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&j(e,`VariableDeclarator`)&&j(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Cl=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){t.add(n.name);return}if(j(n,`CallExpression`)){let e=A(n.callee);j(e,`Identifier`)&&t.add(e.name);return}if(j(n,`LogicalExpression`)){Cl(n.left,t),Cl(n.right,t);return}j(n,`ConditionalExpression`)&&(Cl(n.consequent,t),Cl(n.alternate,t))},wl=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(j(i,`JSXExpressionContainer`)){Cl(i.expression,r);continue}(j(i,`JSXElement`)||j(i,`JSXFragment`))&&wl(i,t+1,n,r)}},Vce=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=F(t.attributes,`type`);if(!n)return!0;let r=yr(n);return r===null?!0:Tce.has(r.toLowerCase())},Tl=w({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=oi(e.settings),n=Pce(e.settings),r=jt(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={scopes:e.scopes,depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!$c(t)))for(let t of e.specifiers??[]){if(!j(t.local,`Identifier`))continue;let e=t.local.name;j(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=Cr(a,e.settings);if(xl(u,a)&&yl(i,l)&&!Sl(i)){let e=F(a.attributes,`htmlFor`);for(let t of gl(e))o.add(t);u===al&&wl(i,1,l,s)}if(Mce.includes(u)||n.ignoreElements.includes(u))return;let d=F(a.attributes,`role`),f=d?yr(d):null;if(f&&n.ignoreRoles.includes(f)||il(a,e.settings)||jce(u,a))return;let p=Ei.has(u),m=(!t||!wce.has(u))&&Ii(u,a),h=t&&f===`separator`&&!F(a.attributes,`tabIndex`),g=f!==null&&tl(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=F(a.attributes,`type`),t=e?yr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&sl(F(a.attributes,`value`)))return}if(!(p&&dl(Fce(a.attributes,`title`),e.scopes))&&!(Vce(u,a)&&sl(F(a.attributes,`placeholder`)))&&!ol(a.attributes,n.labelAttributes)&&!Sl(i)&&zce(i,l)===null){if(u!==`select`){for(let e of i.children)if(vl(e,1,l))return}c.push({opening:a,controlIdKeys:gl(F(a.attributes,`id`)),enclosingBindingName:Bce(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`."})}}}}),El=(e,t,n)=>{let r=A(e);if(j(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)El(e,t,n);return}if(j(r,`JSXFragment`)){for(let e of r.children)El(e,t,n);return}if(n){if(j(r,`JSXExpressionContainer`)){El(r.expression,t,!0);return}if(j(r,`ConditionalExpression`)){let e=Cn(Rn(r.test));if(e!==null){El(e?r.consequent:r.alternate,t,!0);return}El(r.consequent,t,!0),El(r.alternate,t,!0);return}if(j(r,`LogicalExpression`)){for(let e of Gt(r))El(e,t,!0);return}if(j(r,`ArrayExpression`)){for(let e of r.elements)e&&!j(e,`SpreadElement`)&&El(e,t,!0);return}if(j(r,`SequenceExpression`)){if(r.expressions.length===0)return;El(Rn(r),t,!0)}}},Dl=(e,t={})=>{let n=[];for(let r of e.children)El(r,n,t.includeStaticExpressionBranches===!0);return n},Hce=new Set([`grid`,`table`,`treegrid`]),Uce=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(j(i,`JSXAttribute`)){if(gn(i.name)?.toLowerCase()===t)return!1;continue}if(j(i,`JSXSpreadAttribute`)&&ei(i.argument,t,!1,n.scopes))return!0}}return!1},Ol=(e,t,n,r)=>n.isUnknown&&Uce(e,t,r),Wce=e=>e.attribute?L(e.attribute):Tr(e.expression),kl=(e,t,n)=>{if(e.attribute)return ri(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=A(e.expression),i=Tr(r);return i===null?j(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(ni(r)||j(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Gce=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=pn(e.attributes,n,!1);if(Ol(e,n,r,t))return null;if(kl(r,n.startsWith(`aria-`),t))return!0}return!1},Al=e=>{for(let t of e){if(j(t,`JSXElement`)&&N(t.openingElement)===`caption`)return t;if(j(t,`JSXFragment`)){let e=Al(t.children);if(e)return e}}return null},Kce=(e,t)=>Or(e.openingElement,t.settings)?!1:ai(e,t.settings),qce=(e,t,n)=>{let r=e.parent;for(;r;){if(j(r,`JSXElement`)){if(Or(r.openingElement,n.settings))return!1;if(N(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Jce=(e,t)=>{let n=e.parent;for(;n;){if(j(n,`JSXElement`)&&Or(n.openingElement,t.settings))return!0;n=n.parent}return!1},jl=w({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(N(n)!==`table`||Br(e,n)||Or(n,e.settings)||Jce(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>Ol(n,t,pn(n.attributes,t,!1),e)))return;let r=pn(n.attributes,`children`,!1),i=pn(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=pn(n.attributes,`role`,!1);if(Ol(n,`role`,a,e))return;if(a.isPresent){let t=Wce(a);if(t===null){if(kl(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>pi.has(e));if(e&&!Hce.has(e))return}}if(!Dl(t).some(n=>N(n)===`th`&&qce(n,t,e)))return;let o=Al(t.children),s=Gce(n,e);s!==null&&(o&&Kce(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.`}))}})}),Ml=(e,t,n)=>{let r=A(e);if(D(r))return[r];if(j(r,`Identifier`)){if(n){let e=T(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:D(e.declarationNode)?[e.declarationNode]:e.initializer&&D(A(e.initializer))?[A(e.initializer)]:[]}let e=O(t,r.name);return e?.initializer&&D(A(e.initializer))?[A(e.initializer)]:[]}if(j(r,`ConditionalExpression`))return[...Ml(r.consequent,t,n),...Ml(r.alternate,t,n)];if(j(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?Ml(e,t,n):[]}return[]},Nl=(e,t)=>D(e)?j(e.body,`BlockStatement`)?et(e).flatMap(e=>e.argument?Ml(e.argument,e,t):[]):Ml(e.body,e,t):[],Pl=(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=y(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&j(c,`MemberExpression`)&&c.object===o&&C(c)===`current`&&(o=y(c),c=o.parent),n.includeReactRefContainers&&j(c,`CallExpression`)&&c.arguments[0]===e&&E(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=y(c),c=o.parent),!j(c,`VariableDeclarator`)||c.init!==o||!j(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},Fl=(e,t,n)=>E(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),Il=(e,t)=>Fl(e,yn,t),Yce=new Set([`useMemo`,`useCallback`,`useRef`]),Xce=new Set([`useRef`]),Ll=new Set([`debounce`,`throttle`]),Rl=new Set([`cancel`,`flush`]),Zce=new Set([`document`,`window`]),Qce=new Set([`then`,`catch`,`finally`]),zl=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),Bl=e=>{if(!j(e,`CallExpression`))return!1;let t=A(e.callee);if(j(t,`Identifier`)){if(!Ll.has(t.name))return!1;let e=O(t,t.name);return!e?.initializer||!j(e.initializer,`ImportSpecifier`)&&!j(e.initializer,`ImportDefaultSpecifier`)?!1:zl(rr(t,t.name))}if(j(t,`MemberExpression`)&&Ll.has(C(t)??``)){let e=A(t.object);if(!j(e,`Identifier`))return!1;let n=O(e,e.name);return!n?.initializer||!j(n.initializer,`ImportNamespaceSpecifier`)&&!j(n.initializer,`ImportDefaultSpecifier`)?!1:zl(rr(e,e.name))}return!1},$ce=e=>{if(!j(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=A(t);if(Bl(n))return n;if(!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return null;if(!j(n.body,`BlockStatement`)){let e=A(n.body);return Bl(e)?e:null}for(let e of n.body.body??[])if(j(e,`ReturnStatement`)&&e.argument){let t=A(e.argument);if(Bl(t))return t}return null},ele=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Co(r,[`trailing`],t,n);return i?i.properties.some(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`trailing`&&j(e.value,`Literal`)&&e.value.value===!1):!1},Vl=e=>{let t=A(e);for(;j(t,`MemberExpression`);)t=A(t.object);return j(t,`Identifier`)?t:null},Hl=(e,t)=>{let n=Vl(e);return n?t.symbolFor(n)?.id??null:null},Ul=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`))return Rl.has(C(n)??``)?Hl(n.object,t):null;if(!j(n,`Identifier`))return null;let r=O(n,n.name)?.bindingIdentifier?.parent;if(!j(r,`Property`))return null;let i=j(r.key,`Identifier`)?r.key.name:j(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!Rl.has(i))return null;let a=r.parent,o=a?.parent;return!j(a,`ObjectPattern`)||!j(o,`VariableDeclarator`)||!o.init?null:Hl(o.init,t)},tle=(e,t,n)=>{S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`CallExpression`))return;let i=Ul(r.callee,n);i!==null&&t.add(i)})},nle=(e,t)=>{let n=new Set,r=new Set,i=new Set;return S(e,e=>{if(!j(e,`CallExpression`))return;let n=A(e.callee);if(Il(e,t)){let n=e.arguments?.[0],a=n?A(n):null;if(a&&D(a)){if(xo(a,e=>{if(!j(e,`CallExpression`))return;let n=Hl(e.callee,t);n!==null&&r.add(n)}),j(a.body,`BlockStatement`))for(let e of et(a)){if(!e.argument)continue;let n=Ul(e.argument,t);n!==null&&i.add(n)}else{let e=Ul(a.body,t);e!==null&&i.add(e)}for(let e of Nl(a))tle(e,i,t)}}if(j(n,`Identifier`)&&n.name===`useUnmount`&&(rr(n,n.name)===`react-use`||!O(n,n.name)))for(let n of e.arguments??[]){let e=Ul(n,t);e!==null&&i.add(e)}if(!j(n,`Identifier`)||!kc(n.name))return;let a=O(n,n.name)?.initializer;if(!a||!D(a))return;let o=new Set;S(a,e=>{if(!j(e,`CallExpression`)||!Il(e,t))return;let n=pr(e);if(n)for(let e of Nl(n))S(e,e=>{if(!j(e,`CallExpression`))return;let t=A(e.callee);if(!j(t,`MemberExpression`)||!Rl.has(C(t)??``))return;let n=Vl(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!j(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?Hl(a,t):null;s!==null&&i.add(s)}}),S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`ReturnStatement`)||!r.argument)return;let i=A(r.argument);!j(i,`Identifier`)&&!j(i,`ObjectExpression`)&&!j(i,`ArrayExpression`)||S(i,e=>{if(!j(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},rle=(e,t,n)=>{if(!j(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=A(r);if(D(i))return i;if(!j(i,`Identifier`))return null;let a=i.name,o=null;return S(t,e=>{if(o)return!1;if(j(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(j(e,`VariableDeclarator`)&&j(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=A(e.init);if(D(t))return o=t,!1;if(j(t,`CallExpression`)&&Fl(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?A(e):null;if(n&&D(n))return o=n,!1}}}),o},Wl=new Set([`localStorage`,`sessionStorage`]),ile=e=>{let t=e;for(;;){let e=t.parent;if(e&&j(e,`MemberExpression`)&&e.object===t&&e.parent&&j(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return j(t,`CallExpression`)&&j(t.callee,`MemberExpression`)&&C(t.callee)===`catch`},ale=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])kt(n,t);let n=!1;return S(e,e=>{if(n)return!1;if(j(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(j(e,`Identifier`)&&Zce.has(e.name)&&!t.has(e.name)&&!O(e,e.name)&&!(j(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(j(r,`Property`)&&!r.computed&&r.key===e)){if(j(r,`MemberExpression`)&&r.object===e){if(j(r.property,`Identifier`)&&Wl.has(r.property.name))return;let e=r;for(;e.parent&&j(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&j(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&j(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(j(e,`CallExpression`)){let t=e.callee;if(j(t,`Identifier`)&&t.name===`fetch`&&!O(t,t.name)||j(t,`MemberExpression`)&&Qce.has(C(t)??``)&&C(t)!==`catch`&&!ile(e))return n=!0,!1;if(j(t,`MemberExpression`)&&j(t.object,`Identifier`)&&Wl.has(t.object.name))return}}),n},ole=e=>{if(!e)return!0;let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`||j(t,`UnaryExpression`)&&t.operator===`void`},sle=(e,t)=>{if(!j(e,`MemberExpression`)||C(e)!==`current`)return!1;let n=A(e.object);if(!j(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=A(r.initializer);return j(i,`CallExpression`)&&Fl(i,Xce,t)&&ole(i.arguments?.[0])},cle=(e,t)=>{if(!j(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return S(e,e=>{if(r)return!1;if(sle(e,t)||j(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(j(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])j(e.id,`Identifier`)&&n.add(e.id.name);continue}if(j(t,`IfStatement`)){let e=t.consequent;return(j(e,`ReturnStatement`)||j(e,`BlockStatement`)&&j(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},Gl=w({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(!Fl(n,Yce,e.scopes))return;let r=$ce(n);if(!r||ele(r,e.scopes,n))return;let i=y(n),a=i.parent;if(!j(a,`VariableDeclarator`)||a.init!==i||!j(a.id,`Identifier`))return;let o=a.id.name,s=M(n);if(!s)return;let c=t.get(s);c||(c=nle(s,e.scopes),t.set(s,c));let l=Pl(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=rle(r,s,e.scopes);d&&ale(d)&&(cle(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.`}))}}}}),Kl=ur({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.`}),ql=1e3,lle=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]]),ule=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(`.`)),Jl=1e3,dle=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),fle=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,ple=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,mle=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,hle=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Yl=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Xl=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`]),gle=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Zl=(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},Ql=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),$l=w({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(!j(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Ql(n,`px`)||Ql(n,`py`))return;let r=Zl(n,fle,ple);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.`})}})}),eu=w({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||!j(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=L(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Ql(r,`w`)||Ql(r,`h`))return;let i=Zl(r,mle,hle);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.`})}}}}),_le=e=>e.split(/\s+/).filter(Boolean),tu=w({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(!j(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`space-`))return;let r=_le(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Yl.has(t)){i=!0;break}}if(!i)return;let a=n.match(gle);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.`})}})}),nu=ur({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.`}),ru=e=>{if(!e||!j(e,`JSXOpeningElement`))return null;if(j(e.name,`JSXIdentifier`))return N(e);if(j(e.name,`JSXMemberExpression`)){let t=e.name;for(;j(t,`JSXMemberExpression`);)t=t.property;if(j(t,`JSXIdentifier`))return t.name}return null},iu=e=>e===`button`||e===`Button`,vle=e=>iu(e)||e===`a`||e===`Link`,yle=new Set([`back`,`previous`]),au=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),ou=e=>{if(!j(e,`JSXElement`)&&!j(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(j(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(j(t,`TemplateLiteral`)){let e=ot(t);if(e!==null){n.push(e);continue}}return null}if(j(e,`JSXFragment`)){let t=ou(e);if(t===null)return null;n.push(t);continue}if(j(e,`JSXElement`))return null}return n.join(``).trim()},ble=e=>{let t=e.parent;for(;t;){if(j(t,`JSXElement`)&&ru(t.openingElement)===`form`)return t;t=t.parent}return null},su=e=>{for(let t of e.children??[]){if(j(t,`JSXFragment`)){if(su(t))return!0;continue}if(!j(t,`JSXElement`))continue;let e=ru(t.openingElement);if(e&&vle(e)&&yle.has(au(ou(t)??``))||su(t))return!0}return!1},cu=w({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=ru(t.openingElement);if(!n||!iu(n))return;let r=ou(t);if(!r)return;let i=au(r);if(dle.has(i)){if(i===`continue`){let e=ble(t);if(e&&su(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),xle=e=>{for(let t of e.children)if(!(j(t,`JSXText`)&&t.value.trim().length===0)){if(j(t,`JSXElement`))return t.openingElement;if(!(j(t,`JSXExpressionContainer`)&&j(t.expression,`JSXEmptyExpression`)))return}return null},lu=w({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(N(t.openingElement)!==`details`)return;let n=xle(t);n!==void 0&&(n&&N(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.`}))}})}),Sle=new Set([`dialog`,`alertdialog`]),Cle=[`aria-label`,`aria-labelledby`,`title`],uu=w({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=>jt(e.filename)?In:{JSXOpeningElement(t){if(!j(t.name,`JSXIdentifier`))return;let n=N(t);if(n[0]!==n[0]?.toLowerCase())return;let r=F(t.attributes,`role`),i=r?yr(r):null;(n===`dialog`||i!==null&&Sle.has(i))&&(I(t.attributes)||Cle.some(e=>F(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."}))}}}),du=`createReactClass`,fu=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`MemberExpression`)?!!(j(t.object,`Identifier`)&&t.object.name===`React`&&j(t.property,`Identifier`)&&(t.property.name===du||t.property.name===`createClass`)):j(t,`Identifier`)?t.name===du:!1},wle=(e,t,n,r)=>{let i=A(e);if(i.type===`JSXElement`||i.type===`JSXFragment`||Ka(i))return!0;if(j(i,`ArrayExpression`))return i.elements.some(e=>e&&t(e));if(j(i,`CallExpression`))return i.arguments.some(e=>Bee(e,r)&&n(e));if(j(i,`SequenceExpression`)){let e=i.expressions.at(-1);return!!(e&&t(e))}return!1},pu=(e,t,n)=>{let r=c(t,e=>wle(e,r.expressionMatches,r.functionMatches,t),n);return r.functionMatches(e)},mu=(e,t)=>{let n=e.params[0];if(!j(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r||r.references.some(e=>e.flag!==`read`))return!1;let i=e=>{let n=A(e);if(j(n,`LogicalExpression`)){if(n.operator===`&&`)return i(n.left)||i(n.right);if(n.operator===`||`)return i(n.left)&&i(n.right)}if(!j(n,`BinaryExpression`)||n.operator!==`===`)return!1;let a=A(n.left),o=A(n.right);return j(a,`Identifier`)&&t.symbolFor(a)?.id===r.id&&j(o,`Literal`)&&o.value===null||j(o,`Identifier`)&&t.symbolFor(o)?.id===r.id&&j(a,`Literal`)&&a.value===null},a=!1,o=!0;return S(e.body,t=>{if(!o)return!1;if(!j(t,`JSXElement`)&&!j(t,`JSXFragment`)&&!Ka(t))return;a=!0;let n=t;for(;n.parent&&n.parent!==e;){let e=n.parent;if((j(e,`IfStatement`)||j(e,`ConditionalExpression`))&&e.consequent===n&&i(e.test)||j(e,`LogicalExpression`)&&e.operator===`&&`&&e.right===n&&i(e.left))return!1;n=e}return o=!1,!1}),a&&o},Tle=[`observer`,`lazy`,`withTracking`],Ele=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??Tle);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},hu=(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},gu=new WeakMap,_u=e=>{let t=gu.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(j(e,`CallExpression`)&&Ka(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)k(e)&&r(e);else k(i)&&r(i);if(n)return}};return r(e),gu.set(e,n),n},vu=e=>{let t=!1;return S(e,e=>{if(j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},yu=e=>j(e,`MemberExpression`)?!e.computed&&j(e.property,`Identifier`)?e.property.name:e.computed&&j(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,bu=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(j(t,`VariableDeclarator`)&&j(t.id,`Identifier`))return t.id.name;if(j(t,`AssignmentExpression`)){let e=t.left;if(j(e,`Identifier`))return e.name;if(j(e,`MemberExpression`))return yu(e)}return null},xu=e=>{let t=e.parent;if(!t||!j(t,`AssignmentExpression`))return!1;let n=t.left;return j(n,`MemberExpression`)&&j(n.object,`Identifier`)&&n.object.name===`module`&&yu(n)===`exports`},Dle=e=>{if(!j(e,`CallExpression`))return!1;if(fu(e))return!0;let t=e.callee;return j(t,`MemberExpression`)?yu(t)===`createClass`:!1},Ole=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`Identifier`)?t.name===`createContext`:j(t,`MemberExpression`)&&yu(t)===`createContext`},kle=e=>(j(e,`FunctionExpression`)||j(e,`FunctionDeclaration`))&&!!e.id?.name,Su=e=>j(e,`CallExpression`)&&e.arguments[0]||null,Cu=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=e.callee;if(j(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},Ale=(e,t)=>Cu(e,t)!==null,wu=e=>{if(!e)return!1;if(hu(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},jle=(e,t)=>{if(!Ale(e,t.additionalHoCs)||!_u(e))return!1;let n=bu(e),r=p(e);if(n&&r&&ku(n,r))return!1;let i=Cu(e,t.additionalHoCs),a=Su(e);return!a||i===`forwardRef`&&j(e.parent,`CallExpression`)&&Cu(e.parent,t.additionalHoCs)===`memo`&&Su(e.parent)===e&&wu(t.reactVersion)?!1:i===`memo`&&j(a,`CallExpression`)?Cu(a,t.additionalHoCs)===`forwardRef`?!wu(t.reactVersion):!1:kle(a)?!1:j(a,`FunctionExpression`)||j(a,`ArrowFunctionExpression`)},Tu=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((j(e,`PropertyDefinition`)||j(e,`MethodDefinition`))&&`static`in e&&e.static&&j(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},Eu=e=>{if(j(e,`Identifier`))return[e.name];if(!j(e,`MemberExpression`))return[];let t=Eu(e.object),n=yu(e);return n?[...t,n]:t},Du=new WeakMap,Ou=e=>{let t=Du.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(j(e,`AssignmentExpression`)&&j(e.left,`MemberExpression`)&&yu(e.left)===`displayName`){j(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of Eu(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)k(e)&&i(e);else k(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Du.set(e,a),a},ku=(e,t)=>Ou(t).identifierTargets.has(e),Mle=(e,t)=>Ou(t).memberPathSegments.has(e),Au=w({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=Ele(e.settings),n=oi(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(go(e)&&!(e.id&&Oc(e.id.name)&&r)&&!Tu(e)){if(e.id){let t=p(e);if(t&&ku(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(go(e)&&!(e.id&&Oc(e.id.name)&&r)&&!Tu(e)){if(e.id){let t=p(e);if(t&&ku(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!_u(a)||n&&!pu(a,e.scopes,e.cfg))return;if(!n&&!a.id&&xu(a)){i(a);return}if(!n&&!rn(a,e.scopes,e.cfg)&&!vu(a)||a.id&&Oc(a.id.name)&&r)return;if(j(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=j(e,`Identifier`)?e.name:j(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=p(a);if(n&&Oc(n)&&t.ignoreTranspilerName&&(!r||!Mle(n,r))){i(a);return}}let o=bu(a);if(!(o&&Oc(o)&&r)){if(xu(a)&&!a.id){i(a);return}if(j(a.parent,`ReturnStatement`)&&!a.id){if(n&&mu(a,e.scopes))return;i(a)}}},ArrowFunctionExpression(t){if(n&&(j(t.parent,`ReturnStatement`)||j(t.parent,`ArrowFunctionExpression`))&&mu(t,e.scopes))return;let a=j(t.parent,`ExportDefaultDeclaration`);if(!_u(t)&&!a||n&&!pu(t,e.scopes,e.cfg))return;if(!n&&xu(t)){i(t);return}if(!n&&!rn(t,e.scopes,e.cfg)&&!vu(t))return;if(j(t.parent,`ArrowFunctionExpression`)||j(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(j(o,`VariableDeclarator`)&&j(o.id,`Identifier`)){if(Oc(o.id.name)&&r)return;break}if(j(o,`ExportDefaultDeclaration`)){i(t);return}if(xu(t)){i(t);return}if(j(o,`FunctionDeclaration`)||j(o,`FunctionExpression`)||j(o,`ArrowFunctionExpression`)||j(o,`ClassDeclaration`)||j(o,`ClassExpression`)||j(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&j(t.parent,`ExportDefaultDeclaration`)&&rn(t,e.scopes,e.cfg)){if(t.id){let e=p(t);if(e&&ku(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&hu(t.reactVersion,16,3)&&Ole(e)){let t=bu(e);if(t){let n=p(e);if(n&&ku(t,n))return}i(e);return}if(jle(e,t)){i(e);return}if(!Dle(e))return;let n=e.arguments[0];if(!n||!j(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!j(e,`Property`)||e.computed)continue;let t=e.key;if(j(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(j(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&j(o,`VariableDeclarator`)&&j(o.id,`Identifier`)&&Oc(o.id.name)&&r)){if(o&&j(o,`AssignmentExpression`)){let e=o.left;if(j(e,`Identifier`)&&Oc(e.name)&&r||j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&Oc(e.property.name)&&r)return}i(e)}}}}}),ju=w({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.`}),Nle=(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\`.`},Ple=e=>{let t=!1;return S(e,e=>{if(j(e,`CallExpression`))return t=!0,!1}),t},Mu=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,Nu=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>Nu(e,t)&&Nu(n,t)),Fle=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,Pu=(e,t)=>{if(t.abortControllerSymbolId!==null&&Nu(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||Mu(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Fle(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=Pu(r,t),a=Pu(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},Ile=(e,t)=>Pu(e,t)!==`not-cancelled`,Fu=e=>{if(!e)return null;let t=A(e);return j(t,`MemberExpression`)?!t.computed&&j(t.property,`Identifier`)?t.property.name:t.computed&&j(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},Lle=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Rle=(e,t)=>{if(j(e,`IfStatement`)){if(e.test===t)return!0;let n=Cn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(j(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Cn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(j(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Cn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return j(e,`TryStatement`)?e.finalizer===t:j(e,`SwitchStatement`)?e.discriminant===t:j(e,`ForStatement`)?e.init===t||e.test===t:j(e,`ForInStatement`)||j(e,`ForOfStatement`)?e.right===t:j(e,`WhileStatement`)?e.test===t:!1},Iu=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||Lle.has(e.type)&&!Rle(e,r)&&!n?.(e,r))return!0;r=e}return!1},Lu=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=A(e);if(j(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!j(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&j(e,`SpreadElement`)){i=null;continue}if(!j(e,`Property`))return null;let r=P(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=A(e.value);if(j(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},zle=e=>{if(!e)return!1;let t=A(e);if(j(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!j(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!j(e,`Property`))return null;let t=P(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=A(e.value);if(!j(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Ble=new Set([...yn,`useInsertionEffect`]),Ru=e=>e.references.every(e=>e.flag===`read`),Vle=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&Ru(e),zu=e=>e.kind===`const`&&j(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,Bu=(e,t,n)=>{if(!j(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!Vle(r)||n.has(r.id)||r.kind===`const`&&!zu(r))return null;n.add(r.id);let i=r.initializer?A(r.initializer):null;if(r.kind===`const`&&j(i,`Identifier`)){let e=Bu(i,t,n);if(e)return e}return r},Vu=(e,t)=>{if(!e)return null;let n=A(e);if(D(n))return{node:n,isConcreteFunction:!0};if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r)return null;let i=r.initializer?A(r.initializer):null;return i&&D(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},Hu=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){let e=Bu(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?A(e.initializer):null;return j(n,`NewExpression`)&&j(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:j(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)){let e=Hu(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},Uu=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return r.value;if(j(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!j(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!zu(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),Uu(i.initializer,t,n))},Hle=(e,t)=>{let n=Gu(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=A(r);if(!n||!j(i,`NewExpression`)||!j(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=A(n);if(!j(a,`Identifier`))return null;let o=Bu(a,t,new Set),s=o?.initializer?A(o.initializer):null;if(!j(s,`NewExpression`)||!j(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Hu(n,t),l=Uu(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Wu=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=A(r.initializer);return!j(i,`NewExpression`)||!j(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},Gu=(e,t,n)=>{if(!e)return null;let r=A(e);return!j(r,`MemberExpression`)||(Fu(r)??(n&&r.computed?Uu(r.property,n):null))!==t?null:r.object},Ule=(e,t)=>j(e,`ObjectPattern`)?e.properties.some(e=>!j(e,`Property`)||P(e,{allowComputedString:!0})!==`signal`?!1:(j(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Ku=(e,t,n=new Set)=>{let r=A(e),i=Gu(r,`signal`);if(i)return Wu(i,t);if(!j(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!Ru(a))return null;n.add(a.id);let o=a.declarationNode;if(!j(o,`VariableDeclarator`))return null;if(j(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=A(a.initializer);if(j(e,`Identifier`))return Ku(e,t,n);let r=Gu(e,`signal`);return r?Wu(r,t):null}return Ule(o.id,a.bindingIdentifier)?Wu(a.initializer,t):null},qu=(e,t,n)=>{let r=A(e);if(j(r,`UnaryExpression`)&&r.operator===`!`){let e=qu(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(j(r,`BinaryExpression`)){let e=Cn(r.left),i=Cn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=qu(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=Gu(r,`aborted`);return i&&Ku(i,n)===t?`aborted`:null},Wle=(e,t,n,r)=>{if(j(e,`IfStatement`)||j(e,`ConditionalExpression`)){let i=qu(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!j(e,`LogicalExpression`)||e.right!==t)return!1;let i=qu(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Gle=(e,t,n,r)=>!Iu(e,t,(e,t)=>Wle(e,t,n,r)),Kle=(e,t)=>{let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r?.initializer)return null;let i=A(r.initializer);if(!j(i,`CallExpression`))return null;let a=Gu(i.callee,`bind`);if(!a)return null;let o=Gu(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Wu(o,t),l=Wu(s,t);return c!==null&&c===l?c:null},qle=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=A(e);if(!j(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!j(e,`Property`))return n;if(P(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Ku(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Ju=(e,t,n)=>{let r=Gu(e.callee,t,n);if(!r)return null;let i=Hu(r,n),a=Uu(e.arguments?.[0],n),o=Vu(e.arguments?.[1],n),s=Lu(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Jle=(e,t)=>{let n=Gu(e.callee,`call`);if(!n||!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!Ru(r)||!j(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!j(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!j(e,`Property`))return!1;let t=j(e.value,`AssignmentPattern`)?e.value.left:e.value;return P(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Hu(i.init,t),s=Hu(a,t);if(o===null||s===null||o!==s)return null;let c=Uu(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Vu(e.arguments?.[2],t),capture:Lu(e.arguments?.[3],{allowComputedString:!0})}},Yle=(e,t)=>{if(!e)return null;let n=A(e);if(D(n))return n.body;if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r||!r.initializer)return null;let i=A(r.initializer);return D(i)?i.body:null},Xle=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!j(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=j(o,`ReturnStatement`);return S(e,o=>{if(o!==e&&D(o)||j(o,`ClassDeclaration`)||j(o,`ClassExpression`))return!1;if(j(o,`CallExpression`)){if(Iu(o,e))return;let r=Gu(o.callee,`addEventListener`,t),a=r?Hu(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Ju(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=qle(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:zle(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Hle(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&&!Ple(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(j(o,`ReturnStatement`)){a+=1;let e=Yle(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},Zle=(e,t)=>{let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=A(r.initializer);return!D(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Yu=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=j(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=j(e,`BlockStatement`)?e.body:[e];for(let e of r){if(j(e,`BreakStatement`)||j(e,`ContinueStatement`))return!0;if(j(e,`BlockStatement`)){if(f(e))return!0;continue}if(j(e,`IfStatement`)){let r=Cn(e.test);if(r!==null){let i=Yu(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=Yu(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return S(e,p=>{if(p!==e&&D(p)||j(p,`ClassDeclaration`)||j(p,`ClassExpression`))return!1;if(j(p,`ReturnStatement`)&&p===u)return;if(j(p,`ReturnStatement`)||j(p,`ThrowStatement`)||r&&(j(p,`BreakStatement`)||j(p,`ContinueStatement`)))return s=!0,!1;if(j(p,`ForOfStatement`)){let t=A(p.right);return j(t,`ArrayExpression`)&&t.elements.some(e=>e&&!j(e,`SpreadElement`))&&!Iu(p,e)&&f(p.body),!1}if((j(p,`IfStatement`)||j(p,`ConditionalExpression`))&&p.alternate&&Cn(p.test)===null&&!Iu(p,e)){let e=Yu(p.consequent,t,new Set(n)),r=Yu(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=Yu(p.test,t,new Set(n));return i&&d(i),!1}if(!j(p,`CallExpression`))return;let m=Iu(p,e),h=Gu(p.callee,`removeEventListener`,t);if(h&&!m){let e=Ju(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Jle(p,t);e&&i.push(e)}let g=Gu(p.callee,`abort`);if(g){let n=Wu(g,t);n===null?m||(c=!0):(!m||Gle(p,e,n,t))&&a.add(n);return}if(m)return;let _=Kle(p,t);if(_!==null){a.add(_);return}let v=Zle(p,t);if(!v||n.has(v.symbolId))return;n.add(v.symbolId);let ee=Yu(v.body,t,n);ee&&d(ee)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},Qle=(e,t)=>{let n=Xle(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=Yu(e,t);for(let e of n.cleanupBodies){let n=Yu(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Xu=w({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(!E(t,Ble,e.scopes))return;let n=pr(t);if(!D(n))return;let r=Qle(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&&Nu(r.setupAbortAnalysis,t.abortControllerSymbolId)||Ile(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=Mu(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:Nle(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),Zu=(e,t)=>{if(!e)return null;let n=A(e);if(j(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(j(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=bo({node:n,scopes:t});return r?`reference:${r}`:null},Qu=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}]]),$le=new Map([...Qu.values()].map(e=>[e.registerMethod,e])),eue=new Set([`off`,`removeEventListener`,`removeListener`]),$u=e=>!!(e&&ia(A(e))),ed=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return $u(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if($u(a))return{method:n,receiverKey:r,eventKey:Zu(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&$u(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},td=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!n)return;let r=[],i=[];xo(n,t=>{if(!j(t,`CallExpression`))return;let n=A(t.callee);if(!j(n,`MemberExpression`))return;let i=C(n);if(!i)return;let a=bo({node:n.object,scopes:e.scopes});if(a===null)return;let o=$le.get(i);if(!o)return;let s=ed(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of Nl(n))xo(t,t=>{if(!j(t,`CallExpression`))return;let n=A(t.callee);if(!j(n,`MemberExpression`))return;let r=C(n);if(!r||eue.has(r))return;let a=Qu.get(r);if(!a)return;let o=bo({node:n.object,scopes:e.scopes});if(o===null)return;let s=ed(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Qu.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.`})}}})}),nd=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=M(n);if(!i||!D(i)||i===t||!j(i.body,`BlockStatement`)||!fo(n,et(i).filter(e=>{let t=e.argument?A(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=Rc(i),o=a?e.scopes.symbolFor(a):null;if(!o||o.references.length!==1)return!1;let s=o.references[0];if(!s)return!1;let c=y(s.identifier),l=c.parent,u=j(l,`CallExpression`)?y(l):null,d=u?.parent;if(!j(l,`CallExpression`)||l.callee!==c||!j(d,`AssignmentExpression`)||d.operator!==`=`||d.right!==u||!j(d.left,`Identifier`)||M(d)!==t)return!1;let f=e.scopes.symbolFor(d.left),p=f?.initializer?A(f.initializer):null;if(!f||f.kind!==`let`&&f.kind!==`var`||!j(f.declarationNode,`VariableDeclarator`)||M(f.declarationNode)!==t||!p||!D(p)||!j(p.body,`BlockStatement`)||p.body.body.length!==0)return!1;let m=new Map;for(let e of f.references){let t=y(e.identifier),n=t.parent;if(n===d&&d.left===t)continue;if(!j(n,`CallExpression`)||n.callee!==t)return!1;let r=M(n);if(!r)return!1;let i=m.get(r)??[];i.push(n),m.set(r,i)}return fo(d,et(t).filter(t=>{let n=t.argument?x(t.argument,e.scopes):null;return!!(n&&po(n,m.get(n)??[],e))}),e,d)},rd=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=b(e),c=b(t);if(!i||!a||!o||s===null||c===null)return!0;if(!H(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},id=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),tue=new Set([...id,`find`,`findIndex`,`sort`]),ad=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),od=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),sd=new Set([...od,`Map`,`Set`]),cd=(e,t,n)=>{let r=A(e);return j(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},ld=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n);return!!((r===`from`||r===`of`)&&cd(n.object,`Array`,t))},nue=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&cd(n.object,`Object`,t))},ud=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ArrayExpression`))return r.elements.length===0;if(j(r,`NewExpression`)){let e=A(r.callee);return!!(r.arguments.length===0&&j(e,`Identifier`)&&sd.has(e.name)&&t.isGlobalReference(e))}if(j(r,`CallExpression`)){let e=A(r.callee);if(ld(r,t)){if((j(e,`MemberExpression`)?C(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!j(i,`SpreadElement`)&&ud(i,t,n))}return!!(j(e,`MemberExpression`)&&C(e)!==`concat`&&ad.has(C(e)??``)&&ud(e.object,t,n))}if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),ud(i.initializer,t,n))},dd=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ArrayExpression`))return!0;if(j(r,`NewExpression`)){let e=A(r.callee);return!!(j(e,`Identifier`)&&od.has(e.name)&&t.isGlobalReference(e))}if(j(r,`CallExpression`)){if(ld(r,t)||nue(r,t))return!0;let e=A(r.callee);return!!(j(e,`MemberExpression`)&&ad.has(C(e)??``)&&dd(e.object,t,n))}if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),dd(i.initializer,t,n))},fd=(e,t,n=new Set)=>{let r=A(e);if(!j(r,`NewExpression`)){if(!j(r,`Identifier`))return dd(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!j(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),fd(e.initializer,t,n))}let i=A(r.callee);return!!(j(i,`Identifier`)&&sd.has(i.name)&&t.isGlobalReference(i))},pd=(e,t,n)=>{let r=A(e.callee);if(!j(r,`MemberExpression`))return!1;let i=C(r);if(i===`from`&&cd(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!j(t,`SpreadElement`)&&!ud(t,n))}return!!(i&&tue.has(i)&&e.arguments[0]===t&&!ud(r.object,n)&&(i===`forEach`?fd(r.object,n):dd(r.object,n)))},md=(e,t)=>{let n=A(e.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?!1:j(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:id.has(n.property.name)&&e.arguments[0]===t},hd=e=>{let t=e.parent;return!!(j(t,`CallExpression`)&&md(t,e))},rue=new Set([`then`,`catch`,`finally`]),gd=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&rue.has(e.property.name)&&A(e.object).type===`CallExpression`,_d=e=>{let t=e.parent;for(;t&&Ie.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>A(t)===e)?null:gd(A(t.callee))?t:null},vd=(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&&A(e);!D(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;S(e,n=>{if(n!==e&&D(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?A(n.init):null;if(D(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=A(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=A(n.callee);if(D(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&gd(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},yd=(e,t)=>vd(e,!0,t),bd=(e,t)=>vd(e,!1,t),iue=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!D(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(D(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),S(e,n=>{if(n!==e&&D(n))return!1;if(n.type===`CallExpression`){a(x(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!pd(n,e,t)||a(x(e,t))}}))}return n},xd=e=>{let t=M(e);return t?Mc(t):null},Sd=e=>{let t=e.parent;for(;t;){if(j(t,`VariableDeclarator`))return t;if(j(t,`FunctionDeclaration`)||j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`)||j(t,`Program`))return null;t=t.parent??null}return null},aue=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),Cd=new Set([`useMemo`,`useState`]),oue=new Set([`startTransition`]),wd=(e,t)=>{let n=A(e);return!j(n,`MemberExpression`)||n.computed||!j(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!j(n.property,`Identifier`)?!1:n.property.name===`from`},sue=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return!1;let r=O(n,n.name);if(!r?.initializer)return!1;let i=Sd(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&j(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&wd(i.init,t))},Td=(e,t,n=new Set)=>{let r=A(e);if(!j(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),Td(i.initializer,t,n))},Ed=(e,t,n,r)=>{let i=A(e);if(j(i,`ArrayExpression`))return!0;if(j(i,`Identifier`)){let e=T(i,t);return!!(e?.kind===`const`&&e.initializer&&!Xe(i,r,n,t)&&Ed(e.initializer,t,n,r))}if(j(i,`NewExpression`))return Td(i.callee,t);if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(Td(a,t))return!0;if(!j(a,`MemberExpression`))return!1;let o=A(a.object);return!!(j(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&j(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},Dd=(e,t,n={})=>{let r=y(e),i=r.parent;if(j(i,`NewExpression`)){let e=A(i.callee);return!!(t&&i.arguments?.[0]===r&&j(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return j(i,`CallExpression`)?i.callee===r||(t?E(i,Cd,t,{allowGlobalReactNamespace:!0}):gr(i,Cd))&&i.arguments?.[0]===r||t&&E(i,oue,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(wd(i.callee,t)||sue(i.callee,t))?!0:j(i.callee,`MemberExpression`)&&!i.callee.computed&&j(i.callee.property,`Identifier`)&&aue.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&Ed(i.callee.object,t,i,i.callee.property.name))):!1},Od=new WeakMap,W=(e,t)=>{let n=M(e),r=n??e,i=Od.get(t);i||(i=new WeakMap,Od.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(Mc(n))return i.set(r,n),n;if(!Dd(n,t))return i.set(r,null),null;n=M(n)}return i.set(r,null),null},kd=e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Ad=e=>e?Ge(e)?!0:j(e,`BlockStatement`)?Ad(e.body.at(-1)):j(e,`ContinueStatement`)||j(e,`BreakStatement`):!1,cue=new Set([`createRef`,`useRef`]),jd=(e,t,n={})=>{let r=j(e,`MemberExpression`)?A(e.object):null;if(!j(e,`MemberExpression`)||C(e)!==`current`||!j(r,`Identifier`))return null;let i=T(r,t);if(!i?.initializer)return null;let a=A(i.initializer);return j(a,`CallExpression`)&&E(a,n.includeCreateRef?cue:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Md=(e,t,n=new Set)=>{let r=A(e),i=jd(r,t);if(i)return i;if(!j(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=ac(a);return o?(n.add(a.id),Md(o,t,n)):null},Nd=(e,t)=>Md(e,t)!==null,Pd=(e,t)=>{S(e,e=>{if(D(e))return!1;t(e)})},Fd=e=>!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)?null:e.callee.property.name,lue=e=>{let t=Fd(e);return t!==null&&Yn.has(t)},Id=e=>{let t=Fd(e);return t!==null&&(Yn.has(t)||t===`observe`)?t:null},Ld=e=>Id(e)!==null,Rd=e=>{let t=Fd(e);return t===null||!rte.has(t)?!1:t===`listen`?(j(e,`CallExpression`)?e.arguments??[]:[]).some(e=>j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`)):!0},uue=e=>{let t=Me(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||j(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(j(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(j(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=rt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},due=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return uue(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),j(r.declarationNode,`VariableDeclarator`)&&j(r.declarationNode.id,`ObjectPattern`)){let e=zd(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!j(t,`Property`)||(j(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=P(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return zd(r.initializer,t,n)},zd=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Identifier`))return due(r,t,n);if(!j(r,`MemberExpression`))return null;let i=C(r);if(!i)return null;let a=zd(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Bd=e=>{let t=e,n=t.parent;for(;n;){if(j(n,`AssignmentExpression`))return n.left===t;if(j(n,`UpdateExpression`)||j(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(j(n,`ForInStatement`)||j(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},fue=new Set([...yn,`useInsertionEffect`]),pue=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),mue=new Set([`@react-native-community/netinfo`]),hue=new Set([`events`,`node:events`,`react-native`]),Vd=new WeakMap,gue=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),_ue=new Set([`clear`,`delete`,`set`]),Hd=new WeakMap,Ud=new WeakMap,Wd=new WeakMap,Gd=new WeakMap,Kd={subscribe:`subscription`,timer:`timer`,socket:`connection`},qd=(e,t)=>{if(_r(e,fue,t.scopes))return!0;let n=A(e.callee);return!!(j(n,`Identifier`)&&pue.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Jd=e=>j(e,`NewExpression`)&&j(e.callee,`Identifier`)&&Ke.has(e.callee.name),G=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=A(e);if(j(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 G(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=j(o,`Property`)?P(o):null;if(l&&j(s,`ObjectPattern`)&&j(c,`VariableDeclarator`)&&c.id===s){let i=G(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?A(e.initializer):null;return e.kind===`const`&&u&&(j(u,`Identifier`)||j(u,`MemberExpression`))?G(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(j(i,`MemberExpression`)&&!i.computed){if(!j(i.property,`Identifier`))return null;let e=G(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(j(i,`ThisExpression`))return`this`;if(j(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(D(i)){let e=b(i);return e===null?null:`function:${e}`}return null},Yd=(e,t)=>{if(!e)return null;let n=A(e),r=[];for(;j(n,`MemberExpression`)&&!n.computed;){if(!j(n.property,`Identifier`))return null;r.unshift(n.property.name),n=A(n.object)}if(!j(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(j(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(j(a,`Property`)&&j(a.parent,`ObjectPattern`)){let t=P(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&j(o,`VariableDeclarator`)&&o.id===e&&j(s,`VariableDeclaration`)&&s.declarations.length===1&&j(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Df(c.right,t);if(e){let i=A(c.right),a=j(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?A(a.initializer):null,s=j(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&k(e)?e:null;for(let e of n){let n=t?A(t):null;if(typeof e==`number`&&j(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&k(r)?r:null}else if(typeof e==`string`&&j(n,`ObjectExpression`)){let r=n.properties.find(t=>j(t,`Property`)&&P(t)===e);t=j(r,`Property`)&&k(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=A(e),i=e=>{if(!j(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 j(r,`Literal`)||j(r,`ArrayExpression`)||j(r,`ObjectExpression`)||D(r)?!0:i(r)||n[0]===1&&j(r,`CallExpression`)&&i(A(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?A(i.initializer):null;if(i?.kind===`const`&&j(a,`CallExpression`)){let e=G(a.callee,t),n=[];for(let e of a.arguments){if(!k(e))continue;let r=Yd(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=G(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&&!D(o);)o=o.parent;if(!o||!D(o))return null;let s=qf(o);if(!s)return null;let c=A(s.callee);if(!j(c,`MemberExpression`))return null;let l=G(c.object,t);if(!l)return null;let u=o.params[0],d=j(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=j(u,`ObjectPattern`)?Zi(i.bindingIdentifier):null,p=d?G(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},Xd=(e,t)=>{let n=Yd(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Zd=(e,t)=>Xd(e,t)??G(e,t),Qd=(e,t)=>{if(!e)return null;let n=Zd(e,t);if(n)return n;let r=A(e);if(j(r,`CallExpression`)){let e=Zd(r.callee,t),n=r.arguments.flatMap(e=>{if(!k(e))return[];let n=Qd(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!j(r,`BinaryExpression`)&&!j(r,`LogicalExpression`))return null;let i=Qd(r.left,t),a=Qd(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},vue=(e,t)=>{let n=A(e);if(j(n,`CallExpression`)&&Qd(n,t))return n;if(!j(n,`Identifier`))return Wf(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?A(r.initializer):null;return!r||!i?Wf(n,t):j(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Bd(e.identifier))return!1;let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=A(n.callee);if(!j(r,`MemberExpression`))return!1;let i=P(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:j(i,`Identifier`)||j(i,`MemberExpression`)?null:Wf(n,t)},$d=(e,t,n)=>{let r=Yd(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>Lu(e?A(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?vue(e,t):null;if(e&&!i)return null;let a=Lu(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=A(i);if(!j(o,`ObjectExpression`)){let e=n?Qd(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!j(e,`Property`)){s=null;continue}let n=P(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Qd(e.value,t);s=n?`capture-value:${n}`:null}}return s},yue=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`ObjectExpression`))return Yd(n,t);let r=null;for(let e of n.properties??[]){if(!j(e,`Property`)){r=null;continue}let n=P(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Yd(e.value,t))}return r},ef=(e,t,n,r=!1)=>{let i=$d(e,n,r);return i!==null&&i===$d(t,n,r)},tf=(e,t,n=new Set)=>{let r=Md(e,t.scopes);if(r)return r;let i=A(e);for(;j(i,`MemberExpression`);){let e=Md(i,t.scopes)??jd(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=A(i.object)}if(j(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),tf(e.initializer,t,r)}}return null},nf=(e,t)=>tf(e,t)!==null,rf=(e,t)=>{let n=y(e),r=n.parent;if(j(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&nf(r.left,t)){let e=G(r.left,t);return e?{anchor:r,key:e}:null}if(!j(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=P(r),a=r.parent;if(!i||!j(a,`ObjectExpression`))return null;let o=y(a),s=o.parent;if(!j(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!nf(s.left,t))return null;let c=G(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},af=(e,t)=>{let n=y(e),r=rf(n,t);if(r)return r;let i=n.parent;if(!j(i,`VariableDeclarator`)||i.init!==n||!j(i.id,`Identifier`)||!j(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=rf(e.identifier,t);return n?[n]:[]}).find(n=>xf(e,[n.anchor],t))??null:null},of=(e,t,n)=>{let r=P(e),i=A(e.object),a=j(i,`Identifier`)?n.scopes.symbolFor(i):null,o=M(t);if(!r||!a||!o||!D(o))return null;for(let e of a.references){let i=y(e.identifier),a=i.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!nf(a.left,n)||M(a)!==o||!$p(t,[a],o,n))continue;let s=G(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},bue=(e,t)=>{let n=af(e,t);if(n)return n;let r=y(e),i=r.parent;return j(i,`AssignmentExpression`)&&i.right===r&&j(i.left,`MemberExpression`)?of(i.left,e,t):null},sf=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`MemberExpression`)){if(nf(i,n)){let e=G(i,n);return e?new Set([e]):null}let e=P(i);if(!e)return null;let a=sf(i.object,t,n,r);return a&&a.size>0?new Set([...a].map(t=>`${t}.${e}`)):null}if(j(i,`ConditionalExpression`)){let e=sf(i.consequent,t,n,r),a=sf(i.alternate,t,n,r);return e&&a?new Set([...e,...a]):null}if(!j(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?A(a.initializer):null;if(j(s,`CallExpression`)&&E(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=G(i,n);return e?new Set([e]):null}if(a.kind===`const`&&a.initializer){let e=sf(a.initializer,t,n,o);if(e)return e}let c=M(t),l=a.references.flatMap(e=>{let r=y(e.identifier),i=r.parent;if(!c||!j(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||M(i)!==c||!nf(i.left,n)||!$p(t,[i],c,n))return[];let a=G(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=M(a.bindingIdentifier);if(!u||!D(u))return null;let d=u.params.findIndex(e=>A(e)===a.bindingIdentifier),f=Rc(u),p=f?n.scopes.symbolFor(f):null;if(d<0||!p)return null;let m=[];for(let e of p.references){let t=y(e.identifier),r=t.parent;if(j(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!k(e))return null;let t=sf(e,r,n,o);if(!t||t.size===0)return null;m.push(t);continue}let i=t.parent,a=i?.parent;if(!(j(i,`ArrayExpression`)&&j(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},xue=(e,t)=>{let n=bue(e,t);if(n)return new Set([n.key]);let r=y(e),i=r.parent;return!j(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:sf(i.left,i,t)??new Set},cf=(e,t,n=!1)=>{let r=y(e),i=r.parent;if(j(i,`VariableDeclarator`)&&i.init===r){let r=G(i.id,t);return n?af(e,t)?.key??r:r}if(j(i,`AssignmentExpression`)&&i.right===r){if(n&&j(i.left,`MemberExpression`)){let n=of(i.left,e,t);if(n)return n.key}return G(i.left,t)}return n?rf(r,t)?.key??null:null},lf=(e,t,n)=>e!==null&&(e===t.handleKey||e===cf(t.node,n)),uf=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`))return uf(n.object,t);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Me(r):null;return typeof i?.source.value==`string`?i.source.value:null},Sue=(e,t)=>{if(e.kind!==`subscribe`||!j(e.node,`CallExpression`))return!1;if(Rd(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||_f(e.node,`addListener`,t))return!1;let n=A(e.node.callee);if(!j(n,`MemberExpression`))return!1;let r=uf(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?mue.has(r):r!==`react-native`;let i=A(n.object),a=Wf(i,t),o=a&&j(a,`NewExpression`)?uf(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&hue.has(o))return!1;let s=j(i,`Identifier`)?t.scopes.symbolFor(i):null,c=j(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!j(i,`Identifier`)||c||s!==null&&(sc(s)!==null||ac(s)!==null)?gc(i,t.scopes).length===0:!1},Cue=(e,t)=>{let n=A(e),r=zd(n,t.scopes);return j(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},df=(e,t,n=new Set)=>{let r=A(e);if(j(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?A(e.initializer):null,a=j(i,`CallExpression`)?zd(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&df(i,t,n))}if(!j(r,`CallExpression`))return!1;let i=A(r.callee);return!!(j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`getParent`&&df(i.object,t,n))},ff=(e,t)=>{if(Sue(e,t))return!0;if(!j(e.node,`CallExpression`))return!1;let n=A(e.node.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&Cue(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&df(n.object,t)},pf=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&G(r,n)===t.handleKey&&!i.references.some(e=>Bd(e.identifier)))},wue=(e,t,n)=>pf(e,t,n)&&ff(t,n),mf=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!Ip.has(t)||n.receiverKey===null||e!==n.receiverKey||!j(n.node,`CallExpression`))return!1;let i=A(n.node.callee);if(!j(i,`MemberExpression`))return!1;let a=Wf(i.object,r);return a!==null&&Jd(a)},hf=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Bd(e.identifier)))return null;let i=ac(e);if(!i)return`symbol:${e.id}`;let a=A(i);if(!j(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),hf(a,t,o)??`symbol:${e.id}`}if(D(r)){let e=b(r);return e===null?null:`function:${e}`}return null},Tue=(e,t,n)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!j(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Bd(e.identifier));if(a.length!==1)return null;let o=y(a[0].identifier),s=o.parent,c=M(t);return!j(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!$p(t,[s],c,n)?null:`symbol:${i.id}`},gf=(e,t,n=new Set)=>{let r=A(e);if(gc(r,t.scopes).includes(`MediaQueryList`))return!0;if(j(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=ac(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),gf(i,t,a)}if(!j(r,`CallExpression`)||!E(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=pr(r,t.scopes);return!!(i&&ln(i,t.scopes,e=>{let r=A(e);return j(r,`Literal`)&&r.value===null||j(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||gf(r,t,new Set(n))},t.cfg,`every`))},_f=(e,t,n)=>{let r=A(e.callee);return e.arguments?.length===1&&j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===t&&gf(r.object,n)},vf=(e,t)=>{let n=A(e.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:_f(e,`addListener`,t)?{receiverKey:hf(n.object,t)??Tue(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:hf(e.arguments?.[0],t)}:{receiverKey:Zd(n.object,t),registrationVerbName:n.property.name,eventKey:Zd(e.arguments?.[0],t),handlerKey:Zd(e.arguments?.[1],t)}},yf=e=>{if(e.kind!==`subscribe`||!j(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&k(t)?t:null},bf=(e,t)=>{let n=e;for(;j(n,`CallExpression`);){let e=j(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!j(e,`MemberExpression`)||e.computed||!j(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Zd(e.object,t);n=A(e.object)}return null},Eue=(e,t)=>{let n=e,r=y(n);for(;j(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=y(r.parent),t=e.parent;if(!j(t,`CallExpression`)||t.callee!==e)break;n=t,r=y(n)}return n===e||Id(n)!==`subscribe`||bf(n,t)===null?null:cf(n,t,!0)},Due=(e,t)=>{let n=yd(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!D(e)||S(e.body,i=>{if(i!==e.body&&D(i))return!1;if(!j(i,`CallExpression`))return;let a=null;if(j(i.callee,`Identifier`)&&Ae.has(i.callee.name)){let e=i.arguments?.[0];a=e&&k(e)?e:null}else{let e=i.arguments?.find(e=>k(e)&&_d(e)===i);e&&k(e)&&(a=e);let n=Id(i);n!==null&&(a=yf({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...vf(i,t)}))}let o=a?x(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},Oue=(e,t)=>{let n=[];if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`))return n;let r=null;if(j(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];j(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=Due(e,t);return S(e,a=>{if(a!==e&&D(a)&&(a===r||!i.has(a)&&!hd(a)))return!1;if(Jd(a)){n.push({kind:`socket`,node:a,resourceName:j(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:cf(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!j(a,`CallExpression`))return;if(j(a.callee,`Identifier`)&&Ae.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Qde(a)||nfe(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:cf(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=Id(a);if(o!==null){let e=vf(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Eue(a,t):null)??cf(a,t,!0),...e})}}),n.filter(e=>H(e.node,t))},xf=(e,t,n)=>{let r=e,i=M(r);for(;i&&hd(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!j(e,`CallExpression`))break;r=e,i=M(r)}return fo(r,t,n,e)},kue=(e,t,n)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.body,`BlockStatement`))return t;let r=[];return Pd(e.body,e=>{j(j(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=b(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=b(r);return i!==null&&i>t&&qp(r,e,n)});return!xf(e.node,i,n)})},Sf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=j(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Bd(e.identifier));return r&&j(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&j(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Cf=(e,t)=>{if(!e)return!1;let n=A(e),r=new Set;if(S(n,e=>{if(!j(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return S(e,e=>{if(!j(e,`Identifier`)||n&&!Bd(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!D(a);){if(j(a,`ForOfStatement`)){let e=A(a.left);if(!j(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},wf=(e,t)=>{if(!j(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!j(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!j(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!j(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Tf=(e,t,n)=>{if(!j(e,`Identifier`)||!wf(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=y(e.identifier),i=r.parent;if(j(i,`ForOfStatement`)&&i.right===r||j(i,`MemberExpression`)&&i.object===r&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`push`&&j(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(j(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return j(i.id,`Identifier`)&&j(e,`VariableDeclaration`)&&e.kind===`const`?Tf(i.id,t,n):!1}return!1})):!1},Ef=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`)||!wf(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?A(i.initializer):null,o=e=>{if(!e)return!1;let t=A(e);if(j(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(j(t,`ArrayExpression`))return!0;if(!j(t,`CallExpression`))return!1;let n=A(t.callee);return!!(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Tf(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:j(a,`Identifier`)?Ef(a,t,n):null},Df=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Vd.get(t);if(i||(i=new Map,Vd.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Ef(e,t);return i.set(r.id,a),a},Of=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`)||!wf(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?A(i.initializer):null,o=e=>{if(!e)return!1;let t=A(e);return j(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):j(t,`ArrayExpression`)&&t.elements.every(e=>e===null||j(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?Tf(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:j(a,`Identifier`)?Of(a,t,n):null},kf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=Sf(n,t);if(r)return Of(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!D(a);)a=a.parent;if(!a||!D(a))return null;let o=a.parent;if(!j(o,`CallExpression`))return null;let s=A(o.callee);if(j(s,`MemberExpression`)&&!s.computed&&j(s.property,`Identifier`)){if(j(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return G(o.arguments[0],t);if(o.arguments?.[0]===a)return G(s.object,t)}return null},Aue=(e,t)=>{let n=Sf(e,t);return n?G(n.right,t):kf(e,t)},Af=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},jf=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=A(e);if(Af(i,G(a,t),n),!j(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!wf(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?A(o.initializer):null,l=null,u=n;if(j(c,`Identifier`))l=c;else if(j(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&j(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,b(c)??1/0))}else if(j(c,`CallExpression`)){let e=A(c.callee);if(j(e,`MemberExpression`)&&!e.computed&&j(e.property,`Identifier`)){let r=e.property.name,i=j(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=k(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,b(c)??1/0))}}if(!l)return i;for(let[e,n]of jf(l,t,u,s))Af(i,e,n);return i},Mf=(e,t)=>{let n=Sf(e,t);if(n)return jf(n.right,t);let r=e?A(e):null;if(!j(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&&!D(a);)a=a.parent;let o=a?.parent,s=j(o,`CallExpression`)?A(o.callee):null;return j(s,`MemberExpression`)?jf(s.object,t):new Map},Nf=(e,t,n)=>{let r=Hf(t.node,n);return r!==null&&Mf(e,n).has(r)},Pf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=Sf(n,t)?.right;return r?Df(r,t):null},Ff=(e,t)=>{if(!e)return!1;let n=A(e);return j(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},If=(e,t)=>{if(!e)return null;let n=A(e);if(!j(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`&&!Bd(e.identifier))?null:r.id},Lf=(e,t)=>{if(!j(e,`BreakStatement`)&&!j(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(j(n,`LabeledStatement`)&&n.label.name===e.label.name)return z(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return n===t;if(j(e,`BreakStatement`)&&j(n,`SwitchStatement`))return!1;n=n.parent}return!1},Rf=(e,t,n)=>{if(!(j(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=M(e),i=!1,a=!1;return S(t.body,o=>{if(i||a||o!==t.body&&D(o))return!1;if(j(o,`ReturnStatement`)||j(o,`ThrowStatement`)&&(!r||!rd(o,e,r,n))||j(o,`BreakStatement`)&&Lf(o,t))return i=!0,!1;if(j(o,`ContinueStatement`)&&Lf(o,t)&&(b(o)??-1)<(b(e)??0))return a=!0,!1}),!i&&!a},zf=(e,t,n)=>{let r=y(e).parent;return!!(j(r,`ExpressionStatement`)&&Rf(r,t,n))},Bf=(e,t,n)=>{let r=y(e),i=j(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!D(o);){if(j(o,`ForOfStatement`)){if(!Rf(i,o,n))return null;let e=G(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},jue=(e,t,n)=>Bf(e,t,n)!==null,Mue=e=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!j(t,`CallExpression`))return null;let n=A(t.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?null:j(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},Nue=(e,t)=>{let n=M(e);if(!n||!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return null;let r=Mue(n);if(!r)return null;if(j(n.body,`BlockStatement`)){let r=y(e),i=r.parent,a=i?.parent;if(!j(i,`VariableDeclarator`)||i.init!==r||!j(i.id,`Identifier`)||!j(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];S(n.body,e=>{if(e!==n.body&&D(e))return!1;j(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=j(s,`ReturnStatement`)&&s.argument?A(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!j(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!xf(e,[s],t))return null}else if(y(e)!==n.body)return null;let i=y(r),a=i.parent;return j(a,`VariableDeclarator`)&&a.init===i?G(a.id,t):null},Vf=(e,t)=>{let n=y(e),r=n.parent,i=j(r,`CallExpression`)?A(r.callee):null;if(!j(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!j(i,`MemberExpression`)||i.computed||!j(i.object,`Identifier`)||!j(i.property,`Identifier`)||i.property.name!==`push`||!wf(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?A(a.initializer):null;return a&&j(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Hf=(e,t)=>{let n=Vf(e,t);if(n)return`symbol:${n.id}`;let r=Nue(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(D(a))return null;if(j(a,`VariableDeclarator`)&&a.init===i)return G(a.id,t);i=a,a=i.parent}return null},Uf=(e,t)=>{if(!j(e.node,`CallExpression`))return null;let n=A(e.node.callee);if(!j(n,`MemberExpression`)||n.computed)return null;let r=A(n.object);if(!wf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=A(n.callee);return j(r,`MemberExpression`)&&!r.computed&&j(r.object,`Identifier`)&&j(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(M(o)!==M(e.node)||!xf(e.node,[o],t))return null;let s=A(o.callee);if(!j(s,`MemberExpression`)||!j(s.object,`Identifier`)||!wf(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?A(c.initializer):null;return!c||!j(l,`ArrayExpression`)||(l.elements?.length??0)!==0||M(c.declarationNode)!==M(e.node)?null:c.references.every(e=>{let t=y(e.identifier),n=t.parent;if(j(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!j(r,`MemberExpression`)||r.object!==t||r.computed||!j(r.property,`Identifier`)||!j(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?G(s.object,t):null},Wf=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&j(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!Bd(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&D(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`&&!Bd(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!Bd(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),Wf(i.initializer,t,n))},Pue=(e,t)=>{let n=Wf(e,t);return j(n,`ObjectExpression`)?n:null},Gf=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=Pue(n,t);if(!r)return null;for(let e of r.properties??[]){if(!j(e,`Property`)||P(e)!==`signal`)continue;let n=G(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Kf=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)&&n.property.name===`signal`)return G(n.object,t);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?A(r.initializer):null;if(j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`signal`)return G(i.object,t);let a=r.bindingIdentifier.parent;return!j(a,`Property`)||P(a)!==`signal`||!j(a.parent,`ObjectPattern`)||!j(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:G(a.parent.parent.init,t)},Fue=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node,r=M(e.node);if(!r||!D(r))return null;let i=null;return S(r.body,a=>{if(i||a!==r.body&&D(a))return!1;if(!j(a,`CallExpression`)||fr(a)!==`addEventListener`)return;let o=A(a.callee);if(!j(o,`MemberExpression`))return;let s=a.arguments[0]?A(a.arguments[0]):null;if(!j(s,`Literal`)||s.value!==`abort`)return;let c=Kf(o.object,t);if(!c)return;let l=Wf(a.arguments[1],t);if(!l||!D(l)||l.async||l.generator)return;let u=[];if(S(l.body,r=>{if(r!==l.body&&D(r))return!1;if(!j(r,`CallExpression`))return;let i=A(r.callee);!j(i,`MemberExpression`)||fr(r)!==`removeEventListener`||Zd(i.object,t)!==e.receiverKey||Zd(r.arguments[0],t)!==e.eventKey||Zd(r.arguments[1],t)!==e.handlerKey||!ef(n.arguments[2],r.arguments[2],t,!0)||u.push(r)}),po(l,u,t))return i=c,!1}),i},Iue=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?A(e.node.arguments[0]):null,r=A(e.node.callee);return j(n,`Literal`)&&n.value===`abort`&&j(r,`MemberExpression`)?Kf(r.object,t):null},qf=e=>{let t=D(e)?e:M(e);if(!t||!D(t)||t.async||t.generator)return null;let n=t.parent;if(!j(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=A(n.callee);return j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Jf=e=>{let t=y(e),n=t.parent;return j(n,`CallExpression`)&&n.callee===t?n:null},Yf=(e,t,n)=>{let r=Rc(e);if(!r||Wf(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=Jf(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return M(o)===t&&H(o,n)?o:null},Xf=(e,t)=>{if(!j(e,`NewExpression`))return!1;let n=A(e.callee);return j(n,`Identifier`)&&fn.has(n.name)&&t.scopes.isGlobalReference(n)},Lue=(e,t)=>{if(!e)return!0;let n=A(e);return j(n,`Literal`)&&n.value===null||j(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},Rue=(e,t,n,r)=>{if(!D(e)||e.async||e.generator||n.receiverKey===null||!j(n.node,`CallExpression`))return null;let i=A(n.node.callee),a=j(i,`MemberExpression`)?A(i.object):null;if(!a||!j(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!j(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||M(s)!==t||!Lue(s.init,r))return null;let c=[];for(let e of o.references){let t=y(e.identifier),n=t.parent;if(j(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!j(r,`MemberExpression`)||r.object!==t||!j(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(P(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!Xf(A(l.right),r)||M(l)!==e||!rd(l,n.node,e,r))return null;let u=[],d=b(l);if(d===null||(S(e.body,t=>{if(t!==e.body&&D(t))return!1;if(!j(t,`CallExpression`))return;let i=b(t);i===null||i>=d||!qp(t,n,r)||u.push(ap(t,e,n.receiverKey??``,r)??t)}),!po(e,u,r)))return null;let f=Rc(e),p=f?r.scopes.symbolFor(f):null;if(!p)return null;let m=[];for(let n of p.references){let i=Jf(n.identifier);if(i&&M(i)===t){m.push(i);continue}let a=y(n.identifier),o=a.parent;if(!o||!Xf(o,r)||M(o)!==e||!o.arguments.some(e=>e===a))return null}let h=m.length===1?m[0]:null;return h&&H(h,r)?h:null},Zf=(e,t,n,r)=>{let i=M(e);return!i||i===t?e:Yf(i,t,n)??(r?Rue(i,t,r,n):null)??e},zue=(e,t,n)=>{if(!D(e))return[];let r=Rc(e),i=G(r,n);if(!i)return[];let a=[];return S(t,e=>{if(e!==t&&D(e))return!1;let o=j(e,`CallExpression`)?e.arguments[1]:null;j(e,`CallExpression`)&&fr(e)===`addEventListener`&&(G(o,n)===i||j(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},Bue=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?A(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!j(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>Bd(e.identifier));if(o.length!==1)return null;let s=o[0],c=y(s.identifier),l=c.parent;if(!j(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||M(l)!==M(t.node)||!xf(t.node,[l],n))return null;let u=A(l.right);return D(u)?u:null},Qf=(e,t,n,r)=>{if(!D(e)||!j(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=j(a,`AssignmentPattern`)?A(a.left):a;if(!j(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=y(e.identifier),n=t.parent;return j(n,`AssignmentExpression`)&&n.left===t||j(n,`UpdateExpression`)&&n.argument===t||j(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){j(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}j(o,`SpreadElement`)||i.set(c.id,o)}return i},Vue=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=j(e,`ChainExpression`)?e.expression:e,i=j(r,`CallExpression`)?A(r.callee):null,a=j(r,`CallExpression`)?r.arguments[0]:null,o=Hf(t.node,n);if(!j(r,`CallExpression`)||!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`forEach`||!j(a,`Identifier`)||!ze.has(a.name)||!n.scopes.isGlobalReference(a)||o===null||o!==G(i.object,n))return!1;let s=jf(i.object,n);return s.has(o)&&!Gp(t.node,r,s,n)},$f=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!D(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];S(e.body,c=>{if(o||c!==e.body&&D(c)&&!hd(c))return!1;let l=j(c,`ChainExpression`)?c.expression:c;if(Vue(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(qp(c,t,n,i)){let r=qf(c),u=j(l,`CallExpression`)?A(l.callee):null,d=j(u,`MemberExpression`)?u.object:u,f=Sf(d,n),p=Aue(d,n),m=Mf(d,n),h=Uf(t,n)??Hf(t.node,n);if(p!==null&&M(c)!==e){let e=M(c);r&&e&&D(e)&&h!==null&&m.has(h)&&po(e,[c],n)&&!Gp(t.node,c,m,n)&&s.push(r);return}let g=Sf(j(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=op(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=Bf(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&j(t.node,`CallExpression`)?new Set([A(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=j(e,`MemberExpression`)?Yd(e.object,n):k(e)?Yd(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(zf(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!Gp(t.node,c,m,n))&&s.push(_??g);return}if(!j(l,`CallExpression`))return;let u=Wf(l.callee,n),d=j(u,`Identifier`)?Bue(u,t,n):u?Qp(u,n):null,f=d&&D(d)?Qf(d,l,n,i):null;if(d&&D(d)&&f&&!d.async&&!d.generator&&$f(d,t,n,new Set(r),f,a)){let r=op(c,e,t,n,i)??Uue(c,e,t,n);s.push(r??l)}});let c=y(e.body);return a&&s.some(e=>y(e)===c)?!0:o||po(e,s,n)},ep=(e,t,n)=>e.length>0&&e.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);return!!(r&&D(r)&&$f(r,t,n,new Set,new Map,!0))}),tp=(e,t,n)=>{let r=A(e);if(!j(r,`CallExpression`))return!1;let i=A(r.callee);if(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=A(i.object);if(!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`))return!1;let o=G(a.object,n);if(o===null||o!==G(r.arguments?.[0],n))return!1;let s=a.property.name;return mf(o,s,t,n)?!0:t.kind===`socket`?lf(o,t,n)&&(Ip.has(s)||Fp.has(s)):t.kind===`subscribe`&&lf(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||At.has(s))},np=(e,t,n,r=!1)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(tp(e,t,n))return!0;let r=Wf(e,n),i=Qp(e,n);return r&&tp(r,t,n)?!0:!!(i&&D(i)&&$f(i,t,n))};if(!j(e.body,`BlockStatement`))return i(A(e.body));let a=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&i(A(e.argument))&&a.push(e)}),r?xf(Zf(t.node,e,n,t),a,n):po(e,a,n)},rp=(e,t,n,r=new Map)=>{let i=G(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=A(e);if(!j(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return G(a.left,n,new Set,r)===t&&o(a.right)||G(a.right,n,new Set,r)===t&&o(a.left)},ip=(e,t,n,r)=>{let i=A(e),a=e=>{let t=A(e);if(j(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&j(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(j(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(j(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Cn(A(t))===!1)return!0}if(j(i,`UnaryExpression`)&&i.operator===`!`){let e=A(i.argument);if(j(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Cn(A(i))===!0)return!0}let a=G(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:rp(i.argument,t,n,r)}if(j(i,`LogicalExpression`)){let e=ip(i.left,t,n,r),a=ip(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(j(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?G(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},ap=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(j(a,`IfStatement`)){if(!rp(a.test,n,r,i)||!xf(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(D(t)&&j(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(j(a,`IfStatement`)&&a.alternate===null&&Ad(a.consequent)&&ip(a.test,n,r,i))return a}}return o},op=(e,t,n,r,i=new Map)=>n.handleKey===null?null:ap(e,t,n.handleKey,r,i),Hue=(e,t,n,r)=>{if(!D(t)||n.handleKey===null)return null;let i=e=>{let t=A(e);return j(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(j(a,`IfStatement`)&&z(e,a.consequent)&&(o=i(a.test).map(e=>G(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!j(a,`IfStatement`)||!o)return null;let s=W(n.node,r.scopes);if(!s){let e=M(n.node);for(;e&&!Mc(e);)e=M(e);s=e}if(!s||!D(s))return null;let c=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(S(s.body,e=>{if(!j(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=G(e.left,r);t===o&&l.push(e),t===n.handleKey&&j(A(e.right),`CallExpression`)&&fr(A(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=tf(l[0].left,r),f=d?.initializer?A(d.initializer):null,p=j(f,`CallExpression`)&&f.arguments[0]&&k(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(rp(e,o,r))return!0;let t=!1;return S(e,e=>{if(t)return!1;if(j(e,`MemberExpression`)&&G(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Rc(M(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||n.callee!==t)return!1;let i=M(n);if(!i||!D(i))return!1;if($p(n,l.filter(e=>M(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(j(a,`IfStatement`)&&z(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=M(e);return!t||!D(t)?!1:$p(e,l.filter(e=>M(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!D(e))return!1;let t=e.parent,i=t?.parent;return!!(j(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&j(i,`AssignmentExpression`)&&G(i.left,r)===n.handleKey)},_=t=>{let i=M(t);if(!i||!D(i))return!1;if(g(i))return!0;let a=[];return S(i.body,t=>{if(t!==i.body&&D(t))return!1;(t===e||wp(t,n,r))&&a.push(t)}),$p(t,a,i,r)||xf(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},sp=new WeakMap,cp=new WeakMap,Uue=(e,t,n,r)=>{let i=sp.get(e);if(i||(i=new WeakMap,sp.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=cp.get(e);if(a||(a=new WeakSet,cp.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=Hue(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},lp=(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=j(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||j(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||j(o,`LogicalExpression`)&&o.right===a||j(o,`AssignmentPattern`)&&o.right===a||(j(o,`ForStatement`)||j(o,`ForInStatement`)||j(o,`ForOfStatement`)||j(o,`WhileStatement`)||j(o,`DoWhileStatement`))&&o.body===a?a:j(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},Wue=(e,t,n,r=!1)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=b(t.node);if(!i||!a||o===null)return!1;let s=[];return Pd(e.body,c=>{if(!j(c,`CallExpression`))return;let l=b(c),u=op(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&lp(c,t.node,e))return;if(qp(c,t,n)){s.push(u??c);return}let f=Qp(c.callee,n),p=f&&D(f)?Qf(f,c,n,new Map):null;f&&D(f)&&p&&$f(f,t,n,new Set,p)&&s.push(u??c)}),r?$p(t.node,s,e,n):po(e,s,n)},Gue=(e,t,n)=>{let r=M(e);if(!r||!j(r,`ArrowFunctionExpression`)&&!j(r,`FunctionExpression`)&&!j(r,`FunctionDeclaration`))return!1;let i=!1;return S(r.body,a=>{if(i)return!1;if(!j(a,`CallExpression`)||M(a)!==r||!qd(a,n))return;let o=pr(a);if(o&&o!==e&&np(o,t,n))return i=!0,!1}),i},Kue=(e,t,n)=>t.handleKey!==null&&Gue(e,t,n)&&Wue(e,t,n,t.registrationVerbName===`setTimeout`),up=(e,t,n,r)=>{let i=A(e);if(j(i,`UnaryExpression`)&&i.operator===`!`)return up(i.argument,!t,n,r);if(j(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...up(i.left,t,n,r),...up(i.right,t,n,r)]:[];if(j(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Cn(i.left),a=Cn(i.right),o=e??a,s=e===null?i.left:i.right,c=G(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:j(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=G(i,r);return a===null?[]:[{bindingIdentifier:j(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},dp=(e,t,n,r=!1)=>{if(!D(e)||e.async&&!r)return[];let i=[];S(e.body,r=>{if(r!==e.body&&D(r))return!1;j(r,`IfStatement`)&&!r.alternate&&!rd(r.consequent,t,e,n)&&$p(t,[r],e,n)&&i.push(...up(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)j(o,`IfStatement`)&&o.consequent===a&&i.push(...up(o.test,!1,o,n)),a=o,o=o.parent;return i},fp=(e,t,n)=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);if(!r||!D(r)||r.async||r.generator)return!1;let i=!1;return S(r.body,e=>{if(i||e!==r.body&&D(e))return!1;if(j(e,`AssignmentExpression`)&&e.operator===`=`&&G(e.left,n)===t.key&&Cn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},pp=(e,t,n,r)=>{let i=b(t);if(!D(e)||i===null)return!0;let a=!1;return S(e.body,t=>{if(a||t!==e.body&&D(t))return!1;let o=b(t);if(o===null||o>=i)return;let s=j(t,`AssignmentExpression`)?t.left:j(t,`UpdateExpression`)?t.argument:null;if(s&&G(s,r)===n.key)return a=!0,!1}),a},que=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(j(a,`TryStatement`)&&a.block===i&&a.handler&&rd(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},mp=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!j(i.declarationNode,`VariableDeclarator`)||M(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Bd(e.identifier))return!0;let r=y(e.identifier),i=r.parent;return j(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Cn(i.right)===t.value&&n.includes(M(i)??i)})},Jue=(e,t,n,r)=>{let i=[];S(t.guardNode,e=>{if(i.length===0&&j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&j(e.property,`Identifier`)&&G(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?A(o.initializer):null;if(!o||o.kind!==`const`||!j(o.declarationNode,`VariableDeclarator`)||M(o.declarationNode)!==e||!j(s,`ObjectExpression`)||s.properties.length!==1)return!1;let c=s.properties[0];return!j(c,`Property`)||P(c)!==P(a)||Cn(c.value)!==!t.value?!1:o.references.every(e=>{let i=Tp(e.identifier);if(!j(i,`MemberExpression`)||G(i,r)!==t.key)return!1;if(!Bd(e.identifier))return!0;let a=i.parent;return j(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&Cn(a.right)===t.value&&n.includes(M(a)??a)})},hp=(e,t,n,r)=>{if(!D(e))return!0;let i=b(t.guardNode),a=b(n);if(i===null||a===null)return!0;let o=!1;return S(e.body,t=>{if(o||t!==e.body&&D(t))return!1;let s=b(t);if(!(s===null||s<=i||s>=a)&&(j(t,`AwaitExpression`)||j(t,`YieldExpression`)||j(t,`CallExpression`)&&!yo(t,r.scopes))&&(rd(t,n,e,r)||que(t,n,e,r)))return o=!0,!1}),o},Yue=(e,t,n,r,i)=>{let a=y(t),o=j(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:Yf(t,e,i);if(!D(t)||!t.async||t.generator||!o||M(o)!==e||!yd(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(j(s,`ForStatement`)||j(s,`ForInStatement`)||j(s,`ForOfStatement`)||j(s,`WhileStatement`)||j(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,i);return t&&D(t)?[t]:[]});return c.length===r.length?dp(t,n,i,!0).some(a=>(mp(e,a,c,i)||Jue(e,a,c,i))&&!hp(t,a,n,i)&&!pp(t,n,a,i)&&r.every(e=>fp(e,a,i))):!1},gp=(e,t)=>{let n=jd(A(e),t.scopes),r=n?.initializer?A(n.initializer):null;if(!j(r,`CallExpression`))return null;let i=r.arguments?.[0]?A(r.arguments[0]):null;return!j(i,`Literal`)||typeof i.value!=`number`?null:G(e,t)},_p=(e,t)=>{let n=A(e);if(j(n,`LogicalExpression`)&&n.operator===`||`)return _p(n.left,t)??_p(n.right,t);if(!j(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=gp(n.left,t),i=gp(n.right,t),a=A(r?n.right:n.left),o=r??i;return o&&j(a,`Identifier`)?o:null},vp=(e,t,n)=>{if(!D(e))return null;let r=null;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(!j(i,`IfStatement`)||i.alternate)return;let a=_p(i.test,n);!a||rd(i.consequent,t,e,n)||!$p(t,[i],e,n)||(r=a)}),r},Xue=(e,t,n)=>{if(j(e,`UpdateExpression`)&&G(e.argument,n)===t)return!0;if(!j(e,`AssignmentExpression`)||G(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=A(e.right);return j(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Zue=(e,t,n)=>{if(!D(e))return!1;let r=!1;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(Xue(i,t,n))return r=!0,!1}),r},yp=(e,t,n)=>e.length>0&&e.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);return!!(r&&D(r)&&$f(r,t,n))}),Que=(e,t)=>{let n=G(e,t),r=A(e);if(!j(r,`Identifier`))return n;let i=Wf(r,t);return i&&i!==r?G(i,t)??n:n},$ue=(e,t,n)=>{let r=A(e);if(!j(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=A(e),a=A(r);if(!(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||Que(i.object,n)!==t||!j(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},ede=(e,t,n)=>{if(!D(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];S(e.body,r=>{if(r!==e.body&&D(r))return!1;if(!j(r,`IfStatement`)||r.alternate!==null||!Ad(r.consequent)||!$p(t.node,[r],e,n))return;let o=$ue(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=W(t.node,n.scopes);if(!l){let e=M(t.node);for(;e&&!Mc(e);)e=M(e);l=e}if(!s||!l||!D(l))return!1;let u=new Set,d=!1;return S(l.body,e=>{if(d)return!1;if(!j(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=G(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=A(e.right);if(j(r,`Literal`)&&r.value===null)return;let a=Wf(r,n);if(!a||!j(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>j(e,`Property`)&&P(e)===s),c=j(o,`Property`)?A(o.value):null;if(!c||!j(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},tde=(e,t,n)=>{if(!D(e)||t.handleKey===null)return!1;let r=b(t.node);if(r===null)return!1;let i=e=>{let t=A(e);return j(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=A(e),r=G(t,n);if(r)return r;if(!j(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?G(a,n):null},o=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!D(e))return!1;let r=e.parent,i=r?.parent;return!!(j(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&fr(r)===`setTimeout`&&j(i,`AssignmentExpression`)&&G(i.left,n)===t.handleKey)},c=e=>{let r=M(e);if(!r||!D(r))return!1;let i=[];return S(r.body,a=>{if(a!==r.body&&D(a))return!1;let o=b(a),s=b(e);o!==null&&s!==null&&o<s&&wp(a,t,n)&&i.push(op(a,r,t,n)??a)}),$p(e,i,r,n)},l=null,u=null,d=null,f=null;if(S(e.body,o=>{if(l||!j(o,`IfStatement`))return;let s=b(o);if(s===null||s>=r||rd(o.consequent,t.node,e,n))return;let c=i(o.test),p=c.map(a).filter(e=>e!==null);if(p.includes(t.handleKey??``)){u=p.find(e=>e!==t.handleKey)??null;for(let e of c){let t=A(e);if(!j(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=G(t.left,n),i=G(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let p=W(t.node,n.scopes);if(!p){let e=M(t.node);for(;e&&!Mc(e);)e=M(e);p=e}if(!p||!D(p))return!1;let m=[],h=[],g=[],_=[];if(S(p.body,e=>{if(j(e,`AssignmentExpression`)){let r=G(e.left,n);r===u&&m.push(e),r===d&&h.push(e),r===f&&g.push(e),r===t.handleKey&&j(A(e.right),`CallExpression`)&&fr(A(e.right))===`setTimeout`&&_.push(e)}j(e,`UpdateExpression`)&&G(e.argument,n)===f&&g.push(e)}),_.length===0)return!1;let v=m.length>0?tf(m[0].left,n)?.initializer:null,ee=v&&j(v,`CallExpression`)?v.arguments[0]:null;return!(!ee||!k(ee)||!o(ee)||!_.every(e=>{let t=M(e);return!t||!D(t)?!1:$p(e,m.filter(e=>M(e)===t&&!o(e.right)),t,n)})||m.filter(e=>o(e.right)&&!s(M(e)??e)&&!c(e)).length>0||h.some(e=>G(e.right,n)!==f)||g.some(e=>!c(e)))},bp=(e,t,n)=>{let r=t.handleKey;if(!D(e)||r===null)return!1;let i=b(t.node);if(i===null)return!1;let a=!1,o=[];return S(e.body,s=>{if(a||s!==e.body&&D(s))return!1;if(j(s,`IfStatement`)&&!s.alternate&&rp(s.test,r,n)&&!rd(s.consequent,t.node,e,n)&&$p(t.node,[s],e,n))return a=!0,!1;let c=b(s);if(c===null||c>=i||!wp(s,t,n))return;let l=op(s,e,t,n);o.push(l??s)}),a||tde(e,t,n)||ede(e,t,n)||$p(t.node,o,e,n)},xp=(e,t)=>e.kind===`subscribe`?e.handlerKey??G(yf(e),t):e.kind!==`timer`||!j(e.node,`CallExpression`)?null:G(e.node.arguments?.[0],t),Sp=(e,t)=>{let n=Rc(e);return new Set([G(e,t),G(n,t)].filter(e=>e!==null))},Cp=(e,t,n,r)=>ep(n,t,r)&&xf(Zf(t.node,e,r),n,r),wp=(e,t,n)=>{if(qp(e,t,n))return!0;let r=j(e,`ChainExpression`)?e.expression:e;if(!j(r,`CallExpression`))return!1;let i=Wf(r.callee,n),a=D(i)?i:Qp(r.callee,n),o=a&&D(a)?Qf(a,r,n,new Map):null;return!!(a&&D(a)&&o&&!a.async&&!a.generator&&$f(a,t,n,new Set,o,!0))},nde=(e,t,n)=>{let r=A(e);if(j(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&j(e.declarationNode,`VariableDeclarator`)&&M(e.declarationNode)===t?e:null}let i=jd(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;j(a,`MemberExpression`);)a=A(a.object);if(!j(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?A(o.initializer):null;return o&&o.kind===`const`&&j(o.declarationNode,`VariableDeclarator`)&&j(s,`ObjectExpression`)&&M(o.declarationNode)===t?o:null},Tp=e=>{let t=e;for(;j(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return y(t)},rde=(e,t)=>{let n=new Set,r=new Set,i=xp(e,t);if(i&&n.add(i),e.kind!==`timer`||!j(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!j(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?M(o.bindingIdentifier):null;if(!o||!s||!D(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=Rc(s),u=l?t.scopes.symbolFor(l):null;if(c<0||!u)return n;for(let e of u.references){let i=Jf(e.identifier);if(!j(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!k(a))return n;let o=G(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},Ep=(e,t,n,r)=>{if(!D(e)||t.handleKey===null)return!1;let i=Sp(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||M(n.node)===e)return!1;let a=rde(n,r);return[...i].some(e=>a.has(e))})},ide=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Jf(n.identifier),s=r?M(r):null;if(!r||!s||!D(s))return!1;if(s===e)o+=1;else if(!Ep(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=>!rd(n,t,e,i)&&!rd(t,n,e,i))))},ade=(e,t,n,r,i)=>t.references.every(t=>{let a=Tp(t.identifier);if(G(a,i)!==e.handleKey)return j(n.left,`Identifier`);if(!Bd(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!j(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=A(o.right),c=M(o),l=r.find(t=>t.kind===`timer`&&t.node===s&&t.handleKey===e.handleKey),u=M(e.node),d=u?Sp(u,i):new Set;if(l&&(c&&Ep(c,e,r,i)||d.has(xp(l,i)??``)))return!0;if(l&&c===u){let t=y(o).parent,n=t?.parent;if(!j(t,`ExpressionStatement`)||!j(n,`BlockStatement`))return!1;let r=n.body[n.body.findIndex(e=>e===t)-1],a=j(r,`ExpressionStatement`)?A(r.expression):null;return!!(j(a,`CallExpression`)&&j(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&qp(a,e,i))}if(!(j(s,`Literal`)&&s.value===null||j(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s))||!c||!D(c))return!1;if(Ep(c,e,r,i))return!0;let f=[];return S(c.body,t=>{if(t!==c.body&&D(t))return!1;wp(t,e,i)&&f.push(t)}),$p(o,f,c,i)}),ode=(e,t,n)=>{let r=Vf(t.node,n);return!!(r&&M(r.declarationNode)===e)},sde=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=Sp(t,r);if(!i.has(xp(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&M(e.node)===t&&i.has(xp(e,r)??``));return a.length===1&&a[0]===e},cde=(e,t,n,r,i)=>{let a=M(t.node),o=y(t.node),s=o.parent,c=t.handleKey!==null&&j(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?nde(s.left,e,i):null,l=ode(e,t,i);if(t.kind!==`timer`||!a||!D(a)||a===e||a.async||a.generator||!c&&!l||!ep(r,t,i)||c&&j(s,`AssignmentExpression`)&&!ade(t,c,s,n,i))return!1;if(Ep(a,t,n,i))return!0;let u=Rc(a),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.length===1?Jf(d.references[0].identifier):null,p=sde(t,a,n,i);if(c&&!p&&!bp(a,t,i)&&!f&&!ide(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(j(m,`ForStatement`)||j(m,`ForInStatement`)||j(m,`ForOfStatement`)||j(m,`WhileStatement`)||j(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&z(e.identifier,t.node)&&xp(t,i)===G(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=bd(e,i.scopes);return d.references.every(o=>{let s=G(o.identifier,i),c=y(o.identifier).parent;if(h.some(e=>e===o))return!0;let l=n.find(e=>e!==t&&s!==null&&xp(e,i)===s&&(z(o.identifier,e.node)||c&&qp(c,e,i))),u=l?yf(l):null;if(l&&!(u&&D(u)&&u.async)&&Cp(e,l,r,i))return!0;let d=Jf(o.identifier);if(!d)return!1;let f=M(d);if(!f||!D(f)||f===a||f.generator)return!1;if(f.async)return Yue(e,f,d,r,i);if(Ep(f,t,n,i))return!0;if(f===e)return xf(Zf(d,e,i),r,i);let p=Sp(f,i),m=n.find(e=>{if(e===t)return!1;let n=yf(e),r=n?Wf(n,i):null;return p.has(xp(e,i)??``)||r===f});return m?Cp(e,m,r,i):g.has(f)&&xf(Zf(d,e,i),r,i)})},lde=(e,t,n,r,i,a)=>{let o=Jf(e);if(o){let e=M(o);if(e&&e!==t&&bd(r).has(e))return{generationKey:null};let n=e?vp(e,o,a):null;return n?{generationKey:n}:null}let s=y(e),c=s.parent;if(!j(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!j(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:cf(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=vp(t,n,a);return l.handleKey!==null&&yp(i,l,a)&&u?{generationKey:u}:null},ude=(e,t,n,r)=>{let i=M(t.node),a=y(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!D(i)||i===e||i.async||i.generator||!j(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!jd(A(o.left),r.scopes)||!bd(e).has(i)||!yp(n,t,r)||!po(e,n,r))return!1;let s=n.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,r);return t&&D(t)?[t]:[]}),c=Rc(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>lde(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`?[...bd(e),...s].some(e=>Zue(e,f,r)):!1},dde=(e,t,n,r)=>{if(ude(e,t,n,r))return!0;let i=M(t.node),a=i?_d(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!D(i)||i===e||i.async||i.generator||!j(t.node,`CallExpression`)||!j(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!yd(e,r.scopes).has(i)||!xf(a,n,r))return!1;let o=y(t.node),s=o.parent;if(!j(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!j(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!j(c.declarationNode,`VariableDeclarator`)||M(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,r);return t&&D(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!D(e))return!1;let n=[];if(S(e.body,i=>{if(i!==e.body&&D(i))return!1;if(j(i,`CallExpression`)&&j(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&qp(i,t,r)){let a=op(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!po(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>Bd(e.identifier)),f=d.some(e=>y(e.identifier).parent===s),p=t.node.arguments,m=d.some(e=>{let t=y(e.identifier),n=t.parent;if(n===s)return!1;if(!j(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=A(n.right);if(!(j(i,`Literal`)&&i.value===null||j(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=M(n);if(a&&D(a)&&p.some(e=>{let t=A(e);return D(t)&&t===a}))return!1;let o=M(n),c=o?u.get(o):void 0;return!(o&&c&&$p(n,c.map(e=>e.handleGuard&&z(n,e.handleGuard.consequent)?e.call:e.anchor),o,r))});if(!f||m)return!1;let h=t.node.parent;for(;h&&h!==i;){if(j(h,`ForStatement`)||j(h,`ForInStatement`)||j(h,`ForOfStatement`)||j(h,`WhileStatement`)||j(h,`DoWhileStatement`))return!1;h=h.parent}let g=!1;for(let e of t.node.arguments??[])S(e,e=>{if(g||D(e))return!1;if(j(e,`AwaitExpression`)||j(e,`YieldExpression`)||j(e,`CallExpression`)&&!yo(e,r.scopes))return g=!0,!1});return g?!1:dp(i,t.node,r).some(a=>mp(e,a,l,r)&&!hp(i,a,t.node,r)&&!pp(i,t.node,a,r)&&n.every(e=>fp(e,a,r)))},fde=(e,t,n)=>{if(!D(e)||!j(e.body,`BlockStatement`))return!1;let r=new Set;if(S(e.body,e=>{if(!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||fr(e)!==`push`||!j(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!k(a))return;let o=A(a),s=D(o)?o:Wf(a,n);if(!s||!D(s))return;let c=!1;if(S(s.body,e=>{if(c||e!==s.body&&D(e))return c?!1:void 0;if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let i=j(t.node,`CallExpression`)?t.node:null;if(fr(e)===`removeEventListener`&&i&&Zd(r.object,n)===t.receiverKey&&Zd(e.arguments[0],n)===t.eventKey&&Zd(e.arguments[1],n)===t.handlerKey&&ef(i.arguments[2],e.arguments[2],n,!0))return c=!0,!1}),!c)return;let l=y(t.node),u=l.parent,d=y(e),f=d.parent;if(!u||!j(u,`ExpressionStatement`)||u.expression!==l||!f||!j(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!j(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?A(m.initializer):null;m?.kind!==`const`||!h||!j(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=y(e.identifier);if(j(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!j(n,`MemberExpression`)||n.object!==t)return!1;let r=y(n).parent;return!!(r&&j(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(P(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return Pd(e.body,e=>{if(i||!j(e,`ReturnStatement`)||!e.argument)return;let t=A(e.argument),a=D(t)?t:Wf(e.argument,n);!a||!D(a)||S(a.body,e=>{if(i)return!1;if(!j(e,`CallExpression`))return;let t=A(e.callee);if(j(t,`Identifier`)){let a=Sf(t,n),o=a?A(a.right):null,s=j(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&zf(e,a,n))return i=!0,!1}if(!j(t,`MemberExpression`)||fr(e)!==`forEach`||!j(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!k(o))return;let s=A(o);if(!D(s))return;let c=s.params[0];if(!c||!j(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return S(s.body,e=>{if(j(e,`CallExpression`)&&j(A(e.callee),`Identifier`)&&n.scopes.symbolFor(A(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},pde=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!j(t.node,`CallExpression`))return!1;let r=A(t.node.callee);if(!j(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=Yd(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Zd(r.object,n),s=Zd(t.node.arguments[0],n),c=Zd(t.node.arguments[1],n),l=$d(t.node.arguments[2],n,!0),u=!1;return S(e,e=>{if(u||!j(e,`CallExpression`))return u?!1:void 0;if(fr(e)!==`removeEventListener`)return;let r=A(e.callee);if(j(r,`MemberExpression`)&&!(Zd(r.object,n)!==o||Zd(e.arguments[0],n)!==s||Zd(e.arguments[1],n)!==c||$d(e.arguments[2],n,!0)!==l)&&Up(e,a,n)&&!Gp(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},Dp=(e,t)=>{let n=A(e);return j(n,`MemberExpression`)?tf(n,t):null},Op=(e,t)=>{let n=A(e);if(j(n,`LogicalExpression`)&&n.operator===`||`){let e=Op(n.left,t),r=Op(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(j(n,`UnaryExpression`)&&n.operator===`!`){let e=Dp(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(j(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=Dp(n.left,t),r=Dp(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},mde=(e,t)=>{let n=A(e);if(!j(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=Dp(n.left,t),i=Dp(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},kp=(e,t,n,r=new Set)=>{if(!D(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!j(a,`BlockStatement`)){let e=A(a);if(!j(e,`CallExpression`))return null;let r=Wf(e.callee,n);return r?kp(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!j(r,`VariableDeclaration`)){if(j(r,`ExpressionStatement`)){let o=A(r.expression);if(j(o,`AssignmentExpression`)){let e=G(o.left,n),r=A(o.right),i=j(r,`Literal`)&&r.value===null||j(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(j(o,`CallExpression`)&&e===a.body.length-1){let e=Wf(o.callee,n);return e?kp(e,t,n,i):null}return null}return j(r,`IfStatement`)?Ad(r.consequent)?Op(r.test,n):!r.alternate&&e===a.body.length-1?mde(r.test,n):null:null}}return null},Ap=(e,t,n,r=new Set)=>{if(!D(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return S(e.body,r=>{if(a||r!==e.body&&D(r))return!1;if(j(r,`UpdateExpression`))return tf(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(j(r,`AssignmentExpression`))return tf(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?Cn(A(r.right))===!1:Cn(A(r.right))!==!0))?(a=!0,!1):void 0;if(!j(r,`CallExpression`))return;let o=Wf(r.callee,n);if(o&&Ap(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},hde=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!j(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&k(n)?A(n):null,i=r?D(r)?r:Wf(r,t):null;if(!i)return!1;let a=kp(i,e,t);if(!a)return!1;let o=W(e.node,t.scopes);if(!o){let t=M(e.node);for(;t&&!Mc(t);)t=M(t);o=t}if(!o||!D(o))return!1;let s=!1;return S(o.body,e=>{if(s)return!1;if(!j(e,`CallExpression`)||!qd(e,t))return;let n=pr(e);!n||!D(n)||Pd(n.body,e=>{if(s||!j(e,`ReturnStatement`)||!e.argument)return;let n=Wf(e.argument,t);n&&Ap(n,a,t)&&(s=!0)})}),s},gde=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!D(e)||!j(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&k(r)?A(r):null,a=i?D(i)?i:Wf(i,n):null;if(!a)return!1;let o=kp(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return S(e.body,t=>{if(t!==e.body&&D(t))return!1;if(j(t,`UpdateExpression`)&&tf(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}j(t,`AssignmentExpression`)&&t.operator!==`=`&&tf(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),$p(t.node,s,e,n)},jp=(e,t)=>{if(hde(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!j(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!k(n))return!1;let r=A(n),i=D(r)?r:Wf(n,t);if(!i||!D(i)||!j(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!j(a,`IfStatement`)||!Ad(a.consequent))return!1;let o=A(a.test);for(;j(o,`LogicalExpression`)&&o.operator===`||`;)o=A(o.left);if(!j(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=jd(A(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=M(e.node),l=null;for(;c;){let e=c.parent;if(e&&j(e,`CallExpression`)&&qd(e,t)){l=e;break}c=M(c)}let u=W(l||e.node,t.scopes);if(!u){let t=M(e.node);for(;t&&!Mc(t);)t=M(t);u=t}if(!u||!D(u))return!1;let d=!1;return S(u.body,e=>{if(d)return!1;if(!j(e,`CallExpression`)||!qd(e,t))return;let n=pr(e);if(!n||!D(n))return;let r=A(n.body);D(r)&&S(r.body,e=>{if(j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&Cn(A(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),Pd(n.body,e=>{if(d||!j(e,`ReturnStatement`)||!e.argument)return;let n=Wf(e.argument,t);!n||!D(n)||S(n.body,e=>{if(j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&Cn(A(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},_de=(e,t,n)=>{let r=M(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!r||!hd(r)||!D(e)||!j(e.body,`BlockStatement`))return!1;let i=[];return Pd(e.body,e=>{if(!j(e,`ReturnStatement`)||!e.argument)return;let r=Qp(e.argument,n);if(!r||!D(r))return;let a=[];S(r.body,e=>{if(e!==r.body&&D(e))return!1;let i=j(e,`ChainExpression`)?e.expression:e,o=j(i,`CallExpression`)?A(i.callee):null;j(i,`CallExpression`)&&j(o,`MemberExpression`)&&!o.computed&&j(o.property,`Identifier`)&&o.property.name===`disconnect`&&G(o.object,n)===t.receiverKey&&a.push(e)}),po(r,a,n)&&i.push(e)}),xf(t.node,i,n)},vde=(e,t,n)=>nd({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>D(e)&&$f(e,t,n)}),Mp=(e,t,n,r=[t])=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async)return!1;if(fde(e,t,n)||pde(e,t,n)||_de(e,t,n)||vde(e,t,n)||jp(t,n)||nm(e,t,n)||t.kind===`subscribe`&&M(t.node)===e&&rm(t.node,!0,!0,n)&&ff(t,n))return!0;if(!j(e.body,`BlockStatement`))return e.body===t.node&&ff(t,n);let i=y(t.node),a=i.parent,o=j(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&j(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&(M(t.node)===e&&j(a,`VariableDeclarator`)||!!(o&&(o.kind===`let`||o.kind===`var`)&&j(o.declarationNode,`VariableDeclarator`)&&M(o.declarationNode)===e)),c=[];if(Pd(e.body,e=>{if(!j(e,`ReturnStatement`))return;let r=b(e),i=b(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?A(e.argument):null;if(!a)return;if(tp(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||b(a)!==null&&b(a)===b(t.node))&&ff(t,n)){c.push(e);return}if(t.kind===`subscribe`&&wue(a,t,n)){c.push(e);return}if(j(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Wf(a,n);if(o&&tp(o,t,n)){c.push(e);return}!o||!D(o)||$f(o,t,n,new Set,new Map,s)&&c.push(e)}),dde(e,t,c,n)||cde(e,t,r,c,n))return!0;let l=M(t.node),u=l?zue(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>xf(e,c,n))?!0:xf(Zf(t.node,e,n,t),c,n)},yde=(e,t,n)=>{for(let r of t)if(!Mp(e,r,n,t)&&!Kue(e,r,n))return r;return null},Np=(e,t,n=new Set)=>{let r=A(e);if(j(r,`NewExpression`)&&j(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(j(r,`MemberExpression`))return Np(r.object,t,n);if(!j(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 Np(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(j(a,`Property`)&&j(o,`ObjectPattern`)&&j(s,`VariableDeclarator`)&&s.init&&Np(s.init,t,n))},bde=(e,t)=>{if(!j(e,`Property`))return!1;let n=j(e.key,`Identifier`)?e.key.name:j(e.key,`Literal`)?e.key.value:null;return n===`signal`?!Np(e.value,t):n===`once`?j(e.value,`Literal`)&&e.value.value===!0:!1},xde=(e,t)=>j(e,`CallExpression`)&&(e.arguments??[]).some(e=>j(e,`ObjectExpression`)&&(e.properties??[]).some(e=>bde(e,t))),Pp=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`])]]),Fp=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),Ip=new Set([`close`]),Sde=new Set([`removeChannel`,`removeAllChannels`]),Lp=e=>{let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return null;let n=A(t.callee);if(j(n,`Identifier`))return ze.has(n.name)||Vn.has(n.name)||Fp.has(n.name)?n.name:null;if(j(n,`MemberExpression`)&&j(n.property,`Identifier`)){let e=n.property.name;return Vn.has(e)||At.has(e)||Sde.has(e)||e===`on`?e:null}return null},Cde=(e,t,n)=>{let r=M(e),i=M(t.node);if(!r||!i||!D(i)||!Yp(r,n)||!Md(e,n.scopes))return!1;let a=Gf(t,n),o=G(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];S(s,e=>{if(e!==s&&D(e))return!1;if(j(e,`AssignmentExpression`)&&G(e.left,n)===o&&G(e.right,n)===a){l.push(e);return}if(!j(e,`CallExpression`))return;let t=j(e.callee,`ChainExpression`)?e.callee.expression:A(e.callee);j(t,`MemberExpression`)&&!t.computed&&j(t.property,`Identifier`)&&t.property.name===`abort`&&G(t.object,n)===o&&c.push(e)});let u=l.filter(e=>$p(e,c,i,n));return $p(t.node,u,i,n)},Rp=e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),zp=(e,t)=>{let n=Rc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=y(e.identifier),n=t.parent;return!!(j(n,`JSXExpressionContainer`)&&n.expression===t&&Rp(n.parent))}):!1},Bp=(e,t,n)=>{let r=Rc(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=j(e,`Property`)?P(e):null;if(!j(e,`Property`)||!j(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=y(e.parent),i=r.parent;if(!j(i,`ReturnStatement`)||i.argument!==r)return!1;let a=M(i);return!!(a&&kc(Rc(a)?.name??``))};if(i.references.some(e=>{let t=y(e.identifier),r=t.parent;if(!n&&j(r,`ReturnStatement`)&&r.argument===t){let e=M(r);return!!(e&&kc(Rc(e)?.name??``))}return j(r,`Property`)&&r.value===t?a(r):!1}))return!0;let o=M(e);if(!o||!D(o)||!kc(Rc(o)?.name??``))return!1;let s=!1;return S(o.body,e=>{if(s)return!1;if(j(e,`Property`)&&j(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},wde=e=>{if(!D(e))return!1;let t=e.params[0];if(!t)return!1;let n=(j(t,`Identifier`)?t:j(t,`AssignmentPattern`)&&j(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=j(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(j(r,`TSNullKeyword`)||j(r,`TSUnionType`)&&r.types.some(e=>j(e,`TSNullKeyword`)))},Tde=(e,t)=>{if(!D(e))return!1;let n=Rc(e),r=M(e),i=r?Rc(r):null;if(!n||!r||!D(r)||!i||!kc(i.name))return!1;let a=new Set;if(S(r.body,e=>{if(!j(e,`Property`)||!j(e.value,`Identifier`)||e.value.name!==n.name||!j(e.parent,`ObjectExpression`))return;let t=y(e.parent);if(j(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=P(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=y(e.identifier),r=n.parent,i=r?.parent;if(!j(r,`CallExpression`)||r.callee!==n||!j(i,`VariableDeclarator`)||i.init!==r||!j(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=y(e.identifier),n=t.parent;if(!j(n,`MemberExpression`)||n.object!==t||!a.has(P(n)??``))continue;let r=y(n),i=r.parent;if(!j(i,`JSXExpressionContainer`)||i.expression!==r||!Rp(i.parent))return!1;s=!0}}return s},Vp=(e,t)=>zp(e,t)||Bp(e,t,!0)||Tde(e,t)||wde(e)&&Bp(e,t,!1),Hp=(e,t)=>{if(!D(e)||!e.returnType)return!1;let n=!1;if(S(e.returnType,e=>{if(j(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Rc(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=y(e.identifier),n=t.parent;return!!(j(n,`JSXExpressionContainer`)&&n.expression===t&&j(n.parent,`JSXAttribute`))}):!1},Ede=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(j(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=A(o.test);if(!j(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[A(e.left),A(e.right)],a=t.some(e=>rp(e,n,i)),s=t.some(e=>{if(!j(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=G(e.left,i),a=G(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Dde=(e,t,n,r)=>{if(!D(e))return[];let i=[];return S(e.body,a=>{if(a!==e.body&&D(a))return!1;if(!j(a,`IfStatement`)||a.alternate!==null||!Ad(a.consequent))return;let o=A(a.test);if(!j(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=G(o.left,r),c=G(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Ode=(e,t,n)=>{if(!j(t.node,`CallExpression`))return!1;let r=M(t.node);if(!r||!D(r)||r!==M(e)||!Vp(r,n))return!1;let i=A(t.node.callee),a=A(e.callee),o=j(a,`MemberExpression`)?tf(a.object,n):null;if(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`addEventListener`||!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=G(A(i.object),n),c=G(r.params?.[0],n),l=G(a.object,n),u=G(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==G(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!ef(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=b(e),a=[];return S(r.body,e=>{if(e!==r.body&&D(e))return!1;if(!j(e,`AssignmentExpression`)||e.operator!==`=`||!j(A(e.right),`ObjectExpression`)||jd(A(e.left),n.scopes)?.id!==o.id)return;let c=G(e.left,n),d=A(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(b(e)??-1)<=i||!j(d,`ObjectExpression`))return;let f=d.properties.find(e=>j(e,`Property`)&&P(e)===`element`),p=d.properties.find(e=>j(e,`Property`)&&P(e)===`handler`);j(f,`Property`)&&j(p,`Property`)&&G(f.value,n)===s&&G(p.value,n)===t.handlerKey&&a.push(e)}),po(r,[ap(e,r,l,n)??e],n)&&xf(t.node,a,n)}if(!ef(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=b(e),f=[],p=r.body;S(p,e=>{if(e!==p&&D(e))return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),n.scopes)?.id===o.id&&G(e.right,n)===s&&d!==null&&(b(e)??-1)>d&&f.push(e)});let m=ap(e,r,l,n)??Ede(e,r,l,s,n)??e,h=f.filter(e=>$p(e,[m],r,n));return po(r,[m,...Dde(r,l,s,n)],n)&&$p(t.node,h,r,n)},kde=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!j(t.node,`CallExpression`))return!1;let r=M(t.node),i=A(e.callee);if(!r||!D(r)||r!==M(e)||!Vp(r,n)||!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=G(r.params[0],n),o=tf(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let s=[];return S(r.body,e=>{if(e!==r.body&&D(e))return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),n.scopes)?.id===o.id&&G(e.right,n)===t.receiverKey&&s.push(e)}),po(r,[e],n)&&xf(t.node,s,n)},Up=(e,t,n)=>{let r=y(e),i=new Set,a=new Set;for(;;){let e=M(r);if(!e||!D(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=j(e.body,`BlockStatement`)&&j(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!po(e,[c?s:r],n))return null;let l=qf(e);if(!l)return a.size===t.size&&Yp(e,n)?e:null;let u=A(l.callee);if(!j(u,`MemberExpression`))return null;let d=G(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=y(l)}},Wp=e=>{let t=new Set,n=e;for(;;){let e=M(n);if(!e||!D(e)||t.has(e))break;t.add(e),n=e}return t},Gp=(e,t,n,r)=>{let i=b(e),a=b(t);if(i===null||a===null)return!0;let o=Wp(e),s=Wp(t),c=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),l=(e,t,i,a)=>{if(a&&j(e,`ReturnStatement`)&&c(G(e.argument,r),t))return!0;if(j(e,`AssignmentExpression`)){let i=G(e.left,r),a=A(e.left);return c(G(e.right,r),t)&&!c(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||j(a,`MemberExpression`)&&a.computed&&c(G(a.object,r),t)}if(j(e,`UnaryExpression`)&&e.operator===`delete`){let n=A(e.argument);return j(n,`MemberExpression`)&&c(G(n.object,r),t)}if(j(e,`UpdateExpression`)){let i=G(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!j(e,`CallExpression`)&&!j(e,`NewExpression`))return!1;let o=e.arguments.some(e=>k(e)?c(G(e,r),t)&&kf(e,r)===null:!1),s=A(e.callee),u=j(e,`CallExpression`)&&j(s,`MemberExpression`)&&!s.computed&&j(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&j(s.property,`Identifier`)&&s.property.name===`from`;return o&&!u||j(s,`MemberExpression`)&&!s.computed&&j(s.property,`Identifier`)&&(gue.has(s.property.name)||_ue.has(s.property.name))&&c(G(s.object,r),t)?!0:j(e,`CallExpression`)?[x(e.callee,r.scopes),...e.arguments.flatMap(t=>k(t)&&md(e,t)?[x(t,r.scopes)]:[])].some(e=>{if(!e||!D(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(l(i,t,n,!1))return r=!0,!1}),r}):!1},u=e;for(;u.parent;)u=u.parent;let d=!1;return S(u,e=>{if(d)return!1;let t=b(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,u=s.has(n)&&t<a;if(!(!c&&!u)&&l(e,t,new Set,!0))return d=!0,!1}),d},Kp=(e,t)=>fr(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Ade=(e,t,n)=>{let r=A(e.callee),i=A(t.callee);if(!j(r,`MemberExpression`)||!j(i,`MemberExpression`))return!0;let a=fr(e),o=fr(t),s=t.arguments?.[+!Kp(e,t)],c=M(t),l=Zd(e.arguments?.[0],n),u=Zd(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&D(c)&&Yp(c,n)&&po(c,[t],n)&&(o!==null&&Fp.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=Yd(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=yue(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!Up(t,p,n)&&!jue(t,p,n)?!1:!Gp(e,t,new Map([...p].map(e=>[e,1/0])),n)},qp=(e,t,n,r=new Map)=>{let i=j(e,`ChainExpression`)?e.expression:e;if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(t.kind===`timer`){if(!j(a,`Identifier`)||!ze.has(a.name)||!n.scopes.isGlobalReference(a))return!1;let e=G(i.arguments?.[0],n,new Set,r);if(lf(e,t,n))return!0;if(r.size>0&&e!==null)return!1;let o=i.arguments?.[0];if(o&&k(o)){let e=sf(o,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let s=Hf(t.node,n);return s!==null&&s===kf(i.arguments?.[0],n)}if(j(a,`Identifier`)&&t.kind===`subscribe`&&(pf(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||ff(t,n))||t.registrationVerbName===`addListener`&&Nf(a,t,n)))return!0;let o=Lp(i);if(!o||!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`))return!1;let s=Zd(a.object,n),c=Zd(i.arguments?.[0],n),l=t.registrationVerbName?Pp.get(t.registrationVerbName):null,u=Uf(t,n),d=Sf(a.object,n),f=d?G(d.right,n):kf(a.object,n);if(l&&Jp(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||Ode(i,t,n)||kde(i,t,n)||mf(s,o,t,n))return!0;if(t.kind===`socket`)return lf(s,t,n)&&(Ip.has(o)||Fp.has(o));if(t.kind===`subscribe`&&j(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===bf(t.node,n)&&(o===`removeAllChannels`||lf(G(i.arguments?.[0],n,new Set,r),t,n))||(lf(s,t,n)||t.kind===`subscribe`&&Nf(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||At.has(o))||o===`abort`&&s===(Gf(t,n)??Fue(t,n)??Iue(t,n))||o===`abort`&&Cde(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&j(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Wf(t.node.arguments[0],n);if(!_f(t.node,`addListener`,n)&&!D(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&j(t.node,`CallExpression`)&&(!j(A(t.node.callee),`MemberExpression`)||!ef(t.node.arguments?.[2],i.arguments?.[2],n,!0))||j(t.node,`CallExpression`)&&!Ade(t.node,i,n))return!1;let p=j(t.node,`CallExpression`)?A(t.node.callee):null,m=j(p,`MemberExpression`)?Pf(p.object,n):null,h=Pf(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&&G(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?Pp.get(t.registrationVerbName):null;if(!g||!Jp(o,g))return!1;let _=j(t.node,`CallExpression`)?t.node.arguments?.[0]:null,v=i.arguments?.[0];if(Cf(_,n)||Cf(v,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!j(t.node,`CallExpression`))return!1;let e=Xd(t.node.arguments?.[0],n),r=Xd(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=Sf(_,n),c=Sf(v,n);if(s===null!=(c===null))return!1;let l=kf(t.node.arguments?.[0],n),u=kf(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=If(t.node.arguments?.[1],n),r=If(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=A(t.node.callee);if(!j(s,`MemberExpression`)||!Ff(s.object,n)||!Ff(a.object,n)||e===null||e!==r||!ef(t.node.arguments?.[2],i.arguments?.[2],n)||!zf(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return j(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=j(t.node,`CallExpression`)&&Kp(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=j(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&Zd(r,n)===a||s!==null&&Wf(r,n)===Wf(s,n)}return o===`unobserve`&&t.eventKey!==null?c===t.eventKey:!0},Jp=(e,t)=>t.has(e)||Fp.has(e),Yp=(e,t)=>{let n=M(e);if(!n||!D(n))return!1;let r=n.parent;if(!j(r,`CallExpression`)||!qd(r,t))return!1;if(!j(n.body,`BlockStatement`))return Wf(n.body,t)===e;let i=!1;return Pd(n.body,n=>{j(n,`ReturnStatement`)&&n.argument&&Wf(n.argument,t)===e&&(i=!0)}),i},Xp=(e,t)=>{if(sm(e,t)||Yp(e,t))return!0;let n=Rc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>M(t.identifier)!==e):!1},jde=(e,t,n)=>{if(!D(e)||e.async||e.generator)return[];let r=M(t.node);if(!r||!D(r))return[];let i=new Map,a=e=>{let t=y(e),a=t.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=tf(a.left,n),s=G(a.left,n),c=M(a),l=b(a);if(!o&&j(a.left,`MemberExpression`)){let e=P(a.left),t=A(a.left.object),r=j(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!D(c))return;for(let t of r.references){let r=y(t.identifier),a=r.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!tf(a.left,n)||M(a)!==c)continue;let o=G(a.left,n),s=b(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=Rc(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return S(r.body,t=>{if(t!==r.body&&D(t))return!1;j(t,`AssignmentExpression`)&&Wf(t.right,n)===e&&a(t.right)}),[...i.values()]},Mde=(e,t,n)=>$p(t.node,[e.assignmentNode],e.retainedFunction,n)||xf(t.node,[e.assignmentNode],n),Nde=(e,t,n)=>{let r=!1;return S(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&D(i))return!1;if(!j(i,`AssignmentExpression`)||i===e.assignmentNode||G(i.left,n)!==e.refCurrentKey||!rd(t.node,i,e.retainedFunction,n))return;let a=Wf(i.right,n);if(!a||!D(a)||!$f(a,t,n))return r=!0,!1}),r},Pde=(e,t,n)=>{let r=M(e.retainedFunction);if(!r||!D(r))return!1;let i=t=>{if(!D(t))return!1;let r=!1;return S(t.body,i=>{if(r||i!==t.body&&D(i))return!1;if(j(i,`CallExpression`)&&G(i.callee,n)===e.refCurrentKey){let a=y(i),o=a.parent,s=j(t.body,`BlockStatement`)&&j(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!ap(i,t,e.refCurrentKey,n);if((s||c||l)&&!Ude(t,i,e.refCurrentKey,n))return r=!0,!1}}),r},a=e=>{if(!D(e))return!1;if(!j(e.body,`BlockStatement`)){let t=Qp(e.body,n);return!!(t&&i(t))}let t=[];return Pd(e.body,e=>{if(!j(e,`ReturnStatement`)||!e.argument)return;let r=Qp(e.argument,n);!r||!i(r)||t.push(e)}),po(e,t,n)},o=!1;return S(r.body,e=>{if(o)return!1;if(!j(e,`CallExpression`)||M(e)!==r||!E(e,`useEffect`,n.scopes))return;let t=pr(e);if(t&&a(t))return o=!0,!1}),o},Fde=(e,t,n)=>{if(!zp(e.retainedFunction,n)&&!(()=>{if(!D(e.retainedFunction))return!1;let r=y(e.retainedFunction).parent;if(!j(r,`CallExpression`)||!E(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=G(i,n);return!a||t.receiverKey!==a?!1:Vp(e.retainedFunction,n)})())return!1;let r=[];return S(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&D(t))return!1;j(t,`CallExpression`)&&G(t.callee,n)===e.refCurrentKey&&r.push(t)}),$p(t.node,r,e.retainedFunction,n)},Ide=(e,t,n)=>{let r=M(e);return r?jde(r,t,n).some(e=>Mde(e,t,n)&&!Nde(e,t,n)&&(Pde(e,t,n)||Fde(e,t,n))):!1},Lde=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!j(n.node,`CallExpression`)||!D(t)||t.async||t.generator||!j(t.body,`BlockStatement`)||!po(t,[e],r))return!1;let i=j(e,`ChainExpression`)?e.expression:e;if(!j(i,`CallExpression`)||!ef(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=M(t);if(!a||!D(a))return!1;let o=[];return S(a.body,e=>{if(e!==a.body&&D(e))return!1;if(!j(e,`CallExpression`))return;let i=vf(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Wf(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:xf(n.node,o,r)||$p(n.node,o,a,r)},Rde=(e,t,n)=>{if(!H(e,n))return!1;let r=M(e);if(!r||r===M(t.node)||Ide(e,t,n))return!0;let i=M(t.node);return i&&D(i)&&am(i,n)&&pfe(i,r,n)?ffe(i,r,t,n):Lde(e,r,t,n)?!0:Xp(r,n)},Zp=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Wd.get(t);r||(r=new WeakMap,Wd.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];S(n,n=>{let r=j(n,`ChainExpression`)?n.expression:n;if(!j(r,`CallExpression`))return;let i=j(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(j(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else Lp(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;a=e.kind===`timer`?[...ze].flatMap(e=>i.identifierCallsByName.get(e)??[]):i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(qp(n,e,t)&&Rde(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Qp=(e,t)=>{let n=Wf(e,t);return D(n)?n:!j(n,`CallExpression`)||!E(n,`useCallback`,t.scopes)?null:pr(n)},zde=(e,t,n)=>{if(!D(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=b(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return S(e.body,s=>{if(s!==e.body&&D(s))return!1;if(!j(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=b(s),l=A(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!j(l,`MemberExpression`)||!jd(l,n.scopes))return;let u=G(l,n),d=G(l.object,n),f=A(s.right);if(!u||!d||!j(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!j(e,`Property`)))for(let e of p){if(!j(e,`Property`))continue;let r=P(e);if(r&&G(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},$p=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=b(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=b(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},Bde=(e,t,n,r)=>{if(!D(e))return!1;let i=e.body,a=[];return S(i,e=>{if(e!==i&&D(e))return!1;j(e,`CallExpression`)&&Qp(e.callee,r)===t&&a.push(e)}),$p(n,a,e,r)},Vde=(e,t,n,r,i,a)=>{if(!D(t))return!1;let o=j(e,`ChainExpression`)?e.expression:e;if(!j(o,`CallExpression`)||!j(o.callee,`MemberExpression`)||o.callee.computed||!j(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!j(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=y(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(j(c,`BlockStatement`)&&j(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&G(l.test,a)===i);return!j(s,`ExpressionStatement`)||!j(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===G(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===G(o.arguments?.[0],a)&&G(o.arguments?.[1],a)===r},Hde=(e,t,n)=>{let r=e.parent,i=j(r,`BlockStatement`)?r.parent:r,a=j(r,`BlockStatement`)?r:e;if(!j(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=A(i.test);return j(o,`UnaryExpression`)&&o.operator===`!`&&G(o.argument,n)===t},Ude=(e,t,n,r)=>{if(!D(e))return!0;let i=b(t);if(i===null)return!0;let a=!1;return S(e.body,t=>{if(a||t!==e.body&&D(t))return!1;if(!j(t,`ReturnStatement`))return;let o=b(t);if((o===null||o<i)&&!Hde(t,n,r))return a=!0,!1}),a},Wde=(e,t,n,r,i)=>{if(!D(e)||!D(t)||e.async||e.generator)return!1;let a=zde(n,r,i);if(!a||!Bde(n,e,a.assignmentNode,i))return!1;let o=null;if(S(e.body,t=>{if(o||t!==e.body&&D(t))return!1;if(Vde(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Ude(e,o,a.refCurrentKey,i))return!1;let s=!1;return S(t.body,t=>{if(s)return!1;if(j(t,`UnaryExpression`)&&t.operator===`delete`){let e=A(t.argument);return G(e,i)===a.handlerKey||j(e,`MemberExpression`)&&G(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(j(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=G(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!j(t,`AssignmentExpression`))return;let o=A(t.left);if(j(o,`MemberExpression`)&&o.computed&&G(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=G(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=A(t.right);if(j(l,`Literal`)&&l.value===null&&M(t)===e)return;let u=(j(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>j(e,`Property`))&&u.some(e=>j(e,`Property`)&&`${a.refCurrentKey}.${P(e)??``}`===a.handlerKey&&G(e.value,i)===r.handlerKey);if(M(t)!==n||!d)return s=!0,!1}),!s},Gde=(e,t,n,r,i)=>{let a=e=>{let a=Qp(e,i);return!!(a&&Wde(a,t,n,r,i))};if(!D(e))return!1;if(!j(e.body,`BlockStatement`))return a(A(e.body));let o=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&a(A(e.argument))&&o.push(e)}),po(e,o,i)},Kde=(e,t,n)=>{let r=Rc(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=pr(e);return t&&D(t)?[t]:[]}));return i.references.every(e=>{let n=y(e.identifier),r=n.parent,i=j(r,`CallExpression`)?M(r):null;if(j(r,`CallExpression`)&&r.callee===n&&i&&D(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(j(o,`ArrayExpression`)&&j(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},em=(e,t,n,r)=>{if(!D(e)||!j(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&k(i)?A(i):null,o=a?D(a)?a:Wf(a,r):null;if(!o||!D(o))return!1;let s=(e,i=new Set)=>{if(!D(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(j(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!E(c,`useCallback`,r.scopes)){if(z(c,o)||lp(c,n.node,t))return!0;let e=M(c);return!!(e&&e!==t&&s(e,a))}let l=Rc(e),u=l?r.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.filter(e=>{let t=y(e.identifier).parent,n=t?.parent;return!(j(t,`ArrayExpression`)&&j(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=y(e.identifier),i=r.parent;if(!j(i,`CallExpression`)||i.callee!==r)return!1;if(z(i,o)||lp(i,n.node,t))return!0;let c=M(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(j(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!E(c,`useCallback`,r.scopes))l=[c];else{let t=Rc(e),n=t?r.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(z(e,o)||lp(e,n.node,t))return!0;let r=M(e);return!!(r&&r!==t&&s(r))})},qde=(e,t,n,r)=>{if(!D(t))return!1;let i=t.parent;if(!j(i,`CallExpression`)||pr(i)!==t||!qd(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(j(a,`IfStatement`)&&z(e,a.consequent)){let n=Wf(A(a.test),r)??A(a.test);if(j(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=tf(n.left,r),o=tf(n.right,r),s=i??o,c=A(i?n.right:n.left),l=j(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?A(s.initializer):null,d=j(u,`CallExpression`)&&u.arguments[0]&&k(u.arguments[0])?A(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&j(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];S(t.body,e=>{j(e,`AssignmentExpression`)&&e.operator===`=`&&tf(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=A(e.right);return!(j(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=A(e.right);return j(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=A(e);if(j(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!j(t,`CallExpression`)||fr(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!k(n))return!1;let r=A(n);return j(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(j(c,`IfStatement`)&&z(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&$p(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(j(o,`IfStatement`)&&z(e,o.consequent)){let e=A(o.test),t=j(e,`UnaryExpression`)&&e.operator===`!`,n=tf(t?e.argument:e,r),i=n?.initializer?A(n.initializer):null,a=j(i,`CallExpression`)&&i.arguments[0]?Cn(A(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=M(c.declarationNode);if(!u||!D(u))return!1;let d=[],f=!1;return S(u.body,e=>{if(f)return!1;if(j(e,`UpdateExpression`)&&tf(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!j(e,`AssignmentExpression`)||tf(e.left,r)?.id!==c.id)){if(e.operator!==`=`||Cn(A(e.right))===null)return f=!0,!1;d.push(e)}}),f||!$p(e,d.filter(e=>Cn(A(e.right))===!l),t,r)?!1:d.every(e=>{if(Cn(A(e.right))===!l)return!0;let t=M(e);if(!t||!D(t))return!1;let i=t.parent;if(!j(i,`ReturnStatement`)||i.argument!==t)return!1;let a=M(i);return!!(a&&D(a)&&np(a,n,r))})},Jde=(e,t,n,r)=>{let i=M(e);if(!i||!D(i))return!1;let a=j(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&k(a)?A(a):null,s=o?D(o)?o:x(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Rc(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=y(e.identifier).parent,n=t?.parent;return!(j(t,`ArrayExpression`)&&j(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=y(e.identifier),i=r.parent;return!!(j(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(z(i,s)||lp(i,n.node,t)))}))return!0;let o=M(i);if(o&&o!==t&&D(o)&&!j(o.body,`BlockStatement`)&&A(o.body)===i){let e=Rc(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=y(e.identifier),a=i.parent,o=a?.parent,c=o?M(o):null;return!!(j(a,`CallExpression`)&&a.callee===i&&j(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(z(o,s)||lp(o,n.node,t)||c&&em(c,t,n,r)))}))return!0}}if(tm(i,i,t,n,r)||em(i,t,n,r)||qde(e,i,n,r)||bp(i,{...n,node:e},r))return!0;let c=i.parent;return!!(j(c,`CallExpression`)&&pr(c)===i&&qd(c,r)&&np(i,n,r))},tm=(e,t,n,r,i)=>{let a=e.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!nf(a.left,i))return!1;let o=G(a.left,i),s=M(t);if(!o||!s||!D(s))return!1;let c=!1,l=!1;return S(s.body,e=>{if(l)return!1;if(!j(e,`MemberExpression`)||G(e,i)!==o)return;let a=y(e),s=a.parent;if(j(s,`AssignmentExpression`)&&s.left===a)return Qp(s.right,i)===t?void 0:(l=!0,!1);if(j(s,`IfStatement`)&&s.test===a){let e=!1;if(S(s.consequent,t=>{if(j(t,`CallExpression`)&&G(A(t.callee),i)===o)return e=!0,!1}),e)return}if(j(s,`CallExpression`)&&s.callee===a&&Jde(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Yde=(e,t,n)=>{let r=Rc(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?tm(e,e,e,t,n):i.references.every(r=>{let i=y(r.identifier),a=i.parent;if(j(a,`CallExpression`)&&a.callee===i){let r=M(a),i=!!(r&&em(r,e,t,n)),o=Jde(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return j(o,`ArrayExpression`)&&j(s,`CallExpression`)&&s.arguments?.[1]===o?!0:tm(i,e,e,t,n)})},nm=(e,t,n)=>{let r=M(e);if(!r||!D(r))return!1;let i=Gd.get(n);i||(i=new WeakMap,Gd.set(n,i));let a=i.get(r);if(!a){let e=[];S(r.body,t=>{j(t,`CallExpression`)&&M(t)===r&&qd(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=xue(t.node,n),i=bp(e,t,n),o=e.parent,s=!!(j(o,`CallExpression`)&&pr(o)===e&&qd(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=pr(t);return!!(r&&np(r,e,n))}));return!!(r.size>0&&l&&(c||gde(e,t,n)||Yde(e,t,n)||Kde(e,a,n)))}for(let i of a){let a=y(i).parent;if(!j(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=pr(i);if(o&&Gde(o,r,e,t,n))return!0}return!1},Xde=(e,t)=>{let n=Rc(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=y(e.identifier);for(;j(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=y(n.parent);let r=n.parent;if(j(r,`CallExpression`)&&r.arguments?.[0]===n)return E(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(j(r,`VariableDeclarator`)&&r.init===n&&j(r.id,`Identifier`)&&j(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Zde=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Qde=e=>{if(!j(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?A(n):null;if(!t||!D(t)||!r||!j(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return S(t.body,e=>{if(a)return!1;if(!j(e,`CallExpression`))return;let t=fr(e);if(!t||!Zde.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},$de=(e,t)=>{if(!e||!D(e))return!1;let n=Rc(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=y(t.identifier),r=n.parent;return!!(j(r,`CallExpression`)&&r.arguments[1]===n&&Id(r)===`addEventListener`&&M(r)===M(e))}):!1},efe=(e,n)=>{if(!j(e,`CallExpression`)||!n.filename)return!1;let r=A(e.callee);if(!j(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?Me(i):null,o=i?t(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let s=Ye(n.filename,a.source.value,o);if(!s||!D(s.functionNode))return!1;let c=new Set,l=e=>{if(!D(e)||c.has(e))return!1;c.add(e);let t=!0;return S(e.body,n=>{if(!t||n!==e.body&&D(n))return!1;if(j(n,`CallExpression`)){let e=A(n.callee);if(!j(e,`Identifier`))return t=!1,!1;let r=[];return S(s.programNode,t=>{if(D(t)&&Rc(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!l(r[0])?(t=!1,!1):void 0}if(j(n,`NewExpression`)||j(n,`AssignmentExpression`)||j(n,`UpdateExpression`)||j(n,`AwaitExpression`)||j(n,`YieldExpression`)||j(n,`ThrowStatement`)||j(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return l(s.functionNode)},tfe=(e,t,n)=>{if(!D(t)||!efe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(j(r,`AssignmentExpression`)&&z(e,r.right)&&nf(A(r.left),n))return!0;r=r.parent}return!1},nfe=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?A(r):null;if(!n||!D(n)||!i||!j(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return S(n.body,e=>{if(o||e!==n.body&&D(e))return!1;if(j(e,`CallExpression`)&&tfe(e,n,t))return;if(j(e,`CallExpression`)||j(e,`UpdateExpression`))return o=!0,!1;if(!j(e,`AssignmentExpression`))return;let r=A(e.left);if(j(r,`MemberExpression`)&&nf(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||$de(M(e),t))},rfe=(e,t)=>{let n=y(e);for(;j(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=y(n.parent);let r=n.parent;return j(r,`ReturnStatement`)&&r.argument===n&&M(r)===t?r:null},rm=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(j(a,`ReturnStatement`)&&a.argument===i||j(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(j(a,`ChainExpression`)||j(a,`TSAsExpression`)||j(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(j(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||j(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(j(a,`VariableDeclarator`)&&a.init===i&&j(a.id,`Identifier`)&&j(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=M(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:xf(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=rfe(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},ife=(e,t,n)=>{if(!D(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!sm(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Xde(e,t),c=r=>{if(s)return Mp(e,r,t);if(r.kind!==`timer`){let i=Vp(e,t);return!!(n?.allowReturnedResourceEscape===!0||i||Hp(e,t))&&np(e,r,t,i)||Zp(r,t)||nm(e,r,t)}let i=Vp(e,t);if((n?.allowReturnedResourceEscape===!0||i||Hp(e,t))&&np(e,r,t,i)||!n?.isEffectInvoked&&(af(r.node,t)!==null||bp(e,r,t))&&Zp(r,t)||jp(r,t)||nm(e,r,t))return!0;let a=M(e),o=a?.parent;return!!(a&&j(o,`CallExpression`)&&qd(o,t)&&Mp(a,r,t))};return S(r,e=>{if(i!==null||D(e)||!H(e,t))return!1;if(Jd(e)&&!rm(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:j(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:cf(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(j(e,`CallExpression`)){if(j(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!rm(e,!0,a,t))&&!Qde(e)&&!nfe(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:cf(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(Ld(e)&&(!rm(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!Rd(e))){let n=vf(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:cf(e,t),...n};return!xde(e,t)&&!c(r)&&(i=r),!1}}}),i},im=(e,t)=>{if(!D(e)||e.generator)return null;let n=y(e),r=n.parent;if(!j(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=jd(A(r.left),t.scopes);if(!i)return null;let a=W(r,t.scopes);return!D(a)||M(r)!==a||M(i.bindingIdentifier)!==a||!H(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},am=(e,t)=>im(e,t)?.refSymbol??null,afe=(e,t,n)=>{let r=y(e),i=r.parent;if(j(i,`VariableDeclarator`)&&i.init===r&&j(i.id,`Identifier`)&&j(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?xf(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=rfe(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(j(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=y(e);continue}if(j(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=y(e);continue}if(j(e,`LogicalExpression`)&&e.right===r){r=y(e);continue}break}let a=r.parent;return!!(j(a,`ReturnStatement`)&&a.argument===r&&M(a)===t||j(t,`ArrowFunctionExpression`)&&t.body===r)},ofe=(e,t,n)=>j(e,`CallExpression`)&&jd(A(e.callee),n.scopes)?.id===t.id,sfe=(e,t)=>{let n=new Map;S(e.body,e=>{if(!D(e))return;let r=im(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=>!xf(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},cfe=(e,t,n)=>{if(!D(e))return[];let r=[],i=[];return S(e.body,a=>{if(a!==e.body&&D(a))return!1;j(a,`AssignmentExpression`)&&H(a,n)&&jd(A(a.left),n.scopes)?.id===t.id&&r.push(a),ofe(a,t,n)&&H(a,n)&&i.push(a)}),i.filter(t=>!$p(t,r,e,n))},lfe=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},ufe=(e,t)=>{let n=Hd.get(t);n||(n=new WeakMap,Hd.set(t,n));let r=n.get(e);if(r)return r;let i=sfe(e,t),a=new Map;S(e.body,n=>{if(n!==e.body&&D(n))return!1;if(!j(n,`CallExpression`)||M(n)!==e||!qd(n,t))return;let r=pr(n);if(D(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of cfe(r,n,t))lfe(a,n.id,!r.async&&afe(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 cfe(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&afe(e,n.functionNode,t);lfe(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},dfe=(e,t)=>{if(!D(e))return null;let n=im(e,t),r=W(e,t.scopes);if(!n||!D(r))return null;let i=ufe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},ffe=(e,t,n,r)=>{if(!D(e)||e.async||dfe(e,r)?.doesEffectOwnEveryResult!==!0||!j(e.body,`BlockStatement`))return!1;let i=e=>{let n=Qp(Rn(e),r);if(!n)return!1;if(n===t)return!0;if(!D(n))return!1;let i=[];return S(n.body,e=>{if(e!==n.body&&D(e))return!1;j(e,`CallExpression`)&&Qp(e.callee,r)===t&&i.push(e)}),po(n,i,r)},a=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),xf(n.node,a,r)},pfe=(e,t,n)=>{if(!D(e)||!j(e.body,`BlockStatement`))return!1;let r=!1;return Pd(e.body,e=>{r||!j(e,`ReturnStatement`)||!e.argument||S(e.argument,e=>{if(Qp(e,n)===t)return r=!0,!1})}),r},om=e=>j(e,`FunctionDeclaration`)?xd(e)!==null:!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.parent,`VariableDeclarator`)?!1:xd(e)!==null,mfe=e=>{let t=y(e),n=t.parent;return j(n,`JSXExpressionContainer`)&&n.expression===t&&kd(n.parent)},sm=(e,t)=>{if(!D(e))return!1;let n=y(e),r=n.parent;if(j(r,`CallExpression`)&&r.arguments?.[0]===n&&_r(r,`useCallback`,t.scopes)&&mfe(r))return!0;let i=e.parent;if(mfe(e))return!0;if(!j(i,`Property`)||i.value!==e||i.computed)return!1;let a=P(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!j(o,`ObjectExpression`))return!1;let s=o.parent;return(j(s,`CallExpression`)&&s.arguments.some(e=>e===o)||j(s,`JSXExpressionContainer`))&&W(i,t.scopes)!==null},cm=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=A(e);return j(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:j(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||j(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:j(n,`ArrayExpression`)||j(n,`ArrowFunctionExpression`)||j(n,`ClassExpression`)||j(n,`FunctionExpression`)||j(n,`NewExpression`)||j(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},lm=(e,t,n)=>{let r=A(e),i=cm(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(j(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(j(r,`UnaryExpression`)&&r.operator===`!`){let e=lm(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(j(r,`LogicalExpression`)){let e=lm(r.left,t,n),i=lm(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(j(r,`ConditionalExpression`)){let e=lm(r.test,t,n);if(e===`truthy`)return lm(r.consequent,t,n);if(e===`falsy`)return lm(r.alternate,t,n);let i=lm(r.consequent,t,n);return i===lm(r.alternate,t,n)?i:`unknown`}return j(r,`CallExpression`)&&j(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&k(r.arguments[0])?lm(r.arguments[0],t,n):`unknown`},hfe=(e,t,n,r)=>{let i=new Map;if(!D(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&k(e)?e:null,c=null,l=cm(s,r);if(j(o,`Identifier`)?c=o:j(o,`AssignmentPattern`)&&j(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=cm(o.right,r))):j(o,`RestElement`)&&j(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},gfe=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=hfe(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(j(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!j(t,`IfStatement`)||t.alternate||!Ad(t.consequent))&&lm(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(j(o,`IfStatement`)||j(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):j(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((j(o,`WhileStatement`)||j(o,`DoWhileStatement`))&&o.body===a||j(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=lm(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},_fe=(e,t)=>{if(!D(e))return[];let n=M(e);if(!n||!D(n))return[];let r=Ud.get(t);r||(r=new WeakMap,Ud.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return S(n.body,e=>{if(!j(e,`CallExpression`)||M(e)!==n||!qd(e,t))return;let r=pr(e);!r||!D(r)||S(r.body,e=>{if(e!==r.body&&D(e))return!1;if(!(!j(e,`CallExpression`)||!H(e,t))){o(Qp(e.callee,t),e,!0);for(let n of e.arguments)!k(n)||!md(e,n)||o(Qp(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},vfe=w({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=dfe(t,e);if(!n&&!Xp(t,e))return;let r=_fe(t,e),i=r.length>0,a=ife(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`&&(!H(a.node,e)||D(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>gfe(t,a.node,n,e))))return;let o=Kd[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(_r(n,`useCallback`,e.scopes)){let r=pr(n);r&&!sm(r,e)&&t(r);return}if(!qd(n,e))return;let r=pr(n);if(!r)return;let i=kue(r,Oue(r,e),e);if(i.length===0)return;let a=yde(r,i,e);if(!a)return;let o=Kd[a.kind],s=fr(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){om(e)&&t(e)},ArrowFunctionExpression(n){(om(n)||sm(n,e)||am(n,e))&&t(n)},FunctionExpression(n){(om(n)||sm(n,e)||am(n,e))&&t(n)}}}}),yfe=new Set([`window`,`globalThis`,`self`]),bfe=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),xfe=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=y(e.identifier),n=t.parent;return!j(n,`MemberExpression`)||n.object!==t?!1:j(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(j(n.parent,`CallExpression`)&&n.parent.callee===n&&bfe.has(C(n)??``))}),Sfe=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||xfe(e))return null;r.add(e.id);let i=ac(e);if(!i)return n;let a=A(i);if(!j(a,`Identifier`))return n;n=a}},Cfe=e=>{let t=M(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(j(n,`ConditionalExpression`)||j(n,`IfStatement`)||j(n,`LogicalExpression`)||j(n,`SwitchStatement`)||j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},wfe=(e,t,n)=>{let r=M(e);if(!r||!D(r))return null;let i=y(r),a=i.parent;if(!j(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=A(a.callee);if(!j(o,`MemberExpression`)||C(o)!==`forEach`||r.async||!Cfe(a))return null;let s=A(o.object);if(!j(s,`Identifier`))return null;let c=Sfe(s,n);if(!c)return null;let l=bo({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=A(e);if(j(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=ac(e);return a&&!u.has(e.id)&&M(e.declarationNode)===r?(u.add(e.id),d(a)):bo({node:t,scopes:n.scopes})}if(j(t,`Literal`))return JSON.stringify(t.value);if(j(t,`MemberExpression`)){let e=d(t.object),n=C(t);return e&&n?`${e}.${n}`:null}if(j(t,`CallExpression`)){let e=A(t.callee);if(!j(e,`MemberExpression`)||C(e)!==`getElementById`)return null;let r=A(e.object);if(!j(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>j(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(j(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(j(h,`ConditionalExpression`)||j(h,`LogicalExpression`)||j(h,`SwitchStatement`)||j(h,`ForStatement`)||j(h,`ForInStatement`)||j(h,`ForOfStatement`)||j(h,`WhileStatement`)||j(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},um=(e,t,n)=>{let r=O(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=y(e),a=i.parent;if(!(j(a,`VariableDeclarator`)&&a.id===e)&&!(j(a,`VariableDeclarator`)&&a.init===i)&&!(j(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(j(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(j(a,`MemberExpression`)&&a.object===i){let e=C(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!j(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?wfe(r,e,n):null,a=e?bo({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?wfe(r,e,n):null,a=e?bo({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(j(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=A(a.callee);if(j(e,`MemberExpression`)&&C(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Tfe=(e,t,n)=>{let r=!1;return xo(e,e=>{j(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Efe=(e,t,n,r)=>{if(!n)return!1;let i=A(e);if(!j(i,`MemberExpression`)||C(i)!==`target`)return!1;let a=A(i.object);if(!j(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=M(a);if(!s||s===t||!D(s))return!1;let c=y(s),l=c.parent;if(!j(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=A(l.callee);return j(u,`MemberExpression`)&&C(u)===`forEach`&&Tfe(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},Dfe=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?A(e.arguments[0]):null;if(!r||!j(r,`ArrowFunctionExpression`)&&!j(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||!j(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&xo(i,e=>{if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let a=A(r.object);if(!j(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=C(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Efe(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=bo({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},dm=(e,t)=>{let n=A(e),r=j(n,`Identifier`)?O(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},Ofe=(e,t,n=new Set)=>{let r=A(e);if(n.has(r))return!1;if(n.add(r),j(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?Ofe(e,t,n):!1}let i=j(r,`CallExpression`)?A(r.callee):null,a=j(i,`MemberExpression`)?A(i.object):null;if(!j(r,`CallExpression`)||!j(i,`MemberExpression`)||C(i)!==`bind`||!j(a,`MemberExpression`)||C(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&dm(a.object,t)&&dm(o,t))},kfe=(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=y(t.identifier),r=e.parent;if(!j(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=A(r.callee);j(i,`MemberExpression`)&&C(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!fo(e,[r],t)))return null;let i=A(r.callee);if(!j(i,`MemberExpression`))return null;let a=A(i.object);if(!j(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?A(o.initializer):null;return!o||o.kind!==`const`||!j(s,`ArrayExpression`)||(s.elements?.length??0)!==0||M(o.declarationNode)!==M(e.construction)||!o.references.every(e=>{let t=y(e.identifier),n=t.parent,r=n?.parent;return!!(j(n,`MemberExpression`)&&n.object===t&&j(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(C(n)??``))})?null:bo({node:a,scopes:t.scopes})},Afe=(e,t)=>{if(!D(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!j(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return xo(e,e=>{if(!j(e,`CallExpression`))return;let n=A(e.callee);if(!j(n,`MemberExpression`)||C(n)!==`disconnect`)return;let a=A(n.object);j(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),po(e,i,t)},jfe=(e,t,n,r)=>{let i=e=>{if(!D(e)||e.async||e.generator)return!1;let t=[];return S(e.body,i=>{if(!j(i,`CallExpression`)||M(i)!==e)return;let a=A(i.callee);if(!j(a,`MemberExpression`)||C(a)!==`forEach`||bo({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Afe(o,r)&&t.push(i)}),po(e,t,r)};if(!D(e))return!1;if(!j(e.body,`BlockStatement`)){let t=Ml(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=et(e).filter(e=>{if(!e.argument)return!1;let t=Ml(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>fo(e,a,r))},Mfe=(e,t,n)=>nd({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!D(e))return!1;let r=[];return S(e.body,n=>{if(n!==e.body&&D(n))return!1;let i=j(n,`ChainExpression`)?n.expression:n,a=j(i,`CallExpression`)?A(i.callee):null;j(i,`CallExpression`)&&j(a,`MemberExpression`)&&C(a)===`disconnect`&&dm(a.object,t.bindingIdentifiers)&&r.push(n)}),po(e,r,n)}}),Nfe=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!D(n))return;let r=new Map;if(xo(n,t=>{if(!j(t,`NewExpression`))return;let n=A(t.callee);if(!(j(n,`Identifier`)?fn.has(n.name)&&!O(n,n.name):j(n,`MemberExpression`)&&j(A(n.object),`Identifier`)&&yfe.has(A(n.object).name)&&!O(n.object,A(n.object).name)&&fn.has(C(n)??``)))return;let i=y(t),a=i.parent;if(!j(a,`VariableDeclarator`)||a.init!==i||!(j(a.id,`Identifier`)&&a.id.name))return;let o=Dfe(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=Pl(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());xo(n,t=>{if(!j(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&um(t,i,e)});for(let t of Nl(n))xo(t,t=>{if(!j(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&um(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||!D(A(n))||xo(A(n),n=>{if(!j(n,`Identifier`))return;let i=O(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&um(n,t,e)})}let a=j(n.body,`BlockStatement`)?et(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>Ofe(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||Mfe(n,t,e))continue;let i=kfe(t,e);i&&jfe(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()`."})}}})}),Pfe=`cancelAnimationFrame`,fm=`collection-values:`,Ffe=new Set([`min`,`max`]),pm=e=>j(e,`CallExpression`)&&Lfe(e,`requestAnimationFrame`),Ife=new Set([`window`,`globalThis`,`self`]),Lfe=(e,t)=>{let n=A(e.callee);if(j(n,`Identifier`))return n.name===t&&!O(n,n.name);if(!j(n,`MemberExpression`)||C(n)!==t)return!1;let r=A(n.object);return j(r,`Identifier`)&&Ife.has(r.name)&&!O(r,r.name)},Rfe=e=>{if(!e)return null;let t=A(e);if(j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`))return t;if(j(t,`Identifier`)){let e=O(t,t.name)?.initializer;if(D(e))return e}return null},zfe=(e,t,n)=>{let r=new Set,i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of Pl(e,n))r.add(t)}if((j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`))&&t.id&&j(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of Pl(e,n))r.add(t)}return r},Bfe=(e,t,n)=>{let r=A(e);return j(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Vfe=(e,t,n)=>{let r=!1;return xo(e,e=>{if(r)return!1;if(!pm(e))return;let i=e.arguments?.[0];if(i&&Bfe(i,t,n))return r=!0,!1}),r},Hfe=(e,t)=>{let n=[];return xo(e,e=>{if(!pm(e))return;let r=e.arguments?.[0];if(!r)return;let i=Rfe(r);i&&Vfe(i,zfe(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},mm=e=>{let t=A(e);if(j(t,`Identifier`)){let e=O(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=mm(e.initializer);if(t&&t!==n)return t}return n}if(!j(t,`MemberExpression`))return null;let n=mm(t.object),r=C(t);return n&&r?`${n}.${r}`:null},Ufe=e=>{let t=y(e),n=t.parent;if(j(n,`AssignmentExpression`)&&n.right===t)return mm(n.left);if(j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`))return mm(n.id);if(j(n,`CallExpression`)&&j(n.callee,`MemberExpression`)){let e=C(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?mm(n.callee.object):null;if(i)return`${fm}${i}`}return null},hm=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=zfe(n,e.scheduledFunction,t),i=[e.rafCall];return xo(e.scheduledFunction,e=>{if(!pm(e))return;let n=e.arguments?.[0];n&&Bfe(n,r,t)&&i.push(e)}),i},Wfe=e=>{let t=y(e),n=t.parent;return j(n,`AssignmentExpression`)&&n.right===t?n.left:j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`)?n.id:null},Gfe=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(D(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return S(e,a=>{if(i||a!==e&&D(a))return!1;let o=j(a,`AssignmentExpression`)?a.left:j(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&mm(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},Kfe=(e,t,n)=>{let r=hm(e,n),i=r.map(Ufe),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(fm))return a;let o=new Set(r.flatMap(e=>{let t=Wfe(e);return t?[t]:[]}));return Gfe(t,a,o)||Gfe(e.scheduledFunction,a,o)?null:a},qfe=(e,t,n)=>{let r=!1;return xo(e,e=>{if(r||!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||C(i)!==`forEach`||mm(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!j(a,`SpreadElement`)?Rfe(a):null;if(!D(o))return;let s=o.params?.[0];j(s,`Identifier`)&&S(o,e=>{if(r||e!==o&&D(e))return!1;if(!j(e,`CallExpression`))return;let t=e.arguments?.[0];if(Yfe(e)&&j(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},Jfe=(e,t,n)=>{if(t.startsWith(fm))return qfe(e,t.slice(18),n);let r=!1;return xo(e,e=>{if(r||!j(e,`CallExpression`)||!Yfe(e))return;let n=e.arguments?.[0];n&&mm(n)===t&&(r=!0)}),r},Yfe=e=>{if(Lfe(e,Pfe))return!0;let t=A(e.callee);if(!j(t,`Identifier`))return!1;let n=O(t,t.name)?.bindingIdentifier?.parent;if(!j(n,`Property`)||(j(n.key,`Identifier`)?n.key.name:j(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==Pfe)return!1;let r=n.parent,i=r?.parent;if(!j(r,`ObjectPattern`)||!j(i,`VariableDeclarator`))return!1;let a=i.init?A(i.init):null;return j(a,`Identifier`)&&Ife.has(a.name)&&!O(a,a.name)},Xfe=(e,t)=>{xo(e,e=>{let n=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(j(n,`Identifier`)){let e=mm(n);e&&t.add(e)}else if(j(n,`MemberExpression`)){let e=mm(n);e&&t.add(e)}})},Zfe=(e,t,n)=>{if(j(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!j(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return ym(e.right);if(e.operator!==`=`)return!1;let r=A(e.right),i=j(r,`BinaryExpression`)?A(r.left):null;return j(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&j(i,`Identifier`)&&mm(i)===t&&ym(r.right)},Qfe=(e,t)=>{let n=new Set,r=new Set;xo(e,e=>{let i=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(!j(i,`Identifier`))return;let a=mm(i);a&&(Zfe(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},$fe=(e,t)=>{let n=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(!j(n,`Identifier`)&&!j(n,`MemberExpression`))return;let r=mm(n);if(!r)return;if(j(e,`UpdateExpression`)||j(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!j(e,`AssignmentExpression`))return;let i=A(e.right);if(!j(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)},epe=e=>j(e,`IfStatement`)||j(e,`ConditionalExpression`)||j(e,`LogicalExpression`)||j(e,`SwitchStatement`)||j(e,`TryStatement`)||j(e,`ForStatement`)||j(e,`ForInStatement`)||j(e,`ForOfStatement`)||j(e,`WhileStatement`)||j(e,`DoWhileStatement`),tpe=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(epe(n))return!1;n=n.parent}return n===t||e===t},npe=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),xo(e,r=>{if(!tpe(r,e)||($fe(r,n),!j(r,`CallExpression`)))return;let a=r.callee;if(j(a,`Identifier`)){let e=mm(a);S(t,t=>{j(t,`VariableDeclarator`)&&j(t.id,`Identifier`)&&mm(t.id)===e&&t.init&&D(t.init)&&i(t.init)});return}if(j(a,`MemberExpression`)){let e=mm(a);if(!e)return;if(C(a)===`abort`){let e=mm(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}S(t,t=>{j(t,`AssignmentExpression`)&&j(t.left,`MemberExpression`)&&mm(t.left)===e&&t.right&&D(t.right)&&i(t.right)})}}))};return i(e),n},gm=(e,t)=>{let n=A(e);if(j(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(j(n,`Identifier`)||j(n,`MemberExpression`)){let e=mm(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(j(n,`UnaryExpression`)&&n.operator===`!`){let e=gm(n.argument,t);return e===null?null:!e}if(j(n,`LogicalExpression`)){let e=gm(n.left,t);if(n.operator===`??`)return e;let r=gm(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(!j(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=gm(n.left,t),o=gm(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=mm(n.left),c=mm(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},_m=e=>j(e,`ReturnStatement`)||j(e,`ThrowStatement`)?!0:j(e,`BlockStatement`)&&!!e.body?.some(e=>_m(e))||j(e,`IfStatement`)&&!!e.alternate&&_m(e.consequent)&&_m(e.alternate),vm=(e,t,n)=>{let r=gm(e,n);return r!==null&&r!==t},rpe=(e,t,n)=>{let r=gm(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},ipe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((j(e,`IfStatement`)||j(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&vm(e.test,e.consequent===r,n)||j(e,`LogicalExpression`)&&e.right===r&&rpe(e.left,e.operator,n))return!0;if(j(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(j(e,`IfStatement`)&&(_m(e.consequent)&&vm(e.test,!1,n)||e.alternate&&_m(e.alternate)&&vm(e.test,!0,n)))return!0}}r=e}return!1},ape=(e,t,n)=>{let r=hm(e,n).slice(1);return r.length>0&&r.every(n=>ipe(n,e.scheduledFunction,t))},ym=e=>j(e,`Literal`)&&typeof e.value==`number`&&e.value>0,ope=(e,t)=>{let n=A(e);return j(n,`Literal`)&&typeof n.value==`number`||j(n,`Identifier`)&&!t.has(mm(n)??``)},bm=(e,t,n)=>{let r=A(e);if(j(r,`Identifier`)){let e=mm(r);return e?t.has(e):!1}if(j(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return bm(r.left,t,n)&&ope(r.right,n);if(r.operator===`*`||r.operator===`/`)return bm(r.left,t,n)&&ym(r.right)}if(!j(r,`CallExpression`))return!1;let i=A(r.callee),a=j(i,`MemberExpression`)?A(i.object):null;if(!j(i,`MemberExpression`)||!j(a,`Identifier`)||a.name!==`Math`||O(a,a.name)||!Ffe.has(C(i)??``))return!1;let o=!1;for(let e of r.arguments){if(bm(e,t,n)){o=!0;continue}if(!j(e,`Literal`)||typeof e.value!=`number`)return!1}return o},xm=(e,t,n,r,i)=>{let a=A(e);if(j(a,`UnaryExpression`)&&a.operator===`!`)return xm(a.argument,t,n,r,!i);if(j(a,`LogicalExpression`)&&a.operator!==`??`)return xm(a.left,t,n,r,i)&&xm(a.right,t,n,r,i);if(!j(a,`BinaryExpression`))return!1;let o=bm(a.left,t,r)&&j(a.right,`Literal`)&&typeof a.right.value==`number`,s=j(a.left,`Literal`)&&typeof a.left.value==`number`&&bm(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=bm(a.left,n,r)&&j(a.right,`Literal`)&&typeof a.right.value==`number`,d=j(a.left,`Literal`)&&typeof a.left.value==`number`&&bm(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},spe=(e,t)=>{let n=e.scheduledFunction,r=new Set;Xfe(n,r);let i=Qfe(n,!0),a=Qfe(n,!1);if(D(n)){for(let e of n.params??[])if(j(e,`Identifier`)){let t=mm(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,xo(n,e=>{if(!j(e,`VariableDeclarator`)||!e.init)return;let t=j(e.id,`Identifier`)?mm(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(bm(e.init,i,r)?(i.add(t),o=!0):bm(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=hm(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((j(s,`IfStatement`)||j(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&xm(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},cpe=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!n)return;let r=Nl(n);for(let t of Hfe(n,e.scopes)){if(spe(t,e.scopes))continue;let i=Kfe(t,n,e.scopes);i&&r.some(t=>Jfe(t,i,e.scopes))||r.some(r=>ape(t,npe(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.`})}}})}),lpe=new Set([`removeEventListener`,`removeListener`,`off`]),upe=/(?:duration|delay|timeout|ms)$/i,dpe=e=>{let t=A(e);if(j(t,`Literal`)&&typeof t.value==`number`)return!0;if(!j(t,`Identifier`))return!1;if(upe.test(t.name))return!0;let n=O(t,t.name);if(!n?.initializer)return!1;let r=A(n.initializer);return j(r,`Literal`)&&typeof r.value==`number`},fpe=e=>{let t=A(e);return ia(t)?!0:j(t,`CallExpression`)&&j(t.callee,`MemberExpression`)&&C(t.callee)===`bind`},ppe=new Set([`addEventListener`,`addListener`,`on`,`once`]),mpe=`handler-only`,hpe=(e,t)=>{let n=new Set;return S(e,e=>{if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let i=C(r);if(!i||!ppe.has(i))return;let a=bo({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?mpe:Zu(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},gpe=w({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=A(n.callee);if(!j(r,`MemberExpression`))return;let i=C(r);if(!i||!lpe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&dpe(a[0])||!fpe(s))return;let c=bo({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?mpe:Zu(a[0],e.scopes),u=p(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=hpe(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.`})}}}}),_pe=new Set([`columnheader`,`rowheader`]),vpe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=R(e.attributes,t,!1);if(!n)continue;let r=L(n);if(r===null||r.trim().length>0)return!0}return!1},ype=w({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=N(n);if(/^[A-Z]/.test(r))return;let i=R(n.attributes,`role`,!1),a=i?L(i)?.toLowerCase():null;r!==`th`&&(!a||!_pe.has(a))||ai(t,e.settings)||vpe(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.`})}})}),bpe=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return S(e,a=>{if(a!==e&&D(a)){let e=Sm(a,t);for(let t of e)t.resolvedSymbol&&!xn(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&&(xn(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},xpe=new WeakMap,Sm=(e,t)=>{let n=xpe.get(t);n||(n=new WeakMap,xpe.set(t,n));let r=n.get(e);if(r)return r;let i=bpe(e,t);return n.set(e,i),i};let Spe=0;const Cm=e=>{let t={id:Spe++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},wm=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Cpe=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Tm=(e,t,n)=>{if(e.nodeBlock.set(t,n),D(t)){e.nestedFunctions.push(t);return}let r=t,i=Bn[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];k(r)&&Tm(e,r,n)}else k(o)&&Tm(e,o,n)}},wpe=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}},Tpe=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Tpe(e.argument);return t===null?null:!t}return null},Epe=e=>e===null||Tpe(e)===!0,Dpe=(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},Em=(e,t,n)=>{let r=n;for(let n of t)r=Dm(e,n,r);return r},Dm=(e,t,n)=>{if(e.nodeBlock.set(t,n),!wpe(t))return Cpe(e,n,t),Tm(e,t,n),n;if(t.type===`BlockStatement`)return Em(e,t.body,n);if(t.type===`LabeledStatement`){let r=Cm(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Dm(e,a,n);return e.labelStack.pop(),wm(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Tm(e,t.argument,n),wm(n,e.exit,`uncond`),Cm(e);if(t.type===`ThrowStatement`){t.argument&&Tm(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?wm(n,r.catch,`uncond`):r?.finally?wm(n,r.finally,`uncond`):wm(n,e.exit,`throw`),Cm(e)}if(t.type===`BreakStatement`){let r=Dpe(e,t.label?t.label.name:null);return r?wm(n,r.merge,`uncond`):wm(n,e.exit,`uncond`),Cm(e)}if(t.type===`ContinueStatement`){let r=Dpe(e,t.label?t.label.name:null);return r?.header&&wm(n,r.header,`uncond`),Cm(e)}if(t.type===`IfStatement`){Tm(e,t.test,n);let r=Cm(e),i=Cm(e);if(wm(n,r,`cond`),wm(Dm(e,t.consequent,r),i,`uncond`),t.alternate){let r=Cm(e);wm(n,r,`cond`),wm(Dm(e,t.alternate,r),i,`uncond`)}else wm(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Epe(t.test);Tm(e,t.test,n);let a=Cm(e),o=Cm(e),s=Cm(e);r?wm(n,o,`uncond`):(wm(n,a,`uncond`),wm(a,o,i?`uncond`:`cond`),i||wm(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Dm(e,t.body,o);return e.loopStack.pop(),r?(wm(c,a,`uncond`),wm(a,o,i?`uncond`:`cond`),i||wm(a,s,`cond`)):wm(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Tm(e,t.init,n),t.test&&Tm(e,t.test,n);let r=Cm(e),i=Cm(e),a=Cm(e),o=Epe(t.test??null);wm(n,r,`uncond`),wm(r,i,o?`uncond`:`cond`),o||wm(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Dm(e,t.body,i);return e.loopStack.pop(),t.update&&Tm(e,t.update,r),wm(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Tm(e,t.right,n),Tm(e,t.left,n);let r=Cm(e),i=Cm(e),a=Cm(e);wm(n,r,`uncond`),wm(r,i,`cond`),wm(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Dm(e,t.body,i);return e.loopStack.pop(),wm(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Tm(e,t.discriminant,n);let r=Cm(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Cm(e);wm(n,t,`cond`),i&&wm(i,t,`uncond`),i=Em(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&wm(i,r,`uncond`),a||wm(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Cm(e),i=Cm(e),a=null,o=null;t.handler&&(a=Cm(e)),t.finalizer&&(o=Cm(e)),wm(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Em(e,t.block.body,r);if(e.tryStack.pop(),a&&wm(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Dm(e,n,a);o?wm(r,o,`uncond`):wm(r,i,`uncond`)}return o&&t.finalizer?(wm(s,o,`uncond`),wm(Em(e,t.finalizer.body,o),i,`uncond`)):wm(s,i,`uncond`),i}return Cpe(e,n,t),Tm(e,t,n),n},Ope=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Cm(r),a=Cm(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Em(r,t.body,i):(Tm(r,t,i),o=i),wm(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},kpe=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},Om=e=>{Spe=0;let t=new Map,n=[],r=(e,r)=>{let i=Ope(e,r,n);t.set(e,{cfg:i,unconditionalSet:kpe(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!D(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!D(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(D(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}}},Ape=e=>{let t=A(e);return j(t,`ObjectExpression`)?`object`:j(t,`ArrayExpression`)?`array`:j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)?`function`:j(t,`JSXElement`)||j(t,`JSXFragment`)?`JSX`:j(t,`NewExpression`)?`instance`:null},km=(e,t,n=new Set)=>{let r=Ape(e);if(r)return{bindingName:null,kind:r};let i=A(e);if(!j(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`)||!j(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=km(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},jpe=new Set([...Jt,`useImperativeHandle`,`useInsertionEffect`]),Mpe=new WeakMap,Npe=new WeakMap,Ppe=new WeakMap,Fpe=e=>{let t=Mpe.get(e.programNode);if(t)return t;let n=Nt(e.programNode);return Mpe.set(e.programNode,n),n},Ipe=e=>{let t=Npe.get(e.programNode);if(t)return t;let n=Om(e.programNode);return Npe.set(e.programNode,n),n},Lpe=(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},Rpe=(e,t)=>{let n=Mc(e)??t??``;return n!==`use`&&kc(n)},zpe=(e,n)=>{if(!j(e,`Identifier`))return null;let r=T(e,n);if(r?.kind!==`import`||!r.initializer)return null;let i=r.initializer.parent;if(!i||!j(i,`ImportDeclaration`))return null;let a=i.source?.value;if(typeof a!=`string`)return null;let o=t(r.initializer);return o?{exportedName:o,source:a}:null},Bpe=(e,t,n)=>{if(!n)return null;let r=zpe(e,t);if(!r)return null;let i=j(e,`Identifier`)?e.name:``;if(r.source===`react`||!kc(i)&&!kc(r.exportedName))return null;let a=Ye(n,r.source,r.exportedName);return!a||!Rpe(a.functionNode,r.exportedName)?null:{cfg:Ipe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Fpe(a)}},Am=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=T(i,t);if(!e||r.has(e.id))return null;if(Ne(e)){let t=rt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||jm(e)?null:(r.add(e.id),Am(e.initializer,t,n,r))}if(j(i,`MemberExpression`)){let e=C(i);if(!e||!n.has(e))return null;let r=A(i.object);return!j(r,`Identifier`)||!Ct(r,t)?null:e===`useImperativeHandle`?2:1}if(!j(i,`ConditionalExpression`))return null;let a=Am(i.consequent,t,n,new Set(r)),o=Am(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Vpe=(e,t,n,r)=>{if(!n)return null;let i=zpe(A(e.callee),t);if(!i)return null;let a=un(n,i.source,i.exportedName);return a?Am(a.exportedNode,Fpe(a),r):null},Hpe=(e,t,n,r)=>{let i=A(e.callee),a=x(i,t);if(a&&Rpe(a)){let e=p(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Bpe(i,t,r)},Upe=e=>{if(!D(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=A(r);if(j(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(j(e,`AssignmentPattern`)&&j(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(j(e,`ObjectPattern`))for(let r of e.properties??[]){if(!j(r,`Property`))continue;let e=P(r,{allowComputedString:!0});if(!e)continue;let i=A(r.value);j(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):j(i,`AssignmentPattern`)&&j(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Wpe=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ObjectExpression`))return r;if(!j(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||jm(i)?null:(n.add(i.id),Wpe(i.initializer,t,n))},Gpe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(j(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(j(r,`Property`)&&P(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Kpe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>j(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=Wpe(r,n);return i?Gpe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},jm=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&j(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(j(n,`AssignmentExpression`)&&n.left===e||j(n,`UpdateExpression`)&&n.argument===e||j(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(j(n,`CallExpression`)&&n.callee===e&&j(e,`MemberExpression`)){let t=C(e);if(t&&(Wr.has(t)||Gr.has(t)))return!0}}return!1},Mm=(e,t,n,r,i=new Set)=>{let a=A(e);if(!j(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||jm(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!j(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),Mm(o.initializer,t,n,r,i))},Nm=(e,t,n,r=new Set)=>{if(Mm(e,`list`,t,n))return!0;let i=A(e);if(j(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||jm(e)?!1:(r.add(e.id),Nm(e.initializer,t,n,r))}return j(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?j(e,`SpreadElement`)?Mm(e.argument,`list`,t,n):Mm(e,`value`,t,n):!1):!1},qpe=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Upe(t.functionNode)){let o=Kpe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||jm(s)||(Mm(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(Mm(o.expression,`list`,n,r)||Nm(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},Jpe=(e,t,n,r,i)=>{if(!D(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?jm(n):!1}))return!1;let o=new Set(r);o.add(a);let s=!1;return S(a.body,r=>{if(s||r!==a.body&&D(r))return!1;if(!j(r,`CallExpression`)||!Lpe(r,e.cfg))return;if(E(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=A(r.callee),i=(j(n,`Identifier`)?n.name:j(n,`MemberExpression`)?C(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!j(a,`SpreadElement`)&&Nm(a,e.scopes,t)?(s=!0,!1):void 0}let c=Vpe(r,e.scopes,e.filePath,i);if(c!==null){let n=r.arguments?.[c];return n&&!j(n,`SpreadElement`)&&Nm(n,e.scopes,t)?(s=!0,!1):void 0}if(n===0)return;let l=Hpe(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=qpe(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&Jpe(l,u,n-1,o,i))return s=!0,!1}),s},Ype=(e,t,n=jpe)=>{let r=Ppe.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Ppe.set(e,new Map([[n,a]]));let o=Hpe(e,t.scopes,t.cfg,t.filename);if(!o||!W(e,t.scopes)||!Lpe(e,t.cfg))return a;for(let r of Upe(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||jm(i))continue;let s=Kpe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=km(c,s.expression?t.scopes:o.scopes);l&&Jpe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(j(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},Xpe=new WeakMap,Zpe=e=>{let t=new Map;if(!j(e,`Program`))return t;for(let n of e.body){let e=j(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!j(e,`TSInterfaceDeclaration`)&&!j(e,`TSTypeAliasDeclaration`)||!j(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},Pm=(e,t)=>{let n=p(e);if(!n)return[];let r=Xpe.get(n);return r||(r=Zpe(n),Xpe.set(n,r)),r.get(t)??[]},Qpe=e=>j(e,`Identifier`)?e.name:j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&e.object.name===`React`&&j(e.property,`Identifier`)?`React.${e.property.name}`:null,Fm=e=>{let t=e.parent;if(!t||!j(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=Qpe(t.callee);return n!==null&&tr.has(n)},$pe=new Set([`function`,`arrow-function`,`method`]),Im=e=>{let t=e.scope;for(;t;){if($pe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},eme=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),K=e=>{let t=e;for(;eme.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Lm=(e,t)=>{let n=K(e);if(j(n,`Identifier`)){let e=t?T(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&j(r,`ImportDeclaration`)&&r.source.value===`react`?rt(e.declarationNode)??n.name:n.name}return j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)?n.property.name:null},Rm=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,tme=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,nme=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,rme=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,ime=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ame=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ome=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,zm=e=>`\`${e}\` re-runs on every render with no dependency array.`,sme=e=>`\`${e}\` crashes without a function as its first argument.`,cme=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",lme=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Bm=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,ume=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,dme=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,fme=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,pme=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,mme=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,hme=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,gme=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,_me=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}},vme=new Set([`===`,`!==`]),yme=(e,t)=>{let n=e.declarationNode;if(!j(n,`VariableDeclarator`)||!j(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!j(i,`Identifier`))return null;let a=n.init?A(n.init):null;return!a||!E(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},bme=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=y(n.identifier),i=r.parent;if(!j(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||M(i)!==t)return null;let a=A(i.arguments[0]);return j(a,`ArrowFunctionExpression`)||j(a,`FunctionExpression`)||j(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},xme=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n),i=A(n.object);return!!(r===`is`&&j(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},Sme=(e,t)=>{let n=A(e);return j(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},Cme=(e,t,n)=>{let r=A(e);if(j(t,`BinaryExpression`)&&vme.has(t.operator))return A(t.left)===r?Sme(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:A(t.right)===r?Sme(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!j(t,`CallExpression`)||!xme(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return j(i,`SpreadElement`)||j(a,`SpreadElement`)?null:A(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:A(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},wme=(e,t,n)=>{let r=e.parent;for(;r&&z(r,t);){let i=Cme(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Tme=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!z(e,t))return!1;if(j(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(j(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!Ie.has(e.type))return!1;a=e}return i===r},Eme=(e,t)=>{let n=new Set,r=A(e);for(;j(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Oi(e);if(!i||!j(A(i),`Identifier`))break;n.add(e.id),r=A(i)}return r},Dme=(e,t,n)=>{let r=Eme(e,n),i=Eme(t,n);if(r===i)return!0;if(j(r,`Identifier`)&&j(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return j(r,`Literal`)&&j(i,`Literal`)?Object.is(r.value,i.value):!1},Ome=e=>{let t=y(e).parent;if(!j(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(j(n,`ArrayExpression`)&&n.elements.length)},kme=e=>{if(j(e,`ReturnStatement`)||j(e,`ThrowStatement`))return!0;if(!j(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&kme(t))},Ame=(e,t)=>{if(!j(e,`IfStatement`)||e.alternate||!kme(e.consequent))return!1;let n=e.parent;if(!j(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&z(t,e))},jme=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(j(i,`IfStatement`)&&z(e,i.test)&&(z(t,i.consequent)||i.alternate&&z(t,i.alternate)||Ame(i,t))){let n=z(t,i.consequent);if(n===(!!(i.alternate&&z(t,i.alternate))||Ame(i,t)))return null;let a=wme(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Tme(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Mme=(e,t,n)=>{if(!Ome(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=yme(e,n);if(!r)return!1;let i=bme(r,t);if(!i)return!1;let a=e.references.filter(e=>z(e.identifier,t));if(a.length!==1)return!1;let o=y(a[0].identifier);if(j(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=jme(a[0].identifier,i.callExpression,t,n);return!!(s&&Dme(s,i.writtenValue,n))},Nme=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Pme=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Fme=(e,t)=>{let n=new Set,r=e.split(`
1
+ import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Aa as o,Ai as s,An as c,Ar as l,At as u,B as d,Ba as f,Bi as p,Bn as m,Br as h,Bt as g,C as _,Ca as v,Ci as ee,Cn as te,Cr as ne,Ct as re,D as ie,Da as ae,Di as oe,Dn as se,Dr as ce,Dt as le,E as ue,Ea as de,Ei as fe,En as pe,Er as me,Et as eee,F as he,Fa as ge,Fi as _e,Fn as ve,Fr as ye,Ft as be,G as xe,Gi as y,Gn as Se,Gr as Ce,Gt as we,H as Te,Hi as Ee,Hn as De,Hr as tee,Ht as nee,I as ree,Ia as Oe,Ii as ke,In as b,Ir as Ae,It as iee,J as je,Ji as Me,Jn as Ne,Jr as aee,Jt as Pe,K as Fe,Ki as Ie,Kn as oee,Kr as see,Kt as Le,L as cee,La as lee,Li as Re,Ln as uee,Lr as ze,Lt as dee,M as Be,Ma as fee,Mi as Ve,Mn as He,Mr as pee,Mt as mee,N as Ue,Na as hee,Ni as We,Nn as Ge,Nr as Ke,Nt as gee,O as qe,Oa as Je,Oi as Ye,On as Xe,Or as Ze,Ot as _ee,P as Qe,Pa as $e,Pi as x,Pn as et,Pr as vee,Pt as yee,Q as tt,Qi as bee,Qn as nt,Qr as rt,Qt as xee,R as it,Ra as at,Ri as ot,Rn as st,Rr as ct,Rt as See,S as Cee,Sa as lt,Si as ut,Sn as dt,Sr as wee,St as Tee,T as Eee,Ta as Dee,Ti as S,Tn as Oee,Tr as kee,Tt as Aee,U as jee,Ui as C,Un as ft,Ur as pt,Ut as w,V as mt,Va as Mee,Vi as T,Vn as ht,Vr as gt,Vt as _t,W as vt,Wi as yt,Wn as bt,Wr as Nee,Wt as Pee,X as xt,Xi as St,Xn as Ct,Xr as Fee,Xt as wt,Y as Tt,Yi as Et,Yn as E,Yr as Iee,Yt as Dt,Z as Ot,Zi as kt,Zn as At,Zr as Lee,Zt as jt,_ as Mt,_a as Ree,_i as zee,_n as Bee,_r as Vee,_t as Hee,a as Uee,aa as Nt,ai as Wee,an as Gee,ar as Kee,at as Pt,b as Ft,ba as qee,bi as Jee,bn as It,br as Lt,bt as Yee,c as Xee,ca as D,ci as Zee,cn as Qee,cr as $ee,ct as Rt,d as zt,da as ete,di as tte,dn as Bt,dr as Vt,dt as nte,ea as Ht,ei as Ut,en as Wt,er as rte,et as Gt,f as Kt,fa as qt,fi as ite,fn as O,fr as Jt,ft as Yt,g as Xt,ga as ate,gi as Zt,gn as Qt,gr as $t,gt as ote,h as en,ha as tn,hi as nn,hn as rn,hr as ste,ht as cte,i as an,ii as lte,in as ute,ir as dte,it as on,j as sn,ja as fte,ji as cn,jn as ln,jr as pte,jt as mte,k as hte,ka as gte,ki as un,kn as dn,kr as fn,kt as _te,l as pn,la as k,li as vte,ln as mn,lr as yte,lt as bte,m as xte,ma as hn,mi as Ste,mn as gn,mr as _n,mt as Cte,n as wte,ni as vn,nn as Tte,nr as yn,nt as bn,o as Ete,oa as xn,oi as Dte,on as Sn,or as Ote,ot as kte,p as Cn,pa as wn,pi as Ate,pn as Tn,pr as En,pt as jte,q as Dn,qi as A,qn as On,qr as kn,qt as An,r as Mte,ri as Nte,rn as Pte,rr as Fte,rt as jn,s as Mn,sa as j,si as Ite,sn as Lte,sr as Nn,st as Pn,t as Rte,ta as M,ti as Fn,tn as In,tr as Ln,tt as Rn,u as zn,ua as Bn,ui as zte,un as N,ur as Vn,ut as Hn,v as Un,va as Bte,vi as Vte,vn as Wn,vr as Gn,vt as Hte,w as Kn,wa as Ute,wi as qn,wn as Jn,wr as Yn,wt as Wte,x as Xn,xa as Gte,xi as Zn,xn as Qn,xr as Kte,xt as qte,y as $n,ya as Jte,yi as er,yn as Yte,yr as tr,yt as Xte,z as nr,za as Zte,zi as P,zn as rr,zr as ir,zt as ar}from"./capability-Dbpf9_qY.js";import*as or from"node:path";import*as sr from"node:fs";import{readFileSync as Qte}from"node:fs";import{visitorKeys as $te}from"oxc-parser";import{analyze as ene}from"eslint-scope";import{Features as tne,transform as cr}from"lightningcss";import{visit as lr}from"@shaderfrog/glsl-parser/ast/index.js";import{parse as nne}from"@shaderfrog/glsl-parser/index.js";const rne=Symbol.for(`react-doctor.reset-filesystem-caches`),ur=e=>w({...e,defaultEnabled:!1,lifecycle:`retired`,create:()=>In}),dr=ur({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.`}),fr=e=>!j(e,`CallExpression`)&&!j(e,`NewExpression`)?null:j(e.callee,`Identifier`)?e.callee.name:j(e.callee,`MemberExpression`)&&j(e.callee.property,`Identifier`)?e.callee.property.name:null,pr=(e,t)=>{if(!j(e,`CallExpression`)&&!j(e,`NewExpression`)||!e.arguments?.length)return null;let n=e.arguments[0];return j(n,`ArrowFunctionExpression`)||j(n,`FunctionExpression`)?n:t?x(n,t):null},mr=(e,t)=>{if(!e)return null;let n=t?.followCallChains===!0,r=e;for(;r;){if(r=A(r),j(r,`MemberExpression`)){r=r.object;continue}if(n&&j(r,`CallExpression`)){if(!j(r.callee,`MemberExpression`))return null;r=r.callee.object;continue}break}return j(r,`Identifier`)?r:null},hr=(e,t)=>mr(e,t)?.name??null,gr=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=fr(e);return n?typeof t==`string`?n===t:t.has(n):!1},ine={allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveConditionalAliases:!0,resolveNamedAliases:!0},_r=(e,t,n)=>E(e,t,n,ine),ane=new Set([`useCallback`,`useEffectEvent`]),one=new Set([`useEffectEvent`,`useEvent`,`useEventCallback`,`useMemoizedFn`,`useStableCallback`]),sne=/^use\w*(?:Throttle|Debounce)/i,cne=e=>{let t=fr(e);return t!==null&&sne.test(t)},lne=(e,t)=>{if(!_r(e,`useMemo`,t))return!1;let n=e.arguments?.[1];return j(n,`ArrayExpression`)&&(n.elements?.length??0)===0},une=(e,t)=>j(e,`CallExpression`)?_r(e,ane,t)||gr(e,one)||lne(e,t)||cne(e):j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&e.property.name===`current`,dne=(e,t,n)=>{let r=O(e,t);return!!(r?.initializer&&_r(r.initializer,`useRef`,n))},vr=w({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(!_r(t,yn,e.scopes)||(t.arguments?.length??0)<2)return;let n=pr(t);if(!n||!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return;let r=t.arguments[1];if(!j(r,`ArrayExpression`)||!r.elements?.length)return;let i=new Set;for(let e of r.elements)j(e,`Identifier`)&&i.add(e.name);if(i.size===0)return;let a=null,o=new Set;if(S(n.body,e=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!Yn.has(e.callee.property.name))return;let t=hr(e.callee.object);t&&o.add(t);let n=e.arguments?.[1];j(n,`Identifier`)&&!a&&i.has(n.name)&&(a=n.name)}),!a)return;let s=O(t,a);s?.initializer&&une(s.initializer,e.scopes)||[...i].some(n=>n!==a&&o.has(n)&&!dne(t,n,e.scopes))||e.report({node:t,message:`useEffect re-adds the "${a}" listener every time the handler changes.`})}})}),yr=e=>{let t=e.value;return t&&j(t,`Literal`)&&typeof t.value==`string`?t.value:null},F=(e,t)=>{let n=t.toLowerCase();for(let t of e){if(!j(t,`JSXAttribute`))continue;let e=gn(t.name);if(e&&e.toLowerCase()===n)return t}},br=Object.freeze({}),xr=new WeakMap,fne=e=>{if(!e)return br;let t=xr.get(e);if(t)return t;let n=e[`jsx-a11y`],r=n&&typeof n==`object`?n:br;return xr.set(e,r),r},pne=(e,t)=>{let n=N(e);if(t.polymorphicPropName){let n=F(e.attributes,t.polymorphicPropName);if(n){let e=yr(n);if(e!==null)return e}}return t.components&&n in t.components?t.components[n]:n},Sr=new WeakMap,Cr=(e,t)=>{let n=Sr.get(e);if(n&&n.settings===t)return n.elementType;let r=pne(e,fne(t));return Sr.set(e,{settings:t,elementType:r}),r},wr=e=>{let t=e?.[`jsx-a11y`];return typeof t==`object`&&!!t},I=e=>e.some(e=>j(e,`JSXSpreadAttribute`)),Tr=e=>{if(!e)return null;let t=A(e);return j(t,`Literal`)&&typeof t.value==`string`?t.value:j(t,`TemplateLiteral`)&&t.expressions.length===0?t.quasis[0]?.value.cooked??t.quasis[0]?.value.raw??null:null},L=e=>{if(!j(e,`JSXAttribute`))return null;let t=yr(e);if(t!==null)return t;let n=e.value;if(n&&j(n,`JSXExpressionContainer`)){let e=n.expression;if(j(e,`Literal`)&&typeof e.value==`string`)return e.value;if(j(e,`TemplateLiteral`)&&e.expressions.length===0&&e.quasis.length===1)return e.quasis[0].value.cooked??e.quasis[0].value.raw}return null},Er=e=>e.attribute?L(e.attribute):Tr(e.expression),Dr=e=>{let t=e.expression??e.attribute?.value;return t?A(j(t,`JSXExpressionContainer`)?t.expression:t):null},Or=(e,t)=>{if(Cr(e,t).toLowerCase()===`input`&&Er(pn(e.attributes,`type`,!1))?.toLowerCase()===`hidden`)return!0;let n=pn(e.attributes,`hidden`,!1);if(n.isPresent){if(n.attribute&&!n.attribute.value)return!0;let e=Er(n);if(e!==null)return e.length>0;let t=Dr(n);if(j(t,`Literal`)&&t.value)return!0}let r=pn(e.attributes,`aria-hidden`,!1);if(!r.isPresent)return!1;let i=Er(r);if(i!==null)return i.toLowerCase()===`true`;if(r.attribute&&!r.attribute.value)return!0;let a=Dr(r);return j(a,`Literal`)?a.value===!0||a.value?.toString().toLowerCase()===`true`:!1},kr=e=>{if(j(e,`JSXIdentifier`))return e.name;if(j(e,`JSXMemberExpression`)){let t=kr(e.object);return t?`${t}.${e.property.name}`:null}return null},Ar=[`next/og`,`@vercel/og`,`satori`],jr=new Set([`next/og`,`@vercel/og`]),Mr=e=>{let t=e.parent;for(;t;){if(j(t,`ImportDeclaration`))return t;if(j(t,`Program`))return null;t=t.parent}return null},Nr=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(!j(r,`ImportSpecifier`))return!1;let i=Mr(r),a=i?Nr(i):null;if(!a||!n.has(a))return!1;let o=r.imported;return j(o,`Identifier`)&&o.name===t||j(o,`Literal`)&&o.value===t},hne=e=>{if(e.kind!==`import`)return!1;let t=e.declarationNode,n=Mr(t);if(!n||Nr(n)!==`satori`)return!1;if(j(t,`ImportDefaultSpecifier`))return!0;if(!j(t,`ImportSpecifier`))return!1;let r=t.imported;return j(r,`Identifier`)&&r.name===`satori`||j(r,`Literal`)&&r.value===`satori`},Pr=(e,t)=>{if(!j(e,`CallExpression`)&&!j(e,`NewExpression`))return!1;let n=A(e.callee);if(j(n,`Identifier`)){let e=t.referenceFor(n)?.resolvedSymbol??null;return!!(e&&(mne(e,`ImageResponse`,jr)||hne(e)))}if(!j(n,`MemberExpression`)||C(n)!==`ImageResponse`||!j(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(!j(i,`ImportNamespaceSpecifier`))return!1;let a=Mr(i),o=a?Nr(a):null;return!!(o&&jr.has(o))},gne=RegExp(`^(opengraph-image|twitter-image|icon|apple-icon)\\d*\\.${Zt}$`),Fr=e=>e?gne.test(or.basename(e)):!1,Ir=new WeakMap,_ne=e=>e?Fr(On(e)):!1,vne=e=>{let t=e[0];return!!(t&&t===t.toUpperCase())},Lr=(e,t,n,r,i)=>{if(!D(e))return;if(j(e,`ArrowFunctionExpression`)){let a=A(e.body);if(!j(a,`BlockStatement`)){zr(a,t,n,r,i);return}}let a=e.body;j(a,`BlockStatement`)&&S(a,e=>{if(e!==a&&D(e))return!1;j(e,`ReturnStatement`)&&e.argument&&zr(A(e.argument),t,n,r,i)})},Rr=(e,t,n)=>{let r=!1;return S(e,e=>{if(r)return!1;if(j(e,`JSXOpeningElement`)&&!n.has(e)&&kr(e.name)===t)return r=!0,!1}),r},yne=(e,t,n,r,i)=>{let a=kr(n.name);if(!a||a.includes(`.`)||!vne(a)||i.has(a)||Rr(e,a,r))return;let o=O(n,a);o?.initializer&&(i.add(a),zr(A(o.initializer),e,t,r,i))},bne=(e,t)=>{let n=e.parent;for(;n;){if(Pr(n,t))return!0;n=n.parent??null}return!1},xne=(e,t,n)=>{let r=!1;return S(e,e=>{if(r)return!1;if(j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===t&&!bne(e,n))return r=!0,!1}),r},Sne=(e,t,n,r,i)=>{S(e,e=>{j(e,`JSXOpeningElement`)&&(r.add(e),yne(t,n,e,r,i))})},zr=(e,t,n,r,i)=>{let a=A(e);if(j(a,`JSXElement`)||j(a,`JSXFragment`)){Sne(a,t,n,r,i);return}if(D(a)){Lr(a,t,n,r,i);return}if(j(a,`ConditionalExpression`)){zr(a.consequent,t,n,r,i),zr(a.alternate,t,n,r,i);return}if(j(a,`LogicalExpression`)){zr(a.left,t,n,r,i),zr(a.right,t,n,r,i);return}if(j(a,`CallExpression`)){let e=a.callee;if(D(e)){Lr(e,t,n,r,i);return}if(!j(e,`Identifier`)||i.has(e.name)||Rr(t,e.name,r)||xne(t,e.name,n))return;let o=O(e,e.name);if(!o?.initializer||!D(A(o.initializer)))return;i.add(e.name),Lr(A(o.initializer),t,n,r,i);return}if(j(a,`Identifier`)){if(i.has(a.name))return;i.add(a.name);let e=O(a,a.name);if(!e?.initializer)return;zr(A(e.initializer),t,n,r,i)}},Cne=(e,t)=>{let n=Ir.get(e);if(n)return n;let r=new WeakSet;return ht(e,Ar)&&S(e,n=>{if(!(!j(n,`CallExpression`)&&!j(n,`NewExpression`))&&Pr(n,t))for(let i of n.arguments)zr(i,e,t,r,new Set)}),Ir.set(e,r),r},Br=(e,t)=>{if(_ne(e.filename))return!0;if(!t)return!1;let n=p(t);if(!n)return!1;let r=Cne(n,e.scopes);return r.has(t)?!0:j(t,`JSXElement`)?r.has(t.openingElement):!1},Vr=[`ForStatement`,`ForInStatement`,`ForOfStatement`,`WhileStatement`,`DoWhileStatement`],Hr=new Set([`FunctionDeclaration`,`FunctionExpression`,`ArrowFunctionExpression`]),Ur=new Set([`Math`,`Date`,`JSON`,`Object`,`Array`,`Number`,`String`,`Boolean`,`RegExp`,`Symbol`,`BigInt`,`Reflect`]),Wr=new Set([`push`,`pop`,`shift`,`unshift`,`splice`,`sort`,`reverse`,`fill`,`copyWithin`]),Gr=new Set([`add`,`clear`,`delete`,`set`]),Kr=new Set([`map`,`filter`,`forEach`,`flatMap`]),qr=new Set([`then`,`catch`,`finally`]),wne=new Set([`values`,`keys`,`entries`]),Tne=/\.browser\.[cm]?[jt]sx?$/,Ene=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(`.`)),Dne=[`vitest/`,`@vitest/`,`@jest/`,`@testing-library/`,`@playwright/`,`@storybook/test/`,`@storybook/test-runner/`,`@storybook/testing-library/`,`@cypress/`,`@nuxt/test-utils/`],One=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(`.`)),kne=[`findBy`,`findAllBy`],Jr=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(`.`)),Yr=e=>typeof e!=`string`||e.length===0?!1:Ene.has(e)?!0:Dne.some(t=>e.startsWith(t)),Ane=new Set([`it`,`test`]),jne=new Set([`concurrent`,`only`,`skip`]),Mne=new Set([`doMock`,`mock`,`unstable_mockModule`]),Nne=new Set([`jest`,`vi`]),Pne=new Set([`@jest/globals`,`bun:test`,`node:test`,`vitest`]),Fne=new Set([`react`,`react/jsx-dev-runtime`,`react/jsx-runtime`]),Ine=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__/`)},Lne=(e,t,n)=>{if(n.scopes.referenceFor(e)?.resolvedSymbol?.kind!==`import`)return!1;let r=st(e,e.name);return!!(r&&Pne.has(r.source)&&r.exportedName&&t.has(r.exportedName))},Rne=(e,t,n)=>Ine(n.filename)&&t.has(e.name)&&n.scopes.isGlobalReference(e),Xr=(e,t,n)=>Lne(e,t,n)||Rne(e,t,n),Zr=e=>{let t=A(e);if(j(t,`Identifier`))return t;if(j(t,`MemberExpression`)){let e=C(t);return!e||!jne.has(e)?null:Zr(t.object)}let n=j(t,`CallExpression`)?A(t.callee):j(t,`TaggedTemplateExpression`)?A(t.tag):null;return!j(n,`MemberExpression`)||C(n)!==`each`?null:Zr(n.object)},zne=(e,t)=>{let n=y(e),r=n.parent;if(!r||!j(r,`CallExpression`)||!r.arguments.some(e=>e===n))return!1;let i=Zr(r.callee);return!!(i&&Xr(i,Ane,t))},Bne=(e,t,n)=>{if(e.arguments[1]!==t)return!1;let r=e.arguments[0];if(!r||!j(r,`Literal`)||typeof r.value!=`string`)return!1;let i=A(e.callee);if(!j(i,`MemberExpression`))return!1;let a=C(i);if(!a||!Mne.has(a))return!1;let o=A(i.object);return j(o,`Identifier`)&&Xr(o,Nne,n)},Vne=(e,t)=>{let n=e.parent;for(;n;){if(D(n)){let e=y(n),r=e.parent;if(r&&j(r,`CallExpression`)&&Bne(r,e,t))return!0}n=n.parent}return!1},Hne=(e,t,n)=>{let r=e.parent,i=null;for(r&&j(r,`JSXElement`)&&r.openingElement===e&&(r=r.parent);r&&r!==t;){if(D(r))return!1;if(j(r,`JSXAttribute`)&&(i=r),j(r,`JSXElement`)){let e=r.openingElement.name;if(j(e,`JSXIdentifier`)){let t=n.scopes.referenceFor(e),a=st(e,e.name);if(t?.resolvedSymbol?.kind===`import`&&a&&!Fne.has(a.source)&&!Yr(a.source)&&i?.parent===r.openingElement&&j(i.name,`JSXIdentifier`)&&i.name.name!==`children`)return!0}i=null}r=r.parent}return!1},Qr=(e,t)=>{if(Vne(e,t))return!0;let n=M(e);return!n||!zne(n,t)?!1:Hne(e,n,t)},Une=e=>{let t=e.parent;return t?j(t,`JSXSpreadAttribute`)||j(t,`SpreadElement`)?t.argument===e:j(t,`VariableDeclarator`)&&t.init===e:!1},$r=(e,t,n,r,i)=>{let a=A(e);if(r&&j(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`||!Une(e.identifier)))return!0;i.add(e.id);let o=$r(e.initializer,t,n,r,i);return i.delete(e.id),o}if(!j(a,`ObjectExpression`))return!0;let o=n?t:t.toLowerCase();for(let e of a.properties){if(j(e,`SpreadElement`)){if($r(e.argument,t,n,r,i))return!0;continue}if(!j(e,`Property`))return!0;let a=P(e,{allowComputedString:!0});if(!a||(n?a:a.toLowerCase())===o)return!0}return!1},ei=(e,t,n=!0,r)=>$r(e,t,n,r,new Set),R=(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(j(a,`JSXSpreadAttribute`)){if(ei(a.argument,t,n))return null;continue}if(!j(a,`JSXAttribute`))continue;let o=gn(a.name);if((n?o:o?.toLowerCase())===r)return a}return null},ti=(e,t)=>e.some(e=>j(e,`JSXSpreadAttribute`)&&ei(e.argument,t,!1)),ni=e=>{let t=A(e);return j(t,`UnaryExpression`)&&t.operator===`void`&&j(A(t.argument),`Literal`)},ri=(e,t={})=>{if(!e?.value)return!1;let n=L(e);if(n!==null)return n.trim().length>0;if(!j(e.value,`JSXExpressionContainer`))return!0;let r=A(e.value.expression);return j(r,`Literal`)?typeof r.value==`boolean`&&t.booleanValuesRender===!0||typeof r.value==`number`||typeof r.value==`string`&&r.value.trim().length>0:j(r,`Identifier`)&&r.name===`undefined`&&t.scopes?.isGlobalReference(r)?!1:!ni(r)},Wne=(e,t,n)=>{let{openingElement:r}=e;if(r===n||Or(r,t))return!1;if(j(r.name,`JSXMemberExpression`)||j(r.name,`JSXIdentifier`)&&r.name.name[0]!==r.name.name[0]?.toLowerCase())return!0;let i=R(r.attributes,`aria-label`,!1);if(ri(i,{booleanValuesRender:!0})||!i&&ti(r.attributes,`aria-label`))return!0;if(j(r.name,`JSXIdentifier`)&&r.name.name===`img`){let e=R(r.attributes,`alt`,!1);return ri(e)||!e&&ti(r.attributes,`alt`)}return ai(e,t,n)},ii=(e,t,n)=>{for(let r of e){if(j(r,`JSXText`)){if(r.value.trim().length>0)return!0;continue}if(j(r,`JSXElement`)){if(Wne(r,t,n))return!0;continue}if(j(r,`JSXFragment`)){if(ii(r.children,t,n))return!0;continue}if(j(r,`JSXExpressionContainer`)){let e=A(r.expression);if(j(e,`JSXEmptyExpression`))continue;if(j(e,`Literal`)){if(e.value===null||typeof e.value==`boolean`||typeof e.value==`string`&&e.value.trim().length===0)continue;return!0}if(ni(e)||j(e,`Identifier`)&&e.name===`undefined`)continue;return!0}}return!1},ai=(e,t,n)=>{if(ii(e.children,t,n))return!0;let r=R(e.openingElement.attributes,`dangerouslySetInnerHTML`,!1);if(ri(r)||!r&&ti(e.openingElement.attributes,`dangerouslySetInnerHTML`))return!0;let i=R(e.openingElement.attributes,`children`,!1);return!!(ri(i)||!i&&ti(e.openingElement.attributes,`children`))},oi=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&!!t&&Reflect.get(t,`portedRuleMode`)===`curated`},Gne=e=>{let t=e?.[`react-doctor`];return typeof t==`object`&&t?t.altText??{}:{}},Kne=e=>!!(j(e,`Identifier`)&&e.name===`undefined`||j(e,`Literal`)&&e.value===null),si=e=>Kne(e)?!0:j(e,`ConditionalExpression`)?si(e.consequent)||si(e.alternate):!1,ci=e=>{if(!e.value)return!1;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return t&&t.type!==`JSXEmptyExpression`?!si(t):!0}return!0},qne=e=>{if(!e)return!1;let t=yr(e);return t===`presentation`||t===`none`},li=e=>{if(!e.value)return!1;if(j(e.value,`Literal`))return typeof e.value.value==`string`?e.value.value.length>0:!0;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return!t||t.type===`JSXEmptyExpression`?!0:j(t,`Identifier`)&&t.name===`undefined`?!1:j(t,`Literal`)&&typeof t.value==`string`?t.value.length>0:!0}return!0},Jne=(e,t,n)=>{let r=F(e.attributes,`alt`);if(r){ci(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(qne(F(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=F(e.attributes,`aria-label`);if(i){li(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=F(e.attributes,`aria-labelledby`);if(a){li(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.'})},Yne=(e,t,n,r)=>{let i=F(e.attributes,`aria-label`),a=F(e.attributes,`aria-labelledby`),o=i&&li(i)||a&&li(a),s=F(e.attributes,`title`),c=s?yr(s):null,l=!!(c&&c.length>0);o||l||ai(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."})},Xne=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&li(r)||i&&li(i))return;let a=F(e.attributes,`alt`);(!a||!ci(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`."})},Zne=(e,t,n)=>{let r=F(e.attributes,`aria-label`),i=F(e.attributes,`aria-labelledby`);if(r&&li(r)||i&&li(i))return;let a=F(e.attributes,`alt`);(!a||!ci(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`."})},ui=w({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=oi(e.settings);if(t&&Br(e))return In;let n=Gne(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=wr(e.settings);return{JSXOpeningElement(n){if(t&&Qr(n,e))return;if(!d&&j(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&&Br(e,n)||t&&I(n.attributes))return;let f=Cr(n,e.settings);if(r&&(f===`img`||s.has(f))){if(t&&Or(n,e.settings))return;Jne(n,n,e);return}if(i&&(f===`object`||c.has(f))){let t=n.parent;t&&j(t,`JSXElement`)&&Yne(n,t,n,e);return}if(a&&(f===`area`||l.has(f))){Xne(n,n,e);return}o&&(f.toLowerCase()===`input`&&(()=>{let e=F(n.attributes,`type`);return e?yr(e)?.toLowerCase()===`image`:!1})()||u.has(f))&&Zne(n,n,e)}}}}),Qne=e=>`Screen reader users can't tell where \`${e}\` goes, so name the destination, like "View pricing details".`,$ne=[`click here`,`here`,`link`,`a link`,`learn more`],ere=e=>{let t=e?.[`react-doctor`];return{words:(typeof t==`object`&&t?t.anchorAmbiguousText??{}:{}).words??$ne}},tre=e=>e.toLowerCase().replace(/[,.?¿!‽¡;:]/g,``).split(/\s+/).filter(e=>e.length>0).join(` `),nre=e=>j(e,`Literal`)&&typeof e.value==`string`?e.value:j(e,`TemplateLiteral`)?ot(e):null,di=(e,t)=>{let n=e.openingElement,r=F(n.attributes,`aria-label`);if(r){let e=yr(r);if(e!==null)return e}if(Cr(n,t)===`img`){let e=F(n.attributes,`alt`);if(e){let t=yr(e);if(t!==null)return t}}if(Or(n,t))return null;let i=[];for(let n of e.children){let e=n;if(j(e,`JSXText`))i.push(e.value);else if(j(e,`JSXElement`)){let n=di(e,t);n!==null&&i.push(n)}else if(j(e,`JSXExpressionContainer`)){let t=nre(e.expression);t!==null&&i.push(t)}}return i.join(``)},fi=w({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(jt(e.filename))return In;let t=ere(e.settings),n=new Set(t.words.map(e=>e.toLowerCase()));return{JSXElement(t){if(Cr(t.openingElement,e.settings)!==`a`)return;let r=di(t,e.settings);if(r===null||r.trim().length===0)return;let i=tre(r);n.has(i)&&e.report({node:t.openingElement.name,message:Qne(i)})}}}}),pi=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(`.`)),mi=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(`.`)),rre=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(`.`)),ire=new Set([`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`]),hi=new Set([`presentation`,`none`]),are=e=>e.trim().split(/\s+/).find(e=>pi.has(e))===`link`,ore=e=>{let t=e.parent;for(;t;){if(j(t,`JSXAttribute`)){let e=t.parent;return e&&j(e,`JSXOpeningElement`)?kr(e.name)===`Trans`:!1}t=t.parent??null}return!1},sre=e=>e.children.some(e=>{if(!j(e,`JSXElement`))return!1;let t=e,n=kr(t.openingElement.name);return!n||n[0]===n[0]?.toLowerCase()?!1:!F(t.openingElement.attributes,`aria-hidden`)}),gi=w({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=oi(e.settings),n=jt(e.filename);return{JSXElement(r){if(t&&n)return;let i=r.openingElement;if(Cr(i,e.settings)!==`a`)return;let a=F(i.attributes,`href`),o=F(i.attributes,`role`),s=o?Kt(o,e.scopes):[],c=s===null||s.some(e=>are(e));if(!(t&&!a&&!c)&&!Or(i,e.settings)&&!(ai(r,e.settings)||!t&&sre(r))){for(let e of[`title`,`aria-label`,`aria-labelledby`])if(F(i.attributes,e))return;t&&ore(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`."})}}}}}),_i=[`href`],vi=e=>{let t=e?.[`jsx-a11y`];if(typeof t!=`object`||!t)return _i;let n=Reflect.get(t,`attributes`);if(typeof n!=`object`||!n)return _i;let r=Reflect.get(n,`href`);return!Array.isArray(r)||!r.every(e=>typeof e==`string`)?_i:r},yi="Keyboard users can't reach this link because it has no `href`, so add a real `href` (or use `<button>` for actions).",bi="Keyboard users can't reach this link because its `href` goes nowhere (`#`, `javascript:`, or empty), so point it at a real destination.",xi="Keyboard users can't trigger this link because it's a click handler with no real `href`, so use `<button>` instead.",cre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.anchorIsValid??{}:{};return{validHrefs:new Set(n.validHrefs??[]),hrefAttributeNames:[...vi(e),...n.specialLink??[]],components:new Set(n.components??[]),aspects:n.aspects?new Set(n.aspects):null}},Si=(e,t)=>e.aspects===null||e.aspects.has(t),lre=e=>{let t=e.parent;if(!t||!j(t,`JSXElement`))return!1;let n=t.parent;if(!n||!j(n,`JSXElement`))return!1;let r=kr(n.openingElement.name);if(!r)return!1;let i=r.split(`.`).at(-1)??r;return i===`Link`||i.endsWith(`Link`)&&i.length>4},ure=e=>!!F(e.attributes,`role`)&&!!F(e.attributes,`tabindex`)&&(!!F(e.attributes,`onkeydown`)||!!F(e.attributes,`onkeyup`)),Ci=(e,t)=>{if(t.has(e))return!1;let n=e.replace(/^[^a-zA-Z0-9_]+/,``);return e===``||e===`#`||n.startsWith(`javascript:`)},dre=e=>{if(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(t,`Identifier`)&&t.name===`undefined`||j(t,`Literal`)&&t.value===null)return!0}return!!j(e,`JSXFragment`)},fre=e=>{let t=e.value;if(!t)return`nullish`;if(j(t,`Literal`))return typeof t.value==`string`&&Ci(t.value,new Set)?`invalid`:`valid`;if(j(t,`JSXExpressionContainer`)){let e=t.expression;return j(e,`Identifier`)&&e.name===`undefined`?`nullish`:j(e,`Literal`)?e.value===null?`nullish`:typeof e.value==`string`&&Ci(e.value,new Set)?`invalid`:`valid`:j(e,`TemplateLiteral`)&&e.expressions.length===0&&Ci(e.quasis[0]?.value.cooked??``,new Set)?`invalid`:`valid`}return j(t,`JSXFragment`)?`nullish`:`valid`},wi=w({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=cre(e.settings),n=oi(e.settings),r=wr(e.settings),i=jt(e.filename);return{JSXOpeningElement(a){if(n&&i)return;let o=Cr(a,e.settings),s=kr(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=F(a.attributes,e);if(!t)continue;let i=fre(t);i===`invalid`?(n=!0,r=!0):i===`valid`&&(n=!0)}let i=I(a.attributes),o=!!F(a.attributes,`onClick`);if(!n){!i&&Si(t,`noHref`)&&(!o||!Si(t,`preferButton`))&&e.report({node:a.name,message:yi}),!i&&o&&Si(t,`preferButton`)&&e.report({node:a.name,message:xi});return}r&&(o&&Si(t,`preferButton`)?e.report({node:a.name,message:xi}):Si(t,`invalidHref`)&&e.report({node:a.name,message:bi}));return}let c;for(let e of t.hrefAttributeNames)if(c=F(a.attributes,e),c)break;if(c){if(!c.value){e.report({node:a.name,message:bi});return}let n=Kt(c,e.scopes);if(n===null?dre(c.value):n.length>0&&n.every(e=>Ci(e,t.validHrefs))){let t=!!F(a.attributes,`onClick`);if(!t&&n?.every(e=>e===`#`))return;e.report({node:a.name,message:t?xi:bi})}return}I(a.attributes)||lre(a)||ure(a)||e.report({node:a.name,message:yi})}}}}),Ti=w({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(jt(e.filename))return In;let t=[],n=null;return{Program(e){n=e},JSXOpeningElement(n){if(Cr(n,e.settings)!==`a`)return;let r=null;for(let t of vi(e.settings))if(r=R(n.attributes,t,!1),r)break;if(!r)return;let i=L(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=Xee({configuredRootDirectory:An(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.`})}}}}),pre=new Set([`base`,`col`,`colgroup`,`head`,`html`,`link`,`meta`,`noembed`,`noscript`,`param`,`picture`,`script`,`source`,`style`,`title`,`track`]),Ei=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(`.`)),Di=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(`.`)),Oi=e=>e.kind!==`const`||!j(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier?null:e.initializer,mre=new Set([``,`plaintext-only`,`true`]),ki={canBeDisabled:!1,canBeEnabled:!0,canBeInherited:!1},Ai={canBeDisabled:!0,canBeEnabled:!1,canBeInherited:!1},ji={canBeDisabled:!1,canBeEnabled:!1,canBeInherited:!0},Mi={canBeDisabled:!0,canBeEnabled:!0,canBeInherited:!0},hre=(e,t)=>({canBeDisabled:e.canBeDisabled||t.canBeDisabled,canBeEnabled:e.canBeEnabled||t.canBeEnabled,canBeInherited:e.canBeInherited||t.canBeInherited}),Ni=(e,t,n)=>{let r=A(e);if(j(r,`Literal`)){if(typeof r.value==`boolean`)return r.value?ki:Ai;if(typeof r.value==`string`){let e=r.value.toLowerCase();return mre.has(e)?ki:e===`false`?Ai:ji}return ji}if(j(r,`ConditionalExpression`))return hre(Ni(r.consequent,t,n),Ni(r.alternate,t,n));if(j(r,`Identifier`)){let e=t.referenceFor(r)?.resolvedSymbol;if(!e||n.has(e.id))return Mi;let i=Oi(e);if(!i)return Mi;let a=new Set(n);return a.add(e.id),Ni(i,t,a)}return Mi},Pi=(e,t)=>{let n=F(e.attributes,`contenteditable`);return n?n.value?j(n.value,`Literal`)?Ni(n.value,t,new Set):j(n.value,`JSXExpressionContainer`)?Ni(n.value.expression,t,new Set):Mi:ki:null},gre=(e,t,n)=>{let r=e.parent?.parent;for(;r;){if(j(r,`JSXElement`)){let e=r.openingElement;if(!Ei.has(Cr(e,n)))return!1;let i=Pi(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},Fi=(e,t,n)=>Pi(e,t)?.canBeEnabled?!gre(e,t,n):!1,Ii=(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=F(t.attributes,`type`);if(e){let t=yr(e);if(t&&t.toLowerCase()===`hidden`)return!1}return!0}case`a`:case`area`:return F(t.attributes,`href`)!==void 0;case`img`:return F(t.attributes,`usemap`)!==void 0;default:return!1}},Li=e=>{if(!e)return null;if(j(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(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(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(j(t,`UnaryExpression`)&&t.operator===`-`&&j(t.argument,`Literal`)&&typeof t.argument.value==`number`)return-t.argument.value;if(j(t,`TemplateLiteral`)){let e=ot(t);if(e===null)return null;let n=Number(e);return Number.isFinite(n)?n:null}if(j(t,`ConditionalExpression`)){let e=e=>({type:`JSXExpressionContainer`,expression:e});return j(t.test,`Literal`)?Li(e(t.test.value?t.consequent:t.alternate)):Li(e(t.consequent))}}return null},Ri="Keyboard users can't focus this element with `aria-activedescendant` because it isn't tabbable, so add `tabIndex={0}`.",zi=w({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(!F(t.attributes,`aria-activedescendant`))return;let n=Cr(t,e.settings);if(!Ei.has(n))return;let r=F(t.attributes,`tabIndex`);if(r){let n=Li(r.value??null);if(n===null||n>=-1)return;e.report({node:t.name,message:Ri});return}Ii(n,t)||Fi(t,e.scopes,e.settings)||e.report({node:t.name,message:Ri})}})}),_re=[`aria-label`,`aria-labelledby`,`alt`,`title`],Bi=(e,t)=>{let n=R(e.attributes,t,!1);if(!n)return!1;let r=L(n);return r===null?null:r.trim().length>0},Vi=w({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(I(n.attributes))return;if(Bi(n,`aria-brailleroledescription`)===!0&&Bi(n,`aria-roledescription`)===!1){let t=R(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(Bi(n,`aria-braillelabel`)!==!0||ai(t,e.settings)||_re.map(e=>Bi(n,e)).some(e=>e===!0||e===null))return;let r=R(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.`})}})}),Hi=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`}]]),vre=e=>Hi.has(e),yre=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.`,Ui=w({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(!j(t.name,`JSXIdentifier`))return;let n=gn(t.name);!n||!n.startsWith(`aria-`)||vre(n)||e.report({node:t.name,message:yre(n)})}})}),bre={"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`]}},xre=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(`, `)}`}},Wi=(e,t)=>`Screen reader users get no help from \`${e}\` because its value isn't readable, so set it to ${xre(t)}.`,Sre=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}},Gi=e=>{if(j(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(j(e,`TemplateLiteral`)){let t=ot(e);return t===null?null:t.length>0}if(j(e,`UnaryExpression`)&&e.operator===`!`){let t=Gi(e.argument);return t===null?null:!t}return null},Cre=e=>{if(j(e,`Literal`))return!0;if(j(e,`JSXExpressionContainer`)){let t=e.expression;return j(t,`Literal`)?t.value!==null:j(t,`TemplateLiteral`)?!0:j(t,`UnaryExpression`)&&t.operator===`!`?Gi(t.argument)!==null:!1}return!1},Ki=(e,t)=>{if(j(e,`Literal`))return typeof e.value==`string`?e.value.toLowerCase():null;if(j(e,`JSXExpressionContainer`)){let n=e.expression;if(j(n,`Literal`))return typeof n.value==`string`?n.value.toLowerCase():typeof n.value==`boolean`&&t?String(n.value):null;if(j(n,`TemplateLiteral`))return ot(n)?.toLowerCase()??null;if(t&&j(n,`UnaryExpression`)&&n.operator===`!`){let e=Gi(n.argument);return e===null?null:String(!e)}}return null},qi=e=>{if(!j(e,`JSXExpressionContainer`))return!1;let t=e.expression;return j(t,`TemplateLiteral`)?(t.expressions??[]).length>0:!1},wre=(e,t)=>{if(!Cre(t))return!0;switch(e.kind){case`boolean`:case`optional-boolean`:{let e=Ki(t,!0);return e===`true`||e===`false`}case`tristate`:{let e=Ki(t,!0);return e===`true`||e===`false`||e===`mixed`}case`string`:case`id`:return qi(t)?!0:Ki(t,!1)!==null;case`integer`:case`number`:{let e=Ki(t,!1);if(e!==null){let t=Number(e);return Number.isFinite(t)}if(j(t,`JSXExpressionContainer`)){let e=t.expression;if(j(e,`Literal`)&&typeof e.value==`number`||j(e,`UnaryExpression`)&&(e.operator===`-`||e.operator===`+`||e.operator===`~`)&&j(e.argument,`Literal`)&&typeof e.argument.value==`number`)return!0}return!1}case`id-list`:{if(qi(t))return!0;let e=Ki(t,!1);return e===null?!1:e.trim().length>0}case`token`:{let n=Ki(t,!0);return n!==null&&e.tokens.includes(n)}case`token-list`:{let n=Ki(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))}}},Ji=w({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(!j(t.name,`JSXIdentifier`))return;let n=gn(t.name);if(!n)return;let r=n.toLowerCase(),i=bre[r];if(i){if(!t.value){Sre(i)||e.report({node:t,message:Wi(r,i)});return}wre(i,t.value)||e.report({node:t,message:Wi(r,i)})}}})}),Yi=e=>`This \`role\` is not a valid ARIA role, so assistive tech cannot expose it correctly. Use a real, non-abstract role.${e}`,Tre=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.ariaRole??{}:{};return{allowedInvalidRoles:n.allowedInvalidRoles??[],ignoreNonDOM:n.ignoreNonDOM??oi(e)}},Ere=w({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=Tre(e.settings);return{JSXOpeningElement(n){let r=F(n.attributes,`role`);if(!r)return;let i=Cr(n,e.settings);if(t.ignoreNonDOM&&!Ei.has(i))return;let a=n=>{for(let i of n){if(i.trim().length===0){e.report({node:r,message:Yi(``)});return}let n=i.split(/\s+/).filter(e=>e.length>0);for(let i of n)if(!pi.has(i)&&!t.allowedInvalidRoles.includes(i)){e.report({node:r,message:Yi(` \`${i}\` is not one.`)});return}}},o=r.value;if(!o){e.report({node:r,message:Yi(``)});return}if(j(o,`Literal`)){if(typeof o.value!=`string`){e.report({node:r,message:Yi(``)});return}a([o.value]);return}if(j(o,`JSXExpressionContainer`)){let t=o.expression;if(j(t,`Literal`)&&t.value===null){e.report({node:r,message:Yi(``)});return}if(j(t,`Identifier`)&&t.name===`undefined`){e.report({node:r,message:Yi(``)});return}let n=Kt(r,e.scopes);if(n!==null){a(n);return}return}e.report({node:r,message:Yi(``)})}}}}),Dre=(e,t)=>`Screen reader users get no help from \`${t}\` because \`<${e}>\` doesn't accept it, so remove it from this element.`,Ore=w({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=Cr(t,e.settings);if(pre.has(n))for(let r of t.attributes){if(!j(r,`JSXAttribute`)||!j(r.name,`JSXIdentifier`))continue;let t=gn(r.name);t&&(t.startsWith(`aria-`)||t===`role`)&&e.report({node:r,message:Dre(n,t)})}}})}),Xi=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t||j(e,`FunctionDeclaration`)||j(e,`FunctionExpression`)||j(e,`ArrowFunctionExpression`))return!1;if(j(e,`AwaitExpression`))return t=!0,!1}),t},Zi=e=>{let t=e;j(t.parent,`AssignmentPattern`)&&t.parent.left===t&&(t=t.parent);let n=t.parent;return!n||!j(n,`Property`)||n.value!==t||!n.parent||!j(n.parent,`ObjectPattern`)?null:P(n,{allowComputedString:!0})},kre=new Set([`+=`,`-=`,`*=`,`/=`,`%=`,`&=`,`^=`,`|=`]),Qi=(e,t)=>{let n=A(e);return j(n,`Literal`)?!0:j(n,`Identifier`)?t.has(n.name):j(n,`BinaryExpression`)||j(n,`LogicalExpression`)?Qi(n.left,t)&&Qi(n.right,t):j(n,`UnaryExpression`)?n.operator!==`delete`&&Qi(n.argument,t):j(n,`ConditionalExpression`)?Qi(n.test,t)&&Qi(n.consequent,t)&&Qi(n.alternate,t):j(n,`TemplateLiteral`)?n.expressions.every(e=>Qi(e,t)):!1},$i=(e,t,n)=>{let r=A(e);if(!j(r,`CallExpression`)||!r.arguments.every(e=>!j(e,`SpreadElement`)&&Qi(e,t)))return!1;let i=A(r.callee);if(!j(i,`MemberExpression`)||C(i)!==`resolve`)return!1;let a=A(i.object);return j(a,`Identifier`)&&a.name===`Promise`&&n.isGlobalReference(a)},Are=(e,t,n)=>!j(e,`ExpressionStatement`)||!j(e.expression,`AwaitExpression`)?!1:$i(e.expression.argument,t,n),jre=(e,t)=>{if(!j(e,`ExpressionStatement`)||!j(e.expression,`AssignmentExpression`)||!kre.has(e.expression.operator))return!1;let n=A(e.expression.left);if(!j(n,`MemberExpression`)||C(n)===null)return!1;let r=A(n.object);return j(r,`Identifier`)&&t.has(r.name)&&j(A(e.expression.right),`Literal`)},Mre=(e,t)=>{if(!D(e))return!1;let n=new Set;for(let t of e.params){if(!j(t,`Identifier`))return!1;n.add(t.name)}if(!e.async){if(!j(e.body,`BlockStatement`))return $i(e.body,n,t);if(e.body.body.length!==1)return!1;let[r]=e.body.body;return!!(j(r,`ReturnStatement`)&&r.argument&&$i(r.argument,n,t))}if(!j(e.body,`BlockStatement`))return Qi(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(!Are(i,n,t)&&!(j(i,`ExpressionStatement`)&&Qi(i.expression,n)))return jre(i,n)?a:!j(i,`ReturnStatement`)||!a?!1:!i.argument||Qi(i.argument,n)||$i(i.argument,n,t)}return!0},Nre=(e,t)=>j(e,`Property`)?Re(e,t,{allowConstTemplateLiteral:!0}):null,Pre=(e,t)=>j(e,`MemberExpression`)?Re(e,t,{allowConstTemplateLiteral:!0}):null,ea=(e,t,n,r,i)=>{let a=A(e);if(j(a,`Identifier`)){let e=r.symbolFor(a);return!e||e.kind!==`const`||!e.initializer||i.has(e.id)||It(e,n,r)||Jn(a,t,r)?null:(i.add(e.id),ea(e.initializer,t,n,r,i))}if(!j(a,`ObjectExpression`))return null;let o=null;for(let e of a.properties){if(!j(e,`Property`)||e.kind!==`init`)return null;let n=Nre(e,r);if(n===null)return null;n===t&&(o=e)}if(!o||!j(o,`Property`))return null;let s=A(o.value);return D(s)?s:ta(s,n,r,i)},ta=(e,t,n,r)=>{let i=A(e);if(D(i))return i;if(j(i,`MemberExpression`)){let e=Pre(i,n);return e===null?null:ea(A(i.object),e,t,n,r)}if(!j(i,`Identifier`))return null;let a=n.symbolFor(i);if(!a||r.has(a.id)||It(a,t,n)||(r.add(a.id),!a.initializer))return null;let o=A(a.initializer),s=Zi(a.bindingIdentifier);return s===null?D(o)?o:a.kind===`const`?ta(o,t,n,r):null:ea(o,s,t,n,r)},na=(e,t)=>{let n=A(e);return!j(n,`CallExpression`)||te(n,t)?null:ta(n.callee,n,t,new Set)},ra=(e,t)=>{let n=na(e,t);return n&&Mre(n,t)?n:null},z=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent??null}return!1},Fre=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=e.arguments.findIndex(e=>e===t);if(r<0||e.arguments.some(e=>j(e,`SpreadElement`)))return!1;let i=na(e,n);if(!i||!D(i)||i.generator)return!1;let a=i.params[r];if(!j(a,`Identifier`))return!1;let o=n.symbolFor(a);if(!o||o.references.some(e=>e.flag!==`read`))return!1;let s=i.body,c=!j(s,`BlockStatement`);if(j(s,`BlockStatement`)){let e=s.body[0];if(j(e,`ReturnStatement`)){if(!e.argument)return!1;s=e.argument,c=!0}else if(j(e,`VariableDeclaration`)&&e.declarations.length===1){let t=e.declarations[0].init;if(!t)return!1;s=t}else if(j(e,`ExpressionStatement`))s=e.expression;else return!1}if(s=A(s),j(s,`AwaitExpression`))s=A(s.argument);else if(!c)return!1;if(!j(s,`CallExpression`))return!1;let l=s.callee;if(!j(l,`MemberExpression`)||!j(l.object,`Identifier`)||l.object.name!==`Promise`||!n.isGlobalReference(l.object))return!1;let u=C(l);if(u!==`all`&&u!==`allSettled`)return!1;let d=s.arguments[0];if(!d)return!1;let f=A(d);return j(f,`Identifier`)&&n.symbolFor(f)===o},ia=e=>!!(e&&(j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`))),Ire=(e,t)=>{if(!j(e,`LogicalExpression`))return!1;let n=y(e),r=n.parent;if(!r)return!1;let i=(n,r)=>e.operator===`&&`?z(t,n):!!(e.operator===`||`&&r&&z(t,r));return j(r,`IfStatement`)&&r.test===n?i(r.consequent,r.alternate??null):j(r,`ConditionalExpression`)&&r.test===n?i(r.consequent,r.alternate):(j(r,`WhileStatement`)||j(r,`DoWhileStatement`))&&r.test===n&&e.operator===`&&`||j(r,`ForStatement`)&&r.test===n&&e.operator===`&&`?z(t,r.body):!1},aa=(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(j(c,`LogicalExpression`)&&c.right===s||j(c,`ConditionalExpression`)&&c.test!==s||j(c,`AssignmentExpression`)&&(c.operator===`&&=`||c.operator===`||=`||c.operator===`??=`)&&c.right===s?e=s:(j(c,`CallExpression`)&&c.optional===!0&&c.callee!==s||j(c,`MemberExpression`)&&c.optional===!0&&c.object!==s)&&(e=c),e&&!z(t,e)&&!Ire(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)},B=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(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=j(i,`Property`)?P(i):null;if(s&&j(a,`ObjectPattern`)&&j(o,`VariableDeclarator`)&&o.id===a){let r=B(o.init,t,n);return r?`${r}.${s}`:`symbol:${e.id}`}let c=e.initializer?A(e.initializer):null;return e.kind===`const`&&c&&(j(c,`Identifier`)||j(c,`MemberExpression`))?B(c,t,n)??`symbol:${e.id}`:`symbol:${e.id}`}if(j(r,`MemberExpression`)){let e=P(r,{allowComputedString:!0});if(!e)return null;let i=B(r.object,t,n);return i?`${i}.${e}`:null}if(j(r,`ThisExpression`))return`this`;if(j(r,`Literal`)&&(typeof r.value==`string`||typeof r.value==`number`))return`literal:${String(r.value)}`;if(D(r)){let e=b(r);return e===null?null:`function:${e}`}return null},Lre=new Set(Vr),Rre=new Set([`push`,`unshift`]),zre=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setTimeout`]),Bre=new Set([`yieldNow`,`yieldTo`,`yieldToBrowser`,`slice`,`sliceYield`,`nextFrame`,`breathe`,`onYield`,`onProgress`,`progress`,`onStep`,`step`,`runStage`]),Vre=e=>j(e,`Identifier`)?e.name:j(e,`MemberExpression`)&&j(e.property,`Identifier`)?e.property.name:null,oa=e=>j(e,`ForStatement`)||j(e,`ForInStatement`)||j(e,`ForOfStatement`)||j(e,`WhileStatement`)||j(e,`DoWhileStatement`)?e.body:null,sa=(e,t=!1,n)=>{let r=null;return S(e,i=>{if(r||i!==e&&D(i)||t&&i!==e&&Lre.has(i.type))return!1;j(i,`AwaitExpression`)&&!n?.(i)&&(r=i)}),r},ca=e=>{if(j(e,`Identifier`))return Jr.has(e.name);if(j(e,`MemberExpression`)&&j(e.property,`Identifier`)){let t=A(e.object);return e.property.name===`check`&&j(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)?!0:Jr.has(e.property.name)}return!1},Hre=(e,t)=>{if(j(e.callee,`Identifier`)&&zre.has(e.callee.name)&&t.scopes.isGlobalReference(e.callee))return!0;if(!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!zre.has(e.callee.property.name))return!1;let n=A(e.callee.object);return j(n,`Identifier`)&&(n.name===`globalThis`||n.name===`window`)&&t.scopes.isGlobalReference(n)},Ure=(e,t,n=new Set)=>{if(!D(e)||n.has(e))return!1;n.add(e);let r=!1,i=!1;return S(e.body,a=>{if(a!==e.body&&D(a))return!1;if(j(a,`NewExpression`)&&j(a.callee,`Identifier`)&&a.callee.name===`Promise`&&t.scopes.isGlobalReference(a.callee)){let e=y(a),n=e.parent,i=j(n,`ReturnStatement`)&&n.argument===e||j(n,`AwaitExpression`)&&n.argument===e||D(n)&&n.body===e,o=a.arguments[0];i&&D(o)&&S(o.body,e=>{if(e!==o.body&&D(e))return!1;j(e,`CallExpression`)&&Hre(e,t)&&(r=!0)})}if(!j(a,`CallExpression`)||Hre(a,t))return;let o=na(a,t.scopes);if(o!==null){Ure(o,t,n)&&(i=!0);return}ca(a.callee)&&(i=!0)}),r||i},Wre=(e,t)=>{if(!j(e,`AwaitExpression`))return!1;let n=e.argument;if(!n||!j(n,`CallExpression`))return!1;if(n.arguments.some(e=>{if(j(e,`SpreadElement`))return!1;let t=A(e);return j(t,`Identifier`)&&/sched(?:uler)?/i.test(t.name)}))return!0;let r=na(n,t.scopes);if(r!==null&&Ure(r,t))return!0;if(ra(n,t.scopes)!==null)return!1;let i=Vre(n.callee);return r!==null&&i&&Bre.has(i)?!1:ca(n.callee)},Gre=(e,t)=>j(e,`AwaitExpression`)&&!!e.argument&&te(e.argument,t.scopes),Kre=new Set([`all`,`allSettled`,`race`,`any`]),la=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return!j(t,`MemberExpression`)||t.computed||!j(t.object,`Identifier`)||t.object.name!==`Promise`||!j(t.property,`Identifier`)?!1:Kre.has(t.property.name)},qre=e=>j(e,`AwaitExpression`)?la(e.argument):!1,Jre=e=>{if(!j(e,`AwaitExpression`))return!1;let t=e.argument;if(!j(t,`NewExpression`)||!j(t.callee,`Identifier`)||t.callee.name!==`Promise`)return!1;let n=t.arguments?.[0];if(j(n,`Identifier`)&&Jr.has(n.name))return!0;if(!ia(n))return!1;let r=n.params?.[0],i=j(r,`Identifier`)?r.name:null,a=!1;return S(n.body,e=>{if(a)return!1;if(j(e,`CallExpression`)&&ca(e.callee)||i&&j(e,`AssignmentExpression`)&&j(e.right,`Identifier`)&&e.right.name===i)return a=!0,!1}),a},Yre=e=>{let t=e;for(;j(t,`MemberExpression`);)t=t.object;return j(t,`Identifier`)?t.name:null},Xre=(e,t)=>{let n=e;for(;n;){if(n===t)return!0;n=n.parent}return!1},Zre=(e,t)=>!!t&&e.references.some(e=>{let n=y(e.identifier),r=n.parent;return j(r,`ReturnStatement`)&&r.argument===n&&M(r)===t}),ua=(e,t,n)=>{if(j(e,`Identifier`)){let r=t.symbolFor(e);r&&n.add(r.id);return}if(j(e,`ObjectPattern`)){for(let r of e.properties??[])j(r,`Property`)&&r.value?ua(r.value,t,n):j(r,`RestElement`)&&r.argument&&ua(r.argument,t,n);return}if(j(e,`ArrayPattern`)){for(let r of e.elements??[])r&&ua(r,t,n);return}j(e,`AssignmentPattern`)&&e.left&&ua(e.left,t,n)},da=(e,t)=>{let n=new Set;return S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`Identifier`))return;let i=t.symbolFor(r);i&&n.add(i.id)}),n},Qre=(e,t)=>{let n=new Set;if(j(e,`ForOfStatement`)||j(e,`ForInStatement`))if(j(e.left,`VariableDeclaration`))for(let r of e.left.declarations)ua(r.id,t,n);else ua(e.left,t,n);return n},$re=(e,t,n=null)=>{let r=new Set,i=[];S(e,a=>{if(a!==e&&D(a))return!1;if(j(a,`VariableDeclarator`)&&a.id&&a.init){let e=new Set;if(ua(a.id,t,e),n&&z(n,a.init)||!n&&Xi(a.init))for(let t of e)r.add(t);let o=da(a.init,t);for(let t of e)i.push({declaredSymbolId:t,referencedSymbolIds:o});return}if(j(a,`AssignmentExpression`)&&a.left){let e=new Set;if(ua(a.left,t,e),n&&z(n,a.right)||!n&&Xi(a.right))for(let t of e)r.add(t);let o=da(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=>j(e,`Identifier`)?e:j(e,`AssignmentPattern`)&&j(e.left,`Identifier`)?e.left:null,tie=(e,t)=>{if(!j(e,`AwaitExpression`))return!1;let n=e.argument;if(!j(n,`CallExpression`))return!1;let r=na(n,t.scopes);if(!D(r))return!1;let i=M(n),a=t.scopes.ownScopeFor(r);if(!a)return!1;let o=$re(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(!j(o,`Identifier`))continue;let c=t.scopes.symbolFor(r),l=t.scopes.symbolFor(o);c&&l&&(Zre(l,i)||l.id===c.id)&&s.add(c.id)}let c=!1;return S(r.body,e=>{if(c||e!==r.body&&D(e))return!1;if(!j(e,`CallExpression`))return;let n=e.callee;if(!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)||!Rre.has(n.property.name))return;let l=!1;for(let n of e.arguments??[]){if(Xi(n)){l=!0;break}let e=da(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(;j(u,`MemberExpression`);)u=u.object;if(!j(u,`Identifier`))return;let d=t.scopes.symbolFor(u);if(d&&(s.has(d.id)||!Xre(d.scope,a)&&Zre(d,i)))return c=!0,!1}),c},nie=e=>{if(!j(e,`AwaitExpression`))return null;let t=A(e.argument);return j(t,`CallExpression`)&&j(A(t.callee),`MemberExpression`)?t:null},rie=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=Qre(t,n.scopes);if(r.size===0)return!1;for(let t of e.arguments){let e=da(t,n.scopes);for(let t of e)if(r.has(t))return!0}return!1},iie=e=>{if(!j(e,`CallExpression`))return null;let t=A(e.callee);return j(t,`MemberExpression`)?t.object:null},fa=e=>{let t=A(e);for(;j(t,`MemberExpression`);)t=A(t.object);return t},aie=(e,t,n,r)=>{let i=oa(n);if(!i)return!1;let a=fa(e);if(j(a,`Identifier`)){let e=r.scopes.symbolFor(a);if(!e||z(e.bindingIdentifier,n))return!1}else if(!j(a,`ThisExpression`))return!1;let o=!1;return S(i,e=>{if(o||e!==i&&D(e))return!1;let n=null;if(j(e,`AssignmentExpression`)?n=e.left:(j(e,`UpdateExpression`)||j(e,`UnaryExpression`)&&e.operator===`delete`)&&(n=e.argument),n&&B(n,r)===t)return o=!0,!1}),!o},oie=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=iie(e);return!r||B(r,n)!==t?!1:!j(y(e).parent,`ExpressionStatement`)},sie=(e,t,n,r)=>{let i=oa(t);if(!i)return!1;let a=!1,o=!1;return S(i,t=>{if(a&&o||t!==i&&D(t))return!1;z(t,e)||oie(t,n,r)&&(aa(t,e,r)&&(a=!0),aa(e,t,r)&&(o=!0))}),a&&o},cie=(e,t)=>{let n=M(t);return e.references.some(e=>{if(e.identifier.range[0]<=t.range[1]||M(e.identifier)!==n)return!1;let r=y(e.identifier),i=r.parent;if(!j(i,`CallExpression`)||!i.arguments.some(e=>e===r))return!1;let a=A(i.callee);return j(a,`MemberExpression`)?j(fa(a.object),`ThisExpression`):!1})},lie=(e,t,n)=>{let r=new Set;return S(t,i=>{if(i!==t&&D(i))return!1;let a=null,o=null;j(i,`VariableDeclarator`)&&i.init?(a=i.id,o=i.init):j(i,`AssignmentExpression`)&&(a=i.left,o=i.right),!(!a||!o||!z(e,o))&&ua(a,n.scopes,r)}),r},uie=(e,t,n)=>{let r=A(e);if(!j(r,`MemberExpression`))return!1;let i=fa(r);if(!j(i,`Identifier`))return!1;let a=n.scopes.symbolFor(i);return!!(a&&t.has(a.id))},die=(e,t,n)=>{let r=oa(t);if(!r)return!1;let i=lie(e,r,n);if(i.size===0)return!1;let a=!1;return S(r,o=>{if(a||o!==r&&D(o))return!1;if(!j(o,`CallExpression`)||!aa(e,o,n))return;let s=o.callee;if(!j(s,`MemberExpression`)||s.computed||!j(s.property,`Identifier`)||!Rre.has(s.property.name))return;let c=fa(s.object);if(!j(c,`Identifier`))return;let l=n.scopes.symbolFor(c);if(!(!l||z(l.bindingIdentifier,t)||!cie(l,t))){for(let e of o.arguments)if(uie(e,i,n))return a=!0,!1}}),a},fie=(e,t,n)=>{let r=nie(e);if(!r||!rie(r,t,n))return!1;let i=iie(r);if(!i)return!1;let a=B(i,n);return!a||!aie(i,a,t,n)?!1:sie(e,t,a,n)||j(fa(i),`ThisExpression`)&&j(A(i),`MemberExpression`)&&die(e,t,n)},pie=(e,t)=>Gre(e,t)||Wre(e,t)||qre(e)||Jre(e)||tie(e,t),pa=(e,t)=>{if(j(e,`Identifier`))t.add(e.name);else if(j(e,`ObjectPattern`))for(let n of e.properties??[])j(n,`Property`)&&n.value?pa(n.value,t):j(n,`RestElement`)&&n.argument&&pa(n.argument,t);else if(j(e,`ArrayPattern`))for(let n of e.elements??[])n&&pa(n,t);else j(e,`AssignmentPattern`)&&e.left&&pa(e.left,t)},mie=new Set([`push`,`unshift`,`splice`]),ma=(e,t)=>{let n=[];S(e,t=>{if(t!==e&&D(t))return!1;if(!j(t,`VariableDeclarator`)||!t.init||!j(t.id,`Identifier`))return;let r=new Set;St(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}}}},hie=e=>{let t=new Set,n=new Set;if(S(e,r=>{if(r!==e&&D(r))return!1;if(j(r,`AssignmentExpression`)&&r.left){pa(r.left,t);return}if(j(r,`AwaitExpression`)&&r.argument){St(r.argument,n);return}if(!j(r,`CallExpression`))return;let i=r.callee;j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&mie.has(i.property.name)&&j(i.object,`Identifier`)&&t.add(i.object.name)}),t.size===0)return!1;ma(e,t);for(let e of t)if(n.has(e))return!0;return!1},gie=new Set([...Vr,`SwitchStatement`]),_ie=e=>{let t=new Set;return S(e,n=>{if(n!==e&&D(n))return!1;j(n,`VariableDeclarator`)&&n.id&&Xi(n.init)&&pa(n.id,t),j(n,`AssignmentExpression`)&&n.left&&Xi(n.right)&&pa(n.left,t)}),t},ha=(e,t)=>{if(!e)return!1;if(Xi(e))return!0;let n=new Set;St(e,n);for(let e of n)if(t.has(e))return!0;return!1},vie=(e,t,n)=>{if(e.label)return j(e.label,`Identifier`)&&e.label.name===n;let r=e.parent;for(;r&&r!==t;){if(gie.has(r.type))return!1;r=r.parent}return!0},yie=new Set([`ContinueStatement`,`BreakStatement`,`ReturnStatement`,`ThrowStatement`]),ga=e=>{if(!e)return!1;if(yie.has(e.type))return!0;if(j(e,`BlockStatement`)){let t=e.body??[];return ga(t[t.length-1])}return!1},bie=(e,t,n)=>{for(let r of e.body??[]){if(r===t)return!1;if(j(r,`IfStatement`)&&ha(r.test,n)&&(ga(r.consequent)||ga(r.alternate)))return!0}return!1},xie=(e,t,n)=>{if(j(e,`ReturnStatement`)&&e.argument&&ha(e.argument,n))return!0;let r=!1,i=e,a=e;for(;a;){if(j(a,`IfStatement`)){if(ha(a.test,n))return!0;r=!0}if(j(a,`TryStatement`)&&a.handler&&i===a.block&&Xi(a.block)&&!r||j(a,`SwitchStatement`)&&ha(a.discriminant,n)||j(a,`BlockStatement`)&&bie(a,i,n))return!0;if(a===t)return!1;i=a,a=a.parent}return!1},Sie=(e,t)=>{let n=_ie(e);ma(e,n);let r=!1;return S(e,i=>{if(r||i!==e&&D(i))return!1;if((j(i,`ReturnStatement`)||j(i,`BreakStatement`)&&vie(i,e,t))&&xie(i,e,n))return r=!0,!1}),r},Cie=new Set([...mie,`pop`,`shift`]),wie=e=>{let t=new Set;return S(e,n=>{if(n!==e&&D(n))return!1;if(j(n,`AssignmentExpression`)&&n.left){pa(n.left,t);let e=Yre(n.left);e&&t.add(e);return}if(!j(n,`CallExpression`))return;let r=n.callee;if(j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&Cie.has(r.property.name)){let e=Yre(r.object);e&&t.add(e)}}),t},Tie=(e,t)=>{if(!e)return!1;let n=new Set;if(St(e,n),n.size===0)return!1;let r=wie(t),i=_ie(t);ma(t,i);for(let e of n)if(r.has(e)||i.has(e))return!0;return!1},Eie=e=>{let t=e.parent;return j(t,`LabeledStatement`)&&j(t.label,`Identifier`)?t.label.name:null},Die=(e,t)=>{let n=!1;return S(e,e=>{if(n||ia(e)||j(e,`FunctionDeclaration`))return!1;if(j(e,`AwaitExpression`)&&pie(e,t))return n=!0,!1}),n},Oie=new Set([`forEach`,`map`,`filter`,`reduce`,`reduceRight`,`find`,`findIndex`,`some`,`every`,`flatMap`]),kie=new Set([`filter`,`flat`,`slice`,`concat`,`reverse`,`sort`,`toReversed`,`toSorted`]),Aie=e=>{let t=e;for(;;){t=y(t);let e=t.parent;if(!e)return t;if(j(e,`SpreadElement`)||j(e,`ArrayExpression`)){t=e;continue}if(j(e,`LogicalExpression`)){t=e;continue}if(j(e,`ConditionalExpression`)&&e.test!==t){t=e;continue}if(j(e,`MemberExpression`)&&e.object===t){let n=e.parent;if(j(n,`CallExpression`)&&n.callee===e&&!e.computed&&j(e.property,`Identifier`)&&kie.has(e.property.name)){t=n;continue}}return t}},_a=e=>{let t=e;for(;t.parent&&!D(t);)t=t.parent;return t},jie=(e,t)=>{let n=!1;return S(t,t=>{if(n)return!1;if(!la(t))return;let r=new Set;for(let e of t.arguments??[])St(e,r);if(r.has(e))return n=!0,!1}),n},Mie=(e,t)=>{let n=Aie(e),r=n.parent;if(j(r,`CallExpression`)&&la(r)&&(r.arguments??[]).some(e=>e===n)||j(r,`CallExpression`)&&Fre(r,n,t.scopes))return!0;let i=null;return j(r,`VariableDeclarator`)&&r.init===n&&j(r.id,`Identifier`)?i=r.id.name:j(r,`AssignmentExpression`)&&r.right===n&&j(r.left,`Identifier`)&&(i=r.left.name),!i||!r?!1:jie(i,_a(r))},Nie=e=>{let t=_a(e);if(!D(t))return!1;let n=null;return j(t,`FunctionDeclaration`)&&j(t.id,`Identifier`)?n=t.id.name:j(t.parent,`VariableDeclarator`)&&j(t.parent.id,`Identifier`)&&(n=t.parent.id.name),!n||!t.parent?!1:jie(n,_a(t.parent))},Pie=w({id:`async-await-in-loop`,title:`await inside a loop`,severity:`warn`,tags:[`test-noise`],recommendation:`Consider concurrent calls only for independent asynchronous work. Shared queues or synchronous work may not benefit. Preserve resource limits, transaction ordering, and failure/cancellation semantics; observe all callback promises.`,create:e=>{let t=!1,n=(n,r)=>{if(t)return;let i=n.body;if(!i||!sa(i,!0)||Die(i,e)||(j(n,`WhileStatement`)||j(n,`DoWhileStatement`))&&Tie(n.test,i)||hie(i)||Sie(i,Eie(n))||Nie(n))return;let a=sa(i,!0,t=>fie(t,n,e));a&&e.report({node:a,message:`This ${r} waits before starting the next iteration. If iterations perform independent asynchronous work, consider bounded concurrency; await syntax alone does not establish a speedup.`})};return{ImportDeclaration(e){Yr(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||!j(n.callee,`MemberExpression`)||!j(n.callee.property,`Identifier`))return;let r=n.callee.property.name;if(!Oie.has(r))return;let i=n.arguments?.[0];if(!i||!ia(i)||!i.async)return;let a=i.body;if(!a||(r===`map`||r===`flatMap`)&&Mie(n,e))return;let o=sa(a);if(o){let t=r===`forEach`?"Async callback in .forEach returns a promise that .forEach ignores. Use a `for…of` loop to await each operation, or collect and observe promises when concurrent work is safe.":`Async callback in .${r} returns a promise that the array method does not await. Check that its consumer observes completion and handles rejections; callbacks may already overlap.`;e.report({node:o,message:t})}}}}}),va=(e,t)=>{if(e){if(j(e,`AssignmentPattern`)){St(e.right,t),va(e.left,t);return}if(j(e,`RestElement`)){va(e.argument,t);return}if(j(e,`ArrayPattern`)){for(let n of e.elements??[])va(n,t);return}if(j(e,`ObjectPattern`))for(let n of e.properties??[])j(n,`RestElement`)?va(n.argument,t):j(n,`Property`)&&(n.computed&&St(n.key,t),va(n.value,t))}},Fie=e=>j(e,`ExpressionStatement`)?j(e.expression,`AwaitExpression`):!1,Iie=e=>j(e,`ReturnStatement`)||j(e,`ThrowStatement`)||j(e,`ContinueStatement`)||j(e,`BreakStatement`),Lie=e=>{if(!j(e,`IfStatement`))return!1;let t=e.consequent;if(!t)return!1;if(Iie(t))return!0;if(!j(t,`BlockStatement`))return!1;for(let e of t.body??[])if(Iie(e))return!0;return!1},ya=(e,t)=>{for(let n of t)if(e.has(n))return!0;return!1},Rie=(e,t)=>{j(e,`VariableDeclarator`)&&(St(e.init,t),va(e.id,t))},zie=(e,t)=>{if(!j(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(!j(r,`VariableDeclarator`))continue;if(Xi(r.init)||Xi(r.id)){n=!0;let e=t.size;kt(r.id,t),t.size>e&&(i=!0);continue}let e=new Set;if(Rie(r,e),!ya(e,t))continue;let a=t.size;kt(r.id,t),t.size>a&&(i=!0)}}let a=t.size>r;return{didIntroduceAwait:n,didGrowBindings:a}},Bie=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(`.`)),Vie=e=>{let t=!1;return S(e,e=>{if(t)return!1;if(!j(e,`MemberExpression`)||e.computed||!j(e.property,`Identifier`)||e.property.name!==`current`||!j(e.object,`Identifier`))return;let n=e.object.name;if(n.endsWith(`Ref`)&&n.length>3)return t=!0,!1}),t},Hie=[`cancel`,`abort`,`dispos`,`destroy`,`stale`,`alive`,`mounted`,`stopped`,`settled`,`cleanedup`,`generation`,`current`,`token`,`signal`],Uie=e=>{let t=e.replace(/^[_#]+/,``).toLowerCase();if(t===`current`)return!1;for(let e of Hie)if(t.includes(e))return!0;return!1},Wie=e=>{let t=new Set;return S(e,e=>{(j(e,`Identifier`)||j(e,`PrivateIdentifier`))&&t.add(e.name)}),t},Gie=e=>{if(!e)return!1;let t=new Set;St(e,t);for(let e of t)if(Bie.has(e))return!0;for(let t of Wie(e))if(Bie.has(t)||Uie(t))return!0;return Vie(e)},Kie=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t)return!1;if(j(e,`CallExpression`))return j(e.callee,`ArrowFunctionExpression`)||j(e.callee,`FunctionExpression`)?void 0:(t=!0,!1);if(j(e,`ThisExpression`)||j(e,`PrivateIdentifier`))return t=!0,!1}),t},qie=e=>{if(!e)return!1;let t=A(e);if(!j(t,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(t.operator))return!1;let n=e=>{let t=A(e);return j(t,`Literal`)||j(t,`TemplateLiteral`)||j(t,`UnaryExpression`)&&n(t.argument)};return!n(t.left)&&!n(t.right)},Jie=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`parameter`||i.kind===`const`&&i.initializer)&&xn(i.scope,n))},Yie=(e,t,n)=>{let r=A(e);if(j(r,`MemberExpression`))return!0;if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return!!(i&&(i.kind===`let`||i.kind===`var`||i.kind===`import`)&&!xn(i.scope,n))},Xie=(e,t,n)=>{let r=A(e);return!qie(r)||!j(r,`BinaryExpression`)?!1:Jie(r.left,t,n)&&Yie(r.right,t,n)||Jie(r.right,t,n)&&Yie(r.left,t,n)},Zie=(e,t,n)=>{if(!n||!e)return!1;let r=A(e);if(!j(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=A(e);if(j(r,`LogicalExpression`)&&(r.operator===`&&`||r.operator===`||`)){i.push(r.left,r.right);continue}if(!Xie(r,t,n))return!1}return!0},Qie=e=>{if(!e)return!1;let t=!1;return S(e,e=>{if(t||D(e)||j(e,`ThrowStatement`))return!1;if(j(e,`CallExpression`)||j(e,`NewExpression`)||j(e,`AssignmentExpression`)||j(e,`UpdateExpression`))return t=!0,!1}),t},$ie=(e,t)=>{if(!e)return!1;let n=new Set;if(St(e,n),n.size===0)return!1;let r=M(t);if(!r||!D(r)||!r.body)return!1;let i=!1;return S(r.body,e=>{if(i)return!1;let t=null;if(j(e,`AssignmentExpression`)?t=e.left:j(e,`UpdateExpression`)&&(t=e.argument),!t)return;let r=new Set;kt(t,r),j(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(j(n,`VariableDeclaration`)?zie(n,r).didIntroduceAwait&&(i=!0):Fie(n)&&(i=!0,a=!0),!i)return null;let o=t+1;for(;o<e.length;){let t=e[o];if(Fie(t)){a=!0,o++;continue}if(!j(t,`VariableDeclaration`))break;let n=zie(t,r);if(!n.didIntroduceAwait&&!n.didGrowBindings)break;o++}return{firstAwaitStatement:n,awaitedBindingNames:r,guardCandidateIndex:o,hasBareSideEffectAwait:a}},tae=w({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(!Lie(i)||!j(i,`IfStatement`))continue;if(r.hasBareSideEffectAwait||r.awaitedBindingNames.size===0){n=r.guardCandidateIndex-1;continue}let a=new Set;if(St(i.test,a),ya(a,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}let o=M(i),s=o?e.scopes.ownScopeFor(o):null;if(Gie(i.test)||Kie(i.test)||qie(i.test)||Zie(i.test,e.scopes,s)||$ie(i.test,i)||Qie(i.consequent)){n=r.guardCandidateIndex-1;continue}let c=new Set;if(St(i.consequent,c),ya(c,r.awaitedBindingNames)){n=r.guardCandidateIndex-1;continue}e.report({node:r.firstAwaitStatement,message:`This await blocks the function before an early-return that doesn't use the awaited value, so the skip path waits for nothing. Move the await below the guard so it only runs when you need the data`}),n=r.guardCandidateIndex-1}},n=e=>{e&&S(e,e=>{if(D(e))return!1;j(e,`BlockStatement`)?t(e.body??[]):j(e,`SwitchCase`)&&t(e.consequent??[])})},r=e=>{D(e)&&e.async&&j(e.body,`BlockStatement`)&&n(e.body)};return{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression:r}}}),nae=(e,t,n)=>{let r=new Set;for(let e of t)S(e,e=>{if(!j(e,`Identifier`))return;let t=n.symbolFor(e);t?.bindingIdentifier===e&&r.add(t.id)});let i=!1;return S(e,e=>{if(i||!j(e,`Identifier`))return;let t=n.referenceFor(e);t?.flag!==`write`&&t?.resolvedSymbol&&r.has(t.resolvedSymbol.id)&&(i=!0)}),i},rae=e=>j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`cookies`,ba=e=>rae(e)?!0:j(e,`AwaitExpression`)&&e.argument?rae(e.argument):!1,iae=new Set([`headers`,`searchParams`]),aae=e=>j(e,`AwaitExpression`)&&e.argument?e.argument:e,oae=e=>j(e,`NewExpression`)&&j(e.callee,`Identifier`)&&Ce.has(e.callee.name),sae=e=>!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.object,`Identifier`)||!j(e.callee.property,`Identifier`)?!1:Nee.has(e.callee.object.name)&&pt.has(e.callee.property.name),cae=e=>j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`headers`,lae=new Set([`createHash`,`createHmac`,`createSign`,`createVerify`,`createCipheriv`,`createDecipheriv`]),uae=e=>j(e,`CallExpression`)?j(e.callee,`Identifier`)?lae.has(e.callee.name):j(e.callee,`MemberExpression`)&&j(e.callee.property,`Identifier`)&&lae.has(e.callee.property.name):!1,dae=e=>j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&iae.has(e.property.name),fae=e=>{let t=aae(e);return!!(oae(t)||sae(t)||dae(t)||cae(t)||uae(t))},pae=(e,t)=>!!(oae(e)||sae(e)||dae(e)||cae(e)||uae(e)||j(e,`Identifier`)&&t.has(e.name)),mae=(e,t)=>{let n=e;for(;n;){if(pae(n,t))return!0;if(j(n,`MemberExpression`)){n=n.object;continue}if(j(n,`ChainExpression`)){n=n.expression;continue}if(j(n,`AwaitExpression`)){n=n.argument;continue}if(j(n,`TSNonNullExpression`)||j(n,`TSAsExpression`)){n=n.expression;continue}return!1}return!1},hae=new Set,gae=new Set([`set`,`append`,`delete`]),_ae=e=>j(e,`Property`)&&j(e.key,`Identifier`)&&e.key.name===`method`&&j(e.value,`Literal`)&&typeof e.value.value==`string`&&gt.has(e.value.value.toUpperCase()),vae=(e,t)=>ba(e)?!0:j(e,`Identifier`)?t.has(e.name):!1,yae=(e,t,n,r=!0)=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)||!gae.has(e.callee.property.name))return null;let i=A(e.callee.object);return!n?.(i)&&(!r||!vae(i,t))?null:e.callee.property.name},xa=e=>{if(!j(e,`CallExpression`)||!j(e.callee,`Identifier`)||e.callee.name!==`fetch`)return!1;let t=e.arguments?.[1];return!t||!j(t,`ObjectExpression`)?!1:!!t.properties?.some(_ae)},bae=(e,t,n,r=!0)=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`))return!1;let{property:i,object:a}=e.callee;if(!j(i,`Identifier`)||!tee.has(i.name))return!1;let o=A(a);return!(n?.(o)||r&&mae(o,t))},xae=e=>{if(!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`))return`.unknown()`;let t=e.callee.property.name,n=A(e.callee.object),r=j(n,`Identifier`)?n.name:null;return r?`${r}.${t}()`:`.${t}()`},Sa=(e,t={})=>{let n=t.locallyScopedSafeBindings??hae,r=t.locallyScopedCookieBindings??hae,i=null;return S(e,a=>{if(i)return;if(a!==e&&D(a)&&t.shouldTraverseNestedFunction&&!t.shouldTraverseNestedFunction(a))return!1;let o=yae(a,r,t.isCookieReceiver,t.useDefaultCookieReceiverDetection);if(o){i=`cookies().${o}()`;return}if(xa(a)&&j(a,`CallExpression`)){let e=a.arguments[1];if(!j(e,`ObjectExpression`))return;let t=e.properties.find(_ae);if(!t||!j(t,`Property`)||!j(t.value,`Literal`))return;i=`fetch() with method ${t.value.value}`;return}bae(a,n,t.isSafeReceiver,t.useDefaultSafeReceiverDetection)&&(i=xae(a))}),i},Sae=e=>{let t=e;for(;j(t,`ChainExpression`);)t=t.expression;if(!j(t,`CallExpression`)&&!j(t,`NewExpression`))return[];let n=[],r=t.callee;for(;r;){if(j(r,`ChainExpression`)){r=r.expression;continue}if(j(r,`MemberExpression`)){j(r.property,`Identifier`)&&n.push(r.property.name),r=r.object;continue}if(j(r,`CallExpression`)){r=r.callee;continue}j(r,`Identifier`)&&n.push(r.name);break}return n},Ca=e=>{if(j(e,`VariableDeclaration`)){let t=e.declarations?.[0];if(t&&j(t.init,`AwaitExpression`))return t.init.argument??null}return j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`)?e.expression.argument??null:null},Cae=e=>One.has(e)?!0:kne.some(t=>e.startsWith(t)),wae=e=>e?Sae(e).some(Cae):!1,Tae=e=>e?Sae(e).some(e=>Jr.has(e)):!1,Eae=e=>j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`),Dae=e=>{let t=A(e);return j(t,`CallExpression`)?t.arguments.every(e=>{if(j(e,`SpreadElement`))return!1;let t=A(e);return j(t,`Identifier`)||j(t,`Literal`)}):!1},Oae=e=>{let t=Ca(e);if(!t)return!1;let n=A(t);return!j(n,`CallExpression`)&&!j(n,`NewExpression`)&&!j(n,`ImportExpression`)},kae=(e,t)=>{let n=null;for(let r of e){if(Oae(r))return!0;let e=Ca(r);if(e&&te(e,t.scopes)||e&&Sa(e,{shouldTraverseNestedFunction:()=>!1}))return!0;let i=e?ra(e,t.scopes):null;if(Eae(r)){if(i===null||!e||!Dae(e)||n!==null&&n!==i)return!0;n=i}if(wae(e)||Tae(e)&&i===null)return!0}return!1},Aae=e=>{let t=e.parent;for(;t;){if(D(t)){let e=t.parent;if(e&&j(e,`CallExpression`)){let t=e.callee;if(j(t,`MemberExpression`)&&j(t.property,`Identifier`)&&t.property.name===`transaction`||j(t,`Identifier`)&&t.name===`transaction`)return!0}}t=t.parent??null}return!1},jae=(e,t)=>{let n=[];for(let r of e){let e=Ca(r);if(e){if(nae(e,n,t.scopes))return;j(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`})},Mae=w({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=On(e.filename??``),n=Tne.test(t),r=!1,i=()=>n||r;return{ImportDeclaration(e){r||Yr(e.source?.value)&&(r=!0)},BlockStatement(t){if(i()||Aae(t))return;let n=[],r=()=>{n.length>=3&&(kae(n,e)||jae(n,e)),n.length=0};for(let e of t.body??[])j(e,`VariableDeclaration`)&&e.declarations?.length===1&&j(e.declarations[0].init,`AwaitExpression`)||j(e,`ExpressionStatement`)&&j(e.expression,`AwaitExpression`)?n.push(e):r();r()}}}}),wa=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`||j(t,`UnaryExpression`)&&t.operator===`void`},Nae=e=>{let t=e[0];return t&&j(t,`Identifier`)&&t.name===`this`?e.slice(1):e},Pae="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.",Fae=new Set([`localStorage`,`sessionStorage`]),Iae=new Set([`window`,`globalThis`,`self`]),Lae=/token|jwt|secret|password|passwd|credential|api[-_]?key|bearer|private[-_]?key/i,Rae=/csrf|xsrf|device|fcm|apns|push|design|tokeniz|syntax|css|theme|color/i,zae=/jwt|secret|password|passwd|credential|private[-_]?key|api[-_]?key|bearer|access[-_]?token|refresh[-_]?token|auth[-_]?token|id[-_]?token|session/i,Bae=e=>!(!Lae.test(e)||Rae.test(e)&&!zae.test(e)),Vae=e=>j(e,`Identifier`)?Fae.has(e.name):j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&Iae.has(e.object.name)&&j(e.property,`Identifier`)?Fae.has(e.property.name):!1,Ta=(e,t=new Set)=>{if(t.has(e))return null;t.add(e);let n=O(e,e.name);if(!n?.initializer)return null;if(j(n.initializer,`FunctionDeclaration`))return n.initializer;let r=n.bindingIdentifier.parent;if(!r||!j(r,`VariableDeclarator`))return null;let i=r.parent;if(!i||!j(i,`VariableDeclaration`)||i.kind!==`const`)return null;let a=A(n.initializer);return j(a,`Identifier`)?Ta(a,t)??a:a},Ea=(e,t)=>{let n=A(e);if(Da(n,new Set(t)))return!0;if(j(n,`ConditionalExpression`)){let e=A(n.consequent),r=A(n.alternate);return(wa(e)||Ea(e,t))&&(wa(r)||Ea(r,t))&&(!wa(e)||!wa(r))}if(j(n,`LogicalExpression`)){if(n.operator===`&&`)return Ea(n.right,t);let e=A(n.left),r=A(n.right),i=Ea(e,t),a=Ea(r,t);return(i||wa(e))&&(a||wa(r))&&(i||a)}return!1},Da=(e,t=new Set)=>{let n=A(e);if(t.has(n))return!1;if(t.add(n),Vae(n))return!0;if(j(n,`Identifier`)){let e=Ta(n);return e?Da(e,new Set(t)):!1}if(!j(n,`CallExpression`))return!1;let r=A(n.callee);if(!j(r,`Identifier`))return!1;let i=Ta(r);if(!D(i))return!1;if(j(i,`ArrowFunctionExpression`)&&!j(i.body,`BlockStatement`))return Ea(i.body,t);let a=!1;for(let e of et(i)){if(!e.argument)continue;let n=A(e.argument);if(!wa(n)){if(!Ea(n,t))return!1;a=!0}}return a},Hae=e=>{if(j(e,`Literal`)&&typeof e.value==`string`)return e.value;if(j(e,`TemplateLiteral`)&&(e.expressions??[]).length===0){let t=(e.quasis??[])[0]?.value?.cooked;return typeof t==`string`?t:null}if(j(e,`Identifier`)&&e.name!==`undefined`){let t=O(e,e.name);return!t?.initializer||j(t.initializer,`Identifier`)?null:Hae(t.initializer)}return null},Uae=e=>!e.computed&&j(e.property,`Identifier`)?e.property.name:e.computed&&j(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null,Oa=(e,t,n,r,i=new Set)=>{let a=A(e);if(i.has(a))return null;if(i.add(a),j(a,`Identifier`)){let e=n.symbolFor(a)?.id,o=e===void 0?-1:t.indexOf(e);if(o!==-1)return o;let s=Ta(a);return s?Oa(s,t,n,r,i):null}if(r&&j(a,`CallExpression`)&&j(a.callee,`MemberExpression`)&&!a.callee.computed&&j(a.callee.object,`Identifier`)&&a.callee.object.name===`JSON`&&j(a.callee.property,`Identifier`)&&a.callee.property.name===`stringify`){let e=a.arguments[0];return e?Oa(e,t,n,!0,i):null}return null},ka=new WeakMap,Wae=(e,t)=>{let n=ka.get(e);if(n)return n;if(!j(e,`FunctionDeclaration`)&&!j(e,`FunctionExpression`)&&!j(e,`ArrowFunctionExpression`))return ka.set(e,[]),[];let r=Nae(e.params).map(e=>{let n=A(e),r=j(n,`Identifier`)?n:j(n,`AssignmentPattern`)&&j(n.left,`Identifier`)?n.left:null;return r?t.symbolFor(r)?.id??null:null}),i=[];return S(e.body,n=>{if(n!==e.body&&D(n))return!1;if(!j(n,`CallExpression`))return;let a=A(n.callee);if(!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`)||a.property.name!==`setItem`||!Da(a.object))return;let o=n.arguments[0],s=n.arguments[1];if(!o||!s)return;let c=Oa(o,r,t,!1),l=Oa(s,r,t,!0);c===null||l===null||i.push({keyParameterIndex:c,valueParameterIndex:l})}),ka.set(e,i),i},Gae=w({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:wt(e=>{let t=!1,n=[],r=(t,n)=>{n.some(e=>{let t=Hae(e);return t!==null&&Bae(t)})&&e.report({node:t,message:Pae})},i=(t,n)=>{let i=Ta(n),a=i?Wae(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&&j(e.property,`Identifier`)&&e.property.name===`setItem`&&(t=!0)},CallExpression(e){let t=A(e.callee);if(j(t,`MemberExpression`)&&!t.computed&&j(t.property,`Identifier`)&&t.property.name===`setItem`&&Da(A(t.object))){let t=e.arguments[0];r(e,t?[t]:[])}else j(t,`Identifier`)&&n.push(e)},"Program:exit"(){if(t)for(let e of n){let t=A(e.callee);j(t,`Identifier`)&&i(e,t)}},AssignmentExpression(t){let n=t.left;if(!j(n,`MemberExpression`))return;let r=Uae(n);!r||!Bae(r)||Da(n.object)&&e.report({node:n,message:Pae})}}})}),Kae=e=>`Users who rely on autofill can't fill this field because \`${e}\` isn't a known token, so use a valid \`autoComplete\` token.`,qae=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(`.`)),Jae=new Set([`tel`,`tel-country-code`,`tel-national`,`tel-area-code`,`tel-local`,`tel-extension`,`email`,`impp`]),Yae=new Set([`shipping`,`billing`]),Xae=new Set([`home`,`work`,`mobile`,`fax`,`pager`]),Zae=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&&Yae.has(t[n])&&(n+=1);let r=n<t.length&&Xae.has(t[n]);r&&(n+=1);let i=t[n];return!i||!(r?Jae.has(i):qae.has(i))?!1:(n+=1,n<t.length&&t[n]===`webauthn`&&(n+=1),n===t.length)},Qae=new Set([`input`,`textarea`,`select`,`form`]),$ae=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.autocompleteValid??{}:{};return{inputComponents:new Set(n.inputComponents??[])}},Aa=w({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:wt(e=>{let t=$ae(e.settings);return{JSXOpeningElement:n=>{let r=Cr(n,e.settings);if(!Qae.has(r)&&!t.inputComponents.has(r))return;let i=F(n.attributes,`autoComplete`);if(!i)return;let a=yr(i);a&&(Zae(a)||e.report({node:i,message:Kae(a)}))}}})}),V=(e,t)=>e?.find(e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&e.name.name===t),ja=e=>kr(e)?.split(`.`).at(-1)??null,eoe=e=>{if(e.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!j(t,`ImportDeclaration`)||Wt(t)||j(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`?null:t},Ma=e=>{let t=eoe(e);if(!t||!j(t,`ImportDeclaration`))return null;let n=t.source.value;return typeof n==`string`?n:null},Na=(e,t,n,r)=>{if(!j(e,`JSXMemberExpression`))return null;if(j(e.object,`JSXIdentifier`)){let i=T(e.object,r.scopes);if(!i)return null;let a=Ma(i);return a===null||!t.test(a)?null:rt(i.declarationNode)===n?e.property.name:null}if(!j(e.object,`JSXMemberExpression`)||!j(e.object.object,`JSXIdentifier`)||e.object.property.name!==n)return null;let i=T(e.object.object,r.scopes);if(!i||!j(i.declarationNode,`ImportNamespaceSpecifier`))return null;let a=Ma(i);return a!==null&&t.test(a)?e.property.name:null},Pa=(e,t)=>{let n=A(e);if(j(n,`JSXElement`)){Fa(n,t);return}if(j(n,`JSXFragment`)){Ia(n.children,t);return}if(j(n,`ConditionalExpression`)){Pa(n.consequent,t),Pa(n.alternate,t);return}if(j(n,`LogicalExpression`)){n.operator!==`&&`&&Pa(n.left,t),Pa(n.right,t);return}if(j(n,`ArrayExpression`)){for(let e of n.elements)e&&(j(e,`SpreadElement`)?t.onOpaqueExpression?.(e):Pa(e,t));return}if(j(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(j(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}j(n,`JSXEmptyExpression`)||j(n,`Identifier`)&&n.name===`undefined`||t.onOpaqueExpression?.(n)},Fa=(e,t)=>{t.onElement(e)!==!1&&Ia(e.children,t)},Ia=(e,t)=>{for(let n of e)j(n,`JSXElement`)?Fa(n,t):j(n,`JSXFragment`)?Ia(n.children,t):j(n,`JSXExpressionContainer`)?Pa(n.expression,t):j(n,`JSXText`)&&n.value.trim().length>0&&t.onStaticText?.(n.value)},La=(e,t)=>{let n={foundPart:!1,sawOpaqueContent:!1},r=e=>{S(e,e=>{j(e,`JSXOpeningElement`)&&t.isPartElementName(e.name)&&(n.foundPart=!0)})};return Ia(e,{onElement:e=>{if(t.isPartElementName(e.openingElement.name))return n.foundPart=!0,!1;let i=V(e.openingElement.attributes,`render`);return i?.value&&r(i.value),t.isOpaqueElement(e)&&(n.sawOpaqueContent=!0),!0},onOpaqueExpression:e=>{n.sawOpaqueContent=!0,r(e)}}),n},toe=[{namespaceName:`Dialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/dialog)?$/},{namespaceName:`AlertDialog`,moduleSourcePattern:/^@base-ui(?:-components)?\/react(?:\/alert-dialog)?$/}],Ra=[`aria-label`,`aria-labelledby`,`title`],noe=e=>{if(!e.value||!j(e.value,`JSXExpressionContainer`))return!0;let t=A(e.value.expression);if(!j(t,`JSXElement`))return!0;let n=t.openingElement.attributes;return I(n)||Ra.some(e=>F(n,e))},roe=(e,t,n)=>{if(Na(e,t.moduleSourcePattern,t.namespaceName,n)===`Title`)return!0;let r=ja(e);return r===`Title`||r===`${t.namespaceName}Title`},za=w({id:`base-ui-dialog-popup-requires-title`,title:`Base UI dialog popup without a title`,severity:`warn`,requires:[`base-ui`],recommendation:`Give every Base UI Dialog.Popup and AlertDialog.Popup a Title part (visually hidden when the design shows no heading) or name the dialog with aria-label.`,create:e=>({JSXOpeningElement(t){for(let n of toe){if(Na(t.name,n.moduleSourcePattern,n.namespaceName,e)!==`Popup`)continue;if(I(t.attributes))return;let r=V(t.attributes,`render`);if(r&&noe(r)||Ra.some(e=>F(t.attributes,e)))return;let i=t.parent;if(!i||!j(i,`JSXElement`)||i.children.length===0)return;let a=La(i.children,{isPartElementName:t=>roe(t,n,e),isOpaqueElement:t=>{let r=t.openingElement.name;if(Na(r,n.moduleSourcePattern,n.namespaceName,e)!==null)return!1;let i=ja(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}}})}),ioe=/^@base-ui(?:-components)?\/react(?:\/field)?$/,Ba=[`aria-label`,`aria-labelledby`],Va=(e,t)=>Na(e,ioe,`Field`,t),Ha=(e,t)=>{if(Va(e,t)===`Label`)return!0;let n=ja(e);return n===`label`||n===`Label`||n===`FieldLabel`},aoe=(e,t,n)=>{let r=e.parent;for(;r&&r!==t;){if(j(r,`JSXElement`)&&Va(r.openingElement.name,n)===`Control`)return!0;r=r.parent}return!1},ooe=(e,t)=>{let n={hasControl:!1,hasLabel:!1,sawUnprovableContent:!1};return Ia(e.children,{onElement:r=>{let i=r.openingElement,a=i.name;if(Ha(a,t))return n.hasLabel=!0,!1;let o=Va(a,t);if((o===`Control`||aoe(i,e,t))&&Ba.some(e=>F(i.attributes,e)))return n.hasLabel=!0,!1;I(i.attributes)&&(n.sawUnprovableContent=!0);let s=V(i.attributes,`render`);if(s?.value&&S(s.value,e=>{j(e,`JSXOpeningElement`)&&Ba.some(t=>F(e.attributes,t))&&(n.hasLabel=!0)}),o===`Control`)return n.hasControl=!0,!0;if(o!==null)return!0;let c=ja(a);return c!==null&&/^[A-Z]/.test(c)&&c!==`Fragment`&&(n.sawUnprovableContent=!0),!0},onOpaqueExpression:e=>{n.sawUnprovableContent=!0,S(e,e=>{j(e,`JSXOpeningElement`)&&Ha(e.name,t)&&(n.hasLabel=!0)})}}),n},Ua=w({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(Va(t.name,e)!==`Root`)return;let n=t.parent;if(!n||!j(n,`JSXElement`)||n.children.length===0)return;let r=ooe(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.`})}})}),Wa=(e,t)=>{let n=e.parent?.parent;for(;n;){if(j(n,`JSXAttribute`))return`unprovable`;if(j(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=ja(e);if(i!==null&&/^[A-Z]/.test(i)&&i!==`Fragment`)return`unprovable`}n=n.parent}return`unprovable`},soe=/^@base-ui(?:-components)?\/react(?:\/tabs)?$/,Ga=(e,t)=>Na(e,soe,`Tabs`,t),coe=w({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){Ga(t.name,e)===`Tab`&&Wa(t,t=>{let n=Ga(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.`})}})}),loe=e=>{let t=e;for(;t;){if(j(t,`MemberExpression`)){if(j(t.property,`Identifier`)&&t.property.name===`document`||j(t.object,`Identifier`)&&t.object.name===`document`)return!0;t=t.object;continue}return!!(j(t,`Identifier`)&&t.name===`document`)}return!1},Ka=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`Identifier`)?t.name===`createElement`:j(t,`MemberExpression`)&&(t.computed?j(t.property,`Literal`)&&t.property.value===`createElement`:j(t.property,`Identifier`)&&t.property.name===`createElement`)?!loe(t.object):!1},qa="Your users can submit the form by accident because a `<button>` with no `type` defaults to submit.",uoe=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}},Ja=(e,t)=>e===`button`?t.button:e===`submit`?t.submit:e===`reset`?t.reset:!1,Ya=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return Ja(r.value,t);if(j(r,`TemplateLiteral`)){let e=ot(r);if(e!==null)return Ja(e,t)}if(j(r,`ConditionalExpression`))return Ya(r.consequent,t,n)&&Ya(r.alternate,t,n);if(j(r,`Identifier`)){if(n.has(r.name))return!1;let e=O(r,r.name);return!e?.initializer||!Xa(e)?!1:Ya(e.initializer,t,new Set(n).add(r.name))}return!1},Xa=e=>{let t=e.bindingIdentifier.parent;if(!t||!j(t,`VariableDeclarator`)||t.init!==e.initializer)return!1;let n=t.parent;return!!(n&&j(n,`VariableDeclaration`)&&n.kind===`const`)},doe=new Set([`ObjectPattern`,`ArrayPattern`,`Property`,`AssignmentPattern`,`RestElement`]),foe=e=>{let t=e;for(;t.parent&&doe.has(t.parent.type);)t=t.parent;return t},Za=(e,t=new Set)=>{if(t.has(e))return!1;t.add(e);let n=foe(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(j(r,`VariableDeclarator`)&&r.id===n){let e=r.init;if(!e||!j(e,`Identifier`))return!1;let n=O(e,e.name);return n?Za(n.bindingIdentifier,t):!1}return!1},poe=e=>{let t=O(e,e.name)?.bindingIdentifier,n=t?.parent;return!n||!j(n,`Property`)||n.computed||n.value!==t||!Za(n)?!1:j(n.key,`Identifier`)?n.key.name===`type`:j(n.key,`Literal`)?n.key.value===`type`:!1},moe=/Type$/,hoe=(e,t)=>{if(!moe.test(e.name))return!1;let n=O(e,e.name)?.bindingIdentifier,r=n?.parent;if(!r||!j(r,`AssignmentPattern`)||r.left!==n)return!1;let i=r.parent;return!i||!j(i,`Property`)||i.computed||i.value!==r||!Za(i)?!1:Ya(r.right,t)},Qa=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Identifier`)){if(r.name===`type`||poe(r)||hoe(r,t))return!0;if(n.has(r.name))return!1;let e=O(r,r.name);if(!e?.initializer||!Xa(e))return!1;let i=A(e.initializer);return!j(i,`ConditionalExpression`)&&!j(i,`LogicalExpression`)?!1:Qa(i,t,new Set(n).add(r.name))}if(j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===`type`)return!0;if(j(r,`LogicalExpression`)&&(r.operator===`??`||r.operator===`||`))return Qa(r.left,t,n);if(j(r,`ConditionalExpression`)){let e=[r.consequent,r.alternate];return e.some(e=>Qa(e,t,n))&&e.every(e=>Qa(e,t,n)||Ya(e,t))}return!1},goe=[`react-aria`,`@react-aria/interactions`,`@react-aria/focus`,`@react-aria/utils`],_oe={usePress:`pressProps`,useLongPress:`longPressProps`,useHover:`hoverProps`,useFocus:`focusProps`,useFocusRing:`focusProps`,useFocusWithin:`focusWithinProps`,useKeyboard:`keyboardProps`,useMove:`moveProps`},$a=e=>{for(let t of goe){let n=m(e,e.name,t);if(n!==null)return n}return null},eo=e=>e.computed?null:j(e.key,`Identifier`)?e.key.name:j(e.key,`Literal`)&&typeof e.key.value==`string`?e.key.value:null,voe=e=>{if(j(e,`ArrowFunctionExpression`)&&e.body&&e.body.type!==`BlockStatement`)return[e.body];let t=[],n=e=>{if(j(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(!(j(t,`FunctionDeclaration`)||j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`))&&!n(t))return!1}}return!0},r=e.body;return!r||!n(r)?null:t},yoe=(e,t)=>{let n=e.bindingIdentifier.parent;if(!n||!j(n,`Property`)||n.computed||n.value!==e.bindingIdentifier)return!1;let r=eo(n);if(!r)return!1;let i=n.parent;if(!i||!j(i,`ObjectPattern`))return!1;let a=i.parent;if(!a||!j(a,`VariableDeclarator`)||a.id!==i||!a.init)return!1;let o=a.parent;if(!o||!j(o,`VariableDeclaration`)||o.kind!==`const`)return!1;let s=A(a.init);if(!j(s,`CallExpression`))return!1;let c=A(s.callee);if(!j(c,`Identifier`))return!1;let l=$a(c);if(l!==null)return _oe[l]===r;let u=O(c,c.name)?.initializer;if(!u||!j(u,`FunctionDeclaration`)&&!j(u,`FunctionExpression`)&&!j(u,`ArrowFunctionExpression`))return!1;let d=voe(u);return!d||d.length===0?!1:d.every(e=>{let n=A(e);if(!j(n,`ObjectExpression`))return!1;for(let e of n.properties){if(j(e,`SpreadElement`)||!j(e,`Property`))return!1;if(eo(e)===r)return to(e.value,t)}return!0})},to=(e,t=new Set)=>{let n=A(e);if(j(n,`ObjectExpression`))return n.properties.every(e=>{if(j(e,`SpreadElement`))return to(e.argument,t);if(!j(e,`Property`))return!1;let n=eo(e);return n!==null&&n!==`type`});if(j(n,`CallExpression`)){let e=A(n.callee);return!j(e,`Identifier`)||$a(e)!==`mergeProps`?!1:n.arguments.every(e=>!j(e,`SpreadElement`)&&to(e,t))}if(j(n,`Identifier`)){if(t.has(n.name))return!1;let e=new Set(t).add(n.name),r=O(n,n.name);return r?r.initializer&&Xa(r)?to(r.initializer,e):yoe(r,e):!1}return!1},no=(e,t)=>{e.report({node:t,message:"This button has an invalid `type`, so the browser may treat it like a submit button."})},boe=e=>{let t=R(e.attributes,`form`,!1);return!!(t&&L(t)?.trim())},xoe=e=>!!Tr(e?xt(e,`form`):void 0)?.trim(),Soe=e=>{if(!j(e,`CallExpression`)||!Ka(e))return!1;let t=e.arguments[0];return!!(t&&j(t,`Literal`)&&t.value===`form`)},ro=e=>{let t=e.parent;for(;t;){if(j(t,`JSXElement`)&&N(t.openingElement)===`form`||Soe(t))return!0;t=t.parent}return!1},io=w({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=uoe(e.settings),n=oi(e.settings),r=jt(e.filename);return{JSXOpeningElement(i){if(n&&r||N(i)!==`button`)return;let a=F(i.attributes,`type`);if(!a){if(n&&!boe(i)&&!ro(i)||I(i.attributes)&&!i.attributes.every(e=>!j(e,`JSXSpreadAttribute`)||to(e.argument)))return;e.report({node:i.name,message:qa});return}let o=a.value;if(!o){no(e,a);return}if(j(o,`Literal`)){Ya(o,t)||no(e,a);return}if(j(o,`JSXExpressionContainer`)){let n=o.expression;if(!n||n.type===`JSXEmptyExpression`||Qa(n,t))return;Ya(n,t)||no(e,a)}},CallExpression(i){if(n&&r||!Ka(i))return;let a=i.arguments[0];if(!a||!j(a,`Literal`)||a.value!==`button`)return;let o=i.arguments[1],s=xoe(o)||ro(i);if(!o||wa(o)){if(n&&!s)return;e.report({node:i,message:qa});return}if(!j(o,`ObjectExpression`))return;let c=null,l=!1;for(let e of o.properties){if(j(e,`SpreadElement`)){l=!0;continue}if(!j(e,`Property`))continue;let t=e.key;if(j(t,`Identifier`)&&t.name===`type`||j(t,`Literal`)&&t.value===`type`){c=e.value;break}}if(!c){if(n&&!s||l&&!o.properties.every(e=>!j(e,`SpreadElement`)||to(e.argument)))return;e.report({node:o,message:qa});return}Qa(c,t)||Ya(c,t)||no(e,c)}}}}),Coe=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.checkedRequiresOnchangeOrReadonly??{}:{};return{ignoreMissingProperties:n.ignoreMissingProperties??!1,ignoreExclusiveCheckedAttribute:n.ignoreExclusiveCheckedAttribute??!1}},ao=e=>j(e,`Identifier`)||j(e,`MemberExpression`)&&!e.computed,oo=e=>!e.value||!j(e.value,`JSXExpressionContainer`)?!1:ao(e.value.expression),woe=e=>{if(!e.value)return!0;if(j(e.value,`JSXExpressionContainer`)){let t=e.value.expression;return j(t,`Literal`)&&t.value===!0}return!1},Toe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e){if(j(c,`JSXSpreadAttribute`)){o=!0;continue}if(!j(c,`JSXAttribute`))continue;let e=gn(c.name);e===`checked`?(t=c,n=oo(c)):e===`defaultChecked`&&!r?(r=c,i=oo(c)):e===`onChange`||e===`readOnly`?a=!0:e===`disabled`&&woe(c)&&(s=!0)}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},Eoe=e=>{let t=null,n=!1,r=null,i=!1,a=!1,o=!1,s=!1;for(let c of e.properties){if(j(c,`SpreadElement`)){o=!0;continue}if(!j(c,`Property`))continue;let e=c.key,l=null;if(j(e,`Identifier`)?l=e.name:j(e,`Literal`)&&typeof e.value==`string`&&(l=e.value),l){if(l===`checked`)t=c,n=ao(c.value);else if(l===`defaultChecked`&&!r)r=c,i=ao(c.value);else if(l===`onChange`||l===`readOnly`)a=!0;else if(l===`disabled`){let e=c.value;j(e,`Literal`)&&e.value===!0&&(s=!0)}}}return{checkedNode:t,defaultCheckedNode:r,bothCheckedAndDefaultForwarded:n&&i,hasOnChangeOrReadOnly:a,hasSpread:o,hasTruthyDisabled:s}},so=w({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=Coe(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){N(e)===`input`&&n(Toe(e.attributes))},CallExpression(e){if(!Ka(e))return;let t=e.arguments[0];if(!t||!j(t,`Literal`)||t.value!==`input`)return;let r=e.arguments[1];!r||!j(r,`ObjectExpression`)||n(Eoe(r))}}}}),co=w({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.`}),lo=(e,t,n)=>{let r=new Map,i=e,a=e.parent;for(;a&&!(D(a)||((j(a,`ConditionalExpression`)||j(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&&!D(s);){if(j(s,`ConditionalExpression`)||j(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},uo=(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(j(n,`ConditionalExpression`)){let e=n.consequent===t,r=n.alternate===t;if(e||r){let r=Cn(Rn(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(j(n,`LogicalExpression`)&&n.right===t){let e=Cn(Rn(n.left));if(!(n.operator===`&&`&&e===!0||n.operator===`||`&&e===!1)){u=!0;break}}if(j(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},fo=(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=b(r),c=new Set([...uo(i,t,n)].flatMap(e=>{let t=a.blockOf(e);if(!t)return[];let n=b(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},po=(e,t,n,r={})=>{let i=n.cfg.cfgFor(e);if(!i)return!1;let a=new Set([...uo(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},mo=`Component`,ho=`PureComponent`,Doe=e=>!j(e,`MemberExpression`)||!j(e.object,`Identifier`)||e.object.name!==`React`||!j(e.property,`Identifier`)?!1:e.property.name===mo||e.property.name===ho,go=e=>{if(!j(e,`ClassDeclaration`)&&!j(e,`ClassExpression`))return!1;let t=e.superClass;return t?Doe(t)?!0:j(t,`Identifier`)?t.name===mo||t.name===ho:!1:!1},Ooe=e=>{let t=e,n=e.parent;for(;n;){if(j(n,`IfStatement`)&&j(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||j(n,`ConditionalExpression`)&&j(n.test,`Literal`)&&(n.test.value===!1&&n.consequent===t||n.test.value===!0&&n.alternate===t)||(j(n,`WhileStatement`)||j(n,`ForStatement`))&&n.body===t&&n.test&&j(n.test,`Literal`)&&!n.test.value||j(n,`LogicalExpression`)&&n.right===t&&j(n.left,`Literal`)&&(n.operator===`&&`&&!n.left.value||n.operator===`||`&&n.left.value))return!0;t=n,n=n.parent}return!1},H=(e,t)=>{if(Ooe(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},koe=new Set([`debug`,`error`,`info`,`log`,`trace`,`warn`]),Aoe=new Set([`+`,`-`,`*`,`/`,`%`,`**`]),_o=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`)||e.arguments.length!==0)return!1;let r=A(n.object);return j(r,`Identifier`)&&r.name===`performance`&&t.isGlobalReference(r)&&C(n)===`now`},vo=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Literal`))return typeof r.value==`number`;if(j(r,`CallExpression`))return _o(r,t);if(j(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),vo(e.initializer,t,n))}return j(r,`UnaryExpression`)?(r.operator===`+`||r.operator===`-`)&&vo(r.argument,t,n):!j(r,`BinaryExpression`)||!Aoe.has(r.operator)?!1:vo(r.left,t,new Set(n))&&vo(r.right,t,new Set(n))},yo=(e,t)=>{if(_o(e,t))return!0;let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=A(n.object);if(!j(r,`Identifier`)||!t.isGlobalReference(r))return!1;let i=C(n);if(r.name===`console`)return koe.has(i??``);let a=e.arguments[0];return!!(r.name===`Math`&&i===`round`&&e.arguments.length===1&&a&&vo(a,t))},bo=({node:e,scopes:t})=>{let n=A(e);if(j(n,`Identifier`)){let e=t?.symbolFor(n);return e?`${n.name}#${e.id}`:n.name}if(j(n,`ThisExpression`))return`this`;if(!j(n,`MemberExpression`))return null;let r=bo({node:n.object,scopes:t}),i=C(n);return r&&i?`${r}.${i}`:null},joe=new Set([`every`,`filter`,`find`,`findIndex`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`,`sort`]),Moe=e=>{if(j(e,`FunctionDeclaration`))return e.id&&j(e.id,`Identifier`)?e.id:null;let t=y(e),n=t.parent;if(!n||!j(n,`VariableDeclarator`)||n.init!==t||!j(n.id,`Identifier`))return null;let r=n.parent;return!r||!j(r,`VariableDeclaration`)?null:r.kind===`const`?n.id:null},xo=(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;S(e,t=>{if(t!==e&&D(t)){let e=Moe(t);return e&&t.body&&(!r||r(t))&&s.set(e,t.body),!1}let n=j(t,`VariableDeclarator`)&&t.init?A(t.init):null;if(j(t,`VariableDeclarator`)&&j(t.id,`Identifier`)&&j(n,`Identifier`)&&t.parent&&j(t.parent,`VariableDeclaration`)&&t.parent.kind===`const`){let e=O(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&&D(e)||(t(e),qn(e,e=>l(e)),!j(e,`CallExpression`)))return;let o=A(e.callee);if(D(o)){o.body&&(!r||r(o))&&a(o.body,s);return}if(j(o,`Identifier`)){let e=O(o,o.name)?.bindingIdentifier,t=e?s.get(e):void 0;t&&a(t,s);return}if(!(!j(o,`MemberExpression`)||!joe.has(C(o)??``)))for(let t of e.arguments??[]){if(n&&!n(e,t))continue;let i=A(t);if(D(i))i.body&&(!r||r(i))&&a(i.body,s);else if(j(i,`Identifier`)){let e=O(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)},So=(e,t)=>{if(!D(e))return;let n=e.body;n&&S(n,e=>e.type===`ArrowFunctionExpression`||e.type===`FunctionExpression`||e.type===`FunctionDeclaration`?!1:t(e))},Co=(e,t,n,r=e,i=new Set)=>{let a=A(e);if(j(a,`ObjectExpression`))return a;if(!j(a,`Identifier`))return null;let o=n.symbolFor(a);return!o?.initializer||i.has(o.id)||It(o,r,n)||t.some(e=>se(a,e,r,n))?null:(i.add(o.id),Co(o.initializer,t,n,r,i))},wo=new Set([`window`,`globalThis`,`global`,`self`]),Noe=new Set([`body`,`documentElement`,`visualViewport`]),Poe=new Set([`initPlaces`,`places`]),To=new Set([`forceUpdate`,`setState`]),Eo=`mobx-react`,Do=`disposeOnUnmount`,Foe=[`handler`],Oo=new Map([[`addEventListener`,{releaseMethodName:`removeEventListener`,identityArgumentKinds:[`event`,`handler`],captureOptionsIndex:2}],[`addListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`prependOnceListener`,{releaseMethodName:`removeListener`,identityArgumentKinds:[`event`,`handler`]}],[`on`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`once`,{releaseMethodName:`off`,identityArgumentKinds:[`event`,`handler`]}],[`subscribe`,{releaseMethodName:`unsubscribe`,identityArgumentKinds:[`handler`]}]]),Ioe=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`]}]]),ko=new Set([`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`]),Loe=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`]),jo=(e,t)=>{let n=M(e);if(!n)return!1;let r=[];if(So(n,t=>{j(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},Mo=e=>{if(!j(e,`CallExpression`))return null;let t=A(e.callee);return j(t,`Identifier`)?t.name:null},No=(e,t)=>{let n=Mo(e),r=j(e,`CallExpression`)?A(e.callee):null;return!!(n&&j(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&m(e,n,`mobx`)===`runInAction`)},Po=(e,t,n=new Set)=>{if(t.isGlobalReference(e))return e.name;let r=t.symbolFor(e);if(!r||r.kind!==`const`||n.has(r.id)||r.references.some(e=>e.flag!==`read`))return null;n.add(r.id);let i=r.declarationNode;if(j(i,`VariableDeclarator`)&&i.id!==r.bindingIdentifier){let e=r.bindingIdentifier.parent,n=e?.parent,a=i.init?A(i.init):null;return j(e,`Property`)&&j(n,`ObjectPattern`)&&j(a,`Identifier`)&&wo.has(a.name)&&t.isGlobalReference(a)?P(e,{allowComputedString:!0}):null}let a=r.initializer?A(r.initializer):null;if(j(a,`Identifier`))return Po(a,t,n);if(!j(a,`MemberExpression`))return null;let o=A(a.object);return j(o,`Identifier`)&&wo.has(o.name)&&t.isGlobalReference(o)?C(a):null},Fo=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=A(e.callee);if(Mo(e)&&j(n,`Identifier`))return Po(n,t);if(!j(n,`MemberExpression`))return null;let r=A(n.object);return!j(r,`Identifier`)||!wo.has(r.name)||O(r,r.name)?null:C(n)},Io=e=>j(e,`MethodDefinition`)&&e.kind===`constructor`?`constructor`:P(e,{allowComputedString:!0}),Lo=new WeakMap,Ro=(e,t)=>{let n=e;for(;n&&n.parent!==t;)n=n.parent;return n??null},zo=e=>{let t=Lo.get(e);if(t)return t;let n=new Set,r=new Map,i=new Map;if(j(e,`ClassBody`)){for(let t of e.body){let e=Io(t);e&&(j(t,`MethodDefinition`)&&(t.kind===`get`||t.kind===`set`)&&n.add(e),(j(t,`MethodDefinition`)||j(t,`PropertyDefinition`))&&t.value&&D(t.value)&&r.set(e,t.value))}S(e,t=>{let n=j(t,`AssignmentExpression`)?A(t.left):j(t,`UpdateExpression`)?A(t.argument):null;if(!j(n,`MemberExpression`)||!j(A(n.object),`ThisExpression`))return;let r=C(n);if(!r)return;let a=Ro(t,e),o=i.get(r)??[];o.push({node:t,enclosingMemberName:a?Io(a):null,isAssignment:j(t,`AssignmentExpression`)}),i.set(r,o)})}let a={accessorNames:n,memberFunctionsByName:r,instanceWritesByName:i};return Lo.set(e,a),a},Bo=(e,t,n)=>{if(!e||!j(e,`ClassBody`))return null;let r=zo(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},Vo=(e,t,n,r=new Set)=>{r.has(e)||(r.add(e),xo(e,e=>{let i=n(e);if(i===!1||!j(e,`CallExpression`))return i;let a=A(e.callee);if(!j(a,`MemberExpression`)||!j(A(a.object),`ThisExpression`))return;let o=C(a),s=o?Bo(t,o,e):null;s&&Vo(s,t,n,r)}))},Roe=(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),xo(e,e=>{if(n.cfg&&!H(e,n))return!1;if(o&&r.add(e),!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||!j(A(i.object),`ThisExpression`))return;let s=C(i),c=s?Bo(t,s,e):null;c&&a(c,o||jo(e,n))}))};return a(e,!1),r},zoe=(e,t,n,r)=>{let i=M(e),a=M(t);if(!i||!a||i===a)return!1;let o=new Map,s=new Set,c=e=>{if(e===a)return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!0};let i=o.get(e);if(i)return i;if(s.has(e))return{canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};s.add(e);let l={canInvokeAfterSuspension:!1,canInvokeBeforeSuspension:!1};return S(n??t,t=>{if(!j(t,`CallExpression`))return;let i=A(t.callee);if((j(i,`Identifier`)?x(i,r.scopes):j(i,`MemberExpression`)&&j(A(i.object),`ThisExpression`)?Bo(n,C(i)??``,t):null)!==e)return;let a=M(t);if(!a)return;let o=c(a);o.canInvokeAfterSuspension&&(l.canInvokeAfterSuspension=!0),o.canInvokeBeforeSuspension&&(jo(t,r)?l.canInvokeAfterSuspension=!0:l.canInvokeBeforeSuspension=!0)}),s.delete(e),o.set(e,l),l};return c(i).canInvokeAfterSuspension},Ho=(e,t,n,r=new Set)=>{if(r.has(e))return!1;r.add(e);let i=!1;return xo(e,e=>{if(i)return!1;if(No(e,n))return i=!0,!1;if(!j(e,`CallExpression`))return;let a=A(e.callee);if(!j(a,`MemberExpression`)||!j(A(a.object),`ThisExpression`))return;let o=C(a);if(o&&To.has(o))return i=!0,!1;let s=o?Bo(t,o,e):null;if(s&&Ho(s,t,n,r))return i=!0,!1}),i},Uo=(e,t,n=new Set)=>{let r=A(e);if(n.has(r))return null;if(n.add(r),D(r))return r;if(j(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?Uo(e,t,n):null}let i=j(r,`CallExpression`)?A(r.callee):null,a=(j(r,`CallExpression`)&&j(i,`MemberExpression`)&&C(i)===`bind`&&r.arguments?.[0]&&j(A(r.arguments[0]),`ThisExpression`)?A(i.object):null)??r,o=j(a,`MemberExpression`)&&j(A(a.object),`ThisExpression`)?C(a):null;return o?Bo(t,o,r):null},Boe=(e,t,n)=>{let r=Uo(e,t);if(!D(r))return!1;let i=r.body;if(!i)return!1;let a=!1;return xo(i,e=>{if(a)return;if(No(e,n)){a=!0;return}if(!j(e,`CallExpression`))return;let r=A(e.callee);if(j(r,`MemberExpression`)&&j(A(r.object),`ThisExpression`)){let i=C(r);if(i&&To.has(i)){a=!0;return}let o=i?Bo(t,i,e):null;if(o&&!Ho(o,t,n))return;a=!0}}),a},Voe=(e,t,n)=>{let r=new Set,i=new Set;Vo(e,t,e=>{if(j(e,`VariableDeclarator`)){let t=e.init?A(e.init):null,i=j(t,`CallExpression`)?A(t.callee):null;if(t&&(j(t,`NewExpression`)||j(t,`ObjectExpression`)||j(t,`ArrayExpression`)||j(t,`CallExpression`)&&j(i,`Identifier`)&&Poe.has(i.name))){let t=new Set;kt(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(j(t,`Identifier`)){let i=n.symbolFor(t);if(i&&r.has(i.id)){let t=new Set;kt(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(j(e,`AssignmentExpression`)&&j(e.left,`MemberExpression`)){let t=A(e.right),r=j(t,`Identifier`)?n.symbolFor(t):null;r&&i.add(r.id)}if(j(e,`CallExpression`))for(let t of e.arguments??[]){let e=A(t),a=j(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},Hoe=e=>{let t=A(e);for(;j(t,`MemberExpression`);){let e=A(t.object);if(j(e,`ThisExpression`))return C(t);t=e}return null},Wo=(e,t,n)=>{if(e===`props`||e===`state`)return!1;if(!j(n,`ClassBody`))return!0;let r=zo(n);if(r.accessorNames.has(e))return!1;let i=Ro(t,n),a=i?Io(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`)})},Uoe=(e,t)=>{if(!j(t,`ClassBody`))return!1;let n=e.parent;for(;n&&n!==t;){if(D(n))return n.parent?.parent===t;if(j(n,`IfStatement`)||j(n,`ConditionalExpression`)||j(n,`LogicalExpression`)||j(n,`SwitchStatement`)||j(n,`TryStatement`)||j(n,`CatchClause`)||j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return!1;n=n.parent}return!1},Woe=(e,t,n)=>{let r=t.symbolFor(e);if(!r||r.kind!==`const`)return null;let i=r.references.flatMap(e=>{let t=y(e.identifier),r=t.parent;if(!j(r,`AssignmentExpression`)||r.right!==t||!j(r.left,`MemberExpression`)||!j(A(r.left.object),`ThisExpression`)||!Uoe(r,n))return[];let i=C(r.left);return i&&Wo(i,r.left,n)?[r]:[]});if(i.length!==1)return null;let a=i[0];if(!a||!j(a,`AssignmentExpression`))return null;let o=M(r.declarationNode);if(!o||M(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 So(o,e=>{if(j(e,`AwaitExpression`)&&e.range[0]>s&&e.range[0]<c)return l=!0,!1}),l?null:a.left},Go=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=t.symbolFor(i);if(!e)return i.name;let a=Woe(i,t,n);if(a)return Go(a,t,n,r);if(e.kind===`const`&&e.initializer&&j(e.declarationNode,`VariableDeclarator`)&&e.declarationNode.id===e.bindingIdentifier&&!r.has(e.id)){r.add(e.id);let a=A(e.initializer);return j(a,`Identifier`)||j(a,`MemberExpression`)?Go(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(j(i,`ThisExpression`))return`this`;if(!j(i,`MemberExpression`))return null;let a=Hoe(i);if(!a){let e=A(i.object),n=C(i);return!j(e,`Identifier`)||!t.isGlobalReference(e)||!n||!Noe.has(n)?null:`${e.name}.${n}`}if(a&&(!j(A(i.object),`ThisExpression`)||!Wo(a,i,n)))return null;let o=Go(i.object,t,n,r),s=C(i);return o&&s?`${o}.${s}`:null},Ko=(e,t,n)=>{let r=A(e);return j(r,`Literal`)?JSON.stringify(r.value):Go(r,t,n)},qo=(e,t,n)=>{let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return`literal:${r.value}`;if(j(r,`TemplateLiteral`)&&r.expressions.length===0)return`literal:${r.quasis[0]?.value.cooked??``}`;let i=Go(r,t,n);return i?`reference:${i}`:null},Goe=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return null;let r=t.symbolFor(n);if(!r||It(r,n,t)||se(n,`capture`,n,t))return null;let i=bo({node:n,scopes:t});return i?`options:${i}`:null},Jo=(e,t)=>{let n=A(e);return j(n,`Literal`)?!n.value:j(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)},Yo=(e,t,n,r)=>{let i=A(e.callee);if(!j(i,`MemberExpression`))return null;let a=C(i),o=e.arguments.length===1&&(a===`addListener`||a===`removeListener`)?{...t,identityArgumentKinds:Foe}: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=Ko(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||j(a,`SpreadElement`))return null;let o=i===`event`?qo(a,n,r):Ko(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&&j(d,`SpreadElement`))return null;let f=`false`;if(d){let e=A(d);if(Jo(e,n))f=`false`;else if(j(e,`Literal`)&&typeof e.value==`boolean`)f=String(e.value);else{let e=Co(d,[`capture`],n),t=Goe(d,n);if(!e||e.properties.some(e=>!j(e,`Property`)||P(e,{allowComputedString:!0})===null))return t?`${u}|${t}`:null;let r=e.properties.find(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`capture`);if(r&&j(r,`Property`)&&Jo(r.value,n))f=`false`;else if(r&&j(r,`Property`)&&j(r.value,`Literal`)&&typeof r.value.value==`boolean`)f=String(r.value.value);else if(r)return null}}return`${u}|${f}`},Koe=(e,t,n,r)=>{let i=Yo(e,t,n,r);return i?`listener:${t.releaseMethodName}:${i}`:null},Xo=(e,t,n)=>{let r=A(e.callee);if(!j(r,`MemberExpression`))return[];let i=Go(r.object,t,n);if(!i)return[];let a=[`listener:removeAllListeners:${i}`],o=e.arguments[0];if(!o||j(o,`SpreadElement`))return a;let s=qo(o,t,n);return s?[...a,`listener:removeAllListeners:${i}|${s}`]:a},qoe=(e,t,n)=>{let r=e.arguments[2];if(!r||j(r,`SpreadElement`))return null;let i=Co(r,[`signal`],t);if(!i)return null;let a=i.properties.find(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`signal`);if(!a||!j(a,`Property`))return null;let o=A(a.value);if(!j(o,`MemberExpression`)||C(o)!==`signal`)return null;let s=Go(o.object,t,n);return s?`abort:${s}`:null},Zo=(e,t,n,r,i)=>{let a=Loe.get(t)??[n.releaseMethodName],o=Yo(e,n,r,i),s=o?a.map(e=>`listener:${e}:${o}`):[],c=t===`addEventListener`?qoe(e,r,i):null;return c&&s.push(c),ko.has(t)?[...s,...Xo(e,r,i)]:s},Qo=(e,t,n)=>{let r=y(e),i=r.parent,a=j(i,`AssignmentExpression`)&&i.right===r?i.left:j(i,`VariableDeclarator`)&&i.init===r?i.id:null;return a?Go(a,t,n):null},Joe=(e,t)=>{let n=A(e.callee);if(j(n,`Identifier`))return t.symbolFor(n)?.kind===`import`&&m(e,n.name,Eo)===Do;if(!j(n,`MemberExpression`))return!1;let r=A(n.object);return C(n)===Do&&j(r,`Identifier`)&&t.symbolFor(r)?.kind===`import`&&bt(e,r.name,Eo)},$o=(e,t,n)=>{let r=A(e.callee);if(j(r,`MemberExpression`)){let i=C(r),a=i?Ioe.get(i):void 0;if(a){let r=Koe(e,a,t,n);if(r)return[r]}if(i===`removeAllListeners`&&e.arguments.length<=1){let r=Xo(e,t,n);return e.arguments.length===0?r.slice(0,1):r.slice(1)}if((i===`unsubscribe`||i===`remove`)&&e.arguments.length===0&&!j(A(r.object),`ThisExpression`)){let e=Go(r.object,t,n);return e?[`returned:${i}:${e}`]:[]}if(i===`abort`&&e.arguments.length===0){let e=Go(r.object,t,n);return e?[`abort:${e}`]:[]}if(e.arguments.length===0){let e=Go(r,t,n);return e?[`returned:call:${e}`]:[]}}let i=Fo(e,t),a=e.arguments?.[0];if((i===`clearInterval`||i===`clearTimeout`)&&a&&!j(a,`SpreadElement`)){let e=Go(a,t,n);return e?[`timer:${i}:${e}`]:[]}return[]},es=(e,t,n,r,i=new Set)=>{if(i.has(e))return!0;i.add(e);let a=!1;return xo(e,e=>{if(a||e.range[0]>=r)return;if(j(e,`ThrowStatement`)||j(e,`NewExpression`))return a=!0,!1;if(!j(e,`CallExpression`)||$o(e,n,t).length>0||yo(e,n))return;let o=A(e.callee);if(j(o,`MemberExpression`)){if(j(A(o.object),`ThisExpression`)){let r=C(o),a=r?Bo(t,r,e):null;if(a&&!es(a,t,n,1/0,new Set(i)))return}return a=!0,!1}let s=x(o,n);if(!(s&&!es(s,t,n,1/0,new Set(i))))return a=!0,!1}),a},Yoe=(e,t,n)=>{let r=new Map;return Vo(e,t,e=>{if(!j(e,`CallExpression`))return;let i=e.arguments?.[0],a=i&&!j(i,`SpreadElement`)?A(i):null;if(!Joe(e,n.scopes)||!j(a,`ThisExpression`))return;let o=e.arguments?.[1];if(!o||j(o,`SpreadElement`))return;let s=Uo(o,t);if(!D(s))return;let c=new Map;Vo(s,t,e=>{if(j(e,`CallExpression`))for(let r of $o(e,n.scopes,t)){let t=c.get(r)??[];t.push(e),c.set(r,t)}});for(let[t,i]of c){if(!po(s,i,n))continue;let a=r.get(t)??[];a.push(e),r.set(t,a)}}),r},ts=(e,t,n,r=new Set)=>{let i=new Set;if(!e||!D(e)||r.has(e))return i;r.add(e);let a=null;xo(e,t=>{j(t,`AwaitExpression`)&&M(t)===e&&(a===null||t.range[0]<a)&&(a=t.range[0])});let o=new Map;Vo(e,t,i=>{if(!j(i,`CallExpression`)||a!==null&&M(i)===e&&i.range[0]>a)return;let s=es(e,t,n.scopes,i.range[0]),c=A(i.callee);if(j(c,`Identifier`)){let e=ts(x(c,n.scopes),t,n,r);for(let t of s?[]:e){let e=o.get(t)??[];e.push(i),o.set(t,e)}}if(j(c,`MemberExpression`)&&j(A(c.object),`ThisExpression`)){let e=C(c),a=ts(e?Bo(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?[]:$o(i,n.scopes,t)){let t=o.get(e)??[];t.push(i),o.set(e,t)}});for(let[t,r]of o)po(e,r,n)&&i.add(t);return i},ns=(e,t,n,r=new Set)=>{let i=new Map,a=new Map;if(!e||!D(e)||r.has(e))return i;r.add(e);let o=null;xo(e,t=>{j(t,`AwaitExpression`)&&M(t)===e&&(o===null||t.range[0]<o)&&(o=t.range[0])}),xo(e,s=>{if(!j(s,`CallExpression`)||o!==null&&M(s)===e&&s.range[0]>o||es(e,t,n.scopes,s.range[0]))return;for(let r of $o(s,n.scopes,t)){let t=a.get(r)??[];t.push(s),a.set(r,t),po(e,[s],n)&&i.set(r,(i.get(r)??0)+1)}if(!po(e,[s],n))return;let c=A(s.callee),l=j(c,`MemberExpression`)&&j(A(c.object),`ThisExpression`)?C(c):null,u=ns(l?Bo(t,l,s):j(c,`Identifier`)?x(c,n.scopes):null,t,n,new Set(r));for(let[e,t]of u)i.set(e,(i.get(e)??0)+t)});for(let[t,r]of a){if(!po(e,r,n))continue;let a=1;[...r.keys()].every(t=>po(e,r.filter(e=>e!==r[t]),n))&&(a+=1),i.set(t,Math.max(i.get(t)??0,a))}return i},Xoe=(e,t,n)=>{let r=new Map;return Vo(e,t,e=>{if(j(e,`CallExpression`))for(let i of $o(e,n,t)){let t=r.get(i)??[];t.push(e),r.set(i,t)}}),r},rs=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(D(n))return null;if(j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return n;n=n.parent}return null},Zoe=(e,t,n)=>{let r=n.scopes,i=new Map;Vo(e,t,e=>{if(!j(e,`CallExpression`))return;if(n.cfg&&!H(e,n))return!1;let a=A(e.callee);if(!j(a,`MemberExpression`))return;let o=C(a),s=o?Oo.get(o):void 0;if(!s)return;let c=Yo(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=>!!rs(t,e))){a.set(t,1/0);continue}let r=[];for(let t of n){let n=r.find(n=>n.every(n=>lo(t,n,e)));n?n.push(t):r.push([t])}a.set(t,r.length)}return a},is=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||It(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),is(a,t,n,r)):!1}if(j(i,`MemberExpression`)){let e=C(i),a=A(i.object);if(e!==`current`)return is(a,t,n,r);if(!j(t,`ClassBody`)||!j(a,`MemberExpression`))return!1;let o=C(a),s=A(a.object);if(!o||!j(s,`ThisExpression`))return!1;let c=t.body?.find(e=>Io(e)===o);if(!c||!j(c,`PropertyDefinition`)||c.static||!j(c.value,`CallExpression`)||!E(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?ss(l):null,d=!1;return u&&xo(u,e=>{if(d||e.range[0]>=i.range[0]||!j(e,`AssignmentExpression`))return;let t=A(e.left);j(t,`MemberExpression`)&&j(A(t.object),`ThisExpression`)&&C(t)===o&&(d=!0)}),!d}return!1},as=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i);if(!e||r.has(e.id)||It(e,i,n))return!1;let a=O(i,i.name)?.initializer;return a?(r.add(e.id),as(a,t,n,r)):!1}if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(!j(a,`MemberExpression`))return!1;let o=C(a),s=A(a.object);if((o===`select`||o===`selectAll`)&&j(s,`Identifier`)&&(bt(i,s.name,`d3`)||s.name===`d3`&&!n.symbolFor(s))){let e=i.arguments?.[0];return!!(e&&!j(e,`SpreadElement`)&&is(e,t,n))}return as(a.object,t,n,r)},Qoe=(e,t,n,r,i,a,o)=>{let s=a.scopes;if(!j(e,`CallExpression`))return null;let c=A(e.callee),l=j(c,`MemberExpression`)?C(c):null;if(l&&Oo.has(l)&&j(c,`MemberExpression`)){let u=Oo.get(l),d=e.arguments??[],f=l===`once`&&d.length<2,p=A(c.object),h=is(p,i,s),g=as(p,i,s);for(;;){if(p=A(p),j(p,`CallExpression`)){p=A(p.callee);continue}if(j(p,`MemberExpression`)){p=A(p.object);continue}break}let _=j(p,`Identifier`)?s.symbolFor(p):null,v=_?t.has(_.id):!1,ee=u?Yo(e,u,s,i):null,te=u?Zo(e,l,u,s,i):[],ne=te.flatMap(e=>n.get(e)??[]),re=te.filter(e=>e.startsWith(`listener:removeAllListeners:`)).flatMap(e=>n.get(e)??[]),ie=ne.filter(t=>fo(e,[t],a)).length,ae=rs(e),oe=!!(ae&&ne.some(t=>rs(t)===ae&&fo(e,[t],a))),se=ee?r.get(ee)??1:1,ce=!!(ee&&(fo(e,re,a)||fo(e,ne,a)&&(l===`addEventListener`||oe||ie>=se)));if(!(!f&&!v&&!ce&&!h&&!g))return null;let le=Qo(e,s,i),ue=A(c.object),de=j(ue,`Identifier`)?m(e,ue.name,`react-native`):null,fe=j(ue,`Identifier`)&&(de!==null&&Ao.has(de)||s.isGlobalReference(ue)&&Ao.has(ue.name)),pe=l===`subscribe`&&le?[`returned:unsubscribe:${le}`,`returned:call:${le}`]:(l===`addEventListener`||l===`addListener`)&&fe&&le?[`returned:remove:${le}`]:[];return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:ko.has(l)?ee:null,registrationCount:ko.has(l)?se:1,releaseKeys:u?[...Zo(e,l,u,s,i),...pe]:pe}}let u=Fo(e,s);if(u===`setInterval`){let t=Qo(e,s,i);return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearInterval:${t}`]:[]}}if(u===`setTimeout`&&e.arguments?.[0]){if(!Boe(e.arguments[0],i,s))return null;let t=Qo(e,s,i);return{isAcquiredAfterSuspension:o||jo(e,a),node:e,listenerIdentityKey:null,registrationCount:1,releaseKeys:t?[`timer:clearTimeout:${t}`]:[]}}return null},os=e=>(j(e,`MethodDefinition`)||j(e,`PropertyDefinition`))&&D(e.value)?e.value:null,ss=e=>{let t=os(e);return t&&D(t)?t.body??null:null},cs=w({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||!go(n))return;let r=t.body??[],i=r.find(e=>Io(e)===`componentWillUnmount`),a=ts(i?os(i):null,t,e),o=ns(i?os(i):null,t,e);for(let n of r){let r=Io(n);if(r!==`constructor`&&r!==`componentDidMount`)continue;let i=ss(n);if(!i)continue;let s=Voe(i,t,e.scopes),c=Xoe(i,t,e.scopes),l=Zoe(i,t,e),u=Roe(i,t,e),d=[];if(Vo(i,t,n=>{if(e.cfg&&!H(n,e))return!1;let r=Qoe(n,s,c,l,t,e,u.has(n)||zoe(n,i,t,e));r&&d.push(r)}),d.length===0)continue;let f=Yoe(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 fo(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}}}})}),ls=(e,t,n={})=>{if(!e||!t)return e===t;let r=A(e),i=A(t);if(r!==e||i!==t)return ls(r,i,n);if(e.type!==t.type)return!1;if(j(e,`ThisExpression`))return!0;if(j(e,`Identifier`)&&j(t,`Identifier`))return n.areIdentifiersEqual?n.areIdentifiersEqual(e,t):e.name===t.name;if(j(e,`PrivateIdentifier`)&&j(t,`PrivateIdentifier`))return e.name===t.name;if(j(e,`Literal`)&&j(t,`Literal`))return e.value===t.value;if(j(e,`MemberExpression`)&&j(t,`MemberExpression`))return e.computed===t.computed?ls(e.object,t.object,n)&&ls(e.property,t.property,e.computed?n:{}):!1;if(j(e,`CallExpression`)&&j(t,`CallExpression`)){if(!ls(e.callee,t.callee,n))return!1;let r=e.arguments??[],i=t.arguments??[];return r.length===i.length?r.every((e,t)=>ls(e,i[t],n)):!1}return!1},$oe=new Set([`a`,`button`,`input`,`select`,`summary`,`textarea`]),ese=/button|link|nav|anchor/i,tse=/(?:button|link|anchor)$/i,us=/^[A-Z]/,nse=[`onClick`,`onPress`],ds=e=>wa(A(e)),fs=(e,t)=>{let n=A(e);if(wa(n))return!0;let r=T(n,t);return r?.kind!==`const`||!r.initializer?!1:wa(A(r.initializer))},ps=(e,t,n=new Set)=>{let r=A(e);if(fs(r,t))return null;if(j(r,`ConditionalExpression`)){let e=r.consequent,i=r.alternate;return fs(e,t)?ps(i,t,n):fs(i,t)?ps(e,t,n):null}if(j(r,`Identifier`)){let e=t.symbolFor(r);return e?.kind===`const`&&e.initializer&&j(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode.id,`Identifier`)&&!n.has(e.id)?(n.add(e.id),ps(e.initializer,t,n)):r}if(j(r,`ArrowFunctionExpression`)||j(r,`FunctionExpression`)||j(r,`FunctionDeclaration`)){let e=A(r.body);if(!j(e,`BlockStatement`))return e;if(e.body.length!==1)return null;let t=e.body[0];return j(t,`ExpressionStatement`)?t.expression:j(t,`ReturnStatement`)&&t.argument?A(t.argument):null}return r},ms=(e,t)=>!e.value||!j(e.value,`JSXExpressionContainer`)?null:ps(e.value.expression,t),hs=(e,t)=>{let n=F(e.attributes,t);if(!n)return!1;if(!n.value)return!0;if(j(n.value,`Literal`))return n.value.value===!0||n.value.value===`true`;if(!j(n.value,`JSXExpressionContainer`))return!0;let r=A(n.value.expression);return!j(r,`Literal`)||r.value!==!1},gs=(e,t)=>{let n=F(e.attributes,t);if(!n?.value)return!1;if(j(n.value,`Literal`))return typeof n.value.value==`string`&&n.value.value.trim().length>0;if(!j(n.value,`JSXExpressionContainer`))return!0;let r=A(n.value.expression);return j(r,`Literal`)?typeof r.value==`string`&&r.value.trim().length>0:!ds(r)},_s=e=>{if(j(e,`JSXText`))return e.value.trim().length>0;if(j(e,`JSXElement`))return vs(e);if(j(e,`JSXFragment`))return e.children.some(e=>_s(e));if(!j(e,`JSXExpressionContainer`))return!1;let t=A(e.expression);return j(t,`Literal`)?typeof t.value==`string`?t.value.trim().length>0:typeof t.value==`number`:ds(t)?!1:j(t,`JSXElement`)?vs(t):j(t,`JSXFragment`)?t.children.some(e=>_s(e)):!0},vs=e=>gs(e.openingElement,`aria-label`)||gs(e.openingElement,`aria-labelledby`)?!0:e.children.some(e=>_s(e)),rse=e=>{let t=F(e.attributes,`tabIndex`);if(!t?.value)return!1;let n=Li(t.value);return n!==null&&n<0},ise=(e,t)=>Or(e,t)||hs(e,`hidden`),ase=(e,t)=>{let n=e.openingElement,r=kr(n.name);if(!r)return!1;if(Ei.has(r)){if(!$oe.has(r))return!1}else if(t){if(!us.test(r)||!tse.test(r))return!1}else if(!us.test(r)||!ese.test(r))return!1;return t?r===`a`&&!F(n.attributes,`href`)||hs(n,`disabled`)||hs(n,`isDisabled`)||hs(n,`aria-disabled`)||rse(n)?!1:vs(e):!0},ys=(e,t,n,r)=>{let i=e=>ys(e,t,n,r);if(j(e,`JSXElement`)){if(t&&ise(e.openingElement,r))return!1;if(ase(e,t!==null)){if(!t)return!0;for(let r of nse){let i=F(e.openingElement.attributes,r),a=i?ms(i,n):null;if(a&&ls(t,a))return!0}}return e.children.some(e=>i(e))}return j(e,`JSXFragment`)?e.children.some(e=>i(e)):t?j(e,`JSXExpressionContainer`)?i(e.expression):j(e,`LogicalExpression`)?i(e.left)||i(e.right):j(e,`ConditionalExpression`)?i(e.consequent)||i(e.alternate):!1:!1},bs=(e,t,n,r)=>{if(!e||!j(e,`JSXElement`))return!1;let i=t?ms(t,n):null;return t&&!i?!1:e.children.some(e=>ys(e,i,n,r))},ose=new Set([`focus`,`select`]),sse=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),cse=new Set([`getElementById`,`querySelector`]),lse=new Set([`global`,`globalThis`,`window`]),use=e=>{if(!e)return null;let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return null;let n=A(t.callee);if(!j(n,`MemberExpression`))return null;let r=n.property;return j(r,`Identifier`)?r.name:null},xs=(e,t)=>{let n=use(e);return n!==null&&(ose.has(n)||t&&sse.has(n))},dse=(e,t)=>{let n=A(e);return j(n,`Identifier`)?n.name===`document`&&t.isGlobalReference(n):!j(n,`MemberExpression`)||!j(n.object,`Identifier`)||!j(n.property,`Identifier`)||n.property.name!==`document`?!1:lse.has(n.object.name)&&t.isGlobalReference(n.object)},Ss=e=>{let t=A(e);return j(t,`Identifier`)||j(t,`Literal`)?!0:j(t,`TemplateLiteral`)&&t.expressions.every(e=>Ss(e))},fse=(e,t)=>{if(!j(e,`VariableDeclaration`)||e.kind!==`const`||e.declarations.length!==1)return null;let n=e.declarations[0];if(!n||!j(n.id,`Identifier`)||!n.init)return null;let r=A(n.init);if(!j(r,`CallExpression`)||r.arguments.length!==1||j(r.arguments[0],`SpreadElement`)||!Ss(r.arguments[0]))return null;let i=A(r.callee);return!j(i,`MemberExpression`)||!j(i.property,`Identifier`)||!cse.has(i.property.name)||!dse(i.object,t)?null:n.id.name},Cs=e=>j(e,`ReturnStatement`)?e.argument===null:!j(e,`BlockStatement`)||e.body.length!==1?!1:Cs(e.body[0]),pse=e=>{if(!j(e,`IfStatement`)||e.alternate||!Cs(e.consequent))return!1;let t=A(e.test),n=j(t,`ChainExpression`)?t.expression:t;if(!j(n,`CallExpression`)||n.arguments.length!==1)return!1;let r=A(n.callee),i=j(r,`MemberExpression`)?A(r.object):null;return j(r,`MemberExpression`)&&j(r.property,`Identifier`)&&r.property.name===`closest`&&j(i,`MemberExpression`)&&j(i.object,`Identifier`)&&j(i.property,`Identifier`)&&i.property.name===`target`&&j(n.arguments[0],`Literal`)&&typeof n.arguments[0].value==`string`},mse=(e,t)=>{if(!j(e,`ExpressionStatement`))return!1;let n=A(e.expression);if(!j(n,`CallExpression`)||n.arguments.length!==0)return!1;let r=A(n.callee);if(!j(r,`MemberExpression`))return!1;let i=A(r.object);return j(i,`Identifier`)&&i.name===t&&j(r.property,`Identifier`)&&r.property.name===`focus`},hse=(e,t,n)=>{if(!e)return!1;if(xs(e,n))return!0;if(!j(e,`BlockStatement`)||e.body.length===0)return!1;let r=e.body,i=+!!pse(r[0]),a=r[i],o=a?fse(a,t):null;return o?r.length===i+2&&mse(r[i+1],o):i>0?!1:r.every(e=>j(e,`ExpressionStatement`)&&xs(e.expression,n))},ws=(e,t)=>wa(e)&&(!j(e,`Identifier`)||t.isGlobalReference(e)),Ts=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ConditionalExpression`)){let e=A(r.consequent),i=A(r.alternate),a=null;return ws(e,t)&&(a=Ts(i,t,n)),ws(i,t)&&(a=Ts(e,t,n)),a?{...a,isConditional:!0}:null}if(j(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),Ts(e.initializer,t,n))}return j(r,`ArrowFunctionExpression`)||j(r,`FunctionExpression`)||j(r,`FunctionDeclaration`)?{handlerFunction:r,isConditional:!1}:null},Es=(e,t)=>{let n=Ts(e,t);return n?hse(n.handlerFunction.body??null,t,!n.isConditional):!1},Ds=(e,t)=>!e.value||!j(e.value,`JSXExpressionContainer`)?!1:Es(e.value.expression,t),Os=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=yr(t);return n!==null&&hi.has(n)},ks=e=>{if(j(e,`Identifier`)||j(e,`PrivateIdentifier`))return e.name},As=e=>{if(j(e,`FunctionExpression`)||j(e,`ArrowFunctionExpression`))return e},gse=(e,t)=>{for(let n of e.body){if(!j(n,`MethodDefinition`)&&!j(n,`PropertyDefinition`)||ks(n.key)!==t)continue;let e=As(n.value);if(e)return e}},js=(e,t)=>{for(let n of e.properties){if(!j(n,`Property`)||ks(n.key)!==t)continue;let e=As(n.value);if(e)return e}},Ms=e=>{let t=ks(e.property);if(t===void 0)return;let n=e.object;if(j(n,`ThisExpression`)){let n=e.parent;for(;n;){if(j(n,`ClassBody`))return gse(n,t);if(j(n,`ObjectExpression`)){let e=js(n,t);if(e)return e}n=n.parent}return}if(j(n,`Identifier`)){let e=O(n,n.name);if(j(e?.initializer,`ObjectExpression`))return js(e.initializer,t)}},_se=new Set([`stopPropagation`,`preventDefault`,`stopImmediatePropagation`]),Ns=e=>{if(!e)return!1;let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return!1;let n=t.callee;return!j(n,`MemberExpression`)||!j(n.property,`Identifier`)?!1:_se.has(n.property.name)},Ps=e=>{if(!e)return!1;if(Ns(e))return!0;if(j(e,`BlockStatement`)){let t=e.body??[];if(t.length===0)return!1;for(let e of t)if(!j(e,`ExpressionStatement`)||!Ns(e.expression))return!1;return!0}return!1},Fs=e=>{if(!e.value||!j(e.value,`JSXExpressionContainer`))return!1;let t=A(e.value.expression);return j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)?Ps(t.body):j(t,`MemberExpression`)?Ps(Ms(t)?.body):!1},Is=[`onKeyUp`,`onKeyDown`,`onKeyPress`,`onKeyUpCapture`,`onKeyDownCapture`,`onKeyPressCapture`],Ls=[`onClick`,`onClickCapture`],vse=new Set([...Ls,...Is].map(e=>e.toLowerCase())),yse=new Set([`aria-hidden`,`onmouseenter`,`onmouseover`,`role`]),bse=(e,t)=>{let n=A(e);if(j(n,`ObjectExpression`))return n;if(!j(n,`Identifier`))return null;let r=T(n,t);if(r?.kind!==`const`||!r.initializer)return null;let i=A(r.initializer);return j(i,`ObjectExpression`)?i:null},Rs=(e,t,n,r)=>{let i=bse(e,t);if(!i||r.has(i))return!1;r.add(i);let a=!0;for(let e of i.properties){if(j(e,`SpreadElement`)){if(!Rs(e.argument,t,n,r)){a=!1;break}continue}if(!j(e,`Property`)){a=!1;break}let i=P(e,{allowComputedString:!0});if(!i){a=!1;break}let o=i.toLowerCase();if(yse.has(o)){a=!1;break}vse.has(o)&&n.set(o,e.value)}return r.delete(i),a},xse=(e,t)=>{let n=new Map;for(let r of e)if(j(r,`JSXSpreadAttribute`)&&!Rs(r.argument,t,n,new Set))return null;return n},Sse=new Set([`tr`,`td`,`th`,`canvas`]),Cse=new Set([`motion`,`styled`]),wse=e=>{let t=e.name;if(!j(t,`JSXMemberExpression`))return null;let n=t.object;if(!j(n,`JSXIdentifier`)||!Cse.has(n.name))return null;let r=t.property.name;return r&&Ei.has(r)?r:null},Tse=new Set([`option`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`treeitem`,`tab`,`gridcell`,`row`]),Ese=e=>{let t=F(e.attributes,`role`);if(!t)return!1;let n=t.value;if(!n||!j(n,`Literal`)||typeof n.value!=`string`)return!1;let r=n.value.split(/\s+/)[0];return!!(r&&Tse.has(r.toLowerCase()))},Dse=e=>{if(!j(e,`BinaryExpression`)||e.operator!==`===`&&e.operator!==`==`&&e.operator!==`!==`)return!1;let t=[e.left,e.right].map(e=>{if(!j(e,`MemberExpression`))return null;let t=e.property;return j(t,`Identifier`)?t.name:null});return t.includes(`target`)&&t.includes(`currentTarget`)},zs=e=>{if(!e||typeof e!=`object`)return!1;if(Dse(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`&&zs(e))return!0}else if(n&&typeof n==`object`&&typeof n.type==`string`&&zs(n))return!0}return!1},Bs=e=>{let t=A(e);if(j(t,`Identifier`)){let e=O(t,t.name);if(!e?.initializer)return null;t=A(e.initializer)}return j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`)?t:null},Ose=e=>!e.value||!j(e.value,`JSXExpressionContainer`)?null:Bs(e.value.expression),kse=e=>{let t=Ose(e);return t?zs(t.body??null):!1},Ase=(e,t)=>e===`li`&&!!(F(t.attributes,`onMouseEnter`)||F(t.attributes,`onMouseOver`)),Vs=w({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=oi(e.settings),n=jt(e.filename);return{JSXOpeningElement(r){if(n)return;let i=wse(r)??Cr(r,e.settings);if(!Ei.has(i)||i===`label`||!Sse.has(i)&&Ii(i,r))return;let a=xse(r.attributes,e.scopes);if(!a&&t)return;let o=a??new Map,s=F(r.attributes,`onClick`)??F(r.attributes,`onClickCapture`),c=Ls.map(e=>o.get(e.toLowerCase())).find(e=>e!==void 0);if(!s&&!c||s&&Fs(s)||s&&Ds(s,e.scopes)||c&&Es(c,e.scopes))return;let l=c?Bs(c):null;l&&zs(l.body??null)||Ese(r)||Ase(i,r)||s&&kse(s)||bs(r.parent,null,e.scopes,e.settings)||s&&bs(r.parent,s,e.scopes,e.settings)||Or(r,e.settings)||Os(r)||Is.some(e=>F(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`."})}}}}),Hs=ur({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.`}),Us=(e,t,n)=>{let r=e.get(t)??[];r.push(n),e.set(t,r)},Ws=(e,t,n,r)=>{let i=e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)??new Map;Us(i,n,r),e.memberMutationCandidatesByReceiverIdentityAndMethod.set(t,i)},Gs=(e,t,n)=>e.memberMutationCandidatesByReceiverIdentityAndMethod.get(t)?.get(n)??[],Ks=(e,t,n,r)=>{if(!j(t,`MemberExpression`))return;let i=C(t),a=B(t.object,r);i&&a&&(Us(e.memberMutationCandidatesByReceiverIdentity,a,n),Ws(e,a,i,n))},jse=(e,t,n)=>{if(j(t,`AssignmentExpression`)){let r=A(t.left),i=B(r,n);i&&Us(e.receiverAssignmentCandidatesByIdentity,i,t),Ks(e,r,t,n)}else j(t,`UnaryExpression`)&&t.operator===`delete`&&Ks(e,A(t.argument),t,n);if(!j(t,`CallExpression`))return;let r=A(t.callee);if(!j(r,`MemberExpression`)||C(r)!==`defineProperty`)return;let i=t.arguments[1],a=t.arguments[0];if(j(i,`Literal`)&&typeof i.value==`string`&&a&&!j(a,`SpreadElement`)){let r=B(a,n);r&&(Us(e.memberMutationCandidatesByReceiverIdentity,r,t),Ws(e,r,i.value,t))}},qs=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=A(e.callee);if(!j(r,`MemberExpression`))return!1;let i=A(r.object);return C(r)===`defineProperty`&&j(i,`Identifier`)&&(i.name===`Object`||i.name===`Reflect`)&&n.scopes.isGlobalReference(i)&&j(e.arguments[1],`Literal`)&&e.arguments[1].value===t},Mse=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Js=(e,t)=>{let n=A(e);return j(n,`MemberExpression`)&&C(n)===t?n.object:null},Ys=(e,t)=>{let n=t;for(;n;){if(n===e)return!0;n=n.parent}return!1},Xs=(e,t)=>{let n=j(e,`FunctionDeclaration`)?e.id:j(e.parent,`VariableDeclarator`)&&e.parent.init===e&&j(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(!j(r,`CallExpression`)||A(r.callee)!==n.identifier)return null;t.cfg.enclosingFunction(r)!==e&&i.push(r)}return i.length>0?i:null},Nse=(e,t,n,r)=>{let i=e.parent,a=t.parent;return!j(i,`MethodDefinition`)||!j(a,`MethodDefinition`)||i.parent!==a.parent||!j(i.key,`Identifier`)||i.key.name!==`constructor`?!1:r.cfg.isUnconditionalFromEntry(n)},Zs=(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(Nse(o,s,e,n))return!0;if(Ys(o,s)){let t=Xs(s,n);return!t&&j(o,`Program`)&&n.cfg.isUnconditionalFromEntry(e)?!0:!!(t&&t.every(t=>Zs(e,t,n,a)))}if(Ys(s,o)){let r=Xs(o,n);return!!(n.cfg.isUnconditionalFromEntry(e)&&r?.some(e=>Zs(e,t,n,a)))}let r=Xs(o,n),i=Xs(s,n);return n.cfg.isUnconditionalFromEntry(e)&&r&&i?i.every(t=>Zs(e,t,n,a)||r.some(e=>Zs(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},Pse=(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},Qs=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.initializer??r?.declarationNode;return i&&D(A(i))?A(i):null},$s=(e,t,n,r)=>tc(e,n).some(e=>e.callExpression!==t&&Zs(e.callExpression,t,n)&&nc(e.callExpression,e.argumentIndex,n,r,new Map)),Fse=(e,t,n,r)=>{let i=Qs(A(e),n);if(!i||!D(i))return!1;let a=[];return S(i.body,e=>{if(e!==i.body&&D(e))return!1;j(e,`ReturnStatement`)&&e.argument&&a.push(e)}),a.length>0&&a.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let i=B(e.argument,n);if(!i)return!1;let a=A(e.argument),o=j(a,`Identifier`)?n.scopes.symbolFor(a):null;return o&&$s(o,e,n,r)?!0:!!r.memberMutationCandidatesByReceiverIdentity.get(i)?.some(r=>{let i=!!Js(j(r,`AssignmentExpression`)?r.left:j(r,`UnaryExpression`)?r.argument:r,t);return j(r,`CallExpression`)&&(i=qs(r,t,n)),i&&Zs(r,e,n)})})},ec=new WeakMap,tc=(e,t,n=new Set)=>{let r=ec.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 tc(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,A(t)===e?(e=t,r=!0):j(t,`Property`)&&t.value===e&&j(t.parent,`ObjectExpression`)?(e=t.parent,r=!0):(j(t,`ArrayExpression`)&&t.elements.some(t=>t===e)||j(t,`ObjectExpression`)&&t.properties.some(t=>t===e)||j(t,`SpreadElement`)&&t.argument===e)&&(e=t,r=!0)}let i=e.parent;if(j(i,`VariableDeclarator`)&&i.init===e&&j(i.id,`Identifier`)){s(t.scopes.scopeFor(i).symbolsByName.get(i.id.name));continue}if(j(i,`AssignmentExpression`)&&i.right===e){let e=A(i.left),n=j(e,`Identifier`)?e:j(e,`MemberExpression`)&&j(A(e.object),`Identifier`)?A(e.object):null;s(n?t.scopes.symbolFor(n):null);continue}if(j(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 ec.set(e,c),c},Ise=(e,t,n)=>{if(!D(e))return!1;if(j(e,`ArrowFunctionExpression`)&&!j(e.body,`BlockStatement`))return B(e.body,n)===t;let r=[];return S(e.body,t=>{if(t!==e.body&&D(t))return!1;j(t,`ReturnStatement`)&&r.push(t)}),r.length>0&&r.every(e=>j(e,`ReturnStatement`)&&e.argument&&B(e.argument,n)===t)},Lse=(e,t)=>{let n=e;for(;n.parent&&A(n.parent)===n;)n=n.parent;let r=n.parent;if(!j(r,`VariableDeclarator`)||r.init!==n||!j(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},nc=(e,t,n,r,i)=>{let a=Qs(e,n);if(!a||!D(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(!j(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)||tc(c,n).some(e=>n.cfg.enclosingFunction(e.callExpression)===a?nc(e.callExpression,e.argumentIndex,n,r,i):!1))return!0;if(!Ise(a,l,n))return!1;let u=Lse(e,n);return u?tc(u,n).some(e=>nc(e.callExpression,e.argumentIndex,n,r,i)):!1},Rse=(e,t,n,r,i,a=[],o)=>{if(Fse(t,n,i,e))return!0;let s=B(t,i),c=A(t),l=j(c,`Identifier`)?i.scopes.symbolFor(c):null;if(s&&l&&$s(l,r,i,e))return!0;let u=i.scopes.scopeFor(r),d=!1,f=new Set([...s?Gs(e,s,n):[],...a.flatMap(t=>Gs(e,`global:${t}.prototype`,n)),...s?e.receiverAssignmentCandidatesByIdentity.get(s)??[]:[]]),p=[];for(let e of f){if(d)break;if(!Mse(i.scopes.scopeFor(e),u)&&!Zs(e,r,i))continue;let t=null;if(j(e,`AssignmentExpression`)){if(s!==null&&B(e.left,i)===s){if(o?.(e.right))continue;if(p.push(e),Zs(e,r,i)){d=!0;break}continue}t=Js(e.left,n)}else if(j(e,`UnaryExpression`)&&e.operator===`delete`)t=Js(e.argument,n);else if(j(e,`CallExpression`)&&qs(e,n,i)){let n=e.arguments[0];t=n&&!j(n,`SpreadElement`)?n:null}if(!t)continue;let c=B(t,i);(s!==null&&c===s||a.some(e=>c===`global:${e}.prototype`))&&(p.push(e),Zs(e,r,i)&&(d=!0))}return d||Pse(p,r,i)},rc=e=>{let t={memberMutationCandidatesByReceiverIdentity:new Map,memberMutationCandidatesByReceiverIdentityAndMethod:new Map,receiverAssignmentCandidatesByIdentity:new Map};return{record:n=>jse(t,n,e),hasProvenMutation:(n,r,i,a,o)=>Rse(t,n,r,i,e,a,o)}},ic=(e,t)=>!!(e&&j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&e.property.name===t),ac=e=>Oi(e)||(e.kind!==`let`&&e.kind!==`var`||!j(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),oc=e=>j(e,`Identifier`)?e.name:j(e,`Literal`)&&typeof e.value==`string`?e.value:null,sc=e=>{if(!j(e.bindingIdentifier,`Identifier`))return null;let t=e.bindingIdentifier.typeAnnotation;if(t&&j(t,`TSTypeAnnotation`))return t.typeAnnotation;let n=e.bindingIdentifier.parent,r=n?.parent;if(!j(n,`Property`)||!j(r,`ObjectPattern`))return null;let i=r.typeAnnotation;if(!i||!j(i,`TSTypeAnnotation`))return null;let a=i.typeAnnotation;if(!j(a,`TSTypeLiteral`))return null;let o=oc(n.key);if(!o)return null;for(let e of a.members)if(j(e,`TSPropertySignature`)&&oc(e.key)===o)return e.typeAnnotation?.typeAnnotation??null;return null},cc=(e,t)=>{let n=e.parent;for(;n;){if(`typeParameters`in n){let e=n.typeParameters;if(e&&j(e,`TSTypeParameterDeclaration`)&&e.params.some(e=>j(e,`TSTypeParameter`)&&j(e.name,`Identifier`)&&e.name.name===t))return!0}n=n.parent}return!1},lc=(e,t,n)=>{let r=n.scopeFor(e);for(;;){if(r.symbolsByName.has(t))return!0;if(!r.parent)return!1;r=r.parent}},uc=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=A(e.callee);if(j(n,`Identifier`))return n.name===`matchMedia`&&t.isGlobalReference(n);if(!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)||n.property.name!==`matchMedia`)return!1;let r=A(n.object);return j(r,`Identifier`)&&(r.name===`window`||r.name===`globalThis`)&&t.isGlobalReference(r)},zse=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(`.`)),Bse=/^(?:HTML|SVG)[A-Za-z0-9]+Element$/,dc=new Set([`DocumentFragment`,`EventTarget`,`Image`,`Option`]),fc=new Set([`cloneNode`,`closest`,`createElement`,`createElementNS`,`elementFromPoint`,`getElementById`,`getRootNode`,`querySelector`]),Vse=new Set([`activeElement`,`body`,`documentElement`,`firstElementChild`,`lastElementChild`,`ownerDocument`,`parentElement`,`parentNode`,`shadowRoot`]),pc=e=>e===`Window`?[`Window`,`EventTarget`]:e===`Document`||e===`XMLDocument`||e===`DocumentFragment`||e===`ShadowRoot`?[e,`Node`,`EventTarget`]:e===`HTMLElement`||e.startsWith(`HTML`)?[e,`HTMLElement`,`Element`,`Node`,`EventTarget`]:e===`SVGElement`||e.startsWith(`SVG`)?[e,`SVGElement`,`Element`,`Node`,`EventTarget`]:e===`Element`?[`Element`,`Node`,`EventTarget`]:e===`Node`?[`Node`,`EventTarget`]:[e,`EventTarget`],Hse=(e,t)=>t===`xml-http-request`?e===`XMLHttpRequest`:zse.has(e)||Bse.test(e),mc=(e,t,n)=>{if(j(e,`TSTypeReference`)){if(!j(e.typeName,`Identifier`))return!1;let r=e.typeName.name;return Hse(r,n)&&!lc(e,r,t)&&!cc(e,r)}if(!j(e,`TSUnionType`))return!1;let r=!1;for(let i of e.types)if(!(j(i,`TSNullKeyword`)||j(i,`TSUndefinedKeyword`))){if(!mc(i,t,n))return!1;r=!0}return r},Use=(e,t)=>!j(e,`TSTypeReference`)||!j(e.typeName,`Identifier`)||!mc(e,t,`dom-event-target`)?null:e.typeName.name,hc=(e,t,n)=>j(e,`Identifier`)&&e.name===t&&n.isGlobalReference(e),gc=(e,t,n=new Set)=>{let r=A(e);if(hc(r,`window`,t))return[`Window`,`EventTarget`];if(hc(r,`document`,t))return[`Document`,`Node`,`EventTarget`];if(j(r,`Identifier`)){let e=t.symbolFor(r);if(!e||n.has(e.id))return[`EventTarget`];let i=sc(e),a=i?Use(i,t):null;if(a)return pc(a);let o=ac(e);if(!o)return[`EventTarget`];let s=new Set(n);return s.add(e.id),gc(o,t,s)}if(j(r,`NewExpression`)){let e=A(r.callee);if(j(e,`Identifier`)&&dc.has(e.name))return pc(e.name===`Image`?`HTMLImageElement`:e.name===`Option`?`HTMLOptionElement`:e.name)}if(j(r,`MemberExpression`)){let e=C(r);if(e===`body`||e===`documentElement`)return pc(`HTMLElement`)}if(j(r,`CallExpression`)){if(uc(r,t))return pc(`MediaQueryList`);let e=A(r.callee),i=j(e,`MemberExpression`)?C(e):null;if(i===`matchMedia`&&j(e,`MemberExpression`)&&gc(e.object,t,n).includes(`Window`))return pc(`MediaQueryList`);if(i===`createElement`)return pc(`HTMLElement`);if(i===`createElementNS`)return pc(`SVGElement`);if(i&&fc.has(i))return pc(`Element`)}return[`EventTarget`]},_c=(e,t,n)=>(t===`xml-http-request`?[`XMLHttpRequest`]:[...dc]).some(t=>vc(e,t,n,new Set)),Wse=(e,t,n)=>{let r=e,i=!1;for(;j(r,`TSAsExpression`)||j(r,`TSTypeAssertion`)||j(r,`TSSatisfiesExpression`);){if(mc(r.typeAnnotation,t,n))i=!0;else if(i)return!1;r=r.expression}let a=r;if(j(a,`Identifier`)){let e=t.symbolFor(a),n=e?Oi(e):null;if(!n)return!1;a=A(n)}return i&&j(a,`Identifier`)||i&&j(a,`MemberExpression`)||i&&j(a,`ObjectExpression`)?!1:i&&j(a,`NewExpression`)?_c(a.callee,n,t):i},Gse=e=>{if(!j(e,`MemberExpression`)||!j(A(e.object),`ThisExpression`))return null;let t=C(e);if(!t)return null;let n=e.parent;for(;n&&!j(n,`ClassBody`);){if((j(n,`FunctionDeclaration`)||j(n,`FunctionExpression`))&&!j(n.parent,`MethodDefinition`))return null;n=n.parent}if(!n)return null;for(let e of n.body)if(!(!j(e,`PropertyDefinition`)||e.static)&&oc(e.key)===t)return e;return null},Kse=e=>{if(!j(e,`PropertyDefinition`))return null;let t=e.typeAnnotation;return t&&j(t,`TSTypeAnnotation`)?t.typeAnnotation:null},qse=(e,t,n)=>{if(!j(e,`CallExpression`))return null;let r=A(e.callee);if(!j(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!D(a)||a.async||a.generator?null:(n.add(i.id),a)},vc=(e,t,n,r)=>{let i=A(e);if(j(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=Oi(e);return a?(r.add(e.id),vc(a,t,n,r)):!1}if(!j(i,`MemberExpression`)||C(i)!==t)return!1;let a=A(i.object);return hc(a,`window`,n)||hc(a,`globalThis`,n)},Jse=(e,t,n)=>{let r=A(e);for(;j(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))return!1;let i=Oi(e);if(!i)return!1;n.add(e.id),r=A(i)}if(!j(r,`CallExpression`)||!E(r,`useRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})&&!E(r,`createRef`,t,{allowGlobalReactNamespace:!1,allowUnboundBareCalls:!1})||!j(r.typeArguments,`TSTypeParameterInstantiation`))return!1;let i=r.typeArguments.params[0];return!!(i&&mc(i,t,`dom-event-target`))},yc=(e,t,n,r=new Set)=>{let i=t===`dom-event-target`;if(Wse(e,n,t))return!0;let a=A(e);if(j(a,`Identifier`)){if(i&&(hc(a,`document`,n)||hc(a,`window`,n)))return!0;let e=n.symbolFor(a);if(!e||r.has(e.id))return!1;let o=sc(e);if(o&&mc(o,n,t))return!0;let s=ac(e);return s?(r.add(e.id),yc(s,t,n,r)):!1}if(j(a,`NewExpression`))return _c(a.callee,t,n);if(j(a,`CallExpression`)){let e=A(a.callee);if(i&&j(e,`MemberExpression`)&&fc.has(C(e)??``)&&yc(e.object,t,n,r))return!0;let o=qse(a,n,r);return!!(o&&ln(o,n,e=>yc(e,t,n,new Set(r)),void 0,`every`))}if(j(a,`ConditionalExpression`)){let e=[a.consequent,a.alternate].filter(e=>!(j(e,`Literal`)&&e.value===null)&&!(j(e,`Identifier`)&&e.name===`undefined`&&n.isGlobalReference(e)));return e.length>0&&e.every(e=>yc(e,t,n,new Set(r)))}if(!j(a,`MemberExpression`))return!1;let o=Gse(a);if(o&&j(o,`PropertyDefinition`)){let e=Kse(o);if(e&&mc(e,n,t)||o.value&&yc(o.value,t,n,r))return!0}if(!i)return!1;let s=C(a);if(s===`current`)return Jse(a.object,n,r);let c=A(a.object);return s===`document`&&(hc(c,`window`,n)||hc(c,`globalThis`,n))?!0:s!==null&&Vse.has(s)&&yc(c,t,n,r)},Yse=/(?:^|\/)(?:docs?|documentation)\/archive\/[^/]+\/static\/(?:[^/]+\/)*docs\.js$/i,Xse=e=>Yse.test(On(e??``)),bc=(e,t)=>{let n=A(e);return j(n,`Identifier`)?t.has(n.name):j(n,`SpreadElement`)?bc(n.argument,t):j(n,`ObjectExpression`)?n.properties.some(e=>j(e,`Property`)?bc(e.value,t):j(e,`SpreadElement`)&&bc(e.argument,t)):j(n,`ArrayExpression`)?n.elements.some(e=>e&&bc(e,t)):j(n,`ConditionalExpression`)?bc(n.consequent,t)||bc(n.alternate,t):j(n,`LogicalExpression`)?bc(n.left,t)||bc(n.right,t):j(n,`SequenceExpression`)?n.expressions.some(e=>bc(e,t)):!1},xc=(e,t,n)=>{let r=A(t);if(j(e,`Identifier`)){bc(r,n)&&n.add(e.name);return}if(j(e,`AssignmentPattern`)){xc(e.left,r,n);return}if(j(e,`ObjectPattern`)&&j(r,`ObjectExpression`)){for(let t of e.properties){if(!j(t,`Property`))continue;let e=oc(t.key);if(!e)continue;let i=r.properties.find(t=>j(t,`Property`)&&oc(t.key)===e);j(i,`Property`)&&xc(t.value,i.value,n)}return}if(j(e,`ArrayPattern`)&&j(r,`ArrayExpression`))for(let[t,i]of e.elements.entries()){let e=r.elements[t];i&&e&&xc(i,e,n)}},Zse=(e,n,r)=>{if(!j(e,`CallExpression`)||!r.filename)return!1;let i=A(e.callee);if(!j(i,`Identifier`))return!1;let a=r.scopes.symbolFor(i);if(!a||a.kind!==`import`)return!1;let o=a.declarationNode,s=o.parent,c=t(o);if(!c||!j(s,`ImportDeclaration`)||typeof s.source.value!=`string`)return!1;let l=oe(r.filename,s.source.value,c);if(!l||!D(l))return!1;let u=l.params[n];if(!j(u,`Identifier`))return!1;let d=new Set([u.name]),f=!1;return S(l.body,e=>{if(f)return!1;if(j(e,`VariableDeclarator`)&&e.init){xc(e.id,e.init,d);return}if(j(e,`AssignmentExpression`)&&j(e.left,`Identifier`)&&bc(e.right,d)){d.add(e.left.name);return}if(j(e,`CallExpression`)){let t=A(e.callee);(j(t,`MemberExpression`)&&C(t)===`preventDefault`&&bc(t.object,d)||e.arguments.some(e=>!j(e,`SpreadElement`)&&bc(e,d)))&&(f=!0);return}if(j(e,`NewExpression`)&&e.arguments.some(e=>!j(e,`SpreadElement`)&&bc(e,d))){f=!0;return}let t=j(e,`AssignmentExpression`)?A(e.left):null;j(e,`AssignmentExpression`)&&(j(t,`MemberExpression`)&&bc(t.object,d)||bc(e.right,d))&&(f=!0)}),!f},Qse=new Set([`all`,`allSettled`,`any`,`race`,`reject`,`resolve`]),$se=new Set([`catch`,`finally`,`then`]),Sc=(e,t,n=new Set)=>{let r=(e,n)=>{let i=A(e);if(D(i))return i.async;if(!j(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=A(e);if(j(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),Sc(e.initializer,t,r)}if(j(i,`NewExpression`)){let e=A(i.callee);return j(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e)}if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(j(a,`Identifier`))return r(a,n);if(!j(a,`MemberExpression`))return!1;let o=A(a.object);return $se.has(C(a)??``)?Sc(a.object,t,n):!!(Qse.has(C(a)??``)&&j(o,`Identifier`)&&o.name===`Promise`&&t.isGlobalReference(o))},Cc=new Set([`queueMicrotask`,`requestAnimationFrame`,`requestIdleCallback`,`setImmediate`,`setInterval`,`setTimeout`]),ece=new Set([`catch`,`finally`,`then`]),wc=e=>{if(!D(e))return!1;let t=!1;return S(e,n=>{if(t||n!==e&&D(n))return!1;j(n,`CallExpression`)&&j(n.callee,`MemberExpression`)&&C(n.callee)===`preventDefault`&&(t=!0)}),t},tce=(e,t)=>{let n=!1;return S(e,e=>{if(n)return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&j(e.left,`Identifier`)&&e.left.name===t&&wc(e.right)&&(n=!0)}),n},nce=e=>{if(!e)return!1;if(wc(e))return!0;if(j(e,`Identifier`)){let t=O(e,e.name);return t?wc(t.initializer??void 0)?!0:tce(t.scopeOwner,e.name):!1}if(j(e,`MemberExpression`)){let t=Ms(e);return t?wc(t):!1}return!1},Tc=(e,t)=>{if(!e)return;let n=A(e);if(D(n))return n;if(j(n,`Identifier`)){let e=t.scopes.symbolFor(n),r=e?.initializer??e?.declarationNode;if(r&&D(r))return r;let i=O(n,n.name),a;return e&&i&&S(i.scopeOwner,r=>{if(r.range[0]>=n.range[0])return!1;if(j(r,`AssignmentExpression`)&&r.operator===`=`&&j(r.left,`Identifier`)&&t.scopes.symbolFor(r.left)===e){let e=A(r.right);a=D(e)?e:void 0}}),a}return j(n,`MemberExpression`)?Ms(n):void 0},rce=(e,t,n)=>{if(!Zse(e,t,n))return!1;let r=e;for(;r.parent;){let e=r.parent;if(A(e)===r||j(e,`UnaryExpression`)&&e.operator===`!`||j(e,`LogicalExpression`)){r=e;continue}return j(e,`IfStatement`)&&e.test===r||j(e,`ConditionalExpression`)&&e.test===r||j(e,`WhileStatement`)&&e.test===r||j(e,`DoWhileStatement`)&&e.test===r||j(e,`ForStatement`)&&e.test===r}return!1},ice=(e,t)=>{let n=Tc(e,t);if(!n){let n=e?A(e):void 0;if(!n||!j(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=A(e);if(j(r,`Identifier`)){if(Cc.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=Oi(e);if(!a)return!1;let o=new Set(n);return o.add(e.id),i(a,o)}if(!j(r,`MemberExpression`))return!1;let a=A(r.object);return Cc.has(C(r)??``)&&j(a,`Identifier`)&&(a.name===`window`||a.name===`globalThis`)&&t.scopes.isGlobalReference(a)},a=e=>{let n=e;for(;n.parent&&A(n.parent)===A(n);)n=n.parent;let r=n.parent;if(j(r,`NewExpression`)){let e=A(r.callee);return r.arguments.some(e=>e===n)&&j(e,`Identifier`)&&e.name===`Promise`&&t.scopes.isGlobalReference(e)}if(!j(r,`CallExpression`))return!1;if(A(r.callee)===A(n))return!0;if(!r.arguments.some(e=>e===n))return!1;let a=A(r.callee);if(i(a))return!1;if(j(a,`Identifier`)||!j(a,`MemberExpression`))return!0;let o=C(a);return!(ece.has(o??``)&&Sc(a.object,t.scopes)||o===`addEventListener`&&yc(a.object,`dom-event-target`,t.scopes))},o=(e,n,i=!1)=>{if(!D(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=j(c,`AssignmentPattern`)?c.left:c;if(!j(l,`Identifier`))return!(i&&j(l,`ObjectPattern`));let u=t.scopes.symbolFor(l);if(!u)return!1;let d=new Set([u]),f=new Set,p=e=>{let n=A(e);if(!j(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n);return!!(r&&d.has(r))},m=e=>{let n=A(e);if(p(n))return!0;if(j(n,`SpreadElement`))return m(n.argument);if(j(n,`MemberExpression`)){let e=A(n.object);if(j(e,`Identifier`)){let n=t.scopes.symbolFor(e);if(n&&f.has(n))return!0}let r=C(n);if(j(e,`ObjectExpression`)&&r){let t=e.properties.find(e=>j(e,`Property`)&&ks(e.key)===r);return!!(j(t,`Property`)&&m(t.value))}if(j(e,`ArrayExpression`)&&j(n.property,`Literal`)&&typeof n.property.value==`number`){let t=e.elements[n.property.value];return!!(t&&m(t))}return!1}return j(n,`ObjectExpression`)?n.properties.some(e=>j(e,`Property`)?m(e.value):j(e,`SpreadElement`)&&m(e.argument)):j(n,`ArrayExpression`)?n.elements.some(e=>e&&m(e)):j(n,`ConditionalExpression`)?m(n.consequent)||m(n.alternate):j(n,`LogicalExpression`)?m(n.left)||m(n.right):j(n,`SequenceExpression`)?n.expressions.some(m):!1},h=(e,n)=>{let r=A(n);if(j(e,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e);n&&d.add(n);return}if(j(e,`AssignmentPattern`)){h(e.left,r);return}if(j(e,`RestElement`)&&j(e.argument,`Identifier`)){if(!m(r))return;let n=t.scopes.symbolFor(e.argument);n&&f.add(n);return}if(j(e,`ObjectPattern`)&&j(r,`ObjectExpression`)){for(let t of e.properties){if(j(t,`RestElement`)){h(t,r);continue}if(!j(t,`Property`))continue;let e=ks(t.key);if(!e)continue;let n=r.properties.find(t=>j(t,`Property`)&&ks(t.key)===e);j(n,`Property`)&&h(t.value,n.value)}return}if(j(e,`ArrayPattern`)&&j(r,`ArrayExpression`))for(let[t,n]of e.elements.entries()){let e=r.elements[t];n&&e&&h(n,e)}},g=!1;return S(e.body,n=>{if(g||n!==e.body&&D(n)&&!a(n))return!1;if(j(n,`VariableDeclarator`)&&n.init){h(n.id,n.init);return}if(j(n,`AssignmentExpression`)&&m(n.right)){if(j(n.left,`Identifier`)){let e=t.scopes.symbolFor(n.left);e&&d.add(e)}else g=!0;return}if(j(n,`AssignmentExpression`)){let e=A(n.left),t=A(n.right);if(j(e,`MemberExpression`)&&C(e)===`returnValue`&&p(e.object)&&j(t,`Literal`)&&t.value===!1){g=!0;return}}if(j(n,`ReturnStatement`)&&n.argument&&m(n.argument)){g=!0;return}if(j(n,`NewExpression`)){n.arguments.some(e=>!j(e,`SpreadElement`)&&m(e))&&(g=!0);return}if(!j(n,`CallExpression`))return;let r=A(n.callee);if(j(r,`MemberExpression`)&&C(r)===`preventDefault`&&p(r.object)){g=!0;return}let i=n.arguments.findIndex(e=>m(e));if(i<0)return;let s=Tc(n.callee,t);(!s&&!rce(n,i,t)||s&&o(s,i))&&(g=!0)}),g};return o(n,0,!0)},Ec=(e,t)=>!!e.properties?.some(e=>j(e,`Property`)&&j(e.key,`Identifier`)&&e.key.name===`passive`&&j(e.value,`Literal`)&&e.value.value===t),Dc=w({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(Xse(e.filename))return In;let t=rc(e),n=[],r=new WeakMap,i=new WeakMap,a=n=>{let a=A(n.callee);if(!ic(a,`addEventListener`)||!yc(a.object,`dom-event-target`,e.scopes)||t.hasProvenMutation(a.object,`addEventListener`,n,gc(a.object,e.scopes),t=>yc(t,`dom-event-target`,e.scopes))||n.arguments.length<2)return;let o=n.arguments[0];if(!j(o,`Literal`)||typeof o.value!=`string`||!pte.has(o.value))return;let s=o.value,c=n.arguments[1];if(!c||j(c,`SpreadElement`))return;let l=Tc(c,e)??c,u=r.get(l);if(u===void 0&&(u=nce(c),r.set(l,u)),u)return;let d=i.get(l);if(d===void 0&&(d=ice(c,e),i.set(l,d)),d)return;let f=n.arguments[2];f&&(!j(f,`ObjectExpression`)||Ec(f,!1)||Ec(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),ic(A(e.callee),`addEventListener`)&&n.push(e)},UnaryExpression(e){t.record(e)},"Program:exit"(){for(let e of n)a(e)}}}}),Oc=e=>{if(e.length===0)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90},kc=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},Ac=e=>Oc(e)||kc(e),ace=(e,t)=>{let n=t?Rn(e):e;return j(n,`Identifier`)?n.name:j(n,`MemberExpression`)&&j(n.property,`Identifier`)?n.property.name:null},jc=(e,t=!1)=>{let n=y(e);for(;;){let e=n.parent;if(!e||!j(e,`CallExpression`)||e.arguments?.[0]!==n)return n;let r=ace(e.callee,t);if(!r||!Ln.has(r))return n;n=y(e)}},oce=(e,t)=>{let n=jc(e,t),r=n.parent;return r&&j(r,`VariableDeclarator`)&&j(r.id,`Identifier`)&&r.init===n&&Ac(r.id.name)?r.id.name:null},Mc=(e,t=!1)=>(j(e,`FunctionDeclaration`)||j(e,`FunctionExpression`))&&e.id?Ac(e.id.name)?e.id.name:null:oce(e,t),Nc=e=>j(e,`MemberExpression`)&&!e.computed&&j(e.property,`Identifier`)?e.property.name:null,sce=[`react`,`use-context-selector`,`react-tracked`],Pc=e=>{if(e?.kind!==`import`)return null;let t=e.declarationNode.parent;return!t||!j(t,`ImportDeclaration`)||typeof t.source.value!=`string`||!sce.includes(t.source.value)?null:t.source.value},Fc=e=>Pc(e)!==null&&!!(e&&(j(e.declarationNode,`ImportDefaultSpecifier`)||j(e.declarationNode,`ImportNamespaceSpecifier`))),cce=(e,t)=>{if(!j(e,`Identifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`const`||!n.initializer||!j(n.declarationNode,`VariableDeclarator`)||!j(n.declarationNode.id,`ObjectPattern`))return!1;let r=n.bindingIdentifier.parent;if(!r||!j(r,`Property`)||P(r,{allowComputedString:!0})!==`createContext`)return!1;let i=A(n.initializer);return j(i,`Identifier`)&&Fc(T(i,t))},lce=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){if(cce(n,t))return!0;let e=T(n,t);return Pc(e)!==null&&!!(e&&rt(e.declarationNode)===`createContext`)}if(!j(n,`MemberExpression`)||(Nc(n)??(n.computed&&j(n.property,`Literal`)&&typeof n.property.value==`string`?n.property.value:null))!==`createContext`)return!1;let r=A(n.object);return j(r,`Identifier`)?r.name===`React`&&t.isGlobalReference(r)?!0:Fc(T(r,t)):!1},Ic=(e,t)=>{let n=A(e);return j(n,`CallExpression`)&&lce(n.callee,t)},Lc=(e,t)=>{let n=new Set;if(!j(e,`Program`))return n;for(let r of e.body??[]){let e=r;if(j(r,`ExportNamedDeclaration`)&&r.declaration&&(e=r.declaration),!(!e||!j(e,`VariableDeclaration`))&&e.kind===`const`)for(let r of e.declarations??[]){if(!j(r,`VariableDeclarator`)||!j(r.id,`Identifier`)||!r.init||!k(r.init)||!Ic(r.init,t))continue;let e=t.symbolFor(r.id);!e||e.references.some(e=>e.flag!==`read`)||n.add(e.id)}}return n},Rc=e=>{if(j(e,`FunctionDeclaration`)&&j(e.id,`Identifier`))return e.id;let t=y(e),n=t.parent;if(j(n,`VariableDeclarator`)&&j(n.id,`Identifier`))return n.id;if(j(n,`AssignmentExpression`)&&n.right===t&&j(n.left,`Identifier`))return n.left;if(j(n,`CallExpression`)){let e=n.parent;if(j(e,`VariableDeclarator`)&&j(e.id,`Identifier`))return e.id}return null},zc=e=>Rc(e)?.name??null,Bc=(e,t)=>{let n=Rc(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[]},uce=new Set([`VariableDeclarator`,`ObjectPattern`,`ArrayPattern`,`AssignmentPattern`,`Property`,`RestElement`]),Vc=e=>{if(!e)return!1;let t=e.bindingIdentifier.parent;for(;t;){if(j(t,`VariableDeclaration`))return t.kind===`const`;if(!uce.has(t.type))return!1;t=t.parent??null}return!1},Hc=(e,t)=>{if(!j(e,`JSXIdentifier`))return!1;let n=t.symbolFor(e);if(n?.kind!==`import`)return!1;let r=rt(n.declarationNode);return e.name.endsWith(`Context`)||!!r?.endsWith(`Context`)},dce=(e,t)=>{if(!Hc(e,t))return!1;let n=t.symbolFor(e);if(!n)return!1;let r=Me(n)?.source.value;return typeof r==`string`&&r.split(`/`).at(-1)===`context`},Uc=(e,t,n,r)=>{if(!j(e,`JSXIdentifier`))return!1;if(r&&Hc(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},Wc=(e,t,n)=>j(e,`JSXMemberExpression`)?e.property.name===`Provider`&&Uc(e.object,t,n,!0):dce(e,n)||Uc(e,t,n,!1),Gc="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.",Kc=new Set([`flatMap`,`map`]),fce=new Set([`forwardRef`,`memo`]),pce=new Set([`useCallback`,`useMemo`]),mce=new Set([`createElement`]),qc=e=>{let t=A(e);return j(t,`ObjectExpression`)||j(t,`ArrayExpression`)||j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`)},Jc=(e,t)=>{let n=e.bindingIdentifier.parent;return n&&j(n,`VariableDeclarator`)&&n.init===e.initializer&&e.bindingIdentifier.range[0]<t.range[0]&&_e(n,e.scopeOwner)?!0:!!(e.initializer&&j(e.initializer,`FunctionDeclaration`)&&e.initializer.id===e.bindingIdentifier)},hce=e=>D(e.scopeOwner)?e.scopeOwner:M(e.scopeOwner),gce=(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},Yc=e=>{let t=jc(e);return!!(t.parent&&j(t.parent,`ExportDefaultDeclaration`))},_ce=e=>{if(!j(e,`FunctionExpression`)||!e.id)return!1;let t=y(e);if(jc(e)!==t)return!1;let n=t.parent;return!(n&&j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`))},vce=(e,t,n)=>{let r=[e],i=new Set;for(;r.length>0;){let e=r.pop();if(!e)continue;let a=A(e);if(a===t)return!0;if(!i.has(a)){if(i.add(a),j(a,`ConditionalExpression`)){let e=A(a.test);j(e,`Literal`)?r.push(e.value?a.consequent:a.alternate):r.push(a.alternate,a.consequent);continue}if(j(a,`LogicalExpression`)){let e=A(a.left);if(j(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(j(a,`SequenceExpression`)){let e=a.expressions.at(-1);e&&r.push(e);continue}if(j(a,`AssignmentExpression`)&&a.operator===`=`){r.push(a.right);continue}if(j(a,`AwaitExpression`)&&a.argument){r.push(a.argument);continue}if(j(a,`ArrayExpression`)){for(let e of a.elements)e&&r.push(j(e,`SpreadElement`)?e.argument:e);continue}if(j(a,`CallExpression`)&&E(a,mce,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){r.push(...a.arguments.slice(2));let e=a.arguments[1];if(e&&j(e,`ObjectExpression`))for(let t of e.properties){if(!j(t,`Property`)||t.computed)continue;let e=t.key;(j(e,`Identifier`)&&e.name===`children`||j(e,`Literal`)&&e.value===`children`)&&r.push(t.value)}continue}if(j(a,`Identifier`)){let e=O(a,a.name,{preferInitializerBeforeReference:!0});e?.initializer&&Vc(e)&&Jc(e,a)&&M(e.bindingIdentifier)===M(a)&&n.cfg.isUnconditionalFromEntry(e.bindingIdentifier)&&r.push(e.initializer);continue}if(j(a,`JSXElement`)||j(a,`JSXFragment`)){r.push(...a.children);continue}j(a,`JSXExpressionContainer`)&&a.expression.type!==`JSXEmptyExpression`&&r.push(a.expression)}}return!1},Xc=(e,t,n)=>ln(t,n.scopes,t=>vce(t,e,n),n.cfg),yce=(e,t,n)=>e.arguments[0]===t&&E(e,pce,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!0:!!(j(e.callee,`MemberExpression`)&&Kc.has(C(e.callee)??``)),Zc=(e,t,n)=>{let r=e.arguments.findIndex(e=>e===t);if(r<0)return!1;let i=x(e.callee,n.scopes);if(!i||!D(i)||i.async||i.generator)return!1;let a=i.params[r];if(!a||!j(a,`Identifier`)||!(n.scopes.ownScopeFor(i)?.symbolsByName.get(a.name))?.references.some(e=>{let t=y(e.identifier),r=t.parent;return!!(r&&j(r,`CallExpression`)&&r.callee===t&&M(r)===i&&_e(r,i)&&n.cfg.isUnconditionalFromEntry(r)&&Xc(r,i,n))}))return!1;let o=M(e);return!!(o&&(Mc(o)!==null||Yc(o))&&Xc(e,o,n))},bce=(e,t)=>{let n=Bc(e,t.scopes).flatMap(e=>e.references);return n.length===0?!1:n.every(e=>{let n=y(e.identifier),r=n.parent;return!r||!j(r,`CallExpression`)||!r.arguments.some(e=>e===n)||r.arguments[0]===n&&E(r,fce,t.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})?!1:yce(r,n,t)||!Zc(r,n,t)})},xce=(e,t)=>{let n=y(e),r=n.parent;if(!r||!j(r,`CallExpression`))return!1;let i=M(r);return!i||Mc(i)===null&&!Yc(i)?!1:r.arguments[0]===n&&j(r.callee,`MemberExpression`)&&Kc.has(C(r.callee)??``)&&Xc(r,i,t)?!0:r.callee===n&&Xc(r,i,t)||r.arguments.some(e=>e===n)&&Zc(r,n,t)},Qc=w({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)&&H(t,e),n=new Set;return{Program(t){n=Lc(t,e.scopes)},JSXOpeningElement(r){if(!Wc(r.name,n,e.scopes))return;let i=M(r);if(!i)return;let a=xce(i,e),o=Yc(i);if((_ce(i)||bce(i,e))&&!a&&!o||Mc(i)===null&&!o&&!a)return;let s=V(r.attributes,`value`);if(!s)return;let c=s.value;if(!c||!j(c,`JSXExpressionContainer`))return;let l=A(c.expression);if(!j(l,`Identifier`))return;let u=e.scopes.symbolFor(l);if(!u)return;let d=u.references.flatMap(n=>n.flag===`read`?[]:Yte(n.identifier,l,e.scopes,{requireSynchronousWrite:!0,isSynchronousNode:t}).map(e=>({executionPath:e,assignedExpression:uee(n.identifier)}))).toSorted((e,t)=>gce(t.executionPath,e.executionPath)).at(0);if(d){if(!d.assignedExpression||!qc(d.assignedExpression))return;e.report({node:s,message:Gc});return}let f=O(l,l.name,{preferInitializerBeforeReference:!0});!f||!f.initializer||f.scopeOwner.type!==`Program`&&Jc(f,l)&&hce(f)===i&&qc(f.initializer)&&e.report({node:s,message:Gc})}}}}),Sce=[`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`],$c=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`:Sce.find(t=>e===t||e.startsWith(`${t}/`))??null,Cce=/[\p{L}\p{Nd}]/u,el=e=>Cce.test(e),tl=e=>mi.has(e),nl=(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},U=e=>{let t=[],n=0;for(let r of nl(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},wce=new Set([`td`,`th`,`tr`,`option`,`datalist`,`audio`,`video`]),Tce=new Set([`text`,`search`,`url`,`tel`,`email`,`password`,`number`]),rl=e=>e.toLowerCase()===`hidden`,Ece=e=>{let t=e.quasis??[],n=[];for(let[e,r]of t.entries()){let i=r.value?.cooked??r.value?.raw??``,a=U(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},Dce=e=>{let t=F(e.attributes,`className`)??F(e.attributes,`class`);if(!t)return!1;let n=L(t);return n===null?t.value&&j(t.value,`JSXExpressionContainer`)&&j(t.value.expression,`TemplateLiteral`)?Ece(t.value.expression).some(rl):!1:U(n).some(rl)},Oce=e=>{let t=F(e.attributes,`hidden`);if(!t)return!1;let n=t.value;if(!n)return!0;if(j(n,`Literal`))return n.value!==`false`&&!!n.value;if(j(n,`JSXExpressionContainer`)){let e=A(n.expression);if(j(e,`Literal`))return!!e.value}return!0},kce={display:`none`,visibility:`hidden`},Ace=e=>{let t=F(e.attributes,`style`);if(!t?.value||!j(t.value,`JSXExpressionContainer`))return!1;let n=A(t.value.expression);if(!j(n,`ObjectExpression`))return!1;for(let e of n.properties){if(!j(e,`Property`)||e.computed)continue;let t=e.key,n=j(t,`Identifier`)?t.name:j(t,`Literal`)&&typeof t.value==`string`?t.value:null;if(!n)continue;let r=kce[n];if(!r)continue;let i=A(e.value);if(j(i,`Literal`)&&i.value===r)return!0}return!1},il=(e,t)=>Or(e,t)||Oce(e)||Ace(e),jce=(e,t)=>{if(e.toLowerCase()!==`input`)return!1;let n=F(t.attributes,`type`),r=n?yr(n):null;return!r||r.toLowerCase()!==`file`||!Dce(t)?!1:!!F(t.attributes,`ref`)},Mce=[`link`,`canvas`],Nce=new Set([`alt`,`aria-label`,`aria-labelledby`]),al=`label`,Pce=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??[]}},ol=(e,t)=>{let n=new Set(t);for(let t of e){if(j(t,`JSXSpreadAttribute`))return!0;if(!j(t,`JSXAttribute`)||!j(t.name,`JSXIdentifier`))continue;let e=gn(t.name);if(e&&(Nce.has(e)||n.has(e)))return t.value?j(t.value,`Literal`)&&typeof t.value.value==`string`?t.value.value.trim().length>0:!0:!1}return!1},sl=e=>{if(!e?.value)return!1;let t=e.value;if(j(t,`Literal`))return typeof t.value==`string`?t.value.trim().length>0:!!t.value;if(j(t,`JSXExpressionContainer`)){let e=A(t.expression);if(j(e,`JSXEmptyExpression`))return!1;if(j(e,`Literal`))return typeof e.value==`string`?e.value.trim().length>0:!!e.value;if(j(e,`TemplateLiteral`)){let t=ot(e);if(t!==null)return t.trim().length>0}return!0}return!0},Fce=(e,t)=>{let n=t.toLowerCase();for(let t=e.length-1;t>=0;--t){let r=e[t];if(!(!r||!j(r,`JSXAttribute`))&&gn(r.name)?.toLowerCase()===n)return r}},cl=(e,t)=>{let n=[];for(let r of e.elements){if(r===null){n.push(``);continue}if(j(r,`SpreadElement`))return null;let e=A(r);if(j(e,`Literal`)){n.push(e.value===null?``:String(e.value));continue}if(j(e,`TemplateLiteral`)){let t=ot(e);if(t===null)return null;n.push(t);continue}if(j(e,`Identifier`)&&e.name===`undefined`&&t.isGlobalReference(e)||j(e,`UnaryExpression`)&&e.operator===`void`){n.push(``);continue}if(j(e,`ArrayExpression`)){let r=cl(e,t);if(r===null)return null;n.push(r);continue}return null}return n.join(`,`)},ll=(e,t)=>{if(j(e,`Identifier`))return e.name===`Symbol`&&t.isGlobalReference(e);if(!j(e,`MemberExpression`))return!1;let n=A(e.object);return j(n,`Identifier`)&&n.name===`Symbol`&&t.isGlobalReference(n)},ul=(e,t)=>{let n=A(e);if(j(n,`Literal`))return typeof n.value==`string`?n.value.trim().length>0:n.value!==null&&typeof n.value!=`boolean`;if(j(n,`TemplateLiteral`)){let e=ot(n);return e===null||e.trim().length>0}if(j(n,`Identifier`))return n.name!==`undefined`||!t.isGlobalReference(n);if(j(n,`UnaryExpression`)&&n.operator===`void`||j(n,`UnaryExpression`)&&n.operator===`!`||j(n,`ArrowFunctionExpression`)||j(n,`FunctionExpression`)||j(n,`ClassExpression`))return!1;if(j(n,`ArrayExpression`)){let e=cl(n,t);return e===null||e.trim().length>0}if(ll(n,t)||j(n,`CallExpression`)&&ll(n.callee,t))return!1;if(j(n,`ConditionalExpression`))return ul(n.consequent,t)&&ul(n.alternate,t);if(j(n,`SequenceExpression`)){let e=n.expressions.at(-1);return e?ul(e,t):!1}if(j(n,`LogicalExpression`)){let e=A(n.left);if(!j(e,`Literal`))return n.operator!==`&&`;if(n.operator===`??`)return ul(e.value===null?n.right:e,t);let r=!!e.value;return n.operator===`&&`?ul(r?n.right:e,t):ul(r?e:n.right,t)}return!0},dl=(e,t)=>e?.value?j(e.value,`Literal`)?typeof e.value.value==`string`&&e.value.value.trim().length>0:j(e.value,`JSXExpressionContainer`)?ul(e.value.expression,t):!0:!1,fl=(e,t)=>{let n=t.trim();return n.length>0?`${e}:${n}`:null},pl=e=>typeof e==`string`?fl(`literal`,e):typeof e==`number`?fl(`literal`,String(e)):null,ml=e=>{let t=A(e);if(j(t,`Identifier`))return t.name;if(j(t,`MemberExpression`)){if(t.computed)return null;let e=ml(t.object),n=t.property;return e===null||!j(n,`Identifier`)?null:`${e}.${n.name}`}return null},Ice=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=ml(n[e]);if(t===null)return null;r.push(`\u0000${t}\u0000`)}return fl(`template`,r.join(``))},hl=e=>{let t=A(e);if(j(t,`Literal`)){let e=pl(t.value);return e===null?[]:[e]}if(j(t,`TemplateLiteral`)){let e=ot(t);if(e!==null){let t=fl(`literal`,e);return t===null?[]:[t]}let n=Ice(t);return n===null?[]:[n]}if(j(t,`ConditionalExpression`))return[...hl(t.consequent),...hl(t.alternate)];let n=ml(t);if(n!==null){let e=fl(`identifier`,n);return e===null?[]:[e]}return[]},gl=e=>{if(!e?.value)return[];let t=e.value;if(j(t,`Literal`)){let e=pl(t.value);return e===null?[]:[e]}return j(t,`JSXExpressionContainer`)?hl(t.expression):[]},Lce=/^Icon($|[A-Z0-9_])|Icon$/,Rce=(e,t)=>{if(t.iconComponentNames.has(e)||Lce.test(e))return!0;let n=e.indexOf(`.`);return n===-1?!1:t.iconNamespaceNames.has(e.slice(0,n))},_l=(e,t,n)=>{let r=A(e);if(j(r,`JSXEmptyExpression`))return!1;if(j(r,`Literal`))return typeof r.value==`string`?el(r.value):typeof r.value==`number`;if(j(r,`TemplateLiteral`)){let e=ot(r);return e===null||el(e)}return j(r,`ConditionalExpression`)?_l(r.consequent,t,n)||_l(r.alternate,t,n):j(r,`LogicalExpression`)?r.operator===`&&`?_l(r.right,t,n):_l(r.left,t,n)||_l(r.right,t,n):j(r,`JSXElement`)||j(r,`JSXFragment`)?vl(r,t,n):!0},vl=(e,t,n)=>{if(t>n.depth)return!1;if(j(e,`JSXExpressionContainer`))return _l(e.expression,t,n);if(j(e,`JSXText`))return el(e.value);if(j(e,`JSXFragment`))return e.children.some(e=>vl(e,t+1,n));if(j(e,`JSXElement`)){if(ol(e.openingElement.attributes,n.customAttributes))return!0;if(e.children.length===0){let t=Cr(e.openingElement,n.settings);if(Oc(t)&&!n.controlComponents.includes(t)&&!Rce(t,n))return!0}for(let r of e.children)if(vl(r,t+1,n))return!0}return!1},yl=(e,t)=>ol(e.openingElement.attributes,t.customAttributes)||j(e.openingElement.name,`JSXIdentifier`)&&e.openingElement.name.name===al&&dl(F(e.openingElement.attributes,`title`),t.scopes)?!0:e.children.some(e=>vl(e,1,t)),bl=e=>j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`)||j(e,`FunctionDeclaration`),xl=(e,t)=>{if(e===al||e===`Label`)return!0;let n=F(t.attributes,`component`);return n?yr(n)===al:!1},zce=(e,t)=>{let n=e.parent,r=!1;for(;n&&!j(n,`JSXAttribute`);){if(bl(n)&&(r=!0),j(n,`JSXElement`)){let e=n.openingElement;if(il(e,t.settings))return`hidden`;let i=Cr(e,t.settings);if(!r&&xl(i,e)&&yl(n,t)||Oc(i)&&sl(F(e.attributes,`label`)))return`labeled`}n=n.parent??null}return null},Sl=e=>{let t=e.parent;for(;t;){if(j(t,`JSXAttribute`))return!0;t=t.parent??null}return!1},Bce=e=>{let t=e.parent;for(;t;){if(j(t,`VariableDeclarator`))return j(t.id,`Identifier`)?t.id.name:null;if(bl(t)){if(j(t,`FunctionDeclaration`)&&t.id&&j(t.id,`Identifier`))return t.id.name;let e=t.parent;return e&&j(e,`VariableDeclarator`)&&j(e.id,`Identifier`)?e.id.name:null}t=t.parent??null}return null},Cl=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){t.add(n.name);return}if(j(n,`CallExpression`)){let e=A(n.callee);j(e,`Identifier`)&&t.add(e.name);return}if(j(n,`LogicalExpression`)){Cl(n.left,t),Cl(n.right,t);return}j(n,`ConditionalExpression`)&&(Cl(n.consequent,t),Cl(n.alternate,t))},wl=(e,t,n,r)=>{if(!(t>n.depth))for(let i of e.children){if(j(i,`JSXExpressionContainer`)){Cl(i.expression,r);continue}(j(i,`JSXElement`)||j(i,`JSXFragment`))&&wl(i,t+1,n,r)}},Vce=(e,t)=>{if(e===`textarea`)return!0;if(e!==`input`)return!1;let n=F(t.attributes,`type`);if(!n)return!0;let r=yr(n);return r===null?!0:Tce.has(r.toLowerCase())},Tl=w({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=oi(e.settings),n=Pce(e.settings),r=jt(e.filename),i=new Set,a=new Set,o=new Set,s=new Set,c=[],l={scopes:e.scopes,depth:n.depth,customAttributes:n.labelAttributes,controlComponents:n.controlComponents,settings:e.settings,iconComponentNames:i,iconNamespaceNames:a};return{ImportDeclaration(e){let t=e.source?.value;if(!(typeof t!=`string`||!$c(t)))for(let t of e.specifiers??[]){if(!j(t.local,`Identifier`))continue;let e=t.local.name;j(t,`ImportNamespaceSpecifier`)?a.add(e):i.add(e)}},JSXElement(i){if(r)return;let a=i.openingElement,u=Cr(a,e.settings);if(xl(u,a)&&yl(i,l)&&!Sl(i)){let e=F(a.attributes,`htmlFor`);for(let t of gl(e))o.add(t);u===al&&wl(i,1,l,s)}if(Mce.includes(u)||n.ignoreElements.includes(u))return;let d=F(a.attributes,`role`),f=d?yr(d):null;if(f&&n.ignoreRoles.includes(f)||il(a,e.settings)||jce(u,a))return;let p=Ei.has(u),m=(!t||!wce.has(u))&&Ii(u,a),h=t&&f===`separator`&&!F(a.attributes,`tabIndex`),g=f!==null&&tl(f)&&!h,_=n.controlComponents.includes(u);if(m||p&&g||_){if(u===`input`){let e=F(a.attributes,`type`),t=e?yr(e)?.toLowerCase():null;if(t===`submit`||t===`reset`||t===`button`&&sl(F(a.attributes,`value`)))return}if(!(p&&dl(Fce(a.attributes,`title`),e.scopes))&&!(Vce(u,a)&&sl(F(a.attributes,`placeholder`)))&&!ol(a.attributes,n.labelAttributes)&&!Sl(i)&&zce(i,l)===null){if(u!==`select`){for(let e of i.children)if(vl(e,1,l))return}c.push({opening:a,controlIdKeys:gl(F(a.attributes,`id`)),enclosingBindingName:Bce(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`."})}}}}),El=(e,t,n)=>{let r=A(e);if(j(r,`JSXElement`)){t.push(r.openingElement);for(let e of r.children)El(e,t,n);return}if(j(r,`JSXFragment`)){for(let e of r.children)El(e,t,n);return}if(n){if(j(r,`JSXExpressionContainer`)){El(r.expression,t,!0);return}if(j(r,`ConditionalExpression`)){let e=Cn(Rn(r.test));if(e!==null){El(e?r.consequent:r.alternate,t,!0);return}El(r.consequent,t,!0),El(r.alternate,t,!0);return}if(j(r,`LogicalExpression`)){for(let e of Gt(r))El(e,t,!0);return}if(j(r,`ArrayExpression`)){for(let e of r.elements)e&&!j(e,`SpreadElement`)&&El(e,t,!0);return}if(j(r,`SequenceExpression`)){if(r.expressions.length===0)return;El(Rn(r),t,!0)}}},Dl=(e,t={})=>{let n=[];for(let r of e.children)El(r,n,t.includeStaticExpressionBranches===!0);return n},Hce=new Set([`grid`,`table`,`treegrid`]),Uce=(e,t,n)=>{for(let r=e.attributes.length-1;r>=0;--r){let i=e.attributes[r];if(i){if(j(i,`JSXAttribute`)){if(gn(i.name)?.toLowerCase()===t)return!1;continue}if(j(i,`JSXSpreadAttribute`)&&ei(i.argument,t,!1,n.scopes))return!0}}return!1},Ol=(e,t,n,r)=>n.isUnknown&&Uce(e,t,r),Wce=e=>e.attribute?L(e.attribute):Tr(e.expression),kl=(e,t,n)=>{if(e.attribute)return ri(e.attribute,{booleanValuesRender:t,scopes:n.scopes});if(!e.expression)return!1;let r=A(e.expression),i=Tr(r);return i===null?j(r,`Literal`)?typeof r.value==`boolean`&&t||typeof r.value==`number`:!(ni(r)||j(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r)):i.trim().length>0},Gce=(e,t)=>{for(let n of[`aria-label`,`aria-labelledby`,`title`]){let r=pn(e.attributes,n,!1);if(Ol(e,n,r,t))return null;if(kl(r,n.startsWith(`aria-`),t))return!0}return!1},Al=e=>{for(let t of e){if(j(t,`JSXElement`)&&N(t.openingElement)===`caption`)return t;if(j(t,`JSXFragment`)){let e=Al(t.children);if(e)return e}}return null},Kce=(e,t)=>Or(e.openingElement,t.settings)?!1:ai(e,t.settings),qce=(e,t,n)=>{let r=e.parent;for(;r;){if(j(r,`JSXElement`)){if(Or(r.openingElement,n.settings))return!1;if(N(r.openingElement)===`table`)return r===t}r=r.parent}return!1},Jce=(e,t)=>{let n=e.parent;for(;n;){if(j(n,`JSXElement`)&&Or(n.openingElement,t.settings))return!0;n=n.parent}return!1},jl=w({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(N(n)!==`table`||Br(e,n)||Or(n,e.settings)||Jce(t,e)||[`aria-hidden`,`children`,`dangerouslysetinnerhtml`,`hidden`].some(t=>Ol(n,t,pn(n.attributes,t,!1),e)))return;let r=pn(n.attributes,`children`,!1),i=pn(n.attributes,`dangerouslysetinnerhtml`,!1);if(r.isPresent||i.isPresent)return;let a=pn(n.attributes,`role`,!1);if(Ol(n,`role`,a,e))return;if(a.isPresent){let t=Wce(a);if(t===null){if(kl(a,!1,e))return}else{let e=t.trim().toLowerCase().split(/\s+/).find(e=>pi.has(e));if(e&&!Hce.has(e))return}}if(!Dl(t).some(n=>N(n)===`th`&&qce(n,t,e)))return;let o=Al(t.children),s=Gce(n,e);s!==null&&(o&&Kce(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.`}))}})}),Ml=(e,t,n)=>{let r=A(e);if(D(r))return[r];if(j(r,`Identifier`)){if(n){let e=T(r,n);return!e||e.kind!==`const`&&e.kind!==`function`||e.references.some(e=>e.flag!==`read`)?[]:D(e.declarationNode)?[e.declarationNode]:e.initializer&&D(A(e.initializer))?[A(e.initializer)]:[]}let e=O(t,r.name);return e?.initializer&&D(A(e.initializer))?[A(e.initializer)]:[]}if(j(r,`ConditionalExpression`))return[...Ml(r.consequent,t,n),...Ml(r.alternate,t,n)];if(j(r,`SequenceExpression`)){let e=r.expressions.at(-1);return e?Ml(e,t,n):[]}return[]},Nl=(e,t)=>D(e)?j(e.body,`BlockStatement`)?et(e).flatMap(e=>e.argument?Ml(e.argument,e,t):[]):Ml(e.body,e,t):[],Pl=(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=y(r.identifier),o=e,c=o.parent;if(n.includeReactRefContainers&&j(c,`MemberExpression`)&&c.object===o&&C(c)===`current`&&(o=y(c),c=o.parent),n.includeReactRefContainers&&j(c,`CallExpression`)&&c.arguments[0]===e&&E(c,`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})&&(o=y(c),c=o.parent),!j(c,`VariableDeclarator`)||c.init!==o||!j(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},Fl=(e,t,n)=>E(e,t,n,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}),Il=(e,t)=>Fl(e,yn,t),Yce=new Set([`useMemo`,`useCallback`,`useRef`]),Xce=new Set([`useRef`]),Ll=new Set([`debounce`,`throttle`]),Rl=new Set([`cancel`,`flush`]),Zce=new Set([`document`,`window`]),Qce=new Set([`then`,`catch`,`finally`]),zl=e=>e!==null&&(e===`lodash`||e===`lodash-es`||e===`lodash.debounce`||e===`lodash.throttle`||e.startsWith(`lodash/`)||e.startsWith(`lodash-es/`)),Bl=e=>{if(!j(e,`CallExpression`))return!1;let t=A(e.callee);if(j(t,`Identifier`)){if(!Ll.has(t.name))return!1;let e=O(t,t.name);return!e?.initializer||!j(e.initializer,`ImportSpecifier`)&&!j(e.initializer,`ImportDefaultSpecifier`)?!1:zl(rr(t,t.name))}if(j(t,`MemberExpression`)&&Ll.has(C(t)??``)){let e=A(t.object);if(!j(e,`Identifier`))return!1;let n=O(e,e.name);return!n?.initializer||!j(n.initializer,`ImportNamespaceSpecifier`)&&!j(n.initializer,`ImportDefaultSpecifier`)?!1:zl(rr(e,e.name))}return!1},$ce=e=>{if(!j(e,`CallExpression`))return null;let t=e.arguments?.[0];if(!t)return null;let n=A(t);if(Bl(n))return n;if(!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return null;if(!j(n.body,`BlockStatement`)){let e=A(n.body);return Bl(e)?e:null}for(let e of n.body.body??[])if(j(e,`ReturnStatement`)&&e.argument){let t=A(e.argument);if(Bl(t))return t}return null},ele=(e,t,n)=>{if(!j(e,`CallExpression`))return!1;let r=e.arguments?.[2];if(!r)return!1;let i=Co(r,[`trailing`],t,n);return i?i.properties.some(e=>j(e,`Property`)&&P(e,{allowComputedString:!0})===`trailing`&&j(e.value,`Literal`)&&e.value.value===!1):!1},Vl=e=>{let t=A(e);for(;j(t,`MemberExpression`);)t=A(t.object);return j(t,`Identifier`)?t:null},Hl=(e,t)=>{let n=Vl(e);return n?t.symbolFor(n)?.id??null:null},Ul=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`))return Rl.has(C(n)??``)?Hl(n.object,t):null;if(!j(n,`Identifier`))return null;let r=O(n,n.name)?.bindingIdentifier?.parent;if(!j(r,`Property`))return null;let i=j(r.key,`Identifier`)?r.key.name:j(r.key,`Literal`)&&typeof r.key.value==`string`?r.key.value:null;if(!i||!Rl.has(i))return null;let a=r.parent,o=a?.parent;return!j(a,`ObjectPattern`)||!j(o,`VariableDeclarator`)||!o.init?null:Hl(o.init,t)},tle=(e,t,n)=>{S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`CallExpression`))return;let i=Ul(r.callee,n);i!==null&&t.add(i)})},nle=(e,t)=>{let n=new Set,r=new Set,i=new Set;return S(e,e=>{if(!j(e,`CallExpression`))return;let n=A(e.callee);if(Il(e,t)){let n=e.arguments?.[0],a=n?A(n):null;if(a&&D(a)){if(xo(a,e=>{if(!j(e,`CallExpression`))return;let n=Hl(e.callee,t);n!==null&&r.add(n)}),j(a.body,`BlockStatement`))for(let e of et(a)){if(!e.argument)continue;let n=Ul(e.argument,t);n!==null&&i.add(n)}else{let e=Ul(a.body,t);e!==null&&i.add(e)}for(let e of Nl(a))tle(e,i,t)}}if(j(n,`Identifier`)&&n.name===`useUnmount`&&(rr(n,n.name)===`react-use`||!O(n,n.name)))for(let n of e.arguments??[]){let e=Ul(n,t);e!==null&&i.add(e)}if(!j(n,`Identifier`)||!kc(n.name))return;let a=O(n,n.name)?.initializer;if(!a||!D(a))return;let o=new Set;S(a,e=>{if(!j(e,`CallExpression`)||!Il(e,t))return;let n=pr(e);if(n)for(let e of Nl(n))S(e,e=>{if(!j(e,`CallExpression`))return;let t=A(e.callee);if(!j(t,`MemberExpression`)||!Rl.has(C(t)??``))return;let n=Vl(t.object);n&&o.add(n.name)})});for(let[n,r]of(a.params??[]).entries()){if(!j(r,`Identifier`)||!o.has(r.name))continue;let a=e.arguments?.[n],s=a?Hl(a,t):null;s!==null&&i.add(s)}}),S(e,r=>{if(r!==e&&D(r))return!1;if(!j(r,`ReturnStatement`)||!r.argument)return;let i=A(r.argument);!j(i,`Identifier`)&&!j(i,`ObjectExpression`)&&!j(i,`ArrayExpression`)||S(i,e=>{if(!j(e,`Identifier`))return;let r=t.symbolFor(e)?.id;r!==void 0&&n.add(r)})}),{escapedSymbolIds:n,invokedSymbolIds:r,releasedSymbolIds:i}},rle=(e,t,n)=>{if(!j(e,`CallExpression`))return null;let r=e.arguments?.[0];if(!r)return null;let i=A(r);if(D(i))return i;if(!j(i,`Identifier`))return null;let a=i.name,o=null;return S(t,e=>{if(o)return!1;if(j(e,`FunctionDeclaration`)&&e.id?.name===a)return o=e,!1;if(j(e,`VariableDeclarator`)&&j(e.id,`Identifier`)&&e.id.name===a&&e.init){let t=A(e.init);if(D(t))return o=t,!1;if(j(t,`CallExpression`)&&Fl(t,new Set([`useCallback`]),n)){let e=t.arguments?.[0],n=e?A(e):null;if(n&&D(n))return o=n,!1}}}),o},Wl=new Set([`localStorage`,`sessionStorage`]),ile=e=>{let t=e;for(;;){let e=t.parent;if(e&&j(e,`MemberExpression`)&&e.object===t&&e.parent&&j(e.parent,`CallExpression`)&&e.parent.callee===e){t=e.parent;continue}break}return j(t,`CallExpression`)&&j(t.callee,`MemberExpression`)&&C(t.callee)===`catch`},ale=e=>{if(e.async)return!0;let t=new Set;for(let n of e.params??[])kt(n,t);let n=!1;return S(e,e=>{if(n)return!1;if(j(e,`AwaitExpression`))return n=!0,!1;let r=e.parent;if(j(e,`Identifier`)&&Zce.has(e.name)&&!t.has(e.name)&&!O(e,e.name)&&!(j(r,`MemberExpression`)&&!r.computed&&r.property===e)&&!(j(r,`Property`)&&!r.computed&&r.key===e)){if(j(r,`MemberExpression`)&&r.object===e){if(j(r.property,`Identifier`)&&Wl.has(r.property.name))return;let e=r;for(;e.parent&&j(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let t=e.parent&&j(e.parent,`CallExpression`)&&e.parent.callee===e,n=e.parent&&j(e.parent,`AssignmentExpression`)&&e.parent.left===e;if(!t&&!n)return}return n=!0,!1}if(j(e,`CallExpression`)){let t=e.callee;if(j(t,`Identifier`)&&t.name===`fetch`&&!O(t,t.name)||j(t,`MemberExpression`)&&Qce.has(C(t)??``)&&C(t)!==`catch`&&!ile(e))return n=!0,!1;if(j(t,`MemberExpression`)&&j(t.object,`Identifier`)&&Wl.has(t.object.name))return}}),n},ole=e=>{if(!e)return!0;let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`||j(t,`UnaryExpression`)&&t.operator===`void`},sle=(e,t)=>{if(!j(e,`MemberExpression`)||C(e)!==`current`)return!1;let n=A(e.object);if(!j(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!0;if(!r.initializer)return!1;let i=A(r.initializer);return j(i,`CallExpression`)&&Fl(i,Xce,t)&&ole(i.arguments?.[0])},cle=(e,t)=>{if(!j(e.body,`BlockStatement`))return!1;let n=new Set,r=e=>{let r=!1;return S(e,e=>{if(r)return!1;if(sle(e,t)||j(e,`Identifier`)&&n.has(e.name))return r=!0,!1}),r};for(let t of e.body.body??[]){if(j(t,`VariableDeclaration`)&&(t.declarations??[]).every(e=>e.init&&r(e.init))){for(let e of t.declarations??[])j(e.id,`Identifier`)&&n.add(e.id.name);continue}if(j(t,`IfStatement`)){let e=t.consequent;return(j(e,`ReturnStatement`)||j(e,`BlockStatement`)&&j(e.body?.[0],`ReturnStatement`))&&r(t.test)}return!1}return!1},Gl=w({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(!Fl(n,Yce,e.scopes))return;let r=$ce(n);if(!r||ele(r,e.scopes,n))return;let i=y(n),a=i.parent;if(!j(a,`VariableDeclarator`)||a.init!==i||!j(a.id,`Identifier`))return;let o=a.id.name,s=M(n);if(!s)return;let c=t.get(s);c||(c=nle(s,e.scopes),t.set(s,c));let l=Pl(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=rle(r,s,e.scopes);d&&ale(d)&&(cle(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.`}))}}}}),Kl=ur({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.`}),ql=1e3,lle=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]]),ule=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(`.`)),Jl=1e3,dle=new Set([`continue`,`submit`,`ok`,`okay`,`click here`,`here`,`yes`,`no`,`go`,`done`]),fle=/(?:^|\s)(-?)px-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,ple=/(?:^|\s)(-?)py-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,mle=/(?:^|\s)(-?)w-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,hle=/(?:^|\s)(-?)h-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/g,Yl=new Set([`flex`,`inline-flex`,`grid`,`inline-grid`]),Xl=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`]),gle=/(?:^|\s)(?:-)?space-(x|y)-(\d+(?:\.\d+)?|\[[^\]]+\])(?=$|[\s:])/,Zl=(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},Ql=(e,t)=>RegExp(`(?:^|\\s)\\w+:${t}-`).test(e),$l=w({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(!j(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`px-`)||!n.includes(`py-`)||Ql(n,`px`)||Ql(n,`py`))return;let r=Zl(n,fle,ple);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.`})}})}),eu=w({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||!j(n.name,`JSXIdentifier`)||n.name.name!==`className`)return;let r=L(n);if(!r||!r.includes(`w-`)||!r.includes(`h-`)||Ql(r,`w`)||Ql(r,`h`))return;let i=Zl(r,mle,hle);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.`})}}}}),_le=e=>e.split(/\s+/).filter(Boolean),tu=w({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(!j(t.name,`JSXIdentifier`)||t.name.name!==`className`)return;let n=L(t);if(!n||!n.includes(`space-`))return;let r=_le(n),i=!1;for(let e of r){let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;if(Yl.has(t)){i=!0;break}}if(!i)return;let a=n.match(gle);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.`})}})}),nu=ur({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.`}),ru=e=>{if(!e||!j(e,`JSXOpeningElement`))return null;if(j(e.name,`JSXIdentifier`))return N(e);if(j(e.name,`JSXMemberExpression`)){let t=e.name;for(;j(t,`JSXMemberExpression`);)t=t.property;if(j(t,`JSXIdentifier`))return t.name}return null},iu=e=>e===`button`||e===`Button`,vle=e=>iu(e)||e===`a`||e===`Link`,yle=new Set([`back`,`previous`]),au=e=>e.toLowerCase().replace(/[.!?…]+$/,``).trim(),ou=e=>{if(!j(e,`JSXElement`)&&!j(e,`JSXFragment`))return null;let t=e.children??[];if(t.length===0)return null;let n=[];for(let e of t){if(j(e,`JSXText`)){n.push(typeof e.value==`string`?e.value:``);continue}if(j(e,`JSXExpressionContainer`)){let t=e.expression;if(j(t,`Literal`)&&typeof t.value==`string`){n.push(t.value);continue}if(j(t,`TemplateLiteral`)){let e=ot(t);if(e!==null){n.push(e);continue}}return null}if(j(e,`JSXFragment`)){let t=ou(e);if(t===null)return null;n.push(t);continue}if(j(e,`JSXElement`))return null}return n.join(``).trim()},ble=e=>{let t=e.parent;for(;t;){if(j(t,`JSXElement`)&&ru(t.openingElement)===`form`)return t;t=t.parent}return null},su=e=>{for(let t of e.children??[]){if(j(t,`JSXFragment`)){if(su(t))return!0;continue}if(!j(t,`JSXElement`))continue;let e=ru(t.openingElement);if(e&&vle(e)&&yle.has(au(ou(t)??``))||su(t))return!0}return!1},cu=w({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=ru(t.openingElement);if(!n||!iu(n))return;let r=ou(t);if(!r)return;let i=au(r);if(dle.has(i)){if(i===`continue`){let e=ble(t);if(e&&su(e))return}e.report({node:t.openingElement??t,message:`Screen reader users may not know what "${r}" does. Use a specific action label.`})}}})}),xle=e=>{for(let t of e.children)if(!(j(t,`JSXText`)&&t.value.trim().length===0)){if(j(t,`JSXElement`))return t.openingElement;if(!(j(t,`JSXExpressionContainer`)&&j(t.expression,`JSXEmptyExpression`)))return}return null},lu=w({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(N(t.openingElement)!==`details`)return;let n=xle(t);n!==void 0&&(n&&N(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.`}))}})}),Sle=new Set([`dialog`,`alertdialog`]),Cle=[`aria-label`,`aria-labelledby`,`title`],uu=w({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=>jt(e.filename)?In:{JSXOpeningElement(t){if(!j(t.name,`JSXIdentifier`))return;let n=N(t);if(n[0]!==n[0]?.toLowerCase())return;let r=F(t.attributes,`role`),i=r?yr(r):null;(n===`dialog`||i!==null&&Sle.has(i))&&(I(t.attributes)||Cle.some(e=>F(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."}))}}}),du=`createReactClass`,fu=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`MemberExpression`)?!!(j(t.object,`Identifier`)&&t.object.name===`React`&&j(t.property,`Identifier`)&&(t.property.name===du||t.property.name===`createClass`)):j(t,`Identifier`)?t.name===du:!1},wle=(e,t,n,r)=>{let i=A(e);if(i.type===`JSXElement`||i.type===`JSXFragment`||Ka(i))return!0;if(j(i,`ArrayExpression`))return i.elements.some(e=>e&&t(e));if(j(i,`CallExpression`))return i.arguments.some(e=>Bee(e,r)&&n(e));if(j(i,`SequenceExpression`)){let e=i.expressions.at(-1);return!!(e&&t(e))}return!1},pu=(e,t,n)=>{let r=c(t,e=>wle(e,r.expressionMatches,r.functionMatches,t),n);return r.functionMatches(e)},mu=(e,t)=>{let n=e.params[0];if(!j(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r||r.references.some(e=>e.flag!==`read`))return!1;let i=e=>{let n=A(e);if(j(n,`LogicalExpression`)){if(n.operator===`&&`)return i(n.left)||i(n.right);if(n.operator===`||`)return i(n.left)&&i(n.right)}if(!j(n,`BinaryExpression`)||n.operator!==`===`)return!1;let a=A(n.left),o=A(n.right);return j(a,`Identifier`)&&t.symbolFor(a)?.id===r.id&&j(o,`Literal`)&&o.value===null||j(o,`Identifier`)&&t.symbolFor(o)?.id===r.id&&j(a,`Literal`)&&a.value===null},a=!1,o=!0;return S(e.body,t=>{if(!o)return!1;if(!j(t,`JSXElement`)&&!j(t,`JSXFragment`)&&!Ka(t))return;a=!0;let n=t;for(;n.parent&&n.parent!==e;){let e=n.parent;if((j(e,`IfStatement`)||j(e,`ConditionalExpression`))&&e.consequent===n&&i(e.test)||j(e,`LogicalExpression`)&&e.operator===`&&`&&e.right===n&&i(e.left))return!1;n=e}return o=!1,!1}),a&&o},Tle=[`observer`,`lazy`,`withTracking`],Ele=e=>{let t=e?.[`react-doctor`],n=typeof t==`object`&&t?t.displayName??{}:{},r=new Set(n.additionalHoCs??Tle);return{ignoreTranspilerName:n.ignoreTranspilerName??!1,checkContextObjects:n.checkContextObjects??!1,reactVersion:n.reactVersion??``,additionalHoCs:r}},hu=(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},gu=new WeakMap,_u=e=>{let t=gu.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(j(e,`CallExpression`)&&Ka(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)k(e)&&r(e);else k(i)&&r(i);if(n)return}};return r(e),gu.set(e,n),n},vu=e=>{let t=!1;return S(e,e=>{if(j(e,`CallExpression`)&&j(e.callee,`Identifier`)&&e.callee.name===`createElement`)return t=!0,!1}),t},yu=e=>j(e,`MemberExpression`)?!e.computed&&j(e.property,`Identifier`)?e.property.name:e.computed&&j(e.property,`Literal`)&&typeof e.property.value==`string`?e.property.value:null:null,bu=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(j(t,`VariableDeclarator`)&&j(t.id,`Identifier`))return t.id.name;if(j(t,`AssignmentExpression`)){let e=t.left;if(j(e,`Identifier`))return e.name;if(j(e,`MemberExpression`))return yu(e)}return null},xu=e=>{let t=e.parent;if(!t||!j(t,`AssignmentExpression`))return!1;let n=t.left;return j(n,`MemberExpression`)&&j(n.object,`Identifier`)&&n.object.name===`module`&&yu(n)===`exports`},Dle=e=>{if(!j(e,`CallExpression`))return!1;if(fu(e))return!0;let t=e.callee;return j(t,`MemberExpression`)?yu(t)===`createClass`:!1},Ole=e=>{if(!j(e,`CallExpression`))return!1;let t=e.callee;return j(t,`Identifier`)?t.name===`createContext`:j(t,`MemberExpression`)&&yu(t)===`createContext`},kle=e=>(j(e,`FunctionExpression`)||j(e,`FunctionDeclaration`))&&!!e.id?.name,Su=e=>j(e,`CallExpression`)&&e.arguments[0]||null,Cu=(e,t)=>{if(!j(e,`CallExpression`))return null;let n=e.callee;if(j(n,`Identifier`))return n.name===`memo`||n.name===`forwardRef`||t.has(n.name)?n.name:null;if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)){let e=n.property.name;if(e===`memo`||e===`forwardRef`||t.has(e))return e}return null},Ale=(e,t)=>Cu(e,t)!==null,wu=e=>{if(!e)return!1;if(hu(e,15,7))return!0;let t=e.match(/^0\.14\.(\d+)/);return!!(t&&Number(t[1])>=11)},jle=(e,t)=>{if(!Ale(e,t.additionalHoCs)||!_u(e))return!1;let n=bu(e),r=p(e);if(n&&r&&ku(n,r))return!1;let i=Cu(e,t.additionalHoCs),a=Su(e);return!a||i===`forwardRef`&&j(e.parent,`CallExpression`)&&Cu(e.parent,t.additionalHoCs)===`memo`&&Su(e.parent)===e&&wu(t.reactVersion)?!1:i===`memo`&&j(a,`CallExpression`)?Cu(a,t.additionalHoCs)===`forwardRef`?!wu(t.reactVersion):!1:kle(a)?!1:j(a,`FunctionExpression`)||j(a,`ArrowFunctionExpression`)},Tu=e=>{let t=e.body;if(!t)return!1;let n=t.body??[];for(let e of n)if((j(e,`PropertyDefinition`)||j(e,`MethodDefinition`))&&`static`in e&&e.static&&j(e.key,`Identifier`)&&e.key.name===`displayName`)return!0;return!1},Eu=e=>{if(j(e,`Identifier`))return[e.name];if(!j(e,`MemberExpression`))return[];let t=Eu(e.object),n=yu(e);return n?[...t,n]:t},Du=new WeakMap,Ou=e=>{let t=Du.get(e);if(t)return t;let n=new Set,r=new Set,i=e=>{if(j(e,`AssignmentExpression`)&&j(e.left,`MemberExpression`)&&yu(e.left)===`displayName`){j(e.left.object,`Identifier`)&&n.add(e.left.object.name);for(let t of Eu(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)k(e)&&i(e);else k(n)&&i(n)}};i(e);let a={identifierTargets:n,memberPathSegments:r};return Du.set(e,a),a},ku=(e,t)=>Ou(t).identifierTargets.has(e),Mle=(e,t)=>Ou(t).memberPathSegments.has(e),Au=w({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=Ele(e.settings),n=oi(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(go(e)&&!(e.id&&Oc(e.id.name)&&r)&&!Tu(e)){if(e.id){let t=p(e);if(t&&ku(e.id.name,t))return}i(e.id??e)}},ClassExpression(e){if(go(e)&&!(e.id&&Oc(e.id.name)&&r)&&!Tu(e)){if(e.id){let t=p(e);if(t&&ku(e.id.name,t))return}i(e.id??e)}},FunctionExpression(a){if(!_u(a)||n&&!pu(a,e.scopes,e.cfg))return;if(!n&&!a.id&&xu(a)){i(a);return}if(!n&&!rn(a,e.scopes,e.cfg)&&!vu(a)||a.id&&Oc(a.id.name)&&r)return;if(j(a.parent,`Property`)&&a.parent.method){let e=a.parent.key,n=j(e,`Identifier`)?e.name:j(e,`Literal`)&&typeof e.value==`string`?e.value:null,r=p(a);if(n&&Oc(n)&&t.ignoreTranspilerName&&(!r||!Mle(n,r))){i(a);return}}let o=bu(a);if(!(o&&Oc(o)&&r)){if(xu(a)&&!a.id){i(a);return}if(j(a.parent,`ReturnStatement`)&&!a.id){if(n&&mu(a,e.scopes))return;i(a)}}},ArrowFunctionExpression(t){if(n&&(j(t.parent,`ReturnStatement`)||j(t.parent,`ArrowFunctionExpression`))&&mu(t,e.scopes))return;let a=j(t.parent,`ExportDefaultDeclaration`);if(!_u(t)&&!a||n&&!pu(t,e.scopes,e.cfg))return;if(!n&&xu(t)){i(t);return}if(!n&&!rn(t,e.scopes,e.cfg)&&!vu(t))return;if(j(t.parent,`ArrowFunctionExpression`)||j(t.parent,`ReturnStatement`)){i(t);return}let o=t.parent;for(;o;){if(j(o,`VariableDeclarator`)&&j(o.id,`Identifier`)){if(Oc(o.id.name)&&r)return;break}if(j(o,`ExportDefaultDeclaration`)){i(t);return}if(xu(t)){i(t);return}if(j(o,`FunctionDeclaration`)||j(o,`FunctionExpression`)||j(o,`ArrowFunctionExpression`)||j(o,`ClassDeclaration`)||j(o,`ClassExpression`)||j(o,`Program`))break;o=o.parent??null}},FunctionDeclaration(t){if(!n&&j(t.parent,`ExportDefaultDeclaration`)&&rn(t,e.scopes,e.cfg)){if(t.id){let e=p(t);if(e&&ku(t.id.name,e))return}i(t.id??t)}},CallExpression(e){if(t.checkContextObjects&&hu(t.reactVersion,16,3)&&Ole(e)){let t=bu(e);if(t){let n=p(e);if(n&&ku(t,n))return}i(e);return}if(jle(e,t)){i(e);return}if(!Dle(e))return;let n=e.arguments[0];if(!n||!j(n,`ObjectExpression`)){i(e);return}let a=!1;for(let e of n.properties){if(!j(e,`Property`)||e.computed)continue;let t=e.key;if(j(t,`Identifier`)&&t.name===`displayName`){a=!0;break}if(j(t,`Literal`)&&t.value===`displayName`){a=!0;break}}if(a)return;let o=e.parent;if(!(o&&j(o,`VariableDeclarator`)&&j(o.id,`Identifier`)&&Oc(o.id.name)&&r)){if(o&&j(o,`AssignmentExpression`)){let e=o.left;if(j(e,`Identifier`)&&Oc(e.name)&&r||j(e,`MemberExpression`)&&j(e.property,`Identifier`)&&Oc(e.property.name)&&r)return}i(e)}}}}}),ju=w({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.`}),Nle=(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\`.`},Ple=e=>{let t=!1;return S(e,e=>{if(j(e,`CallExpression`))return t=!0,!1}),t},Mu=(e,t)=>e.node===t.node?`same`:e.isConcreteFunction&&t.isConcreteFunction?`different`:`unknown`,Nu=(e,t)=>e.abortedControllerSymbolIds.has(t)||e.exhaustiveBranches.some(({alternate:e,consequent:n})=>Nu(e,t)&&Nu(n,t)),Fle=(e,t)=>e===t?`same`:e.startsWith(`global:`)&&t.startsWith(`global:`)||e.startsWith(`fresh:`)||t.startsWith(`fresh:`)?`different`:`unknown`,Pu=(e,t)=>{if(t.abortControllerSymbolId!==null&&Nu(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||Mu(t.callbackIdentity,r.callbackIdentity)!==`same`)continue;let e=Fle(t.targetKey,r.targetKey);if(e===`same`)return`cancelled`;e===`unknown`&&(n=`unknown`)}for(let{alternate:r,consequent:i}of e.exhaustiveBranches){let e=Pu(r,t),a=Pu(i,t);if(e===`cancelled`&&a===`cancelled`)return`cancelled`;e!==`not-cancelled`&&a!==`not-cancelled`&&(n=`unknown`)}return n},Ile=(e,t)=>Pu(e,t)!==`not-cancelled`,Fu=e=>{if(!e)return null;let t=A(e);return j(t,`MemberExpression`)?!t.computed&&j(t.property,`Identifier`)?t.property.name:t.computed&&j(t.property,`Literal`)&&typeof t.property.value==`string`?t.property.value:null:null},Lle=new Set([`CatchClause`,`ConditionalExpression`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LogicalExpression`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`]),Rle=(e,t)=>{if(j(e,`IfStatement`)){if(e.test===t)return!0;let n=Cn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(j(e,`ConditionalExpression`)){if(e.test===t)return!0;let n=Cn(e.test);return e.consequent===t&&n===!0||e.alternate===t&&n===!1}if(j(e,`LogicalExpression`)){if(e.left===t)return!0;if(e.right!==t)return!1;let n=Cn(e.left);return e.operator===`&&`&&n===!0||e.operator===`||`&&n===!1}return j(e,`TryStatement`)?e.finalizer===t:j(e,`SwitchStatement`)?e.discriminant===t:j(e,`ForStatement`)?e.init===t||e.test===t:j(e,`ForInStatement`)||j(e,`ForOfStatement`)?e.right===t:j(e,`WhileStatement`)?e.test===t:!1},Iu=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e||Lle.has(e.type)&&!Rle(e,r)&&!n?.(e,r))return!0;r=e}return!1},Lu=(e,{allowComputedString:t=!1,allowIndeterminateEntries:n=!1}={})=>{if(!e)return!1;let r=A(e);if(j(r,`Literal`))return typeof r.value==`boolean`?r.value:null;if(!j(r,`ObjectExpression`))return null;let i=!1;for(let e of r.properties??[]){if(n&&j(e,`SpreadElement`)){i=null;continue}if(!j(e,`Property`))return null;let r=P(e,{allowComputedString:t});if(r===null||!e.computed&&r===`__proto__`)return null;if(r!==`capture`)continue;let a=A(e.value);if(j(a,`Literal`)&&typeof a.value==`boolean`){i=a.value;continue}if(!n)return null;i=null}return i},zle=e=>{if(!e)return!1;let t=A(e);if(j(t,`Literal`))return typeof t.value==`boolean`?!1:null;if(!j(t,`ObjectExpression`))return null;let n=!1;for(let e of t.properties){if(!j(e,`Property`))return null;let t=P(e,{allowComputedString:!0});if(t===null||!e.computed&&t===`__proto__`)return null;if(t!==`once`)continue;let r=A(e.value);if(!j(r,`Literal`)||typeof r.value!=`boolean`)return null;n=r.value}return n},Ble=new Set([...yn,`useInsertionEffect`]),Ru=e=>e.references.every(e=>e.flag===`read`),Vle=e=>e.kind===`const`||e.kind===`import`||(e.kind===`function`||e.kind===`parameter`)&&Ru(e),zu=e=>e.kind===`const`&&j(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode.id,`Identifier`)&&e.declarationNode.id===e.bindingIdentifier,Bu=(e,t,n)=>{if(!j(e,`Identifier`))return null;let r=t.scopes.symbolFor(e);if(!r||!Vle(r)||n.has(r.id)||r.kind===`const`&&!zu(r))return null;n.add(r.id);let i=r.initializer?A(r.initializer):null;if(r.kind===`const`&&j(i,`Identifier`)){let e=Bu(i,t,n);if(e)return e}return r},Vu=(e,t)=>{if(!e)return null;let n=A(e);if(D(n))return{node:n,isConcreteFunction:!0};if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r)return null;let i=r.initializer?A(r.initializer):null;return i&&D(i)?{node:i,isConcreteFunction:!0}:{node:r.bindingIdentifier,isConcreteFunction:!1}},Hu=(e,t)=>{let n=A(e);if(j(n,`Identifier`)){let e=Bu(n,t,new Set);if(e){if(e.kind===`import`||e.kind===`parameter`||e.kind===`function`)return null;let n=e.initializer?A(e.initializer):null;return j(n,`NewExpression`)&&j(n.callee,`Identifier`)&&!t.scopes.isGlobalReference(n.callee)?null:j(n,`NewExpression`)?`fresh:${e.id}`:`symbol:${e.id}`}return t.scopes.isGlobalReference(n)?`global:${n.name}`:null}if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)){let e=Hu(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},Uu=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(r,`Literal`)&&typeof r.value==`string`)return r.value;if(j(r,`TemplateLiteral`)&&r.expressions.length===0)return r.quasis[0]?.value.cooked??``;if(!j(r,`Identifier`))return null;let i=t.scopes.symbolFor(r);return!i||!zu(i)||!i.initializer||n.has(i.id)?null:(n.add(i.id),Uu(i.initializer,t,n))},Hle=(e,t)=>{let n=Gu(e.callee,`dispatchEvent`,t),r=e.arguments?.[0];if(!r)return null;let i=A(r);if(!n||!j(i,`NewExpression`)||!j(i.callee,`Identifier`)||i.callee.name!==`Event`||!t.scopes.isGlobalReference(i.callee))return null;let a=A(n);if(!j(a,`Identifier`))return null;let o=Bu(a,t,new Set),s=o?.initializer?A(o.initializer):null;if(!j(s,`NewExpression`)||!j(s.callee,`Identifier`)||s.callee.name!==`EventTarget`||!t.scopes.isGlobalReference(s.callee))return null;let c=Hu(n,t),l=Uu(i.arguments?.[0],t);return c!==null&&l!==null?{eventName:l,targetKey:c}:null},Wu=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r||r.kind!==`const`||!r.initializer)return null;let i=A(r.initializer);return!j(i,`NewExpression`)||!j(i.callee,`Identifier`)||i.callee.name!==`AbortController`||!t.scopes.isGlobalReference(i.callee)?null:r.id},Gu=(e,t,n)=>{if(!e)return null;let r=A(e);return!j(r,`MemberExpression`)||(Fu(r)??(n&&r.computed?Uu(r.property,n):null))!==t?null:r.object},Ule=(e,t)=>j(e,`ObjectPattern`)?e.properties.some(e=>!j(e,`Property`)||P(e,{allowComputedString:!0})!==`signal`?!1:(j(e.value,`AssignmentPattern`)?e.value.left:e.value)===t):!1,Ku=(e,t,n=new Set)=>{let r=A(e),i=Gu(r,`signal`);if(i)return Wu(i,t);if(!j(r,`Identifier`))return null;let a=t.scopes.symbolFor(r);if(!a||a.kind!==`const`||!a.initializer||n.has(a.id)||!Ru(a))return null;n.add(a.id);let o=a.declarationNode;if(!j(o,`VariableDeclarator`))return null;if(j(o.id,`Identifier`)&&o.id===a.bindingIdentifier){let e=A(a.initializer);if(j(e,`Identifier`))return Ku(e,t,n);let r=Gu(e,`signal`);return r?Wu(r,t):null}return Ule(o.id,a.bindingIdentifier)?Wu(a.initializer,t):null},qu=(e,t,n)=>{let r=A(e);if(j(r,`UnaryExpression`)&&r.operator===`!`){let e=qu(r.argument,t,n);return e===`aborted`?`not-aborted`:e===`not-aborted`?`aborted`:null}if(j(r,`BinaryExpression`)){let e=Cn(r.left),i=Cn(r.right),a=e===null?r.left:i===null?r.right:null,o=e??i;if(a&&o!==null){let e=qu(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=Gu(r,`aborted`);return i&&Ku(i,n)===t?`aborted`:null},Wle=(e,t,n,r)=>{if(j(e,`IfStatement`)||j(e,`ConditionalExpression`)){let i=qu(e.test,n,r);return e.consequent===t&&i===`not-aborted`||e.alternate===t&&i===`aborted`}if(!j(e,`LogicalExpression`)||e.right!==t)return!1;let i=qu(e.left,n,r);return e.operator===`&&`&&i===`not-aborted`||e.operator===`||`&&i===`aborted`},Gle=(e,t,n,r)=>!Iu(e,t,(e,t)=>Wle(e,t,n,r)),Kle=(e,t)=>{let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r?.initializer)return null;let i=A(r.initializer);if(!j(i,`CallExpression`))return null;let a=Gu(i.callee,`bind`);if(!a)return null;let o=Gu(a,`abort`),s=i.arguments?.[0];if(!o||!s)return null;let c=Wu(o,t),l=Wu(s,t);return c!==null&&c===l?c:null},qle=(e,t)=>{let n={abortControllerSymbolId:null,hasUnknownCancellation:!1};if(!e)return n;let r=A(e);if(!j(r,`ObjectExpression`))return n;let i=null;for(let e of r.properties){if(!j(e,`Property`))return n;if(P(e,{allowComputedString:!0})!==`signal`)continue;if(i)return{abortControllerSymbolId:null,hasUnknownCancellation:!0};let r=Ku(e.value,t);i={abortControllerSymbolId:r,hasUnknownCancellation:r===null}}return i??n},Ju=(e,t,n)=>{let r=Gu(e.callee,t,n);if(!r)return null;let i=Hu(r,n),a=Uu(e.arguments?.[0],n),o=Vu(e.arguments?.[1],n),s=Lu(e.arguments?.[2],{allowComputedString:!0});return i===null||a===null?null:{node:e,targetKey:i,eventName:a,callbackIdentity:o,capture:s}},Jle=(e,t)=>{let n=Gu(e.callee,`call`);if(!n||!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r||r.kind!==`const`||!Ru(r)||!j(r.declarationNode,`VariableDeclarator`))return null;let i=r.declarationNode;if(!j(i.id,`ObjectPattern`)||!i.init||!i.id.properties.some(e=>{if(!j(e,`Property`))return!1;let t=j(e.value,`AssignmentPattern`)?e.value.left:e.value;return P(e,{allowComputedString:!0})===`removeEventListener`&&t===r.bindingIdentifier}))return null;let a=e.arguments?.[0];if(!a)return null;let o=Hu(i.init,t),s=Hu(a,t);if(o===null||s===null||o!==s)return null;let c=Uu(e.arguments?.[1],t);return c===null?null:{node:e,targetKey:s,eventName:c,callbackIdentity:Vu(e.arguments?.[2],t),capture:Lu(e.arguments?.[3],{allowComputedString:!0})}},Yle=(e,t)=>{if(!e)return null;let n=A(e);if(D(n))return n.body;if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r||!r.initializer)return null;let i=A(r.initializer);return D(i)?i.body:null},Xle=(e,t)=>{let n=[],r=[],i=new Map,a=0;if(!j(e,`BlockStatement`))return{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:!1,returnStatementCount:a};let o=e.body[e.body.length-1],s=j(o,`ReturnStatement`);return S(e,o=>{if(o!==e&&D(o)||j(o,`ClassDeclaration`)||j(o,`ClassExpression`))return!1;if(j(o,`CallExpression`)){if(Iu(o,e))return;let r=Gu(o.callee,`addEventListener`,t),a=r?Hu(r,t):null;a!==null&&i.set(a,(i.get(a)??0)+1);let s=Ju(o,`addEventListener`,t);if(s?.callbackIdentity&&s.capture!==null){let e=qle(s.node.arguments?.[2],t);n.push({node:s.node,targetKey:s.targetKey,eventName:s.eventName,callbackIdentity:s.callbackIdentity,capture:s.capture,once:zle(s.node.arguments?.[2])===!0,abortControllerSymbolId:e.abortControllerSymbolId,hasUnknownCancellation:e.hasUnknownCancellation})}let c=Hle(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&&!Ple(t.callbackIdentity.node)&&n.splice(n.indexOf(t),1)}return}if(j(o,`ReturnStatement`)){a+=1;let e=Yle(o.argument,t);e&&r.push(e)}}),{registrations:n,cleanupBodies:r,hasCanonicalCleanupReturn:s,returnStatementCount:a}},Zle=(e,t)=>{let n=A(e.callee);if(!j(n,`Identifier`))return null;let r=Bu(n,t,new Set);if(!r?.initializer||r.kind!==`const`&&r.kind!==`function`)return null;let i=A(r.initializer);return!D(i)||i.async||i.generator?null:{body:i.body,symbolId:r.id}},Yu=(e,t,n=new Set,r=!1)=>{let i=[],a=new Set,o=[],s=!1,c=!1,l=!1,u=j(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=j(e,`BlockStatement`)?e.body:[e];for(let e of r){if(j(e,`BreakStatement`)||j(e,`ContinueStatement`))return!0;if(j(e,`BlockStatement`)){if(f(e))return!0;continue}if(j(e,`IfStatement`)){let r=Cn(e.test);if(r!==null){let i=Yu(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=Yu(e,t,new Set(n),!0);if(!r)return!0;d(r)}return!1};return S(e,p=>{if(p!==e&&D(p)||j(p,`ClassDeclaration`)||j(p,`ClassExpression`))return!1;if(j(p,`ReturnStatement`)&&p===u)return;if(j(p,`ReturnStatement`)||j(p,`ThrowStatement`)||r&&(j(p,`BreakStatement`)||j(p,`ContinueStatement`)))return s=!0,!1;if(j(p,`ForOfStatement`)){let t=A(p.right);return j(t,`ArrayExpression`)&&t.elements.some(e=>e&&!j(e,`SpreadElement`))&&!Iu(p,e)&&f(p.body),!1}if((j(p,`IfStatement`)||j(p,`ConditionalExpression`))&&p.alternate&&Cn(p.test)===null&&!Iu(p,e)){let e=Yu(p.consequent,t,new Set(n)),r=Yu(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=Yu(p.test,t,new Set(n));return i&&d(i),!1}if(!j(p,`CallExpression`))return;let m=Iu(p,e),h=Gu(p.callee,`removeEventListener`,t);if(h&&!m){let e=Ju(p,`removeEventListener`,t);e?(i.push(e),l||=e.callbackIdentity===null||e.capture===null):l=!0}if(!h&&!m){let e=Jle(p,t);e&&i.push(e)}let g=Gu(p.callee,`abort`);if(g){let n=Wu(g,t);n===null?m||(c=!0):(!m||Gle(p,e,n,t))&&a.add(n);return}if(m)return;let _=Kle(p,t);if(_!==null){a.add(_);return}let v=Zle(p,t);if(!v||n.has(v.symbolId))return;n.add(v.symbolId);let ee=Yu(v.body,t,n);ee&&d(ee)}),s?null:{removals:i,abortedControllerSymbolIds:a,exhaustiveBranches:o,hasUnknownAbortCall:c,hasUnknownRemovalCall:l}},Qle=(e,t)=>{let n=Xle(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=Yu(e,t);for(let e of n.cleanupBodies){let n=Yu(e,t);if(!n)return null;c(n)}return{registrations:n.registrations,removals:r,abortedControllerSymbolIds:i,exhaustiveBranches:a,hasUnknownAbortCall:o,hasUnknownRemovalCall:s,setupAbortAnalysis:l}},Xu=w({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(!E(t,Ble,e.scopes))return;let n=pr(t);if(!D(n))return;let r=Qle(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&&Nu(r.setupAbortAnalysis,t.abortControllerSymbolId)||Ile(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=Mu(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:Nle(t.eventName,t.capture,i.removalCapture,i.callbackComparison)})}}})}),Zu=(e,t)=>{if(!e)return null;let n=A(e);if(j(n,`Literal`)&&typeof n.value==`string`)return`literal:${n.value}`;if(j(n,`TemplateLiteral`)&&n.expressions.length===0)return`literal:${n.quasis[0]?.value.cooked??``}`;let r=bo({node:n,scopes:t});return r?`reference:${r}`:null},Qu=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}]]),$le=new Map([...Qu.values()].map(e=>[e.registerMethod,e])),eue=new Set([`off`,`removeEventListener`,`removeListener`]),$u=e=>!!(e&&ia(A(e))),ed=(e,t,n,r,i)=>{if(!t.requiresEventArgument){let t=e.arguments?.[0];return $u(t)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!1,handlerNode:t}:null}let a=e.arguments?.[1];if($u(a))return{method:n,receiverKey:r,eventKey:Zu(e.arguments?.[0],i),usesHandlerOnlyForm:!1,handlerNode:a};let o=e.arguments?.[0];return t.allowsHandlerOnlyForm&&$u(o)?{method:n,receiverKey:r,eventKey:null,usesHandlerOnlyForm:!0,handlerNode:o}:null},td=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!n)return;let r=[],i=[];xo(n,t=>{if(!j(t,`CallExpression`))return;let n=A(t.callee);if(!j(n,`MemberExpression`))return;let i=C(n);if(!i)return;let a=bo({node:n.object,scopes:e.scopes});if(a===null)return;let o=$le.get(i);if(!o)return;let s=ed(t,o,i,a,e.scopes);s&&r.push(s)});for(let t of Nl(n))xo(t,t=>{if(!j(t,`CallExpression`))return;let n=A(t.callee);if(!j(n,`MemberExpression`))return;let r=C(n);if(!r||eue.has(r))return;let a=Qu.get(r);if(!a)return;let o=bo({node:n.object,scopes:e.scopes});if(o===null)return;let s=ed(t,a,r,o,e.scopes);s&&i.push(s)});for(let t of i){let n=Qu.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.`})}}})}),nd=({context:e,effectCallback:t,resourceNode:n,doesFunctionReleaseResource:r})=>{let i=M(n);if(!i||!D(i)||i===t||!j(i.body,`BlockStatement`)||!fo(n,et(i).filter(e=>{let t=e.argument?A(e.argument):null;return!!(t&&r(t))}),e,n))return!1;let a=Rc(i),o=a?e.scopes.symbolFor(a):null;if(!o||o.references.length!==1)return!1;let s=o.references[0];if(!s)return!1;let c=y(s.identifier),l=c.parent,u=j(l,`CallExpression`)?y(l):null,d=u?.parent;if(!j(l,`CallExpression`)||l.callee!==c||!j(d,`AssignmentExpression`)||d.operator!==`=`||d.right!==u||!j(d.left,`Identifier`)||M(d)!==t)return!1;let f=e.scopes.symbolFor(d.left),p=f?.initializer?A(f.initializer):null;if(!f||f.kind!==`let`&&f.kind!==`var`||!j(f.declarationNode,`VariableDeclarator`)||M(f.declarationNode)!==t||!p||!D(p)||!j(p.body,`BlockStatement`)||p.body.body.length!==0)return!1;let m=new Map;for(let e of f.references){let t=y(e.identifier),n=t.parent;if(n===d&&d.left===t)continue;if(!j(n,`CallExpression`)||n.callee!==t)return!1;let r=M(n);if(!r)return!1;let i=m.get(r)??[];i.push(n),m.set(r,i)}return fo(d,et(t).filter(t=>{let n=t.argument?x(t.argument,e.scopes):null;return!!(n&&po(n,m.get(n)??[],e))}),e,d)},rd=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=i?.blockOf(t),s=b(e),c=b(t);if(!i||!a||!o||s===null||c===null)return!0;if(!H(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},id=new Set([`every`,`filter`,`flatMap`,`forEach`,`map`,`reduce`,`reduceRight`,`some`]),tue=new Set([...id,`find`,`findIndex`,`sort`]),ad=new Set([`concat`,`filter`,`flat`,`flatMap`,`map`,`slice`,`sort`,`toReversed`,`toSorted`,`toSpliced`,`with`]),od=new Set([`Array`,`BigInt64Array`,`BigUint64Array`,`Float32Array`,`Float64Array`,`Int8Array`,`Int16Array`,`Int32Array`,`Uint8Array`,`Uint8ClampedArray`,`Uint16Array`,`Uint32Array`]),sd=new Set([...od,`Map`,`Set`]),cd=(e,t,n)=>{let r=A(e);return j(r,`Identifier`)&&r.name===t&&n.isGlobalReference(r)},ld=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n);return!!((r===`from`||r===`of`)&&cd(n.object,`Array`,t))},nue=(e,t)=>{let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n);return!!(r&&[`entries`,`keys`,`values`].includes(r)&&cd(n.object,`Object`,t))},ud=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ArrayExpression`))return r.elements.length===0;if(j(r,`NewExpression`)){let e=A(r.callee);return!!(r.arguments.length===0&&j(e,`Identifier`)&&sd.has(e.name)&&t.isGlobalReference(e))}if(j(r,`CallExpression`)){let e=A(r.callee);if(ld(r,t)){if((j(e,`MemberExpression`)?C(e):null)===`of`)return r.arguments.length===0;let i=r.arguments[0];return!!(i&&!j(i,`SpreadElement`)&&ud(i,t,n))}return!!(j(e,`MemberExpression`)&&C(e)!==`concat`&&ad.has(C(e)??``)&&ud(e.object,t,n))}if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),ud(i.initializer,t,n))},dd=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ArrayExpression`))return!0;if(j(r,`NewExpression`)){let e=A(r.callee);return!!(j(e,`Identifier`)&&od.has(e.name)&&t.isGlobalReference(e))}if(j(r,`CallExpression`)){if(ld(r,t)||nue(r,t))return!0;let e=A(r.callee);return!!(j(e,`MemberExpression`)&&ad.has(C(e)??``)&&dd(e.object,t,n))}if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?.kind!==`const`||!i.initializer||n.has(i.id)||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||i.references.some(e=>e.flag!==`read`)?!1:(n.add(i.id),dd(i.initializer,t,n))},fd=(e,t,n=new Set)=>{let r=A(e);if(!j(r,`NewExpression`)){if(!j(r,`Identifier`))return dd(r,t,n);let e=t.symbolFor(r);return e?.kind!==`const`||!e.initializer||n.has(e.id)||!j(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?!1:(n.add(e.id),fd(e.initializer,t,n))}let i=A(r.callee);return!!(j(i,`Identifier`)&&sd.has(i.name)&&t.isGlobalReference(i))},pd=(e,t,n)=>{let r=A(e.callee);if(!j(r,`MemberExpression`))return!1;let i=C(r);if(i===`from`&&cd(r.object,`Array`,n)&&e.arguments[1]===t){let t=e.arguments[0];return!!(t&&!j(t,`SpreadElement`)&&!ud(t,n))}return!!(i&&tue.has(i)&&e.arguments[0]===t&&!ud(r.object,n)&&(i===`forEach`?fd(r.object,n):dd(r.object,n)))},md=(e,t)=>{let n=A(e.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?!1:j(n.object,`Identifier`)&&n.object.name===`Array`&&n.property.name===`from`?e.arguments[1]===t:id.has(n.property.name)&&e.arguments[0]===t},hd=e=>{let t=e.parent;return!!(j(t,`CallExpression`)&&md(t,e))},rue=new Set([`then`,`catch`,`finally`]),gd=e=>e.type===`MemberExpression`&&e.property.type===`Identifier`&&rue.has(e.property.name)&&A(e.object).type===`CallExpression`,_d=e=>{let t=e.parent;for(;t&&Ie.has(t.type);)t=t.parent;return t?.type!==`CallExpression`||!t.arguments?.some(t=>A(t)===e)?null:gd(A(t.callee))?t:null},vd=(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&&A(e);!D(t)||r.has(t)||(r.add(t),s.push(t))};for(;s.length>0;){let e=s.pop();if(!e)break;S(e,n=>{if(n!==e&&D(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?A(n.init):null;if(D(e)){let t=c(n.id);t&&i.set(t,e)}return}if(n.type===`AssignmentExpression`){let e=A(n.left);if(e.type===`Identifier`){let t=c(e);t&&o.add(t)}return}if(n.type!==`CallExpression`)return;let r=A(n.callee);if(D(r)){l(r);return}if(r.type===`Identifier`){let e=c(r);e&&a.add(e);return}if(t&&gd(r))for(let e of n.arguments??[])l(e)});for(let e of a)o.has(e)||l(i.get(e))}return r},yd=(e,t)=>vd(e,!0,t),bd=(e,t)=>vd(e,!1,t),iue=(e,t)=>{let n=new Set,r=[e],i=new Set,a=e=>{!e||!D(e)||e.generator||n.has(e)||(n.add(e),r.push(e))};for(D(e)&&!e.generator&&n.add(e);r.length>0;){let e=r.pop();!e||i.has(e)||(i.add(e),S(e,n=>{if(n!==e&&D(n))return!1;if(n.type===`CallExpression`){a(x(n.callee,t));for(let e of n.arguments)e.type===`SpreadElement`||!pd(n,e,t)||a(x(e,t))}}))}return n},xd=e=>{let t=M(e);return t?Mc(t):null},Sd=e=>{let t=e.parent;for(;t;){if(j(t,`VariableDeclarator`))return t;if(j(t,`FunctionDeclaration`)||j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`)||j(t,`Program`))return null;t=t.parent??null}return null},aue=new Set([`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`,`findLast`,`findLastIndex`,`sort`,`toSorted`]),Cd=new Set([`useMemo`,`useState`]),oue=new Set([`startTransition`]),wd=(e,t)=>{let n=A(e);return!j(n,`MemberExpression`)||n.computed||!j(n.object,`Identifier`)||n.object.name!==`Array`||!t.isGlobalReference(n.object)||!j(n.property,`Identifier`)?!1:n.property.name===`from`},sue=(e,t)=>{let n=A(e);if(!j(n,`Identifier`))return!1;let r=O(n,n.name);if(!r?.initializer)return!1;let i=Sd(r.bindingIdentifier);return!!(i&&t.symbolFor(n)?.declarationNode===i&&i.init&&i.parent&&j(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`&&wd(i.init,t))},Td=(e,t,n=new Set)=>{let r=A(e);if(!j(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),Td(i.initializer,t,n))},Ed=(e,t,n,r)=>{let i=A(e);if(j(i,`ArrayExpression`))return!0;if(j(i,`Identifier`)){let e=T(i,t);return!!(e?.kind===`const`&&e.initializer&&!Xe(i,r,n,t)&&Ed(e.initializer,t,n,r))}if(j(i,`NewExpression`))return Td(i.callee,t);if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(Td(a,t))return!0;if(!j(a,`MemberExpression`))return!1;let o=A(a.object);return!!(j(o,`Identifier`)&&o.name===`Array`&&t.isGlobalReference(o)&&!a.computed&&j(a.property,`Identifier`)&&(a.property.name===`from`||a.property.name===`of`))},Dd=(e,t,n={})=>{let r=y(e),i=r.parent;if(j(i,`NewExpression`)){let e=A(i.callee);return!!(t&&i.arguments?.[0]===r&&j(e,`Identifier`)&&e.name===`Promise`&&t.isGlobalReference(e))}return j(i,`CallExpression`)?i.callee===r||(t?E(i,Cd,t,{allowGlobalReactNamespace:!0}):gr(i,Cd))&&i.arguments?.[0]===r||t&&E(i,oue,t,{allowGlobalReactNamespace:!0})&&i.arguments?.[0]===r||t&&i.arguments?.[1]===r&&(wd(i.callee,t)||sue(i.callee,t))?!0:j(i.callee,`MemberExpression`)&&!i.callee.computed&&j(i.callee.property,`Identifier`)&&aue.has(i.callee.property.name)&&i.arguments?.[0]===r&&(!n.requireProvenSynchronousCallbackReceiver||!!(t&&Ed(i.callee.object,t,i,i.callee.property.name))):!1},Od=new WeakMap,W=(e,t)=>{let n=M(e),r=n??e,i=Od.get(t);i||(i=new WeakMap,Od.set(t,i));let a=i.get(r);if(a!==void 0)return a;for(;n;){if(Mc(n))return i.set(r,n),n;if(!Dd(n,t))return i.set(r,null),null;n=M(n)}return i.set(r,null),null},kd=e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&/^on[A-Z]/.test(e.name.name),Ad=e=>e?Ge(e)?!0:j(e,`BlockStatement`)?Ad(e.body.at(-1)):j(e,`ContinueStatement`)||j(e,`BreakStatement`):!1,cue=new Set([`createRef`,`useRef`]),jd=(e,t,n={})=>{let r=j(e,`MemberExpression`)?A(e.object):null;if(!j(e,`MemberExpression`)||C(e)!==`current`||!j(r,`Identifier`))return null;let i=T(r,t);if(!i?.initializer)return null;let a=A(i.initializer);return j(a,`CallExpression`)&&E(a,n.includeCreateRef?cue:`useRef`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:n.allowUnboundBareCalls,resolveNamedAliases:n.resolveNamedAliases})?i:null},Md=(e,t,n=new Set)=>{let r=A(e),i=jd(r,t);if(i)return i;if(!j(r,`Identifier`))return null;let a=t.symbolFor(r);if(!a||n.has(a.id))return null;let o=ac(a);return o?(n.add(a.id),Md(o,t,n)):null},Nd=(e,t)=>Md(e,t)!==null,Pd=(e,t)=>{S(e,e=>{if(D(e))return!1;t(e)})},Fd=e=>!j(e,`CallExpression`)||!j(e.callee,`MemberExpression`)||!j(e.callee.property,`Identifier`)?null:e.callee.property.name,lue=e=>{let t=Fd(e);return t!==null&&Yn.has(t)},Id=e=>{let t=Fd(e);return t!==null&&(Yn.has(t)||t===`observe`)?t:null},Ld=e=>Id(e)!==null,Rd=e=>{let t=Fd(e);return t===null||!rte.has(t)?!1:t===`listen`?(j(e,`CallExpression`)?e.arguments??[]:[]).some(e=>j(e,`ArrowFunctionExpression`)||j(e,`FunctionExpression`)):!0},uue=e=>{let t=Me(e);if(!t||typeof t.source.value!=`string`||t.importKind===`type`||j(e.declarationNode,`ImportSpecifier`)&&e.declarationNode.importKind===`type`)return null;if(j(e.declarationNode,`ImportNamespaceSpecifier`))return{source:t.source.value,importedName:null,isNamespace:!0};if(j(e.declarationNode,`ImportDefaultSpecifier`))return{source:t.source.value,importedName:`default`,isNamespace:!1};let n=rt(e.declarationNode);return n?{source:t.source.value,importedName:n,isNamespace:!1}:null},due=(e,t,n)=>{let r=t.symbolFor(e);if(!r||n.has(r.id))return null;if(r.kind===`import`)return uue(r);if(r.kind!==`const`||!r.initializer)return null;if(n.add(r.id),j(r.declarationNode,`VariableDeclarator`)&&j(r.declarationNode.id,`ObjectPattern`)){let e=zd(r.initializer,t,n);if(!e||!e.isNamespace&&e.importedName!==`default`)return null;for(let t of r.declarationNode.id.properties){if(!j(t,`Property`)||(j(t.value,`AssignmentPattern`)?t.value.left:t.value)!==r.bindingIdentifier)continue;let n=P(t,{allowComputedString:!0});return n?{source:e.source,importedName:n,isNamespace:!1}:null}return null}return zd(r.initializer,t,n)},zd=(e,t,n=new Set)=>{let r=A(e);if(j(r,`Identifier`))return due(r,t,n);if(!j(r,`MemberExpression`))return null;let i=C(r);if(!i)return null;let a=zd(r.object,t,n);return!a||!a.isNamespace&&a.importedName!==`default`?null:{source:a.source,importedName:i,isNamespace:!1}},Bd=e=>{let t=e,n=t.parent;for(;n;){if(j(n,`AssignmentExpression`))return n.left===t;if(j(n,`UpdateExpression`)||j(n,`UnaryExpression`)&&n.operator===`delete`)return n.argument===t;if(j(n,`ForInStatement`)||j(n,`ForOfStatement`))return n.left===t;t=n,n=t.parent}return!1},fue=new Set([...yn,`useInsertionEffect`]),pue=new Set([`useIsomorphicEffect`,`useIsomorphicLayoutEffect`,`useModernLayoutEffect`]),mue=new Set([`@react-native-community/netinfo`]),hue=new Set([`events`,`node:events`,`react-native`]),Vd=new WeakMap,gue=new Set([`pop`,`shift`,`splice`,`fill`,`copyWithin`]),_ue=new Set([`clear`,`delete`,`set`]),Hd=new WeakMap,Ud=new WeakMap,Wd=new WeakMap,Gd=new WeakMap,Kd={subscribe:`subscription`,timer:`timer`,socket:`connection`},qd=(e,t)=>{if(_r(e,fue,t.scopes))return!0;let n=A(e.callee);return!!(j(n,`Identifier`)&&pue.has(n.name)&&t.scopes.symbolFor(n)?.kind===`import`)},Jd=e=>j(e,`NewExpression`)&&j(e.callee,`Identifier`)&&Ke.has(e.callee.name),G=(e,t,n=new Set,r=new Map)=>{if(!e)return null;let i=A(e);if(j(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 G(a,t,n,r);let o=e.bindingIdentifier.parent,s=o?.parent,c=s?.parent,l=j(o,`Property`)?P(o):null;if(l&&j(s,`ObjectPattern`)&&j(c,`VariableDeclarator`)&&c.id===s){let i=G(c.init,t,n,r);return i?`${i}.${l}`:`symbol:${e.id}`}let u=e.initializer?A(e.initializer):null;return e.kind===`const`&&u&&(j(u,`Identifier`)||j(u,`MemberExpression`))?G(u,t,n,r)??`symbol:${e.id}`:`symbol:${e.id}`}if(j(i,`MemberExpression`)&&!i.computed){if(!j(i.property,`Identifier`))return null;let e=G(i.object,t,n,r);return e?`${e}.${i.property.name}`:null}if(j(i,`ThisExpression`))return`this`;if(j(i,`Literal`)&&(typeof i.value==`string`||typeof i.value==`number`||typeof i.value==`boolean`))return`literal:${String(i.value)}`;if(D(i)){let e=b(i);return e===null?null:`function:${e}`}return null},Yd=(e,t)=>{if(!e)return null;let n=A(e),r=[];for(;j(n,`MemberExpression`)&&!n.computed;){if(!j(n.property,`Identifier`))return null;r.unshift(n.property.name),n=A(n.object)}if(!j(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(j(a,`ArrayPattern`)){let t=a.elements.findIndex(t=>t===e);t>=0&&(n.push(t),e=a)}else if(j(a,`Property`)&&j(a.parent,`ObjectPattern`)){let t=P(a);t&&(n.push(t),e=a.parent)}let o=e.parent,s=o?.parent,c=s?.parent;if(n.length>0&&j(o,`VariableDeclarator`)&&o.id===e&&j(s,`VariableDeclaration`)&&s.declarations.length===1&&j(c,`ForOfStatement`)&&c.left===s&&c.await!==!0){let e=Df(c.right,t);if(e){let i=A(c.right),a=j(i,`Identifier`)?t.scopes.symbolFor(i):null,o=a?.initializer?A(a.initializer):null,s=j(o,`ArrayExpression`)?o.elements.map(e=>{let t=e&&k(e)?e:null;for(let e of n){let n=t?A(t):null;if(typeof e==`number`&&j(n,`ArrayExpression`)){let r=n.elements[e]??null;t=r&&k(r)?r:null}else if(typeof e==`string`&&j(n,`ObjectExpression`)){let r=n.properties.find(t=>j(t,`Property`)&&P(t)===e);t=j(r,`Property`)&&k(r.value)?r.value:null}else t=null}return t}):void 0;return s?.every(e=>{if(!e)return!0;let r=A(e),i=e=>{if(!j(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 j(r,`Literal`)||j(r,`ArrayExpression`)||j(r,`ObjectExpression`)||D(r)?!0:i(r)||n[0]===1&&j(r,`CallExpression`)&&i(A(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?A(i.initializer):null;if(i?.kind===`const`&&j(a,`CallExpression`)){let e=G(a.callee,t),n=[];for(let e of a.arguments){if(!k(e))continue;let r=Yd(e,t);if(r){n.push({collectionKey:r.collectionKey,identityKey:`projection:${r.projectionKey}`});continue}let i=G(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&&!D(o);)o=o.parent;if(!o||!D(o))return null;let s=qf(o);if(!s)return null;let c=A(s.callee);if(!j(c,`MemberExpression`))return null;let l=G(c.object,t);if(!l)return null;let u=o.params[0],d=j(i.bindingIdentifier.parent,`AssignmentPattern`)&&i.bindingIdentifier.parent.left===i.bindingIdentifier?i.bindingIdentifier.parent:null,f=j(u,`ObjectPattern`)?Zi(i.bindingIdentifier):null,p=d?G(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},Xd=(e,t)=>{let n=Yd(e,t);return n?`forEach:${n.collectionKey}:${n.projectionKey}`:null},Zd=(e,t)=>Xd(e,t)??G(e,t),Qd=(e,t)=>{if(!e)return null;let n=Zd(e,t);if(n)return n;let r=A(e);if(j(r,`CallExpression`)){let e=Zd(r.callee,t),n=r.arguments.flatMap(e=>{if(!k(e))return[];let n=Qd(e,t);return n?[n]:[]});return e&&n.length===r.arguments.length?`call:${e}:${n.join(`:`)}`:null}if(!j(r,`BinaryExpression`)&&!j(r,`LogicalExpression`))return null;let i=Qd(r.left,t),a=Qd(r.right,t);return i&&a?`${r.type}:${r.operator}:${i}:${a}`:null},vue=(e,t)=>{let n=A(e);if(j(n,`CallExpression`)&&Qd(n,t))return n;if(!j(n,`Identifier`))return Wf(n,t);let r=t.scopes.symbolFor(n),i=r?.initializer?A(r.initializer):null;return!r||!i?Wf(n,t):j(i,`ObjectExpression`)?r.kind===`const`&&r.references.every(e=>{if(e.flag!==`read`||Bd(e.identifier))return!1;let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||n.arguments[2]!==t)return!1;let r=A(n.callee);if(!j(r,`MemberExpression`))return!1;let i=P(r);return i===`addEventListener`||i===`removeEventListener`})?i:null:j(i,`Identifier`)||j(i,`MemberExpression`)?null:Wf(n,t)},$d=(e,t,n)=>{let r=Yd(e,t);if(r?.projectedValues){let e=r.projectedValues.map(e=>Lu(e?A(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?vue(e,t):null;if(e&&!i)return null;let a=Lu(i,{allowIndeterminateEntries:!0});if(a!==null)return`capture:${String(a)}`;if(!i)return null;let o=A(i);if(!j(o,`ObjectExpression`)){let e=n?Qd(o,t):null;return e?`options:${e}`:null}let s=`capture:false`;for(let e of o.properties??[]){if(!j(e,`Property`)){s=null;continue}let n=P(e);if(n===null||!e.computed&&n===`__proto__`){s=null;continue}if(n===`capture`){let n=Qd(e.value,t);s=n?`capture-value:${n}`:null}}return s},yue=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`ObjectExpression`))return Yd(n,t);let r=null;for(let e of n.properties??[]){if(!j(e,`Property`)){r=null;continue}let n=P(e);if(n===null||!e.computed&&n===`__proto__`){r=null;continue}n===`capture`&&(r=Yd(e.value,t))}return r},ef=(e,t,n,r=!1)=>{let i=$d(e,n,r);return i!==null&&i===$d(t,n,r)},tf=(e,t,n=new Set)=>{let r=Md(e,t.scopes);if(r)return r;let i=A(e);for(;j(i,`MemberExpression`);){let e=Md(i,t.scopes)??jd(i,t.scopes,{resolveNamedAliases:!0});if(e)return e;i=A(i.object)}if(j(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),tf(e.initializer,t,r)}}return null},nf=(e,t)=>tf(e,t)!==null,rf=(e,t)=>{let n=y(e),r=n.parent;if(j(r,`AssignmentExpression`)&&r.operator===`=`&&r.right===n&&nf(r.left,t)){let e=G(r.left,t);return e?{anchor:r,key:e}:null}if(!j(r,`Property`)||r.value!==n||r.kind!==`init`)return null;let i=P(r),a=r.parent;if(!i||!j(a,`ObjectExpression`))return null;let o=y(a),s=o.parent;if(!j(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!nf(s.left,t))return null;let c=G(s.left,t);return c?{anchor:s,key:`${c}.${i}`}:null},af=(e,t)=>{let n=y(e),r=rf(n,t);if(r)return r;let i=n.parent;if(!j(i,`VariableDeclarator`)||i.init!==n||!j(i.id,`Identifier`)||!j(i.parent,`VariableDeclaration`)||i.parent.kind!==`const`)return null;let a=t.scopes.symbolFor(i.id);return a?a.references.flatMap(e=>{let n=rf(e.identifier,t);return n?[n]:[]}).find(n=>xf(e,[n.anchor],t))??null:null},of=(e,t,n)=>{let r=P(e),i=A(e.object),a=j(i,`Identifier`)?n.scopes.symbolFor(i):null,o=M(t);if(!r||!a||!o||!D(o))return null;for(let e of a.references){let i=y(e.identifier),a=i.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==i||!nf(a.left,n)||M(a)!==o||!$p(t,[a],o,n))continue;let s=G(a.left,n);if(s)return{anchor:a,key:`${s}.${r}`}}return null},bue=(e,t)=>{let n=af(e,t);if(n)return n;let r=y(e),i=r.parent;return j(i,`AssignmentExpression`)&&i.right===r&&j(i.left,`MemberExpression`)?of(i.left,e,t):null},sf=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`MemberExpression`)){if(nf(i,n)){let e=G(i,n);return e?new Set([e]):null}let e=P(i);if(!e)return null;let a=sf(i.object,t,n,r);return a&&a.size>0?new Set([...a].map(t=>`${t}.${e}`)):null}if(j(i,`ConditionalExpression`)){let e=sf(i.consequent,t,n,r),a=sf(i.alternate,t,n,r);return e&&a?new Set([...e,...a]):null}if(!j(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?A(a.initializer):null;if(j(s,`CallExpression`)&&E(s,`useRef`,n.scopes,{allowGlobalReactNamespace:!0,resolveNamedAliases:!0})){let e=G(i,n);return e?new Set([e]):null}if(a.kind===`const`&&a.initializer){let e=sf(a.initializer,t,n,o);if(e)return e}let c=M(t),l=a.references.flatMap(e=>{let r=y(e.identifier),i=r.parent;if(!c||!j(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r||M(i)!==c||!nf(i.left,n)||!$p(t,[i],c,n))return[];let a=G(i.left,n);return a?[a]:[]});if(l.length>0)return new Set(l);if(a.kind!==`parameter`)return null;let u=M(a.bindingIdentifier);if(!u||!D(u))return null;let d=u.params.findIndex(e=>A(e)===a.bindingIdentifier),f=Rc(u),p=f?n.scopes.symbolFor(f):null;if(d<0||!p)return null;let m=[];for(let e of p.references){let t=y(e.identifier),r=t.parent;if(j(r,`CallExpression`)&&r.callee===t){let e=r.arguments[d];if(!e||!k(e))return null;let t=sf(e,r,n,o);if(!t||t.size===0)return null;m.push(t);continue}let i=t.parent,a=i?.parent;if(!(j(i,`ArrayExpression`)&&j(a,`CallExpression`)&&a.arguments?.[1]===i))return null}return m.length>0?new Set(m.flatMap(e=>[...e])):null},xue=(e,t)=>{let n=bue(e,t);if(n)return new Set([n.key]);let r=y(e),i=r.parent;return!j(i,`AssignmentExpression`)||i.operator!==`=`||i.right!==r?new Set:sf(i.left,i,t)??new Set},cf=(e,t,n=!1)=>{let r=y(e),i=r.parent;if(j(i,`VariableDeclarator`)&&i.init===r){let r=G(i.id,t);return n?af(e,t)?.key??r:r}if(j(i,`AssignmentExpression`)&&i.right===r){if(n&&j(i.left,`MemberExpression`)){let n=of(i.left,e,t);if(n)return n.key}return G(i.left,t)}return n?rf(r,t)?.key??null:null},lf=(e,t,n)=>e!==null&&(e===t.handleKey||e===cf(t.node,n)),uf=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`))return uf(n.object,t);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?Me(r):null;return typeof i?.source.value==`string`?i.source.value:null},Sue=(e,t)=>{if(e.kind!==`subscribe`||!j(e.node,`CallExpression`))return!1;if(Rd(e.node))return!0;if(e.registrationVerbName!==`addEventListener`&&e.registrationVerbName!==`addListener`||_f(e.node,`addListener`,t))return!1;let n=A(e.node.callee);if(!j(n,`MemberExpression`))return!1;let r=uf(n.object,t);if(r!==null)return e.registrationVerbName===`addEventListener`?mue.has(r):r!==`react-native`;let i=A(n.object),a=Wf(i,t),o=a&&j(a,`NewExpression`)?uf(a.callee,t):null;if(e.registrationVerbName===`addListener`&&o!==null&&hue.has(o))return!1;let s=j(i,`Identifier`)?t.scopes.symbolFor(i):null,c=j(i,`Identifier`)&&(i.name===`window`||i.name===`document`)&&t.scopes.isGlobalReference(i);return!j(i,`Identifier`)||c||s!==null&&(sc(s)!==null||ac(s)!==null)?gc(i,t.scopes).length===0:!1},Cue=(e,t)=>{let n=A(e),r=zd(n,t.scopes);return j(n,`Identifier`)&&n.name===`NetInfo`&&t.scopes.symbolFor(n)!==null||r?.source===`@react-native-community/netinfo`},df=(e,t,n=new Set)=>{let r=A(e);if(j(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?A(e.initializer):null,a=j(i,`CallExpression`)?zd(i.callee,t.scopes):null;return a?.importedName===`useNavigation`&&a.source.startsWith(`@react-navigation/`)?!0:!!(i&&df(i,t,n))}if(!j(r,`CallExpression`))return!1;let i=A(r.callee);return!!(j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`getParent`&&df(i.object,t,n))},ff=(e,t)=>{if(Sue(e,t))return!0;if(!j(e.node,`CallExpression`))return!1;let n=A(e.node.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?!1:n.property.name===`addEventListener`?e.node.arguments.length===1&&Cue(n.object,t):n.property.name===`addListener`&&e.node.arguments.length>=2&&df(n.object,t)},pf=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`)||t.handleKey===null)return!1;let i=n.scopes.symbolFor(r);return!!(i&&G(r,n)===t.handleKey&&!i.references.some(e=>Bd(e.identifier)))},wue=(e,t,n)=>pf(e,t,n)&&ff(t,n),mf=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||!Ip.has(t)||n.receiverKey===null||e!==n.receiverKey||!j(n.node,`CallExpression`))return!1;let i=A(n.node.callee);if(!j(i,`MemberExpression`))return!1;let a=Wf(i.object,r);return a!==null&&Jd(a)},hf=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(j(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id)||!e.references.every(e=>e.flag===`read`&&!Bd(e.identifier)))return null;let i=ac(e);if(!i)return`symbol:${e.id}`;let a=A(i);if(!j(a,`Identifier`))return`symbol:${e.id}`;let o=new Set(n);return o.add(e.id),hf(a,t,o)??`symbol:${e.id}`}if(D(r)){let e=b(r);return e===null?null:`function:${e}`}return null},Tue=(e,t,n)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`))return null;let i=n.scopes.symbolFor(r);if(!i||i.kind!==`let`||i.initializer!==null||!j(i.declarationNode,`VariableDeclarator`))return null;let a=i.references.filter(e=>e.flag!==`read`||Bd(e.identifier));if(a.length!==1)return null;let o=y(a[0].identifier),s=o.parent,c=M(t);return!j(s,`AssignmentExpression`)||s.operator!==`=`||s.left!==o||!c||!$p(t,[s],c,n)?null:`symbol:${i.id}`},gf=(e,t,n=new Set)=>{let r=A(e);if(gc(r,t.scopes).includes(`MediaQueryList`))return!0;if(j(r,`Identifier`)){let e=t.scopes.symbolFor(r);if(!e||n.has(e.id))return!1;let i=ac(e);if(!i)return!1;let a=new Set(n);return a.add(e.id),gf(i,t,a)}if(!j(r,`CallExpression`)||!E(r,`useMemo`,t.scopes,{resolveNamedAliases:!0}))return!1;let i=pr(r,t.scopes);return!!(i&&ln(i,t.scopes,e=>{let r=A(e);return j(r,`Literal`)&&r.value===null||j(r,`Identifier`)&&r.name===`undefined`&&t.scopes.isGlobalReference(r)||gf(r,t,new Set(n))},t.cfg,`every`))},_f=(e,t,n)=>{let r=A(e.callee);return e.arguments?.length===1&&j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===t&&gf(r.object,n)},vf=(e,t)=>{let n=A(e.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?{receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null}:_f(e,`addListener`,t)?{receiverKey:hf(n.object,t)??Tue(n.object,e,t),registrationVerbName:n.property.name,eventKey:null,handlerKey:hf(e.arguments?.[0],t)}:{receiverKey:Zd(n.object,t),registrationVerbName:n.property.name,eventKey:Zd(e.arguments?.[0],t),handlerKey:Zd(e.arguments?.[1],t)}},yf=e=>{if(e.kind!==`subscribe`||!j(e.node,`CallExpression`))return null;let t=e.node.arguments?.length===1?e.node.arguments[0]:e.node.arguments?.[1];return t&&k(t)?t:null},bf=(e,t)=>{let n=e;for(;j(n,`CallExpression`);){let e=j(n.callee,`ChainExpression`)?n.callee.expression:n.callee;if(!j(e,`MemberExpression`)||e.computed||!j(e.property,`Identifier`))return null;if(e.property.name===`channel`)return Zd(e.object,t);n=A(e.object)}return null},Eue=(e,t)=>{let n=e,r=y(n);for(;j(r.parent,`MemberExpression`)&&r.parent.object===r;){let e=y(r.parent),t=e.parent;if(!j(t,`CallExpression`)||t.callee!==e)break;n=t,r=y(n)}return n===e||Id(n)!==`subscribe`||bf(n,t)===null?null:cf(n,t,!0)},Due=(e,t)=>{let n=yd(e,t.scopes),r=[...n];for(;r.length>0;){let e=r.pop();!e||!D(e)||S(e.body,i=>{if(i!==e.body&&D(i))return!1;if(!j(i,`CallExpression`))return;let a=null;if(j(i.callee,`Identifier`)&&Ae.has(i.callee.name)){let e=i.arguments?.[0];a=e&&k(e)?e:null}else{let e=i.arguments?.find(e=>k(e)&&_d(e)===i);e&&k(e)&&(a=e);let n=Id(i);n!==null&&(a=yf({kind:`subscribe`,node:i,resourceName:n,handleKey:null,...vf(i,t)}))}let o=a?x(a,t.scopes):null;!o||n.has(o)||(n.add(o),r.push(o))})}return n},Oue=(e,t)=>{let n=[];if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`))return n;let r=null;if(j(e.body,`BlockStatement`)){let t=e.body.body??[],n=t[t.length-1];j(n,`ReturnStatement`)&&n.argument&&(r=n.argument)}let i=Due(e,t);return S(e,a=>{if(a!==e&&D(a)&&(a===r||!i.has(a)&&!hd(a)))return!1;if(Jd(a)){n.push({kind:`socket`,node:a,resourceName:j(a.callee,`Identifier`)?a.callee.name:`WebSocket`,handleKey:cf(a,t,!0),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null});return}if(!j(a,`CallExpression`))return;if(j(a.callee,`Identifier`)&&Ae.has(a.callee.name)){if(a.callee.name===`setTimeout`&&(Qde(a)||nfe(a,t)))return;n.push({kind:`timer`,node:a,resourceName:a.callee.name,handleKey:cf(a,t,!0),receiverKey:null,registrationVerbName:a.callee.name,eventKey:null,handlerKey:null});return}let o=Id(a);if(o!==null){let e=vf(a,t);n.push({kind:`subscribe`,node:a,resourceName:o,handleKey:(o===`on`?Eue(a,t):null)??cf(a,t,!0),...e})}}),n.filter(e=>H(e.node,t))},xf=(e,t,n)=>{let r=e,i=M(r);for(;i&&hd(i)&&!(t.length>0&&t.every(e=>n.cfg.enclosingFunction(e)===i));){let e=i.parent;if(!j(e,`CallExpression`))break;r=e,i=M(r)}return fo(r,t,n,e)},kue=(e,t,n)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.body,`BlockStatement`))return t;let r=[];return Pd(e.body,e=>{j(j(e,`ChainExpression`)?e.expression:e,`CallExpression`)&&r.push(e)}),r.length===0?t:t.filter(e=>{let t=b(e.node);if(t===null)return!0;let i=r.filter(r=>{let i=b(r);return i!==null&&i>t&&qp(r,e,n)});return!xf(e.node,i,n)})},Sf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n),i=r?.bindingIdentifier.parent,a=i?.parent,o=a?.parent,s=j(a,`VariableDeclaration`)&&r?.references.every(e=>e.flag===`read`&&!Bd(e.identifier));return r&&j(i,`VariableDeclarator`)&&i.id===r.bindingIdentifier&&s&&a.declarations.length===1&&j(o,`ForOfStatement`)&&o.left===a&&o.await!==!0?o:null},Cf=(e,t)=>{if(!e)return!1;let n=A(e),r=new Set;if(S(n,e=>{if(!j(e,`Identifier`))return;let n=t.scopes.symbolFor(e);n&&r.add(n.id)}),r.size===0)return!1;let i=(e,n)=>{let i=!1;return S(e,e=>{if(!j(e,`Identifier`)||n&&!Bd(e))return;let a=t.scopes.symbolFor(e);if(a&&r.has(a.id))return i=!0,!1}),i},a=n.parent;for(;a&&!D(a);){if(j(a,`ForOfStatement`)){let e=A(a.left);if(!j(e,`VariableDeclaration`)&&(i(e,!1)||i(a.body,!0)))return!0}a=a.parent}return!1},wf=(e,t)=>{if(!j(e,`Identifier`))return!1;let n=t.scopes.symbolFor(e);return!n||n.kind!==`const`||!j(n.declarationNode,`VariableDeclarator`)||n.declarationNode.id!==n.bindingIdentifier?!1:!j(n.declarationNode.parent?.parent,`ExportNamedDeclaration`)&&!j(n.declarationNode.parent?.parent,`ExportDefaultDeclaration`)},Tf=(e,t,n)=>{if(!j(e,`Identifier`)||!wf(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=y(e.identifier),i=r.parent;if(j(i,`ForOfStatement`)&&i.right===r||j(i,`MemberExpression`)&&i.object===r&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`push`&&j(i.parent,`CallExpression`)&&i.parent.callee===i)return!0;if(j(i,`VariableDeclarator`)&&i.init===r){let e=i.parent;return j(i.id,`Identifier`)&&j(e,`VariableDeclaration`)&&e.kind===`const`?Tf(i.id,t,n):!1}return!1})):!1},Ef=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`)||!wf(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?A(i.initializer):null,o=e=>{if(!e)return!1;let t=A(e);if(j(t,`ConditionalExpression`))return o(t.consequent)&&o(t.alternate);if(j(t,`ArrayExpression`))return!0;if(!j(t,`CallExpression`))return!1;let n=A(t.callee);return!!(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)&&n.property.name===`filter`&&o(n.object))};return o(a)?Tf(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:j(a,`Identifier`)?Ef(a,t,n):null},Df=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=Vd.get(t);if(i||(i=new Map,Vd.set(t,i)),i.has(r.id))return i.get(r.id)??null;let a=Ef(e,t);return i.set(r.id,a),a},Of=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`)||!wf(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?A(i.initializer):null,o=e=>{if(!e)return!1;let t=A(e);return j(t,`ConditionalExpression`)?o(t.consequent)&&o(t.alternate):j(t,`ArrayExpression`)&&t.elements.every(e=>e===null||j(e,`Literal`)&&(e.value===null||typeof e.value==`boolean`||typeof e.value==`number`||typeof e.value==`string`))};return o(a)?Tf(i.bindingIdentifier,t,new Set)?`symbol:${i.id}`:null:j(a,`Identifier`)?Of(a,t,n):null},kf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=Sf(n,t);if(r)return Of(r.right,t);let i=t.scopes.symbolFor(n);if(!i||i.kind!==`parameter`)return null;let a=i.bindingIdentifier.parent;for(;a&&!D(a);)a=a.parent;if(!a||!D(a))return null;let o=a.parent;if(!j(o,`CallExpression`))return null;let s=A(o.callee);if(j(s,`MemberExpression`)&&!s.computed&&j(s.property,`Identifier`)){if(j(s.object,`Identifier`)&&s.object.name===`Array`&&s.property.name===`from`&&o.arguments?.[1]===a)return G(o.arguments[0],t);if(o.arguments?.[0]===a)return G(s.object,t)}return null},Aue=(e,t)=>{let n=Sf(e,t);return n?G(n.right,t):kf(e,t)},Af=(e,t,n)=>{if(t===null)return;let r=e.get(t);(r===void 0||r<n)&&e.set(t,n)},jf=(e,t,n=1/0,r=new Set)=>{let i=new Map;if(!e)return i;let a=A(e);if(Af(i,G(a,t),n),!j(a,`Identifier`))return i;let o=t.scopes.symbolFor(a);if(!o||r.has(o.id)||!wf(a,t))return i;let s=new Set(r);s.add(o.id);let c=o.initializer?A(o.initializer):null,l=null,u=n;if(j(c,`Identifier`))l=c;else if(j(c,`ArrayExpression`)){let e=c.elements??[],t=e[0];e.length===1&&t&&j(t,`SpreadElement`)&&(l=t.argument,u=Math.min(n,b(c)??1/0))}else if(j(c,`CallExpression`)){let e=A(c.callee);if(j(e,`MemberExpression`)&&!e.computed&&j(e.property,`Identifier`)){let r=e.property.name,i=j(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=k(e)?e:null}else a&&(l=e.object);l&&(u=Math.min(n,b(c)??1/0))}}if(!l)return i;for(let[e,n]of jf(l,t,u,s))Af(i,e,n);return i},Mf=(e,t)=>{let n=Sf(e,t);if(n)return jf(n.right,t);let r=e?A(e):null;if(!j(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&&!D(a);)a=a.parent;let o=a?.parent,s=j(o,`CallExpression`)?A(o.callee):null;return j(s,`MemberExpression`)?jf(s.object,t):new Map},Nf=(e,t,n)=>{let r=Hf(t.node,n);return r!==null&&Mf(e,n).has(r)},Pf=(e,t)=>{if(!e)return null;let n=A(e);if(!j(n,`Identifier`))return null;let r=Sf(n,t)?.right;return r?Df(r,t):null},Ff=(e,t)=>{if(!e)return!1;let n=A(e);return j(n,`Identifier`)&&(n.name===`document`||n.name===`window`)&&t.scopes.isGlobalReference(n)},If=(e,t)=>{if(!e)return null;let n=A(e);if(!j(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`&&!Bd(e.identifier))?null:r.id},Lf=(e,t)=>{if(!j(e,`BreakStatement`)&&!j(e,`ContinueStatement`))return!1;if(e.label){let n=e.parent;for(;n;){if(j(n,`LabeledStatement`)&&n.label.name===e.label.name)return z(t,n.body);n=n.parent}return!1}let n=e.parent;for(;n;){if(j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return n===t;if(j(e,`BreakStatement`)&&j(n,`SwitchStatement`))return!1;n=n.parent}return!1},Rf=(e,t,n)=>{if(!(j(t.body,`BlockStatement`)?e.parent===t.body:e===t.body))return!1;let r=M(e),i=!1,a=!1;return S(t.body,o=>{if(i||a||o!==t.body&&D(o))return!1;if(j(o,`ReturnStatement`)||j(o,`ThrowStatement`)&&(!r||!rd(o,e,r,n))||j(o,`BreakStatement`)&&Lf(o,t))return i=!0,!1;if(j(o,`ContinueStatement`)&&Lf(o,t)&&(b(o)??-1)<(b(e)??0))return a=!0,!1}),!i&&!a},zf=(e,t,n)=>{let r=y(e).parent;return!!(j(r,`ExpressionStatement`)&&Rf(r,t,n))},Bf=(e,t,n)=>{let r=y(e),i=j(r.parent,`ExpressionStatement`)?r.parent:null;if(!i)return null;let a=new Set,o=i.parent;for(;o&&!D(o);){if(j(o,`ForOfStatement`)){if(!Rf(i,o,n))return null;let e=G(o.right,n);e&&a.add(e),i=o}o=o.parent}return[...t].every(e=>a.has(e))?i:null},jue=(e,t,n)=>Bf(e,t,n)!==null,Mue=e=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async||e.generator)return null;let t=e.parent;if(!j(t,`CallExpression`))return null;let n=A(t.callee);return!j(n,`MemberExpression`)||n.computed||!j(n.property,`Identifier`)?null:j(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},Nue=(e,t)=>{let n=M(e);if(!n||!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return null;let r=Mue(n);if(!r)return null;if(j(n.body,`BlockStatement`)){let r=y(e),i=r.parent,a=i?.parent;if(!j(i,`VariableDeclarator`)||i.init!==r||!j(i.id,`Identifier`)||!j(a,`VariableDeclaration`)||a.kind!==`const`||a.parent!==n.body)return null;let o=[];S(n.body,e=>{if(e!==n.body&&D(e))return!1;j(e,`ReturnStatement`)&&o.push(e)});let s=o[0],c=n.body.body??[],l=j(s,`ReturnStatement`)&&s.argument?A(s.argument):null,u=t.scopes.symbolFor(i.id);if(o.length!==1||c[c.length-1]!==s||!j(l,`Identifier`)||!u||t.scopes.symbolFor(l)?.id!==u.id||!xf(e,[s],t))return null}else if(y(e)!==n.body)return null;let i=y(r),a=i.parent;return j(a,`VariableDeclarator`)&&a.init===i?G(a.id,t):null},Vf=(e,t)=>{let n=y(e),r=n.parent,i=j(r,`CallExpression`)?A(r.callee):null;if(!j(r,`CallExpression`)||!r.arguments.some(e=>e===n)||!j(i,`MemberExpression`)||i.computed||!j(i.object,`Identifier`)||!j(i.property,`Identifier`)||i.property.name!==`push`||!wf(i.object,t))return null;let a=t.scopes.symbolFor(i.object),o=a?.initializer?A(a.initializer):null;return a&&j(o,`ArrayExpression`)&&(o.elements?.length??0)===0?a:null},Hf=(e,t)=>{let n=Vf(e,t);if(n)return`symbol:${n.id}`;let r=Nue(e,t);if(r!==null)return r;let i=e,a=i.parent;for(;a;){if(D(a))return null;if(j(a,`VariableDeclarator`)&&a.init===i)return G(a.id,t);i=a,a=i.parent}return null},Uf=(e,t)=>{if(!j(e.node,`CallExpression`))return null;let n=A(e.node.callee);if(!j(n,`MemberExpression`)||n.computed)return null;let r=A(n.object);if(!wf(r,t))return null;let i=t.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||!n.arguments?.some(e=>e===t))return[];let r=A(n.callee);return j(r,`MemberExpression`)&&!r.computed&&j(r.object,`Identifier`)&&j(r.property,`Identifier`)&&r.property.name===`push`?[n]:[]});if(a.length!==1)return null;let o=a[0];if(M(o)!==M(e.node)||!xf(e.node,[o],t))return null;let s=A(o.callee);if(!j(s,`MemberExpression`)||!j(s.object,`Identifier`)||!wf(s.object,t))return null;let c=t.scopes.symbolFor(s.object),l=c?.initializer?A(c.initializer):null;return!c||!j(l,`ArrayExpression`)||(l.elements?.length??0)!==0||M(c.declarationNode)!==M(e.node)?null:c.references.every(e=>{let t=y(e.identifier),n=t.parent;if(j(n,`ForOfStatement`)&&n.right===t&&n.await!==!0)return!0;let r=t.parent,i=r?.parent;return!j(r,`MemberExpression`)||r.object!==t||r.computed||!j(r.property,`Identifier`)||!j(i,`CallExpression`)||i.callee!==r?!1:r.property.name===`forEach`||r.property.name===`push`})?G(s.object,t):null},Wf=(e,t,n=new Set)=>{if(!e)return null;let r=A(e);if(!j(r,`Identifier`))return r;let i=t.scopes.symbolFor(r),a=(i?.kind===`let`||i?.kind===`var`)&&j(i.declarationNode,`VariableDeclarator`)&&i.declarationNode.id===i.bindingIdentifier&&i.references.every(e=>e.flag===`read`&&!Bd(e.identifier))&&i.scope.symbols.filter(e=>e.name===i.name).length===1,o=i?.kind===`function`&&D(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`&&!Bd(e.identifier))&&(!o||o.references.every(e=>e.flag===`read`&&!Bd(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),Wf(i.initializer,t,n))},Pue=(e,t)=>{let n=Wf(e,t);return j(n,`ObjectExpression`)?n:null},Gf=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node.arguments?.[2],r=Pue(n,t);if(!r)return null;for(let e of r.properties??[]){if(!j(e,`Property`)||P(e)!==`signal`)continue;let n=G(e.value,t);return n?.endsWith(`.signal`)?n.slice(0,-7):null}return null},Kf=(e,t)=>{let n=A(e);if(j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)&&n.property.name===`signal`)return G(n.object,t);if(!j(n,`Identifier`))return null;let r=t.scopes.symbolFor(n);if(!r)return null;let i=r.initializer?A(r.initializer):null;if(j(i,`MemberExpression`)&&!i.computed&&j(i.property,`Identifier`)&&i.property.name===`signal`)return G(i.object,t);let a=r.bindingIdentifier.parent;return!j(a,`Property`)||P(a)!==`signal`||!j(a.parent,`ObjectPattern`)||!j(a.parent.parent,`VariableDeclarator`)||!a.parent.parent.init?null:G(a.parent.parent.init,t)},Fue=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node,r=M(e.node);if(!r||!D(r))return null;let i=null;return S(r.body,a=>{if(i||a!==r.body&&D(a))return!1;if(!j(a,`CallExpression`)||fr(a)!==`addEventListener`)return;let o=A(a.callee);if(!j(o,`MemberExpression`))return;let s=a.arguments[0]?A(a.arguments[0]):null;if(!j(s,`Literal`)||s.value!==`abort`)return;let c=Kf(o.object,t);if(!c)return;let l=Wf(a.arguments[1],t);if(!l||!D(l)||l.async||l.generator)return;let u=[];if(S(l.body,r=>{if(r!==l.body&&D(r))return!1;if(!j(r,`CallExpression`))return;let i=A(r.callee);!j(i,`MemberExpression`)||fr(r)!==`removeEventListener`||Zd(i.object,t)!==e.receiverKey||Zd(r.arguments[0],t)!==e.eventKey||Zd(r.arguments[1],t)!==e.handlerKey||!ef(n.arguments[2],r.arguments[2],t,!0)||u.push(r)}),po(l,u,t))return i=c,!1}),i},Iue=(e,t)=>{if(e.registrationVerbName!==`addEventListener`||!j(e.node,`CallExpression`))return null;let n=e.node.arguments[0]?A(e.node.arguments[0]):null,r=A(e.node.callee);return j(n,`Literal`)&&n.value===`abort`&&j(r,`MemberExpression`)?Kf(r.object,t):null},qf=e=>{let t=D(e)?e:M(e);if(!t||!D(t)||t.async||t.generator)return null;let n=t.parent;if(!j(n,`CallExpression`)||n.arguments?.[0]!==t)return null;let r=A(n.callee);return j(r,`MemberExpression`)&&!r.computed&&j(r.property,`Identifier`)&&r.property.name===`forEach`?n:null},Jf=e=>{let t=y(e),n=t.parent;return j(n,`CallExpression`)&&n.callee===t?n:null},Yf=(e,t,n)=>{let r=Rc(e);if(!r||Wf(r,n)!==e)return null;let i=n.scopes.symbolFor(r);if(!i)return null;let a=i.references.flatMap(e=>{let t=Jf(e.identifier);return t?[t]:[]});if(a.length!==1||i.references.length!==1)return null;let o=a[0];return M(o)===t&&H(o,n)?o:null},Xf=(e,t)=>{if(!j(e,`NewExpression`))return!1;let n=A(e.callee);return j(n,`Identifier`)&&fn.has(n.name)&&t.scopes.isGlobalReference(n)},Lue=(e,t)=>{if(!e)return!0;let n=A(e);return j(n,`Literal`)&&n.value===null||j(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)},Rue=(e,t,n,r)=>{if(!D(e)||e.async||e.generator||n.receiverKey===null||!j(n.node,`CallExpression`))return null;let i=A(n.node.callee),a=j(i,`MemberExpression`)?A(i.object):null;if(!a||!j(a,`Identifier`))return null;let o=r.scopes.symbolFor(a),s=o?.declarationNode;if(!o||o.kind!==`let`&&o.kind!==`var`||!j(s,`VariableDeclarator`)||s.id!==o.bindingIdentifier||M(s)!==t||!Lue(s.init,r))return null;let c=[];for(let e of o.references){let t=y(e.identifier),n=t.parent;if(j(n,`AssignmentExpression`)&&n.operator===`=`&&n.left===t){c.push(n);continue}let r=n,i=r?.parent;if(!j(r,`MemberExpression`)||r.object!==t||!j(i,`CallExpression`)||i.callee!==r||![`disconnect`,`observe`,`unobserve`].includes(P(r)??``))return null}if(c.length!==1)return null;let l=c[0];if(!l||!Xf(A(l.right),r)||M(l)!==e||!rd(l,n.node,e,r))return null;let u=[],d=b(l);if(d===null||(S(e.body,t=>{if(t!==e.body&&D(t))return!1;if(!j(t,`CallExpression`))return;let i=b(t);i===null||i>=d||!qp(t,n,r)||u.push(ap(t,e,n.receiverKey??``,r)??t)}),!po(e,u,r)))return null;let f=Rc(e),p=f?r.scopes.symbolFor(f):null;if(!p)return null;let m=[];for(let n of p.references){let i=Jf(n.identifier);if(i&&M(i)===t){m.push(i);continue}let a=y(n.identifier),o=a.parent;if(!o||!Xf(o,r)||M(o)!==e||!o.arguments.some(e=>e===a))return null}let h=m.length===1?m[0]:null;return h&&H(h,r)?h:null},Zf=(e,t,n,r)=>{let i=M(e);return!i||i===t?e:Yf(i,t,n)??(r?Rue(i,t,r,n):null)??e},zue=(e,t,n)=>{if(!D(e))return[];let r=Rc(e),i=G(r,n);if(!i)return[];let a=[];return S(t,e=>{if(e!==t&&D(e))return!1;let o=j(e,`CallExpression`)?e.arguments[1]:null;j(e,`CallExpression`)&&fr(e)===`addEventListener`&&(G(o,n)===i||j(o,`Identifier`)&&o.name===r?.name)&&a.push(e)}),a},Bue=(e,t,n)=>{let r=A(e);if(!j(r,`Identifier`))return null;let i=n.scopes.symbolFor(r),a=i?.initializer?A(i.initializer):null;if(!i||i.kind!==`let`&&i.kind!==`var`||!j(i.declarationNode,`VariableDeclarator`)||i.declarationNode.id!==i.bindingIdentifier||!j(a,`Literal`)||a.value!==null||i.scope.symbols.filter(e=>e.name===i.name).length!==1)return null;let o=i.references.filter(e=>Bd(e.identifier));if(o.length!==1)return null;let s=o[0],c=y(s.identifier),l=c.parent;if(!j(l,`AssignmentExpression`)||l.operator!==`=`||l.left!==c||M(l)!==M(t.node)||!xf(t.node,[l],n))return null;let u=A(l.right);return D(u)?u:null},Qf=(e,t,n,r)=>{if(!D(e)||!j(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=j(a,`AssignmentPattern`)?A(a.left):a;if(!j(s,`Identifier`))continue;let c=n.scopes.symbolFor(s),l=c?.references.some(e=>{let t=y(e.identifier),n=t.parent;return j(n,`AssignmentExpression`)&&n.left===t||j(n,`UpdateExpression`)&&n.argument===t||j(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===t});if(!c||l)return null;if(!o){j(a,`AssignmentPattern`)?i.set(c.id,a.right):s.optional&&i.set(c.id,s);continue}j(o,`SpreadElement`)||i.set(c.id,o)}return i},Vue=(e,t,n)=>{if(t.kind!==`timer`)return!1;let r=j(e,`ChainExpression`)?e.expression:e,i=j(r,`CallExpression`)?A(r.callee):null,a=j(r,`CallExpression`)?r.arguments[0]:null,o=Hf(t.node,n);if(!j(r,`CallExpression`)||!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`forEach`||!j(a,`Identifier`)||!ze.has(a.name)||!n.scopes.isGlobalReference(a)||o===null||o!==G(i.object,n))return!1;let s=jf(i.object,n);return s.has(o)&&!Gp(t.node,r,s,n)},$f=(e,t,n,r=new Set,i=new Map,a=!1)=>{if(!D(e)||r.has(e))return!1;r.add(e);let o=!1,s=[];S(e.body,c=>{if(o||c!==e.body&&D(c)&&!hd(c))return!1;let l=j(c,`ChainExpression`)?c.expression:c;if(Vue(c,t,n)){if(a){s.push(c);return}return o=!0,!1}if(qp(c,t,n,i)){let r=qf(c),u=j(l,`CallExpression`)?A(l.callee):null,d=j(u,`MemberExpression`)?u.object:u,f=Sf(d,n),p=Aue(d,n),m=Mf(d,n),h=Uf(t,n)??Hf(t.node,n);if(p!==null&&M(c)!==e){let e=M(c);r&&e&&D(e)&&h!==null&&m.has(h)&&po(e,[c],n)&&!Gp(t.node,c,m,n)&&s.push(r);return}let g=Sf(j(l,`CallExpression`)?l.arguments?.[0]:null,n)??f;if(!g){if(a){let r=op(c,e,t,n,i);s.push(r??c);return}return o=!0,!1}let _=Bf(c,t.kind===`subscribe`&&t.registrationVerbName===`addEventListener`&&j(t.node,`CallExpression`)?new Set([A(t.node.callee),t.node.arguments?.[0],t.node.arguments?.[1],t.node.arguments?.[2]].flatMap(e=>{let t=j(e,`MemberExpression`)?Yd(e.object,n):k(e)?Yd(e,n):null;return t?[t.collectionKey]:[]})):new Set,n);!e.async&&!e.generator&&(zf(c,g,n)||_!==null)&&(h===null||m.size===0||m.has(h)&&!Gp(t.node,c,m,n))&&s.push(_??g);return}if(!j(l,`CallExpression`))return;let u=Wf(l.callee,n),d=j(u,`Identifier`)?Bue(u,t,n):u?Qp(u,n):null,f=d&&D(d)?Qf(d,l,n,i):null;if(d&&D(d)&&f&&!d.async&&!d.generator&&$f(d,t,n,new Set(r),f,a)){let r=op(c,e,t,n,i)??Uue(c,e,t,n);s.push(r??l)}});let c=y(e.body);return a&&s.some(e=>y(e)===c)?!0:o||po(e,s,n)},ep=(e,t,n)=>e.length>0&&e.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);return!!(r&&D(r)&&$f(r,t,n,new Set,new Map,!0))}),tp=(e,t,n)=>{let r=A(e);if(!j(r,`CallExpression`))return!1;let i=A(r.callee);if(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`bind`)return!1;let a=A(i.object);if(!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`))return!1;let o=G(a.object,n);if(o===null||o!==G(r.arguments?.[0],n))return!1;let s=a.property.name;return mf(o,s,t,n)?!0:t.kind===`socket`?lf(o,t,n)&&(Ip.has(s)||Fp.has(s)):t.kind===`subscribe`&&lf(o,t,n)&&(s===`unsubscribe`||s===`unsub`||s===`close`||s===`unwatch`||s===`unlisten`||At.has(s))},np=(e,t,n,r=!1)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async)return!1;let i=e=>{if(tp(e,t,n))return!0;let r=Wf(e,n),i=Qp(e,n);return r&&tp(r,t,n)?!0:!!(i&&D(i)&&$f(i,t,n))};if(!j(e.body,`BlockStatement`))return i(A(e.body));let a=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&i(A(e.argument))&&a.push(e)}),r?xf(Zf(t.node,e,n,t),a,n):po(e,a,n)},rp=(e,t,n,r=new Map)=>{let i=G(e,n,new Set,r);if(i!==null&&(i===t||t.startsWith(`${i}.`)))return!0;let a=A(e);if(!j(a,`BinaryExpression`)||a.operator!==`!=`&&a.operator!==`!==`)return!1;let o=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)};return G(a.left,n,new Set,r)===t&&o(a.right)||G(a.right,n,new Set,r)===t&&o(a.left)},ip=(e,t,n,r)=>{let i=A(e),a=e=>{let t=A(e);if(j(t,`Identifier`)){let e=n.scopes.symbolFor(t),i=e?r.get(e.id):null;return!!(e&&j(i,`Identifier`)&&i.optional&&n.scopes.symbolFor(i)?.id===e.id)}if(j(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(j(i,`Identifier`)){let e=n.scopes.symbolFor(i),t=e?r.get(e.id):null;if(t&&Cn(A(t))===!1)return!0}if(j(i,`UnaryExpression`)&&i.operator===`!`){let e=A(i.argument);if(j(e,`Identifier`)){let t=n.scopes.symbolFor(e),i=t?r.get(t.id):null;if(i&&Cn(A(i))===!0)return!0}let a=G(i.argument,n,new Set,r);return a!==null&&(a===t||t.startsWith(`${a}.`))?!0:rp(i.argument,t,n,r)}if(j(i,`LogicalExpression`)){let e=ip(i.left,t,n,r),a=ip(i.right,t,n,r);return i.operator===`||`?e||a:i.operator===`&&`&&e&&a}if(j(i,`BinaryExpression`)&&[`==`,`===`,`!=`,`!==`].includes(i.operator)){let e=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=e(i.left)?i.right:e(i.right)?i.left:null,o=a?G(a,n,new Set,r):null;return!!((i.operator===`==`||i.operator===`===`)&&o!==null&&(o===t||t.startsWith(`${o}.`)))}return!1},ap=(e,t,n,r,i=new Map)=>{let a=e.parent,o=null;for(;a&&a!==t;){if(j(a,`IfStatement`)){if(!rp(a.test,n,r,i)||!xf(a.consequent,[e],r))return null;o=a;break}a=a.parent}if(D(t)&&j(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(j(a,`IfStatement`)&&a.alternate===null&&Ad(a.consequent)&&ip(a.test,n,r,i))return a}}return o},op=(e,t,n,r,i=new Map)=>n.handleKey===null?null:ap(e,t,n.handleKey,r,i),Hue=(e,t,n,r)=>{if(!D(t)||n.handleKey===null)return null;let i=e=>{let t=A(e);return j(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e.parent??null,o=null;for(;a&&a!==t&&!(j(a,`IfStatement`)&&z(e,a.consequent)&&(o=i(a.test).map(e=>G(e,r)).find(e=>e!==null&&e!==n.handleKey)??null,o));)a=a.parent??null;if(!a||!j(a,`IfStatement`)||!o)return null;let s=W(n.node,r.scopes);if(!s){let e=M(n.node);for(;e&&!Mc(e);)e=M(e);s=e}if(!s||!D(s))return null;let c=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t)},l=[],u=[];if(S(s.body,e=>{if(!j(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=G(e.left,r);t===o&&l.push(e),t===n.handleKey&&j(A(e.right),`CallExpression`)&&fr(A(e.right))===`setTimeout`&&u.push(e)}),l.length===0||u.length===0)return null;let d=tf(l[0].left,r),f=d?.initializer?A(d.initializer):null,p=j(f,`CallExpression`)&&f.arguments[0]&&k(f.arguments[0])?f.arguments[0]:null;if(!p||!c(p))return null;let m=e=>{if(rp(e,o,r))return!0;let t=!1;return S(e,e=>{if(t)return!1;if(j(e,`MemberExpression`)&&G(e,r)?.startsWith(`${o}.`))return t=!0,!1}),t},h=()=>{let e=Rc(M(n.node)??n.node),t=e?r.scopes.symbolFor(e):null;return!t||t.references.length===0?!1:t.references.every(e=>{let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||n.callee!==t)return!1;let i=M(n);if(!i||!D(i))return!1;if($p(n,l.filter(e=>M(e)===i&&!c(e.right)),i,r))return!0;let a=n.parent??null;for(;a&&a!==i;){if(j(a,`IfStatement`)&&z(n,a.consequent)&&m(a.test))return!0;a=a.parent??null}return!1})};if(!u.every(e=>{let t=M(e);return!t||!D(t)?!1:$p(e,l.filter(e=>M(e)===t&&!c(e.right)),t,r)||h()}))return null;let g=e=>{if(!D(e))return!1;let t=e.parent,i=t?.parent;return!!(j(t,`CallExpression`)&&t.arguments.some(t=>t===e)&&j(i,`AssignmentExpression`)&&G(i.left,r)===n.handleKey)},_=t=>{let i=M(t);if(!i||!D(i))return!1;if(g(i))return!0;let a=[];return S(i.body,t=>{if(t!==i.body&&D(t))return!1;(t===e||wp(t,n,r))&&a.push(t)}),$p(t,a,i,r)||xf(t,a,r)};return l.every(e=>!c(e.right)||_(e))?a:null},sp=new WeakMap,cp=new WeakMap,Uue=(e,t,n,r)=>{let i=sp.get(e);if(i||(i=new WeakMap,sp.set(e,i)),i.has(n.node))return i.get(n.node)??null;let a=cp.get(e);if(a||(a=new WeakSet,cp.set(e,a)),a.has(n.node))return null;a.add(n.node);let o=Hue(e,t,n,r);return a.delete(n.node),i.set(n.node,o),o},lp=(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=j(o,`IfStatement`)&&(o.consequent===a||o.alternate===a)||j(o,`ConditionalExpression`)&&(o.consequent===a||o.alternate===a)||j(o,`LogicalExpression`)&&o.right===a||j(o,`AssignmentPattern`)&&o.right===a||(j(o,`ForStatement`)||j(o,`ForInStatement`)||j(o,`ForOfStatement`)||j(o,`WhileStatement`)||j(o,`DoWhileStatement`))&&o.body===a?a:j(o,`SwitchCase`)?o:null;if(e&&!r.has(e))return!0;a=o,o=a.parent??null}return!1},Wue=(e,t,n,r=!1)=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.body,`BlockStatement`))return!1;let i=n.cfg.cfgFor(e),a=i?.blockOf(t.node),o=b(t.node);if(!i||!a||o===null)return!1;let s=[];return Pd(e.body,c=>{if(!j(c,`CallExpression`))return;let l=b(c),u=op(c,e,t,n),d=i.blockOf(c);if(l===null||l>=o||d!==a&&!u&&!r||!u&&lp(c,t.node,e))return;if(qp(c,t,n)){s.push(u??c);return}let f=Qp(c.callee,n),p=f&&D(f)?Qf(f,c,n,new Map):null;f&&D(f)&&p&&$f(f,t,n,new Set,p)&&s.push(u??c)}),r?$p(t.node,s,e,n):po(e,s,n)},Gue=(e,t,n)=>{let r=M(e);if(!r||!j(r,`ArrowFunctionExpression`)&&!j(r,`FunctionExpression`)&&!j(r,`FunctionDeclaration`))return!1;let i=!1;return S(r.body,a=>{if(i)return!1;if(!j(a,`CallExpression`)||M(a)!==r||!qd(a,n))return;let o=pr(a);if(o&&o!==e&&np(o,t,n))return i=!0,!1}),i},Kue=(e,t,n)=>t.handleKey!==null&&Gue(e,t,n)&&Wue(e,t,n,t.registrationVerbName===`setTimeout`),up=(e,t,n,r)=>{let i=A(e);if(j(i,`UnaryExpression`)&&i.operator===`!`)return up(i.argument,!t,n,r);if(j(i,`LogicalExpression`))return i.operator===`||`&&t||i.operator===`&&`&&!t?[...up(i.left,t,n,r),...up(i.right,t,n,r)]:[];if(j(i,`BinaryExpression`)&&[`===`,`==`,`!==`,`!=`].includes(i.operator)){let e=Cn(i.left),a=Cn(i.right),o=e??a,s=e===null?i.left:i.right,c=G(s,r);if(o===null||c===null)return[];let l=i.operator===`===`||i.operator===`==`;return[{bindingIdentifier:j(s,`Identifier`)?r.scopes.symbolFor(s)?.bindingIdentifier??null:null,guardNode:n,key:c,value:l===t?o:!o}]}let a=G(i,r);return a===null?[]:[{bindingIdentifier:j(i,`Identifier`)?r.scopes.symbolFor(i)?.bindingIdentifier??null:null,guardNode:n,key:a,value:t}]},dp=(e,t,n,r=!1)=>{if(!D(e)||e.async&&!r)return[];let i=[];S(e.body,r=>{if(r!==e.body&&D(r))return!1;j(r,`IfStatement`)&&!r.alternate&&!rd(r.consequent,t,e,n)&&$p(t,[r],e,n)&&i.push(...up(r.test,!0,r,n))});let a=t,o=a.parent;for(;o&&o!==e;)j(o,`IfStatement`)&&o.consequent===a&&i.push(...up(o.test,!1,o,n)),a=o,o=o.parent;return i},fp=(e,t,n)=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);if(!r||!D(r)||r.async||r.generator)return!1;let i=!1;return S(r.body,e=>{if(i||e!==r.body&&D(e))return!1;if(j(e,`AssignmentExpression`)&&e.operator===`=`&&G(e.left,n)===t.key&&Cn(e.right)===t.value&&n.cfg.isUnconditionalFromEntry(e))return i=!0,!1}),i},pp=(e,t,n,r)=>{let i=b(t);if(!D(e)||i===null)return!0;let a=!1;return S(e.body,t=>{if(a||t!==e.body&&D(t))return!1;let o=b(t);if(o===null||o>=i)return;let s=j(t,`AssignmentExpression`)?t.left:j(t,`UpdateExpression`)?t.argument:null;if(s&&G(s,r)===n.key)return a=!0,!1}),a},que=(e,t,n,r)=>{let i=e,a=i.parent;for(;a&&a!==n;){if(j(a,`TryStatement`)&&a.block===i&&a.handler&&rd(a.handler.body,t,n,r))return!0;i=a,a=a.parent}return!1},mp=(e,t,n,r)=>{if(!t.bindingIdentifier)return!1;let i=r.scopes.symbolFor(t.bindingIdentifier);return!i||i.kind!==`let`&&i.kind!==`var`||!j(i.declarationNode,`VariableDeclarator`)||M(i.declarationNode)!==e?!1:i.references.every(e=>{if(!Bd(e.identifier))return!0;let r=y(e.identifier),i=r.parent;return j(i,`AssignmentExpression`)&&i.operator===`=`&&i.left===r&&Cn(i.right)===t.value&&n.includes(M(i)??i)})},Jue=(e,t,n,r)=>{let i=[];S(t.guardNode,e=>{if(i.length===0&&j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&j(e.property,`Identifier`)&&G(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?A(o.initializer):null;if(!o||o.kind!==`const`||!j(o.declarationNode,`VariableDeclarator`)||M(o.declarationNode)!==e||!j(s,`ObjectExpression`)||s.properties.length!==1)return!1;let c=s.properties[0];return!j(c,`Property`)||P(c)!==P(a)||Cn(c.value)!==!t.value?!1:o.references.every(e=>{let i=Tp(e.identifier);if(!j(i,`MemberExpression`)||G(i,r)!==t.key)return!1;if(!Bd(e.identifier))return!0;let a=i.parent;return j(a,`AssignmentExpression`)&&a.operator===`=`&&a.left===i&&Cn(a.right)===t.value&&n.includes(M(a)??a)})},hp=(e,t,n,r)=>{if(!D(e))return!0;let i=b(t.guardNode),a=b(n);if(i===null||a===null)return!0;let o=!1;return S(e.body,t=>{if(o||t!==e.body&&D(t))return!1;let s=b(t);if(!(s===null||s<=i||s>=a)&&(j(t,`AwaitExpression`)||j(t,`YieldExpression`)||j(t,`CallExpression`)&&!yo(t,r.scopes))&&(rd(t,n,e,r)||que(t,n,e,r)))return o=!0,!1}),o},Yue=(e,t,n,r,i)=>{let a=y(t),o=j(a.parent,`CallExpression`)&&a.parent.callee===a?a.parent:Yf(t,e,i);if(!D(t)||!t.async||t.generator||!o||M(o)!==e||!yd(e,i.scopes).has(t))return!1;let s=o.parent;for(;s&&s!==e;){if(j(s,`ForStatement`)||j(s,`ForInStatement`)||j(s,`ForOfStatement`)||j(s,`WhileStatement`)||j(s,`DoWhileStatement`))return!1;s=s.parent}let c=r.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,i);return t&&D(t)?[t]:[]});return c.length===r.length?dp(t,n,i,!0).some(a=>(mp(e,a,c,i)||Jue(e,a,c,i))&&!hp(t,a,n,i)&&!pp(t,n,a,i)&&r.every(e=>fp(e,a,i))):!1},gp=(e,t)=>{let n=jd(A(e),t.scopes),r=n?.initializer?A(n.initializer):null;if(!j(r,`CallExpression`))return null;let i=r.arguments?.[0]?A(r.arguments[0]):null;return!j(i,`Literal`)||typeof i.value!=`number`?null:G(e,t)},_p=(e,t)=>{let n=A(e);if(j(n,`LogicalExpression`)&&n.operator===`||`)return _p(n.left,t)??_p(n.right,t);if(!j(n,`BinaryExpression`)||n.operator!==`!==`&&n.operator!==`!=`)return null;let r=gp(n.left,t),i=gp(n.right,t),a=A(r?n.right:n.left),o=r??i;return o&&j(a,`Identifier`)?o:null},vp=(e,t,n)=>{if(!D(e))return null;let r=null;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(!j(i,`IfStatement`)||i.alternate)return;let a=_p(i.test,n);!a||rd(i.consequent,t,e,n)||!$p(t,[i],e,n)||(r=a)}),r},Xue=(e,t,n)=>{if(j(e,`UpdateExpression`)&&G(e.argument,n)===t)return!0;if(!j(e,`AssignmentExpression`)||G(e.left,n)!==t||e.operator!==`+=`&&e.operator!==`-=`)return!1;let r=A(e.right);return j(r,`Literal`)&&typeof r.value==`number`&&r.value!==0},Zue=(e,t,n)=>{if(!D(e))return!1;let r=!1;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(Xue(i,t,n))return r=!0,!1}),r},yp=(e,t,n)=>e.length>0&&e.every(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return!1;let r=Wf(e.argument,n);return!!(r&&D(r)&&$f(r,t,n))}),Que=(e,t)=>{let n=G(e,t),r=A(e);if(!j(r,`Identifier`))return n;let i=Wf(r,t);return i&&i!==r?G(i,t)??n:n},$ue=(e,t,n)=>{let r=A(e);if(!j(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=A(e),a=A(r);if(!(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||Que(i.object,n)!==t||!j(a,`Literal`)||typeof a.value!=`string`))return{propertyName:i.property.name,value:a.value}}return null},ede=(e,t,n)=>{if(!D(e)||t.handleKey===null)return!1;let r=t.handleKey.lastIndexOf(`.`);if(r===-1)return!1;let i=t.handleKey.slice(0,r),a=[];S(e.body,r=>{if(r!==e.body&&D(r))return!1;if(!j(r,`IfStatement`)||r.alternate!==null||!Ad(r.consequent)||!$p(t.node,[r],e,n))return;let o=$ue(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=W(t.node,n.scopes);if(!l){let e=M(t.node);for(;e&&!Mc(e);)e=M(e);l=e}if(!s||!l||!D(l))return!1;let u=new Set,d=!1;return S(l.body,e=>{if(d)return!1;if(!j(e,`AssignmentExpression`)||e.operator!==`=`)return;let t=G(e.left,n);if(t===`${i}.${s}`)return d=!0,!1;if(t!==i)return;let r=A(e.right);if(j(r,`Literal`)&&r.value===null)return;let a=Wf(r,n);if(!a||!j(a,`ObjectExpression`))return d=!0,!1;let o=a.properties.find(e=>j(e,`Property`)&&P(e)===s),c=j(o,`Property`)?A(o.value):null;if(!c||!j(c,`Literal`)||typeof c.value!=`string`)return d=!0,!1;u.add(c.value)}),!d&&u.size>0&&[...u].every(e=>c.has(e))},tde=(e,t,n)=>{if(!D(e)||t.handleKey===null)return!1;let r=b(t.node);if(r===null)return!1;let i=e=>{let t=A(e);return j(t,`LogicalExpression`)&&t.operator===`&&`?[...i(t.left),...i(t.right)]:[t]},a=e=>{let t=A(e),r=G(t,n);if(r)return r;if(!j(t,`BinaryExpression`)||t.operator!==`!==`&&t.operator!==`!=`)return null;let i=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},a=i(t.left)?t.right:i(t.right)?t.left:null;return a?G(a,n):null},o=e=>{let t=A(e);return j(t,`Literal`)&&t.value===null||j(t,`Identifier`)&&t.name===`undefined`&&n.scopes.isGlobalReference(t)},s=e=>{if(!D(e))return!1;let r=e.parent,i=r?.parent;return!!(j(r,`CallExpression`)&&r.arguments.some(t=>t===e)&&fr(r)===`setTimeout`&&j(i,`AssignmentExpression`)&&G(i.left,n)===t.handleKey)},c=e=>{let r=M(e);if(!r||!D(r))return!1;let i=[];return S(r.body,a=>{if(a!==r.body&&D(a))return!1;let o=b(a),s=b(e);o!==null&&s!==null&&o<s&&wp(a,t,n)&&i.push(op(a,r,t,n)??a)}),$p(e,i,r,n)},l=null,u=null,d=null,f=null;if(S(e.body,o=>{if(l||!j(o,`IfStatement`))return;let s=b(o);if(s===null||s>=r||rd(o.consequent,t.node,e,n))return;let c=i(o.test),p=c.map(a).filter(e=>e!==null);if(p.includes(t.handleKey??``)){u=p.find(e=>e!==t.handleKey)??null;for(let e of c){let t=A(e);if(!j(t,`BinaryExpression`)||t.operator!==`===`&&t.operator!==`==`)continue;let r=G(t.left,n),i=G(t.right,n);if(r&&i){d=r,f=i;break}}u&&d&&f&&(l=o)}}),!l||!u||!d||!f)return!1;let p=W(t.node,n.scopes);if(!p){let e=M(t.node);for(;e&&!Mc(e);)e=M(e);p=e}if(!p||!D(p))return!1;let m=[],h=[],g=[],_=[];if(S(p.body,e=>{if(j(e,`AssignmentExpression`)){let r=G(e.left,n);r===u&&m.push(e),r===d&&h.push(e),r===f&&g.push(e),r===t.handleKey&&j(A(e.right),`CallExpression`)&&fr(A(e.right))===`setTimeout`&&_.push(e)}j(e,`UpdateExpression`)&&G(e.argument,n)===f&&g.push(e)}),_.length===0)return!1;let v=m.length>0?tf(m[0].left,n)?.initializer:null,ee=v&&j(v,`CallExpression`)?v.arguments[0]:null;return!(!ee||!k(ee)||!o(ee)||!_.every(e=>{let t=M(e);return!t||!D(t)?!1:$p(e,m.filter(e=>M(e)===t&&!o(e.right)),t,n)})||m.filter(e=>o(e.right)&&!s(M(e)??e)&&!c(e)).length>0||h.some(e=>G(e.right,n)!==f)||g.some(e=>!c(e)))},bp=(e,t,n)=>{let r=t.handleKey;if(!D(e)||r===null)return!1;let i=b(t.node);if(i===null)return!1;let a=!1,o=[];return S(e.body,s=>{if(a||s!==e.body&&D(s))return!1;if(j(s,`IfStatement`)&&!s.alternate&&rp(s.test,r,n)&&!rd(s.consequent,t.node,e,n)&&$p(t.node,[s],e,n))return a=!0,!1;let c=b(s);if(c===null||c>=i||!wp(s,t,n))return;let l=op(s,e,t,n);o.push(l??s)}),a||tde(e,t,n)||ede(e,t,n)||$p(t.node,o,e,n)},xp=(e,t)=>e.kind===`subscribe`?e.handlerKey??G(yf(e),t):e.kind!==`timer`||!j(e.node,`CallExpression`)?null:G(e.node.arguments?.[0],t),Sp=(e,t)=>{let n=Rc(e);return new Set([G(e,t),G(n,t)].filter(e=>e!==null))},Cp=(e,t,n,r)=>ep(n,t,r)&&xf(Zf(t.node,e,r),n,r),wp=(e,t,n)=>{if(qp(e,t,n))return!0;let r=j(e,`ChainExpression`)?e.expression:e;if(!j(r,`CallExpression`))return!1;let i=Wf(r.callee,n),a=D(i)?i:Qp(r.callee,n),o=a&&D(a)?Qf(a,r,n,new Map):null;return!!(a&&D(a)&&o&&!a.async&&!a.generator&&$f(a,t,n,new Set,o,!0))},nde=(e,t,n)=>{let r=A(e);if(j(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e&&(e.kind===`let`||e.kind===`var`)&&j(e.declarationNode,`VariableDeclarator`)&&M(e.declarationNode)===t?e:null}let i=jd(r,n.scopes,{resolveNamedAliases:!0});if(i)return i;let a=r;for(;j(a,`MemberExpression`);)a=A(a.object);if(!j(a,`Identifier`))return null;let o=n.scopes.symbolFor(a),s=o?.initializer?A(o.initializer):null;return o&&o.kind===`const`&&j(o.declarationNode,`VariableDeclarator`)&&j(s,`ObjectExpression`)&&M(o.declarationNode)===t?o:null},Tp=e=>{let t=e;for(;j(t.parent,`MemberExpression`)&&t.parent.object===t;)t=t.parent;return y(t)},rde=(e,t)=>{let n=new Set,r=new Set,i=xp(e,t);if(i&&n.add(i),e.kind!==`timer`||!j(e.node,`CallExpression`))return n;let a=e.node.arguments[0];if(!a||!j(a,`Identifier`))return n;let o=t.scopes.symbolFor(a),s=o?M(o.bindingIdentifier):null;if(!o||!s||!D(s))return n;let c=s.params.findIndex(e=>e===o.bindingIdentifier),l=Rc(s),u=l?t.scopes.symbolFor(l):null;if(c<0||!u)return n;for(let e of u.references){let i=Jf(e.identifier);if(!j(i,`CallExpression`))return n;let a=i.arguments[c];if(!a||!k(a))return n;let o=G(a,t);o&&r.add(o)}for(let e of r)n.add(e);return n},Ep=(e,t,n,r)=>{if(!D(e)||t.handleKey===null)return!1;let i=Sp(e,r);return n.some(n=>{if(n.kind!==`timer`||n.handleKey!==t.handleKey||M(n.node)===e)return!1;let a=rde(n,r);return[...i].some(e=>a.has(e))})},ide=(e,t,n,r,i)=>{let a=new Map,o=0;for(let n of r.references){let r=Jf(n.identifier),s=r?M(r):null;if(!r||!s||!D(s))return!1;if(s===e)o+=1;else if(!Ep(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=>!rd(n,t,e,i)&&!rd(t,n,e,i))))},ade=(e,t,n,r,i)=>t.references.every(t=>{let a=Tp(t.identifier);if(G(a,i)!==e.handleKey)return j(n.left,`Identifier`);if(!Bd(t.identifier))return!0;let o=a.parent;if(o===n)return!0;if(!j(o,`AssignmentExpression`)||o.operator!==`=`||o.left!==a)return!1;let s=A(o.right),c=M(o),l=r.find(t=>t.kind===`timer`&&t.node===s&&t.handleKey===e.handleKey),u=M(e.node),d=u?Sp(u,i):new Set;if(l&&(c&&Ep(c,e,r,i)||d.has(xp(l,i)??``)))return!0;if(l&&c===u){let t=y(o).parent,n=t?.parent;if(!j(t,`ExpressionStatement`)||!j(n,`BlockStatement`))return!1;let r=n.body[n.body.findIndex(e=>e===t)-1],a=j(r,`ExpressionStatement`)?A(r.expression):null;return!!(j(a,`CallExpression`)&&j(a.callee,`Identifier`)&&i.scopes.isGlobalReference(a.callee)&&qp(a,e,i))}if(!(j(s,`Literal`)&&s.value===null||j(s,`Identifier`)&&s.name===`undefined`&&i.scopes.isGlobalReference(s))||!c||!D(c))return!1;if(Ep(c,e,r,i))return!0;let f=[];return S(c.body,t=>{if(t!==c.body&&D(t))return!1;wp(t,e,i)&&f.push(t)}),$p(o,f,c,i)}),ode=(e,t,n)=>{let r=Vf(t.node,n);return!!(r&&M(r.declarationNode)===e)},sde=(e,t,n,r)=>{if(e.registrationVerbName!==`setTimeout`)return!1;let i=Sp(t,r);if(!i.has(xp(e,r)??``))return!1;let a=n.filter(e=>e.kind===`timer`&&M(e.node)===t&&i.has(xp(e,r)??``));return a.length===1&&a[0]===e},cde=(e,t,n,r,i)=>{let a=M(t.node),o=y(t.node),s=o.parent,c=t.handleKey!==null&&j(s,`AssignmentExpression`)&&s.operator===`=`&&s.right===o?nde(s.left,e,i):null,l=ode(e,t,i);if(t.kind!==`timer`||!a||!D(a)||a===e||a.async||a.generator||!c&&!l||!ep(r,t,i)||c&&j(s,`AssignmentExpression`)&&!ade(t,c,s,n,i))return!1;if(Ep(a,t,n,i))return!0;let u=Rc(a),d=u?i.scopes.symbolFor(u):null;if(!d||d.references.length===0)return!1;let f=d.references.length===1?Jf(d.references[0].identifier):null,p=sde(t,a,n,i);if(c&&!p&&!bp(a,t,i)&&!f&&!ide(e,t,a,d,i))return!1;let m=t.node.parent;for(;m&&m!==a;){if(c&&(j(m,`ForStatement`)||j(m,`ForInStatement`)||j(m,`ForOfStatement`)||j(m,`WhileStatement`)||j(m,`DoWhileStatement`)))return!1;m=m.parent}let h=d.references.filter(e=>p&&z(e.identifier,t.node)&&xp(t,i)===G(e.identifier,i));if(p&&(h.length!==1||d.references.length!==2))return!1;let g=bd(e,i.scopes);return d.references.every(o=>{let s=G(o.identifier,i),c=y(o.identifier).parent;if(h.some(e=>e===o))return!0;let l=n.find(e=>e!==t&&s!==null&&xp(e,i)===s&&(z(o.identifier,e.node)||c&&qp(c,e,i))),u=l?yf(l):null;if(l&&!(u&&D(u)&&u.async)&&Cp(e,l,r,i))return!0;let d=Jf(o.identifier);if(!d)return!1;let f=M(d);if(!f||!D(f)||f===a||f.generator)return!1;if(f.async)return Yue(e,f,d,r,i);if(Ep(f,t,n,i))return!0;if(f===e)return xf(Zf(d,e,i),r,i);let p=Sp(f,i),m=n.find(e=>{if(e===t)return!1;let n=yf(e),r=n?Wf(n,i):null;return p.has(xp(e,i)??``)||r===f});return m?Cp(e,m,r,i):g.has(f)&&xf(Zf(d,e,i),r,i)})},lde=(e,t,n,r,i,a)=>{let o=Jf(e);if(o){let e=M(o);if(e&&e!==t&&bd(r).has(e))return{generationKey:null};let n=e?vp(e,o,a):null;return n?{generationKey:n}:null}let s=y(e),c=s.parent;if(!j(c,`CallExpression`)||!c.arguments.some(e=>e===s)||!j(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:cf(c,a),receiverKey:null,registrationVerbName:c.callee.name,eventKey:null,handlerKey:null},u=vp(t,n,a);return l.handleKey!==null&&yp(i,l,a)&&u?{generationKey:u}:null},ude=(e,t,n,r)=>{let i=M(t.node),a=y(t.node),o=a.parent;if(t.kind!==`subscribe`&&t.kind!==`timer`||t.handleKey===null||!i||!D(i)||i===e||i.async||i.generator||!j(o,`AssignmentExpression`)||o.operator!==`=`||o.right!==a||!jd(A(o.left),r.scopes)||!bd(e).has(i)||!yp(n,t,r)||!po(e,n,r))return!1;let s=n.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,r);return t&&D(t)?[t]:[]}),c=Rc(i),l=c?r.scopes.symbolFor(c):null;if(!l||l.references.length===0)return!1;let u=l.references.map(a=>lde(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`?[...bd(e),...s].some(e=>Zue(e,f,r)):!1},dde=(e,t,n,r)=>{if(ude(e,t,n,r))return!0;let i=M(t.node),a=i?_d(i):null;if(t.kind!==`timer`||t.handleKey===null||!i||!D(i)||i===e||i.async||i.generator||!j(t.node,`CallExpression`)||!j(t.node.callee,`Identifier`)||!r.scopes.isGlobalReference(t.node.callee)||!a||!yd(e,r.scopes).has(i)||!xf(a,n,r))return!1;let o=y(t.node),s=o.parent;if(!j(s,`AssignmentExpression`)||s.operator!==`=`||s.right!==o||!j(s.left,`Identifier`))return!1;let c=r.scopes.symbolFor(s.left);if(!c||c.kind!==`let`&&c.kind!==`var`||!j(c.declarationNode,`VariableDeclarator`)||M(c.declarationNode)!==e)return!1;let l=n.flatMap(e=>{if(!j(e,`ReturnStatement`)||!e.argument)return[];let t=Wf(e.argument,r);return t&&D(t)?[t]:[]});if(l.length!==n.length)return!1;let u=new Map;for(let e of l){if(!D(e))return!1;let n=[];if(S(e.body,i=>{if(i!==e.body&&D(i))return!1;if(j(i,`CallExpression`)&&j(i.callee,`Identifier`)&&r.scopes.isGlobalReference(i.callee)&&qp(i,t,r)){let a=op(i,e,t,r);n.push({anchor:a??i,call:i,handleGuard:a})}}),!po(e,n.map(e=>e.anchor),r))return!1;u.set(e,n)}let d=c.references.filter(e=>Bd(e.identifier)),f=d.some(e=>y(e.identifier).parent===s),p=t.node.arguments,m=d.some(e=>{let t=y(e.identifier),n=t.parent;if(n===s)return!1;if(!j(n,`AssignmentExpression`)||n.operator!==`=`||n.left!==t)return!0;let i=A(n.right);if(!(j(i,`Literal`)&&i.value===null||j(i,`Identifier`)&&i.name===`undefined`&&r.scopes.isGlobalReference(i)))return!0;let a=M(n);if(a&&D(a)&&p.some(e=>{let t=A(e);return D(t)&&t===a}))return!1;let o=M(n),c=o?u.get(o):void 0;return!(o&&c&&$p(n,c.map(e=>e.handleGuard&&z(n,e.handleGuard.consequent)?e.call:e.anchor),o,r))});if(!f||m)return!1;let h=t.node.parent;for(;h&&h!==i;){if(j(h,`ForStatement`)||j(h,`ForInStatement`)||j(h,`ForOfStatement`)||j(h,`WhileStatement`)||j(h,`DoWhileStatement`))return!1;h=h.parent}let g=!1;for(let e of t.node.arguments??[])S(e,e=>{if(g||D(e))return!1;if(j(e,`AwaitExpression`)||j(e,`YieldExpression`)||j(e,`CallExpression`)&&!yo(e,r.scopes))return g=!0,!1});return g?!1:dp(i,t.node,r).some(a=>mp(e,a,l,r)&&!hp(i,a,t.node,r)&&!pp(i,t.node,a,r)&&n.every(e=>fp(e,a,r)))},fde=(e,t,n)=>{if(!D(e)||!j(e.body,`BlockStatement`))return!1;let r=new Set;if(S(e.body,e=>{if(!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||fr(e)!==`push`||!j(i.object,`Identifier`))return;let a=e.arguments[0];if(!a||!k(a))return;let o=A(a),s=D(o)?o:Wf(a,n);if(!s||!D(s))return;let c=!1;if(S(s.body,e=>{if(c||e!==s.body&&D(e))return c?!1:void 0;if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let i=j(t.node,`CallExpression`)?t.node:null;if(fr(e)===`removeEventListener`&&i&&Zd(r.object,n)===t.receiverKey&&Zd(e.arguments[0],n)===t.eventKey&&Zd(e.arguments[1],n)===t.handlerKey&&ef(i.arguments[2],e.arguments[2],n,!0))return c=!0,!1}),!c)return;let l=y(t.node),u=l.parent,d=y(e),f=d.parent;if(!u||!j(u,`ExpressionStatement`)||u.expression!==l||!f||!j(f,`ExpressionStatement`)||f.expression!==d||!u.parent||!j(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?A(m.initializer):null;m?.kind!==`const`||!h||!j(h,`ArrayExpression`)||h.elements.length!==0||m.references.every(e=>{let t=y(e.identifier);if(j(t.parent,`ForOfStatement`)&&t.parent.right===t&&t.parent.await!==!0)return!0;let n=t.parent;if(!n||!j(n,`MemberExpression`)||n.object!==t)return!1;let r=y(n).parent;return!!(r&&j(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(P(n)??``))})&&r.add(m)}),r.size===0)return!1;let i=!1;return Pd(e.body,e=>{if(i||!j(e,`ReturnStatement`)||!e.argument)return;let t=A(e.argument),a=D(t)?t:Wf(e.argument,n);!a||!D(a)||S(a.body,e=>{if(i)return!1;if(!j(e,`CallExpression`))return;let t=A(e.callee);if(j(t,`Identifier`)){let a=Sf(t,n),o=a?A(a.right):null,s=j(o,`Identifier`)?n.scopes.symbolFor(o):null;if(a&&s&&r.has(s)&&zf(e,a,n))return i=!0,!1}if(!j(t,`MemberExpression`)||fr(e)!==`forEach`||!j(t.object,`Identifier`))return;let a=n.scopes.symbolFor(t.object);if(!a||!r.has(a))return;let o=e.arguments[0];if(!o||!k(o))return;let s=A(o);if(!D(s))return;let c=s.params[0];if(!c||!j(c,`Identifier`))return;let l=n.scopes.symbolFor(c);return S(s.body,e=>{if(j(e,`CallExpression`)&&j(A(e.callee),`Identifier`)&&n.scopes.symbolFor(A(e.callee))?.id===l?.id)return i=!0,!1}),i?!1:void 0})}),i},pde=(e,t,n)=>{if(t.registrationVerbName!==`addEventListener`||!j(t.node,`CallExpression`))return!1;let r=A(t.node.callee);if(!j(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=Yd(e,n);return t?[t.collectionKey]:[]}));if(a.size===0)return!1;let o=Zd(r.object,n),s=Zd(t.node.arguments[0],n),c=Zd(t.node.arguments[1],n),l=$d(t.node.arguments[2],n,!0),u=!1;return S(e,e=>{if(u||!j(e,`CallExpression`))return u?!1:void 0;if(fr(e)!==`removeEventListener`)return;let r=A(e.callee);if(j(r,`MemberExpression`)&&!(Zd(r.object,n)!==o||Zd(e.arguments[0],n)!==s||Zd(e.arguments[1],n)!==c||$d(e.arguments[2],n,!0)!==l)&&Up(e,a,n)&&!Gp(t.node,e,new Map([...a].map(e=>[e,1/0])),n))return u=!0,!1}),u},Dp=(e,t)=>{let n=A(e);return j(n,`MemberExpression`)?tf(n,t):null},Op=(e,t)=>{let n=A(e);if(j(n,`LogicalExpression`)&&n.operator===`||`){let e=Op(n.left,t),r=Op(n.right,t);return[e,r].find(e=>e?.requiresBooleanFalse)??e??r}if(j(n,`UnaryExpression`)&&n.operator===`!`){let e=Dp(n.argument,t);return e?{refSymbol:e,requiresBooleanFalse:!0}:null}if(j(n,`BinaryExpression`)&&(n.operator===`!=`||n.operator===`!==`)){let e=Dp(n.left,t),r=Dp(n.right,t),i=e??r;return!i||e&&r?null:{refSymbol:i,requiresBooleanFalse:!1}}return null},mde=(e,t)=>{let n=A(e);if(!j(n,`BinaryExpression`)||n.operator!==`==`&&n.operator!==`===`)return null;let r=Dp(n.left,t),i=Dp(n.right,t),a=r??i;return a&&!(r&&i)?{refSymbol:a,requiresBooleanFalse:!1}:null},kp=(e,t,n,r=new Set)=>{if(!D(e)||r.has(e))return null;let i=new Set(r);i.add(e);let a=e.body;if(!j(a,`BlockStatement`)){let e=A(a);if(!j(e,`CallExpression`))return null;let r=Wf(e.callee,n);return r?kp(r,t,n,i):null}for(let e=0;e<a.body.length;e+=1){let r=a.body[e];if(!j(r,`VariableDeclaration`)){if(j(r,`ExpressionStatement`)){let o=A(r.expression);if(j(o,`AssignmentExpression`)){let e=G(o.left,n),r=A(o.right),i=j(r,`Literal`)&&r.value===null||j(r,`Identifier`)&&r.name===`undefined`&&n.scopes.isGlobalReference(r);if(e===t.handleKey&&i)continue}if(j(o,`CallExpression`)&&e===a.body.length-1){let e=Wf(o.callee,n);return e?kp(e,t,n,i):null}return null}return j(r,`IfStatement`)?Ad(r.consequent)?Op(r.test,n):!r.alternate&&e===a.body.length-1?mde(r.test,n):null:null}}return null},Ap=(e,t,n,r=new Set)=>{if(!D(e)||r.has(e))return!1;let i=new Set(r);i.add(e);let a=!1;return S(e.body,r=>{if(a||r!==e.body&&D(r))return!1;if(j(r,`UpdateExpression`))return tf(r.argument,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)?(a=!0,!1):void 0;if(j(r,`AssignmentExpression`))return tf(r.left,n)?.id===t.refSymbol.id&&n.cfg.isUnconditionalFromEntry(r)&&(r.operator!==`=`||(t.requiresBooleanFalse?Cn(A(r.right))===!1:Cn(A(r.right))!==!0))?(a=!0,!1):void 0;if(!j(r,`CallExpression`))return;let o=Wf(r.callee,n);if(o&&Ap(o,t,n,i)&&n.cfg.isUnconditionalFromEntry(r))return a=!0,!1}),a},hde=(e,t)=>{if(e.registrationVerbName!==`setTimeout`||!j(e.node,`CallExpression`))return!1;let n=e.node.arguments[0],r=n&&k(n)?A(n):null,i=r?D(r)?r:Wf(r,t):null;if(!i)return!1;let a=kp(i,e,t);if(!a)return!1;let o=W(e.node,t.scopes);if(!o){let t=M(e.node);for(;t&&!Mc(t);)t=M(t);o=t}if(!o||!D(o))return!1;let s=!1;return S(o.body,e=>{if(s)return!1;if(!j(e,`CallExpression`)||!qd(e,t))return;let n=pr(e);!n||!D(n)||Pd(n.body,e=>{if(s||!j(e,`ReturnStatement`)||!e.argument)return;let n=Wf(e.argument,t);n&&Ap(n,a,t)&&(s=!0)})}),s},gde=(e,t,n)=>{if(t.registrationVerbName!==`setTimeout`||!D(e)||!j(t.node,`CallExpression`))return!1;let r=t.node.arguments[0],i=r&&k(r)?A(r):null,a=i?D(i)?i:Wf(i,n):null;if(!a)return!1;let o=kp(a,t,n);if(!o||o.requiresBooleanFalse)return!1;let s=[];return S(e.body,t=>{if(t!==e.body&&D(t))return!1;if(j(t,`UpdateExpression`)&&tf(t.argument,n)?.id===o.refSymbol.id){s.push(t);return}j(t,`AssignmentExpression`)&&t.operator!==`=`&&tf(t.left,n)?.id===o.refSymbol.id&&s.push(t)}),$p(t.node,s,e,n)},jp=(e,t)=>{if(hde(e,t))return!0;if(e.registrationVerbName!==`setTimeout`||!j(e.node,`CallExpression`))return!1;let n=e.node.arguments[0];if(!n||!k(n))return!1;let r=A(n),i=D(r)?r:Wf(n,t);if(!i||!D(i)||!j(i.body,`BlockStatement`))return!1;let a=i.body.body[0];if(!a||!j(a,`IfStatement`)||!Ad(a.consequent))return!1;let o=A(a.test);for(;j(o,`LogicalExpression`)&&o.operator===`||`;)o=A(o.left);if(!j(o,`UnaryExpression`)||o.operator!==`!`)return!1;let s=jd(A(o.argument),t.scopes,{resolveNamedAliases:!0});if(!s)return!1;let c=M(e.node),l=null;for(;c;){let e=c.parent;if(e&&j(e,`CallExpression`)&&qd(e,t)){l=e;break}c=M(c)}let u=W(l||e.node,t.scopes);if(!u){let t=M(e.node);for(;t&&!Mc(t);)t=M(t);u=t}if(!u||!D(u))return!1;let d=!1;return S(u.body,e=>{if(d)return!1;if(!j(e,`CallExpression`)||!qd(e,t))return;let n=pr(e);if(!n||!D(n))return;let r=A(n.body);D(r)&&S(r.body,e=>{if(j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&Cn(A(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1}),Pd(n.body,e=>{if(d||!j(e,`ReturnStatement`)||!e.argument)return;let n=Wf(e.argument,t);!n||!D(n)||S(n.body,e=>{if(j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),t.scopes,{resolveNamedAliases:!0})?.id===s?.id&&Cn(A(e.right))===!1&&t.cfg.isUnconditionalFromEntry(e))return d=!0,!1})})}),d},_de=(e,t,n)=>{let r=M(t.node);if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!r||!hd(r)||!D(e)||!j(e.body,`BlockStatement`))return!1;let i=[];return Pd(e.body,e=>{if(!j(e,`ReturnStatement`)||!e.argument)return;let r=Qp(e.argument,n);if(!r||!D(r))return;let a=[];S(r.body,e=>{if(e!==r.body&&D(e))return!1;let i=j(e,`ChainExpression`)?e.expression:e,o=j(i,`CallExpression`)?A(i.callee):null;j(i,`CallExpression`)&&j(o,`MemberExpression`)&&!o.computed&&j(o.property,`Identifier`)&&o.property.name===`disconnect`&&G(o.object,n)===t.receiverKey&&a.push(e)}),po(r,a,n)&&i.push(e)}),xf(t.node,i,n)},vde=(e,t,n)=>nd({context:n,effectCallback:e,resourceNode:t.node,doesFunctionReleaseResource:e=>D(e)&&$f(e,t,n)}),Mp=(e,t,n,r=[t])=>{if(!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||e.async)return!1;if(fde(e,t,n)||pde(e,t,n)||_de(e,t,n)||vde(e,t,n)||jp(t,n)||nm(e,t,n)||t.kind===`subscribe`&&M(t.node)===e&&rm(t.node,!0,!0,n)&&ff(t,n))return!0;if(!j(e.body,`BlockStatement`))return e.body===t.node&&ff(t,n);let i=y(t.node),a=i.parent,o=j(a,`AssignmentExpression`)&&a.operator===`=`&&a.right===i&&j(a.left,`Identifier`)?n.scopes.symbolFor(a.left):null,s=t.kind===`timer`&&(M(t.node)===e&&j(a,`VariableDeclarator`)||!!(o&&(o.kind===`let`||o.kind===`var`)&&j(o.declarationNode,`VariableDeclarator`)&&M(o.declarationNode)===e)),c=[];if(Pd(e.body,e=>{if(!j(e,`ReturnStatement`))return;let r=b(e),i=b(t.node);if(r!==null&&i!==null&&r<i)return;let a=e.argument?A(e.argument):null;if(!a)return;if(tp(a,t,n)){c.push(e);return}if(t.kind===`subscribe`&&(a===t.node||b(a)!==null&&b(a)===b(t.node))&&ff(t,n)){c.push(e);return}if(t.kind===`subscribe`&&wue(a,t,n)){c.push(e);return}if(j(a,`Identifier`)&&(a.name===`undefined`&&n.scopes.isGlobalReference(a)||!n.scopes.symbolFor(a)?.initializer))return;let o=Wf(a,n);if(o&&tp(o,t,n)){c.push(e);return}!o||!D(o)||$f(o,t,n,new Set,new Map,s)&&c.push(e)}),dde(e,t,c,n)||cde(e,t,r,c,n))return!0;let l=M(t.node),u=l?zue(l,e,n):[];return t.kind===`subscribe`&&u.length>0&&u.every(e=>xf(e,c,n))?!0:xf(Zf(t.node,e,n,t),c,n)},yde=(e,t,n)=>{for(let r of t)if(!Mp(e,r,n,t)&&!Kue(e,r,n))return r;return null},Np=(e,t,n=new Set)=>{let r=A(e);if(j(r,`NewExpression`)&&j(r.callee,`Identifier`)&&r.callee.name===`AbortController`)return!0;if(j(r,`MemberExpression`))return Np(r.object,t,n);if(!j(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 Np(i.initializer,t,n);let a=i.bindingIdentifier.parent,o=a?.parent,s=o?.parent;return!!(j(a,`Property`)&&j(o,`ObjectPattern`)&&j(s,`VariableDeclarator`)&&s.init&&Np(s.init,t,n))},bde=(e,t)=>{if(!j(e,`Property`))return!1;let n=j(e.key,`Identifier`)?e.key.name:j(e.key,`Literal`)?e.key.value:null;return n===`signal`?!Np(e.value,t):n===`once`?j(e.value,`Literal`)&&e.value.value===!0:!1},xde=(e,t)=>j(e,`CallExpression`)&&(e.arguments??[]).some(e=>j(e,`ObjectExpression`)&&(e.properties??[]).some(e=>bde(e,t))),Pp=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`])]]),Fp=new Set([`cleanup`,`dispose`,`destroy`,`teardown`]),Ip=new Set([`close`]),Sde=new Set([`removeChannel`,`removeAllChannels`]),Lp=e=>{let t=j(e,`ChainExpression`)?e.expression:e;if(!j(t,`CallExpression`))return null;let n=A(t.callee);if(j(n,`Identifier`))return ze.has(n.name)||Vn.has(n.name)||Fp.has(n.name)?n.name:null;if(j(n,`MemberExpression`)&&j(n.property,`Identifier`)){let e=n.property.name;return Vn.has(e)||At.has(e)||Sde.has(e)||e===`on`?e:null}return null},Cde=(e,t,n)=>{let r=M(e),i=M(t.node);if(!r||!i||!D(i)||!Yp(r,n)||!Md(e,n.scopes))return!1;let a=Gf(t,n),o=G(e,n);if(a===null||o===null)return!1;let s=i.body,c=[],l=[];S(s,e=>{if(e!==s&&D(e))return!1;if(j(e,`AssignmentExpression`)&&G(e.left,n)===o&&G(e.right,n)===a){l.push(e);return}if(!j(e,`CallExpression`))return;let t=j(e.callee,`ChainExpression`)?e.callee.expression:A(e.callee);j(t,`MemberExpression`)&&!t.computed&&j(t.property,`Identifier`)&&t.property.name===`abort`&&G(t.object,n)===o&&c.push(e)});let u=l.filter(e=>$p(e,c,i,n));return $p(t.node,u,i,n)},Rp=e=>j(e,`JSXAttribute`)&&j(e.name,`JSXIdentifier`)&&(e.name.name===`ref`||e.name.name.endsWith(`Ref`)),zp=(e,t)=>{let n=Rc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(e=>{let t=y(e.identifier),n=t.parent;return!!(j(n,`JSXExpressionContainer`)&&n.expression===t&&Rp(n.parent))}):!1},Bp=(e,t,n)=>{let r=Rc(e);if(!r)return!1;let i=t.scopes.symbolFor(r);if(!i)return!1;let a=e=>{let t=j(e,`Property`)?P(e):null;if(!j(e,`Property`)||!j(e.parent,`ObjectExpression`)||n&&t!==`ref`&&!t?.endsWith(`Ref`))return!1;let r=y(e.parent),i=r.parent;if(!j(i,`ReturnStatement`)||i.argument!==r)return!1;let a=M(i);return!!(a&&kc(Rc(a)?.name??``))};if(i.references.some(e=>{let t=y(e.identifier),r=t.parent;if(!n&&j(r,`ReturnStatement`)&&r.argument===t){let e=M(r);return!!(e&&kc(Rc(e)?.name??``))}return j(r,`Property`)&&r.value===t?a(r):!1}))return!0;let o=M(e);if(!o||!D(o)||!kc(Rc(o)?.name??``))return!1;let s=!1;return S(o.body,e=>{if(s)return!1;if(j(e,`Property`)&&j(e.value,`Identifier`)&&e.value.name===r.name&&a(e))return s=!0,!1}),s},wde=e=>{if(!D(e))return!1;let t=e.params[0];if(!t)return!1;let n=(j(t,`Identifier`)?t:j(t,`AssignmentPattern`)&&j(t.left,`Identifier`)?t.left:null)?.typeAnnotation,r=j(n,`TSTypeAnnotation`)?n.typeAnnotation:null;return!!(j(r,`TSNullKeyword`)||j(r,`TSUnionType`)&&r.types.some(e=>j(e,`TSNullKeyword`)))},Tde=(e,t)=>{if(!D(e))return!1;let n=Rc(e),r=M(e),i=r?Rc(r):null;if(!n||!r||!D(r)||!i||!kc(i.name))return!1;let a=new Set;if(S(r.body,e=>{if(!j(e,`Property`)||!j(e.value,`Identifier`)||e.value.name!==n.name||!j(e.parent,`ObjectExpression`))return;let t=y(e.parent);if(j(t.parent,`ReturnStatement`)&&t.parent.argument===t){let t=P(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=y(e.identifier),r=n.parent,i=r?.parent;if(!j(r,`CallExpression`)||r.callee!==n||!j(i,`VariableDeclarator`)||i.init!==r||!j(i.id,`Identifier`))return!1;let o=t.scopes.symbolFor(i.id);if(!o)return!1;for(let e of o.references){let t=y(e.identifier),n=t.parent;if(!j(n,`MemberExpression`)||n.object!==t||!a.has(P(n)??``))continue;let r=y(n),i=r.parent;if(!j(i,`JSXExpressionContainer`)||i.expression!==r||!Rp(i.parent))return!1;s=!0}}return s},Vp=(e,t)=>zp(e,t)||Bp(e,t,!0)||Tde(e,t)||wde(e)&&Bp(e,t,!1),Hp=(e,t)=>{if(!D(e)||!e.returnType)return!1;let n=!1;if(S(e.returnType,e=>{if(j(e,`TSFunctionType`))return n=!0,!1}),!n)return!1;let r=Rc(e),i=r?t.scopes.symbolFor(r):null;return i?i.references.some(e=>{let t=y(e.identifier),n=t.parent;return!!(j(n,`JSXExpressionContainer`)&&n.expression===t&&j(n.parent,`JSXAttribute`))}):!1},Ede=(e,t,n,r,i)=>{let a=e,o=a.parent;for(;o&&o!==t;){if(j(o,`IfStatement`)&&o.consequent===a&&o.alternate===null){let e=A(o.test);if(!j(e,`LogicalExpression`)||e.operator!==`&&`)return null;let t=[A(e.left),A(e.right)],a=t.some(e=>rp(e,n,i)),s=t.some(e=>{if(!j(e,`BinaryExpression`)||e.operator!==`!==`&&e.operator!==`!=`)return!1;let t=G(e.left,i),a=G(e.right,i);return t===n&&a===r||a===n&&t===r});return a&&s?o:null}a=o,o=a.parent}return null},Dde=(e,t,n,r)=>{if(!D(e))return[];let i=[];return S(e.body,a=>{if(a!==e.body&&D(a))return!1;if(!j(a,`IfStatement`)||a.alternate!==null||!Ad(a.consequent))return;let o=A(a.test);if(!j(o,`BinaryExpression`)||o.operator!==`===`&&o.operator!==`==`)return;let s=G(o.left,r),c=G(o.right,r);(s===t&&c===n||c===t&&s===n)&&i.push(a)}),i},Ode=(e,t,n)=>{if(!j(t.node,`CallExpression`))return!1;let r=M(t.node);if(!r||!D(r)||r!==M(e)||!Vp(r,n))return!1;let i=A(t.node.callee),a=A(e.callee),o=j(a,`MemberExpression`)?tf(a.object,n):null;if(!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`addEventListener`||!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`)||a.property.name!==`removeEventListener`||!o)return!1;let s=G(A(i.object),n),c=G(r.params?.[0],n),l=G(a.object,n),u=G(e.arguments?.[1],n);if(s===null||s!==c||l===null||t.eventKey===null||t.eventKey!==G(e.arguments?.[0],n)||t.handlerKey===null)return!1;if(t.handlerKey!==u){if(!ef(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let i=b(e),a=[];return S(r.body,e=>{if(e!==r.body&&D(e))return!1;if(!j(e,`AssignmentExpression`)||e.operator!==`=`||!j(A(e.right),`ObjectExpression`)||jd(A(e.left),n.scopes)?.id!==o.id)return;let c=G(e.left,n),d=A(e.right);if(!c||l!==`${c}.element`||u!==`${c}.handler`||i===null||(b(e)??-1)<=i||!j(d,`ObjectExpression`))return;let f=d.properties.find(e=>j(e,`Property`)&&P(e)===`element`),p=d.properties.find(e=>j(e,`Property`)&&P(e)===`handler`);j(f,`Property`)&&j(p,`Property`)&&G(f.value,n)===s&&G(p.value,n)===t.handlerKey&&a.push(e)}),po(r,[ap(e,r,l,n)??e],n)&&xf(t.node,a,n)}if(!ef(t.node.arguments?.[2],e.arguments?.[2],n))return!1;let d=b(e),f=[],p=r.body;S(p,e=>{if(e!==p&&D(e))return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),n.scopes)?.id===o.id&&G(e.right,n)===s&&d!==null&&(b(e)??-1)>d&&f.push(e)});let m=ap(e,r,l,n)??Ede(e,r,l,s,n)??e,h=f.filter(e=>$p(e,[m],r,n));return po(r,[m,...Dde(r,l,s,n)],n)&&$p(t.node,h,r,n)},kde=(e,t,n)=>{if(t.kind!==`subscribe`||t.registrationVerbName!==`observe`||t.receiverKey===null||!j(t.node,`CallExpression`))return!1;let r=M(t.node),i=A(e.callee);if(!r||!D(r)||r!==M(e)||!Vp(r,n)||!j(i,`MemberExpression`)||i.computed||!j(i.property,`Identifier`)||i.property.name!==`disconnect`)return!1;let a=G(r.params[0],n),o=tf(i.object,n);if(!a||t.eventKey!==a||!o)return!1;let s=[];return S(r.body,e=>{if(e!==r.body&&D(e))return!1;j(e,`AssignmentExpression`)&&e.operator===`=`&&jd(A(e.left),n.scopes)?.id===o.id&&G(e.right,n)===t.receiverKey&&s.push(e)}),po(r,[e],n)&&xf(t.node,s,n)},Up=(e,t,n)=>{let r=y(e),i=new Set,a=new Set;for(;;){let e=M(r);if(!e||!D(e)||i.has(e))return null;i.add(e);let o=e.body===r,s=r.parent,c=j(e.body,`BlockStatement`)&&j(s,`ExpressionStatement`)&&s.parent===e.body;if(!o&&!c||!po(e,[c?s:r],n))return null;let l=qf(e);if(!l)return a.size===t.size&&Yp(e,n)?e:null;let u=A(l.callee);if(!j(u,`MemberExpression`))return null;let d=G(u.object,n);if(!d||!t.has(d))return null;a.add(d),r=y(l)}},Wp=e=>{let t=new Set,n=e;for(;;){let e=M(n);if(!e||!D(e)||t.has(e))break;t.add(e),n=e}return t},Gp=(e,t,n,r)=>{let i=b(e),a=b(t);if(i===null||a===null)return!0;let o=Wp(e),s=Wp(t),c=(e,t)=>e!==null&&t<=(n.get(e)??-1/0),l=(e,t,i,a)=>{if(a&&j(e,`ReturnStatement`)&&c(G(e.argument,r),t))return!0;if(j(e,`AssignmentExpression`)){let i=G(e.left,r),a=A(e.left);return c(G(e.right,r),t)&&!c(i,t)||!!(i&&[...n].some(([e,n])=>t<=n&&(i===e||i===`${e}.length`)))||j(a,`MemberExpression`)&&a.computed&&c(G(a.object,r),t)}if(j(e,`UnaryExpression`)&&e.operator===`delete`){let n=A(e.argument);return j(n,`MemberExpression`)&&c(G(n.object,r),t)}if(j(e,`UpdateExpression`)){let i=G(e.argument,r);return!!(i&&[...n].some(([e,n])=>t<=n&&i===`${e}.length`))}if(!j(e,`CallExpression`)&&!j(e,`NewExpression`))return!1;let o=e.arguments.some(e=>k(e)?c(G(e,r),t)&&kf(e,r)===null:!1),s=A(e.callee),u=j(e,`CallExpression`)&&j(s,`MemberExpression`)&&!s.computed&&j(s.object,`Identifier`)&&s.object.name===`Array`&&r.scopes.isGlobalReference(s.object)&&j(s.property,`Identifier`)&&s.property.name===`from`;return o&&!u||j(s,`MemberExpression`)&&!s.computed&&j(s.property,`Identifier`)&&(gue.has(s.property.name)||_ue.has(s.property.name))&&c(G(s.object,r),t)?!0:j(e,`CallExpression`)?[x(e.callee,r.scopes),...e.arguments.flatMap(t=>k(t)&&md(e,t)?[x(t,r.scopes)]:[])].some(e=>{if(!e||!D(e)||e.generator||i.has(e))return!1;let n=new Set(i);n.add(e);let r=!1;return S(e.body,i=>{if(r||i!==e.body&&D(i))return!1;if(l(i,t,n,!1))return r=!0,!1}),r}):!1},u=e;for(;u.parent;)u=u.parent;let d=!1;return S(u,e=>{if(d)return!1;let t=b(e);if(t===null)return;let n=r.cfg.enclosingFunction(e);if(!n)return;let c=o.has(n)&&t>i,u=s.has(n)&&t<a;if(!(!c&&!u)&&l(e,t,new Set,!0))return d=!0,!1}),d},Kp=(e,t)=>fr(e)===`addListener`&&e.arguments?.length===1&&t.arguments?.length===1,Ade=(e,t,n)=>{let r=A(e.callee),i=A(t.callee);if(!j(r,`MemberExpression`)||!j(i,`MemberExpression`))return!0;let a=fr(e),o=fr(t),s=t.arguments?.[+!Kp(e,t)],c=M(t),l=Zd(e.arguments?.[0],n),u=Zd(t.arguments?.[0],n),d=o===`off`&&!s&&(t.arguments?.length===0||l!==null&&l===u);if(c&&D(c)&&Yp(c,n)&&po(c,[t],n)&&(o!==null&&Fp.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=Yd(e,n);return t?[t]:[]});if(a===`addEventListener`&&o===`removeEventListener`)for(let r of[e.arguments?.[2],t.arguments?.[2]]){let e=yue(r,n);e&&f.push(e)}if(f.length===0)return!0;let p=new Set(f.map(e=>e.collectionKey));return!Up(t,p,n)&&!jue(t,p,n)?!1:!Gp(e,t,new Map([...p].map(e=>[e,1/0])),n)},qp=(e,t,n,r=new Map)=>{let i=j(e,`ChainExpression`)?e.expression:e;if(!j(i,`CallExpression`))return!1;let a=A(i.callee);if(t.kind===`timer`){if(!j(a,`Identifier`)||!ze.has(a.name)||!n.scopes.isGlobalReference(a))return!1;let e=G(i.arguments?.[0],n,new Set,r);if(lf(e,t,n))return!0;if(r.size>0&&e!==null)return!1;let o=i.arguments?.[0];if(o&&k(o)){let e=sf(o,i,n);if(t.handleKey&&e?.has(t.handleKey))return!0}let s=Hf(t.node,n);return s!==null&&s===kf(i.arguments?.[0],n)}if(j(a,`Identifier`)&&t.kind===`subscribe`&&(pf(a,t,n)&&(t.registrationVerbName!==`addEventListener`&&t.registrationVerbName!==`addListener`||ff(t,n))||t.registrationVerbName===`addListener`&&Nf(a,t,n)))return!0;let o=Lp(i);if(!o||!j(a,`MemberExpression`)||a.computed||!j(a.property,`Identifier`))return!1;let s=Zd(a.object,n),c=Zd(i.arguments?.[0],n),l=t.registrationVerbName?Pp.get(t.registrationVerbName):null,u=Uf(t,n),d=Sf(a.object,n),f=d?G(d.right,n):kf(a.object,n);if(l&&Jp(o,l)&&u!==null&&u===f&&(o!==`unobserve`||t.eventKey!==null&&c===t.eventKey)||Ode(i,t,n)||kde(i,t,n)||mf(s,o,t,n))return!0;if(t.kind===`socket`)return lf(s,t,n)&&(Ip.has(o)||Fp.has(o));if(t.kind===`subscribe`&&j(t.node,`CallExpression`)&&(o===`removeChannel`||o===`removeAllChannels`)&&s===bf(t.node,n)&&(o===`removeAllChannels`||lf(G(i.arguments?.[0],n,new Set,r),t,n))||(lf(s,t,n)||t.kind===`subscribe`&&Nf(a.object,t,n))&&(o===`unsubscribe`||o===`unsub`||o===`close`||o===`unwatch`||o===`unlisten`||At.has(o))||o===`abort`&&s===(Gf(t,n)??Fue(t,n)??Iue(t,n))||o===`abort`&&Cde(a.object,t,n))return!0;if(t.registrationVerbName===`addListener`&&o===`removeListener`&&j(t.node,`CallExpression`)&&t.node.arguments?.length===1){if(i.arguments?.length!==1)return!1;let e=Wf(t.node.arguments[0],n);if(!_f(t.node,`addListener`,n)&&!D(e))return!1}if(t.registrationVerbName===`addEventListener`&&o===`removeEventListener`&&j(t.node,`CallExpression`)&&(!j(A(t.node.callee),`MemberExpression`)||!ef(t.node.arguments?.[2],i.arguments?.[2],n,!0))||j(t.node,`CallExpression`)&&!Ade(t.node,i,n))return!1;let p=j(t.node,`CallExpression`)?A(t.node.callee):null,m=j(p,`MemberExpression`)?Pf(p.object,n):null,h=Pf(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&&G(i.arguments?.[0],n)===t.handleKey)return!0;let g=t.registrationVerbName?Pp.get(t.registrationVerbName):null;if(!g||!Jp(o,g))return!1;let _=j(t.node,`CallExpression`)?t.node.arguments?.[0]:null,v=i.arguments?.[0];if(Cf(_,n)||Cf(v,n))return!1;if(t.eventKey!==null&&c!==null&&t.eventKey!==c){if(!j(t.node,`CallExpression`))return!1;let e=Xd(t.node.arguments?.[0],n),r=Xd(i.arguments?.[0],n);if((e!==null||r!==null)&&e!==r)return!1;let s=Sf(_,n),c=Sf(v,n);if(s===null!=(c===null))return!1;let l=kf(t.node.arguments?.[0],n),u=kf(i.arguments?.[0],n);if(l===null||l!==u)return!1;if(s&&c){let e=If(t.node.arguments?.[1],n),r=If(i.arguments?.[1],n);if(t.registrationVerbName!==`addEventListener`||o!==`removeEventListener`)return!1;let s=A(t.node.callee);if(!j(s,`MemberExpression`)||!Ff(s.object,n)||!Ff(a.object,n)||e===null||e!==r||!ef(t.node.arguments?.[2],i.arguments?.[2],n)||!zf(i,c,n))return!1}}if(o===`on`){let e=i.arguments?.[1];return j(e,`Literal`)&&e.value===null}if(o===`removeEventListener`||o===`removeListener`||o===`off`){let e=j(t.node,`CallExpression`)&&Kp(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=j(t.node,`CallExpression`)?t.node.arguments?.[+!e]:null;return a!==null&&Zd(r,n)===a||s!==null&&Wf(r,n)===Wf(s,n)}return o===`unobserve`&&t.eventKey!==null?c===t.eventKey:!0},Jp=(e,t)=>t.has(e)||Fp.has(e),Yp=(e,t)=>{let n=M(e);if(!n||!D(n))return!1;let r=n.parent;if(!j(r,`CallExpression`)||!qd(r,t))return!1;if(!j(n.body,`BlockStatement`))return Wf(n.body,t)===e;let i=!1;return Pd(n.body,n=>{j(n,`ReturnStatement`)&&n.argument&&Wf(n.argument,t)===e&&(i=!0)}),i},Xp=(e,t)=>{if(sm(e,t)||Yp(e,t))return!0;let n=Rc(e);if(!n)return!1;let r=t.scopes.symbolFor(n);return r?r.references.some(t=>M(t.identifier)!==e):!1},jde=(e,t,n)=>{if(!D(e)||e.async||e.generator)return[];let r=M(t.node);if(!r||!D(r))return[];let i=new Map,a=e=>{let t=y(e),a=t.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==t)return;let o=tf(a.left,n),s=G(a.left,n),c=M(a),l=b(a);if(!o&&j(a.left,`MemberExpression`)){let e=P(a.left),t=A(a.left.object),r=j(t,`Identifier`)?n.scopes.symbolFor(t):null;if(!e||!r||!c||!D(c))return;for(let t of r.references){let r=y(t.identifier),a=r.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==r||!tf(a.left,n)||M(a)!==c)continue;let o=G(a.left,n),s=b(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=Rc(e),s=o?n.scopes.symbolFor(o):null;for(let e of s?.references??[])a(e.identifier);return S(r.body,t=>{if(t!==r.body&&D(t))return!1;j(t,`AssignmentExpression`)&&Wf(t.right,n)===e&&a(t.right)}),[...i.values()]},Mde=(e,t,n)=>$p(t.node,[e.assignmentNode],e.retainedFunction,n)||xf(t.node,[e.assignmentNode],n),Nde=(e,t,n)=>{let r=!1;return S(e.retainedFunction.body,i=>{if(r||i!==e.retainedFunction.body&&D(i))return!1;if(!j(i,`AssignmentExpression`)||i===e.assignmentNode||G(i.left,n)!==e.refCurrentKey||!rd(t.node,i,e.retainedFunction,n))return;let a=Wf(i.right,n);if(!a||!D(a)||!$f(a,t,n))return r=!0,!1}),r},Pde=(e,t,n)=>{let r=M(e.retainedFunction);if(!r||!D(r))return!1;let i=t=>{if(!D(t))return!1;let r=!1;return S(t.body,i=>{if(r||i!==t.body&&D(i))return!1;if(j(i,`CallExpression`)&&G(i.callee,n)===e.refCurrentKey){let a=y(i),o=a.parent,s=j(t.body,`BlockStatement`)&&j(o,`ExpressionStatement`)&&o.parent===t.body,c=t.body===a,l=!!ap(i,t,e.refCurrentKey,n);if((s||c||l)&&!Ude(t,i,e.refCurrentKey,n))return r=!0,!1}}),r},a=e=>{if(!D(e))return!1;if(!j(e.body,`BlockStatement`)){let t=Qp(e.body,n);return!!(t&&i(t))}let t=[];return Pd(e.body,e=>{if(!j(e,`ReturnStatement`)||!e.argument)return;let r=Qp(e.argument,n);!r||!i(r)||t.push(e)}),po(e,t,n)},o=!1;return S(r.body,e=>{if(o)return!1;if(!j(e,`CallExpression`)||M(e)!==r||!E(e,`useEffect`,n.scopes))return;let t=pr(e);if(t&&a(t))return o=!0,!1}),o},Fde=(e,t,n)=>{if(!zp(e.retainedFunction,n)&&!(()=>{if(!D(e.retainedFunction))return!1;let r=y(e.retainedFunction).parent;if(!j(r,`CallExpression`)||!E(r,`useCallback`,n.scopes))return!1;let i=e.retainedFunction.params?.[0],a=G(i,n);return!a||t.receiverKey!==a?!1:Vp(e.retainedFunction,n)})())return!1;let r=[];return S(e.retainedFunction.body,t=>{if(t!==e.retainedFunction.body&&D(t))return!1;j(t,`CallExpression`)&&G(t.callee,n)===e.refCurrentKey&&r.push(t)}),$p(t.node,r,e.retainedFunction,n)},Ide=(e,t,n)=>{let r=M(e);return r?jde(r,t,n).some(e=>Mde(e,t,n)&&!Nde(e,t,n)&&(Pde(e,t,n)||Fde(e,t,n))):!1},Lde=(e,t,n,r)=>{if(n.kind!==`subscribe`||n.registrationVerbName!==`addEventListener`||n.receiverKey===null||n.eventKey===null||!j(n.node,`CallExpression`)||!D(t)||t.async||t.generator||!j(t.body,`BlockStatement`)||!po(t,[e],r))return!1;let i=j(e,`ChainExpression`)?e.expression:e;if(!j(i,`CallExpression`)||!ef(n.node.arguments?.[2],i.arguments?.[2],r))return!1;let a=M(t);if(!a||!D(a))return!1;let o=[];return S(a.body,e=>{if(e!==a.body&&D(e))return!1;if(!j(e,`CallExpression`))return;let i=vf(e,r);i.registrationVerbName===`addEventListener`&&i.receiverKey===n.receiverKey&&Wf(e.arguments?.[1],r)===t&&o.push(e)}),o.some(e=>e===n.node)?!0:xf(n.node,o,r)||$p(n.node,o,a,r)},Rde=(e,t,n)=>{if(!H(e,n))return!1;let r=M(e);if(!r||r===M(t.node)||Ide(e,t,n))return!0;let i=M(t.node);return i&&D(i)&&am(i,n)&&pfe(i,r,n)?ffe(i,r,t,n):Lde(e,r,t,n)?!0:Xp(r,n)},Zp=(e,t)=>{let n=e.node;for(;n.parent;)n=n.parent;let r=Wd.get(t);r||(r=new WeakMap,Wd.set(t,r));let i=r.get(n);if(!i){let e=new Map,t=[];S(n,n=>{let r=j(n,`ChainExpression`)?n.expression:n;if(!j(r,`CallExpression`))return;let i=j(r.callee,`ChainExpression`)?r.callee.expression:r.callee;if(j(i,`Identifier`)){let r=e.get(i.name)??[];r.push(n),e.set(i.name,r),t.push(n)}else Lp(n)&&t.push(n)}),i={identifierCallsByName:e,potentialNonTimerCalls:t},r.set(n,i)}let a;a=e.kind===`timer`?[...ze].flatMap(e=>i.identifierCallsByName.get(e)??[]):i.potentialNonTimerCalls;let o=!1,s=n=>{if(o)return!1;if(qp(n,e,t)&&Rde(n,e,t))return o=!0,!1};for(let e of a)if(s(e)===!1)break;return o},Qp=(e,t)=>{let n=Wf(e,t);return D(n)?n:!j(n,`CallExpression`)||!E(n,`useCallback`,t.scopes)?null:pr(n)},zde=(e,t,n)=>{if(!D(e)||t.kind!==`subscribe`||t.registrationVerbName!==`addEventListener`||t.handlerKey===null||!t.receiverKey?.startsWith(`global:`)||!t.eventKey?.startsWith(`literal:`))return null;let r=b(t.node),i=n.cfg.cfgFor(e),a=i?.blockOf(t.node);if(r===null||!i||!a)return null;let o=[];return S(e.body,s=>{if(s!==e.body&&D(s))return!1;if(!j(s,`AssignmentExpression`)||s.operator!==`=`)return;let c=b(s),l=A(s.left);if(c===null||c>=r||i.blockOf(s)!==a||!j(l,`MemberExpression`)||!jd(l,n.scopes))return;let u=G(l,n),d=G(l.object,n),f=A(s.right);if(!u||!d||!j(f,`ObjectExpression`))return;let p=f.properties??[];if(!p.some(e=>!j(e,`Property`)))for(let e of p){if(!j(e,`Property`))continue;let r=P(e);if(r&&G(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},$p=(e,t,n,r)=>{let i=r.cfg.cfgFor(n),a=i?.blockOf(e),o=b(e);if(!i||!a||o===null)return!1;let s=new Set(t.flatMap(e=>{if(r.cfg.enclosingFunction(e)!==n)return[];let t=b(e);if(t===null||t>=o)return[];let a=i.blockOf(e);return a?[a]:[]}));if(s.size===0)return!1;if(s.has(a))return!0;let c=new Set([i.entry]),l=[i.entry];for(;l.length>0;){let e=l.pop();if(!e)break;if(!s.has(e)){if(e===a)return!1;for(let t of e.successors)c.has(t.to)||(c.add(t.to),l.push(t.to))}}return!0},Bde=(e,t,n,r)=>{if(!D(e))return!1;let i=e.body,a=[];return S(i,e=>{if(e!==i&&D(e))return!1;j(e,`CallExpression`)&&Qp(e.callee,r)===t&&a.push(e)}),$p(n,a,e,r)},Vde=(e,t,n,r,i,a)=>{if(!D(t))return!1;let o=j(e,`ChainExpression`)?e.expression:e;if(!j(o,`CallExpression`)||!j(o.callee,`MemberExpression`)||o.callee.computed||!j(o.callee.property,`Identifier`)||o.callee.property.name!==`removeEventListener`||!j(n.node,`CallExpression`)||n.node.arguments?.[2]!==void 0||o.arguments?.[2]!==void 0)return!1;let s=y(e).parent,c=s?.parent,l=c?.parent,u=c===t.body,d=!!(j(c,`BlockStatement`)&&j(l,`IfStatement`)&&l.consequent===c&&l.alternate===null&&G(l.test,a)===i);return!j(s,`ExpressionStatement`)||!j(t.body,`BlockStatement`)||!u&&!d?!1:n.receiverKey!==null&&n.receiverKey===G(o.callee.object,a)&&n.eventKey!==null&&n.eventKey===G(o.arguments?.[0],a)&&G(o.arguments?.[1],a)===r},Hde=(e,t,n)=>{let r=e.parent,i=j(r,`BlockStatement`)?r.parent:r,a=j(r,`BlockStatement`)?r:e;if(!j(i,`IfStatement`)||i.consequent!==a||i.alternate!==null)return!1;let o=A(i.test);return j(o,`UnaryExpression`)&&o.operator===`!`&&G(o.argument,n)===t},Ude=(e,t,n,r)=>{if(!D(e))return!0;let i=b(t);if(i===null)return!0;let a=!1;return S(e.body,t=>{if(a||t!==e.body&&D(t))return!1;if(!j(t,`ReturnStatement`))return;let o=b(t);if((o===null||o<i)&&!Hde(t,n,r))return a=!0,!1}),a},Wde=(e,t,n,r,i)=>{if(!D(e)||!D(t)||e.async||e.generator)return!1;let a=zde(n,r,i);if(!a||!Bde(n,e,a.assignmentNode,i))return!1;let o=null;if(S(e.body,t=>{if(o||t!==e.body&&D(t))return!1;if(Vde(t,e,r,a.handlerKey,a.refCurrentKey,i))return o=t,!1}),!o||Ude(e,o,a.refCurrentKey,i))return!1;let s=!1;return S(t.body,t=>{if(s)return!1;if(j(t,`UnaryExpression`)&&t.operator===`delete`){let e=A(t.argument);return G(e,i)===a.handlerKey||j(e,`MemberExpression`)&&G(e.object,i)===a.refCurrentKey?(s=!0,!1):void 0}if(j(t,`CallExpression`))return(t.arguments??[]).some(e=>{let t=G(e,i);return t!==null&&(t===a.refKey||t===a.refCurrentKey)})?(s=!0,!1):void 0;if(!j(t,`AssignmentExpression`))return;let o=A(t.left);if(j(o,`MemberExpression`)&&o.computed&&G(o.object,i)===a.refCurrentKey)return s=!0,!1;let c=G(t.left,i);if(c===a.handlerKey)return s=!0,!1;if(c!==a.refCurrentKey)return;let l=A(t.right);if(j(l,`Literal`)&&l.value===null&&M(t)===e)return;let u=(j(l,`ObjectExpression`)?l:null)?.properties??[],d=u.every(e=>j(e,`Property`))&&u.some(e=>j(e,`Property`)&&`${a.refCurrentKey}.${P(e)??``}`===a.handlerKey&&G(e.value,i)===r.handlerKey);if(M(t)!==n||!d)return s=!0,!1}),!s},Gde=(e,t,n,r,i)=>{let a=e=>{let a=Qp(e,i);return!!(a&&Wde(a,t,n,r,i))};if(!D(e))return!1;if(!j(e.body,`BlockStatement`))return a(A(e.body));let o=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&a(A(e.argument))&&o.push(e)}),po(e,o,i)},Kde=(e,t,n)=>{let r=Rc(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=pr(e);return t&&D(t)?[t]:[]}));return i.references.every(e=>{let n=y(e.identifier),r=n.parent,i=j(r,`CallExpression`)?M(r):null;if(j(r,`CallExpression`)&&r.callee===n&&i&&D(i)&&a.has(i))return!0;let o=n.parent,s=o?.parent;return!!(j(o,`ArrayExpression`)&&j(s,`CallExpression`)&&s.arguments?.[1]===o&&t.includes(s))})},em=(e,t,n,r)=>{if(!D(e)||!j(n.node,`CallExpression`))return!1;let i=n.node.arguments?.[0],a=i&&k(i)?A(i):null,o=a?D(a)?a:Wf(a,r):null;if(!o||!D(o))return!1;let s=(e,i=new Set)=>{if(!D(e)||i.has(e))return!1;let a=new Set(i);a.add(e);let c=e.parent;if(j(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!E(c,`useCallback`,r.scopes)){if(z(c,o)||lp(c,n.node,t))return!0;let e=M(c);return!!(e&&e!==t&&s(e,a))}let l=Rc(e),u=l?r.scopes.symbolFor(l):null;if(!u||u.references.length===0)return!1;let d=u.references.filter(e=>{let t=y(e.identifier).parent,n=t?.parent;return!(j(t,`ArrayExpression`)&&j(n,`CallExpression`)&&n.arguments?.[1]===t)});return d.length>0&&d.every(e=>{let r=y(e.identifier),i=r.parent;if(!j(i,`CallExpression`)||i.callee!==r)return!1;if(z(i,o)||lp(i,n.node,t))return!0;let c=M(i);return!!(c&&c!==t&&s(c,a))})};if(s(e))return!0;let c=e.parent,l=[];if(j(c,`CallExpression`)&&c.arguments.some(t=>t===e)&&!E(c,`useCallback`,r.scopes))l=[c];else{let t=Rc(e),n=t?r.scopes.symbolFor(t):null;if(!n||n.references.length===0)return!1;for(let e of n.references){let t=y(e.identifier),n=t.parent;if(!j(n,`CallExpression`)||!n.arguments.some(e=>e===t))return!1;l.push(n)}}return l.length>0&&l.every(e=>{if(z(e,o)||lp(e,n.node,t))return!0;let r=M(e);return!!(r&&r!==t&&s(r))})},qde=(e,t,n,r)=>{if(!D(t))return!1;let i=t.parent;if(!j(i,`CallExpression`)||pr(i)!==t||!qd(i,r))return!1;let a=e.parent??null;for(;a&&a!==t;){if(j(a,`IfStatement`)&&z(e,a.consequent)){let n=Wf(A(a.test),r)??A(a.test);if(j(n,`BinaryExpression`)&&(n.operator===`===`||n.operator===`==`)){let i=tf(n.left,r),o=tf(n.right,r),s=i??o,c=A(i?n.right:n.left),l=j(c,`Identifier`)&&c.name===`undefined`&&r.scopes.isGlobalReference(c),u=s?.initializer?A(s.initializer):null,d=j(u,`CallExpression`)&&u.arguments[0]&&k(u.arguments[0])?A(u.arguments[0]):null;if(s&&!(i&&o)&&l&&d&&j(d,`Identifier`)&&d.name===`undefined`&&r.scopes.isGlobalReference(d)){let n=[];S(t.body,e=>{j(e,`AssignmentExpression`)&&e.operator===`=`&&tf(e.left,r)?.id===s.id&&n.push(e)});let i=n.filter(e=>{let t=A(e.right);return!(j(t,`Identifier`)&&t.name===`undefined`&&r.scopes.isGlobalReference(t))}),o=!1,c=e.parent??null,l=new Set(i.flatMap(e=>{let t=A(e.right);return j(t,`Identifier`)?[t.name]:[]})),u=e=>{let t=A(e);if(j(t,`LogicalExpression`)&&t.operator===`&&`)return u(t.left)||u(t.right);if(!j(t,`CallExpression`)||fr(t)!==`isArray`)return!1;let n=t.arguments[0];if(!n||!k(n))return!1;let r=A(n);return j(r,`Identifier`)&&l.has(r.name)};for(;c&&c!==a;){if(j(c,`IfStatement`)&&z(e,c.consequent)&&u(c.test)){o=!0;break}c=c.parent??null}if(o&&$p(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(j(o,`IfStatement`)&&z(e,o.consequent)){let e=A(o.test),t=j(e,`UnaryExpression`)&&e.operator===`!`,n=tf(t?e.argument:e,r),i=n?.initializer?A(n.initializer):null,a=j(i,`CallExpression`)&&i.arguments[0]?Cn(A(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=M(c.declarationNode);if(!u||!D(u))return!1;let d=[],f=!1;return S(u.body,e=>{if(f)return!1;if(j(e,`UpdateExpression`)&&tf(e.argument,r)?.id===c.id)return f=!0,!1;if(!(!j(e,`AssignmentExpression`)||tf(e.left,r)?.id!==c.id)){if(e.operator!==`=`||Cn(A(e.right))===null)return f=!0,!1;d.push(e)}}),f||!$p(e,d.filter(e=>Cn(A(e.right))===!l),t,r)?!1:d.every(e=>{if(Cn(A(e.right))===!l)return!0;let t=M(e);if(!t||!D(t))return!1;let i=t.parent;if(!j(i,`ReturnStatement`)||i.argument!==t)return!1;let a=M(i);return!!(a&&D(a)&&np(a,n,r))})},Jde=(e,t,n,r)=>{let i=M(e);if(!i||!D(i))return!1;let a=j(n.node,`CallExpression`)?n.node.arguments?.[0]:null,o=a&&k(a)?A(a):null,s=o?D(o)?o:x(o,r.scopes):null;if(s&&i===s)return!0;if(s){let e=Rc(i),a=(e?r.scopes.symbolFor(e):null)?.references.filter(e=>{let t=y(e.identifier).parent,n=t?.parent;return!(j(t,`ArrayExpression`)&&j(n,`CallExpression`)&&n.arguments?.[1]===t)});if(a&&a.length>0&&a.every(e=>{let r=y(e.identifier),i=r.parent;return!!(j(i,`CallExpression`)&&i.arguments.some(e=>e===r)&&(z(i,s)||lp(i,n.node,t)))}))return!0;let o=M(i);if(o&&o!==t&&D(o)&&!j(o.body,`BlockStatement`)&&A(o.body)===i){let e=Rc(o),i=(e?r.scopes.symbolFor(e):null)?.references??[];if(i.length>0&&i.every(e=>{let i=y(e.identifier),a=i.parent,o=a?.parent,c=o?M(o):null;return!!(j(a,`CallExpression`)&&a.callee===i&&j(o,`CallExpression`)&&o.arguments.some(e=>e===a)&&(z(o,s)||lp(o,n.node,t)||c&&em(c,t,n,r)))}))return!0}}if(tm(i,i,t,n,r)||em(i,t,n,r)||qde(e,i,n,r)||bp(i,{...n,node:e},r))return!0;let c=i.parent;return!!(j(c,`CallExpression`)&&pr(c)===i&&qd(c,r)&&np(i,n,r))},tm=(e,t,n,r,i)=>{let a=e.parent;if(!j(a,`AssignmentExpression`)||a.operator!==`=`||a.right!==e||!nf(a.left,i))return!1;let o=G(a.left,i),s=M(t);if(!o||!s||!D(s))return!1;let c=!1,l=!1;return S(s.body,e=>{if(l)return!1;if(!j(e,`MemberExpression`)||G(e,i)!==o)return;let a=y(e),s=a.parent;if(j(s,`AssignmentExpression`)&&s.left===a)return Qp(s.right,i)===t?void 0:(l=!0,!1);if(j(s,`IfStatement`)&&s.test===a){let e=!1;if(S(s.consequent,t=>{if(j(t,`CallExpression`)&&G(A(t.callee),i)===o)return e=!0,!1}),e)return}if(j(s,`CallExpression`)&&s.callee===a&&Jde(s,n,r,i)){c=!0;return}return l=!0,!1}),c&&!l},Yde=(e,t,n)=>{let r=Rc(e),i=r?n.scopes.symbolFor(r):null;return!i||i.references.length===0?tm(e,e,e,t,n):i.references.every(r=>{let i=y(r.identifier),a=i.parent;if(j(a,`CallExpression`)&&a.callee===i){let r=M(a),i=!!(r&&em(r,e,t,n)),o=Jde(a,e,t,n);return i||o}let o=i.parent,s=o?.parent;return j(o,`ArrayExpression`)&&j(s,`CallExpression`)&&s.arguments?.[1]===o?!0:tm(i,e,e,t,n)})},nm=(e,t,n)=>{let r=M(e);if(!r||!D(r))return!1;let i=Gd.get(n);i||(i=new WeakMap,Gd.set(n,i));let a=i.get(r);if(!a){let e=[];S(r.body,t=>{j(t,`CallExpression`)&&M(t)===r&&qd(t,n)&&e.push(t)}),a=e,i.set(r,a)}if(t.kind===`timer`){let r=xue(t.node,n),i=bp(e,t,n),o=e.parent,s=!!(j(o,`CallExpression`)&&pr(o)===e&&qd(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=pr(t);return!!(r&&np(r,e,n))}));return!!(r.size>0&&l&&(c||gde(e,t,n)||Yde(e,t,n)||Kde(e,a,n)))}for(let i of a){let a=y(i).parent;if(!j(a,`ExpressionStatement`)||a.parent!==r.body)continue;let o=pr(i);if(o&&Gde(o,r,e,t,n))return!0}return!1},Xde=(e,t)=>{let n=Rc(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=y(e.identifier);for(;j(n.parent,`ConditionalExpression`)&&(n.parent.consequent===n||n.parent.alternate===n);)n=y(n.parent);let r=n.parent;if(j(r,`CallExpression`)&&r.arguments?.[0]===n)return E(r,`useSyncExternalStore`,t.scopes);let a=r?.parent;return!!(j(r,`VariableDeclarator`)&&r.init===n&&j(r.id,`Identifier`)&&j(a,`VariableDeclaration`)&&a.kind===`const`&&i(r.id))}))};return i(n)},Zde=new Set([`abort`,`cancel`,`close`,`destroy`,`disconnect`,`dispose`,`forEach`,`log`,`remove`,`terminate`,`warn`]),Qde=e=>{if(!j(e,`CallExpression`))return!1;let t=e.arguments[0],n=e.arguments[1],r=n?A(n):null;if(!t||!D(t)||!r||!j(r,`Literal`)||r.value!==0)return!1;let i=!1,a=!1;return S(t.body,e=>{if(a)return!1;if(!j(e,`CallExpression`))return;let t=fr(e);if(!t||!Zde.has(t))return a=!0,!1;t!==`forEach`&&t!==`log`&&t!==`warn`&&(i=!0)}),i&&!a},$de=(e,t)=>{if(!e||!D(e))return!1;let n=Rc(e),r=n?t.scopes.symbolFor(n):null;return r?r.references.some(t=>{let n=y(t.identifier),r=n.parent;return!!(j(r,`CallExpression`)&&r.arguments[1]===n&&Id(r)===`addEventListener`&&M(r)===M(e))}):!1},efe=(e,n)=>{if(!j(e,`CallExpression`)||!n.filename)return!1;let r=A(e.callee);if(!j(r,`Identifier`))return!1;let i=n.scopes.symbolFor(r),a=i?Me(i):null,o=i?t(i.declarationNode):null;if(!a||typeof a.source.value!=`string`||!o)return!1;let s=Ye(n.filename,a.source.value,o);if(!s||!D(s.functionNode))return!1;let c=new Set,l=e=>{if(!D(e)||c.has(e))return!1;c.add(e);let t=!0;return S(e.body,n=>{if(!t||n!==e.body&&D(n))return!1;if(j(n,`CallExpression`)){let e=A(n.callee);if(!j(e,`Identifier`))return t=!1,!1;let r=[];return S(s.programNode,t=>{if(D(t)&&Rc(t)?.name===e.name)return r.push(t),!1}),r.length!==1||!l(r[0])?(t=!1,!1):void 0}if(j(n,`NewExpression`)||j(n,`AssignmentExpression`)||j(n,`UpdateExpression`)||j(n,`AwaitExpression`)||j(n,`YieldExpression`)||j(n,`ThrowStatement`)||j(n,`UnaryExpression`)&&n.operator===`delete`)return t=!1,!1}),t};return l(s.functionNode)},tfe=(e,t,n)=>{if(!D(t)||!efe(e,n))return!1;let r=e.parent;for(;r&&r!==t.body;){if(j(r,`AssignmentExpression`)&&z(e,r.right)&&nf(A(r.left),n))return!0;r=r.parent}return!1},nfe=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=e.arguments[0],r=e.arguments[1],i=r?A(r):null;if(!n||!D(n)||!i||!j(i,`Literal`)||typeof i.value!=`number`||i.value<0||i.value>300)return!1;let a=!1,o=!1;return S(n.body,e=>{if(o||e!==n.body&&D(e))return!1;if(j(e,`CallExpression`)&&tfe(e,n,t))return;if(j(e,`CallExpression`)||j(e,`UpdateExpression`))return o=!0,!1;if(!j(e,`AssignmentExpression`))return;let r=A(e.left);if(j(r,`MemberExpression`)&&nf(r,t)){a=!0;return}return o=!0,!1}),!o&&(a||$de(M(e),t))},rfe=(e,t)=>{let n=y(e);for(;j(n.parent,`SequenceExpression`)&&n.parent.expressions.at(-1)===n;)n=y(n.parent);let r=n.parent;return j(r,`ReturnStatement`)&&r.argument===n&&M(r)===t?r:null},rm=(e,t,n,r)=>{if(!t)return!1;let i=e,a=i.parent;for(;a;){if(j(a,`ReturnStatement`)&&a.argument===i||j(a,`ArrowFunctionExpression`)&&a.body===i&&n)return!0;if(j(a,`ChainExpression`)||j(a,`TSAsExpression`)||j(a,`TSNonNullExpression`)){i=a,a=i.parent;continue}if(j(a,`ConditionalExpression`)&&(a.consequent===i||a.alternate===i)||j(a,`LogicalExpression`)&&(a.right===i||a.left===i&&a.operator!==`&&`)){i=a,a=i.parent;continue}if(j(a,`VariableDeclarator`)&&a.init===i&&j(a.id,`Identifier`)&&j(a.parent,`VariableDeclaration`)&&a.parent.kind===`const`){let t=M(e),n=r.scopes.symbolFor(a.id);return!t||!n?!1:xf(e,n.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=rfe(e.identifier,t);return n?[n]:[]}),r)}return!1}return!1},ife=(e,t,n)=>{if(!D(e))return null;let r=e.body;if(!r)return null;let i=null,a=n?.allowReturnedResourceEscape!==!1&&!e.async&&!sm(e,t),o=a&&n?.requireCallableReturnedResource!==!0,s=Xde(e,t),c=r=>{if(s)return Mp(e,r,t);if(r.kind!==`timer`){let i=Vp(e,t);return!!(n?.allowReturnedResourceEscape===!0||i||Hp(e,t))&&np(e,r,t,i)||Zp(r,t)||nm(e,r,t)}let i=Vp(e,t);if((n?.allowReturnedResourceEscape===!0||i||Hp(e,t))&&np(e,r,t,i)||!n?.isEffectInvoked&&(af(r.node,t)!==null||bp(e,r,t))&&Zp(r,t)||jp(r,t)||nm(e,r,t))return!0;let a=M(e),o=a?.parent;return!!(a&&j(o,`CallExpression`)&&qd(o,t)&&Mp(a,r,t))};return S(r,e=>{if(i!==null||D(e)||!H(e,t))return!1;if(Jd(e)&&!rm(e,o,!1,t)){let n={kind:`socket`,node:e,resourceName:j(e.callee,`Identifier`)?e.callee.name:`WebSocket`,handleKey:cf(e,t),receiverKey:null,registrationVerbName:null,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(j(e,`CallExpression`)){if(j(e.callee,`Identifier`)&&(e.callee.name===`setInterval`||n?.includeOneShotTimers===!0&&e.callee.name===`setTimeout`&&t.scopes.isGlobalReference(e.callee))&&(n?.allowReturnedTimerEscape===!1||!rm(e,!0,a,t))&&!Qde(e)&&!nfe(e,t)){let n={kind:`timer`,node:e,resourceName:e.callee.name,handleKey:cf(e,t,!0),receiverKey:null,registrationVerbName:e.callee.name,eventKey:null,handlerKey:null};if(!c(n))return i=n,!1}if(Ld(e)&&(!rm(e,a,a,t)||n?.requireCallableReturnedResource===!0&&!Rd(e))){let n=vf(e,t),r={kind:`subscribe`,node:e,resourceName:n.registrationVerbName??`subscribe`,handleKey:cf(e,t),...n};return!xde(e,t)&&!c(r)&&(i=r),!1}}}),i},im=(e,t)=>{if(!D(e)||e.generator)return null;let n=y(e),r=n.parent;if(!j(r,`AssignmentExpression`)||r.operator!==`=`||r.right!==n)return null;let i=jd(A(r.left),t.scopes);if(!i)return null;let a=W(r,t.scopes);return!D(a)||M(r)!==a||M(i.bindingIdentifier)!==a||!H(r,t)?null:{assignmentNode:r,functionNode:e,refSymbol:i}},am=(e,t)=>im(e,t)?.refSymbol??null,afe=(e,t,n)=>{let r=y(e),i=r.parent;if(j(i,`VariableDeclarator`)&&i.init===r&&j(i.id,`Identifier`)&&j(i.parent,`VariableDeclaration`)&&i.parent.kind===`const`){let r=n.scopes.symbolFor(i.id);return r?xf(e,r.references.flatMap(e=>{if(e.flag!==`read`)return[];let n=rfe(e.identifier,t);return n?[n]:[]}),n):!1}for(;;){let e=r.parent;if(j(e,`ConditionalExpression`)&&(e.consequent===r||e.alternate===r)){r=y(e);continue}if(j(e,`SequenceExpression`)&&e.expressions.at(-1)===r){r=y(e);continue}if(j(e,`LogicalExpression`)&&e.right===r){r=y(e);continue}break}let a=r.parent;return!!(j(a,`ReturnStatement`)&&a.argument===r&&M(a)===t||j(t,`ArrowFunctionExpression`)&&t.body===r)},ofe=(e,t,n)=>j(e,`CallExpression`)&&jd(A(e.callee),n.scopes)?.id===t.id,sfe=(e,t)=>{let n=new Map;S(e.body,e=>{if(!D(e))return;let r=im(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=>!xf(e.assignmentNode,r.filter(t=>t!==e).map(e=>e.assignmentNode),t));i.length===0?n.delete(e):n.set(e,i)}return n},cfe=(e,t,n)=>{if(!D(e))return[];let r=[],i=[];return S(e.body,a=>{if(a!==e.body&&D(a))return!1;j(a,`AssignmentExpression`)&&H(a,n)&&jd(A(a.left),n.scopes)?.id===t.id&&r.push(a),ofe(a,t,n)&&H(a,n)&&i.push(a)}),i.filter(t=>!$p(t,r,e,n))},lfe=(e,t,n)=>{let r=e.get(t);return r?!r.doesEffectOwnEveryResult||n?!1:(r.doesEffectOwnEveryResult=!1,!0):(e.set(t,{doesEffectOwnEveryResult:n}),!0)},ufe=(e,t)=>{let n=Hd.get(t);n||(n=new WeakMap,Hd.set(t,n));let r=n.get(e);if(r)return r;let i=sfe(e,t),a=new Map;S(e.body,n=>{if(n!==e.body&&D(n))return!1;if(!j(n,`CallExpression`)||M(n)!==e||!qd(n,t))return;let r=pr(n);if(D(r))for(let e of i.values()){let n=e[0]?.refSymbol;if(n)for(let e of cfe(r,n,t))lfe(a,n.id,!r.async&&afe(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 cfe(n.functionNode,i,t)){let s=r.doesEffectOwnEveryResult&&!n.functionNode.async&&afe(e,n.functionNode,t);lfe(a,i.id,s)&&(o=!0)}}}}let s={callbackDefinitionsByRefSymbolId:i,usageByRefSymbolId:a};return n.set(e,s),s},dfe=(e,t)=>{if(!D(e))return null;let n=im(e,t),r=W(e,t.scopes);if(!n||!D(r))return null;let i=ufe(r,t);return i.callbackDefinitionsByRefSymbolId.get(n.refSymbol.id)?.some(t=>t.functionNode===e)?i.usageByRefSymbolId.get(n.refSymbol.id)??null:null},ffe=(e,t,n,r)=>{if(!D(e)||e.async||dfe(e,r)?.doesEffectOwnEveryResult!==!0||!j(e.body,`BlockStatement`))return!1;let i=e=>{let n=Qp(Rn(e),r);if(!n)return!1;if(n===t)return!0;if(!D(n))return!1;let i=[];return S(n.body,e=>{if(e!==n.body&&D(e))return!1;j(e,`CallExpression`)&&Qp(e.callee,r)===t&&i.push(e)}),po(n,i,r)},a=[];return Pd(e.body,e=>{j(e,`ReturnStatement`)&&e.argument&&i(e.argument)&&a.push(e)}),xf(n.node,a,r)},pfe=(e,t,n)=>{if(!D(e)||!j(e.body,`BlockStatement`))return!1;let r=!1;return Pd(e.body,e=>{r||!j(e,`ReturnStatement`)||!e.argument||S(e.argument,e=>{if(Qp(e,n)===t)return r=!0,!1})}),r},om=e=>j(e,`FunctionDeclaration`)?xd(e)!==null:!j(e,`ArrowFunctionExpression`)&&!j(e,`FunctionExpression`)||!j(e.parent,`VariableDeclarator`)?!1:xd(e)!==null,mfe=e=>{let t=y(e),n=t.parent;return j(n,`JSXExpressionContainer`)&&n.expression===t&&kd(n.parent)},sm=(e,t)=>{if(!D(e))return!1;let n=y(e),r=n.parent;if(j(r,`CallExpression`)&&r.arguments?.[0]===n&&_r(r,`useCallback`,t.scopes)&&mfe(r))return!0;let i=e.parent;if(mfe(e))return!0;if(!j(i,`Property`)||i.value!==e||i.computed)return!1;let a=P(i);if(!a||!/^on[A-Z]/.test(a))return!1;let o=i.parent;if(!j(o,`ObjectExpression`))return!1;let s=o.parent;return(j(s,`CallExpression`)&&s.arguments.some(e=>e===o)||j(s,`JSXExpressionContainer`))&&W(i,t.scopes)!==null},cm=(e,t)=>{if(!e)return{isDefinitelyUndefined:!0,truthiness:`falsy`};let n=A(e);return j(n,`Literal`)?{isDefinitelyUndefined:!1,truthiness:n.value?`truthy`:`falsy`}:j(n,`Identifier`)&&n.name===`undefined`&&t.scopes.isGlobalReference(n)||j(n,`UnaryExpression`)&&n.operator===`void`?{isDefinitelyUndefined:!0,truthiness:`falsy`}:j(n,`ArrayExpression`)||j(n,`ArrowFunctionExpression`)||j(n,`ClassExpression`)||j(n,`FunctionExpression`)||j(n,`NewExpression`)||j(n,`ObjectExpression`)?{isDefinitelyUndefined:!1,truthiness:`truthy`}:{isDefinitelyUndefined:!1,truthiness:`unknown`}},lm=(e,t,n)=>{let r=A(e),i=cm(r,n);if(i.truthiness!==`unknown`)return i.truthiness;if(j(r,`Identifier`)){let e=n.scopes.symbolFor(r);return e?t.get(e.id)?.truthiness??`unknown`:`unknown`}if(j(r,`UnaryExpression`)&&r.operator===`!`){let e=lm(r.argument,t,n);return e===`truthy`?`falsy`:e===`falsy`?`truthy`:`unknown`}if(j(r,`LogicalExpression`)){let e=lm(r.left,t,n),i=lm(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(j(r,`ConditionalExpression`)){let e=lm(r.test,t,n);if(e===`truthy`)return lm(r.consequent,t,n);if(e===`falsy`)return lm(r.alternate,t,n);let i=lm(r.consequent,t,n);return i===lm(r.alternate,t,n)?i:`unknown`}return j(r,`CallExpression`)&&j(r.callee,`Identifier`)&&r.callee.name===`Boolean`&&n.scopes.isGlobalReference(r.callee)&&r.arguments[0]&&k(r.arguments[0])?lm(r.arguments[0],t,n):`unknown`},hfe=(e,t,n,r)=>{let i=new Map;if(!D(e)||!t.isDirect)return i;for(let[a,o]of e.params.entries()){let e=t.call.arguments[a],s=e&&k(e)?e:null,c=null,l=cm(s,r);if(j(o,`Identifier`)?c=o:j(o,`AssignmentPattern`)&&j(o.left,`Identifier`)?(c=o.left,l.isDefinitelyUndefined&&(l=cm(o.right,r))):j(o,`RestElement`)&&j(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},gfe=(e,t,n,r)=>{if(!n.isDirect)return!1;let i=hfe(e,n,t,r),a=t,o=t.parent??null;for(;o&&o!==e;){if(j(o,`BlockStatement`)){let e=o.body.findIndex(e=>e===a);for(let t of o.body.slice(0,e))if(!(!j(t,`IfStatement`)||t.alternate||!Ad(t.consequent))&&lm(t.test,i,r)===`truthy`)return!0}let e=null,t=null;if(j(o,`IfStatement`)||j(o,`ConditionalExpression`)?(t=o.test,e=o.consequent===a?`truthy`:`falsy`):j(o,`LogicalExpression`)&&o.right===a&&o.operator!==`??`?(t=o.left,e=o.operator===`&&`?`truthy`:`falsy`):((j(o,`WhileStatement`)||j(o,`DoWhileStatement`))&&o.body===a||j(o,`ForStatement`)&&o.body===a&&o.test)&&(t=o.test,e=`truthy`),t&&e){let n=lm(t,i,r);if(n!==`unknown`&&n!==e)return!0}a=o,o=o.parent??null}return!1},_fe=(e,t)=>{if(!D(e))return[];let n=M(e);if(!n||!D(n))return[];let r=Ud.get(t);r||(r=new WeakMap,Ud.set(t,r));let i=r.get(n);if(i)return i.get(e)??[];let a=new Map,o=(e,t,n)=>{if(!e)return;let r=a.get(e)??[];r.push({call:t,isDirect:n}),a.set(e,r)};return S(n.body,e=>{if(!j(e,`CallExpression`)||M(e)!==n||!qd(e,t))return;let r=pr(e);!r||!D(r)||S(r.body,e=>{if(e!==r.body&&D(e))return!1;if(!(!j(e,`CallExpression`)||!H(e,t))){o(Qp(e.callee,t),e,!0);for(let n of e.arguments)!k(n)||!md(e,n)||o(Qp(n,t),e,!1)}})}),r.set(n,a),a.get(e)??[]},vfe=w({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=dfe(t,e);if(!n&&!Xp(t,e))return;let r=_fe(t,e),i=r.length>0,a=ife(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`&&(!H(a.node,e)||D(t)&&t.params.length>0&&!e.cfg.isUnconditionalFromEntry(a.node)&&r.every(n=>gfe(t,a.node,n,e))))return;let o=Kd[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(_r(n,`useCallback`,e.scopes)){let r=pr(n);r&&!sm(r,e)&&t(r);return}if(!qd(n,e))return;let r=pr(n);if(!r)return;let i=kue(r,Oue(r,e),e);if(i.length===0)return;let a=yde(r,i,e);if(!a)return;let o=Kd[a.kind],s=fr(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){om(e)&&t(e)},ArrowFunctionExpression(n){(om(n)||sm(n,e)||am(n,e))&&t(n)},FunctionExpression(n){(om(n)||sm(n,e)||am(n,e))&&t(n)}}}}),yfe=new Set([`window`,`globalThis`,`self`]),bfe=new Set([`clear`,`delete`,`pop`,`push`,`set`,`shift`,`sort`,`splice`,`unshift`]),xfe=e=>e.references.some(e=>{if(e.flag!==`read`)return!0;let t=y(e.identifier),n=t.parent;return!j(n,`MemberExpression`)||n.object!==t?!1:j(n.parent,`AssignmentExpression`)&&n.parent.left===n?!0:!!(j(n.parent,`CallExpression`)&&n.parent.callee===n&&bfe.has(C(n)??``))}),Sfe=(e,t)=>{let n=e,r=new Set;for(;;){let e=t.scopes.symbolFor(n);if(!e||r.has(e.id)||xfe(e))return null;r.add(e.id);let i=ac(e);if(!i)return n;let a=A(i);if(!j(a,`Identifier`))return n;n=a}},Cfe=e=>{let t=M(e);if(!t)return!1;let n=e.parent??null;for(;n&&n!==t;){if(j(n,`ConditionalExpression`)||j(n,`IfStatement`)||j(n,`LogicalExpression`)||j(n,`SwitchStatement`)||j(n,`ForStatement`)||j(n,`ForInStatement`)||j(n,`ForOfStatement`)||j(n,`WhileStatement`)||j(n,`DoWhileStatement`))return!1;n=n.parent??null}return n===t},wfe=(e,t,n)=>{let r=M(e);if(!r||!D(r))return null;let i=y(r),a=i.parent;if(!j(a,`CallExpression`)||!a.arguments.some(e=>e===i))return null;let o=A(a.callee);if(!j(o,`MemberExpression`)||C(o)!==`forEach`||r.async||!Cfe(a))return null;let s=A(o.object);if(!j(s,`Identifier`))return null;let c=Sfe(s,n);if(!c)return null;let l=bo({node:c,scopes:n.scopes});if(!l)return null;let u=new Set,d=e=>{let t=A(e);if(j(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=ac(e);return a&&!u.has(e.id)&&M(e.declarationNode)===r?(u.add(e.id),d(a)):bo({node:t,scopes:n.scopes})}if(j(t,`Literal`))return JSON.stringify(t.value);if(j(t,`MemberExpression`)){let e=d(t.object),n=C(t);return e&&n?`${e}.${n}`:null}if(j(t,`CallExpression`)){let e=A(t.callee);if(!j(e,`MemberExpression`)||C(e)!==`getElementById`)return null;let r=A(e.object);if(!j(r,`Identifier`)||r.name!==`document`||!n.scopes.isGlobalReference(r))return null;let i=t.arguments.map(e=>j(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(j(h,`IfStatement`)){let e=h.consequent===m?`truthy`:`falsy`,t=d(h.test);if(!t)return null;p.push(`${e}:${t}`)}else if(j(h,`ConditionalExpression`)||j(h,`LogicalExpression`)||j(h,`SwitchStatement`)||j(h,`ForStatement`)||j(h,`ForInStatement`)||j(h,`ForOfStatement`)||j(h,`WhileStatement`)||j(h,`DoWhileStatement`))return null;m=h,h=h.parent??null}return h===r?`${l}:${p.join(`&`)}:${f}`:null},um=(e,t,n)=>{let r=O(e,e.name);if(r&&!t.bindingIdentifiers.has(r.bindingIdentifier))return;let i=y(e),a=i.parent;if(!(j(a,`VariableDeclarator`)&&a.id===e)&&!(j(a,`VariableDeclarator`)&&a.init===i)&&!(j(a,`MemberExpression`)&&a.property===e&&!a.computed)&&!(j(a,`Property`)&&a.key===e&&a.value!==e&&!a.computed)){if(j(a,`MemberExpression`)&&a.object===i){let e=C(a);if(a.computed&&e===null){t.didEscape=!0;return}let r=a.parent;if(!j(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?wfe(r,e,n):null,a=e?bo({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?wfe(r,e,n):null,a=e?bo({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(j(a,`CallExpression`)&&a.arguments.some(e=>e===i)){let e=A(a.callee);if(j(e,`MemberExpression`)&&C(e)===`bind`&&a.arguments[0]===i)return}t.didEscape=!0}},Tfe=(e,t,n)=>{let r=!1;return xo(e,e=>{j(e,`Identifier`)&&n.symbolFor(e)?.bindingIdentifier===t&&(r=!0)}),r},Efe=(e,t,n,r)=>{if(!n)return!1;let i=A(e);if(!j(i,`MemberExpression`)||C(i)!==`target`)return!1;let a=A(i.object);if(!j(a,`Identifier`))return!1;let o=r.symbolFor(a)?.bindingIdentifier;if(!o)return!1;let s=M(a);if(!s||s===t||!D(s))return!1;let c=y(s),l=c.parent;if(!j(l,`CallExpression`)||!l.arguments.some(e=>e===c))return!1;let u=A(l.callee);return j(u,`MemberExpression`)&&C(u)===`forEach`&&Tfe(u.object,n,r)&&(s.params??[]).some(e=>r.symbolFor(e)?.bindingIdentifier===o)},Dfe=(e,t)=>{let n={didReleaseAll:!1,didReleaseObservedEntries:!1,releasedTargetKeys:new Set},r=e.arguments?.[0]?A(e.arguments[0]):null;if(!r||!j(r,`ArrowFunctionExpression`)&&!j(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||!j(s,`Identifier`))return n;let c=t.symbolFor(s)?.bindingIdentifier;return c&&xo(i,e=>{if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let a=A(r.object);if(!j(a,`Identifier`)||t.symbolFor(a)?.bindingIdentifier!==c)return;let s=C(r);if(s===`disconnect`){n.didReleaseAll=!0;return}if(s!==`unobserve`)return;let l=e.arguments?.[0];if(!l)return;if(Efe(l,i,o,t)){n.didReleaseObservedEntries=!0;return}let u=bo({node:l,scopes:t});u&&n.releasedTargetKeys.add(u)}),n},dm=(e,t)=>{let n=A(e),r=j(n,`Identifier`)?O(n,n.name)?.bindingIdentifier:null;return r!=null&&t.has(r)},Ofe=(e,t,n=new Set)=>{let r=A(e);if(n.has(r))return!1;if(n.add(r),j(r,`Identifier`)){let e=O(r,r.name)?.initializer;return e?Ofe(e,t,n):!1}let i=j(r,`CallExpression`)?A(r.callee):null,a=j(i,`MemberExpression`)?A(i.object):null;if(!j(r,`CallExpression`)||!j(i,`MemberExpression`)||C(i)!==`bind`||!j(a,`MemberExpression`)||C(a)!==`disconnect`)return!1;let o=r.arguments?.[0];return!!(o&&dm(a.object,t)&&dm(o,t))},kfe=(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=y(t.identifier),r=e.parent;if(!j(r,`CallExpression`)||!r.arguments.some(t=>t===e))continue;let i=A(r.callee);j(i,`MemberExpression`)&&C(i)===`push`&&n.add(r)}}if(n.size!==1)return null;let r=[...n][0];if(!r||e.observationCalls.some(e=>!fo(e,[r],t)))return null;let i=A(r.callee);if(!j(i,`MemberExpression`))return null;let a=A(i.object);if(!j(a,`Identifier`))return null;let o=t.scopes.symbolFor(a),s=o?.initializer?A(o.initializer):null;return!o||o.kind!==`const`||!j(s,`ArrayExpression`)||(s.elements?.length??0)!==0||M(o.declarationNode)!==M(e.construction)||!o.references.every(e=>{let t=y(e.identifier),n=t.parent,r=n?.parent;return!!(j(n,`MemberExpression`)&&n.object===t&&j(r,`CallExpression`)&&r.callee===n&&[`forEach`,`push`].includes(C(n)??``))})?null:bo({node:a,scopes:t.scopes})},Afe=(e,t)=>{if(!D(e)||e.async||e.generator)return!1;let n=e.params?.[0];if(!n||!j(n,`Identifier`))return!1;let r=t.scopes.symbolFor(n)?.bindingIdentifier;if(!r)return!1;let i=[];return xo(e,e=>{if(!j(e,`CallExpression`))return;let n=A(e.callee);if(!j(n,`MemberExpression`)||C(n)!==`disconnect`)return;let a=A(n.object);j(a,`Identifier`)&&t.scopes.symbolFor(a)?.bindingIdentifier===r&&i.push(e)}),po(e,i,t)},jfe=(e,t,n,r)=>{let i=e=>{if(!D(e)||e.async||e.generator)return!1;let t=[];return S(e.body,i=>{if(!j(i,`CallExpression`)||M(i)!==e)return;let a=A(i.callee);if(!j(a,`MemberExpression`)||C(a)!==`forEach`||bo({node:a.object,scopes:r.scopes})!==n)return;let o=i.arguments?.[0];o&&Afe(o,r)&&t.push(i)}),po(e,t,r)};if(!D(e))return!1;if(!j(e.body,`BlockStatement`)){let t=Ml(e.body,e,r.scopes);return t.length>0&&t.every(i)}let a=et(e).filter(e=>{if(!e.argument)return!1;let t=Ml(e.argument,e,r.scopes);return t.length>0&&t.every(i)});return t.every(e=>fo(e,a,r))},Mfe=(e,t,n)=>nd({context:n,effectCallback:e,resourceNode:t.construction,doesFunctionReleaseResource:e=>{if(!D(e))return!1;let r=[];return S(e.body,n=>{if(n!==e.body&&D(n))return!1;let i=j(n,`ChainExpression`)?n.expression:n,a=j(i,`CallExpression`)?A(i.callee):null;j(i,`CallExpression`)&&j(a,`MemberExpression`)&&C(a)===`disconnect`&&dm(a.object,t.bindingIdentifiers)&&r.push(n)}),po(e,r,n)}}),Nfe=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!D(n))return;let r=new Map;if(xo(n,t=>{if(!j(t,`NewExpression`))return;let n=A(t.callee);if(!(j(n,`Identifier`)?fn.has(n.name)&&!O(n,n.name):j(n,`MemberExpression`)&&j(A(n.object),`Identifier`)&&yfe.has(A(n.object).name)&&!O(n.object,A(n.object).name)&&fn.has(C(n)??``)))return;let i=y(t),a=i.parent;if(!j(a,`VariableDeclarator`)||a.init!==i||!(j(a.id,`Identifier`)&&a.id.name))return;let o=Dfe(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=Pl(t.bindingIdentifier,e.scopes);t.bindingIdentifiers=new Set(n);for(let e of n)r.set(e,t)}let i=new Set(r.values());xo(n,t=>{if(!j(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&um(t,i,e)});for(let t of Nl(n))xo(t,t=>{if(!j(t,`Identifier`))return;let n=O(t,t.name)?.bindingIdentifier,i=n?r.get(n):void 0;i&&um(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||!D(A(n))||xo(A(n),n=>{if(!j(n,`Identifier`))return;let i=O(n,n.name)?.bindingIdentifier;i&&r.get(i)===t&&um(n,t,e)})}let a=j(n.body,`BlockStatement`)?et(n).flatMap(e=>e.argument?[e.argument]:[]):[n.body];for(let t of i){a.some(e=>Ofe(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||Mfe(n,t,e))continue;let i=kfe(t,e);i&&jfe(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()`."})}}})}),Pfe=`cancelAnimationFrame`,fm=`collection-values:`,Ffe=new Set([`min`,`max`]),pm=e=>j(e,`CallExpression`)&&Lfe(e,`requestAnimationFrame`),Ife=new Set([`window`,`globalThis`,`self`]),Lfe=(e,t)=>{let n=A(e.callee);if(j(n,`Identifier`))return n.name===t&&!O(n,n.name);if(!j(n,`MemberExpression`)||C(n)!==t)return!1;let r=A(n.object);return j(r,`Identifier`)&&Ife.has(r.name)&&!O(r,r.name)},Rfe=e=>{if(!e)return null;let t=A(e);if(j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`))return t;if(j(t,`Identifier`)){let e=O(t,t.name)?.initializer;if(D(e))return e}return null},zfe=(e,t,n)=>{let r=new Set,i=A(e);if(j(i,`Identifier`)){let e=n.symbolFor(i)?.bindingIdentifier;if(e)for(let t of Pl(e,n))r.add(t)}if((j(t,`FunctionExpression`)||j(t,`FunctionDeclaration`))&&t.id&&j(t.id,`Identifier`)){let e=n.symbolFor(t.id)?.bindingIdentifier;if(e)for(let t of Pl(e,n))r.add(t)}return r},Bfe=(e,t,n)=>{let r=A(e);return j(r,`Identifier`)&&t.has(n.symbolFor(r)?.bindingIdentifier??r)},Vfe=(e,t,n)=>{let r=!1;return xo(e,e=>{if(r)return!1;if(!pm(e))return;let i=e.arguments?.[0];if(i&&Bfe(i,t,n))return r=!0,!1}),r},Hfe=(e,t)=>{let n=[];return xo(e,e=>{if(!pm(e))return;let r=e.arguments?.[0];if(!r)return;let i=Rfe(r);i&&Vfe(i,zfe(r,i,t),t)&&n.push({rafCall:e,scheduledFunction:i})}),n},mm=e=>{let t=A(e);if(j(t,`Identifier`)){let e=O(t,t.name),n=e?`${t.name}#${e.bindingIdentifier.range[0]}`:t.name;if(e?.initializer){let t=mm(e.initializer);if(t&&t!==n)return t}return n}if(!j(t,`MemberExpression`))return null;let n=mm(t.object),r=C(t);return n&&r?`${n}.${r}`:null},Ufe=e=>{let t=y(e),n=t.parent;if(j(n,`AssignmentExpression`)&&n.right===t)return mm(n.left);if(j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`))return mm(n.id);if(j(n,`CallExpression`)&&j(n.callee,`MemberExpression`)){let e=C(n.callee),r=n.arguments?.findIndex(e=>e===t)??-1,i=e===`set`&&r>0||(e===`push`||e===`unshift`)&&r>=0?mm(n.callee.object):null;if(i)return`${fm}${i}`}return null},hm=(e,t)=>{let n=e.rafCall.arguments?.[0];if(!n)return[];let r=zfe(n,e.scheduledFunction,t),i=[e.rafCall];return xo(e.scheduledFunction,e=>{if(!pm(e))return;let n=e.arguments?.[0];n&&Bfe(n,r,t)&&i.push(e)}),i},Wfe=e=>{let t=y(e),n=t.parent;return j(n,`AssignmentExpression`)&&n.right===t?n.left:j(n,`VariableDeclarator`)&&n.init===t&&j(n.id,`Identifier`)?n.id:null},Gfe=(e,t,n)=>{let r=[...n].filter(t=>{let n=t;for(;n&&n!==e;){if(D(n))return!1;n=n.parent}return n===e}).map(e=>e.range[0]),i=!1;return S(e,a=>{if(i||a!==e&&D(a))return!1;let o=j(a,`AssignmentExpression`)?a.left:j(a,`UpdateExpression`)?a.argument:null;if(o&&!n.has(o)&&mm(o)===t&&r.some(e=>e<o.range[0]))return i=!0,!1}),i},Kfe=(e,t,n)=>{let r=hm(e,n),i=r.map(Ufe),a=i[0];if(!a||!i.every(e=>e===a))return null;if(a.startsWith(fm))return a;let o=new Set(r.flatMap(e=>{let t=Wfe(e);return t?[t]:[]}));return Gfe(t,a,o)||Gfe(e.scheduledFunction,a,o)?null:a},qfe=(e,t,n)=>{let r=!1;return xo(e,e=>{if(r||!j(e,`CallExpression`))return;let i=A(e.callee);if(!j(i,`MemberExpression`)||C(i)!==`forEach`||mm(i.object)!==t)return;let a=e.arguments?.[0],o=a&&!j(a,`SpreadElement`)?Rfe(a):null;if(!D(o))return;let s=o.params?.[0];j(s,`Identifier`)&&S(o,e=>{if(r||e!==o&&D(e))return!1;if(!j(e,`CallExpression`))return;let t=e.arguments?.[0];if(Yfe(e)&&j(t,`Identifier`)&&n.symbolFor(t)?.bindingIdentifier===n.symbolFor(s)?.bindingIdentifier)return r=!0,!1})}),r},Jfe=(e,t,n)=>{if(t.startsWith(fm))return qfe(e,t.slice(18),n);let r=!1;return xo(e,e=>{if(r||!j(e,`CallExpression`)||!Yfe(e))return;let n=e.arguments?.[0];n&&mm(n)===t&&(r=!0)}),r},Yfe=e=>{if(Lfe(e,Pfe))return!0;let t=A(e.callee);if(!j(t,`Identifier`))return!1;let n=O(t,t.name)?.bindingIdentifier?.parent;if(!j(n,`Property`)||(j(n.key,`Identifier`)?n.key.name:j(n.key,`Literal`)&&typeof n.key.value==`string`?n.key.value:null)!==Pfe)return!1;let r=n.parent,i=r?.parent;if(!j(r,`ObjectPattern`)||!j(i,`VariableDeclarator`))return!1;let a=i.init?A(i.init):null;return j(a,`Identifier`)&&Ife.has(a.name)&&!O(a,a.name)},Xfe=(e,t)=>{xo(e,e=>{let n=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(j(n,`Identifier`)){let e=mm(n);e&&t.add(e)}else if(j(n,`MemberExpression`)){let e=mm(n);e&&t.add(e)}})},Zfe=(e,t,n)=>{if(j(e,`UpdateExpression`))return e.operator===(n?`++`:`--`);if(!j(e,`AssignmentExpression`))return!1;if(e.operator===(n?`+=`:`-=`))return ym(e.right);if(e.operator!==`=`)return!1;let r=A(e.right),i=j(r,`BinaryExpression`)?A(r.left):null;return j(r,`BinaryExpression`)&&r.operator===(n?`+`:`-`)&&j(i,`Identifier`)&&mm(i)===t&&ym(r.right)},Qfe=(e,t)=>{let n=new Set,r=new Set;xo(e,e=>{let i=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(!j(i,`Identifier`))return;let a=mm(i);a&&(Zfe(e,a,t)?n.add(a):r.add(a))});for(let e of r)n.delete(e);return n},$fe=(e,t)=>{let n=j(e,`AssignmentExpression`)?e.left:j(e,`UpdateExpression`)?e.argument:null;if(!j(n,`Identifier`)&&!j(n,`MemberExpression`))return;let r=mm(n);if(!r)return;if(j(e,`UpdateExpression`)||j(e,`AssignmentExpression`)&&e.operator!==`=`){t.changedFromSnapshotKeys.add(r),t.booleanValues.delete(r);return}if(!j(e,`AssignmentExpression`))return;let i=A(e.right);if(!j(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)},epe=e=>j(e,`IfStatement`)||j(e,`ConditionalExpression`)||j(e,`LogicalExpression`)||j(e,`SwitchStatement`)||j(e,`TryStatement`)||j(e,`ForStatement`)||j(e,`ForInStatement`)||j(e,`ForOfStatement`)||j(e,`WhileStatement`)||j(e,`DoWhileStatement`),tpe=(e,t)=>{let n=e.parent;for(;n&&n!==t;){if(epe(n))return!1;n=n.parent}return n===t||e===t},npe=(e,t)=>{let n={booleanValues:new Map,changedFromSnapshotKeys:new Set},r=new Set,i=e=>{r.has(e)||(r.add(e),xo(e,r=>{if(!tpe(r,e)||($fe(r,n),!j(r,`CallExpression`)))return;let a=r.callee;if(j(a,`Identifier`)){let e=mm(a);S(t,t=>{j(t,`VariableDeclarator`)&&j(t.id,`Identifier`)&&mm(t.id)===e&&t.init&&D(t.init)&&i(t.init)});return}if(j(a,`MemberExpression`)){let e=mm(a);if(!e)return;if(C(a)===`abort`){let e=mm(a.object);e&&n.booleanValues.set(`${e}.signal.aborted`,!0)}S(t,t=>{j(t,`AssignmentExpression`)&&j(t.left,`MemberExpression`)&&mm(t.left)===e&&t.right&&D(t.right)&&i(t.right)})}}))};return i(e),n},gm=(e,t)=>{let n=A(e);if(j(n,`Literal`)&&typeof n.value==`boolean`)return n.value;if(j(n,`Identifier`)||j(n,`MemberExpression`)){let e=mm(n);return e&&t.booleanValues.has(e)?t.booleanValues.get(e)??null:null}if(j(n,`UnaryExpression`)&&n.operator===`!`){let e=gm(n.argument,t);return e===null?null:!e}if(j(n,`LogicalExpression`)){let e=gm(n.left,t);if(n.operator===`??`)return e;let r=gm(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(!j(n,`BinaryExpression`))return null;let r=n.operator===`==`||n.operator===`===`,i=n.operator===`!=`||n.operator===`!==`;if(!r&&!i)return null;let a=gm(n.left,t),o=gm(n.right,t);if(a!==null&&o!==null)return r?a===o:a!==o;let s=mm(n.left),c=mm(n.right);return s&&s===c&&t.changedFromSnapshotKeys.has(s)?i:null},_m=e=>j(e,`ReturnStatement`)||j(e,`ThrowStatement`)?!0:j(e,`BlockStatement`)&&!!e.body?.some(e=>_m(e))||j(e,`IfStatement`)&&!!e.alternate&&_m(e.consequent)&&_m(e.alternate),vm=(e,t,n)=>{let r=gm(e,n);return r!==null&&r!==t},rpe=(e,t,n)=>{let r=gm(e,n);return r===null?!1:t===`&&`?!r:t===`||`?r:t===`??`},ipe=(e,t,n)=>{let r=e;for(;r&&r!==t;){let e=r.parent;if(!e)return!1;if((j(e,`IfStatement`)||j(e,`ConditionalExpression`))&&(e.consequent===r||e.alternate===r)&&vm(e.test,e.consequent===r,n)||j(e,`LogicalExpression`)&&e.right===r&&rpe(e.left,e.operator,n))return!0;if(j(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(j(e,`IfStatement`)&&(_m(e.consequent)&&vm(e.test,!1,n)||e.alternate&&_m(e.alternate)&&vm(e.test,!0,n)))return!0}}r=e}return!1},ape=(e,t,n)=>{let r=hm(e,n).slice(1);return r.length>0&&r.every(n=>ipe(n,e.scheduledFunction,t))},ym=e=>j(e,`Literal`)&&typeof e.value==`number`&&e.value>0,ope=(e,t)=>{let n=A(e);return j(n,`Literal`)&&typeof n.value==`number`||j(n,`Identifier`)&&!t.has(mm(n)??``)},bm=(e,t,n)=>{let r=A(e);if(j(r,`Identifier`)){let e=mm(r);return e?t.has(e):!1}if(j(r,`BinaryExpression`)){if(r.operator===`+`||r.operator===`-`)return bm(r.left,t,n)&&ope(r.right,n);if(r.operator===`*`||r.operator===`/`)return bm(r.left,t,n)&&ym(r.right)}if(!j(r,`CallExpression`))return!1;let i=A(r.callee),a=j(i,`MemberExpression`)?A(i.object):null;if(!j(i,`MemberExpression`)||!j(a,`Identifier`)||a.name!==`Math`||O(a,a.name)||!Ffe.has(C(i)??``))return!1;let o=!1;for(let e of r.arguments){if(bm(e,t,n)){o=!0;continue}if(!j(e,`Literal`)||typeof e.value!=`number`)return!1}return o},xm=(e,t,n,r,i)=>{let a=A(e);if(j(a,`UnaryExpression`)&&a.operator===`!`)return xm(a.argument,t,n,r,!i);if(j(a,`LogicalExpression`)&&a.operator!==`??`)return xm(a.left,t,n,r,i)&&xm(a.right,t,n,r,i);if(!j(a,`BinaryExpression`))return!1;let o=bm(a.left,t,r)&&j(a.right,`Literal`)&&typeof a.right.value==`number`,s=j(a.left,`Literal`)&&typeof a.left.value==`number`&&bm(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=bm(a.left,n,r)&&j(a.right,`Literal`)&&typeof a.right.value==`number`,d=j(a.left,`Literal`)&&typeof a.left.value==`number`&&bm(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},spe=(e,t)=>{let n=e.scheduledFunction,r=new Set;Xfe(n,r);let i=Qfe(n,!0),a=Qfe(n,!1);if(D(n)){for(let e of n.params??[])if(j(e,`Identifier`)){let t=mm(e);t&&!r.has(t)&&i.add(t)}}let o=!0;for(;o;)o=!1,xo(n,e=>{if(!j(e,`VariableDeclarator`)||!e.init)return;let t=j(e.id,`Identifier`)?mm(e.id):null;!t||i.has(t)||a.has(t)||r.has(t)||(bm(e.init,i,r)?(i.add(t),o=!0):bm(e.init,a,r)&&(a.add(t),o=!0))});if(i.size===0&&a.size===0)return!1;let s=hm(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((j(s,`IfStatement`)||j(s,`ConditionalExpression`))&&(s.consequent===o||s.alternate===o)&&xm(s.test,i,a,r,s.consequent===o)){t=!0;break}o=s,s=s.parent??null}if(!t)return!1}return!0},cpe=w({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(!Il(t,e.scopes))return;let n=pr(t);if(!n)return;let r=Nl(n);for(let t of Hfe(n,e.scopes)){if(spe(t,e.scopes))continue;let i=Kfe(t,n,e.scopes);i&&r.some(t=>Jfe(t,i,e.scopes))||r.some(r=>ape(t,npe(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.`})}}})}),lpe=new Set([`removeEventListener`,`removeListener`,`off`]),upe=/(?:duration|delay|timeout|ms)$/i,dpe=e=>{let t=A(e);if(j(t,`Literal`)&&typeof t.value==`number`)return!0;if(!j(t,`Identifier`))return!1;if(upe.test(t.name))return!0;let n=O(t,t.name);if(!n?.initializer)return!1;let r=A(n.initializer);return j(r,`Literal`)&&typeof r.value==`number`},fpe=e=>{let t=A(e);return ia(t)?!0:j(t,`CallExpression`)&&j(t.callee,`MemberExpression`)&&C(t.callee)===`bind`},ppe=new Set([`addEventListener`,`addListener`,`on`,`once`]),mpe=`handler-only`,hpe=(e,t)=>{let n=new Set;return S(e,e=>{if(!j(e,`CallExpression`))return;let r=A(e.callee);if(!j(r,`MemberExpression`))return;let i=C(r);if(!i||!ppe.has(i))return;let a=bo({node:r.object,scopes:t}),o=i===`addListener`&&e.arguments.length===1?mpe:Zu(e.arguments?.[0],t);a&&o&&n.add(JSON.stringify([a,o]))}),n},gpe=w({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=A(n.callee);if(!j(r,`MemberExpression`))return;let i=C(r);if(!i||!lpe.has(i))return;let a=n.arguments,o=i===`removeListener`&&a.length===1?0:1,s=a[o];if(!s||o===1&&dpe(a[0])||!fpe(s))return;let c=bo({node:r.object,scopes:e.scopes}),l=i===`removeListener`&&a.length===1?mpe:Zu(a[0],e.scopes),u=p(n);if(!c||!l||!u)return;let d=t.get(u);d||(d=hpe(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.`})}}}}),_pe=new Set([`columnheader`,`rowheader`]),vpe=e=>{for(let t of[`aria-label`,`aria-labelledby`]){let n=R(e.attributes,t,!1);if(!n)continue;let r=L(n);if(r===null||r.trim().length>0)return!0}return!1},ype=w({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=N(n);if(/^[A-Z]/.test(r))return;let i=R(n.attributes,`role`,!1),a=i?L(i)?.toLowerCase():null;r!==`th`&&(!a||!_pe.has(a))||ai(t,e.settings)||vpe(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.`})}})}),bpe=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set;return S(e,a=>{if(a!==e&&D(a)){let e=Sm(a,t);for(let t of e)t.resolvedSymbol&&!xn(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&&(xn(o.resolvedSymbol.scope,n)||i.has(o.id)||(r.push(o),i.add(o.id)))}),r},xpe=new WeakMap,Sm=(e,t)=>{let n=xpe.get(t);n||(n=new WeakMap,xpe.set(t,n));let r=n.get(e);if(r)return r;let i=bpe(e,t);return n.set(e,i),i};let Spe=0;const Cm=e=>{let t={id:Spe++,nodes:[],successors:[],predecessors:[]};return e.blocks.push(t),t},wm=(e,t,n)=>{let r={from:e,to:t,kind:n};e.successors.push(r),t.predecessors.push(r)},Cpe=(e,t,n)=>{t.nodes.push(n),e.nodeBlock.has(n)||e.nodeBlock.set(n,t)},Tm=(e,t,n)=>{if(e.nodeBlock.set(t,n),D(t)){e.nestedFunctions.push(t);return}let r=t,i=Bn[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];k(r)&&Tm(e,r,n)}else k(o)&&Tm(e,o,n)}},wpe=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}},Tpe=e=>{if(e.type===`Literal`)return!!e.value;if(e.type===`UnaryExpression`&&e.operator===`!`){let t=Tpe(e.argument);return t===null?null:!t}return null},Epe=e=>e===null||Tpe(e)===!0,Dpe=(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},Em=(e,t,n)=>{let r=n;for(let n of t)r=Dm(e,n,r);return r},Dm=(e,t,n)=>{if(e.nodeBlock.set(t,n),!wpe(t))return Cpe(e,n,t),Tm(e,t,n),n;if(t.type===`BlockStatement`)return Em(e,t.body,n);if(t.type===`LabeledStatement`){let r=Cm(e),i={label:t.label.name,merge:r,header:null};e.labelStack.push(i);let a=t.body,o=Dm(e,a,n);return e.labelStack.pop(),wm(o,r,`uncond`),r}if(t.type===`ReturnStatement`)return t.argument&&Tm(e,t.argument,n),wm(n,e.exit,`uncond`),Cm(e);if(t.type===`ThrowStatement`){t.argument&&Tm(e,t.argument,n);let r=e.tryStack[e.tryStack.length-1];return r?.catch?wm(n,r.catch,`uncond`):r?.finally?wm(n,r.finally,`uncond`):wm(n,e.exit,`throw`),Cm(e)}if(t.type===`BreakStatement`){let r=Dpe(e,t.label?t.label.name:null);return r?wm(n,r.merge,`uncond`):wm(n,e.exit,`uncond`),Cm(e)}if(t.type===`ContinueStatement`){let r=Dpe(e,t.label?t.label.name:null);return r?.header&&wm(n,r.header,`uncond`),Cm(e)}if(t.type===`IfStatement`){Tm(e,t.test,n);let r=Cm(e),i=Cm(e);if(wm(n,r,`cond`),wm(Dm(e,t.consequent,r),i,`uncond`),t.alternate){let r=Cm(e);wm(n,r,`cond`),wm(Dm(e,t.alternate,r),i,`uncond`)}else wm(n,i,`cond`);return i}if(t.type===`WhileStatement`||t.type===`DoWhileStatement`){let r=t.type===`DoWhileStatement`,i=Epe(t.test);Tm(e,t.test,n);let a=Cm(e),o=Cm(e),s=Cm(e);r?wm(n,o,`uncond`):(wm(n,a,`uncond`),wm(a,o,i?`uncond`:`cond`),i||wm(a,s,`cond`)),e.loopStack.push({header:a,merge:s,label:null});let c=Dm(e,t.body,o);return e.loopStack.pop(),r?(wm(c,a,`uncond`),wm(a,o,i?`uncond`:`cond`),i||wm(a,s,`cond`)):wm(c,a,`uncond`),s}if(t.type===`ForStatement`){t.init&&Tm(e,t.init,n),t.test&&Tm(e,t.test,n);let r=Cm(e),i=Cm(e),a=Cm(e),o=Epe(t.test??null);wm(n,r,`uncond`),wm(r,i,o?`uncond`:`cond`),o||wm(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let s=Dm(e,t.body,i);return e.loopStack.pop(),t.update&&Tm(e,t.update,r),wm(s,r,`uncond`),a}if(t.type===`ForInStatement`||t.type===`ForOfStatement`){Tm(e,t.right,n),Tm(e,t.left,n);let r=Cm(e),i=Cm(e),a=Cm(e);wm(n,r,`uncond`),wm(r,i,`cond`),wm(r,a,`cond`),e.loopStack.push({header:r,merge:a,label:null});let o=Dm(e,t.body,i);return e.loopStack.pop(),wm(o,r,`uncond`),a}if(t.type===`SwitchStatement`){Tm(e,t.discriminant,n);let r=Cm(e);e.switchStack.push({merge:r,label:null});let i=null,a=!1;for(let r of t.cases){let t=Cm(e);wm(n,t,`cond`),i&&wm(i,t,`uncond`),i=Em(e,r.consequent,t),r.test===null&&(a=!0)}return e.switchStack.pop(),i&&wm(i,r,`uncond`),a||wm(n,r,`cond`),r}if(t.type===`TryStatement`){let r=Cm(e),i=Cm(e),a=null,o=null;t.handler&&(a=Cm(e)),t.finalizer&&(o=Cm(e)),wm(n,r,`uncond`),e.tryStack.push({catch:a,finally:o});let s=Em(e,t.block.body,r);if(e.tryStack.pop(),a&&wm(r,a,`cond`),t.handler&&a){let n=t.handler.body,r=Dm(e,n,a);o?wm(r,o,`uncond`):wm(r,i,`uncond`)}return o&&t.finalizer?(wm(s,o,`uncond`),wm(Em(e,t.finalizer.body,o),i,`uncond`)):wm(s,i,`uncond`),i}return Cpe(e,n,t),Tm(e,t,n),n},Ope=(e,t,n)=>{let r={blocks:[],entry:null,exit:null,nestedFunctions:n,nodeBlock:new Map,loopStack:[],switchStack:[],tryStack:[],labelStack:[]},i=Cm(r),a=Cm(r);r.entry=i,r.exit=a;let o;return t.type===`BlockStatement`?o=Em(r,t.body,i):(Tm(r,t,i),o=i),wm(o,a,`uncond`),{owner:e,entry:i,exit:a,blocks:r.blocks,blockOf:e=>r.nodeBlock.get(e)??null}},kpe=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},Om=e=>{Spe=0;let t=new Map,n=[],r=(e,r)=>{let i=Ope(e,r,n);t.set(e,{cfg:i,unconditionalSet:kpe(i)})};e.type===`Program`&&r(e,{type:`BlockStatement`,body:e.body});for(let e=0;e<n.length;e+=1){let i=n[e];!D(i)||!i.body||t.has(i)||r(i,i.body)}let i=e=>t.get(e)||(!D(e)||!e.body?null:(r(e,e.body),t.get(e)??null)),a=e=>{let t=e;for(;t;){if(D(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}}},Ape=e=>{let t=A(e);return j(t,`ObjectExpression`)?`object`:j(t,`ArrayExpression`)?`array`:j(t,`ArrowFunctionExpression`)||j(t,`FunctionExpression`)?`function`:j(t,`JSXElement`)||j(t,`JSXFragment`)?`JSX`:j(t,`NewExpression`)?`instance`:null},km=(e,t,n=new Set)=>{let r=Ape(e);if(r)return{bindingName:null,kind:r};let i=A(e);if(!j(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`)||!j(a.declarationNode,`VariableDeclarator`)||a.declarationNode.id!==a.bindingIdentifier)return null;n.add(a.id);let o=km(a.initializer,t,n);return o?{bindingName:i.name,kind:o.kind}:null},jpe=new Set([...Jt,`useImperativeHandle`,`useInsertionEffect`]),Mpe=new WeakMap,Npe=new WeakMap,Ppe=new WeakMap,Fpe=e=>{let t=Mpe.get(e.programNode);if(t)return t;let n=Nt(e.programNode);return Mpe.set(e.programNode,n),n},Ipe=e=>{let t=Npe.get(e.programNode);if(t)return t;let n=Om(e.programNode);return Npe.set(e.programNode,n),n},Lpe=(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},Rpe=(e,t)=>{let n=Mc(e)??t??``;return n!==`use`&&kc(n)},zpe=(e,n)=>{if(!j(e,`Identifier`))return null;let r=T(e,n);if(r?.kind!==`import`||!r.initializer)return null;let i=r.initializer.parent;if(!i||!j(i,`ImportDeclaration`))return null;let a=i.source?.value;if(typeof a!=`string`)return null;let o=t(r.initializer);return o?{exportedName:o,source:a}:null},Bpe=(e,t,n)=>{if(!n)return null;let r=zpe(e,t);if(!r)return null;let i=j(e,`Identifier`)?e.name:``;if(r.source===`react`||!kc(i)&&!kc(r.exportedName))return null;let a=Ye(n,r.source,r.exportedName);return!a||!Rpe(a.functionNode,r.exportedName)?null:{cfg:Ipe(a),filePath:a.filePath,functionNode:a.functionNode,programNode:a.programNode,scopes:Fpe(a)}},Am=(e,t,n,r=new Set)=>{let i=A(e);if(j(i,`Identifier`)){let e=T(i,t);if(!e||r.has(e.id))return null;if(Ne(e)){let t=rt(e.declarationNode);return!t||!n.has(t)?null:t===`useImperativeHandle`?2:1}return e.kind!==`const`||!e.initializer||jm(e)?null:(r.add(e.id),Am(e.initializer,t,n,r))}if(j(i,`MemberExpression`)){let e=C(i);if(!e||!n.has(e))return null;let r=A(i.object);return!j(r,`Identifier`)||!Ct(r,t)?null:e===`useImperativeHandle`?2:1}if(!j(i,`ConditionalExpression`))return null;let a=Am(i.consequent,t,n,new Set(r)),o=Am(i.alternate,t,n,new Set(r));return a!==null&&a===o?a:null},Vpe=(e,t,n,r)=>{if(!n)return null;let i=zpe(A(e.callee),t);if(!i)return null;let a=un(n,i.source,i.exportedName);return a?Am(a.exportedNode,Fpe(a),r):null},Hpe=(e,t,n,r)=>{let i=A(e.callee),a=x(i,t);if(a&&Rpe(a)){let e=p(a);return e?{cfg:n,filePath:r,functionNode:a,programNode:e,scopes:t}:null}return Bpe(i,t,r)},Upe=e=>{if(!D(e))return[];let t=[];for(let[n,r]of(e.params??[]).entries()){let e=A(r);if(j(e,`Identifier`)){t.push({bindingIdentifier:e,defaultExpression:null,parameterIndex:n,propertyName:null});continue}if(j(e,`AssignmentPattern`)&&j(e.left,`Identifier`)){t.push({bindingIdentifier:e.left,defaultExpression:e.right,parameterIndex:n,propertyName:null});continue}if(j(e,`ObjectPattern`))for(let r of e.properties??[]){if(!j(r,`Property`))continue;let e=P(r,{allowComputedString:!0});if(!e)continue;let i=A(r.value);j(i,`Identifier`)?t.push({bindingIdentifier:i,defaultExpression:null,parameterIndex:n,propertyName:e}):j(i,`AssignmentPattern`)&&j(i.left,`Identifier`)&&t.push({bindingIdentifier:i.left,defaultExpression:i.right,parameterIndex:n,propertyName:e})}}return t},Wpe=(e,t,n=new Set)=>{let r=A(e);if(j(r,`ObjectExpression`))return r;if(!j(r,`Identifier`))return null;let i=t.symbolFor(r);return!i||i.kind!==`const`||!i.initializer||n.has(i.id)||jm(i)?null:(n.add(i.id),Wpe(i.initializer,t,n))},Gpe=(e,t)=>{for(let n=e.properties.length-1;n>=0;n--){let r=e.properties[n];if(j(r,`SpreadElement`))return{expression:null,isProvenOmitted:!1};if(j(r,`Property`)&&P(r,{allowComputedString:!0})===t)return{expression:r.value,isProvenOmitted:!1}}return{expression:null,isProvenOmitted:!0}},Kpe=(e,t,n)=>{if((e.arguments??[]).slice(0,t.parameterIndex+1).some(e=>j(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=Wpe(r,n);return i?Gpe(i,t.propertyName):{expression:null,isProvenOmitted:!1}},jm=e=>{if(e.references.some(e=>e.flag!==`read`))return!0;for(let t of e.references){let e=t.identifier;for(;e.parent&&j(e.parent,`MemberExpression`)&&e.parent.object===e;)e=e.parent;let n=e.parent;if(j(n,`AssignmentExpression`)&&n.left===e||j(n,`UpdateExpression`)&&n.argument===e||j(n,`UnaryExpression`)&&n.operator===`delete`&&n.argument===e)return!0;if(j(n,`CallExpression`)&&n.callee===e&&j(e,`MemberExpression`)){let t=C(e);if(t&&(Wr.has(t)||Gr.has(t)))return!0}}return!1},Mm=(e,t,n,r,i=new Set)=>{let a=A(e);if(!j(a,`Identifier`))return!1;let o=n.symbolFor(a);return!o||i.has(o.id)||jm(o)?!1:(t===`value`?r.valueSymbolIds:r.listSymbolIds).has(o.id)?!0:o.kind!==`const`||!o.initializer||!j(o.declarationNode,`VariableDeclarator`)||o.declarationNode.id!==o.bindingIdentifier?!1:(i.add(o.id),Mm(o.initializer,t,n,r,i))},Nm=(e,t,n,r=new Set)=>{if(Mm(e,`list`,t,n))return!0;let i=A(e);if(j(i,`Identifier`)){let e=t.symbolFor(i);return!e||r.has(e.id)||e.kind!==`const`||!e.initializer||jm(e)?!1:(r.add(e.id),Nm(e.initializer,t,n,r))}return j(i,`ArrayExpression`)?(i.elements??[]).some(e=>e?j(e,`SpreadElement`)?Mm(e.argument,`list`,t,n):Mm(e,`value`,t,n):!1):!1},qpe=(e,t,n,r)=>{let i={listSymbolIds:new Set,valueSymbolIds:new Set};for(let a of Upe(t.functionNode)){let o=Kpe(e,a,n);if(!o.expression)continue;let s=t.scopes.symbolFor(a.bindingIdentifier);!s||jm(s)||(Mm(o.expression,`value`,n,r)&&i.valueSymbolIds.add(s.id),(Mm(o.expression,`list`,n,r)||Nm(o.expression,n,r))&&i.listSymbolIds.add(s.id))}return i},Jpe=(e,t,n,r,i)=>{if(!D(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?jm(n):!1}))return!1;let o=new Set(r);o.add(a);let s=!1;return S(a.body,r=>{if(s||r!==a.body&&D(r))return!1;if(!j(r,`CallExpression`)||!Lpe(r,e.cfg))return;if(E(r,i,e.scopes,{allowGlobalReactNamespace:!0})){let n=A(r.callee),i=(j(n,`Identifier`)?n.name:j(n,`MemberExpression`)?C(n):null)===`useImperativeHandle`?2:1,a=r.arguments?.[i];return a&&!j(a,`SpreadElement`)&&Nm(a,e.scopes,t)?(s=!0,!1):void 0}let c=Vpe(r,e.scopes,e.filePath,i);if(c!==null){let n=r.arguments?.[c];return n&&!j(n,`SpreadElement`)&&Nm(n,e.scopes,t)?(s=!0,!1):void 0}if(n===0)return;let l=Hpe(r,e.scopes,e.cfg,e.filePath);if(!l)return;let u=qpe(r,l,e.scopes,t);if(!(u.valueSymbolIds.size===0&&u.listSymbolIds.size===0)&&Jpe(l,u,n-1,o,i))return s=!0,!1}),s},Ype=(e,t,n=jpe)=>{let r=Ppe.get(e),i=r?.get(n);if(i)return i;let a=[];r?r.set(n,a):Ppe.set(e,new Map([[n,a]]));let o=Hpe(e,t.scopes,t.cfg,t.filename);if(!o||!W(e,t.scopes)||!Lpe(e,t.cfg))return a;for(let r of Upe(o.functionNode)){let i=o.scopes.symbolFor(r.bindingIdentifier);if(!i||jm(i))continue;let s=Kpe(e,r,t.scopes),c=s.expression??(s.isProvenOmitted?r.defaultExpression:null);if(!c)continue;let l=km(c,s.expression?t.scopes:o.scopes);l&&Jpe(o,{listSymbolIds:new Set,valueSymbolIds:new Set([i.id])},4,new Set,n)&&a.push({bindingName:l.bindingName??(j(r.bindingIdentifier,`Identifier`)?r.bindingIdentifier.name:`dependency`),kind:l.kind,origin:s.expression?`argument`:`default`,reportNode:s.expression??e})}return a},Xpe=new WeakMap,Zpe=e=>{let t=new Map;if(!j(e,`Program`))return t;for(let n of e.body){let e=j(n,`ExportNamedDeclaration`)?n.declaration:n;if(!e||!j(e,`TSInterfaceDeclaration`)&&!j(e,`TSTypeAliasDeclaration`)||!j(e.id,`Identifier`))continue;let r=e.id.name,i=t.get(r)??[];t.set(r,[...i,e])}return t},Pm=(e,t)=>{let n=p(e);if(!n)return[];let r=Xpe.get(n);return r||(r=Zpe(n),Xpe.set(n,r)),r.get(t)??[]},Qpe=e=>j(e,`Identifier`)?e.name:j(e,`MemberExpression`)&&!e.computed&&j(e.object,`Identifier`)&&e.object.name===`React`&&j(e.property,`Identifier`)?`React.${e.property.name}`:null,Fm=e=>{let t=e.parent;if(!t||!j(t,`CallExpression`)||t.arguments[0]!==e)return!1;let n=Qpe(t.callee);return n!==null&&tr.has(n)},$pe=new Set([`function`,`arrow-function`,`method`]),Im=e=>{let t=e.scope;for(;t;){if($pe.has(t.kind))return!1;if(t.kind===`module`)return!0;t=t.parent}return!0},eme=new Set([`TSAsExpression`,`TSSatisfiesExpression`,`TSNonNullExpression`,`TSTypeAssertion`,`ParenthesizedExpression`,`ChainExpression`]),K=e=>{let t=e;for(;eme.has(t.type);){let e=t.expression;if(!e)return t;t=e}return t},Lm=(e,t)=>{let n=K(e);if(j(n,`Identifier`)){let e=t?T(n,t):null,r=e?.declarationNode.parent;return e?.kind===`import`&&r&&j(r,`ImportDeclaration`)&&r.source.value===`react`?rt(e.declarationNode)??n.name:n.name}return j(n,`MemberExpression`)&&!n.computed&&j(n.property,`Identifier`)?n.property.name:null},Rm=(e,t)=>`\`${e}\` can run with a stale \`${t}\` & show your users old data.`,tme=(e,t)=>`\`${e}\` re-runs whenever \`${t}\` changes even though it never uses it.`,nme=(e,t)=>`\`${e}\` doesn't need \`${t}\` in its dependency array — it's defined outside the component and never changes between renders.`,rme=(e,t)=>`\`${e}\` lists \`${t}\` twice, adding dependency-array noise without changing when it runs.`,ime=e=>`A literal in \`${e}\`'s dependency array never changes, so it adds noise without protecting against stale values.`,ame=(e,t)=>`\`${e}\` won't re-run when \`${t}\` changes, since a ref never triggers a redraw.`,ome=e=>`\`${e}\`'s dependencies can't be checked because its second argument isn't an inline array, so stale values can slip through.`,zm=e=>`\`${e}\` re-runs on every render with no dependency array.`,sme=e=>`\`${e}\` crashes without a function as its first argument.`,cme=()=>"A function from `useEffectEvent` is stable, so listing it adds noise and defeats the event/dependency split.",lme=e=>`A spread in \`${e}\`'s dependency array hides the actual deps, so stale values can slip through.`,Bm=e=>`A complex expression in \`${e}\`'s dependency array hides the real value, so stale values can slip through.`,ume=e=>`\`${e}\` was given an async function, so its cleanup breaks.`,dme=e=>`\`${e}\`'s callback is defined elsewhere, so dependencies can't be checked and stale values can slip through.`,fme=(e,t)=>`\`${t}\` is rebuilt every render, so \`${e}\` runs every time.`,pme=e=>`\`${e}\` is rebuilt every render and reaches a Hook dependency inside this custom Hook.`,mme=(e,t)=>`\`${e}\` calls \`${t}\` with a value that can change on every render and no dependency array, so it can keep triggering renders.`,hme=e=>`Your cleanup may read the wrong node since the ref \`${e}\` can change before it runs.`,gme=e=>`Assigning to \`${e}\` inside a hook is thrown away after each render, so the next render reads the old value.`,_me=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}},vme=new Set([`===`,`!==`]),yme=(e,t)=>{let n=e.declarationNode;if(!j(n,`VariableDeclarator`)||!j(n.id,`ArrayPattern`))return null;let r=n.id.elements[0],i=n.id.elements[1];if(r!==e.bindingIdentifier||!j(i,`Identifier`))return null;let a=n.init?A(n.init):null;return!a||!E(a,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})?null:t.symbolFor(i)},bme=(e,t)=>{if(e.references.length!==1)return null;let n=e.references[0];if(n.flag!==`read`)return null;let r=y(n.identifier),i=r.parent;if(!j(i,`CallExpression`)||i.callee!==r||i.arguments.length!==1||M(i)!==t)return null;let a=A(i.arguments[0]);return j(a,`ArrowFunctionExpression`)||j(a,`FunctionExpression`)||j(a,`SpreadElement`)?null:{callExpression:i,writtenValue:a}},xme=(e,t)=>{if(!j(e,`CallExpression`))return!1;let n=A(e.callee);if(!j(n,`MemberExpression`))return!1;let r=C(n),i=A(n.object);return!!(r===`is`&&j(i,`Identifier`)&&i.name===`Object`&&t.isGlobalReference(i))},Sme=(e,t)=>{let n=A(e);return j(n,`Identifier`)&&n.name===`NaN`&&t.isGlobalReference(n)},Cme=(e,t,n)=>{let r=A(e);if(j(t,`BinaryExpression`)&&vme.has(t.operator))return A(t.left)===r?Sme(t.right,n)?null:{comparison:t,counterpart:t.right,areValuesEqualWhenTruthy:t.operator===`===`}:A(t.right)===r?Sme(t.left,n)?null:{comparison:t,counterpart:t.left,areValuesEqualWhenTruthy:t.operator===`===`}:null;if(!j(t,`CallExpression`)||!xme(t,n)||t.arguments.length!==2)return null;let i=t.arguments[0],a=t.arguments[1];return j(i,`SpreadElement`)||j(a,`SpreadElement`)?null:A(i)===r?{comparison:t,counterpart:a,areValuesEqualWhenTruthy:!0}:A(a)===r?{comparison:t,counterpart:i,areValuesEqualWhenTruthy:!0}:null},wme=(e,t,n)=>{let r=e.parent;for(;r&&z(r,t);){let i=Cme(e,r,n);if(i)return i;if(r===t)break;r=r.parent}return null},Tme=(e,t,n,r)=>{let i=n,a=e;for(;a!==t;){let e=a.parent;if(!e||!z(e,t))return!1;if(j(e,`UnaryExpression`)&&e.operator===`!`)i=!i;else if(j(e,`LogicalExpression`)){if(e.operator===`&&`&&!i||e.operator===`||`&&i||e.operator!==`&&`&&e.operator!==`||`)return!1}else if(!Ie.has(e.type))return!1;a=e}return i===r},Eme=(e,t)=>{let n=new Set,r=A(e);for(;j(r,`Identifier`);){let e=t.symbolFor(r);if(!e||n.has(e.id))break;let i=Oi(e);if(!i||!j(A(i),`Identifier`))break;n.add(e.id),r=A(i)}return r},Dme=(e,t,n)=>{let r=Eme(e,n),i=Eme(t,n);if(r===i)return!0;if(j(r,`Identifier`)&&j(i,`Identifier`)){let e=n.symbolFor(r),t=n.symbolFor(i);return e||t?e?.id===t?.id:r.name===i.name}return j(r,`Literal`)&&j(i,`Literal`)?Object.is(r.value,i.value):!1},Ome=e=>{let t=y(e).parent;if(!j(t,`CallExpression`))return!1;let n=t.arguments[1];return!!(j(n,`ArrayExpression`)&&n.elements.length)},kme=e=>{if(j(e,`ReturnStatement`)||j(e,`ThrowStatement`))return!0;if(!j(e,`BlockStatement`))return!1;let t=e.body.at(-1);return!!(t&&kme(t))},Ame=(e,t)=>{if(!j(e,`IfStatement`)||e.alternate||!kme(e.consequent))return!1;let n=e.parent;if(!j(n,`BlockStatement`))return!1;let r=n.body.findIndex(t=>t===e);return n.body.some((e,n)=>n>r&&z(t,e))},jme=(e,t,n,r)=>{let i=e.parent;for(;i&&i!==n;){if(j(i,`IfStatement`)&&z(e,i.test)&&(z(t,i.consequent)||i.alternate&&z(t,i.alternate)||Ame(i,t))){let n=z(t,i.consequent);if(n===(!!(i.alternate&&z(t,i.alternate))||Ame(i,t)))return null;let a=wme(e,i.test,r);if(!a)return null;let o=!a.areValuesEqualWhenTruthy;return Tme(a.comparison,i.test,n,o)?a.counterpart:null}i=i.parent}return null},Mme=(e,t,n)=>{if(!Ome(t)||e.references.some(e=>e.flag!==`read`))return!1;let r=yme(e,n);if(!r)return!1;let i=bme(r,t);if(!i)return!1;let a=e.references.filter(e=>z(e.identifier,t));if(a.length!==1)return!1;let o=y(a[0].identifier);if(j(o.parent,`MemberExpression`)&&o.parent.object===o)return!1;let s=jme(a[0].identifier,i.callExpression,t,n);return!!(s&&Dme(s,i.writtenValue,n))},Nme=/\b(?:eslint|oxlint)-disable-next-line\b([^\n]*)/,Pme=/\b(?:eslint|oxlint)-disable-line\b([^\n]*)/,Fme=(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=Nme.exec(i);if(a&&t.test(a[1]??``)){n.add(e+2);continue}let o=Pme.exec(i);o&&t.test(o[1]??``)&&n.add(e+1)}return n},Ime=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}},Lme=(e,t)=>{let n=Fme(e,t);if(n.size===0)return null;let r=Ime(e);return{suppressedLines:n,utf16NewlineOffsets:r.utf16,utf8NewlineOffsets:r.utf8}},Rme=(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},zme=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=Lme(Qte(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(Rme(t,n.utf16NewlineOffsets))||n.suppressedLines.has(Rme(t,n.utf8NewlineOffsets)):!1}}},Bme=zme(`exhaustive-deps`),Vme=Bme.isSuppressedAt;Bme.clearCache;const Hme=new Set([`useEventCallback`,`useStableCallback`,`useMemoizedFn`,`usePersistFn`,`useLatestCallback`,`useCallbackRef`,`useEvent`]),Vm=(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||!j(n,`VariableDeclarator`))return!1;let r=n.init;if(!r)return!1;let i=K(r);if(e.kind===`const`&&(j(i,`Literal`)&&(i.value===null||typeof i.value==`number`||typeof i.value==`string`||typeof i.value==`boolean`)||j(i,`TemplateLiteral`)&&ot(i)!==null))return!0;if(!j(i,`CallExpression`))return!1;let a=Lm(i.callee,t);if(!a)return!1;if(a===`useRef`||a===`useEffectEvent`||Hme.has(a))return!0;if(a===`useState`||a===`useReducer`||a===`useActionState`||a===`useTransition`){if(!j(n.id,`ArrayPattern`))return!1;let t=n.id.elements[1];if(!t)return!1;let r=j(t,`AssignmentPattern`)?t.left:t;return j(r,`Identifier`)&&e.bindingIdentifier===r}return!1},Hm=e=>{if(e.kind===`function`&&j(e.declarationNode,`FunctionDeclaration`))return e.declarationNode;let t=e.initializer?K(e.initializer):null;return t&&(j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`))?t:null},Um=(e,t)=>{let n=e.initializer;return!!(n&&z(t,n))},Ume=new Set([`useCallback`,`useMemo`]),Wme=(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||!j(r,`VariableDeclarator`)||r.id!==e.bindingIdentifier||!r.init)return!1;let i=K(r.init);if(!j(i,`CallExpression`))return!1;let a=Lm(i.callee,t);if(!a||!Ume.has(a))return!1;let o=i.arguments[1];if(!o||!k(o))return!1;let s=K(o);if(!j(s,`ArrayExpression`))return!1;n.add(e.id);let c=e=>{let r=K(e);if(j(r,`Literal`))return!0;if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);return i?Im(i)?!0:Wm(i,t,n):!1},l=s.elements.every(e=>e!==null&&c(e));return l||n.delete(e.id),l},Gme=(e,t)=>{for(let n of e.properties){let e=n;if(!j(e,`Property`))return null;if(e.computed)continue;let r=e.key;if((j(r,`Identifier`)?r.name:j(r,`Literal`)&&typeof r.value==`string`?r.value:null)===t)return K(e.value)}return null},Kme=(e,t,n)=>{if(e.kind!==`const`||!t.startsWith(`${e.name}.`)||e.references.some(e=>e.flag!==`read`))return!1;let r=e.initializer?K(e.initializer):null;if(!r||!j(r,`ObjectExpression`))return!1;let i=t.slice(e.name.length+1).split(`.`),a=r;for(let e of i){if(!j(a,`ObjectExpression`))return!1;let t=Gme(a,e);if(!t)return!1;a=t}return j(a,`CallExpression`)&&Lm(a.callee,n)===`useRef`},qme=(e,t,n)=>{if(n.has(e.id))return!0;let r=Hm(e);if(!r)return!1;n.add(e.id);for(let i of Sm(r,t)){let r=i.resolvedSymbol;if(r&&r.id!==e.id&&!Im(r)&&!Wm(r,t,n))return n.delete(e.id),!1}return!0},Jme=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=T(e.bindingIdentifier,t);return n!==null&&n!==e&&n.kind===`import`},Yme=e=>{let t=y(e);for(;t.parent;){let e=t.parent;if(j(e,`AssignmentExpression`))return e.left===t;if(j(e,`UpdateExpression`))return e.argument===t;if(j(e,`UnaryExpression`))return e.operator===`delete`&&e.argument===t;if(j(e,`ForInStatement`)||j(e,`ForOfStatement`))return e.left===t;if(j(e,`ArrayPattern`)&&e.elements.some(e=>e===t)||j(e,`ObjectPattern`)&&e.properties.some(e=>e===t)||j(e,`RestElement`)&&e.argument===t||j(e,`AssignmentPattern`)&&e.left===t||j(e,`Property`)&&e.value===t&&j(e.parent,`ObjectPattern`)){t=e;continue}return!1}return!1},Xme=(e,t)=>{if(e.kind!==`const`||e.references.some(e=>e.flag!==`read`))return!1;let n=e.initializer?K(e.initializer):null;if(!j(n,`AssignmentExpression`)||n.operator!==`??=`)return!1;let r=jd(K(n.left),t);return r?r.references.every(e=>{let t=y(e.identifier).parent;if(!j(t,`MemberExpression`)||K(t.object)!==e.identifier||C(t)!==`current`)return!1;let r=y(t),i=r.parent;return j(i,`AssignmentExpression`)&&i.left===r?i===n:!Yme(r)}):!1},Wm=(e,t,n=new Set)=>Vm(e,t)||Xme(e,t)||Jme(e,t)||qme(e,t,n)||Wme(e,t,n),Gm=(e,t)=>{let n=e.initializer?A(e.initializer):null;return!n||!j(n,`CallExpression`)?!1:E(n,`useEffectEvent`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0})},Km=(e,t)=>{let n=t.symbolFor(e);if(n)return n;if(!j(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}},Zme=new Set([`ComponentClass`,`ComponentType`,`FC`,`FunctionComponent`]),Qme=(e,t)=>{let n=Km(e,t);return!!(n&&Ne(n)&&(j(n.declarationNode,`ImportDefaultSpecifier`)||j(n.declarationNode,`ImportNamespaceSpecifier`)))},qm=(e,t,n)=>{if(!e)return!1;if(j(e,`TSTypeAnnotation`))return qm(e.typeAnnotation,t,n);if(j(e,`TSIntersectionType`))return(e.types??[]).some(e=>qm(e,t,n));if(!j(e,`TSTypeReference`))return!1;let r=e.typeName;if(j(r,`TSQualifiedName`))return j(r.left,`Identifier`)&&j(r.right,`Identifier`)&&Zme.has(r.right.name)&&Qme(r.left,t);if(!j(r,`Identifier`))return!1;let i=Km(r,t);if(!i||n.has(i.id))return!1;if(Ne(i)){let e=rt(i.declarationNode);return!!(e&&Zme.has(e))}return j(i.declarationNode,`TSTypeAliasDeclaration`)?(n.add(i.id),qm(i.declarationNode.typeAnnotation,t,n)):!1},Jm=(e,t)=>{let n=e.bindingIdentifier;return j(n,`Identifier`)&&qm(n.typeAnnotation,t,new Set)},Ym=new Set([`useEffect`,`useLayoutEffect`,`useCallback`,`useMemo`,`useImperativeHandle`,`useInsertionEffect`]),Xm=new Set([`useMemo`,`useCallback`]),Zm=new Set([`useEffect`,`useLayoutEffect`,`useInsertionEffect`]),$me=new Set([`useEffect`,`useLayoutEffect`]),ehe=new Set([`Array`,`ReadonlyArray`]),the=e=>{if(!e)return null;try{return new RegExp(e)}catch{return null}},nhe=e=>{let t=e.callee;return j(t,`Identifier`)?t.name:j(t,`MemberExpression`)&&j(t.object,`Identifier`)&&j(t.property,`Identifier`)&&!t.computed?`${t.object.name}.${t.property.name}`:null},rhe=e=>{if((j(e,`FunctionDeclaration`)||j(e,`FunctionExpression`))&&e.id)return e.id.name;let t=e.parent;for(;t&&j(t,`CallExpression`);){let e=nhe(t);if(e&&tr.has(e))t=t.parent??null;else break}return t&&j(t,`VariableDeclarator`)&&j(t.id,`Identifier`)?t.id.name:null},ihe=e=>{let t=e.parent;for(;t;){if(j(t,`FunctionDeclaration`)||j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`)){if(Fm(t))return t;let e=rhe(t);if(e&&Ac(e))return t}t=t.parent??null}return null},ahe=e=>+(e===`useImperativeHandle`),ohe=e=>e===`useImperativeHandle`?2:1,Qm=e=>{if(!j(e,`ObjectPattern`))return null;let t=e.properties[0];if(!t||!j(t,`Property`))return null;let n=t.key,r=t.value,i=j(n,`Identifier`)?n.name:j(n,`Literal`)&&typeof n.value==`string`?n.value:null;if(!i)return null;let a=Qm(r);return a?`${i}.${a}`:i},$m=e=>{let t=e.identifier;return j(t,`Identifier`)||j(t,`JSXIdentifier`)?t.name:``},she=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},che=e=>{let t=e.identifier,n=t.parent??null;if(n&&n.type===`ChainExpression`&&(n=n.parent??null),!n||!j(n,`MemberExpression`)||n.object!==t){if(n&&j(n,`VariableDeclarator`)&&n.init===t){let t=Qm(n.id),r=$m(e);if(t&&r)return`${r}.${t}`}return $m(e)}let r=n;for(;;){let e=r.parent;if(!e)break;let t=eme.has(e.type),n=t?e.parent:e,i=t?e:r;if(n&&j(n,`MemberExpression`)&&n.object===i){r=n;continue}break}let i=eh(r);if(i===null)return $m(e);let a=r.parent;if(a&&j(a,`VariableDeclarator`)&&a.init===r){let e=Qm(a.id);if(e)return she(`${i}.${e}`)}let o=she(i);if(o!==i)return o;if(e.flag!==`read`){let e=i.lastIndexOf(`.`);if(e!==-1)return i.slice(0,e)}return i},lhe=e=>{let t=K(e);if(j(t,`Identifier`))return t.name;if(j(t,`MemberExpression`))return eh(t);if(j(t,`CallExpression`)&&(t.arguments?.length??0)===0){let e=K(t.callee);if(j(e,`Identifier`))return e.name;if(j(e,`MemberExpression`)&&!rh(e))return eh(e)}return null},uhe=e=>{let t=y(e);for(;t.parent;){let e=t.parent;if((j(e,`IfStatement`)||j(e,`WhileStatement`)||j(e,`DoWhileStatement`)||j(e,`ConditionalExpression`))&&e.test===t)return!0;if(j(e,`UnaryExpression`)&&e.operator===`!`||j(e,`LogicalExpression`)){t=e;continue}return!1}return!1},dhe=(e,t)=>{if(!e)return!1;let n=K(e);return j(n,`ArrayExpression`)?n.elements.some(e=>{if(!e)return!1;let n=K(e);return j(n,`Identifier`)&&n.name===t}):!1},eh=e=>{let t=K(e);if(j(t,`Identifier`))return t.name;if(j(t,`ThisExpression`))return`this`;if(j(t,`MemberExpression`)){let e=eh(t.object);if(e&&t.computed)return e;if(e&&!t.computed&&j(t.property,`Identifier`))return`${e}.${t.property.name}`}return null},fhe=(e,t,n,r,i=!1)=>{let a=new Set,o=new Set,s=new Set,c=new Set,l=ihe(e),u=l?t.ownScopeFor(l):null;for(let l of Sm(e,t)){let d=l.resolvedSymbol;if(!d||Um(d,e))continue;if(i&&Mme(d,e,t)){o.add(d.name);continue}if(Wm(d,t)){o.add(d.name);continue}if(Im(d)){s.add(d.name);continue}if(u&&!xn(d.scope,u)){c.add(d.name);continue}let f=che(l);if(f&&!(f===d.name&&uhe(l.identifier)&&[...r??[]].some(e=>e.startsWith(`${d.name}.`)))){if(Kme(d,f,t)){o.add(f);continue}if(f===d.name){if(n?.has(f)){a.add(f);continue}let e=yhe(l,d,t)??She(l,d,t)??_he(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}},phe=e=>j(e,`Literal`)||j(e,`TemplateLiteral`)&&ot(e)!==null,mhe=e=>j(e,`Literal`)&&typeof e.value!=`string`,th=(e,t)=>t===e||t.startsWith(`${e}.`),hhe=(e,t)=>{for(let n of t)if(n!==e&&e.startsWith(`${n}.`))return!0;return!1},nh=e=>{let t=K(e);return j(t,`Identifier`)?t:j(t,`MemberExpression`)?nh(t.object):null},rh=e=>{let t=K(e);return j(t,`MemberExpression`)?t.computed?!0:rh(t.object):!1},ghe=(e,t,n)=>{let r=new Set;for(let i of e){let e=ih(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},ih=(e,t,n)=>{let r=K(e);if(j(r,`Literal`)&&(r.value===null||typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`)||j(r,`TemplateLiteral`)&&ot(r)!==null)return new Set;if(j(r,`Identifier`)){let e=t.symbolFor(r);if(!e)return null;if(Im(e)||Wm(e,t))return new Set;if(e.kind===`const`&&e.initializer&&j(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=ih(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(j(r,`MemberExpression`)){if(rh(r))return null;let e=eh(r),n=nh(r),i=n?t.symbolFor(n):null;return!e||!i?null:Im(i)||Kme(i,e,t)||Wm(i,t)?new Set:new Set([e])}return j(r,`LogicalExpression`)?ghe([r.left,r.right],t,n):j(r,`ConditionalExpression`)?ghe([r.test,r.consequent,r.alternate],t,n):null},_he=(e,t)=>e.kind!==`const`||!e.initializer||!j(e.declarationNode,`VariableDeclarator`)||e.declarationNode.id!==e.bindingIdentifier||e.references.some(e=>e.flag!==`read`)?null:ih(e.initializer,t,new Set([e.id])),ah=e=>{let t=K(e);return j(t,`Literal`)||j(t,`Identifier`)?!0:j(t,`MemberExpression`)?ah(t.object)&&(!t.computed||ah(t.property)):j(t,`BinaryExpression`)||j(t,`LogicalExpression`)?ah(t.left)&&ah(t.right):j(t,`UnaryExpression`)?t.operator!==`delete`&&ah(t.argument):j(t,`ConditionalExpression`)?ah(t.test)&&ah(t.consequent)&&ah(t.alternate):j(t,`TemplateLiteral`)?t.expressions.every(e=>ah(e)):!1},oh=e=>j(e,`BlockStatement`)?e.body.every(e=>oh(e)):j(e,`ReturnStatement`)?!e.argument||ah(e.argument):j(e,`IfStatement`)?ah(e.test)&&oh(e.consequent)&&(!e.alternate||oh(e.alternate)):!1,vhe=e=>!j(e,`FunctionDeclaration`)&&!j(e,`FunctionExpression`)&&!j(e,`ArrowFunctionExpression`)||e.async||e.generator?!1:j(e.body,`BlockStatement`)?oh(e.body):ah(e.body),yhe=(e,t,n)=>{if(t.references.some(e=>e.flag!==`read`))return null;let r=y(e.identifier),i=r.parent;if(!j(i,`CallExpression`)||i.callee!==r)return null;let a=Hm(t);if(!a||!vhe(a))return null;let o=new Set;for(let e of Sm(a,n)){let r=e.resolvedSymbol;if(!r||r.id===t.id||Im(r)||Wm(r,n))continue;let i=che(e);if(!i)return null;if(i===r.name){let e=_he(r,n);if(e){for(let t of e)o.add(t);continue}}o.add(i)}return o.size>0?o:null},sh=(e,t,n)=>{let r=new Set;for(let i of e){let e=ch(i,t,n);if(!e)return null;for(let t of e)r.add(t)}return r},ch=(e,t,n)=>{let r=K(e);if(j(r,`Literal`))return new Set;if(j(r,`Identifier`)){if(t.isGlobalReference(r))return new Set;let e=t.symbolFor(r);if(!e)return null;if(Im(e)||Wm(e,t))return new Set;if(e.kind===`const`&&e.initializer&&j(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=ch(e.initializer,t,n);if(n.delete(e.id),r)return r}return new Set([e.name])}if(j(r,`MemberExpression`)){if(rh(r))return null;let e=eh(r),n=nh(r),i=n?t.symbolFor(n):null;return!e||!i?null:Im(i)||Wm(i,t)?new Set:new Set([e])}if(j(r,`BinaryExpression`)||j(r,`LogicalExpression`))return sh([r.left,r.right],t,n);if(j(r,`UnaryExpression`)&&r.operator!==`delete`)return ch(r.argument,t,n);if(j(r,`ConditionalExpression`))return sh([r.test,r.consequent,r.alternate],t,n);if(j(r,`TemplateLiteral`))return sh(r.expressions,t,n);if(j(r,`NewExpression`)){let e=K(r.callee);if(!j(e,`Identifier`)||e.name!==`Error`||!t.isGlobalReference(e))return null;let i=[];for(let e of r.arguments){if(!k(e)||j(e,`SpreadElement`))return null;i.push(e)}return sh(i,t,n)}return null},bhe=(e,t,n)=>{let r=new Set,i=e;for(;i.parent&&i.parent!==t;){let e=i.parent;if(j(e,`IfStatement`)){if(e.test===i)return null;let t=ch(e.test,n,new Set);if(!t)return null;for(let e of t)r.add(e)}else if(!j(e,`ExpressionStatement`)&&!j(e,`BlockStatement`))return null;i=e}return i.parent===t?r:null},xhe=(e,t)=>{let n=y(e),r=n.parent;return j(r,`CallExpression`)&&r.arguments.some(e=>e===n)&&E(r,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0})},She=(e,t,n)=>{if(t.kind!==`let`||!j(t.declarationNode,`VariableDeclarator`)||t.declarationNode.id!==t.bindingIdentifier)return null;let r=M(t.bindingIdentifier);if(!r)return null;let i=M(e.identifier);if(!i||i===r)return null;let a=new Set;if(t.initializer){let e=ch(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(M(e.identifier)!==i&&!xhe(e.identifier,n))return null;continue}if(e.flag!==`write`)return null;let s=y(e.identifier),c=s.parent;if(!j(c,`AssignmentExpression`)||c.operator!==`=`||c.left!==s||M(s)!==r)return null;let l=ch(c.right,n,new Set([t.id])),u=bhe(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},Che=(e,t)=>{let n=lh(e,t),r=n?.initializer?K(n.initializer):null;return!!(r&&j(r,`CallExpression`)&&Lm(r.callee,t)===`useCallback`)},whe=(e,t)=>{let n=nh(e);if(!n)return!1;let r=t.symbolFor(n);return!r||Im(r)?!1:!Che(e,t)},lh=(e,t)=>{let n=nh(e);return n?t.symbolFor(n):null},The=e=>{let t=K(e);return j(t,`CallExpression`)&&(t.arguments?.length??0)===0?t.callee:e},Ehe=e=>j(e,`Literal`)?!!e.regex:!1,Dhe=(e,t,n)=>{let r=K(e),i=K(t);if(!j(r,`Identifier`)||!j(i,`Identifier`))return!1;let a=n.symbolFor(r),o=n.symbolFor(i);return!!(a&&o&&a.id===o.id)},Ohe=(e,t)=>{let n=K(e);return j(n,`Identifier`)&&n.name===`undefined`&&t.isGlobalReference(n)||j(n,`UnaryExpression`)&&n.operator===`void`},khe=(e,t)=>{let n=e.bindingIdentifier.parent?.parent;if(j(n,`ObjectPattern`)){let e=n.typeAnnotation;if(e&&j(e,`TSTypeAnnotation`))return e.typeAnnotation}let r=M(e.bindingIdentifier);if(!r)return null;let i=y(r),a=i.parent;if(!j(a,`VariableDeclarator`)||a.init!==i||!j(a.id,`Identifier`))return null;let o=t.symbolFor(a.id);if(!o||!Jm(o,t))return null;let s=a.id.typeAnnotation;if(!s||!j(s,`TSTypeAnnotation`))return null;let c=s.typeAnnotation;return j(c,`TSTypeReference`)?c.typeArguments?.params[0]??null:null},uh=(e,t,n,r=new Set)=>{if(j(e,`TSTypeAnnotation`))return uh(e.typeAnnotation,t,n,r);if(j(e,`TSIntersectionType`)){for(let i of e.types){let e=uh(i,t,n,r);if(e)return e}return null}if(j(e,`TSTypeAliasDeclaration`))return uh(e.typeAnnotation,t,n,r);let i=j(e,`TSTypeLiteral`)?e.members:j(e,`TSInterfaceDeclaration`)?e.body.body:null;if(i){for(let e of i)if(!(!j(e,`TSPropertySignature`)||oc(e.key)!==t))return e.typeAnnotation?.typeAnnotation??null;return null}if(!j(e,`TSTypeReference`)||!j(e.typeName,`Identifier`)||r.has(e.typeName.name))return null;let a=new Set(r).add(e.typeName.name);for(let r of Pm(n,e.typeName.name)){let e=uh(r,t,n,a);if(e)return e}return null},dh=(e,t,n=new Set)=>{if(j(e,`TSTypeAnnotation`))return dh(e.typeAnnotation,t,n);if(j(e,`TSNullKeyword`)||j(e,`TSAnyKeyword`)||j(e,`TSUnknownKeyword`))return!1;if(j(e,`TSUnionType`))return e.types.every(e=>dh(e,t,n));if(!j(e,`TSTypeReference`))return!0;if(!j(e.typeName,`Identifier`)||n.has(e.typeName.name))return!1;let r=Pm(t,e.typeName.name);if(r.length===0)return rr(t,e.typeName.name)===null&&ehe.has(e.typeName.name);let i=new Set(n).add(e.typeName.name);return r.every(e=>j(e,`TSTypeAliasDeclaration`)?dh(e.typeAnnotation,t,i):j(e,`TSInterfaceDeclaration`))},Ahe=(e,t)=>{let n=K(e);if(!j(n,`Identifier`))return!1;let r=t.symbolFor(n);if(!r)return!1;let i=sc(r);if(i)return dh(i,n);let a=r.bindingIdentifier.parent;if(!j(a,`Property`))return!1;let o=oc(a.key),s=khe(r,t);if(!o||!s)return!1;let c=uh(s,o,n);return!!(c&&dh(c,n))},fh=(e,t,n=new Set)=>{let r=K(e);if(j(r,`ArrayExpression`)||j(r,`ObjectExpression`)||j(r,`ClassExpression`)||j(r,`NewExpression`)||j(r,`TemplateLiteral`))return!0;if(j(r,`Literal`))return r.value!==null;if(j(r,`LogicalExpression`)&&r.operator===`??`)return fh(r.right,t,n);if(j(r,`ConditionalExpression`))return fh(r.consequent,t,n)&&fh(r.alternate,t,n);if(!j(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 fh(i.initializer,t,a)},jhe=(e,t)=>{let n=K(e);if(!j(n,`Identifier`))return null;let r=t.symbolFor(n),i=r?.declarationNode;if(!r||!i||!j(i,`VariableDeclarator`)||!j(i.id,`ArrayPattern`)||i.id.elements[0]!==r.bindingIdentifier||!j(i.init,`CallExpression`)||!E(i.init,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let a=i.init.arguments[0];return k(a)&&!j(a,`SpreadElement`)?a:null},Mhe=(e,t)=>{let n=K(e);if(!j(n,`ConditionalExpression`))return!1;let r=K(n.test);if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r),a=i?.initializer?K(i.initializer):null;if(i?.kind!==`const`||!a||!j(a,`BinaryExpression`)||a.operator!==`!==`&&a.operator!==`!=`)return!1;let o=null;if(Ohe(a.right,t)?o=a.left:Ohe(a.left,t)&&(o=a.right),!o||!Dhe(n.consequent,o,t))return!1;let s=jhe(n.alternate,t);return!!(s&&fh(s,t)&&Ahe(o,t))},ph=(e,t,n=!1)=>{if(!e)return!1;let r=K(e);return Ehe(r)?!0:j(r,`ConditionalExpression`)?ph(r.consequent,t,!0)||ph(r.alternate,t,!0):j(r,`LogicalExpression`)?r.operator===`??`&&Mhe(r.left,t)?ph(r.left,t,!0):ph(r.left,t,!0)||ph(r.right,t,!0):j(r,`ObjectExpression`)||j(r,`ArrayExpression`)||n&&(j(r,`ArrowFunctionExpression`)||j(r,`FunctionExpression`))||j(r,`ClassExpression`)||j(r,`ClassDeclaration`)||j(r,`JSXElement`)||j(r,`JSXFragment`)||j(r,`AssignmentExpression`)||j(r,`NewExpression`)},mh=(e,t,n=new Set)=>{let r=K(e);if(ph(r,t))return!0;if(j(r,`ConditionalExpression`))return mh(r.consequent,t,n)||mh(r.alternate,t,n);if(j(r,`LogicalExpression`))return mh(r.left,t,n)||mh(r.right,t,n);if(!j(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),mh(i.initializer,t,n))},Nhe=(e,t,n)=>{if(!whe(t,n))return!1;if(Zm.has(e))return!0;if(e!==`useMemo`)return!1;let r=lh(t,n);return!!(r&&!Wm(r,n)&&!ph(r.initializer,n))},Phe=e=>j(e.declarationNode,`VariableDeclarator`)&&j(e.declarationNode.id,`Identifier`)||j(e.declarationNode,`ClassDeclaration`),Fhe=e=>Hm(e)!==null,Ihe=new Set([`Array`,`Date`,`Error`,`Map`,`Object`,`RegExp`,`Set`,`WeakMap`,`WeakSet`]),Lhe=e=>{if(!e)return null;let t=j(e,`AssignmentPattern`)?e.left:e;return j(t,`Identifier`)?t:null},Rhe=(e,t)=>{let n=new Set,r=t.symbolFor(e);for(;r?.kind===`const`&&j(r.declarationNode,`VariableDeclarator`)&&r.declarationNode.id===r.bindingIdentifier&&r.initializer;){if(n.has(r.id))return null;n.add(r.id);let e=K(r.initializer);if(!j(e,`Identifier`))return r;r=t.symbolFor(e)}return r},hh=(e,t)=>{let n=Rhe(e,t);if(!n||!j(n.declarationNode,`VariableDeclarator`))return null;let r=n.declarationNode;if(!j(r.id,`ArrayPattern`))return null;let i=r.id.elements?.[1],a=k(i)?Lhe(i):null;if(!a||a!==n.bindingIdentifier)return null;let o=r.init?K(r.init):null;if(!o||!j(o,`CallExpression`)||!E(o,`useState`,t,{allowGlobalReactNamespace:!0,allowUnboundBareCalls:!0,resolveNamedAliases:!0}))return null;let s=r.id.elements?.[0],c=k(s)?Lhe(s):null;return{setterSymbol:n,stateSymbol:c?t.symbolFor(c):null}},gh=(e,t,n,r=new Set)=>{if(!t)return!1;let i=K(e);if(j(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&&!Im(a)&&!r.has(a.id)){let e=new Set(r);return e.add(a.id),gh(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=>k(e)&&gh(e,t,n)))return!0}else if(k(r)&&gh(r,t,n))return!0}return!1},_h=(e,t,n=new Set)=>{let r=K(e);if(j(r,`ObjectExpression`)||j(r,`ArrayExpression`)||j(r,`JSXElement`)||j(r,`JSXFragment`)||Ehe(r))return!0;if(j(r,`SequenceExpression`)){let e=r.expressions.at(-1);return!!(e&&_h(e,t))}if(j(r,`ConditionalExpression`))return _h(r.consequent,t,n)&&_h(r.alternate,t,n);if(j(r,`LogicalExpression`))return _h(r.left,t,n)&&_h(r.right,t,n);if(j(r,`CallExpression`)){let e=K(r.callee);return j(e,`Identifier`)&&t.isGlobalReference(e)&&(e.name===`Array`||e.name===`Object`)&&(e.name===`Array`||r.arguments.length===0)}if(j(r,`NewExpression`)){let e=K(r.callee);return j(e,`Identifier`)&&t.isGlobalReference(e)&&Ihe.has(e.name)&&(e.name!==`Object`||r.arguments.length===0)}if(!j(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!i||i.kind!==`const`||!i.initializer||Im(i)||n.has(i.id))return!1;let a=new Set(n);return a.add(i.id),_h(i.initializer,t,a)},zhe=e=>{let t=K(e);return j(t,`Literal`)&&(typeof t.value==`number`&&t.value!==0||typeof t.value==`bigint`&&t.value!==0n||typeof t.value==`string`&&t.value.length>0)},vh=(e,t,n)=>{let r=K(e);if(_h(r,n))return!0;if(j(r,`ConditionalExpression`)){let e=vh(r.consequent,t,n),i=vh(r.alternate,t,n);return gh(r.test,t,n)?e&&i:e||i}return gh(r,t,n)?j(r,`UnaryExpression`)?r.operator===`!`:j(r,`UpdateExpression`)?!0:j(r,`BinaryExpression`)?(r.operator===`+`||r.operator===`-`)&&gh(r.left,t,n)&&zhe(r.right):!1:!1},Bhe=(e,t,n)=>{let r=K(e);if(!j(r,`ConditionalExpression`))return!1;let i=K(r.test);if(!j(i,`BinaryExpression`)||![`===`,`!==`,`==`,`!=`].includes(i.operator))return!1;let a=e=>{let r=K(e);return j(r,`Identifier`)&&n.symbolFor(r)?.id===t?.id},o=null;if(a(i.left)&&(o=i.right),a(i.right)&&(o=i.left),!o||!mh(o,n))return!1;let s=e=>{let t=K(e),r=K(o);return j(t,`Identifier`)?j(r,`Identifier`)&&n.symbolFor(t)?.id===n.symbolFor(r)?.id:j(t,`Literal`)&&j(r,`Literal`)&&t.value===r.value};return i.operator===`===`||i.operator===`==`?a(r.consequent)&&s(r.alternate):s(r.consequent)&&a(r.alternate)},Vhe=(e,t)=>{let n=K(e);if(!j(n,`ArrowFunctionExpression`)&&!j(n,`FunctionExpression`))return!1;let r=n.params?.[0];if(!r||!j(r,`Identifier`))return!1;let i=t.symbolFor(r);if(!j(n.body,`BlockStatement`))return Bhe(n.body,i,t)||vh(n.body,i,t);if(n.body.body.length!==1)return!1;let a=n.body.body[0];return!j(a,`ReturnStatement`)||!k(a.argument)?!1:Bhe(a.argument,i,t)||vh(a.argument,i,t)},Hhe=(e,t)=>{let n=e.parent;if(!n||!j(n,`CallExpression`)||n.callee!==e)return!1;let r=hh(e,t),i=n.arguments?.[0];return!r||!i||!k(i)?!1:Vhe(i,t)?!0:vh(i,r.stateSymbol,t)},Uhe=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(j(i,`FunctionDeclaration`)||j(i,`FunctionExpression`)||j(i,`ArrowFunctionExpression`)))return;if(j(i,`Identifier`)){let e=hh(i,t);if(e&&Hhe(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)k(e)&&r(e);else k(t)&&r(t)}};return r(e),n},Whe=(e,t)=>{let n=null,r=i=>{if(n||i!==e&&(j(i,`FunctionDeclaration`)||j(i,`FunctionExpression`)||j(i,`ArrowFunctionExpression`)))return;if(j(i,`Identifier`)){let e=hh(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)k(e)&&r(e);else k(t)&&r(t)}};return r(e),n},Ghe=(e,t)=>{let n=t.ownScopeFor(e)??t.scopeFor(e),r=[],i=new Set,a=e=>{if(j(e,`AssignmentExpression`)&&j(e.left,`Identifier`)){let a=t.symbolFor(e.left);a&&!i.has(a.name)&&!Im(a)&&!xn(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)k(e)&&a(e);else k(t)&&a(t)}};return a(e),r},yh=e=>{let t=eh(e);if(!t)return null;let n=t.indexOf(`.current`);return n===-1?null:t.slice(0,n+8)},Khe=(e,t)=>{let n=null,r=t=>{if(n||t!==e&&(j(t,`FunctionExpression`)||j(t,`ArrowFunctionExpression`)))return;if(j(t,`ReturnStatement`)){let e=t.argument;if(e&&(j(e,`FunctionExpression`)||j(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)k(e)&&r(e);else k(t)&&r(t)}};if(r(e),!n)return null;let i=null,a=n=>{if(i)return;if(j(n,`MemberExpression`)){let r=yh(n);if(r){let a=nh(n),o=a?t.symbolFor(a):null,s=t.ownScopeFor(e)??t.scopeFor(e);if(!o||!xn(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)k(e)&&a(e);else k(t)&&a(t)}};return a(n),i},qhe=e=>{if(!e)return!1;for(let t of e.references){let e=t.identifier.parent;if(!e||!j(e,`MemberExpression`)||e.object!==t.identifier||yh(e)===null)continue;let n=e.parent;if(n&&j(n,`AssignmentExpression`)&&n.left===e||n&&j(n,`UpdateExpression`)&&n.argument===e)return!0}return!1},Jhe=(e,t)=>{if(!e)return!1;let n=e.initializer?K(e.initializer):null;if(!n||!j(n,`CallExpression`)||Lm(n.callee,t)!==`useRef`)return!1;let r=n.arguments[0];if(!r||!k(r))return!1;let i=K(r);return!(j(i,`Literal`)&&i.value===null||j(i,`Identifier`)&&i.name===`undefined`)},Yhe=(e,t)=>{let n=!1,r=i=>{if(n||i!==e&&(j(i,`FunctionExpression`)||j(i,`ArrowFunctionExpression`)))return;if(j(i,`AssignmentExpression`)&&yh(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)k(e)&&r(e);else k(t)&&r(t)}};return r(e),n},Xhe=(e,t,n)=>{let r=nh(e);if(!r)return!1;let i=n.symbolFor(r);if(!i||Im(i))return!1;let a=ihe(t),o=a?n.ownScopeFor(a):null;return!!(o&&!xn(i.scope,o))},Zhe=(e,t,n)=>{let r=Sm(e,n).find(e=>e.resolvedSymbol?.name===t)?.resolvedSymbol??null;if(!r)return!1;let i=!1;return S(e,e=>{if(i)return!1;if(j(e,`CallExpression`)){let a=K(e.callee);if(j(a,`MemberExpression`)){let e=K(a.object),o=!1;for(;e&&j(e,`MemberExpression`);){if(j(e.property,`Identifier`)&&e.property.name===`current`){o=!0;break}e=K(e.object)}if(!o&&e&&j(e,`Identifier`)&&e.name===t&&n.symbolFor(e)===r)return i=!0,!1}}}),i},Qhe=(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=>th(t,e)));i&&o||Zhe(n,`props`,r)&&e.add(`props`)},$he=w({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